fix Fastchip joystick detection on older firmware (#338)

This commit is contained in:
frankmilliron 2020-09-04 08:20:37 -07:00 committed by GitHub
parent 4585ea49a7
commit f97baeb88e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 15 deletions

View File

@ -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
ldy #>addon
ldx #(end_addon-addon)

View File

@ -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