From fddb06d6accec871ecea7b896b792e90e57032fa Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Thu, 19 Mar 2026 21:46:30 -0400 Subject: [PATCH] Decomped sub_0205E2B8 Decomped by @slaw-22 --- .../{main_0205E2B8.inc => main_0205E3F8.inc} | 2 +- asm/{main_0205E2B8.s => main_0205E3F8.s} | 97 +------------------ include/main_0205E288.h | 11 +-- main.lsf | 2 +- src/main_0205E288.c | 43 +++++++- 5 files changed, 46 insertions(+), 109 deletions(-) rename asm/include/{main_0205E2B8.inc => main_0205E3F8.inc} (99%) rename asm/{main_0205E2B8.s => main_0205E3F8.s} (99%) diff --git a/asm/include/main_0205E2B8.inc b/asm/include/main_0205E3F8.inc similarity index 99% rename from asm/include/main_0205E2B8.inc rename to asm/include/main_0205E3F8.inc index 443fd822..9e1bb18f 100644 --- a/asm/include/main_0205E2B8.inc +++ b/asm/include/main_0205E3F8.inc @@ -346,5 +346,5 @@ .public sub_0205E01C .public sub_0205E090 .public sub_0205E258 -.public sub_0205E288 +.public sub_0205E2B8 .public vsprintf diff --git a/asm/main_0205E2B8.s b/asm/main_0205E3F8.s similarity index 99% rename from asm/main_0205E2B8.s rename to asm/main_0205E3F8.s index 67f69c0e..31dc885a 100644 --- a/asm/main_0205E2B8.s +++ b/asm/main_0205E3F8.s @@ -1,103 +1,8 @@ .include "asm/macros.inc" - .include "main_0205E2B8.inc" + .include "main_0205E3F8.inc" .text - arm_func_start sub_0205E2B8 -sub_0205E2B8: ; 0x0205E2B8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r4, r1 - mov r7, #0 - ldr r6, _0205E3F4 ; =MISSION_DELIVER_LIST_PTR - b _0205E2F4 -_0205E2D0: - ldr r0, [r6, #0x18] - mov r1, r5 - mov r2, r4 - add r0, r0, r7, lsl #5 - bl sub_0205E288 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r7, r7, #1 -_0205E2F4: - cmp r7, #8 - blt _0205E2D0 - mov r7, #0 - ldr r6, _0205E3F4 ; =MISSION_DELIVER_LIST_PTR - b _0205E330 -_0205E308: - ldr r0, [r6, #0x18] - mov r1, r5 - add r0, r0, #0x100 - mov r2, r4 - add r0, r0, r7, lsl #5 - bl sub_0205E288 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r7, r7, #1 -_0205E330: - cmp r7, #8 - blt _0205E308 - mov r7, #0 - ldr r6, _0205E3F4 ; =MISSION_DELIVER_LIST_PTR - b _0205E36C -_0205E344: - ldr r0, [r6, #0x18] - mov r1, r5 - add r0, r0, #0x200 - mov r2, r4 - add r0, r0, r7, lsl #5 - bl sub_0205E288 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r7, r7, #1 -_0205E36C: - cmp r7, #8 - blt _0205E344 - mov r7, #0 - ldr r6, _0205E3F4 ; =MISSION_DELIVER_LIST_PTR - b _0205E3A8 -_0205E380: - ldr r0, [r6, #0x18] - mov r1, r5 - add r0, r0, #0x300 - mov r2, r4 - add r0, r0, r7, lsl #5 - bl sub_0205E288 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r7, r7, #1 -_0205E3A8: - cmp r7, #1 - blt _0205E380 - mov r7, #0 - ldr r6, _0205E3F4 ; =MISSION_DELIVER_LIST_PTR - b _0205E3E4 -_0205E3BC: - ldr r0, [r6, #0x18] - mov r1, r5 - add r0, r0, #0x320 - mov r2, r4 - add r0, r0, r7, lsl #5 - bl sub_0205E288 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r7, r7, #1 -_0205E3E4: - cmp r7, #1 - blt _0205E3BC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0205E3F4: .word MISSION_DELIVER_LIST_PTR - arm_func_end sub_0205E2B8 - arm_func_start sub_0205E3F8 sub_0205E3F8: ; 0x0205E3F8 stmdb sp!, {r3, lr} diff --git a/include/main_0205E288.h b/include/main_0205E288.h index fe787eac..84e2b9a6 100644 --- a/include/main_0205E288.h +++ b/include/main_0205E288.h @@ -1,14 +1,9 @@ #ifndef PMDSKY_MAIN_0205E288_H #define PMDSKY_MAIN_0205E288_H -#include "util.h" +#include "mission.h" -struct unkStruct_0205E288 { - u8 unk0; - u8 unk1; - u8 unk2; -}; - -bool8 sub_0205E288(struct unkStruct_0205E288 *ptr, u32 val, struct unkStruct_0205E288 *ptr2); +bool8 sub_0205E288(struct mission *mission, u32 val, u8 *ptr2); +bool8 sub_0205E2B8(u32 arg0, u8 *arg1); #endif //PMDSKY_MAIN_0205E288_H diff --git a/main.lsf b/main.lsf index d379a896..a0410585 100644 --- a/main.lsf +++ b/main.lsf @@ -168,7 +168,7 @@ Static main Object src/main_0205E01C.o Object asm/main_0205E090.o Object src/main_0205E288.o - Object asm/main_0205E2B8.o + Object asm/main_0205E3F8.o Object src/dungeon_init_2.o Object asm/main_0206A750.o Object src/main_0206C98C.o diff --git a/src/main_0205E288.c b/src/main_0205E288.c index 4a5da88e..bf9eb11e 100644 --- a/src/main_0205E288.c +++ b/src/main_0205E288.c @@ -1,12 +1,49 @@ #include "main_0205E288.h" -bool8 sub_0205E288(struct unkStruct_0205E288 *ptr, u32 val, struct unkStruct_0205E288 *ptr2) +extern struct mission_deliver_list MISSION_DELIVER_LIST_PTR; + +bool8 sub_0205E288(struct mission *mission, u32 val, u8 *ptr2) { - if (ptr->unk0 == 0) + if (mission->status == MISSION_STATUS_INVALID) return FALSE; - if (ptr->unk1 == val && ptr->unk2 == ptr2->unk0) + if (mission->type == val && mission->subtype.other == *ptr2) return TRUE; return FALSE; } + +bool8 sub_0205E2B8(u32 arg0, u8 *arg1) +{ + for (s32 i = 0; i < 8; i++) + { + if (sub_0205E288((struct mission*) (MISSION_DELIVER_LIST_PTR.unk18 + i * 32), arg0, arg1)) + return TRUE; + } + + for (s32 i = 0; i < 8; i++) + { + if (sub_0205E288((struct mission*) (MISSION_DELIVER_LIST_PTR.unk18 + 0x100 + i * 32), arg0, arg1)) + return TRUE; + } + + for (s32 i = 0; i < 8; i++) + { + if (sub_0205E288((struct mission*) (MISSION_DELIVER_LIST_PTR.unk18 + 0x200 + i * 32), arg0, arg1)) + return TRUE; + } + + for (s32 i = 0; i < 1; i++) + { + if (sub_0205E288((struct mission*) (MISSION_DELIVER_LIST_PTR.unk18 + 0x300 + i * 32), arg0, arg1)) + return TRUE; + } + + for (s32 i = 0; i < 1; i++) + { + if (sub_0205E288((struct mission*) (MISSION_DELIVER_LIST_PTR.unk18 + 0x320 + i * 32), arg0, arg1)) + return TRUE; + } + + return FALSE; +}