
Wiele osób zastanawia się, czy można i jak nagrać gry na popularne `dyskietki` od Pegasusa. Raz nawet spotkałem się z użytkownikiem, który pytał innych, jak podłączyć stację dyskietek z PC do Pegasusa

Informacje techniczne
W Pegasusie mamy procesor CPU 6502 (układ UA6527P) który ma swoją szynę adresową oraz danych PRG (program), do której podłączona jest pamięć RAM oraz układ graficzny PPU (UA6538) z oddzielną szyną adresową oraz danych CHR (character - grafika) ze swoją pamięcią RAM. Układy te działają niezaleznie od siebie, aczkolwiek CPU może się komunikować z PPU.
Na złącze kartrydża wyprowadzona jest większość sygnałów obu procesorów (szyny adresowe, szyny danych).
Code:
-------
(# 1) GND - |01 31| - +5V (#60)
PRG A11 - |02 32| - M2
PRG A10 - |03 33| - PRG A12
PRG A9 - |04 34| - PRG A13
PRG A8 - |05 35| - PRG A14
PRG A7 - |06 36| - PRG D7
PRG A6 - |07 37| - PRG D6
PRG A5 - |08 38| - PRG D5
PRG A4 - |09 39| - PRG D4
PRG A3 - |10 40| - PRG D3
PRG A2 - |11 41| - PRG D2
PRG A1 - |12 42| - PRG D1
PRG A0 - |13 43| - PRG D0
PRG R/W - |14 44| - PRG /CE ( /15 or /M2 )
/IRQ - |15 45| - SND IN
GND - |16 46| - SND OUT
CHR /RD - |17 47| - CHR /WR
CHR A10 - |18 48| - CIRAM /CE
CHR A6 - |19 49| - CHR /A13
CHR A5 - |20 50| - CHR A7
CHR A4 - |21 51| - CHR A8
CHR A3 - |22 52| - CHR A9
CHR A2 - |23 53| - CHR A10
CHR A1 - |24 54| - CHR A11
CHR A0 - |25 55| - CHR A12
CHR D0 - |26 56| - CHR A13
CHR D1 - |27 57| - CHR D7
CHR D2 - |28 58| - CHR D6
CHR D3 - |29 59| - CHR D5
(#30) +5V - |30 60| - CHR D4 (#31)
-------
W kartrydżu mamy zwykle dwie pamięci ROM - jedną dla CPU oraz drugą dla PPU. Niestety taka architektura bardzo ogranicza możliwości sprzętowe - CPU był w stanie zaadresować tylko 32 kB pamięci, a PPU - 8 kB. Tylko bardzo proste gry (np. Super Mario Bros) były w stanie podołać tym wymaganiom. Producenci szybko zorientowali się, że potrzeba jakoś rozszerzyć możliwości sprzętowe. Zwiększenie ilości pamięci możliwej do zaadresowania stało dostępne poprzez mechanizm przełączania banków (ang. bankswitching). Wymusiło to zastosowanie w kartrydżach dodatkowych układów scalonych. Wiele producentów wprowadziło swoje rozwiązania (tzw. mappery), które między sobą nie były zgodne. Gry pisane były na konkretne rozwiązanie, wobec czego dana gra może współpracować tylko z mapperem, na który została stworzona.
Rodzajów maperów jest kilkadziesiąt, na szczęście najpopularniejszych jest tylko kilka, które pokrywają ok 80-90% wszystkich wydanych tytułów gier.
Mój projekt
Wiele maniaków romhackingu tworzy tzw. devcarty, czyli wylutowywuje z oryginalnej PCB z grą układy pamięci, na ich miejsce wkłądając podstawki, w które nastepnie można włożyć układy pamięci. Niestety wymaga to zniszczenia danej gry, a ponadto często producenci stosowali mask-romy (pamięci ROM jednokrotnego programowania) z niestandardowym pinoutem, wobec czego współpraca z ogólnodostępnymi pamięciami Flash wymagała wykonania dodatkowych krosów i przecięć ścieżek.
Ja zająłem się stworzeniem od zera PCB do popularnego mapera UNROM, aby nie niszczyć żadnej działającej gry. Wymaga on tylko dwóch dodatkowych układów scalonych z rodziny 74 - 4 bitowego rejestru z pamięcią (74HC161) oraz bramki OR (74HC32). Gry na ten maper mają rozmiar 128 kB. Ja dysponując pamięcią 512 kB postanowiłem zastosowac przełącznik ze zworek, dzięki czemu możemy na taką pamięć nagrać 4 gry i zworkami wybrać, w którą aktualnie chcemy grać.


Wyzwania
Pierwszym wyzwaniem było wykonanie dwuwastwowej PCB. Do tej pory nie robiłem takich z braku konieczności. Niestety złącze kartrydża w konsoli jest dwustronne, co wymusiło taką konieczność. Płytka pod tym względem wyszła wzorowo - wystarczy wydrukować dwie warstwy, zgrać je między sobą pod lampą, zszyć zszywaczem, do środka wsuną laminat i zaprasować laminarką.
Kolejny kłopot to grubość PCB. PCB ze złączem krawędziowym ma grubość 1,2mm (wynika to z szerokości złącza). Niestety laminaty są dostępne w grubościach 1 mm lub 1.5 mm. Ten drugi za bardzo rozpychałby styki, a pierwszy jest zbyt cienki i mógłby się nie utrzymać. Wybrałem jednak laminat 1 mm. Po pocynowaniu styków miedzią (dość grubą warstwą) styki mają grubość ok. 1.15mm czyli nie było kłopotu.
Po wytrawieniu płytka miała kilka podtrawień (w miejscach, gdzie po laminowaniu poprawiłem ściezki mazakiem). Miał także na to wplyw długi czas siedzenia w kąpieli b327 (ok. 4 godzin z uwagi na dość stary roztwór). Ponadtwo już po wykonaniu płytka nie działała, co było spodowowane dwoma mini-zwarciami - jednym na poziomie lutowania, a drugim niecałkowitym wytrawieniem przerw między ścieżkami.



Nagrywanie gier
Wystarczy wyjąć z podstawki pamięć 29f040, włożyć do programatora, zaprogramować, włożyć spowrotem do kartrydża i możemy grać.
Może to być rozwiązanie trochę uciążliwe. Niebawem stworzę urządzenie, do którego będzie się taki kartrydż wsuwało (jak do Pegasusa) i będzie można programować bez wyjmowania z pamięci. Urządzenie będzie też pozwalało zgrywac na PC istniejące gry (jest już podobny projekt - Kazzo).
Cool? Ranking DIY