summaryrefslogtreecommitdiff
path: root/arm9/asm/NNS_G2D_g2d_nmc_load.s
blob: abe55e8e273f4527f0cb350d5382b574fdf219a3 (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
	.include "asm/macros.inc"
	.include "global.inc"

	.section .text

	arm_func_start NNS_G2dGetMultiCellDataByIdx
NNS_G2dGetMultiCellDataByIdx: ; 0x020AFF34
	ldrh r2, [r0, #0x0]
	cmp r1, r2
	ldrcc r0, [r0, #0x4]
	addcc r0, r0, r1, lsl #0x3
	movcs r0, #0x0
	bx lr
	arm_func_end NNS_G2dGetMultiCellDataByIdx

	arm_func_start NNS_G2dUnpackNMC
NNS_G2dUnpackNMC: ; 0x020AFF4C
	stmdb sp!, {r4,lr}
	ldr r1, [r0, #0x4]
	mov r4, #0x0
	add r1, r1, r0
	str r1, [r0, #0x4]
	ldr r1, [r0, #0x8]
	add r1, r1, r0
	str r1, [r0, #0x8]
	ldrh r1, [r0, #0x0]
	ldr lr, [r0, #0x4]
	cmp r1, #0x0
	bls _020AFFA8
_020AFF7C:
	add r3, lr, r4, lsl #0x3
	ldr r12, [r0, #0x8]
	ldr r2, [r3, #0x4]
	add r1, r4, #0x1
	add r2, r12, r2
	str r2, [r3, #0x4]
	mov r1, r1, lsl #0x10
	ldrh r2, [r0, #0x0]
	mov r4, r1, lsr #0x10
	cmp r4, r2
	blo _020AFF7C
_020AFFA8:
	ldr r1, [r0, #0x10]
	cmp r1, #0x0
	ldmeqia sp!, {r4,pc}
	add r1, r1, r0
	str r1, [r0, #0x10]
	ldr r0, [r0, #0x10]
	bl UnpackExtendedData_
	ldmia sp!, {r4,pc}
	arm_func_end NNS_G2dUnpackNMC

	arm_func_start UnpackExtendedData_
UnpackExtendedData_: ; 0x020AFFC8
	ldr ip, _020AFFD4 ; =NNSi_G2dUnpackUserExCellAttrBank
	add r0, r0, #0x8
	bx r12
	.balign 4
_020AFFD4: .word NNSi_G2dUnpackUserExCellAttrBank
	arm_func_end UnpackExtendedData_

	arm_func_start NNS_G2dGetUnpackedMultiCellBank
NNS_G2dGetUnpackedMultiCellBank: ; 0x020AFFD8
	stmdb sp!, {r4-r5,lr}
	sub sp, sp, #0x4
	mov r5, r1
	ldr r1, _020B001C ; =0x4D43424B
	bl NNS_G2dFindBinaryBlock
	movs r4, r0
	moveq r0, #0x0
	addeq sp, sp, #0x4
	streq r0, [r5, #0x0]
	ldmeqia sp!, {r4-r5,pc}
	add r0, r4, #0x8
	bl NNS_G2dUnpackNMC
	add r0, r4, #0x8
	str r0, [r5, #0x0]
	mov r0, #0x1
	add sp, sp, #0x4
	ldmia sp!, {r4-r5,pc}
	.balign 4
_020B001C: .word 0x4D43424B
	arm_func_end NNS_G2dGetUnpackedMultiCellBank