Autor Wątek: Timingi 48K, 128K i klonów  (Przeczytany 14467 razy)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #15 dnia: 2018.08.09, 10:37:41 »
Sam w trybie graficznym "Spectrum" automatycznie spowalnia procesor do ~3.5 MHz, ale timingi oczywiście nijak się mają do wszystkich innych wersji.

Kompatybilność "emulatorów" była tam nastawiona głównie na gry i raczej nikt nie planował odpalać wymagający dem ze Spectrum zwłaszcza, że poza prędkością procesora i zgodnością trybu graficznego trzeba by jeszcze emulować AY.

No i oczywiście ten tryb poza "emulowaniem" Spectrum w zasadzie do niczego innego się nie nadawał. Nie wiem czy jakiekolwiek natywne programy go używały. Jedyne inne "praktyczne zastosowanie" było takie, że jak się wciskało i trzymało reset to Sam zerował rejestry od grafiki i na ekranie pojawiała się zawartość zerowej strony w zerowym (czyli "spectrumowym") trybie graficznym (ale bez wyzerowanych rejestrów kolorów więc w dwóch kolorach zależnych od tego, co akurat było ustawione przez resetowany program).

Sir David

  • ****
  • Wiadomości: 391
  • Miejsce pobytu:
    Białystok
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #16 dnia: 2018.08.09, 12:07:43 »
SAM nie spowalnia procesora, a jedynie w trybie graficznym zgodnym ze Spectrum wprowadza dodatkowe opóźnienia w czasie rysowania ekranu. I tu ważna uwaga: tylko w czasie rysowania właściwego ekranu graficznego, a nie ramki. Dlatego w czasie rysowania ramki linia ma więcej taktów procesora niż w czasie rysowania właściwego ekranu (to akurat dotyczy każdego trybu graficznego na SAMie powodując problemy przy odgrywaniu sampli, ale w MODE 1 różnica jest jeszcze większa). Powoduje to chyba największą niedogodność w emulowaniu ZX Spectrum na SAMie: muzyka na beeperze brzmi bardzo źle. Z tego co pamiętam (testy robiłem ze 350 lat temu), prędkość SAMa (ilość taktów procesora w ramce) przy emulacji ZX Spectrum jest większa niż modeli 128k, ale mniejsza niż Pentagona.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #17 dnia: 2018.08.09, 12:20:05 »
Skoro wprowadza opóźnienia to znaczy, że jednak spowalnia ;)

Nie pamiętam, czy ASIC generuje zegar i jak ULA po prostu go zatrzymuje, czy robi to wystawiając jakieś waity dla procesora. Efekt jest jednak ten sam - w "trybie spectrum" prędkość jest na tyle zbliżona, że jeśli nie przeszkadza nam okropnie brzmiący dźwięk z beepera (faktycznie - o tym zapomniałem ;)) to da się pograć w Spectrumowe gierki.

Jako off-topiczną ciekawostkę z podwórka "emulowania" Spectrum na Samie powiem, że w swoim czasie zrobiłem własny "emulator" - kawałek kodu ustawiający odpowiednie tryby, pamięć, i odpalający ROM - nie pamiętam dokładnie jak zrobiłem kwestię wczytywania programów (na pewno coś wczytywał z dyskietki) natomiast dodałem "szukacz POKE'ów" i monitor. Dzięki temu udało mi się w tamtych czasach znaleźć POKE'i do kilku gier do których na prawdziwym Spectrum znaleźć miałem problemy ;)

Sir David

  • ****
  • Wiadomości: 391
  • Miejsce pobytu:
    Białystok
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #18 dnia: 2018.08.09, 12:36:50 »
ASIC nie ingeruje w zegar. Gdyby to robił, dałoby się zrobić to spowolnienie lepiej. Sposób dodatkowego spowalniania w MODE 1 jest opisany bodaj w Technical Manual. Z tego co pamiętam, w co czwartym takcie jest wstawiany wait dla procesora, ale tylko w czasie rysowania ekranu.

Ja w "dawnych czasach" na SAMie grałem głównie w gry ze Spectrum i ten dźwięk mi trochę przeszkadzał, ale się z tym pogodziłem i przestałem zwracać uwagę. Tym bardziej po podłączeniu AY-greka i przerobieniu paru gier z 48k+AY żeby go obsługiwały. "Mój" emulator dla odmiany był przerobionym "Sam Tape 3" z LERM Software z dodaną między innymi możliwością automatycznego poprawienia portów na mój AY.