Every data in a room block is uncompressed except for tiles.
The lookup table for each room starts at 0x80CF4EC. Each entry is 8 bytes long.
[PP PP PP PP] [LL LL] [MM MM]
P | Absolute pointer to the level header |
L | Level index (ex: 2 = Breachull beach) |
M | What music plays in the room |
There are 38 rooms in the rom.
ID | Address | Header address | Level | Music | Ingame name | Room name |
---|---|---|---|---|---|---|
0 | 80CF4EC | 80CF61C | 0 | 1 | SPIRALBOTTOM | Spiral mountain |
1 | 80CF4F4 | 80F0658 | 0 | 1 | SPIRALMIDDLE | |
2 | 80CF4FC | 8113AA4 | 0 | 1 | SPIRALTOP | |
3 | 80CF504 | 812E364 | 2 | 2 | QUARRY | Grunty's quarry |
4 | 80CF50C | 8153CD4 | 1 | 3 | LOWERFARM | |
5 | 80CF514 | 81748A8 | 1 | 3 | UPPERFARM | |
6 | 80CF51C | 8199534 | FF | A | MUMBOHUT | Mumbo's hut |
7 | 80CF524 | 81A62D4 | 0 | 4 | HONEYB | Honey B's hive |
8 | 80CF52C | 81ADCE8 | 2 | 2 | BEACHSTART | Breechull beach |
9 | 80CF534 | 81E205C | 2 | C | UNDERCORAL | |
10 | 80CF53C | 83BAEB8 | 5 | 5 | OCTOSHOOT | |
11 | 80CF544 | 81FD794 | 1 | 3 | COWBOSS | |
12 | 80CF54C | 8210E3C | FF | 6 | BEACHSLIDE | Slide minigame |
13 | 80CF554 | 82326F0 | 2 | 2 | BEACHTOP | Breachull peak |
14 | 80CF55C | 8240E60 | FF | 7 | BEACHSHOOT | |
15 | 80CF564 | 824CB5C | 5 | 5 | FJORD | |
16 | 80CF56C | 83B94C0 | FF | 6 | SKIDOOS | |
17 | 80CF574 | 828093C | 5 | 9 | FURNSECTION | |
18 | 80CF57C | 83C98BC | 0 | F | GRUNTY | |
19 | 80CF584 | 83902C0 | 3 | B | HOUSEROOMS | |
20 | 80CF58C | 835E39C | 3 | B | BOARDWALK | |
21 | 80CF594 | 82A8F78 | 5 | 9 | FURNSTORE | |
22 | 80CF59C | 82B4674 | 4 | D | HARBOUR | Spiller's harbour |
23 | 80CF5A4 | 82DAB88 | 4 | D | CASTLEINNER | |
24 | 80CF5AC | 82E8854 | 4 | D | INSIDES | |
25 | 80CF5B4 | 83A6370 | 4 | D | OCTOPUS | |
26 | 80CF5BC | 82F7E9C | 4 | D | SANDAREA | |
27 | 80CF5C4 | 830DA48 | 4 | D | VILLAGE | |
28 | 80CF5CC | 832AAA0 | FF | 6 | BOATFIGHT | |
29 | 80CF5D4 | 832E668 | 0 | 8 | JIGGYTEMPLE | |
30 | 80CF5DC | 8338928 | 1 | C | DIVESPOT | |
31 | 80CF5E4 | 833BA54 | 3 | B | CANDLEPUZ | |
32 | 80CF5EC | 8382E18 | 5 | 9 | POISONROOM | |
33 | 80CF5F4 | 83503DC | 3 | B | SWAMPGAS | |
34 | 80CF5FC | 83DA084 | 0 | 0 | FRONTEND | |
35 | 80CF604 | 83E2A8C | FF | E | GRUNTYSHOOT | |
36 | 80CF60C | 83E6B6C | 5 | 9 | FJORDCAVERN | |
37 | 80CF614 | 83F48A8 | FF | 6 | GRUNTYSHOOT |
The room header is 0x64 bytes long. This data is copied to RAM at 0x3003344.
Offset | Length | Description |
---|---|---|
0x00 | 2 | Tile data 1 count |
0x02 | 2 | Tile set 1 count |
0x04 | 2 | Tile data 2 count |
0x06 | 2 | Tile set 2 count |
0x08 | 2 | Enabled backgrounds |
0x0A | 2 | Map X length (in tiles) |
0x0C | 2 | Map Y length (in tiles) |
0x0E | 1 | |
0x0F | 1 | Compression method used (0 = no compression, 1 = LZ77, 2 = huff) |
0x10 | 4 | |
0x14 | 1 | BG0 tile set (00 = set 1, 01 = set 2) |
0x15 | 1 | BG1 tile set (00 = set 1, 01 = set 2) |
0x16 | 1 | BG2 tile set (00 = set 1, 01 = set 2) |
0x17 | 1 | BG3 tile set (00 = set 1, 01 = set 2) |
0x18 | 4 | Background palette pointer |
0x1C | 4 | Tile data 1 pointer |
0x20 | 4 | Tile set 1 pointer |
0x24 | 4 | Tile data 2 pointer |
0x28 | 4 | Tile set 2 pointer |
0x2C | 4 | Tile animations 1 pointer |
0x30 | 4 | Tile animations 2 pointer |
0x34 | 4 | Collision pointer |
0x38 | 4 | Textbar NPC pointer |
0x3C | 4 | Textbar bozzeye pointer |
0x40 | 4 | Entities pointer |
0x44 | 4 | Sprite palette pointer |
0x48 | 4 | ?? pointer |
0x4C | 4 | Map 1 pointer |
0x50 | 4 | Map 2 pointer |
0x54 | 4 | Map 3 pointer |
0x58 | 4 | Map 4 pointer |
0x5C | 1 | BG0 stationary (0 = not stationary, 1 = stationary) |
0x5D | 1 | BG1 stationary (0 = not stationary, 1 = stationary) |
0x5E | 1 | BG2 stationary (0 = not stationary, 1 = stationary) |
0x5F | 1 | BG3 stationary (0 = not stationary, 1 = stationary) |
0x60 | 1 | BG0 control (If these booleans are true, some functions have control over the background control registers.) |
0x61 | 1 | BG1 control |
0x62 | 1 | BG2 control |
0x63 | 1 | BG3 control |
Tile data is compressed pixel data which is directly transferred to VRAM. The tile data is 4bpp.
Each tile in the tile set is a collection of 16 entries. Each entry refers to tile data in ram and is 2 bytes in size.
[PP PP] [X] [Y] [TTTTTTTTTT]
P | The palette of the block |
X | X mirror boolean |
Y | Y mirror boolean |
T | The tile data it uses. |
See Tile set 1
Tile animations store its own tiles. In game the animated tiles is put in VRAM first and then the other tiles.
Block structure
Size | Description |
---|---|
4 | Number of tile animations |
8 * n | Tile animation index |
16 * n | Tile data |
Each entry is 8 bytes long.
[FF FF] [SS SS] [PP PP PP PP]
F | Number of frames |
S | Frames per second |
P | Tiles pointer |
Tile data is transferred to VRAM at intervals to make the animation effect. See Tile data 1.
The textbar consists of Y * X tile entries.
Size | Description |
---|---|
1 | X size |
1 | Y size |
2 * (X * Y) | Tile entries |
see Textbar NPC