mist_hgr: make work on IIc as well
This commit is contained in:
parent
72ea4da48e
commit
fac3ceddd8
|
@ -8,12 +8,26 @@ mist_link_book:
|
||||||
and #SOUND_MOCKINGBOARD
|
and #SOUND_MOCKINGBOARD
|
||||||
beq skip_turn_off_music
|
beq skip_turn_off_music
|
||||||
|
|
||||||
sei ; disable interrupts
|
; disable interrupts
|
||||||
|
jsr mockingboard_disable_interrupt
|
||||||
|
|
||||||
jsr clear_ay_both
|
jsr clear_ay_both
|
||||||
|
|
||||||
skip_turn_off_music:
|
skip_turn_off_music:
|
||||||
|
|
||||||
|
; load link noise if IIc
|
||||||
|
; we have to load it late due to IIc needing ROM copy in AUX
|
||||||
|
; until done playing music
|
||||||
|
; this makes an awkward pause but seems best compromise
|
||||||
|
|
||||||
|
lda APPLEII_MODEL
|
||||||
|
cmp #'C'
|
||||||
|
bne link_noise_already_loaded
|
||||||
|
|
||||||
|
jsr load_linking_noise
|
||||||
|
link_noise_already_loaded:
|
||||||
|
|
||||||
|
|
||||||
; clear screen
|
; clear screen
|
||||||
|
|
||||||
; clear to black
|
; clear to black
|
||||||
|
|
|
@ -113,27 +113,6 @@ yes_language_card:
|
||||||
lda SOUND_STATUS
|
lda SOUND_STATUS
|
||||||
ora #SOUND_IN_LC
|
ora #SOUND_IN_LC
|
||||||
sta SOUND_STATUS
|
sta SOUND_STATUS
|
||||||
|
|
||||||
; load sounds into LC
|
|
||||||
|
|
||||||
; read ram, write ram, use $d000 bank1
|
|
||||||
bit $C08B
|
|
||||||
bit $C08B
|
|
||||||
|
|
||||||
lda #<linking_noise_compressed
|
|
||||||
sta getsrc_smc+1
|
|
||||||
lda #>linking_noise_compressed
|
|
||||||
sta getsrc_smc+2
|
|
||||||
|
|
||||||
lda #$D0 ; decompress to $D000
|
|
||||||
|
|
||||||
jsr decompress_lzsa2_fast
|
|
||||||
|
|
||||||
blah:
|
|
||||||
|
|
||||||
; read rom, nowrite, use $d000 bank1
|
|
||||||
bit $C08A
|
|
||||||
|
|
||||||
no_language_card:
|
no_language_card:
|
||||||
|
|
||||||
;===================================
|
;===================================
|
||||||
|
@ -227,6 +206,13 @@ mockingboard_notfound:
|
||||||
|
|
||||||
done_setup_sound:
|
done_setup_sound:
|
||||||
|
|
||||||
|
lda APPLEII_MODEL
|
||||||
|
cmp #'C'
|
||||||
|
beq link_noise_not_yet
|
||||||
|
|
||||||
|
jsr load_linking_noise
|
||||||
|
link_noise_not_yet:
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
; wait a bit at text title
|
; wait a bit at text title
|
||||||
|
@ -709,6 +695,19 @@ skip_intro:
|
||||||
; lda #1
|
; lda #1
|
||||||
; jsr draw_and_wait
|
; jsr draw_and_wait
|
||||||
|
|
||||||
|
|
||||||
|
;================================
|
||||||
|
; shut off speech if still going
|
||||||
|
;================================
|
||||||
|
|
||||||
|
lda SOUND_STATUS
|
||||||
|
and #SOUND_SSI263
|
||||||
|
beq no_not_speeking
|
||||||
|
|
||||||
|
jsr ssi263_speech_shutdown
|
||||||
|
no_not_speeking:
|
||||||
|
|
||||||
|
|
||||||
done_intro:
|
done_intro:
|
||||||
|
|
||||||
; restore to full screen (no text)
|
; restore to full screen (no text)
|
||||||
|
@ -973,7 +972,12 @@ get_mist_book:
|
||||||
|
|
||||||
jsr mockingboard_init
|
jsr mockingboard_init
|
||||||
jsr reset_ay_both
|
jsr reset_ay_both
|
||||||
jsr mockingboard_setup_interrupt
|
|
||||||
|
; jsr mockingboard_setup_interrupt
|
||||||
|
|
||||||
|
; to make it work on IIc?
|
||||||
|
jsr done_iic_hack
|
||||||
|
|
||||||
|
|
||||||
jsr pt3_init_song
|
jsr pt3_init_song
|
||||||
|
|
||||||
|
@ -1110,3 +1114,36 @@ animate_xloop:
|
||||||
|
|
||||||
done_animate_book:
|
done_animate_book:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
load_linking_noise:
|
||||||
|
; load sound effect into language card
|
||||||
|
; do this late as IIc mockingboard support messes with language card
|
||||||
|
|
||||||
|
; update sound status
|
||||||
|
lda SOUND_STATUS
|
||||||
|
and #SOUND_IN_LC
|
||||||
|
beq skip_load_linking_noise
|
||||||
|
|
||||||
|
; load sounds into LC
|
||||||
|
|
||||||
|
; read ram, write ram, use $d000 bank1
|
||||||
|
bit $C08B
|
||||||
|
bit $C08B
|
||||||
|
|
||||||
|
lda #<linking_noise_compressed
|
||||||
|
sta getsrc_smc+1
|
||||||
|
lda #>linking_noise_compressed
|
||||||
|
sta getsrc_smc+2
|
||||||
|
|
||||||
|
lda #$D0 ; decompress to $D000
|
||||||
|
|
||||||
|
jsr decompress_lzsa2_fast
|
||||||
|
|
||||||
|
; read rom, nowrite, use $d000 bank1
|
||||||
|
bit $C08A
|
||||||
|
|
||||||
|
skip_load_linking_noise:
|
||||||
|
rts
|
||||||
|
|
|
@ -182,8 +182,6 @@ mockingboard_setup_interrupt:
|
||||||
|
|
||||||
sei ; disable interrupts
|
sei ; disable interrupts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
copy_rom_loop:
|
copy_rom_loop:
|
||||||
lda $c089 ; read ROM, write RAM1
|
lda $c089 ; read ROM, write RAM1
|
||||||
lda $c089
|
lda $c089
|
||||||
|
@ -214,11 +212,12 @@ write_rom_loop:
|
||||||
lda #>interrupt_handler
|
lda #>interrupt_handler
|
||||||
sta $ffff
|
sta $ffff
|
||||||
|
|
||||||
lda #$EA ; nop out the "lda $45" in the irq handler
|
|
||||||
|
; nop out the "lda $45" in the irq handler
|
||||||
|
lda #$EA
|
||||||
sta interrupt_smc
|
sta interrupt_smc
|
||||||
sta interrupt_smc+1
|
sta interrupt_smc+1
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
done_iic_hack:
|
done_iic_hack:
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -70,8 +70,6 @@ ssi263_speech_init:
|
||||||
ldx #SSI263_I
|
ldx #SSI263_I
|
||||||
jsr ssi263_write_chip
|
jsr ssi263_write_chip
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cli ; enable interrupts
|
cli ; enable interrupts
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -84,6 +82,8 @@ ssi263_speech_init:
|
||||||
ssi263_speech_shutdown:
|
ssi263_speech_shutdown:
|
||||||
sei
|
sei
|
||||||
|
|
||||||
|
jsr ssi263_disable
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,6 +195,27 @@ no_oflo:
|
||||||
|
|
||||||
speech_end:
|
speech_end:
|
||||||
|
|
||||||
|
jsr ssi263_disable
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ssi263_disable:
|
||||||
; If at the end, turn everything off
|
; If at the end, turn everything off
|
||||||
|
|
||||||
; Toggle CTL while DR set to disable A/!R
|
; Toggle CTL while DR set to disable A/!R
|
||||||
|
@ -222,21 +243,8 @@ speech_end:
|
||||||
ldx #VIA6522_IER2
|
ldx #VIA6522_IER2
|
||||||
jsr ssi263_write_chip
|
jsr ssi263_write_chip
|
||||||
|
|
||||||
end_interrupt:
|
rts
|
||||||
|
|
||||||
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_busy: .byte $00
|
||||||
speech_playing: .byte $00
|
speech_playing: .byte $00
|
||||||
|
|
Loading…
Reference in New Issue