Files
pmd-sky/include/main_0200238C.h
cecilarmitais f968c89066 Decomp 48 functions in five groups
Ninth 5x10 batch; 48 of 50 matched at score 0 and land here.

  overlay_11_022FD308  LivePerformer accessors
  main_0204CF9C        GLOBAL_PROGRESS_PTR bit-array accessors
  main_020022C4        string, thread and card initialisation
  overlay_11_022E9D6C  screen-fade queries
  main_0203C774        state-machine steps

New placeholder structs: unk_022FE490, unk_022FE498, unk_020AFE60, unk_020AFE70,
unk_0209C7F4, unk_0238916C, unk_0229B004, unk_0229AFC0. The overlay_11 fade
group reuses unk_02388FC0 and unk_023890A0 unchanged.

Two are NOT here. SetPositionInitialLivePerformer sits at 225, where an
address computation is scheduled earlier than the target places it; six
variants moved nothing. sub_020024E4 sits at 35, a two-register swap in a
zero-fill loop, after both declaration orderings, a block scope, an extra
temporary and a while form. Both stay as assembly.

Matching finding, now in docs/MATCHING_TIPS.md: a two-word struct copy emits
the same four instructions as two field assignments but schedules both loads
first, which is what the target has. Writing the fields separately interleaves
load and store, and hoisting them into locals merges the stores into an stm.

The OS wrappers drop their local declarations of nitro functions, which reach
every translation unit through the prefix header and disagreed on return type.
OS_ResetSystem keeps its extern; it is declared in no reachable header.

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-08-21 00:13:12 -07:00

30 lines
556 B
C

#ifndef PMDSKY_MAIN_0200238C_H
#define PMDSKY_MAIN_0200238C_H
struct unk_0229B004 {
OSThread *field_0x0;
s32 field_0x4;
s32 field_0x8;
s32 field_0xC;
s32 field_0x10;
s32 field_0x14;
};
struct unk_0229AFC0 {
s32 field_0x0;
s32 field_0x4;
s32 field_0x8;
};
s8 sub_0200238C(s8 c);
void sub_020023A8(s8 *dst, s8 *src, s32 n);
s32 sub_020023F8(s8 *a, s8 *b, s32 n);
void WaitForever(void);
void sub_02002448(u32 a);
s32 sub_020024A0(void);
void sub_020024B0(void);
void sub_020024C0(void);
s32 sub_020024D4(void);
#endif