split more Nitro asm files

This commit is contained in:
Seth Barberee
2026-06-06 13:14:48 -07:00
parent c7b7400f3d
commit 08e06c0ba1
20 changed files with 3544 additions and 3189 deletions

View File

@@ -47,7 +47,33 @@
.public _022BCA74
.public _f2d
.public _ll_udiv
.public Card_CheckEnabled
.public Card_IsPulledOut
.public Cardi_CheckPulledOutCore
.public Cardi_ReadRom
.public Cardi_Request
.public Cardi_SetTask
.public Cardi_WaitAsync
.public CARDi_InitCommon
.public CARDi_TaskThread
.public CARDi_OnFifoRecv
.public CARD_Init
.public CARD_InitPulledOutCallback
.public CopyAndInterleave
.public Ctrdg_Enable
.public Ctrdg_IsExisting
.public Ctrdgi_Enable
.public Ctrdgi_InitTaskThread
.public Ctrdgi_IsExisting
.public CTRDGi_InitCommon
.public CTRDGi_LockByProcessor
.public CTRDGi_UnlockByProcessor
.public CTRDGi_RestoreAccessCycle
.public CTRDGi_ChangeLatestAccessCycle
.public CTRDGi_SendtoPxi
.public Dgt_Hash2Init
.public Dgt_Hash2Update
.public Dgt_Hash2GetHash
.public DC_FlushAll
.public DC_FlushRange
.public DC_InvalidateRange
@@ -99,6 +125,7 @@
.public OS_WakeupThread
.public OS_WakeupThreadDirect
.public OSi_ReferSymbol
.public PM_ForceToPowerOff
.public PXI_Init
.public PXI_IsCallbackReady
.public PXI_SendWordByFifo

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,113 @@
#pragma once
.public _02000BC4
.public _020AEC5C
.public _020B2BB4
.public _020B2BB8
.public _020B2BC0
.public _020B2BC4
.public _020B2C84
.public _020B2D88
.public _020B2E9C
.public _020B2ED0
.public _020B2ED4
.public _020B2FBC
.public _020B3364
.public _022B966C
.public _022BB5EC
.public _022BB5FC
.public _022BB604
.public _022BB60C
.public _022BB614
.public _022BB670
.public _022BB68C
.public _022BB6AC
.public _022BB6B8
.public _022BB6C4
.public _022BB6C8
.public _022BB6D8
.public _022BB6F0
.public _022BB6F4
.public _022BB718
.public _022BB724
.public _022BB760
.public _022BB780
.public _022BB7E0
.public _022BBE00
.public _022BBE20
.public _022BC040
.public _022BC048
.public _022BC04C
.public _022BC060
.public _022BC080
.public _022BC084
.public _022BC140
.public _022BC228
.public _022BC22C
.public _022BC650
.public _022BCA74
.public _f2d
.public _ll_udiv
.public CopyAndInterleave
.public DC_FlushAll
.public DC_FlushRange
.public DC_InvalidateRange
.public DC_StoreRange
.public DC_WaitWriteBufferEmpty
.public EnableIrqFlag
.public fflush
.public FileInit
.public FS_CloseFile
.public FS_InitArchive
.public FS_LoadArchive
.public FS_NotifyArchiveAsyncEnd
.public FS_OpenFileDirect
.public FS_OpenFileFast
.public FS_ReadFile
.public FS_RegisterArchiveName
.public FS_SetArchiveProc
.public FSi_FindPath
.public GetIrqFlag
.public IC_InvalidateAll
.public IC_InvalidateRange
.public MI_CpuCopy8
.public MI_CpuFill8
.public MI_DmaCopy16
.public MI_StopDma
.public MIi_UncompressBackward
.public MTi_CardDmaCopy32
.public MTi_CpuClear32
.public MTi_CpuClearFast
.public MTi_CpuCopy32
.public OS_DisableIrqMask
.public OS_EnableIrqMask
.public OS_GetDTCMAddress
.public OS_GetLockID
.public OS_InitMutex
.public OS_IsTickAvailable
.public OS_LockCard
.public OS_ReadOwnerOfLockWord
.public OS_ResetRequestIrqMask
.public OS_SetDPermissionsForProtectionRegion
.public OS_SetIrqFunction
.public OS_SetIrqMask
.public OS_SetThreadPriority
.public OS_SleepThread
.public OS_SpinWait
.public OS_TryLockCartridge
.public OS_UnlockCard
.public OS_UnlockCartridgeVeneer
.public OS_WakeupThread
.public OS_WakeupThreadDirect
.public OSi_ReferSymbol
.public PXI_Init
.public PXI_IsCallbackReady
.public PXI_SendWordByFifo
.public PXI_SetFifoRecvCallback
.public PXIi_HandlerRecvFifoNotEmpty
.public SetIrqFlag
.public OS_CreateThread
.public SVC_CpuSet
.public SVC_WaitByLoop
.public OS_ExitThread
.public WaitForever2
.public WaitForInterrupt

93
lib/MSL_C/asm/msl.s Normal file
View File

