---
title: 'Commodore 64'
url: 'https://wiki.teletypegames.org/hu/platforms/c64'
markdown: 'https://wiki.teletypegames.org/hu/platforms/c64.md'
lang: hu
date: '2026-07-16'
description: '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ó:…'
taxonomy:
  tag:
    - howto
---

# Commodore 64

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](https://wiki.teletypegames.org/hu/projects/c64-demo), [Rabbit Scooter — C64](https://wiki.teletypegames.org/hu/projects/rabbitc64), [Blessing of Ra](https://wiki.teletypegames.org/hu/projects/blessingofra)**Testvérplatform:** a [Commodore Plus/4](https://wiki.teletypegames.org/hu/platforms/plus4) ugyanezt az ACME-eszközláncot használja.

---

# Makefile

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.

```text
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ók

| 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` |

## metadata.json

```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.

## Célok

```sh
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
```

## VS Code

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`).

## Előálló artifactok

| 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) |

## Követelmények

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

---

# Pipeline

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:

```yaml
# .woodpecker.yaml
platform: c64
name: rabbit   # csak akkor, ha a szoftvernév eltér a repó nevétől
```

- `metadata.json`
- az `application_token` Woodpecker-secret: egy WarpEngine ApplicationToken az `update` + `upload` jogosultságokkal

A 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:

```sh
curl "https://teletypegames.org/build/config?platform=c64"
```

## Lépések

| 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](https://wiki.teletypegames.org/hu/engines/warp-engine) 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.

## Eredmény

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.

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [Platformok](https://wiki.teletypegames.org/hu/platforms.md)
- Previous: [Bevy](https://wiki.teletypegames.org/hu/platforms/bevy.md)
- Next: [DOS](https://wiki.teletypegames.org/hu/platforms/dos.md)
