Przeanalizowałem schemat AR i zacząłem mieć obawy, że freezer nie zawsze jest skuteczny. Moje obawy potwierdził zamieszczony poniżej program, który dość wrednie testuje skuteczność freezer'a Action Replay'a.
Po uruchomieniu można go zatrzymać spacją i sprawdzić obszar $8000 $80ff - powinien być wypełniony tą samą jednobitową wartością, to jest $01 albo $02, albo $04, albo $08, albo $10, albo $20, albo $40, albo $80...
Wystarczy podczas działania programu sfreezować go kilkukrotnie i odfreezować, a następnie wcisnąć spację i sprawdzić zawartość obszaru $8000 $80ff...
Kisiel zna odpowiedź czemu tak się dzieje...
IMHO wygodniej byłoby kierować się timingiem freezer'a samym BA. Jeden problem BA nie zadziała, gdy jest wyłączone $d011 i nie ma włączonych żadnych sprajtów
!to "batest.prg" , CBM
sp_code = $2000
test_area = $8000
*= $0801
!byte $0B,$08,$90,$06,$9E,$32
!byte $30,$34,$39,$00,$A0,$00
sei
ldx #$00
stx store_byte+1
lda #>sp_code
sta store_byte+2
- lda #$80
sta test_area,x
lda #$7e
jsr store_byte
txa
jsr store_byte
lda #>test_area
jsr store_byte
inx
bne -
lda #$60
jsr store_byte
clc
- jsr sp_code
bcc +
ror test_area
+ lda $dc01
and #$10
bne -
rts
store_byte sta $8000
inc store_byte+1
bne +
inc store_byte+2
+ rts