MEG-4, Szabad és Nyílt Forráskódú PICO-8 alternatíva

Fórumok

Üdv,

Írtam egy PICO-8-szerű, retro virtuális konzolt (ezen az oldalon ez eléggé többértelmű, szóval konzol, mint NES, Famicom, PS, XBox stb.). A célja a kezdő programozók segítése, hogy gyorsan és könnyen sikerélményekkel szolgáljon nekik, mint anno a Commodore és társai az én időmben.

https://bztsrc.gitlab.io/meg4/

Néhány fícsör a teljesség igénye nélkül:

- Szabad és Nyílt forráskódú (GPL, gitlab repó)

- támogatja a BASIC-et (akárcsak bármelyik 80-as évekbeli home computer), Lua-t (mint a többi virtuális konzol), de programozható C-ben (saját natív nyelve) illetve Assemblyben is

- többnyelvű, UTF-8 támogatással, a beépített súgó természetesen magyar nyelven is elérhető (ehhez írtam egy MarkDown megjelenítőt)

- akárcsak a többi virtuális konzol, beépített szerkesztőkkel rendelkezik (szövegszerkesztő, szprájtszerkesztő, zeneszerkesztő, stb., de még debugger is van benne)

- de ha valaki ragaszkodik a kedvenc eszközéhez, a könnyű átjárhatóság érdekében rengeteg formátumot támogat (PNG, Amiga MOD, MIDI, Tiled TMX, BDF, PSF, de még PICO-8 és TIC-80 kertridcsek is importálhatók vele)

- a rendelkezésre álló függvénykönyvtár terebélyes, átfogó és hatékony (szokásos grafikai primitíveken túl Bezier-ívek, teknőcgrafika, 3D-s labirintus és mátrix meg kvaterniófunkciók pl.)

- a programozást nagyon leegyszerűsíti és szórakoztatóvá teszi a szövegszerkesztés közbeni segéd (gépelés közben mutatja, milyen paraméterei vannak az API-nak)

- részletes, jól megírt dokumentációval rendelkezik: https://bztsrc.gitlab.io/meg4/manual_hu.html

Jelenlegi formában még kezdetleges, itt-ott kissebb bugokra kell számítani, de már elég jól használható. Bináris futtathatók is letölthetők (statikusan linkelt Windows és Linux, valamint dinamikusan linkelt Ubuntu és Raspberry Pi .deb csomagok formájában). Telepítést nem igényel (portable executable). Natív futtathatókon túl böngészőre optimalizált WebAssembly port is elérhető.

Ha valaki kipróbálná, akkor klikk a honlapra, és húzzátok rá valamelyik flopi képet az emulátorra! Egyelőre kevés példaprogram van hozzá, de azok remélem jól példázzák, mire képes.

Kíváncsian várom a véleményeiteket!

bzt

ps: ha valaki kérdezné, miért nem TIC-80, akkor a válaszom az, hogy azért nem, mert az rettentő bugos és nem tud magyarul. Sőt mi több, a magyarítása nem is lehetséges (beégetett sztringek és ékezetes karakterek teljes hiánya miatt).

Hozzászólások

Egy kis magyarázat, hogy mi a túró is az a retro virtuális konzol, és mire való.

Csapból is az folyik, hogy informatikus hiány van. Arról azonban kevés szó esik, pedig szerintem sokkal félelmetessebb és ijesztőbb a jövőre nézve, hogy utánpótlás sincs. Ennek az oka (sok egyéb mellett) elsősorban az, hogy a mai gépek és programozási környezetek piszkosul túl vannak bonyolítva. Régen leültünk a C=64 elé, fogtuk a határon átcsempészett, német nyelvű BASIC könyvet, fellapoztuk a CoV magazint, és máris hamar sikerélményeink voltak. Ez ma már nincs. A mai gyerekeket helyből elriasztja, hogy mennyi mindent kell megtanulni, mielőtt bármi kézzelfogható eredményt tudnának felmutatni. (Gondoljunk csak bele, egy egyszerű háromszög megjelenítése Vulkan alatt több, mint 1000 SLoC!)

Ezzel a véleménnyel nem vagyok egyedül, ezt hivatott orvosolni a virtuális konzol (vagy másképpen retro fantasy console), aminek a lényege, hogy egyszerűen futtatható, könnyedén programozható, és minden szükséges eszköz egyből a rendelkezésre áll. Így a játékok készítése (mert lássuk be, a gyerekeket elsősorban a játékokkal lehet megfogni) kifejezetten szórakoztató, akárcsak a "régi szép időkben" (TM).

