Files
2020-05-31 16:12:50 +01:00

392 lines
6.8 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start FUN_037F8000
FUN_037F8000: ; 0x037F8000
stmfd sp!, {lr}
sub sp, sp, #4
ldr r0, _037F8028 ; =PMi_Initialized
ldr r0, [r0]
cmp r0, #0
beq _037F801C
bl PM_SelfBlinkProc
_037F801C:
add sp, sp, #4
ldmia sp!, {lr}
bx lr
_037F8028: .word PMi_Initialized
arm_func_start FUN_037F802C
FUN_037F802C: ; 0x037F802C
stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
mov r8, #0
bl FUN_037F81E8
cmp r0, #0
beq _037F80F8
bl FUN_037F81C4
mov r7, r0
mov r9, r8
mov r4, #1
mov fp, #138 ; 0x8a
mov r5, #112 ; 0x70
_037F8060:
add r6, sl, r9, lsl #8
ldr r0, _037F81B4 ; =0x0000FFFF
mov r1, r6
mov r2, r5
bl FUN_037F81B8
mov r2, r6
ldrh r1, [r2, #114] ; 0x72
cmp r0, r1
bne _037F80E0
ldrh r0, [r2, #112] ; 0x70
cmp r0, #128 ; 0x80
bcs _037F80E0
ldr r0, _037F81B4 ; =0x0000FFFF
add r1, r6, #116 ; 0x74
mov r2, fp
bl FUN_037F81B8
mov r3, r6
ldrh r1, [r3, #254] ; 0xfe
cmp r0, r1
bne _037F80E0
ldrh r2, [r3, #118] ; 0x76
ldrb r0, [r3, #117] ; 0x75
mov r1, r4, lsl r0
ands r1, r1, r2
beq _037F80E0
ands r1, r7, r2
ldrneh r1, [r6, #100] ; 0x64
bicne r1, r1, #7
andne r0, r0, #7
orrne r0, r1, r0
strneh r0, [r6, #100] ; 0x64
orr r8, r8, r4, lsl r9
_037F80E0:
add r0, r9, #1
mov r0, r0, lsl #16
mov r9, r0, lsr #16
cmp r9, #2
bcc _037F8060
b _037F8158
_037F80F8:
bl FUN_037F81C4
cmp r0, #0
movne r0, #3
bne _037F81A8
mov r7, r8
mov r4, #1
ldr r6, _037F81B4 ; =0x0000FFFF
mov r5, #112 ; 0x70
_037F8118:
mov r0, r6
add r1, sl, r7, lsl #8
mov r2, r5
bl FUN_037F81B8
add r2, sl, r7, lsl #8
ldrh r1, [r2, #114] ; 0x72
cmp r0, r1
bne _037F8144
ldrh r0, [r2, #112] ; 0x70
cmp r0, #128 ; 0x80
orrcc r8, r8, r4, lsl r7
_037F8144:
add r0, r7, #1
mov r0, r0, lsl #16
mov r7, r0, lsr #16
cmp r7, #2
bcc _037F8118
_037F8158:
cmp r8, #1
beq _037F8174
cmp r8, #2
beq _037F8174
cmp r8, #3
beq _037F817C
b _037F81A4
_037F8174:
mov r0, r8
b _037F81A8
_037F817C:
ldrh r0, [sl, #112] ; 0x70
add r0, r0, #1
and r0, r0, #127 ; 0x7f
and r1, r0, #255 ; 0xff
add r0, sl, #256 ; 0x100
ldrh r0, [r0, #112] ; 0x70
cmp r1, r0
moveq r0, #2
movne r0, #1
b _037F81A8
_037F81A4:
mov r0, #0
_037F81A8:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
bx lr
_037F81B4: .word 0x0000FFFF
arm_func_start FUN_037F81B8
FUN_037F81B8: ; 0x037F81B8
ldr ip, _037F81C0 ; =SVC_GetCRC16
bx ip
_037F81C0: .word SVC_GetCRC16
arm_func_start FUN_037F81C4
FUN_037F81C4: ; 0x037F81C4
mov r0, #0
ldr r1, _037F81E4 ; =0x027FFE1D
ldrb r1, [r1]
cmp r1, #128 ; 0x80
orreq r0, r0, #64 ; 0x40
moveq r0, r0, lsl #16
moveq r0, r0, lsr #16
bx lr
_037F81E4: .word 0x027FFE1D
arm_func_start FUN_037F81E8
FUN_037F81E8: ; 0x037F81E8
stmfd sp!, {lr}
sub sp, sp, #4
mov r0, #29
mov r1, #1
add r2, sp, #0
bl NVRAM_ReadDataBytes
ldrb r0, [sp]
cmp r0, #255 ; 0xff
moveq r0, #0
beq _037F821C
ands r0, r0, #64 ; 0x40
movne r0, #1
moveq r0, #0
_037F821C:
add sp, sp, #4
ldmia sp!, {lr}
bx lr
arm_func_start FUN_037F8228
FUN_037F8228: ; 0x037F8228
stmdb sp!, {r4, lr}
sub sp, sp, #528 ; 0x210
mov r0, #32
mov r1, #2
add r2, sp, #4
bl NVRAM_ReadDataBytes
ldr r0, [sp, #4]
mov r0, r0, lsl #3
str r0, [sp, #4]
mov r1, #256 ; 0x100
add r2, sp, #16
bl NVRAM_ReadDataBytes
ldr r0, [sp, #4]
add r0, r0, #256 ; 0x100
mov r1, #256 ; 0x100
add r2, sp, #272 ; 0x110
bl NVRAM_ReadDataBytes
add r0, sp, #16
bl FUN_037F802C
cmp r0, #3
blt _037F8290
mvn r0, #0
ldr r1, _037F83A4 ; =0x027FFC80
mov r2, #116 ; 0x74
bl MIi_CpuClear32
b _037F834C
_037F8290:
cmp r0, #0
beq _037F833C
mov r2, r0, lsl #8
ldr r1, _037F83A8 ; =0xFFFFFF2A
add r1, sp, r1
ldrb r1, [r1, r0, lsl #8]
cmp r1, #10
bcs _037F82DC
mov ip, #10
mov r3, #0
add r1, sp, #16
add r2, r1, r2
b _037F82D0
_037F82C4:
add r1, r2, ip, lsl #1
strh r3, [r1, #-252] ; 0xffffff04
sub ip, ip, #1
_037F82D0:
ldrb r1, [r2, #-230] ; 0xffffff1a
cmp ip, r1
bgt _037F82C4
_037F82DC:
mov r2, r0, lsl #8
ldr r1, _037F83AC ; =0xFFFFFF60
add r1, sp, r1
ldrb r1, [r1, r0, lsl #8]
cmp r1, #26
bcs _037F8320
mov ip, #26
mov r3, #0
add r1, sp, #16
add r2, r1, r2
b _037F8314
_037F8308:
add r1, r2, ip, lsl #1
strh r3, [r1, #-230] ; 0xffffff1a
sub ip, ip, #1
_037F8314:
ldrb r1, [r2, #-176] ; 0xffffff50
cmp ip, r1
bgt _037F8308
_037F8320:
add r1, sp, #16
sub r0, r0, #1
add r0, r1, r0, lsl #8
ldr r1, _037F83A4 ; =0x027FFC80
mov r2, #116 ; 0x74
bl MIi_CpuCopy32
b _037F834C
_037F833C:
mov r0, #0
ldr r1, _037F83A4 ; =0x027FFC80
mov r2, #116 ; 0x74
bl MIi_CpuClear32
_037F834C:
mov r0, #54 ; 0x36
mov r1, #6
add r2, sp, #8
bl NVRAM_ReadDataBytes
ldr r0, _037F83A4 ; =0x027FFC80
add r4, r0, #116 ; 0x74
add r0, sp, #8
mov r1, r4
mov r2, #6
bl MI_CpuCopy8
mov r0, #60 ; 0x3c
mov r1, #2
add r2, sp, #0
bl NVRAM_ReadDataBytes
ldrh r0, [sp]
mov r0, r0, lsl #15
mov r0, r0, lsr #16
bl WMSP_GetAllowedChannel
strh r0, [r4, #6]
add sp, sp, #528 ; 0x210
ldmia sp!, {r4, lr}
bx lr
_037F83A4: .word 0x027FFC80
_037F83A8: .word 0xFFFFFF2A
_037F83AC: .word 0xFFFFFF60
arm_func_start FUN_037F83B0
FUN_037F83B0: ; 0x037F83B0
stmdb sp!, {r4, lr}
mov r0, #8
bl OS_GetArenaHi
mov r4, r0
mov r0, #8
bl OS_GetArenaLo
mov r1, r0
mov r0, #8
mov r2, r4
mov r3, #1
bl OS_InitAlloc
mov r4, r0
mov r0, #8
bl OS_GetArenaHi
mov r2, r0
mov r0, r4
mov r1, #0
sub r2, r2, r4
bl MI_CpuFill8
mov r0, #8
mov r1, r4
bl OS_SetArenaLo
mov r0, #8
bl OS_GetArenaHi
mov r4, r0
mov r0, #8
bl OS_GetArenaLo
mov r1, r0
mov r0, #8
mov r2, r4
bl OS_CreateHeap
movs r4, r0
bpl _037F8438
bl FUN_037FB1F0
_037F8438:
mov r0, #8
mov r1, r4
bl OS_SetCurrentHeap
mov r0, #8
mov r1, r4
bl OS_CheckHeap
cmp r0, #8448 ; 0x2100
bcs _037F845C
bl FUN_037FB1F0
_037F845C:
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
arm_func_start NitroSpMain
NitroSpMain: ; 0x037F8468
stmdb sp!, {r4, lr}
bl WVR_ShelterExtWram
bl OS_Init
bl OS_InitThread
bl FUN_037F8228
bl PXI_Init
bl FUN_037F83B0
mov r4, r0
mov r0, #6
bl SND_Init
bl PAD_InitXYButton
mov r0, #1
ldr r1, _037F8524 ; =FUN_037F8000
bl OS_SetIrqFunction
mov r0, #1
bl OS_EnableIrqMask
ldr r1, _037F8528 ; =0x04000004
ldrh r0, [r1]
ldrh r0, [r1]
orr r0, r0, #8
strh r0, [r1]
ldr r1, _037F852C ; =0x04000208
ldrh r0, [r1]
mov r0, #1
strh r0, [r1]
bl OS_EnableInterrupts
mvn r0, #0
bl FS_Init
mov r0, #15
bl CARD_SetThreadPriority
mov r0, #12
bl RTC_Init
mov r0, r4
bl WVR_Init
mov r0, #2
bl SPI_Init
mov r4, #0
_037F84FC:
bl FUN_037F8530
bl OS_IsResetOccurred
cmp r0, #0
beq _037F8518
mov r0, r4
bl CTRDG_VibPulseEdgeUpdate
bl OS_ResetSystem
_037F8518:
bl CTRDG_CheckPullOut_Polling
bl CARD_CheckPullOut_Polling
b _037F84FC
_037F8524: .word FUN_037F8000
_037F8528: .word 0x04000004
_037F852C: .word 0x04000208
arm_func_start FUN_037F8530
FUN_037F8530: ; 0x037F8530
ldr ip, _037F8538 ; =SVC_Halt
bx ip
_037F8538: .word SVC_Halt