summaryrefslogtreecommitdiff
path: root/arm9/asm/NNS_G2D_g2d_nft_load.s
blob: 3f9c0e77c3af8dc7b6bbc90b2ad49f73be44d002 (plain)
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
	.include "asm/macros.inc"
	.include "global.inc"

	.section .text

	arm_func_start NNSi_G2dUnpackNFT
NNSi_G2dUnpackNFT: ; 0x020B7468
	stmdb sp!, {r4-r6,lr}
	ldrh r2, [r0, #0xc]
	ldrh r3, [r0, #0xe]
	mov r1, #0x0
	add r2, r0, r2
	cmp r3, #0x0
	ldmleia sp!, {r4-r6,pc}
	ldr r3, _020B7548 ; =0x46494E46
	ldr ip, _020B754C ; =0x43574448
	ldr r4, _020B7550 ; =0x434D4150
	ldr lr, _020B7554 ; =0x43474C50
_020B7494:
	ldr r5, [r2, #0x0]
	cmp r5, r4
	bhi _020B74B0
	cmp r5, r4
	bhs _020B7518
	cmp r5, lr
	b _020B752C
_020B74B0:
	cmp r5, r12
	bhi _020B74C4
	cmp r5, r12
	beq _020B7500
	b _020B752C
_020B74C4:
	cmp r5, r3
	bne _020B752C
	add r6, r2, #0x8
	ldr r5, [r6, #0x8]
	add r5, r5, r0
	str r5, [r6, #0x8]
	ldr r5, [r6, #0xc]
	cmp r5, #0x0
	addne r5, r5, r0
	strne r5, [r6, #0xc]
	ldr r5, [r6, #0x10]
	cmp r5, #0x0
	addne r5, r5, r0
	strne r5, [r6, #0x10]
	b _020B752C
_020B7500:
	add r6, r2, #0x8
	ldr r5, [r6, #0x4]
	cmp r5, #0x0
	addne r5, r5, r0
	strne r5, [r6, #0x4]
	b _020B752C
_020B7518:
	add r6, r2, #0x8
	ldr r5, [r6, #0x8]
	cmp r5, #0x0
	addne r5, r5, r0
	strne r5, [r6, #0x8]
_020B752C:
	ldrh r5, [r0, #0xe]
	ldr r6, [r2, #0x4]
	add r1, r1, #0x1
	cmp r1, r5
	add r2, r2, r6
	blt _020B7494
	ldmia sp!, {r4-r6,pc}
	.balign 4
_020B7548: .word 0x46494E46
_020B754C: .word 0x43574448
_020B7550: .word 0x434D4150
_020B7554: .word 0x43474C50
	arm_func_end NNSi_G2dUnpackNFT

	arm_func_start NNSi_G2dGetUnpackedFont
NNSi_G2dGetUnpackedFont: ; 0x020B7558
	stmdb sp!, {r4-r6,lr}
	movs r6, r0
	mov r5, r1
	beq _020B75C8
	cmp r6, #0x0
	beq _020B7584
	ldr r1, [r6, #0x0]
	ldr r0, _020B76A8 ; =0x4E465452
	cmp r1, r0
	moveq r0, #0x1
	beq _020B7588
_020B7584:
	mov r0, #0x0
_020B7588:
	cmp r0, #0x0
	movne r0, #0x1
	moveq r0, #0x0
	cmp r0, #0x0
	beq _020B75CC
	cmp r6, #0x0
	beq _020B75B4
	ldrh r0, [r6, #0x6]
	cmp r0, #0x100
	movcs r0, #0x1
	bhs _020B75B8
_020B75B4:
	mov r0, #0x0
_020B75B8:
	cmp r0, #0x0
	movne r0, #0x1
	moveq r0, #0x0
	b _020B75CC
_020B75C8:
	mov r0, #0x0
_020B75CC:
	cmp r0, #0x0
	movne r4, #0x0
	bne _020B7654
	cmp r6, #0x0
	beq _020B7640
	cmp r6, #0x0
	beq _020B75FC
	ldr r1, [r6, #0x0]
	ldr r0, _020B76A8 ; =0x4E465452
	cmp r1, r0
	moveq r0, #0x1
	beq _020B7600
_020B75FC:
	mov r0, #0x0
_020B7600:
	cmp r0, #0x0
	movne r0, #0x1
	moveq r0, #0x0
	cmp r0, #0x0
	beq _020B7644
	cmp r6, #0x0
	beq _020B762C
	ldrh r0, [r6, #0x6]
	cmp r0, #0x1
	movcs r0, #0x1
	bhs _020B7630
_020B762C:
	mov r0, #0x0
_020B7630:
	cmp r0, #0x0
	movne r0, #0x1
	moveq r0, #0x0
	b _020B7644
_020B7640:
	mov r0, #0x0
_020B7644:
	cmp r0, #0x0
	movne r4, #0x1
	bne _020B7654
	bl OS_Terminate
_020B7654:
	mov r0, r6
	bl NNSi_G2dUnpackNFT
	ldr r1, _020B76AC ; =0x46494E46
	mov r0, r6
	bl NNS_G2dFindBinaryBlock
	cmp r0, #0x0
	moveq r0, #0x0
	streq r0, [r5, #0x0]
	ldmeqia sp!, {r4-r6,pc}
	add r0, r0, #0x8
	str r0, [r5, #0x0]
	cmp r4, #0x0
	beq _020B76A0
	ldr r2, [r5, #0x0]
	mov r1, #0x0
	ldrsb r0, [r2, #0x6]
	strb r0, [r2, #0x7]
	ldr r0, [r5, #0x0]
	strb r1, [r0, #0x6]
_020B76A0:
	add r0, r4, #0x1
	ldmia sp!, {r4-r6,pc}
	.balign 4
_020B76A8: .word 0x4E465452
_020B76AC: .word 0x46494E46
	arm_func_end NNSi_G2dGetUnpackedFont