Az egész őrületet a PICO-8 (https://www.lexaloffle.com/pico-8.php) kezdte, aminek nagy követőtábora lett mostanra. Sajnos nem tud magyarul, ráadásul zárt forráskódú, emiatt kizárt, hogy a gyerekeim kezébe adjam.

Ezután hívták életre a TIC-80-at (https://tic80.com/), ami Szabad és Nyílt Forráskódú ugyan, de továbbra sem magyarítható, és nemhogy magyar nyelvű, de még csak rendes doksija sincs. Ráadásul lassú, tele van hibákkal (jelen sorok írásakor több, mint 230 lezáratlan issue, köztük számos összeomlásról és súlyos biztonsági résekről szól).

Vannak még további kezdeményezések, de azok még ennyire sem ütik meg a kívánt szintet, mint a fenti kettő, és többnyire Windows only-k. Na, ezért vágtam a fejszémet a MEG-4 megalkotásába. A gyerekeim máris nagyon élvezik; a repó Nyílt Forráskódúvá tételével pedig remélem más programozószülők és gyerekeik is élvezni fogják.

(Egyébként sokat gondolkodtam, melyik kategóriába posztoljam. Végül azért döntöttem a C mellett, mert a MEG-4 saját natív nyelve a C, kifejezetten a C nyelv elsajátításának megsegítésére készült, ráadásul az egész projekt tokkal-vonóval ANSI C-ben íródott. Ha nem jó a kategória, akkor trey kérlek tedd át.)

Hú, a második bekezdéssel nagyon egyetértek. Elsősorban minden túl van ma már bonyolítva, a végletekig kutyulva, API az API-k felett, mindenféle elvont programozási paradigma, kódok sok millió kódsorosra hízva (ahogy írod is, Vulkanban egy háromszög milyen sok kódsor, a Unity komplexitásáról meg ne is beszéljünk), ezt látja egy fiatal, azonnal úgy érzi, hogy ezt esélye sincs elsajátítani. Plusz a mai fiatalság el van kényelmesedbe, megszokták, hogy szülők meg a nagy cégek mindent alájuk tolnak, informatikában is elég csak egy ikonra vagy egy gombra kettőt kattintani, és akkor minden működni fog, az nem érdekli őket, hogy hogyan. Minek tanulnák ezt meg, nekik életük van, amit mennek a Facebook-ra eltölteni, beletemetik játékokba, meg drogoznak., stb.. Olvasni nem olvasnak, mert ők vizuális típusok ám, matekból felmentés, mert diszlexiás, diszkalkuliás, tanulási és figyelemzavaros, meg a matek úgyse kell humán büfészakra, diplomát az is ad, mert nyilván kötelező diplomásnak lenni, valami használható gyakorlati szakma, amire kereslet is lenne, azt nem, mert az múlt század, hagy legyen abból is hiány.

Itt kaphat valóban szerepet a retró, meg a rekreációs, minimalista rendszerek, ahol még minden hagyományosabb, bonyolításmentesebb, meg lehet érteni, hogy hogyan működik a rendszer, mi hajtja, lehet vele kísérletezni, ha valami el van barmolva, könnyű visszaállítani. Ennek tényleg van fejlesztő szerepe, ami utánpótlást nevelhet. A C okés, de szerintem fiatalabbak berántani az egy kicsit meredek, a sok * & && ++, ->, stb. jelölés hieroglifnek hat. A sokkal humánabb, beszédesebb, basic-szerűbb Lua szintaxisa kevésbé riasztó egy kezdőnek, főleg, hogy majdnem lehet egy az egyben basic-esen programozni benne, talán attól nem dobja le az agyuk a láncot, és mégis csak modernebb minden tekintetben, mint egy agyonkorlátozott, tokenizált basic-variáns.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Szerkesztve: 2023. 06. 26., h – 00:50

Az ötlet sztm marha jó, csak annyi, hogy nem biztos, hogy sok gyereket be lehet ezzel vonzani... Tul nagy a szakadek az között, amit ezzel letre lehet hozni es az kozott, ahol most tart a technika.

Gyerekkorunkban (80-90es evek nekem) egy C-64, vagy ZX Spectrum, majd 486-os volt az akkori technikai csucs (szemelyi szamitogepben) igy amit azzal meg tudtal csinalni, az lenyegeben nem sokban kulonbozott attol, ami akkor a standard volt. Csak a befektetett idon es a tudason mulott a dolog.

+1 nekem is ez jutott eszembe, ha tényleg erre készült akkor kizártnak tartom, hogy a funkcióját betöltse. Ráadásul könnyű beragadni a buborékjainkba de a pico8 sem ment igazából akkorát. Talán a Celeste az egyetlen játék ami eredetileg arra készült, de díjakat az is csak az új c# verzióval nyert. Minden esetre jó kis projekt ez csak érdemes szem előtt tartani ezeket az arányokat az érdeklődésről.

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

> kizártnak tartom, hogy a funkcióját betöltse

Csak szólok, a gyerekeim elkezdtek érdeklődni a játékkészítés iránt és piszkosul élvezik is, tehát az eredeti funkcióját már mindenképp betöltötte. ;-) A kézikönyv labdapattogtató példaprogramjában a szprájtokat a nagyobbik fiam készítette, és a programozásban is csak minimálisan segítettem neki, ld. https://bztsrc.gitlab.io/meg4/manual_hu.html#pattogo_labda

> Minden esetre jó kis projekt ez csak érdemes szem előtt tartani ezeket az arányokat az érdeklődésről.

Köszönöm, de félreérthettél valamit, nem számítok semmilyen érdeklődésre. Megcsináltam magamnak, és most ingyen felajánlom a közjó érdekében. Ha kell, kell, ha nem, nem. (Kiemelném, hogy az eredeti posztban sem szerepelt sehol, hogy segítséget vagy támogatást kérnék hozzá.)

> Köszi, a forráskódjából merítek ötleteket. Öröm nézni ilyen alkotásokat.

Szívesen! Nem merem állítani, hogy mindenhol mintaértékűen olvasható az emulátor kódja, mert sokszor a futási sebesség és kellő optimalizáltság fontosabb volt, mint az olvashatóság. A 3D-s renderer meg a font rasterizer különösen nehezen olvashatóra sikerült szvsz, de azért általánosságban igyekeztem, és kommentekkel sem fukarkodtam.

> Sajnos a gyermekeim - velem ellentétben - egyelőre ebben nem fogják örömüket lelni, őket még nem csapta meg a mozdony füstje.

Igen, bizony nem egyszerű. Ha erőlteted, akkor könnyen lehet, hogy pont ellenkező hatást érsz el. Én igyekeztem apránként adagolni, a MEG-4 már a sokadik lépés effelé.
A legeslegelső füstpamacs ez volt egyébként: https://bztsrc.github.io/jslogo/index.html?lang=hu (kattints a bagolyra a mellékelt példapogramok betöltéséhez, aztán meg a startpisztolyra). Forkold, írd át a szülinapos nevét, aztán hátha bejön Neked is.

> Az ötlet sztm marha jó, csak annyi, hogy nem biztos, hogy sok gyereket be lehet ezzel vonzani...

Hát erre csúnyán rácáfol a PICO-8, TIC-80 és a többi népszerűsége. A PICO-8-at iskolákban is tanítják már. Ja, és mindkettőnek saját demoscene-je is van: https://www.pouet.net/prodlist.php?platform%5B%5D=PICO-8 https://tic80.com/play?cat=5&sort=1

Egyébként meg a gyerekeim imádják, így a célját már mindenképp elérte :-) Ha másnak is hasznos, annak csak pluszban örülök!

> Gyerekkorunkban (80-90es evek nekem) egy C-64, vagy ZX Spectrum, majd 486-os volt az akkori technikai csucs (szemelyi szamitogepben) igy amit azzal meg tudtal csinalni, az lenyegeben nem sokban kulonbozott attol, ami akkor a standard volt.

