diff options
Diffstat (limited to 'hacks/images/m6502/softsprite.asm')
-rw-r--r-- | hacks/images/m6502/softsprite.asm | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/hacks/images/m6502/softsprite.asm b/hacks/images/m6502/softsprite.asm new file mode 100644 index 0000000..eab6d67 --- /dev/null +++ b/hacks/images/m6502/softsprite.asm @@ -0,0 +1,132 @@ +; software sprites +; by PJP + +loop: + ldx $90 + inx + stx $90 + + lda #4 ; *** NUMBER OF SPRITES + sta $3 + lda #0 + sta $4 + +multiple: + lda $90 + clc + adc $4 + tax + + lda sinus,x + ldy cosinus,x + asl + tax + lda ypos,x + sta $00 + inx + lda ypos,x + sta $01 + ldx #0 + lda #5 ; **** HEIGHT OF EACH SPRITE + sta $2 +draw: + lda image,x + sta ($0),y + inx + iny + lda image,x + sta ($0),y + inx + iny + lda image,x + sta ($0),y + inx + iny + lda image,x + sta ($0),y + inx + iny + lda image,x + sta ($0),y + + + tya + clc + adc #28 + tay + inx + dec $2 + bne draw + + lda $4 + clc + adc #18 ; *** DISTANCE BETWEEN SPRITES (FROM TABLE) + sta $4 + + dec $3 + bne multiple + + jmp loop + +; SINUS (AND COSINUS) + +sinus: + dcb $0e, $0e, $0e, $0f, $0f, $0f, $10, $10, $10, $11 + dcb $11, $11, $12, $12, $12, $13, $13, $13, $14, $14 + dcb $14, $14, $15, $15, $15, $16, $16, $16, $16, $17 + dcb $17, $17, $17, $18, $18, $18, $18, $19, $19, $19 + dcb $19, $19, $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1b + dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b +cosinus: + dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + dcb $1a, $1a, $1a, $1a, $1a, $1a, $19, $19, $19, $19 + dcb $19, $18, $18, $18, $18, $18, $17, $17, $17, $17 + dcb $16, $16, $16, $15, $15, $15, $15, $14, $14, $14 + dcb $13, $13, $13, $12, $12, $12, $11, $11, $11, $10 + dcb $10, $10, $0f, $0f, $0f, $0e, $0e, $0e, $0d, $0d + dcb $0d, $0c, $0c, $0c, $0b, $0b, $0b, $0a, $0a, $0a + dcb $09, $09, $09, $08, $08, $08, $07, $07, $07, $06 + dcb $06, $06, $06, $05, $05, $05, $04, $04, $04, $04 + dcb $03, $03, $03, $03, $03, $02, $02, $02, $02, $02 + dcb $01, $01, $01, $01, $01, $01, $00, $00, $00, $00 + dcb $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + dcb $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + dcb $00, $00, $00, $00, $00, $00, $00, $01, $01, $01 + dcb $01, $01, $01, $01, $02, $02, $02, $02, $02, $03 + dcb $03, $03, $03, $04, $04, $04, $04, $05, $05, $05 + dcb $05, $06, $06, $06, $07, $07, $07, $07, $08, $08 + dcb $08, $09, $09, $09, $0a, $0a, $0a, $0b, $0b, $0b + dcb $0c, $0c, $0c, $0d, $0d + + dcb $0e, $0e, $0e, $0f, $0f, $0f, $10, $10, $10, $11 + dcb $11, $11, $12, $12, $12, $13, $13, $13, $14, $14 + dcb $14, $14, $15, $15, $15, $16, $16, $16, $16, $17 + dcb $17, $17, $17, $18, $18, $18, $18, $19, $19, $19 + dcb $19, $19, $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1b + dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + dcb $1a, $1a, $1a, $1a, $1a, $1a, $19, $19, $19, $19 + +; 5x5 BYTES + +image: + dcb $0,$0,$0,$0,$0 + dcb $0,$c,$c,$c,$0 + dcb $0,$c,$1,$c,$0 + dcb $0,$c,$c,$c,$0 + dcb $0,$0,$0,$0,$0 + +; YPOS LOOKUP TABLE + +ypos: + dcb $00,$02,$20,$02,$40,$02,$60,$02 + dcb $80,$02,$a0,$02,$c0,$02,$e0,$02 + dcb $00,$03,$20,$03,$40,$03,$60,$03 + dcb $80,$03,$a0,$03,$c0,$03,$e0,$03 + dcb $00,$04,$20,$04,$40,$04,$60,$04 + dcb $80,$04,$a0,$04,$c0,$04,$e0,$04 + dcb $00,$05,$20,$05,$40,$05,$60,$05 + dcb $80,$05,$a0,$05,$c0,$05,$e0,$05 + |