wargames: fix to work in cases w/o ssi-263

This commit is contained in:
Vince Weaver 2021-09-19 00:01:26 -04:00
parent 868ae59e44
commit f77b683740
4 changed files with 43 additions and 11 deletions

View File

@ -10,6 +10,7 @@
;============================= ;=============================
;============================= ;=============================
; A = slot of mockingboard ; A = slot of mockingboard
; carry set if found
detect_ssi263: detect_ssi263:
and #$7 and #$7
@ -68,9 +69,13 @@ wait_irq:
bne wait_irq bne wait_irq
inx ; inx ;
bne wait_irq bne wait_irq
sei
clc ; not found
rts
got_irq: got_irq:
sei ; disable interrupts sei ; disable interrupts
sec ; found
rts rts

BIN
demos/wargames/wargames.dsk Normal file

Binary file not shown.

View File

@ -13,6 +13,7 @@ VGI_CX = P1
VGI_CY = P2 VGI_CY = P2
VGI_CR = P3 VGI_CR = P3
SSI_FOUND = $08
NIBCOUNT = $09 NIBCOUNT = $09
CH = $24 CH = $24
CV = $25 CV = $25
@ -68,6 +69,9 @@ wargames:
; jmp exchange ; debug ; jmp exchange ; debug
lda #0
sta DRAW_PAGE
jsr HOME jsr HOME
lda #<header lda #<header
@ -288,13 +292,21 @@ done_missiles:
jsr HOME jsr HOME
lda #0
sta SSI_FOUND
lda #4 ; assume slot #4 for now lda #4 ; assume slot #4 for now
jsr detect_ssi263 jsr detect_ssi263
bcc no_ssi
lda #1
sta SSI_FOUND
lda #4 ; assume slot #4 for now lda #4 ; assume slot #4 for now
jsr ssi263_speech_init jsr ssi263_speech_init
no_ssi:
speech_loop: speech_loop:
@ -314,10 +326,7 @@ speech_loop:
jsr move_and_print jsr move_and_print
; wait for it to complete ; wait for it to complete
jsr wait_for_ssi_done
wait1:
lda speech_busy
bne wait1
jsr wait_1s jsr wait_1s
@ -332,9 +341,7 @@ wait1:
jsr move_and_print jsr move_and_print
wait2: jsr wait_for_ssi_done
lda speech_busy
bne wait2
jsr wait_1s jsr wait_1s
@ -350,9 +357,7 @@ wait2:
jsr move_and_print jsr move_and_print
jsr move_and_print jsr move_and_print
wait3: jsr wait_for_ssi_done
lda speech_busy
bne wait3
bit KEYRESET bit KEYRESET
@ -728,3 +733,12 @@ parabolas:
; status grame x/x y/y dy/dy ddy/ddy destx/desty ; status grame x/x y/y dy/dy ddy/ddy destx/desty
wait_for_ssi_done:
lda SSI_FOUND
beq ssi_no_need
wait1:
lda speech_busy
bne wait1
ssi_no_need:
rts

View File

@ -1,3 +1,9 @@
Notes
~~~~~
Some people would like actual S.A.M. support like the original game,
but that takes 9kB! Is there room in TROGDOR for that?
Memory Map Memory Map
~~~~~~~~~~ ~~~~~~~~~~
@ -18,7 +24,7 @@ $BC-$BF ???
$C0-$CF I/O $C0-$CF I/O
$D0-$FF ROM $D0-$FF ROM
Disk Map (disk has 35 tracks, each 4k in size) Disk1 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 0 = Qboot T 0 = Qboot
T 1 = QLOAD 4813 bytes 19S = 1T3S T 1 = QLOAD 4813 bytes 19S = 1T3S
@ -31,6 +37,13 @@ T 19 = PEASANT2 ; 79 = 20224
T 24 = PEASANT3 T 24 = PEASANT3
T 29 = PEASANT4 T 29 = PEASANT4
Disk2 Map (disk has 35 tracks, each 4k in size)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T 19 = TROGDOR 13673 bytes
T 24 = ENDING 19690 bytes 77S = 4T13S
238, to 280 (6) 238, to 280 (6)
50 to 135 (85) 6*85=510 50 to 135 (85) 6*85=510