Ezzel lényegében azt állítod, hogy a retró, mint olyan nem létezik a számítógépeknél. Ez nagyon nem így van, ennek legékesebb példája a töméntelen mennyiségű letölthető játék (csak PICO-8 alapú játékból majdnem 4500 van egyedül az itch.io-n, ld. https://itch.io/games/tag-pico-8 és akkor a többi virtuális konzolról meg a többi szoftverterjesztő weboldalról még nem is beszéltünk még).

Lehet, hogy neked személy szerint elavultnak tűnhet, de a retróra hatalmas igény van. Leginkább azért, mert az egyszerűbb gép könnyebben tanulható.

> Csak a befektetett idon es a tudason mulott a dolog.

Ez most sincs másként. A probléma ott van, hogy túl magasan van a léc, túl hosszú a ráfordítandó idő még egy gagyi játékhoz is, és emiatt a mai gyerekek elijednek a programozástól.

>Hát erre csúnyán rácáfol a PICO-8, TIC-80 és a többi népszerűsége

Pont ez a lényeg, hogy a népszerűség baromi relatív. Az itchen már 2019-ben is 200k+ játék volt, ebből 4500 kb. 2% körüli érték, ha ennek csak a duplájánál járnak manapság akkor is a 4500 lassan kerekítési hibává válik (<1%).

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

Én legalábbis így értettem, hogy "amit azzal meg tudtal csinalni, az lenyegeben nem sokban kulonbozott attol, ami akkor a standard volt.", de lehet, félreértettem.

Mindegy is, szerintem abban mindenki egyetért, hogy egy mai "standard" (akár indie színvonalú, nem feltétlenül triple-A) játék megírásába piszokosul sok tanulást, gyakorlást és rengeteg időt kell beleölni. Lényegesen többet, mint ami a mai gyerekek tűréshatára úgy általában, és ez bizony gondot jelent az utánpótlás szempontjából. A legjobb esetben is csak middleware-interfész-kopipaszta-huszárok lesznek még azok is, akiket nem tántorít el.

En egy percig sem vitatom, hogy van igeny a retrora. (En magam is szeretem) De a retro elso sorban (sztm) a nosztalgiarol szol, az meg egy 10-12 eves gyereknel (ami kb a celcsoportod) nyilvan nincs meg. Elhiszem, hogy imadjak a gyerekeid, nyilvan ehhez egy adott kozegben felnoves is ratesz egy lapattal. :) Viszont ahol nincs meg ez a hatter (meg ha infos is anyuka/apuka) nem hinnem hogy beutne egy ilyen..

Egy picit elkanyarodtunk a lényegtől. Elsősorban a technikai oldal érdekelne, a szakmai véleményetek a konkrét megvalósításról, és nem az, hogy népszerű-e a retró vagy sem.

Szóval az érdekelne, mit szóltok a hiperlinkes MD böngészőről, a szerkesztőben működő API súgóról, a C fordítóprogramról, a Lua testreszabásáról, jól szól-e alatta a zene, áttekinthető-e a debugger felülete, érthető-e a kézikönyv, meg ilyenek.

Szerintem nem kell mindig mindenkinek megfelelni. Az a gyerek, aki úgy nőtt fel, hogy már babakorában a tableten mozizott, amíg a szülők ebédeltek, később meg éjjel-nappal agyatlan lövöldözős játékot játszott, valószínűleg nem a te célcsoportod, ők ilyen szempontból sajnos menthetetlenek. Őket tutira nem fogja lekötni egy ilyen rendszer, legyen az bármennyire is cool. 

Én csak egy javaslatot mondanék, olyan srácok apjaként, akiknek egyébként nagyon megtetszett a projekted: Mind the gap. Kellene hozzá egy kevésbé műszaki részletességű intro, kedvcsináló - lehetőleg olyan platformon, ahol a célközönség lakik (pl. youtube). A gyerekek nem úgy érkeznek, mint mi, akik naponta egy tucat projektet nézünk meg célzottan: speckó, licensz, formátumok, API referencia. Ezért szerintem a doksi felépítését is át kellene szervezni, mert szerintem az érdeklődők 99%-át elveszíted a doksi második pontjánál, a fileformátumoknál. Legyenek elöl a példák (ha lehet még több, ide be lehetne húzni a userektől is pár klassz projektet kedvcsinálóként).

Amúgy baromi jó, látszik benne a rengeteg munka és a lelkesedés, gratula!

> Kellene hozzá egy kevésbé műszaki részletességű intro, kedvcsináló - lehetőleg olyan platformon, ahol a célközönség lakik (pl. youtube).

Na hát igen, tökéletesen igazad van, ezt én is belátom. De sajnos míg a programozásban és a technikai doksi írásában otthon vagyok, addig az online marketing nagyon nagyon nem az én asztalom. Tecsőt, guglit, diszkórdot és az arcoskönyvet (a proprietary spywaret úgy általában) ott kerülöm és tiltom tűzfalból, ahol csak lehet, úgyhogy számomra ez kivitelezhetetlen. Emiatt is döntöttem inkább egy HUP poszt mellett.

> Ezért szerintem a doksi felépítését is át kellene szervezni, mert szerintem az érdeklődők 99%-át elveszíted a doksi második pontjánál, a fileformátumoknál.

A doksit én meghagynám, ahogy van, mert annak nem dolga a kedvcsinálás (a fejezetek sorrendje sem véletlen, pont az, ahogy az ismerkedés során szükséged lesz az infókra). Helyette szvsz inkább a honlapot kéne feltúrbózni (igen, valószínűleg youtube videókkal meg hasonlókkal, ahogy írtad). Talán megtetszik valakinek annyira a projekt, hogy megajándékoz egy PR-el, lévén FOSS, szívesen fogadok bármilyen felajánlást. Mint a kollégának is írtam, nincsenek illúzióim afelől, hogy mekkora érdeklődésre számíthatok. De ez nem is egy profitorientált vállalkozás, a minnél szélesebb vevőkörnek megfelelés itt sosem játszott.

> Legyenek elöl a példák (ha lehet még több, ide be lehetne húzni a userektől is pár klassz projektet kedvcsinálóként).

A honlapon igyekeztem feltűnő helyre rakni a példákat, mindjárt a landing page-re. Nehezítette a dolgot, hogy néhány böngészőben nem működik a szkrollozás drag'n'drop közben, így mindenképp az emulátorhoz minnél közelebb kellett legyenek, emiatt nem rakhattam feljebb őket.

> Amúgy baromi jó, látszik benne a rengeteg munka és a lelkesedés, gratula!

Nagyon köszönöm!

Na hát igen, tökéletesen igazad van, ezt én is belátom. De sajnos míg a programozásban és a technikai doksi írásában otthon vagyok, addig az online marketing nagyon nagyon nem az én asztalom. Tecsőt, guglit, diszkórdot és az arcoskönyvet (a proprietary spywaret úgy általában) ott kerülöm és tiltom tűzfalból, ahol csak lehet, úgyhogy számomra ez kivitelezhetetlen. Emiatt is döntöttem inkább egy HUP poszt mellett.

Hát, sajnos nem fognak a srácok random idetévedni, maximum rajtunk, szülőkön/nagyszülőkön keresztül. A "játékprogramozás kezdőknek" kulcsszóra valószínűleg nagyon hátul vagyunk :D 

Egyébként a jatekprogramozo.hu szabad, ha esetleg valami oktatóanyagot szeretnél úgy publikálni, hogy azt meg is találják. Szerintem nem ördögtől való a fizetős oktatás sem.

> A "játékprogramozás kezdőknek" kulcsszóra valószínűleg nagyon hátul vagyunk :D

Minden bizonnyal :D :D :D De gondoltam csak akad errefelé egy-két programozó apuka... Néztem még a prog.hu-t is, de ott képtelenség átvergődni a proprietary js tengeren, szóval az nem játszik.

