ds: automate astronaut

This commit is contained in:
Vince Weaver 2019-11-05 12:35:47 -05:00
parent ad8e0e05c3
commit 245983b771
7 changed files with 91 additions and 20 deletions

View File

@ -54,7 +54,7 @@ demosplash.o: demosplash.s \
pt3_lib_play_frame.s pt3_lib_write_frame.s \ pt3_lib_play_frame.s pt3_lib_write_frame.s \
interrupt_handler.s \ interrupt_handler.s \
missing.s k_40_48d.inc create_update_type1.s \ missing.s k_40_48d.inc create_update_type1.s \
starbase.s \ starbase.s keyboard.s \
starbase_action.s starbase_laser.s starbase_blast.s \ starbase_action.s starbase_laser.s starbase_blast.s \
gr_run_sequence.s \ gr_run_sequence.s \
graphics/starbase/starbase.inc \ graphics/starbase/starbase.inc \

View File

@ -1,3 +1,8 @@
TODO if time:
+ better star animation
+ star fade in to book?
General: General:
+ get music working + get music working
@ -8,17 +13,14 @@ OPENER:
MISSING: MISSING:
+ Add colored bars for accent? + Add colored bars for accent?
PACKAGE: PACKAGE: 01234567890123456789012345678901234567
+ Implement + "MEANWHILE AT A DISTANT STARBASE PRISON"
"AN INTERESTING PACKAGE IS RECEIVED"
STARBASE: STARBASE:
+ Keyboard emulation + Keyboard emulation
+ change colors of shield? laser? blast? + change colors of shield? laser? blast?
+ room0 -- done + room0 -- done
+ room1 - run in + room1 - run in
- duck, start shield - duck, start shield
- blash shield, alien - blash shield, alien
@ -39,7 +41,7 @@ ESCAPE:
+ Keyboard emulation + Keyboard emulation
READING: READING:
+ Add message of some sort? + "FINALLY I CAN READ SOME BOOKS IN PEACE"
CREDITS: CREDITS:
+ implement text + implement text

View File

@ -282,8 +282,9 @@ astro_run_left9:
;===================== ;=====================
;===================== ;=====================
; note: he needs to be facing left by default ; note: she needs to be facing left by default
kick1: kick1:
.if 0
.byte 5,8 .byte 5,8
.byte $aa,$8a,$8a,$aa,$aa .byte $aa,$8a,$8a,$aa,$aa
.byte $aa,$bb,$88,$8a,$aa .byte $aa,$bb,$88,$8a,$aa
@ -293,6 +294,7 @@ kick1:
.byte $aa,$aa,$22,$aa,$aa .byte $aa,$aa,$22,$aa,$aa
.byte $aa,$22,$a2,$6a,$aa .byte $aa,$22,$a2,$6a,$aa
.byte $af,$f2,$5a,$56,$aa .byte $af,$f2,$5a,$56,$aa
.endif
;===================== ;=====================
;===================== ;=====================
@ -318,9 +320,10 @@ shooting1:
;===================== ;=====================
;===================== ;=====================
; note: he falls into a crouch ; note: she falls into a crouch
astro_falling: astro_falling:
.if 0
.byte 5,8 .byte 5,8
.byte $aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa
.byte $aa,$aa,$8a,$8a,$aa .byte $aa,$aa,$8a,$8a,$aa
@ -330,7 +333,7 @@ astro_falling:
.byte $aa,$aa,$aa,$22,$22 .byte $aa,$aa,$aa,$22,$22
.byte $6a,$26,$22,$a2,$aa .byte $6a,$26,$22,$a2,$aa
.byte $f5,$f2,$aa,$aa,$aa .byte $f5,$f2,$aa,$aa,$aa
.endif
;===================== ;=====================
@ -396,6 +399,7 @@ collapse_progression:
.word collapse5 ; 16 .word collapse5 ; 16
collapse1: collapse1:
.if 0
.byte 4,8 .byte 4,8
.byte $8a,$8a,$aa,$aa .byte $8a,$8a,$aa,$aa
.byte $ab,$88,$aa,$aa .byte $ab,$88,$aa,$aa
@ -405,9 +409,10 @@ collapse1:
.byte $aa,$22,$aa,$aa .byte $aa,$22,$aa,$aa
.byte $aa,$a2,$2a,$aa .byte $aa,$a2,$2a,$aa
.byte $aa,$fa,$f2,$aa .byte $aa,$fa,$f2,$aa
.endif
collapse2: collapse2:
.if 0
.byte 5,8 .byte 5,8
.byte $aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa
.byte $b8,$88,$aa,$aa,$aa .byte $b8,$88,$aa,$aa,$aa
@ -417,10 +422,11 @@ collapse2:
.byte $aa,$bb,$22,$2a,$aa .byte $aa,$bb,$22,$2a,$aa
.byte $aa,$ab,$aa,$a2,$2a .byte $aa,$ab,$aa,$a2,$2a
.byte $aa,$aa,$aa,$fa,$f2 .byte $aa,$aa,$aa,$fa,$f2
.endif
collapse3: collapse3:
.if 0
.byte 6,8 .byte 6,8
.byte $aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa
.byte $aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa
@ -430,8 +436,10 @@ collapse3:
.byte $aa,$bb,$22,$2a,$aa,$aa .byte $aa,$bb,$22,$2a,$aa,$aa
.byte $aa,$bb,$a2,$22,$22,$fa .byte $aa,$bb,$a2,$22,$22,$fa
.byte $aa,$ab,$aa,$aa,$a2,$ff .byte $aa,$ab,$aa,$aa,$a2,$ff
.endif
collapse4: collapse4:
.if 0
.byte 7,8 .byte 7,8
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa
@ -441,9 +449,10 @@ collapse4:
.byte $88,$bb,$22,$2a,$aa,$aa,$aa .byte $88,$bb,$22,$2a,$aa,$aa,$aa
.byte $aa,$aa,$bb,$22,$22,$2a,$fa .byte $aa,$aa,$bb,$22,$22,$2a,$fa
.byte $aa,$aa,$aa,$bb,$aa,$a2,$ff .byte $aa,$aa,$aa,$bb,$aa,$a2,$ff
.endif
collapse5: collapse5:
.if 0
.byte 8,8 .byte 8,8
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa
@ -453,7 +462,7 @@ collapse5:
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa
.byte $88,$b8,$22,$b2,$22,$bb,$2a,$aa .byte $88,$b8,$22,$b2,$22,$bb,$2a,$aa
.byte $a8,$ab,$aa,$aa,$bb,$b2,$22,$ff .byte $a8,$ab,$aa,$aa,$bb,$b2,$22,$ff
.endif
;===================== ;=====================
@ -571,12 +580,13 @@ jump8:
; 9x40 ; 9x40
astronaut_spike_sprite: astronaut_spike_sprite:
.if 0
.byte 3,4 .byte 3,4
.byte $AA,$11,$AA .byte $AA,$11,$AA
.byte $2A,$82,$2A .byte $2A,$82,$2A
.byte $BB,$A8,$BB .byte $BB,$A8,$BB
.byte $BB,$AA,$BB .byte $BB,$AA,$BB
.endif
;===================== ;=====================
@ -603,6 +613,7 @@ crouch_shooting:
;===================== ;=====================
crouch_kicking: crouch_kicking:
.if 0
.byte 5,8 .byte 5,8
.byte $AA,$AA,$aa,$aa,$aa .byte $AA,$AA,$aa,$aa,$aa
.byte $AA,$AA,$aa,$aa,$aa .byte $AA,$AA,$aa,$aa,$aa
@ -612,7 +623,7 @@ crouch_kicking:
.byte $AA,$AA,$aa,$bb,$22 .byte $AA,$AA,$aa,$bb,$22
.byte $AA,$AA,$2a,$bb,$a2 .byte $AA,$AA,$2a,$bb,$a2
.byte $5A,$56,$A2,$f2,$f2 .byte $5A,$56,$A2,$f2,$f2
.endif

