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 05:00] jesse [Room header] Add Room header |
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 56: | Line 57: | ||
| | 37 | 80CF614 | 83F48A8 | FF | 6 | GRUNTYSHOOT | | | | 37 | 80CF614 | 83F48A8 | FF | 6 | GRUNTYSHOOT | | | ||
| - | ==== Room header ===== | + | ===== Room header ===== |
| - | ^ Offset ^ Length ^ Description | + | The room header is 0x64 bytes long. This data is copied to RAM at 0x3003344. |
| + | |||
| + | ^ Offset ^ Length ^ Description ^ | ||
| | 0x00 | 2 | Tiledata 1 count | | | 0x00 | 2 | Tiledata 1 count | | ||
| | 0x02 | 2 | Tileset 1 count | | | 0x02 | 2 | Tileset 1 count | | ||
| | 0x04 | 2 | Tiledata 2 count | | | 0x04 | 2 | Tiledata 2 count | | ||
| | 0x06 | 2 | Tileset 2 count | | | 0x06 | 2 | Tileset 2 count | | ||
| - | | 0x08 | 2 | | | + | | 0x08 | 2 | Amount of layers on | |
| | 0x0A | 2 | Tilemap X length | | | 0x0A | 2 | Tilemap X length | | ||
| | 0x0C | 2 | Tilemap Y length | | | 0x0C | 2 | Tilemap Y length | | ||
| - | | 0x0E | 2 | | | + | | 0x0E | 1 | | |
| + | | 0x0F | 1 | Compression method used (0 = no compression, 1 = LZ77, 2 = huff) | | ||
| | 0x10 | 4 | | | | 0x10 | 4 | | | ||
| | 0x14 | 1 | Layer 1 Tileset (00 = set 1, 01 = set 2) | | | 0x14 | 1 | Layer 1 Tileset (00 = set 1, 01 = set 2) | | ||
| Line 77: | Line 81: | ||
| | 0x24 | 4 | Tiledata 2 pointer | | | 0x24 | 4 | Tiledata 2 pointer | | ||
| | 0x28 | 4 | Tileset 2 pointer | | | 0x28 | 4 | Tileset 2 pointer | | ||
| - | | 0x2C | 4 | Tile animations pointer | | + | | 0x2C | 4 | Tile animations 1 pointer | |
| - | | 0x30 | 4 | | | + | | 0x30 | 4 | Tile animations 2 pointer | |
| | 0x34 | 4 | Collision pointer | | | 0x34 | 4 | Collision pointer | | ||
| - | | 0x38 | 4 | textbar npc | | + | | 0x38 | 4 | Textbar NPC | |
| - | | 0x3C | 4 | textbar bozzeye | | + | | 0x3C | 4 | Textbar bozzeye | |
| | 0x40 | 4 | Entities pointer | | | 0x40 | 4 | Entities pointer | | ||
| | 0x44 | 4 | Sprite palette pointer | | | 0x44 | 4 | Sprite palette pointer | | ||
| | 0x48 | 4 | ?? pointer | | | 0x48 | 4 | ?? pointer | | ||
| - | | 0x4C | 4 | Tilemap layer 1 | | + | | 0x4C | 4 | Tilemap layer 1 pointer | |
| - | | 0x50 | 4 | Tilemap layer 2 | | + | | 0x50 | 4 | Tilemap layer 2 pointer | |
| - | | 0x54 | 4 | Tilemap layer 3 | | + | | 0x54 | 4 | Tilemap layer 3 pointer | |
| - | | 0x58 | 4 | Tilemap layer 4 | | + | | 0x58 | 4 | Tilemap layer 4 pointer | |
| - | | 0x5C | 1 | Layer 1 Stationary (0 = not stationary, 1 = stationary) | | + | |
| | 0x5C | 1 | Layer 1 Stationary (0 = not stationary, 1 = stationary) | | | 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: ?? ==== | ||