> Egyébként a jatekprogramozo.hu szabad, ha esetleg valami oktatóanyagot szeretnél úgy publikálni, hogy azt meg is találják. Szerintem nem ördögtől való a fizetős oktatás sem.

Remek ötlet! Sajnos rajtam kívülálló okok miatt nem lehet bankszámlám, így számomra eléggé körülményes a domain és tárhely vásárlás. Pedig szívesen vállalnék akár magánórákat is, amiből finanszírozhatnám a fenntartását, ebben is igazad van.

Szerkesztve: 2023. 06. 27., k – 11:00

.

Gratulálok, és elnézést a szóhasználatért, de ez kibaszott kúrva jó!

Böngészőben tudtam csak megnézni. Windows 11-en indítás után teljes képernyővel indul az elsődleges monitoron, és amikor a floppyra kattintok, mögé kerül a megnyitás. ALT-TAB se vált. Semmilyen módszerrel nem tudtam az előtérbe hozni a megnyitást.

> Gratulálok, és elnézést a szóhasználatért, de ez kibaszott kúrva jó!

Hehehe, örülök, hogy így tetszik!

> Windows 11-en indítás után teljes képernyővel indul az elsődleges monitoron, és amikor a floppyra kattintok, mögé kerül a megnyitás. ALT-TAB se vált. Semmilyen módszerrel nem tudtam az előtérbe hozni a megnyitást.

Köszönöm, ez hasznos visszajelzés. F11-et leütve tudsz váltogatni teljesképernyős és ablakos mód között. Ablakos mód mellett mindenképp mennie kell az ALT-TAB-nak.

Elvileg a modal ablaknak magától mindig a szülő ablak elé kéne kerülnie, utánnajárok, ismert-e ilyen SDL bug Win11 alatt, talán van már rá workaround. Vagy ha nincs, akkor megnézem, tudok-e tenni valamit a window focus-al, vagy esetleg elkuftam a szülő ablak megadását, vagy valami hasonló. Linuxot használok elsősorban, ott jól működik (ott is SDL-s az ablak, de a fájlválasztó run-time linkelt GTK-s, mivel az SDL-ben nincs openfile hívás. Windowson natív comdlg32.dll-es).

Szerk: ah, jut eszembe. Ha berakod a flopiképeket egy mappába, majd csinálsz egy shortcut-ot, amiben a "Cél" mezőben hozzáadod a "-d (mappa)" kapcsolót, akkor a beépített flopiválasztót fogja használni (ugyanabban az ablakban megjelenítve, tehát nincs modal, nincs gond. Ez viszont csak a megadott mappa tartalmát mutatja csak, almappákat nem és könyvtárat sem enged váltani, direkt).

Az F11 volt az első amit próbáltam, nem működik.

ALT+SPACE nem hozza elő window menüt, de ez ablak módra váltás után tuti megjelenne.

Végül a WIN+TAB megoldotta, betöltöttem a flopit, de itt is van némi anomália, minimalizálva indul a játék. Ikonra kattintva visszamegy teljes képernyőre.

Játék közben és a szerkesztőben se megy az F11.

Próbáltam

meg4.exe /d C:\1\

Idézőjelekkel, nélkül, visszaper a végén, nélkül, minden variációt, feljön a flopijaid belső választó, de üres a képernyő pedig a mappában van flopi.

> Az F11 volt az első amit próbáltam, nem működik.

Érdekes, és valóban. Ez bizony egy SDL bug, Linuxon működik, és ugyanaz a kód, nincs benne semmi Win specifikus. https://gitlab.com/bztsrc/meg4/-/blob/main/platform/sdl/main.c#L178

> ALT+SPACE nem hozza elő window menüt, de ez ablak módra váltás után tuti megjelenne.

Nem, mert az SDL benyeli ezt a kombót. Egyébként AltGr helyettesítő, szóval kompozit ékezet módba kapcsol az ALT+SPACE.

> Végül a WIN+TAB megoldotta

Feltettem egy új verziót, valóban elfelejtettem beállítani a modal parent-jét.

> itt is van némi anomália, minimalizálva indul a játék.

Mit értesz ez alatt? Tálcára kerül az ablak? Ez nagyon érdekes, mert a kódomban egyáltalán sehol sincs ablak ikonizálás/minimalizálás/maximalizálás... Nálam nem csinál ilyent (mondjuk nincs Win11-em). Ez egy újabb SDL hülyeség lesz Windows alatt, amit workaroundolni kell.

> Idézőjelekkel, nélkül, visszaper a végén, nélkül, minden variációt, feljön a flopijaid belső választó, de üres a képernyő pedig a mappában van flopi.

Idézőjel kellhet (ha van benne szóköz), visszaper mindegy a végén. Valóban van valami gikszer, nálam se jelennek meg a flopik. Bocs, Linuxon teszteltem sokat, Win alatt előfordulhatnak ilyen bugok, de nagyon jó, hogy jelezted, köszönöm! Utánnajárok!

Szerkesztve: 2023. 06. 26., h – 14:21

Szerk.: magyar billentyűzet kiosztás ALT GR probléma

-

Pattogó labda példa, bár mindegy milyen példa, csak ezt kezdtem el

MEG-4 Kézikönyv (bztsrc.gitlab.io)

Kód szerkesztőben (F2)

  • HIBA: Ubuntu 23.04 deb csomagból telepítve nem működik az ALR GR
  • MŰKÖDIK: Ubuntu 23.04 Firefox, Chrome, Edge mindenből az utolsó működik az ALT GR
  • HIBA: Windows 11 exe nem működik az ALR GR
  • HIBA: Windows 11 Firefox, Chrome, Edge mindenből az utolsó nem működik az ALT GR

Jelenleg úgy néz ki hogy Linuxon, de Ubuntu 23.04-en biztosan böngészőben lehet tanulni.

Teljes képernyő / ablak

Ubuntu 23.04 deb csomagból telepítve is tapasztalható ablak probléma, F11 után bár átvált ablakra, az egér kezelhetetlenül működik. DE! ez VMware, itt betudható ennek is. 

Köszönöm az észrevételeket!

> magyar billentyűzet kiosztás ALT GR probléma

Hát ezzel nem tudom, mit kezdjek, mert (megint) ugyanaz a kód Linux alatt működik, Win alatt meg ezek szerint nem? Megnéztem, és nincs hiba a kódomban:

https://gitlab.com/bztsrc/meg4/-/blob/main/platform/sdl/main.c#L721
main_keymap[SDL_SCANCODE_RALT] = MEG4_KEY_RALT;

Az SDL headerben pedig ezt írják:
https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_scancode.h#L334
SDL_SCANCODE_RALT = 230, /**< alt gr, option */

