mirror of
https://frontier.innolan.net/github/AmigaExamples.git
synced 2026-09-12 04:51:44 +00:00
141 lines
2.2 KiB
ArmAsm
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
|