Jelikož se mi sešlo několik požadavků na update souborového manažera Bow Commander od různých uživatelů (většina z ciziny, ale ozval se i Sweet), dal jsem si teď na chvilku pauzu od vytváření her pro ZX Spectrum Next a pověnoval jsem se tomuto programu. V nové verzi 1.1 jsou pouze dvě novinky, ale většina z nich se točila jen kolem nich, takže se dá říci, že jsem vyhověl 95% požadavků. Zbytek žádostí byl na migraci tohoto programu pro +3ku a její rozšížení pro IDE zařízení.
Znáte rage games nebo troll platformery? Já ano — a právě tento typ her mě velmi baví. Jejich hraní bývá neuvěřitelně stresující. Nikdy totiž nevíte, co vás čeká, a rozhodně se nemůžete spolehnout na to, že k vám hra bude férová. Každá zdánlivě bezpečná plošina může spadnout, každý nevinný předmět vás může zabít a cesta, která vypadá správně, může být jen další past. Přesto mají tyto hry něco, co vás nutí vracet se znovu a znovu. Teď už to určitě vyjde. Ještě jeden pokus. A tentokrát opravdu naposledy…
V poslední době se o mně šíří zvěsti, že své programy nedokončuji a že mezi projekty přeskakuji jako roztěkaný králík. Pojďme si proto udělat menší souhrn toho, na čem jsem letos pracoval, co jsem dokončil a v jakém stavu jsou aktuálně rozpracované projekty.
Na Slacku v kanále #z80 jsem s tím už trochu otravoval, ale stále hledám hudebníka pro svůj další herní projekt pro ZX Spectrum Next. Začal jsem pracovat na hře NextDash, která je, jak už název napovídá, inspirovaná legendární hrou Geometry Dash. Alespoň podle mých dětí je legendární. Jako obvykle jsem však narazil na jeden drobný problém – v naší grupě nemáme hudebníka. Ano, pořád tomu říkám grupa, i když v ní je prakticky jen jeden člověk. :) Proto se obracím na veřejnost s prosbou o pomoc s hudbou.
Nečekal jsem, že to bude tak rychle, ale moc jsem toho nenaspal a v současné době bych asi více Bow Commander neposunul a tak ho dávám širokým masám k vyzkoušení. Berte prosím ohled na to, že se v programu mohou nacházet chyby a jistě se nějaké najdou, tak to některým lidem udělá jistě radost. Spoustu věcí jsem měl hotové (např. z Calm Commanderu), proto byl vývoj i tak rychlý, ale přesto jsem je musel mnohdy ohnout a přizpůsobit (viewer, editor, kopírování, info o adresáři...).
Tak, jestli jste teď z nadpisu článku zmateni, tak je to dobře. Chvilku Vám budu vyprávět o tématu nesouvisícím se ZX Spectrem či jinými 8-mi bitovými počítači. Prostě dnes jsem koukal na nového Robina Hooda, kterého ztvárnil Hugh Jackman - ano Wolverin. Věděl jsem, podle názvu filmu, že se nebude jednat o žádnou slaďárnu a těšil jsem se na něj. Nebyl jsem ale spokojený... a teď jste ještě více zmateni, že? Proč píši o něčem co nebylo pěkné a nelíbilo se mi. Film jsem viděl totiž viděl v původním znění - pořád se tam objevovalo slovo "BOW" (což u filmu o Robinu Hoodovi není překvapující). Ale mě napadlo, slovo BOW použít u názvu mého dalšího nového programu.
Já vím, jsem s tím otravný. Pořád nějaké opravy, nové verze programů. Říkáte si, proč prostě nepíšu bezchybnaté programy, ale to jsem já. Nejsem dokonalý, neumím to a za těch spoustu let jsem se to prostě nenaučil a pravděpodobně nenaučím.
Dnes jsem vydal další verzi NextPlayeru, který opravuje primárně vyhledávání v adresáři. Na chybu mne upozornil Mike/ZT s tím, že ne úplně dokonale toto vyhledávání funguje. No dobře, přiznávám, nefungovalo vůbec. Ale co je důležité, podařilo se mi to opravit a vše je již tak jak má být a NextPlayer umí vyhledávat.
Je tu menší, ale velmi praktická aktualizace zaměřená na rychlejší navigaci a opravený plugin pro přehrávání hudby. Možná to někomu přijde chaotické (a možná také je), ale mám rozděláno několik projektů najednou a věnuji se jim na střídačku. Takto mi to vyhovuje a hlavně se nenudím - týden se věnuji CalmCommanderu a řeším pluginy, nové funkce. Pak se přesunu k NXPaint a řeším grafické věci. Další týden NextForge, nebo SpeccyWeb, nebo ... však mi rozumíte.
Od posledního článku jsem vestavěný assembler v NextForge posunul zase o kus blíž k tomu, aby nebyl jen syntaktická kontrola jednoho otevřeného souboru. Největší změna byla jednoduchá na napsání do seznamu věcí, které ještě nefungují, ale o něco méně jednoduchá na implementaci: include už opravdu otevírá další soubor a parser ho projde jako součást assembly. A k tomu se konečně začalo chovat rozumně i incbin.
Ten kdo mne zná, ví že neumím programovat bezchybnatě. Proto jsem dnes vydal novou verzi Next Playeru 0.73 pro EsxDos a klasické ZX Spectrum. Našel jsem pár chybiček, několik mi jich bylo nahlášeno a jedna chyba byla pro mne velmi nepříjemná - jednalo se o STP soubory.
Když jsem začal dělat ZXDebugGUI, nechtěl jsem psát vlastní emulátor ZX Spectra. To by byla práce na roky
a hlavně zbytečnost, protože Fuse (který roky používám) už emuluje Spectrum velmi dobře. Potřeboval jsem jen způsob, jak Fuse
ovládat zvenku a dostat z něj stav počítače zpět do svého debuggeru.
Ne, nechci to zabalit, koupit si vícebitové Atari a hrát si na to, že je to ZX Spectrum. To, co chci dnes oznámit je to, že jste se po šesti letech dočkali hudebního přehávače NextPlayer ve verzi pro ZX Spectrum 128k a EsxDos. Mám radost, že se to povedlo, ale popravdě jsem trošku zklamaný…
Ten kdo mne zná, ví, že často programuji pro ZX Spectrum na PeCi (samozřejmě rád programuji i na realném Speccym a až dokončím NextForge, tak asi nic jiného používat nebudu, ale používání PeCe se prostě nevyhnu). K ladění používám velmi často debuger daného emulátoru, ve kterém zrovna můj program spouštím. Ale popravdě tyto debugery mi prostě nesedí a vadí mi... highend vlastnost těchto debugerů je mnohdy pouze breakpoint a tím to hasne. Nevím jak vy, ale já jsem odkojený Prometheem a ten měl výborný debuger a tak jsem si někdy minulý rok řekl, že si udělám debuger nad nějakým emulátorem. Dostal jsme to do stádia, že to nějak fungovalo, občas jsem to použil, ale ve výsledku to nebylo něco čím, bych se chtěl pochlubit - nevypadalo to hezky a občas to nefungovalo. V poslední době jsem si tento program vzal trošku do parády... abych se mohl pochlubit. :)
Poslední týden bylo nesnesitelné horko, tak jsem Speccyho zapínal opravdu jen výjmečně a PeC (na kterém programy pro ZX vyvýjim) jsem po práci většinou hned vypl... byldíme ve 3. patře přímo pod střechou a od rána jsem měl v pracovně přes 31 stupňů, což není pracovní prostředí, ve kterém se dá něco tvořit. Ale přesto jsem po nocích (kdy se teplota snížila, ale přesto se nedalo spát) po chvilkách pracoval na programu NXPaint.
Calm Commanderu 1.1 je venku, což už víte z nadpisu tohoto článku. Možná se ptáte, proč jsem neuveřejnil článek o verzi 1.0... prostě jsem to nestihl. Místo článku o verzi 1.0 jsem pracoval na dot commandech .copy, .del, .dirinfo a článek o verzi Calm Commanderu 1.0 jsem odkládal. Odkládal jsem ho tak dlouho, až jsem našel v Calm Commanderu chyby (opravil je) a přidal textový editor...
Abyste si nemysleli, že se jen chlubím vystřižky ze Speccy magazínů, tak tato "sláva" mi nestoupla do hlavy a dál se snažím pracovat na mých programech aby byly lepší - no prostě opravuji chyby, které se objevili při testování. Dnes to bylo hlavně o stabilizaci výběru, vkládání a transformaci obrázků při zoomu. Při testování se ukázalo, že některé starší části kódu stále počítaly s měřítkem 1:1, což se projevovalo hlavně u vloženého výběru, jeho rotace a následného načítání obrázků.
Vyšel nový Next Magazine a v něm se objevilo několik článků a minirecenzí na mé hry (Dice8Next, Next Hexagon) a programy (NextIRC, SpeccyWeb, PixelPaste). A ano, potěšilo to... ;)
Teď už vím, že se ke článku oznamující Calm Commander 1.0 nedostanu - ne snad proto, že bych ZX pověsil na hřebík :), ale proto, že jsme našel jednu záludnost v CC a opravil ji, takže nová verze je 1.01 a článek o ní vyjde zítra, Ale dnes chci psát o aktualizovaném dot příkazu .copy a dvou nových příkazech .del a .dirinfo.
Jak jsem psal včera - vydal jsem Calm Commander 1.0 a jedna z jeho novinek byla i kopírování adresářů a podadresářů a to do hloubky 11 podaddresářů. Uveřejnil jsem tuto novinku na FB stránce ZX Spectrum Next s tím, že si chvilku odpočinu, ale rozhořela se tam diskuze o tom, proč není Calm Commander dot command. Je to jednoduché - protože já ho jako dot command nikdy nechtěl - popravdě si myslím, že by to bylo kontraproduktivní. Calm Commander zabírá spousttu místa - LFN i 8.3 jména souborů/adresářůnačteného adresáře si drží v paměti, při kopírování si ukládá data do co největší části paměti, pluginy sami o sobě také něco sežraly (myslím tím paměť). Ale nějak se tam ve mne zrodila myšlinka udělat několik dot příkazů - kopírování, delete a dirinfo. A dnes bych Vám rád představil příkaz copy.
Dnes jsem vydal Calm Commander 1.0, ale o tom tento článek není - byť by si to článek zasloužilo, ale to necháme na jindy.... Calm Commander totiž umí konečně kopírovat adresáře, včetně podadresářů a jejich podpodadresářů a jejich podpodpodadresářů. Jelikož je v Calm Commanderu hodně málo místa odkládal jsem tuto funkcionalitu dokud to šlo. Ale když jsem minulý týden zavedl něco, čemu se říká pluginy (na prohlížení txt souborů, nebo obrázků, poslouchání hudby...), řekl jsem si, proč neudělat rovnou systémový plugin, který bude řešit rekurzivní kopírování souborů. Takže místo toho, aby se kód vykonával v hlavní paměti (i když nevím, kde bych ji popravdě vzal), místo toho se zavolá externí systémový plugin syscopy.ccp. Hlavní program pouze připraví kontext, nahraje plugin do paměti, předá mu zdrojovou cestu, cílovou cestu, jméno adresáře a několik služeb, přes které může plugin komunikovat zpět s Calm Commanderem.
Verze 0.94 přináší dva nové pluginy pro prohlížení souborů, upravené barevné schéma a několik oprav chyb z předchozí verze. Já vím, zanedbávám NXPaint a SpeccyWeb, ale CalmCommander potřeboval péči jak koza drbání. Doufám, že se Vám tyto novinky budou líbit.
CalmCommander se posouvá zase o kus dál. Verze 0.9
přináší vylepšenou podporu pluginů, nové prohlížeče, hudební přehrávače a pohodlnější práci se soubory. Samozřejmě jsem se nedokázal vyhnout ani tomu, že jsem opravoval kupu chyb, které jsem si způsobil těmito překotnými změnami. Ale snad jsem všechny (resp. všechny, o kterých jsem věděl) opravil, takže nebralo nic tuto verzi pustit mezi lidi.
Calm Commander umí načítat externí viewer pluginy z adresáře c:/CalmCommander/plugin. Plugin není samostatná aplikace s vlastním loaderem, ale malý binární modul .ccp, který Calm Commander nahraje do paměti, předá mu kontext aktuálního souboru a po návratu zase obnoví file manager.
Jedná se o menší údržbovou aktualizaci zaměřenou na vykreslování SCR obrázků ze ZX Spectra.
Některé SCR obrázky mohly zobrazovat určité atributové bloky příliš jasně, zejména tam, kde byl použit příznak BRIGHT.
Viewer nyní používá správnou barevnou paletu ZX Spectra místo toho, aby jas upravoval prostým přičítáním hodnot k RGB složkám.
Tak mi to nedalo, vzal jsem player z Next Playeru a vytvoril jeden pokusny plugin.... a na prvni dobrou to hralo (viz. video pod tímto dlouhým článkem)... ;) no, neni ten svět krásný? :)
Calm Commander 0.7p přináší jednu z větších vnitřních změn tohoto projektu, kterou jsem měl v plánu už pěkně dlouho: prohlížeče souborů už nejsou napevno zabudované v hlavním programu. Místo toho umí Calm Commander načítat externí viewer pluginy podle potřeby. První verze systému začíná dvěma pluginy: textovým viewerem a ZX screen viewerem. Na první pohled je to jen malý začátek, ale důležitá je hlavně architektura za tím. Přidávání podpory dalších formátů by teď mělo být mnohem jednodušší a zároveň šetrnější k paměti.
NextForge má dnes vlastní vestavěný assembler, který běží přímo v prostředí editoru na ZX Spectrum Next. V aktuální fázi jde hlavně o syntaktický assembler a pass-1 analyzátor: prochází otevřený zdrojový soubor, kontroluje syntaxi, počítá program counter a hlásí chyby včetně řádku, sloupce, tokenu a stavu zpracování. A ano, nejel jsem na DrCon, v pauzách tedy mlátím hlavou o stůl - ale jsou věci, které neovlivním, tak snad mi to vyjde jindy.
Rád bych Vám představil nový projekt na kterém po chvilkách pracuji - Next Forge. Říkáte si - proč po chvilkách? Tak pracuji pořád na SpeccyWebu a NXPaint - opravuji chyby, přidávám další funkce. A proč jsem začal s Next Forge? Pokud chci napsat nějaký kus assembleru přímo na Nextu, tak možnosti mám - Odin a nebo duo programů ZED a ASM. Obě řešení Odin i ZED/ASM jsou funkční řešení, ale na pohodlnou práci to má hodně daleko - stále jsou věci, které mi při psaní ASM kódu chybí a zvykl jsem se na ně při programování na PeCi.
Když jsem se vrátil po pauze způsobené svatbou, změnou zaměstnání, narozením syna a následně dcery, několikrát jsem slyšel, že o mně bude slyšet maximálně jeden rok, během kterého skoupím veškerý hardware a pak se zase odmlčím. S tímto osobním hodnocením žiji již 7 let, kdy mi jako by nebylo odpuštěno, že jsem si dovolil z 8bit scény odejít.