Fuse / Hatari / Atari800 / Vice / Snes9x-gtk z padem na USB.

Testowałem ostatnio Fuse (emulator ZX Spectrum), Hatari (emulator ST), Atari800,  Vice (emulator Commodore) i Snes9x-gtk/zsnes (emulatory Super Nintendo). Ku mojemu zdziwieniu we wszystkich tych emulatorach idealnie działa pad Speedlink Thunderstrike, ktory jest przez system widziany jako standardowy joy, dostępny przez /dev/input/js0.

W Fuse, w opcjach Peripherials – > General włączamy interfejs Kempston, a potem w ustawieniach joysticka, wystarczy wybrać typ joya Kempston.

Fuse zasługuje na osobną wzmiankę, bo jest to chyba najlepszy emulator dla PC jaki widziałem do tej pory. Nie działała mi opcja –full-screen, pomimo że binarka fuse była zlinkowana z SDL. Okazało się, że aby fuse używał SDL do gui, trzeba kompilować z –with-sdl. Po dodaniu tej opcji program traci menu okienkowe, pojawia się za to menu ekranowe w stylu Spectrum 128K jak na powyższych screenach, obsługiwane za pomocą joysticka :).

Tak swoją drogą jakby ktoś miał zbędnego spectruma, chętnie przygarnę.

Atari800 dziala out-of-the-box (co mnie chyba najbardziej zdziwilo i ucieszylo), a w Hatari w ustawieniach joya trzeba wybrać „use real joystick”, emulator sam wykrywa pada.

Emulatory to dobra rzecz. Np jak tv jest okupowany przez żonę lub dzieci.

Effectus na starych linuksach.

Zdarza mi się ostatnio testować i kompilować (na prośbę przesympatycznego autora) Effectusa, czyli cross compiler Atari Action! na PC dla Linuksa.

Zastanawiałem się jak wypada kompatybilność statycznych binarek, które kompiluje na Archu. No i wg moich ustaleń na wszystkim co ma glibc w wersji 2 powinno działać.
Testy przeprowadziłem na dystrybucji którą znam i której kiedyś używałem: Slackware w wersjach 1.0.1, 2.2.1 i 7.0.

Wybór był nieprzypadkowy. Na początku myślałem, że wystarczy w kernelu obsługa formatu binarnego ELF. Slackware 1.0.1 z kernelem 0.99.12 jeszcze tego formatu nie obsługiwał. Kolejny, czyli Slackware 2.2.1 miał już kernel 1.2.1 czyli ELF na 100% obsługiwany. Segfaulty sugerowały, że to jednak libc się gryzie. Kiedyś dawno zrobiłem taki eksperyment na potrzeby dyskusji o ABI kernela i moje programiki działały z kernelem 0.1, ale one nie używały libc, tylko wprost funkcje os-u.

Pierwszym Slackiem z glibc2 była wersja 7, od ktorej zaczęła się moja poważniejsza przygoda z Linuksem. Rok 1999, full-wypas kernel 2.2. No i jak się spodziewałem, binarki effectusa i madsa zadziałały bez problemu.

A tak swoją drogą instalacja Linuksa z 1993 w 2014 to ciekawe doświadczenie. Qemu nie jest w stanie zaemulować kontrolera scsi, czy też obsługiwanego 20 lat temu CD romu, ale to nie problem. Można stworzyć obraz dysku w pliku (dd) i w nim utworzyć system plików, np msdos. W ten sposób stworzyłem dysk zawierający wszystkie serie pakietow (można taki obraz zamontować z -o loop=/dev/loop0), który potem montowałem w trakcie instalacji do /root/dos, a instalator pozwala na instalację pakietów ze wskazanego, wcześniej zamontowanego nośnika. Wygodne to i szybkie rozwiązanie, a dziala chyba we wszystkich wersjach Slackware.

Niesamowite jest to, jak przyjemnym w użytkowaniu był Slackware już w 93 roku ubiegłego stulecia…

A działanie binarek effectusa/madsa  na dystrybucji z 1999 roku, czyli sprzed 15 lat daje do myślenia.

Mist: ZX81

Bardzo mnie ta zmiana w changelogu ucieszyła:

https://code.google.com/p/mist-board/source/detail?r=274

Teraz tylko jeszcze core C64 i MIST będzie najlepszym na świecie projektem retro-FPGA.

Update:

No i się podziało https://code.google.com/p/mist-board/source/list

1. Nowy core atari800 – mistrzostwo, działa pięknie. Nawet beep’em all XXL-a w końcu udało się odpalić (xbios na Side nie działa). Zgodność z oryginałem jak dla mnie 100%. Są tryby turbo, 4MB ramu. Pojawił się nawet core z wyjściem RGB więc zrobię odpowiedni kabel  i podłącze się do tv bez konwertera.

2. Do odpalenia c64 niestety brakuje obsługi stacji 1541. Kod opensource który jest nie jest zgodny licencyjnie z tym rdzeniem, więc trzeba by go napisać od nowa, a szkoda.

 

Następne pokolenie atarowców.

Moje młode zajawiły się na Boulder Dash-a. Zwłaszcza Kuba (4 lata). I o dziwo radzi sobie calkiem nieźle. Minęło 40 minut a on dalej próbuje uciec przed kamykami :).

No i dla Kuby Boulder Dash to zabawa w kucanego berka w telewizorze 🙂

