A Commodore 64 a klasszikus 8 bites otthoni számítógép. A C64-es projektjeink 6502 assemblyben készülnek, az ACME fordítja őket .prg fájllá, a tesztelés pedig a VICE emulátorban (x64sc) történik.
ACME: https://sourceforge.net/projects/acme-crossass/ VICE: https://vice-emu.sourceforge.io Eszközrepó: https://git.teletypegames.org/build/c64-tools Ezzel az eszközlánccal készült projektek: Teletype Games C64 Demo, Rabbit Scooter — C64, Blessing of Ra Testvérplatform: a Commodore Plus/4 ugyanezt az ACME-eszközláncot használja.
Minden .asm fájl a projekt gyökerében van. Az egyetlen belépési pont a main.asm, amely !src-cel behúzza a többit.
project-root/
├── main.asm # belépési pont, ez húzza be a többit
├── defs.asm
├── common.asm
├── metadata.json # katalógus-metaadatok + verzió
├── Makefile
└── README.md
| Változó | Leírás | Alapérték |
|---|---|---|
PROJECT |
Az artifactokban és a katalógusban használt név | — |
ASM |
Az assembler binárisa | acme |
EMU |
Az emulátor binárisa | x64sc |
SRC |
Belépési pont | main.asm |
TARGET |
Kimeneti program | $(PROJECT).prg |
METADATA |
Metaadatfájl | metadata.json |
{
"name": "example",
"title": "Example C64 Game",
"author": "Teletype Games",
"desc": "Short description of the game.",
"site": "https://git.teletypegames.org/games/example",
"license": "MIT",
"version": "1.0.0"
}
A name értékének egyeznie kell a PROJECT értékével. A version vezérli a pipeline verziólépését. A többi a játékkatalógusba kerül.
make deps # brew install acme vice (csak macOS)
make build # a main.asm fordítása -> <project>.prg, csak ha változott egy .asm
make run # build, majd indítás a VICE-ban
make clear # a .prg és a CI-artifactok törlése
make rebuild # clear + build
make rebuildrun # clear + build + run
Másold az example-tasks.json fájlt .vscode/tasks.json néven. Ugyanezeket a célokat csomagolja be, a build az alapértelmezett buildfeladat (Cmd+Shift+B).
| Fájl | Leírás |
|---|---|
<project>.prg |
A lefordított program |
<project>-<verzió>.prg |
Verziózott kiadási példány (CI) |
<project>-<verzió>.metadata.json |
Verziózott metaadat (CI) |
Csak helyben: make, acme, illetve a run-hoz a VICE x64sc binárisa.
Példa Makefile: https://git.teletypegames.org/build/c64-tools/src/branch/master/example-makefile.make
A pipeline nincs benne a játékrepóban. A Woodpecker az update szervertől kéri el, a WarpEngine pedig a teljes konfigurációt a /build/config végponton szolgálja ki (sablon: lib/warp_engine/ci/woodpecker/platforms/c64/pipeline.yaml.erb).
A repóhoz három dolog kell:
# .woodpecker.yaml
platform: c64
name: rabbit # csak akkor, ha a szoftvernév eltér a repó nevétől
metadata.jsonapplication_token Woodpecker-secret: egy WarpEngine ApplicationToken az update + upload jogosultságokkalA builder és a player image az update szerver CI-adapter konfigurációjából jön (platforms: a WarpEngine-initializerben). A kiszolgált pipeline megtekintése:
curl "https://teletypegames.org/build/config?platform=c64"
| Lépés | Mit csinál |
|---|---|
| 1. version | az engine közös lépése (a WarpEngine 1.7 óta): a verzió a metadata.json-ból; tagnél a verziótagnek egyeznie kell vele; a repó alapágán kívül és egy dev-<ág> tagen dev-<verzió>-<ág>, verzió nélkül dev-<commit>; megírja a .version fájlt |
| 2. build | ACME-vel fordít a c64-builder image-ben, <project>-<verzió>.prg és <project>-<verzió>.metadata.json fájlokat előállítva |
| 3. package | csak tagre: commodore-pack c64 a commodore-player image-ben: <project>-<verzió>.html.zip (EmulatorJS-oldal a saját mappából kiszolgált vice_x64sc core-ral), valamint -linux-x64.zip, -win-x64.zip és -mac-arm64.zip (yapeSDL egy indítóval, amely beállítja a géptípust és elindítja a .prg-t) |
| 4. upload | csak tagre: POST /build/upload a .prg-re, a metaadatra és az elkészült lejátszókra (sikeres csomagolásnál mind a hat fájlra), X-Update-Secret fejléccel |
| 5. publish | csak tagre: POST /build/publish?platform=c64 |
| 6. tag | az engine közös lépése (a WarpEngine 1.9 óta), csak push után: a forrás új verziója megkapja a v<verzió> tagjét, és annak pipeline-ja futtatja a csak tagre jelölt lépéseket; egy már tagelt verzió nem ad ki semmit; egy dev build az ág dev-<ág> tagjét a commitra helyezi, így mindig a legfrissebb dev build van kiadva. Lásd: Verziók és kiadások a WarpEngine oldalon |
A verzió emelése maga a kiadás: a push buildel és tagel, a tag pipeline-ja tölt fel és publikál (WarpEngine 1.9). Egy push, amely nem emeli a verziót, csak buildel.
A szerver beolvassa a feltöltött metaadatot, létrehozza vagy frissíti a katalógusbejegyzést, és öt assetet regisztrál a kiadáson: a .prg-t letölthető kazettaként, az EmulatorJS-oldalt böngészőben futtatható buildként (a katalógus „Játék böngészőben” gombja, a /file/<név>-<verzió>/ alól kiszolgálva), a három yapeSDL-csomagot pedig linuxos, windowsos és macOS-es letöltésként. A WarpEngine 0.11-től a két Commodore-platform ugyanazokat az assetfajtákat várja; a korábbi kiadásokon újraépítésig csak a kazetta van.