Szóval a jó szkenkódot adom át, és hát nálam Linuxon működik is szépen. Ezt is lecsekkolom, hogy esetleg más is jelezte-e már ezt az SDL bugot. Addig is ALT GR helyett használható az ALT+SPACE, bár ha eleve magyar kiosztású a billentyűzeted, akkor úgysincs szükséged kompozit módra, mivel minden ékezetes karakter eleve megtalálható rajta.

Megjegyzés: a szkenkód a gomb sorszáma, ennek (elvileg legalábbis) függetlennek kéne lennie a használt billentyűzetkiosztástól. Azt el tudom képzelni esetleg, hogy a Win magyar kiosztás esetén speciális gombként kezeli, és a kernel eleve át sem adja az SDL-nek a lenyomás-felengedés eseményt?

> F11 után bár átvált ablakra, az egér kezelhetetlenül működik. DE! ez VMware, itt betudható ennek is.

Ezt nem sikerült reprodukálnom, úgyhogy valószínűleg VMware lesz. Bár elképzelni sem tudom mitől lehet kezelhetetlen az egér, csupán csak lekérdezem a koordinátákat egy SDL_GetMouseState hívással, nem csinálok az egyégadta világon semmi különöset vele. https://gitlab.com/bztsrc/meg4/-/blob/main/platform/sdl/main.c#L265

Ja, csak mégegy kérdés (al'a Columbo :-) ). Milyen SDL verziót telepíttél az Ubuntu-ra (van sima SDL 2.0 csomag, meg SDL-debian is 23.04 alatt, ráadásul persze eltérő verziókkal)? Megnéznéd kérlek, hogy a https://gitlab.com/bztsrc/meg4/-/blob/binaries/meg4-x86_64-linux-sdl.tgz változat működik-e jól? (Ez statikusan linkelt, nem kell hozzá külön SDL-t telepíteni, szóval elvileg nem lehet libverzió eltérés.)

Új verzió feltöltve. Mondom, mire jutottam:

F11 - ez egy ismert, számtalanszor javított, de mégis folyton (mindig más-más platformon) újra visszatérő SDL bug. Teljesképernyősnek nyitott ablak a továbbiakban már nem ablakosítható. Kerülőmegoldásként mindig ablakos ablakot nyitok, és külön paranccsal kapcsolom teljesképernyőre. Így jó Windows alatt is.

ALT GR - ez vicces, Windows alatt képtelen ALT GR eseményt küldeni, mindenképp CTRL+ALT GR kombónak hiszi (pedig eskü, nem nyomom le mellé a controlt). Linuxon nálam nem jött ez elő, de ha ez egy adott SDL verzióra jellemző bug, akkor valószínű, hogy a workaround Ubuntu-t is megjavítja.

flopilista - a WideCharToMultiByte bizonyos sztringek esetén nem volt hajlandó visszaadni a szükséges buffer méretét. Lecseréltem wcslen()*4-re, ez elpazarol ugyan pár bájtot, cserébe mindig működik.

ablak minimalizálás - ezt nem tudtam sehogy sem reprodukálni (de nincs Win11-em). Viszont van egy explicit SDL_RaiseWindow hívás miután a modal-t bezárták, szóval ennek mindenképp képernyőre tennie és fókuszálnia kell(ene) az ablakot. Remélhetőleg most már, hogy jól állítom be a modal parentjét, meg külön window focus hívás is van, ez is megjavul.

> Köszi jók lettek, majd jelezz ha működik a programozás is Windowson magyar nyelvű billentyűzettel.

Szerintem megy. Mi a gond pontosan? (AltGr-nek már működnie kell, meg egyébként is az csak a kompozit mód, ami nem szükséges a programozáshoz. Kombinációkra pl. AltGr+, az SDL a Windows IME-jét használja, szóval annak eleve ";" karaktert kell küldenie, tök függetlenül attól, hogy én mit bűvészkedek)

> Amúgy mi az a legkisebb hardver amin működhet? ESP32, ESP8266?

RPi2 volt a legkissebb, amin próbáltam, de valszeg kevesebb is elég neki. Mondjuk a sebesség nem volt fergeteges, RPi3-n már szépen muzsikál. ESP-t még nem használtam.

Maga a libmeg4.a egyébként nagyon minimális igényű, inkább az a gond, hogy az SDL-nek kell OpenGL vagy DirectX a hardware-s gyorsításhoz. Tervezem, hogy csinálok egy fbdev+alsa "platformot" neki, hogy még SDL se kelljen hozzá. Egyébként meg kizárólag portolható ANSI C-ben van írva (azaz nincs SIMD vagy NEON igénye sem, a vektoroptimalizást a fordítóra bízza).

Öööö, nem tudod megmondani, hogy mi a gondod és hogy szerinted mi nem megy? Mégis, úgy őszintén, mit remélsz egy ilyen hibabejelentéstől?
Maradjunk annyiban, hogy tuti biztos, a (tisztázatlan milyen) "hiba az Ön készülékében van".

Nálam tökéletesen működik minden: elindítom, F2-re bejön a kódszerkesztő, kurzornyilak működnek, tudok bele gépelni. Ctrl+V-re a notepadben kimásolt szöveget szépen beilleszti. AltGr-t leütve a jobb alsó sarokban megjelenik a billentyűzetbeviteli ikon, "o"-t és ":"-t begépelve az ikon eltűnik és egy "ö" kerül a szövegbe, ahogy kell. De az "ő" gomb magyar kiosztással ugyanúgy működik, szóval nincs is szükség az AltGr kompozit trükkre. Ctrl+R-re a program lefordul, és a játék elindul. Esc-re visszajön a kódszerkesztő.

Szóval tökéletesen lehet benne programozni Windows alatt magyar kiosztással, én nem látok semmi hibát, minden zsír.

Ember, Te kértél segítséget.

Induljunk ki abból, hogy én voltam a balfasz és nem írtam oda, hogy 

  • "ALT GR + í" = "<"
  • "ALT GR + y" = ">"
  • "ALT GR + c" = "&"
  • "ALT GR + b" = "{"
  • "ALT GR + n" = "}"
  • "ALT GR + ," = ";"

ami a C programozáshoz elengedhetetlen. Nem az a nyomorom, hogy nem tudok szájbabaszott őúűéáéűáéíöüóűáéőúé betűket leütni. Hanem az, hogy Windows 11-en nem működik magyar billentyűzetkiosztás az alkalmazásodban, mert a fent említett felsorolás nem megy. Windowson még böngészőben se. Ahogy Te Linuxot használsz, én Windows-t. Ahogy Te angol kiosztást, én magyart. Szóval nem, nem az én készülékemben van a hiba, hanem a programban. 

Azt pedig, hogy más szerkesztőben megírom, az egy ideiglenes megoldás, de azt se ebben a stílusban kell tálalni. Arról nem is beszélve, hogy itt elveszik a retro érzés, idézek Tőled:

Régen leültünk a C=64 elé, fogtuk a határon átcsempészett, német nyelvű BASIC könyvet, fellapoztuk a CoV magazint, és máris hamar sikerélményeink voltak. Ez ma már nincs.

Kipróbáltam Ubuntu 23.04-alatt a javított appot, (igen biztos letöltöttem, és igen feltelepítettem), de ott se működik az előbb felsorolt alt gr + lista. Tehát a Windowsban van a hiba kijelentés kizárható, bár ez a Te szakterületed, nem az enyém, ne vedd készpénznek.

Szóval azt gondolom, ha Alkalmazás (nem böngésző) + Linux + magyar billentyűzetkiosztás nálad működik, (félreértés miatt ideírom, nem a szájba be és ki baszás őúüóöüóűéáéűéűíöóüüöüűéáéúő billentyűk, hanem a felsorolás az előbbi hozzászólásomban) akkor jelezd kérlek melyik disztro melyik verzió, felrakom. Megnézem mi a különbség az Ubuntu 23.04-hez képest.

De ha Nálad mégse működik az alt gr + felsorolás magyar billentyűzetkiosztással, azon a Linuxon amit használsz, feltételezem elég azon tesztelned, mert ha ott megjavul, menni fog Windowson is.

23.04 itt is, valami altgr-alt keveredés lesz az eseményekben, mert altgr+b,n,h az alt+b,n,h karaktereit hozza be, és altgr+j,k a megfelelő katakana/emoji módokba léptet. (Vagy csak nem értem ezt a compose módot, de minden esetre <>{} karaktereket én sem tudok írni magyar kiosztással.)

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

> Induljunk ki abból, hogy én voltam a balfasz és nem írtam oda, hogy

Igen, ez sokat segített volna. Végül valaki nyitott egy gitlab issue-t, abból esett le, hogy miről van szó.

Amióta az eszemet tudom, még soha életemben nem programoztam magyar kiosztással, csakis kizárólag International-el, mert ott minden programozáshoz szükséges szimbólum gyorsan elérhető. Csak akkor váltok ideiglenesen magyarra, amikor egy sztring literált csépelek be. Szóval tökre nem esett le, hogy mi a gond, nem jutott eszembe lenyomni ezeket a kombókat.

Javítva, eddig mind a bal Alt és a jobb Alt egyformán állította az "alt lenyomva" flaget. Mostantól csakis a bal Alt állítja, így a jobb Alt speciális szerepet kaphat az egyes billentyúzetkiosztásoknál (mint pl. a magyar). Kipróbáltam az általad megadott kombókat, jól működnek.

Kérlek töltsétek le a legfrissebb binárist, és jelezzetek vissza, hogy most már nálatok is jó-e.

Nekem most OK, az alt-gr elvártak szerint viselkedik, részemről köszönöm. Viszont: engem nem zavar csak eltérő viselkedés miatt inkább ideírom, hogy most a ctrl+enter csak a bal oldali ctrl kombinációjával működik. (Valószínűleg ez elvárt, ha ctrl keyek között is különbség van téve.)

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

ahanyszor meglatom a topic cimet, a MEG-4-et mindig MPEG-4-nek olvasom...

> ahanyszor meglatom a topic cimet, a MEG-4-et mindig MPEG-4-nek olvasom...

Hahahaha, nem bújtad véletlenül kicsit túl sokat egy bizonyos lejátszó forrását? Szakmai ártalom gondolom :-)

