diff --git a/demosplash/Makefile b/demosplash/Makefile index 5ac55e18..e67504d2 100644 --- a/demosplash/Makefile +++ b/demosplash/Makefile @@ -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 \ diff --git a/demosplash/TODO b/demosplash/TODO index 572f1a75..e66e6b5a 100644 --- a/demosplash/TODO +++ b/demosplash/TODO @@ -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 diff --git a/demosplash/graphics/sprites/astronaut.inc b/demosplash/graphics/sprites/astronaut.inc index 77321274..fad5449a 100644 --- a/demosplash/graphics/sprites/astronaut.inc +++ b/demosplash/graphics/sprites/astronaut.inc @@ -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 diff --git a/demosplash/keyboard.s b/demosplash/keyboard.s index 73ee8779..a9f8760c 100644 --- a/demosplash/keyboard.s +++ b/demosplash/keyboard.s @@ -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 + diff --git a/demosplash/starbase.s b/demosplash/starbase.s index 8d788e8d..7231dab2 100644 --- a/demosplash/starbase.s +++ b/demosplash/starbase.s @@ -4,6 +4,13 @@ starbase: ; Initialize some variables + lda #starbase_keypresses + sta KEYPTRH + lda #1 + sta KEY_COUNTDOWN + ;======================= ; Run the "intro" ;======================= diff --git a/demosplash/starbase_action.s b/demosplash/starbase_action.s index 9bbbcb9d..ae37989a 100644 --- a/demosplash/starbase_action.s +++ b/demosplash/starbase_action.s @@ -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 + + diff --git a/demosplash/zp.inc b/demosplash/zp.inc index 41d492bb..63b85a98 100644 --- a/demosplash/zp.inc +++ b/demosplash/zp.inc @@ -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