I know that mode 2 has 2 background layers, both being 4 bits per pixel, but I do not completely understand what offset-per-tile means. From what I gather, it means that each 8x8 pixel background tile has it's own x and y value, being stored at the area specified by Register $2109. How is the data stored? Does the first byte contain BG1 tile 1 x values, the second byte contain BG1 tile 1 y values, the third byte contain BG2 tile 1 x values, and the forth byte contain BG2 tile 1 y values and so on? Also, if I am correct, both x values and y values can be changed at the same time. Couldn't the BGs be used almost exactly like sprites? This seems too good to be true...
Essentially what it does is that one layer allows each 8x8 pixel segment to be offset by a displacement in slivers. (A "sliver" is 8 pixels across and 1 pixel down.) Because OPT can't change the fine scroll (low 3 bits of BGxHOFS), horizontal OPT isn't very useful as far as I can tell, but vertical OPT is used for the platforms in the "Touch Fuzzy Get Dizzy" level of Yoshi's Island, for shearing to produce faux rotation in the background of Star Fox, and for the playfields in Tetris Attack.
tepples wrote:
Because OPT can't change the fine scroll (low 3 bits of BGxHOFS), horizontal OPT isn't very useful as far as I can tell
That seems very useful for repeating columns, on the other hand.
There's not much documentation about it, but through trial and error I found out the offset data has to be in the second row of tiles on BG3, and each value has to be added to $2000.
Here's the Anthrox mode 2 demo.