dos33fsprogs/games/peasant/hgr_sprite.s

87 lines
1.2 KiB
ArmAsm
Raw Normal View History

2021-09-17 02:51:55 +00:00
;===========================================
; hgr draw sprite (only at 7-bit boundaries)
;===========================================
2021-09-15 20:32:43 +00:00
; SPRITE in INL/INH
; Location at CURSOR_X CURSOR_Y
2021-09-17 02:51:55 +00:00
; xsize, ysize in first two bytes
2021-09-15 20:32:43 +00:00
; sprite AT INL/INH
2021-09-17 02:51:55 +00:00
hgr_draw_sprite:
2021-10-05 12:46:18 +00:00
2021-09-17 02:51:55 +00:00
ldy #0
2021-10-05 12:46:18 +00:00
lda (INL),Y ; load xsize
2021-09-17 02:51:55 +00:00
clc
adc CURSOR_X
2021-10-05 12:46:18 +00:00
sta sprite_width_end_smc+1 ; self modify for end of line
2021-09-17 02:51:55 +00:00
2021-10-05 12:46:18 +00:00
iny ; load ysize
2021-09-17 02:51:55 +00:00
lda (INL),Y
2021-10-05 12:46:18 +00:00
sta sprite_ysize_smc+1 ; self modify
2021-09-15 20:32:43 +00:00
2021-10-05 12:46:18 +00:00
; skip the xsize/ysize and point to sprite
2021-09-17 02:51:55 +00:00
clc
2021-10-05 12:46:18 +00:00
lda INL ; 16-bit add
2021-09-17 02:51:55 +00:00
adc #2
2021-10-05 12:46:18 +00:00
sta sprite_smc1+1
2021-09-15 20:32:43 +00:00
lda INH
2021-09-17 02:51:55 +00:00
adc #0
2021-10-05 12:46:18 +00:00
sta sprite_smc1+2
2021-09-15 20:32:43 +00:00
ldx #0 ; X is pointer offset
2021-10-05 12:46:18 +00:00
stx MASK ; actual row
2021-09-15 20:32:43 +00:00
2021-10-05 12:46:18 +00:00
hgr_sprite_yloop:
2021-09-15 20:32:43 +00:00
lda MASK ; row
clc
adc CURSOR_Y ; add in cursor_y
; calc GBASL/GBASH
tay ; get output ROW into GBASL/H
lda hposn_low,Y
sta GBASL
lda hposn_high,Y
2022-01-07 19:19:15 +00:00
; eor #$00 draws on page2
; eor #$60 draws on page1
hgr_sprite_page_smc:
eor #$00
2021-09-15 20:32:43 +00:00
sta GBASH
ldy CURSOR_X
2021-10-05 12:46:18 +00:00
sprite_inner_loop:
2021-09-15 20:32:43 +00:00
2021-10-05 12:46:18 +00:00
sprite_smc1:
2021-09-17 02:51:55 +00:00
lda $d000 ; get sprite pattern
2021-09-15 20:32:43 +00:00
sta (GBASL),Y ; store out
inx
iny
2021-09-17 02:51:55 +00:00
2021-10-05 12:46:18 +00:00
inc sprite_smc1+1
bne sprite_noflo
inc sprite_smc1+2
sprite_noflo:
2021-09-17 02:51:55 +00:00
2021-10-05 12:46:18 +00:00
sprite_width_end_smc:
2021-09-15 20:32:43 +00:00
cpy #6
2021-10-05 12:46:18 +00:00
bne sprite_inner_loop
2021-09-15 20:32:43 +00:00
inc MASK ; row
lda MASK ; row
2021-10-05 12:46:18 +00:00
sprite_ysize_smc:
2021-09-15 20:32:43 +00:00
cmp #31
2021-10-05 12:46:18 +00:00
bne hgr_sprite_yloop
2021-09-15 20:32:43 +00:00
rts