mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-13 05:47:34 -05:00
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
32
asm/include/main_02002910.inc
Normal file
32
asm/include/main_02002910.inc
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
80
asm/include/overlay_18_0238CAB0.inc
Normal file
80
asm/include/overlay_18_0238CAB0.inc
Normal file
@@ -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
|
||||
@@ -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
|
||||
@@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
.public GetEffectAnimationField0x19
|
||||
.public MonsterIsType
|
||||
.public PlayEffectAnimationEntity
|
||||
.public PlaySeByIdIfShouldDisplayEntity
|
||||
@@ -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
|
||||
|
||||
782
asm/main_02002910.s
Normal file
782
asm/main_02002910.s
Normal file
@@ -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
|
||||
1005
asm/overlay_18.s
1005
asm/overlay_18.s
File diff suppressed because it is too large
Load Diff
871
asm/overlay_18_0238CAB0.s
Normal file
871
asm/overlay_18_0238CAB0.s
Normal file
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
28
include/main_020027E8.h
Normal file
28
include/main_020027E8.h
Normal file
@@ -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
|
||||
25
include/overlay_18_0238C950.h
Normal file
25
include/overlay_18_0238C950.h
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
17
include/overlay_29_022E3F20.h
Normal file
17
include/overlay_29_022E3F20.h
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
9
main.lsf
9
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
|
||||
|
||||
90
src/main_020027E8.c
Normal file
90
src/main_020027E8.c
Normal file
@@ -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);
|
||||
}
|
||||
74
src/overlay_18_0238C950.c
Normal file
74
src/overlay_18_0238C950.c
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
60
src/overlay_29_022E3F20.c
Normal file
60
src/overlay_29_022E3F20.c
Normal file
@@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user