ssi-263: myst intro voiceover

This commit is contained in:
Vince Weaver 2021-09-15 13:10:24 -04:00
parent ae23580743
commit 444d949181
2 changed files with 372 additions and 2 deletions

View File

@ -6,11 +6,12 @@ EMPTY_DISK = ../../empty_disk/empty.dsk
all: speech.dsk
speech.dsk: HELLO SSI263_TEST TROGDOR
speech.dsk: HELLO SSI263_TEST TROGDOR MYST
cp $(EMPTY_DISK) speech.dsk
$(DOS33) -y speech.dsk SAVE A HELLO
$(DOS33) -y speech.dsk BSAVE -a 0x1000 SSI263_TEST
$(DOS33) -y speech.dsk BSAVE -a 0x1000 TROGDOR
$(DOS33) -y speech.dsk BSAVE -a 0x1000 MYST
###
@ -28,6 +29,14 @@ TROGDOR: trogdor.o
trogdor.o: trogdor.s ssi263.inc ssi263_detect.s ssi263_simple_speech.s
ca65 -o trogdor.o trogdor.s -l trogdor.lst
###
MYST: myst.o
ld65 -o MYST myst.o -C ../../linker_scripts/apple2_1000.inc
myst.o: myst.s ssi263.inc ssi263_detect.s ssi263_simple_speech.s
ca65 -o myst.o myst.s -l myst.lst
###
@ -38,6 +47,6 @@ HELLO: hello.bas
####
clean:
rm -f *~ *.o *.lst HELLO SSI263_TEST TROGDOR
rm -f *~ *.o *.lst HELLO SSI263_TEST TROGDOR MYST

361
music/ssi-263/myst.s Normal file
View File

@ -0,0 +1,361 @@
;
; myst.s
;
; Getting text-to-speech on a ssi-263 equipped mockigboard
; for Myst?
.include "hardware.inc"
.include "ssi263.inc"
speech_test:
jsr HOME
lda #4 ; assume slot #4 for now
jsr detect_ssi263
lda irq_count
clc
adc #'A' ; hack to show if detected or not
sta $400 ; (B is detected, A is not)
lda #4 ; assume slot #4 for now
jsr ssi263_speech_init
speech_loop:
; myst
lda #<myst_fissure
sta SPEECH_PTRL
lda #>myst_fissure
sta SPEECH_PTRH
jsr ssi263_speak
jsr wait_until_keypress
jmp speech_loop
wait_until_keypress:
lda KEYPRESS
bpl wait_until_keypress
bit KEYRESET
rts
.include "ssi263_detect.s"
.include "ssi263_simple_speech.s"
; the document
; "Phonetic Speech Dictionary for the SC-01 Speech Synthesizer"
; sc01-dictionary.pdf
; was very helpful here
myst_fissure:
; "I REALIZED, THE MOMENT I FELL INTO THE"
; "FISSURE, THAT THE BOOK WOULD NOT BE"
; "DESTROYED AS I HAD PLANNED."
.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_R ; R ; realized
.byte PHONEME_E1 ; E1
.byte PHONEME_AY ; AY
.byte PHONEME_L ; L
.byte PHONEME_AH1 ; AH1
.byte PHONEME_Y ; Y
.byte PHONEME_Z ; Z
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA ; ,
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_THV ; THV ; the
.byte PHONEME_UH1 ; UH1
.byte PHONEME_UH3 ; UH3
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_M ; M ; moment
.byte PHONEME_O ; O1
.byte PHONEME_M ; M
.byte PHONEME_EH1 ; EH3
.byte PHONEME_N ; N
.byte PHONEME_T ; T
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_AH1 ; AH1 ; I
.byte PHONEME_Y ; Y
.byte PHONEME_Y ; Y
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_F ; F ; fell
.byte PHONEME_EH1 ; EH1
.byte PHONEME_L ; L
.byte PHONEME_L ; L
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_I ; I1/I3 ; into
.byte PHONEME_N ; N
.byte PHONEME_T ; T
.byte PHONEME_IU ; IU
.byte PHONEME_IU ; UI/UI
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_THV ; THV ; the
.byte PHONEME_UH1 ; UH1
.byte PHONEME_UH3 ; UH3
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_F ; F ; fissure
.byte PHONEME_I ; I
.byte PHONEME_Z ; Z
.byte PHONEME_SCH ; SCH
.byte PHONEME_ER ; ER
.byte PHONEME_PAUSE ; PA ; ,
.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_THV ; THV ; the
.byte PHONEME_UH1 ; UH1
.byte PHONEME_UH3 ; UH3
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_B ; B ; book
.byte PHONEME_OO ; OO1
.byte PHONEME_OO ; OO1
.byte PHONEME_OO ; OO1
.byte PHONEME_K ; K
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_W ; W ; would
.byte PHONEME_IU1 ; IU1
.byte PHONEME_L ; L
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_N ; N ; not
.byte PHONEME_AH1 ; AH1
.byte PHONEME_UH3 ; UH3
.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_Y ; Y
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_B ; B ; burninated
.byte PHONEME_ER ; ER
.byte PHONEME_R ; R
.byte PHONEME_N ; N
.byte PHONEME_I ; I
.byte PHONEME_N ; N
.byte PHONEME_A ; A
.byte PHONEME_A ; A
.byte PHONEME_Y ; Y
.byte PHONEME_T ; T
.byte PHONEME_EH1 ; EH1
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_AE1 ; AE1 ; as
.byte PHONEME_EH1 ; EH3
.byte PHONEME_Z ; Z
.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_HF ; H ; had
.byte PHONEME_AE1 ; AE1
.byte PHONEME_EH1 ; EH3
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_P ; P ; planned
.byte PHONEME_L ; L
.byte PHONEME_AE1 ; AE1
.byte PHONEME_EH1 ; EH3
.byte PHONEME_N ; N
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte $FF
; "IT CONTINUED FALLING INTO THAT STARRY",0
; "EXPANSE OF WHICH I HAD ONLY A",0
; "FLEETING GLIMPSE.",0
myst_starry:
.byte PHONEME_I ; I1 ; It
; .byte PHONEME_I3 ; I3
.byte PHONEME_T ; T
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_K ; K ; continued
.byte PHONEME_UH1 ; UH1
.byte PHONEME_N ; N
.byte PHONEME_T ; T
.byte PHONEME_I ; I1
; .byte PHONEME_I3 ; I3
.byte PHONEME_N ; N
; .byte PHONEME_Y1 ; Y1
.byte PHONEME_IU ; IU
.byte PHONEME_U1 ; U1
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
;falling
.byte PHONEME_I ; I1/I3 ; into
.byte PHONEME_N ; N
.byte PHONEME_T ; T
.byte PHONEME_IU ; IU
.byte PHONEME_IU ; UI/UI
.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
; starry
; espanse
; of
; which
.byte PHONEME_AH1 ; AH1 ; I
.byte PHONEME_Y ; Y
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte PHONEME_HF ; H ; had
.byte PHONEME_AE1 ; AE1
.byte PHONEME_EH1 ; EH3
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
; only
; a
; fleeting
; glimpse
.byte $FF
; "I HAVE TRIED TO SPECULATE WHERE IT MIGHT"
; "HAVE LANDED, BUT I MUST ADMIT,"
; "HOWEVER-- SUCH CONJECTURE IS FUTILE."
myst_speculate:
.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
; have
; tried
.byte PHONEME_T ; T ; to
.byte PHONEME_IU ; IU
.byte PHONEME_IU ; UI/UI
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
; speculate
; where
' it
; might
; have
; landed,
; but
.byte PHONEME_AH1 ; AH1 ; I
.byte PHONEME_Y ; Y
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
; must
; admit,
; however --
; such
; conjecture
; is
; futile
.byte $FF
; "STILL, THE QUESTION ABOUT WHOSE HANDS"
; "MIGHT SOMEDAY HOLD MY MYST BOOK ARE"
; "UNSETTLING TO ME."
myst_unsettling:
.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_R ; R ; realized
.byte PHONEME_E1 ; E1
.byte PHONEME_AY ; AY
.byte PHONEME_L ; L
.byte PHONEME_AH1 ; AH1
.byte PHONEME_Y ; Y
.byte PHONEME_Z ; Z
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA ; ,
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte $FF
; "I KNOW THAT MY APPREHENSIONS MIGHT"
; "NEVER BE ALLAYED, AND SO I CLOSE,"
; "REALIZING THAT PERHAPS,"
myst_allayed:
.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_R ; R ; realized
.byte PHONEME_E1 ; E1
.byte PHONEME_AY ; AY
.byte PHONEME_L ; L
.byte PHONEME_AH1 ; AH1
.byte PHONEME_Y ; Y
.byte PHONEME_Z ; Z
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA ; ,
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte $FF
; "THE ENDING HAS NOT YET BEEN WRITTEN."
myst_written:
.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_R ; R ; realized
.byte PHONEME_E1 ; E1
.byte PHONEME_AY ; AY
.byte PHONEME_L ; L
.byte PHONEME_AH1 ; AH1
.byte PHONEME_Y ; Y
.byte PHONEME_Z ; Z
.byte PHONEME_D ; D
.byte PHONEME_PAUSE ; PA ; ,
.byte PHONEME_PAUSE ; PA
.byte PHONEME_PAUSE ; PA
.byte $FF