A GMENU egy DOS-program (C++, Open Watcom, 8086-os kód, kb. 45 KB). Egy könyvtár (alapból
\COLLECT) játékmappáit listázza címmel, műfajjal, évvel és játékosszámmal, és elindítja a kiválasztott játékot. Amíg a játék fut, nincs a memóriában, így a játék megkapja az összes szabad memóriát.Az 1.1.1-ig NASM assemblyben készült, és a programjai
.COMfájlok voltak; a 2.0.0 ugyanez a menü C++-ban újraírva, a DOSINST eszközláncával, a programjai pedig aGMENUPRG.EXEés aGMEDIT.EXE. A 2.1.0 rétegekbe szervezve épül a DOSLIB-re, a DOSINST-tel közös könyvtárra; a menü ugyanaz. A 2.3.0 a gyorsítótárából indul, a játékmappák bejárása nélkül, és a játékok számát csak a szabad memória korlátozza. A programtárban és a játéklista címsorában GMenu Launcher a neve; a mappa és a programok neve nem változott.

METADATA.INI-jéből (vagy a NAME.TXT első sorából, vagy a mappanévből).METADATA.INI nélküli játékok (Shift+F7)..COM / .EXE / .BAT fájljai.RUN parancs), setup Ctrl+S-sel.GMEDIT.EXE): űrlapon hozza létre vagy szerkeszti a játék METADATA.INI-jét.
Hálózatos DOS-gépen a legegyszerűbb a DOSINST: a DOSINST INSTALL GMENU a legfrissebb kiadást a C:\APPS\GMENU alá telepíti, újra futtatva frissíti. Kézzel:
GMENU-vX.Y.Z.zip-et a kiadások közül, és csomagold ki a DOS-meghajtóra, például C:\APPS\GMENU\ alá (ez az alapértelmezett, a DOSINST is ide telepít). A menünek a GMENU.BAT és a GMENUPRG.EXE kell, a szerkesztéshez a GMEDIT.EXE is.METADATA.INI-vel (vagy legalább egy NAME.TXT-vel):
C:\COLLECT\
DOOM\
METADATA.INI
DOOM.EXE
PRINCE\
NAME.TXT <- első sor: "Prince of Persia"
PRINCE.EXE
GMENU.BAT-ban állítsd be (a GMENUPRG.EXE sor utolsó argumentuma, a /B maradjon):
%GMENU%PRG.EXE /B \COLLECT
Másik meghajtó is jó (D:\GAMES). A /A a részletek oldalon az összes fájlt mutatja, nem csak a futtathatókat.
GMENU. A GMENU.BAT abból a névből találja meg a programjait, amellyel elindították, így a mappa bárhol lehet; .BAT kiterjesztéssel indítva (például Total Commanderből vagy Windows 98-ról) ezt nem tudja, és a C:\APPS\GMENU-ből futtatja őket (a set GMENU= sor: ezt írd át, ha a menü máshol van). DOSBoxban indulhat bootkor is:
[autoexec]
mount c /Users/.../Dosbox
c:
path Z:\;C:\APPS\GMENU
gmenu
Telepített menü frissítéséhez másold a mappájába a GMENUPRG.EXE-t, a GMEDIT.EXE-t és a GMENU.BAT-ot, és a GMENU.BAT-ban állítsd be újra a játékkönyvtárat. 1.x-ről frissítve az új GMENU.BAT kötelező, mert a régi a GMENUPRG.COM-ot indítja; a régi .COM fájlok törölhetők. A DOSINST mindezt elvégzi, a törlést is.
Minden sor opcionális, a kulcsok kis- és nagybetűre nem érzékenyek, a [GAME] és a ;-vel kezdődő sorok nem számítanak:
[GAME]
NAME=Doom
GENRE=Shooter
YEAR=1993
PLAYERS=1-4
DESCRIPTION=The whole description in one line...
DESCRIPTION=A second DESCRIPTION line starts a new line.\nSo does \n inside the text.
RUN=DOOM.EXE -nomusic
ARGS=-skill 3
SETUP=SETUP.EXE
| Kulcs | Jelentés |
|---|---|
NAME |
A cím. Ha nincs: NAME.TXT, aztán a mappanév. |
GENRE, YEAR |
A listában látszik, a szűrők és a rendezés használja. |
PLAYERS |
Szám (2), tartomány (1-4) vagy nyitott (2+). A szűrő azokat a tartományokat adja, amelyek tartalmazzák a számot. |
DESCRIPTION |
A \n sortörés, a \\ backslash; több sor sortöréssel fűződik össze. |
RUN |
Amit a Ctrl+Enter indít: a játék mappájának egy fájlja, opcionális argumentumokkal. |
ARGS |
A RUN-hoz fűződik, akkor is, ha a RUN fájlt a részletek oldalról indítod. |
SETUP |
A setup parancs, Ctrl+S indítja. |
A fájlok lehetnek UTF-8-ak (BOM-mal vagy anélkül) vagy 437-es kódlaposak. Az UTF-8 betűk 437-es kódlapra konvertálódnak; amelyik nincs benne (ő, ű, Á), az a legközelebbi lesz (ö, ü, A).
Szerkesztés a GMEDIT-tel: a Ctrl+E egy űrlapot nyit a mezőkkel. Új fájl abból indul, amit a mappa elárul (NAME.TXT, az egyetlen futtatható mint RUN, az első SETUP* / INSTALL* mint SETUP). Mentéskor csak a megváltozott értékek íródnak át; a kommentek, a többi kulcs és az érintetlen értékek maradnak. F2 ment, Esc elvet. Önállóan is fut: GMEDIT C:\COLLECT\DOOM.
A GMENU.BAT egy ciklus a program körül, így a menü sosem marad a memóriában a játék alatt:
GMENU.BAT lefuttatja a GMENUPRG.EXE /B-t a játékkönyvtárral.GMENURUN.BAT-ot (meghajtó- és mappaváltás, a játék indítása, visszaváltás), és kilép.GMENU.BAT meghívja a GMENURUN.BAT-ot, aztán újraindítja a menüt — ugyanazon a játékon, ugyanazzal a kereséssel, szűrőkkel és rendezéssel.A Ctrl+E ugyanígy működik, csak a GMENURUN.BAT a GMEDIT.EXE-t indítja. /B nélkül a program csak annyit ír ki, hogy a GMENU.BAT-tal kell indítani.
Indításkor a menü a GMENU.IDX-ből veszi a játékokat, és nem nézi meg a játékmappákat, így lassú gépen, sok játékkal is gyorsan indul; csak a kiválasztott játékot ellenőrzi, így a Ctrl+E-vel szerkesztett adat azonnal látszik. A bejárás — az első indításkor, ha nincs GMENU.IDX vagy más játékkönyvtáré, illetve Ctrl+F-re — listázza a mappákat, csak azokat a METADATA.INI / NAME.TXT fájlokat olvassa újra, amelyeknek a dátuma, ideje vagy mérete változott, és újraírja a GMENU.IDX-et. Új, törölt vagy átnevezett játékmappa a Ctrl+F után jelenik meg.
Futás közben létrejövő fájlok, a GMENUPRG.EXE mellett (a formátumuk az 1.1.0 óta nem változott, így a frissített menü megtartja az állapotát; a GMENU.IDX a 2.3.0-ban új verziót kapott, ezért a frissítés utáni első indítás egyszer bejárja a mappákat):
| Fájl | Tartalom |
|---|---|
GMENU.SEL |
Utolsó játék, keresés, szűrők, rendezés, legutóbbi játékok |
GMENU.FAV |
Kedvencek, soronként egy mappanév |
GMENU.STA |
Játékonként a játszások száma és az utolsó játék dátuma |
GMENU.IDX |
A játékmappák és a METADATA.INI / NAME.TXT adataik gyorsítótára; a Ctrl+F újraépíti, bármikor törölhető |
A fordításhoz Open Watcom v2 kell (a snapshot kiadásban macOS-es és linuxos binárisok is vannak; ha nem a ~/.local/opt/watcom alatt van, a WATCOM változó mutasson rá):
cd SOURCE
./build.sh # a GMENUPRG.EXE és a GMEDIT.EXE a szülőmappába
./build.sh test # a tesztváltozatok a SOURCE/build/ alá
A forrás rétegekből áll, mindegyik csak az alatta lévőket használja, azokat is csak interfészen át (a szabályok a DOSLIB oldalán): model (játékok, szűrők, munkamenet, METADATA.INI), repository (a fájlok: a játékmappák a GMENU.IDX gyorsítótárral, kedvencek, statisztika, munkamenet, GMENURUN.BAT), service (a játéklista, az indítás, a választók, a GMEDIT szerkesztése), controller és view (az oldalak), app (összerakja őket), a DOS-os belépés pedig a main_gmenu.cpp és a main_gmedit.cpp. A SOURCE/lib a DOSLIB. Az alapértelmezett játékkönyvtár a gmenu.ini collect_dir kulcsából jön.
A unit-tesztek DOSBox nélkül, a fejlesztőgépen futnak, a teljes menü és a szerkesztő is, szkriptelt billentyűkkel, memóriabeli lemezen; előtte a rétegeket is ellenőrzik:
SOURCE/test/unit/run.sh
A képernyőtesztek DOSBoxban futtatják a tesztváltozatokat: a SOURCE/test/cases.txt minden esetének billentyűsorozata a TESTKEYS.TXT-be kerül, és amikor elfogy, a program elmenti a képernyőt, amit a teszt a SOURCE/test/expected/ tartalmával vet össze. Python 3, Open Watcom és DOSBox (Staging vagy 0.74) kell hozzájuk:
python3 SOURCE/test/run.py # minden eset
python3 SOURCE/test/run.py --update # a mostani eredmény elfogadása
A Woodpecker minden pusht lefordít és letesztel. A metadata.json megemelt version-je a masterre pusholva a pipeline-tól megkapja a vX.Y.Z tagjét, és ez a tag ezen felül Gitea-kiadást is publikál, a RELEASE_NOTES.md szövegével és három fájllal: a telepítéshez a GMENU-vX.Y.Z.zip, a telepített menü frissítéséhez a GMENUPRG.EXE és a GMEDIT.EXE. Ugyanez a tag a katalógusba is publikálja a kiadást, onnan kerül a menü a DOSINST programtárába (ftp://ftp.teletypegames.org/APPS), az INFO.INI-ben a tag a verzió. Minden lépés a dos-tools builder image-ének (git.teletypegames.org/build/dos-builder) egy parancsa, előre telepített eszközlánccal; a repóban csak a platform: dos marker és a metadata.json van, amelynek dos szakasza mondja meg, mi kerül egy kiadásba. A képernyőtesztek egyszerre négy esetet futtatnak (JOBS, mindegyiket a saját mappájában). A Gitea-kiadást a WarpEngine közös release lépése készíti a dos-pack által felsorolt fájlokból. Store lépés nincs: a DOSINST programtára az engine DOS-polca, amelyet minden publikáláskor a katalógusból épít újra, így a pipeline-nak nem kell deploy-kulcs.
# "version": "2.4.0" a metadata.json-ban, aztán
git commit -am "Version 2.4.0"
git push origin master
RUN / SETUP / ARGS 60. A METADATA.INI-ből 4 KB-ot olvas, a GMEDIT 8 KB-ig szerkeszt.