Files
AmigaExamples/028.game2/items.s
T
2016-04-18 16:58:49 +10:00

141 lines
2.2 KiB
ArmAsm

include "includes.i"
xdef SetupItemSpriteData
xdef ScrollItemSprites
xdef RenderItemSprite
ScrollItemSprites:
sub.w #1,itemX
rts
SetupItemSpriteData:
move.l currentItemSprite,a0
cmp.w #11<<3,itemIndex
ble .dontResetIndex
move.l #0,itemIndex
.dontResetIndex:
cmp.l #deadSprite,a0
bne .setupSprite
bra .c1
.setupSprite:
move.l #0,d0
move.w itemIndex,d0
lsr.l #3,d0
mulu.w #64+12,d0
add.l d0,a0
add.w #1,itemIndex
move.w itemLagX,d0
move.w itemX,itemLagX
add.w #32,d0
move.w d0,d1
andi #1,d1
move.b d1,3(a0) ;spriteControl
lsr.l #1,d0
move.b d0,1(a0) ;spriteHStart
move.w itemY,d0
move.b d0,(a0) ;spriteVStart
move.w itemYEnd,d0
move.b d0,2(a0) ;spriteVStop
.c1:
move.l a0,SPR2PTH(a6)
rts
RenderItemSprite:
;; d2 - y tile index ?
movem.l d2-d3,-(sp)
move.l foregroundScrollX,d0
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels
andi.w #$f,d0
cmp.b #15,d0
bne .dontAddSprite
move.l a2,a3
add.l mapSize,a3
cmpi.w #0,(a3)
beq .dontAddSprite
move.l #spriteCoin1,currentItemSprite
move.w #337,itemX
mulu.w #16,d2
move.w #255-12,d3
sub.w d2,d3
move.w d3,itemY
add.w #16,d3
move.w d3,itemYEnd
move.w #0,itemIndex
.dontAddSprite:
movem.l (sp)+,d2-d3
rts
currentItemSprite:
dc.l deadSprite
itemX:
dc.w 0
itemLagX:
dc.w 0
itemY:
dc.w 0
itemYEnd:
dc.w 0
itemIndex:
dc.w 4
spriteCoin1:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin1.bin"
dc.l 0
spriteCoin2:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin2.bin"
dc.l 0
spriteCoin3:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin3.bin"
dc.l 0
spriteCoin4:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin4.bin"
dc.l 0
spriteCoin5:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin3.bin"
dc.l 0
spriteCoin6:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin6.bin"
dc.l 0
spriteCoin7:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin7.bin"
dc.l 0
spriteCoin8:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin6.bin"
dc.l 0
spriteCoin9:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin3.bin"
dc.l 0
spriteCoin10:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin4.bin"
dc.l 0
spriteCoin11:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin3.bin"
dc.l 0
spriteCoin12:
dc.w 0,0
dc.w 0,0
incbin "out/sprite_coin2.bin"
dc.l 0