Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- format binary as 'gba'
- gba_header:
- ; Branch to 0x080000C0 (4 bytes)
- dw 0xEA00002E
- ; Nintendo logo (156 bytes)
- db 0x24,0xFF,0xAE,0x51,0x69,0x9A,0xA2,0x21,0x3D,0x84
- db 0x82,0x0A,0x84,0xE4,0x09,0xAD,0x11,0x24,0x8B,0x98
- db 0xC0,0x81,0x7F,0x21,0xA3,0x52,0xBE,0x19,0x93,0x09
- db 0xCE,0x20,0x10,0x46,0x4A,0x4A,0xF8,0x27,0x31,0xEC
- db 0x58,0xC7,0xE8,0x33,0x82,0xE3,0xCE,0xBF,0x85,0xF4
- db 0xDF,0x94,0xCE,0x4B,0x09,0xC1,0x94,0x56,0x8A,0xC0
- db 0x13,0x72,0xA7,0xFC,0x9F,0x84,0x4D,0x73,0xA3,0xCA
- db 0x9A,0x61,0x58,0x97,0xA3,0x27,0xFC,0x03,0x98,0x76
- db 0x23,0x1D,0xC7,0x61,0x03,0x04,0xAE,0x56,0xBF,0x38
- db 0x84,0x00,0x40,0xA7,0x0E,0xFD,0xFF,0x52,0xFE,0x03
- db 0x6F,0x95,0x30,0xF1,0x97,0xFB,0xC0,0x85,0x60,0xD6
- db 0x80,0x25,0xA9,0x63,0xBE,0x03,0x01,0x4E,0x38,0xE2
- db 0xF9,0xA2,0x34,0xFF,0xBB,0x3E,0x03,0x44,0x78,0x00
- db 0x90,0xCB,0x88,0x11,0x3A,0x94,0x65,0xC0,0x7C,0x63
- db 0x87,0xF0,0x3C,0xAF,0xD6,0x25,0xE4,0x8B,0x38,0x0A
- db 0xAC,0x72,0x21,0xD4,0xF8,0x07
- db 'spsr_usrsys', 0 ; Game title (12 bytes)
- db '0000' ; Game code (4 bytes)
- db 'AN' ; Make code (2 bytes)
- db 0x96 ; Fixed (1 byte)
- db 0x00 ; Unit code (1 byte)
- db 0x80 ; Device type (1 byte)
- db 0,0,0,0,0,0,0 ; Unused (7 bytes)
- db 0x00 ; Game version (1 byte)
- db 0xa2 ; Complement (1 byte)
- db 0,0 ; Reserved (2 bytes)
- _start:
- ; Reset r2
- mov r2, 0
- ; Setup DISPCNT
- mov r0, 0x00000400
- orr r0, 0x00000004
- mov r1, 0x04000000
- strh r0, [r1]
- test1:
- ; Here, CPSR should be equal to 0x4000001f
- ; Copy a value to SPSR
- mov r0, 0xb0000000
- orr r0, 0x00000010
- msr spsr, r0
- ; Compare the value in SPSR with the value in CPSR
- mrs r1, cpsr
- teq r0, r1
- bne test2
- ; The value written to SPSR was (also?) written in CPSR.
- orr r2, 0x001f
- test2:
- ; Copy a value to CPSR
- mov r0, 0x70000000
- orr r0, 0x0000001f
- msr cpsr, r0
- ; Check the value in SPSR
- mrs r1, spsr
- teq r0, r1
- bne test3
- ; The value written to CPSR was also written in SPSR.
- orr r2, 0x03e0
- test3:
- ; Copy a value to SPSR
- mov r0, 0xc0000000
- orr r0, 0x0000001f
- msr spsr, r0
- ; Go to user mode
- mrs r1, cpsr
- mov r3, 0x80000000
- mov r3, r3, asr 24
- and r1, r3
- orr r1, 0x00000010
- msr cpsr, r1
- ; Load SPSR in user mode
- mrs r1, spsr
- teq r0, r1
- bne displayResult
- ; The SPSR is the same
- orr r2, 0x7c00
- displayResult:
- mov r0, 0x05000000
- strh r2, [r0]
- halt:
- b halt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement