Zelda GCN: DZx files

From z64 wiki
Jump to: navigation, search

Both .dzr and .dzs files - but not .dzb files - follow the same format, called "DZx" here for convenience. They do not have a special identifier tag like "MESG" or "J3D"; instead each DZx file begins with a 32-bit integer with the amount of chunks the file contains. Chunk headers begin right after that.

Chunk Headers

Each chunk header is 0x0C bytes long. Format:
tttttttt cccccccc ssssssss
Where:
t = Chunk type descriptor in ASCII (see below)
c = Element count
s = Elements' absolute start offset

Note that neither the total size of each chunk, nor the size of one chunk element is stored anywhere.

Chunk Types

The contents of chunks with a white background are mostly documented, while those with a red background have not been investigated much or verified yet.

Tag Description Entry Length Found in
2DMA (On-screen map?) 0x38 Stages and rooms
ACTR General actors 0x20 Stages and rooms
Colo Environmental lighting (Brightness) 0x0C Stages
EnvR  ??? 0x08 Stages
EVNT Room Events
(See /stage/dat/event_list.dat)
0x18 Stages
FILI  ??? 0x08 Rooms
LBNK Padding 0x01 Rooms
MULT Room model X/Z translation 0x0C Stages
Pale Environmental lighting (Color) 0x2C Stages
PLYR Player spawn points 0x20 Rooms
RARO  ??? 0x14 Stages and rooms
RCAM  ??? 0x14 Stages and rooms
RPAT  ??? 0x0C Stages and rooms
RPPN Path waypoints 0x10 Stages and rooms
RTBL Something to do with Events? 0x10 Stages
SCLS Exit list 0x0C Stages and rooms
SCOB Environmental actors (ex. light) 0x24 Stages and rooms
SHIP KoRL spawn points 0x10 Rooms
SOND  ??? 0x1C Rooms
STAG Room properties 0x14 Stages
TGDR Doors 0x24 Rooms
TRES Treasure chests 0x20 Stages
Virt  ??? 0x24 Stages

ACTR

Format:
tttttttt tttttttt pppppppp xxxxxxxx yyyyyyyy zzzzzzzz aaaabbbb ccccuuuu
Where:
t = Actor type in ASCII
p = Parameters
x = Position on X-axis (single-precision float)
y = Position on Y-axis (single-precision float)
z = Position on Z-axis (single-precision float)
a = Rotation on X-axis
b = Rotation on Y-axis
c = Rotation on Z-axis
u = Unknown, possibly padding? (0xFFFF)
(Todo: PLYR and TRES follow a similar format, but have other data in X/Z rotation?)

EVNT

Format:
uunnnnnn nnnnnnnn nnnnnnnn nnnnnnnn aabbccdd rreeeeee
Where:
u = Unknown, mostly 0xFF
n = Event name (see /stage/dat/event_list.dat)
a = Unknown
b = Unknown
c = Unknown
d = Unknown
r = Room number, matches number in filenames (ex. Room44.arc), not always set?
e = Unknown, possibly padding? (0xFFFFFF)

MULT

Format:
xxxxxxxx zzzzzzzz aaaa rr cc
Where:
x = Translation on X-axis (single-precision float)
z = Translation on Z-axis (single-precision float)
a = Rotation on X-axis
r = Room number, matches number in filenames
b = Unknown

RPPN

Format:
uuuuuuuu xxxxxxxx yyyyyyyy zzzzzzzz
Where:
u = Unknown
x = Position on X-axis (single-precision float)
y = Position on Y-axis (single-precision float)
z = Position on Z-axis (single-precision float)

SHIP

Format:
xxxxxxxx yyyyyyyy zzzzzzzz uuuuuuuu
Where:
x = Position on X-axis (single-precision float)
y = Position on Y-axis (single-precision float)
z = Position on Z-axis (single-precision float)
u = Unknown

SCLS

Format:
xxxxxxxxxxxxxxxx yy zz aa
Where:
x = Folder of destination map in ASCII
y = Spawn point used to enter destination map
z = Room number (I.E. 44) in hex
a = Exit type (Door, upward teleport, hole, ect.)

Colo

Format:
xxxx yyyy zzzz
Where:
x = Brightness
y = Darkness
z = Unknown (related to y?)

  • Note that each DZS file usually contains multiple versions of this entry; this is probably for having differences in area lighting between night and day.

TRES

Format:
xxxxxxxxxxxxxxxx FF yyyy zzzzzzzz aaaaaaaa bbbbbbbb cccc rrrr dd
Where:
x = The word 'takara' in ASCII, followed by a number that differs from entry to entry (there are other words used here; needs investigation)
F = Padding
y = Chest type (common wooden, Big Key, ect)
z = Location on X-axis
a = Location on y-axis
b = Location on z-axis
c = Unknown
r = Rotation on X-axis
d = Chest contents (IE Rupees or the Hookshot)

STAG

Format:
xxxxxxxxxxxxxxxxxx yyyy uuuu aaaa uuuuuuuuuu
Where:
x = 3F 80 00 00 48 1C 40 00 00 (The same for all entries)
y = Key counter display
a = Weapon usage
u = Unknown

Credits

Wind Waker Hacking Thread at The GCN; Sage of Mirrors, fkualol, xdaniel, et al.