peasant: add in shield sprites

This commit is contained in:
Vince Weaver 2024-10-20 18:53:46 -04:00
parent ecfa7b5b72
commit 0951db5405
8 changed files with 372 additions and 1 deletions

94
demos/driven/irq_wait.s Normal file
View File

@ -0,0 +1,94 @@
;============================
; wait for music pattern
; also check for keypress
;============================
; pattern # in A
wait_for_pattern:
cmp current_pattern_smc+1
bcc done_check_pattern_done ; blt
beq done_check_pattern_done ; ble
lda KEYPRESS
bpl done_check_pattern_notdone
bit KEYRESET
jmp done_check_pattern_done
;============================
; setup timeout of A seconds
;============================
setup_timeout:
sta SECOND_COUNTDOWN
lda #0
sta IRQ_COUNTDOWN
rts
;===========================
; countodown second timeout
; also check for keypress
;===========================
; carry set = done
check_timeout:
; check keyboard first
lda KEYPRESS
bpl timeout_not_keypress
bit KEYRESET
; lda #0 ; reset, is this necessary?
; sta IRQ_COUNTDOWN
; sta SECOND_COUNTDOWN
jmp done_check_timeout_done
timeout_not_keypress:
lda IRQ_COUNTDOWN
bne done_check_timeout_notdone
irq_countdown_zero:
lda SECOND_COUNTDOWN
beq done_check_timeout_done
; otherwise we need to decrement and update
dec SECOND_COUNTDOWN
lda #50
sta IRQ_COUNTDOWN
done_check_pattern_notdone:
done_check_timeout_notdone:
clc
rts
done_check_pattern_done:
done_check_timeout_done:
sec
rts
;==========================
; busy wait A * 1 50Hz tick
;==========================
wait_ticks:
sta IRQ_COUNTDOWN
wait_tick_loop:
lda IRQ_COUNTDOWN
bne wait_tick_loop
wait_tick_done:
rts
;====================
; busy wait A seconds
;====================
; exit early if key pressed
wait_seconds:
tax
wait_seconds_loop:
lda #50 ; wait 1s
jsr wait_ticks
lda KEYPRESS
bmi wait_seconds_done
dex
bpl wait_seconds_loop
wait_seconds_done:
bit KEYRESET
rts

View File

@ -0,0 +1,33 @@
include ../../../Makefile.inc
DOS33 = ../../../utils/dos33fs-utils/dos33
DOS33_RAW = ../../../utils/dos33fs-utils/dos33_raw
EMPTY_DISK = ../../../empty_disk/empty.dsk
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
LINKER_SCRIPTS = ../../../linker_scripts/
all: INTRO
####
INTRO: intro.o
ld65 -o INTRO intro.o -C $(LINKER_SCRIPTS)/apple2_8000.inc
intro.o: intro.s \
../zx02_optim.s \
../zp.inc ../hardware.inc ../qload.inc \
graphics/desire.hgr.zx02
ca65 -o intro.o intro.s -l intro.lst
###
graphics/intro2.hgr.zx02:
cd graphics && make
###
clean:
rm -f *~ *.o *.lst INTRO
cd graphics && make clean

View File

