Jump to content
IGNORED

Single Screen RLE Decoding on NES


TylerBarnes

Recommended Posts

So I'm working on learning more about the NES and at the same time like talking about what I'm working on. In this case it's compression for a single screen.  Made this as a sort of 'get my thoughts in order' video to help myself learn. As well as, I hope someone else at the same sort of level of learning as I am could get some help from it. Furthermore, I am also hoping that by talking about what I am doing, I could get corrected by more experienced coders if I'm doing stuff poorly. I plan on making more regarding decoding uncompressed strings and special cases. 
 

 

Edited by TylerBarnes
  • Like 1
Link to comment
Share on other sites

Ooooh RLE is a good first compression scheme. You can then try making it fancy 😉 

I did one where a 3-bit value selects either one of the 6 most common tiles, another tile, or raw data, and the 5 remaining bits determine the length of the data to copy. Tho I think I added something to make it possible for the game to write 64 bytes at once instead of the maximum of 32 in a 5-bit value

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
21 hours ago, Kiro_RCR_ said:

What did you use for the encoder? Did you write your own c++/python encoder or use something else? I'm looking for a tool that can do it before I set about writing my own encoder in c++.

I wrote my own encoder in 6502 assembly. It is an NES rom that take a single screen .nam file and stores the encoded hex in RAM. I unfortunately don't know any other programming languages. 

  • Wow! 1
Link to comment
Share on other sites

  • 2 weeks later...
On 2/6/2020 at 6:36 PM, TylerBarnes said:

I wrote my own encoder in 6502 assembly. It is an NES rom that take a single screen .nam file and stores the encoded hex in RAM. I unfortunately don't know any other programming languages. 

Now that's something. Writing your NESDev tools to run on the NES itself. Awesome.

  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...