C64Power Forum
Hardware => Hardware => Wątek zaczęty przez: wegi w 06 Sierpnia 2016, 16:40
-
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
-
W Ultimate jest to poprawnie zrobione ?
-
Nie mam pojęcia, ale podejrzewam, że tak. Poprawnie jest w EF3 :) Przy okazji Gratulacje za schemat GA. Po dłuuugiej analizie doszedłem do wniosku, że konstrukcja nie jest przypadkowa i jest bardzo przemyślana.
-
Odpaliłem ten programik na Ultimate z obrazem RR, a potem AR. Rozumiem co on robi ale nie wiem jaki ma być wynik błędnego działania freeza. Ta strona danych ma mieć od pewnego miejsca inną wartość? Bo jeśli tak to nie udało mi się się takiego efektu uzyskać.
-
Odpaliłem ten programik na Ultimate z obrazem RR, a potem AR. Rozumiem co on robi ale nie wiem jaki ma być wynik błędnego działania freeza. Ta strona danych ma mieć od pewnego miejsca inną wartość? Bo jeśli tak to nie udało mi się się takiego efektu uzyskać.
Tak na tej stronie pojawi się bałagan. Nie będzie jednakowej wartości. Dałeś odpowiedź Kisielowi, że 1541U ma poprawną implementację freeza'a - dzięki. Jak masz to potestuj na jakimś zwykłym AR.
-
Akurat pytanie retoryczne, freez w U działa troszkę inaczej. W końcu NMI też można zablokować😀
-
Odnośnie 1541U-II i freeze mogę jeszcze dodać że na grze "Caren" zawodzi ten "drugi freeze" który służy do wywołania menu Ultimate - po wejściu i wyjściu z menu pada jakaś synchronizacja w obrazie, coś się "rozcyklowuje" i wygląda tak jakby co drugą ramkę działało, natomiast zwykły freeze wstrzymuje i wznawia grę bez problemu, więc chyba nie jest to tak do końca dopracowane, ale poza tą grą nie spotkałem się z tym żeby ten drugi freeze coś popsuł.
-
Sfreezuj demo fogyish zaraz na starcie na szachownicy, sfreezuj dema quisa, szachownicę z EOD...
-
żeby coś takiego zfreezować musisz zatrzymać zegar... da się w VICE to dlaczego nie w c64 ;)
-
Dokładniej, da się odtworzyć zachowanie vic'a z dokładnością do cyklu. Czyli np. linia 262.61 i w tym cyklu wznowić proca. Rozwiązanie jest dość proste, ponieważ koder może mieszać w ustawieniach znacznie najlepiej wybrać moment kiedy zaczyna się ramka, wyrywając impuls odchylania pionowego można zrobić bardzo stabilnego freeza.
Da się , tylko poco.
-
żeby coś takiego zfreezować musisz zatrzymać zegar... da się w VICE to dlaczego nie w c64 ;)
Ale CIA nie sfreezujesz...
-
Tak zupelnie serio to ten freezer jest uzyteczny w dzisiejszych czasach?
-
Zakładam, że skoro ten przycisk jest wyprowadzany poza samymi natywnymi SS AR FC3 itp. na EF3, Ultimate GA, MA, to trzeba brać pod uwagę jego funkcjonalność jak i poprawność działania. A są ludzie jak V12 ortodoksyjnie przywiązani do sprzętu.
-
Dziwie sie, ze jeszcze sa tacy ortodoksi w dobie takich narzedzi: http://csdb.dk/release/?id=149036 :)
-
żeby coś takiego zfreezować musisz zatrzymać zegar... da się w VICE to dlaczego nie w c64 ;)
Ale CIA nie sfreezujesz...
dlaczego nie ? Robisz freeza i używasz swojego CIA#3 do obsługi klawiatury. Da się dużo rzeczy ale nie na płycie c64.
-
Nie sfreezujesz CIA zsynchronizowanego z rastrem wywołującym przerwania NMI w określonym miejscu rastra. Co z tego że nawet sfreezujesz jeżeli masz wyłączoną grafikę $d011 i otwarte bordery żeby wyświetlać na nich sprajty, bo po unfreeze musiałbyś ramkę wcześniej otworzyć dolny border, a niby skąd możesz wiedzieć że masz to zrobić.
-
Nie musisz jak zatrzymujesz zegar. Zegar mozesz zatrzymać dla cia i cpu oddzielnie, tylko nie bez moda płyty. Drugi problem jaki jest z freezami ...po co. Ma to zgrać pamięć? Zgrać na dysk? A co z transmisją bez potwierdzenia itd.
-
Dzięki "ortodoksji" ostatnio miałem okazję przetestować jak się zachowuje AR z SX-64 i ku mojemu zaskoczeniu - nie da się pracować w tej konfiguracji sprzętowej bez modyfikacji ROM-u. SX narzuca za każdym razem białe tło, a Action narzuca za każdym razem biały kursor. Nawet po zmianie koloru kursora i np. wyświetleniu dira, kursor z automatu zmienia po chwili kolor na biały. :)
Mnie bardziej interesowałaby poprawka w AR, dzięki której nie byłaby niszczona część pamięci RAM podczas wykonywania operacji na stacji dysków, gdzie wykorzystywane jest actionowskie turbo. Przy freezarce najbardziej zastanawiało mnie to, czy można sfreezować demko, by była dalej możliwość jego kontynuacji, gdy wykorzystuje on irq loader. A dzięki researchowi Wegiego przynajmniej wiemy, czemu nie zawsze freezarka działa prawidłowo, tzn. nie każda produkcja działa po restarcie.