@ -0,0 +1,21 @@
include ../../../../Makefile.inc
ZX02 = ~/research/6502_compression/zx02.git/build/zx02
PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr
PNG2GR = ../../../../utils/gr-utils/png2gr
all: desire.hgr.zx02
####
desire.hgr: desire-cyan-steffest.png
$(PNG_TO_HGR) desire-cyan-steffest.png > desire.hgr
desire.hgr.zx02: desire.hgr
$(ZX02) desire.hgr desire.hgr.zx02
####
clean:
rm -f *~ *.zx02 *.hgr

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,71 @@
; Round Desire Logo
;
; by deater (Vince Weaver) <vince@deater.net>
.include "../zp.inc"
.include "../hardware.inc"
.include "../qload.inc"
.include "../music.inc"
mod7_table = $1c00
div7_table = $1d00
hposn_low = $1e00
hposn_high = $1f00
desire_start:
;=====================
; initializations
;=====================
;===================
; Load graphics
;===================
load_loop:
; already in hires when we come in?
bit KEYRESET
bit SET_GR
bit HIRES
bit FULLGR
; bit PAGE1
; lda #0
; jsr hgr_page1_clearscreen
; jsr hgr_page2_clearscreen
; bit PAGE2 ; look at page2
; load image $2000
lda #<polar_data
sta zx_src_l+1
lda #>polar_data
sta zx_src_h+1
lda #$20
jsr zx02_full_decomp
polar_loop:
lda #8
jsr wait_seconds
polar_done:
rts
; .include "../wait_keypress.s"
; .include "../zx02_optim.s"
; .include "../hgr_clear_screen.s"
; .include "../hgr_copy_fast.s"
.include "../irq_wait.s"
; .include "../hgr_page_flip.s"
polar_data:
.incbin "graphics/desire.hgr.zx02"

View File