@@ -0,0 +1,93 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start NotANumber
NotANumber: ; 0x02086450
ldr r0, _02086460 ; =_020B2FBC
ldr ip, _02086464 ; =_f2d
ldr r0, [r0]
bx ip
.align 2, 0
_02086460: .word _020B2FBC
_02086464: .word _f2d
arm_func_end NotANumber
arm_func_start _flush_line_buffered_output_files
_flush_line_buffered_output_files: ; 0x02086468
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r0, _020864F0 ; =_020B2ED4
mov r4, #0
mov r5, #1
mov r8, r0
mvn sb, #0
mov r7, r4
mov r6, #0x4c
_02086488:
ldr r1, [r0, #4]
mov r2, r1, lsl #0x16
movs r2, r2, lsr #0x1d
beq _020864C8
mov r1, r1, lsl #0x19
mov r1, r1, lsr #0x1e
tst r1, #1
beq _020864C8
ldr r1, [r0, #8]
mov r1, r1, lsl #0x1d
mov r1, r1, lsr #0x1d
cmp r1, #1
bne _020864C8
bl fflush
cmp r0, #0
movne r4, sb
_020864C8:
cmp r5, #3
movge r0, r7
bge _020864E0
mul r0, r5, r6
add r5, r5, #1
add r0, r8, r0
_020864E0:
cmp r0, #0
bne _02086488
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020864F0: .word _020B2ED4
arm_func_end _flush_line_buffered_output_files
arm_func_start _flush_all
_flush_all: ; 0x020864F4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r0, _02086558 ; =_020B2ED4
mov r4, #0
mov r5, #1
mov r8, r0
mvn sb, #0
mov r7, r4
mov r6, #0x4c
_02086514:
ldr r1, [r0, #4]
mov r1, r1, lsl #0x16
movs r1, r1, lsr #0x1d
beq _02086530
bl fflush
cmp r0, #0
movne r4, sb
_02086530:
cmp r5, #3
movge r0, r7
bge _02086548
mul r0, r5, r6
add r5, r5, #1
add r0, r8, r0
_02086548:
cmp r0, #0
bne _02086514
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02086558: .word _020B2ED4
arm_func_end _flush_all

View File

@@ -0,0 +1,165 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start CARD_InitPulledOutCallback
CARD_InitPulledOutCallback: ; 0x02084558
stmdb sp!, {r3, lr}
bl PXI_Init
ldr r1, _0208457C ; =CARDi_PulledOutCallback
mov r0, #0xe
bl PXI_SetFifoRecvCallback
ldr r0, _02084580 ; =_022BC040
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_0208457C: .word CARDi_PulledOutCallback
_02084580: .word _022BC040
arm_func_end CARD_InitPulledOutCallback
arm_func_start CARDi_PulledOutCallback
CARDi_PulledOutCallback: ; 0x02084584
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #0x11
bne _020845CC
ldr r1, _020845D4 ; =_022BC040
ldr r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #1
str r0, [r1]
ldr r1, [r1, #4]
cmp r1, #0
beq _020845BC
blx r1
_020845BC:
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl Card_TerminateForPulledOut
ldmia sp!, {r3, pc}
_020845CC:
bl WaitForever2
ldmia sp!, {r3, pc}
.align 2, 0
_020845D4: .word _022BC040
arm_func_end CARDi_PulledOutCallback
arm_func_start Card_SetPulledOutCallback
Card_SetPulledOutCallback: ; 0x020845D8
ldr r1, _020845E4 ; =_022BC040
str r0, [r1, #4]
bx lr
.align 2, 0
_020845E4: .word _022BC040
arm_func_end Card_SetPulledOutCallback
arm_func_start Card_IsPulledOut
Card_IsPulledOut: ; 0x020845E8
ldr r0, _020845F4 ; =_022BC040
ldr r0, [r0]
bx lr
.align 2, 0
_020845F4: .word _022BC040
arm_func_end Card_IsPulledOut
arm_func_start Card_TerminateForPulledOut
Card_TerminateForPulledOut: ; 0x020845F8
stmdb sp!, {r3, r4, r5, lr}
mov r0, #0
mov r5, #1
bl MI_StopDma
mov r0, r5
bl MI_StopDma
mov r0, #2
bl MI_StopDma
mov r0, #3
bl MI_StopDma
ldr r0, _0208467C ; =0x027FFFA8
ldrh r0, [r0]
and r0, r0, #0x8000
movs r0, r0, asr #0xf
beq _02084660
bl PM_ForceToPowerOff
cmp r0, #4
bne _02084658
ldr r4, _02084680 ; =0x000A3A47
_02084644:
mov r0, r4
bl OS_SpinWait
bl PM_ForceToPowerOff
cmp r0, #4
beq _02084644
_02084658:
cmp r0, #0
moveq r5, #0
_02084660:
cmp r5, #0
beq _02084674
mov r0, #1
mov r1, r0
bl Cardi_SendtoPxi
_02084674:
bl WaitForever2
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0208467C: .word 0x027FFFA8
_02084680: .word 0x000A3A47
arm_func_end Card_TerminateForPulledOut
arm_func_start Cardi_CheckPulledOutCore
Cardi_CheckPulledOutCore: ; 0x02084684
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r2, _020846E0 ; =0x027FFC10
ldrh r1, [r2]
cmp r1, #0
subeq r1, r2, #0x410
subne r1, r2, #0x10
ldr r1, [r1]
str r1, [sp]
ldr r1, [sp]
cmp r0, r1
addeq sp, sp, #4
ldmeqia sp!, {r3, r4, pc}
bl EnableIrqFlag
mov r4, r0
mov r0, #0xe
mov r1, #0x11
mov r2, #0
bl CARDi_PulledOutCallback
mov r0, r4
bl SetIrqFlag
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020846E0: .word 0x027FFC10
arm_func_end Cardi_CheckPulledOutCore
arm_func_start Cardi_SendtoPxi
Cardi_SendtoPxi: ; 0x020846E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r1, r7
mov r0, #0xe
mov r2, #0
bl PXI_SendWordByFifo
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r5, #0xe
mov r4, #0
_02084710:
mov r0, r6
blx SVC_WaitByLoop
mov r0, r5
mov r1, r7
mov r2, r4
bl PXI_SendWordByFifo
cmp r0, #0
bne _02084710
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end Cardi_SendtoPxi

View File

@@ -0,0 +1,150 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start CARDi_OnFifoRecv
CARDi_OnFifoRecv: ; 0x02084380
stmdb sp!, {r3, lr}
cmp r0, #0xb
ldmneia sp!, {r3, pc}
cmp r2, #0
ldmeqia sp!, {r3, pc}
ldr r2, _020843B0 ; =_022BB7E0
ldr r1, [r2, #0x114]
ldr r0, [r2, #0x104]
bic r1, r1, #0x20
str r1, [r2, #0x114]
bl OS_WakeupThreadDirect
ldmia sp!, {r3, pc}
.align 2, 0
_020843B0: .word _022BB7E0
arm_func_end CARDi_OnFifoRecv
arm_func_start CARDi_TaskThread
CARDi_TaskThread: ; 0x020843B4
stmdb sp!, {r4, r5, r6, lr}
ldr r5, _02084400 ; =_022BB7E0
mov r4, #0
_020843C0:
bl EnableIrqFlag
ldr r1, [r5, #0x114]
mov r6, r0
tst r1, #8
bne _020843E8
_020843D4:
mov r0, r4
bl OS_SleepThread
ldr r0, [r5, #0x114]
tst r0, #8
beq _020843D4
_020843E8:
mov r0, r6
bl SetIrqFlag
ldr r1, [r5, #0x40]
mov r0, r5
blx r1
b _020843C0
.align 2, 0
_02084400: .word _022BB7E0
arm_func_end CARDi_TaskThread
arm_func_start Cardi_Request
Cardi_Request: ; 0x02084404
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldr r0, [sl, #0x114]
mov sb, r1
str r2, [sp]
tst r0, #2
bne _02084478
ldr r1, [sl, #0x114]
mov r0, #0xb
orr r2, r1, #2
mov r1, #1
str r2, [sl, #0x114]
bl PXI_IsCallbackReady
cmp r0, #0
bne _02084468
mov r6, #0x64
mov r5, #0xb
mov r4, #1
_0208444C:
mov r0, r6
bl OS_SpinWait
mov r0, r5
mov r1, r4
bl PXI_IsCallbackReady
cmp r0, #0
beq _0208444C
_02084468:
mov r0, sl
mov r1, #0
mov r2, #1
bl Cardi_Request
_02084478:
ldr r0, [sl]
mov r1, #0x60
bl DC_FlushRange
bl DC_WaitWriteBufferEmpty
mov r7, #0xb
mov r6, #1
mov r5, r7
mov r4, r6
mov fp, #0
_0208449C:
str sb, [sl, #4]
ldr r0, [sl, #0x114]
orr r0, r0, #0x20
str r0, [sl, #0x114]
_020844AC:
mov r0, r7
mov r1, sb
mov r2, r6
bl PXI_SendWordByFifo
cmp r0, #0
blt _020844AC
cmp sb, #0
bne _020844E8
ldr r8, [sl]
_020844D0:
mov r0, r5
mov r1, r8
mov r2, r4
bl PXI_SendWordByFifo
cmp r0, #0
blt _020844D0
_020844E8:
bl EnableIrqFlag
ldr r1, [sl, #0x114]
mov r8, r0
tst r1, #0x20
beq _02084510
_020844FC:
mov r0, fp
bl OS_SleepThread
ldr r0, [sl, #0x114]
tst r0, #0x20
bne _020844FC
_02084510:
mov r0, r8
bl SetIrqFlag
ldr r0, [sl]
mov r1, #0x60
bl DC_InvalidateRange
ldr r0, [sl]
ldr r1, [r0]
cmp r1, #4
bne _02084548
ldr r0, [sp]
sub r0, r0, #1
str r0, [sp]
cmp r0, #0
bgt _0208449C
_02084548:
cmp r1, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end Cardi_Request

540
lib/NitroSDK/asm/card_rom.s Normal file
View File

@@ -0,0 +1,540 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start CARDi_ReadFromCache
CARDi_ReadFromCache: ; 0x02083C8C
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _02083D14 ; =_022BB7E0
mov r1, #0x200
ldr r3, [r4, #0x1c]
rsb r1, r1, #0
ldr r2, [r0, #8]
and r3, r3, r1
cmp r3, r2
bne _02083D00
ldr r2, [r4, #0x1c]
ldr r1, [r4, #0x24]
sub r3, r2, r3
rsb r5, r3, #0x200
cmp r5, r1
movhi r5, r1
add r0, r0, #0x20
ldr r1, [r4, #0x20]
mov r2, r5
add r0, r0, r3
bl MI_CpuCopy8
ldr r2, [r4, #0x1c]
ldr r1, [r4, #0x20]
ldr r0, [r4, #0x24]
add r2, r2, r5
add r1, r1, r5
sub r0, r0, r5
str r2, [r4, #0x1c]
str r1, [r4, #0x20]
str r0, [r4, #0x24]
_02083D00:
ldr r0, [r4, #0x24]
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02083D14: .word _022BB7E0
arm_func_end CARDi_ReadFromCache
arm_func_start CARDi_SetRomOp
CARDi_SetRomOp: ; 0x02083D18
ldr r3, _02083D70 ; =0x040001A4
_02083D1C:
ldr r2, [r3]
tst r2, #0x80000000
bne _02083D1C
ldr r3, _02083D74 ; =0x040001A1
mov r2, #0xc0
strb r2, [r3]
mov r2, r0, lsr #0x18
strb r2, [r3, #7]
mov r2, r0, lsr #0x10
strb r2, [r3, #8]
mov r2, r0, lsr #8
strb r2, [r3, #9]
strb r0, [r3, #0xa]
mov r0, r1, lsr #0x18
strb r0, [r3, #0xb]
mov r0, r1, lsr #0x10
strb r0, [r3, #0xc]
mov r0, r1, lsr #8
strb r0, [r3, #0xd]
strb r1, [r3, #0xe]
bx lr
.align 2, 0
_02083D70: .word 0x040001A4
_02083D74: .word 0x040001A1
arm_func_end CARDi_SetRomOp
arm_func_start sub_02083D78
sub_02083D78: ; 0x02083D78
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _02083DBC ; =_022BB7E0
ldr r1, _02083DC0 ; =0x04100010
ldr r0, [r4, #0x28]
ldr r2, [r4, #0x20]
mov r3, #0x200
ldr r5, _02083DC4 ; =_022BBE20
bl MTi_CardDmaCopy32
ldr r1, [r4, #0x1c]
mov r0, r1, lsr #8
orr r0, r0, #0xb7000000
mov r1, r1, lsl #0x18
bl CARDi_SetRomOp
ldr r1, [r5, #4]
ldr r0, _02083DC8 ; =0x040001A4
str r1, [r0]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02083DBC: .word _022BB7E0
_02083DC0: .word 0x04100010
_02083DC4: .word _022BBE20
_02083DC8: .word 0x040001A4
arm_func_end sub_02083D78
arm_func_start sub_02083DCC
sub_02083DCC: ; 0x02083DCC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _02083E98 ; =_022BB7E0
ldr r0, [r0, #0x28]
bl MI_StopDma
ldr r3, _02083E98 ; =_022BB7E0
ldr r0, [r3, #0x24]
ldr r2, [r3, #0x1c]
ldr r1, [r3, #0x20]
subs r0, r0, #0x200
str r0, [r3, #0x24]
movne r0, #1
add r2, r2, #0x200
add r1, r1, #0x200
moveq r0, #0
str r2, [r3, #0x1c]
str r1, [r3, #0x20]
cmp r0, #0
bne _02083E90
mov r0, #0x80000
bl OS_DisableIrqMask
mov r0, #0x80000
bl OS_ResetRequestIrqMask
ldr r4, _02083E98 ; =_022BB7E0
bl sub_02084118
bl Cardi_CheckPulledOutCore
ldr r0, [r4]
mov r1, #0
str r1, [r0]
ldr r5, [r4, #0x38]
ldr r6, [r4, #0x3c]
bl EnableIrqFlag
ldr r1, [r4, #0x114]
mov r7, r0
bic r0, r1, #0x4c
str r0, [r4, #0x114]
add r0, r4, #0x10c
bl OS_WakeupThread
ldr r0, [r4, #0x114]
tst r0, #0x10
beq _02083E74
add r0, r4, #0x44
bl OS_WakeupThreadDirect
_02083E74:
mov r0, r7
bl SetIrqFlag
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
blx r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_02083E90:
bl sub_02083D78
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02083E98: .word _022BB7E0
arm_func_end sub_02083DCC
arm_func_start Cardi_TryReadCardDma
Cardi_TryReadCardDma: ; 0x02083E9C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r4, _02084014 ; =_022BB7E0
mov r6, #0
ldr sb, [r4, #0x20]
mov fp, r0
mov r7, r6
mov r8, r6
mov r1, r6
ands sl, sb, #0x1f
ldr r5, [r4, #0x24]
bne _02083ED4
ldr r0, [r4, #0x28]
cmp r0, #3
movls r1, #1
_02083ED4:
cmp r1, #0
beq _02083F28
bl OS_GetDTCMAddress
ldr r1, _02084018 ; =CopyAndInterleave
add r3, sb, r5
cmp r3, r1
mov r1, #1
mov r2, #0
bls _02083F00
cmp sb, #0x2000000
movlo r2, r1
_02083F00:
cmp r2, #0
bne _02083F20
cmp r0, r3
bhs _02083F1C
add r0, r0, #0x4000
cmp r0, sb
bhi _02083F20
_02083F1C:
mov r1, #0
_02083F20:
cmp r1, #0
moveq r8, #1
_02083F28:
cmp r8, #0
beq _02083F44
ldr r1, [r4, #0x1c]
ldr r0, _0208401C ; =0x000001FF
orr r1, r1, r5
tst r1, r0
moveq r7, #1
_02083F44:
ldr r0, _02084020 ; =_020B2ED0
cmp r7, #0
ldr r0, [r0]
cmpne r5, #0
ldr r0, [r0, #0x60]
movne r6, #1
bic r0, r0, #0x7000000
orr r0, r0, #0xa1000000
cmp r6, #0
str r0, [fp, #4]
beq _0208400C
bl EnableIrqFlag
ldr r1, [r4, #0x118]
mov r7, r0
cmp r5, r1
bhs _02083F94
mov r0, sb
mov r1, r5
bl IC_InvalidateRange
b _02083F98
_02083F94:
bl IC_InvalidateAll
_02083F98:
ldr r0, [r4, #0x11c]
cmp r5, r0
bhs _02083FE0
cmp sl, #0
beq _02083FCC
sub sb, sb, sl
mov r0, sb
mov r1, #0x20
bl DC_StoreRange
add r0, sb, r5
mov r1, #0x20
bl DC_StoreRange
add r5, r5, #0x20
_02083FCC:
mov r0, sb
mov r1, r5
bl DC_InvalidateRange
bl DC_WaitWriteBufferEmpty
b _02083FE4
_02083FE0:
bl DC_FlushAll
_02083FE4:
ldr r1, _02084024 ; =_02083DCC
mov r0, #0x80000
bl OS_SetIrqFunction
mov r0, #0x80000
bl OS_ResetRequestIrqMask
mov r0, #0x80000
bl OS_EnableIrqMask
mov r0, r7
bl SetIrqFlag
bl sub_02083D78
_0208400C:
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02084014: .word _022BB7E0
_02084018: .word CopyAndInterleave
_0208401C: .word 0x000001FF
_02084020: .word _020B2ED0
_02084024: .word sub_02083DCC
arm_func_end Cardi_TryReadCardDma
arm_func_start CARDi_ReadCard
CARDi_ReadCard: ; 0x02084028
stmdb sp!, {r4, r5, r6, lr}
ldr r4, _0208410C ; =_022BB7E0
mov r6, r0
_02084034:
mov r0, #0x200
ldr r1, [r4, #0x1c]
rsb r0, r0, #0
and r2, r1, r0
cmp r2, r1
bne _02084064
ldr r5, [r4, #0x20]
tst r5, #3
bne _02084064
ldr r0, [r4, #0x24]
cmp r0, #0x200
bhs _0208406C
_02084064:
str r2, [r6, #8]
add r5, r6, #0x20
_0208406C:
mov r0, r2, lsr #8
orr r0, r0, #0xb7000000
mov r1, r2, lsl #0x18
bl CARDi_SetRomOp
mov ip, #0
ldr r0, [r6, #4]
ldr r2, _02084110 ; =0x040001A4
mov lr, ip
str r0, [r2]
ldr r1, _02084114 ; =0x04100010
_02084094:
ldr r3, [r2]
tst r3, #0x800000
beq _020840B4
ldr r0, [r1]
cmp lr, #0x200
strlo r0, [r5, ip, lsl #2]
addlo lr, lr, #4
addlo ip, ip, #1
_020840B4:
tst r3, #0x80000000
bne _02084094
ldr r0, [r4, #0x20]
cmp r5, r0
bne _020840F8
ldr r0, _0208410C ; =_022BB7E0
ldr r1, [r0, #0x1c]
add r1, r1, #0x200
str r1, [r0, #0x1c]
ldr r1, [r0, #0x20]
add r1, r1, #0x200
str r1, [r0, #0x20]
ldr r1, [r0, #0x24]
subs r1, r1, #0x200
str r1, [r0, #0x24]
ldmeqia sp!, {r4, r5, r6, pc}
b _02084034
_020840F8:
mov r0, r6
bl CARDi_ReadFromCache
cmp r0, #0
bne _02084034
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0208410C: .word _022BB7E0
_02084110: .word 0x040001A4
_02084114: .word 0x04100010
arm_func_end CARDi_ReadCard
arm_func_start sub_02084118
sub_02084118: ; 0x02084118
stmdb sp!, {r3, lr}
mov r0, #0xb8000000
mov r1, #0
bl CARDi_SetRomOp
ldr r1, _02084168 ; =_020B2ED0
mov r0, #0x2000
ldr r1, [r1]
rsb r0, r0, #0
ldr r2, [r1, #0x60]
ldr r1, _0208416C ; =0x040001A4
bic r2, r2, #0x7000000
orr r2, r2, #0xa7000000
and r0, r2, r0
str r0, [r1]
_02084150:
ldr r0, [r1]
tst r0, #0x800000
beq _02084150
ldr r0, _02084170 ; =0x04100010
ldr r0, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02084168: .word _020B2ED0
_0208416C: .word 0x040001A4
_02084170: .word 0x04100010
arm_func_end sub_02084118
arm_func_start Cardi_ReadRomSyncCore
Cardi_ReadRomSyncCore: ; 0x02084174
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _02084204 ; =_022BBE20
mov r0, r4
bl CARDi_ReadFromCache
cmp r0, #0
beq _02084198
ldr r1, [r4]
mov r0, r4
blx r1
_02084198:
ldr r4, _02084208 ; =_022BB7E0
bl sub_02084118
bl Cardi_CheckPulledOutCore
ldr r0, [r4]
mov r1, #0
str r1, [r0]
ldr r5, [r4, #0x38]
ldr r6, [r4, #0x3c]
bl EnableIrqFlag
ldr r1, [r4, #0x114]
mov r7, r0
bic r0, r1, #0x4c
str r0, [r4, #0x114]
add r0, r4, #0x10c
bl OS_WakeupThread
ldr r0, [r4, #0x114]
tst r0, #0x10
beq _020841E8
add r0, r4, #0x44
bl OS_WakeupThreadDirect
_020841E8:
mov r0, r7
bl SetIrqFlag
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
blx r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02084204: .word _022BBE20
_02084208: .word _022BB7E0
arm_func_end Cardi_ReadRomSyncCore
arm_func_start Cardi_ReadRom
Cardi_ReadRom: ; 0x0208420C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
mov sb, r1
mov r8, r2
mov r7, r3
ldr r4, _020842F0 ; =_022BBE20
ldr r5, _020842F4 ; =_022BB7E0
bl Card_CheckEnabled
bl EnableIrqFlag
mov r6, r0
b _02084240
_02084238:
add r0, r5, #0x10c
bl OS_SleepThread
_02084240:
ldr r0, [r5, #0x114]
tst r0, #4
bne _02084238
ldr r0, [r5, #0x114]
ldr r2, [sp, #0x20]
ldr r1, [sp, #0x24]
orr r3, r0, #4
mov r0, r6
str r3, [r5, #0x114]
str r2, [r5, #0x38]
str r1, [r5, #0x3c]
bl SetIrqFlag
ldr r0, _020842F8 ; =_022BBE00
str sl, [r5, #0x28]
ldr r0, [r0]
str r8, [r5, #0x20]
add r0, sb, r0
str r0, [r5, #0x1c]
str r7, [r5, #0x24]
cmp sl, #3
bhi _0208429C
mov r0, sl
bl MI_StopDma
_0208429C:
mov r0, r4
bl Cardi_TryReadCardDma
cmp r0, #0
beq _020842C0
ldr r0, [sp, #0x28]
cmp r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
bl Card_WaitRomAsync
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020842C0:
ldr r0, [sp, #0x28]
cmp r0, #0
beq _020842D8
ldr r0, _020842FC ; =Cardi_ReadRomSyncCore
bl Cardi_SetTask
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020842D8:
ldr r1, _02084300 ; =_022B966C
mov r0, r5
ldr r1, [r1, #4]
str r1, [r5, #0x104]
bl Cardi_ReadRomSyncCore
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_020842F0: .word _022BBE20
_020842F4: .word _022BB7E0
_020842F8: .word _022BBE00
_020842FC: .word Cardi_ReadRomSyncCore
_02084300: .word _022B966C
arm_func_end Cardi_ReadRom
arm_func_start CARD_Init
CARD_Init: ; 0x02084304
stmdb sp!, {r3, lr}
ldr ip, _02084360 ; =_022BB7E0
ldr r0, [ip, #0x114]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r2, #0
ldr r0, _02084364 ; =_022BBE00
sub r1, r2, #1
mov r3, #1
str r3, [ip, #0x114]
str r2, [ip, #0x24]
str r2, [ip, #0x20]
str r2, [ip, #0x1c]
str r1, [ip, #0x28]
str r2, [ip, #0x38]
str r2, [ip, #0x3c]
str r2, [r0]
bl CARDi_InitCommon
bl CARDi_GetRomAccessor
ldr r1, _02084364 ; =_022BBE00
str r0, [r1, #0x20]
bl CARD_InitPulledOutCallback
ldmia sp!, {r3, pc}
.align 2, 0
_02084360: .word _022BB7E0
_02084364: .word _022BBE00
arm_func_end CARD_Init
arm_func_start Card_WaitRomAsync
Card_WaitRomAsync: ; 0x02084368
ldr ip, _02084370 ; =Cardi_WaitAsync
bx ip
.align 2, 0
_02084370: .word Cardi_WaitAsync
arm_func_end Card_WaitRomAsync
arm_func_start CARDi_GetRomAccessor
CARDi_GetRomAccessor: ; 0x02084374
ldr r0, _0208437C ; =CARDi_ReadCard
bx lr
.align 2, 0
_0208437C: .word CARDi_ReadCard
arm_func_end CARDi_GetRomAccessor

260
lib/NitroSDK/asm/ctrdg.s Normal file
View File

@@ -0,0 +1,260 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start CTRDGi_InitCommon
CTRDGi_InitCommon: ; 0x02084734
stmdb sp!, {r3, lr}
ldr r1, _02084760 ; =_022BC04C
mov r3, #0
ldr r2, _02084764 ; =0x05000001
add r0, sp, #0
str r3, [sp]
blx SVC_CpuSet
bl OS_GetLockID
ldr r1, _02084768 ; =_022BC048
strh r0, [r1, #6]
ldmia sp!, {r3, pc}
.align 2, 0
_02084760: .word _022BC04C
_02084764: .word 0x05000001
_02084768: .word _022BC048
arm_func_end CTRDGi_InitCommon
arm_func_start Ctrdg_IsOptionCartridge
Ctrdg_IsOptionCartridge: ; 0x0208476C
stmdb sp!, {r3, lr}
bl Ctrdg_IsExisting
cmp r0, #0
beq _0208478C
bl Ctrdgi_IsAgbCartridgeAtInit
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0208478C:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end Ctrdg_IsOptionCartridge
arm_func_start Ctrdgi_IsAgbCartridgeAtInit
Ctrdgi_IsAgbCartridgeAtInit: ; 0x02084794
ldr r0, _020847A8 ; =0x027FFC30
ldrb r0, [r0, #5]
mov r0, r0, lsl #0x1f
mov r0, r0, lsr #0x1f
bx lr
.align 2, 0
_020847A8: .word 0x027FFC30
arm_func_end Ctrdgi_IsAgbCartridgeAtInit
arm_func_start Ctrdg_IsExisting
Ctrdg_IsExisting: ; 0x020847AC
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r2, _020848AC ; =0x027FFC30
mov r4, #1
ldrh r1, [r2]
rsb r0, r4, #0x10000
cmp r1, r0
addeq sp, sp, #0x10
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
cmp r0, #1
addeq sp, sp, #0x10
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, _020848B0 ; =_022BC048
add r1, sp, #8
ldrh r0, [r0, #6]
bl CTRDGi_LockByProcessor
add r0, sp, #0
bl CTRDGi_ChangeLatestAccessCycle
mov r0, #0x8000000
ldrb r2, [r0, #0xb2]
cmp r2, #0x96
bne _0208482C
ldr r1, _020848AC ; =0x027FFC30
ldrh r0, [r0, #0xbe]
ldrh r1, [r1]
cmp r1, r0
bne _02084874
_0208482C:
cmp r2, #0x96
beq _0208484C
ldr r1, _020848AC ; =0x027FFC30
ldr r0, _020848B4 ; =0x0801FFFE
ldrh r1, [r1]
ldrh r0, [r0]
cmp r1, r0
bne _02084874
_0208484C:
ldr r2, _020848AC ; =0x027FFC30
mov r0, #0x8000000
ldr r1, [r2, #8]
ldr r0, [r0, #0xac]
cmp r1, r0
beq _02084888
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _02084888
_02084874:
ldr r1, _020848AC ; =0x027FFC30
mov r4, #0
ldrb r0, [r1, #5]
orr r0, r0, #2
strb r0, [r1, #5]
_02084888:
add r0, sp, #0
bl CTRDGi_RestoreAccessCycle
ldr r0, _020848B0 ; =_022BC048
add r1, sp, #8
ldrh r0, [r0, #6]
bl CTRDGi_UnlockByProcessor
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_020848AC: .word 0x027FFC30
_020848B0: .word _022BC048
_020848B4: .word 0x0801FFFE
arm_func_end Ctrdg_IsExisting
arm_func_start CTRDGi_ChangeLatestAccessCycle
CTRDGi_ChangeLatestAccessCycle: ; 0x020848B8
ldr r2, _020848FC ; =0x04000204
ldrh r1, [r2]
and r1, r1, #0xc
mov r1, r1, asr #2
str r1, [r0]
ldrh r1, [r2]
and r1, r1, #0x10
mov r1, r1, asr #4
str r1, [r0, #4]
ldrh r0, [r2]
bic r0, r0, #0xc
orr r0, r0, #0xc
strh r0, [r2]
ldrh r0, [r2]
bic r0, r0, #0x10
strh r0, [r2]
bx lr
.align 2, 0
_020848FC: .word 0x04000204
arm_func_end CTRDGi_ChangeLatestAccessCycle
arm_func_start CTRDGi_RestoreAccessCycle
CTRDGi_RestoreAccessCycle: ; 0x02084900
ldr r3, _02084930 ; =0x04000204
ldr r2, [r0]
ldrh r1, [r3]
bic r1, r1, #0xc
orr r1, r1, r2, lsl #2
strh r1, [r3]
ldrh r1, [r3]
ldr r2, [r0, #4]
bic r0, r1, #0x10
orr r0, r0, r2, lsl #4
strh r0, [r3]
bx lr
.align 2, 0
_02084930: .word 0x04000204
arm_func_end CTRDGi_RestoreAccessCycle
arm_func_start CTRDGi_LockByProcessor
CTRDGi_LockByProcessor: ; 0x02084934
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r5, _0208498C ; =0x027FFFE8
mov r7, r0
mov r6, r1
mov r4, #1
_02084948:
bl EnableIrqFlag
str r0, [r6, #4]
mov r0, r5
bl OS_ReadOwnerOfLockWord
ands r0, r0, #0x40
str r0, [r6]
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r7
bl OS_TryLockCartridge
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r6, #4]
bl SetIrqFlag
mov r0, r4
blx SVC_WaitByLoop
b _02084948
_02084988:
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0208498C: .word 0x027FFFE8
arm_func_end CTRDGi_LockByProcessor
arm_func_start CTRDGi_UnlockByProcessor
CTRDGi_UnlockByProcessor: ; 0x02084990
stmdb sp!, {r4, lr}
mov r4, r1
ldr r1, [r4]
cmp r1, #0
bne _020849A8
bl OS_UnlockCartridgeVeneer
_020849A8:
ldr r0, [r4, #4]
bl SetIrqFlag
ldmia sp!, {r4, pc}
arm_func_end CTRDGi_UnlockByProcessor
arm_func_start CTRDGi_SendtoPxi
CTRDGi_SendtoPxi: ; 0x020849B4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r1, r7
mov r0, #0xd
mov r2, #0
bl PXI_SendWordByFifo
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r6, #1
mov r5, #0xd
mov r4, #0
_020849E0:
mov r0, r6
blx SVC_WaitByLoop
mov r0, r5
mov r1, r7
mov r2, r4
bl PXI_SendWordByFifo
cmp r0, #0
bne _020849E0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end CTRDGi_SendtoPxi
arm_func_start Ctrdg_Enable
Ctrdg_Enable: ; 0x02084A04
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl EnableIrqFlag
ldr r1, _02084A48 ; =_022BC048
mov r4, r0
str r5, [r1]
bl Ctrdg_IsOptionCartridge
cmp r0, #0
bne _02084A3C
cmp r5, #0
movne r1, #0x1000
moveq r1, #0x5000
mov r0, #0xf000
bl OS_SetDPermissionsForProtectionRegion
_02084A3C:
mov r0, r4
bl SetIrqFlag
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02084A48: .word _022BC048
arm_func_end Ctrdg_Enable

View File

@@ -0,0 +1,259 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start CTRDG_Init
CTRDG_Init: ; 0x02084A4C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02084AEC ; =_022BC060
ldr r1, [r0, #8]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
str r1, [r0, #8]
bl CTRDGi_InitCommon
ldr r0, _02084AEC ; =_022BC060
mov r1, #0
str r1, [r0, #0xc]
bl PXI_Init
mov r5, #0xd
mov r4, #1
_02084A84:
mov r0, r5
mov r1, r4
bl PXI_IsCallbackReady
cmp r0, #0
beq _02084A84
ldr r1, _02084AF0 ; =CTRDGi_CallbackForInitModuleInfo
mov r0, #0xd
bl PXI_SetFifoRecvCallback
bl CTRDGi_InitModuleInfo
mov r0, #0xd
mov r1, #0
bl PXI_SetFifoRecvCallback
ldr r1, _02084AF4 ; =CTRDGi_PulledOutCallback
mov r0, #0xd
bl PXI_SetFifoRecvCallback
ldr r1, _02084AEC ; =_022BC060
mov r2, #0
ldr r0, _02084AF8 ; =_022BC140
str r2, [r1, #0x18]
bl Ctrdgi_InitTaskThread
ldr r1, _02084AFC ; =_02084D90
mov r0, #0x11
bl PXI_SetFifoRecvCallback
mov r0, #0
bl Ctrdg_Enable
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02084AEC: .word _022BC060
_02084AF0: .word CTRDGi_CallbackForInitModuleInfo
_02084AF4: .word CTRDGi_PulledOutCallback
_02084AF8: .word _022BC140
_02084AFC: .word Ctrdgi_CallbackForSetPhi
arm_func_end CTRDG_Init
arm_func_start CTRDGi_InitModuleInfo
CTRDGi_InitModuleInfo: ; 0x02084B00
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
ldr r0, _02084CC8 ; =_022BC060
ldr r1, [r0]
cmp r1, #0
addne sp, sp, #0x10
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
ldr r1, _02084CCC ; =0x04000300
mov r2, #1
ldrh r1, [r1]
str r2, [r0]
tst r1, #1
addeq sp, sp, #0x10
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, #0x40000
bl OS_SetIrqMask
ldr r3, _02084CD0 ; =0x04000208
mov r2, #1
ldrh r5, [r3]
ldr r1, _02084CD4 ; =_022BC04C
mov r4, r0
strh r2, [r3]
ldrh r0, [r1, #2]
add r1, sp, #8
bl CTRDGi_LockByProcessor
ldr r1, _02084CD8 ; =0x04000204
add r0, sp, #0
ldrh r1, [r1]
and r1, r1, #0x8000
mov r6, r1, asr #0xf
bl CTRDGi_ChangeLatestAccessCycle
ldr r3, _02084CD8 ; =0x04000204
ldr r0, _02084CDC ; =_022BC080
ldrh r2, [r3]
add r0, r0, #0x80
mov r1, #0x40
bic r2, r2, #0x8000
strh r2, [r3]
bl DC_InvalidateRange
ldr r2, _02084CDC ; =_022BC080
ldr r1, _02084CE0 ; =0x08000080
mov r0, #1
mov r3, #0x40
add r2, r2, #0x80
bl MI_DmaCopy16
ldr r2, _02084CD8 ; =0x04000204
add r0, sp, #0
ldrh r1, [r2]
bic r1, r1, #0x8000
orr r1, r1, r6, lsl #15
strh r1, [r2]
bl CTRDGi_RestoreAccessCycle
ldr r0, _02084CD4 ; =_022BC04C
add r1, sp, #8
ldrh r0, [r0, #2]
bl CTRDGi_UnlockByProcessor
ldr r1, _02084CE4 ; =0x027FFF9B
ldrb r0, [r1]
cmp r0, #0
bne _02084BFC
ldrb r0, [r1, #-1]
cmp r0, #0
bne _02084C60
_02084BFC:
ldr r3, _02084CDC ; =_022BC080
ldr r6, _02084CE8 ; =0x027FFC30
ldrh r0, [r3, #0xbe]
mov r2, #0
strh r0, [r6]
b _02084C28
_02084C14:
add r0, r3, r2
ldrb r1, [r0, #0xb5]
add r0, r6, r2
add r2, r2, #1
strb r1, [r0, #2]
_02084C28:
cmp r2, #3
blt _02084C14
ldrh r0, [r3, #0xb0]
strh r0, [r6, #6]
ldr r0, [r3, #0xac]
str r0, [r6, #8]
bl Ctrdg_IsExisting
cmp r0, #0
movne r2, #1
ldr r1, _02084CE4 ; =0x027FFF9B
moveq r2, #0
mov r0, #1
strb r2, [r1]
strb r0, [r1, #-1]
_02084C60:
ldr r0, _02084CEC ; =0xFFFF0020
ldr r1, _02084CF0 ; =_022BC084
mov r2, #0x9c
bl MTi_CpuCopy32
bl DC_FlushAll
ldr r0, _02084CDC ; =_022BC080
add r0, r0, #0xfe000000
mov r0, r0, lsr #5
mov r0, r0, lsl #6
orr r0, r0, #1
bl CTRDGi_SendtoPxi
mov r7, #1
ldr r6, _02084CD4 ; =_022BC04C
b _02084CA0
_02084C98:
mov r0, r7
blx SVC_WaitByLoop
_02084CA0:
ldrh r0, [r6]
cmp r0, #1
bne _02084C98
ldr r2, _02084CD0 ; =0x04000208
mov r0, r4
ldrh r1, [r2]
strh r5, [r2]
bl OS_SetIrqMask
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02084CC8: .word _022BC060
_02084CCC: .word 0x04000300
_02084CD0: .word 0x04000208
_02084CD4: .word _022BC04C
_02084CD8: .word 0x04000204
_02084CDC: .word _022BC080
_02084CE0: .word 0x08000080
_02084CE4: .word 0x027FFF9B
_02084CE8: .word 0x027FFC30
_02084CEC: .word 0xFFFF0020
_02084CF0: .word _022BC084
arm_func_end CTRDGi_InitModuleInfo
arm_func_start CTRDGi_CallbackForInitModuleInfo
CTRDGi_CallbackForInitModuleInfo: ; 0x02084CF4
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #1
bne _02084D14
ldr r0, _02084D1C ; =_022BC04C
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, pc}
_02084D14:
bl WaitForever2
ldmia sp!, {r3, pc}
.align 2, 0
_02084D1C: .word _022BC04C
arm_func_end CTRDGi_CallbackForInitModuleInfo
arm_func_start CTRDGi_PulledOutCallback
CTRDGi_PulledOutCallback: ; 0x02084D20
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #0x11
bne _02084D70
ldr r0, _02084D78 ; =_022BC060
ldr r1, [r0, #0xc]
cmp r1, #0
ldmneia sp!, {r3, pc}
ldr r1, [r0, #0x18]
mov r0, #0
cmp r1, #0
beq _02084D54
blx r1
_02084D54:
cmp r0, #0
beq _02084D60
bl CTRDG_TerminateForPulledOut
_02084D60:
ldr r0, _02084D78 ; =_022BC060
mov r1, #1
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
_02084D70:
bl WaitForever2
ldmia sp!, {r3, pc}
.align 2, 0
_02084D78: .word _022BC060
arm_func_end CTRDGi_PulledOutCallback
arm_func_start CTRDG_TerminateForPulledOut
CTRDG_TerminateForPulledOut: ; 0x02084D7C
stmdb sp!, {r3, lr}
mov r0, #2
bl CTRDGi_SendtoPxi
bl WaitForever2
ldmia sp!, {r3, pc}
arm_func_end CTRDG_TerminateForPulledOut
arm_func_start Ctrdgi_CallbackForSetPhi
Ctrdgi_CallbackForSetPhi: ; 0x02084D90
ldr r0, _02084DA0 ; =_022BC060
mov r1, #0
str r1, [r0, #4]
bx lr
.align 2, 0
_02084DA0: .word _022BC060
arm_func_end Ctrdgi_CallbackForSetPhi

View File

@@ -0,0 +1,127 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start Ctrdgi_InitTaskThread
Ctrdgi_InitTaskThread: ; 0x02084DA4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
bl EnableIrqFlag
ldr r1, _02084E20 ; =_022BC228
mov r4, r0
ldr r0, [r1]
cmp r0, #0
bne _02084E10
add r0, r5, #0xc4
str r5, [r1]
bl Ctrdgi_InitTaskInfo
ldr r0, _02084E24 ; =_022BC22C
bl Ctrdgi_InitTaskInfo
mov r0, #0
str r0, [r5, #0xc0]
mov r2, #0x400
ldr r1, _02084E28 ; =Ctrdgi_TaskThread
ldr r3, _02084E2C ; =_022BC650
mov r0, r5
str r2, [sp]
mov r2, #0x14
str r2, [sp, #4]
mov r2, r5
bl OS_CreateThread
mov r0, r5
bl OS_WakeupThreadDirect
_02084E10:
mov r0, r4
bl SetIrqFlag
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02084E20: .word _022BC228
_02084E24: .word _022BC22C
_02084E28: .word Ctrdgi_TaskThread
_02084E2C: .word _022BC650
arm_func_end Ctrdgi_InitTaskThread
arm_func_start Ctrdgi_InitTaskInfo
Ctrdgi_InitTaskInfo: ; 0x02084E30
ldr ip, _02084E40 ; =MI_CpuFill8
mov r1, #0
mov r2, #0x24
bx ip
.align 2, 0
_02084E40: .word MI_CpuFill8
arm_func_end Ctrdgi_InitTaskInfo
arm_func_start Ctrdgi_TaskThread
Ctrdgi_TaskThread: ; 0x02084E44
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
mov r4, #0
mov r8, r0
add r6, sp, #0
mov sl, r4
mov sb, r4
mov r5, r4
mov fp, #0x24
_02084E68:
mov r0, r6
mov r1, r5
mov r2, fp
bl MI_CpuFill8
bl EnableIrqFlag
ldr r1, [r8, #0xc0]
mov r7, r0
cmp r1, #0
bne _02084EA0
_02084E8C:
mov r0, r4
bl OS_SleepThread
ldr r0, [r8, #0xc0]
cmp r0, #0
beq _02084E8C
_02084EA0:
ldr lr, [r8, #0xc0]
add ip, sp, #0
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldr r1, [lr]
mov r0, r7
str r1, [ip]
bl SetIrqFlag
ldr r1, [sp]
cmp r1, #0
beq _02084EE0
mov r0, r6
blx r1
str r0, [sp, #8]
_02084EE0:
bl EnableIrqFlag
ldr r2, [sp, #4]
ldr r1, _02084F30 ; =_022BC228
mov r7, r0
strb sl, [r1, #0x26]
cmp r2, #0
beq _02084F04
mov r0, r6
blx r2
_02084F04:
ldr r0, _02084F30 ; =_022BC228
ldr r0, [r0]
cmp r0, #0
beq _02084F24
mov r0, r7
str sb, [r8, #0xc0]
bl SetIrqFlag
b _02084E68
_02084F24:
bl OS_ExitThread
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02084F30: .word _022BC228
arm_func_end Ctrdgi_TaskThread

View File

@@ -0,0 +1,140 @@
#pragma once
.public _02000BC4
.public _020AEC5C
.public _020B2BB4
.public _020B2BB8
.public _020B2BC0
.public _020B2BC4
.public _020B2C84
.public _020B2D88
.public _020B2E9C
.public _020B2ED0
.public _020B2ED4
.public _020B2FBC
.public _020B3364
.public _022B966C
.public _022BB5EC
.public _022BB5FC
.public _022BB604
.public _022BB60C
.public _022BB614
.public _022BB670
.public _022BB68C
.public _022BB6AC
.public _022BB6B8
.public _022BB6C4
.public _022BB6C8
.public _022BB6D8
.public _022BB6F0
.public _022BB6F4
.public _022BB718
.public _022BB724
.public _022BB760
.public _022BB780
.public _022BB7E0
.public _022BBE00
.public _022BBE20
.public _022BC040
.public _022BC048
.public _022BC04C
.public _022BC060
.public _022BC080
.public _022BC084
.public _022BC140
.public _022BC228
.public _022BC22C
.public _022BC650
.public _022BCA74
.public _f2d
.public _ll_udiv
.public Card_CheckEnabled
.public Card_IsPulledOut
.public Cardi_CheckPulledOutCore
.public Cardi_ReadRom
.public Cardi_Request
.public Cardi_SetTask
.public Cardi_WaitAsync
.public CARDi_InitCommon
.public CARDi_TaskThread
.public CARDi_OnFifoRecv
.public CARD_Init
.public CARD_InitPulledOutCallback
.public CopyAndInterleave
.public Ctrdg_Enable
.public Ctrdg_IsExisting
.public Ctrdgi_Enable
.public Ctrdgi_InitTaskThread
.public Ctrdgi_IsExisting
.public CTRDGi_InitCommon
.public CTRDGi_LockByProcessor
.public CTRDGi_UnlockByProcessor
.public CTRDGi_RestoreAccessCycle
.public CTRDGi_ChangeLatestAccessCycle
.public CTRDGi_SendtoPxi
.public Dgt_Hash2Init
.public Dgt_Hash2Update
.public Dgt_Hash2GetHash
.public DC_FlushAll
.public DC_FlushRange
.public DC_InvalidateRange
.public DC_StoreRange
.public DC_WaitWriteBufferEmpty
.public EnableIrqFlag
.public fflush
.public FileInit
.public FS_CloseFile
.public FS_InitArchive
.public FS_LoadArchive
.public FS_NotifyArchiveAsyncEnd
.public FS_OpenFileDirect
.public FS_OpenFileFast
.public FS_ReadFile
.public FS_RegisterArchiveName
.public FS_SetArchiveProc
.public FSi_FindPath
.public GetIrqFlag
.public IC_InvalidateAll
.public IC_InvalidateRange
.public MI_CpuCopy8
.public MI_CpuFill8
.public MI_DmaCopy16
.public MI_StopDma
.public MIi_UncompressBackward
.public MTi_CardDmaCopy32
.public MTi_CpuClear32
.public MTi_CpuClearFast
.public MTi_CpuCopy32
.public OS_DisableIrqMask
.public OS_EnableIrqMask
.public OS_GetDTCMAddress
.public OS_GetLockID
.public OS_InitMutex
.public OS_IsTickAvailable
.public OS_LockCard
.public OS_ReadOwnerOfLockWord
.public OS_ResetRequestIrqMask
.public OS_SetDPermissionsForProtectionRegion
.public OS_SetIrqFunction
.public OS_SetIrqMask
.public OS_SetThreadPriority
.public OS_SleepThread
.public OS_SpinWait
.public OS_TryLockCartridge
.public OS_UnlockCard
.public OS_UnlockCartridgeVeneer
.public OS_WakeupThread
.public OS_WakeupThreadDirect
.public OSi_ReferSymbol
.public PM_ForceToPowerOff
.public PXI_Init
.public PXI_IsCallbackReady
.public PXI_SendWordByFifo
.public PXI_SetFifoRecvCallback
.public PXIi_HandlerRecvFifoNotEmpty
.public SetIrqFlag
.public OS_CreateThread
.public SVC_CpuSet
.public SVC_WaitByLoop
.public OS_ExitThread
.public WaitForever2
.public WaitForInterrupt

222
lib/NitroSDK/asm/math_crc.s Normal file
View File

@@ -0,0 +1,222 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start Mathi_Crc8InitTable
Mathi_Crc8InitTable: ; 0x02084FB8
stmdb sp!, {r3, lr}
mov ip, #0
mov r2, ip
_02084FC4:
mov r3, ip
mov lr, r2
_02084FCC:
tst r3, #0x80
eorne r3, r1, r3, lsl #1
add lr, lr, #1
moveq r3, r3, lsl #1
cmp lr, #8
blo _02084FCC
strb r3, [r0, ip]
add ip, ip, #1
cmp ip, #0x100
blo _02084FC4
ldmia sp!, {r3, pc}
arm_func_end Mathi_Crc8InitTable
arm_func_start Mathi_Crc8Update
Mathi_Crc8Update: ; 0x02084FF8
stmdb sp!, {r4, lr}
cmp r3, #0
ldrb lr, [r1]
mov r4, #0
bls _02085028
_0208500C:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, lr, ip
and ip, ip, #0xff
ldrb lr, [r0, ip]
blo _0208500C
_02085028:
strb lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end Mathi_Crc8Update
arm_func_start Mathi_Crc16InitTable
Mathi_Crc16InitTable: ; 0x02085030
stmdb sp!, {r3, lr}
mov lr, #0
mov r3, lr
_0208503C:
mov ip, lr
mov r2, r3
_02085044:
tst ip, #1
eorne ip, r1, ip, lsr #1
add r2, r2, #1
moveq ip, ip, lsr #1
cmp r2, #8
blo _02085044
mov r2, lr, lsl #1
add lr, lr, #1
strh ip, [r0, r2]
cmp lr, #0x100
blo _0208503C
ldmia sp!, {r3, pc}
arm_func_end Mathi_Crc16InitTable
arm_func_start Mathi_Crc16Update
Mathi_Crc16Update: ; 0x02085074
stmdb sp!, {r4, lr}
cmp r3, #0
ldrh lr, [r1]
mov r4, #0
bls _020850AC
_02085088:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, lr, ip
mov ip, ip, lsl #0x18
mov ip, ip, lsr #0x17
ldrh ip, [r0, ip]
eor lr, ip, lr, lsr #8
blo _02085088
_020850AC:
strh lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end Mathi_Crc16Update
arm_func_start Mathi_Crc32InitTable
Mathi_Crc32InitTable: ; 0x020850B4
stmdb sp!, {r3, lr}
mov ip, #0
mov r2, ip
_020850C0:
mov r3, ip
mov lr, r2
_020850C8:
tst r3, #1
eorne r3, r1, r3, lsr #1
add lr, lr, #1
moveq r3, r3, lsr #1
cmp lr, #8
blo _020850C8
str r3, [r0, ip, lsl #2]
add ip, ip, #1
cmp ip, #0x100
blo _020850C0
ldmia sp!, {r3, pc}
arm_func_end Mathi_Crc32InitTable
arm_func_start Mathi_Crc32Update
Mathi_Crc32Update: ; 0x020850F4
stmdb sp!, {r4, lr}
cmp r3, #0
ldr lr, [r1]
mov r4, #0
bls _02085128
_02085108:
ldrb ip, [r2], #1
add r4, r4, #1
cmp r4, r3
eor ip, lr, ip
and ip, ip, #0xff
ldr ip, [r0, ip, lsl #2]
eor lr, ip, lr, lsr #8
blo _02085108
_02085128:
str lr, [r1]
ldmia sp!, {r4, pc}
arm_func_end Mathi_Crc32Update
arm_func_start Math_CalcCrc8
Math_CalcCrc8: ; 0x02085130
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, #0
mov r3, r2
add r1, sp, #0
mov r2, lr
strb ip, [sp]
bl Mathi_Crc8Update
ldrb r0, [sp]
ldmia sp!, {r3, pc}
arm_func_end Math_CalcCrc8
arm_func_start Math_CalcCrc16
Math_CalcCrc16: ; 0x02085158
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, #0
mov r3, r2
add r1, sp, #0
mov r2, lr
strh ip, [sp]
bl Mathi_Crc16Update
ldrh r0, [sp]
ldmia sp!, {r3, pc}
arm_func_end Math_CalcCrc16
arm_func_start Math_CalcCrc32
Math_CalcCrc32: ; 0x02085180
stmdb sp!, {r3, lr}
mov lr, r1
mvn ip, #0
mov r3, r2
add r1, sp, #0
mov r2, lr
str ip, [sp]
bl Mathi_Crc32Update
ldr r0, [sp]
mvn r0, r0
ldmia sp!, {r3, pc}
arm_func_end Math_CalcCrc32
arm_func_start sub_020851AC
sub_020851AC: ; 0x020851AC
stmdb sp!, {r4, lr}
sub sp, sp, #8
movs r4, r0
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldrh r0, [r4, #0x3c]
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, pc}
add r1, sp, #0
add r0, r4, #0x50
mov r2, #8
bl MI_CpuCopy8
add r0, sp, #0
mov r1, #8
bl DC_StoreRange
ldr r0, [r4, #0x44]
cmp r0, #0
bne _02085230
ldrh r1, [sp]
ldr r0, _0208523C ; =0x00002348
cmp r1, r0
ldrneh r1, [sp]
ldrne r0, _02085240 ; =0x0000BD8A
cmpne r1, r0
bne _02085230
ldrh r0, [sp, #6]
cmp r0, #4
addeq sp, sp, #8
moveq r0, #1
ldmeqia sp!, {r4, pc}
_02085230:
mov r0, #0
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0208523C: .word 0x00002348
_02085240: .word 0x0000BD8A
arm_func_end sub_020851AC

View File

@@ -0,0 +1,25 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start Math_CalcSha1
Math_CalcSha1: ; 0x02084F78
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x68
mov r6, r0
add r0, sp, #0
mov r5, r1
mov r4, r2
bl Dgt_Hash2Init
add r0, sp, #0
mov r1, r5
mov r2, r4
bl Dgt_Hash2Update
add r0, sp, #0
mov r1, r6
bl Dgt_Hash2GetHash
add sp, sp, #0x68
ldmia sp!, {r4, r5, r6, pc}
arm_func_end Math_CalcSha1

View File

@@ -0,0 +1,28 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start Math_CountPopulation
Math_CountPopulation: ; 0x02084F34
ldr r1, _02084F6C ; =0x55555555
ldr r2, _02084F70 ; =0x33333333
and r1, r1, r0, lsr #1
sub r0, r0, r1
and r1, r0, r2
and r0, r2, r0, lsr #2
add r1, r1, r0
ldr r0, _02084F74 ; =0x0F0F0F0F
add r1, r1, r1, lsr #4
and r0, r1, r0
add r0, r0, r0, lsr #8
add r0, r0, r0, lsr #16
and r0, r0, #0xff
bx lr
.align 2, 0
_02084F6C: .word 0x55555555
_02084F70: .word 0x33333333
_02084F74: .word 0x0F0F0F0F
arm_func_end Math_CountPopulation

View File

@@ -0,0 +1,704 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start string_put_char
string_put_char: ; 0x02085AF8
ldr r2, [r0]
cmp r2, #0
beq _02085B18
ldr r2, [r0, #4]
strb r1, [r2]
ldr r1, [r0]
sub r1, r1, #1
str r1, [r0]
_02085B18:
ldr r1, [r0, #4]
add r1, r1, #1
str r1, [r0, #4]
bx lr
arm_func_end string_put_char
arm_func_start string_fill_char
string_fill_char: ; 0x02085B28
stmdb sp!, {r3, lr}
cmp r2, #0
ldmleia sp!, {r3, pc}
ldr lr, [r0]
mov ip, #0
cmp lr, r2
movhi lr, r2
cmp lr, #0
bls _02085B60
_02085B4C:
ldr r3, [r0, #4]
strb r1, [r3, ip]
add ip, ip, #1
cmp ip, lr
blo _02085B4C
_02085B60:
ldr r1, [r0]
sub r1, r1, lr
str r1, [r0]
ldr r1, [r0, #4]
add r1, r1, r2
str r1, [r0, #4]
ldmia sp!, {r3, pc}
arm_func_end string_fill_char
arm_func_start string_put_string
string_put_string: ; 0x02085B7C
stmdb sp!, {r4, lr}
cmp r2, #0
ldmleia sp!, {r4, pc}
ldr r4, [r0]
mov lr, #0
cmp r4, r2
movhi r4, r2
cmp r4, #0
bls _02085BB8
_02085BA0:
ldrsb ip, [r1, lr]
ldr r3, [r0, #4]
strb ip, [r3, lr]
add lr, lr, #1
cmp lr, r4
blo _02085BA0
_02085BB8:
ldr r1, [r0]
sub r1, r1, r4
str r1, [r0]
ldr r1, [r0, #4]
add r1, r1, r2
str r1, [r0, #4]
ldmia sp!, {r4, pc}
arm_func_end string_put_string
arm_func_start OS_VsNPrintfEx
OS_VsNPrintfEx: ; 0x02085BD4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
mov sb, r2
str r1, [sp, #0xc]
str r0, [sp, #0x14]
str r0, [sp, #0x10]
ldrsb r0, [sb]
str r1, [sp]
mov fp, r3
cmp r0, #0
beq _02086400
_02085C00:
ldrsb r1, [sb]
and r0, r1, #0xff
eor r0, r0, #0x20
sub r0, r0, #0xa1
cmp r0, #0x3c
bhs _02085C3C
add r0, sp, #0xc
bl string_put_char
ldrsb r1, [sb, #1]!
cmp r1, #0
beq _020863F4
add r0, sp, #0xc
add sb, sb, #1
bl string_put_char
b _020863F4
_02085C3C:
cmp r1, #0x25
beq _02085C54
add r0, sp, #0xc
add sb, sb, #1
bl string_put_char
b _020863F4
_02085C54:
mov r5, #0
mov sl, r5
mov r2, sb
sub r6, r5, #1
mov r0, #0xa
mov r3, #0x57
_02085C6C:
ldrsb r4, [sb, #1]!
cmp r4, #0x20
bgt _02085C80
beq _02085CBC
b _02085CD4
_02085C80:
cmp r4, #0x30
bgt _02085CD4
cmp r4, #0x2b
blt _02085CD4
beq _02085CA8
cmp r4, #0x2d
beq _02085CC4
cmp r4, #0x30
beq _02085CCC
b _02085CD4
_02085CA8:
ldrsb r1, [sb, #-1]
cmp r1, #0x20
bne _02085CD4
orr r5, r5, #2
b _02085C6C
_02085CBC:
orr r5, r5, #1
b _02085C6C
_02085CC4:
orr r5, r5, #8
b _02085C6C
_02085CCC:
orr r5, r5, #0x10
b _02085C6C
_02085CD4:
cmp r4, #0x2a
bne _02085CF8
add fp, fp, #4
ldr sl, [fp, #-4]
add sb, sb, #1
cmp sl, #0
rsblt sl, sl, #0
orrlt r5, r5, #8
b _02085D20
_02085CF8:
mov r1, #0xa
b _02085D0C
_02085D00:
ldrsb r4, [sb], #1
mla r4, sl, r1, r4
sub sl, r4, #0x30
_02085D0C:
ldrsb r4, [sb]
cmp r4, #0x30
blt _02085D20
cmp r4, #0x39
ble _02085D00
_02085D20:
ldrsb r1, [sb]
cmp r1, #0x2e
bne _02085D7C
ldrsb r1, [sb, #1]!
mov r6, #0
cmp r1, #0x2a
bne _02085D54
add fp, fp, #4
ldr r6, [fp, #-4]
add sb, sb, #1
cmp r6, #0
mvnlt r6, #0
b _02085D7C
_02085D54:
mov r1, #0xa
b _02085D68
_02085D5C:
ldrsb r4, [sb], #1
mla r4, r6, r1, r4
sub r6, r4, #0x30
_02085D68:
ldrsb r4, [sb]
cmp r4, #0x30
blt _02085D7C
cmp r4, #0x39
ble _02085D5C
_02085D7C:
ldrsb r1, [sb]
cmp r1, #0x68
beq _02085D94
cmp r1, #0x6c
beq _02085DAC
b _02085DC0
_02085D94:
ldrsb r1, [sb, #1]!
cmp r1, #0x68
orrne r5, r5, #0x40
addeq sb, sb, #1
orreq r5, r5, #0x100
b _02085DC0
_02085DAC:
ldrsb r1, [sb, #1]!
cmp r1, #0x6c
orrne r5, r5, #0x20
addeq sb, sb, #1
orreq r5, r5, #0x80
_02085DC0:
ldrsb r1, [sb]
cmp r1, #0x69
bgt _02085E04
cmp r1, #0x63
blt _02085DE8
beq _02085E74
cmp r1, #0x64
cmpne r1, #0x69
beq _0208602C
b _02086010
_02085DE8:
cmp r1, #0x25
bgt _02085DF8
beq _02085FF4
b _02086010
_02085DF8:
cmp r1, #0x58
beq _02085E60
b _02086010
_02085E04:
cmp r1, #0x6e
bgt _02085E14
beq _02085F9C
b _02086010
_02085E14:
sub r1, r1, #0x6f
cmp r1, #9
addls pc, pc, r1, lsl #2
b _02086010
_02085E24: ; jump table
b _02085E4C ; case 0
b _02085E68 ; case 1
b _02086010 ; case 2
b _02086010 ; case 3
b _02085EE8 ; case 4
b _02086010 ; case 5
b _02085E58 ; case 6
b _02086010 ; case 7
b _02086010 ; case 8
b _02086024 ; case 9
_02085E4C:
orr r5, r5, #0x1000
mov r0, #8
b _0208602C
_02085E58:
orr r5, r5, #0x1000
b _0208602C
_02085E60:
mov r3, #0x37
b _02086024
_02085E68:
orr r5, r5, #4
mov r6, #8
b _02086024
_02085E74:
cmp r6, #0
bge _02086010
add fp, fp, #4
tst r5, #8
ldr r4, [fp, #-4]
beq _02085EB0
mov r1, r4, lsl #0x18
add r0, sp, #0xc
mov r1, r1, asr #0x18
bl string_put_char
add r0, sp, #0xc
sub r2, sl, #1
mov r1, #0x20
bl string_fill_char
b _02085EE0
_02085EB0:
tst r5, #0x10
movne r0, #0x30
moveq r0, #0x20
mov r1, r0, lsl #0x18
add r0, sp, #0xc
mov r1, r1, asr #0x18
sub r2, sl, #1
bl string_fill_char
mov r1, r4, lsl #0x18
add r0, sp, #0xc
mov r1, r1, asr #0x18
bl string_put_char
_02085EE0:
add sb, sb, #1
b _020863F4
_02085EE8:
add fp, fp, #4
cmp r6, #0
ldr r7, [fp, #-4]
mov r4, #0
bge _02085F20
ldrsb r0, [r7]
cmp r0, #0
beq _02085F34
_02085F08:
add r4, r4, #1
ldrsb r0, [r7, r4]
cmp r0, #0
bne _02085F08
b _02085F34
_02085F1C:
add r4, r4, #1
_02085F20:
cmp r4, r6
bge _02085F34
ldrsb r0, [r7, r4]
cmp r0, #0
bne _02085F1C
_02085F34:
tst r5, #8
sub sl, sl, r4
beq _02085F64
add r0, sp, #0xc
mov r1, r7
mov r2, r4
bl string_put_string
add r0, sp, #0xc
mov r2, sl
mov r1, #0x20
bl string_fill_char
b _02085F94
_02085F64:
tst r5, #0x10
movne r0, #0x30
moveq r0, #0x20
mov r1, r0, lsl #0x18
add r0, sp, #0xc
mov r2, sl
mov r1, r1, asr #0x18
bl string_fill_char
add r0, sp, #0xc
mov r1, r7
mov r2, r4
bl string_put_string
_02085F94:
add sb, sb, #1
b _020863F4
_02085F9C:
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
tst r5, #0x100
sub r2, r1, r0
bne _02085FEC
tst r5, #0x40
beq _02085FC8
add fp, fp, #4
ldr r0, [fp, #-4]
strh r2, [r0]
b _02085FEC
_02085FC8:
add fp, fp, #4
tst r5, #0x80
ldreq r0, [fp, #-4]
streq r2, [r0]
beq _02085FEC
ldr r0, [fp, #-4]
mov r1, r2, asr #0x1f
str r2, [r0]
str r1, [r0, #4]
_02085FEC:
add sb, sb, #1
b _020863F4
_02085FF4:
add r0, r2, #1
cmp r0, sb
bne _02086010
add r0, sp, #0xc
add sb, sb, #1
bl string_put_char
b _020863F4
_02086010:
mov r1, r2
add r0, sp, #0xc
sub r2, sb, r2
bl string_put_string
b _020863F4
_02086024:
orr r5, r5, #0x1000
mov r0, #0x10
_0208602C:
tst r5, #8
bicne r5, r5, #0x10
cmp r6, #0
bicge r5, r5, #0x10
movlt r6, #1
mov r4, #0
tst r5, #0x1000
beq _020860EC
tst r5, #0x100
beq _02086064
add fp, fp, #4
ldrb r7, [fp, #-4]
mov r1, #0
b _0208609C
_02086064:
tst r5, #0x40
beq _0208607C
add fp, fp, #4
ldrh r7, [fp, #-4]
mov r1, #0
b _0208609C
_0208607C:
tst r5, #0x80
addeq fp, fp, #4
ldreq r7, [fp, #-4]
moveq r1, #0
beq _0208609C
add fp, fp, #8
ldr r7, [fp, #-8]
ldr r1, [fp, #-4]
_0208609C:
bic r5, r5, #3
tst r5, #4
beq _020861AC
cmp r0, #0x10
bne _020860D4
cmp r1, #0
cmpeq r7, #0
beq _020861AC
add r4, r3, #0x21
mov r2, #0x30
strb r4, [sp, #8]
strb r2, [sp, #9]
mov r4, #2
b _020861AC
_020860D4:
cmp r0, #8
bne _020861AC
mov r2, #0x30
strb r2, [sp, #8]
mov r4, #1
b _020861AC
_020860EC:
tst r5, #0x100
beq _02086104
add fp, fp, #4
ldrsb r7, [fp, #-4]
mov r1, r7, asr #0x1f
b _0208613C
_02086104:
tst r5, #0x40
beq _0208611C
add fp, fp, #4
ldrsh r7, [fp, #-4]
mov r1, r7, asr #0x1f
b _0208613C
_0208611C:
tst r5, #0x80
addeq fp, fp, #4
ldreq r7, [fp, #-4]
moveq r1, r7, asr #0x1f
beq _0208613C
add fp, fp, #8
ldr r7, [fp, #-8]
ldr r1, [fp, #-4]
_0208613C:
mov ip, #0
and r2, ip, #0
and r8, r1, #0x80000000
cmp r2, #0
cmpeq r8, #0
beq _02086174
mvn r4, r7
mov r2, #0x2d
mvn r1, r1
strb r2, [sp, #8]
adds r7, r4, #1
adc r1, r1, ip
mov r4, #1
b _020861AC
_02086174:
cmp r1, ip
cmpeq r7, ip
cmpeq r6, #0
beq _020861AC
tst r5, #2
beq _0208619C
mov r2, #0x2b
strb r2, [sp, #8]
mov r4, #1
b _020861AC
_0208619C:
tst r5, #1
movne r2, #0x20
strneb r2, [sp, #8]
movne r4, #1
_020861AC:
cmp r0, #8
mov r8, #0
beq _020861CC
cmp r0, #0xa
beq _02086218
cmp r0, #0x10
beq _020862B0
b _020862FC
_020861CC:
cmp r1, r8
cmpeq r7, r8
beq _020862FC
add r2, sp, #0x18
mov r0, r8
mov lr, #7
mov ip, r8
_020861E8:
and r3, r7, lr
add r3, r3, #0x30
strb r3, [r2, r8]
mov r3, r1, lsr #3
cmp r3, r0
mov r7, r7, lsr #3
orr r7, r7, r1, lsl #29
mov r1, r3
cmpeq r7, ip
add r8, r8, #1
bne _020861E8
b _020862FC
_02086218:
mov r0, r8
cmp r0, r8
cmpeq r1, r8
bne _02086264
cmp r7, #0
beq _020862FC
ldr ip, _0208644C ; =0xCCCCCCCD
add r3, sp, #0x18
mov r2, #0xa
_0208623C:
umull r1, r0, r7, ip
movs r0, r0, lsr #3
mul r1, r0, r2
sub r1, r7, r1
mov r7, r0
add r0, r1, #0x30
strb r0, [r3, r8]
add r8, r8, #1
bne _0208623C
b _020862FC
_02086264:
cmp r1, r8
cmpeq r7, r8
beq _020862FC
_02086270:
mov r0, r7
mov r2, #0xa
mov r3, #0
bl _ll_udiv
mov r2, #0xa
umull r3, r2, r0, r2
subs r2, r7, r3
add r3, r2, #0x30
add r2, sp, #0x18
strb r3, [r2, r8]
cmp r1, #0
cmpeq r0, #0
mov r7, r0
add r8, r8, #1
bne _02086270
b _020862FC
_020862B0:
cmp r1, r8
cmpeq r7, r8
beq _020862FC
add ip, sp, #0x18
mov lr, #0xf
_020862C4:
and r2, r7, lr
mov r7, r7, lsr #4
mov r0, r1, lsr #4
orr r7, r7, r1, lsl #28
cmp r2, #0xa
mov r1, r0
addlt r0, r2, #0x30
addge r0, r2, r3
strb r0, [ip, r8]
mov r0, #0
cmp r1, r0
cmpeq r7, r0
add r8, r8, #1
bne _020862C4
_020862FC:
cmp r4, #0
ble _02086324
ldrsb r0, [sp, #8]
cmp r0, #0x30
bne _02086324
add r0, sp, #0x18
mov r1, #0x30
strb r1, [r0, r8]
add r8, r8, #1
mov r4, #0
_02086324:
tst r5, #0x10
sub r6, r6, r8
beq _02086340
sub r0, sl, r8
sub r0, r0, r4
cmp r6, r0
movlt r6, r0
_02086340:
cmp r6, #0
subgt sl, sl, r6
add r0, r4, r8
sub sl, sl, r0
ands r0, r5, #8
str r0, [sp, #4]
bne _0208636C
add r0, sp, #0xc
mov r2, sl
mov r1, #0x20
bl string_fill_char
_0208636C:
cmp r4, #0
ble _02086398
add r0, sp, #8
add r5, r0, r4
add r7, sp, #0xc
_02086380:
ldrsb r1, [r5, #-1]!
mov r0, r7
sub r4, r4, #1
bl string_put_char
cmp r4, #0
bgt _02086380
_02086398:
add r0, sp, #0xc
mov r2, r6
mov r1, #0x30
bl string_fill_char
cmp r8, #0
ble _020863D4
add r0, sp, #0x18
add r5, r0, r8
add r4, sp, #0xc
_020863BC:
ldrsb r1, [r5, #-1]!
mov r0, r4
sub r8, r8, #1
bl string_put_char
cmp r8, #0
bgt _020863BC
_020863D4:
ldr r0, [sp, #4]
cmp r0, #0
beq _020863F0
add r0, sp, #0xc
mov r2, sl
mov r1, #0x20
bl string_fill_char
_020863F0:
add sb, sb, #1
_020863F4:
ldrsb r0, [sb]
cmp r0, #0
bne _02085C00
_02086400:
ldr r0, [sp, #0xc]
cmp r0, #0
beq _0208641C
ldr r0, [sp, #0x10]
mov r1, #0
strb r1, [r0]
b _02086438
_0208641C:
ldr r0, [sp]
cmp r0, #0
beq _02086438
ldr r1, [sp, #0x14]
mov r2, #0
add r0, r1, r0
strb r2, [r0, #-1]
_02086438:
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
sub r0, r1, r0
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0208644C: .word 0xCCCCCCCD
arm_func_end OS_VsNPrintfEx

View File

@@ -0,0 +1,673 @@
.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start Std_CopyLString
Std_CopyLString: ; 0x02085244
stmdb sp!, {r4, lr}
sub ip, r2, #1
mov r4, r1
cmp ip, #0
mov lr, #0
ble _02085280
_0208525C:
ldrsb r3, [r4]
strb r3, [r0, lr]
ldrsb r3, [r4]
cmp r3, #0
beq _02085280
add lr, lr, #1
cmp lr, ip
add r4, r4, #1
blt _0208525C
_02085280:
sub r3, r2, #1
cmp lr, r3
blt _02085298
cmp r2, #0
movne r2, #0
strneb r2, [r0, lr]
_02085298:
mov r0, r1
bl Std_GetStringLength
ldmia sp!, {r4, pc}
arm_func_end Std_CopyLString
arm_func_start Std_GetStringLength
Std_GetStringLength: ; 0x020852A4
ldrsb r1, [r0]
mov r2, #0
cmp r1, #0
beq _020852C4
_020852B4:
add r2, r2, #1
ldrsb r1, [r0, r2]
cmp r1, #0
bne _020852B4
_020852C4:
mov r0, r2
bx lr
arm_func_end Std_GetStringLength
arm_func_start Std_CompareString__020852CC
Std_CompareString__020852CC: ; 0x020852CC
b _020852D8
_020852D0:
add r0, r0, #1
add r1, r1, #1
_020852D8:
ldrsb r3, [r1]
ldrsb r2, [r0]
cmp r2, r3
bne _020852F0
cmp r2, #0
bne _020852D0
_020852F0:
sub r0, r2, r3
bx lr
arm_func_end Std_CompareString__020852CC
arm_func_start Std_CompareNString
Std_CompareNString: ; 0x020852F8
stmdb sp!, {r3, lr}
cmp r2, #0
beq _02085330
cmp r2, #0
mov lr, #0
ble _02085330
_02085310:
ldrb ip, [r0, lr]
ldrb r3, [r1, lr]
cmp ip, r3
subne r0, ip, r3
ldmneia sp!, {r3, pc}
add lr, lr, #1
cmp lr, r2
blt _02085310
_02085330:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end Std_CompareNString
arm_func_start Std_TsScanf
Std_TsScanf: ; 0x02085338
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl Std_TvsScanf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end Std_TsScanf
arm_func_start Stdi_IsSpace
Stdi_IsSpace: ; 0x02085360
sub r3, r0, #9
cmp r3, #0x17
mov r0, #0
bxhi lr
ldr r1, _02085384 ; =0x0080001F
mov r2, #1
tst r1, r2, lsl r3
movne r0, r2
bx lr
.align 2, 0
_02085384: .word 0x0080001F
arm_func_end Stdi_IsSpace
arm_func_start Stdi_FillBitset
Stdi_FillBitset: ; 0x02085388
stmdb sp!, {r3, r4, r5, lr}
cmp r1, r2
ldmhsia sp!, {r3, r4, r5, pc}
and r3, r2, #0x1f
mov ip, #1
mov r3, ip, lsl r3
sub r5, r3, #1
mvn ip, #0
_020853A8:
and r3, r1, #0x1f
mov lr, r1, lsr #5
mov r4, ip, lsl r3
add r1, lr, #1
cmp r2, r1, lsl #5
ldr r3, [r0, lr, lsl #2]
andlo r4, r4, r5
mov r1, r1, lsl #5
orr r3, r3, r4
cmp r1, r2
str r3, [r0, lr, lsl #2]
blo _020853A8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end Stdi_FillBitset
arm_func_start Std_TvsScanf
Std_TvsScanf: ; 0x020853DC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x34
mov r8, r1
ldrsb r4, [r8]
mov sb, r0
mov r0, #0
str r0, [sp, #0xc]
str r2, [sp]
str sb, [sp, #0x10]
str r0, [sp, #4]
cmp r4, #0
beq _02085AD4
_0208540C:
mov r0, r4
bl Stdi_IsSpace
cmp r0, #0
beq _02085460
ldrsb r0, [r8]
bl Stdi_IsSpace
cmp r0, #0
beq _0208543C
_0208542C:
ldrsb r0, [r8, #1]!
bl Stdi_IsSpace
cmp r0, #0
bne _0208542C
_0208543C:
ldrsb r0, [sb]
bl Stdi_IsSpace
cmp r0, #0
beq _02085AC8
_0208544C:
ldrsb r0, [sb, #1]!
bl Stdi_IsSpace
cmp r0, #0
bne _0208544C
b _02085AC8
_02085460:
cmp r4, #0x25
beq _020854A0
ldrsb r0, [sb]
cmp r4, r0
bne _02085AD4
and r0, r4, #0xff
eor r0, r0, #0x20
sub r0, r0, #0xa1
cmp r0, #0x3c
bhs _02085494
ldrsb r0, [sb, #1]!
cmp r4, r0
bne _02085AD4
_02085494:
add sb, sb, #1
add r8, r8, #1
b _02085AC8
_020854A0:
ldrsb r0, [r8, #1]
cmp r0, #0x25
bne _020854C0
ldrsb r0, [sb]
cmp r4, r0
bne _02085AD4
add r8, r8, #2
b _02085AC8
_020854C0:
ldrsb r0, [r8, #1]!
mov sl, #0
mov r5, sl
cmp r0, #0x2a
mov fp, sl
mov r6, sl
orreq r5, sl, #0x2000
ldreqsb r0, [r8, #1]!
mov r1, #0xa
b _020854F4
_020854E8:
mla r2, r6, r1, r0
ldrsb r0, [r8, #1]!
sub r6, r2, #0x30
_020854F4:
cmp r0, #0x30
blt _02085504
cmp r0, #0x39
ble _020854E8
_02085504:
cmp r0, #0x68
beq _02085518
cmp r0, #0x6c
beq _02085530
b _02085544
_02085518:
ldrsb r0, [r8, #1]!
cmp r0, #0x68
orrne r5, r5, #0x40
orreq r5, r5, #0x100
ldreqsb r0, [r8, #1]!
b _02085544
_02085530:
ldrsb r0, [r8, #1]!
cmp r0, #0x6c
orrne r5, r5, #0x20
ldreqsb r0, [r8, #1]!
orreq r5, r5, #0x80
_02085544:
cmp r0, #0x69
bgt _02085590
cmp r0, #0x64
blt _02085564
beq _020855D8
cmp r0, #0x69
beq _020855E0
b _02085AD4
_02085564:
cmp r0, #0x5b
bgt _02085584
cmp r0, #0x58
blt _02085AD4
beq _020855FC
cmp r0, #0x5b
beq _020858D0
b _02085AD4
_02085584:
cmp r0, #0x63
beq _020857D8
b _02085AD4
_02085590:
cmp r0, #0x6e
bgt _020855A0
beq _02085608
b _02085AD4
_020855A0:
sub r1, r0, #0x6f
cmp r1, #9
addls pc, pc, r1, lsl #2
b _02085AD4
_020855B0: ; jump table
b _020855E8 ; case 0
b _020855FC ; case 1
b _02085AD4 ; case 2
b _02085AD4 ; case 3
b _020857D8 ; case 4
b _02085AD4 ; case 5
b _020855F0 ; case 6
b _02085AD4 ; case 7
b _02085AD4 ; case 8
b _020855FC ; case 9
_020855D8:
mov r4, #0xa
b _0208562C
_020855E0:
mvn r4, #0
b _0208562C
_020855E8:
mov r4, #8
b _0208562C
_020855F0:
orr r5, r5, #0x1000
mov r4, #0xa
b _0208562C
_020855FC:
orr r5, r5, #0x1000
mov r4, #0x10
b _0208562C
_02085608:
tst r5, #0x2000
ldreq r0, [sp, #4]
add r8, r8, #1
subeq r0, r0, #1
streq r0, [sp, #4]
ldr r0, [sp, #0x10]
sub sl, sb, r0
mov fp, sl, asr #0x1f
b _0208574C
_0208562C:
ldrsb r7, [sb]
add r8, r8, #1
mov r0, r7
bl Stdi_IsSpace
cmp r0, #0
beq _02085658
_02085644:
ldrsb r7, [sb, #1]!
mov r0, r7
bl Stdi_IsSpace
cmp r0, #0
bne _02085644
_02085658:
cmp r7, #0x2b
orreq r5, r5, #2
beq _02085670
cmp r7, #0x2d
bne _02085678
orr r5, r5, #8
_02085670:
ldrsb r7, [sb, #1]!
b _02085658
_02085678:
mvn r0, #0
cmp r4, r0
bne _020856A4
cmp r7, #0x30
movne r4, #0xa
bne _020856A4
ldrsb r0, [sb, #1]
cmp r0, #0x78
cmpne r0, #0x58
moveq r4, #0x10
movne r4, #8
_020856A4:
cmp r4, #0x10
cmpeq r7, #0x30
bne _020856C0
ldrsb r0, [sb, #1]
cmp r0, #0x78
cmpne r0, #0x58
ldreqsb r7, [sb, #2]!
_020856C0:
cmp r6, #0
mvneq r6, #0x80000000
cmp r6, #0
mov r2, #0
ble _0208572C
mov ip, r4, asr #0x1f
_020856D8:
sub r3, r7, #0x30
cmp r3, #0xa
blo _02085700
sub r0, r3, #0x31
cmp r0, #6
sublo r3, r3, #0x27
blo _02085700
sub r3, r3, #0x11
cmp r3, #6
addlo r3, r3, #0xa
_02085700:
cmp r3, r4
bhs _0208572C
ldrsb r7, [sb, #1]!
add r2, r2, #1
umull r1, r0, sl, r4
mla r0, sl, ip, r0
adds sl, r3, r1
mla r0, fp, r4, r0
adc fp, r0, #0
cmp r2, r6
blt _020856D8
_0208572C:
cmp r2, #0
beq _02085AD4
tst r5, #8
beq _02085744
rsbs sl, sl, #0
rsc fp, fp, #0
_02085744:
mov r0, #1
str r0, [sp, #0xc]
_0208574C:
tst r5, #0x2000
bne _02085AC8
ldr r0, [sp, #4]
tst r5, #0x100
add r0, r0, #1
str r0, [sp, #4]
beq _02085780
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr r0, [r0, #-4]
strb sl, [r0]
b _02085AC8
_02085780:
tst r5, #0x40
beq _020857A0
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr r0, [r0, #-4]
strh sl, [r0]
b _02085AC8
_020857A0:
tst r5, #0x80
beq _020857C0
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr r0, [r0, #-4]
stmia r0, {sl, fp}
b _02085AC8
_020857C0:
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr r0, [r0, #-4]
str sl, [r0]
b _02085AC8
_020857D8:
mov r1, #1
tst r5, #0x2000
add r8, r8, #1
mov r4, #0
str r1, [sp, #0xc]
bne _0208580C
ldr r1, [sp]
add r1, r1, #4
str r1, [sp]
ldr r4, [r1, #-4]
ldr r1, [sp, #4]
add r1, r1, #1
str r1, [sp, #4]
_0208580C:
cmp r0, #0x73
bne _02085888
ldrsb r5, [sb]
cmp r6, #0
mvneq r6, #0x80000000
mov r0, r5
bl Stdi_IsSpace
cmp r0, #0
beq _02085858
_02085830:
ldrsb r5, [sb, #1]!
mov r0, r5
bl Stdi_IsSpace
cmp r0, #0
bne _02085830
b _02085858
_02085848:
cmp r4, #0
strneb r5, [r4], #1
ldrsb r5, [sb, #1]!
sub r6, r6, #1
_02085858:
cmp r5, #0
beq _02085878
mov r0, r5
bl Stdi_IsSpace
cmp r0, #0
bne _02085878
cmp r6, #0
bgt _02085848
_02085878:
cmp r4, #0
movne r0, #0
strneb r0, [r4]
b _02085AC8
_02085888:
cmp r6, #0
moveq r6, #1
ldrsb r0, [sb]
b _020858A8
_02085898:
cmp r4, #0
strneb r0, [r4], #1
ldrsb r0, [sb, #1]!
sub r6, r6, #1
_020858A8:
cmp r0, #0
beq _020858B8
cmp r6, #0
bgt _02085898
_020858B8:
cmp r4, #0
beq _02085AC8
cmp r6, #0
movgt r0, #0
strgtb r0, [r4]
b _02085AC8
_020858D0:
mov sl, #0
mov r3, #1
add r1, sp, #0x14
mov r0, sl
mov r2, #0x20
mov r7, sl
mov fp, sl
str r3, [sp, #8]
bl MTi_CpuClear32
ldrsb r0, [r8, #1]!
cmp r0, #0x5e
moveq r0, sl
addeq r8, r8, #1
streq r0, [sp, #8]
ldrsb r0, [r8]
cmp r0, #0x5d
bne _02085938
and r2, r0, #0xff
mov r0, r2, lsr #5
add r1, sp, #0x14
ldr r4, [r1, r0, lsl #2]
and r2, r2, #0x1f
mov r3, #1
orr r2, r4, r3, lsl r2
str r2, [r1, r0, lsl #2]
add r8, r8, #1
_02085938:
add r4, sp, #0x14
_0208593C:
ldrsb r0, [r8]
cmp r0, #0
cmpne r0, #0x5d
bne _0208598C
cmp fp, #0
beq _0208597C
add r4, sp, #0x14
mov r3, r7, lsr #5
ldr r2, [r4, r3, lsl #2]
and r0, r7, #0x1f
mov r1, #1
orr r0, r2, r1, lsl r0
str r0, [r4, r3, lsl #2]
ldr r0, [sp, #0x18]
orr r0, r0, #0x2000
str r0, [sp, #0x18]
_0208597C:
ldrsb r0, [r8]
cmp r0, #0x5d
addeq r8, r8, #1
b _02085A38
_0208598C:
cmp fp, #0
bne _020859CC
cmp r7, #0
beq _020859A8
cmp r0, #0x2d
moveq fp, #1
beq _02085A30
_020859A8:
and r0, r0, #0xff
mov r3, r0, lsr #5
ldr r2, [r4, r3, lsl #2]
and r1, r0, #0x1f
mov r0, #1
orr r0, r2, r0, lsl r1
str r0, [r4, r3, lsl #2]
ldrb r7, [r8]
b _02085A30
_020859CC:
and r2, r0, #0xff
cmp r7, r2
bls _02085A18
mov r1, r7, lsr #5
ldr fp, [r4, r1, lsl #2]
and r7, r7, #0x1f
mov r3, #1
orr r3, fp, r3, lsl r7
str r3, [r4, r1, lsl #2]
ldr r1, [sp, #0x18]
mov r0, r2, lsr #5
orr r1, r1, #0x2000
str r1, [sp, #0x18]
ldr r3, [r4, r0, lsl #2]
and r2, r2, #0x1f
mov r1, #1
orr r1, r3, r1, lsl r2
str r1, [r4, r0, lsl #2]
b _02085A28
_02085A18:
mov r1, r7
add r2, r2, #1
mov r0, r4
bl Stdi_FillBitset
_02085A28:
mov fp, #0
mov r7, fp
_02085A30:
add r8, r8, #1
b _0208593C
_02085A38:
mov r0, #1
tst r5, #0x2000
str r0, [sp, #0xc]
bne _02085A64
ldr r0, [sp]
add r0, r0, #4
str r0, [sp]
ldr sl, [r0, #-4]
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
_02085A64:
cmp r6, #0
mvneq r6, #0x80000000
ldrsb r0, [sb]
add r3, sp, #0x14
b _02085AAC
_02085A78:
and r4, r0, #0xff
mov r1, r4, lsr #5
ldr r2, [r3, r1, lsl #2]
and r1, r4, #0x1f
mov r1, r2, lsr r1
and r2, r1, #1
ldr r1, [sp, #8]
cmp r1, r2
bne _02085ABC
cmp sl, #0
strneb r0, [sl], #1
ldrsb r0, [sb, #1]!
sub r6, r6, #1
_02085AAC:
cmp r0, #0
beq _02085ABC
cmp r6, #0
bgt _02085A78
_02085ABC:
cmp sl, #0
movne r0, #0
strneb r0, [sl]
_02085AC8:
ldrsb r4, [r8]
cmp r4, #0
bne _0208540C
_02085AD4:
ldrsb r0, [sb]
cmp r0, #0
ldreq r0, [sp, #0xc]
cmpeq r0, #0
mvneq r0, #0
streq r0, [sp, #4]
ldr r0, [sp, #4]
add sp, sp, #0x34
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end Std_TvsScanf

View File

@@ -1,6 +1,6 @@
#include "main_0207E81C.h"
u8 FSi_OpenFileDirectCommand(s32 *param_0) // FSi_OpenFileDirectCommand
u8 FSi_OpenFileDirectCommand(s32 *param_0)
{
param_0[9] = param_0[12];
param_0[11] = param_0[12];
@@ -10,7 +10,8 @@ u8 FSi_OpenFileDirectCommand(s32 *param_0) // FSi_OpenFileDirectCommand
return 0;
}
u8 FSi_CloseFileCommand() // FSi_CloseFileCommand
u8 FSi_CloseFileCommand()
{
return 0;
}

View File

@@ -278,12 +278,24 @@ Static main
Object lib/NitroSDK/asm/pxi_fifo.o
Object lib/NitroSDK/asm/fs_command.o
Object lib/NitroSDK/asm/fs_command_default.o
Object src/main_0207E81C.o
Object asm/main_0207E84C.o
Object lib/NitroSDK/src/fs_command_default_1.o
Object lib/NitroSDK/asm/fs_archive.o
Object src/main_0207F3E4.o
Object asm/main_0207F40C.o
Object lib/NitroSDK/asm/fs_file.o
Object src/main_0207F818.o
Object asm/main_0207F894.o
Object lib/NitroSDK/asm/card_rom.o
Object lib/NitroSDK/asm/card_request.o
Object lib/NitroSDK/asm/card_pullOut.o
Object lib/NitroSDK/asm/ctrdg.o
Object lib/NitroSDK/asm/ctrdg_proc.o
Object lib/NitroSDK/asm/ctrdg_task.o
Object lib/NitroSDK/asm/math_math.o
Object lib/NitroSDK/asm/math_dgt.o
Object lib/NitroSDK/asm/math_crc.o
Object lib/NitroSDK/asm/std_string.o
Object lib/NitroSDK/asm/os_printf.o
Object lib/MSL_C/asm/msl.o
Object lib/MSL_C/src/arith.o
Object lib/MSL_C/asm/MSL_Common_buffer_io.o
Object asm/main_02086568.o