summaryrefslogtreecommitdiff
path: root/arm7/asm/dtcm.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/asm/dtcm.s')
-rw-r--r--arm7/asm/dtcm.s1322
1 files changed, 0 insertions, 1322 deletions
diff --git a/arm7/asm/dtcm.s b/arm7/asm/dtcm.s
deleted file mode 100644
index 454742e5..00000000
--- a/arm7/asm/dtcm.s
+++ /dev/null
@@ -1,1322 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .text
- arm_func_start FS_Init
-FS_Init: ; 0x037FFF14
- ldr ip, _037FFF1C ; =CARD_Init
- bx ip
-_037FFF1C: .word CARD_Init
-
- arm_func_start CARD_GetRomHeader
-CARD_GetRomHeader: ; 0x037FFF20
- ldr r0, _037FFF28 ; =0x027FFA80
- bx lr
-_037FFF28: .word 0x027FFA80
-
- arm_func_start CARD_SetThreadPriority
-CARD_SetThreadPriority: ; 0x037FFF2C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- ldr r6, _037FFF70 ; =cardi_common
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r5, [r6, #240] ; 0xf0
- str r7, [r6, #240] ; 0xf0
- add r0, r6, #72 ; 0x48
- ldr r1, [r6, #240] ; 0xf0
- bl OS_SetThreadPriority
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, r5
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FFF70: .word cardi_common
-
- arm_func_start CARD_Enable
-CARD_Enable: ; 0x037FFF74
- ldr r1, _037FFF80 ; =_0380912C
- str r0, [r1]
- bx lr
-_037FFF80: .word _0380912C
-
- arm_func_start CARDi_InitCommon
-CARDi_InitCommon: ; 0x037FFF84
- stmfd sp!, {lr}
- sub sp, sp, #12
- mvn r1, #2
- ldr r0, _0380001C ; =cardi_common
- str r1, [r0, #12]
- mov r2, #0
- str r2, [r0, #16]
- str r2, [r0, #28]
- str r2, [r0]
- str r2, [r0, #8]
- str r2, [r0, #24]
- str r2, [r0, #20]
- str r2, [r0, #248] ; 0xf8
- str r2, [r0, #244] ; 0xf4
- mov r1, #4
- str r1, [r0, #240] ; 0xf0
- mov r1, #1024 ; 0x400
- str r1, [sp]
- ldr r0, [r0, #240] ; 0xf0
- str r0, [sp, #4]
- ldr r0, _03800020 ; =_03809188
- ldr r1, _03800024 ; =CARDi_TaskThread
- ldr r3, _03800028 ; =_03809760
- bl OS_CreateThread
- ldr r0, _03800020 ; =_03809188
- bl OS_WakeupThreadDirect
- mov r0, #11
- ldr r1, _0380002C ; =CARDi_OnFifoRecv
- bl PXI_SetFifoRecvCallback
- ldr r0, _03800030 ; =0x027FFC40
- ldrh r0, [r0]
-_03800000:
- cmp r0, #2
- beq _03800010
- mov r0, #1
- bl CARD_Enable
-_03800010:
- add sp, sp, #12
- ldmia sp!, {lr}
- bx lr
-_0380001C: .word cardi_common
-_03800020: .word _03809188
-_03800024: .word CARDi_TaskThread
-_03800028: .word _03809760
-_0380002C: .word CARDi_OnFifoRecv
-_03800030: .word 0x027FFC40
-
- arm_func_start CARDi_SetWriteProtectCore
-CARDi_SetWriteProtectCore: ; 0x03800034
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- sub sp, sp, #8
- mov r4, r0
- bl FUN_03800780
- cmp r0, #0
- beq _038000BC
- ldr r0, _038000C8 ; =cardi_common
- ldr sl, [r0]
- mov r9, #10
- mov r0, #1
- strb r0, [sp]
- strb r4, [sp, #1]
- mov r8, #2
- add r7, sp, #0
- mov r6, #0
- ldr r5, _038000CC ; =_03800660
- mov r4, #5
-_03800078:
- bl FUN_038005B4
- mov r0, r8
- bl FUN_038008B4
- mov r0, r7
- mov r1, r6
- mov r2, r8
- mov r3, r5
- bl FUN_038006F0
- mov r0, r4
- mov r1, r6
- bl FUN_03800830
- ldr r0, [sl]
- cmp r0, #4
- bne _038000BC
- sub r9, r9, #1
- cmp r9, #0
- bgt _03800078
-_038000BC:
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- bx lr
-_038000C8: .word cardi_common
-_038000CC: .word _03800660
-
- arm_func_start CARDi_EraseChipCore
-CARDi_EraseChipCore: ; 0x038000D0
- stmdb sp!, {r4, lr}
- bl FUN_03800780
- cmp r0, #0
- beq _03800114
- ldr r0, _0380011C ; =cardi_common
- ldr r4, [r0]
- bl FUN_038005B4
- mov r0, #1
- bl FUN_038008B4
- ldr r0, _03800120 ; =_038072BC
- mov r1, #0
- mov r2, #1
- ldr r3, _03800124 ; =_03800660
- bl FUN_038006F0
- ldr r0, [r4, #52] ; 0x34
- ldr r1, [r4, #56] ; 0x38
- bl FUN_03800830
-_03800114:
- ldmia sp!, {r4, lr}
- bx lr
-_0380011C: .word cardi_common
-_03800120: .word _038072BC
-_03800124: .word _03800660
-
- arm_func_start CARDi_EraseBackupSectorCore
-CARDi_EraseBackupSectorCore: ; 0x03800128
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- mov r6, r1
- ldr r0, _038001B8 ; =cardi_common
- ldr r5, [r0]
- ldr r4, [r5, #28]
- sub r1, r4, #1
- orr r0, r7, r6
- ands r0, r1, r0
- movne r0, #2
- strne r0, [r5]
- bne _038001B0
- bl FUN_03800780
- cmp r0, #0
- beq _038001B0
- mov r8, #216 ; 0xd8
- b _038001A8
-_0380016C:
- bl FUN_038005B4
- ldr r0, [r5, #36] ; 0x24
- add r0, r0, #1
- bl FUN_038008B4
- mov r0, r7
- mov r1, r8
- bl FUN_03800508
- ldr r0, [r5, #60] ; 0x3c
- ldr r1, [r5, #64] ; 0x40
- bl FUN_03800830
- ldr r0, [r5]
- cmp r0, #0
- bne _038001B0
- add r7, r7, r4
- sub r6, r6, r4
-_038001A8:
- cmp r6, #0
- bne _0380016C
-_038001B0:
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_038001B8: .word cardi_common
-
- arm_func_start CARDi_VerifyBackupCore
-CARDi_VerifyBackupCore: ; 0x038001BC
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- bl FUN_03800780
- cmp r0, #0
- beq _0380024C
- ldr r0, _03800258 ; =cardi_common
- ldr r4, [r0]
- mov r1, #1
- ldr r0, _0380025C ; =_03809764
- str r1, [r0, #12]
- ldr r0, [r4, #36] ; 0x24
- add r0, r0, #1
- add r0, r0, r5
- bl FUN_038008B4
- mov r0, r7
- mov r1, #3
- bl FUN_03800508
- mov r0, r6
- mov r1, #0
- mov r2, r5
- ldr r3, _03800260 ; =_038005F8
- bl FUN_038006F0
- mov r0, #0
- mov r1, r0
- bl FUN_03800830
- ldr r0, [r4]
- cmp r0, #0
- bne _0380024C
- ldr r0, _0380025C ; =_03809764
- ldr r0, [r0, #12]
- cmp r0, #0
- moveq r0, #1
- streq r0, [r4]
-_0380024C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_03800258: .word cardi_common
-_0380025C: .word _03809764
-_03800260: .word _038005F8
-
- arm_func_start CARDi_WriteBackupCore
-CARDi_WriteBackupCore: ; 0x03800264
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r9, r1
- mov r8, r2
- bl FUN_03800780
- cmp r0, #0
- beq _03800314
- ldr r0, _03800320 ; =cardi_common
- ldr r7, [r0]
- ldr r6, [r7, #32]
- sub r4, r6, #1
- mov fp, #10
- mov r0, #0
- str r0, [sp]
- b _0380030C
-_038002A4:
- and r0, sl, r4
- sub r5, r6, r0
- cmp r5, r8
- movhi r5, r8
- bl FUN_038005B4
- ldr r0, [r7, #36] ; 0x24
- add r0, r0, #1
- add r0, r0, r5
- bl FUN_038008B4
- mov r0, sl
- mov r1, fp
- bl FUN_03800508
- mov r0, r9
- ldr r1, [sp]
- mov r2, r5
- ldr r3, _03800324 ; =_03800660
- bl FUN_038006F0
- ldr r0, [r7, #44] ; 0x2c
- ldr r1, [r7, #48] ; 0x30
- bl FUN_03800830
- ldr r0, [r7]
- cmp r0, #0
- bne _03800314
- add r9, r9, r5
- add sl, sl, r5
- sub r8, r8, r5
-_0380030C:
- cmp r8, #0
- bne _038002A4
-_03800314:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_03800320: .word cardi_common
-_03800324: .word _03800660
-
- arm_func_start CARDi_ProgramBackupCore
-CARDi_ProgramBackupCore: ; 0x03800328
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov r9, r1
- mov r8, r2
- bl FUN_03800780
- cmp r0, #0
- beq _038003D8
- ldr r0, _038003E4 ; =cardi_common
- ldr r7, [r0]
- ldr r6, [r7, #32]
- sub r4, r6, #1
- mov r0, #2
- str r0, [sp]
- mov fp, #0
- b _038003D0
-_03800368:
- and r0, sl, r4
- sub r5, r6, r0
- cmp r5, r8
- movhi r5, r8
- bl FUN_038005B4
- ldr r0, [r7, #36] ; 0x24
- add r0, r0, #1
- add r0, r0, r5
- bl FUN_038008B4
- mov r0, sl
- ldr r1, [sp]
- bl FUN_03800508
- mov r0, r9
- mov r1, fp
- mov r2, r5
- ldr r3, _038003E8 ; =_03800660
- bl FUN_038006F0
- ldr r0, [r7, #40] ; 0x28
- mov r1, fp
- bl FUN_03800830
- ldr r0, [r7]
- cmp r0, #0
- bne _038003D8
- add r9, r9, r5
- add sl, sl, r5
- sub r8, r8, r5
-_038003D0:
- cmp r8, #0
- bne _03800368
-_038003D8:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_038003E4: .word cardi_common
-_038003E8: .word _03800660
-
- arm_func_start CARDi_ReadBackupCore
-CARDi_ReadBackupCore: ; 0x038003EC
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl FUN_03800780
- cmp r0, #0
- beq _0380044C
- ldr r0, _03800454 ; =cardi_common
- ldr r0, [r0]
- ldr r0, [r0, #36] ; 0x24
- add r0, r0, #1
- add r0, r0, r4
- bl FUN_038008B4
- mov r0, r6
- mov r1, #3
- bl FUN_03800508
- mov r0, #0
- mov r1, r5
- mov r2, r4
- ldr r3, _03800458 ; =_038006AC
- bl FUN_038006F0
- mov r0, #0
- mov r1, r0
- bl FUN_03800830
-_0380044C:
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-_03800454: .word cardi_common
-_03800458: .word _038006AC
-
- arm_func_start CARDi_InitStatusRegister
-CARDi_InitStatusRegister: ; 0x0380045C
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r0, _038004F8 ; =cardi_common
- ldr r0, [r0]
- ldrb r4, [r0, #72] ; 0x48
- cmp r4, #255 ; 0xff
- beq _038004EC
- ldr r0, _038004FC ; =_03809760
- ldr r0, [r0]
- cmp r0, #0
- bne _038004EC
- mov r0, #5
- strb r0, [sp]
- mov r0, #2
- bl FUN_038008B4
- add r0, sp, #0
- mov r1, #0
- mov r2, #1
- ldr r3, _03800500 ; =_03800660
- bl FUN_038006F0
- mov r0, #0
- add r1, sp, #1
- mov r2, #1
- ldr r3, _03800504 ; =_038006AC
- bl FUN_038006F0
- mov r0, #0
- mov r1, r0
- bl FUN_03800830
- ldrb r0, [sp, #1]
- cmp r0, r4
- beq _038004E0
- mov r0, r4
- bl CARDi_SetWriteProtectCore
-_038004E0:
- mov r1, #1
- ldr r0, _038004FC ; =_03809760
- str r1, [r0]
-_038004EC:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-_038004F8: .word cardi_common
-_038004FC: .word _03809760
-_03800500: .word _03800660
-_03800504: .word _038006AC
-
- arm_func_start FUN_03800508
-FUN_03800508: ; 0x03800508
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r2, _038005AC ; =cardi_common
- ldr r2, [r2]
- ldr r2, [r2, #36] ; 0x24
- cmp r2, #1
- beq _03800538
- cmp r2, #2
- beq _03800554
- cmp r2, #3
- beq _0380056C
- b _0380058C
-_03800538:
- and r3, r0, #255 ; 0xff
- mov r0, r0, lsr #5
- and r0, r0, #8
- orr r0, r1, r0
- orr r0, r0, r3, lsl #8
- str r0, [sp]
- b _0380058C
-_03800554:
- and r3, r0, #255 ; 0xff
- and r0, r0, #65280 ; 0xff00
- orr r0, r1, r0
- orr r0, r0, r3, lsl #16
- str r0, [sp]
- b _0380058C
-_0380056C:
- and ip, r0, #255 ; 0xff
- and r3, r0, #65280 ; 0xff00
- mov r0, r0, lsr #8
- and r0, r0, #65280 ; 0xff00
- orr r0, r1, r0
- orr r0, r0, r3, lsl #8
- orr r0, r0, ip, lsl #24
- str r0, [sp]
-_0380058C:
- add r0, sp, #0
- mov r1, #0
- add r2, r2, #1
- ldr r3, _038005B0 ; =_03800660
- bl FUN_038006F0
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_038005AC: .word cardi_common
-_038005B0: .word _03800660
-
- arm_func_start FUN_038005B4
-FUN_038005B4: ; 0x038005B4
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #1
- bl FUN_038008B4
- ldr r0, _038005F0 ; =_038072C0
- mov r1, #0
- mov r2, #1
- ldr r3, _038005F4 ; =_03800660
- bl FUN_038006F0
- mov r0, #0
- mov r1, r0
- bl FUN_03800830
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_038005F0: .word _038072C0
-_038005F4: .word _03800660
-_038005F8:
- mov r2, #0
- ldr r1, _03800658 ; =0x040001A2
- strh r2, [r1]
- ldr r2, _0380065C ; =0x040001A0
-_03800608:
- ldrh r1, [r2]
- ands r1, r1, #128 ; 0x80
- bne _03800608
- ldr r1, _03800658 ; =0x040001A2
- ldrh r1, [r1]
- and r2, r1, #255 ; 0xff
- ldr r1, [r0, #4]
- ldrb r1, [r1]
- cmp r2, r1
- beq _03800648
- mov r1, #0
- str r1, [r0, #12]
- ldr r1, [r0]
- cmp r1, #1
- movhi r1, #1
- strhi r1, [r0]
-_03800648:
- ldr r1, [r0, #4]
- add r1, r1, #1
- str r1, [r0, #4]
- bx lr
-_03800658: .word 0x040001A2
-_0380065C: .word 0x040001A0
-_03800660:
- sub sp, sp, #8
- ldr r1, [r0, #4]
- ldrb r2, [r1]
- ldr r1, _038006A4 ; =0x040001A2
- strh r2, [r1]
- ldr r1, [r0, #4]
- add r1, r1, #1
- str r1, [r0, #4]
- ldr r1, _038006A8 ; =0x040001A0
-_03800684:
- ldrh r0, [r1]
- ands r0, r0, #128 ; 0x80
- bne _03800684
- ldr r0, _038006A4 ; =0x040001A2
- ldrh r0, [r0]
- strh r0, [sp]
- add sp, sp, #8
- bx lr
-_038006A4: .word 0x040001A2
-_038006A8: .word 0x040001A0
-_038006AC:
- mov r2, #0
- ldr r1, _038006E8 ; =0x040001A2
- strh r2, [r1]
- ldr r2, _038006EC ; =0x040001A0
-_038006BC:
- ldrh r1, [r2]
- ands r1, r1, #128 ; 0x80
- bne _038006BC
- ldr r1, _038006E8 ; =0x040001A2
- ldrh r2, [r1]
- ldr r1, [r0, #8]
- strb r2, [r1]
- ldr r1, [r0, #8]
- add r1, r1, #1
- str r1, [r0, #8]
- bx lr
-_038006E8: .word 0x040001A2
-_038006EC: .word 0x040001A0
-
- arm_func_start FUN_038006F0
-FUN_038006F0: ; 0x038006F0
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r2
- mov r6, r3
- ldr r5, _03800774 ; =_03809764
- str r0, [r5, #4]
- str r1, [r5, #8]
- ldr r0, _03800778 ; =0x0000A040
- ldr r4, _0380077C ; =0x040001A0
- strh r0, [r4]
- mov r8, #40960 ; 0xa000
- b _03800750
-_0380071C:
- ldr r0, [r5]
- sub r0, r0, #1
- str r0, [r5]
- ldr r0, [r5]
- cmp r0, #0
- streqh r8, [r4]
-_03800734:
- ldrh r0, [r4]
- ands r0, r0, #128 ; 0x80
- bne _03800734
- mov r0, r5
- mov lr, pc
- bx r6
- sub r7, r7, #1
-_03800750:
- cmp r7, #0
- bne _0380071C
- ldr r0, [r5]
- cmp r0, #0
- moveq r1, #0
- ldreq r0, _0380077C ; =0x040001A0
- streqh r1, [r0]
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_03800774: .word _03809764
-_03800778: .word 0x0000A040
-_0380077C: .word 0x040001A0
-
- arm_func_start FUN_03800780
-FUN_03800780: ; 0x03800780
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #0
- mov r1, #50 ; 0x32
- bl FUN_03800830
- ldr r0, _038007C0 ; =cardi_common
- ldr r1, [r0]
- ldr r0, [r1]
- cmp r0, #4
- moveq r0, #6
- streq r0, [r1]
- moveq r0, #0
- movne r0, #1
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_038007C0: .word cardi_common
-
- arm_func_start FUN_038007C4
-FUN_038007C4: ; 0x038007C4
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #2
- bl FUN_038008B4
- ldr r0, _03800824 ; =_038072C4
- mov r1, #0
- mov r2, #1
- ldr r3, _03800828 ; =_03800660
- bl FUN_038006F0
- mov r0, #0
- add r1, sp, #0
- mov r2, #1
- ldr r3, _0380082C ; =_038006AC
- bl FUN_038006F0
- mov r0, #0
- mov r1, r0
- bl FUN_03800830
- ldrb r0, [sp]
- ands r0, r0, #1
- moveq r0, #1
- movne r0, #0
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03800824: .word _038072C4
-_03800828: .word _03800660
-_0380082C: .word _038006AC
-
- arm_func_start FUN_03800830
-FUN_03800830: ; 0x03800830
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r0
- mov r4, r1
- adds r1, r5, r4
- beq _038008A8
- cmp r5, #0
- beq _03800850
- bl OS_Sleep
-_03800850:
- cmp r4, #0
- beq _03800890
- sub r6, r4, r5
- mov r4, #5
- b _0380087C
-_03800864:
- cmp r6, #5
- movlt r5, r6
- movge r5, r4
- mov r0, r5
- bl OS_Sleep
- sub r6, r6, r5
-_0380087C:
- bl FUN_038007C4
- cmp r0, #0
- bne _03800890
- cmp r6, #0
- bgt _03800864
-_03800890:
- bl FUN_038007C4
- cmp r0, #0
- moveq r1, #4
- ldreq r0, _038008B0 ; =cardi_common
- ldreq r0, [r0]
- streq r1, [r0]
-_038008A8:
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-_038008B0: .word cardi_common
-
- arm_func_start FUN_038008B4
-FUN_038008B4: ; 0x038008B4
- ldr r1, _038008C0 ; =_03809764
- str r0, [r1]
- bx lr
-_038008C0: .word _03809764
-
- arm_func_start CARDi_GetRomAccessor
-CARDi_GetRomAccessor: ; 0x038008C4
- ldr r0, _038008CC ; =_03800A7C
- bx lr
-_038008CC: .word _03800A7C
-
- arm_func_start CARD_Init
-CARD_Init: ; 0x038008D0
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r2, _03800940 ; =cardi_common
- ldr r0, [r2, #252] ; 0xfc
- cmp r0, #0
- bne _03800934
- mov r0, #1
- str r0, [r2, #252] ; 0xfc
- mov r1, #0
- str r1, [r2, #40] ; 0x28
- ldr r0, [r2, #40] ; 0x28
- str r0, [r2, #36] ; 0x24
- ldr r0, [r2, #36] ; 0x24
- str r0, [r2, #32]
- mvn r0, #0
- str r0, [r2, #44] ; 0x2c
- str r1, [r2, #60] ; 0x3c
- str r1, [r2, #64] ; 0x40
- ldr r0, _03800944 ; =cardi_rom_base
- str r1, [r0]
- bl CARDi_InitCommon
- bl CARDi_GetRomAccessor
- ldr r1, _03800948 ; =rom_stat
- str r0, [r1]
- bl CARD_InitPulledOutCallback
-_03800934:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03800940: .word cardi_common
-_03800944: .word cardi_rom_base
-_03800948: .word rom_stat
-
- arm_func_start CARDi_ReadRomID
-CARDi_ReadRomID: ; 0x0380094C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- ldr r5, _03800A10 ; =cardi_common
- bl OS_DisableInterrupts
- mov r4, r0
- add r6, r5, #244 ; 0xf4
- b _0380096C
-_03800964:
- mov r0, r6
- bl OS_SleepThread
-_0380096C:
- ldr r0, [r5, #252] ; 0xfc
- ands r0, r0, #4
- bne _03800964
- ldr r0, [r5, #252] ; 0xfc
- orr r0, r0, #4
- str r0, [r5, #252] ; 0xfc
- mov r0, #0
- str r0, [r5, #60] ; 0x3c
- str r0, [r5, #64] ; 0x40
- mov r0, r4
- bl OS_RestoreInterrupts
- bl CARDi_ReadRomIDCore
- mov r8, r0
- ldr r7, _03800A10 ; =cardi_common
- mov r1, #0
- ldr r0, [r7]
- str r1, [r0]
- ldr r6, [r7, #60] ; 0x3c
- ldr r5, [r7, #64] ; 0x40
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r0, [r7, #252] ; 0xfc
- bic r0, r0, #76 ; 0x4c
- str r0, [r7, #252] ; 0xfc
- add r0, r7, #244 ; 0xf4
- bl OS_WakeupThread
- ldr r0, [r7, #252] ; 0xfc
- ands r0, r0, #16
- beq _038009E8
- add r0, r7, #72 ; 0x48
- bl OS_WakeupThreadDirect
-_038009E8:
- mov r0, r4
- bl OS_RestoreInterrupts
- cmp r6, #0
- beq _03800A04
- mov r0, r5
- mov lr, pc
- bx r6
-_03800A04:
- mov r0, r8
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_03800A10: .word cardi_common
-
- arm_func_start CARDi_ReadRomIDCore
-CARDi_ReadRomIDCore: ; 0x03800A14
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #-1207959552 ; 0xb8000000
- mov r1, #0
- bl FUN_03800A80
- ldr r0, _03800A70 ; =cardi_rom_header_addr
- ldr r0, [r0]
- ldr r0, [r0, #96] ; 0x60
- bic r0, r0, #117440512 ; 0x7000000
- orr r1, r0, #-1493172224 ; 0xa7000000
- mov r0, #8192 ; 0x2000
- rsb r0, r0, #0
- and r0, r1, r0
- ldr r1, _03800A74 ; =0x040001A4
- str r0, [r1]
-_03800A50:
- ldr r0, [r1]
- ands r0, r0, #8388608 ; 0x800000
- beq _03800A50
- ldr r0, _03800A78 ; =0x04100010
- ldr r0, [r0]
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03800A70: .word cardi_rom_header_addr
-_03800A74: .word 0x040001A4
-_03800A78: .word 0x04100010
-_03800A7C:
- bx lr
-
- arm_func_start FUN_03800A80
-FUN_03800A80: ; 0x03800A80
- ldr r3, _03800AF8 ; =0x040001A4
-_03800A84:
- ldr r2, [r3]
- ands r2, r2, #-2147483648 ; 0x80000000
- bne _03800A84
- mov r3, #192 ; 0xc0
- ldr r2, _03800AFC ; =0x040001A1
- strb r3, [r2]
- mov r3, r0, lsr #24
- ldr r2, _03800B00 ; =0x040001A8
- strb r3, [r2]
- mov r3, r0, lsr #16
- ldr r2, _03800B04 ; =0x040001A9
- strb r3, [r2]
- mov r3, r0, lsr #8
- ldr r2, _03800B08 ; =0x040001AA
- strb r3, [r2]
- ldr r2, _03800B0C ; =0x040001AB
- strb r0, [r2]
- mov r2, r1, lsr #24
- ldr r0, _03800B10 ; =0x040001AC
- strb r2, [r0]
- mov r2, r1, lsr #16
- ldr r0, _03800B14 ; =0x040001AD
- strb r2, [r0]
- mov r2, r1, lsr #8
- ldr r0, _03800B18 ; =0x040001AE
- strb r2, [r0]
- ldr r0, _03800B1C ; =0x040001AF
- strb r1, [r0]
- bx lr
-_03800AF8: .word 0x040001A4
-_03800AFC: .word 0x040001A1
-_03800B00: .word 0x040001A8
-_03800B04: .word 0x040001A9
-_03800B08: .word 0x040001AA
-_03800B0C: .word 0x040001AB
-_03800B10: .word 0x040001AC
-_03800B14: .word 0x040001AD
-_03800B18: .word 0x040001AE
-_03800B1C: .word 0x040001AF
-
- arm_func_start CARDi_TaskThread
-CARDi_TaskThread: ; 0x03800B20
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- ldr r9, _03800D28 ; =cardi_common
- add r5, r9, #72 ; 0x48
- mov r8, #0
- add r7, r9, #252 ; 0xfc
- mov r6, #1
- mov r4, #3
- mov fp, #11
-_03800B44:
- mov sl, r8
- bl OS_DisableInterrupts
- str r0, [sp]
-_03800B50:
- ldr r0, [r9, #252] ; 0xfc
- ands r0, r0, #4
- bne _03800B88
- ldr r0, [r9, #252] ; 0xfc
- ands r0, r0, #16
- beq _03800B94
- ldr r0, [r7]
- orr r0, r0, #4
- str r0, [r7]
- ldr r0, [r7]
- bic r0, r0, #16
- str r0, [r7]
- mov sl, r6
- b _03800BA4
-_03800B88:
- ldr r0, [r9, #252] ; 0xfc
- ands r0, r0, #8
- bne _03800BA4
-_03800B94:
- str r5, [r9, #236] ; 0xec
- mov r0, r8
- bl OS_SleepThread
- b _03800B50
-_03800BA4:
- ldr r0, [sp]
- bl OS_RestoreInterrupts
- cmp sl, #0
- beq _03800D14
- ldr r0, [r9]
- str r8, [r0]
- ldr r2, [r9]
- ldr r1, [r2, #76] ; 0x4c
- ldr r0, [r9, #4]
- mov r0, r6, lsl r0
- ands r0, r1, r0
- streq r4, [r2]
- ldr r0, [r9, #4]
- cmp r0, #12
- addls pc, pc, r0, lsl #2
- b _03800CB8
- b _03800CC0
- b _03800CC0
- b _03800C18
- b _03800C20
- b _03800C30
- b _03800CB8
- b _03800C3C
- b _03800C54
- b _03800C6C
- b _03800C84
- b _03800CB8
- b _03800C9C
- b _03800CB0
-_03800C18:
- bl CARDi_InitStatusRegister
- b _03800CC0
-_03800C20:
- bl CARDi_ReadRomIDCore
- ldr r1, [r9]
- str r0, [r1, #8]
- b _03800CC0
-_03800C30:
- ldr r0, [r9]
- str r4, [r0]
- b _03800CC0
-_03800C3C:
- ldr r2, [r9]
- ldr r0, [r2, #12]
- ldr r1, [r2, #16]
- ldr r2, [r2, #20]
- bl CARDi_ReadBackupCore
- b _03800CC0
-_03800C54:
- ldr r2, [r9]
- ldr r0, [r2, #16]
- ldr r1, [r2, #12]
- ldr r2, [r2, #20]
- bl CARDi_WriteBackupCore
- b _03800CC0
-_03800C6C:
- ldr r2, [r9]
- ldr r0, [r2, #16]
- ldr r1, [r2, #12]
- ldr r2, [r2, #20]
- bl CARDi_ProgramBackupCore
- b _03800CC0
-_03800C84:
- ldr r2, [r9]
- ldr r0, [r2, #16]
- ldr r1, [r2, #12]
- ldr r2, [r2, #20]
- bl CARDi_VerifyBackupCore
- b _03800CC0
-_03800C9C:
- ldr r1, [r9]
- ldr r0, [r1, #16]
- ldr r1, [r1, #20]
- bl CARDi_EraseBackupSectorCore
- b _03800CC0
-_03800CB0:
- bl CARDi_EraseChipCore
- b _03800CC0
-_03800CB8:
- ldr r0, [r9]
- str r4, [r0]
-_03800CC0:
- mov r0, fp
- mov r1, r6
- mov r2, r6
- bl PXI_SendWordByFifo
- cmp r0, #0
- blt _03800CC0
- bl OS_DisableInterrupts
- mov sl, r0
- ldr r0, [r9, #252] ; 0xfc
- bic r0, r0, #76 ; 0x4c
- str r0, [r9, #252] ; 0xfc
- add r0, r9, #244 ; 0xf4
- bl OS_WakeupThread
- ldr r0, [r9, #252] ; 0xfc
- ands r0, r0, #16
- beq _03800D08
- mov r0, r5
- bl OS_WakeupThreadDirect
-_03800D08:
- mov r0, sl
- bl OS_RestoreInterrupts
- b _03800B44
-_03800D14:
- mov r0, r9
- ldr r1, [r9, #68] ; 0x44
- mov lr, pc
- bx r1
- b _03800B44
-_03800D28: .word cardi_common
-
- arm_func_start CARDi_OnFifoRecv
-CARDi_OnFifoRecv: ; 0x03800D2C
- stmfd sp!, {lr}
- sub sp, sp, #4
- cmp r0, #11
- bne _03800DFC
- cmp r2, #0
- beq _03800DFC
- ldr r0, _03800E08 ; =cardi_common
- ldr r2, [r0, #8]
- cmp r2, #0
- streq r1, [r0, #4]
- ldr r2, [r0, #4]
- cmp r2, #12
- addls pc, pc, r2, lsl #2
- b _03800DC8
- b _03800D98
- b _03800DC8
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
- b _03800DBC
-_03800D98:
- ldr r2, [r0, #8]
- cmp r2, #0
- beq _03800DC8
- cmp r2, #1
- streq r1, [r0]
- ldreq r1, [r0, #252] ; 0xfc
- orreq r1, r1, #16
- streq r1, [r0, #252] ; 0xfc
- b _03800DC8
-_03800DBC:
- ldr r1, [r0, #252] ; 0xfc
- orr r1, r1, #16
- str r1, [r0, #252] ; 0xfc
-_03800DC8:
- ldr r1, [r0, #252] ; 0xfc
- ands r1, r1, #16
- ldreq r1, [r0, #8]
- addeq r1, r1, #1
- streq r1, [r0, #8]
- beq _03800DFC
- mov r1, #0
- str r1, [r0, #8]
- ldr r1, [r0, #252] ; 0xfc
- ands r1, r1, #4
- ldrne r0, [r0, #236] ; 0xec
- addeq r0, r0, #72 ; 0x48
- bl OS_WakeupThreadDirect
-_03800DFC:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03800E08: .word cardi_common
-
- arm_func_start FUN_03800E0C
-FUN_03800E0C: ; 0x03800E0C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, #14
- mov r4, #0
- b _03800E30
-_03800E28:
- mov r0, r6
- bl FUN_037F8CB4
-_03800E30:
- mov r0, r5
- mov r1, r7
- mov r2, r4
- bl PXI_SendWordByFifo
- cmp r0, #0
- bne _03800E28
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start FUN_03800E54
-FUN_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 FUN_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 FUN_03801048
-FUN_03801048: ; 0x03801048
- stmfd sp!, {lr}
- sub sp, sp, #4
- and r0, r1, #63 ; 0x3f
- cmp r0, #1
- bne _03801064
- bl FUN_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 ; =FUN_03801048
- bl PXI_SetFifoRecvCallback
-_038010C0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_038010CC: .word _038099A4
-_038010D0: .word FUN_03801048
- .balign 2, 0 ; Don't pad with nop