PS: Dzisiaj ponad godzinę wałkował Robbo i Boulder Dasha na zmianę. Niezły zawodnik.

MIST – to działa!

Za mój komentarz niech posłuży poniższa galeria. Dodam tylko, że MIST działa z moim telewizorem przez wspomniany wcześniej konwerter AK145A.

Po kilku dniach eksperymentów, stwierdzam jedno: rewelacja i mistrzostwo świata, mam wrażenie jakbym odpalał programy na prawdziwym sprzęcie. Udało mi się ustawić ekran (położenie poziome i pionowe) we wszystkich trzech rdzeniach, więc nie wymaga to poprawek za każdym razem jak przełączam rdzeń. W przypadku ST lepiej sprawdzają się TOS-y z UK (nie wiem  jak to wyjaśnić, ale obraz prawidłowo się dopasowuje do ekranu w PAL) a w rdzeniu atari800 brakuje mi w zasadzie tylko obsługi podkatalogów w file-selektorze (pod F9).

Nieczęsto mi się to zdarza, ale po tych kilku dniach nie mam wątpliwości – kupiłbym MIST ponownie. Jedynie obudowę można by trochę dopieścić (na 100% wymienię wymieniłem przedni biały panel na przeźroczysty z poliwęglanu plexi).

No i jeśli wierzyć pogłoskom szykuje się core SNES i C64, a w aktualnym firmware jest już nawet obsługa joysticków USB, czas więc na jakiś wypasiony pad, zamiast wysłużonego Matt-a.

Konwerter VGA -> Composite.

Napaliłem się na MIST ale mój telewizor nie obsługuje VGA, a miejsca na dodatkowy monitor w domu nie ma. Zakupiłem na Allegro konwerter AK145A i po zmajstrowaniu na szybko kabla RCA (Composite) -> SCART miło się zdziwiłem. W rozdzielczościach typowo Atarowych obraz z emulatora jest perfekcyjny, a i film można na ekranie TV wyświetlić z powodzeniem.

Przyzwyczaiłem się już, że moje retro-sprzęty podłączam do telewizora, a że jest to tani LCD sprzed lat, czasem trzeba sobie jakoś radzić. Gorzej, jak się okaże, że konwerter nie będzie zgodny z MIST. Trzeba będzie wtedy poszukać monitora… 

Uflasher & APT Tools by FJC.

FJC opublikował zestaw narzędzi dla U1MB i Side: MATR do montowania obrazów dysków atr, FDISK4 do partycjonowania i dodawania zewnętrznych partycji FAT16, oraz co zasługuje na szczególną uwagę UFLASHER, narzędzie do flashowania poszczególnych fragmentów pamięci flash U1MB z poziomu Atari. Uflasher w połączeniu z partycją FAT16 umożliwia szybkie i bezpieczne aktualizacje SDX, zintegrowanego loadera, pbi, wszystko z osobna, lub w całości.

uflash
Możliwe jest zapisywanie/backup romów, oraz edycja opisów wyświetlanych przez bios Ultimate. Używanie rom generatorów i flashowanie przez sio2pc nie będzie już potrzebne, a Ultimate z Side dzięki narzędziom stworzonym przez Jona, stało się rozwiązaniem kompletnym i doskonałym (z perspektywy moich retro-eksperymentów nic już nie brakuje  ;))

Uflash i narzędzia dla APT dostępne są na stronie FJC.

VBXE + Action! – Mapa atrybutów.

Kolejny „przełomowy” przykład na podstawie kodu Rybags’a w Basicu. Film ponizej pokazuje szybkosc dzialania w Atari Basic vs Action!

set 14=$8000
set $491=$8000
include "H1:RUNTIME.ACT"

proc main()
 byte vc=$D640, memcont=$D65E, membank=$D65F
 byte xdla0=$D641, xdla1=$D642, xdla2=$D643
 byte pointer p=$A000
 byte i, j, curinh=752
 int bc, lum, ls
 card cs

 if vc<>$10 then
  printe("Brak VBXE FX")
  do od
 fi

 memcont=$A8
 membank=128

 p^=40 p==+1
 p^=14 p==+1
 p^=7 p==+1
 p^=0 p==+1
 p^=16 p==+1
 p^=0 p==+1
 p^=0 p==+1
 p^=0 p==+1
 p^=0 p==+1
 p^=0 p==+1
 p^=7 p==+1
 p^=7 p==+1
 p^=2 p==+1
 p^=255 p==+1

 for i=0 to 75 step 3
  do
   p^=40 p==+1
   p^=0 p==+1
   p^=7 p==+1
  od

 p^=0 p==+1
 p^=128

 membank=129

 for i=0 to 23
  do
   cs=$A000+i*80 lum=6 ls=2 bc=0
   for j=0 to 39 do
    p=cs+j*4
    p^=0 p==+1
    p^=lum p==+1
    lum==+ls
    if lum=15 or lum=6 then
     ls=-ls
    fi
    p^=bc p==+1
    bc==+12
    if bc>255 then bc==-255 fi
    p^=0
  od
 od

 xdla0=0 xdla1=0 xdla2=0

 graphics(0)
 curinh=1
 vc=3

 printf("%EVBXE is cool!")
 do od
return

Różne wartości MAPSTEP i przyrostu bc dają różne efekty:

Od razu przychodzi do głowy żeby te wartości zmieniać w VBI…