mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
170 lines
3.1 KiB
ArmAsm
170 lines
3.1 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "lib/asm/include/crt0.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start _start
|
|
_start: ; 0x02380000
|
|
mov ip, #0x4000000
|
|
str ip, [ip, #0x208]
|
|
ldr r1, _023800E4 ; =SDK_AUTOLOAD_START
|
|
mov r0, #0x3800000
|
|
cmp r0, r1
|
|
bpl _0238001C
|
|
b _02380020
|
|
_0238001C:
|
|
mov r1, r0
|
|
_02380020:
|
|
ldr r2, _023800E8 ; =0x0380FF00
|
|
mov r0, #0
|
|
_02380028:
|
|
cmp r1, r2
|
|
blt _02380034
|
|
b _02380038
|
|
_02380034:
|
|
stmia r1!, {r0}
|
|
_02380038:
|
|
blt _02380028
|
|
mov r0, #0x13
|
|
msr cpsr_c, r0
|
|
ldr sp, _023800EC ; =0x0380FFC0
|
|
mov r0, #0x12
|
|
msr cpsr_c, r0
|
|
ldr r0, _023800F0 ; =0x0380FF80
|
|
mov sp, r0
|
|
ldr r1, _023800F4 ; =0x00000400
|
|
sub r1, r0, r1
|
|
mov r0, #0x1f
|
|
msr cpsr_fsxc, r0
|
|
sub sp, r1, #4
|
|
ldr r0, _023800F8 ; =0x023FE940
|
|
ldr r1, _023800FC ; =0x027FFA80
|
|
add r2, r1, #0x160
|
|
_02380078:
|
|
ldr r3, [r0], #4
|
|
str r3, [r1], #4
|
|
cmp r1, r2
|
|
bmi _02380078
|
|
ldr r0, _02380100 ; =0x023FE904
|
|
add r2, r1, #0x20
|
|
_02380090:
|
|
ldr r3, [r0], #4
|
|
str r3, [r1], #4
|
|
cmp r1, r2
|
|
bmi _02380090
|
|
bl do_autoload
|
|
ldr r0, _02380104 ; =_start_ModuleParams
|
|
ldr r1, [r0, #0xc]
|
|
ldr r2, [r0, #0x10]
|
|
mov r0, #0
|
|
_023800B4:
|
|
cmp r1, r2
|
|
blo _023800C0
|
|
b _023800C4
|
|
_023800C0:
|
|
str r0, [r1], #4
|
|
_023800C4:
|
|
blo _023800B4
|
|
bl sub_0238018C
|
|
ldr r1, _02380108 ; =0x0380FFFC
|
|
ldr r0, _0238010C ; =HardwareInterrupt
|
|
str r0, [r1]
|
|
ldr r1, _02380110 ; =NitroSpMain
|
|
ldr lr, _02380114 ; =0xFFFF0000
|
|
bx r1
|
|
.align 2, 0
|
|
_023800E4: .word SDK_AUTOLOAD_START
|
|
_023800E8: .word 0x0380FF00
|
|
_023800EC: .word 0x0380FFC0
|
|
_023800F0: .word 0x0380FF80
|
|
_023800F4: .word 0x00000400
|
|
_023800F8: .word 0x023FE940
|
|
_023800FC: .word 0x027FFA80
|
|
_02380100: .word 0x023FE904
|
|
_02380104: .word _start_ModuleParams
|
|
_02380108: .word 0x0380FFFC
|
|
_0238010C: .word HardwareInterrupt
|
|
_02380110: .word NitroSpMain
|
|
_02380114: .word 0xFFFF0000
|
|
arm_func_end _start
|
|
|
|
arm_func_start do_autoload
|
|
do_autoload: ; 0x02380118
|
|
ldr r0, _02380184 ; =_start_ModuleParams
|
|
ldr r1, [r0]
|
|
ldr r2, [r0, #4]
|
|
ldr r3, [r0, #8]
|
|
_02380128:
|
|
cmp r1, r2
|
|
beq _02380180
|
|
ldr r4, [r1], #4
|
|
ldr r5, [r1], #4
|
|
add r6, r4, r5
|
|
_0238013C:
|
|
cmp r4, r6
|
|
bmi _02380148
|
|
b _0238014C
|
|
_02380148:
|
|
ldr r7, [r3], #4
|
|
_0238014C:
|
|
bmi _02380154
|
|
b _02380158
|
|
_02380154:
|
|
str r7, [r4], #4
|
|
_02380158:
|
|
bmi _0238013C
|
|
ldr r5, [r1], #4
|
|
add r6, r4, r5
|
|
mov r7, #0
|
|
_02380168:
|
|
cmp r4, r6
|
|
blo _02380174
|
|
b _02380178
|
|
_02380174:
|
|
str r7, [r4], #4
|
|
_02380178:
|
|
blo _02380168
|
|
beq _02380128
|
|
_02380180:
|
|
b _start_AutoloadDoneCallback
|
|
.align 2, 0
|
|
_02380184: .word _start_ModuleParams
|
|
arm_func_end do_autoload
|
|
|
|
arm_func_start _start_AutoloadDoneCallback
|
|
_start_AutoloadDoneCallback: ; 0x02380188
|
|
bx lr
|
|
arm_func_end _start_AutoloadDoneCallback
|
|
|
|
arm_func_start sub_0238018C
|
|
sub_0238018C: ; 0x0238018C
|
|
mov r0, #1
|
|
mov r1, #0
|
|
ldr r2, _023801CC ; =0x027FFFFA
|
|
sub r3, r2, #0x400000
|
|
_0238019C:
|
|
strh r1, [r2]
|
|
ldrh ip, [r3]
|
|
cmp r1, ip
|
|
bne _023801B0
|
|
b _023801B4
|
|
_023801B0:
|
|
mov r0, #2
|
|
_023801B4:
|
|
bne _023801C4
|
|
add r1, r1, #1
|
|
cmp r1, #2
|
|
bne _0238019C
|
|
_023801C4:
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_023801CC: .word 0x027FFFFA
|
|
arm_func_end sub_0238018C
|
|
_start_ModuleParams:
|
|
.word SDK_AUTOLOAD_LIST
|
|
.word SDK_AUTOLOAD_LIST_END
|
|
.word SDK_AUTOLOAD_START
|
|
.word SDK_STATIC_BSS_START
|
|
.word SDK_STATIC_BSS_END
|