Difference between revisions of "Map Script Format"
Jump to navigation
Jump to search
(updated 0x40, added 0x04, updated 0x08) |
|||
Line 76: | Line 76: | ||
| 3 | | 3 | ||
| SPC data Offset | | SPC data Offset | ||
|} | |||
|- | |||
| 0x04 | |||
| 5 | |||
| Load data | |||
{| class="wikitable" | |||
|- | |||
! Offset | |||
! Length (Byte) | |||
! Name | |||
|- | |||
| 0 | |||
| 3 | |||
| Offset | |||
|- | |||
| 3 | |||
| 1 | |||
| Unknown | |||
|- | |||
| 4 | |||
| 1 | |||
| Unknown | |||
|} | |} | ||
Line 92: | Line 116: | ||
| | | | ||
|- | |- | ||
| | | 0xF8 | ||
| | | ? | ||
| | | | ||
|- | |||
| 0xF9 | |||
| 2 | |||
| | |||
|- | |- | ||
| 0xFA | |||
| 2 | |||
| | |||
|- | |||
| 0xFC | | 0xFC | ||
| 2 | | 2 | ||
Line 102: | Line 134: | ||
| 0xFD | | 0xFD | ||
| 4 | | 4 | ||
| | | 3 byte address, 1 byte unknown | ||
|- | |- | ||
| 0xFE | |||
| 2 | |||
| | |||
| | |||
| | | | ||
|- | |- | ||
| | | 0xFF | ||
| | | 0 | ||
| End of script | |||
| | |||
|- | |- | ||
| default | | default | ||
Line 218: | Line 232: | ||
| 1 | | 1 | ||
| 1 | | 1 | ||
| | | Pal size | ||
|- | |- | ||
| 2 | | 2 | ||
| 1 | | 1 | ||
| | | Pal offset in memory | ||
|- | |- | ||
| 3 | | 3 |
Revision as of 21:23, 15 January 2013
When the game loads a map it looks at a pointer table at 0x06959C and runs a some kind of script to load the map parts.
There seem to be 1314(check) entries.
For some reason offsets are not directly read but calculated via this code: (don't ask!)
i.e. when loading map id 0 the first offset is 0x83FF05 which after the code is run turns into 0xA5FF83 (0x25FF83 ROM).
u32 Background::GetAddress() { u32 AdrLow = GetBytei(); u16 AdrHigh = GetWordi(); u8 push = AdrHigh & 0x7F; AdrHigh = push ^ AdrHigh; AdrHigh<<= 1; AdrHigh |= 0x80; AdrHigh |= push; AdrHigh += (((ROMOffset|(1<<23)) & 0xFF0000) >> 8); if( (AdrHigh & 0xFF00) >= 0xC000 ) AdrHigh &= 0xFF7F; return (AdrHigh<<8)|AdrLow; }
Map script #0
This map script is used to select a song to be played by the 08 FC command
Commands
Opcode | Argument length (byte) | Function | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 2 | Run map script
| ||||||||||||||||||||||||||||||
0x02 | 5 | Play SPC data
| ||||||||||||||||||||||||||||||
0x04 | 5 | Load data
| ||||||||||||||||||||||||||||||
0x08 | variable | run sub command
| ||||||||||||||||||||||||||||||
0x10 | 4 | Load data
| ||||||||||||||||||||||||||||||
0x20 | 7 | Load MapTile/Collision data
| ||||||||||||||||||||||||||||||
0x40 | 6 | Set palette for map
| ||||||||||||||||||||||||||||||
0x80 | 6 | Load Tile Data
|