======== Rooms ========
Every data in a room block is uncompressed except for tiles.
===== Room index =====
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 |
==== List of Rooms ====
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 | |
===== Room header =====
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 |
===== Room data =====
==== 1C: Tile data 1 ====
Tile data is compressed pixel data which is directly transferred to VRAM. The tile data is 4bpp.
==== 20: Tile set 1 ====
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. |
==== 28: Tile set 2 ====
See Tile set 1
==== 2C: Tile animations ====
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 |
=== Tile animation index ===
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 ===
Tile data is transferred to VRAM at intervals to make the animation effect.
See Tile data 1.
==== 34: Collision ====
==== 38: Textbar NPC ====
The textbar consists of Y * X tile entries.
^ Size ^ Description ^
| 1 | X size |
| 1 | Y size |
| 2 * (X * Y) | Tile entries |
==== 3C: Textbar bozzeye ====
see Textbar NPC
==== 40: Entities ====
==== 48: ?? ====