mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-26 16:37:17 -05:00
Decomped sub_0207B860
Decomped by Aaron23145.
This commit is contained in:
parent
dc245a1890
commit
118f3c51f1
|
|
@ -1,23 +1 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
.public _022B99A8
|
|
||||||
.public _022B99D0
|
|
||||||
.public _022B99D4
|
|
||||||
.public _022B99D8
|
|
||||||
.public ArrayCopy16
|
|
||||||
.public EnableIrqFlag
|
|
||||||
.public GetTimer0Control
|
|
||||||
.public MemcpyFast
|
|
||||||
.public OS_GetLockID
|
|
||||||
.public SetIrqFlag
|
|
||||||
.public sub_01FF97CC
|
|
||||||
.public sub_02078900
|
|
||||||
.public sub_02078C3C
|
|
||||||
.public sub_02078CC8
|
|
||||||
.public sub_0207C164
|
|
||||||
.public sub_0207D9A4
|
|
||||||
.public sub_0207DAB0
|
|
||||||
.public sub_0207DAFC
|
|
||||||
.public sub_0207DB20
|
|
||||||
.public sub_02083434
|
|
||||||
.public SVC_WaitByLoop
|
|
||||||
.public WaitForever2
|
|
||||||
|
|
|
||||||
21
asm/include/main_0207B87C.inc
Normal file
21
asm/include/main_0207B87C.inc
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#pragma once
|
||||||
|
.public ArrayCopy16
|
||||||
|
.public EnableIrqFlag
|
||||||
|
.public GetTimer0Control
|
||||||
|
.public MemcpyFast
|
||||||
|
.public OS_GetLockID
|
||||||
|
.public SetIrqFlag
|
||||||
|
.public WaitForever2
|
||||||
|
.public _022B99A8
|
||||||
|
.public _022B99D0
|
||||||
|
.public _022B99D4
|
||||||
|
.public _022B99D8
|
||||||
|
.public sub_01FF97CC
|
||||||
|
.public sub_02078C3C
|
||||||
|
.public sub_02078CC8
|
||||||
|
.public sub_0207C164
|
||||||
|
.public sub_0207D9A4
|
||||||
|
.public sub_0207DAB0
|
||||||
|
.public sub_0207DAFC
|
||||||
|
.public sub_0207DB20
|
||||||
|
.public sub_02083434
|
||||||
|
|
@ -3,308 +3,10 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
|
; https://decomp.me/scratch/5f50V
|
||||||
arm_func_start sub_0207B854
|
arm_func_start sub_0207B854
|
||||||
sub_0207B854: ; 0x0207B854
|
sub_0207B854: ; 0x0207B854
|
||||||
subs r0, r0, #4
|
subs r0, r0, #4
|
||||||
bhs sub_0207B854
|
bhs sub_0207B854
|
||||||
bx lr
|
bx lr
|
||||||
arm_func_end sub_0207B854
|
arm_func_end sub_0207B854
|
||||||
|
|
||||||
arm_func_start sub_0207B860
|
|
||||||
sub_0207B860: ; 0x0207B860
|
|
||||||
stmdb sp!, {r3, lr}
|
|
||||||
mov r0, #1
|
|
||||||
blx SVC_WaitByLoop
|
|
||||||
mov r0, #1
|
|
||||||
mov r1, r0
|
|
||||||
bl sub_02078900
|
|
||||||
ldmia sp!, {r3, pc}
|
|
||||||
arm_func_end sub_0207B860
|
|
||||||
|
|
||||||
arm_func_start sub_0207B87C
|
|
||||||
sub_0207B87C: ; 0x0207B87C
|
|
||||||
stmdb sp!, {r3, r4, r5, lr}
|
|
||||||
ldr r0, _0207B8C8 ; =_022B99D0
|
|
||||||
ldrh r1, [r0, #2]
|
|
||||||
cmp r1, #0
|
|
||||||
ldmneia sp!, {r3, r4, r5, pc}
|
|
||||||
mov r1, #1
|
|
||||||
strh r1, [r0, #2]
|
|
||||||
bl sub_0207D9A4
|
|
||||||
mov r5, #0xc
|
|
||||||
mov r4, #1
|
|
||||||
_0207B8A4:
|
|
||||||
mov r0, r5
|
|
||||||
mov r1, r4
|
|
||||||
bl sub_0207DAFC
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0207B8A4
|
|
||||||
ldr r1, _0207B8CC ; =sub_0207B8D0
|
|
||||||
mov r0, #0xc
|
|
||||||
bl sub_0207DAB0
|
|
||||||
ldmia sp!, {r3, r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0207B8C8: .word _022B99D0
|
|
||||||
_0207B8CC: .word sub_0207B8D0
|
|
||||||
arm_func_end sub_0207B87C
|
|
||||||
|
|
||||||
arm_func_start sub_0207B8D0
|
|
||||||
sub_0207B8D0: ; 0x0207B8D0
|
|
||||||
stmdb sp!, {r3, lr}
|
|
||||||
and r0, r1, #0x7f00
|
|
||||||
mov r0, r0, lsl #8
|
|
||||||
mov r0, r0, lsr #0x10
|
|
||||||
cmp r0, #0x10
|
|
||||||
bne _0207B8F8
|
|
||||||
ldr r0, _0207B900 ; =_022B99D0
|
|
||||||
mov r1, #1
|
|
||||||
strh r1, [r0]
|
|
||||||
ldmia sp!, {r3, pc}
|
|
||||||
_0207B8F8:
|
|
||||||
bl WaitForever2
|
|
||||||
ldmia sp!, {r3, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0207B900: .word _022B99D0
|
|
||||||
arm_func_end sub_0207B8D0
|
|
||||||
|
|
||||||
arm_func_start sub_0207B904
|
|
||||||
sub_0207B904: ; 0x0207B904
|
|
||||||
stmdb sp!, {r4, r5, r6, lr}
|
|
||||||
mov r6, r0, lsl #8
|
|
||||||
mov r5, #0xc
|
|
||||||
mov r4, #0
|
|
||||||
_0207B914:
|
|
||||||
mov r0, r5
|
|
||||||
mov r1, r6
|
|
||||||
mov r2, r4
|
|
||||||
bl sub_0207DB20
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0207B914
|
|
||||||
ldmia sp!, {r4, r5, r6, pc}
|
|
||||||
arm_func_end sub_0207B904
|
|
||||||
|
|
||||||
arm_func_start sub_0207B930
|
|
||||||
sub_0207B930: ; 0x0207B930
|
|
||||||
stmdb sp!, {r4, lr}
|
|
||||||
ldr r1, _0207B9C0 ; =0x027FFC40
|
|
||||||
mov r4, r0
|
|
||||||
ldrh r0, [r1]
|
|
||||||
cmp r0, #2
|
|
||||||
moveq r0, #1
|
|
||||||
movne r0, #0
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0207B958
|
|
||||||
bl WaitForever2
|
|
||||||
_0207B958:
|
|
||||||
bl OS_GetLockID
|
|
||||||
mov r0, r0, lsl #0x10
|
|
||||||
mov r0, r0, lsr #0x10
|
|
||||||
bl sub_02083434
|
|
||||||
ldr r0, _0207B9C4 ; =0x00000000
|
|
||||||
bl sub_0207C164
|
|
||||||
ldr r0, _0207B9C8 ; =0x00000001
|
|
||||||
bl sub_0207C164
|
|
||||||
ldr r0, _0207B9CC ; =0x00000002
|
|
||||||
bl sub_0207C164
|
|
||||||
ldr r0, _0207B9D0 ; =0x00000003
|
|
||||||
bl sub_0207C164
|
|
||||||
ldr r0, _0207B9D4 ; =0x00040000
|
|
||||||
bl sub_02078C3C
|
|
||||||
ldr r0, _0207B9D8 ; =0xFFFBFFFF
|
|
||||||
bl sub_02078CC8
|
|
||||||
ldr r1, _0207B9DC ; =0x027FFC20
|
|
||||||
ldr r0, _0207B9E0 ; =0x00000010
|
|
||||||
str r4, [r1]
|
|
||||||
bl sub_0207B904
|
|
||||||
ldr r0, _0207B9E4 ; =0x027E3F80
|
|
||||||
ldr r1, _0207B9E8 ; =0x00000800
|
|
||||||
sub r0, r0, r1
|
|
||||||
mov sp, r0
|
|
||||||
bl sub_01FF97CC
|
|
||||||
ldmia sp!, {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0207B9C0: .word 0x027FFC40
|
|
||||||
_0207B9C4: .word 0x00000000
|
|
||||||
_0207B9C8: .word 0x00000001
|
|
||||||
_0207B9CC: .word 0x00000002
|
|
||||||
_0207B9D0: .word 0x00000003
|
|
||||||
_0207B9D4: .word 0x00040000
|
|
||||||
_0207B9D8: .word 0xFFFBFFFF
|
|
||||||
_0207B9DC: .word 0x027FFC20
|
|
||||||
_0207B9E0: .word 0x00000010
|
|
||||||
_0207B9E4: .word 0x027E3F80
|
|
||||||
_0207B9E8: .word 0x00000800
|
|
||||||
arm_func_end sub_0207B930
|
|
||||||
|
|
||||||
arm_func_start sub_0207B9EC
|
|
||||||
sub_0207B9EC: ; 0x0207B9EC
|
|
||||||
ldr ip, _0207BA00 ; =MemcpyFast
|
|
||||||
mov r1, r0
|
|
||||||
ldr r0, _0207BA04 ; =0x027FFCF4
|
|
||||||
mov r2, #6
|
|
||||||
bx ip
|
|
||||||
.align 2, 0
|
|
||||||
_0207BA00: .word MemcpyFast
|
|
||||||
_0207BA04: .word 0x027FFCF4
|
|
||||||
arm_func_end sub_0207B9EC
|
|
||||||
|
|
||||||
arm_func_start GetDsFirmwareUserSettings
|
|
||||||
GetDsFirmwareUserSettings: ; 0x0207BA08
|
|
||||||
stmdb sp!, {r4, lr}
|
|
||||||
ldr ip, _0207BA88 ; =0x027FFC80
|
|
||||||
mov r4, r0
|
|
||||||
ldrh r2, [ip, #0x64]
|
|
||||||
add r0, ip, #6
|
|
||||||
add r1, r4, #4
|
|
||||||
mov r2, r2, lsl #0x1d
|
|
||||||
mov r2, r2, lsr #0x1d
|
|
||||||
strb r2, [r4]
|
|
||||||
ldrb r3, [ip, #2]
|
|
||||||
mov r2, #0x14
|
|
||||||
mov r3, r3, lsl #0x1c
|
|
||||||
mov r3, r3, lsr #0x1c
|
|
||||||
strb r3, [r4, #1]
|
|
||||||
ldrb r3, [ip, #3]
|
|
||||||
strb r3, [r4, #2]
|
|
||||||
ldrb r3, [ip, #4]
|
|
||||||
strb r3, [r4, #3]
|
|
||||||
ldrb r3, [ip, #0x1a]
|
|
||||||
strh r3, [r4, #0x1a]
|
|
||||||
ldrb r3, [ip, #0x50]
|
|
||||||
strh r3, [r4, #0x52]
|
|
||||||
bl ArrayCopy16
|
|
||||||
ldr r0, _0207BA88 ; =0x027FFC80
|
|
||||||
add r1, r4, #0x1c
|
|
||||||
add r0, r0, #0x1c
|
|
||||||
mov r2, #0x34
|
|
||||||
bl ArrayCopy16
|
|
||||||
mov r0, #0
|
|
||||||
strh r0, [r4, #0x18]
|
|
||||||
strh r0, [r4, #0x50]
|
|
||||||
ldmia sp!, {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0207BA88: .word 0x027FFC80
|
|
||||||
arm_func_end GetDsFirmwareUserSettings
|
|
||||||
|
|
||||||
arm_func_start CountLeadingZeros
|
|
||||||
CountLeadingZeros: ; 0x0207BA8C
|
|
||||||
clz r0, r0
|
|
||||||
bx lr
|
|
||||||
arm_func_end CountLeadingZeros
|
|
||||||
|
|
||||||
arm_func_start sub_0207BA94
|
|
||||||
sub_0207BA94: ; 0x0207BA94
|
|
||||||
ldr r0, _0207BAC0 ; =_022B99D4
|
|
||||||
mov r3, #0
|
|
||||||
str r3, [r0]
|
|
||||||
ldr r0, _0207BAC4 ; =_022B99D8
|
|
||||||
mov r2, r3
|
|
||||||
_0207BAA8:
|
|
||||||
mov r1, r3, lsl #1
|
|
||||||
add r3, r3, #1
|
|
||||||
strh r2, [r0, r1]
|
|
||||||
cmp r3, #9
|
|
||||||
blt _0207BAA8
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_0207BAC0: .word _022B99D4
|
|
||||||
_0207BAC4: .word _022B99D8
|
|
||||||
arm_func_end sub_0207BA94
|
|
||||||
|
|
||||||
arm_func_start sub_0207BAC8
|
|
||||||
sub_0207BAC8: ; 0x0207BAC8
|
|
||||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
||||||
mov r5, r0
|
|
||||||
mov sl, r1
|
|
||||||
bl EnableIrqFlag
|
|
||||||
ldr r4, _0207BB44 ; =_022B99D4
|
|
||||||
ldr r1, _0207BB48 ; =0x000001FF
|
|
||||||
ldr r2, [r4]
|
|
||||||
mov sb, r0
|
|
||||||
and r0, r5, r2
|
|
||||||
ldr r6, _0207BB4C ; =_022B99D8
|
|
||||||
and r8, r0, r1
|
|
||||||
mov r7, #1
|
|
||||||
mov r5, #0
|
|
||||||
_0207BAFC:
|
|
||||||
mov r0, r8
|
|
||||||
bl CountLeadingZeros
|
|
||||||
rsbs r2, r0, #0x1f
|
|
||||||
bmi _0207BB38
|
|
||||||
mov r1, r2, lsl #1
|
|
||||||
ldrh r0, [r6, r1]
|
|
||||||
mvn r2, r7, lsl r2
|
|
||||||
cmp sl, r0
|
|
||||||
and r8, r8, r2
|
|
||||||
bne _0207BAFC
|
|
||||||
ldr r0, [r4]
|
|
||||||
strh r5, [r6, r1]
|
|
||||||
and r0, r0, r2
|
|
||||||
str r0, [r4]
|
|
||||||
b _0207BAFC
|
|
||||||
_0207BB38:
|
|
||||||
mov r0, sb
|
|
||||||
bl SetIrqFlag
|
|
||||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0207BB44: .word _022B99D4
|
|
||||||
_0207BB48: .word 0x000001FF
|
|
||||||
_0207BB4C: .word _022B99D8
|
|
||||||
arm_func_end sub_0207BAC8
|
|
||||||
|
|
||||||
arm_func_start sub_0207BB50
|
|
||||||
sub_0207BB50: ; 0x0207BB50
|
|
||||||
stmdb sp!, {r4, r5, r6, lr}
|
|
||||||
ldr r1, _0207BC10 ; =0x04000006
|
|
||||||
mov r5, r0
|
|
||||||
ldrh r6, [r1]
|
|
||||||
ldr r4, _0207BC14 ; =0x027FFC00
|
|
||||||
bl GetTimer0Control
|
|
||||||
orr r0, r0, r6, lsl #16
|
|
||||||
str r0, [r5]
|
|
||||||
ldr r1, _0207BC18 ; =_022B99A8
|
|
||||||
ldrh ip, [r4, #0xf8]
|
|
||||||
ldr r3, [r1]
|
|
||||||
ldr r2, [r1, #4]
|
|
||||||
mov r0, r4
|
|
||||||
eor r2, r3, ip, lsl #16
|
|
||||||
str r2, [r5, #4]
|
|
||||||
ldr r2, [r1]
|
|
||||||
ldr r3, [r0, #0x3c]
|
|
||||||
ldr r2, [r1, #4]
|
|
||||||
ldr r1, [r4, #0xf4]
|
|
||||||
ldr ip, _0207BC1C ; =0x04000600
|
|
||||||
eor r1, r2, r1
|
|
||||||
eor r2, r3, r1
|
|
||||||
str r2, [r5, #8]
|
|
||||||
ldr r1, [ip]
|
|
||||||
eor r1, r2, r1
|
|
||||||
str r1, [r5, #8]
|
|
||||||
ldr r2, [r0, #0x1e8]
|
|
||||||
add r1, r0, #0x300
|
|
||||||
str r2, [r5, #0xc]
|
|
||||||
ldr r3, [r0, #0x1ec]
|
|
||||||
sub r2, ip, #0x4d0
|
|
||||||
str r3, [r5, #0x10]
|
|
||||||
ldr r3, [r0, #0x390]
|
|
||||||
ldrh r4, [r1, #0x94]
|
|
||||||
add r0, r0, #0x3a8
|
|
||||||
eor r3, r3, r4, lsl #16
|
|
||||||
str r3, [r5, #0x14]
|
|
||||||
ldrh r4, [r1, #0xaa]
|
|
||||||
ldrh r3, [r1, #0xac]
|
|
||||||
orr r3, r3, r4, lsl #16
|
|
||||||
str r3, [r5, #0x18]
|
|
||||||
ldrh r2, [r2]
|
|
||||||
ldrh r0, [r0]
|
|
||||||
ldrh r1, [r1, #0x98]
|
|
||||||
orr r0, r2, r0
|
|
||||||
orr r0, r0, r1, lsl #16
|
|
||||||
str r0, [r5, #0x1c]
|
|
||||||
ldmia sp!, {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0207BC10: .word 0x04000006
|
|
||||||
_0207BC14: .word 0x027FFC00
|
|
||||||
_0207BC18: .word _022B99A8
|
|
||||||
_0207BC1C: .word 0x04000600
|
|
||||||
arm_func_end sub_0207BB50
|
|
||||||
|
|
|
||||||
292
asm/main_0207B87C.s
Normal file
292
asm/main_0207B87C.s
Normal file
|
|
@ -0,0 +1,292 @@
|
||||||
|
.include "asm/macros.inc"
|
||||||
|
.include "main_0207B87C.inc"
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
arm_func_start sub_0207B87C
|
||||||
|
sub_0207B87C: ; 0x0207B87C
|
||||||
|
stmdb sp!, {r3, r4, r5, lr}
|
||||||
|
ldr r0, _0207B8C8 ; =_022B99D0
|
||||||
|
ldrh r1, [r0, #2]
|
||||||
|
cmp r1, #0
|
||||||
|
ldmneia sp!, {r3, r4, r5, pc}
|
||||||
|
mov r1, #1
|
||||||
|
strh r1, [r0, #2]
|
||||||
|
bl sub_0207D9A4
|
||||||
|
mov r5, #0xc
|
||||||
|
mov r4, #1
|
||||||
|
_0207B8A4:
|
||||||
|
mov r0, r5
|
||||||
|
mov r1, r4
|
||||||
|
bl sub_0207DAFC
|
||||||
|
cmp r0, #0
|
||||||
|
beq _0207B8A4
|
||||||
|
ldr r1, _0207B8CC ; =sub_0207B8D0
|
||||||
|
mov r0, #0xc
|
||||||
|
bl sub_0207DAB0
|
||||||
|
ldmia sp!, {r3, r4, r5, pc}
|
||||||
|
.align 2, 0
|
||||||
|
_0207B8C8: .word _022B99D0
|
||||||
|
_0207B8CC: .word sub_0207B8D0
|
||||||
|
arm_func_end sub_0207B87C
|
||||||
|
|
||||||
|
arm_func_start sub_0207B8D0
|
||||||
|
sub_0207B8D0: ; 0x0207B8D0
|
||||||
|
stmdb sp!, {r3, lr}
|
||||||
|
and r0, r1, #0x7f00
|
||||||
|
mov r0, r0, lsl #8
|
||||||
|
mov r0, r0, lsr #0x10
|
||||||
|
cmp r0, #0x10
|
||||||
|
bne _0207B8F8
|
||||||
|
ldr r0, _0207B900 ; =_022B99D0
|
||||||
|
mov r1, #1
|
||||||
|
strh r1, [r0]
|
||||||
|
ldmia sp!, {r3, pc}
|
||||||
|
_0207B8F8:
|
||||||
|
bl WaitForever2
|
||||||
|
ldmia sp!, {r3, pc}
|
||||||
|
.align 2, 0
|
||||||
|
_0207B900: .word _022B99D0
|
||||||
|
arm_func_end sub_0207B8D0
|
||||||
|
|
||||||
|
arm_func_start sub_0207B904
|
||||||
|
sub_0207B904: ; 0x0207B904
|
||||||
|
stmdb sp!, {r4, r5, r6, lr}
|
||||||
|
mov r6, r0, lsl #8
|
||||||
|
mov r5, #0xc
|
||||||
|
mov r4, #0
|
||||||
|
_0207B914:
|
||||||
|
mov r0, r5
|
||||||
|
mov r1, r6
|
||||||
|
mov r2, r4
|
||||||
|
bl sub_0207DB20
|
||||||
|
cmp r0, #0
|
||||||
|
bne _0207B914
|
||||||
|
ldmia sp!, {r4, r5, r6, pc}
|
||||||
|
arm_func_end sub_0207B904
|
||||||
|
|
||||||
|
arm_func_start sub_0207B930
|
||||||
|
sub_0207B930: ; 0x0207B930
|
||||||
|
stmdb sp!, {r4, lr}
|
||||||
|
ldr r1, _0207B9C0 ; =0x027FFC40
|
||||||
|
mov r4, r0
|
||||||
|
ldrh r0, [r1]
|
||||||
|
cmp r0, #2
|
||||||
|
moveq r0, #1
|
||||||
|
movne r0, #0
|
||||||
|
cmp r0, #0
|
||||||
|
beq _0207B958
|
||||||
|
bl WaitForever2
|
||||||
|
_0207B958:
|
||||||
|
bl OS_GetLockID
|
||||||
|
mov r0, r0, lsl #0x10
|
||||||
|
mov r0, r0, lsr #0x10
|
||||||
|
bl sub_02083434
|
||||||
|
ldr r0, _0207B9C4 ; =0x00000000
|
||||||
|
bl sub_0207C164
|
||||||
|
ldr r0, _0207B9C8 ; =0x00000001
|
||||||
|
bl sub_0207C164
|
||||||
|
ldr r0, _0207B9CC ; =0x00000002
|
||||||
|
bl sub_0207C164
|
||||||
|
ldr r0, _0207B9D0 ; =0x00000003
|
||||||
|
bl sub_0207C164
|
||||||
|
ldr r0, _0207B9D4 ; =0x00040000
|
||||||
|
bl sub_02078C3C
|
||||||
|
ldr r0, _0207B9D8 ; =0xFFFBFFFF
|
||||||
|
bl sub_02078CC8
|
||||||
|
ldr r1, _0207B9DC ; =0x027FFC20
|
||||||
|
ldr r0, _0207B9E0 ; =0x00000010
|
||||||
|
str r4, [r1]
|
||||||
|
bl sub_0207B904
|
||||||
|
ldr r0, _0207B9E4 ; =0x027E3F80
|
||||||
|
ldr r1, _0207B9E8 ; =0x00000800
|
||||||
|
sub r0, r0, r1
|
||||||
|
mov sp, r0
|
||||||
|
bl sub_01FF97CC
|
||||||
|
ldmia sp!, {r4, pc}
|
||||||
|
.align 2, 0
|
||||||
|
_0207B9C0: .word 0x027FFC40
|
||||||
|
_0207B9C4: .word 0x00000000
|
||||||
|
_0207B9C8: .word 0x00000001
|
||||||
|
_0207B9CC: .word 0x00000002
|
||||||
|
_0207B9D0: .word 0x00000003
|
||||||
|
_0207B9D4: .word 0x00040000
|
||||||
|
_0207B9D8: .word 0xFFFBFFFF
|
||||||
|
_0207B9DC: .word 0x027FFC20
|
||||||
|
_0207B9E0: .word 0x00000010
|
||||||
|
_0207B9E4: .word 0x027E3F80
|
||||||
|
_0207B9E8: .word 0x00000800
|
||||||
|
arm_func_end sub_0207B930
|
||||||
|
|
||||||
|
arm_func_start sub_0207B9EC
|
||||||
|
sub_0207B9EC: ; 0x0207B9EC
|
||||||
|
ldr ip, _0207BA00 ; =MemcpyFast
|
||||||
|
mov r1, r0
|
||||||
|
ldr r0, _0207BA04 ; =0x027FFCF4
|
||||||
|
mov r2, #6
|
||||||
|
bx ip
|
||||||
|
.align 2, 0
|
||||||
|
_0207BA00: .word MemcpyFast
|
||||||
|
_0207BA04: .word 0x027FFCF4
|
||||||
|
arm_func_end sub_0207B9EC
|
||||||
|
|
||||||
|
arm_func_start GetDsFirmwareUserSettings
|
||||||
|
GetDsFirmwareUserSettings: ; 0x0207BA08
|
||||||
|
stmdb sp!, {r4, lr}
|
||||||
|
ldr ip, _0207BA88 ; =0x027FFC80
|
||||||
|
mov r4, r0
|
||||||
|
ldrh r2, [ip, #0x64]
|
||||||
|
add r0, ip, #6
|
||||||
|
add r1, r4, #4
|
||||||
|
mov r2, r2, lsl #0x1d
|
||||||
|
mov r2, r2, lsr #0x1d
|
||||||
|
strb r2, [r4]
|
||||||
|
ldrb r3, [ip, #2]
|
||||||
|
mov r2, #0x14
|
||||||
|
mov r3, r3, lsl #0x1c
|
||||||
|
mov r3, r3, lsr #0x1c
|
||||||
|
strb r3, [r4, #1]
|
||||||
|
ldrb r3, [ip, #3]
|
||||||
|
strb r3, [r4, #2]
|
||||||
|
ldrb r3, [ip, #4]
|
||||||
|
strb r3, [r4, #3]
|
||||||
|
ldrb r3, [ip, #0x1a]
|
||||||
|
strh r3, [r4, #0x1a]
|
||||||
|
ldrb r3, [ip, #0x50]
|
||||||
|
strh r3, [r4, #0x52]
|
||||||
|
bl ArrayCopy16
|
||||||
|
ldr r0, _0207BA88 ; =0x027FFC80
|
||||||
|
add r1, r4, #0x1c
|
||||||
|
add r0, r0, #0x1c
|
||||||
|
mov r2, #0x34
|
||||||
|
bl ArrayCopy16
|
||||||
|
mov r0, #0
|
||||||
|
strh r0, [r4, #0x18]
|
||||||
|
strh r0, [r4, #0x50]
|
||||||
|
ldmia sp!, {r4, pc}
|
||||||
|
.align 2, 0
|
||||||
|
_0207BA88: .word 0x027FFC80
|
||||||
|
arm_func_end GetDsFirmwareUserSettings
|
||||||
|
|
||||||
|
arm_func_start CountLeadingZeros
|
||||||
|
CountLeadingZeros: ; 0x0207BA8C
|
||||||
|
clz r0, r0
|
||||||
|
bx lr
|
||||||
|
arm_func_end CountLeadingZeros
|
||||||
|
|
||||||
|
arm_func_start sub_0207BA94
|
||||||
|
sub_0207BA94: ; 0x0207BA94
|
||||||
|
ldr r0, _0207BAC0 ; =_022B99D4
|
||||||
|
mov r3, #0
|
||||||
|
str r3, [r0]
|
||||||
|
ldr r0, _0207BAC4 ; =_022B99D8
|
||||||
|
mov r2, r3
|
||||||
|
_0207BAA8:
|
||||||
|
mov r1, r3, lsl #1
|
||||||
|
add r3, r3, #1
|
||||||
|
strh r2, [r0, r1]
|
||||||
|
cmp r3, #9
|
||||||
|
blt _0207BAA8
|
||||||
|
bx lr
|
||||||
|
.align 2, 0
|
||||||
|
_0207BAC0: .word _022B99D4
|
||||||
|
_0207BAC4: .word _022B99D8
|
||||||
|
arm_func_end sub_0207BA94
|
||||||
|
|
||||||
|
arm_func_start sub_0207BAC8
|
||||||
|
sub_0207BAC8: ; 0x0207BAC8
|
||||||
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||||
|
mov r5, r0
|
||||||
|
mov sl, r1
|
||||||
|
bl EnableIrqFlag
|
||||||
|
ldr r4, _0207BB44 ; =_022B99D4
|
||||||
|
ldr r1, _0207BB48 ; =0x000001FF
|
||||||
|
ldr r2, [r4]
|
||||||
|
mov sb, r0
|
||||||
|
and r0, r5, r2
|
||||||
|
ldr r6, _0207BB4C ; =_022B99D8
|
||||||
|
and r8, r0, r1
|
||||||
|
mov r7, #1
|
||||||
|
mov r5, #0
|
||||||
|
_0207BAFC:
|
||||||
|
mov r0, r8
|
||||||
|
bl CountLeadingZeros
|
||||||
|
rsbs r2, r0, #0x1f
|
||||||
|
bmi _0207BB38
|
||||||
|
mov r1, r2, lsl #1
|
||||||
|
ldrh r0, [r6, r1]
|
||||||
|
mvn r2, r7, lsl r2
|
||||||
|
cmp sl, r0
|
||||||
|
and r8, r8, r2
|
||||||
|
bne _0207BAFC
|
||||||
|
ldr r0, [r4]
|
||||||
|
strh r5, [r6, r1]
|
||||||
|
and r0, r0, r2
|
||||||
|
str r0, [r4]
|
||||||
|
b _0207BAFC
|
||||||
|
_0207BB38:
|
||||||
|
mov r0, sb
|
||||||
|
bl SetIrqFlag
|
||||||
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||||
|
.align 2, 0
|
||||||
|
_0207BB44: .word _022B99D4
|
||||||
|
_0207BB48: .word 0x000001FF
|
||||||
|
_0207BB4C: .word _022B99D8
|
||||||
|
arm_func_end sub_0207BAC8
|
||||||
|
|
||||||
|
arm_func_start sub_0207BB50
|
||||||
|
sub_0207BB50: ; 0x0207BB50
|
||||||
|
stmdb sp!, {r4, r5, r6, lr}
|
||||||
|
ldr r1, _0207BC10 ; =0x04000006
|
||||||
|
mov r5, r0
|
||||||
|
ldrh r6, [r1]
|
||||||
|
ldr r4, _0207BC14 ; =0x027FFC00
|
||||||
|
bl GetTimer0Control
|
||||||
|
orr r0, r0, r6, lsl #16
|
||||||
|
str r0, [r5]
|
||||||
|
ldr r1, _0207BC18 ; =_022B99A8
|
||||||
|
ldrh ip, [r4, #0xf8]
|
||||||
|
ldr r3, [r1]
|
||||||
|
ldr r2, [r1, #4]
|
||||||
|
mov r0, r4
|
||||||
|
eor r2, r3, ip, lsl #16
|
||||||
|
str r2, [r5, #4]
|
||||||
|
ldr r2, [r1]
|
||||||
|
ldr r3, [r0, #0x3c]
|
||||||
|
ldr r2, [r1, #4]
|
||||||
|
ldr r1, [r4, #0xf4]
|
||||||
|
ldr ip, _0207BC1C ; =0x04000600
|
||||||
|
eor r1, r2, r1
|
||||||
|
eor r2, r3, r1
|
||||||
|
str r2, [r5, #8]
|
||||||
|
ldr r1, [ip]
|
||||||
|
eor r1, r2, r1
|
||||||
|
str r1, [r5, #8]
|
||||||
|
ldr r2, [r0, #0x1e8]
|
||||||
|
add r1, r0, #0x300
|
||||||
|
str r2, [r5, #0xc]
|
||||||
|
ldr r3, [r0, #0x1ec]
|
||||||
|
sub r2, ip, #0x4d0
|
||||||
|
str r3, [r5, #0x10]
|
||||||
|
ldr r3, [r0, #0x390]
|
||||||
|
ldrh r4, [r1, #0x94]
|
||||||
|
add r0, r0, #0x3a8
|
||||||
|
eor r3, r3, r4, lsl #16
|
||||||
|
str r3, [r5, #0x14]
|
||||||
|
ldrh r4, [r1, #0xaa]
|
||||||
|
ldrh r3, [r1, #0xac]
|
||||||
|
orr r3, r3, r4, lsl #16
|
||||||
|
str r3, [r5, #0x18]
|
||||||
|
ldrh r2, [r2]
|
||||||
|
ldrh r0, [r0]
|
||||||
|
ldrh r1, [r1, #0x98]
|
||||||
|
orr r0, r2, r0
|
||||||
|
orr r0, r0, r1, lsl #16
|
||||||
|
str r0, [r5, #0x1c]
|
||||||
|
ldmia sp!, {r4, r5, r6, pc}
|
||||||
|
.align 2, 0
|
||||||
|
_0207BC10: .word 0x04000006
|
||||||
|
_0207BC14: .word 0x027FFC00
|
||||||
|
_0207BC18: .word _022B99A8
|
||||||
|
_0207BC1C: .word 0x04000600
|
||||||
|
arm_func_end sub_0207BB50
|
||||||
6
include/main_0207B860.h
Normal file
6
include/main_0207B860.h
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef PMDSKY_MAIN_0207B860_H
|
||||||
|
#define PMDSKY_MAIN_0207B860_H
|
||||||
|
|
||||||
|
void sub_0207B860();
|
||||||
|
|
||||||
|
#endif //PMDSKY_MAIN_0207B860_H
|
||||||
2
main.lsf
2
main.lsf
|
|
@ -64,6 +64,8 @@ Static main
|
||||||
Object asm/main_02075600.o
|
Object asm/main_02075600.o
|
||||||
Object src/main_0207B848.o
|
Object src/main_0207B848.o
|
||||||
Object asm/main_0207B854.o
|
Object asm/main_0207B854.o
|
||||||
|
Object src/main_0207B860.o
|
||||||
|
Object asm/main_0207B87C.o
|
||||||
Object src/main_0207BC20.o
|
Object src/main_0207BC20.o
|
||||||
Object asm/main_0207BC3C.o
|
Object asm/main_0207BC3C.o
|
||||||
Object src/main_0207F3E4.o
|
Object src/main_0207F3E4.o
|
||||||
|
|
|
||||||
10
src/main_0207B860.c
Normal file
10
src/main_0207B860.c
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "main_0207B860.h"
|
||||||
|
|
||||||
|
void SVC_WaitByLoop(s32);
|
||||||
|
void sub_02078900(s32, s32);
|
||||||
|
|
||||||
|
void sub_0207B860()
|
||||||
|
{
|
||||||
|
SVC_WaitByLoop(1);
|
||||||
|
sub_02078900(1, 1);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user