Genesys

Na soutěžní akci Forever s tématem Robot v roce 2023 Martin1 představil demo Genesys. Demo zvítězilo v kategorii Ostatní 8-bity a získalo 594 bodů.

Demo je nakresleno ve stylu němých filmů a je zakončeno francouzkým slovem „FIN“. Jak už název Genesys napovídá, demo zobrazuje stvoření světa a člověka. Samozřejmě jsou do dema zakomponovaní i roboti. Demo je zajímavé tím, že přehrává hudbu při zobrazování grafiky. To ještě nikdo před tím nedokázal a tímto se stává přelomovým. Grafika je tvořená vektorově a skládá se z zůzných komponentů.

Podrobnosti o demu si můžete přečíst na Martinově webu.

Stažení pro ViLi ROM: Genesys.zip
Oficiální web: https://sites.google.com/site/ondraspo186/8-programy/8-3-demo-genesys

Solaris104

Rubriky: Software | Napsat komentář

OndraMELODIK

Úvod

7 falešných tónů. Tak by se daly nazvat zvukové možnosti Ondry od výroby. Byly určené pouze pro zvukovou signalizaci a vzhledem k celkovému návrhu Ondry se dá ještě říci, že jsou tyto možnosti docela slušné, protože to mohlo být například omezené na jeden tón. Ondra vlastně obsahuje 3-bitový tónový generátor, který generuje tón nezávisle na CPU, což je pro potřeby signalizace naprosto dostačující. O hudbě však nemůže být řeč. Existuje možnost jak na Ondrovi zahrát jakýkoli tón, což je vlastně hack, protože se periodicky spouští generátor tónu právě požadovanou frekvencí. Lze tak úspěšně vypípat melodii, nicméně je třeba mít zatemněné zobrazení nebo alespoň částečně zatemněné zobrazení s využitím přerušování – viz. demo úžasné demo GENESYS na Forever 2023 (https://sites.google.com/site/ondraspo186/8-programy/8-3-demo-genesys). Avšak tato metoda vyžaduje opět plné zatížení CPU a omezování zobrazení a toto celkově nedává prostor k realizaci především plnoobrazovkových ozvučených her s doprovodnou hudbou.

Motivace

Já jsem člověk hudebně založený, hudbě na počítači se věnuji amatérsky od mládí. Vždy u mne vítězily počítače, co měly hudební možnosti (C64, Amiga). Ondra je můj nejoblíbenější 8bit počítač, kde jsem díky oživování toho svého kusu byl donucen se naučit znát dokonale jeho HW a později se naučit jej programovat, to vedlo k prvotině a to konverzi hry FallingBlocks pro Ondru (http://www.ondraspo186.8u.cz/?p=471). Velmi mi chybělo, že je Ondra hudebně ošizen a proto jsem se rozhodl jej pozdvihnout a to i sám sebe ve svých zkušenostech.

Cíle

Od začátku jsem si stanovil jasné cíle, které mi dávají smysl:

  1. Možnost použití na Ondrovi bez HW úprav
  2. Kompatibilita s OndraSD/Joy
  3. Použití dobových součástek, tak, jak by asi mohl vzniknout například na přelomu 80-90let
  4. Minimální HW nároky na playrutinu

Jediný čip na trhu z mého pátrání, pro tyto účely použitelný a z té doby je SN76489. Je to 4 kanálový čip, generující 3x obdélníkový průběh a 1x šum. Pro definici a rozeznění tónu mu stačí poslat 2byte. Ondra je vybaven paralelním rozhraním, to je zde plně využito. Návrh nekoliduje s linkami OndraSD. Název jsem zvolil dle určité linie co je u Didaktiku a proto OndraMELODIK.

Vývoj

Nejdřív jsem si nakreslil schéma jak by to asi mohlo vypadat a postavil si prototyp na nepájivém kontaktním poli ze šuplíkových zásob. To bylo poměrně snadné. Pro mě nejhorší část byla, jak to rozeznít. A chtěl jsem začít rovnou tak, abych to mohl použít do budoucna. Takže jsem si napsal rutinu pro zápis byte na paralelní rozhraní tak, aby byla co nejrychlejší, protože těch bajtů se tam posílá docela hodně a na Ondrovi je potřeba šetřit s každým taktem CPU (bez nadsázky). Pak jsem si upravil opensource playrutinu pro Nyancat song a posílal na port a …. ono to hrálo!

Z prototypu bylo třeba vyřešit pár nepříjemností, především, že čip generuje tón, dokud mu nepošlete “ticho”, nebo že po zapnutí napájení si prostě začne pípat jak se mu zlíbí…. normálně u všech počítačů tohle řeší inicializační rutina v ROM, ale to bych porušil cíle projektu, kdyby OndraMELODIK vyžadoval upravenou ROM. Zvolil jsem tedy taktiku, kdy je čip odpojen od hodinového signálu, tudíž je blokovaný a nemůže pípat do doby, kdy na port přijde první byte. Ztlumení čipu před resetem z programu již řeším softwarově v daném programu. Toto hardwarové utlumení je realizováno klopným obvodem, který lze opět utlumit stiskem tlačítka, což se hodí v případě, když dojde z jakéhokoliv důvodu k nesprávnému resetu Ondry.

Dále jsem si říkal, že když už něco takového stavím a je tam místo, tak by bylo fajn vyvést konektor DB25 pro připojení tiskárny, což měl Ondra ve vínku od narození. Proto si každý může volitelně osadit modul i tímto konektorem a pak použitím přepínače MELODIK/TISK zvolit funkci. V poloze TISK je čip ve stavu vysoké impedance a nemá tedy vliv na datové signály. Ale pozor… přesto může náhodně hrát. Tudíž v režimu TISK je třeba vypnout reproduktory, pokud tedy nechcete poslouchat hudební interpretaci dat posílaných na tiskárnu čipem SN76489. Ukázka tisku zde

Také bylo nutno mít programovou možnost detekovat modul. To jsem vyřešil tak, že čip po každém přijetí byte pošle signál zpět, zapojil jsem na vstup /BUSY. Softwarově jsem pak vytvořil rutinu pro detekci, kdy pošlu byte na čip, kde jsem měřil na osciloskopu odezvu čipu v ms. Programově jsem pak dal čipu asi 3 násobné množství času, do kdy se musí “ozvat”. Pokud se ozve, vím že OndraMELODIK je přítomen.

Stavba

Po tomto vývoji a vychytání much jsem přistoupil k fyzické stavbě, což už bylo velice zábavné a šlo to rychle. Vyhrál jsem si s krabičkou, aby byla co nejvíce osobitá a odpovídala designu Ondry a zároveň bavila dětskou duši – pro kterou byl Ondra určen a domnívám se, že tuto duši máme v sobě my všichni, co si s těmito počítači hrajeme.

Všechny podklady ke stavbě jsem zveřejnil na Githubu pod svobodnou licencí a může si to vyrobit doslova každý (https://github.com/72ka/OndraMELODIK).

Software

No a na řadu přišla nejtěžší úloha. Co by byl sebedokonalejší HW bez patřičného software.
Jako první věc jsem vytvořil demo, ukazující možnosti OndraMELODIK při plném zobrazení, kde je plné rozlišení a navíc plynulý běžící text. V tomto demu je ukryt mnou modifikovaný VGM přehrávač, což mi přišlo jako nejlepší cesta, jak na tomto poli tvořit hudbu. Toto demo zároveň otestuje modul a automaticky zjistí jeho přítomnost, což se projeví i na běžícím textu.

A co dál?? Mám HW, mám demo… dál to nejnáročnější, být hudebníkem a programátorem. Nejsem ani jedno. Přesto jsem se do toho pustil. Na začátek jsem si dal raději jednodušší cíle a to, samotná hudba na pozadí ve třech kanálech s konstantní obálkou. Samotná hudba je upravený (zmenšený) VGM formát, kde jsou jen údaje o frekvenci a času – zatím jsem to ani nekomprimoval, s tím počítám do budoucna. Tón se generuje rutinou. Zatím je použita obálka typu “piano”. A proto to hraje jak hraje. Melodie jsem zatím vytvořil tři, jsou ve FallingBlocks v2. Jako zdrojový formát mám MIDI soubor, který si upravím na tři nezávislé kanály. MIDI pak překonvertuji na VGM pomocí dostupné utility. Obálku tónu si naposlouchám v aplikaci Deflemask ručně ji pak zadám do playrutiny v Ondrovi. U tohoto řešení jsem zůstal, nemám úplně ambice dělat chiptunera. Do budoucna budu rozšiřovat rutinu o vibrato a arpeggio, což by mělo přinést daleko lepší výsledky. Vše je o času.
Každopádně FallingBlocks v2 (http://www.ondraspo186.8u.cz/?p=566) je první hrou pro Ondru, co má podporu OndraMELODIK.

A co dál..?

Kdo byl na ByteFestu 2022, mohl vidět celou sestavu v akci


Také jsem soukromě ukazoval, co je pod pokličkou… což nechci úplně prozrazovat, ale já pevně věřím, že je na co se těšit, ne na hudbu, ale pracuji na další hře, která mi dává opravdu zabrat, a kde bude OndraMELODIK dělat především zvuky a hudbu ve hře neplánuji protože si myslím že se tam zkrátka ne úplně hodí.

Závěr

Bude mě nejvíce těšit, pokud si OndraMELODIK postaví co nejvíce lidí, protože o to víc pak moje práce dává smysl. A to i budoucí.
Mám zároveň radost, že vzniká i mutace OndraMELODIK od Solarise, avšak na jiných základech a to SMD verze integrovaná v Ondra JOY, která pochopitelně nebude mít vyveden konektor na tiskárnu, ale poskytne shodné zvukové možnosti. Uživatelé tak budou mít na výběr ke které technologii se přiklání.

Stažení pro ViLi ROM: demo_test.zip
Oficiální web: https://github.com/72ka/OndraMELODIK

Jan Heřman (aka 72ka)

Rubriky: Hardware | Napsat komentář

Light

Programátora ub880d zaujalo na youtube video The Lightning Algorithm – Numberphile.

Hned ho nakódoval pro počítač ZX Spectrum a vyzval komunitu k implementaci na další retropočítačové platformy. A jelikož se nikdo neměl k imlementaci pro počítač Ondra, tak to spáchal sám. Oproti ZX verzi zmenšil plochu, protože je to pomalejší počítač než ZX Spectrum a také nemá atributy, které využil na vizualizaci přehrávání na ZX Spectru. Na obarvení jedneho 8×8 čtverce na ZX stačí zapsat do VRAM jeden bajt, na Ondrovi je jich třeba zapsat 8. Toto demo bylo publikováno na podzim roku 2021.

Stažení pro ViLi ROM: Light.zip

ub880d a Solaris104

Rubriky: Software | Napsat komentář

Falling Blocks v2

Za vydáním nové verze této hry stojí především skutečnost, že jsem se věnoval vývoji nového zvukového modulu ondraMELODIK a snahou bylo jej co nejrychleji a smysluplně někde reálně využít. Volba tedy padla na implementaci do již hotové hry. V souvislosti s tím jsem ještě změnil několik věcí v této hře i na základě zpětné vazby od uživatelů.

První a zásadní změnou je tedy podpora hudebního modulu ondraMELODIK. Pro mne to byla zcela nová disciplína. Nejvíc práce bylo asi (a to hned od začátku) vymyslet správný postup, jak to budu do budoucna celé dělat – tzn. kde začít, odkud hudbu vzít, v jakém formátu nebo i složit vlastní, a výstupem data pro hudební rutinu v Ondrovi v assembleru. Co jsem tak zjistil, každý umělec/programátor si to dělá po svém a ono je to asi tak nejlepší. Velmi se mi líbí zápis od Františka Fuky, dost možná časem dospěji k něčemu podobnému. Nicméně v tuto chvíli a vzhledem k HW možnostem Ondry s Melodikem jsem zvolil cestu takovou, že vstupem je 3 kanálový MIDI soubor (který dokážu předzpracovat), ten převedu pomocí dostupného konvertoru na VGM a v Ondrovi mám rutinu, co používá VGM formát, avšak obálku tónu si tvořím sám. Je to z toho důvodu, že VGM je jinak moc veliký a sotva by se vešel do paměti. Můj VGM má třeba 1.5kB, protože obsahuje informaci jen o změně noty. Časem chci rutinu rozšířit o arpeggio, takže je na čem pracovat. Nutno podotknout, že Ondra má velmi omezené možnosti, kdy 80% času procesor spí a všechno skloubit dohromady je veliká výzva a také je to důvod, proč mě to baví.

V této verzi hry tedy uslyšíte dvě hlavní melodie, které se střídají a jsou výsledkem výše uvedeného postupu. Hra dokáže detekovat přítomnost Melodiku a hned na úvodní obrazovce je rozdíl. Pokud je Melodik přítomen, objeví se text „ONDRA+MELODIK“ a dole uvidíte copyright k použité hudbě. Hudba lze během hraní ztišit pomocí klávesy M.

V souvislosti s implementací hudby bylo třeba přepracovat jádro hry, zejména časování s použitím přerušení – ano, v předchozí verzi jsem měl delay a nebylo to úplně ono. Nyní kostky padají vždy stejně rychle, předtím tam byly drobné rozdíly co asi nikdo nepoznal.

Hratelnost jsem ztížil, ale udělal férovější. Nyní už nelze s kostkou pohybovat, jakmile dorazí na dno. Ale můžete se rozhodnout, jak ji pustíte dolů. Krátkým stiskem SPACE (nebo joysticku), se kostka hodí na dno bez možnosti korekce. Stiskem a držením SPACE kostka jede rychle dolů, ale puštěním jde korigovat. Je tam rozdíl v počítání score, rychlé puštění na dno dává více bodů. Zrychlování padání kostek je úměrné počtu linek zbývajících ke splnění levelu. Na druhou stranu, velkou novinkou je, že jsem přidal možnost opakování levelu. Po skončení levelu se můžete rozhodnout, zda jej opakovat nebo se vrátit do hlavního menu. Všichni se kterými jsem si na Bytefestu povídal to velmi pochvalovali.

Na hlavní obrazovce hry jsem přidal shlédnutí instrukcí, kde jsou popsány klávesy pro ovládání a cíl hry.

Velkou změnou je výchozí ovládání, protože každý člověk co přišel začal ihned ovládat šipkami a mezerníkem, tudíž nyní je toto ovládání výchozí. Samozřejmě je možno nadále ovládat pomocí joysticku a vše se dá předefinovat dle libosti.

Touto verzí byl vývoj této hry završen a kromě oprav už asi nic nového nebude. Především proto, že pod pokličkou se již vaří něco nového :-).

Update: Vydal jsem Falling Blocks v2.0b. Jedná se o opravu chyb: Cvakání relé v Ondrovi při hraní – ano, můj Ondra relé neměl a tak jsem to netušil, nyní jsem mu relé dopájel a nestačil jsem se divit 😃. Hra nešla spustit bez Melodiku – to bylo zcela zásadní.

Stažení pro ViLi ROM: FallingBlocks_2.0b.zip
Oficiální web: https://github.com/72ka/Tesla_Ondra/tree/main/Falling%20Blocks

Jan Heřman

Rubriky: Software | Napsat komentář

Emulátor JOndra

I počítač Ondra se dočkal dalšího emulátoru. Jak už název připomíná, je napsaný v Javě. Původní verzi JOndra emulátoru napsal Omikron a k dokonalosti ho doladil Stamil. Emulátor obsahuje roletové menu a nejpoužívanější funkce jsou obsaženy v liště ikon. Můžeme si nastavit v emulátoru typ ROM nebo si nahrát vlastní. Emulátor podporuje všechny běžné formáty Ondry. Jedná se o kazetový soubor wav, komprimovaný csw, binární kazetový soubor tap i binární soubor bin. Navíc umí pracovat se snapshoty typu osn. To ocení hlavně hráči. Emulátor umí ukládat i screenshoty ve formátu png.

Pro programátory je je neocenitelnou pomůckou zabudovaný debugger procesoru Z80. Program můžete krokovat, nastavovat breakpointy, editovat obsah paměti atd.

Další výborná věc je zobrazení klávesnice, která nám signalizuje stisk přeřazovacích kláves Shift, Alt, Čs, 0-9 a Ctrl. S touto pomůckou již není problém něco napsat v emulátoru. JOndra umí emulovat joystick pomocí šipek a 0 na numerické klávesnici.

Emulátor JOndra věrně zobrazuje grafiku. Nemá problém zobrazit třeba efekt poskakující obrazovky ve hře Snake Escape. Také emulace zvukových možností Ondry je výborná. Zkuste se třeba zaposlouchat do znělky ve hře Pacman. Autoři emulátoru odvedli skvělou práci a díky Javě je tento emulátor multiplatformní.

Na githubu si můžete stáhnout poslední verzi emulátoru počítače Tesla Ondra SPO 186, ale také dalších československých počítačů jako je IQ151.

Oficiální web: https://github.com/omikron88/

Solaris104

Rubriky: Emulátory a utility | Komentáře nejsou povolené u textu s názvem Emulátor JOndra