Files
pmd-sky/include/overlay_29_0232CF74.h
cecilarmitais ba4d07a4b1 Decomp ten stat-boost move effects; drop a conflicting Boost*Stat extern
DoMoveTag0x1AB, DoMoveDoubleTeam, DoMoveMinimize, DoMoveAmnesia,
DoMoveBoostAttack1, DoMoveBoostDefense1, DoMoveBoostDefense2, DoMoveDefenseCurl,
DoMoveGrowth and DoMoveFamish.

Eight forward to BoostOffensiveStat / BoostDefensiveStat / BoostHitChanceStat
with ATK_STAT_IDX or SPATK_STAT_IDX and a stage count. These take
struct StatIndex by value, per move_orb_effects.h, which is why the asm loads the
global's word into r2.

src/overlay_29_0232E250.c declared those globals as s32 and BoostDefensiveStat
with an (s32, s16) tail, both contradicting move_orb_effects.h. Since the two
declarations lived in different translation units the compiler never saw the
disagreement and the ROM still matched. Replaced with an include of the canonical
header; DoMoveDefendOrder is unchanged and still matches.

Authored by Claude (Opus 5) under human direction. All ten matched on the first
candidate once the canonical StatIndex signature was used. Confirmed by a
matching build: build/pmdsky.us/pmdsky.us.nds: OK. None carries a region
conditional, so US alone is sufficient.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 16:39:20 -07:00

12 lines
369 B
C

#ifndef PMDSKY_OVERLAY_29_0232CF74_H
#define PMDSKY_OVERLAY_29_0232CF74_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMoveFamish(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
bool8 DoMoveOneRoom(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif