mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-12 15:30:55 +00:00
mist_hgr: initial speech support
This commit is contained in:
parent
90ec003a7d
commit
f904b9da78
@ -183,6 +183,7 @@ mist_title.o: mist_title.s \
|
||||
gr_offsets.s end_level.s \
|
||||
draw_pointer.s text_print.s gr_fast_clear.s decompress_fast_v2.s \
|
||||
keyboard.s audio.s \
|
||||
ssi263_detect.s ssi263_simple_speech.s title_speech.s \
|
||||
init_state.s wait_a_bit.s \
|
||||
link_book_mist_dock.s common_sprites.inc leveldata_title.inc \
|
||||
pt3_lib_core.s pt3_lib_init.s pt3_lib_mockingboard_detect.s \
|
||||
|
@ -161,12 +161,32 @@ mockingboard_found:
|
||||
|
||||
sta $7d0+31 ; 23,31
|
||||
|
||||
jsr mockingboard_patch ; patch to work in slots other than 4?
|
||||
|
||||
lda SOUND_STATUS
|
||||
ora #SOUND_MOCKINGBOARD
|
||||
sta SOUND_STATUS
|
||||
|
||||
;===========================
|
||||
; detect SSI-263 too
|
||||
;===========================
|
||||
detect_ssi:
|
||||
lda MB_ADDR_H
|
||||
and #$87 ; slot
|
||||
jsr detect_ssi263
|
||||
|
||||
lda irq_count
|
||||
beq ssi_not_found
|
||||
|
||||
lda #'Y'+$80
|
||||
sta $7d0+39 ; 23,39
|
||||
|
||||
lda #SOUND_SSI263
|
||||
ora SOUND_STATUS
|
||||
sta SOUND_STATUS
|
||||
|
||||
ssi_not_found:
|
||||
|
||||
jsr mockingboard_patch ; patch to work in slots other than 4?
|
||||
|
||||
;=======================
|
||||
; Set up 50Hz interrupt
|
||||
;========================
|
||||
@ -297,7 +317,8 @@ cyan_title_mb:
|
||||
lda #$FE
|
||||
jsr draw_and_wait
|
||||
|
||||
sei ; disable music
|
||||
jsr mockingboard_disable_interrupt ; disable music
|
||||
|
||||
jsr clear_ay_both
|
||||
|
||||
jmp cyan_title_done
|
||||
@ -356,6 +377,22 @@ cyan_title_done:
|
||||
|
||||
; touch linking book as fissure pulses (says "Fissure")
|
||||
|
||||
fissure_speech:
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq fissure_no_speech
|
||||
|
||||
lda ssi263_slot
|
||||
jsr ssi263_speech_init
|
||||
|
||||
lda #<myst_fissure
|
||||
sta SPEECH_PTRL
|
||||
lda #>myst_fissure
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
fissure_no_speech:
|
||||
|
||||
ldx #<fissure_stars_lzsa
|
||||
ldy #>fissure_stars_lzsa
|
||||
lda #10
|
||||
@ -398,6 +435,19 @@ cyan_title_done:
|
||||
; "EXPANSE OF WHICH I HAD ONLY A",0
|
||||
; "FLEETING GLIMPSE.",0
|
||||
|
||||
starry_speech:
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq starry_no_speech
|
||||
|
||||
lda #<myst_starry
|
||||
sta SPEECH_PTRL
|
||||
lda #>myst_starry
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
starry_no_speech:
|
||||
|
||||
jsr clear_bottom
|
||||
|
||||
ldx #<fissure_book_small_lzsa
|
||||
@ -428,6 +478,19 @@ cyan_title_done:
|
||||
; "HAVE LANDED, BUT I MUST ADMIT,"
|
||||
; "HOWEVER-- SUCH CONJECTURE IS FUTILE."
|
||||
|
||||
speculate_speech:
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq speculate_no_speech
|
||||
|
||||
lda #<myst_speculate
|
||||
sta SPEECH_PTRL
|
||||
lda #>myst_speculate
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
speculate_no_speech:
|
||||
|
||||
jsr clear_bottom
|
||||
|
||||
ldx #<starfield_lzsa
|
||||
@ -467,6 +530,20 @@ cyan_title_done:
|
||||
; "MIGHT SOMEDAY HOLD MY MYST BOOK ARE"
|
||||
; "UNSETTLING TO ME."
|
||||
|
||||
unsettling_speech:
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq unsettling_no_speech
|
||||
|
||||
lda #<myst_unsettling
|
||||
sta SPEECH_PTRL
|
||||
lda #>myst_unsettling
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
unsettling_no_speech:
|
||||
|
||||
|
||||
jsr clear_bottom
|
||||
|
||||
ldx #<starfield_lzsa
|
||||
@ -500,6 +577,19 @@ cyan_title_done:
|
||||
; "NEVER BE ALLAYED, AND SO I CLOSE,"
|
||||
; "REALIZING THAT PERHAPS,"
|
||||
|
||||
allayed_speech:
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq allayed_no_speech
|
||||
|
||||
lda #<myst_allayed
|
||||
sta SPEECH_PTRL
|
||||
lda #>myst_allayed
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
allayed_no_speech:
|
||||
|
||||
jsr clear_bottom
|
||||
|
||||
|
||||
@ -534,6 +624,20 @@ cyan_title_done:
|
||||
; BOOK_AIR : The ending...
|
||||
;===================================
|
||||
|
||||
written_speech:
|
||||
lda SOUND_STATUS
|
||||
and #SOUND_SSI263
|
||||
beq written_no_speech
|
||||
|
||||
lda #<myst_written
|
||||
sta SPEECH_PTRL
|
||||
lda #>myst_written
|
||||
sta SPEECH_PTRH
|
||||
|
||||
jsr ssi263_speak
|
||||
written_no_speech:
|
||||
|
||||
|
||||
ldx #<book_ground_stars_lzsa
|
||||
ldy #>book_ground_stars_lzsa
|
||||
lda #1
|
||||
@ -652,7 +756,7 @@ game_loop:
|
||||
; copy background to current page
|
||||
;====================================
|
||||
|
||||
; jsr gr_copy_to_current
|
||||
; jsr gr_copyg_to_current
|
||||
|
||||
;====================================
|
||||
; handle special-case forground logic
|
||||
@ -786,7 +890,11 @@ really_exit:
|
||||
.include "interrupt_handler.s"
|
||||
.include "pt3_lib_mockingboard_detect.s"
|
||||
|
||||
|
||||
; ssi-263 code
|
||||
.include "ssi263.inc"
|
||||
.include "ssi263_simple_speech.s"
|
||||
.include "ssi263_detect.s"
|
||||
.include "title_speech.s"
|
||||
|
||||
.include "wait_a_bit.s"
|
||||
|
||||
@ -858,6 +966,12 @@ get_mist_book:
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
; re-enable interrupts as SSI code probably broke things
|
||||
|
||||
jsr mockingboard_init
|
||||
jsr reset_ay_both
|
||||
jsr mockingboard_setup_interrupt
|
||||
|
||||
jsr pt3_init_song
|
||||
|
||||
cli
|
||||
|
@ -275,3 +275,22 @@ setup_irq_smc6:
|
||||
; clear interrupt and start counting
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;=============================
|
||||
; Disable Interrupt
|
||||
;=============================
|
||||
mockingboard_disable_interrupt:
|
||||
|
||||
sei ; disable interrupts just in case
|
||||
|
||||
lda #$40 ; Continuous interrupts, don't touch PB7
|
||||
disable_irq_smc1:
|
||||
sta MOCK_6522_ACR ; ACR register
|
||||
lda #$7F ; clear all interrupt flags
|
||||
disable_irq_smc2:
|
||||
sta MOCK_6522_IER ; IER register (interrupt enable)
|
||||
|
||||
rts
|
||||
|
||||
|
100
games/mist_hgr/ssi263.inc
Normal file
100
games/mist_hgr/ssi263.inc
Normal file
@ -0,0 +1,100 @@
|
||||
;SPEECH_PTRL = $FE
|
||||
;SPEECH_PTRH = $FF
|
||||
|
||||
SSI263_BASE = $40 ; First speech chip
|
||||
SSI263_DRP = SSI263_BASE+$00 ; Reg0, Duration/Phoneme
|
||||
SSI263_I = SSI263_BASE+$01 ; Reg1, Inflection
|
||||
SSI263_RI = SSI263_BASE+$02 ; Reg2, Rate/Inflection
|
||||
SSI263_CAA = SSI263_BASE+$03 ; Reg3, Control/Articulation/Amplitude
|
||||
SSI263_F = SSI263_BASE+$04 ; Reg4, Filter Frequency
|
||||
VIA6522_DDRB1 = $02 ; 6522 Data direction port B register
|
||||
VIA6522_DDRA1 = $03 ; 6522 Data direction port A register
|
||||
VIA6522_PCR2 = $8C ; 6522 #2 Peripheral control register
|
||||
VIA6522_IFR2 = $8D ; 6522 #2 Interrupt flag register
|
||||
VIA6522_IER2 = $8E ; 6522 #2 Interrupt enable register
|
||||
|
||||
VIA6522_IFR2_CA1 = $02
|
||||
|
||||
VIA6522_IER2_SET = $80
|
||||
VIA6522_IER2_CA1 = $02
|
||||
|
||||
VIA6522_PCR2_CA2_LOW = $0C
|
||||
VIA6522_PCR2_CA2_HI = $0E
|
||||
|
||||
VIA6522_PCR2_CA1_NEG = $00
|
||||
VIA6522_PCR2_CA1_POS = $01
|
||||
|
||||
|
||||
SSI263_CAA_CTL = $80 ; control bit
|
||||
|
||||
SSI263_DRP_TRANSITIONED_INFLECTION = $C0
|
||||
SSI263_DRP_PHONEME_TIMING_IMMEDIATE_INFLECTION = $80
|
||||
SSI263_DRP_FRAME_TIMING_IMMEDIATE_INFLECTION = $40
|
||||
SSI263_DRP_DISABLE_AR = $00
|
||||
|
||||
DURATION_LONG = $00
|
||||
|
||||
PHONEME_PAUSE = $00 ; Pause
|
||||
PHONEME_E = $01 ; mEEt
|
||||
PHONEME_E1 = $02 ; bEnt
|
||||
PHONEME_Y = $03 ; bEfore
|
||||
PHONEME_YI = $04 ; Year
|
||||
PHONEME_AY = $05 ; plEAse
|
||||
PHONEME_IE = $06 ; anY
|
||||
PHONEME_I = $07 ; sIx
|
||||
PHONEME_A = $08 ; mAde
|
||||
PHONEME_AI = $09 ; cAre
|
||||
PHONEME_EH = $0A ; nEst
|
||||
PHONEME_EH1 = $0B ; bElt
|
||||
PHONEME_AE = $0C ; dAd
|
||||
PHONEME_AE1 = $0D ; After
|
||||
PHONEME_AH = $0E ; gOt
|
||||
PHONEME_AH1 = $0F ; fAther
|
||||
PHONEME_AW = $10 ; Office
|
||||
PHONEME_O = $11 ; stOre
|
||||
PHONEME_OU = $12 ; bOAt
|
||||
PHONEME_OO = $13 ; lOOk
|
||||
PHONEME_IU = $14 ; yOU
|
||||
PHONEME_IU1 = $15 ; cOUld
|
||||
PHONEME_U = $16 ; tUne
|
||||
PHONEME_U1 = $17 ; cartOOn
|
||||
PHONEME_UH = $18 ; wOnder
|
||||
PHONEME_UH1 = $19 ; lOve
|
||||
PHONEME_UH2 = $1A ; whAt
|
||||
PHONEME_UH3 = $1B ; nUt
|
||||
PHONEME_ER = $1C ; bIRd
|
||||
PHONEME_R = $1D ; Roof
|
||||
PHONEME_R1 = $1E ; Rug
|
||||
PHONEME_R2 = $1F ; muetteR (German)
|
||||
PHONEME_L = $20 ; Lift
|
||||
PHONEME_L1 = $21 ; pLay
|
||||
PHONEME_LF = $22 ; falL (final)
|
||||
PHONEME_W = $23 ; Water
|
||||
PHONEME_B = $24 ; Bag
|
||||
PHONEME_D = $25 ; paiD
|
||||
PHONEME_KV = $26 ; taG (glottal stop)
|
||||
PHONEME_P = $27 ; Pen
|
||||
PHONEME_T = $28 ; Tart
|
||||
PHONEME_K = $29 ; Kit
|
||||
PHONEME_HV = $2A ; (hold vocal)
|
||||
PHONEME_HVC = $2B ; (hold vocal closure)
|
||||
PHONEME_HF = $2C ; Heart
|
||||
PHONEME_HFC = $2D ; (hold frictive closure)
|
||||
PHONEME_HN = $2E ; (hold nasal)
|
||||
PHONEME_Z = $2F ; Zero
|
||||
PHONEME_S = $30 ; Same
|
||||
PHONEME_J = $31 ; meaSure
|
||||
PHONEME_SCH = $32 ; SHip
|
||||
PHONEME_V = $33 ; Very
|
||||
PHONEME_F = $34 ; Four
|
||||
PHONEME_THV = $35 ; THere
|
||||
PHONEME_TH = $36 ; wiTH
|
||||
PHONEME_M = $37 ; More
|
||||
PHONEME_N = $38 ; NiNe
|
||||
PHONEME_NG = $39 ; raNG
|
||||
PHONEME_CA = $3A ; mAerchen (German)
|
||||
PHONEME_COH = $3B ; lOwe (French)
|
||||
PHONEME_CU = $3C ; fUenf (German)
|
||||
PHONEME_CUH = $3D ; menU (French)
|
||||
PHONEME_E2 = $3E ; bittE (German)
|
||||
PHONEME_LB = $3F ; Lube
|
137
games/mist_hgr/ssi263_detect.s
Normal file
137
games/mist_hgr/ssi263_detect.s
Normal file
@ -0,0 +1,137 @@
|
||||
; This code detects a SSI263 chip on a Mockingboard
|
||||
; it does this by trying to enable the chip and waiting for
|
||||
; the SSI-263 to signal an interrupt when done.
|
||||
; If the interrupt never comes then assume no SSI-263 is present
|
||||
; The code assumes the SSI-263 is hooked to VIA6522 #2 (?)
|
||||
|
||||
;=============================
|
||||
;=============================
|
||||
; detect SSI263
|
||||
;=============================
|
||||
;=============================
|
||||
; A = slot of mockingboard
|
||||
|
||||
detect_ssi263:
|
||||
sta ssi263_slot ; store for later
|
||||
|
||||
and #$7
|
||||
ora #$c0 ; turn slot number into address
|
||||
sta ssid_wc_smc1+2 ; update the read/write routines
|
||||
|
||||
sei ; disable IRQ
|
||||
|
||||
lda $3fe ; backup the IRQ handler
|
||||
sta irq1backup
|
||||
lda $3ff
|
||||
sta irq2backup
|
||||
|
||||
lda #<mb_irq ; point IRQ handler to our code
|
||||
sta $3fe
|
||||
lda #>mb_irq
|
||||
sta $3ff
|
||||
|
||||
; Set 6522#2 peripheral control register to recognize the signal
|
||||
; from the speech chip.
|
||||
lda #(VIA6522_PCR2_CA2_LOW|VIA6522_PCR2_CA1_NEG)
|
||||
ldx #VIA6522_PCR2
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; Raise control bit in register 3 of SSI-263
|
||||
lda #SSI263_CAA_CTL
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; Transitioned inflection (when CTL is toggled)
|
||||
lda #SSI263_DRP_TRANSITIONED_INFLECTION
|
||||
ldx #SSI263_DRP
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; Lower control bit in SSI-263
|
||||
lda #$70 ; CTL=0, T=6, AMP=0
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; Enable 6522 interrupt on input CA2
|
||||
lda #(VIA6522_IER2_SET|VIA6522_IER2_CA1)
|
||||
ldx #VIA6522_IER2
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
ldx #0 ; clear counts
|
||||
ldy #0
|
||||
|
||||
cli ; enable interrupts
|
||||
|
||||
wait_irq:
|
||||
lda irq_count ; see if irq happened
|
||||
|
||||
bne got_irq
|
||||
|
||||
iny ; otherwise increase counts
|
||||
bne wait_irq
|
||||
inx ;
|
||||
bne wait_irq
|
||||
|
||||
got_irq:
|
||||
sei ; disable interrupts
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;========================
|
||||
; detection IRQ handler
|
||||
;========================
|
||||
mb_irq:
|
||||
txa ; save X
|
||||
pha
|
||||
|
||||
; Clear the 6522 interrupt flag
|
||||
lda #VIA6522_IFR2_CA1
|
||||
ldx #VIA6522_IFR2
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; disable speech
|
||||
|
||||
; Raise control bit in register 3 of SSI-263
|
||||
lda #SSI263_CAA_CTL
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; Disable talking on SSI-263 (when CTL is toggled)
|
||||
lda #SSI263_DRP_DISABLE_AR
|
||||
ldx #SSI263_DRP
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; Lower control bit in SSI-263
|
||||
lda #$70 ; also T=7?
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
; increment our irq count
|
||||
|
||||
inc irq_count
|
||||
|
||||
; Disable 6522 interrupts
|
||||
lda #VIA6522_IER2_CA1
|
||||
ldx #VIA6522_IER2
|
||||
jsr ssi263_d_write_chip
|
||||
|
||||
pla ; restore X
|
||||
tax
|
||||
|
||||
lda $45 ; restore accumulator
|
||||
|
||||
rti ; return from interrupt
|
||||
|
||||
|
||||
;========================
|
||||
; write_chip
|
||||
;========================
|
||||
ssi263_d_write_chip:
|
||||
ssid_wc_smc1:
|
||||
sta $C000,X
|
||||
rts
|
||||
|
||||
irq_count: .byte $00
|
||||
irq1backup: .byte $00
|
||||
irq2backup: .byte $00
|
||||
ssi263_slot: .byte $00
|
243
games/mist_hgr/ssi263_simple_speech.s
Normal file
243
games/mist_hgr/ssi263_simple_speech.s
Normal file
@ -0,0 +1,243 @@
|
||||
|
||||
;.include "ssi263.inc"
|
||||
|
||||
; Simple speech routine for ssi-263
|
||||
|
||||
; to save space we only change the Phoneme/Delay each time, we don't
|
||||
; mess with the other registers
|
||||
|
||||
;========================
|
||||
; ssi263_write_chip
|
||||
;========================
|
||||
ssi263_write_chip:
|
||||
wc_smc1:
|
||||
sta $C000,X
|
||||
rts
|
||||
|
||||
;========================
|
||||
; read_chip
|
||||
;========================
|
||||
ssi263_read_chip:
|
||||
rc_smc1:
|
||||
lda $C000,X
|
||||
rts
|
||||
|
||||
|
||||
;========================
|
||||
; ssi263_speech_init
|
||||
;========================
|
||||
; A = slot number of mockingboard
|
||||
ssi263_speech_init:
|
||||
sei ; disable interrupts
|
||||
|
||||
and #$7
|
||||
ora #$c0 ; turn slot number into address
|
||||
sta wc_smc1+2 ; update the read/write routines
|
||||
sta rc_smc1+2
|
||||
|
||||
; Set 6522#2 peripheral control register to recognize the signal
|
||||
; from the speech chip.
|
||||
lda #(VIA6522_PCR2_CA2_LOW|VIA6522_PCR2_CA1_NEG)
|
||||
ldx #VIA6522_PCR2
|
||||
jsr ssi263_write_chip
|
||||
|
||||
|
||||
lda #<ssi263_speech_irq ; point IRQ handler to our code
|
||||
sta $3fe
|
||||
lda #>ssi263_speech_irq
|
||||
sta $3ff
|
||||
|
||||
|
||||
; set defaults
|
||||
|
||||
; filter frequency
|
||||
lda #$E9
|
||||
ldx #SSI263_F
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; control / articulation/ amplitude
|
||||
lda #$5C
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; rate/inflection
|
||||
lda #$A8
|
||||
ldx #SSI263_RI
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; inflection
|
||||
lda #$50
|
||||
ldx #SSI263_I
|
||||
jsr ssi263_write_chip
|
||||
|
||||
|
||||
|
||||
cli ; enable interrupts
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;============================
|
||||
; ssi263_speech_shutdown
|
||||
;============================
|
||||
|
||||
ssi263_speech_shutdown:
|
||||
sei
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;=========================
|
||||
; ssi263_speak
|
||||
;=========================
|
||||
; pointer to data in SPEECH_PTRL/H
|
||||
|
||||
ssi263_speak:
|
||||
|
||||
sei ; disable interrupts
|
||||
|
||||
; Set the busy flag
|
||||
lda #$FF
|
||||
sta speech_busy
|
||||
|
||||
; Set peripheral control register to recognize the signal from the
|
||||
; speech chip.
|
||||
lda #(VIA6522_PCR2_CA2_LOW|VIA6522_PCR2_CA1_NEG)
|
||||
ldx #VIA6522_PCR2
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Set transitioned inflection by setting value while toggling CTL
|
||||
|
||||
lda #SSI263_CAA_CTL
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Set transitioned inflection mode in register 0
|
||||
lda #SSI263_DRP_TRANSITIONED_INFLECTION
|
||||
ldx #SSI263_DRP
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Lower control bit
|
||||
lda #$70 ; also T=7
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Enable 6522 interrupts
|
||||
lda #(VIA6522_IER2_SET|VIA6522_IER2_CA1)
|
||||
ldx #VIA6522_IER2
|
||||
jsr ssi263_write_chip
|
||||
|
||||
cli ; re-enable interrupts
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;====================
|
||||
; speech interrupt
|
||||
;====================
|
||||
ssi263_speech_irq:
|
||||
|
||||
php ; save flags
|
||||
cld
|
||||
|
||||
pha ; save A
|
||||
txa
|
||||
pha ; save X
|
||||
tya
|
||||
pha ; save Y
|
||||
|
||||
inc $0404 ; irq indicator on screen
|
||||
|
||||
; be sure it was a 6522#2 interrupt
|
||||
ldx #VIA6522_IFR2
|
||||
jsr ssi263_read_chip
|
||||
bmi have_interrupt
|
||||
|
||||
; wasn't us, return to caller
|
||||
; this assumes we can handle multiple interrupt sources
|
||||
|
||||
jmp end_interrupt
|
||||
|
||||
have_interrupt:
|
||||
; Clear the 6522#2 CA interrupt flag
|
||||
lda #VIA6522_IFR2_CA1
|
||||
ldx #VIA6522_IFR2
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Check if done with speech
|
||||
ldy #0
|
||||
lda (SPEECH_PTRL),Y
|
||||
cmp #$ff
|
||||
beq speech_end
|
||||
|
||||
not_end:
|
||||
|
||||
; Set the speech playing flag
|
||||
lda #$ff
|
||||
sta speech_playing
|
||||
|
||||
|
||||
ldy #$00
|
||||
; Get the next data
|
||||
lda (SPEECH_PTRL),Y
|
||||
ldx #SSI263_DRP ; duration/phoneme
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Next data (inc 16 bit)
|
||||
inc SPEECH_PTRL
|
||||
bne no_oflo
|
||||
inc SPEECH_PTRH
|
||||
no_oflo:
|
||||
|
||||
; Finish the interrupt handler
|
||||
jmp end_interrupt
|
||||
|
||||
speech_end:
|
||||
|
||||
; If at the end, turn everything off
|
||||
|
||||
; Toggle CTL while DR set to disable A/!R
|
||||
|
||||
lda #SSI263_CAA_CTL
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_write_chip
|
||||
|
||||
lda #SSI263_DRP_DISABLE_AR
|
||||
ldx #SSI263_DRP
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Zero amplitude
|
||||
lda #$70
|
||||
ldx #SSI263_CAA
|
||||
jsr ssi263_write_chip
|
||||
|
||||
; Clear busy and playing flags
|
||||
lda #$00
|
||||
sta speech_busy
|
||||
sta speech_playing
|
||||
|
||||
; Disable interrupt in 6522
|
||||
lda #VIA6522_IER2_CA1
|
||||
ldx #VIA6522_IER2
|
||||
jsr ssi263_write_chip
|
||||
|
||||
end_interrupt:
|
||||
|
||||
pla
|
||||
tay ; restore Y
|
||||
pla
|
||||
tax ; restore X
|
||||
|
||||
pla ; restore A
|
||||
|
||||
ssi_interrupt_smc:
|
||||
lda $45 ; restore A (II+/IIe)
|
||||
|
||||
plp ; restore flags
|
||||
|
||||
rti ; return from interrupt
|
||||
|
||||
speech_busy: .byte $00
|
||||
speech_playing: .byte $00
|
||||
|
815
games/mist_hgr/title_speech.s
Normal file
815
games/mist_hgr/title_speech.s
Normal file
@ -0,0 +1,815 @@
|
||||
;
|
||||
; myst title speech
|
||||
;
|
||||
; Getting text-to-speech on a ssi-263 equipped mockigboard
|
||||
; for Myst
|
||||
|
||||
|
||||
|
||||
; 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_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
|
||||
|
||||
.byte PHONEME_F ; F ; falling
|
||||
.byte PHONEME_AW ; AW
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_NG ; NG
|
||||
.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 ; that
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_S ; S ; starry
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_AH1 ; AH1
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_R ; R
|
||||
.byte PHONEME_E1 ; E1
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_EH1 ; EH1 ; expanse
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_K ; K
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_S ; S
|
||||
.byte PHONEME_P ; P
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_Z ; Z
|
||||
.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_W ; W ; which
|
||||
.byte PHONEME_I ; I1
|
||||
; .byte PHONEME_I3 ; I3
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_SCH ; SCH
|
||||
.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_O ; O1 ; only
|
||||
; .byte PHONEME_O2 ; O2
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_UH2 ; UH2 ; a
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_F ; F ; fleeting
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_NG ; NG
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_KV ; G ; glimpse
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_M ; M
|
||||
.byte PHONEME_P ; P
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.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
|
||||
|
||||
.byte PHONEME_HF ; H ; have
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_V ; V
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_T ; T ; tried
|
||||
.byte PHONEME_R ; R
|
||||
.byte PHONEME_AH1 ; AH1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_T ; T ; to
|
||||
.byte PHONEME_IU ; IU
|
||||
.byte PHONEME_IU ; UI/UI
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_S ; S ; speculate
|
||||
.byte PHONEME_P ; P
|
||||
.byte PHONEME_EH1 ; EH1
|
||||
; .byte PHONEME_EH3 ; EH3
|
||||
.byte PHONEME_K ; K
|
||||
.byte PHONEME_K ; K
|
||||
; .byte PHONEME_Y1 ; Y1
|
||||
.byte PHONEME_IU ; IU
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_L ; L
|
||||
; .byte PHONEME_A1 ; A1
|
||||
.byte PHONEME_AY ; AY
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_W ; W ; where
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_AY ; A2
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_R ; R
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_I ; I ; it
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_M ; M ; might
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_AH ; AH2
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_HF ; H ; have
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_V ; V
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_L ; L ; landed
|
||||
.byte PHONEME_AH1 ; AE1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_B ; B ; but
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
.byte PHONEME_UH2 ; UH2
|
||||
.byte PHONEME_T ; T
|
||||
.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_M ; M ; must
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
.byte PHONEME_UH2 ; UH2
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_T ; T
|
||||
.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_HF ; H ; however
|
||||
.byte PHONEME_AH1 ; AH1
|
||||
; .byte PHONEME_O2 ; O2
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_EH1 ; EH1
|
||||
.byte PHONEME_V ; V
|
||||
.byte PHONEME_R ; R
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_PAUSE ; PA ; --
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_S ; S ; such
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
; .byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_SCH ; SCH
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_K ; K ; conjecture
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_J ; J
|
||||
.byte PHONEME_E1 ; E1
|
||||
.byte PHONEME_K ; K
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_SCH ; SCH
|
||||
.byte PHONEME_R ; R
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_I ; I ; is
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_F ; F ; futile.
|
||||
; .byte PHONEME_Y1 ; Y1
|
||||
.byte PHONEME_IU ; IU
|
||||
; .byte PHONEME_UI ; UI
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_I ; I3
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.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_S ; S ; still
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_L ; L
|
||||
.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_K ; K ; question
|
||||
.byte PHONEME_W ; W
|
||||
.byte PHONEME_EH1 ; EH1
|
||||
; .byte PHONEME_EH3 ; EH3
|
||||
.byte PHONEME_S ; S
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_SCH ; SCH
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_UH1 ; UH1 ; about
|
||||
.byte PHONEME_B ; B
|
||||
.byte PHONEME_UH2 ; UH2
|
||||
.byte PHONEME_AH ; AH2
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_HF ; H ; whose
|
||||
.byte PHONEME_IU ; IU
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_HF ; HF ; hands
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_M ; M ; might
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_AH ; AH2
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_S ; S ; someday
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
.byte PHONEME_UH2 ; UH2
|
||||
.byte PHONEME_M ; M
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_AI ; A1
|
||||
.byte PHONEME_I ; I3
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_HF ; HF ; hold
|
||||
.byte PHONEME_O ; O2
|
||||
.byte PHONEME_O ; O2
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_M ; M ; my
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_AH ; AH2
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_M ; M ; MYST
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_S ; S
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_B ; B ; book
|
||||
.byte PHONEME_OO ; OO1
|
||||
.byte PHONEME_OO ; OO1
|
||||
.byte PHONEME_K ; K
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_AH1 ; AH1 ; are
|
||||
.byte PHONEME_UH2 ; UH2
|
||||
.byte PHONEME_ER ; ER
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_UH1 ; UH1 ; unsettling
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_S ; S
|
||||
.byte PHONEME_EH1 ; EH1
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_NG ; NG
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
|
||||
.byte PHONEME_T ; T ; to
|
||||
.byte PHONEME_IU ; IU
|
||||
.byte PHONEME_IU ; UI/UI
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_M ; M ; me
|
||||
.byte PHONEME_E1 ; E1
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.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_N ; AH1 ; know
|
||||
.byte PHONEME_OO ; OO1
|
||||
.byte PHONEME_O ; O1
|
||||
.byte PHONEME_U1 ; U1
|
||||
.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_M ; M ; my
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_AH ; AH2
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_AE1 ; AE1 ; apprehensions
|
||||
.byte PHONEME_P ; P
|
||||
.byte PHONEME_R ; R
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_HF ; HF
|
||||
.byte PHONEME_EH ; EH
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_SCH ; SCH
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_M ; M ; might
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_AH ; AH2
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_N ; N ; never
|
||||
.byte PHONEME_EH1 ; EH
|
||||
.byte PHONEME_V ; V
|
||||
.byte PHONEME_R ; R
|
||||
.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_UH1 ; UH1 ; allayed
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_A ; A
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_PAUSE ; PA ; ,
|
||||
|
||||
.byte PHONEME_AE1 ; AE1 ; and
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_S ; S ; so
|
||||
.byte PHONEME_OO ; OO
|
||||
.byte PHONEME_O ; O2
|
||||
.byte PHONEME_U1 ; U1
|
||||
.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 ; close
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_O ; O1
|
||||
.byte PHONEME_U1 ; U1
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_PAUSE ; PA ; ,
|
||||
|
||||
.byte PHONEME_R ; R ; realizing
|
||||
.byte PHONEME_E1 ; E1
|
||||
.byte PHONEME_AY ; AY
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
.byte PHONEME_L ; L
|
||||
.byte PHONEME_AH1 ; AH1
|
||||
.byte PHONEME_Y ; Y
|
||||
.byte PHONEME_Z ; Z
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_NG ; NG
|
||||
.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_P ; P ; perhaps
|
||||
.byte PHONEME_ER ; ER
|
||||
.byte PHONEME_HF ; HF
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
.byte PHONEME_EH ; EH3
|
||||
.byte PHONEME_P ; P
|
||||
.byte PHONEME_Z ; Z
|
||||
.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_THV ; THV ; the
|
||||
.byte PHONEME_UH1 ; UH1
|
||||
.byte PHONEME_UH3 ; UH3
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_EH1 ; EH1 ; ending
|
||||
; .byte PHONEME_EH3 ; EH3
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_D ; D
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_NG ; NG
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_HF ; H ; has
|
||||
.byte PHONEME_AE1 ; AE1
|
||||
; .byte PHONEME_EH3 ; EH3
|
||||
.byte PHONEME_Z ; Z
|
||||
.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_YI ; YI ; yet
|
||||
.byte PHONEME_EH1 ; EH1
|
||||
; .byte PHONEME_EH3 ; EH3
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_B ; B ; been
|
||||
.byte PHONEME_EH1 ; EH1
|
||||
; .byte PHONEME_EH3 ; EH3
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_R ; R ; written
|
||||
.byte PHONEME_I ; I
|
||||
.byte PHONEME_T ; T
|
||||
.byte PHONEME_N ; N
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte PHONEME_PAUSE ; PA
|
||||
.byte $FF
|
@ -26,6 +26,8 @@ TEMP5 = $15
|
||||
|
||||
LAST_KEY = $16
|
||||
|
||||
SPEECH_PTRL = $17
|
||||
SPEECH_PTRH = $18
|
||||
|
||||
HGR_SHAPE = $1A ; also used in BKGND0
|
||||
HGR_SHAPE2 = $1B
|
||||
@ -319,8 +321,9 @@ CURRENT_DISK = $DC
|
||||
JOYSTICK_ENABLED= $DD
|
||||
SOUND_STATUS = $DE
|
||||
SOUND_DISABLED = $80
|
||||
SOUND_IN_LC = $01 ; $01 sound effects in language card
|
||||
SOUND_MOCKINGBOARD = $02 ; mockingboard detected
|
||||
SOUND_IN_LC = $01 ; speaker effects in language card
|
||||
SOUND_MOCKINGBOARD = $02 ; mockingboard detected
|
||||
SOUND_SSI263 = $04 ; SSI-263 speech chip detected
|
||||
|
||||
GRID_PAGE = $DF
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user