User Tools


Rooms

Every data in a room block is uncompressed except for the tile data.

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 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 8×8 tiledata. For each block entry is 2 bytes long.

[PP PP] [X] [Y] [TTTTTTTTTT]

P The palette of the block
X X mirror boolean
Y Y mirror boolean
T 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.

[FF FF] [SS SS] [PP PP PP PP]

F Number of frames
S Frames per second
P tiledata pointer

Tiledata

Each entry is 1 block 8×8 of tiledata. See Tileset 1

34: Collision

38: Textbar NPC

3C: Textbar bozzeye

see Textbar NPC

40: Entities

48: ??