diff --git a/asm/include/main_02000DE0.inc b/asm/include/main_02000DE0.inc index 56b83094..6747c0f4 100644 --- a/asm/include/main_02000DE0.inc +++ b/asm/include/main_02000DE0.inc @@ -1,4 +1,15 @@ #pragma once +.public CardPullOut +.public DEFAULT_MEMORY_ARENA_MEMORY +.public Debug_FatalError +.public Debug_Print0 +.public GX_DispOff +.public MEMORY_ALLOCATION_ARENA_GETTERS +.public NATURAL_LOG_VALUE_TABLE +.public OS_GetLockID +.public PRNG_SEQUENCE_NUM +.public StartThread +.public WaitForInterrupt .public _02090B40 .public _02090B70 .public _02090BA0 @@ -6,21 +17,9 @@ .public _02090BFC .public _02090C48 .public _02092464 -.public _020924D8 -.public _020924E8 -.public _020924F8 .public _020AEF08 .public _020AEF30 .public _020AEF58 -.public _020AEF7C -.public _020AEFB4 -.public _020AEFC8 -.public _020AEFDC -.public _020AF000 -.public _020AF028 -.public _020AF050 -.public _020AF078 -.public _020AF154 .public _020B3380 .public _020B3384 .public _020B33A0 @@ -35,50 +34,9 @@ .public _0229B0F8 .public _0229B110 .public _0229B114 -.public _0229B21C -.public _0229B220 -.public _0229B248 -.public _0229F248 .public _022B966C -.public _fadd -.public _fflt -.public _fmul -.public CardPullOut -.public Debug_FatalError -.public Debug_Print0 -.public DEFAULT_MEMORY_ARENA_MEMORY -.public GetHeldButtons -.public GetReleasedStylus -.public GX_DispOff -.public GX_VBlankIntr -.public HaltProcessDisp -.public KeyWaitInit -.public MainLoop -.public MEMORY_ALLOCATION_ARENA_GETTERS -.public NATURAL_LOG_VALUE_TABLE -.public OS_GetLockID -.public OS_IRQTable -.public PlayBgmById -.public PRNG_SEQUENCE_NUM -.public StartThread -.public StopBgmCommand +.public sub_02003AD0 .public sub_020059A8 -.public sub_02005EAC -.public sub_02006098 -.public sub_02006D4C -.public sub_02006DEC -.public sub_020081C8 -.public sub_020082E0 -.public sub_02017D20 -.public sub_02017DB4 -.public sub_02017FF0 -.public sub_02018024 -.public sub_02018118 -.public sub_02018278 -.public sub_02018428 -.public sub_0201849C -.public sub_02078A98 -.public sub_02078C68 .public sub_02079844 .public sub_02079888 .public sub_02079940 @@ -92,16 +50,9 @@ .public sub_0207A048 .public sub_0207A0CC .public sub_0207A164 -.public sub_0207B370 -.public sub_0207B4A4 -.public sub_0207B4B8 -.public sub_0207B584 .public sub_0207B930 -.public sub_020820E8 -.public sub_02082420 .public sub_02083434 .public sub_02083450 .public sub_0208346C .public sub_0208347C .public sub_020845D8 -.public WaitForInterrupt diff --git a/asm/include/main_02003328.inc b/asm/include/main_02003328.inc new file mode 100644 index 00000000..e34dd880 --- /dev/null +++ b/asm/include/main_02003328.inc @@ -0,0 +1,72 @@ +#pragma once +.public Debug_Print0 +.public GX_VBlankIntr +.public GetHeldButtons +.public GetReleasedStylus +.public HaltProcessDisp +.public KeyWaitInit +.public MainLoop +.public OS_IRQTable +.public PlayBgmById +.public Rand16Bit +.public StopBgmCommand +.public WaitForever +.public _020924D8 +.public _020924E8 +.public _020924F8 +.public _020AEF7C +.public _020AEFB4 +.public _020AEFC8 +.public _020AEFDC +.public _020AF000 +.public _020AF028 +.public _020AF050 +.public _020AF078 +.public _020AF154 +.public _0229B21C +.public _0229B220 +.public _0229B248 +.public _0229F248 +.public _fadd +.public _fflt +.public _fmul +.public sub_02002580 +.public sub_020025F8 +.public sub_02002628 +.public sub_0200265C +.public sub_02002670 +.public sub_020026B8 +.public sub_02002778 +.public sub_020027E8 +.public sub_020027F8 +.public sub_02002858 +.public sub_02002860 +.public sub_02002950 +.public sub_020029A0 +.public sub_020029B8 +.public sub_02002A44 +.public sub_02002C40 +.public sub_02005EAC +.public sub_02006098 +.public sub_02006D4C +.public sub_02006DEC +.public sub_020081C8 +.public sub_020082E0 +.public sub_02017D20 +.public sub_02017DB4 +.public sub_02017FF0 +.public sub_02018024 +.public sub_02018118 +.public sub_02018278 +.public sub_02018428 +.public sub_0201849C +.public sub_02078A98 +.public sub_02078C68 +.public sub_02079888 +.public sub_02079940 +.public sub_0207B370 +.public sub_0207B4A4 +.public sub_0207B4B8 +.public sub_0207B584 +.public sub_020820E8 +.public sub_02082420 diff --git a/asm/main_02000DE0.s b/asm/main_02000DE0.s index 2b68a96b..0a32eece 100644 --- a/asm/main_02000DE0.s +++ b/asm/main_02000DE0.s @@ -3004,921 +3004,3 @@ InitMemAllocTableVeneer: ; 0x0200321C .align 2, 0 _02003224: .word InitMemAllocTable arm_func_end InitMemAllocTableVeneer - - arm_func_start ZInit8 -ZInit8: ; 0x02003228 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - bx lr - arm_func_end ZInit8 - - arm_func_start PointsToZero -PointsToZero: ; 0x02003238 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end PointsToZero - - arm_func_start MemZero -MemZero: ; 0x02003250 - mov r2, #0 - b _02003260 -_02003258: - sub r1, r1, #1 - strb r2, [r0], #1 -_02003260: - cmp r1, #0 - bgt _02003258 - bx lr - arm_func_end MemZero - - arm_func_start MemZero16 -MemZero16: ; 0x0200326C - mov r2, #0 - b _0200327C -_02003274: - sub r1, r1, #2 - strh r2, [r0], #2 -_0200327C: - cmp r1, #0 - bgt _02003274 - bx lr - arm_func_end MemZero16 - - arm_func_start MemZero32 -MemZero32: ; 0x02003288 - mov r2, #0 - b _02003298 -_02003290: - sub r1, r1, #4 - str r2, [r0], #4 -_02003298: - cmp r1, #0 - bgt _02003290 - bx lr - arm_func_end MemZero32 - - arm_func_start MemsetSimple -MemsetSimple: ; 0x020032A4 - b _020032B0 -_020032A8: - sub r2, r2, #1 - strb r1, [r0], #1 - arm_func_end MemsetSimple -_020032B0: - cmp r2, #0 - bgt _020032A8 - bx lr - - arm_func_start Memset32 -Memset32: ; 0x020032BC - b _020032C8 -_020032C0: - sub r2, r2, #4 - str r1, [r0], #4 -_020032C8: - cmp r2, #0 - bgt _020032C0 - bx lr - arm_func_end Memset32 - - arm_func_start MemcpySimple -MemcpySimple: ; 0x020032D4 - b _020032E4 -_020032D8: - ldrb r3, [r1], #1 - sub r2, r2, #1 - strb r3, [r0], #1 - arm_func_end MemcpySimple -_020032E4: - cmp r2, #0 - bgt _020032D8 - bx lr - -; https://decomp.me/scratch/qcRwD - arm_func_start Memcpy16 -Memcpy16: ; 0x020032F0 - b _02003300 -_020032F4: - ldrh r3, [r1], #2 - sub r2, r2, #2 - strh r3, [r0], #2 - arm_func_end Memcpy16 -_02003300: - cmp r2, #0 - bgt _020032F4 - bx lr - -; https://decomp.me/scratch/edLa8 - arm_func_start Memcpy32 -Memcpy32: ; 0x0200330C - b _0200331C -_02003310: - ldr r3, [r1], #4 - sub r2, r2, #4 - str r3, [r0], #4 - arm_func_end Memcpy32 -_0200331C: - cmp r2, #0 - bgt _02003310 - bx lr - - arm_func_start TaskProcBoot -TaskProcBoot: ; 0x02003328 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r0, _020035CC ; =_020AF000 - bl sub_02002950 - ldr r0, _020035D0 ; =_020AF028 - bl sub_02002950 - ldr r0, _020035D4 ; =_020AF050 - bl sub_02002950 - ldr r0, _020035D8 ; =_020AEFDC - bl sub_02002C40 - bl sub_02006D4C - bl sub_02017D20 - ldr r2, _020035DC ; =_0229B248 - ldr r1, _020035E0 ; =_020AEF7C - ldr r0, _020035E4 ; =_020AF078 - str r2, [r1, #0x3c] - ldr r1, _020035E8 ; =_020AEFB4 - mov r2, #0 - bl sub_02002778 - ldr r0, _020035E4 ; =_020AF078 - bl sub_020027E8 - bl sub_0207B370 - ldr r0, _020035EC ; =_0229B220 - bl sub_0207B4A4 - mov r1, #0 - str r1, [sp] - ldr r0, _020035EC ; =_0229B220 - mov r2, #0x64 - ldr r3, _020035F0 ; =sub_02003754 - bl sub_0207B4B8 - mov r0, #1 - ldr r1, _020035F4 ; =sub_02003704 - bl sub_02078A98 - mov r0, #1 - bl sub_02078C68 - bl EnableAllInterrupts - mov r0, #1 - bl GX_VBlankIntr - ldr r0, _020035F8 ; =_020AF154 - ldr r1, _020035E0 ; =_020AEF7C - ldr r2, _020035FC ; =_0229F248 - str r0, [r1, #0x24] - str r2, [r1, #0x50] - ldr r1, _02003600 ; =_020AEFC8 - mov r2, #0 - bl sub_02002778 - ldr r0, _020035F8 ; =_020AF154 - bl sub_020027E8 - bl sub_02002580 - ldr r2, _020035E0 ; =_020AEF7C - mov r1, #0xf - str r0, [r2, #0x34] - bl sub_020027F8 - ldr r0, _020035E0 ; =_020AEF7C - mov r1, #2 - ldr r0, [r0, #0x34] - bl sub_02002858 - mov sl, #0 - ldr r1, _020035E0 ; =_020AEF7C - ldr r0, _02003604 ; =_020924D8 - strb sl, [r1, #5] - bl Debug_Print0 - mov r8, #1 - ldr r4, _020035E0 ; =_020AEF7C - mov r6, sl - mov sb, sl - mov r7, r8 - mov r5, sl - mov fp, r8 -_0200343C: - add r0, sp, #4 - mov r1, #0xb - bl sub_02002628 - ldrb r0, [r4, #7] - cmp r0, #0 - strneb sb, [r4, #7] - bne _02003460 - ldr r0, _020035D4 ; =_020AF050 - bl sub_02002A44 -_02003460: - cmp sl, #0 - beq _020034A8 - ldrb r0, [r4, #6] - cmp r0, #0 - ldrneb r0, [r4] - cmpne r0, #0 - beq _020034C8 - ldr r0, _020035CC ; =_020AF000 - strb r8, [r4, #3] - bl sub_020029A0 - ldr r0, _020035D0 ; =_020AF028 - bl sub_02002A44 - bl sub_02002670 - ldr r0, [r4, #0x10] - cmp r0, #0 - moveq sl, #0 - bl sub_020026B8 - b _020034C8 -_020034A8: - bl sub_02002670 - ldr sl, [r4, #0x10] - bl sub_020026B8 - cmp sl, #0 - beq _020034C8 - ldr r0, _020035D0 ; =_020AF028 - strb r7, [r4, #3] - bl sub_02002A44 -_020034C8: - add r0, sp, #4 - bl sub_0200265C - bl sub_02002670 - ldr r0, [r4, #0x10] - cmp r0, #0 - movne sl, r0 - cmp sl, #0 - beq _02003518 - ldrb r0, [r4, #3] - cmp r0, #0 - strneb r6, [r4] - str sl, [r4, #0x18] - bl sub_020026B8 - ldr r0, [r4, #0x30] - add r0, r0, #1 - str r0, [r4, #0x30] - bl sub_02006098 - blx sl - strb r0, [r4, #6] - b _02003530 -_02003518: - bl sub_020026B8 - bl sub_02003A40 - bl sub_02002670 - str r5, [r4, #0x18] - strb fp, [r4, #6] - bl sub_020026B8 -_02003530: - ldrb r0, [r4, #0xd] - cmp r0, #0 - beq _02003544 - mov r0, #0 - bl sub_020025F8 -_02003544: - ldrb r0, [r4, #2] - cmp r0, #0 - beq _0200343C - bl sub_02003B5C - cmp r0, #0 - beq _020035A8 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _02003584 - mov r0, #0 - mov r1, #0 - strb r0, [r4, #0xb] - mov r0, #0xc - mov r2, r1 - bl sub_020820E8 - b _0200343C -_02003584: - ldr r0, [r4, #0x14] - cmp r0, #0 - bne _0200343C - mov r0, #0 - bl sub_02082420 - cmp r0, #0 - movne r0, #1 - strne r0, [r4, #0x14] - b _0200343C -_020035A8: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _0200343C - mov r0, #1 - bl sub_02082420 - cmp r0, #0 - movne r0, #0 - strne r0, [r4, #0x14] - b _0200343C - .align 2, 0 -_020035CC: .word _020AF000 -_020035D0: .word _020AF028 -_020035D4: .word _020AF050 -_020035D8: .word _020AEFDC -_020035DC: .word _0229B248 -_020035E0: .word _020AEF7C -_020035E4: .word _020AF078 -_020035E8: .word _020AEFB4 -_020035EC: .word _0229B220 -_020035F0: .word sub_02003754 -_020035F4: .word sub_02003704 -_020035F8: .word _020AF154 -_020035FC: .word _0229F248 -_02003600: .word _020AEFC8 -_02003604: .word _020924D8 - arm_func_end TaskProcBoot - - arm_func_start EnableAllInterrupts -EnableAllInterrupts: ; 0x02003608 - ldr r2, _0200361C ; =0x04000208 - mov r1, #1 - ldrh r0, [r2] - strh r1, [r2] - bx lr - .align 2, 0 -_0200361C: .word 0x04000208 - arm_func_end EnableAllInterrupts - - arm_func_start sub_02003620 -sub_02003620: ; 0x02003620 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov r7, #0 - ldr fp, _020036FC ; =_020AF050 - ldr r4, _02003700 ; =_020AEF7C - add r6, sp, #0 - add r5, sp, #4 - mov r8, #1 - mov sb, r7 - mov sl, r7 -_02003648: - mov r0, sl - bl sub_02079888 - ldr r0, [r4, #0x28] - add r0, r0, #1 - str r0, [r4, #0x28] - ldrb r0, [r4, #0xd] - cmp r0, #0 - beq _02003674 - mov r0, sb - bl HaltProcessDisp - b _02003688 -_02003674: - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _02003688 - mov r0, r8 - bl HaltProcessDisp -_02003688: - ldrb r0, [r4, #1] - cmp r0, #0 - bne _020036AC - bl sub_02003B5C - cmp r0, #0 - beq _020036AC - ldrb r0, [r4, #8] - cmp r0, #0 - beq _020036E8 -_020036AC: - bl sub_02006DEC - bl Rand16Bit - mov r0, r7 - mov r1, r6 - bl GetHeldButtons - mov r0, r5 - bl GetReleasedStylus - ldrh r0, [sp] - cmp r0, #0 - bne _020036E0 - ldrh r0, [sp, #4] - tst r0, #1 - beq _020036EC -_020036E0: - bl Rand16Bit - b _020036EC -_020036E8: - bl KeyWaitInit -_020036EC: - mov r0, fp - bl sub_020029B8 - bl sub_0201849C - b _02003648 - .align 2, 0 -_020036FC: .word _020AF050 -_02003700: .word _020AEF7C - arm_func_end sub_02003620 - - arm_func_start sub_02003704 -sub_02003704: ; 0x02003704 - stmdb sp!, {r3, lr} - ldr r0, _0200374C ; =OS_IRQTable - ldr r1, _02003750 ; =_020AEF7C - add r0, r0, #0x3000 - ldr r2, [r0, #0xff8] - orr r2, r2, #1 - str r2, [r0, #0xff8] - ldr r0, [r1, #0x20] - add r0, r0, #1 - str r0, [r1, #0x20] - ldrb r0, [r1, #9] - cmp r0, #0 - beq _02003744 - ldr r0, [r1, #0x34] - ldr r0, [r0] - bl sub_02079940 -_02003744: - bl sub_020082E0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0200374C: .word OS_IRQTable -_02003750: .word _020AEF7C - arm_func_end sub_02003704 - - arm_func_start sub_02003754 -sub_02003754: ; 0x02003754 - ldr r1, _02003774 ; =_020AEF7C - ldr r0, _02003778 ; =_020AF078 - ldr r2, [r1, #0x1c] - ldr ip, _0200377C ; =sub_02079940 - add r2, r2, #1 - ldr r0, [r0] - str r2, [r1, #0x1c] - bx ip - .align 2, 0 -_02003774: .word _020AEF7C -_02003778: .word _020AF078 -_0200377C: .word sub_02079940 - arm_func_end sub_02003754 - - arm_func_start sub_02003780 -sub_02003780: ; 0x02003780 - stmdb sp!, {r3, lr} - bl sub_02005EAC - ldr r0, _020037A0 ; =_020AEF7C - mov r1, #1 - strb r1, [r0] - bl MainLoop - bl WaitForever - ldmia sp!, {r3, pc} - .align 2, 0 -_020037A0: .word _020AEF7C - arm_func_end sub_02003780 - - arm_func_start sub_020037A4 -sub_020037A4: ; 0x020037A4 - ldr r0, _020037B0 ; =_020AEF7C - ldr r0, [r0, #0x28] - bx lr - .align 2, 0 -_020037B0: .word _020AEF7C - arm_func_end sub_020037A4 - - arm_func_start GetTime -GetTime: ; 0x020037B4 - stmdb sp!, {r3, r4, r5, lr} - bl DisableAllInterrupts - ldr r0, _02003818 ; =_020AEF7C - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _020037D8 - bl EnableAllInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020037D8: - ldr r1, _0200381C ; =0x04000006 - ldr r4, [r0, #0x1c] - ldrh r5, [r1] - bl EnableAllInterrupts - mov r0, r4 - bl _fflt - mov r4, r0 - mov r0, r5 - bl _fflt - mov r1, r0 - ldr r0, _02003820 ; =0x3B792FB2 - bl _fmul - mov r1, r0 - mov r0, r4 - bl _fadd - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02003818: .word _020AEF7C -_0200381C: .word 0x04000006 -_02003820: .word 0x3B792FB2 - arm_func_end GetTime - - arm_func_start DisableAllInterrupts -DisableAllInterrupts: ; 0x02003824 - ldr r2, _02003838 ; =0x04000208 - mov r1, #0 - ldrh r0, [r2] - strh r1, [r2] - bx lr - .align 2, 0 -_02003838: .word 0x04000208 - arm_func_end DisableAllInterrupts - - arm_func_start sub_0200383C -sub_0200383C: ; 0x0200383C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - add r0, sp, #0 - mov r1, #0xb - bl sub_02002628 - bl sub_02002670 - ldr r0, _020038CC ; =_020AEF7C - mov r1, #1 - strb r1, [r0, #2] - ldr r4, [r0, #0x10] - str r5, [r0, #0x10] - bl sub_020026B8 - cmp r5, #0 - bne _02003898 - cmp r4, #0 - beq _020038BC - ldr r1, _020038CC ; =_020AEF7C - mov r2, #0 - ldr r0, _020038D0 ; =_020AF028 - strb r2, [r1, #3] - bl sub_020029A0 - b _020038BC -_02003898: - cmp r4, #0 - bne _020038BC - ldr r1, _020038CC ; =_020AEF7C - mov r2, #1 - ldr r0, _020038D0 ; =_020AF028 - strb r2, [r1] - bl sub_020029A0 - ldr r0, _020038D4 ; =_020AF000 - bl sub_02002A44 -_020038BC: - add r0, sp, #0 - bl sub_0200265C - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020038CC: .word _020AEF7C -_020038D0: .word _020AF028 -_020038D4: .word _020AF000 - arm_func_end sub_0200383C - - arm_func_start sub_020038D8 -sub_020038D8: ; 0x020038D8 - ldr r0, _020038E4 ; =_020AEF7C - ldrb r0, [r0, #3] - bx lr - .align 2, 0 -_020038E4: .word _020AEF7C - arm_func_end sub_020038D8 - - arm_func_start sub_020038E8 -sub_020038E8: ; 0x020038E8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - add r0, sp, #0 - mov r1, #0xb - bl sub_02002628 - bl sub_02002670 - ldr r0, _02003988 ; =_020AEF7C - ldr r4, [r0, #0x18] - bl sub_020026B8 - cmp r4, #0 - beq _02003944 - ldr r0, _02003988 ; =_020AEF7C - mov r1, #1 - strb r1, [r0] - ldrb r1, [r0, #7] - cmp r1, #0 - beq _02003938 - ldr r0, [r0, #0x34] - ldr r0, [r0] - bl sub_02079940 -_02003938: - ldr r0, _0200398C ; =_020AF000 - bl sub_02002A44 - b _02003950 -_02003944: - ldr r0, _02003988 ; =_020AEF7C - mov r1, #0 - strb r1, [r0, #7] -_02003950: - ldr r1, _02003988 ; =_020AEF7C - add r0, sp, #0 - ldr r2, [r1, #0x2c] - add r2, r2, #1 - str r2, [r1, #0x2c] - bl sub_0200265C - ldr r0, _02003988 ; =_020AEF7C - ldrb r0, [r0, #0xd] - cmp r0, #0 - beq _02003980 - mov r0, #0 - bl sub_020025F8 -_02003980: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_02003988: .word _020AEF7C -_0200398C: .word _020AF000 - arm_func_end sub_020038E8 - - arm_func_start sub_02003990 -sub_02003990: ; 0x02003990 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _020039DC ; =_020AEF7C - ldrb r0, [r0, #3] - cmp r0, #0 - beq _020039D4 - add r0, sp, #0 - mov r1, #0xb - bl sub_02002628 - ldr r1, _020039DC ; =_020AEF7C - mov r2, #0 - strb r2, [r1, #3] - ldr r0, _020039E0 ; =_020AF000 - strb r2, [r1, #6] - bl sub_020029A0 - add r0, sp, #0 - bl sub_0200265C -_020039D4: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020039DC: .word _020AEF7C -_020039E0: .word _020AF000 - arm_func_end sub_02003990 - - arm_func_start sub_020039E4 -sub_020039E4: ; 0x020039E4 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _02003A34 ; =_020AEF7C - ldrb r0, [r0, #3] - cmp r0, #0 - beq _02003A2C - add r0, sp, #0 - mov r1, #0xb - bl sub_02002628 - ldr r1, _02003A34 ; =_020AEF7C - mov r2, #0 - ldr r0, _02003A38 ; =_020AF028 - strb r2, [r1, #6] - bl sub_020029A0 - ldr r0, _02003A3C ; =_020AF000 - bl sub_02002A44 - add r0, sp, #0 - bl sub_0200265C -_02003A2C: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02003A34: .word _020AEF7C -_02003A38: .word _020AF028 -_02003A3C: .word _020AF000 - arm_func_end sub_020039E4 - - arm_func_start sub_02003A40 -sub_02003A40: ; 0x02003A40 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - add r0, sp, #0 - mov r1, #0xb - bl sub_02002628 - ldr r1, _02003AAC ; =_020AEF7C - mov r2, #1 - ldrb r0, [r1, #0xa] - cmp r0, #0 - mov r0, #0 - beq _02003A7C - strb r0, [r1, #0xa] - strb r2, [r1, #7] - bl sub_02079888 - b _02003A90 -_02003A7C: - strb r2, [r1, #9] - bl sub_02079888 - ldr r0, _02003AAC ; =_020AEF7C - mov r1, #0 - strb r1, [r0, #9] -_02003A90: - ldr r1, _02003AAC ; =_020AEF7C - add r0, sp, #0 - ldrb r4, [r1] - bl sub_0200265C - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_02003AAC: .word _020AEF7C - arm_func_end sub_02003A40 - - arm_func_start sub_02003AB0 -sub_02003AB0: ; 0x02003AB0 - stmdb sp!, {r3, lr} - ldr r0, _02003AC8 ; =_020AF050 - bl sub_02002A44 - ldr r0, _02003ACC ; =_020AEF7C - ldr r0, [r0, #0x28] - ldmia sp!, {r3, pc} - .align 2, 0 -_02003AC8: .word _020AF050 -_02003ACC: .word _020AEF7C - arm_func_end sub_02003AB0 - - arm_func_start sub_02003AD0 -sub_02003AD0: ; 0x02003AD0 - stmdb sp!, {r3, lr} - ldr r0, _02003B50 ; =_020AEF7C - ldrb r0, [r0, #5] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl sub_02002580 - mov r1, #1 - bl sub_020027F8 - bl sub_02002580 - bl sub_02002860 - cmp r0, #0 - beq _02003B10 - ldr r0, _02003B54 ; =_020AF050 - bl sub_02002A44 - ldr r0, _02003B50 ; =_020AEF7C - ldr r0, [r0, #0x28] -_02003B10: - ldr r0, _02003B50 ; =_020AEF7C - mov r2, #1 - strb r2, [r0, #5] - ldrb r1, [r0, #0xf] - cmp r1, #0 - bne _02003B30 - strb r2, [r0, #0xf] - bl sub_020081C8 -_02003B30: - bl DisableAllInterrupts - ldr r0, _02003B58 ; =_0229B220 - bl sub_0207B584 - mov r0, #1 - mov r1, #0 - bl sub_02078A98 - bl EnableAllInterrupts - ldmia sp!, {r3, pc} - .align 2, 0 -_02003B50: .word _020AEF7C -_02003B54: .word _020AF050 -_02003B58: .word _0229B220 - arm_func_end sub_02003AD0 - - arm_func_start sub_02003B5C -sub_02003B5C: ; 0x02003B5C - ldr r0, _02003B8C ; =_020AEF7C - mov r1, #1 - ldrb r0, [r0, #0xb] - cmp r0, #0 - bne _02003B84 - ldr r0, _02003B90 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - moveq r1, #0 -_02003B84: - and r0, r1, #0xff - bx lr - .align 2, 0 -_02003B8C: .word _020AEF7C -_02003B90: .word 0x027FFFA8 - arm_func_end sub_02003B5C - - arm_func_start sub_02003B94 -sub_02003B94: ; 0x02003B94 - ldr r0, _02003BA8 ; =_020AEF7C - mov r1, #0 - strb r1, [r0, #1] - strb r1, [r0, #8] - bx lr - .align 2, 0 -_02003BA8: .word _020AEF7C - arm_func_end sub_02003B94 - - arm_func_start sub_02003BAC -sub_02003BAC: ; 0x02003BAC - ldr r0, _02003BC4 ; =_020AEF7C - mov r1, #0 - strb r1, [r0, #1] - mov r1, #1 - strb r1, [r0, #8] - bx lr - .align 2, 0 -_02003BC4: .word _020AEF7C - arm_func_end sub_02003BAC - - arm_func_start sub_02003BC8 -sub_02003BC8: ; 0x02003BC8 - stmdb sp!, {r3, lr} - bl SoundResume - ldr r0, _02003BE8 ; =_020AEF7C - mov r1, #1 - strb r1, [r0, #1] - mov r1, #0 - strb r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02003BE8: .word _020AEF7C - arm_func_end sub_02003BC8 - - arm_func_start sub_02003BEC -sub_02003BEC: ; 0x02003BEC - ldr r0, _02003BF8 ; =_020AEF7C - ldrb r0, [r0, #1] - bx lr - .align 2, 0 -_02003BF8: .word _020AEF7C - arm_func_end sub_02003BEC - - arm_func_start sub_02003BFC -sub_02003BFC: ; 0x02003BFC - stmdb sp!, {r3, lr} - ldr r0, _02003CB4 ; =_020AEF7C - ldrb r1, [r0, #1] - cmp r1, #0 - bne _02003CAC - ldrb r0, [r0, #4] - cmp r0, #0 - beq _02003C5C - bl sub_02003B5C - cmp r0, #0 - bne _02003C54 - ldr r0, _02003CB8 ; =_020924E8 - bl Debug_Print0 - ldr r0, _02003CBC ; =_0229B21C - ldrh r0, [r0, #2] - bl PlayBgmById - ldr r0, _02003CBC ; =_0229B21C - ldrh r0, [r0] - bl sub_02018024 - ldr r0, _02003CB4 ; =_020AEF7C - mov r1, #0 - strb r1, [r0, #4] -_02003C54: - mov r0, #1 - ldmia sp!, {r3, pc} -_02003C5C: - bl sub_02003B5C - cmp r0, #0 - beq _02003CAC - ldr r0, _02003CC0 ; =_020924F8 - bl Debug_Print0 - bl sub_02017DB4 - ldr r1, _02003CBC ; =_0229B21C - strh r0, [r1, #2] - bl sub_02017FF0 - ldr r1, _02003CBC ; =_0229B21C - strh r0, [r1] - bl StopBgmCommand - bl sub_02018118 - bl sub_02018278 - mov r0, #0x3f00 - bl sub_02018428 - ldr r1, _02003CB4 ; =_020AEF7C - mov r0, #1 - strb r0, [r1, #4] - ldmia sp!, {r3, pc} -_02003CAC: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02003CB4: .word _020AEF7C -_02003CB8: .word _020924E8 -_02003CBC: .word _0229B21C -_02003CC0: .word _020924F8 - arm_func_end sub_02003BFC - - arm_func_start SoundResume -SoundResume: ; 0x02003CC4 - stmdb sp!, {r3, lr} - ldr r0, _02003D20 ; =_020AEF7C - ldrb r1, [r0, #1] - cmp r1, #0 - bne _02003D18 - ldrb r0, [r0, #4] - cmp r0, #0 - beq _02003D18 - ldr r0, _02003D24 ; =_020924E8 - bl Debug_Print0 - ldr r0, _02003D28 ; =_0229B21C - ldrh r0, [r0, #2] - bl PlayBgmById - ldr r0, _02003D28 ; =_0229B21C - ldrh r0, [r0] - bl sub_02018024 - ldr r0, _02003D20 ; =_020AEF7C - mov r1, #0 - strb r1, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} -_02003D18: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02003D20: .word _020AEF7C -_02003D24: .word _020924E8 -_02003D28: .word _0229B21C - arm_func_end SoundResume diff --git a/asm/main_02003328.s b/asm/main_02003328.s new file mode 100644 index 00000000..d25eaeb5 --- /dev/null +++ b/asm/main_02003328.s @@ -0,0 +1,800 @@ + .include "asm/macros.inc" + .include "main_02003328.inc" + + .text + + arm_func_start TaskProcBoot +TaskProcBoot: ; 0x02003328 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r0, _020035CC ; =_020AF000 + bl sub_02002950 + ldr r0, _020035D0 ; =_020AF028 + bl sub_02002950 + ldr r0, _020035D4 ; =_020AF050 + bl sub_02002950 + ldr r0, _020035D8 ; =_020AEFDC + bl sub_02002C40 + bl sub_02006D4C + bl sub_02017D20 + ldr r2, _020035DC ; =_0229B248 + ldr r1, _020035E0 ; =_020AEF7C + ldr r0, _020035E4 ; =_020AF078 + str r2, [r1, #0x3c] + ldr r1, _020035E8 ; =_020AEFB4 + mov r2, #0 + bl sub_02002778 + ldr r0, _020035E4 ; =_020AF078 + bl sub_020027E8 + bl sub_0207B370 + ldr r0, _020035EC ; =_0229B220 + bl sub_0207B4A4 + mov r1, #0 + str r1, [sp] + ldr r0, _020035EC ; =_0229B220 + mov r2, #0x64 + ldr r3, _020035F0 ; =sub_02003754 + bl sub_0207B4B8 + mov r0, #1 + ldr r1, _020035F4 ; =sub_02003704 + bl sub_02078A98 + mov r0, #1 + bl sub_02078C68 + bl EnableAllInterrupts + mov r0, #1 + bl GX_VBlankIntr + ldr r0, _020035F8 ; =_020AF154 + ldr r1, _020035E0 ; =_020AEF7C + ldr r2, _020035FC ; =_0229F248 + str r0, [r1, #0x24] + str r2, [r1, #0x50] + ldr r1, _02003600 ; =_020AEFC8 + mov r2, #0 + bl sub_02002778 + ldr r0, _020035F8 ; =_020AF154 + bl sub_020027E8 + bl sub_02002580 + ldr r2, _020035E0 ; =_020AEF7C + mov r1, #0xf + str r0, [r2, #0x34] + bl sub_020027F8 + ldr r0, _020035E0 ; =_020AEF7C + mov r1, #2 + ldr r0, [r0, #0x34] + bl sub_02002858 + mov sl, #0 + ldr r1, _020035E0 ; =_020AEF7C + ldr r0, _02003604 ; =_020924D8 + strb sl, [r1, #5] + bl Debug_Print0 + mov r8, #1 + ldr r4, _020035E0 ; =_020AEF7C + mov r6, sl + mov sb, sl + mov r7, r8 + mov r5, sl + mov fp, r8 +_0200343C: + add r0, sp, #4 + mov r1, #0xb + bl sub_02002628 + ldrb r0, [r4, #7] + cmp r0, #0 + strneb sb, [r4, #7] + bne _02003460 + ldr r0, _020035D4 ; =_020AF050 + bl sub_02002A44 +_02003460: + cmp sl, #0 + beq _020034A8 + ldrb r0, [r4, #6] + cmp r0, #0 + ldrneb r0, [r4] + cmpne r0, #0 + beq _020034C8 + ldr r0, _020035CC ; =_020AF000 + strb r8, [r4, #3] + bl sub_020029A0 + ldr r0, _020035D0 ; =_020AF028 + bl sub_02002A44 + bl sub_02002670 + ldr r0, [r4, #0x10] + cmp r0, #0 + moveq sl, #0 + bl sub_020026B8 + b _020034C8 +_020034A8: + bl sub_02002670 + ldr sl, [r4, #0x10] + bl sub_020026B8 + cmp sl, #0 + beq _020034C8 + ldr r0, _020035D0 ; =_020AF028 + strb r7, [r4, #3] + bl sub_02002A44 +_020034C8: + add r0, sp, #4 + bl sub_0200265C + bl sub_02002670 + ldr r0, [r4, #0x10] + cmp r0, #0 + movne sl, r0 + cmp sl, #0 + beq _02003518 + ldrb r0, [r4, #3] + cmp r0, #0 + strneb r6, [r4] + str sl, [r4, #0x18] + bl sub_020026B8 + ldr r0, [r4, #0x30] + add r0, r0, #1 + str r0, [r4, #0x30] + bl sub_02006098 + blx sl + strb r0, [r4, #6] + b _02003530 +_02003518: + bl sub_020026B8 + bl sub_02003A40 + bl sub_02002670 + str r5, [r4, #0x18] + strb fp, [r4, #6] + bl sub_020026B8 +_02003530: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02003544 + mov r0, #0 + bl sub_020025F8 +_02003544: + ldrb r0, [r4, #2] + cmp r0, #0 + beq _0200343C + bl sub_02003B5C + cmp r0, #0 + beq _020035A8 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02003584 + mov r0, #0 + mov r1, #0 + strb r0, [r4, #0xb] + mov r0, #0xc + mov r2, r1 + bl sub_020820E8 + b _0200343C +_02003584: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0200343C + mov r0, #0 + bl sub_02082420 + cmp r0, #0 + movne r0, #1 + strne r0, [r4, #0x14] + b _0200343C +_020035A8: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _0200343C + mov r0, #1 + bl sub_02082420 + cmp r0, #0 + movne r0, #0 + strne r0, [r4, #0x14] + b _0200343C + .align 2, 0 +_020035CC: .word _020AF000 +_020035D0: .word _020AF028 +_020035D4: .word _020AF050 +_020035D8: .word _020AEFDC +_020035DC: .word _0229B248 +_020035E0: .word _020AEF7C +_020035E4: .word _020AF078 +_020035E8: .word _020AEFB4 +_020035EC: .word _0229B220 +_020035F0: .word sub_02003754 +_020035F4: .word sub_02003704 +_020035F8: .word _020AF154 +_020035FC: .word _0229F248 +_02003600: .word _020AEFC8 +_02003604: .word _020924D8 + arm_func_end TaskProcBoot + + arm_func_start EnableAllInterrupts +EnableAllInterrupts: ; 0x02003608 + ldr r2, _0200361C ; =0x04000208 + mov r1, #1 + ldrh r0, [r2] + strh r1, [r2] + bx lr + .align 2, 0 +_0200361C: .word 0x04000208 + arm_func_end EnableAllInterrupts + + arm_func_start sub_02003620 +sub_02003620: ; 0x02003620 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov r7, #0 + ldr fp, _020036FC ; =_020AF050 + ldr r4, _02003700 ; =_020AEF7C + add r6, sp, #0 + add r5, sp, #4 + mov r8, #1 + mov sb, r7 + mov sl, r7 +_02003648: + mov r0, sl + bl sub_02079888 + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02003674 + mov r0, sb + bl HaltProcessDisp + b _02003688 +_02003674: + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _02003688 + mov r0, r8 + bl HaltProcessDisp +_02003688: + ldrb r0, [r4, #1] + cmp r0, #0 + bne _020036AC + bl sub_02003B5C + cmp r0, #0 + beq _020036AC + ldrb r0, [r4, #8] + cmp r0, #0 + beq _020036E8 +_020036AC: + bl sub_02006DEC + bl Rand16Bit + mov r0, r7 + mov r1, r6 + bl GetHeldButtons + mov r0, r5 + bl GetReleasedStylus + ldrh r0, [sp] + cmp r0, #0 + bne _020036E0 + ldrh r0, [sp, #4] + tst r0, #1 + beq _020036EC +_020036E0: + bl Rand16Bit + b _020036EC +_020036E8: + bl KeyWaitInit +_020036EC: + mov r0, fp + bl sub_020029B8 + bl sub_0201849C + b _02003648 + .align 2, 0 +_020036FC: .word _020AF050 +_02003700: .word _020AEF7C + arm_func_end sub_02003620 + + arm_func_start sub_02003704 +sub_02003704: ; 0x02003704 + stmdb sp!, {r3, lr} + ldr r0, _0200374C ; =OS_IRQTable + ldr r1, _02003750 ; =_020AEF7C + add r0, r0, #0x3000 + ldr r2, [r0, #0xff8] + orr r2, r2, #1 + str r2, [r0, #0xff8] + ldr r0, [r1, #0x20] + add r0, r0, #1 + str r0, [r1, #0x20] + ldrb r0, [r1, #9] + cmp r0, #0 + beq _02003744 + ldr r0, [r1, #0x34] + ldr r0, [r0] + bl sub_02079940 +_02003744: + bl sub_020082E0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0200374C: .word OS_IRQTable +_02003750: .word _020AEF7C + arm_func_end sub_02003704 + + arm_func_start sub_02003754 +sub_02003754: ; 0x02003754 + ldr r1, _02003774 ; =_020AEF7C + ldr r0, _02003778 ; =_020AF078 + ldr r2, [r1, #0x1c] + ldr ip, _0200377C ; =sub_02079940 + add r2, r2, #1 + ldr r0, [r0] + str r2, [r1, #0x1c] + bx ip + .align 2, 0 +_02003774: .word _020AEF7C +_02003778: .word _020AF078 +_0200377C: .word sub_02079940 + arm_func_end sub_02003754 + + arm_func_start sub_02003780 +sub_02003780: ; 0x02003780 + stmdb sp!, {r3, lr} + bl sub_02005EAC + ldr r0, _020037A0 ; =_020AEF7C + mov r1, #1 + strb r1, [r0] + bl MainLoop + bl WaitForever + ldmia sp!, {r3, pc} + .align 2, 0 +_020037A0: .word _020AEF7C + arm_func_end sub_02003780 + + arm_func_start sub_020037A4 +sub_020037A4: ; 0x020037A4 + ldr r0, _020037B0 ; =_020AEF7C + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 +_020037B0: .word _020AEF7C + arm_func_end sub_020037A4 + + arm_func_start GetTime +GetTime: ; 0x020037B4 + stmdb sp!, {r3, r4, r5, lr} + bl DisableAllInterrupts + ldr r0, _02003818 ; =_020AEF7C + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _020037D8 + bl EnableAllInterrupts + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_020037D8: + ldr r1, _0200381C ; =0x04000006 + ldr r4, [r0, #0x1c] + ldrh r5, [r1] + bl EnableAllInterrupts + mov r0, r4 + bl _fflt + mov r4, r0 + mov r0, r5 + bl _fflt + mov r1, r0 + ldr r0, _02003820 ; =0x3B792FB2 + bl _fmul + mov r1, r0 + mov r0, r4 + bl _fadd + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02003818: .word _020AEF7C +_0200381C: .word 0x04000006 +_02003820: .word 0x3B792FB2 + arm_func_end GetTime + + arm_func_start DisableAllInterrupts +DisableAllInterrupts: ; 0x02003824 + ldr r2, _02003838 ; =0x04000208 + mov r1, #0 + ldrh r0, [r2] + strh r1, [r2] + bx lr + .align 2, 0 +_02003838: .word 0x04000208 + arm_func_end DisableAllInterrupts + + arm_func_start sub_0200383C +sub_0200383C: ; 0x0200383C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + add r0, sp, #0 + mov r1, #0xb + bl sub_02002628 + bl sub_02002670 + ldr r0, _020038CC ; =_020AEF7C + mov r1, #1 + strb r1, [r0, #2] + ldr r4, [r0, #0x10] + str r5, [r0, #0x10] + bl sub_020026B8 + cmp r5, #0 + bne _02003898 + cmp r4, #0 + beq _020038BC + ldr r1, _020038CC ; =_020AEF7C + mov r2, #0 + ldr r0, _020038D0 ; =_020AF028 + strb r2, [r1, #3] + bl sub_020029A0 + b _020038BC +_02003898: + cmp r4, #0 + bne _020038BC + ldr r1, _020038CC ; =_020AEF7C + mov r2, #1 + ldr r0, _020038D0 ; =_020AF028 + strb r2, [r1] + bl sub_020029A0 + ldr r0, _020038D4 ; =_020AF000 + bl sub_02002A44 +_020038BC: + add r0, sp, #0 + bl sub_0200265C + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020038CC: .word _020AEF7C +_020038D0: .word _020AF028 +_020038D4: .word _020AF000 + arm_func_end sub_0200383C + + arm_func_start sub_020038D8 +sub_020038D8: ; 0x020038D8 + ldr r0, _020038E4 ; =_020AEF7C + ldrb r0, [r0, #3] + bx lr + .align 2, 0 +_020038E4: .word _020AEF7C + arm_func_end sub_020038D8 + + arm_func_start sub_020038E8 +sub_020038E8: ; 0x020038E8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r0, sp, #0 + mov r1, #0xb + bl sub_02002628 + bl sub_02002670 + ldr r0, _02003988 ; =_020AEF7C + ldr r4, [r0, #0x18] + bl sub_020026B8 + cmp r4, #0 + beq _02003944 + ldr r0, _02003988 ; =_020AEF7C + mov r1, #1 + strb r1, [r0] + ldrb r1, [r0, #7] + cmp r1, #0 + beq _02003938 + ldr r0, [r0, #0x34] + ldr r0, [r0] + bl sub_02079940 +_02003938: + ldr r0, _0200398C ; =_020AF000 + bl sub_02002A44 + b _02003950 +_02003944: + ldr r0, _02003988 ; =_020AEF7C + mov r1, #0 + strb r1, [r0, #7] +_02003950: + ldr r1, _02003988 ; =_020AEF7C + add r0, sp, #0 + ldr r2, [r1, #0x2c] + add r2, r2, #1 + str r2, [r1, #0x2c] + bl sub_0200265C + ldr r0, _02003988 ; =_020AEF7C + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _02003980 + mov r0, #0 + bl sub_020025F8 +_02003980: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02003988: .word _020AEF7C +_0200398C: .word _020AF000 + arm_func_end sub_020038E8 + + arm_func_start sub_02003990 +sub_02003990: ; 0x02003990 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _020039DC ; =_020AEF7C + ldrb r0, [r0, #3] + cmp r0, #0 + beq _020039D4 + add r0, sp, #0 + mov r1, #0xb + bl sub_02002628 + ldr r1, _020039DC ; =_020AEF7C + mov r2, #0 + strb r2, [r1, #3] + ldr r0, _020039E0 ; =_020AF000 + strb r2, [r1, #6] + bl sub_020029A0 + add r0, sp, #0 + bl sub_0200265C +_020039D4: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_020039DC: .word _020AEF7C +_020039E0: .word _020AF000 + arm_func_end sub_02003990 + + arm_func_start sub_020039E4 +sub_020039E4: ; 0x020039E4 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _02003A34 ; =_020AEF7C + ldrb r0, [r0, #3] + cmp r0, #0 + beq _02003A2C + add r0, sp, #0 + mov r1, #0xb + bl sub_02002628 + ldr r1, _02003A34 ; =_020AEF7C + mov r2, #0 + ldr r0, _02003A38 ; =_020AF028 + strb r2, [r1, #6] + bl sub_020029A0 + ldr r0, _02003A3C ; =_020AF000 + bl sub_02002A44 + add r0, sp, #0 + bl sub_0200265C +_02003A2C: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02003A34: .word _020AEF7C +_02003A38: .word _020AF028 +_02003A3C: .word _020AF000 + arm_func_end sub_020039E4 + + arm_func_start sub_02003A40 +sub_02003A40: ; 0x02003A40 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r0, sp, #0 + mov r1, #0xb + bl sub_02002628 + ldr r1, _02003AAC ; =_020AEF7C + mov r2, #1 + ldrb r0, [r1, #0xa] + cmp r0, #0 + mov r0, #0 + beq _02003A7C + strb r0, [r1, #0xa] + strb r2, [r1, #7] + bl sub_02079888 + b _02003A90 +_02003A7C: + strb r2, [r1, #9] + bl sub_02079888 + ldr r0, _02003AAC ; =_020AEF7C + mov r1, #0 + strb r1, [r0, #9] +_02003A90: + ldr r1, _02003AAC ; =_020AEF7C + add r0, sp, #0 + ldrb r4, [r1] + bl sub_0200265C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02003AAC: .word _020AEF7C + arm_func_end sub_02003A40 + + arm_func_start sub_02003AB0 +sub_02003AB0: ; 0x02003AB0 + stmdb sp!, {r3, lr} + ldr r0, _02003AC8 ; =_020AF050 + bl sub_02002A44 + ldr r0, _02003ACC ; =_020AEF7C + ldr r0, [r0, #0x28] + ldmia sp!, {r3, pc} + .align 2, 0 +_02003AC8: .word _020AF050 +_02003ACC: .word _020AEF7C + arm_func_end sub_02003AB0 + + arm_func_start sub_02003AD0 +sub_02003AD0: ; 0x02003AD0 + stmdb sp!, {r3, lr} + ldr r0, _02003B50 ; =_020AEF7C + ldrb r0, [r0, #5] + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl sub_02002580 + mov r1, #1 + bl sub_020027F8 + bl sub_02002580 + bl sub_02002860 + cmp r0, #0 + beq _02003B10 + ldr r0, _02003B54 ; =_020AF050 + bl sub_02002A44 + ldr r0, _02003B50 ; =_020AEF7C + ldr r0, [r0, #0x28] +_02003B10: + ldr r0, _02003B50 ; =_020AEF7C + mov r2, #1 + strb r2, [r0, #5] + ldrb r1, [r0, #0xf] + cmp r1, #0 + bne _02003B30 + strb r2, [r0, #0xf] + bl sub_020081C8 +_02003B30: + bl DisableAllInterrupts + ldr r0, _02003B58 ; =_0229B220 + bl sub_0207B584 + mov r0, #1 + mov r1, #0 + bl sub_02078A98 + bl EnableAllInterrupts + ldmia sp!, {r3, pc} + .align 2, 0 +_02003B50: .word _020AEF7C +_02003B54: .word _020AF050 +_02003B58: .word _0229B220 + arm_func_end sub_02003AD0 + + arm_func_start sub_02003B5C +sub_02003B5C: ; 0x02003B5C + ldr r0, _02003B8C ; =_020AEF7C + mov r1, #1 + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _02003B84 + ldr r0, _02003B90 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + moveq r1, #0 +_02003B84: + and r0, r1, #0xff + bx lr + .align 2, 0 +_02003B8C: .word _020AEF7C +_02003B90: .word 0x027FFFA8 + arm_func_end sub_02003B5C + + arm_func_start sub_02003B94 +sub_02003B94: ; 0x02003B94 + ldr r0, _02003BA8 ; =_020AEF7C + mov r1, #0 + strb r1, [r0, #1] + strb r1, [r0, #8] + bx lr + .align 2, 0 +_02003BA8: .word _020AEF7C + arm_func_end sub_02003B94 + + arm_func_start sub_02003BAC +sub_02003BAC: ; 0x02003BAC + ldr r0, _02003BC4 ; =_020AEF7C + mov r1, #0 + strb r1, [r0, #1] + mov r1, #1 + strb r1, [r0, #8] + bx lr + .align 2, 0 +_02003BC4: .word _020AEF7C + arm_func_end sub_02003BAC + + arm_func_start sub_02003BC8 +sub_02003BC8: ; 0x02003BC8 + stmdb sp!, {r3, lr} + bl SoundResume + ldr r0, _02003BE8 ; =_020AEF7C + mov r1, #1 + strb r1, [r0, #1] + mov r1, #0 + strb r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_02003BE8: .word _020AEF7C + arm_func_end sub_02003BC8 + + arm_func_start sub_02003BEC +sub_02003BEC: ; 0x02003BEC + ldr r0, _02003BF8 ; =_020AEF7C + ldrb r0, [r0, #1] + bx lr + .align 2, 0 +_02003BF8: .word _020AEF7C + arm_func_end sub_02003BEC + + arm_func_start sub_02003BFC +sub_02003BFC: ; 0x02003BFC + stmdb sp!, {r3, lr} + ldr r0, _02003CB4 ; =_020AEF7C + ldrb r1, [r0, #1] + cmp r1, #0 + bne _02003CAC + ldrb r0, [r0, #4] + cmp r0, #0 + beq _02003C5C + bl sub_02003B5C + cmp r0, #0 + bne _02003C54 + ldr r0, _02003CB8 ; =_020924E8 + bl Debug_Print0 + ldr r0, _02003CBC ; =_0229B21C + ldrh r0, [r0, #2] + bl PlayBgmById + ldr r0, _02003CBC ; =_0229B21C + ldrh r0, [r0] + bl sub_02018024 + ldr r0, _02003CB4 ; =_020AEF7C + mov r1, #0 + strb r1, [r0, #4] +_02003C54: + mov r0, #1 + ldmia sp!, {r3, pc} +_02003C5C: + bl sub_02003B5C + cmp r0, #0 + beq _02003CAC + ldr r0, _02003CC0 ; =_020924F8 + bl Debug_Print0 + bl sub_02017DB4 + ldr r1, _02003CBC ; =_0229B21C + strh r0, [r1, #2] + bl sub_02017FF0 + ldr r1, _02003CBC ; =_0229B21C + strh r0, [r1] + bl StopBgmCommand + bl sub_02018118 + bl sub_02018278 + mov r0, #0x3f00 + bl sub_02018428 + ldr r1, _02003CB4 ; =_020AEF7C + mov r0, #1 + strb r0, [r1, #4] + ldmia sp!, {r3, pc} +_02003CAC: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02003CB4: .word _020AEF7C +_02003CB8: .word _020924E8 +_02003CBC: .word _0229B21C +_02003CC0: .word _020924F8 + arm_func_end sub_02003BFC + + arm_func_start SoundResume +SoundResume: ; 0x02003CC4 + stmdb sp!, {r3, lr} + ldr r0, _02003D20 ; =_020AEF7C + ldrb r1, [r0, #1] + cmp r1, #0 + bne _02003D18 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _02003D18 + ldr r0, _02003D24 ; =_020924E8 + bl Debug_Print0 + ldr r0, _02003D28 ; =_0229B21C + ldrh r0, [r0, #2] + bl PlayBgmById + ldr r0, _02003D28 ; =_0229B21C + ldrh r0, [r0] + bl sub_02018024 + ldr r0, _02003D20 ; =_020AEF7C + mov r1, #0 + strb r1, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} +_02003D18: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02003D20: .word _020AEF7C +_02003D24: .word _020924E8 +_02003D28: .word _0229B21C + arm_func_end SoundResume diff --git a/include/main_0200330C.h b/include/main_0200330C.h new file mode 100644 index 00000000..2f1c7d51 --- /dev/null +++ b/include/main_0200330C.h @@ -0,0 +1,15 @@ +#ifndef PMDSKY_MAIN_0200330C_H +#define PMDSKY_MAIN_0200330C_H + +void ZInit8(int* ptr); +u8 PointsToZero(int* ptr); +void MemZero(u8* ptr, s32 len); +void MemZero16(u16* ptr, s32 len); +void MemZero32(u32* ptr, s32 len); +void MemsetSimple(u8* ptr, u8 val, s32 len); +void Memset32(u32* ptr, u32 val, s32 len); +void MemcpySimple(u8* dest, u8* src, s32 n); +void Memcpy16(u16* dest, u16* src, s32 n); +void Memcpy32(u32* dest, u32* src, s32 n); + +#endif //PMDSKY_MAIN_0200330C_H diff --git a/main.lsf b/main.lsf index efd1d9ac..20645a6b 100644 --- a/main.lsf +++ b/main.lsf @@ -11,6 +11,8 @@ Static main StackSize 0 2048 Object src/main_02000C6C.o Object asm/main_02000DE0.o + Object src/main_0200330C.o + Object asm/main_02003328.o Object src/main_02003D2C.o Object asm/main_02003DB8.o Object src/main_02008210.o diff --git a/src/main_0200330C.c b/src/main_0200330C.c new file mode 100644 index 00000000..ea80e35a --- /dev/null +++ b/src/main_0200330C.c @@ -0,0 +1,75 @@ +#include "main_0200330C.h" + +void ZInit8(int* ptr) +{ + ptr[0]=0; + ptr[1]=0; +} + +u8 PointsToZero(int* ptr) +{ + if (*ptr == 0) { + return 1; + } else { + return 0; + } +} + +void MemZero(u8* ptr, s32 len) { + while (len>0) { + len-=1; + *ptr++=0; + } +} + +void MemZero16(u16* ptr, s32 len) { + while (len>0) { + len-=2; + *ptr++=0; + } +} + +void MemZero32(u32* ptr, s32 len) { + while (len>0) { + len-=4; + *ptr++=0; + } +} + +void MemsetSimple(u8* ptr, u8 val, s32 len) { + while (len>0) { + len--; + *ptr++=val; + } +} + +void Memset32(u32* ptr, u32 val, s32 len) { + while (len>0) { + len-=4; + *ptr++=val; + } +} + +void MemcpySimple(u8* dest, u8* src, s32 n) +{ + while (n>0) { + *dest++ = *src++; + n -= 1; + } +} + +void Memcpy16(u16* dest, u16* src, s32 n) +{ + while (n>0) { + *dest++ = *src++; + n -= 2; + } +} + +void Memcpy32(u32* dest, u32* src, s32 n) +{ + while (n>0) { + *dest++ = *src++; + n -= 4; + } +}