mirror of
https://github.com/a2-4am/4cade.git
synced 2024-11-26 17:49:43 +00:00
work around IIe card VBL issue
This commit is contained in:
parent
f4165fab50
commit
f6a55dc181
@ -1,5 +1,5 @@
|
|||||||
;license:MIT
|
;license:MIT
|
||||||
;(c) 2020 by Frank M.
|
;(c) 2020, 2022 by Frank M., qkumba
|
||||||
|
|
||||||
!cpu 6502
|
!cpu 6502
|
||||||
!to "build/PRELAUNCH.INDEXED/FLAPPLE.BIRD",plain
|
!to "build/PRELAUNCH.INDEXED/FLAPPLE.BIRD",plain
|
||||||
@ -7,7 +7,20 @@
|
|||||||
|
|
||||||
!source "src/prelaunch/common.a"
|
!source "src/prelaunch/common.a"
|
||||||
|
|
||||||
jmp $800
|
+READ_RAM2_NO_WRITE
|
||||||
|
jsr EnableAccelerator
|
||||||
|
lda #$60
|
||||||
|
sta $813
|
||||||
|
jsr $800
|
||||||
|
+READ_RAM1_NO_WRITE
|
||||||
|
lda WaitForVBL
|
||||||
|
eor #$60
|
||||||
|
bne @good_vbl ; if VBL disabled in TR
|
||||||
|
sta $2971 ; then disable VBL in game
|
||||||
|
|
||||||
|
@good_vbl
|
||||||
|
+DISABLE_ACCEL
|
||||||
|
jmp $2000
|
||||||
|
|
||||||
!if * > $1C0 {
|
!if * > $1C0 {
|
||||||
!error "code is too large, ends at ", *
|
!error "code is too large, ends at ", *
|
||||||
|
@ -10,17 +10,23 @@ my_vbl
|
|||||||
!source "src/prelaunch/common.a"
|
!source "src/prelaunch/common.a"
|
||||||
|
|
||||||
+READ_RAM1_NO_WRITE
|
+READ_RAM1_NO_WRITE
|
||||||
|
lda WaitForVBL
|
||||||
|
cmp #$60
|
||||||
|
beq @skip_vbl
|
||||||
lda WaitForVBL+1
|
lda WaitForVBL+1
|
||||||
sta @copy_vbl+1
|
sta @copy_vbl+1
|
||||||
lda WaitForVBL+2
|
lda WaitForVBL+2
|
||||||
sta @copy_vbl+2
|
sta @copy_vbl+2
|
||||||
|
|
||||||
|
@skip_vbl
|
||||||
lda MachineStatus
|
lda MachineStatus
|
||||||
and #CHEATS_ENABLED
|
and #CHEATS_ENABLED
|
||||||
php
|
php
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
@copy_vbl
|
@copy_vbl
|
||||||
lda $d1d1,y ; SMC
|
lda WaitForVBL,y
|
||||||
|
; SMC, default to no VBL
|
||||||
sta my_vbl,y
|
sta my_vbl,y
|
||||||
iny
|
iny
|
||||||
cmp #$60
|
cmp #$60
|
||||||
|
@ -15,21 +15,31 @@
|
|||||||
and #CHEATS_ENABLED
|
and #CHEATS_ENABLED
|
||||||
sta cheat_smc1+1
|
sta cheat_smc1+1
|
||||||
sta cheat_smc2+1
|
sta cheat_smc2+1
|
||||||
|
lda WaitForVBL
|
||||||
|
cmp #$60
|
||||||
|
php
|
||||||
+READ_ROM_NO_WRITE
|
+READ_ROM_NO_WRITE
|
||||||
lda #$60
|
lda #$60
|
||||||
sta $13B8
|
sta $13B8
|
||||||
jsr $1200 ; decompress
|
jsr $1200 ; decompress
|
||||||
|
|
||||||
lda #<callback1
|
lda #<callback1
|
||||||
sta $FE06
|
sta $FE06
|
||||||
|
lda #<callback2
|
||||||
|
sta $FD26
|
||||||
lda #>callback1
|
lda #>callback1
|
||||||
sta $FE07
|
sta $FE07
|
||||||
|
sta $FD27
|
||||||
|
plp
|
||||||
|
bne @good_vbl
|
||||||
|
ldx #<callback3
|
||||||
|
stx $FD6A
|
||||||
|
sta $FD6B
|
||||||
|
|
||||||
|
@good_vbl
|
||||||
jmp $EE00
|
jmp $EE00
|
||||||
|
|
||||||
callback1
|
callback1
|
||||||
lda #<callback2
|
|
||||||
sta $FD26
|
|
||||||
lda #>callback2
|
|
||||||
sta $FD27
|
|
||||||
cheat_smc1
|
cheat_smc1
|
||||||
lda #0
|
lda #0
|
||||||
beq +
|
beq +
|
||||||
@ -50,6 +60,11 @@ cheat_smc2
|
|||||||
+
|
+
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
callback3
|
||||||
|
lda #$60 ; if VBL disabled in TR
|
||||||
|
sta $4ED ; then disable VBL in game
|
||||||
|
jmp $F924
|
||||||
|
|
||||||
!if * > $1C0 {
|
!if * > $1C0 {
|
||||||
!error "code is too large, ends at ", *
|
!error "code is too large, ends at ", *
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user