cecilarmitais 7f1656cfc9 Decompile 11 more callees; two cheap neighbour clusters
Each was verified at score 0 against its NORTH_AMERICA, EUROPE and JAPAN targets
before landing, with the address walk closing exactly in each region, and by a
matching US build after.

  overlay_29_0231E9F0.c   InitMoveWrapper, MoveIsNotPhysical, CategoryIsNotPhysical
  overlay_29_022E45B8.c   ov29_022E45CC, ov29_022E45D0
  overlay_29_022F0590.c   UnfreezeAnim
  overlay_29_02311010.c   TickNoSlipCap
  dungeon_logic_6.c       ov29_022EFB84
  main_02062A58.c         sub_02062AD0
  main_0200224C.c         AddFixedPoint64
  main_0202A66C.c         CreateParentMenuFromStringIds

All eleven merge into an adjacent source file; no assembly file is split. Two of
them were bought cheaply: InitMoveWrapper is four instructions and clearing it
puts MoveIsNotPhysical and CategoryIsNotPhysical at the file head, and
ov29_022E45CC is a single instruction standing in front of ov29_022E45D0.

TickNoSlipCap needed a repair the compiler could not report. extract_function.py
placed its generated placeholder immediately after a pre-existing `#ifdef EUROPE`
in overlay_29_02311010.c, so the definition existed only in EU builds: every
object compiled and the failure appeared at the link step as
`Undefined : "TickNoSlipCap"`, referenced from ActivateEndOfTurnEffects in the
same object. Moving it out of the block then exposed two of its own declarations
that had been invisible while the region never compiled it. main.lsf confirms the
merge target itself was right -- asm/overlay_29_0230F9A4.o is immediately followed
by src/overlay_29_02311010.o, and the function sat at the tail of the former.
build-tools/check_landed_guards.py now reports any definition at conditional
depth > 0; it is clean across every function landed so far.

Twelve call-site declarations are replaced by an include of the owning header.
CreateParentMenuFromStringIds had THREE mutually contradictory ones --
(void*, u32, void*, void*), (u32*, u32, struct struct_2*, u32*), and the matching
signature -- which could coexist only while the function had no header. Its body
indexes the fourth argument as struct unk_0202A5CC throughout, so the two call
sites are cast rather than the parameter weakened to void*, which would only move
the casts inside.

Authored by Claude (Opus 5) under human direction. Confirmed by a matching
build: build/pmdsky.us/pmdsky.us.nds: OK.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 23:13:37 -07:00
…
…
2026-09-04 13:13:23 -07:00
…
…
…
…
…
…

Pokémon Mystery Dungeon: Explorers of Sky

This is a WIP disassembly of Pokémon Mystery Dungeon: Explorers of Sky. For instructions on how to set up the repository, please read INSTALL.md. For information on how to contribute changes, see CONTRIBUTING.md.

This repository builds the following ROMs:

For contacts and other pret projects, see pret.github.io.

Description
Decompilation of Pokémon Mystery Dungeon: Explorers of Sky
Readme 335 MiB
Languages
Assembly 66.3%
C 18%
C++ 7.1%
Boogie 4.3%
sed 1.5%
Other 2.8%