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

	.section .text

	arm_func_start NNS_G2dDrawSpriteFast
NNS_G2dDrawSpriteFast: ; 0x020B0250
	stmdb sp!, {r4-r5,lr}
	sub sp, sp, #0x4
	ldr r5, _020B02C0 ; =0x04000470
	mov r0, r0, lsl #0xc
	str r0, [r5, #0x0]
	mov r4, r1, lsl #0xc
	ldr r12, [sp, #0x10]
	ldr r0, [sp, #0x14]
	ldr r1, [sp, #0x1c]
	str r4, [r5, #0x0]
	mov r4, r2, lsl #0xc
	ldr r2, [sp, #0x18]
	ldr lr, _020B02C4 ; =0x0400046C
	str r4, [r5, #0x0]
	mov r4, r3, lsl #0xc
	ldr r3, [sp, #0x20]
	str r4, [lr, #0x0]
	mov r12, r12, lsl #0xc
	str r12, [lr, #0x0]
	mov r12, #0x1000
	mov r0, r0, lsl #0xc
	mov r1, r1, lsl #0xc
	mov r2, r2, lsl #0xc
	mov r3, r3, lsl #0xc
	str r12, [lr, #0x0]
	bl DrawOneQuad_
	add sp, sp, #0x4
	ldmia sp!, {r4-r5,pc}
	.balign 4
_020B02C0: .word 0x04000470
_020B02C4: .word 0x0400046C
	arm_func_end NNS_G2dDrawSpriteFast

	arm_func_start NNS_G2dSetupSoftwareSpriteCamera
NNS_G2dSetupSoftwareSpriteCamera: ; 0x020B02C8
	stmdb sp!, {lr}
	sub sp, sp, #0x14
	ldr r2, _020B0330 ; =0xBFFF0000
	ldr r0, _020B0334 ; =0x04000580
	mov r1, #0x400000
	str r2, [r0, #0x0]
	rsb r0, r1, #0x0
	str r0, [sp, #0x0]
	str r1, [sp, #0x4]
	mov r0, #0x0
	str r1, [sp, #0x8]
	mov r1, #0x1
	str r1, [sp, #0xc]
	mov r2, r0
	mov r1, #0xc0000
	mov r3, #0x100000
	str r0, [sp, #0x10]
	bl G3i_OrthoW_
	ldr r1, _020B0338 ; =0x0400044C
	mov r2, #0x0
	ldr r0, _020B033C ; =0x04000440
	str r2, [r1, #0x0]
	mov r1, #0x1
	str r1, [r0, #0x0]
	add sp, sp, #0x14
	ldmia sp!, {pc}
	.balign 4
_020B0330: .word 0xBFFF0000
_020B0334: .word 0x04000580
_020B0338: .word 0x0400044C
_020B033C: .word 0x04000440
	arm_func_end NNS_G2dSetupSoftwareSpriteCamera

	arm_func_start DrawOneQuad_
DrawOneQuad_: ; 0x020B0340
	stmdb sp!, {r4-r6,lr}
	mov r3, r3, lsl #0x8
	mov r0, r0, lsl #0x8
	mov r4, r3, asr #0x10
	mov r3, r0, asr #0x10
	mov r0, r4, lsl #0x10
	mov r3, r3, lsl #0x10
	mov r1, r1, lsl #0x8
	mov r1, r1, asr #0x10
	mov r1, r1, lsl #0x10
	mov r2, r2, lsl #0x8
	mov r2, r2, asr #0x10
	mov r2, r2, lsl #0x10
	ldr ip, _020B03F4 ; =0x04000500
	mov lr, #0x1
	mov r6, r0, lsr #0x10
	mov r5, r3, lsr #0x10
	mov r3, r1, lsr #0x10
	mov r1, r2, lsr #0x10
	ldr r4, _020B03F8 ; =0x04000488
	str lr, [r12, #0x0]
	orr r0, r5, r6, lsl #0x10
	ldr lr, _020B03FC ; =0x0400048C
	str r0, [r4, #0x0]
	mov r0, #0x10000000
	str r0, [lr, #0x0]
	mov r12, #0x0
	str r12, [lr, #0x0]
	orr r2, r3, r6, lsl #0x10
	ldr r0, _020B0400 ; =0x10001000
	str r2, [r4, #0x0]
	str r0, [lr, #0x0]
	str r12, [lr, #0x0]
	orr r0, r3, r1, lsl #0x10
	str r0, [r4, #0x0]
	mov r0, #0x1000
	str r0, [lr, #0x0]
	str r12, [lr, #0x0]
	orr r0, r5, r1, lsl #0x10
	str r0, [r4, #0x0]
	str r12, [lr, #0x0]
	ldr r0, _020B0404 ; =0x04000504
	str r12, [lr, #0x0]
	str r12, [r0, #0x0]
	ldmia sp!, {r4-r6,pc}
	.balign 4
_020B03F4: .word 0x04000500
_020B03F8: .word 0x04000488
_020B03FC: .word 0x0400048C
_020B0400: .word 0x10001000
_020B0404: .word 0x04000504
	arm_func_end DrawOneQuad_