⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 removesprite.s

📁 symbian 的一个 二维飞行游戏 源码 及相关技术文章
💻 S
字号:
@@  Copyright 2002 Kenneth Guy,
@@  
        	.global	RemoveAsm__12TSprite32x24
RemoveAsm__12TSprite32x24:
        stmfd sp!, {r0-r12,lr}

        @@  r0 TSprite32x24*
        @@     - offset 0   TUint16* iSpritePos;
        @@     - offset 4   TUint16* iDrawEnd;
        @@     - offset 8  TUint16 iBehindSprite[32*24]

        ldmia   r0, {r2,r3} @ iSpritePos,iDrawEnd
        add     r1,r0,#8        @ iBehindSprite
        
        mov     r14,#24         @ sprite is 24 lines
        sub     r3,r3,#64       @ handle end of map area
RemoveSpritePlotLoop:
        cmp     r2,r3
        bge     removeSpriteOverlap
        
        ldmia   r1!,{r5-r12}
        stmia   r2!,{r5-r12}
        ldmia   r1!,{r5-r12}
        stmia   r2!,{r5-r12}

        add     r2,r2,#1344     @ next line

removeSpriteOverlapReturn:                
        
        subs    r14,r14,#1
        bne     RemoveSpritePlotLoop     @ loop 24 times (24 lines in a sprite)

        	
	ldmfd sp!, {r0-r12,lr}
	@ handle returning to thumb code
	bx      lr

        
removeSpriteOverlap:      
        add     r3,r3,#64

        cmp     r2,r3
        subge   r2,r2,#0x4D000   @ length of draw area
        
        mov     r10,#16
removeSpriteOverlapLoop:
        ldr     r5,[r1],#4
        str     r5,[r2],#4
        
        cmp     r2,r3
        subge   r2,r2,#0x4D000   @ length of draw area

        subs    r10,r10,#1
        bne     removeSpriteOverlapLoop

                
        add     r2,r2,#1344     @ next line
        cmp     r2,r3
        subge   r2,r2,#0x4D000   @ length of draw area
        b       removeSpriteOverlapReturn

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -