.arm .section .text .org 0x08000000 @@ game pak .global _start .global halt .global initscr .global bitblt .global vtrace _start: mrs r0, cpsr and r1, r0, #0x1F cmp r1, #0x1F orrne r0, r0, #0x1F msrne cpsr_c, r0 mov sp, #0x08000000 add sp, sp, #0x00001000 @@ 64 KiB descending stack bl initscr mloop: bl bitblt bl vtrace b mloop vtrace: swi #0x5 mov pc, lr halt: swi #0x2 mov pc, lr initscr: stmfd sp!, {r0-r1} mov r0, #0x0 orr r0, r0, #0x3 @@ Set video mode 3, 240x160 16-bit bitmapped mov r1, #0x04000000 ldr r1, [r0] ldmia sp!, {r0-r1} mov pc, lr bitblt: stmfd sp!, {r0-r2} mov r0, #0x06000000 @@ framebuffer base add r1, r0, #0x12C00 @@ framebuffer base + size mov r2, #31 blitloop: strh r2, [r0] add r0, r0, #2 cmp r0, r1 subne pc, pc, #20 @@ ble blitloop ldmia sp!, {r0-r2} mov pc, lr