Created
December 25, 2014 21:02
-
-
Save stephan-vandenheuvel/b51cb3689b705520318d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//GCC DEFAULT | |
void sprite_set(u8 id, u8 xpos, u8 ypos, u16 sprite_number) { | |
104: e52db004 push {fp} ; (str fp, [sp, #-4]!) | |
108: e28db000 add fp, sp, #0 | |
10c: e24dd010 sub sp, sp, #16 | |
110: e54b0004 strb r0, [fp, #-4] | |
114: e54b1008 strb r1, [fp, #-8] | |
118: e54b200c strb r2, [fp, #-12] | |
11c: e14b31b0 strh r3, [fp, #-16] | |
//TODO: attr3 only shows up every 4th sprite ... | |
//This index is wrong | |
((struct Sprite*) (MEM_OAM))[id].attr0 = ypos | ATTR0_8BPP; | |
120: e55b3004 ldrb r3, [fp, #-4] | |
124: e1a03183 lsl r3, r3, #3 | |
128: e2833407 add r3, r3, #117440512 ; 0x7000000 | |
12c: e55b200c ldrb r2, [fp, #-12] | |
130: e1a02802 lsl r2, r2, #16 | |
134: e1a02822 lsr r2, r2, #16 | |
138: e3822a02 orr r2, r2, #8192 ; 0x2000 | |
13c: e1a02802 lsl r2, r2, #16 | |
140: e1a02822 lsr r2, r2, #16 | |
144: e1c320b0 strh r2, [r3] | |
((struct Sprite*) (MEM_OAM))[id].attr1 = (u16) xpos; | |
148: e55b3004 ldrb r3, [fp, #-4] | |
14c: e1a03183 lsl r3, r3, #3 | |
150: e2833407 add r3, r3, #117440512 ; 0x7000000 | |
154: e55b2008 ldrb r2, [fp, #-8] | |
158: e1a02802 lsl r2, r2, #16 | |
15c: e1a02822 lsr r2, r2, #16 | |
160: e1c320b2 strh r2, [r3, #2] | |
((struct Sprite*) (MEM_OAM))[id].attr2 = sprite_number; | |
164: e55b3004 ldrb r3, [fp, #-4] | |
168: e1a03183 lsl r3, r3, #3 | |
16c: e2833407 add r3, r3, #117440512 ; 0x7000000 | |
170: e15b21b0 ldrh r2, [fp, #-16] | |
174: e1c320b4 strh r2, [r3, #4] | |
} | |
178: e28bd000 add sp, fp, #0 | |
17c: e8bd0800 ldmfd sp!, {fp} | |
180: e12fff1e bx lr | |
//NO GCC PACKING | |
void sprite_set(u8 id, u8 xpos, u8 ypos, u16 sprite_number) { | |
104: e52db004 push {fp} ; (str fp, [sp, #-4]!) | |
108: e28db000 add fp, sp, #0 | |
10c: e24dd010 sub sp, sp, #16 | |
110: e54b0004 strb r0, [fp, #-4] | |
114: e54b1008 strb r1, [fp, #-8] | |
118: e54b200c strb r2, [fp, #-12] | |
11c: e14b31b0 strh r3, [fp, #-16] | |
//TODO: attr3 only shows up every 4th sprite ... | |
//This index is wrong | |
((struct Sprite*) (MEM_OAM))[id].attr0 = ypos | ATTR0_8BPP; | |
120: e55b3004 ldrb r3, [fp, #-4] | |
124: e1a03183 lsl r3, r3, #3 | |
128: e2833407 add r3, r3, #117440512 ; 0x7000000 | |
12c: e55b200c ldrb r2, [fp, #-12] | |
130: e1a02802 lsl r2, r2, #16 | |
134: e1a02822 lsr r2, r2, #16 | |
138: e3822a02 orr r2, r2, #8192 ; 0x2000 | |
13c: e1a02802 lsl r2, r2, #16 | |
140: e1a02822 lsr r2, r2, #16 | |
144: e20210ff and r1, r2, #255 ; 0xff | |
148: e3a00000 mov r0, #0 | |
14c: e1801001 orr r1, r0, r1 | |
150: e5c31000 strb r1, [r3] | |
154: e1a02422 lsr r2, r2, #8 | |
158: e1a02802 lsl r2, r2, #16 | |
15c: e1a02822 lsr r2, r2, #16 | |
160: e3a01000 mov r1, #0 | |
164: e1812002 orr r2, r1, r2 | |
168: e5c32001 strb r2, [r3, #1] | |
((struct Sprite*) (MEM_OAM))[id].attr1 = (u16) xpos; | |
16c: e55b3004 ldrb r3, [fp, #-4] | |
170: e1a03183 lsl r3, r3, #3 | |
174: e2833407 add r3, r3, #117440512 ; 0x7000000 | |
178: e55b2008 ldrb r2, [fp, #-8] | |
17c: e1a02802 lsl r2, r2, #16 | |
180: e1a02822 lsr r2, r2, #16 | |
184: e20210ff and r1, r2, #255 ; 0xff | |
188: e3a00000 mov r0, #0 | |
18c: e1801001 orr r1, r0, r1 | |
190: e5c31002 strb r1, [r3, #2] | |
194: e1a02422 lsr r2, r2, #8 | |
198: e1a02802 lsl r2, r2, #16 | |
19c: e1a02822 lsr r2, r2, #16 | |
1a0: e3a01000 mov r1, #0 | |
1a4: e1812002 orr r2, r1, r2 | |
1a8: e5c32003 strb r2, [r3, #3] | |
((struct Sprite*) (MEM_OAM))[id].attr2 = sprite_number; | |
1ac: e55b3004 ldrb r3, [fp, #-4] | |
1b0: e1a03183 lsl r3, r3, #3 | |
1b4: e2833407 add r3, r3, #117440512 ; 0x7000000 | |
1b8: e55b2010 ldrb r2, [fp, #-16] | |
1bc: e3a01000 mov r1, #0 | |
1c0: e1812002 orr r2, r1, r2 | |
1c4: e5c32004 strb r2, [r3, #4] | |
1c8: e55b200f ldrb r2, [fp, #-15] | |
1cc: e3a01000 mov r1, #0 | |
1d0: e1812002 orr r2, r1, r2 | |
1d4: e5c32005 strb r2, [r3, #5] | |
} | |
1d8: e28bd000 add sp, fp, #0 | |
1dc: e8bd0800 ldmfd sp!, {fp} | |
1e0: e12fff1e bx lr |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment