ov157 — overlay detail

DS game only とんがりボウシとおしゃれなまほうつかい The field guide documents the DS game's internals.

Dialogue renderer + rumor (uwasa) system — renders ALL on-screen text: dialog windows, onemsg floating bubbles, multi-choice prompts. Also contains the NPC rumor/reputation gameplay system. The bubble_sel byte in the init struct controls rendering: 0=WINDOW (260×138px dialog box), 1-4=BUBBLE (128×76px floating). 251 total functions. Loads data/2d/selwindow/%s.lzs.

ov157 selwindow_2d_ui

Dialogue renderer + rumor (uwasa) system — renders ALL on-screen text: dialog windows, onemsg floating bubbles, multi-choice prompts. Also contains the NPC rumor/reputation gameplay system. The bubble_sel byte in the init struct controls rendering: 0=WINDOW (260×138px dialog box), 1-4=BUBBLE (128×76px floating). 251 total functions. Loads data/2d/selwindow/%s.lzs.

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 157
File ID 157
RAM load address 0x021b6080
RAM size 54,144 bytes (0xd380)
BSS size 32 bytes
On-disk compressed size 43,004 bytes
Compression flag 0x1 (BLZ-compressed)
Functions 247
External calls 391
Jump tables 29
Data items 1,295
Code coverage 47% (25,592 of 54,144 bytes)

Reading the binary

The overlay ships on the cart at file ID 157 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 + 157 * 0x20, allocates the destination RAM region at 0x021b6080, decompresses the body in-place (if compressed), and resolves any external relocations.

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

Embedded strings

7 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.

0x021b6867 `鷶ヿ唜延`
0x021b78c9 `砜ぃ礘秶擸`
0x021b8091 `琜駶ヽ爜`
0x021b822f `へ愜臶懽嘙`
0x021c0529 `歹べ阜釶`
0x021c0ffa `ぎ瀁榡昩`
0x021c1b1d `泰棸ゎ桃粆檽`

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 247 functions
# Address Size Calls Strings Role hint
1 0x021b6080 100 3 0 module_init() — overlay initialization entry point
2 0x021b6180 340 23 0 uwasa_toplevel_dispatcher() — top-level rumor system dispatcher
3 0x021b62d8 1,252 69 0 uwasa_state_machine_main() — 8-case main rumor-bubble state machine
4 0x021b67bc 440 30 0 uwasa_subflow_dispatch() — 5-case sub-state for sound + message progression
5 0x021b6984 86 4 0 uwasa_subflow_helper() — helper for rumor subflow transitions
6 0x021b6a08 72 2 0 rumor/dialogue system helper
7 0x021b6a50 436 22 0 select_window_state_machine() — 10-case choice-prompt UI state machine
8 0x021b6f7c 10 0 0 utility trampoline
9 0x021b72b4 482 21 0 state-machine dispatcher or complex handler
10 0x021b74a0 20 0 0 utility trampoline
11 0x021b74b4 10 1 0 utility trampoline
12 0x021b74c0 20 1 0 utility trampoline
13 0x021b753c 18 2 0 utility trampoline
14 0x021b7550 478 39 0 state-machine dispatcher or complex handler
15 0x021b7748 22 1 0 utility trampoline
16 0x021b7764 22 1 0 utility trampoline
17 0x021b7780 94 4 0 rumor/dialogue system helper
18 0x021b7898 18 1 0 utility trampoline
19 0x021b790c 54 2 0 rumor/dialogue system helper
20 0x021b7980 38 3 0 utility trampoline
21 0x021b7ab0 12 0 0 utility trampoline
22 0x021b7ac0 64 3 0 rumor/dialogue system helper
23 0x021b7c28 212 8 0 rumor/dialogue system helper
24 0x021b7df8 16 0 0 utility trampoline
25 0x021b7e0c 12 1 0 utility trampoline
26 0x021b7e1c 12 0 0 utility trampoline
27 0x021b7e2c 6 0 0 utility trampoline
28 0x021b7e38 24 0 0 utility trampoline
29 0x021b7e50 100 4 0 rumor/dialogue system helper
30 0x021b7f48 160 11 0 rumor/dialogue system helper
31 0x021b7ff4 60 2 0 rumor/dialogue system helper
32 0x021b8030 288 11 0 rumor_record_state() — 5-case per-rumor-record entry handler
33 0x021b8210 64 5 0 rumor/dialogue system helper
34 0x021b84ac 32 3 0 utility trampoline
35 0x021b84d0 36 3 0 utility trampoline
36 0x021b84fc 32 3 0 utility trampoline
37 0x021b8520 24 2 0 utility trampoline
38 0x021b8590 48 4 0 rumor/dialogue system helper
39 0x021b86e0 252 9 0 npc_speaker_render_state() — 6-case NPC speaker animation + bubble render
40 0x021b87fc 38 2 0 utility trampoline
41 0x021b88bc 62 6 0 rumor/dialogue system helper
42 0x021b8900 26 2 0 utility trampoline
43 0x021b8b14 50 4 0 rumor/dialogue system helper
44 0x021b8c70 86 4 0 rumor/dialogue system helper
45 0x021b8cc8 64 2 0 rumor/dialogue system helper
46 0x021b8d08 112 5 0 rumor/dialogue system helper
47 0x021b8d78 88 2 0 rumor/dialogue system helper
48 0x021b8dd0 764 45 0 rumor_listen_dispatch() — 14-case largest sub-state-machine in overlay
49 0x021b9114 18 0 0 utility trampoline
50 0x021b9228 202 15 0 rumor/dialogue system helper
51 0x021b9544 24 2 0 utility trampoline
52 0x021b9560 96 2 0 rumor/dialogue system helper
53 0x021b95c0 198 12 0 rumor/dialogue system helper
54 0x021b97b4 64 2 0 rumor/dialogue system helper
55 0x021b97f4 68 3 0 rumor/dialogue system helper
56 0x021b9af0 66 2 0 rumor/dialogue system helper
57 0x021b9b34 20 0 0 utility trampoline
58 0x021b9b48 204 15 0 rumor/dialogue system helper
59 0x021b9c24 86 4 0 rumor/dialogue system helper
60 0x021b9c7c 212 11 0 rumor/dialogue system helper
61 0x021b9d50 90 10 0 rumor/dialogue system helper
62 0x021b9e04 64 6 0 rumor/dialogue system helper
63 0x021b9f74 390 17 0 rumor_pre_listen_setup() — 5-case pre-listen setup (NPC turn, camera, audio)
64 0x021ba628 16 1 0 utility trampoline
65 0x021ba6e4 26 2 0 utility trampoline
66 0x021ba924 106 5 0 rumor/dialogue system helper
67 0x021ba990 478 19 0 uwasa_finalize_state() — 11-case finalization + save-buffer write
68 0x021bae04 116 7 0 rumor/dialogue system helper
69 0x021bae98 24 0 0 utility trampoline
70 0x021bb264 12 2 0 utility trampoline
71 0x021bb270 60 6 0 rumor/dialogue system helper
72 0x021bb338 96 8 0 rumor/dialogue system helper
73 0x021bbb84 100 3 0 rumor/dialogue system helper
74 0x021bbbe8 72 2 0 rumor/dialogue system helper
75 0x021bbc30 70 2 0 rumor/dialogue system helper
76 0x021bbd0c 52 2 0 rumor/dialogue system helper
77 0x021bbfe0 114 6 0 rumor/dialogue system helper
78 0x021bc18c 24 2 0 utility trampoline
79 0x021bc1a4 28 2 0 utility trampoline
80 0x021bc1f0 26 2 0 utility trampoline
81 0x021bc238 50 3 0 rumor/dialogue system helper
82 0x021bc42c 208 10 0 rumor/dialogue system helper
83 0x021bc4fc 54 3 0 rumor/dialogue system helper
84 0x021bc538 82 6 0 rumor/dialogue system helper
85 0x021bc660 94 2 0 rumor/dialogue system helper
86 0x021bc924 50 3 0 rumor/dialogue system helper
87 0x021bc960 6 0 0 utility trampoline
88 0x021bc968 154 14 0 rumor/dialogue system helper
89 0x021bca08 182 8 0 rumor/dialogue system helper
90 0x021bcac8 6 0 0 utility trampoline
91 0x021bcad0 82 4 0 rumor/dialogue system helper
92 0x021bcb4c 52 3 0 rumor/dialogue system helper
93 0x021bcb84 228 8 0 rumor/dialogue system helper
94 0x021bcecc 42 3 0 rumor/dialogue system helper
95 0x021bcf24 40 4 0 rumor/dialogue system helper
96 0x021bcf4c 64 2 0 rumor/dialogue system helper
97 0x021bcfc4 28 3 0 utility trampoline
98 0x021bd0f4 56 2 0 rumor/dialogue system helper
99 0x021bd208 70 6 0 rumor/dialogue system helper
100 0x021bd2a0 78 6 0 rumor/dialogue system helper
101 0x021bd464 648 29 0 state-machine dispatcher or complex handler
102 0x021bdae0 372 23 0 state-machine dispatcher or complex handler
103 0x021bdc68 6 0 0 utility trampoline
104 0x021bdc98 28 3 0 utility trampoline
105 0x021bdd1c 258 7 0 rumor/dialogue system helper
106 0x021bde38 382 13 0 rumor/dialogue system helper
107 0x021bdfc0 6 0 0 utility trampoline
108 0x021bdfc8 152 8 0 rumor/dialogue system helper
109 0x021be078 108 5 0 rumor/dialogue system helper
110 0x021be0e8 114 4 0 rumor/dialogue system helper
111 0x021be160 28 1 0 utility trampoline
112 0x021be1ac 48 3 0 rumor/dialogue system helper
113 0x021be1dc 26 1 0 utility trampoline
114 0x021be254 122 4 0 rumor/dialogue system helper
115 0x021be2d8 174 7 0 rumor/dialogue system helper
116 0x021be38c 176 9 0 rumor/dialogue system helper
117 0x021be628 30 2 0 utility trampoline
118 0x021be658 78 6 0 rumor/dialogue system helper
119 0x021be6ac 28 0 0 utility trampoline
120 0x021be6d8 22 1 0 utility trampoline
121 0x021be6f0 16 1 0 utility trampoline
122 0x021be708 12 1 0 utility trampoline
123 0x021be714 110 3 0 rumor/dialogue system helper
124 0x021be790 26 1 0 utility trampoline
125 0x021be7b0 172 9 0 rumor/dialogue system helper
126 0x021be864 36 2 0 utility trampoline
127 0x021be888 8 0 0 utility trampoline
128 0x021be894 26 1 0 utility trampoline
129 0x021be8b0 160 7 0 rumor/dialogue system helper
130 0x021be958 190 5 0 rumor/dialogue system helper
131 0x021beac8 26 1 0 utility trampoline
132 0x021bebac 128 9 0 rumor/dialogue system helper
133 0x021bec40 552 28 0 state-machine dispatcher or complex handler
134 0x021bee70 22 1 0 utility trampoline
135 0x021beebc 62 3 0 rumor/dialogue system helper
136 0x021bef08 62 3 0 rumor/dialogue system helper
137 0x021bef54 62 3 0 rumor/dialogue system helper
138 0x021bef9c 62 3 0 rumor/dialogue system helper
139 0x021bf040 64 2 0 rumor/dialogue system helper
140 0x021bf084 24 2 0 utility trampoline
141 0x021bf154 250 9 0 rumor/dialogue system helper
142 0x021bf3c4 422 12 0 rumor/dialogue system helper
143 0x021bf59c 142 6 0 rumor/dialogue system helper
144 0x021bf678 30 2 0 utility trampoline
145 0x021bf698 52 3 0 rumor/dialogue system helper
146 0x021bf70c 154 5 0 rumor/dialogue system helper
147 0x021bf7ac 102 5 0 rumor/dialogue system helper
148 0x021bf818 178 7 0 rumor/dialogue system helper
149 0x021bf8d4 306 10 0 rumor/dialogue system helper
150 0x021bfc18 34 2 0 utility trampoline
151 0x021bfc40 34 2 0 utility trampoline
152 0x021bfc68 34 2 0 utility trampoline
153 0x021bfce4 30 2 0 utility trampoline
154 0x021bff60 82 5 0 rumor/dialogue system helper
155 0x021bffd4 18 1 0 utility trampoline
156 0x021bffe8 506 37 0 state-machine dispatcher or complex handler
157 0x021c0204 16 0 0 utility trampoline
158 0x021c0214 164 7 0 rumor/dialogue system helper
159 0x021c0348 32 1 0 utility trampoline
160 0x021c03c8 126 7 0 rumor/dialogue system helper
161 0x021c04fc 90 4 0 rumor/dialogue system helper
162 0x021c05e0 86 5 0 rumor/dialogue system helper
163 0x021c063c 8 0 0 utility trampoline
164 0x021c0644 176 6 0 rumor/dialogue system helper
165 0x021c0700 82 3 0 rumor/dialogue system helper
166 0x021c0810 76 3 0 rumor/dialogue system helper
167 0x021c0898 36 1 0 utility trampoline
168 0x021c08ec 22 2 0 utility trampoline
169 0x021c0984 16 1 0 utility trampoline
170 0x021c0994 28 1 0 utility trampoline
171 0x021c09b0 60 3 0 rumor/dialogue system helper
172 0x021c0a58 20 1 0 utility trampoline
173 0x021c0a6c 20 2 0 utility trampoline
174 0x021c0abc 34 4 0 utility trampoline
175 0x021c0ae0 18 1 0 utility trampoline
176 0x021c0af4 42 3 0 rumor/dialogue system helper
177 0x021c0b20 20 1 0 utility trampoline
178 0x021c0b34 40 4 0 rumor/dialogue system helper
179 0x021c0b5c 20 1 0 utility trampoline
180 0x021c0b70 84 5 0 rumor/dialogue system helper
181 0x021c0bc4 162 13 0 rumor/dialogue system helper
182 0x021c0c70 292 10 0 rumor/dialogue system helper
183 0x021c0da0 14 0 0 utility trampoline
184 0x021c0db4 124 0 0 rumor/dialogue system helper
185 0x021c0e38 4 0 0 utility trampoline
186 0x021c0e3c 50 3 0 dialogue_renderer_ctor() — allocates 660-byte (0x294) renderer instance
187 0x021c0eb8 64 1 0 rumor/dialogue system helper
188 0x021c0ef8 78 1 0 dialogue_renderer_init_canonical() — canonical dialogue-render entry called from arm9 universal parser FUN_02066c58. param_4 = bubble_sel (0=WINDOW, 1-4=BUBBLE)
189 0x021c0f48 436 11 0 dialogue_renderer_init_method() [vtable 2] — populates instance from init-struct, calls layout pipeline
190 0x021c143c 14 0 0 utility trampoline
191 0x021c1494 52 4 0 rumor/dialogue system helper
192 0x021c150c 20 1 0 utility trampoline
193 0x021c1520 40 3 1 refs: selwd?
194 0x021c154c 158 5 0 rumor/dialogue system helper
195 0x021c15f0 32 2 0 utility trampoline
196 0x021c1614 148 5 0 rumor/dialogue system helper
197 0x021c16ac 34 2 0 utility trampoline
198 0x021c16d4 208 8 0 rumor/dialogue system helper
199 0x021c17a8 54 2 0 rumor/dialogue system helper
200 0x021c17e4 104 4 0 rumor/dialogue system helper
201 0x021c1854 32 1 0 utility trampoline
202 0x021c1878 96 4 0 rumor/dialogue system helper
203 0x021c18e0 32 1 0 utility trampoline
204 0x021c1904 32 2 0 utility trampoline
205 0x021c1924 34 2 0 utility trampoline
206 0x021c1948 56 2 0 rumor/dialogue system helper
207 0x021c1980 34 1 0 utility trampoline
208 0x021c19a8 34 1 0 utility trampoline
209 0x021c19d0 152 4 0 rumor/dialogue system helper
210 0x021c1a70 60 4 0 rumor/dialogue system helper
211 0x021c1ab0 20 1 0 utility trampoline
212 0x021c1ac4 20 1 0 utility trampoline
213 0x021c1ad8 80 4 0 rumor/dialogue system helper
214 0x021c1b2c 46 2 0 rumor/dialogue system helper
215 0x021c1b64 86 2 0 rumor/dialogue system helper
216 0x021c1bc0 46 2 0 rumor/dialogue system helper
217 0x021c1bf8 94 3 0 rumor/dialogue system helper
218 0x021c1c60 86 0 0 rumor/dialogue system helper
219 0x021c1cb8 20 0 0 utility trampoline
220 0x021c1ccc 200 3 0 rumor/dialogue system helper
221 0x021c1da4 6 0 0 utility trampoline
222 0x021c1db4 36 1 0 utility trampoline
223 0x021c1dd8 8 0 0 utility trampoline
224 0x021c1de8 188 6 0 rumor/dialogue system helper
225 0x021c1ea8 56 1 0 rumor/dialogue system helper
226 0x021c1ee4 44 2 0 rumor/dialogue system helper
227 0x021c1f10 552 29 0 state-machine dispatcher or complex handler
228 0x021c2148 142 6 0 rumor/dialogue system helper
229 0x021c21e0 8 0 0 utility trampoline
230 0x021c21e8 180 2 0 rumor/dialogue system helper
231 0x021c22a4 56 0 0 rumor/dialogue system helper
232 0x021c22e4 34 1 0 utility trampoline
233 0x021c230c 38 1 0 utility trampoline
234 0x021c233c 26 0 0 utility trampoline
235 0x021c235c 36 0 0 utility trampoline
236 0x021c2384 28 0 0 utility trampoline
237 0x021c23a4 44 1 0 rumor/dialogue system helper
238 0x021c23d4 30 2 0 utility trampoline
239 0x021c23f4 62 4 0 rumor/dialogue system helper
240 0x021c2434 30 2 0 utility trampoline
241 0x021c2454 64 3 0 rumor/dialogue system helper
242 0x021c2494 164 8 0 rumor/dialogue system helper
243 0x021c253c 134 6 0 rumor/dialogue system helper
244 0x021c25d0 168 10 0 rumor/dialogue system helper
245 0x021c267c 92 2 0 rumor/dialogue system helper
246 0x021c26e4 86 2 0 rumor/dialogue system helper
247 0x021c274c 12 1 0 uwasa_uwp_play_audio() [vtable 1] — rumor audio playback

Open questions & conflicts

Open questions / unknowns

Conflicts with the prior shallow pass

Source