summaryrefslogtreecommitdiff
path: root/arm7/asm/arm7_rom.s
blob: b20707288c3bb05f0482e2c21e7b0160c4b106bd (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
/* arm7_rom.s TODO: Disassemble */
	.include "asm/macros.inc"
	.include "global.inc"

	.section .itcm
	arm_func_start FUNC_027E0000
FUNC_027E0000: ; 0x027E0000 load at 0x023801B0
	stmdb	sp!, {r4, r5, r6, lr}
	ldr	r6, [pc, #180]	; 0x270
	ldr	r3, [pc, #180]	; 0x274
	ldr	r0, [pc, #180]	; 0x278
	b	_027E00B0
_027E0014:
	mov	r2, r3
	ldr	r5, [r3, #4]
	add	r1, r3, #8
	add	r3, r3, #12
	ldr	r4, [r1]
	ldr	r1, [r2]
	cmp	r1, #100663296	; 0x6000000
	bne	_027E00AC
	ldr	r3, [pc, #144]	; 0x27c
	ldr	r0, [pc, #144]	; 0x280
	str	r3, [r0]
	add	r2, r5, r4
	ldr	r0, [pc, #136]	; 0x284
	str	r2, [r0]
	ldr	r1, [pc, #132]	; 0x288
	add	r0, r3, r2
	cmp	r1, r0
	beq	_027E0060
	bl	FUN_037FB1F0
_027E0060:
	ldr	r0, [pc, #104]	; 0x280
	ldr	r3, [r0]
	mov	r2, #0
	mov	r1, r5, lsr #2
	b	_027E0080
_027E0074:
	ldr	r0, [r6], #4
	str	r0, [r3], #4
	add	r2, r2, #1
_027E0080:
	cmp	r2, r1
	bcc	_027E0074
	mov	r1, #0
	mov	r2, r4, lsr #2
	mov	r0, r1
	b	_027E00A0
_027E0098:
	str	r0, [r3], #4
	add	r1, r1, #1
_027E00A0:
	cmp	r1, r2
	bcc	_027E0098
	b	_027E00B8
_027E00AC:
	add	r6, r6, r5
_027E00B0:
	cmp	r3, r0
	bne	_027E0014
_027E00B8:
	ldmia	sp!, {r4, r5, r6, lr}
	bx	lr
_027E00C0: .word 0x023801B0
_027E00C4: .word 0x023A92F8
_027E00C8: .word 0x023A931C
_027E00CC: .word 0x027E00DC
_027E00D0: .word 0x0380A3F4
_027E00D4: .word 0x0380A3FC
_027E00D8: .word 0x027FAFCC

	.section .dtcm
	.incbin "baserom.nds", 0x30D28C, 0x31F0

	arm_func_start FUN_037FB1F0
FUN_037FB1F0: ; 0x037FB1F0
	.incbin "baserom.nds", 0x31047C, 0x5EE4

	thumb_func_start SVC_SoftReset
SVC_SoftReset: ; 0x02389360
	swi 0
	bx lr

	thumb_func_start SVC_WaitByLoop
SVC_WaitByLoop: ; 0x02389364
	swi 3
	bx lr

	thumb_func_start SVC_WaitIntr
SVC_WaitIntr: ; 0x02389368
	ldr r2, =0x04000000
	mov ip, r2
	mov r2, #0x0
	swi 4
	bx lr
	.pool

	thumb_func_start SVC_WaitVBlankIntr
SVC_WaitVBlankIntr:
	mov r2, #0x0
	swi 5
	bx lr

	non_word_aligned_thumb_func_start SVC_Halt
SVC_Halt:
	swi 6
	bx lr

	non_word_aligned_thumb_func_start SVC_Stop
SVC_Stop:
	swi 7
	bx lr

	non_word_aligned_thumb_func_start SVC_SoundBias
SVC_SoundBias:
	swi 8
	bx lr

	non_word_aligned_thumb_func_start SVC_SoundBiasSet
SVC_SoundBiasSet:
	add r1, r0, #0x0
	mov r0, #0x1
	swi 8
	bx lr

	non_word_aligned_thumb_func_start SVC_SoundBiasReset
SVC_SoundBiasReset:
	add r1, r0, #0x0
	mov r0, #0x0
	swi 8
	bx lr

	non_word_aligned_thumb_func_start SVC_Div
SVC_Div:
	swi 9
	bx lr

	non_word_aligned_thumb_func_start SVC_DivRem
SVC_DivRem:
	swi 9
	add r0, r1, #0x0
	bx lr
	.incbin "baserom.nds", 0x3163a4, 0x65F4

	.section .ewram
	.incbin "baserom.nds", 0x31C998, 0x19960