Fixed record mode so it functions on a system without a printer, enabling playback in Jace.

This commit is contained in:
Martin Haye 2021-11-05 09:55:36 -07:00
parent 961940537d
commit 46f9cafa53
4 changed files with 40 additions and 24 deletions

View File

@ -87,6 +87,7 @@ ROM_crout = $FD8E
ROM_prbyte = $FDDA
ROM_prhex = $FDE3
ROM_cout = $FDED
ROM_cout1 = $FDF0
ROM_setnorm = $FE84
ROM_setkbd = $FE89
ROM_setvid = $FE93

View File

@ -178,6 +178,43 @@ asm reseekRwts#0
rts
end
///////////////////////////////////////////////////////////////////////////////////////////////////
// Turn the printer on or off (assumes slot 1)
asm setPrinter(enable)#0
+asmPlasmNoRet 1
ldx #<ROM_cout1
ldy #>ROM_cout1
asl
beq +
; check slot ID bytes for printer in slot 1. If no printer, don't redirect.
lda $C105
cmp #$38
bne +
lda $C107
cmp #$18
bne +
lda $C10B
cmp #$01
bne +
lda $C10C
and #$F0
cmp #$10 ; printers appear to be $1x
bne +
; redirect cout to the printer
ldx #0
ldy #$C1
+ stx cswl
sty cswh
rts
end
///////////////////////////////////////////////////////////////////////////////////////////////////
def setRecordMode(enable)#0
recordMode = enable
if recordMode; recordSeed = 1; fin
setPrinter(recordMode)
end
///////////////////////////////////////////////////////////////////////////////////////////////////
def decideJace()#0
word i, a0count

View File

@ -132,7 +132,6 @@ import gamelib
predef setGameFlag(flagName, val)#0
predef setGround(num)#0
predef setMap(is3D, num, x, y, dir)#0
predef setRecordMode(enable)#0
predef setStoryMode(enable)#0
predef soundPlayEmu(numAndFlgs)#0
predef useMapWindow()#0
@ -178,6 +177,7 @@ import gamelib
byte isFloppyVer
byte isJace
byte recordMode
word recordSeed
byte prevClockColor, prevClockHour, prevClockMinute
byte nextSignificantMinute
byte lampFrame

View File

@ -203,7 +203,7 @@ export byte[] S_THEIR = "their"
word lastTick = 0
export byte recordMode = 0
word recordSeed
export word recordSeed
export byte diskLimit = 0
@ -971,21 +971,6 @@ asm internal_rand16()#1
}
end
///////////////////////////////////////////////////////////////////////////////////////////////////
// Turn the printer on or off (assumes slot 1)
asm setPrinter(enable)#0
+asmPlasmNoRet 1
ldx #<ROM_cout
ldy #>ROM_cout
asl
beq +
ldx #0
ldy #$C1
+ stx cswl
sty cswh
rts
end
///////////////////////////////////////////////////////////////////////////////////////////////////
// Clear the text-mode screen, and put the text cursor at the top of it.
export asm textHome()#0
@ -3079,13 +3064,6 @@ def help()#1
return 0
end
///////////////////////////////////////////////////////////////////////////////////////////////////
export def setRecordMode(enable)#0
recordMode = enable
if recordMode; recordSeed = 1; fin
setPrinter(recordMode)
end
///////////////////////////////////////////////////////////////////////////////////////////////////
def toggleGodMode()#1
byte key