From 090d9f3159c36a2bf0490bfe77dbce1428fb877f Mon Sep 17 00:00:00 2001 From: cecilarmitais Date: Thu, 20 Aug 2026 15:09:01 -0700 Subject: [PATCH] Decomp 50 functions in five groups Sixth 5x10 batch; all fifty matched at score 0 and landed. overlay_29_022DC694 HEAD team-stats forwarders, a 10-argument forwarder, and a 22-entry table search overlay_29_022E4714 HEAD PlayEffectAnimationEntity wrappers overlay_29_022E37DC TAIL same family, merging into overlay_29_022E406C.c overlay_18 mid LINK_SHOP_PTR state setters main_020022C4 mid Nitro OS thread and mutex wrappers New placeholder structs: unk_022DC694, unk_02353518, unk_0238C950, unk_020027E8, unk_0229B0E0. The OS wrappers use nitro's own OSThread and OSMutex types, which every translation unit already has through the prefix header, rather than private tags. Two spellings a reviewer should weigh, both recorded in the note: _0229B0E0 is declared volatile because the target reloads it where any ordinary spelling is common-subexpression-eliminated, and ov29_022DC78C matches in byte-offset form rather than array indexing because the target keeps the offset live in a separate mul. Group selection now rejects malformed disassembly: 0.4% of asm blocks end without a return (a .global mid-body split one function in two) and 6.5% are several functions merged into one block (no .global marks the later entry points). Neither is decompilable as written. Authored by Claude (Opus 5) under human direction. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK. Co-Authored-By: Claude Opus 5 --- asm/include/main_020022C4.inc | 55 +- asm/include/main_02002910.inc | 32 + asm/include/overlay_18.inc | 40 +- asm/include/overlay_18_0238CAB0.inc | 80 ++ ...9_022DC694.inc => overlay_29_022DC7E4.inc} | 12 +- ...9_022E4714.inc => overlay_29_022E4868.inc} | 1 - asm/main_020022C4.s | 898 --------------- asm/main_02002910.s | 782 +++++++++++++ asm/overlay_18.s | 1005 ----------------- asm/overlay_18_0238CAB0.s | 871 ++++++++++++++ ...ay_29_022DC694.s => overlay_29_022DC7E4.s} | 133 +-- asm/overlay_29_022E37DC.s | 125 -- ...ay_29_022E4714.s => overlay_29_022E4868.s} | 130 +-- include/main_020027E8.h | 28 + include/overlay_18_0238C950.h | 25 + include/overlay_29_022DC684.h | 22 + include/overlay_29_022E3F20.h | 17 + include/overlay_29_022E4704.h | 10 + main.lsf | 9 +- src/main_020027E8.c | 90 ++ src/overlay_18_0238C950.c | 74 ++ src/overlay_29_022DC684.c | 98 ++ src/overlay_29_022E3F20.c | 60 + src/overlay_29_022E4704.c | 65 ++ 24 files changed, 2309 insertions(+), 2353 deletions(-) create mode 100644 asm/include/main_02002910.inc create mode 100644 asm/include/overlay_18_0238CAB0.inc rename asm/include/{overlay_29_022DC694.inc => overlay_29_022DC7E4.inc} (85%) rename asm/include/{overlay_29_022E4714.inc => overlay_29_022E4868.inc} (84%) create mode 100644 asm/main_02002910.s create mode 100644 asm/overlay_18_0238CAB0.s rename asm/{overlay_29_022DC694.s => overlay_29_022DC7E4.s} (95%) rename asm/{overlay_29_022E4714.s => overlay_29_022E4868.s} (67%) create mode 100644 include/main_020027E8.h create mode 100644 include/overlay_18_0238C950.h create mode 100644 include/overlay_29_022E3F20.h create mode 100644 src/main_020027E8.c create mode 100644 src/overlay_18_0238C950.c create mode 100644 src/overlay_29_022E3F20.c diff --git a/asm/include/main_020022C4.inc b/asm/include/main_020022C4.inc index ecb746f6..3f64b65c 100644 --- a/asm/include/main_020022C4.inc +++ b/asm/include/main_020022C4.inc @@ -1,45 +1,26 @@ #pragma once +.public CardPullOut +.public Card_SetPulledOutCallback +.public Debug_Print0 +.public GX_DispOff +.public OS_CreateThread +.public OS_DisableScheduler +.public OS_GetThreadPriority +.public OS_InitMutex +.public OS_LockMutex +.public OS_ResetSystem +.public OS_SetThreadPriority +.public OS_SleepThread +.public OS_SleepThreadDirect +.public OS_UnlockMutex +.public OSi_ThreadInfo +.public Rand16Bit +.public WaitForInterrupt .public _02092464 .public _020AEF30 -.public _020AEF58 .public _0229AFC0 .public _0229AFCC .public _0229AFE4 .public _0229B004 -.public _0229B0E0 -.public _0229B0E8 -.public _0229B0F0 -.public _0229B0F8 -.public _0229B110 -.public _0229B114 -.public Card_LockBackup -.public Card_LockRom -.public Card_SetPulledOutCallback -.public Card_UnlockBackup -.public Card_UnlockRom -.public CardPullOut -.public Debug_Print0 -.public GX_DispOff -.public InitMemAllocTable -.public MemAlloc -.public OS_CreateThread -.public OS_DisableScheduler -.public OS_GetLockID -.public OS_GetThreadPriority -.public OS_InitMessageQueue -.public OS_InitMutex -.public OS_LockMutex -.public OS_ReceiveMessage -.public OS_ResetSystem -.public OS_SendMessage -.public OS_SetThreadPriority -.public OS_SleepThread -.public OS_SleepThreadDirect -.public OS_TryLockMutex -.public OS_UnlockMutex -.public OS_WakeupThreadDirect -.public OSi_ThreadInfo -.public Rand16Bit +.public sub_020027F8 .public sub_02003AD0 -.public sub_020059A8 -.public WaitForInterrupt diff --git a/asm/include/main_02002910.inc b/asm/include/main_02002910.inc new file mode 100644 index 00000000..01802904 --- /dev/null +++ b/asm/include/main_02002910.inc @@ -0,0 +1,32 @@ +#pragma once +.public Card_LockBackup +.public Card_LockRom +.public Card_UnlockBackup +.public Card_UnlockRom +.public InitMemAllocTable +.public MemAlloc +.public OS_GetLockID +.public OS_GetThreadPriority +.public OS_InitMessageQueue +.public OS_InitMutex +.public OS_LockMutex +.public OS_ReceiveMessage +.public OS_SendMessage +.public OS_SetThreadPriority +.public OS_TryLockMutex +.public OS_UnlockMutex +.public OSi_ThreadInfo +.public _020AEF58 +.public _0229B0E8 +.public _0229B0F0 +.public _0229B0F8 +.public _0229B110 +.public _0229B114 +.public sub_02002580 +.public sub_02002670 +.public sub_020026B8 +.public sub_020027F8 +.public sub_020028B0 +.public sub_020028F8 +.public sub_02002904 +.public sub_020059A8 diff --git a/asm/include/overlay_18.inc b/asm/include/overlay_18.inc index 6f119dba..07ac2bdd 100644 --- a/asm/include/overlay_18.inc +++ b/asm/include/overlay_18.inc @@ -14,8 +14,6 @@ .public CreateSimpleMenuFromStringIds .public CreateTextBox .public DrawTextInWindow -.public GetAdvancedMenuCurrentOption -.public GetAdvancedMenuResult .public GetEncodedHalfword .public GetEvoFamily .public GetMoneyCarried @@ -32,16 +30,35 @@ .public IsScrollBoxActive .public IsSimpleMenuActive .public IsTextBoxActive +.public LINK_SHOP_MAIN_MENU_ITEMS +.public LINK_SHOP_MENU_ITEMS_CONFIRM +.public LINK_SHOP_PTR +.public LINK_SHOP_SUBMENU_ITEMS_1 +.public LINK_SHOP_SUBMENU_ITEMS_2 +.public LINK_SHOP_SUBMENU_ITEMS_3 +.public LINK_SHOP_SUBMENU_ITEMS_4 +.public LINK_SHOP_SUBMENU_ITEMS_5 +.public LINK_SHOP_SUBMENU_ITEMS_6 +.public LINK_SHOP_SUBMENU_ITEMS_7 +.public LINK_SHOP_WINDOW_PARAMS_1 +.public LINK_SHOP_WINDOW_PARAMS_10 +.public LINK_SHOP_WINDOW_PARAMS_11 +.public LINK_SHOP_WINDOW_PARAMS_2 +.public LINK_SHOP_WINDOW_PARAMS_3 +.public LINK_SHOP_WINDOW_PARAMS_4 +.public LINK_SHOP_WINDOW_PARAMS_5 +.public LINK_SHOP_WINDOW_PARAMS_6 +.public LINK_SHOP_WINDOW_PARAMS_7 +.public LINK_SHOP_WINDOW_PARAMS_8 +.public LINK_SHOP_WINDOW_PARAMS_9 .public MemAlloc -.public memcpy .public MemFree -.public ov11_0238A090 +.public OVERLAY18_FUNCTION_POINTER_TABLE .public PlaySeByIdVolumeWrapper .public PlaySeVolumeWrapper .public PortraitBoxNeedsUpdate .public PreprocessString .public PrintIqSkillsMenu -.public ResumeAdvancedMenu .public ReturnScriptMenuResultZero .public SetAdvancedTextBoxState5 .public SetPortraitEmotion @@ -51,10 +68,14 @@ .public ShowPortraitInPortraitBox .public ShowStringIdInDialogueBox .public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public UpdateWindow +.public ov11_0238A090 +.public ov18_0238D5F8 +.public ov18_0238D608 .public sub_02017C74 .public sub_02027B1C .public sub_0202BC60 -.public sub_0202C1E4 .public sub_0202F334 .public sub_0202F954 .public sub_020307EC @@ -73,8 +94,6 @@ .public sub_0203F398 .public sub_0203F990 .public sub_0203FA64 -.public sub_0203FD14 -.public sub_0203FD2C .public sub_0203FD38 .public sub_0203FD80 .public sub_0204018C @@ -94,9 +113,6 @@ .public sub_02041414 .public sub_02041424 .public sub_02041484 -.public sub_0204159C -.public sub_020415BC -.public sub_02041614 .public sub_020416BC .public sub_020416DC .public sub_020417A8 @@ -110,6 +126,4 @@ .public sub_020572EC .public sub_020573A0 .public sub_0205B028 -.public TEAM_MEMBER_TABLE_PTR -.public UpdateWindow .public vsprintf diff --git a/asm/include/overlay_18_0238CAB0.inc b/asm/include/overlay_18_0238CAB0.inc new file mode 100644 index 00000000..a0be1d53 --- /dev/null +++ b/asm/include/overlay_18_0238CAB0.inc @@ -0,0 +1,80 @@ +#pragma once +.public GetAdvancedMenuCurrentOption +.public GetAdvancedMenuResult +.public GetPressedButtons +.public GetSimpleMenuResult__0202B870 +.public IsAdvancedMenuActive2 +.public IsSimpleMenuActive +.public LINK_SHOP_PTR +.public ResumeAdvancedMenu +.public memcpy +.public ov18_0238ADA8 +.public ov18_0238BE28 +.public ov18_0238BE48 +.public ov18_0238BE6C +.public ov18_0238BE90 +.public ov18_0238BF0C +.public ov18_0238BF30 +.public ov18_0238BF60 +.public ov18_0238BF84 +.public ov18_0238BFA8 +.public ov18_0238C03C +.public ov18_0238C060 +.public ov18_0238C078 +.public ov18_0238C09C +.public ov18_0238C0C0 +.public ov18_0238C0D8 +.public ov18_0238C0FC +.public ov18_0238C114 +.public ov18_0238C13C +.public ov18_0238C164 +.public ov18_0238C21C +.public ov18_0238C240 +.public ov18_0238C258 +.public ov18_0238C27C +.public ov18_0238C340 +.public ov18_0238C364 +.public ov18_0238C398 +.public ov18_0238C3C0 +.public ov18_0238C428 +.public ov18_0238C47C +.public ov18_0238C4A0 +.public ov18_0238C4E8 +.public ov18_0238C504 +.public ov18_0238C528 +.public ov18_0238C720 +.public ov18_0238C78C +.public ov18_0238C7B0 +.public ov18_0238C7C0 +.public ov18_0238C7E4 +.public ov18_0238C808 +.public ov18_0238C888 +.public ov18_0238C8AC +.public ov18_0238C8D0 +.public ov18_0238C950 +.public ov18_0238C974 +.public ov18_0238C984 +.public ov18_0238C9A8 +.public ov18_0238C9B8 +.public ov18_0238CA18 +.public ov18_0238CA3C +.public ov18_0238CA4C +.public ov18_0238CA70 +.public ov18_0238CA80 +.public ov18_0238D208 +.public ov18_0238D22C +.public ov18_0238D23C +.public ov18_0238D260 +.public sub_0202C1E4 +.public sub_0203FD14 +.public sub_0203FD2C +.public sub_0203FD38 +.public sub_0203FD80 +.public sub_020407EC +.public sub_02041094 +.public sub_02041154 +.public sub_02041364 +.public sub_02041484 +.public sub_020415BC +.public sub_02041614 +.public sub_02041A18 diff --git a/asm/include/overlay_29_022DC694.inc b/asm/include/overlay_29_022DC7E4.inc similarity index 85% rename from asm/include/overlay_29_022DC694.inc rename to asm/include/overlay_29_022DC7E4.inc index 1a31129e..4602935f 100644 --- a/asm/include/overlay_29_022DC694.inc +++ b/asm/include/overlay_29_022DC7E4.inc @@ -3,10 +3,7 @@ .public ChangeSimpleObjTexture .public DUNGEON_PTR .public DirectoryFileMngr_OpenDirectoryFile -.public DrawTeamStats .public FillPaletteInitInfo -.public FreeMapAndTeam -.public FreeTeamStats .public GetDefaultTileTextureId .public HandleSir0Translation .public IsBackgroundTileset @@ -16,15 +13,8 @@ .public MemZero .public OBJ_GRAPHICS_CONTROLS_PTR .public UnloadFile -.public UpdateTeamStats .public _s32_div_f -.public ov10_022C0814 -.public ov10_022C096C -.public ov10_022C0F6C -.public ov10_022C11D8 -.public ov10_022C14D0 -.public ov10_022C159C -.public ov10_022C22A0 +.public ov29_022DC78C .public ov29_02350F88 .public ov29_02350F8C .public ov29_02350F90 diff --git a/asm/include/overlay_29_022E4714.inc b/asm/include/overlay_29_022E4868.inc similarity index 84% rename from asm/include/overlay_29_022E4714.inc rename to asm/include/overlay_29_022E4868.inc index aa03e10e..ddb30d5a 100644 --- a/asm/include/overlay_29_022E4714.inc +++ b/asm/include/overlay_29_022E4868.inc @@ -1,5 +1,4 @@ #pragma once .public GetEffectAnimationField0x19 -.public MonsterIsType .public PlayEffectAnimationEntity .public PlaySeByIdIfShouldDisplayEntity diff --git a/asm/main_020022C4.s b/asm/main_020022C4.s index 1d69c42f..eb2a8234 100644 --- a/asm/main_020022C4.s +++ b/asm/main_020022C4.s @@ -461,901 +461,3 @@ sub_02002778: ; 0x02002778 add sp, sp, #8 ldmia sp!, {r4, r5, r6, pc} arm_func_end sub_02002778 - - arm_func_start sub_020027E8 -sub_020027E8: ; 0x020027E8 - ldr ip, _020027F4 ; =OS_WakeupThreadDirect - ldr r0, [r0] - bx ip - .align 2, 0 -_020027F4: .word OS_WakeupThreadDirect - arm_func_end sub_020027E8 - - arm_func_start sub_020027F8 -sub_020027F8: ; 0x020027F8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6] - mov r5, r1 - bl OS_GetThreadPriority - mov r4, r0 - ldr r0, [r6] - mov r1, r5 - bl OS_SetThreadPriority - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_020027F8 - - arm_func_start sub_02002824 -sub_02002824: ; 0x02002824 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002854 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, r6 - bl OS_SetThreadPriority - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002854: .word OSi_ThreadInfo - arm_func_end sub_02002824 - - arm_func_start sub_02002858 -sub_02002858: ; 0x02002858 - str r1, [r0, #0x14] - bx lr - arm_func_end sub_02002858 - - arm_func_start sub_02002860 -sub_02002860: ; 0x02002860 - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - ldrne r0, [r0, #0x14] - moveq r0, #0 - bx lr - arm_func_end sub_02002860 - - arm_func_start sub_02002878 -sub_02002878: ; 0x02002878 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02002580 - cmp r0, #0 - beq _020028A4 - ldr r0, [r0, #0x14] - cmp r0, r4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} -_020028A4: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_02002878 - - arm_func_start sub_020028AC -sub_020028AC: ; 0x020028AC - bx lr - arm_func_end sub_020028AC - - arm_func_start sub_020028B0 -sub_020028B0: ; 0x020028B0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_InitMutex - mov r0, r4 - bl OS_LockMutex - bl sub_02002670 - ldr r0, _020028F4 ; =_0229B0E0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldr r2, [r0] - ldr r1, [r0, #4] - cmp r2, r1 - ldrgt r1, [r0] - strgt r1, [r0, #4] - bl sub_020026B8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020028F4: .word _0229B0E0 - arm_func_end sub_020028B0 - - arm_func_start sub_020028F8 -sub_020028F8: ; 0x020028F8 - ldr ip, _02002900 ; =OS_UnlockMutex - bx ip - .align 2, 0 -_02002900: .word OS_UnlockMutex - arm_func_end sub_020028F8 - - arm_func_start sub_02002904 -sub_02002904: ; 0x02002904 - ldr ip, _0200290C ; =OS_LockMutex - bx ip - .align 2, 0 -_0200290C: .word OS_LockMutex - arm_func_end sub_02002904 - - arm_func_start sub_02002910 -sub_02002910: ; 0x02002910 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_TryLockMutex - tst r0, #0xff - beq _02002944 - ldr r0, [r4, #0xc] - cmp r0, #1 - movle r0, #1 - ldmleia sp!, {r4, pc} - mov r0, r4 - bl OS_UnlockMutex - mov r0, #0 - ldmia sp!, {r4, pc} -_02002944: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_02002910 - - arm_func_start sub_0200294C -sub_0200294C: ; 0x0200294C - bx lr - arm_func_end sub_0200294C - - arm_func_start sub_02002950 -sub_02002950: ; 0x02002950 - stmdb sp!, {r3, lr} - mov r3, r0 - add r1, r3, #4 - add r0, r3, #8 - mov r2, #1 - str r1, [r3] - bl OS_InitMessageQueue - bl sub_02002670 - ldr r0, _0200299C ; =_0229B0E8 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldr r2, [r0] - ldr r1, [r0, #4] - cmp r2, r1 - ldrgt r1, [r0] - strgt r1, [r0, #4] - bl sub_020026B8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0200299C: .word _0229B0E8 - arm_func_end sub_02002950 - - arm_func_start sub_020029A0 -sub_020029A0: ; 0x020029A0 - ldr ip, _020029B4 ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - add r0, r0, #8 - bx ip - .align 2, 0 -_020029B4: .word OS_SendMessage - arm_func_end sub_020029A0 - - arm_func_start sub_020029B8 -sub_020029B8: ; 0x020029B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _02002A40 ; =OSi_ThreadInfo - mov r4, r0 - ldr sb, [r1, #4] - mov r7, #0 - mov r0, sb - bl OS_GetThreadPriority - mov r8, r0 - mov r0, sb - mov r1, #7 - bl OS_SetThreadPriority - mov r5, r7 - b _020029F0 -_020029EC: - add r7, r7, #1 -_020029F0: - mov r1, r5 - mov r2, r5 - add r0, r4, #8 - bl OS_SendMessage - cmp r0, #0 - bne _020029EC - add r6, sp, #0 - mov r5, #0 -_02002A10: - mov r1, r6 - mov r2, r5 - add r0, r4, #8 - bl OS_ReceiveMessage - cmp r0, #0 - subne r7, r7, #1 - bne _02002A10 - mov r0, sb - mov r1, r8 - bl OS_SetThreadPriority - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02002A40: .word OSi_ThreadInfo - arm_func_end sub_020029B8 - - arm_func_start sub_02002A44 -sub_02002A44: ; 0x02002A44 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02002A94 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #6 - bl OS_SetThreadPriority - add r1, sp, #0 - add r0, r6, #8 - mov r2, #1 - bl OS_ReceiveMessage - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02002A94: .word OSi_ThreadInfo - arm_func_end sub_02002A44 - - arm_func_start sub_02002A98 -sub_02002A98: ; 0x02002A98 - bx lr - arm_func_end sub_02002A98 - - arm_func_start sub_02002A9C -sub_02002A9C: ; 0x02002A9C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - str r1, [r6, #0xa4] - add r1, r6, #4 - str r2, [r6, #0xa8] - str r1, [r6] - ldr r2, [r6, #0xa4] - add r0, r6, #0x84 - bl OS_InitMessageQueue - mov r5, #0 - mov r4, r5 - b _02002AE0 -_02002ACC: - mov r1, r4 - mov r2, r4 - add r0, r6, #0x84 - bl OS_SendMessage - add r5, r5, #1 -_02002AE0: - ldr r0, [r6, #0xa8] - cmp r5, r0 - blt _02002ACC - bl sub_02002670 - ldr r0, _02002B1C ; =_0229B0F0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldr r2, [r0] - ldr r1, [r0, #4] - cmp r2, r1 - ldrgt r1, [r0] - strgt r1, [r0, #4] - bl sub_020026B8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002B1C: .word _0229B0F0 - arm_func_end sub_02002A9C - - arm_func_start sub_02002B20 -sub_02002B20: ; 0x02002B20 - ldr ip, _02002B34 ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - add r0, r0, #0x84 - bx ip - .align 2, 0 -_02002B34: .word OS_SendMessage - arm_func_end sub_02002B20 - - arm_func_start sub_02002B38 -sub_02002B38: ; 0x02002B38 - ldr ip, _02002B4C ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - add r0, r0, #0x84 - bx ip - .align 2, 0 -_02002B4C: .word OS_SendMessage - arm_func_end sub_02002B38 - - arm_func_start sub_02002B50 -sub_02002B50: ; 0x02002B50 - stmdb sp!, {r3, lr} - ldr r1, [r0, #0x98] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - add r0, r0, #0x84 - bl OS_SendMessage - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end sub_02002B50 - - arm_func_start sub_02002B7C -sub_02002B7C: ; 0x02002B7C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02002BCC ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #6 - bl OS_SetThreadPriority - add r1, sp, #0 - add r0, r6, #0x84 - mov r2, #1 - bl OS_ReceiveMessage - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02002BCC: .word OSi_ThreadInfo - arm_func_end sub_02002B7C - - arm_func_start sub_02002BD0 -sub_02002BD0: ; 0x02002BD0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02002C28 ; =OSi_ThreadInfo - mov r5, r0 - ldr r6, [r1, #4] - mov r0, r6 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r6 - mov r1, #6 - bl OS_SetThreadPriority - add r1, sp, #0 - add r0, r5, #0x84 - mov r2, #0 - bl OS_ReceiveMessage - and r5, r0, #0xff - mov r0, r6 - mov r1, r4 - bl OS_SetThreadPriority - mov r0, r5 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02002C28: .word OSi_ThreadInfo - arm_func_end sub_02002BD0 - - arm_func_start sub_02002C2C -sub_02002C2C: ; 0x02002C2C - ldr ip, _02002C38 ; =OS_InitMutex - ldr r0, _02002C3C ; =_0229B0F8 - bx ip - .align 2, 0 -_02002C38: .word OS_InitMutex -_02002C3C: .word _0229B0F8 - arm_func_end sub_02002C2C - - arm_func_start sub_02002C40 -sub_02002C40: ; 0x02002C40 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002CA4 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #7 - bl OS_SetThreadPriority - ldr r0, _02002CA8 ; =_0229B0F8 - bl OS_LockMutex - mov r0, r6 - bl sub_020028B0 - bl sub_02002580 - str r0, [r6, #0x18] - mov r0, #0 - str r0, [r6, #0x20] - str r0, [r6, #0x1c] - ldr r0, _02002CA8 ; =_0229B0F8 - bl OS_UnlockMutex - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002CA4: .word OSi_ThreadInfo -_02002CA8: .word _0229B0F8 - arm_func_end sub_02002C40 - - arm_func_start sub_02002CAC -sub_02002CAC: ; 0x02002CAC - str r1, [r0, #0x20] - bx lr - arm_func_end sub_02002CAC - - arm_func_start sub_02002CB4 -sub_02002CB4: ; 0x02002CB4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002D10 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, [r6, #0x20] - mov r4, r0 - cmp r1, #0 - beq _02002CF4 - cmp r1, r4 - movhs r4, #0 - bhs _02002CF8 - mov r0, r5 - bl OS_SetThreadPriority - b _02002CF8 -_02002CF4: - mov r4, #0 -_02002CF8: - mov r0, r6 - bl sub_02002904 - str r4, [r6, #0x1c] - bl sub_02002580 - str r0, [r6, #0x18] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002D10: .word OSi_ThreadInfo - arm_func_end sub_02002CB4 - - arm_func_start sub_02002D14 -sub_02002D14: ; 0x02002D14 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _02002D7C ; =OSi_ThreadInfo - mov r7, r0 - ldr r5, [r2, #4] - mov r6, r1 - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, [r7, #0x20] - mov r4, r0 - cmp r1, #0 - beq _02002D58 - cmp r1, r4 - movhs r4, #0 - bhs _02002D5C - mov r0, r5 - bl OS_SetThreadPriority - b _02002D5C -_02002D58: - mov r4, #0 -_02002D5C: - mov r0, r6 - bl sub_02002B7C - mov r0, r7 - bl sub_02002904 - str r4, [r7, #0x1c] - bl sub_02002580 - str r0, [r7, #0x18] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02002D7C: .word OSi_ThreadInfo - arm_func_end sub_02002D14 - - arm_func_start sub_02002D80 -sub_02002D80: ; 0x02002D80 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - bl sub_02002580 - mov r4, r0 - ldr r0, [r4] - bl OS_GetThreadPriority - ldr r1, [r7, #0x20] - mov r5, r0 - cmp r1, #0 - beq _02002DC4 - cmp r1, r5 - movhs r5, #0 - bhs _02002DC8 - ldr r0, [r4] - bl OS_SetThreadPriority - b _02002DC8 -_02002DC4: - mov r5, #0 -_02002DC8: - mov r0, r6 - bl sub_02002BD0 - cmp r0, #0 - beq _02002DF4 - mov r0, r7 - bl sub_02002904 - str r5, [r7, #0x1c] - bl sub_02002580 - str r0, [r7, #0x18] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02002DF4: - cmp r5, #0 - beq _02002E08 - mov r0, r4 - mov r1, r5 - bl sub_020027F8 -_02002E08: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02002D80 - - arm_func_start sub_02002E10 -sub_02002E10: ; 0x02002E10 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002E94 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, [r6, #0x20] - mov r4, r0 - cmp r1, #0 - beq _02002E50 - cmp r1, r4 - movhs r4, #0 - bhs _02002E54 - mov r0, r5 - bl OS_SetThreadPriority - b _02002E54 -_02002E50: - mov r4, #0 -_02002E54: - mov r0, r6 - bl sub_02002910 - cmp r0, #0 - beq _02002E78 - str r4, [r6, #0x1c] - bl sub_02002580 - str r0, [r6, #0x18] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02002E78: - cmp r4, #0 - beq _02002E8C - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority -_02002E8C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002E94: .word OSi_ThreadInfo - arm_func_end sub_02002E10 - - arm_func_start sub_02002E98 -sub_02002E98: ; 0x02002E98 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r0, #0x1c] - ldr r5, [r0, #0x18] - mov r1, #0 - str r1, [r0, #0x1c] - str r1, [r0, #0x18] - bl sub_020028F8 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl sub_020027F8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02002E98 - - arm_func_start sub_02002ECC -sub_02002ECC: ; 0x02002ECC - stmdb sp!, {r4, r5, r6, lr} - ldr r4, [r0, #0x1c] - ldr r5, [r0, #0x18] - mov r2, #0 - str r2, [r0, #0x18] - mov r6, r1 - str r2, [r0, #0x1c] - bl sub_020028F8 - mov r0, r6 - bl sub_02002B20 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - mov r1, r4 - bl sub_020027F8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02002ECC - - arm_func_start sub_02002F0C -sub_02002F0C: ; 0x02002F0C - stmdb sp!, {r3, lr} - ldr r0, _02002F30 ; =_020AEF58 - bl sub_02002C40 - ldr r0, _02002F30 ; =_020AEF58 - mov r1, #7 - bl sub_02002CAC - ldr r0, _02002F30 ; =_020AEF58 - bl sub_02002E98 - ldmia sp!, {r3, pc} - .align 2, 0 -_02002F30: .word _020AEF58 - arm_func_end sub_02002F0C - - arm_func_start sub_02002F34 -sub_02002F34: ; 0x02002F34 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _02002F78 ; =_020AEF58 - mov r4, r1 - bl sub_02002CB4 - mov r0, r4, lsl #2 - mov r1, #1 - bl MemAlloc - str r0, [r5, #0x20] - str r4, [r5, #0x24] - ldr r1, [r5, #0x20] - mov r0, r5 - mov r2, r4 - bl OS_InitMessageQueue - ldr r0, _02002F78 ; =_020AEF58 - bl sub_02002E98 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02002F78: .word _020AEF58 - arm_func_end sub_02002F34 - - arm_func_start sub_02002F7C -sub_02002F7C: ; 0x02002F7C - stmdb sp!, {r3, lr} - cmp r2, #0 - movne r2, #1 - moveq r2, #0 - bl OS_SendMessage - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_02002F7C - - arm_func_start sub_02002F98 -sub_02002F98: ; 0x02002F98 - stmdb sp!, {r3, lr} - cmp r2, #0 - movne r2, #1 - moveq r2, #0 - bl OS_ReceiveMessage - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_02002F98 - - arm_func_start sub_02002FB4 -sub_02002FB4: ; 0x02002FB4 - bx lr - arm_func_end sub_02002FB4 - - arm_func_start sub_02002FB8 -sub_02002FB8: ; 0x02002FB8 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02003024 ; =_0229B110 - mov r6, #0 - strh r6, [r0] - cmp r6, #6 - ldr r5, _02003028 ; =_0229B114 - bge _0200301C - mov r4, r6 - b _02003014 -_02002FDC: - mov r0, r5 - bl sub_02002C40 - cmp r6, #4 - str r4, [r5, #0x24] - cmpne r6, #5 - bne _02003000 - bl OS_GetLockID - strh r0, [r5, #0x28] - b _02003004 -_02003000: - strh r4, [r5, #0x28] -_02003004: - mov r0, r5 - bl sub_02002E98 - add r6, r6, #1 - add r5, r5, #0x2c -_02003014: - cmp r6, #6 - blt _02002FDC -_0200301C: - bl sub_020059A8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02003024: .word _0229B110 -_02003028: .word _0229B114 - arm_func_end sub_02002FB8 - - arm_func_start sub_0200302C -sub_0200302C: ; 0x0200302C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs r8, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl sub_02002580 - mov r7, r0 - mov r6, #0 - ldr r5, _020030C4 ; =_0229B114 - mov r4, #1 - ldr sl, _020030C8 ; =_0229B110 - b _020030B8 -_02003054: - mov r0, r4, lsl r6 - mov sb, r0, lsl #0x10 - tst r8, sb, lsr #16 - beq _020030B0 - mov r0, r5 - bl sub_02002CB4 - bl InterruptMasterDisable - ldrh r0, [sl] - ldrh r0, [sl] - str r7, [r5, #0x24] - orr r0, r0, sb, lsr #16 - strh r0, [sl] - bl InterruptMasterEnable - cmp r6, #4 - beq _0200309C - cmp r6, #5 - beq _020030A8 - b _020030B0 -_0200309C: - ldrh r0, [r5, #0x28] - bl Card_LockRom - b _020030B0 -_020030A8: - ldrh r0, [r5, #0x28] - bl Card_LockBackup -_020030B0: - add r6, r6, #1 - add r5, r5, #0x2c -_020030B8: - cmp r6, #6 - blt _02003054 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020030C4: .word _0229B114 -_020030C8: .word _0229B110 - arm_func_end sub_0200302C - - arm_func_start InterruptMasterDisable -InterruptMasterDisable: ; 0x020030CC - ldr r2, _020030E0 ; =0x04000208 - mov r1, #0 - ldrh r0, [r2] - strh r1, [r2] - bx lr - .align 2, 0 -_020030E0: .word 0x04000208 - arm_func_end InterruptMasterDisable - - arm_func_start InterruptMasterEnable -InterruptMasterEnable: ; 0x020030E4 - ldr r2, _020030F8 ; =0x04000208 - mov r1, #1 - ldrh r0, [r2] - strh r1, [r2] - bx lr - .align 2, 0 -_020030F8: .word 0x04000208 - arm_func_end InterruptMasterEnable - - arm_func_start sub_020030FC -sub_020030FC: ; 0x020030FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl sub_02002580 - mov r1, #7 - mov r8, r0 - bl sub_020027F8 - mov sb, r0 - mov r7, #0 - ldr r6, _020031B8 ; =_0229B114 - mov fp, #1 - ldr r5, _020031BC ; =_0229B110 - b _020031A0 -_02003130: - mov r0, fp, lsl r7 - mov r4, r0, lsl #0x10 - tst sl, r4, lsr #16 - beq _02003198 - cmp r7, #4 - beq _02003154 - cmp r7, #5 - beq _02003160 - b _02003168 -_02003154: - ldrh r0, [r6, #0x28] - bl Card_UnlockRom - b _02003168 -_02003160: - ldrh r0, [r6, #0x28] - bl Card_UnlockBackup -_02003168: - bl InterruptMasterDisable - ldrh r0, [r5] - mvn r1, r4, lsr #16 - ldrh r0, [r5] - ldrh r2, [r5] - mov r0, #0 - str r0, [r6, #0x24] - and r0, r2, r1 - strh r0, [r5] - bl InterruptMasterEnable - mov r0, r6 - bl sub_02002E98 -_02003198: - add r7, r7, #1 - add r6, r6, #0x2c -_020031A0: - cmp r7, #6 - blt _02003130 - mov r0, r8 - mov r1, sb - bl sub_020027F8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020031B8: .word _0229B114 -_020031BC: .word _0229B110 - arm_func_end sub_020030FC - - arm_func_start sub_020031C0 -sub_020031C0: ; 0x020031C0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl sub_02002580 - mov r5, #0 - mov lr, r5 - cmp r5, #6 - ldr ip, _02003218 ; =_0229B114 - bge _02003210 - mov r3, #1 - b _02003208 -_020031E8: - mov r1, r3, lsl lr - mov r1, r1, lsl #0x10 - tst r4, r1, lsr #16 - ldrne r2, [ip, #0x24] - add lr, lr, #1 - cmpne r2, r0 - orrne r5, r5, r1, lsr #16 - add ip, ip, #0x2c -_02003208: - cmp lr, #6 - blt _020031E8 -_02003210: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02003218: .word _0229B114 - arm_func_end sub_020031C0 - - arm_func_start InitMemAllocTableVeneer -InitMemAllocTableVeneer: ; 0x0200321C - ldr ip, _02003224 ; =InitMemAllocTable - bx ip - .align 2, 0 -_02003224: .word InitMemAllocTable - arm_func_end InitMemAllocTableVeneer diff --git a/asm/main_02002910.s b/asm/main_02002910.s new file mode 100644 index 00000000..d4ac7e4b --- /dev/null +++ b/asm/main_02002910.s @@ -0,0 +1,782 @@ + .include "asm/macros.inc" + .include "main_02002910.inc" + + .text + + arm_func_start sub_02002910 +sub_02002910: ; 0x02002910 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_TryLockMutex + tst r0, #0xff + beq _02002944 + ldr r0, [r4, #0xc] + cmp r0, #1 + movle r0, #1 + ldmleia sp!, {r4, pc} + mov r0, r4 + bl OS_UnlockMutex + mov r0, #0 + ldmia sp!, {r4, pc} +_02002944: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_02002910 + + arm_func_start sub_0200294C +sub_0200294C: ; 0x0200294C + bx lr + arm_func_end sub_0200294C + + arm_func_start sub_02002950 +sub_02002950: ; 0x02002950 + stmdb sp!, {r3, lr} + mov r3, r0 + add r1, r3, #4 + add r0, r3, #8 + mov r2, #1 + str r1, [r3] + bl OS_InitMessageQueue + bl sub_02002670 + ldr r0, _0200299C ; =_0229B0E8 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + ldr r2, [r0] + ldr r1, [r0, #4] + cmp r2, r1 + ldrgt r1, [r0] + strgt r1, [r0, #4] + bl sub_020026B8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0200299C: .word _0229B0E8 + arm_func_end sub_02002950 + + arm_func_start sub_020029A0 +sub_020029A0: ; 0x020029A0 + ldr ip, _020029B4 ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + add r0, r0, #8 + bx ip + .align 2, 0 +_020029B4: .word OS_SendMessage + arm_func_end sub_020029A0 + + arm_func_start sub_020029B8 +sub_020029B8: ; 0x020029B8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _02002A40 ; =OSi_ThreadInfo + mov r4, r0 + ldr sb, [r1, #4] + mov r7, #0 + mov r0, sb + bl OS_GetThreadPriority + mov r8, r0 + mov r0, sb + mov r1, #7 + bl OS_SetThreadPriority + mov r5, r7 + b _020029F0 +_020029EC: + add r7, r7, #1 +_020029F0: + mov r1, r5 + mov r2, r5 + add r0, r4, #8 + bl OS_SendMessage + cmp r0, #0 + bne _020029EC + add r6, sp, #0 + mov r5, #0 +_02002A10: + mov r1, r6 + mov r2, r5 + add r0, r4, #8 + bl OS_ReceiveMessage + cmp r0, #0 + subne r7, r7, #1 + bne _02002A10 + mov r0, sb + mov r1, r8 + bl OS_SetThreadPriority + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02002A40: .word OSi_ThreadInfo + arm_func_end sub_020029B8 + + arm_func_start sub_02002A44 +sub_02002A44: ; 0x02002A44 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _02002A94 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #6 + bl OS_SetThreadPriority + add r1, sp, #0 + add r0, r6, #8 + mov r2, #1 + bl OS_ReceiveMessage + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02002A94: .word OSi_ThreadInfo + arm_func_end sub_02002A44 + + arm_func_start sub_02002A98 +sub_02002A98: ; 0x02002A98 + bx lr + arm_func_end sub_02002A98 + + arm_func_start sub_02002A9C +sub_02002A9C: ; 0x02002A9C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + str r1, [r6, #0xa4] + add r1, r6, #4 + str r2, [r6, #0xa8] + str r1, [r6] + ldr r2, [r6, #0xa4] + add r0, r6, #0x84 + bl OS_InitMessageQueue + mov r5, #0 + mov r4, r5 + b _02002AE0 +_02002ACC: + mov r1, r4 + mov r2, r4 + add r0, r6, #0x84 + bl OS_SendMessage + add r5, r5, #1 +_02002AE0: + ldr r0, [r6, #0xa8] + cmp r5, r0 + blt _02002ACC + bl sub_02002670 + ldr r0, _02002B1C ; =_0229B0F0 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + ldr r2, [r0] + ldr r1, [r0, #4] + cmp r2, r1 + ldrgt r1, [r0] + strgt r1, [r0, #4] + bl sub_020026B8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002B1C: .word _0229B0F0 + arm_func_end sub_02002A9C + + arm_func_start sub_02002B20 +sub_02002B20: ; 0x02002B20 + ldr ip, _02002B34 ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + add r0, r0, #0x84 + bx ip + .align 2, 0 +_02002B34: .word OS_SendMessage + arm_func_end sub_02002B20 + + arm_func_start sub_02002B38 +sub_02002B38: ; 0x02002B38 + ldr ip, _02002B4C ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + add r0, r0, #0x84 + bx ip + .align 2, 0 +_02002B4C: .word OS_SendMessage + arm_func_end sub_02002B38 + + arm_func_start sub_02002B50 +sub_02002B50: ; 0x02002B50 + stmdb sp!, {r3, lr} + ldr r1, [r0, #0x98] + cmp r1, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + add r0, r0, #0x84 + bl OS_SendMessage + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end sub_02002B50 + + arm_func_start sub_02002B7C +sub_02002B7C: ; 0x02002B7C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _02002BCC ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #6 + bl OS_SetThreadPriority + add r1, sp, #0 + add r0, r6, #0x84 + mov r2, #1 + bl OS_ReceiveMessage + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02002BCC: .word OSi_ThreadInfo + arm_func_end sub_02002B7C + + arm_func_start sub_02002BD0 +sub_02002BD0: ; 0x02002BD0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _02002C28 ; =OSi_ThreadInfo + mov r5, r0 + ldr r6, [r1, #4] + mov r0, r6 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r6 + mov r1, #6 + bl OS_SetThreadPriority + add r1, sp, #0 + add r0, r5, #0x84 + mov r2, #0 + bl OS_ReceiveMessage + and r5, r0, #0xff + mov r0, r6 + mov r1, r4 + bl OS_SetThreadPriority + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02002C28: .word OSi_ThreadInfo + arm_func_end sub_02002BD0 + + arm_func_start sub_02002C2C +sub_02002C2C: ; 0x02002C2C + ldr ip, _02002C38 ; =OS_InitMutex + ldr r0, _02002C3C ; =_0229B0F8 + bx ip + .align 2, 0 +_02002C38: .word OS_InitMutex +_02002C3C: .word _0229B0F8 + arm_func_end sub_02002C2C + + arm_func_start sub_02002C40 +sub_02002C40: ; 0x02002C40 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002CA4 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #7 + bl OS_SetThreadPriority + ldr r0, _02002CA8 ; =_0229B0F8 + bl OS_LockMutex + mov r0, r6 + bl sub_020028B0 + bl sub_02002580 + str r0, [r6, #0x18] + mov r0, #0 + str r0, [r6, #0x20] + str r0, [r6, #0x1c] + ldr r0, _02002CA8 ; =_0229B0F8 + bl OS_UnlockMutex + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002CA4: .word OSi_ThreadInfo +_02002CA8: .word _0229B0F8 + arm_func_end sub_02002C40 + + arm_func_start sub_02002CAC +sub_02002CAC: ; 0x02002CAC + str r1, [r0, #0x20] + bx lr + arm_func_end sub_02002CAC + + arm_func_start sub_02002CB4 +sub_02002CB4: ; 0x02002CB4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002D10 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, [r6, #0x20] + mov r4, r0 + cmp r1, #0 + beq _02002CF4 + cmp r1, r4 + movhs r4, #0 + bhs _02002CF8 + mov r0, r5 + bl OS_SetThreadPriority + b _02002CF8 +_02002CF4: + mov r4, #0 +_02002CF8: + mov r0, r6 + bl sub_02002904 + str r4, [r6, #0x1c] + bl sub_02002580 + str r0, [r6, #0x18] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002D10: .word OSi_ThreadInfo + arm_func_end sub_02002CB4 + + arm_func_start sub_02002D14 +sub_02002D14: ; 0x02002D14 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, _02002D7C ; =OSi_ThreadInfo + mov r7, r0 + ldr r5, [r2, #4] + mov r6, r1 + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, [r7, #0x20] + mov r4, r0 + cmp r1, #0 + beq _02002D58 + cmp r1, r4 + movhs r4, #0 + bhs _02002D5C + mov r0, r5 + bl OS_SetThreadPriority + b _02002D5C +_02002D58: + mov r4, #0 +_02002D5C: + mov r0, r6 + bl sub_02002B7C + mov r0, r7 + bl sub_02002904 + str r4, [r7, #0x1c] + bl sub_02002580 + str r0, [r7, #0x18] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02002D7C: .word OSi_ThreadInfo + arm_func_end sub_02002D14 + + arm_func_start sub_02002D80 +sub_02002D80: ; 0x02002D80 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + bl sub_02002580 + mov r4, r0 + ldr r0, [r4] + bl OS_GetThreadPriority + ldr r1, [r7, #0x20] + mov r5, r0 + cmp r1, #0 + beq _02002DC4 + cmp r1, r5 + movhs r5, #0 + bhs _02002DC8 + ldr r0, [r4] + bl OS_SetThreadPriority + b _02002DC8 +_02002DC4: + mov r5, #0 +_02002DC8: + mov r0, r6 + bl sub_02002BD0 + cmp r0, #0 + beq _02002DF4 + mov r0, r7 + bl sub_02002904 + str r5, [r7, #0x1c] + bl sub_02002580 + str r0, [r7, #0x18] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02002DF4: + cmp r5, #0 + beq _02002E08 + mov r0, r4 + mov r1, r5 + bl sub_020027F8 +_02002E08: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02002D80 + + arm_func_start sub_02002E10 +sub_02002E10: ; 0x02002E10 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002E94 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, [r6, #0x20] + mov r4, r0 + cmp r1, #0 + beq _02002E50 + cmp r1, r4 + movhs r4, #0 + bhs _02002E54 + mov r0, r5 + bl OS_SetThreadPriority + b _02002E54 +_02002E50: + mov r4, #0 +_02002E54: + mov r0, r6 + bl sub_02002910 + cmp r0, #0 + beq _02002E78 + str r4, [r6, #0x1c] + bl sub_02002580 + str r0, [r6, #0x18] + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02002E78: + cmp r4, #0 + beq _02002E8C + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority +_02002E8C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002E94: .word OSi_ThreadInfo + arm_func_end sub_02002E10 + + arm_func_start sub_02002E98 +sub_02002E98: ; 0x02002E98 + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [r0, #0x1c] + ldr r5, [r0, #0x18] + mov r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x18] + bl sub_020028F8 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl sub_020027F8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02002E98 + + arm_func_start sub_02002ECC +sub_02002ECC: ; 0x02002ECC + stmdb sp!, {r4, r5, r6, lr} + ldr r4, [r0, #0x1c] + ldr r5, [r0, #0x18] + mov r2, #0 + str r2, [r0, #0x18] + mov r6, r1 + str r2, [r0, #0x1c] + bl sub_020028F8 + mov r0, r6 + bl sub_02002B20 + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + mov r1, r4 + bl sub_020027F8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02002ECC + + arm_func_start sub_02002F0C +sub_02002F0C: ; 0x02002F0C + stmdb sp!, {r3, lr} + ldr r0, _02002F30 ; =_020AEF58 + bl sub_02002C40 + ldr r0, _02002F30 ; =_020AEF58 + mov r1, #7 + bl sub_02002CAC + ldr r0, _02002F30 ; =_020AEF58 + bl sub_02002E98 + ldmia sp!, {r3, pc} + .align 2, 0 +_02002F30: .word _020AEF58 + arm_func_end sub_02002F0C + + arm_func_start sub_02002F34 +sub_02002F34: ; 0x02002F34 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _02002F78 ; =_020AEF58 + mov r4, r1 + bl sub_02002CB4 + mov r0, r4, lsl #2 + mov r1, #1 + bl MemAlloc + str r0, [r5, #0x20] + str r4, [r5, #0x24] + ldr r1, [r5, #0x20] + mov r0, r5 + mov r2, r4 + bl OS_InitMessageQueue + ldr r0, _02002F78 ; =_020AEF58 + bl sub_02002E98 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02002F78: .word _020AEF58 + arm_func_end sub_02002F34 + + arm_func_start sub_02002F7C +sub_02002F7C: ; 0x02002F7C + stmdb sp!, {r3, lr} + cmp r2, #0 + movne r2, #1 + moveq r2, #0 + bl OS_SendMessage + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_02002F7C + + arm_func_start sub_02002F98 +sub_02002F98: ; 0x02002F98 + stmdb sp!, {r3, lr} + cmp r2, #0 + movne r2, #1 + moveq r2, #0 + bl OS_ReceiveMessage + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_02002F98 + + arm_func_start sub_02002FB4 +sub_02002FB4: ; 0x02002FB4 + bx lr + arm_func_end sub_02002FB4 + + arm_func_start sub_02002FB8 +sub_02002FB8: ; 0x02002FB8 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02003024 ; =_0229B110 + mov r6, #0 + strh r6, [r0] + cmp r6, #6 + ldr r5, _02003028 ; =_0229B114 + bge _0200301C + mov r4, r6 + b _02003014 +_02002FDC: + mov r0, r5 + bl sub_02002C40 + cmp r6, #4 + str r4, [r5, #0x24] + cmpne r6, #5 + bne _02003000 + bl OS_GetLockID + strh r0, [r5, #0x28] + b _02003004 +_02003000: + strh r4, [r5, #0x28] +_02003004: + mov r0, r5 + bl sub_02002E98 + add r6, r6, #1 + add r5, r5, #0x2c +_02003014: + cmp r6, #6 + blt _02002FDC +_0200301C: + bl sub_020059A8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02003024: .word _0229B110 +_02003028: .word _0229B114 + arm_func_end sub_02002FB8 + + arm_func_start sub_0200302C +sub_0200302C: ; 0x0200302C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + movs r8, r0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl sub_02002580 + mov r7, r0 + mov r6, #0 + ldr r5, _020030C4 ; =_0229B114 + mov r4, #1 + ldr sl, _020030C8 ; =_0229B110 + b _020030B8 +_02003054: + mov r0, r4, lsl r6 + mov sb, r0, lsl #0x10 + tst r8, sb, lsr #16 + beq _020030B0 + mov r0, r5 + bl sub_02002CB4 + bl InterruptMasterDisable + ldrh r0, [sl] + ldrh r0, [sl] + str r7, [r5, #0x24] + orr r0, r0, sb, lsr #16 + strh r0, [sl] + bl InterruptMasterEnable + cmp r6, #4 + beq _0200309C + cmp r6, #5 + beq _020030A8 + b _020030B0 +_0200309C: + ldrh r0, [r5, #0x28] + bl Card_LockRom + b _020030B0 +_020030A8: + ldrh r0, [r5, #0x28] + bl Card_LockBackup +_020030B0: + add r6, r6, #1 + add r5, r5, #0x2c +_020030B8: + cmp r6, #6 + blt _02003054 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_020030C4: .word _0229B114 +_020030C8: .word _0229B110 + arm_func_end sub_0200302C + + arm_func_start InterruptMasterDisable +InterruptMasterDisable: ; 0x020030CC + ldr r2, _020030E0 ; =0x04000208 + mov r1, #0 + ldrh r0, [r2] + strh r1, [r2] + bx lr + .align 2, 0 +_020030E0: .word 0x04000208 + arm_func_end InterruptMasterDisable + + arm_func_start InterruptMasterEnable +InterruptMasterEnable: ; 0x020030E4 + ldr r2, _020030F8 ; =0x04000208 + mov r1, #1 + ldrh r0, [r2] + strh r1, [r2] + bx lr + .align 2, 0 +_020030F8: .word 0x04000208 + arm_func_end InterruptMasterEnable + + arm_func_start sub_020030FC +sub_020030FC: ; 0x020030FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + movs sl, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl sub_02002580 + mov r1, #7 + mov r8, r0 + bl sub_020027F8 + mov sb, r0 + mov r7, #0 + ldr r6, _020031B8 ; =_0229B114 + mov fp, #1 + ldr r5, _020031BC ; =_0229B110 + b _020031A0 +_02003130: + mov r0, fp, lsl r7 + mov r4, r0, lsl #0x10 + tst sl, r4, lsr #16 + beq _02003198 + cmp r7, #4 + beq _02003154 + cmp r7, #5 + beq _02003160 + b _02003168 +_02003154: + ldrh r0, [r6, #0x28] + bl Card_UnlockRom + b _02003168 +_02003160: + ldrh r0, [r6, #0x28] + bl Card_UnlockBackup +_02003168: + bl InterruptMasterDisable + ldrh r0, [r5] + mvn r1, r4, lsr #16 + ldrh r0, [r5] + ldrh r2, [r5] + mov r0, #0 + str r0, [r6, #0x24] + and r0, r2, r1 + strh r0, [r5] + bl InterruptMasterEnable + mov r0, r6 + bl sub_02002E98 +_02003198: + add r7, r7, #1 + add r6, r6, #0x2c +_020031A0: + cmp r7, #6 + blt _02003130 + mov r0, r8 + mov r1, sb + bl sub_020027F8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020031B8: .word _0229B114 +_020031BC: .word _0229B110 + arm_func_end sub_020030FC + + arm_func_start sub_020031C0 +sub_020031C0: ; 0x020031C0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl sub_02002580 + mov r5, #0 + mov lr, r5 + cmp r5, #6 + ldr ip, _02003218 ; =_0229B114 + bge _02003210 + mov r3, #1 + b _02003208 +_020031E8: + mov r1, r3, lsl lr + mov r1, r1, lsl #0x10 + tst r4, r1, lsr #16 + ldrne r2, [ip, #0x24] + add lr, lr, #1 + cmpne r2, r0 + orrne r5, r5, r1, lsr #16 + add ip, ip, #0x2c +_02003208: + cmp lr, #6 + blt _020031E8 +_02003210: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02003218: .word _0229B114 + arm_func_end sub_020031C0 + + arm_func_start InitMemAllocTableVeneer +InitMemAllocTableVeneer: ; 0x0200321C + ldr ip, _02003224 ; =InitMemAllocTable + bx ip + .align 2, 0 +_02003224: .word InitMemAllocTable + arm_func_end InitMemAllocTableVeneer diff --git a/asm/overlay_18.s b/asm/overlay_18.s index 1a62bbdc..a9e69a4b 100644 --- a/asm/overlay_18.s +++ b/asm/overlay_18.s @@ -3078,1008 +3078,3 @@ _0238C940: .align 2, 0 _0238C94C: .word LINK_SHOP_PTR arm_func_end ov18_0238C8D0 - - arm_func_start ov18_0238C950 -ov18_0238C950: ; 0x0238C950 - ldr r0, _0238C970 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x2b - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C970: .word LINK_SHOP_PTR - arm_func_end ov18_0238C950 - - arm_func_start ov18_0238C974 -ov18_0238C974: ; 0x0238C974 - ldr ip, _0238C980 ; =ov18_0238BE28 - mov r0, #0x19 - bx ip - .align 2, 0 -_0238C980: .word ov18_0238BE28 - arm_func_end ov18_0238C974 - - arm_func_start ov18_0238C984 -ov18_0238C984: ; 0x0238C984 - ldr r0, _0238C9A4 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x2d - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C9A4: .word LINK_SHOP_PTR - arm_func_end ov18_0238C984 - - arm_func_start ov18_0238C9A8 -ov18_0238C9A8: ; 0x0238C9A8 - ldr ip, _0238C9B4 ; =ov18_0238BE28 - mov r0, #0x19 - bx ip - .align 2, 0 -_0238C9B4: .word ov18_0238BE28 - arm_func_end ov18_0238C9A8 - - arm_func_start ov18_0238C9B8 -ov18_0238C9B8: ; 0x0238C9B8 - stmdb sp!, {r3, lr} - bl sub_0204159C - cmp r0, #0 - ldreq r0, _0238CA14 ; =LINK_SHOP_PTR - moveq r1, #0x2f - ldreq r0, [r0] - streq r1, [r0, #0x80] - ldmeqia sp!, {r3, pc} - ldr r0, _0238CA14 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ABB0 - cmp r0, #0 - ldrle r0, _0238CA14 ; =LINK_SHOP_PTR - movle r1, #0x31 - ldrle r0, [r0] - strle r1, [r0, #0x80] - ldrgt r0, _0238CA14 ; =LINK_SHOP_PTR - movgt r1, #0x33 - ldrgt r0, [r0] - strgt r1, [r0, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238CA14: .word LINK_SHOP_PTR - arm_func_end ov18_0238C9B8 - - arm_func_start ov18_0238CA18 -ov18_0238CA18: ; 0x0238CA18 - ldr r0, _0238CA38 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x30 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CA38: .word LINK_SHOP_PTR - arm_func_end ov18_0238CA18 - - arm_func_start ov18_0238CA3C -ov18_0238CA3C: ; 0x0238CA3C - ldr ip, _0238CA48 ; =ov18_0238BE28 - mov r0, #0x11 - bx ip - .align 2, 0 -_0238CA48: .word ov18_0238BE28 - arm_func_end ov18_0238CA3C - - arm_func_start ov18_0238CA4C -ov18_0238CA4C: ; 0x0238CA4C - ldr r0, _0238CA6C ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x32 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CA6C: .word LINK_SHOP_PTR - arm_func_end ov18_0238CA4C - - arm_func_start ov18_0238CA70 -ov18_0238CA70: ; 0x0238CA70 - ldr ip, _0238CA7C ; =ov18_0238BE28 - mov r0, #0x11 - bx ip - .align 2, 0 -_0238CA7C: .word ov18_0238BE28 - arm_func_end ov18_0238CA70 - - arm_func_start ov18_0238CA80 -ov18_0238CA80: ; 0x0238CA80 - ldr r0, _0238CAAC ; =LINK_SHOP_PTR - mov r2, #3 - ldr r1, [r0] - mov r3, #0 - str r2, [r1, #0x88] - ldr r2, [r0] - mov r1, #0x34 - strh r3, [r2, #0x8c] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CAAC: .word LINK_SHOP_PTR - arm_func_end ov18_0238CA80 - - arm_func_start ov18_0238CAB0 -ov18_0238CAB0: ; 0x0238CAB0 - ldr r0, _0238CAD0 ; =LINK_SHOP_PTR - mov r3, #0x1000 - ldr r2, [r0] - mov r1, #0x35 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CAD0: .word LINK_SHOP_PTR - arm_func_end ov18_0238CAB0 - - arm_func_start ov18_0238CAD4 -ov18_0238CAD4: ; 0x0238CAD4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldr r0, _0238CBD8 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl GetAdvancedMenuCurrentOption - ldr r1, _0238CBD8 ; =LINK_SHOP_PTR - ldr r2, [r1] - strh r0, [r2, #0x8c] - ldrh r0, [sp] - tst r0, #8 - beq _0238CB8C - ldr r1, [r1] - ldrsb r0, [r1, #0xb] - ldrsh r4, [r1, #0x8c] - bl sub_0202C1E4 - ldr r0, _0238CBD8 ; =LINK_SHOP_PTR - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ADA8 - ldr r2, _0238CBD8 ; =LINK_SHOP_PTR - mov lr, #0 - ldr r1, [r2] - mov ip, #1 - str lr, [r1, #0x3a0] - ldr r1, [r2] - mov r3, #0x38 - add r1, r1, #0x300 - strh r0, [r1, #0xaa] - ldr r0, [r2] - strb ip, [r0, #0x3a6] - ldr r0, [r2] - add r0, r0, #0x300 - strh lr, [r0, #0xa8] - ldr r0, [r2] - strb ip, [r0, #0x3ac] - ldr r0, [r2] - strb lr, [r0, #0x3ad] - ldr r0, [r2] - str r3, [r0, #0x80] - b _0238CBD0 -_0238CB8C: - ldr r0, [r1] - ldrsb r0, [r0, #0xb] - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _0238CBD0 - ldr r0, _0238CBD8 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl GetAdvancedMenuResult - mvn r1, #0 - cmp r0, r1 - bne _0238CBC8 - mov r0, #0x11 - bl ov18_0238BE28 - b _0238CBD0 -_0238CBC8: - mov r0, #0x36 - bl ov18_0238BE28 -_0238CBD0: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0238CBD8: .word LINK_SHOP_PTR - arm_func_end ov18_0238CAD4 - - arm_func_start ov18_0238CBDC -ov18_0238CBDC: ; 0x0238CBDC - ldr r0, _0238CBFC ; =LINK_SHOP_PTR - mov r3, #0x3000 - ldr r2, [r0] - mov r1, #0x37 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CBFC: .word LINK_SHOP_PTR - arm_func_end ov18_0238CBDC - - arm_func_start ov18_0238CC00 -ov18_0238CC00: ; 0x0238CC00 - stmdb sp!, {r4, lr} - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl GetAdvancedMenuResult - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #0xc] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xc] - bl GetSimpleMenuResult__0202B870 - sub r0, r0, #4 - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0238CD5C -_0238CC50: ; jump table - b _0238CCF0 ; case 0 - b _0238CD5C ; case 1 - b _0238CD5C ; case 2 - b _0238CD5C ; case 3 - b _0238CD5C ; case 4 - b _0238CD5C ; case 5 - b _0238CD5C ; case 6 - b _0238CD5C ; case 7 - b _0238CD5C ; case 8 - b _0238CC78 ; case 9 -_0238CC78: - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r0, r4, lsl #0x10 - ldr r2, [r1] - mov r1, r0, asr #0x10 - add r0, r2, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ADA8 - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - str r4, [r0, #0x24] - bl sub_020415BC - cmp r0, #0 - mov r0, r4 - beq _0238CCCC - bl sub_0203FD14 - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - mov r1, #0x3c - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} -_0238CCCC: - bl sub_02041614 - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - mov r0, #0x3a - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CCF0: - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r0, r4, lsl #0x10 - ldr r2, [r1] - mov r1, r0, asr #0x10 - add r0, r2, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ADA8 - ldr r2, _0238CD84 ; =LINK_SHOP_PTR - mov r4, #0 - ldr r1, [r2] - mov r3, #1 - str r4, [r1, #0x3a0] - ldr r1, [r2] - add r1, r1, #0x300 - strh r0, [r1, #0xaa] - ldr r1, [r2] - mov r0, #0x38 - strb r3, [r1, #0x3a6] - ldr r1, [r2] - add r1, r1, #0x300 - strh r4, [r1, #0xa8] - ldr r1, [r2] - strb r3, [r1, #0x3ac] - ldr r1, [r2] - strb r4, [r1, #0x3ad] - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CD5C: - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - cmp r0, r1 - beq _0238CD78 - bl ResumeAdvancedMenu -_0238CD78: - mov r0, #0x34 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238CD84: .word LINK_SHOP_PTR - arm_func_end ov18_0238CC00 - - arm_func_start ov18_0238CD88 -ov18_0238CD88: ; 0x0238CD88 - ldr r0, _0238CDA8 ; =LINK_SHOP_PTR - mov r3, #0x400 - ldr r2, [r0] - mov r1, #0x39 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CDA8: .word LINK_SHOP_PTR - arm_func_end ov18_0238CD88 - - arm_func_start ov18_0238CDAC -ov18_0238CDAC: ; 0x0238CDAC - stmdb sp!, {r3, lr} - bl sub_02041A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x34 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - arm_func_end ov18_0238CDAC - - arm_func_start ov18_0238CDC8 -ov18_0238CDC8: ; 0x0238CDC8 - ldr r0, _0238CDE8 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x3b - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CDE8: .word LINK_SHOP_PTR - arm_func_end ov18_0238CDC8 - - arm_func_start ov18_0238CDEC -ov18_0238CDEC: ; 0x0238CDEC - ldr ip, _0238CDF8 ; =ov18_0238BE28 - mov r0, #0x11 - bx ip - .align 2, 0 -_0238CDF8: .word ov18_0238BE28 - arm_func_end ov18_0238CDEC - - arm_func_start ov18_0238CDFC -ov18_0238CDFC: ; 0x0238CDFC - ldr r0, _0238CE1C ; =LINK_SHOP_PTR - mov r3, #0x14000 - ldr r2, [r0] - mov r1, #0x3d - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CE1C: .word LINK_SHOP_PTR - arm_func_end ov18_0238CDFC - - arm_func_start ov18_0238CE20 -ov18_0238CE20: ; 0x0238CE20 - stmdb sp!, {r4, lr} - bl sub_020407EC - movs r4, r0 - beq _0238CE44 - ldr r0, _0238CE84 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 -_0238CE44: - cmp r4, #1 - beq _0238CE6C - cmp r4, #2 - beq _0238CE60 - cmp r4, #7 - beq _0238CE78 - ldmia sp!, {r4, pc} -_0238CE60: - mov r0, #0x3e - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CE6C: - mov r0, #0x11 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CE78: - mov r0, #0x40 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238CE84: .word LINK_SHOP_PTR - arm_func_end ov18_0238CE20 - - arm_func_start ov18_0238CE88 -ov18_0238CE88: ; 0x0238CE88 - stmdb sp!, {r3, lr} - ldr r0, _0238CED4 ; =LINK_SHOP_PTR - mov r1, #0xc000 - ldr r0, [r0] - str r1, [r0, #0x88] - bl sub_02041094 - bl sub_02041154 - ldr r1, _0238CED4 ; =LINK_SHOP_PTR - ldr r1, [r1] - str r0, [r1, #0x24] - mov r0, #4 - bl sub_02041154 - ldr r1, _0238CED4 ; =LINK_SHOP_PTR - mov r2, #0x3f - ldr r3, [r1] - str r0, [r3, #0x28] - ldr r0, [r1] - str r2, [r0, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238CED4: .word LINK_SHOP_PTR - arm_func_end ov18_0238CE88 - - arm_func_start ov18_0238CED8 -ov18_0238CED8: ; 0x0238CED8 - stmdb sp!, {r3, lr} - bl sub_02041094 - ldr r0, _0238CF94 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xe] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl sub_0203FD38 - ldr r0, _0238CF94 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xe] - bl GetSimpleMenuResult__0202B870 - sub r0, r0, #4 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0238CF6C -_0238CF1C: ; jump table - b _0238CF60 ; case 0 - b _0238CF6C ; case 1 - b _0238CF6C ; case 2 - b _0238CF6C ; case 3 - b _0238CF6C ; case 4 - b _0238CF6C ; case 5 - b _0238CF38 ; case 6 -_0238CF38: - bl sub_02041094 - bl sub_02041364 - cmp r0, #0 - beq _0238CF54 - mov r0, #0x42 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238CF54: - mov r0, #0x45 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238CF60: - mov r0, #0x40 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238CF6C: - ldr r0, _0238CF94 ; =LINK_SHOP_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - cmp r0, r1 - beq _0238CF88 - bl ResumeAdvancedMenu -_0238CF88: - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238CF94: .word LINK_SHOP_PTR - arm_func_end ov18_0238CED8 - - arm_func_start ov18_0238CF98 -ov18_0238CF98: ; 0x0238CF98 - stmdb sp!, {r4, lr} - bl sub_0203FD38 - mov r4, r0 - bl sub_02041094 - cmp r0, #4 - blt _0238CFF0 - bl sub_0203FD2C - ldr r2, _0238D030 ; =LINK_SHOP_PTR - mov r1, r0 - ldr r0, [r2] - mov r2, #8 - add r0, r0, #0xa6 - add r0, r0, #0x300 - bl memcpy - ldr r0, _0238D030 ; =LINK_SHOP_PTR - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x3a0] - ldr r0, [r0] - add r0, r0, #0x300 - strh r2, [r0, #0xa4] - b _0238D010 -_0238CFF0: - ldr r0, _0238D030 ; =LINK_SHOP_PTR - ldr r0, [r0] - str r4, [r0, #0x3a0] - bl sub_02041094 - ldr r1, _0238D030 ; =LINK_SHOP_PTR - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0xa4] -_0238D010: - ldr r0, _0238D030 ; =LINK_SHOP_PTR - mov r3, #0x400 - ldr r2, [r0] - mov r1, #0x41 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} - .align 2, 0 -_0238D030: .word LINK_SHOP_PTR - arm_func_end ov18_0238CF98 - - arm_func_start ov18_0238D034 -ov18_0238D034: ; 0x0238D034 - stmdb sp!, {r3, lr} - bl sub_02041A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - arm_func_end ov18_0238D034 - - arm_func_start ov18_0238D050 -ov18_0238D050: ; 0x0238D050 - ldr r0, _0238D070 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x43 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D070: .word LINK_SHOP_PTR - arm_func_end ov18_0238D050 - - arm_func_start ov18_0238D074 -ov18_0238D074: ; 0x0238D074 - ldr r0, _0238D094 ; =LINK_SHOP_PTR - mov r3, #0x43 - ldr r2, [r0] - mov r1, #0x44 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D094: .word LINK_SHOP_PTR - arm_func_end ov18_0238D074 - - arm_func_start ov18_0238D098 -ov18_0238D098: ; 0x0238D098 - stmdb sp!, {r4, lr} - ldr r0, _0238D128 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl sub_02041094 - ldr r1, _0238D128 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238D0E0 - cmp r0, #1 - beq _0238D11C - ldmia sp!, {r4, pc} -_0238D0E0: - mov r0, r4 - bl sub_02041484 - bl sub_0203FD2C - ldrh r0, [r0, #4] - bl sub_02041614 - ldr r0, _0238D128 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - ldr r0, _0238D128 ; =LINK_SHOP_PTR - mov r1, #0x48 - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} -_0238D11C: - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238D128: .word LINK_SHOP_PTR - arm_func_end ov18_0238D098 - - arm_func_start ov18_0238D12C -ov18_0238D12C: ; 0x0238D12C - ldr r0, _0238D14C ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x46 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D14C: .word LINK_SHOP_PTR - arm_func_end ov18_0238D12C - - arm_func_start ov18_0238D150 -ov18_0238D150: ; 0x0238D150 - ldr r0, _0238D170 ; =LINK_SHOP_PTR - mov r3, #0x43 - ldr r2, [r0] - mov r1, #0x47 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D170: .word LINK_SHOP_PTR - arm_func_end ov18_0238D150 - - arm_func_start ov18_0238D174 -ov18_0238D174: ; 0x0238D174 - stmdb sp!, {r4, lr} - ldr r0, _0238D204 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl sub_02041094 - ldr r1, _0238D204 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238D1BC - cmp r0, #1 - beq _0238D1F8 - ldmia sp!, {r4, pc} -_0238D1BC: - mov r0, r4 - bl sub_02041484 - bl sub_0203FD2C - ldrh r0, [r0, #4] - bl sub_02041614 - ldr r0, _0238D204 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - ldr r0, _0238D204 ; =LINK_SHOP_PTR - mov r1, #0x4a - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} -_0238D1F8: - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238D204: .word LINK_SHOP_PTR - arm_func_end ov18_0238D174 - ; 0x0238D208 - - .rodata - .global ov18_0238D208 -ov18_0238D208: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x49, 0x10, 0xA0, 0xE3 - .byte 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .word LINK_SHOP_PTR - .global ov18_0238D22C -ov18_0238D22C: - .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1 - .word ov18_0238BE28 - .global ov18_0238D23C -ov18_0238D23C: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5 - .byte 0x4B, 0x10, 0xA0, 0xE3, 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1 - .word LINK_SHOP_PTR - .global ov18_0238D260 -ov18_0238D260: - .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3 - .byte 0x1C, 0xFF, 0x2F, 0xE1 - .word ov18_0238BE28 - .global LINK_SHOP_WINDOW_PARAMS_1 -LINK_SHOP_WINDOW_PARAMS_1: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x04 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_2 -LINK_SHOP_WINDOW_PARAMS_2: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_3 -LINK_SHOP_WINDOW_PARAMS_3: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_4 -LINK_SHOP_WINDOW_PARAMS_4: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_5 -LINK_SHOP_WINDOW_PARAMS_5: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_6 -LINK_SHOP_WINDOW_PARAMS_6: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x12, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_7 -LINK_SHOP_WINDOW_PARAMS_7: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x0B, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_8 -LINK_SHOP_WINDOW_PARAMS_8: - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_9 -LINK_SHOP_WINDOW_PARAMS_9: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_10 -LINK_SHOP_WINDOW_PARAMS_10: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x1C, 0x04 - .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_11 -LINK_SHOP_WINDOW_PARAMS_11: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05 - .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_MENU_ITEMS_CONFIRM -LINK_SHOP_MENU_ITEMS_CONFIRM: -#ifdef JAPAN -#define OV18_DATA_OFFSET 0x3926 -#define OV18_DATA_OFFSET_2 -0x1C5 -#else -#define OV18_DATA_OFFSET 0 -#define OV18_DATA_OFFSET_2 0 -#define OV18_DATA_OFFSET_2 0 -#endif - .word 0x3E7 + OV18_DATA_OFFSET - .byte 0x00, 0x00, 0x00, 0x00 - .word 0x3E8 + OV18_DATA_OFFSET - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_1 -LINK_SHOP_SUBMENU_ITEMS_1: - .word 0x3F3 + OV18_DATA_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_2 -LINK_SHOP_SUBMENU_ITEMS_2: - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_MAIN_MENU_ITEMS -LINK_SHOP_MAIN_MENU_ITEMS: - .word 0x3EA + OV18_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_3 -LINK_SHOP_SUBMENU_ITEMS_3: - .word 0x3ED + OV18_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3F3 + OV18_DATA_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .word 0x3E9 + OV18_DATA_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_4 -LINK_SHOP_SUBMENU_ITEMS_4: - .word 0x3F4 + OV18_DATA_OFFSET - .byte 0x0E, 0x00, 0x00, 0x00 - .word 0x3F5 + OV18_DATA_OFFSET - .byte 0x0F, 0x00, 0x00, 0x00 - .word 0x3F6 + OV18_DATA_OFFSET - .byte 0x10, 0x00, 0x00, 0x00 - .word 0x3F3 + OV18_DATA_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_5 -LINK_SHOP_SUBMENU_ITEMS_5: - .word 0x3ED + OV18_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3EF + OV18_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0xA3F + OV18_DATA_OFFSET_2 - .byte 0x11, 0x00, 0x00, 0x00 - .word 0xA40 + OV18_DATA_OFFSET_2 - .byte 0x12, 0x00, 0x00, 0x00 - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_6 -LINK_SHOP_SUBMENU_ITEMS_6: - .word 0x3F1 + OV18_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3EF + OV18_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0xA3F + OV18_DATA_OFFSET_2 - .byte 0x11, 0x00, 0x00, 0x00 - .word 0xA40 + OV18_DATA_OFFSET_2 - .byte 0x12, 0x00, 0x00, 0x00 - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_7 -LINK_SHOP_SUBMENU_ITEMS_7: - .word 0x3F2 + OV18_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3EF + OV18_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0xA3F + OV18_DATA_OFFSET_2 - .byte 0x11, 0x00, 0x00, 0x00 - .word 0xA40 + OV18_DATA_OFFSET_2 - .byte 0x12, 0x00, 0x00, 0x00 - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .global OVERLAY18_FUNCTION_POINTER_TABLE -OVERLAY18_FUNCTION_POINTER_TABLE: - .word ov18_0238BE48 - .word ov18_0238BE6C - .word ov18_0238BE90 - .word ov18_0238BF0C - .word ov18_0238BF30 - .word ov18_0238BF60 - .word ov18_0238BF84 - .word ov18_0238BFA8 - .word ov18_0238C03C - .word ov18_0238C060 - .word ov18_0238C078 - .word ov18_0238C060 - .word ov18_0238C09C - .word ov18_0238C0C0 - .word ov18_0238C0D8 - .word ov18_0238C0FC - .word ov18_0238C114 - .word ov18_0238C13C - .word ov18_0238C164 - .word ov18_0238C21C - .word ov18_0238C240 - .word ov18_0238C258 - .word ov18_0238C27C - .word ov18_0238C340 - .word ov18_0238C364 - .word ov18_0238C398 - .word ov18_0238C3C0 - .word ov18_0238C428 - .word ov18_0238C47C - .word ov18_0238C4A0 - .word ov18_0238C4E8 - .word ov18_0238C504 - .word ov18_0238C528 - .word ov18_0238C720 - .word ov18_0238C78C - .word ov18_0238C7B0 - .word ov18_0238C7C0 - .word ov18_0238C7E4 - .word ov18_0238C808 - .word ov18_0238C888 - .word ov18_0238C8AC - .word ov18_0238C8D0 - .word ov18_0238C950 - .word ov18_0238C974 - .word ov18_0238C984 - .word ov18_0238C9A8 - .word ov18_0238C9B8 - .word ov18_0238CA18 - .word ov18_0238CA3C - .word ov18_0238CA4C - .word ov18_0238CA70 - .word ov18_0238CA80 - .word ov18_0238CAB0 - .word ov18_0238CAD4 - .word ov18_0238CBDC - .word ov18_0238CC00 - .word ov18_0238CD88 - .word ov18_0238CDAC - .word ov18_0238CDC8 - .word ov18_0238CDEC - .word ov18_0238CDFC - .word ov18_0238CE20 - .word ov18_0238CE88 - .word ov18_0238CED8 - .word ov18_0238CF98 - .word ov18_0238D034 - .word ov18_0238D050 - .word ov18_0238D074 - .word ov18_0238D098 - .word ov18_0238D12C - .word ov18_0238D150 - .word ov18_0238D174 - .word ov18_0238D208 - .word ov18_0238D22C - .word ov18_0238D23C - .word ov18_0238D260 - .global ov18_0238D5F8 -ov18_0238D5F8: - .byte 0x5B, 0x43, 0x53, 0x3A, 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00 - .global ov18_0238D608 -ov18_0238D608: - .byte 0x5B, 0x43, 0x53, 0x3A, 0x56, 0x5D, 0x5B, 0x67, 0x6F, 0x6C, 0x64, 0x3A, 0x30, 0x5D, 0x5B, 0x43 - .byte 0x52, 0x5D, 0x00, 0x00 - - .data - .global LINK_SHOP_PTR -LINK_SHOP_PTR: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_18_0238CAB0.s b/asm/overlay_18_0238CAB0.s new file mode 100644 index 00000000..4ea6b700 --- /dev/null +++ b/asm/overlay_18_0238CAB0.s @@ -0,0 +1,871 @@ + .include "asm/macros.inc" + .include "overlay_18_0238CAB0.inc" + + .text + + arm_func_start ov18_0238CAB0 +ov18_0238CAB0: ; 0x0238CAB0 + ldr r0, _0238CAD0 ; =LINK_SHOP_PTR + mov r3, #0x1000 + ldr r2, [r0] + mov r1, #0x35 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CAD0: .word LINK_SHOP_PTR + arm_func_end ov18_0238CAB0 + + arm_func_start ov18_0238CAD4 +ov18_0238CAD4: ; 0x0238CAD4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldr r0, _0238CBD8 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl GetAdvancedMenuCurrentOption + ldr r1, _0238CBD8 ; =LINK_SHOP_PTR + ldr r2, [r1] + strh r0, [r2, #0x8c] + ldrh r0, [sp] + tst r0, #8 + beq _0238CB8C + ldr r1, [r1] + ldrsb r0, [r1, #0xb] + ldrsh r4, [r1, #0x8c] + bl sub_0202C1E4 + ldr r0, _0238CBD8 ; =LINK_SHOP_PTR + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl ov18_0238ADA8 + ldr r2, _0238CBD8 ; =LINK_SHOP_PTR + mov lr, #0 + ldr r1, [r2] + mov ip, #1 + str lr, [r1, #0x3a0] + ldr r1, [r2] + mov r3, #0x38 + add r1, r1, #0x300 + strh r0, [r1, #0xaa] + ldr r0, [r2] + strb ip, [r0, #0x3a6] + ldr r0, [r2] + add r0, r0, #0x300 + strh lr, [r0, #0xa8] + ldr r0, [r2] + strb ip, [r0, #0x3ac] + ldr r0, [r2] + strb lr, [r0, #0x3ad] + ldr r0, [r2] + str r3, [r0, #0x80] + b _0238CBD0 +_0238CB8C: + ldr r0, [r1] + ldrsb r0, [r0, #0xb] + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _0238CBD0 + ldr r0, _0238CBD8 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl GetAdvancedMenuResult + mvn r1, #0 + cmp r0, r1 + bne _0238CBC8 + mov r0, #0x11 + bl ov18_0238BE28 + b _0238CBD0 +_0238CBC8: + mov r0, #0x36 + bl ov18_0238BE28 +_0238CBD0: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0238CBD8: .word LINK_SHOP_PTR + arm_func_end ov18_0238CAD4 + + arm_func_start ov18_0238CBDC +ov18_0238CBDC: ; 0x0238CBDC + ldr r0, _0238CBFC ; =LINK_SHOP_PTR + mov r3, #0x3000 + ldr r2, [r0] + mov r1, #0x37 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CBFC: .word LINK_SHOP_PTR + arm_func_end ov18_0238CBDC + + arm_func_start ov18_0238CC00 +ov18_0238CC00: ; 0x0238CC00 + stmdb sp!, {r4, lr} + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl GetAdvancedMenuResult + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #0xc] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xc] + bl GetSimpleMenuResult__0202B870 + sub r0, r0, #4 + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0238CD5C +_0238CC50: ; jump table + b _0238CCF0 ; case 0 + b _0238CD5C ; case 1 + b _0238CD5C ; case 2 + b _0238CD5C ; case 3 + b _0238CD5C ; case 4 + b _0238CD5C ; case 5 + b _0238CD5C ; case 6 + b _0238CD5C ; case 7 + b _0238CD5C ; case 8 + b _0238CC78 ; case 9 +_0238CC78: + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r0, r4, lsl #0x10 + ldr r2, [r1] + mov r1, r0, asr #0x10 + add r0, r2, #0x300 + ldrsh r0, [r0, #0x8c] + bl ov18_0238ADA8 + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + str r4, [r0, #0x24] + bl sub_020415BC + cmp r0, #0 + mov r0, r4 + beq _0238CCCC + bl sub_0203FD14 + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + mov r1, #0x3c + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} +_0238CCCC: + bl sub_02041614 + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + mov r0, #0x3a + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CCF0: + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r0, r4, lsl #0x10 + ldr r2, [r1] + mov r1, r0, asr #0x10 + add r0, r2, #0x300 + ldrsh r0, [r0, #0x8c] + bl ov18_0238ADA8 + ldr r2, _0238CD84 ; =LINK_SHOP_PTR + mov r4, #0 + ldr r1, [r2] + mov r3, #1 + str r4, [r1, #0x3a0] + ldr r1, [r2] + add r1, r1, #0x300 + strh r0, [r1, #0xaa] + ldr r1, [r2] + mov r0, #0x38 + strb r3, [r1, #0x3a6] + ldr r1, [r2] + add r1, r1, #0x300 + strh r4, [r1, #0xa8] + ldr r1, [r2] + strb r3, [r1, #0x3ac] + ldr r1, [r2] + strb r4, [r1, #0x3ad] + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CD5C: + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + cmp r0, r1 + beq _0238CD78 + bl ResumeAdvancedMenu +_0238CD78: + mov r0, #0x34 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238CD84: .word LINK_SHOP_PTR + arm_func_end ov18_0238CC00 + + arm_func_start ov18_0238CD88 +ov18_0238CD88: ; 0x0238CD88 + ldr r0, _0238CDA8 ; =LINK_SHOP_PTR + mov r3, #0x400 + ldr r2, [r0] + mov r1, #0x39 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CDA8: .word LINK_SHOP_PTR + arm_func_end ov18_0238CD88 + + arm_func_start ov18_0238CDAC +ov18_0238CDAC: ; 0x0238CDAC + stmdb sp!, {r3, lr} + bl sub_02041A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x34 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + arm_func_end ov18_0238CDAC + + arm_func_start ov18_0238CDC8 +ov18_0238CDC8: ; 0x0238CDC8 + ldr r0, _0238CDE8 ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x3b + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CDE8: .word LINK_SHOP_PTR + arm_func_end ov18_0238CDC8 + + arm_func_start ov18_0238CDEC +ov18_0238CDEC: ; 0x0238CDEC + ldr ip, _0238CDF8 ; =ov18_0238BE28 + mov r0, #0x11 + bx ip + .align 2, 0 +_0238CDF8: .word ov18_0238BE28 + arm_func_end ov18_0238CDEC + + arm_func_start ov18_0238CDFC +ov18_0238CDFC: ; 0x0238CDFC + ldr r0, _0238CE1C ; =LINK_SHOP_PTR + mov r3, #0x14000 + ldr r2, [r0] + mov r1, #0x3d + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CE1C: .word LINK_SHOP_PTR + arm_func_end ov18_0238CDFC + + arm_func_start ov18_0238CE20 +ov18_0238CE20: ; 0x0238CE20 + stmdb sp!, {r4, lr} + bl sub_020407EC + movs r4, r0 + beq _0238CE44 + ldr r0, _0238CE84 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 +_0238CE44: + cmp r4, #1 + beq _0238CE6C + cmp r4, #2 + beq _0238CE60 + cmp r4, #7 + beq _0238CE78 + ldmia sp!, {r4, pc} +_0238CE60: + mov r0, #0x3e + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CE6C: + mov r0, #0x11 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CE78: + mov r0, #0x40 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238CE84: .word LINK_SHOP_PTR + arm_func_end ov18_0238CE20 + + arm_func_start ov18_0238CE88 +ov18_0238CE88: ; 0x0238CE88 + stmdb sp!, {r3, lr} + ldr r0, _0238CED4 ; =LINK_SHOP_PTR + mov r1, #0xc000 + ldr r0, [r0] + str r1, [r0, #0x88] + bl sub_02041094 + bl sub_02041154 + ldr r1, _0238CED4 ; =LINK_SHOP_PTR + ldr r1, [r1] + str r0, [r1, #0x24] + mov r0, #4 + bl sub_02041154 + ldr r1, _0238CED4 ; =LINK_SHOP_PTR + mov r2, #0x3f + ldr r3, [r1] + str r0, [r3, #0x28] + ldr r0, [r1] + str r2, [r0, #0x80] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238CED4: .word LINK_SHOP_PTR + arm_func_end ov18_0238CE88 + + arm_func_start ov18_0238CED8 +ov18_0238CED8: ; 0x0238CED8 + stmdb sp!, {r3, lr} + bl sub_02041094 + ldr r0, _0238CF94 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xe] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl sub_0203FD38 + ldr r0, _0238CF94 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xe] + bl GetSimpleMenuResult__0202B870 + sub r0, r0, #4 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0238CF6C +_0238CF1C: ; jump table + b _0238CF60 ; case 0 + b _0238CF6C ; case 1 + b _0238CF6C ; case 2 + b _0238CF6C ; case 3 + b _0238CF6C ; case 4 + b _0238CF6C ; case 5 + b _0238CF38 ; case 6 +_0238CF38: + bl sub_02041094 + bl sub_02041364 + cmp r0, #0 + beq _0238CF54 + mov r0, #0x42 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238CF54: + mov r0, #0x45 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238CF60: + mov r0, #0x40 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238CF6C: + ldr r0, _0238CF94 ; =LINK_SHOP_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + cmp r0, r1 + beq _0238CF88 + bl ResumeAdvancedMenu +_0238CF88: + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238CF94: .word LINK_SHOP_PTR + arm_func_end ov18_0238CED8 + + arm_func_start ov18_0238CF98 +ov18_0238CF98: ; 0x0238CF98 + stmdb sp!, {r4, lr} + bl sub_0203FD38 + mov r4, r0 + bl sub_02041094 + cmp r0, #4 + blt _0238CFF0 + bl sub_0203FD2C + ldr r2, _0238D030 ; =LINK_SHOP_PTR + mov r1, r0 + ldr r0, [r2] + mov r2, #8 + add r0, r0, #0xa6 + add r0, r0, #0x300 + bl memcpy + ldr r0, _0238D030 ; =LINK_SHOP_PTR + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x3a0] + ldr r0, [r0] + add r0, r0, #0x300 + strh r2, [r0, #0xa4] + b _0238D010 +_0238CFF0: + ldr r0, _0238D030 ; =LINK_SHOP_PTR + ldr r0, [r0] + str r4, [r0, #0x3a0] + bl sub_02041094 + ldr r1, _0238D030 ; =LINK_SHOP_PTR + ldr r1, [r1] + add r1, r1, #0x300 + strh r0, [r1, #0xa4] +_0238D010: + ldr r0, _0238D030 ; =LINK_SHOP_PTR + mov r3, #0x400 + ldr r2, [r0] + mov r1, #0x41 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} + .align 2, 0 +_0238D030: .word LINK_SHOP_PTR + arm_func_end ov18_0238CF98 + + arm_func_start ov18_0238D034 +ov18_0238D034: ; 0x0238D034 + stmdb sp!, {r3, lr} + bl sub_02041A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + arm_func_end ov18_0238D034 + + arm_func_start ov18_0238D050 +ov18_0238D050: ; 0x0238D050 + ldr r0, _0238D070 ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x43 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D070: .word LINK_SHOP_PTR + arm_func_end ov18_0238D050 + + arm_func_start ov18_0238D074 +ov18_0238D074: ; 0x0238D074 + ldr r0, _0238D094 ; =LINK_SHOP_PTR + mov r3, #0x43 + ldr r2, [r0] + mov r1, #0x44 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D094: .word LINK_SHOP_PTR + arm_func_end ov18_0238D074 + + arm_func_start ov18_0238D098 +ov18_0238D098: ; 0x0238D098 + stmdb sp!, {r4, lr} + ldr r0, _0238D128 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl sub_02041094 + ldr r1, _0238D128 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238D0E0 + cmp r0, #1 + beq _0238D11C + ldmia sp!, {r4, pc} +_0238D0E0: + mov r0, r4 + bl sub_02041484 + bl sub_0203FD2C + ldrh r0, [r0, #4] + bl sub_02041614 + ldr r0, _0238D128 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + ldr r0, _0238D128 ; =LINK_SHOP_PTR + mov r1, #0x48 + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} +_0238D11C: + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238D128: .word LINK_SHOP_PTR + arm_func_end ov18_0238D098 + + arm_func_start ov18_0238D12C +ov18_0238D12C: ; 0x0238D12C + ldr r0, _0238D14C ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x46 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D14C: .word LINK_SHOP_PTR + arm_func_end ov18_0238D12C + + arm_func_start ov18_0238D150 +ov18_0238D150: ; 0x0238D150 + ldr r0, _0238D170 ; =LINK_SHOP_PTR + mov r3, #0x43 + ldr r2, [r0] + mov r1, #0x47 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D170: .word LINK_SHOP_PTR + arm_func_end ov18_0238D150 + + arm_func_start ov18_0238D174 +ov18_0238D174: ; 0x0238D174 + stmdb sp!, {r4, lr} + ldr r0, _0238D204 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl sub_02041094 + ldr r1, _0238D204 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238D1BC + cmp r0, #1 + beq _0238D1F8 + ldmia sp!, {r4, pc} +_0238D1BC: + mov r0, r4 + bl sub_02041484 + bl sub_0203FD2C + ldrh r0, [r0, #4] + bl sub_02041614 + ldr r0, _0238D204 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + ldr r0, _0238D204 ; =LINK_SHOP_PTR + mov r1, #0x4a + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} +_0238D1F8: + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238D204: .word LINK_SHOP_PTR + arm_func_end ov18_0238D174 + ; 0x0238D208 + + .rodata + .global ov18_0238D208 +ov18_0238D208: + .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x49, 0x10, 0xA0, 0xE3 + .byte 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 + .word LINK_SHOP_PTR + .global ov18_0238D22C +ov18_0238D22C: + .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1 + .word ov18_0238BE28 + .global ov18_0238D23C +ov18_0238D23C: + .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5 + .byte 0x4B, 0x10, 0xA0, 0xE3, 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5 + .byte 0x1E, 0xFF, 0x2F, 0xE1 + .word LINK_SHOP_PTR + .global ov18_0238D260 +ov18_0238D260: + .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3 + .byte 0x1C, 0xFF, 0x2F, 0xE1 + .word ov18_0238BE28 + .global LINK_SHOP_WINDOW_PARAMS_1 +LINK_SHOP_WINDOW_PARAMS_1: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x04 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_2 +LINK_SHOP_WINDOW_PARAMS_2: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_3 +LINK_SHOP_WINDOW_PARAMS_3: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_4 +LINK_SHOP_WINDOW_PARAMS_4: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_5 +LINK_SHOP_WINDOW_PARAMS_5: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_6 +LINK_SHOP_WINDOW_PARAMS_6: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x12, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_7 +LINK_SHOP_WINDOW_PARAMS_7: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x0B, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_8 +LINK_SHOP_WINDOW_PARAMS_8: + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_9 +LINK_SHOP_WINDOW_PARAMS_9: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_10 +LINK_SHOP_WINDOW_PARAMS_10: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x1C, 0x04 + .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_11 +LINK_SHOP_WINDOW_PARAMS_11: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05 + .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_MENU_ITEMS_CONFIRM +LINK_SHOP_MENU_ITEMS_CONFIRM: +#ifdef JAPAN +#define OV18_DATA_OFFSET 0x3926 +#define OV18_DATA_OFFSET_2 -0x1C5 +#else +#define OV18_DATA_OFFSET 0 +#define OV18_DATA_OFFSET_2 0 +#define OV18_DATA_OFFSET_2 0 +#endif + .word 0x3E7 + OV18_DATA_OFFSET + .byte 0x00, 0x00, 0x00, 0x00 + .word 0x3E8 + OV18_DATA_OFFSET + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_1 +LINK_SHOP_SUBMENU_ITEMS_1: + .word 0x3F3 + OV18_DATA_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_2 +LINK_SHOP_SUBMENU_ITEMS_2: + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_MAIN_MENU_ITEMS +LINK_SHOP_MAIN_MENU_ITEMS: + .word 0x3EA + OV18_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_3 +LINK_SHOP_SUBMENU_ITEMS_3: + .word 0x3ED + OV18_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3F3 + OV18_DATA_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .word 0x3E9 + OV18_DATA_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_4 +LINK_SHOP_SUBMENU_ITEMS_4: + .word 0x3F4 + OV18_DATA_OFFSET + .byte 0x0E, 0x00, 0x00, 0x00 + .word 0x3F5 + OV18_DATA_OFFSET + .byte 0x0F, 0x00, 0x00, 0x00 + .word 0x3F6 + OV18_DATA_OFFSET + .byte 0x10, 0x00, 0x00, 0x00 + .word 0x3F3 + OV18_DATA_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_5 +LINK_SHOP_SUBMENU_ITEMS_5: + .word 0x3ED + OV18_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3EF + OV18_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0xA3F + OV18_DATA_OFFSET_2 + .byte 0x11, 0x00, 0x00, 0x00 + .word 0xA40 + OV18_DATA_OFFSET_2 + .byte 0x12, 0x00, 0x00, 0x00 + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_6 +LINK_SHOP_SUBMENU_ITEMS_6: + .word 0x3F1 + OV18_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3EF + OV18_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0xA3F + OV18_DATA_OFFSET_2 + .byte 0x11, 0x00, 0x00, 0x00 + .word 0xA40 + OV18_DATA_OFFSET_2 + .byte 0x12, 0x00, 0x00, 0x00 + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_7 +LINK_SHOP_SUBMENU_ITEMS_7: + .word 0x3F2 + OV18_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3EF + OV18_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0xA3F + OV18_DATA_OFFSET_2 + .byte 0x11, 0x00, 0x00, 0x00 + .word 0xA40 + OV18_DATA_OFFSET_2 + .byte 0x12, 0x00, 0x00, 0x00 + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .global OVERLAY18_FUNCTION_POINTER_TABLE +OVERLAY18_FUNCTION_POINTER_TABLE: + .word ov18_0238BE48 + .word ov18_0238BE6C + .word ov18_0238BE90 + .word ov18_0238BF0C + .word ov18_0238BF30 + .word ov18_0238BF60 + .word ov18_0238BF84 + .word ov18_0238BFA8 + .word ov18_0238C03C + .word ov18_0238C060 + .word ov18_0238C078 + .word ov18_0238C060 + .word ov18_0238C09C + .word ov18_0238C0C0 + .word ov18_0238C0D8 + .word ov18_0238C0FC + .word ov18_0238C114 + .word ov18_0238C13C + .word ov18_0238C164 + .word ov18_0238C21C + .word ov18_0238C240 + .word ov18_0238C258 + .word ov18_0238C27C + .word ov18_0238C340 + .word ov18_0238C364 + .word ov18_0238C398 + .word ov18_0238C3C0 + .word ov18_0238C428 + .word ov18_0238C47C + .word ov18_0238C4A0 + .word ov18_0238C4E8 + .word ov18_0238C504 + .word ov18_0238C528 + .word ov18_0238C720 + .word ov18_0238C78C + .word ov18_0238C7B0 + .word ov18_0238C7C0 + .word ov18_0238C7E4 + .word ov18_0238C808 + .word ov18_0238C888 + .word ov18_0238C8AC + .word ov18_0238C8D0 + .word ov18_0238C950 + .word ov18_0238C974 + .word ov18_0238C984 + .word ov18_0238C9A8 + .word ov18_0238C9B8 + .word ov18_0238CA18 + .word ov18_0238CA3C + .word ov18_0238CA4C + .word ov18_0238CA70 + .word ov18_0238CA80 + .word ov18_0238CAB0 + .word ov18_0238CAD4 + .word ov18_0238CBDC + .word ov18_0238CC00 + .word ov18_0238CD88 + .word ov18_0238CDAC + .word ov18_0238CDC8 + .word ov18_0238CDEC + .word ov18_0238CDFC + .word ov18_0238CE20 + .word ov18_0238CE88 + .word ov18_0238CED8 + .word ov18_0238CF98 + .word ov18_0238D034 + .word ov18_0238D050 + .word ov18_0238D074 + .word ov18_0238D098 + .word ov18_0238D12C + .word ov18_0238D150 + .word ov18_0238D174 + .word ov18_0238D208 + .word ov18_0238D22C + .word ov18_0238D23C + .word ov18_0238D260 + .global ov18_0238D5F8 +ov18_0238D5F8: + .byte 0x5B, 0x43, 0x53, 0x3A, 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00 + .global ov18_0238D608 +ov18_0238D608: + .byte 0x5B, 0x43, 0x53, 0x3A, 0x56, 0x5D, 0x5B, 0x67, 0x6F, 0x6C, 0x64, 0x3A, 0x30, 0x5D, 0x5B, 0x43 + .byte 0x52, 0x5D, 0x00, 0x00 + + .data + .global LINK_SHOP_PTR +LINK_SHOP_PTR: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_29_022DC694.s b/asm/overlay_29_022DC7E4.s similarity index 95% rename from asm/overlay_29_022DC694.s rename to asm/overlay_29_022DC7E4.s index 6073fe18..a3b70891 100644 --- a/asm/overlay_29_022DC694.s +++ b/asm/overlay_29_022DC7E4.s @@ -1,139 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022DC694.inc" + .include "overlay_29_022DC7E4.inc" .text - arm_func_start ov29_022DC694 -ov29_022DC694: ; 0x022DC694 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl ov10_022C22A0 - add r0, sp, #0 - mov r1, r4 - bl ov10_022C0814 - mov r0, r5 - mov r1, #0 - mov r2, #1 - bl DrawTeamStats - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022DC694 - - arm_func_start ov29_022DC6D0 -ov29_022DC6D0: ; 0x022DC6D0 - ldr ip, _022DC6D8 ; =UpdateTeamStats - bx ip - .align 2, 0 -_022DC6D8: .word UpdateTeamStats - arm_func_end ov29_022DC6D0 - - arm_func_start ov29_022DC6DC -ov29_022DC6DC: ; 0x022DC6DC - ldr ip, _022DC6E4 ; =ov10_022C11D8 - bx ip - .align 2, 0 -_022DC6E4: .word ov10_022C11D8 - arm_func_end ov29_022DC6DC - - arm_func_start ov29_022DC6E8 -ov29_022DC6E8: ; 0x022DC6E8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - ldrb r4, [sp, #0x20] - ldrsh ip, [sp, #0x24] - ldrsh lr, [sp, #0x28] - stmia sp, {r4, ip} - str lr, [sp, #8] - ldrsh ip, [sp, #0x2c] - ldrsh lr, [sp, #0x30] - str ip, [sp, #0xc] - ldrb ip, [sp, #0x34] - str lr, [sp, #0x10] - str ip, [sp, #0x14] - bl ov10_022C0F6C - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - arm_func_end ov29_022DC6E8 - - arm_func_start ov29_022DC728 -ov29_022DC728: ; 0x022DC728 - stmdb sp!, {r3, lr} - bl FreeTeamStats - bl ov10_022C096C - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC728 - - arm_func_start ov29_022DC738 -ov29_022DC738: ; 0x022DC738 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl ov10_022C22A0 - add r0, sp, #0 - mov r1, r4 - bl ov10_022C0814 - mov r0, r5 - bl ov10_022C14D0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022DC738 - - arm_func_start ov29_022DC76C -ov29_022DC76C: ; 0x022DC76C - ldr ip, _022DC774 ; =ov10_022C159C - bx ip - .align 2, 0 -_022DC774: .word ov10_022C159C - arm_func_end ov29_022DC76C - - arm_func_start ov29_022DC778 -ov29_022DC778: ; 0x022DC778 - bx lr - arm_func_end ov29_022DC778 - - arm_func_start ov29_022DC77C -ov29_022DC77C: ; 0x022DC77C - stmdb sp!, {r3, lr} - bl FreeMapAndTeam - bl ov10_022C096C - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC77C - - arm_func_start ov29_022DC78C -ov29_022DC78C: ; 0x022DC78C - stmdb sp!, {r4, lr} - ldr r1, _022DC7E0 ; =ov29_02353518 - mov lr, #0 - ldr r4, [r1] - mov r1, #0x50 - b _022DC7D0 -_022DC7A4: - mul ip, lr, r1 - add r3, r4, ip - ldrb r2, [r3, #4] - cmp r2, #0 - beq _022DC7CC - ldr r2, [r3, #8] - cmp r0, r2 - addeq r0, r4, #4 - addeq r0, r0, ip - ldmeqia sp!, {r4, pc} -_022DC7CC: - add lr, lr, #1 -_022DC7D0: - cmp lr, #0x16 - blt _022DC7A4 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DC7E0: .word ov29_02353518 - arm_func_end ov29_022DC78C - ; https://decomp.me/scratch/qiwjF arm_func_start ov29_022DC7E4 ov29_022DC7E4: ; 0x022DC7E4 diff --git a/asm/overlay_29_022E37DC.s b/asm/overlay_29_022E37DC.s index d2d957fb..cbfd0744 100644 --- a/asm/overlay_29_022E37DC.s +++ b/asm/overlay_29_022E37DC.s @@ -559,128 +559,3 @@ PlayExclamationPointEffect__022E4880: ; 0x022E3ED0 .align 2, 0 _022E3F1C: .word 0x00000143 arm_func_end PlayExclamationPointEffect__022E4880 - - arm_func_start ov29_022E3F20 -ov29_022E3F20: ; 0x022E3F20 - bx lr - arm_func_end ov29_022E3F20 - - arm_func_start ov29_022E3F24 -ov29_022E3F24: ; 0x022E3F24 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E3F70 ; =0x00000141 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E3F70 ; =0x00000141 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3F70: .word 0x00000141 - arm_func_end ov29_022E3F24 - - arm_func_start ov29_022E3F74 -ov29_022E3F74: ; 0x022E3F74 - bx lr - arm_func_end ov29_022E3F74 - - arm_func_start ov29_022E3F78 -ov29_022E3F78: ; 0x022E3F78 - bx lr - arm_func_end ov29_022E3F78 - - arm_func_start ov29_022E3F7C -ov29_022E3F7C: ; 0x022E3F7C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #7 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #7 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3F7C - - arm_func_start ov29_022E3FC8 -ov29_022E3FC8: ; 0x022E3FC8 - bx lr - arm_func_end ov29_022E3FC8 - - arm_func_start ov29_022E3FCC -ov29_022E3FCC: ; 0x022E3FCC - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #4 - str r2, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3FCC - - arm_func_start ov29_022E4014 -ov29_022E4014: ; 0x022E4014 - bx lr - arm_func_end ov29_022E4014 - - arm_func_start PlayEffectAnimation0x171Full -PlayEffectAnimation0x171Full: ; 0x022E4018 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4064 ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4064 ; =0x00000171 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4064: .word 0x00000171 - arm_func_end PlayEffectAnimation0x171Full - - arm_func_start ov29_022E4068 -ov29_022E4068: ; 0x022E4068 - bx lr - arm_func_end ov29_022E4068 diff --git a/asm/overlay_29_022E4714.s b/asm/overlay_29_022E4868.s similarity index 67% rename from asm/overlay_29_022E4714.s rename to asm/overlay_29_022E4868.s index 061766ec..b44dc1d4 100644 --- a/asm/overlay_29_022E4714.s +++ b/asm/overlay_29_022E4868.s @@ -1,136 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022E4714.inc" + .include "overlay_29_022E4868.inc" .text - arm_func_start ov29_022E4714 -ov29_022E4714: ; 0x022E4714 - bx lr - arm_func_end ov29_022E4714 - - arm_func_start ov29_022E4718 -ov29_022E4718: ; 0x022E4718 - bx lr - arm_func_end ov29_022E4718 - - arm_func_start ov29_022E471C -ov29_022E471C: ; 0x022E471C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4768 ; =0x00000131 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4768 ; =0x00000131 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4768: .word 0x00000131 - arm_func_end ov29_022E471C - - arm_func_start ov29_022E476C -ov29_022E476C: ; 0x022E476C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x30 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x30 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E476C - - arm_func_start ov29_022E47B8 -ov29_022E47B8: ; 0x022E47B8 - bx lr - arm_func_end ov29_022E47B8 - - arm_func_start ov29_022E47BC -ov29_022E47BC: ; 0x022E47BC - bx lr - arm_func_end ov29_022E47BC - - arm_func_start ov29_022E47C0 -ov29_022E47C0: ; 0x022E47C0 - bx lr - arm_func_end ov29_022E47C0 - - arm_func_start ov29_022E47C4 -ov29_022E47C4: ; 0x022E47C4 - bx lr - arm_func_end ov29_022E47C4 - - arm_func_start ov29_022E47C8 -ov29_022E47C8: ; 0x022E47C8 - bx lr - arm_func_end ov29_022E47C8 - - arm_func_start ov29_022E47CC -ov29_022E47CC: ; 0x022E47CC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r1 - mov r1, #0xe - mov r4, r0 - bl MonsterIsType - cmp r0, #0 - beq _022E4828 - mov r0, r5 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, r5 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - b _022E4860 -_022E4828: - mov r0, #0xe - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xe - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity -_022E4860: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E47CC - arm_func_start ov29_022E4868 ov29_022E4868: ; 0x022E4868 bx lr diff --git a/include/main_020027E8.h b/include/main_020027E8.h new file mode 100644 index 00000000..795bb21d --- /dev/null +++ b/include/main_020027E8.h @@ -0,0 +1,28 @@ +#ifndef PMDSKY_MAIN_020027E8_H +#define PMDSKY_MAIN_020027E8_H + +#include "util.h" + +struct unk_020027E8 { + OSThread *field_0x0; + u8 field_0x4[0x10]; + s32 field_0x14; +}; + +struct unk_0229B0E0 { + s32 field_0x0; + s32 field_0x4; +}; + +void sub_020027E8(struct unk_020027E8 *p); +u32 sub_020027F8(struct unk_020027E8 *p, u32 prio); +u32 sub_02002824(u32 prio); +void sub_02002858(struct unk_020027E8 *p, s32 v); +s32 sub_02002860(struct unk_020027E8 *p); +bool8 sub_02002878(s32 v); +void sub_020028AC(void); +void sub_020028B0(OSMutex *mutex); +void sub_020028F8(OSMutex *mutex); +void sub_02002904(OSMutex *mutex); + +#endif diff --git a/include/overlay_18_0238C950.h b/include/overlay_18_0238C950.h new file mode 100644 index 00000000..bd643c6c --- /dev/null +++ b/include/overlay_18_0238C950.h @@ -0,0 +1,25 @@ +#ifndef PMDSKY_OVERLAY_18_0238C950_H +#define PMDSKY_OVERLAY_18_0238C950_H + +struct unk_0238C950 { + u8 field_0x0[0x80]; + s32 field_0x80; + s32 field_0x84; + s32 field_0x88; + s16 field_0x8C; + u8 field_0x8E[0x2FE]; + s16 field_0x38C; +}; + +void ov18_0238C950(void); +void ov18_0238C974(void); +void ov18_0238C984(void); +void ov18_0238C9A8(void); +void ov18_0238C9B8(void); +void ov18_0238CA18(void); +void ov18_0238CA3C(void); +void ov18_0238CA4C(void); +void ov18_0238CA70(void); +void ov18_0238CA80(void); + +#endif diff --git a/include/overlay_29_022DC684.h b/include/overlay_29_022DC684.h index 5d4e602c..87262370 100644 --- a/include/overlay_29_022DC684.h +++ b/include/overlay_29_022DC684.h @@ -1,10 +1,32 @@ #ifndef PMDSKY_OVERLAY_29_022DC684_H #define PMDSKY_OVERLAY_29_022DC684_H +struct unk_02353518 { + u8 field_0x0[4]; + u8 field_0x4; + u8 field_0x5[3]; + s32 field_0x8; + u8 field_0xC[0x44]; +}; + +struct unk_022DC694 { + u32 field_0x0[5]; +}; + #include "dungeon_mode.h" #include "item.h" #include "move.h" void ov29_022DC684(s32 a); +void ov29_022DC694(s32 a, s32 b); +void ov29_022DC6D0(void); +void ov29_022DC6DC(void); +void ov29_022DC6E8(s32 a, s32 b, s32 c, s32 d, u8 e, s16 f, s16 g, s16 h, s16 i, u8 j); +void ov29_022DC728(void); +void ov29_022DC738(s32 a, s32 b); +void ov29_022DC76C(void); +void ov29_022DC778(void); +void ov29_022DC77C(void); +u8 * ov29_022DC78C(s32 id); #endif diff --git a/include/overlay_29_022E3F20.h b/include/overlay_29_022E3F20.h new file mode 100644 index 00000000..aa0064c4 --- /dev/null +++ b/include/overlay_29_022E3F20.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_29_022E3F20_H +#define PMDSKY_OVERLAY_29_022E3F20_H + +#include "dungeon_mode.h" + +void ov29_022E3F20(void); +void ov29_022E3F24(struct entity *entity); +void ov29_022E3F74(void); +void ov29_022E3F78(void); +void ov29_022E3F7C(struct entity *entity); +void ov29_022E3FC8(void); +void ov29_022E3FCC(struct entity *entity); +void ov29_022E4014(void); +void PlayEffectAnimation0x171Full(struct entity *entity); +void ov29_022E4068(void); + +#endif diff --git a/include/overlay_29_022E4704.h b/include/overlay_29_022E4704.h index fe370904..dbb64ba3 100644 --- a/include/overlay_29_022E4704.h +++ b/include/overlay_29_022E4704.h @@ -6,5 +6,15 @@ #include "move.h" void PlayInvisifySeIfShouldDisplayEntity(struct entity *entity); +void ov29_022E4714(void); +void ov29_022E4718(void); +void ov29_022E471C(struct entity *entity); +void ov29_022E476C(struct entity *entity); +void ov29_022E47B8(void); +void ov29_022E47BC(void); +void ov29_022E47C0(void); +void ov29_022E47C4(void); +void ov29_022E47C8(void); +void ov29_022E47CC(struct entity *entity, s32 id); #endif diff --git a/main.lsf b/main.lsf index 48d2865a..c8d672d9 100644 --- a/main.lsf +++ b/main.lsf @@ -24,6 +24,8 @@ Static main Object asm/main_02001D68.o Object src/main_0200224C.o Object asm/main_020022C4.o + Object src/main_020027E8.o + Object asm/main_02002910.o Object src/main_0200330C.o Object asm/main_02003328.o Object src/main_0200383C.o @@ -701,6 +703,8 @@ Overlay OVY_18 { After OVY_11 Object asm/overlay_18.o + Object src/overlay_18_0238C950.o + Object asm/overlay_18_0238CAB0.o } Overlay OVY_19 { @@ -769,7 +773,7 @@ Overlay OVY_29 Object src/overlay_29_022DC61C.o Object asm/overlay_29_022DC65C.o Object src/overlay_29_022DC684.o - Object asm/overlay_29_022DC694.o + Object asm/overlay_29_022DC7E4.o Object src/overlay_29_022DEAB0.o Object asm/overlay_29_022DEBA4.o Object src/dg.o @@ -793,6 +797,7 @@ Overlay OVY_29 Object asm/overlay_29_022E335C.o Object src/dg_effect.o Object asm/overlay_29_022E37DC.o + Object src/overlay_29_022E3F20.o Object src/overlay_29_022E406C.o Object src/overlay_29_022E41CC.o Object asm/overlay_29_022E41F0.o @@ -802,7 +807,7 @@ Overlay OVY_29 Object src/overlay_29_022E46C0.o Object asm/overlay_29_022E46D0.o Object src/overlay_29_022E4704.o - Object asm/overlay_29_022E4714.o + Object asm/overlay_29_022E4868.o Object src/overlay_29_022E4B8C.o Object asm/overlay_29_022E4BB4.o Object src/overlay_29_022E563C.o diff --git a/src/main_020027E8.c b/src/main_020027E8.c new file mode 100644 index 00000000..fa661ea5 --- /dev/null +++ b/src/main_020027E8.c @@ -0,0 +1,90 @@ +#include "main_020027E8.h" + +extern volatile struct unk_0229B0E0 _0229B0E0; + +extern void sub_02002670(void); + +extern void sub_020026B8(void); + +extern struct unk_020027E8 *sub_02002580(void); + +void sub_020027E8(struct unk_020027E8 *p) +{ + OS_WakeupThreadDirect(p->field_0x0); +} + +u32 sub_020027F8(struct unk_020027E8 *p, u32 prio) +{ + u32 old; + + old = OS_GetThreadPriority(p->field_0x0); + OS_SetThreadPriority(p->field_0x0, prio); + return old; +} + +u32 sub_02002824(u32 prio) +{ + OSThread *thread; + u32 old; + + thread = OSi_ThreadInfo.current; + old = OS_GetThreadPriority(thread); + OS_SetThreadPriority(thread, prio); + return old; +} + +void sub_02002858(struct unk_020027E8 *p, s32 v) +{ + p->field_0x14 = v; +} + +s32 sub_02002860(struct unk_020027E8 *p) +{ + if (p != NULL && p->field_0x0 != NULL) { + return p->field_0x14; + } + + return 0; +} + +bool8 sub_02002878(s32 v) +{ + struct unk_020027E8 *p; + + p = sub_02002580(); + + if (p != NULL) { + return p->field_0x14 == v; + } + + return 0; +} + +void sub_020028AC(void) +{ + +} + +void sub_020028B0(OSMutex *mutex) +{ + OS_InitMutex(mutex); + OS_LockMutex(mutex); + sub_02002670(); + _0229B0E0.field_0x0 += 1; + + if (_0229B0E0.field_0x0 > _0229B0E0.field_0x4) { + _0229B0E0.field_0x4 = _0229B0E0.field_0x0; + } + + sub_020026B8(); +} + +void sub_020028F8(OSMutex *mutex) +{ + OS_UnlockMutex(mutex); +} + +void sub_02002904(OSMutex *mutex) +{ + OS_LockMutex(mutex); +} diff --git a/src/overlay_18_0238C950.c b/src/overlay_18_0238C950.c new file mode 100644 index 00000000..4e38d4eb --- /dev/null +++ b/src/overlay_18_0238C950.c @@ -0,0 +1,74 @@ +#include "overlay_18_0238C950.h" + +extern s32 sub_0204159C(void); + +extern s32 ov18_0238ABB0(s16 a); + +extern void ov18_0238BE28(s32 a); + +extern struct unk_0238C950 *LINK_SHOP_PTR; + +void ov18_0238C950(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x2B; +} + +void ov18_0238C974(void) +{ + ov18_0238BE28(0x19); +} + +void ov18_0238C984(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x2D; +} + +void ov18_0238C9A8(void) +{ + ov18_0238BE28(0x19); +} + +void ov18_0238C9B8(void) +{ + if (sub_0204159C() == 0) { + LINK_SHOP_PTR->field_0x80 = 0x2F; + return; + } + + if (ov18_0238ABB0(LINK_SHOP_PTR->field_0x38C) <= 0) { + LINK_SHOP_PTR->field_0x80 = 0x31; + } else { + LINK_SHOP_PTR->field_0x80 = 0x33; + } +} + +void ov18_0238CA18(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x30; +} + +void ov18_0238CA3C(void) +{ + ov18_0238BE28(0x11); +} + +void ov18_0238CA4C(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x32; +} + +void ov18_0238CA70(void) +{ + ov18_0238BE28(0x11); +} + +void ov18_0238CA80(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x8C = 0; + LINK_SHOP_PTR->field_0x80 = 0x34; +} diff --git a/src/overlay_29_022DC684.c b/src/overlay_29_022DC684.c index da4834ed..b0f46e7c 100644 --- a/src/overlay_29_022DC684.c +++ b/src/overlay_29_022DC684.c @@ -1,8 +1,106 @@ #include "overlay_29_022DC684.h" +extern struct unk_02353518 *ov29_02353518; + +extern void FreeMapAndTeam(void); + +extern void ov10_022C159C(void); + +extern void ov10_022C14D0(s32 a); + +extern void FreeTeamStats(void); + +extern void ov10_022C096C(void); + +extern void ov10_022C0F6C(s32 a, s32 b, s32 c, s32 d, s32 e, s32 f, s32 g, s32 h, s32 i, s32 j); + +extern void ov10_022C11D8(void); + +extern void UpdateTeamStats(void); + +extern void ov10_022C22A0(struct unk_022DC694 *p); + +extern void ov10_022C0814(struct unk_022DC694 *p, s32 a); + +extern void DrawTeamStats(s32 a, s32 b, s32 c); + extern void ov10_022C0998(s32 a, s32 b); void ov29_022DC684(s32 a) { ov10_022C0998(a, 1); } + +void ov29_022DC694(s32 a, s32 b) +{ + struct unk_022DC694 s; + + ov10_022C22A0(&s); + ov10_022C0814(&s, b); + DrawTeamStats(a, 0, 1); +} + +void ov29_022DC6D0(void) +{ + UpdateTeamStats(); +} + +void ov29_022DC6DC(void) +{ + ov10_022C11D8(); +} + +void ov29_022DC6E8(s32 a, s32 b, s32 c, s32 d, u8 e, s16 f, s16 g, s16 h, s16 i, u8 j) +{ + ov10_022C0F6C(a, b, c, d, e, f, g, h, i, j); +} + +void ov29_022DC728(void) +{ + FreeTeamStats(); + ov10_022C096C(); +} + +void ov29_022DC738(s32 a, s32 b) +{ + struct unk_022DC694 s; + + ov10_022C22A0(&s); + ov10_022C0814(&s, b); + ov10_022C14D0(a); +} + +void ov29_022DC76C(void) +{ + ov10_022C159C(); +} + +void ov29_022DC778(void) +{ + +} + +void ov29_022DC77C(void) +{ + FreeMapAndTeam(); + ov10_022C096C(); +} + +u8 * ov29_022DC78C(s32 id) +{ + s32 i; + u8 *base; + s32 off; + + base = (u8 *) ov29_02353518; + + for (i = 0; i < 22; i++) { + off = i * 0x50; + + if (base[off + 4] != 0 && *(s32 *) &base[off + 8] == id) { + return base + 4 + off; + } + } + + return NULL; +} diff --git a/src/overlay_29_022E3F20.c b/src/overlay_29_022E3F20.c new file mode 100644 index 00000000..859ac633 --- /dev/null +++ b/src/overlay_29_022E3F20.c @@ -0,0 +1,60 @@ +#include "overlay_29_022E3F20.h" + +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + +void ov29_022E3F20(void) +{ + +} + +void ov29_022E3F24(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x141, 1, GetEffectAnimationField0x19(0x141), + 2, 0, -1, 0); +} + +void ov29_022E3F74(void) +{ + +} + +void ov29_022E3F78(void) +{ + +} + +void ov29_022E3F7C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 7, 1, GetEffectAnimationField0x19(7), + 2, 0, -1, 0); +} + +void ov29_022E3FC8(void) +{ + +} + +void ov29_022E3FCC(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 4, 0, GetEffectAnimationField0x19(4), + 2, 0, -1, 0); +} + +void ov29_022E4014(void) +{ + +} + +void PlayEffectAnimation0x171Full(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x171, 1, GetEffectAnimationField0x19(0x171), + 2, 0, -1, 0); +} + +void ov29_022E4068(void) +{ + +} diff --git a/src/overlay_29_022E4704.c b/src/overlay_29_022E4704.c index a32f339a..43ba83a8 100644 --- a/src/overlay_29_022E4704.c +++ b/src/overlay_29_022E4704.c @@ -1,8 +1,73 @@ #include "overlay_29_022E4704.h" +extern bool8 MonsterIsType(struct entity *entity, enum type_id type_id); + +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + extern void PlaySeByIdIfShouldDisplayEntity(struct entity *entity, s32 se_id); void PlayInvisifySeIfShouldDisplayEntity(struct entity *entity) { PlaySeByIdIfShouldDisplayEntity(entity, 0x21C); } + +void ov29_022E4714(void) +{ + +} + +void ov29_022E4718(void) +{ + +} + +void ov29_022E471C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x131, 1, GetEffectAnimationField0x19(0x131), + 2, 0, -1, 0); +} + +void ov29_022E476C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x30, 1, GetEffectAnimationField0x19(0x30), + 2, 0, -1, 0); +} + +void ov29_022E47B8(void) +{ + +} + +void ov29_022E47BC(void) +{ + +} + +void ov29_022E47C0(void) +{ + +} + +void ov29_022E47C4(void) +{ + +} + +void ov29_022E47C8(void) +{ + +} + +void ov29_022E47CC(struct entity *entity, s32 id) +{ + if (MonsterIsType(entity, TYPE_GHOST)) { + PlayEffectAnimationEntity(entity, id, 1, GetEffectAnimationField0x19(id), + 2, 0, -1, 0); + } else { + PlayEffectAnimationEntity(entity, 0xE, 1, GetEffectAnimationField0x19(0xE), + 2, 0, -1, 0); + } +}