This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
banjo_kazooie_gruntys_revenge:rooms [2016/10/18 00:15] jesse [List of Rooms] Add room list and entry specifications |
banjo_kazooie_gruntys_revenge:rooms [2025/10/18 21:21] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Rooms ====== | + | ======== Rooms ======== |
| Every data in a room block is uncompressed except for the tile data. | Every data in a room block is uncompressed except for the tile data. | ||
| - | ==== Room index ===== | + | ===== Room index ===== |
| The lookup table for each room starts at 0x80CF4EC. Each entry is 8 bytes long. | The lookup table for each room starts at 0x80CF4EC. Each entry is 8 bytes long. | ||
| Line 12: | Line 13: | ||
| | <color darkblue>M</color> | What music plays in the room | | | <color darkblue>M</color> | What music plays in the room | | ||
| - | === List of Rooms ==== | + | ==== List of Rooms ==== |
| There are 38 rooms in the rom. | There are 38 rooms in the rom. | ||
| Line 24: | Line 25: | ||
| | 5 | 80CF514 | 81748A8 | 1 | 3 | UPPERFARM | | | | 5 | 80CF514 | 81748A8 | 1 | 3 | UPPERFARM | | | ||
| | 6 | 80CF51C | 8199534 | FF | A | MUMBOHUT | Mumbo's hut | | | 6 | 80CF51C | 8199534 | FF | A | MUMBOHUT | Mumbo's hut | | ||
| - | | 7 | 80CF524 | 81A62D4 | 0 | 4 | HONEYB | | | + | | 7 | 80CF524 | 81A62D4 | 0 | 4 | HONEYB | Honey B's hive | |
| - | | 8 | 80CF52C | 81ADCE8 | 2 | 2 | BEACHSTART | Breachull beach | | + | | 8 | 80CF52C | 81ADCE8 | 2 | 2 | BEACHSTART | Breechull beach | |
| | 9 | 80CF534 | 81E205C | 2 | C | UNDERCORAL | | | | 9 | 80CF534 | 81E205C | 2 | C | UNDERCORAL | | | ||
| | 10 | 80CF53C | 83BAEB8 | 5 | 5 | OCTOSHOOT | | | | 10 | 80CF53C | 83BAEB8 | 5 | 5 | OCTOSHOOT | | | ||
| Line 55: | Line 56: | ||
| | 36 | 80CF60C | 83E6B6C | 5 | 9 | FJORDCAVERN | | | | 36 | 80CF60C | 83E6B6C | 5 | 9 | FJORDCAVERN | | | ||
| | 37 | 80CF614 | 83F48A8 | FF | 6 | GRUNTYSHOOT | | | | 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 | Tiledata 1 count | | ||
| + | | 0x02 | 2 | Tileset 1 count | | ||
| + | | 0x04 | 2 | Tiledata 2 count | | ||
| + | | 0x06 | 2 | Tileset 2 count | | ||
| + | | 0x08 | 2 | Amount of layers on | | ||
| + | | 0x0A | 2 | Tilemap X length | | ||
| + | | 0x0C | 2 | Tilemap Y length | | ||
| + | | 0x0E | 1 | | | ||
| + | | 0x0F | 1 | Compression method used (0 = no compression, 1 = LZ77, 2 = huff) | | ||
| + | | 0x10 | 4 | | | ||
| + | | 0x14 | 1 | Layer 1 Tileset (00 = set 1, 01 = set 2) | | ||
| + | | 0x15 | 1 | Layer 2 Tileset (00 = set 1, 01 = set 2) | | ||
| + | | 0x16 | 1 | Layer 3 Tileset (00 = set 1, 01 = set 2) | | ||
| + | | 0x17 | 1 | Layer 4 Tileset (00 = set 1, 01 = set 2) | | ||
| + | | 0x18 | 4 | Background palette pointer | | ||
| + | | 0x1C | 4 | Tiledata 1 pointer | | ||
| + | | 0x20 | 4 | Tileset 1 pointer | | ||
| + | | 0x24 | 4 | Tiledata 2 pointer | | ||
| + | | 0x28 | 4 | Tileset 2 pointer | | ||
| + | | 0x2C | 4 | Tile animations 1 pointer | | ||
| + | | 0x30 | 4 | Tile animations 2 pointer | | ||
| + | | 0x34 | 4 | Collision pointer | | ||
| + | | 0x38 | 4 | Textbar NPC | | ||
| + | | 0x3C | 4 | Textbar bozzeye | | ||
| + | | 0x40 | 4 | Entities pointer | | ||
| + | | 0x44 | 4 | Sprite palette pointer | | ||
| + | | 0x48 | 4 | ?? pointer | | ||
| + | | 0x4C | 4 | Tilemap layer 1 pointer | | ||
| + | | 0x50 | 4 | Tilemap layer 2 pointer | | ||
| + | | 0x54 | 4 | Tilemap layer 3 pointer | | ||
| + | | 0x58 | 4 | Tilemap layer 4 pointer | | ||
| + | | 0x5C | 1 | Layer 1 Stationary (0 = not stationary, 1 = stationary) | | ||
| + | | 0x5D | 1 | Layer 2 Stationary (0 = not stationary, 1 = stationary) | | ||
| + | | 0x5E | 1 | Layer 3 Stationary (0 = not stationary, 1 = stationary) | | ||
| + | | 0x5F | 1 | Layer 4 Stationary (0 = not stationary, 1 = stationary) | | ||
| + | | 0x60 | 4 | | | ||
| + | |||
| + | ===== Room data ===== | ||
| + | |||
| + | ==== 20: Tileset 1 ==== | ||
| + | |||
| + | Each tile is a collection of 16 blocks of 8x8 tiledata. For each block entry is 2 bytes long. | ||
| + | |||
| + | ''[<color darkred><sub>PP PP</sub></color>] [<color darkgreen><sub>X</sub></color>] [<color darkblue><sub>Y</sub></color>] [<color purple><sub>TTTTTTTTTT</sub></color>]'' | ||
| + | |||
| + | | <color darkred>P</color> | The palette of the block| | ||
| + | | <color darkgreen>X</color> | X mirror boolean | | ||
| + | | <color darkblue>Y</color> | Y mirror boolean | | ||
| + | | <color purple>T</color> | The block of tiledata it uses. | | ||
| + | |||
| + | ==== 28: Tileset 2 ==== | ||
| + | |||
| + | See Tileset 1 | ||
| + | |||
| + | ==== 2C: Tile animations ==== | ||
| + | |||
| + | Tile animations store its own tiledata. In game the animated tiledata is first put in VRAM and then the other tile data. | ||
| + | |||
| + | Block structure | ||
| + | ^ Size ^ Description ^ | ||
| + | | 4 | Number of tile animations | | ||
| + | | 8 * n | Tile animation index | | ||
| + | | 16 * n | Tiledata | | ||
| + | |||
| + | === Tile animation index === | ||
| + | |||
| + | Each entry is 8 bytes long. | ||
| + | |||
| + | ''[<color darkred>FF FF</color>] [<color darkgreen>SS SS</color>] [<color darkblue>PP PP PP PP</color>]'' | ||
| + | |||
| + | | <color darkred>F</color> | Number of frames | | ||
| + | | <color darkgreen>S</color> | Frames per second | | ||
| + | | <color darkblue>P</color> | tiledata pointer | | ||
| + | |||
| + | === Tiledata === | ||
| + | |||
| + | Each entry is 1 block 8x8 of tiledata. | ||
| + | See Tileset 1 | ||
| + | |||
| + | ==== 34: Collision ==== | ||
| + | |||
| + | ==== 38: Textbar NPC ==== | ||
| + | |||
| + | ==== 3C: Textbar bozzeye ==== | ||
| + | |||
| + | see Textbar NPC | ||
| + | |||
| + | ==== 40: Entities ==== | ||
| + | |||
| + | ==== 48: ?? ==== | ||