From f97baeb88e55cf6834971688cf52514488ba4cb1 Mon Sep 17 00:00:00 2001 From: frankmilliron <34376619+frankmilliron@users.noreply.github.com> Date: Fri, 4 Sep 2020 08:20:37 -0700 Subject: [PATCH] fix Fastchip joystick detection on older firmware (#338) --- src/hw.accel.a | 15 --------------- src/hw.joystick.a | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/src/hw.accel.a b/src/hw.accel.a index cf5090707..efc20d80f 100755 --- a/src/hw.accel.a +++ b/src/hw.accel.a @@ -125,8 +125,6 @@ FC_UNLOCK = $6A ; write 4 times FC_LOCK = $A6 FC_1MHZ = 9 FC_ON = 40 ; doco says 16.6Mhz -FC_SPKR = 2 -FC_HIFI = 4 ; TransWarp I ; may overlap with paddle trigger @@ -214,19 +212,6 @@ build_setspeed rts build_addon - lda #FC_UNLOCK ; change Fastchip speaker setting to 'HIFI' - sta fc_lock ; (improves sound on most games) - sta fc_lock ; (setting reverts on power cycle) - sta fc_lock - sta fc_lock - sta fc_enable - lda #FC_SPKR - sta fc_config - lda #FC_HIFI - sta fc_data - lda #FC_LOCK - sta fc_lock - lda #addon ldx #(end_addon-addon) diff --git a/src/hw.joystick.a b/src/hw.joystick.a index 48abede5f..1260eee86 100644 --- a/src/hw.joystick.a +++ b/src/hw.joystick.a @@ -13,7 +13,55 @@ ; (c) 1989 Broderbund Software ; https://github.com/jmechner/Prince-of-Persia-Apple-II/blob/master/01%20POP%20Source/Source/GRAFIX.S#L1225 ;------------------------------------------------------------------------------ +; Fastchip firmware 0.4b-compatibility fix by Frank M. (0.5b seems unaffected) +;------------------------------------------------------------------------------ HasJoystick + + lda $FBB3 + cmp #$06 + bne ++ + lda $FBC0 + cmp #$E0 + beq + ; test for Fastchip on enhanced //e + cmp #$EA + beq + ; test for Fastchip on non-enhanced //e + jmp ++ + ++ ; FASTChip +fc_lock = $C06A +fc_enable = $C06B +fc_config = $C06E +fc_data = $C06F +FC_UNLOCK = $6A ; write 4 times +FC_LOCK = $A6 +FC_SPKR = 2 ; speaker delay register +FC_HIFI = 4 ; set to 'HIFI' +FC_JOY = 3 ; joystick delay register +FC_LONG = 2 ; set to 'LONG' + + lda #FC_UNLOCK + sta fc_lock + sta fc_lock + sta fc_lock + sta fc_lock + sta fc_enable + lda fc_enable ; 00 if no fastchip + cmp #$80 ; 80 if Fastchip normal + bne ++ ; A0 if Fastchip disabled + + lda #FC_JOY ; change Fastchip joystick delay setting to 'LONG' + sta fc_config ; (improves joystick detection) + lda #FC_LONG + sta fc_data + + lda #FC_SPKR ; change Fastchip speaker delay setting to 'HIFI' + sta fc_config ; (improves sound on most games) + lda #FC_HIFI + sta fc_data + + lda #FC_LOCK ; (settings revert on power cycle) + sta fc_lock +++ lda #0 sta @joyX sta @joyY