1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
.include "asm/macros.inc"
.include "global.inc"
.extern UNK_021D6B08
.extern UNK_021D6B20
.extern UNK_021D6B0C
.text
arm_func_start CTRDGi_WriteFlashSectorAsyncMX5
CTRDGi_WriteFlashSectorAsyncMX5: ; 0x020DD868
stmdb sp!, {lr}
sub sp, sp, #0x24
str r1, [sp, #0xc]
strh r0, [sp, #0x20]
ldr r1, _020DD890 ; =CTRDGi_WriteFlashSectorCoreMX5
add r0, sp, #0x0
bl CTRDGi_SetTask
add sp, sp, #0x24
ldmia sp!, {lr}
bx lr
.balign 4
_020DD890: .word CTRDGi_WriteFlashSectorCoreMX5
arm_func_start CTRDGi_WriteFlashSectorMX5
CTRDGi_WriteFlashSectorMX5: ; 0x020DD894
stmdb sp!, {lr}
sub sp, sp, #0x24
strh r0, [sp, #0x20]
add r0, sp, #0x0
str r1, [sp, #0xc]
bl CTRDGi_WriteFlashSectorCoreMX5
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
add sp, sp, #0x24
ldmia sp!, {lr}
bx lr
arm_func_start CTRDGi_WriteFlashSectorCoreMX5
CTRDGi_WriteFlashSectorCoreMX5: ; 0x020DD8C0
stmdb sp!, {r4-r8,lr}
sub sp, sp, #0x28
mov r5, r0
ldmia r5!, {r0-r3}
add r4, sp, #0x0
stmia r4!, {r0-r3}
ldmia r5!, {r0-r3}
stmia r4!, {r0-r3}
ldr r0, _020DD9E8 ; =UNK_021D6B20
ldr r1, [r5, #0x0]
ldr r0, [r0, #0x0]
str r1, [r4, #0x0]
ldrh r5, [sp, #0x20]
ldrh r0, [r0, #0xa]
ldr r4, [sp, #0xc]
cmp r5, r0
addcs sp, sp, #0x28
ldrhs r0, _020DD9EC ; =0x000080FF
ldmcsia sp!, {r4-r8,lr}
bxcs lr
mov r0, r5
bl CTRDGi_EraseFlashSectorLE
movs r6, r0
addne sp, sp, #0x28
ldmneia sp!, {r4-r8,lr}
bxne lr
ldr r0, _020DD9F0 ; =UNK_021D6B0C
ldrh r0, [r0, #0x0]
bl OS_LockCartridge
ldr r7, _020DD9F4 ; =0x04000204
ldr r0, _020DD9E8 ; =UNK_021D6B20
ldrh r3, [r7, #0x0]
ldr r2, [r0, #0x0]
ldrh r1, [r7, #0x0]
ldr r2, [r2, #0x10]
ldr r8, _020DD9F8 ; =UNK_021D6B08
bic r1, r1, #0x3
orr r1, r1, r2
strh r1, [r7, #0x0]
ldr r1, [r0, #0x0]
and r7, r3, #0x3
ldr r0, [r1, #0x4]
strh r0, [r8, #0x0]
ldrh r1, [r1, #0x8]
ldrh r0, [r8, #0x0]
mov r1, r5, lsl r1
cmp r0, #0x0
add r5, r1, #0xa000000
beq _020DD9B8
_020DD984:
mov r0, r4
mov r1, r5
bl CTRDGi_ProgramFlashByteLE
movs r6, r0
bne _020DD9B8
ldrh r0, [r8, #0x0]
add r4, r4, #0x1
add r5, r5, #0x1
sub r0, r0, #0x1
strh r0, [r8, #0x0]
ldrh r0, [r8, #0x0]
cmp r0, #0x0
bne _020DD984
_020DD9B8:
ldr r2, _020DD9F4 ; =0x04000204
ldr r0, _020DD9F0 ; =UNK_021D6B0C
ldrh r1, [r2, #0x0]
bic r1, r1, #0x3
orr r1, r1, r7
strh r1, [r2, #0x0]
ldrh r0, [r0, #0x0]
bl OS_UnlockCartridge
mov r0, r6
add sp, sp, #0x28
ldmia sp!, {r4-r8,lr}
bx lr
.balign 4
_020DD9E8: .word UNK_021D6B20
_020DD9EC: .word 0x000080FF
_020DD9F0: .word UNK_021D6B0C
_020DD9F4: .word 0x04000204
_020DD9F8: .word UNK_021D6B08
|