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 \
interrupt_handler.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 \
gr_run_sequence.s \
graphics/starbase/starbase.inc \

View File

@ -1,3 +1,8 @@
TODO if time:
+ better star animation
+ star fade in to book?
General:
+ get music working
@ -8,17 +13,14 @@ OPENER:
MISSING:
+ Add colored bars for accent?
PACKAGE:
+ Implement
PACKAGE: 01234567890123456789012345678901234567
+ "MEANWHILE AT A DISTANT STARBASE PRISON"
"AN INTERESTING PACKAGE IS RECEIVED"
STARBASE:
+ Keyboard emulation
+ change colors of shield? laser? blast?
+ room0 -- done
+ room1 - run in
- duck, start shield
- blash shield, alien
@ -39,7 +41,7 @@ ESCAPE:
+ Keyboard emulation
READING:
+ Add message of some sort?
+ "FINALLY I CAN READ SOME BOOKS IN PEACE"
CREDITS:
+ 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:
.if 0
.byte 5,8
.byte $aa,$8a,$8a,$aa,$aa
.byte $aa,$bb,$88,$8a,$aa
@ -293,6 +294,7 @@ kick1:
.byte $aa,$aa,$22,$aa,$aa
.byte $aa,$22,$a2,$6a,$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:
.if 0
.byte 5,8
.byte $aa,$aa,$aa,$aa,$aa
.byte $aa,$aa,$8a,$8a,$aa
@ -330,7 +333,7 @@ astro_falling:
.byte $aa,$aa,$aa,$22,$22
.byte $6a,$26,$22,$a2,$aa
.byte $f5,$f2,$aa,$aa,$aa
.endif
;=====================
@ -396,6 +399,7 @@ collapse_progression:
.word collapse5 ; 16
collapse1:
.if 0
.byte 4,8
.byte $8a,$8a,$aa,$aa
.byte $ab,$88,$aa,$aa
@ -405,9 +409,10 @@ collapse1:
.byte $aa,$22,$aa,$aa
.byte $aa,$a2,$2a,$aa
.byte $aa,$fa,$f2,$aa
.endif
collapse2:
.if 0
.byte 5,8
.byte $aa,$aa,$aa,$aa,$aa
.byte $b8,$88,$aa,$aa,$aa
@ -417,10 +422,11 @@ collapse2:
.byte $aa,$bb,$22,$2a,$aa
.byte $aa,$ab,$aa,$a2,$2a
.byte $aa,$aa,$aa,$fa,$f2
.endif
collapse3:
.if 0
.byte 6,8
.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,$a2,$22,$22,$fa
.byte $aa,$ab,$aa,$aa,$a2,$ff
.endif
collapse4:
.if 0
.byte 7,8
.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 $aa,$aa,$bb,$22,$22,$2a,$fa
.byte $aa,$aa,$aa,$bb,$aa,$a2,$ff
.endif
collapse5:
.if 0
.byte 8,8
.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 $88,$b8,$22,$b2,$22,$bb,$2a,$aa
.byte $a8,$ab,$aa,$aa,$bb,$b2,$22,$ff
.endif
;=====================
@ -571,12 +580,13 @@ jump8:
; 9x40
astronaut_spike_sprite:
.if 0
.byte 3,4
.byte $AA,$11,$AA
.byte $2A,$82,$2A
.byte $BB,$A8,$BB
.byte $BB,$AA,$BB
.endif
;=====================
@ -603,6 +613,7 @@ crouch_shooting:
;=====================
crouch_kicking:
.if 0
.byte 5,8
.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,$2a,$bb,$a2
.byte $5A,$56,$A2,$f2,$f2
.endif

View File

@ -30,11 +30,37 @@ handle_keypress:
lda ASTRONAUT_STATE
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
bmi keypress ; 3
.endif
no_keypress:
bit KEYRESET ; clear
; avoid keeping old keys around
done_keycount:
rts ; nothing pressed, return
keypress:
@ -420,3 +446,23 @@ change_state_clear_gait:
lda #0
sta GAIT
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
lda #<starbase_keypresses
sta KEYPTRL
lda #>starbase_keypresses
sta KEYPTRH
lda #1
sta KEY_COUNTDOWN
;=======================
; Run the "intro"
;=======================

View File

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

View File

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