summaryrefslogtreecommitdiff
path: root/test.s
diff options
context:
space:
mode:
Diffstat (limited to 'test.s')
-rw-r--r--test.s159
1 files changed, 159 insertions, 0 deletions
diff --git a/test.s b/test.s
new file mode 100644
index 0000000..098647e
--- /dev/null
+++ b/test.s
@@ -0,0 +1,159 @@
+.syntax unified
+
+.cpu arm7tdmi
+
+.arm
+b _start
+
+.byte 0x24,0xFF,0xAE,0x51
+.byte 0x69,0x9A,0xA2,0x21
+.byte 0x3D,0x84,0x82,0x0A
+.byte 0x84,0xE4,0x09,0xAD
+.byte 0x11,0x24,0x8B,0x98
+.byte 0xC0,0x81,0x7F,0x21
+.byte 0xA3,0x52,0xBE,0x19
+.byte 0x93,0x09,0xCE,0x20
+.byte 0x10,0x46,0x4A,0x4A
+.byte 0xF8,0x27,0x31,0xEC
+.byte 0x58,0xC7,0xE8,0x33
+.byte 0x82,0xE3,0xCE,0xBF
+.byte 0x85,0xF4,0xDF,0x94
+.byte 0xCE,0x4B,0x09,0xC1
+.byte 0x94,0x56,0x8A,0xC0
+.byte 0x13,0x72,0xA7,0xFC
+.byte 0x9F,0x84,0x4D,0x73
+.byte 0xA3,0xCA,0x9A,0x61
+.byte 0x58,0x97,0xA3,0x27
+.byte 0xFC,0x03,0x98,0x76
+.byte 0x23,0x1D,0xC7,0x61
+.byte 0x03,0x04,0xAE,0x56
+.byte 0xBF,0x38,0x84,0x00
+.byte 0x40,0xA7,0x0E,0xFD
+.byte 0xFF,0x52,0xFE,0x03
+.byte 0x6F,0x95,0x30,0xF1
+.byte 0x97,0xFB,0xC0,0x85
+.byte 0x60,0xD6,0x80,0x25
+.byte 0xA9,0x63,0xBE,0x03
+.byte 0x01,0x4E,0x38,0xE2
+.byte 0xF9,0xA2,0x34,0xFF
+.byte 0xBB,0x3E,0x03,0x44
+.byte 0x78,0x00,0x90,0xCB
+.byte 0x88,0x11,0x3A,0x94
+.byte 0x65,0xC0,0x7C,0x63
+.byte 0x87,0xF0,0x3C,0xAF
+.byte 0xD6,0x25,0xE4,0x8B
+.byte 0x38,0x0A,0xAC,0x72
+.byte 0x21,0xD4,0xF8,0x07
+
+.ascii "LUMA\x0\x0\x0\x0\x0\x0\x0\x0"
+
+.ascii "AMUL"
+
+.ascii "00"
+
+.byte 0x96
+
+.byte 0x0
+
+.byte 0x0
+
+.fill 0x7,0x1,0x0
+
+.byte 0x45
+
+.byte 0x0
+
+.fill 0x2,0x1,0x0
+
+.arm
+nop
+
+.byte 0x0
+
+.byte 0x0
+
+.fill 0x1A,0x1,0x0
+
+.arm
+nop
+
+.arm
+.func
+_start:
+ ldr lr, =start
+ bx lr
+.endfunc
+
+.thumb
+.func
+.thumb_func
+start:
+ @ Set up video mode:
+ ldr r0, .ioAddr
+ @ Already at DISPCNT.
+ ldr r1, .displayControl
+ strh r1, [r0]
+
+ @ Set up palette:
+ ldr r0, .paletteAddr
+ ldr r1, .backgroundColour
+ strh r1, [r0]
+ ldr r1, .paletteIndex
+ lsls r1, 0x1 @ Multiply by two.
+ adds r0, r1 @ Apply index.
+ ldr r1, .foregroundColour
+ strh r1, [r0]
+
+ @ Set up loop:
+ @ - r0 is the current pixel address.
+ @ - r1 is the palette value/index.
+ @ - r2 is the addend.
+ @ - r3 is the last pixel address.
+ ldr r0, .videoAddr
+ ldr r1, .paletteIndex
+ movs r2, 0x0
+ movs r3, 0x4B
+ lsls r3, 0x9
+ adds r3, r0
+
+ @ Plot pixels:
+.loop:
+ strb r1, [r0]
+ adds r0, r2
+ adds r2, 0x1
+ cmp r0, r3
+ bge .stop @ Stop if we've reached the end.
+ b .loop @ Repeat loop.
+
+ @ Stop:
+.stop:
+ b .stop
+.endfunc
+
+.align
+.ioAddr:
+ .word 0x04000000
+
+.align
+.displayControl:
+ .word 0x0404
+
+.align
+.paletteAddr:
+ .word 0x05000000
+
+.align
+.paletteIndex:
+ .word 0xFF
+
+.align
+.backgroundColour:
+ .word 0b0000100001000010
+
+.align
+.foregroundColour:
+ .word 0b0001001010011110
+
+.align
+.videoAddr:
+ .word 0x06000000