@ -6,7 +6,8 @@ all: walk_sprites.inc climb_flame_sprites.inc \
climb_sprites.inc robe_sprites.inc flame_sprites.inc \
walking_sprites.zx02 \
climbing_sprites.zx02 \
robe_sprites.zx02 robe_sprites_orange.zx02 robe_sprites_purple.zx02
robe_sprites.zx02 robe_sprites_orange.zx02 robe_sprites_purple.zx02 \
robe_shield_sprites.zx02
####
@ -47,6 +48,19 @@ robe_sprites.o: robe_sprites.s \
####
robe_shield_sprites.zx02: robe_shield_sprites
$(ZX02) -f robe_shield_sprites robe_shield_sprites.zx02
robe_shield_sprites: robe_shield_sprites.o
ld65 -o robe_shield_sprites robe_shield_sprites.o -C $(LINKER_SCRIPTS)/apple2_a000.inc
robe_shield_sprites.o: robe_shield_sprites.s \
flame_sprites.inc robe_shield_sprites.inc
ca65 -o robe_shield_sprites.o robe_shield_sprites.s -l robe_shield_sprites.lst
####
robe_sprites_purple.zx02: robe_sprites_purple
$(ZX02) -f robe_sprites_purple robe_sprites_purple.zx02
@ -157,6 +171,57 @@ robe_sprites.inc: robe_sprites.png
$(HGR_SPRITE) -l robe_d5_sprite robe_sprites.png 266 128 279 158 >> robe_sprites.inc
$(HGR_SPRITE) -l robe_d5_mask robe_sprites.png 266 159 279 189 >> robe_sprites.inc
robe_shield_sprites.inc: robe_shield_sprites.png
$(HGR_SPRITE) -l robe_r0_sprite robe_shield_sprites.png 14 32 27 62 > robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r0_mask robe_shield_sprites.png 14 63 27 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r1_sprite robe_shield_sprites.png 42 32 53 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r1_mask robe_shield_sprites.png 42 63 53 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r2_sprite robe_shield_sprites.png 70 32 83 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r2_mask robe_shield_sprites.png 70 63 83 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r3_sprite robe_shield_sprites.png 98 32 111 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r3_mask robe_shield_sprites.png 98 63 111 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r4_sprite robe_shield_sprites.png 126 32 139 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r4_mask robe_shield_sprites.png 126 63 139 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r5_sprite robe_shield_sprites.png 154 32 167 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_r5_mask robe_shield_sprites.png 154 63 167 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l0_sprite robe_shield_sprites.png 14 128 27 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l0_mask robe_shield_sprites.png 14 159 27 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l1_sprite robe_shield_sprites.png 42 128 53 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l1_mask robe_shield_sprites.png 42 159 53 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l2_sprite robe_shield_sprites.png 70 128 83 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l2_mask robe_shield_sprites.png 70 159 83 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l3_sprite robe_shield_sprites.png 98 128 111 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l3_mask robe_shield_sprites.png 98 159 111 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l4_sprite robe_shield_sprites.png 126 128 139 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l4_mask robe_shield_sprites.png 126 159 139 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l5_sprite robe_shield_sprites.png 154 128 167 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_l5_mask robe_shield_sprites.png 154 159 167 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u0_sprite robe_shield_sprites.png 182 1 195 31 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u0_mask robe_shield_sprites.png 183 32 195 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u1_sprite robe_shield_sprites.png 210 1 221 31 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u1_mask robe_shield_sprites.png 210 32 223 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u2_sprite robe_shield_sprites.png 238 1 251 31 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u2_mask robe_shield_sprites.png 238 32 251 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u3_sprite robe_shield_sprites.png 266 1 279 31 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u3_mask robe_shield_sprites.png 266 32 279 62 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u4_sprite robe_shield_sprites.png 182 63 195 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u4_mask robe_shield_sprites.png 182 94 195 124 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u5_sprite robe_shield_sprites.png 210 63 223 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_u5_mask robe_shield_sprites.png 210 94 223 124 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d0_sprite robe_shield_sprites.png 238 63 251 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d0_mask robe_shield_sprites.png 238 94 251 124 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d1_sprite robe_shield_sprites.png 266 63 279 93 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d1_mask robe_shield_sprites.png 266 94 279 124 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d2_sprite robe_shield_sprites.png 182 128 195 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d2_mask robe_shield_sprites.png 182 159 195 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d3_sprite robe_shield_sprites.png 210 128 223 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d3_mask robe_shield_sprites.png 210 159 223 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d4_sprite robe_shield_sprites.png 238 128 251 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d4_mask robe_shield_sprites.png 238 159 251 189 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d5_sprite robe_shield_sprites.png 266 128 279 158 >> robe_shield_sprites.inc
$(HGR_SPRITE) -l robe_d5_mask robe_shield_sprites.png 266 159 279 189 >> robe_shield_sprites.inc
robe_sprites_purple.inc: robe_sprites_purple.png
$(HGR_SPRITE) -l robe_r0_sprite robe_sprites_purple.png 14 32 27 62 > robe_sprites_purple.inc
$(HGR_SPRITE) -l robe_r0_mask robe_sprites_purple.png 14 63 27 93 >> robe_sprites_purple.inc

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,87 @@
robe_sprites_xsize:
.byte 2, 2, 2, 2, 2, 2 ; right ; 0
.byte 2, 2, 2, 2, 2, 2 ; left ; 6
.byte 2, 2, 2, 2, 2, 2 ; up ; 12
.byte 2, 2, 2, 2, 2, 2 ; down ; 18
flame_sprites_xsize:
.byte 2, 2, 2 ; right ; 24
.byte 2, 2, 2 ; left ; 27
.byte 2, 2, 2 ; up ; 30
.byte 2, 2, 2 ; down ; 33
robe_sprites_ysize:
.byte 30, 30, 30, 30, 30, 30 ; right
.byte 30, 30, 30, 30, 30, 30 ; left
.byte 30, 30, 30, 30, 30, 30 ; up
.byte 30, 30, 30, 30, 30, 30 ; down
flame_sprites_ysize:
.byte 9, 9, 9 ; right
.byte 9, 9, 9 ; left
.byte 9, 9, 9 ; up
.byte 9, 9, 9 ; down
robe_sprites_data_l:
.byte <robe_r0_sprite,<robe_r1_sprite,<robe_r2_sprite
.byte <robe_r3_sprite,<robe_r4_sprite,<robe_r5_sprite
.byte <robe_l0_sprite,<robe_l1_sprite,<robe_l2_sprite
.byte <robe_l3_sprite,<robe_l4_sprite,<robe_l5_sprite
.byte <robe_u0_sprite,<robe_u1_sprite,<robe_u2_sprite
.byte <robe_u3_sprite,<robe_u4_sprite,<robe_u5_sprite
.byte <robe_d0_sprite,<robe_d1_sprite,<robe_d2_sprite
.byte <robe_d3_sprite,<robe_d4_sprite,<robe_d5_sprite
flame_sprites_data_l:
.byte <flame_r0_sprite,<flame_r1_sprite,<flame_r2_sprite
.byte <flame_l0_sprite,<flame_l1_sprite,<flame_l2_sprite
.byte <flame_u0_sprite,<flame_u1_sprite,<flame_u2_sprite
.byte <flame_d0_sprite,<flame_d1_sprite,<flame_d2_sprite
robe_sprites_data_h:
.byte >robe_r0_sprite,>robe_r1_sprite,>robe_r2_sprite
.byte >robe_r3_sprite,>robe_r4_sprite,>robe_r5_sprite
.byte >robe_l0_sprite,>robe_l1_sprite,>robe_l2_sprite
.byte >robe_l3_sprite,>robe_l4_sprite,>robe_l5_sprite
.byte >robe_u0_sprite,>robe_u1_sprite,>robe_u2_sprite
.byte >robe_u3_sprite,>robe_u4_sprite,>robe_u5_sprite
.byte >robe_d0_sprite,>robe_d1_sprite,>robe_d2_sprite
.byte >robe_d3_sprite,>robe_d4_sprite,>robe_d5_sprite
flame_sprites_data_h:
.byte >flame_r0_sprite,>flame_r1_sprite,>flame_r2_sprite
.byte >flame_l0_sprite,>flame_l1_sprite,>flame_l2_sprite
.byte >flame_u0_sprite,>flame_u1_sprite,>flame_u2_sprite
.byte >flame_d0_sprite,>flame_d1_sprite,>flame_d2_sprite
robe_mask_data_l:
.byte <robe_r0_mask,<robe_r1_mask,<robe_r2_mask
.byte <robe_r3_mask,<robe_r4_mask,<robe_r5_mask
.byte <robe_l0_mask,<robe_l1_mask,<robe_l2_mask
.byte <robe_l3_mask,<robe_l4_mask,<robe_l5_mask
.byte <robe_u0_mask,<robe_u1_mask,<robe_u2_mask
.byte <robe_u3_mask,<robe_u4_mask,<robe_u5_mask
.byte <robe_d0_mask,<robe_d1_mask,<robe_d2_mask
.byte <robe_d3_mask,<robe_d4_mask,<robe_d5_mask
flame_mask_data_l:
.byte <flame_r0_mask,<flame_r1_mask,<flame_r2_mask
.byte <flame_l0_mask,<flame_l1_mask,<flame_l2_mask
.byte <flame_u0_mask,<flame_u1_mask,<flame_u2_mask
.byte <flame_d0_mask,<flame_d1_mask,<flame_d2_mask
robe_mask_data_h:
.byte >robe_r0_mask,>robe_r1_mask,>robe_r2_mask
.byte >robe_r3_mask,>robe_r4_mask,>robe_r5_mask
.byte >robe_l0_mask,>robe_l1_mask,>robe_l2_mask
.byte >robe_l3_mask,>robe_l4_mask,>robe_l5_mask
.byte >robe_u0_mask,>robe_u1_mask,>robe_u2_mask
.byte >robe_u3_mask,>robe_u4_mask,>robe_u5_mask
.byte >robe_d0_mask,>robe_d1_mask,>robe_d2_mask
.byte >robe_d3_mask,>robe_d4_mask,>robe_d5_mask
flame_mask_data_h:
.byte >flame_r0_mask,>flame_r1_mask,>flame_r2_mask
.byte >flame_l0_mask,>flame_l1_mask,>flame_l2_mask
.byte >flame_u0_mask,>flame_u1_mask,>flame_u2_mask
.byte >flame_d0_mask,>flame_d1_mask,>flame_d2_mask
.include "robe_shield_sprites.inc"
.include "flame_sprites.inc"