29. 1. 2009

Update Minimigu

Projekt Minimig od Dennise von Weerena je mnohými považovaný za ultimátní řešení staré Amigy 500 v jednadvacátém století. Pro ty, co jej neznají řeknu asi tolik, že Minimig je deska, na které je procesor Motorola 68000 (tj. originální procesor ze staré dobré Amigy), podtaktovaný z 25 na 7 MHz, ale hlavně je na desce procesor Spartan, který je plně programovatelný a dokáže se správným softwarem emulovat celý OCS čipset. Tohle není zas taková bomba, ale důležité je, že krabička o rozměrech cca 12 x 12 x 2 cm dokáže nejen nahradit Amigu 500, ale navíc obsahuje vstup na PS/2 klávesnici a myš, výstup VGA na jakýkoliv monitor, zvukový výstup 3.5 mm jack, vstupy na joysticky + sériový port na update firmwaru. Veškerý software je pak uložen na standardní SD kartě. Takže po zapnutí téhle krabičky naběhne Kickstart 1.3 a po vložení virtuální diskety se již můžeme oddávat radovánkám "jako za starých časů", ale v mnohem přístupnějším kabátě. Neřešíme nic.

Teda - to není tak úplně pravda. Minimig je krom roztomilého hardwaru také softwarový projekt. A jelikož Dennis odvedl kus práce zejména na hardwaru, samotný software byl v první verzi dost ošemetný. Kompatibilita pod úrovní, rychlost načítání z disket pomalá o nemožnosti zapisovat nemluvě. Někteří by tedy nad Minimigem ohrnuli nos, ale Dennis dal celý software k dispozici jako OpenSource, takže se na to vrhla banda šikulů a co se nestalo - nová, mnohem dokonalejší verze (na rty se téměř dere "dokonalá", ale rezervy tam pořád jsou) od Jakuba Bednarskeho (Bednářský? Bednarský?) vystřelila Minimig do nebeských výšin.

Kolik PC byste potřebovali v roce 1985 na takovýto multitasking? Sledování procesů, paměti a vše je stabilní...

Jak jsem psal výše, veškerý software, tedy i emulační firmware Spartana, je uložen na SD kartě, takže stačí jen nahrát správný soubor na správné místo a je po starostech. Úplně takhle jednoduché to bohužel ale není. Ve skutečnosti je potřeba mít ještě v patici jeden řídící čip se správným firmwarem. Naštěstí se dá tento PIC programovat i bez programátoru přes sériový port, pokud je ovšem v PICu nahraný TinyBootLoader. A v mém případě - bohužel - jsem měl koupený Minimig od italské firmy ACube, která se neobtěžovala PIC dodávat v použitelné podobě (nemám to potvrzené, ale Minimigy koupené na Amigakitu by měly mít PIC v pořádku). A kupovat za mnoho tisíc programátor se mi nechtělo - tím méně mi ho někdo půjčí - když pominu to, že takhle do hloubky jsem se v tom nikdy nechtěl vrtat.

Amiga 500 tak, jak ji všichni známe. Včetně hlasového výstupu "Say" v základní instalaci, který mají nyní i Windows Vista.

Zde nastoupila spása Amigistů - kolega Chain, která má občas programátor půjčený. Takže jsem mu poslal samotný PIC, nacpal mi do něj TinyBootLoader - a PIC putoval zpátky ke mně. Tímto mu ještě jednou děkuji. Zbývá tedy updatovat PIC a nasypat nový firmware na SD kartu a bude vystaráno.

Update samotného PICu je operace kupodivu velice jednoduchá, když se ovšem ví, jak na to. Rozhodl jsem se tedy proces popsat pro další generace, protože zjednodušený popis od Chaina byl na můj vkus a znalosti příliš strohý. Takže začneme.

Pohled na pracoviště.

0) Stáhneme si program Tiny PIC Bootloader. A samozřejmě nejnovější firmware na stránkách Dennisa (v současné době tedy jde o minimigJ_build_04_08_2008.zip - Jakub's improved Minimig firmware and core builds, read the readme!).
1) Minimig připojíme sériovým kabelem k PC.
2) Vypojit všechny jumpery ze SpareIO. Jumper na přepínání 31/15 kHz jsem nechal na původní hodnotě, poslední jumper přepnout z FPGA na MCU.
3) Spustit program TinyBootloader na PC.
4) Zapojit Minimig do proudu (jak jste si všimli, krom sériového kabelu a proudu není v Minimigu zapojené NIC. SD kartu jsem ponechal ve slotu).
5) Teď přichází alchymie. V okénku Messages vidíme tlačítko CheckPIC. Abychom vůbec otestovali, že komunikace funguje, podržíme na Minimigu tlačítko PGM RESET, následně klikneme na CheckPIC a ihned v zápětí, do jedné sekundy (nenechat dojet do konce progress bar!), pustíme tlačítko PGM RESET.
6) Pokud jsem toto udělali správně, v okénku Messages se nám napíše něco jako toto:
Connected to \\.\COM1 at 115200 Searching for PIC ... Found:18F 252o/452o
Což je dobrá zpráva.
7) Pakliže se tohle všechno stalo, postoupíme k zápisu nového firmware. Nahoře pomocí tlačítka Browse lokalizujeme soubor firmware.hex (součást balíku staženého z Dennisových stránek).
8) Nyní vrchol alchymie. Podržíme na Minimigu tlačítko PGM RESET, klikneme myší na Write Flash a v zápětí - opět do jedné sekundy - pustíme tlačítko PGM RESET.
9) Pokud vše proběhlo správně, měli bychom vidět progress bar, jak nabíhá zápis do flash, který skončí asi za 10 sekund.
10) Nyní stačí zapojit jumper na FPGA, naládovat na kartu správný minimig1.bin soubor - a hotovo!