View File

@ -30,11 +30,37 @@ handle_keypress:
lda ASTRONAUT_STATE lda ASTRONAUT_STATE
bmi no_keypress ; ignore keypress if dying/action bmi no_keypress ; ignore keypress if dying/action
dec KEY_COUNTDOWN
lda KEY_COUNTDOWN
bne done_keycount
ldy #0
lda (KEYPTRL),Y
pha
iny
lda (KEYPTRL),Y
sta KEY_COUNTDOWN
clc
lda KEYPTRL
adc #2
sta KEYPTRL
lda #0
adc KEYPTRH
sta KEYPTRH
pla ; restore keypress
jmp keypress
.if 0
lda KEYPRESS ; 4 lda KEYPRESS ; 4
bmi keypress ; 3 bmi keypress ; 3
.endif
no_keypress: no_keypress:
bit KEYRESET ; clear bit KEYRESET ; clear
; avoid keeping old keys around ; avoid keeping old keys around
done_keycount:
rts ; nothing pressed, return rts ; nothing pressed, return
keypress: keypress:
@ -420,3 +446,23 @@ change_state_clear_gait:
lda #0 lda #0
sta GAIT sta GAIT
jmp done_keypress jmp done_keypress
starbase_keypresses:
.byte 'L',180 ; start charging laser
.byte 'L',1 ; release, blasting door
.byte 'D',200 ; walk right
.byte 'D',50 ; walk right ; into door
.byte 'A',1 ; walk right ; turn
.byte 'A',50 ; walk right ; walk left
.byte 'D',1 ; stop
.byte 'D',1 ; turn right
.byte 'S',20 ; duck
.byte 'L',180 ; start charging
.byte 'L',20 ; shoot
.byte 'D',1 ; stand
.byte 'D',150 ; walk right
.byte 'S',20 ; duck
.byte 27,5 ; quit

View File

@ -4,6 +4,13 @@ starbase:
; Initialize some variables ; Initialize some variables
lda #<starbase_keypresses
sta KEYPTRL
lda #>starbase_keypresses
sta KEYPTRH
lda #1
sta KEY_COUNTDOWN
;======================= ;=======================
; Run the "intro" ; Run the "intro"
;======================= ;=======================

View File

@ -513,9 +513,8 @@ c4_room0_cover:
lda #>causeway_door_cover lda #>causeway_door_cover
sta INH sta INH
jsr put_sprite ; jsr put_sprite
; jmp c4_no_fg_cover
c4_no_fg_cover: c4_no_fg_cover:
@ -906,5 +905,8 @@ star_sequence:
.word star_wipe5_rle .word star_wipe5_rle
.byte 20 .byte 20
.word empty_rle .word empty_rle
.byte 20
.word empty_rle
.byte 0 .byte 0

View File

@ -104,6 +104,9 @@ DONE_PLAYING = $88
DONE_SONG = $89 DONE_SONG = $89
PT3_TEMP = $8A PT3_TEMP = $8A
KEYPTRL = $90
KEYPTRH = $91
KEY_COUNTDOWN = $92
; More zero-page addresses ; More zero-page addresses
; we try not to conflict with anything DOS, MONITOR or BASIC related ; we try not to conflict with anything DOS, MONITOR or BASIC related