From 20bfcae3329c08893ee31902445f71c4549218b4 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 08:51:36 -0800 Subject: [PATCH 1/7] initial commit of moves decomp --- asm/get_category_string.s | 35 ------------------------------- asm/main_02013A30.s | 17 ---------------- asm/main_02013AD0.s | 43 --------------------------------------- asm/main_02013B70.s | 26 +---------------------- include/main_02013C04.h | 1 + include/moves.h | 13 ++++++++++++ include/moves_3.h | 3 +++ include/moves_4.h | 1 + main.lsf | 4 +--- src/get_category_string.c | 25 +++++++++++++++++++++++ src/main_02013C04.c | 7 +++++++ src/moves.c | 16 +++++++++++++++ src/moves_3.c | 6 ++++++ src/moves_4.c | 5 +++++ 14 files changed, 79 insertions(+), 123 deletions(-) delete mode 100644 asm/get_category_string.s delete mode 100644 asm/main_02013A30.s delete mode 100644 asm/main_02013AD0.s create mode 100644 src/get_category_string.c diff --git a/asm/get_category_string.s b/asm/get_category_string.s deleted file mode 100644 index ba2d4c63..00000000 --- a/asm/get_category_string.s +++ /dev/null @@ -1,35 +0,0 @@ - .include "asm/macros.inc" - .include "get_category_string.inc" - - .text - - arm_func_start GetCategoryString -GetCategoryString: ; 0x0205275C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl AllocateTemp1024ByteBufferFromPool - mov r4, r0 - mov r0, r5 - mov r1, #0x258 - bl _s32_div_f -#if defined(EUROPE) - add r0, r1, #0x79 - add r0, r0, #0x2400 -#elif defined(JAPAN) - add r0, r1, #0x1a40 -#else - add r0, r1, #0x77 - add r0, r0, #0x2400 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r2, r0 - ldr r1, _020527A4 ; =_020A3200 - mov r0, r4 - bl SprintfStatic__02052418 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020527A4: .word _020A3200 - arm_func_end GetCategoryString diff --git a/asm/main_02013A30.s b/asm/main_02013A30.s deleted file mode 100644 index e9538c5a..00000000 --- a/asm/main_02013A30.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "main_02013A30.inc" - - .text - - arm_func_start GetMoveBasePp -GetMoveBasePp: ; 0x02013A30 - ldr r1, _02013A4C ; =DUNGEON_MOVE_TABLES - ldrh r2, [r0, #4] - ldr r1, [r1, #8] - mov r0, #0x1a - mla r0, r2, r0, r1 - ldrb r0, [r0, #8] - bx lr - .align 2, 0 -_02013A4C: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveBasePp diff --git a/asm/main_02013AD0.s b/asm/main_02013AD0.s deleted file mode 100644 index 5079e868..00000000 --- a/asm/main_02013AD0.s +++ /dev/null @@ -1,43 +0,0 @@ - .include "asm/macros.inc" - .include "main_02013AD0.inc" - - .text - - arm_func_start GetMoveMaxGinsengBoost -GetMoveMaxGinsengBoost: ; 0x02013AD0 - ldr r1, _02013AEC ; =DUNGEON_MOVE_TABLES - ldrh r2, [r0, #4] - ldr r1, [r1, #8] - mov r0, #0x1a - mla r0, r2, r0, r1 - ldrb r0, [r0, #0xe] - bx lr - .align 2, 0 -_02013AEC: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveMaxGinsengBoost - - arm_func_start GetMoveMaxGinsengBoostGround -GetMoveMaxGinsengBoostGround: ; 0x02013AF0 - ldr r1, _02013B0C ; =DUNGEON_MOVE_TABLES - ldrh r2, [r0, #2] - ldr r1, [r1, #8] - mov r0, #0x1a - mla r0, r2, r0, r1 - ldrb r0, [r0, #0xe] - bx lr - .align 2, 0 -_02013B0C: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveMaxGinsengBoostGround - - arm_func_start GetMoveCritChance -GetMoveCritChance: ; 0x02013B10 - ldr r1, _02013B2C ; =DUNGEON_MOVE_TABLES - ldrh r2, [r0, #4] - ldr r1, [r1, #8] - mov r0, #0x1a - mla r0, r2, r0, r1 - ldrb r0, [r0, #0xf] - bx lr - .align 2, 0 -_02013B2C: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveCritChance diff --git a/asm/main_02013B70.s b/asm/main_02013B70.s index 0c2a14d9..cf53cd5e 100644 --- a/asm/main_02013B70.s +++ b/asm/main_02013B70.s @@ -3,19 +3,7 @@ .text - arm_func_start GetMoveRangeId -GetMoveRangeId: ; 0x02013B70 - ldr r1, _02013B8C ; =DUNGEON_MOVE_TABLES - ldrh r2, [r0, #4] - ldr r1, [r1, #8] - mov r0, #0x1a - mla r0, r2, r0, r1 - ldrb r0, [r0, #0x15] - bx lr - .align 2, 0 -_02013B8C: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveRangeId - +; https://decomp.me/scratch/zfpDG arm_func_start GetMoveActualAccuracy GetMoveActualAccuracy: ; 0x02013B90 stmdb sp!, {r3, lr} @@ -43,15 +31,3 @@ _02013BDC: .align 2, 0 _02013BE4: .word DUNGEON_MOVE_TABLES arm_func_end GetMoveActualAccuracy - - arm_func_start GetMoveBasePowerFromId -GetMoveBasePowerFromId: ; 0x02013BE8 - mov r1, #0x1a - mul r1, r0, r1 - ldr r0, _02013C00 ; =DUNGEON_MOVE_TABLES - ldr r0, [r0, #8] - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_02013C00: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveBasePowerFromId diff --git a/include/main_02013C04.h b/include/main_02013C04.h index be09bc6c..65448f03 100644 --- a/include/main_02013C04.h +++ b/include/main_02013C04.h @@ -4,6 +4,7 @@ #include "move.h" #include "util.h" +s16 GetMoveBasePowerFromId(s32 move_id); bool32 IsMoveRangeStringUser(struct move *move); #endif //PMDSKY_MAIN_02013C04_H diff --git a/include/moves.h b/include/moves.h index 09163f4b..212a1a46 100644 --- a/include/moves.h +++ b/include/moves.h @@ -7,4 +7,17 @@ // return: max PP for the given move, capped at 99 u32 GetMaxPp(struct move *move); +// Gets the maximum Ginseng Boost for a given move +// return: max ginseng boost for the given move, capped at 15 +u8 GetMoveMaxGinsengBoost(struct move* move); + +// Gets the maximum Ginseng Boost for a given move +// return: max ginseng boost for the given move, capped at 15 +u8 GetMoveMaxGinsengBoostGround(struct move* move); + +// Gets the critical hit chance for a given move. +// return: critical hit chance for the given move, capped at 15 +u8 GetMoveCritChance(struct move *move); + + #endif //PMDSKY_MOVES_H diff --git a/include/moves_3.h b/include/moves_3.h index fd907cc5..2238f36c 100644 --- a/include/moves_3.h +++ b/include/moves_3.h @@ -8,4 +8,7 @@ bool8 IsThawingMove(struct move *move); // Returns true if the given move can be used while the user is affected by Taunt, or false if the move cannot be used while taunted. bool8 IsUsableWhileTaunted(struct move *move); +u16 GetMoveRangeId(struct move *move); + + #endif //PMDSKY_MOVES_3_H diff --git a/include/moves_4.h b/include/moves_4.h index e7b94862..10363168 100644 --- a/include/moves_4.h +++ b/include/moves_4.h @@ -9,5 +9,6 @@ // which: 0 to get the move's first accuracy1 field, 1 to get its accuracy2, 2 to get its ai_condition_random_chance. // return: Move's accuracy1, accuracy2 or ai_condition_random_chance u8 GetMoveAccuracyOrAiChance(struct move *move, enum accuracy_type which); +u8 GetMoveBasePp(struct move* move); #endif //PMDSKY_MOVES_4_H diff --git a/main.lsf b/main.lsf index dfcdfb2d..296c7577 100644 --- a/main.lsf +++ b/main.lsf @@ -56,9 +56,7 @@ Static main Object src/main_0201398C.o Object asm/main_020139AC.o Object src/moves_4.o - Object asm/main_02013A30.o Object src/moves.o - Object asm/main_02013AD0.o Object src/moves_3.o Object asm/main_02013B70.o Object src/main_02013C04.o @@ -119,7 +117,7 @@ Static main Object src/main_020517D4.o Object asm/main_020517F4.o Object src/main_020526EC.o - Object asm/get_category_string.o + Object src/get_category_string.o Object src/main_020527A8.o Object asm/main_020527E0.o Object src/main_0205283C.o diff --git a/src/get_category_string.c b/src/get_category_string.c new file mode 100644 index 00000000..711ef404 --- /dev/null +++ b/src/get_category_string.c @@ -0,0 +1,25 @@ +#include "get_category_string.h" +#include "main_0202593C.h" + +void SprintfStatic__02052418(u8*, u8*, u8*); + +extern u8 _020A3200[10]; + +u8 *GetCategoryString(s32 id) +{ + u8 *buffer; + u8 *string; + + buffer = AllocateTemp1024ByteBufferFromPool(); + +#ifdef EUROPE + string = StringFromId((u16) ((id % 600) + 0x2479)); +#elif JAPAN + string = StringFromId((u16) ((id % 600) + 0x1A40)); +#else + string = StringFromId((u16) ((id % 600) + 0x2477)); +#endif + + SprintfStatic__02052418(buffer, _020A3200, string); + return buffer; +} diff --git a/src/main_02013C04.c b/src/main_02013C04.c index 73ed5813..af255652 100644 --- a/src/main_02013C04.c +++ b/src/main_02013C04.c @@ -3,6 +3,13 @@ extern struct move_data_table_outer DUNGEON_MOVE_TABLES; +s16 GetMoveBasePowerFromId(s32 move_id) +{ + struct move_data *move; + move = &DUNGEON_MOVE_TABLES.moves->moves[move_id]; + return move->base_power; +} + bool32 IsMoveRangeStringUser(struct move *move) { return DUNGEON_MOVE_TABLES.moves->moves[move->id].range_string_idx == MOVE_RANGE_STRING_USER; diff --git a/src/moves.c b/src/moves.c index 2e4d39d1..37e9a4d9 100644 --- a/src/moves.c +++ b/src/moves.c @@ -25,3 +25,19 @@ u32 GetMaxPp(struct move *move) return pp; } + +u8 GetMoveMaxGinsengBoost(struct move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].max_ginseng_boost; +} + +u8 GetMoveMaxGinsengBoostGround(struct move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->flags2].max_ginseng_boost; +} + +u8 GetMoveCritChance(struct move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].crit_chance; +} + diff --git a/src/moves_3.c b/src/moves_3.c index e080f585..f8b41695 100644 --- a/src/moves_3.c +++ b/src/moves_3.c @@ -12,3 +12,9 @@ bool8 IsUsableWhileTaunted(struct move *move) { return DUNGEON_MOVE_TABLES.moves->moves[move->id].usable_while_taunted; } + +u16 GetMoveRangeId(struct move *move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].range_string_idx; +} + diff --git a/src/moves_4.c b/src/moves_4.c index a4d4a439..20d91d28 100644 --- a/src/moves_4.c +++ b/src/moves_4.c @@ -6,3 +6,8 @@ u8 GetMoveAccuracyOrAiChance(struct move *move, enum accuracy_type which) { return DUNGEON_MOVE_TABLES.moves->moves[move->id].accuracy[which]; } + +u8 GetMoveBasePp(struct move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].pp; +} From 59923389a587bf30635e6c495de0c80f53f52ba9 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 09:15:46 -0800 Subject: [PATCH 2/7] forgot include file --- include/get_category_string.h | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 include/get_category_string.h diff --git a/include/get_category_string.h b/include/get_category_string.h new file mode 100644 index 00000000..85b60f7f --- /dev/null +++ b/include/get_category_string.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_GET_CATEGORY_STRING_H +#define PMDSKY_GET_CATEGORY_STRING_H + +u8 *GetCategoryString(s32 id); + +#endif /* ifndef PMDSKY_GET_CATEGORY_STRING_H */ From 79262db2531e893d7e274146e567422485c4b905 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 10:00:14 -0800 Subject: [PATCH 3/7] more move decomp --- asm/main_020137E8.s | 34 ---------------------------------- asm/overlay_29_022FB5EC.s | 17 ----------------- asm/overlay_29_0230231C.s | 27 --------------------------- include/common.h | 18 ++++++++++-------- include/dungeon_logic_5.h | 2 ++ include/moves_1.h | 7 +++++++ include/overlay_29_022FB538.h | 3 +++ main.lsf | 3 --- src/dungeon_logic_5.c | 20 ++++++++++++++++++++ src/moves_1.c | 20 ++++++++++++++++++++ src/overlay_29_022FB538.c | 8 ++++++++ 11 files changed, 70 insertions(+), 89 deletions(-) delete mode 100644 asm/main_020137E8.s delete mode 100644 asm/overlay_29_022FB5EC.s delete mode 100644 asm/overlay_29_0230231C.s diff --git a/asm/main_020137E8.s b/asm/main_020137E8.s deleted file mode 100644 index 66edd0c5..00000000 --- a/asm/main_020137E8.s +++ /dev/null @@ -1,34 +0,0 @@ - .include "asm/macros.inc" - .include "main_020137E8.inc" - - .text - - arm_func_start InitMoveCheckId -InitMoveCheckId: ; 0x020137E8 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4] - ldmeqia sp!, {r4, pc} - mov r2, #5 - strb r2, [r4] - mov r2, #0 - strh r2, [r4, #2] - strh r1, [r4, #4] - bl GetMaxPp - strb r0, [r4, #6] - mov r0, #0 - strb r0, [r4, #7] - ldmia sp!, {r4, pc} - arm_func_end InitMoveCheckId - - arm_func_start GetInfoMoveGround -GetInfoMoveGround: ; 0x02013828 - mov r2, #5 - strb r2, [r0] - strh r1, [r0, #2] - mov r1, #0 - strb r1, [r0, #4] - bx lr - arm_func_end GetInfoMoveGround diff --git a/asm/overlay_29_022FB5EC.s b/asm/overlay_29_022FB5EC.s deleted file mode 100644 index e5f6d56c..00000000 --- a/asm/overlay_29_022FB5EC.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022FB5EC.inc" - - .text - - arm_func_start CheckSpawnThreshold -CheckSpawnThreshold: ; 0x022FB5EC - stmdb sp!, {r4, lr} - bl GetSpawnThreshold - mov r4, r0 - bl GetScenarioBalanceVeneer - cmp r4, r0 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end CheckSpawnThreshold diff --git a/asm/overlay_29_0230231C.s b/asm/overlay_29_0230231C.s deleted file mode 100644 index e33368e2..00000000 --- a/asm/overlay_29_0230231C.s +++ /dev/null @@ -1,27 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_0230231C.inc" - - .text - - arm_func_start GetMovePower -GetMovePower: ; 0x0230231C - stmdb sp!, {r3, r4, r5, lr} - ldrh r2, [r1, #4] - mov r5, r0 - ldrb r4, [r1, #7] - cmp r2, #0x144 - ldreq r0, [r5, #0xb4] - ldreqsh r0, [r0, #0x44] - addeq r0, r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r1 - bl GetMoveBasePower - add r4, r4, r0 - mov r0, r5 - mov r1, #0x2b - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r4, r4, lsl #1 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GetMovePower diff --git a/include/common.h b/include/common.h index 67718665..58a3cb87 100644 --- a/include/common.h +++ b/include/common.h @@ -7,16 +7,18 @@ struct ground_move { // 0x0: flags: 1-byte bitfield // See move::flags0 for details - u8 f_exists : 1; - u8 f_subsequent_in_link_chain : 1; - u8 f_enabled_for_ai : 1; - u8 f_set : 1; - u8 f_last_used : 1; // unconfirmed, but probably the same as struct move - u8 f_disabled : 1; - u8 flags_unk6 : 2; + u8 flags0; + + // u8 f_exists : 1; + // u8 f_subsequent_in_link_chain : 1; + // u8 f_enabled_for_ai : 1; + // u8 f_set : 1; + // u8 f_last_used : 1; // unconfirmed, but probably the same as struct move + // u8 f_disabled : 1; + // u8 flags_unk6 : 2; u8 field_0x1; // Probably padding since it doesn't get initialized - u16 id; // 0x2 + enum move_id id; // 0x2 u8 ginseng; // 0x4: Ginseng boost u8 field_0x5; // Probably padding since it doesn't get initialized }; diff --git a/include/dungeon_logic_5.h b/include/dungeon_logic_5.h index 55c8130d..47fd423d 100644 --- a/include/dungeon_logic_5.h +++ b/include/dungeon_logic_5.h @@ -8,4 +8,6 @@ bool8 CanSeeTeammate(struct entity *monster); // Check the type of a move when used by a certain monster. Accounts for special cases such as Hidden Power, Weather Ball, the regular attack... enum type_id GetMoveTypeForMonster(struct entity *entity, struct move *move); +s32 GetMovePower(struct entity* entity, struct move* move); + #endif //PMDSKY_DUNGEON_LOGIC_5_H diff --git a/include/moves_1.h b/include/moves_1.h index a5b4b952..26fd64d6 100644 --- a/include/moves_1.h +++ b/include/moves_1.h @@ -2,6 +2,7 @@ #define PMDSKY_MOVES_1_H #include "move.h" +#include "common.h" // Initializes a move info struct. // This sets f_exists and f_enabled_for_ai on the flags, the ID to the given ID, the PP to the max PP for the move ID, and the ginseng boost to 0. @@ -9,4 +10,10 @@ // move_id: move ID void InitMove(struct move *move, enum move_id move_id); +void InitMoveCheckId(struct move* move, enum move_id move_id); + +void GetInfoMoveGround(struct ground_move* move, enum move_id move_id); + + + #endif //PMDSKY_MOVES_1_H diff --git a/include/overlay_29_022FB538.h b/include/overlay_29_022FB538.h index 478a4a99..ea1a89b1 100644 --- a/include/overlay_29_022FB538.h +++ b/include/overlay_29_022FB538.h @@ -9,4 +9,7 @@ void SetDecoyAiTracker(struct entity* entity); #endif +u8 CheckSpawnThreshold(void); + + #endif //PMDSKY_OVERLAY_29_022FB538_H diff --git a/main.lsf b/main.lsf index 296c7577..943ea0ec 100644 --- a/main.lsf +++ b/main.lsf @@ -50,7 +50,6 @@ Static main Object src/exclusive_item.o Object asm/main_02010FC4.o Object src/moves_1.o - Object asm/main_020137E8.o Object src/moves_2.o Object asm/main_02013884.o Object src/main_0201398C.o @@ -461,7 +460,6 @@ Overlay OVY_29 Object src/overlay_29_022FAC98.o Object asm/overlay_29_022FACBC.o Object src/overlay_29_022FB538.o - Object asm/overlay_29_022FB5EC.o Object src/dungeon_logic_4.o Object asm/overlay_29_022FB678.o Object src/joined_at_checks.o @@ -511,7 +509,6 @@ Overlay OVY_29 Object src/dungeon_pokemon_attributes_1.o Object asm/overlay_29_023021F0.o Object src/dungeon_logic_5.o - Object asm/overlay_29_0230231C.o Object src/dungeon_logic_2.o Object asm/overlay_29_02302388.o Object src/overlay_29_023026CC.o diff --git a/src/dungeon_logic_5.c b/src/dungeon_logic_5.c index 946e2feb..5c42e62a 100644 --- a/src/dungeon_logic_5.c +++ b/src/dungeon_logic_5.c @@ -5,9 +5,12 @@ #include "main_02014CEC.h" #include "moves_2.h" #include "natural_gift_data.h" +#include "overlay_29_022FF898.h" #include "overlay_29_023000E4.h" #include "special_move_types.h" +extern s32 GetMoveBasePower(struct move*); + bool8 CanSeeTeammate(struct entity *monster) { if (GetEntInfo(monster)->is_not_team_member) @@ -42,3 +45,20 @@ enum type_id GetMoveTypeForMonster(struct entity *entity, struct move *move) return GetMoveType(move); } + +s32 GetMovePower(struct entity* entity, struct move* move) +{ + s32 power; + u8 ginseng; + + ginseng = move->ginseng; + if (move->id == MOVE_HIDDEN_POWER) { + struct monster *pokemon_info = GetEntInfo(entity); + return move->ginseng + pokemon_info->hidden_power_base_power; + } + power = ginseng + GetMoveBasePower(move); + if (ItemIsActive__022FF898(entity, ITEM_SPACE_GLOBE)) { + power *= 2; + } + return power; +} diff --git a/src/moves_1.c b/src/moves_1.c index 74257173..de4f252b 100644 --- a/src/moves_1.c +++ b/src/moves_1.c @@ -10,3 +10,23 @@ void InitMove(struct move *move, enum move_id move_id) move->pp = GetMaxPp(move); move->ginseng = 0; } + +void InitMoveCheckId(struct move* move, enum move_id move_id) +{ + if (move_id == 0) { + move->flags0 = 0; + return; + } + move->flags0 = MOVE_FLAG_ENABLED_FOR_AI | MOVE_FLAG_EXISTS; + move->flags2 = 0; + move->id = move_id; + move->pp = GetMaxPp(move); + move->ginseng = 0; +} + +void GetInfoMoveGround(struct ground_move* move, enum move_id move_id) +{ + move->flags0 = MOVE_FLAG_ENABLED_FOR_AI | MOVE_FLAG_EXISTS; + move->id = move_id; + move->ginseng = 0; +} diff --git a/src/overlay_29_022FB538.c b/src/overlay_29_022FB538.c index 9b0ea8d0..5d10936a 100644 --- a/src/overlay_29_022FB538.c +++ b/src/overlay_29_022FB538.c @@ -5,6 +5,9 @@ #include "overlay_29_022F7364.h" #include "targeting.h" +extern u8 GetScenarioBalanceVeneer(); +extern u32 GetSpawnThreshold(); + #ifndef JAPAN void SetDecoyAiTracker(struct entity* entity) { @@ -31,3 +34,8 @@ void SetDecoyAiTracker(struct entity* entity) } } #endif + +u8 CheckSpawnThreshold(void) +{ + return (GetSpawnThreshold() <= GetScenarioBalanceVeneer()); +} From 2ce8be9c6732d9fd95382aa95ae202e98409d37b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 10:14:05 -0800 Subject: [PATCH 4/7] move moves --- asm/main_020139AC.s | 43 ----------------------------------------- include/main_0201398C.h | 5 +++++ main.lsf | 1 - src/main_0201398C.c | 17 ++++++++++++++++ 4 files changed, 22 insertions(+), 44 deletions(-) delete mode 100644 asm/main_020139AC.s diff --git a/asm/main_020139AC.s b/asm/main_020139AC.s deleted file mode 100644 index bfe01ce3..00000000 --- a/asm/main_020139AC.s +++ /dev/null @@ -1,43 +0,0 @@ - .include "asm/macros.inc" - .include "main_020139AC.inc" - - .text - - arm_func_start GetMoveNbStrikes -GetMoveNbStrikes: ; 0x020139AC - ldr r1, _020139C8 ; =DUNGEON_MOVE_TABLES - ldrh r2, [r0, #4] - ldr r1, [r1, #8] - mov r0, #0x1a - mla r0, r2, r0, r1 - ldrb r0, [r0, #0xd] - bx lr - .align 2, 0 -_020139C8: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveNbStrikes - - arm_func_start GetMoveBasePower -GetMoveBasePower: ; 0x020139CC - ldrh r2, [r0, #4] - mov r0, #0x1a - ldr r1, _020139E8 ; =DUNGEON_MOVE_TABLES - mul r0, r2, r0 - ldr r1, [r1, #8] - ldrsh r0, [r1, r0] - bx lr - .align 2, 0 -_020139E8: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveBasePower - - arm_func_start GetMoveBasePowerGround -GetMoveBasePowerGround: ; 0x020139EC - ldrh r2, [r0, #2] - mov r0, #0x1a - ldr r1, _02013A08 ; =DUNGEON_MOVE_TABLES - mul r0, r2, r0 - ldr r1, [r1, #8] - ldrsh r0, [r1, r0] - bx lr - .align 2, 0 -_02013A08: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveBasePowerGround diff --git a/include/main_0201398C.h b/include/main_0201398C.h index 6bbe200f..fb92e9c7 100644 --- a/include/main_0201398C.h +++ b/include/main_0201398C.h @@ -2,7 +2,12 @@ #define PMDSKY_MAIN_0201398C_H #include "move.h" +#include "common.h" s16 GetMoveAiWeight(struct move *move); +u8 GetMoveNbStrikes(struct move* move); +s16 GetMoveBasePower(struct move* move); +s16 GetMoveBasePowerGround(struct ground_move* move); + #endif //PMDSKY_MAIN_0201398C_H diff --git a/main.lsf b/main.lsf index 943ea0ec..b7917195 100644 --- a/main.lsf +++ b/main.lsf @@ -53,7 +53,6 @@ Static main Object src/moves_2.o Object asm/main_02013884.o Object src/main_0201398C.o - Object asm/main_020139AC.o Object src/moves_4.o Object src/moves.o Object src/moves_3.o diff --git a/src/main_0201398C.c b/src/main_0201398C.c index 617c685e..2067accb 100644 --- a/src/main_0201398C.c +++ b/src/main_0201398C.c @@ -7,3 +7,20 @@ s16 GetMoveAiWeight(struct move *move) { return DUNGEON_MOVE_TABLES.moves->moves[move->id].ai_weight; } + +u8 GetMoveNbStrikes(struct move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].strikes; +} + +s16 GetMoveBasePower(struct move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].base_power; +} + +s16 GetMoveBasePowerGround(struct ground_move* move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].base_power; +} + + From ed52925052ca2280d5fa9fcd655e51e6faaa434f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 10:20:06 -0800 Subject: [PATCH 5/7] consolidate few files --- include/moves_3.h | 4 ++++ main.lsf | 2 -- src/main_02013C04.c | 16 ---------------- src/moves_3.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 18 deletions(-) delete mode 100644 src/main_02013C04.c diff --git a/include/moves_3.h b/include/moves_3.h index 2238f36c..1aa30b97 100644 --- a/include/moves_3.h +++ b/include/moves_3.h @@ -9,6 +9,10 @@ bool8 IsThawingMove(struct move *move); bool8 IsUsableWhileTaunted(struct move *move); u16 GetMoveRangeId(struct move *move); +s32 GetMoveActualAccuracy(s32 move_id); +s16 GetMoveBasePowerFromId(s32 move_id); +bool32 IsMoveRangeStringUser(struct move *move); + #endif //PMDSKY_MOVES_3_H diff --git a/main.lsf b/main.lsf index b7917195..5f2a408f 100644 --- a/main.lsf +++ b/main.lsf @@ -56,8 +56,6 @@ Static main Object src/moves_4.o Object src/moves.o Object src/moves_3.o - Object asm/main_02013B70.o - Object src/main_02013C04.o Object asm/main_02013C30.o Object src/main_02014CEC.o Object asm/main_02014D18.o diff --git a/src/main_02013C04.c b/src/main_02013C04.c deleted file mode 100644 index af255652..00000000 --- a/src/main_02013C04.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "main_02013C04.h" -#include "move_data.h" - -extern struct move_data_table_outer DUNGEON_MOVE_TABLES; - -s16 GetMoveBasePowerFromId(s32 move_id) -{ - struct move_data *move; - move = &DUNGEON_MOVE_TABLES.moves->moves[move_id]; - return move->base_power; -} - -bool32 IsMoveRangeStringUser(struct move *move) -{ - return DUNGEON_MOVE_TABLES.moves->moves[move->id].range_string_idx == MOVE_RANGE_STRING_USER; -} diff --git a/src/moves_3.c b/src/moves_3.c index f8b41695..d032bffd 100644 --- a/src/moves_3.c +++ b/src/moves_3.c @@ -18,3 +18,36 @@ u16 GetMoveRangeId(struct move *move) return DUNGEON_MOVE_TABLES.moves->moves[move->id].range_string_idx; } +s32 GetMoveActualAccuracy(s32 move_id) +{ + struct move_data *move; + u8 max_ginseng_boost; + u8 global_acc; + + move = &DUNGEON_MOVE_TABLES.moves->moves[move_id]; + max_ginseng_boost = move->max_ginseng_boost; + if (max_ginseng_boost == 0) { + return move->accuracy[ACCURACY_1]; + } + if (max_ginseng_boost == 0x63) { + global_acc = move->accuracy[ACCURACY_1]; + if (global_acc == 0x7D) { + return move->accuracy[ACCURACY_2]; + } + return ((global_acc * move->accuracy[ACCURACY_2]) / 100); + } + return 0; +} + +s16 GetMoveBasePowerFromId(s32 move_id) +{ + struct move_data *move; + move = &DUNGEON_MOVE_TABLES.moves->moves[move_id]; + return move->base_power; +} + +bool32 IsMoveRangeStringUser(struct move *move) +{ + return DUNGEON_MOVE_TABLES.moves->moves[move->id].range_string_idx == MOVE_RANGE_STRING_USER; +} + From f032e986f7357daa6a2ae4d997b599e42ebd8137 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 11:44:31 -0800 Subject: [PATCH 6/7] decomp dungeon restriction funcs --- asm/main_02013B70.s | 33 ------ asm/main_02051098.s | 14 --- asm/main_020512C8.s | 86 ---------------- asm/main_020513C0.s | 100 ------------------ include/dungeon_recruitment_2.h | 15 +++ include/main_020512B0.h | 9 -- main.lsf | 3 - src/dungeon_recruitment_2.c | 177 +++++++++++++++++++++++++++++++- src/main_020512B0.c | 9 -- 9 files changed, 188 insertions(+), 258 deletions(-) delete mode 100644 asm/main_02013B70.s delete mode 100644 asm/main_020512C8.s delete mode 100644 asm/main_020513C0.s delete mode 100644 include/main_020512B0.h delete mode 100644 src/main_020512B0.c diff --git a/asm/main_02013B70.s b/asm/main_02013B70.s deleted file mode 100644 index cf53cd5e..00000000 --- a/asm/main_02013B70.s +++ /dev/null @@ -1,33 +0,0 @@ - .include "asm/macros.inc" - .include "main_02013B70.inc" - - .text - -; https://decomp.me/scratch/zfpDG - arm_func_start GetMoveActualAccuracy -GetMoveActualAccuracy: ; 0x02013B90 - stmdb sp!, {r3, lr} - ldr r2, _02013BE4 ; =DUNGEON_MOVE_TABLES - mov r1, #0x1a - ldr r2, [r2, #8] - mla r1, r0, r1, r2 - ldrb r0, [r1, #0xe] - cmp r0, #0 - ldreqb r0, [r1, #0xa] - ldmeqia sp!, {r3, pc} - cmp r0, #0x63 - bne _02013BDC - ldrb r2, [r1, #0xa] - ldrb r0, [r1, #0xb] - cmp r2, #0x7d - ldmeqia sp!, {r3, pc} - mul r0, r2, r0 - mov r1, #0x64 - bl _s32_div_f - ldmia sp!, {r3, pc} -_02013BDC: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02013BE4: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveActualAccuracy diff --git a/asm/main_02051098.s b/asm/main_02051098.s index 9a3e7e53..83c04e8e 100644 --- a/asm/main_02051098.s +++ b/asm/main_02051098.s @@ -152,17 +152,3 @@ _02051280: .word 0x9D2C5680 _02051284: .word 0xEFC60000 arm_func_end sub_02051134 - arm_func_start DungeonGoesUp -DungeonGoesUp: ; 0x02051288 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _020512AC ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020512AC: .word DUNGEON_RESTRICTIONS - arm_func_end DungeonGoesUp diff --git a/asm/main_020512C8.s b/asm/main_020512C8.s deleted file mode 100644 index bd9aad70..00000000 --- a/asm/main_020512C8.s +++ /dev/null @@ -1,86 +0,0 @@ - .include "asm/macros.inc" - .include "main_020512C8.inc" - - .text - - arm_func_start DoesNotSaveWhenEntering -DoesNotSaveWhenEntering: ; 0x020512C8 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _020512EC ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x80 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020512EC: .word DUNGEON_RESTRICTIONS - arm_func_end DoesNotSaveWhenEntering - - arm_func_start TreasureBoxDropsEnabled -TreasureBoxDropsEnabled: ; 0x020512F0 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02051314 ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x400 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02051314: .word DUNGEON_RESTRICTIONS - arm_func_end TreasureBoxDropsEnabled - - arm_func_start IsLevelResetDungeon -IsLevelResetDungeon: ; 0x02051318 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0205133C ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0205133C: .word DUNGEON_RESTRICTIONS - arm_func_end IsLevelResetDungeon - - arm_func_start GetMaxItemsAllowed -GetMaxItemsAllowed: ; 0x02051340 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02051354 ; =_020A0C69 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02051354: .word _020A0C69 - arm_func_end GetMaxItemsAllowed - - arm_func_start IsMoneyAllowed -IsMoneyAllowed: ; 0x02051358 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0205137C ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x20 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0205137C: .word DUNGEON_RESTRICTIONS - arm_func_end IsMoneyAllowed - - arm_func_start GetMaxRescueAttempts -GetMaxRescueAttempts: ; 0x02051380 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02051394 ; =_020A0C68 - ldrsb r0, [r0, r1] - bx lr - .align 2, 0 -_02051394: .word _020A0C68 - arm_func_end GetMaxRescueAttempts diff --git a/asm/main_020513C0.s b/asm/main_020513C0.s deleted file mode 100644 index a1a3d3fa..00000000 --- a/asm/main_020513C0.s +++ /dev/null @@ -1,100 +0,0 @@ - .include "asm/macros.inc" - .include "main_020513C0.inc" - - .text - - arm_func_start GetLeaderChangeFlag -GetLeaderChangeFlag: ; 0x020513C0 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _020513E4 ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x40 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020513E4: .word DUNGEON_RESTRICTIONS - arm_func_end GetLeaderChangeFlag - - arm_func_start GetRandomMovementChance -GetRandomMovementChance: ; 0x020513E8 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _020513FC ; =_020A0C6E - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_020513FC: .word _020A0C6E - arm_func_end GetRandomMovementChance - - arm_func_start CanEnemyEvolve -CanEnemyEvolve: ; 0x02051400 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02051424 ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #2 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02051424: .word DUNGEON_RESTRICTIONS - arm_func_end CanEnemyEvolve - - arm_func_start GetMaxMembersAllowed -GetMaxMembersAllowed: ; 0x02051428 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0205143C ; =_020A0C6A - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_0205143C: .word _020A0C6A - arm_func_end GetMaxMembersAllowed - - arm_func_start IsIqEnabled -IsIqEnabled: ; 0x02051440 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02051464 ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x100 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02051464: .word DUNGEON_RESTRICTIONS - arm_func_end IsIqEnabled - - arm_func_start IsTrapInvisibleWhenAttacking -IsTrapInvisibleWhenAttacking: ; 0x02051468 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0205148C ; =DUNGEON_RESTRICTIONS - ldr r0, [r0, r1] - tst r0, #0x200 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0205148C: .word DUNGEON_RESTRICTIONS - arm_func_end IsTrapInvisibleWhenAttacking - - arm_func_start JoinedAtRangeCheck -JoinedAtRangeCheck: ; 0x02051490 - cmp r0, #0xd9 - blo _020514A4 - cmp r0, #0xe4 - movlo r0, #1 - blo _020514A8 -_020514A4: - mov r0, #0 -_020514A8: - and r0, r0, #0xff - bx lr - arm_func_end JoinedAtRangeCheck diff --git a/include/dungeon_recruitment_2.h b/include/dungeon_recruitment_2.h index 4554960b..5fda0847 100644 --- a/include/dungeon_recruitment_2.h +++ b/include/dungeon_recruitment_2.h @@ -4,6 +4,21 @@ #include "enums.h" #include "util.h" +bool8 DungeonGoesUp(enum dungeon_id dungeon_id); +s32 GetTurnLimit(enum dungeon_id dungeon_id); +bool8 DoesNotSaveWhenEntering(enum dungeon_id dungeon_id); +bool8 TreasureBoxDropsEnabled(enum dungeon_id dungeon_id); +bool8 IsLevelResetDungeon(enum dungeon_id dungeon_id); +s32 GetMaxItemsAllowed(enum dungeon_id dungeon_id); +bool8 IsMoneyAllowed(enum dungeon_id dungeon_id); +s8 GetMaxRescueAttempts(enum dungeon_id dungeon_id); bool8 IsRecruitingAllowed(enum dungeon_id dungeon_id); +bool8 GetLeaderChangeFlag(enum dungeon_id dungeon_id); +s32 GetRandomMovementChance(enum dungeon_id dungeon_id); +bool8 CanEnemyEvolve(enum dungeon_id dungeon_id); +s32 GetMaxMembersAllowed(enum dungeon_id dungeon_id); +bool8 IsIqEnabled(enum dungeon_id dungeon_id); +bool8 IsTrapInvisibleWhenAttacking(enum dungeon_id dungeon_id); +bool8 JoinedAtRangeCheck(enum dungeon_id dungeon_id); #endif //PMDSKY_MAIN_02051398_H diff --git a/include/main_020512B0.h b/include/main_020512B0.h deleted file mode 100644 index bec3477d..00000000 --- a/include/main_020512B0.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef PMDSKY_MAIN_020512B0_H -#define PMDSKY_MAIN_020512B0_H - -#include "enums.h" -#include "util.h" - -s32 GetTurnLimit(enum dungeon_id dungeon_id); - -#endif //PMDSKY_MAIN_020512B0_H diff --git a/main.lsf b/main.lsf index 5f2a408f..8ff610ff 100644 --- a/main.lsf +++ b/main.lsf @@ -95,10 +95,7 @@ Static main Object asm/main_0204EFE0.o Object src/number_util.o Object asm/main_02051098.o - Object src/main_020512B0.o - Object asm/main_020512C8.o Object src/dungeon_recruitment_2.o - Object asm/main_020513C0.o Object src/main_020514CC.o Object asm/main_02051504.o Object src/main_02051760.o diff --git a/src/dungeon_recruitment_2.c b/src/dungeon_recruitment_2.c index 7eadff2b..0d9536cf 100644 --- a/src/dungeon_recruitment_2.c +++ b/src/dungeon_recruitment_2.c @@ -6,14 +6,183 @@ extern struct dungeon_restriction DUNGEON_RESTRICTIONS[256]; -bool8 IsRecruitingAllowed(enum dungeon_id dungeon_id) +bool8 DungeonGoesUp(enum dungeon_id dungeon_id) { bool8 return_val; - - if (DUNGEON_RESTRICTIONS[dungeon_id].flags & ALLOW_RECRUITING) { + + if(DUNGEON_RESTRICTIONS[dungeon_id].flags & DUNGEON_ASCENDS) + { return_val = TRUE; - } else { + } + else + { return_val = FALSE; } return return_val; } + +s32 GetTurnLimit(enum dungeon_id dungeon_id) +{ + return DUNGEON_RESTRICTIONS[dungeon_id].turn_limit_per_floor; +} + +bool8 DoesNotSaveWhenEntering(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if(DUNGEON_RESTRICTIONS[dungeon_id].flags & NO_SAVE_ON_ENTRY) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +bool8 TreasureBoxDropsEnabled(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if(DUNGEON_RESTRICTIONS[dungeon_id].flags & ENEMIES_DROP_CHESTS) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +bool8 IsLevelResetDungeon(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if(DUNGEON_RESTRICTIONS[dungeon_id].flags & RESET_TEAM_LEVEL_TO_1) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +s32 GetMaxItemsAllowed(enum dungeon_id dungeon_id) +{ + return DUNGEON_RESTRICTIONS[dungeon_id].max_items_allowed; +} + +bool8 IsMoneyAllowed(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if(DUNGEON_RESTRICTIONS[dungeon_id].flags & KEEP_MONEY_ON_ENTRY) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +s8 GetMaxRescueAttempts(enum dungeon_id dungeon_id) +{ + return DUNGEON_RESTRICTIONS[dungeon_id].max_rescue_attempts; +} + + +bool8 IsRecruitingAllowed(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if (DUNGEON_RESTRICTIONS[dungeon_id].flags & ALLOW_RECRUITING) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +bool8 GetLeaderChangeFlag(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if (DUNGEON_RESTRICTIONS[dungeon_id].flags & ALLOW_LEADER_CHANGE) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +s32 GetRandomMovementChance(enum dungeon_id dungeon_id) +{ + return DUNGEON_RESTRICTIONS[dungeon_id].random_movement_chance; +} + +bool8 CanEnemyEvolve(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if (DUNGEON_RESTRICTIONS[dungeon_id].flags & ENEMIES_CAN_EVOLVE) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +s32 GetMaxMembersAllowed(enum dungeon_id dungeon_id) +{ + return DUNGEON_RESTRICTIONS[dungeon_id].max_party_size; +} + +bool8 IsIqEnabled(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if (DUNGEON_RESTRICTIONS[dungeon_id].flags & DISABLE_IQ_SKILLS) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +bool8 IsTrapInvisibleWhenAttacking(enum dungeon_id dungeon_id) +{ + bool8 return_val; + + if (DUNGEON_RESTRICTIONS[dungeon_id].flags & TRAPS_STAY_HIDDEN_ON_ATTACK) + { + return_val = TRUE; + } + else + { + return_val = FALSE; + } + return return_val; +} + +bool8 JoinedAtRangeCheck(enum dungeon_id dungeon_id) +{ + return ((dungeon_id >= DUNGEON_JOINED_AT_BIDOOF) && (dungeon_id < DUNGEON_DUMMY_0xE4)); +} diff --git a/src/main_020512B0.c b/src/main_020512B0.c deleted file mode 100644 index 2c12582e..00000000 --- a/src/main_020512B0.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "main_020512B0.h" -#include "dungeon.h" - -extern struct dungeon_restriction DUNGEON_RESTRICTIONS[256]; - -s32 GetTurnLimit(enum dungeon_id dungeon_id) -{ - return DUNGEON_RESTRICTIONS[dungeon_id].turn_limit_per_floor; -} From d950417a0facce0d983cb8f47ca95f152e7616c6 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Jan 2026 11:57:44 -0800 Subject: [PATCH 7/7] fix build --- src/dungeon_logic_7.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dungeon_logic_7.c b/src/dungeon_logic_7.c index e8277238..036f3cf4 100644 --- a/src/dungeon_logic_7.c +++ b/src/dungeon_logic_7.c @@ -1,9 +1,9 @@ #include "dungeon_logic_7.h" #include "dungeon_logic_6.h" #include "dungeon_mode.h" +#include "dungeon_recruitment_2.h" #include "dungeon_util_static.h" #include "fixed_room_data_1.h" -#include "main_020512B0.h" #include "util.h" bool8 IsMonsterLoneOutlaw(struct monster* monster_info)