From cb8bb1d5e6d43afbbd19a776ed463bb1be54ff60 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 21 Sep 2025 23:28:41 -0400 Subject: [PATCH] Decomped ov29_02338350 --- asm/include/overlay_29_02337EC0.inc | 3 +-- asm/include/overlay_29_0233836C.inc | 3 +++ asm/overlay_29_02337EC0.s | 29 ----------------------------- asm/overlay_29_0233836C.s | 22 ++++++++++++++++++++++ include/overlay_29_02338350.h | 8 ++++++++ main.lsf | 2 ++ src/dungeon_ai_itcm.c | 4 ++-- src/overlay_29_02338350.c | 10 ++++++++++ 8 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 asm/include/overlay_29_0233836C.inc create mode 100644 asm/overlay_29_0233836C.s create mode 100644 include/overlay_29_02338350.h create mode 100644 src/overlay_29_02338350.c diff --git a/asm/include/overlay_29_02337EC0.inc b/asm/include/overlay_29_02337EC0.inc index 50402b98..a5982583 100644 --- a/asm/include/overlay_29_02337EC0.inc +++ b/asm/include/overlay_29_02337EC0.inc @@ -9,6 +9,5 @@ .public IqSkillIsEnabled .public MemAlloc .public MemFree -.public MemZero -.public ov29_022FAFD4 .public RandInt +.public ov29_022FAFD4 diff --git a/asm/include/overlay_29_0233836C.inc b/asm/include/overlay_29_0233836C.inc new file mode 100644 index 00000000..385d1c66 --- /dev/null +++ b/asm/include/overlay_29_0233836C.inc @@ -0,0 +1,3 @@ +#pragma once +.public DUNGEON_PTR +.public MemZero diff --git a/asm/overlay_29_02337EC0.s b/asm/overlay_29_02337EC0.s index 8c82a96c..f6469cbb 100644 --- a/asm/overlay_29_02337EC0.s +++ b/asm/overlay_29_02337EC0.s @@ -364,32 +364,3 @@ _0233833C: .align 2, 0 _0233834C: .word DIRECTIONS_XY arm_func_end ov29_023382A8 - - arm_func_start ov29_02338350 -ov29_02338350: ; 0x02338350 - stmdb sp!, {r3, lr} - bl ov29_023382A8 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02338350 - - arm_func_start ResetGravity -ResetGravity: ; 0x0233836C - ldr r0, _02338388 ; =DUNGEON_PTR - ldr ip, _0233838C ; =MemZero - ldr r0, [r0] - mov r1, #2 -#ifdef JAPAN - add r0, r0, #0x258 -#else - add r0, r0, #0x2fc -#endif - add r0, r0, #0x12800 - bx ip - .align 2, 0 -_02338388: .word DUNGEON_PTR -_0233838C: .word MemZero - arm_func_end ResetGravity diff --git a/asm/overlay_29_0233836C.s b/asm/overlay_29_0233836C.s new file mode 100644 index 00000000..1d5ec144 --- /dev/null +++ b/asm/overlay_29_0233836C.s @@ -0,0 +1,22 @@ + .include "asm/macros.inc" + .include "overlay_29_0233836C.inc" + + .text + + arm_func_start ResetGravity +ResetGravity: ; 0x0233836C + ldr r0, _02338388 ; =DUNGEON_PTR + ldr ip, _0233838C ; =MemZero + ldr r0, [r0] + mov r1, #2 +#ifdef JAPAN + add r0, r0, #0x258 +#else + add r0, r0, #0x2fc +#endif + add r0, r0, #0x12800 + bx ip + .align 2, 0 +_02338388: .word DUNGEON_PTR +_0233838C: .word MemZero + arm_func_end ResetGravity diff --git a/include/overlay_29_02338350.h b/include/overlay_29_02338350.h new file mode 100644 index 00000000..27f6c865 --- /dev/null +++ b/include/overlay_29_02338350.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02338350_H +#define PMDSKY_OVERLAY_29_02338350_H + +#include "dungeon_mode.h" + +bool8 ov29_02338350(struct entity *monster); + +#endif //PMDSKY_OVERLAY_29_02338350_H diff --git a/main.lsf b/main.lsf index 81415ea9..6bb12d02 100644 --- a/main.lsf +++ b/main.lsf @@ -591,6 +591,8 @@ Overlay OVY_29 Object asm/overlay_29_02337CCC.o Object src/dungeon_map_access_1.o Object asm/overlay_29_02337EC0.o + Object src/overlay_29_02338350.o + Object asm/overlay_29_0233836C.o Object src/overlay_29_02338390.o Object asm/overlay_29_023383A8.o Object src/overlay_29_02338548.o diff --git a/src/dungeon_ai_itcm.c b/src/dungeon_ai_itcm.c index 0f8ae2ec..fa15f470 100644 --- a/src/dungeon_ai_itcm.c +++ b/src/dungeon_ai_itcm.c @@ -18,10 +18,10 @@ #include "dungeon_util_static.h" #include "fixed_room_data.h" #include "moves_1.h" +#include "overlay_29_02338350.h" #define REGULAR_ATTACK_INDEX 4 -extern bool8 ov29_02338350(struct entity *monster); extern bool8 TargetRegularAttack(struct entity *pokemon, u32 *target_dir, bool8 skip_petrified); extern void SetActionRegularAttack(struct action_data *monster_action, u8 direction); extern void SetActionStruggle(struct action_data *monster_action, u8 direction); @@ -46,7 +46,7 @@ void ChooseAiMove(struct entity *monster) (pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_CONFUSED && DungeonRandOutcome__022EAB20(AI_CONFUSED_NO_ATTACK_CHANCE))) return; - int i; + s32 i; if (pokemon_info->bide_class_status.bide != STATUS_TWO_TURN_NONE) { for (i = 0; i < MAX_MON_MOVES; i++) diff --git a/src/overlay_29_02338350.c b/src/overlay_29_02338350.c new file mode 100644 index 00000000..441a0016 --- /dev/null +++ b/src/overlay_29_02338350.c @@ -0,0 +1,10 @@ +#include "overlay_29_02338350.h" + +extern bool8 ov29_023382A8(struct entity *monster); + +bool8 ov29_02338350(struct entity *monster) +{ + if (ov29_023382A8(monster)) + return TRUE; + return FALSE; +}