TITLE=Commodore 64 ROUTE=/platforms/c64 LOCALE=hu MODIFIED=1792409344 URL=https://wiki.teletypegames.org/hu/platforms/c64 L=1 #63 A Commodore 64 a klasszikus 8 bites otthoni számítógép. A C64-es projektjeink 6502 assemblyben készülnek, az bACME0 fordítja őket c.prg0 fájllá, a tesztelés pedig a bVICE0 emulátorban (cx64sc0) történik. bACME:0 https://sourceforge.net/projects/acme-crossass/ bVICE: https://vice-emu.sourceforge.io bEszközrepó0: https://git.teletypegames.org/build/c64-tools bEzzel az eszközlánccal készült bprojektek:0 Teletype Games C64 Demo, Rabbit Scooter — C64, Blessing of Ra bTestvérplatform:0 a 1Commodore Plus/4 ugyanezt az ACME-eszközláncot használja. r────────────────────────────────────────────────────────────────────────────── 1Makefile 1════════ Minden c.asm0 fájl a projekt gyökerében van. Az egyetlen belépési pont a cmain.asm0, amely c!src0-cel behúzza a többit. p project-root/ p ├── main.asm # belépési pont, ez húzza be a többit p ├── defs.asm p ├── common.asm p ├── metadata.json # katalógus-metaadatok + verzió p ├── Makefile p └── README.md 2Változók 2──────── t┌──────────┬────────────────────────────────────────────────┬────────────────┐ t│h Változó t│h Leírás t│h Alapérték t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cPROJECT0 t│0 Az artifactokban és a katalógusban használt t│0 — t│ t│0 t│0 név t│0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cASM0 t│0 Az assembler binárisa t│0 cacme0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cEMU0 t│0 Az emulátor binárisa t│0 cx64sc0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cSRC0 t│0 Belépési pont t│0 cmain.asm0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cTARGET0 t│0 Kimeneti program t│0 c$(PROJECT).prg0 t│ t├──────────┼────────────────────────────────────────────────┼────────────────┤ t│0 cMETADATA0 t│0 Metaadatfájl t│0 cmetadata.json0 t│ t└──────────┴────────────────────────────────────────────────┴────────────────┘ 2metadata.json 2───────────── p { p "name": "example", p "title": "Example C64 Game", p "author": "Teletype Games", p "desc": "Short description of the game.", p "site": "https://git.teletypegames.org/games/example", p "license": "MIT", p "version": "1.0.0" p } A cname0 értékének begyeznie kell0 a cPROJECT0 értékével. A cversion0 vezérli a pipeline verziólépését. A többi a játékkatalógusba kerül. 2Célok 2───── p make deps # brew install acme vice (csak macOS) p make build # a main.asm fordítása -> .prg, csak ha változott » p egy .asm p make run # build, majd indítás a VICE-ban p make clear # a .prg és a CI-artifactok törlése p make rebuild # clear + build p make rebuildrun # clear + build + run 2VS Code 2─────── Másold az cexample-tasks.json0 fájlt c.vscode/tasks.json0 néven. Ugyanezeket a célokat csomagolja be, a cbuild0 az alapértelmezett buildfeladat (cCmd+Shift+B0). 2Előálló artifactok 2────────────────── t┌──────────────────────────────────┬─────────────────────────────────┐ t│h Fájl t│h Leírás t│ t├──────────────────────────────────┼─────────────────────────────────┤ t│0 c.prg0 t│0 A lefordított program t│ t│0 c-.prg0 t│0 Verziózott kiadási példány (CI) t│ t│0 c-.metadata.json0 t│0 Verziózott metaadat (CI) t│ t└──────────────────────────────────┴─────────────────────────────────┘ 2Követelmények 2───────────── Csak helyben: cmake0, cacme0, illetve a crun0-hoz a VICE cx64sc0 binárisa. Példa Makefile: https://git.teletypegames.org/build/c64-tools/src/branch/master/example- makefile.make r────────────────────────────────────────────────────────────────────────────── 1Pipeline 1════════ 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 c/build/config0 végponton szolgálja ki (sablon: clib/warp_engine/ci/woodpecker/platforms/c64/pipeline.yaml.erb0). A repóhoz három dolog kell: p # .woodpecker.yaml p platform: c64 p name: rabbit # csak akkor, ha a szoftvernév eltér a repó nevétől • cmetadata.json • az capplication_token0 Woodpecker-secret: egy WarpEngine ApplicationToken az cupdate0 + cupload0 jogosultságokkal A builder és a player image az update szerver CI-adapter konfigurációjából jön (cplatforms:0 a WarpEngine-initializerben). A kiszolgált pipeline megtekintése: p curl "https://teletypegames.org/build/config?platform=c64" 2Lépések 2─────── t┌─────────────┬──────────────────────────────────────────────────────────────┐ t│h Lépés t│h Mit csinál t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 1. version t│0 kiolvassa a verziót a cmetadata.json0-ból, fejlesztői ágakon t│ t│0 t│0 hozzáfűzi az ág nevét, és megírja a c.version0 fájlt t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 2. build t│0 ACME-vel fordít a cc64-builder0 image-ben, t│ t│0 t│0 c-.prg0 és c-.metadata.json0 t│ t│0 t│0 fájlokat előállítva t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 3. package t│0 ccommodore-pack c640 a ccommodore-player0 image-ben: t│ t│0 t│0 c-.html.zip0 (EmulatorJS-oldal a saját t│ t│0 t│0 mappából kiszolgált cvice_x64sc0 core-ral), valamint t│ t│0 t│0 c-linux-x64.zip0, c-win-x64.zip0 és c-mac-universal.zip0 (yapeSDL t│ t│0 t│0 egy indítóval, amely beállítja a géptípust és elindítja a t│ t│0 t│0 c.prg0-t) t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 4. artifact t│0 cPOST /build/upload0 mind a hat fájlra, cX-Update-Secret0 t│ t│0 t│0 fejléccel t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 5. publish t│0 cPOST /build/publish?platform=c640 t│ t└─────────────┴──────────────────────────────────────────────────────────────┘ 2Eredmény 2──────── 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 c.prg0-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 c/file/-/0 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.