pokediamond/arm7/asm/CARD_pullOut.s
2023-06-21 03:18:46 +01:00

218 lines
3.9 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .data
.global _03807668
_03807668:
.word 0xFFFFFFFF
.global _0380766C
_0380766C:
.word 0x00000001
.section .bss
.global _038099A0
_038099A0: ;0x038099A0
.space 0x038099A4 - 0x038099A0
.global _038099A4
_038099A4: ;0x038099A4
.space 0x038099A8 - 0x038099A4
.global _038099A8
_038099A8: ;0x038099A8
.space 0x038099AC - 0x038099A8
.section .text
arm_func_start sub_03800E54
sub_03800E54: ; 0x03800E54
stmfd sp!, {lr}
sub sp, sp, #4
mov r0, #0
bl CTRDG_VibPulseEdgeUpdate
bl SND_BeginSleep
bl WVR_Shutdown
bl OS_Terminate
add sp, sp, #4
ldmia sp!, {lr}
bx lr
arm_func_start CARD_CheckPullOut_Polling
CARD_CheckPullOut_Polling: ; 0x03800E7C
stmfd sp!, {lr}
sub sp, sp, #4
ldr r0, _03800F50 ; =_038099A0
ldr r0, [r0]
cmp r0, #0
bne _03800F44
ldr r0, _03800F54 ; =0x027FFC40
ldrh r0, [r0]
cmp r0, #2
beq _03800F44
ldr r1, _03800F58 ; =_03807668
ldr r3, [r1]
mvn r0, #0
cmp r3, r0
ldreq r0, _03800F5C ; =0x027FFC3C
ldreq r0, [r0]
addeq r0, r0, #10
streq r0, [r1]
beq _03800F44
ldr r2, _03800F5C ; =0x027FFC3C
ldr r0, [r2]
cmp r0, r3
bcc _03800F44
ldr r0, [r2]
add r0, r0, #10
str r0, [r1]
bl CARD_IsPulledOut
cmp r0, #0
beq _03800F1C
mov r1, #1
ldr r0, _03800F50 ; =_038099A0
str r1, [r0]
bl CARD_GetRomHeader
ldr r0, [r0, #12]
cmp r0, #0
bne _03800F1C
ldr r0, _03800F60 ; =_0380766C
ldr r0, [r0]
cmp r0, #0
bne _03800F44
_03800F1C:
mov r1, #0
ldr r0, _03800F60 ; =_0380766C
str r1, [r0]
ldr r0, _03800F50 ; =_038099A0
ldr r0, [r0]
cmp r0, #0
beq _03800F44
mov r0, #17
mov r1, #100 ; 0x64
bl sub_03800E0C
_03800F44:
add sp, sp, #4
ldmia sp!, {lr}
bx lr
_03800F50: .word _038099A0
_03800F54: .word 0x027FFC40
_03800F58: .word _03807668
_03800F5C: .word 0x027FFC3C
_03800F60: .word _0380766C
arm_func_start CARD_IsCardIreqLo
CARD_IsCardIreqLo: ; 0x03800F64
mov r2, #1
mov r0, r2
ldr r1, _03800F88 ; =0x04000214
ldr r1, [r1]
ands r1, r1, #1048576 ; 0x100000
movne r0, #0
ldrne r1, _03800F8C ; =_038099A8
strne r2, [r1]
bx lr
_03800F88: .word 0x04000214
_03800F8C: .word _038099A8
arm_func_start CARD_CompareCardID
CARD_CompareCardID: ; 0x03800F90
stmfd sp!, {lr}
sub sp, sp, #4
ldr r0, _03800FE8 ; =0x027FFC10
ldrh r0, [r0]
cmp r0, #0
ldreq r0, _03800FEC ; =0x027FF800
ldrne r0, _03800FF0 ; =0x027FFC00
ldr r0, [r0]
str r0, [sp]
bl CARDi_ReadRomID
ldr r1, [sp]
cmp r0, r1
moveq r0, #1
movne r0, #0
cmp r0, #0
moveq r2, #1
movne r2, #0
ldr r1, _03800FF4 ; =_038099A8
str r2, [r1]
add sp, sp, #4
ldmia sp!, {lr}
bx lr
_03800FE8: .word 0x027FFC10
_03800FEC: .word 0x027FF800
_03800FF0: .word 0x027FFC00
_03800FF4: .word _038099A8
arm_func_start CARD_IsPulledOut
CARD_IsPulledOut: ; 0x03800FF8
stmfd sp!, {lr}
sub sp, sp, #4
ldr r0, _03801040 ; =_038099A8
ldr r0, [r0]
cmp r0, #0
bne _0380102C
ldr r0, _03801044 ; =0x027FFC1F
ldrb r0, [r0]
ands r0, r0, #1
beq _03801028
bl CARD_CompareCardID
b _0380102C
_03801028:
bl CARD_IsCardIreqLo
_0380102C:
ldr r0, _03801040 ; =_038099A8
ldr r0, [r0]
add sp, sp, #4
ldmia sp!, {lr}
bx lr
_03801040: .word _038099A8
_03801044: .word 0x027FFC1F
arm_func_start sub_03801048
sub_03801048: ; 0x03801048
stmfd sp!, {lr}
sub sp, sp, #4
and r0, r1, #63 ; 0x3f
cmp r0, #1
bne _03801064
bl sub_03800E54
b _03801068
_03801064:
bl OS_Terminate
_03801068:
add sp, sp, #4
ldmia sp!, {lr}
bx lr
arm_func_start CARD_InitPulledOutCallback
CARD_InitPulledOutCallback: ; 0x03801074
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r0, _038010CC ; =_038099A4
ldr r1, [r0]
cmp r1, #0
bne _038010C0
mov r1, #1
str r1, [r0]
bl PXI_Init
mov r5, #14
mov r4, #0
_038010A0:
mov r0, r5
mov r1, r4
bl PXI_IsCallbackReady
cmp r0, #0
beq _038010A0
mov r0, #14
ldr r1, _038010D0 ; =sub_03801048
bl PXI_SetFifoRecvCallback
_038010C0:
add sp, sp, #4
ldmia sp!, {r4, r5, lr}
bx lr
_038010CC: .word _038099A4
_038010D0: .word sub_03801048