This scheme shows how NESmaker stores screen data in ROM upon exporting your game. The ΔHEX values represent the data offset relative to where screen data starts. ΔHEX Description 00-77 Screen collision data 78 Screen type 79 Monster group number (TN) 7A Palette data 7B Sprite subpalette 1 (TN) 7C First set of screen flags 7D "ScreenByte01" 7E Path information 7F Warp-to screen 80 Warp-in position 81 Sprite subpalette 2 (TN) 82 "screenLoadTemps" 83-85 Untriggered day spawn locations for monsters 1-3 86-88 Untriggered night spawn locations for monsters 1-3 89-8B Triggered day spawn locations for monsters 1-3 8C-8E Triggered night spawn locations for monsters 1-3 8F-91 Monster group number (UD, UN, TD) 92-94 Sprite subpalette 1 (UD, UN, TD) 95-97 Sprite subpalette 2 (UD, UN, TD) 98-99 Monster table pointers 9A-9D String group pointers (UD, UN, TD, TN) 9E-A1 Spawn locations for monster 4 (UD, UN, TD, TN) A2-A5 Untriggered day IDs for monsters 1-4 A6-A9 Triggered day IDs for monsters 1-4 AA-AD Untriggered night IDs for monsters 1-4 AE-B1 Triggered night IDs for monsters 1-4 B2 Song ID (#$FF for silence) B3-B5 Unused, but intended for additional (un)triggered day/night songs B6 Second set of screen flags B7-BA Sprite subpalette 4 (UD, UN, TD, TN) BB-C3 C4 Tile layout settings ("tileLayout") C5-CA Background tiles to load CB-CF Sprite subpalette 3 (UD, UN, TD, TN) * UD/UN/TD/TN = data for (un)triggered day/night screens Additional information regarding (some of) these bytes: 00-77 Collision data eeee oooo |||| ++++-- collision type ID for odd metatile ++++------- collision type ID for even metatile These 120 bytes contain collision data for the 240 metatiles, stored in high and low nybbles. To get the collision type for a certain metatile, take the metatile's location and divide by two (LSR) to get the corresponding collision byte, then take the high nybble if the metatile's location is odd, or the low nybble if it's even. [@TODO; clarify further perhaps?] 7D ScreenByte01 xxxxxx ss |||||| ++-- screen speed (afaik this is not implemented further) ++++++----- unknown/unused 80 Warp-in position yyyy xxxx |||| ++++-- x-position on screen (in metatiles) ++++------- y-position on screen (in metatiles) 82 screenLoadTemps t sss xxx w | ||| ||| +-- overworld (0) / underworld (1) screen flag | ||| +++---- (unknown/unused) | +++-------- game state (main game, win screen, ...) +------------ 16x16 metatile (0) / 8x8 tile (1) screen flag 98 monster data nnnn uuuu |||| ++++-- untriggered day monster table offset ++++------- night monster table offset 99 monster data xxxx tttt |||| ++++-- triggered day monster table offset ++++------- unused monster table offset The high nybble of $99 should be used as a triggered night monster, but because of a bug this doesn't happen by default. C4 tileLayout $00 %00000000 = Double Main $0C %00001100 = Double Main (no hud) $40 %01000000 = Main/Screen/Path $70 %01110000 = Main/3x Screen $7C %01111100 = Main/3x Screen (no hud)