From ab923d08719a0accd84a936fe234c54c758a9f19 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 16 Dec 2021 23:38:16 -0500 Subject: [PATCH] peasant: more work on ending have music play again also third part of trogdor speech --- games/peasant/ending.s | 41 ++++- games/peasant/parse_input.s | 2 +- games/peasant/trogdor_actions.s | 7 +- games/peasant/trogdor_speech.s | 302 ++++++++++++++++++++++++++++++++ 4 files changed, 341 insertions(+), 11 deletions(-) diff --git a/games/peasant/ending.s b/games/peasant/ending.s index 5c03b2e6..298627f4 100644 --- a/games/peasant/ending.s +++ b/games/peasant/ending.s @@ -29,26 +29,41 @@ ending: ;===================== ; re-start music ;===================== - ; need to un-do any patching - ; reset to beginning of song - ; and start interrupts ; only if mockingboard enabled lda SOUND_STATUS and #SOUND_MOCKINGBOARD beq skip_end_music + ; re-load intro theme from disk + + lda $C083 + lda $C083 + + ; actually load it + lda #LOAD_MUSIC + sta WHICH_LOAD + + jsr load_file + + lda #0 + sta DONE_PLAYING + + lda #1 + sta LOOP + + jsr mockingboard_init jsr reset_ay_both jsr mockingboard_setup_interrupt - lda #$09 ; don't end after 4 - sta PT3_LOC+$C9+$4 +; lda #$09 ; don't end after 4 +; sta PT3_LOC+$C9+$4 ; 2?? - lda #$3 ; set LOOP to 2 - sta PT3_LOC+$66 +; lda #$3 ; set LOOP to 2 +; sta PT3_LOC+$66 jsr pt3_init_song @@ -534,8 +549,18 @@ final_screen: jsr wait_until_keypress game_over: + ; stop music + lda SOUND_STATUS + and #SOUND_MOCKINGBOARD + beq stuck_forever - jmp boat + sei + + jsr clear_ay_both + + +stuck_forever: + jmp stuck_forever diff --git a/games/peasant/parse_input.s b/games/peasant/parse_input.s index 65c184f2..8bf78fcd 100644 --- a/games/peasant/parse_input.s +++ b/games/peasant/parse_input.s @@ -17,7 +17,7 @@ parse_input_file_begin: parse_input: ;=========================== - ; speacial case: pot on head + ; special case: pot on head lda GAME_STATE_1 and #POT_ON_HEAD diff --git a/games/peasant/trogdor_actions.s b/games/peasant/trogdor_actions.s index 34343c42..05948197 100644 --- a/games/peasant/trogdor_actions.s +++ b/games/peasant/trogdor_actions.s @@ -241,9 +241,9 @@ awake_talk_trogdor: ldy #>trogdor_surprised_message jsr finish_parse_message_nowait - lda #trogdor_honestly + lda #>trogdor_surprised sta SPEECH_PTRH jsr trogdor_talks @@ -438,6 +438,9 @@ game_over: ; go to end credits + lda #NEW_FROM_DISK + sta LEVEL_OVER + lda #LOAD_ENDING sta WHICH_LOAD diff --git a/games/peasant/trogdor_speech.s b/games/peasant/trogdor_speech.s index d3c38d31..7cb20e51 100644 --- a/games/peasant/trogdor_speech.s +++ b/games/peasant/trogdor_speech.s @@ -338,3 +338,305 @@ trogdor_sup: .byte PHONEME_PAUSE ; PA .byte $FF + + + + + ; "Yeah, I can't be killed." + ; "I'm surprised nobody" + ; "mentioned that to you. I'll" + ; "admit though, you've" + ; "gotten farther than" + ; "anybody else ever has. I" + ; "bet they'll make a statue" + ; "or something in honor of" + ; "you somewheres." + +trogdor_surprised: + + .byte PHONEME_Y ; Y Yeah, + .byte PHONEME_A ; AH + .byte PHONEME_UH ; EH + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA , + + .byte PHONEME_AH1 ; AH1 ; I + .byte PHONEME_Y ; Y + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_K ; K ; can't + .byte PHONEME_AE1 ; AE1 + .byte PHONEME_EH1 ; EH3 + .byte PHONEME_N ; N + .byte PHONEME_T ; T + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_B ; B ; be + .byte PHONEME_E1 ; E1 + .byte PHONEME_Y ; Y + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_K ; K ; killed + .byte PHONEME_I ; I + .byte PHONEME_L ; L + .byte PHONEME_D ; D + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA . + + .byte PHONEME_AH1 ; AH1 ; I'm + .byte PHONEME_Y ; Y + .byte PHONEME_Y ; M + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_S ; S surprised + .byte PHONEME_UH1 ; UH1 + .byte PHONEME_UH2 ; UH2 + .byte PHONEME_P ; P + .byte PHONEME_R ; R + .byte PHONEME_AH1 ; AH3 + .byte PHONEME_EH1 ; EH3 + .byte PHONEME_Z ; Z + .byte PHONEME_D ; D + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_N ; N nobody + .byte PHONEME_OO ; OO1 + .byte PHONEME_OU ; O1 + .byte PHONEME_B ; B + .byte PHONEME_UH1 ; UH1 + .byte PHONEME_D ; D + .byte PHONEME_Y ; Y + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_M ; M mentioned + .byte PHONEME_EH ; EH1 + .byte PHONEME_EH1 ; EH3 + .byte PHONEME_N ; N + .byte PHONEME_SCH ; SCH + .byte PHONEME_UH1 ; UH1 + .byte PHONEME_N ; N + .byte PHONEME_D ; D + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_THV ; THV ; that + .byte PHONEME_AE1 ; AE1 + .byte PHONEME_EH ; EH3 + .byte PHONEME_T ; T + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_T ; T ; to + .byte PHONEME_IU ; IU + .byte PHONEME_U1 ; U1 + .byte PHONEME_U1 ; U1 + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_Y ; Y ; you + .byte PHONEME_IU ; IU + .byte PHONEME_U1 ; U1 + .byte PHONEME_U1 ; U1 + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_PAUSE ; PA ; . + .byte PHONEME_PAUSE ; PA ; . + + .byte PHONEME_AH1 ; AH1 ; I'll + .byte PHONEME_Y ; Y + .byte PHONEME_UH ; UH + .byte PHONEME_L ; L + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_AE1 ; AE1 ; admit + .byte PHONEME_EH ; EH3 + .byte PHONEME_D ; D + .byte PHONEME_M ; M + .byte PHONEME_I ; I + .byte PHONEME_T ; T + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_AE1 ; TH ; though +; .byte PHONEME_OO ; OO1 + .byte PHONEME_OU ; O1 + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA ; , + + .byte PHONEME_Y ; Y ; you've + .byte PHONEME_IU ; IU + .byte PHONEME_U1 ; U1 + .byte PHONEME_U1 ; U1 + .byte PHONEME_V ; V + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_KV ; KV ; gotten + .byte PHONEME_AH ; AH1 + .byte PHONEME_T ; T + .byte PHONEME_EH ; EH + .byte PHONEME_N ; N + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_F ; F ; farther + .byte PHONEME_AH ; AH1 + .byte PHONEME_UH3 ; UH3 + .byte PHONEME_R ; R + .byte PHONEME_TH ; TH + .byte PHONEME_ER ; ER + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_TH ; TH ; than + .byte PHONEME_EH1 ; EH1 +; .byte PHONEME_EH3 ; EH3 + .byte PHONEME_N ; N + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_EH ; EH2 ; anybody + .byte PHONEME_EH ; EH2 + .byte PHONEME_N ; N + .byte PHONEME_Y ; Y + .byte PHONEME_B ; B + .byte PHONEME_AH1 ; AH1 + .byte PHONEME_D ; D + .byte PHONEME_Y ; Y + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_EH1 ; EH1 ; else + .byte PHONEME_EH ; EH2 + .byte PHONEME_L ; L + .byte PHONEME_S ; S + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_EH1 ; EH1 ; ever + .byte PHONEME_V ; V + .byte PHONEME_EH1 ; EH1 + .byte PHONEME_R ; R + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_HF ; H ; has + .byte PHONEME_AE1 ; AE1 + .byte PHONEME_EH ; EH3 + .byte PHONEME_Z ; Z + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA ; . + + .byte PHONEME_AH1 ; AH1 ; I + .byte PHONEME_Y ; Y + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_B ; B ; bet + .byte PHONEME_EH1 ; EH1 + .byte PHONEME_EH ; EH3 + .byte PHONEME_T ; T + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_TH ; TH ; they'll + .byte PHONEME_AI ; AI + .byte PHONEME_Y ; Y + .byte PHONEME_L ; L + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_M ; M ; make + .byte PHONEME_AI ; AI + .byte PHONEME_K ; K + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_UH ; UH ; a + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_S ; S ; statue + .byte PHONEME_T ; T + .byte PHONEME_AE1 ; AE1 + .byte PHONEME_T ; T + .byte PHONEME_SCH ; SCH + .byte PHONEME_IU ; IU + .byte PHONEME_U1 ; U1 + .byte PHONEME_U1 ; U1 + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_UH ; O1 ; or + .byte PHONEME_R ; R + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_S ; S ; something + .byte PHONEME_UH1 ; UH1 + .byte PHONEME_UH2 ; UH2 + .byte PHONEME_M ; M + .byte PHONEME_TH ; TH + .byte PHONEME_I ; I + .byte PHONEME_NG ; NG + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_I ; I1 ; in + .byte PHONEME_N ; N + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_AH ; AH ; honor + .byte PHONEME_N ; N + .byte PHONEME_UH ; O1 + .byte PHONEME_R ; R + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_UH1 ; UH1 ; of + .byte PHONEME_UH3 ; UH3 + .byte PHONEME_V ; V + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_Y ; Y ; you + .byte PHONEME_IU ; IU + .byte PHONEME_U1 ; U1 + .byte PHONEME_U1 ; U1 + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_S ; S ; somewheres + .byte PHONEME_UH1 ; UH1 + .byte PHONEME_UH2 ; UH2 + .byte PHONEME_M ; M + .byte PHONEME_W ; W + .byte PHONEME_EH ; EH3 + .byte PHONEME_A ; A2 + .byte PHONEME_EH ; EH3 + .byte PHONEME_R ; R + .byte PHONEME_Z ; Z + .byte PHONEME_PAUSE ; PA + .byte PHONEME_PAUSE ; PA + + .byte PHONEME_PAUSE ; PA . + + + .byte $FF