User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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