ov029 β€” overlay detail

DS game only γ¨γ‚“γŒγ‚Šγƒœγ‚¦γ‚·γ¨γŠγ—γ‚ƒγ‚Œγͺまほう぀かい The field guide documents the DS game's internals.

containers: /model/item/Troom.ofs, /model/item/room.ofs, 2d/itemorderwnd.lzs (+2 more)

ov029 3d_engine_other

containers: /model/item/Troom.ofs, /model/item/room.ofs, 2d/itemorderwnd.lzs (+2 more)

Header

Numeric metadata for this overlay as read from the overlay table at ROM offset 0x8DE00 (per-entry stride 32 bytes). Function counts, data-item counts, and the call-graph fan-out are from a Ghidra 11.3.1 headless auto-analysis pass.

Overlay ID 29
File ID 29
RAM load address 0x02155a00
RAM size 10,432 bytes (0x28c0)
BSS size 0 bytes
On-disk compressed size 8,672 bytes
Compression flag 0x1 (BLZ-compressed)
Functions 70
External calls 95
Jump tables 3
Data items 161
Code coverage 71% (7,434 of 10,432 bytes)

Reading the binary

The overlay ships on the cart at file ID 29 under the BLZ code-LZ compression wrapper (the same backward-LZ scheme Nintendo uses for executable ARM9 code). At load time the engine reads the overlay table entry at ROM offset 0x8DE00 + 29 * 0x20, allocates the destination RAM region at 0x02155a00, decompresses the body in-place (if compressed), and resolves any external relocations.

To inspect this overlay outside the running game, decompress overlay/overlay_029.bin with ndspy.codeCompression.decompress() (Python ndspy library) and load the resulting plaintext into Ghidra or IDA at base address 0x02155a00. The raw Ghidra auto-analysis dump used to populate this page lives at notes/overlay_knowledgebase/raw/ov029.json; the per-overlay descriptive markdown is at notes/overlay_knowledgebase/ov029.md.

Embedded strings

4 UTF-16 LE strings live inside this overlay's compiled binary. These addresses are absolute (inside the overlay's RAM image after load). The text is stored as little-endian UTF-16 code units, NUL-terminated.

0x02158106 `%! !! 0`
0x02156f0a `ι€’θ€ˆι ‹ι€–γƒ΄ι€–`
0x0215705e `ι Šι€ƒγƒ˜ζ €`
0x02157086 `ζ‚ˆι Šγƒ˜ζ €`

Container references

Distinct container basenames referenced by this overlay. Each is loaded via the content cache by passing the basename string to a lookup that resolves it to a file ID in the ROM's FAT. The path column shows the file's location in the clean extract, where resolved.

Unresolved

These container basenames appeared in the overlay's string table but no file of that name was found in the clean extract. Most are false-positive ASCII matches (function names, register maps, fragments of other strings); a few may be containers that the overlay names but never actually opens. Listed for completeness.

Function list

Functions Ghidra auto-identified inside this overlay's RAM range. Names prefixed FUN_ are auto-generated from the function's entry address; size is in bytes; the "calls" column counts both intra-overlay branches and external ARM9 call targets. The "strings" column counts how many UTF-16 LE strings each function references.

Show all 70 functions
# Address Size Calls Strings Role hint
1 0x021560dc 8 0 0 trampoline / small helper
2 0x021560ec 4 0 0 trampoline / small helper
3 0x021560f0 90 12 0 code
4 0x02156150 1,012 49 0 high-fan-out (likely dispatcher / setup)
5 0x02156558 24 2 0 trampoline / small helper
6 0x02156574 24 2 0 trampoline / small helper
7 0x02156590 8 0 0 trampoline / small helper
8 0x021565a0 8 0 0 trampoline / small helper
9 0x021565b0 68 5 0 code
10 0x021565fc 26 2 0 trampoline / small helper
11 0x02156620 156 9 0 code
12 0x021566c0 96 0 0 code
13 0x02156730 22 3 0 trampoline / small helper
14 0x02156748 100 6 0 code
15 0x021567ac 134 3 1 refs: %! !! 0
16 0x0215684c 56 1 0 code
17 0x02156888 22 1 0 trampoline / small helper
18 0x021568a4 130 9 0 code
19 0x02156934 56 6 0 code
20 0x02156970 10 0 0 trampoline / small helper
21 0x02156984 26 2 0 trampoline / small helper
22 0x021569a4 256 12 0 code
23 0x02156aa8 158 6 0 code
24 0x02156b4c 158 3 0 code
25 0x02156bec 20 0 0 trampoline / small helper
26 0x02156c04 208 12 0 code
27 0x02156cd8 24 2 0 trampoline / small helper
28 0x02156cf4 1,008 32 0 high-fan-out (likely dispatcher / setup)
29 0x021570f4 42 2 0 code
30 0x02157120 36 0 0 trampoline / small helper
31 0x02157148 46 2 0 code
32 0x0215717c 72 3 0 code
33 0x021571c8 36 3 0 trampoline / small helper
34 0x021571f0 12 2 0 trampoline / small helper
35 0x021571fc 68 4 1 refs: mailorder
36 0x02157244 74 5 1 refs: mailorder
37 0x02157294 32 3 0 trampoline / small helper
38 0x021572b4 70 3 1 refs: mailorder
39 0x02157304 10 0 0 trampoline / small helper
40 0x02157314 36 3 0 trampoline / small helper
41 0x02157338 84 3 1 refs: mailorder
42 0x02157390 24 2 0 trampoline / small helper
43 0x021573a8 68 3 1 refs: mailorder
44 0x021573f4 10 0 0 trampoline / small helper
45 0x02157404 30 3 0 trampoline / small helper
46 0x02157424 82 3 1 refs: mailorder
47 0x02157480 30 1 0 trampoline / small helper
48 0x021574a0 72 3 0 code
49 0x021574e8 176 5 0 code
50 0x02157598 94 3 0 code
51 0x021575f8 154 4 1 refs: mailorder
52 0x021576a0 36 1 0 trampoline / small helper
53 0x021576c8 50 3 0 code
54 0x02157700 40 1 0 code
55 0x0215772c 104 5 0 code
56 0x02157798 74 4 1 refs: mailorder
57 0x021577f0 8 0 0 trampoline / small helper
58 0x02157800 28 3 0 trampoline / small helper
59 0x02157820 430 14 0 code
60 0x021579dc 260 5 0 code
61 0x02157b38 70 1 0 code
62 0x02157b84 112 3 0 code
63 0x02157bf4 12 0 0 trampoline / small helper
64 0x02157c04 40 1 0 code
65 0x02157c30 654 29 2 refs: /model/item/room.ofs \| /model/item/Troom.ofs
66 0x02157ef0 12 0 0 trampoline / small helper
67 0x02157f00 50 2 0 code
68 0x02157f3c 52 3 0 code
69 0x02157f74 102 4 0 code
70 0x02157fe8 30 2 0 trampoline / small helper

Open questions & conflicts

Open questions / unknowns

Conflicts with the prior shallow pass

Source