De nem, semmi köze hozzá, a MEG-4 konzol (kiejtve "a mega konzol") arra utal, hogy jobb, mint a konkurencia és az Amiga hangzására próbál (nem túl sikeresen) rájátszani.
(Megj. a 80-as 90-es években volt nagy divat, hogy minden újdonság elé "mega" előtagot tettek, aztán később meg "super-mega", "super-hiper-mega", "super-ultra-turbo-hiper-mega" stb. Lásd https://i.ytimg.com/vi/f9shLhKHiqc/maxresdefault.jpg)

Ez baromi jó lett! Korban kiestem ugyan a c64 retró korszakból, de 2002 táján szereztem magamnak egyet, így átérzem kicsit a nosztalgikus hangulatot :)

Nagy munka lehetett mindezt megcsinálni.  Gratulálok a kitartásodhoz, tehetségedhez, célodhoz. Sok ilyen kellene. Úgymond igényes, komoly házi barkács projektek, amik egy garázsban készülnek és lám mi lesz belőle :)

> Ez baromi jó lett!

Köszönöm! Örülök, hogy tetszik!

> Nagy munka lehetett mindezt megcsinálni.

Nehéz megmondani, mert csak szabadidőmben foglalkoztam vele, és akkor sem mindig, mert más projekteim is vannak. Úgy kb. 1 hónapnyi nettó munkaóra lehet benne.

Egyébként nem is a programozás része volt az igazán nehéz, az könnyen ment (na jó, a fordítóval azért szívtam kicsit, miután a C mellé a BASIC-et is belerőszakoltam). A legtöbb időt az vette el, hogy felhajtsam a doksikat, az alapján leimplementáljam, majd élő példákat felhasználva rájöjjek, mi az, ami nem is úgy működik, mint ahogy a speckó alapján kéne.

Ilyen szempontból a MIDI volt minden kétség nélkül a legeslegalja, és a legtöbb időt rabló. Nagyon slendrián és kifejezetten pocsék a dokumentációja (már ha megtalálod, mert általában paywall mögé van rejtve. Szerencsémre rábukkantam egy publikus egyetemi szerveren). Nem triviális implementálni, legalább háromféleképp meg lehet benne adni az ütemet például. Aztán a netről letöltött .mid fájlok tele vannak mindenféle turpissággal meg huncutsággal, amire egyáltalán nem gondoltál volna a doksi olvasásakor. Végezetül rengeteg időm ment el arra, hogy mivel a MIDI csak a kottát tartalmazza, hangmintákat nem, ezért nekem kellett összevadásznom a soundbankot (csak public domain vagy CC-0 minta jöhetett szóba, azokat is nekem kellett konvertálni meg átszerkeszteni Audacity-vel, hogy beleférjenek a MEG-4 limitjeibe, nem is vagyok elégedett mindegyikkel). Ehhez képest az Amiga MOD, aminek még csak hivatalos specifikációja sincs, csak pár txt fájl erre-arra, gyerekjáték volt.

A másik, amivel szívtam, a Tiled TMX formátumú térképek voltak. Itt nehezített pálya volt, hogy nem használhattam semmilyen 3rd party XML parsert, mindent nekem kellett megoldani csakis libc-vel. Ráadásul a speckó sem túl bőbeszédű, pláne ami a base64 kódolt, tömörített bináris variánsait illeti. Azért sikerült összehozni, mindent be tud olvasni, kivéve a zstd tömörítettet (csak emiatt nem akartam a zstd függőséget hozzáadni, míg a zlib-re egyébként is szükségem volt a PNG-hez).

