//--------------------------------------------------------------------------------- void MoveSprite(Sprite* sp) { //--------------------------------------------------------------------------------- int x = sp->x >> 8; int y = sp->y >> 8; sp->oam->attribute[1] &= 0xFE00; sp->oam->attribute[1] |= (x & 0x01FF); sp->oam->attribute[0] &= 0xFF00; sp->oam->attribute[0] |= (y & 0x00FF); } .global MoveSprite .code 16 .thumb_func .type MoveSprite, %function MoveSprite: .LFB103: .file 3 "d:/projects/devkitPro/examples/nds/Graphics/2D/Complex_2D/source/main.cpp" .loc 3 32 0 push {r7, lr} .LCFI9: sub sp, sp, #16 .LCFI10: add r7, sp, #0 .LCFI11: add r3, r7, #4 str r0, [r3] .LBB2: .loc 3 34 0 add r3, r7, #4 ldr r3, [r3] ldr r3, [r3] mov r2, r7 add r2, r2, #8 asr r3, r3, #8 str r3, [r2] .loc 3 35 0 add r3, r7, #4 ldr r3, [r3] ldr r3, [r3, #4] mov r2, r7 add r2, r2, #12 asr r3, r3, #8 str r3, [r2] .loc 3 37 0 add r3, r7, #4 ldr r3, [r3] ldr r1, [r3, #16] add r3, r7, #4 ldr r3, [r3] ldr r3, [r3, #16] ldrh r3, [r3, #2] mov r2, r3 mov r3, #254 lsl r3, r3, #8 and r2, r2, r3 add r3, r2, #0 strh r3, [r1, #2] .loc 3 38 0 add r3, r7, #4 ldr r3, [r3] ldr r1, [r3, #16] add r3, r7, #4 ldr r3, [r3] ldr r3, [r3, #16] ldrh r3, [r3, #2] mov r2, r3 mov r3, r7 add r3, r3, #8 ldr r3, [r3] lsl r3, r3, #16 lsr r3, r3, #16 lsl r3, r3, #16 lsr r3, r3, #16 str r3, [r7] ldr r0, [r7] lsl r3, r0, #23 lsr r3, r3, #23 str r3, [r7] ldr r0, [r7] add r3, r0, #0 orr r3, r3, r2 lsl r3, r3, #16 lsr r3, r3, #16 lsl r3, r3, #16 lsr r3, r3, #16 strh r3, [r1, #2] .loc 3 40 0 add r3, r7, #4 ldr r3, [r3] ldr r1, [r3, #16] add r3, r7, #4 ldr r3, [r3] ldr r3, [r3, #16] ldrh r3, [r3] mov r2, r3 mov r3, #255 lsl r3, r3, #8 and r2, r2, r3 add r3, r2, #0 strh r3, [r1] .loc 3 41 0 add r3, r7, #4 ldr r3, [r3] ldr r0, [r3, #16] add r3, r7, #4 ldr r3, [r3] ldr r3, [r3, #16] ldrh r3, [r3] mov r1, r3 mov r3, r7 add r3, r3, #12 ldr r3, [r3] lsl r3, r3, #16 lsr r3, r3, #16 lsl r3, r3, #16 lsr r3, r3, #16 mov r2, #255 and r3, r3, r2 add r2, r1, #0 orr r3, r3, r2 lsl r3, r3, #16 lsr r3, r3, #16 lsl r3, r3, #16 lsr r3, r3, #16 strh r3, [r0] .LBE2: .loc 3 43 0 mov sp, r7 add sp, sp, #16 @ sp needed for prologue pop {r7} pop {r0} bx r0 .LFE103: .size MoveSprite, .-MoveSprite //--------------------------------------------------------------------------------- void MoveSprite2(Sprite* sp) { //--------------------------------------------------------------------------------- int x = sp->x >> 8; int y = sp->y >> 8; sp->oam->posX = x; sp->oam->posY = y; } .align 2 .global MoveSprite2 .code 16 .thumb_func .type MoveSprite2, %function MoveSprite2: .LFB104: .loc 3 47 0 push {r7, lr} .LCFI12: sub sp, sp, #16 .LCFI13: add r7, sp, #0 .LCFI14: add r3, r7, #4 str r0, [r3] .LBB3: .loc 3 49 0 add r3, r7, #4 ldr r3, [r3] ldr r3, [r3] mov r2, r7 add r2, r2, #8 asr r3, r3, #8 str r3, [r2] .loc 3 50 0 add r3, r7, #4 ldr r3, [r3] ldr r3, [r3, #4] mov r2, r7 add r2, r2, #12 asr r3, r3, #8 str r3, [r2] .loc 3 52 0 add r3, r7, #4 ldr r3, [r3] ldr r0, [r3, #16] mov r3, r7 add r3, r3, #8 ldr r3, [r3] lsl r3, r3, #16 lsr r3, r3, #16 lsl r3, r3, #23 lsr r3, r3, #23 lsl r3, r3, #23 lsr r1, r3, #23 ldrh r3, [r0, #2] lsr r3, r3, #9 lsl r3, r3, #9 add r2, r3, #0 add r3, r1, #0 orr r3, r3, r2 strh r3, [r0, #2] .loc 3 53 0 add r3, r7, #4 ldr r3, [r3] ldr r2, [r3, #16] mov r3, r7 add r3, r3, #12 ldr r3, [r3] lsl r3, r3, #24 lsr r3, r3, #24 strb r3, [r2] .LBE3: .loc 3 55 0 mov sp, r7 add sp, sp, #16 @ sp needed for prologue pop {r7} pop {r0} bx r0