Skip to content

Latest commit

 

History

History
158 lines (151 loc) · 3.79 KB

RTT.md

File metadata and controls

158 lines (151 loc) · 3.79 KB

RTT

.rtt files store the image data for a single texture. The underlying pixel format is actually just a DDS but the headers are different.

Header

The header is 0x80 bytes long but in almost all cases, the data resides in the first 0x10 bytes.

Offset Length Example Name Notes
0x00 0x01 0x80 Magic Number RTT's always start with 0x80
0x01 0x03 0x0055EC Last DWORD Is equal to file size minus 0x04
0x04 0x01 0x08 Compression Method 0x01, 0x05 - No compression?
0x06 - DXT1
0x07 - DXT3
0x08 - DXT5
0x05 0x01 0x00 Data Location Flag Always 0x00 in .rtt files
When in an .rtt header in a .ngp file:
- 0x00 - Data in .vram
- 0x01 - Data in .ngp
0x06 0x02 0xAAE4 Image Format 0xAAE4 - DXT1, DXT3, DXT5, ...?
0xA9FF - Boundary Mask (1 byte alphas)
0xAA1B - Unknown
0x08 0x02 0x0400 Width Image pixel width
0x0A 0x02 0x0400 Height Image pixel height
0x0C 0x01 0x00 Unknown Always 0?
0x0D 0x01 0x01 Unknown
0x0E 0x01 0x01 Number of mipmaps A value of 0x01 means 1 layer (no mipmapping)
0x0F 0x01 0x02 Unknown

Header Statistics

Syntax: byte_name: byte_value(occurances)

MAGI: 0x80(441)
LEN0: 0x0(114) 0x1(122) 0x2(16) 0x4(89) 0x5(7) 0x7(2) 0x8(3) 0xa(7) 0x10(44) 0x15(1) 0x20(2) 0x2a(34)
LEN1: 0x0(243) 0x1(1) 0x2(7) 0x4(1) 0x5(34) 0x8(2) 0xf(1) 0x10(1) 0x15(3) 0x1d(3) 0x20(1) 0x2b(1) 0x40(11) 0x49(22) 0x55(66) 0x58(2) 0x6c(16) 0x80(13) 0xab(13)
LEN2: 0xc(1) 0x28(1) 0x34(11) 0x4c(2) 0x50(1) 0x7c(295) 0x9c(3) 0xa0(22) 0xd0(42) 0xe4(57) 0xec(6)
COMP: 0x1(31) 0x5(65) 0x6(238) 0x7(6) 0x8(101)
0x05: 0x0(441)
FMT0: 0xa9(31) 0xaa(410)
FMT1: 0x1b(65) 0xe4(345) 0xff(31)
WDT0: 0x0(99) 0x1(44) 0x2(202) 0x4(21) 0x5(2) 0x8(73)
WDT1: 0x0(336) 0x8(1) 0x10(57) 0x20(8) 0x40(4) 0x80(15) 0xbc(4) 0xd8(16)
HGT0: 0x0(85) 0x1(163) 0x2(104) 0x4(56) 0x8(33)
HGT1: 0x0(348) 0x8(1) 0x10(58) 0x20(8) 0x38(4) 0x40(6) 0x80(12) 0xd0(2) 0xe0(2)
0x0c: 0x0(441)
0x0d: 0x1(419) 0x10(22)
MIPS: 0x1(269) 0x3(31) 0x4(1) 0x5(57) 0x6(1) 0x7(3) 0x8(1) 0x9(7) 0xa(60) 0xb(9) 0xc(2)
0x0f: 0x2(419) 0x3(22)
0x10: 0x0(441)
0x11: 0x0(441)
0x12: 0x0(384) 0x1(16) 0x2(31) 0x3(1) 0x4(1) 0x5(2) 0x6(3) 0x8(1) 0xa(2)
0x13: 0x0(420) 0x40(1) 0x78(1) 0xb0(16) 0xf0(3)
0x14: 0x0(441)
0x15: 0x0(441)
0x16: 0x0(441)
0x17: 0x0(441)
0x18: 0x0(441)
0x19: 0x0(441)
0x1a: 0x0(441)
0x1b: 0x0(441)
0x1c: 0x0(441)
0x1d: 0x0(441)
0x1e: 0x0(441)
0x1f: 0x0(441)
0x20: 0x0(441)
0x21: 0x0(441)
0x22: 0x0(441)
0x23: 0x0(441)
0x24: 0x0(441)
0x25: 0x0(441)
0x26: 0x0(441)
0x27: 0x0(441)
0x28: 0x0(441)
0x29: 0x0(441)
0x2a: 0x0(441)
0x2b: 0x0(441)
0x2c: 0x0(441)
0x2d: 0x0(441)
0x2e: 0x0(441)
0x2f: 0x0(441)
0x30: 0x0(441)
0x31: 0x0(441)
0x32: 0x0(441)
0x33: 0x0(441)
0x34: 0x0(441)
0x35: 0x0(441)
0x36: 0x0(441)
0x37: 0x0(441)
0x38: 0x0(441)
0x39: 0x0(441)
0x3a: 0x0(441)
0x3b: 0x0(441)
0x3c: 0x0(441)
0x3d: 0x0(441)
0x3e: 0x0(441)
0x3f: 0x0(441)
0x40: 0x0(441)
0x41: 0x0(441)
0x42: 0x0(441)
0x43: 0x0(441)
0x44: 0x0(441)
0x45: 0x0(441)
0x46: 0x0(441)
0x47: 0x0(441)
0x48: 0x0(441)
0x49: 0x0(441)
0x4a: 0x0(441)
0x4b: 0x0(441)
0x4c: 0x0(441)
0x4d: 0x0(441)
0x4e: 0x0(441)
0x4f: 0x0(441)
0x50: 0x0(441)
0x51: 0x0(441)
0x52: 0x0(441)
0x53: 0x0(441)
0x54: 0x0(441)
0x55: 0x0(441)
0x56: 0x0(440) 0x1(1)
0x57: 0x0(441)
0x58: 0x0(441)
0x59: 0x0(441)
0x5a: 0x0(441)
0x5b: 0x0(441)
0x5c: 0x0(441)
0x5d: 0x0(441)
0x5e: 0x0(440) 0x1(1)
0x5f: 0x0(441)
0x60: 0x0(441)
0x61: 0x0(441)
0x62: 0x0(441)
0x63: 0x0(441)
0x64: 0x0(441)
0x65: 0x0(441)
0x66: 0x0(440) 0x1(1)
0x67: 0x0(441)
0x68: 0x0(441)
0x69: 0x0(441)
0x6a: 0x0(441)
0x6b: 0x0(441)
0x6c: 0x0(441)
0x6d: 0x0(441)
0x6e: 0x0(440) 0x1(1)
0x6f: 0x0(441)
0x70: 0x0(441)
0x71: 0x0(441)
0x72: 0x0(441)
0x73: 0x0(441)
0x74: 0x0(441)
0x75: 0x0(441)
0x76: 0x0(440) 0x1(1)
0x77: 0x0(441)
0x78: 0x0(441)
0x79: 0x0(441)
0x7a: 0x0(441)
0x7b: 0x0(441)
0x7c: 0x0(441)
0x7d: 0x0(441)
0x7e: 0x0(440) 0x1(1)
0x7f: 0x0(441)