> Gratulálok a kitartásodhoz, tehetségedhez, célodhoz.

Köszönöm! Mint kiderült, a világ legrosszabb főnökeit kaptam a projekthez, a fiaimat :-) Minden tegnapra kellett, és nekik végképp nem tudtam nemet mondani... És még örültem is közben! Különösen akkor, amikor felcsillant a szemük ha épp elkészültem valamivel.

> Sok ilyen kellene. Úgymond igényes, komoly házi barkács projektek, amik egy garázsban készülnek és lám mi lesz belőle :)

Igen, szerintem is. Annyira rossz már a helyzet, hogy Z-gen programozók képtelenek ilyesmire (tisztelet a kivételnek). Csak fogják az épp aktuálisan agyonhypeolt bloated libet vagy middleware-t, aztán összeollózák néhány inidiai yt videó alapján a hívásokat, miközben fingjuk sincs, mi miért és hogyan működik. De ami a legnagyobb baj, hogy nem is kíváncsiak rá, mert hát egy év múlva úgyis egy másik middleware lesz a menő. El sem tudják képzelni, hogy lehet bloated libek nélkül is élni.

Itt egy remek példa: https://www.youtube.com/watch?v=AjgqmBlWK8I csávó megpróbálja értelmezni, hogy is működik a Toledo Nanochess (https://nanochess.org/). És hát nagyon látványosan felsül. A deobfuszkálással még többnyire megbírkózik, de egy ponton kénytelen beismeri, hogy "fingom sincs ez itt mit csinál" :-)

En is kiprobaltam, es tenyleg latszik hogy par verzio utan nagyon jo lesz ez.

 

Mivel Gitlabon csak bugokat varsz az issue trackerbe, ezert ide teszem a quality-of-life problemakat amiket talaltam:

  • Main menu
    • Az ikonok tul sok reszlettel rendelkeznek igy nehez megkulonboztetni oket. Probald meg 2/4/8 szinbol kihozni oket. A legrosszabb a "cut" ikon ahol az ollo egy resze beleolvad a hatterbe. Itt lehetne peldat venni a TIC-80bol.
    • Jo lenne ha lenne valamifele "virtual stdout", ahol a printf() outputjat meg lehetne nezni pl. webes uzemmodban is
  • MEG-4 C
    • // C99-tipusu komment mukodik, de nincs dokumentalva
    • Jo lenne ha a "blokkon belul barhol definialhatok uj valtozot" C99-es ujitas is benne lenne, kulonosen a for(int i = 0; i < 100; i++) {} tipusu konstrukcio hianyzik
    • union nem hianyzik, de a struct igen, jo latni hogy a roadmapban mar benne van
  • Documentation
    • Nincs neki kulon ikonja
    • Jobb lenne ha tematikusan is szet lenne valasztva valahogy. Konkret pelda: palettaeffekteket szeretnek csinalni, rakeresek a helpben es az egyetlen ~relevansan hangzo fuggveny a color(), ami rakattintva derul ki hogy csak turtle modban jelent valamit egyatalan. Sokkal jobb lenne ha ra se kattintottam volna ha lett volna valami turtle tag mellette. Ugyanez 3D-s fuggvenyekkel.
  • Code editor
    • A kontraszt nem eleg nagy ugy altalaban, ezen belul a kommentek pl. kulonosen nehezen olvashatoak (ez is jobb a TIC-80ban, de lehetne valami IDE-nek a szinosszeallitasat is hasznalni)
    • Nem lehet szoveget kijelolni a shift + kurzor billentyukkel
    • A sor vegen valo Enter a kovetkezo sor elejere megy. Jobb lenne ha az elozo sor behuzasahoz ugrana azonnal
    • Nincs "run" gomb, de van "visual editor" gomb ami nem mukodik. Ne legyenek olyan gombok amik nem vezetnek sehova, de a gyakran hasznalt funkcioknak (help, run) legyen gombjuk.
    • Bug: Ha elszall "syntax errorral", akkor a Functionlist gomb nem mukodik. A villogo kurzor a jobb szelre ugrik, de a lista ablak nem jelenik meg
  • Sprite editor
    • Csak negyzeteket lehet kivalasztani drag&drop-pal mint editalando egyseg, mig a map editorban siman kivalaszthatok teglalapokat is (8x16, 24x8 egysegek)
  • Map editor
    • Ha nagyobb mint 8x8 a stamp, akkor "dragging" rajzolaskor 8x8-ankent felulirja a mar lerakott tileokat. Kezenfekvobb lenne a dragging kozben a stamp meretenkent valo ugras, mig a feluliras akkor amikor az elso stampot teszem le.

Köszönöm az észrevételeidet és a részletes, aprólékos listát!

> Az ikonok tul sok reszlettel rendelkeznek igy nehez megkulonboztetni oket. Probald meg 2/4/8 szinbol kihozni oket. A legrosszabb a "cut" ikon ahol az ollo egy resze beleolvad a hatterbe. Itt lehetne peldat venni a TIC-80bol.

Igen, az ikonokon lenne még mit javítani. Majd csinálok pár alternatívát.

> Jo lenne ha lenne valamifele "virtual stdout", ahol a printf() outputjat meg lehetne nezni pl. webes uzemmodban is

Van. A "printf()" (itt most a MEG-4 scriptek által hívottra gondolok, nem az emulátor kódjában hívottra) a MEG-4 képernyőjére ír ki. Ettől független a "trace()", ami pedig a meg4 futtatható stdout-jára ír, ha verbose módban indítod (meg4 -v). Elvileg ez utóbbi át van írányítva weben a console.log()-ra, de ránézek.

> Jo lenne ha a "blokkon belul barhol definialhatok uj valtozot" C99-es ujitas is benne lenne, kulonosen a for(int i = 0; i < 100; i++) {} tipusu konstrukcio hianyzik

Igen, ezen morfondíroztam én is. Végül maradtam a C89-es verziónál, ahol csak a funkciótörzs elején lehet deklarálni, mivel rengeteg problémát okoz, és alapjaiban kellene átírni a fordítóprogramot hozzá. (A gondot az okozza, hogy ilyenkor a veremmutatót csökkenti egy adott ponton, hogy helyet csináljon a változónak. Viszont a blokkon belül bármikor átadható a vezérlés (break, goto) ezen blokkon kívülre, amikor is vissza kell állítani a veremmutatót a deklaráció előttire. Ez az ellenőrzés rengeteg plusz munkát igényel, gyakorlatilag nyilván kéne tartani, hogy melyik kódcímen mi kell legyen a veremmutató, és nézni, hogy az ugrás helyén és a cél helyén eltér-e.)

> union nem hianyzik, de a struct igen, jo latni hogy a roadmapban mar benne van

