summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2015-10-05 06:53:39 -0700
committerYamaArashi <shadow962@live.com>2015-10-05 06:53:39 -0700
commit064051d247165594dc9915b8d48d188af91c3b5e (patch)
tree3d5bace0abd5dae53c7d433e0050e1adacf77203
parent9024595c93acf6b1ee7aa63b9b2d04ee701058c3 (diff)
use more constants in InterruptMain
-rw-r--r--asm/crt0.s40
-rw-r--r--asm/defines.s33
2 files changed, 46 insertions, 27 deletions
diff --git a/asm/crt0.s b/asm/crt0.s
index 544c3b173..f54b87c12 100644
--- a/asm/crt0.s
+++ b/asm/crt0.s
@@ -50,48 +50,48 @@ InterruptMain:
strh r0, [r3, 0x8]
and r1, r2, r2, lsr 16
mov r12, 0
- ands r0, r1, 0x4
+ ands r0, r1, INTR_FLAG_VCOUNT
bne _08000320
add r12, r12, 0x4
mov r0, 0x1
strh r0, [r3, 0x8]
- ands r0, r1, 0x80
+ ands r0, r1, INTR_FLAG_SERIAL
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x40
+ ands r0, r1, INTR_FLAG_TIMER3
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x2
+ ands r0, r1, INTR_FLAG_HBLANK
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x1
+ ands r0, r1, INTR_FLAG_VBLANK
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x8
+ ands r0, r1, INTR_FLAG_TIMER0
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x10
+ ands r0, r1, INTR_FLAG_TIMER1
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x20
+ ands r0, r1, INTR_FLAG_TIMER2
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x100
+ ands r0, r1, INTR_FLAG_DMA0
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x200
+ ands r0, r1, INTR_FLAG_DMA1
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x400
+ ands r0, r1, INTR_FLAG_DMA2
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x800
+ ands r0, r1, INTR_FLAG_DMA3
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x1000
+ ands r0, r1, INTR_FLAG_KEYPAD
bne _08000320
add r12, r12, 0x4
- ands r0, r1, 0x2000
+ ands r0, r1, INTR_FLAG_GAMEPAK
strbne r0, [r3, -0x17C]
_0800031C:
bne _0800031C
@@ -103,13 +103,13 @@ _08000320:
ldrb r0, [r0, 0xA]
mov r1, 0x8
mov r0, r1, lsl r0
- orr r0, r0, 0x2000
- orr r1, r0, 0xC6
+ orr r0, r0, INTR_FLAG_GAMEPAK
+ orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK
and r1, r1, r2
strh r1, [r3]
mrs r3, cpsr
- bic r3, r3, 0xDF
- orr r3, r3, 0x1F
+ bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
+ orr r3, r3, PSR_SYS_MODE
msr cpsr_cf, r3
ldr r1, =0x03002710
add r1, r1, r12
@@ -119,8 +119,8 @@ _08000320:
bx r0
ldmia sp!, {lr}
mrs r3, cpsr
- bic r3, r3, 0xDF
- orr r3, r3, 0x92
+ bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
+ orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE
msr cpsr_cf, r3
ldmia sp!, {r0-r3,lr}
strh r2, [r3]
diff --git a/asm/defines.s b/asm/defines.s
index bc18a616c..a4f3e3291 100644
--- a/asm/defines.s
+++ b/asm/defines.s
@@ -1,10 +1,14 @@
- .set PSR_USR_MODE, 0x00000010
- .set PSR_FIQ_MODE, 0x00000011
- .set PSR_IRQ_MODE, 0x00000012
- .set PSR_SVC_MODE, 0x00000013
- .set PSR_ABT_MODE, 0x00000017
- .set PSR_UND_MODE, 0x0000001b
- .set PSR_SYS_MODE, 0x0000001f
+ .set PSR_USR_MODE, 0x00000010
+ .set PSR_FIQ_MODE, 0x00000011
+ .set PSR_IRQ_MODE, 0x00000012
+ .set PSR_SVC_MODE, 0x00000013
+ .set PSR_ABT_MODE, 0x00000017
+ .set PSR_UND_MODE, 0x0000001b
+ .set PSR_SYS_MODE, 0x0000001f
+ .set PSR_MODE_MASK, 0x0000001f
+ .set PSR_T_BIT, 0x00000020
+ .set PSR_F_BIT, 0x00000040
+ .set PSR_I_BIT, 0x00000080
.set EWRAM_START, 0x02000000
.set EWRAM_END, EWRAM_START + 0x40000
@@ -12,3 +16,18 @@
.set IWRAM_END, IWRAM_START + 0x8000
.set INTR_VECTOR, IWRAM_END - 0x4
+
+ .set INTR_FLAG_VBLANK, 1 << 0
+ .set INTR_FLAG_HBLANK, 1 << 1
+ .set INTR_FLAG_VCOUNT, 1 << 2
+ .set INTR_FLAG_TIMER0, 1 << 3
+ .set INTR_FLAG_TIMER1, 1 << 4
+ .set INTR_FLAG_TIMER2, 1 << 5
+ .set INTR_FLAG_TIMER3, 1 << 6
+ .set INTR_FLAG_SERIAL, 1 << 7
+ .set INTR_FLAG_DMA0, 1 << 8
+ .set INTR_FLAG_DMA1, 1 << 9
+ .set INTR_FLAG_DMA2, 1 << 10
+ .set INTR_FLAG_DMA3, 1 << 11
+ .set INTR_FLAG_KEYPAD, 1 << 12
+ .set INTR_FLAG_GAMEPAK, 1 << 13