I am learning about how to compress and decompress screen data. I am confused though about how to store the data in ROM and how to decompress it using RAM. Below are some questions and some statements I want to make sure are accurate:
1.
Can you list an NES game, published or homebrew, and whether it stores screen data in rows, columns, and/or objects? I suspect games load the initial two screens in the two nametables by rows and then use column data to fill the additional screens while scrolling.
2.
As I understand so far, games that are two screens wide can fill nametables one row at a time. So the screen data can be stored as bytes of one row, then the next, etc.
3.
For games that scroll (horizontally for this example), columns are drawn in an area that is not currently visible. So the screen data can be stored as bytes of one column, the next, etc.
4.
I also read somewhere in these forums that there are some games that keep data on the objects in a level and add them to a nametable that is filled with transparent tiles. I think Super Mario Bros. does something like this. Is there an advantage to this over bytes in row or column order?
5.
When storing metatiles, what is a suitable size for a buffer? I understand that if using 2x2 metatiles (each tile being 8x8 pixels), I can fill the nametable with one row or column of the metatile and then place the other two tiles in the buffer. How would the buffer be affected by 4x4 metatiles or larger sizes? For my first project I'm like to stay within NROM, CNROM, and UNROM banks.
Thanks for your help.
1.
Can you list an NES game, published or homebrew, and whether it stores screen data in rows, columns, and/or objects? I suspect games load the initial two screens in the two nametables by rows and then use column data to fill the additional screens while scrolling.
2.
As I understand so far, games that are two screens wide can fill nametables one row at a time. So the screen data can be stored as bytes of one row, then the next, etc.
3.
For games that scroll (horizontally for this example), columns are drawn in an area that is not currently visible. So the screen data can be stored as bytes of one column, the next, etc.
4.
I also read somewhere in these forums that there are some games that keep data on the objects in a level and add them to a nametable that is filled with transparent tiles. I think Super Mario Bros. does something like this. Is there an advantage to this over bytes in row or column order?
5.
When storing metatiles, what is a suitable size for a buffer? I understand that if using 2x2 metatiles (each tile being 8x8 pixels), I can fill the nametable with one row or column of the metatile and then place the other two tiles in the buffer. How would the buffer be affected by 4x4 metatiles or larger sizes? For my first project I'm like to stay within NROM, CNROM, and UNROM banks.
Thanks for your help.