Ez tervben van, fenn van a TODO listán, és kezdetleges támogatás is van már hozzá a fordítóban. (Nincs jelentős különbség az union és a struct implementálásában, mindössze annyi, hogy union esetén nem kell növelni a mezőoffszetet. Szóval amikor a struct-ot belerakom, akkor egyből az union-t is be fogom rakni)

> Nincs neki kulon ikonja

Mármint hol kellene megjelennie? F1-re mindig bejön, és ha kódszerkesztéskor egy API funkciólistájában állsz, akkor alul meg is jelenik az ikonja a gyorssúgóval (F1-re ilyenkor meg egyből a kérdéses API híváshoz ugrik a súgóban).

> Jobb lenne ha tematikusan is szet lenne valasztva valahogy.

Most csak egyszintű tematikus kategória van (Általános, Memóriatérkép, Grafika, Matematika, stb.). Nem szívesen vezetnék be több szintet, de lehet hogy berakok több kategóriát.

> palettaeffekteket szeretnek csinalni

Ehhez az MMIO-ba kell írni, a 0x80-as címen található a paletta. Viszont a paletta módosítása nem fogja megváltoztatni a már kirakott pixeleket. A kirakott pixeleket muszáj külön cache-lni, különben nem lehetne alpha blendinget meg anti-aliast csinálni.

> A kontraszt nem eleg nagy ugy altalaban, ezen belul a kommentek pl. kulonosen nehezen olvashatoak (ez is jobb a TIC-80ban, de lehetne valami IDE-nek a szinosszeallitasat is hasznalni)

A színtéma tetszőlegesen állítható, csak dobj rá a MEG-4 ablakára egy GIMP Palette fájlt. Nincs semmi kifogásom az ellen, hogy az alapértelmezett színtémát kijavítsuk, egyáltalán nem ragaszkodom hozzá. Elismerem, hogy csak behánytam gyorsan pár színt, nem biztos, hogy jó. https://gitlab.com/bztsrc/meg4/-/blob/main/src/misc/theme.gpl

> Nem lehet szoveget kijelolni a shift + kurzor billentyukkel

Nálam működik. Valahogy le tudnád szűkíteni, hogy hogyan reprodukálható ez?

> A sor vegen valo Enter a kovetkezo sor elejere megy. Jobb lenne ha az elozo sor behuzasahoz ugrana azonnal

Igen, ez is fenn van a TODO listámon.

> Nincs "run" gomb, de van "visual editor" gomb ami nem mukodik.

Run gombot nem is terveztem, mert a gyorsbillentyű szerintem jobban kézre áll (Ctrl + R), lévén úgyis gépeltél mielőtt fordítani akarsz. A Visual editor még nincs kész, fejlesztés alatt. Egy másik projektemben már megcsináltam, valami ilyesmi lesz: https://tirnanog.codeberg.page/images/tnge5.png

> Bug: Ha elszall "syntax errorral", akkor a Functionlist gomb nem mukodik.

Ez valóban bug, ha így van, ránézek. Bár lehet nem bug. Ha a syntax error befolyásolja a highlightot, akkor a tokenizálás sem fog menni, márpedig annélkül a funkciódeklarációkat sem tudja megtalálni a kódban.

> Csak negyzeteket lehet kivalasztani drag&drop-pal mint editalando egyseg, mig a map editorban siman kivalaszthatok teglalapokat is (8x16, 24x8 egysegek)

Nálam működik. Nem az van, hogy a szprájtválasztóról beszélsz, és nem a szprájtszerkesztőről? A jobb oldali szprájtválasztón tényleg csak N x N-es szprájtok jelölhetők ki szerkesztésre, mivel a bal oldali szprájtszerkesztő ablak ugyanolyan magas, mint széles. De ez csak arra vonatkozik, hogy mit látsz bal oldalt. Ettől függetlenül a bal oldali szprájtszerkesztőben már bármekkora terület (pixelek) kijelölhetők.

A térképen nincs külön szerkesztő ablak, így ott nem is kell kijelölni, hogy a térkép mely részét akarod szerkeszteni.

> Ha nagyobb mint 8x8 a stamp, akkor "dragging" rajzolaskor 8x8-ankent felulirja a mar lerakott tileokat.

Igen, ez elvárt működés.

> Kezenfekvobb lenne a dragging kozben a stamp meretenkent valo ugras

Nem, mert nem biztos, hogy a stamp négyzet alakú. Bármilyen tetszőleges forma kijelölhető (ugyanazok a gyorsgombok, mint GIMP alatt, kijelölés bővíthető meg elvehető, mielőtt Ctrl+C-t ütsz), és akkor gondot okozna, ha stamp méretben lehetne csak rajzolni, mert valószínű, hogy nem négyzetes stamp esetén átfedést akarsz.

Ok, a webes verziót frissítettem, a többit majd este tudom. Ezek változtak:

- kellenek új ikonok, de addig is az ollót kontrasztosabbá tettem, szerintem most már jól látható
- kell új színtéma, de addig is a kommentet világosabbá tettem, remélhetőleg is kicsit olvashatóbb lett
- a menüben eddig is volt run és help, de a biztonság kedvéért a kódszerkesztőben a toolbar-ra is kiraktam (zöld playgomb)
- Enter a kódszerkesztőben most már indentál
- amit a programodból trace()-el kiírsz, az weben a JavaScript Console-on megjelenik (natívnál továbbra is csak akkor kerül az stdout-ra, ha verbose módban indítod)

Még pár újdonság:

- Köszönet Mátyás Janinak, aki talált egy bugot, ami bizonyos platformokon hibásan írta ki a beütött billentyűt a konzolra. Javítva.
- Lett raylib platform (https://www.raylib.com/)
- Valamint Linux fbdev és ALSA platform is.

Ez utóbbi fordítható úgy, hogy /sbin/init-ként működjön, így a MEG-4 teljesen önálló operációs rendszerként is használható.

Újdonságok:

- új platform: Android
- új platform: Sokol (https://github.com/floooh/sokol)
- új platform: RetroArch (https://www.retroarch.com/ libretro API)
- új platform: Raspberry Pi (OS nélküli bootolható lemezkép előállítása, deb-es app eddig is volt)
- natív direkt alsa interfész (dev+ioctl, már nem kell neki a bloated, bugos, memleakes asoundlib; teljesen függőségmentes lett)
- rakat új billkiosztás fbdev + alsa platform alatt (az angol és magyar mellett most már francia, német, spanyol, olasz, lengyel, stb.)
- GPIO programozás (Raspberry Pi port alatt, https://bztsrc.gitlab.io/meg4/manual_hu.html#gpio_rev lett hozzá egy példa flopi is)
- az spr() már mind a 8 lehetséges irányban képes forgatni / tükrözni a szprájtokat (2 irány hiányzott eddig, köszönet Mátyás Janinak, hogy jelezte)