From 0e4b52cea5f21b58848d559ee14e802956256020 Mon Sep 17 00:00:00 2001 From: darkruss48 <153812201+darkruss48@users.noreply.github.com> Date: Mon, 14 Sep 2026 23:01:41 +0000 Subject: [PATCH 1/2] Decomp 13 functions, emptying six asm files --- asm/include/main_02013884.inc | 3 - asm/include/main_0202614C.inc | 2 - asm/include/main_02048C5C.inc | 5 -- asm/include/main_02052A7C.inc | 3 - asm/include/overlay_29_022E46D0.inc | 3 - asm/include/overlay_29_022FBA70.inc | 2 - asm/main_02013884.s | 92 ----------------------------- asm/main_0202614C.s | 18 ------ asm/main_02048C5C.s | 32 ---------- asm/main_02052A7C.s | 64 -------------------- asm/overlay_29_022E46D0.s | 29 --------- asm/overlay_29_022FBA70.s | 42 ------------- include/main_0202613C.h | 1 + include/main_02048C5C.h | 6 ++ include/main_0205283C.h | 3 + include/move_data.h | 10 +++- include/moves_2.h | 6 ++ include/overlay_29_022E46C0.h | 2 + include/overlay_29_022FBA54.h | 2 + main.lsf | 7 +-- src/main_0202613C.c | 11 ++++ src/main_02048C5C.c | 17 ++++++ src/main_0205283C.c | 19 ++++++ src/moves_2.c | 42 +++++++++++++ src/overlay_29_022E46C0.c | 18 ++++++ src/overlay_29_022FBA54.c | 23 ++++++++ 26 files changed, 160 insertions(+), 302 deletions(-) delete mode 100644 asm/include/main_02013884.inc delete mode 100644 asm/include/main_0202614C.inc delete mode 100644 asm/include/main_02048C5C.inc delete mode 100644 asm/include/main_02052A7C.inc delete mode 100644 asm/include/overlay_29_022E46D0.inc delete mode 100644 asm/include/overlay_29_022FBA70.inc delete mode 100644 asm/main_02013884.s delete mode 100644 asm/main_0202614C.s delete mode 100644 asm/main_02048C5C.s delete mode 100644 asm/main_02052A7C.s delete mode 100644 asm/overlay_29_022E46D0.s delete mode 100644 asm/overlay_29_022FBA70.s create mode 100644 include/main_02048C5C.h create mode 100644 src/main_02048C5C.c diff --git a/asm/include/main_02013884.inc b/asm/include/main_02013884.inc deleted file mode 100644 index 17e25973..00000000 --- a/asm/include/main_02013884.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public _02098D64 -.public DUNGEON_MOVE_TABLES diff --git a/asm/include/main_0202614C.inc b/asm/include/main_0202614C.inc deleted file mode 100644 index 4921f14e..00000000 --- a/asm/include/main_0202614C.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public sub_02020B60 diff --git a/asm/include/main_02048C5C.inc b/asm/include/main_02048C5C.inc deleted file mode 100644 index a106d8c1..00000000 --- a/asm/include/main_02048C5C.inc +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -.public _022AAE74 -.public _022AAE78 -.public MemsetSimple -.public ReadStringSave diff --git a/asm/include/main_02052A7C.inc b/asm/include/main_02052A7C.inc deleted file mode 100644 index b36fc47d..00000000 --- a/asm/include/main_02052A7C.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public _s32_div_f -.public MONSTER_DATA_TABLE_PTR diff --git a/asm/include/overlay_29_022E46D0.inc b/asm/include/overlay_29_022E46D0.inc deleted file mode 100644 index d2625c79..00000000 --- a/asm/include/overlay_29_022E46D0.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public DisplayAnimatedNumbers -.public ShouldDisplayEntityAdvanced diff --git a/asm/include/overlay_29_022FBA70.inc b/asm/include/overlay_29_022FBA70.inc deleted file mode 100644 index 6d023311..00000000 --- a/asm/include/overlay_29_022FBA70.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public IsMonster__022F9720 diff --git a/asm/main_02013884.s b/asm/main_02013884.s deleted file mode 100644 index 588ca5c6..00000000 --- a/asm/main_02013884.s +++ /dev/null @@ -1,92 +0,0 @@ - .include "asm/macros.inc" - .include "main_02013884.inc" - - .text - - arm_func_start GetMovesetLevelUpPtr -GetMovesetLevelUpPtr: ; 0x02013884 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #0x258 - subge r0, r4, #0x258 - movge r0, r0, lsl #0x10 - movge r4, r0, asr #0x10 - mov r0, r4 - bl IsInvalidMoveset - cmp r0, #0 - ldrne r0, _020138C4 ; =_02098D64 - ldreq r1, _020138C8 ; =DUNGEON_MOVE_TABLES - moveq r0, #0xc - smulbbeq r0, r4, r0 - ldreq r1, [r1] - ldreq r0, [r1, r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_020138C4: .word _02098D64 -_020138C8: .word DUNGEON_MOVE_TABLES - arm_func_end GetMovesetLevelUpPtr - - arm_func_start IsInvalidMoveset -IsInvalidMoveset: ; 0x020138CC - cmp r0, #0 - ble _020138E0 - ldr r1, _020138F0 ; =0x00000229 - cmp r0, r1 - blt _020138E8 -_020138E0: - mov r0, #1 - bx lr -_020138E8: - mov r0, #0 - bx lr - .align 2, 0 -_020138F0: .word 0x00000229 - arm_func_end IsInvalidMoveset - - arm_func_start GetMovesetHmTmPtr -GetMovesetHmTmPtr: ; 0x020138F4 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #0x258 - subge r0, r4, #0x258 - movge r0, r0, lsl #0x10 - movge r4, r0, asr #0x10 - mov r0, r4 - bl IsInvalidMoveset - cmp r0, #0 - ldrne r0, _02013938 ; =_02098D64 - ldmneia sp!, {r4, pc} - ldr r1, _0201393C ; =DUNGEON_MOVE_TABLES - mov r0, #0xc - ldr r1, [r1] - smlabb r0, r4, r0, r1 - ldr r0, [r0, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_02013938: .word _02098D64 -_0201393C: .word DUNGEON_MOVE_TABLES - arm_func_end GetMovesetHmTmPtr - - arm_func_start GetMovesetEggPtr -GetMovesetEggPtr: ; 0x02013940 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #0x258 - subge r0, r4, #0x258 - movge r0, r0, lsl #0x10 - movge r4, r0, asr #0x10 - mov r0, r4 - bl IsInvalidMoveset - cmp r0, #0 - ldrne r0, _02013984 ; =_02098D64 - ldmneia sp!, {r4, pc} - ldr r1, _02013988 ; =DUNGEON_MOVE_TABLES - mov r0, #0xc - ldr r1, [r1] - smlabb r0, r4, r0, r1 - ldr r0, [r0, #8] - ldmia sp!, {r4, pc} - .align 2, 0 -_02013984: .word _02098D64 -_02013988: .word DUNGEON_MOVE_TABLES - arm_func_end GetMovesetEggPtr diff --git a/asm/main_0202614C.s b/asm/main_0202614C.s deleted file mode 100644 index b777f6c5..00000000 --- a/asm/main_0202614C.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "main_0202614C.inc" - - .text - - arm_func_start sub_0202614C -sub_0202614C: ; 0x0202614C - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r3, sp, #0 - str r1, [sp] - mov r1, r3 - add r0, r0, #4 - str r2, [sp, #4] - bl sub_02020B60 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end sub_0202614C diff --git a/asm/main_02048C5C.s b/asm/main_02048C5C.s deleted file mode 100644 index db8c13ee..00000000 --- a/asm/main_02048C5C.s +++ /dev/null @@ -1,32 +0,0 @@ - .include "asm/macros.inc" - .include "main_02048C5C.inc" - - .text - - arm_func_start sub_02048C5C -sub_02048C5C: ; 0x02048C5C - stmdb sp!, {r3, lr} - ldr r0, _02048CA4 ; =_022AAE74 - mov r1, #0 - mov r2, #0x30 - bl MemsetSimple - ldr r2, _02048CA8 ; =0x09011416 - ldr r1, _02048CAC ; =_022AAE74 - ldr r0, _02048CB0 ; =_022AAE78 - str r2, [r1, #0x24] - bl ReadStringSave - ldr r2, _02048CB4 ; =0x000F1206 - ldr r0, _02048CAC ; =_022AAE74 - mov r1, #0xff - str r2, [r0, #0x28] - strb r1, [r0, #0x2c] - mov r1, #0 - strb r1, [r0, #0x2d] - ldmia sp!, {r3, pc} - .align 2, 0 -_02048CA4: .word _022AAE74 -_02048CA8: .word 0x09011416 -_02048CAC: .word _022AAE74 -_02048CB0: .word _022AAE78 -_02048CB4: .word 0x000F1206 - arm_func_end sub_02048C5C diff --git a/asm/main_02052A7C.s b/asm/main_02052A7C.s deleted file mode 100644 index dc7ba50b..00000000 --- a/asm/main_02052A7C.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "asm/macros.inc" - .include "main_02052A7C.inc" - - .text - - arm_func_start GetExp -GetExp: ; 0x02052A7C - stmdb sp!, {r4, lr} - ldr r2, _02052AAC ; =MONSTER_DATA_TABLE_PTR - sub r3, r1, #1 - ldr r2, [r2] - mov r1, #0x44 - smlabb r0, r0, r1, r2 - ldrsh r4, [r0, #0x1c] - mov r1, #0xa - mul r0, r4, r3 - bl _s32_div_f - add r0, r4, r0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02052AAC: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetExp - - arm_func_start GetEvoParameters -GetEvoParameters: ; 0x02052AB0 - ldr r3, _02052ADC ; =MONSTER_DATA_TABLE_PTR - mov r2, #0x44 - ldr ip, [r3] - mov r3, #4 - smlabb r1, r1, r2, ip - add r2, r1, #8 -_02052AC8: - ldrh r1, [r2], #2 - subs r3, r3, #1 - strh r1, [r0], #2 - bne _02052AC8 - bx lr - .align 2, 0 -_02052ADC: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetEvoParameters - - arm_func_start GetTreasureBoxChances -GetTreasureBoxChances: ; 0x02052AE0 - stmdb sp!, {r4, lr} - mov r2, #0x44 - smulbb r4, r0, r2 - ldr r2, _02052B24 ; =MONSTER_DATA_TABLE_PTR - mov lr, #0 -_02052AF4: - ldr r3, [r2] - add r0, lr, #1 - add r3, r4, r3 - add r3, r3, lr, lsl #1 - ldrsh r3, [r3, #0x3c] - mov r0, r0, lsl #0x10 - mov ip, lr, lsl #1 - mov lr, r0, asr #0x10 - strh r3, [r1, ip] - cmp lr, #4 - blt _02052AF4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02052B24: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetTreasureBoxChances diff --git a/asm/overlay_29_022E46D0.s b/asm/overlay_29_022E46D0.s deleted file mode 100644 index d6a97f5c..00000000 --- a/asm/overlay_29_022E46D0.s +++ /dev/null @@ -1,29 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022E46D0.inc" - - .text - - arm_func_start ov29_022E46D0 -ov29_022E46D0: ; 0x022E46D0 - bx lr - arm_func_end ov29_022E46D0 - - arm_func_start DisplayStockpileNumbers -DisplayStockpileNumbers: ; 0x022E46D4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ShouldDisplayEntityAdvanced - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - mov r1, r4 -#ifdef JAPAN - ldrb r0, [r0, #0x11a] -#else - ldrb r0, [r0, #0x11e] -#endif - mov r2, #1 - mov r3, #0xb - bl DisplayAnimatedNumbers - ldmia sp!, {r4, pc} - arm_func_end DisplayStockpileNumbers diff --git a/asm/overlay_29_022FBA70.s b/asm/overlay_29_022FBA70.s deleted file mode 100644 index 549fb7eb..00000000 --- a/asm/overlay_29_022FBA70.s +++ /dev/null @@ -1,42 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022FBA70.inc" - - .text - - arm_func_start IsSpecialStoryAllyOrClient -IsSpecialStoryAllyOrClient: ; 0x022FBA70 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsMonster__022F9720 - cmp r0, #0 - beq _022FBAAC - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0x48] - cmp r0, #0xfa - moveq r0, #1 - ldmeqia sp!, {r4, pc} - cmp r0, #0xd9 - blo _022FBAAC - cmp r0, #0xe4 - movlo r0, #1 - ldmloia sp!, {r4, pc} -_022FBAAC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end IsSpecialStoryAllyOrClient - - arm_func_start ResetTriggerFlags -ResetTriggerFlags: ; 0x022FBAB4 - ldr r2, [r0, #0xb4] - cmp r2, #0 - addne r0, r2, #0x100 - movne r1, #0 -#ifdef JAPAN - strneh r1, [r0, #0x8e] - strne r1, [r2, #0x188] -#else - strneh r1, [r0, #0x92] - strne r1, [r2, #0x18c] -#endif - bx lr - arm_func_end ResetTriggerFlags diff --git a/include/main_0202613C.h b/include/main_0202613C.h index 7713abd0..14f453d8 100644 --- a/include/main_0202613C.h +++ b/include/main_0202613C.h @@ -7,5 +7,6 @@ struct unk_02026130 { }; void sub_0202613C(struct unk_02026130* p); +void sub_0202614C(struct unk_02026130* p, u32 a, u32 b); #endif diff --git a/include/main_02048C5C.h b/include/main_02048C5C.h new file mode 100644 index 00000000..4834b264 --- /dev/null +++ b/include/main_02048C5C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_02048C5C_H +#define PMDSKY_MAIN_02048C5C_H + +void sub_02048C5C(void); + +#endif diff --git a/include/main_0205283C.h b/include/main_0205283C.h index d639329a..14df8866 100644 --- a/include/main_0205283C.h +++ b/include/main_0205283C.h @@ -22,5 +22,8 @@ enum type_id GetType(s16 monster_id, u8 type_idx); enum ability_id GetAbility(s16 monster_id, u8 ability_idx); s16 GetRecruitRate2(s16 monster_id); s16 GetRecruitRate1(s16 monster_id); +s32 GetExp(s16 monster_id, s32 level); +void GetEvoParameters(u8 *evo_params, s16 monster_id); +void GetTreasureBoxChances(s16 monster_id, u8 *chances); #endif //PMDSKY_MAIN_0205283C_H diff --git a/include/move_data.h b/include/move_data.h index 47c5530b..4d95fce1 100644 --- a/include/move_data.h +++ b/include/move_data.h @@ -102,9 +102,17 @@ struct move_data_table struct move_data moves[559]; // 0x8 }; +struct moveset +{ + u8 *levelup_moves; + u8 *hmtm_moves; + u8 *egg_moves; +}; + struct move_data_table_outer { - u8 fill0[8]; + struct moveset *movesets; + u8 fill4[4]; struct move_data_table *moves; }; diff --git a/include/moves_2.h b/include/moves_2.h index 4d348057..e1c6d638 100644 --- a/include/moves_2.h +++ b/include/moves_2.h @@ -9,4 +9,10 @@ s16 GetMoveTargetAndRange(struct move *move, bool8 is_ai); // Gets the type of a move enum type_id GetMoveType(struct move* move); +extern u8 _02098D64[]; +extern s32 IsInvalidMoveset(s16 moveset_id); +u8 *GetMovesetLevelUpPtr(s16 monster_id); +u8 *GetMovesetHmTmPtr(s16 monster_id); +u8 *GetMovesetEggPtr(s16 monster_id); + #endif //PMDSKY_MOVES_2_H diff --git a/include/overlay_29_022E46C0.h b/include/overlay_29_022E46C0.h index 2cf89d40..542278ce 100644 --- a/include/overlay_29_022E46C0.h +++ b/include/overlay_29_022E46C0.h @@ -6,5 +6,7 @@ #include "move.h" void ov29_022E46C0(struct entity *entity); +void ov29_022E46D0(struct entity *entity); +void DisplayStockpileNumbers(struct entity *entity); #endif diff --git a/include/overlay_29_022FBA54.h b/include/overlay_29_022FBA54.h index d49d9f61..9e9865b6 100644 --- a/include/overlay_29_022FBA54.h +++ b/include/overlay_29_022FBA54.h @@ -5,5 +5,7 @@ s16 FindMoveOnMonster(struct entity* entity, enum move_id move_id); bool8 DoesMonsterHaveMove(struct entity* entity, enum move_id move_id); +bool8 IsSpecialStoryAllyOrClient(struct entity *entity); +void ResetTriggerFlags(struct entity *entity); #endif //PMDSKY_OVERLAY_29_022FBA54_H diff --git a/main.lsf b/main.lsf index 5da97a11..470c7ba8 100644 --- a/main.lsf +++ b/main.lsf @@ -106,7 +106,6 @@ Static main Object asm/main_02012294.o Object src/moves_1.o Object src/moves_2.o - Object asm/main_02013884.o Object src/main_0201398C.o Object src/moves_4.o Object src/moves.o @@ -138,7 +137,6 @@ Static main Object src/main_0202593C.o Object asm/main_0202598C.o Object src/main_0202613C.o - Object asm/main_0202614C.o Object src/main_02026174.o Object asm/main_020261F4.o Object src/main_020265C4.o @@ -226,7 +224,7 @@ Static main Object src/main_02048B48.o Object asm/main_02048B74.o Object src/main_02048BB4.o - Object asm/main_02048C5C.o + Object src/main_02048C5C.o Object src/main_02048CB8.o Object asm/main_02048CF8.o Object asm/main_bss_020B3380.o @@ -289,7 +287,6 @@ Static main Object src/get_category_string.o Object src/main_020527A8.o Object src/main_0205283C.o - Object asm/main_02052A7C.o Object src/main_02052B28.o Object asm/main_02052B44.o Object src/main_02054AA4.o @@ -813,7 +810,6 @@ Overlay OVY_29 Object src/overlay_29_022E45B8.o Object asm/overlay_29_022E45CC.o Object src/overlay_29_022E46C0.o - Object asm/overlay_29_022E46D0.o Object src/overlay_29_022E4704.o Object asm/overlay_29_022E4868.o Object src/overlay_29_022E4B8C.o @@ -910,7 +906,6 @@ Overlay OVY_29 Object src/dungeon_logic_4.o Object asm/overlay_29_022FB678.o Object src/overlay_29_022FBA54.o - Object asm/overlay_29_022FBA70.o Object src/joined_at_checks.o Object asm/overlay_29_022FBB1C.o Object src/overlay_29_022FBBEC.o diff --git a/src/main_0202613C.c b/src/main_0202613C.c index 468fc79e..afa71b4f 100644 --- a/src/main_0202613C.c +++ b/src/main_0202613C.c @@ -2,6 +2,8 @@ extern void sub_02020B14(void *p); +extern void sub_02020B60(void *p, void *pair, u32 unk, void *pair2); + @@ -14,3 +16,12 @@ void sub_0202613C(struct unk_02026130* p) { sub_02020B14((void *) p + 4); } + +void sub_0202614C(struct unk_02026130* p, u32 a, u32 b) +{ + struct { u32 x; u32 y; } v; + void* r = &v; + v.x = a; + v.y = b; + sub_02020B60((u8 *) p + 4, r, b, r); +} diff --git a/src/main_02048C5C.c b/src/main_02048C5C.c new file mode 100644 index 00000000..ad7ba43b --- /dev/null +++ b/src/main_02048C5C.c @@ -0,0 +1,17 @@ +#include "main_02048C5C.h" +#include "main_02048BB4.h" +#include "main_02048CB8.h" +#include "main_0200330C.h" + +extern struct unk_022AAE74 _022AAE74; +extern char _022AAE78; + +void sub_02048C5C(void) +{ + MemsetSimple((u8 *)0x022AAE74, 0, 0x30); + _022AAE74.field_0x24 = 0x09011416; + ReadStringSave(&_022AAE78); + _022AAE74.field_0x28 = 0x000F1206; + _022AAE74.field_0x2C = 0xFF; + _022AAE74.field_0x2D = 0; +} diff --git a/src/main_0205283C.c b/src/main_0205283C.c index 2d6b13f6..4ed6b02e 100644 --- a/src/main_0205283C.c +++ b/src/main_0205283C.c @@ -90,3 +90,22 @@ s16 GetRecruitRate1(s16 monster_id) { return MONSTER_DATA_TABLE_PTR->entries[monster_id].recruit_rate_1; } + +s32 GetExp(s16 monster_id, s32 level) +{ + s16 exp_yield = MONSTER_DATA_TABLE_PTR->entries[monster_id].exp_yield; + return exp_yield + exp_yield * (level - 1) / 10; +} + +void GetEvoParameters(u8 *evo_params, s16 monster_id) +{ + *(struct monster_evolution_parameters *)evo_params = + MONSTER_DATA_TABLE_PTR->entries[monster_id].evolution_param; +} + +void GetTreasureBoxChances(s16 monster_id, u8 *chances) +{ + s16 i; + for (i = 0; i < 4; i++) + ((s16 *)chances)[i] = (&MONSTER_DATA_TABLE_PTR->entries[monster_id].unk_0x3c)[i]; +} diff --git a/src/moves_2.c b/src/moves_2.c index 9d001189..b921a70a 100644 --- a/src/moves_2.c +++ b/src/moves_2.c @@ -12,3 +12,45 @@ enum type_id GetMoveType(struct move* move) { return DUNGEON_MOVE_TABLES.moves->moves[move->id].type; } + +u8 *GetMovesetLevelUpPtr(s16 monster_id) +{ + s16 id = monster_id; + if (id >= 0x258) + id = (s16)(id - 0x258); + if (IsInvalidMoveset(id) != 0) + return _02098D64; + return DUNGEON_MOVE_TABLES.movesets[id].levelup_moves; +} + +s32 IsInvalidMoveset(s16 moveset_id) +{ + if (moveset_id <= 0) + goto invalid; + if (moveset_id < 0x229) + goto valid; +invalid: + return 1; +valid: + return 0; +} + +u8 *GetMovesetHmTmPtr(s16 monster_id) +{ + s16 id = monster_id; + if (id >= 0x258) + id = (s16)(id - 0x258); + if (IsInvalidMoveset(id) != 0) + return _02098D64; + return DUNGEON_MOVE_TABLES.movesets[id].hmtm_moves; +} + +u8 *GetMovesetEggPtr(s16 monster_id) +{ + s16 id = monster_id; + if (id >= 0x258) + id = (s16)(id - 0x258); + if (IsInvalidMoveset(id) != 0) + return _02098D64; + return DUNGEON_MOVE_TABLES.movesets[id].egg_moves; +} diff --git a/src/overlay_29_022E46C0.c b/src/overlay_29_022E46C0.c index 45eb087c..121ae443 100644 --- a/src/overlay_29_022E46C0.c +++ b/src/overlay_29_022E46C0.c @@ -1,4 +1,10 @@ #include "overlay_29_022E46C0.h" +#include "dungeon_util_static.h" + +extern bool8 ShouldDisplayEntityAdvanced(struct entity *entity); + +extern void DisplayAnimatedNumbers(s32 amount, struct entity *entity, bool8 display_sign, + s32 color); extern void PlaySeByIdIfShouldDisplayEntity(struct entity *entity, s32 se_id); @@ -6,3 +12,15 @@ void ov29_022E46C0(struct entity *entity) { PlaySeByIdIfShouldDisplayEntity(entity, 0x30C); } + +void ov29_022E46D0(struct entity *entity) +{ +} + +void DisplayStockpileNumbers(struct entity *entity) +{ + if (!ShouldDisplayEntityAdvanced(entity)) + return; + DisplayAnimatedNumbers(GetEntInfo(entity)->stockpile_stage, entity, TRUE, + 0xB); +} diff --git a/src/overlay_29_022FBA54.c b/src/overlay_29_022FBA54.c index cdc1f438..4b0cb14c 100644 --- a/src/overlay_29_022FBA54.c +++ b/src/overlay_29_022FBA54.c @@ -21,3 +21,26 @@ bool8 DoesMonsterHaveMove(struct entity* entity, enum move_id move_id) { return FindMoveOnMonster(entity, move_id) >= 0; } + +bool8 IsSpecialStoryAllyOrClient(struct entity* entity) +{ + if (IsMonster__022F9720(entity)) + { + if (GetEntInfo(entity)->joined_at == DUNGEON_CLIENT) + return TRUE; + if (GetEntInfo(entity)->joined_at >= DUNGEON_JOINED_AT_BIDOOF + && GetEntInfo(entity)->joined_at < DUNGEON_DUMMY_0xE4) + return TRUE; + } + return FALSE; +} + +void ResetTriggerFlags(struct entity* entity) +{ + struct monster* monster = GetEntInfo(entity); + if (monster != NULL) + { + monster->contact_ability_trigger_bitflags = 0; + monster->exclusive_item_trigger_bitflags = 0; + } +} From 4c3524cdeb62653623bea01f307e35c015cc8e9a Mon Sep 17 00:00:00 2001 From: darkruss48 <153812201+darkruss48@users.noreply.github.com> Date: Tue, 15 Sep 2026 19:14:06 +0000 Subject: [PATCH 2/2] Address review --- include/main_0205283C.h | 5 +++-- src/main_0202613C.c | 7 ++++--- src/main_02048C5C.c | 2 +- src/main_0205283C.c | 9 ++++----- src/moves_2.c | 6 +++--- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/include/main_0205283C.h b/include/main_0205283C.h index 14df8866..057b17c5 100644 --- a/include/main_0205283C.h +++ b/include/main_0205283C.h @@ -3,6 +3,7 @@ #include "enums.h" #include "util.h" +#include "monster_data.h" u8 GetShadowSize(s16 monster_id); s16 GetSpeedStatus(s16 monster_id); @@ -23,7 +24,7 @@ enum ability_id GetAbility(s16 monster_id, u8 ability_idx); s16 GetRecruitRate2(s16 monster_id); s16 GetRecruitRate1(s16 monster_id); s32 GetExp(s16 monster_id, s32 level); -void GetEvoParameters(u8 *evo_params, s16 monster_id); -void GetTreasureBoxChances(s16 monster_id, u8 *chances); +void GetEvoParameters(struct monster_evolution_parameters *evo_params, s16 monster_id); +void GetTreasureBoxChances(s16 monster_id, s16 *chances); #endif //PMDSKY_MAIN_0205283C_H diff --git a/src/main_0202613C.c b/src/main_0202613C.c index afa71b4f..d1eb27e0 100644 --- a/src/main_0202613C.c +++ b/src/main_0202613C.c @@ -1,8 +1,9 @@ #include "main_0202613C.h" +#include "dungeon_mode.h" extern void sub_02020B14(void *p); -extern void sub_02020B60(void *p, void *pair, u32 unk, void *pair2); +extern void sub_02020B60(void *p, u32 *pair, u32 unk, u32 *pair2); @@ -19,8 +20,8 @@ void sub_0202613C(struct unk_02026130* p) void sub_0202614C(struct unk_02026130* p, u32 a, u32 b) { - struct { u32 x; u32 y; } v; - void* r = &v; + struct pixel_position v; + u32 *r = (u32 *)&v; v.x = a; v.y = b; sub_02020B60((u8 *) p + 4, r, b, r); diff --git a/src/main_02048C5C.c b/src/main_02048C5C.c index ad7ba43b..a39e2568 100644 --- a/src/main_02048C5C.c +++ b/src/main_02048C5C.c @@ -8,7 +8,7 @@ extern char _022AAE78; void sub_02048C5C(void) { - MemsetSimple((u8 *)0x022AAE74, 0, 0x30); + MemsetSimple((u8 *)(&_022AAE78 - 4), 0, 0x30); _022AAE74.field_0x24 = 0x09011416; ReadStringSave(&_022AAE78); _022AAE74.field_0x28 = 0x000F1206; diff --git a/src/main_0205283C.c b/src/main_0205283C.c index 4ed6b02e..46a8082f 100644 --- a/src/main_0205283C.c +++ b/src/main_0205283C.c @@ -97,15 +97,14 @@ s32 GetExp(s16 monster_id, s32 level) return exp_yield + exp_yield * (level - 1) / 10; } -void GetEvoParameters(u8 *evo_params, s16 monster_id) +void GetEvoParameters(struct monster_evolution_parameters *evo_params, s16 monster_id) { - *(struct monster_evolution_parameters *)evo_params = - MONSTER_DATA_TABLE_PTR->entries[monster_id].evolution_param; + *evo_params = MONSTER_DATA_TABLE_PTR->entries[monster_id].evolution_param; } -void GetTreasureBoxChances(s16 monster_id, u8 *chances) +void GetTreasureBoxChances(s16 monster_id, s16 *chances) { s16 i; for (i = 0; i < 4; i++) - ((s16 *)chances)[i] = (&MONSTER_DATA_TABLE_PTR->entries[monster_id].unk_0x3c)[i]; + chances[i] = (&MONSTER_DATA_TABLE_PTR->entries[monster_id].unk_0x3c)[i]; } diff --git a/src/moves_2.c b/src/moves_2.c index b921a70a..a05df3f8 100644 --- a/src/moves_2.c +++ b/src/moves_2.c @@ -18,7 +18,7 @@ u8 *GetMovesetLevelUpPtr(s16 monster_id) s16 id = monster_id; if (id >= 0x258) id = (s16)(id - 0x258); - if (IsInvalidMoveset(id) != 0) + if (IsInvalidMoveset(id)) return _02098D64; return DUNGEON_MOVE_TABLES.movesets[id].levelup_moves; } @@ -40,7 +40,7 @@ u8 *GetMovesetHmTmPtr(s16 monster_id) s16 id = monster_id; if (id >= 0x258) id = (s16)(id - 0x258); - if (IsInvalidMoveset(id) != 0) + if (IsInvalidMoveset(id)) return _02098D64; return DUNGEON_MOVE_TABLES.movesets[id].hmtm_moves; } @@ -50,7 +50,7 @@ u8 *GetMovesetEggPtr(s16 monster_id) s16 id = monster_id; if (id >= 0x258) id = (s16)(id - 0x258); - if (IsInvalidMoveset(id) != 0) + if (IsInvalidMoveset(id)) return _02098D64; return DUNGEON_MOVE_TABLES.movesets[id].egg_moves; }