S čím jsem se potýkal - no na trik s puštěním PGM RESET do jedné sekundy jsem přišel experimentem sám. Další věc - v programu Tiny PIC bootloader je také okénko Terminal. Když v něm klikneme na "open" a zapneme Minimiga, měli bychom vidět základní výpis bootu Minimiga v čitelné formě. Zvláštní je, že když jsem snížil rychlost přenosu na 57600, tak mi to vypisovalo nesmysly (ale pořád vypisovalo něco - tj. věděl jsem, že nějaká komunikace tam probíhá). Chybové hlášky, které případně vypisuje terminál vedou k lepší identifikaci problému. U mne byl problém akorát se správným firmwarem pro Spartana, následně se všechno spustilo jako víno. Celá operace netrvá déle, než deset minut, jenom se svými problémky jsem se s tím mořil asi hodinu.

A jaké jsou výsledky? Naprosto skvělé!

V hlavním menu Minimiga nyní vidíme, jestli je možné zapisovat na diskety. Je možné si navolit několik kombinací paměti (512k je málo, takže 1,5 MB RAM - kombinovaná CHIP a FAST je ultimátní) a dokonce možnost si vybrat konkrétní verzi Kickstartu. Tato nová verze má navíc podporovat ActionReplay3, ale k tomu jsem se ještě nedostal. Další prima věcí je, že blikání disketovky je symbolizováno také blikáním kontrolky "Scroll Lock" na klávesnici, což je dobré hlavně pro zakrytované Minimigy (což mne také čeká). Bez zajímavostí také není filtrování obrazu v lo- i hi-resu, což omezuje ostrost pixelů a obraz tak vypadá vyhlazeně (i když stále preferuji pixel art ;). A jedna z posledních perliček - přístup do menu Minimiga přes joystick - je nutno poslat signál "nahoru + dolů", což normálně nejde, ale kdejaký bastlíř to jistě zvládne do joye zamontovat sám.

No ale co hry? Jedou? A dema? Jedou?

JEDOU!

Intro Liberation fungovalo i na staré verzi firmware, ale dá se na něj koukat pořád.

Tohle je určitě největší přínos, kompatibilita, která se začíná blížit 100%. Přibližně z padesáti her, které mám momentálně nasypané na SD kartě, funguje 48, což je fantastické číslo. Hry jsem teda netestoval detailně, protože nemám po ruce momentálně joystick, čili funguje = hra se spustila. Ač to zní divně, na starém firmware se hry obvykle ani nespustily, o zamrznutí při úvodní obrazovce nemluvě. Hry, které nevyžadují joystick jsem však testoval alespoň pár minut. Velice mne potěšila funkční hra "The Clue", naopak mne zamrzela nefunkčnost hry Captive 2 Liberation. Ale třeba Ruff'n'Tumble, Turrican 2, SWIV a další jedou, stejně tak Shadow of the Beast, Sim City - co víc si přát? Minimig se tak se zpožděním stal tím, čím byl zamýšlený. Ale rezervy tady pořád jsou. Třeba dema jedou obvykle všechny (9Fingers konečně bez grafických chyb), ale některá pořád nejdou spustit. Ale jak je vidět, je to otázka času...

Dále jsem testoval Workbench 1.3 - jedou krásně, start za 46 vteřin (což je rychlejší, než moje stávající PC), paměť správně alokovaná, takže RAMdisk má smysl používat na Microsoft Basic dema. No suma - geniální pokrok!

Chybějící část obrazu může být u některých her velice nepříjemná.

Co mi chybí? Minimigu k naprosté dokonalosti chybí jen pár krůčků. Uvítal bych DF1: mechaniku, protože některé hry nebo dema se dají spouštět jen přímo z Workbench a neustále prohazovat dvě diskety dokola je vopruz. Dále bych uvítal inteligentní řazení ADF souborů na SD kartě do adresářů (to chybí dost citelně) a také mne dost točí, že v PAL aplikacích / hrách chybí spodní část obrazu - což je občas docela vopruz. U NTSC aplikací se to zdá být v pohodě. Zkoušel jsem obě verze firmwarů a i když ten PAL je vhodnější, pořád to vadí. Poslední věcí, která je ale v současné době nízkoprioritní, je turbo rychlost při načítání z disket. To je asi tak všechno, na típání obrázků je tady Action Replay.

Škoda ale, že samotná hra nejede, je to jedna z nejlepších her na Amize vůbec.

Ale tím Minimig ještě zdaleka nekončí. Již v současné době jsou k dispozici FPGA emulátory počítačů Commodore 64 a VIC-20! A samozřejmě brzy se počítá i se ZX Spectrem a Atari. To samozřejmě Motorola spí, všechno počítá Spartan. Neboli - po nasypání vhodného software na SD kartu se Minimig modulárně mění na další retroplatformy, což je naprostá bomba! Tahle destička má velkou šanci stát se ultimátním emulátorem všech starších platforem v jednom, jenom na softwarové bázi, čímž se jeho použitelnost stává nebetyčnou. Samozřejmě to znamená vylepšit menu Minimigu, ale je to jen otázka času. nyní je důležité, že Minimig nebyl opuštěn a má smysl. Nebyly to vyhozené prachy. A to jsem strašně moc rád.

Příští sobotu je párty, tak bude sranda!