======== 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: ?? ====