Krissz.hu- Kézműves szoftverfejlesztés -

Hoztam rilízt!

Összegyűlt a kellő számú érdeklődő, így kiraktam az aktuális verziót az éppen készülő webes C64 emulátoromból, a ty64 emulátorból, itt érhető el: https://ty64.krissz.hu/ Nem alfa, nem béta, leginkább céta verzió ez, egyfajta fejlesztés közbeni, de már használható állapot. Úgy tervezem, hogy mindig kifrissítem ide az épp aktuálisan bemutatható verziót.

A fejlesztés bő három hónapja kezdődött. Szerettem volna jobban beleásni magam szeretett számítógépem, a Commodore 64 rejtelmeibe, és motivált a kihívás, hogy vajon lehet-e natív javaScriptben böngészőre írni egy emulátort. Azt már biztosra mondhatom, hogy lehetséges, hiszen a mellékelt ábra ezt mutatja. De azt nem gondoltam volna, hogy ennek a kis háziszámítógépnek ilyen mélységei vannak...

Jelenleg abban az állapotban van a progi, hogy működik az alapgép, és már a kék képernyőn való pötyögés élvezetes tud lenni annak, aki szereti ezt a masinát. A játékok többsége szépen fut. Számomra óriási élmény a saját emulátoromban órákon át játszani a kedvenc játékaimmal. Az egészet egy csodaként élem meg, három hónapja még álmodni sem mertem volna erről.

Szöveges kalandjátékokhoz jól jön a grafikus billentyűzet

Viszont sok esetben még elhasal, mert ez idáig nem sikerült úgy összerántani a rendszer különböző egységeit, hogy soha ne legyen semmilyen időzítésbeli probléma. Úgy kell elképzelni, hogy ha mondjuk egy megszakítás akár csak egyetlen órajelnyire elcsúszik, akkor vagy szétesik a kép, vagy crashel az egész rendszer. Persze ha hozzáigazítom az egyik helyen, akkor egy másik helyen csúszik el a szinkron, és így tovább. Azt sajnálom a leginkább, hogy a fejlesztési idő oroszlánrészét ezek a szőrszálhasogatások teszik ki, és nem az új, ötletes funkciókkal való bővítés, holott ezek az apróságok "adják el" az oldalt magát.

Például roppant hangulatos, hogy a billentyűk lenyomásának, és a joystick rángatásának eredeti hangjai vannak. Sőt, gombtípusonként más és más, én a beragadós SHIFT LOCK gomb klankogó hangját hallva mindig felvidulok, talán más is így lesz ezzel. A CRT filter a TV kerettel már-már alapnak számít, de azon is sokat dob, hogy kikapcsolt állapotban hangyák szaladgálnak a képen, plusz sípol az a magasfrekvenciás TV hang, amit ha megfelelő fülesed vagy hangszóróid vannak, akkor hallani fogsz.

Grafikus billentyűzet és a SHIFT LOCK

Számomra felhasználói élmény szempontjából az on the fly programbetöltés a legütősebb. Csak bemásolok egy URL-t az internet bugyrából valahonnan, és már indul is, nem kell letöltögetni fájlokat. Sőt, elég akár egy csdb release oldal linkjét berakni, magától ki fogja szedni az oldalról azt a fájlt, amit felismer és be tud tölteni a rendszer. Ennek köszönhetően azt vettem észre, hogy minden újdonságot megnézek, válogatás nélkül, hiszen rémesen egyszerű a folyamat.

Betölthető formátumok jelenleg a .prg és a .t64. A .d64 fájlokat még csak fake módon támogatja, az első PRG állományt olvassa be belőle. Amikor megszületett bennem a felismerés, hogy ha már van egy teljes körű emulátorom, akkor az egy SID lejátszó is tud lenni egyben, gyorsan összedobtam egy saját kis zenelejátszót, vagyis .sid fájlok is bátran betölthetők, akár a két- vagy három SID chipet egyszerre megszólaltató muzsikák is!

A felhasználói felületet úgy alakítottam ki, hogy csak minimálisan zavarja az élményt, de egyidejűleg minden szükséges funkció azonnal elérhető, ráadásul nappali és éjszakai színekben egyaránt. Ezen a területen egész biztosan a többi emulátor fölé sikerült nőni. Látható, és állítható, hogy mely Control Port legyen bedugva, a portok felcserélése csak egy kattintás, és nem kell egy almenüerdőt bejárni ezért. Az előhívható grafikus billentyűzet szintén hasznos, valamint akár gamepadekkel is emulálhatjuk a joystickokat, megspórolva pár hasznos gomb lefedését a billentyűzeten. Csak rakd teljes képernyősre az emulátort, dugd be a kontrolleredet, és már játszhatsz is a fotelben hátradőlve!

Sötét színtéma éjszakai játékhoz

A C64 hardverapparátusának együtteséből fakadó speciális esetek speciális esetein kívül állandó harcot vívok a futási sebességgel. Maximum 20ms (de inkább 15ms) alatt kell kitolni egy framet, képpel, hanggal, szaggal, mindennel. Másodpercenként közel nyolcmillió képpont színét kell kiszámítani a lemodellezett katódsugár pixelről pixelre vándorló pozíciója és a memória pillanatbeli tartalmától függően. (Úgy, hogy egyetlen szálon fut a js, és semmilyen pontos időzítésre nincs lehetőség, ne felejtsük!) Először a workerekhez fordultam segítségért, de a projekthez szükséges feladatok ellátására alkalmatlanok voltak. Aztán beletanultam a WebAssemblybe, és az már nyerőnek bizonyult! Rengeteg időmérést végeztem, a rendszer minden részét mikroszekundum pontossággal kimértem, és arra jutottam, hogy a ritkább, de nagy tömegű számítások esetén veszem a legnagyobb hasznát, például a canvas képadatainak feltöltésekor. A legjobb futási eredményt úgy értem el, hogy a kód továbbra is natív javaScript alapokon nyugszik, itt-ott WebAssembly betétekkel megtoldva.

Visszatérő jelenség az életemben, hogy a számítógépem mindig pár generációval régebbi, mint az átlagé. Ezt áldásként is meg lehet élni, ugyanis ez táptalajt nyújt kedvenc hobbim kiélésének, az optimalizálásnak. Biztos lehetek benne, hogy ha az én 2009-es keltezésű processzoromon megfelelő sebességgel lefut egy kód, akkor az másoknál is le fog. A ty64 esetében nemhogy mikro-, hanem már nanooptimalizációkról kell beszélni. Elborult trükköket kellett bevetni az élvezhető sebesség elérése érdekében, de érdekes módon erre a folyamatra sosem sajnáltam az időmet, szemben mondjuk a CIA chip időzítők lelki világának pátyolgatásával.

A projekt másik része a dedikált játékoldalak létrehozása. Ez annyit tesz, hogy egy fix, megosztható URL-en az adott játék készre konfigurálva azonnal elérhető. Ez olyasmi élményt nyújt, mint a webes játékátirataim, de ezen oldalak természetesen a ty64-en alapulnak. Példaként be is üzemeltem egyet, méghozzá a Bosszút, ide kattintva azonnal játszhatsz is vele! Az F12-vel gyorsmentést tudsz csinálni, amit az F9-cel tudsz visszatölteni, így nyugodtan be lehet zárni az ablakot, a játékot onnan tudod folytatni, ahol kimentetted. Mivel a mentést a böngésző tárolja, még fájlokat sem kell letöltögetned. Szóval a fejlesztések folytatódnak, továbbra is motivált vagyok, sok ötletem van még, jó kis emulátor születhet ebből!

Fekete-fehér TV

Minimális követelmények, tanácsok

  • ajánlott a legújabb Firefox vagy Chrome, vagy más, hasonló alapokon nyugvó böngészők használata (pl: Brave)
  • a rendszer összességének (böngésző + oprendszer + videokártya) támogatnia kell a WebGL2-t, a Web Audio API-t és a WebAssemblyt
  • a böngészőablak mérete érje el legalább az 1024x768 pixel nagyságot
  • a processzor legyen kellőképp gyors ahhoz, hogy a futás akadásmentes legyen (F10-zel hívható elő a terhelési statisztika, 90% fölött élvezhetetlen)
  • a weboldal biztonsági beállításainál engedélyezd a hangok automatikus lejátszását, különben csak az első felhasználói interakció után szólal meg
  • a böngészőhöz hozzáadott kiterjesztések, pluginek nagyon vissza tudják fogni a teljesítményt, így azok kikapcsolása ajánlott
  • mivel ez egy fejlesztői verzió, hasznos lehet a CTRL+SHIFT+ESC billentyűkombináció, ami alapállapotba állít vissza mindent, ha netán beragadt volna valami

Azt kérdezed, hogy te hogyan tudnál segíteni?

  • új, ötletes, a webes környezet adta előnyöket kiaknázó funkcióigények benyújtásával
  • az emulátor tesztelésével, kritikák megfogalmazásával a kezelhetőséget illetően
  • olyan kritikát NEM várok, hogy "ez a játék nem megy", meg "az a demó nem megy", mert tudom hogy még nem mennek
  • a hardverkonfigurációd és a terhelési statisztikád elküldésével (ami az F10 gomb benyomására megjelenő százalékos érték)
  • támogasd az éhező művészt, kattints az alábbi gombra:
Ha tetszenek a munkáim, és szeretnél támogatni, nyomj rá a gombra, és hívj meg egy kávéra!

Buy me a coffee!

< Kezdőlap