Great job! I'm so glad to see that my old data is finally being used for something (or I assume, at least).
Here are other features to keep in mind:
- Whatever determines which cutscenes play at the beginning/end of a level (e.g. D.K. carrying Pauline away, Mario running through a door) isn't a part of the level data. For example, if you were to give World 0 levels the locked door and key instead of Donkey Kong and Pauline, after unlocking the door, D.K. would still appear with Pauline and attempt to climb the stage. These animations could be hard-coded.
- All of the Super Game Boy palettes are stored in one area of the ROM, LZSS-compressed, but it's been so long that I can't remember where they are.
Some offsets for non-level data:
3C000-3C093 Non-level tilemap pointer table (Map screens, post-boss sequences, menus, etc.)
78000-780DF Palette map pointer table (not the colors themselves, but these determine which areas of the screen get assigned which of the four Super Game Boy palettes)