tutorial · commodore 64 · mac
Come si fa un gioco per Commodore 64 su un Mac
Gli strumenti che servono, dal minimo indispensabile a quello che serve per misurare, tutti gratuiti. Scrivere un gioco per C64 oggi non vuol dire lavorare su un C64: si scrive sul Mac, si prova in un emulatore, e il C64 vero, se c'è, serve come prova finale. Questa è la catena con cui è nato Ruote Fumanti.
L'editor è solo il posto dove si scrive il codice. Per arrivare a un file che il C64 carica servono pochi altri pezzi, e la maggior parte si installa con Homebrew, il gestore di pacchetti per macOS, con un comando solo:
Scrivere, compilare, provare
Con questi quattro si scrive, si compila con un comando e si prova il gioco.
| cosa | a cosa serve, e con cosa |
|---|---|
| Editor | scrivere l'assembler: Visual Studio Code con l'estensione VS64 (sorgente), che riconosce ACME, KickAssembler e cc65 e si collega a VICE per il debug |
| Assemblatore | trasformare il sorgente .asm in un file .prg: ACME, quello usato per Ruote Fumanti. In alternativa KickAssembler (serve Java) o ca65, dentro cc65 |
| Emulatore | provare il gioco, fermarlo, leggere la memoria col monitor: VICE, in particolare x64sc, il più preciso. Con VICE arriva anche c1541, che crea le immagini disco .d64 |
| Compressore | ottenere un solo file piccolo che si decomprime da solo: Exomizer |
Il ciclo di lavoro è sempre lo stesso: scrivi in VS Code, compili con ACME, comprimi con Exomizer, apri il .prg in VICE.

VS Code sulla cartella del gioco: a sinistra i sorgenti in src/, a destra native.asm aperto sulla routine che fa scorrere la strada, quella raccontata in come scorre la strada.

make rifà tutto: ACME assembla, Exomizer comprime. In fondo la mappa della memoria: 61 KB di gioco diventano un file da 24 KB che si decomprime da solo.

il PRG in VICE (x64sc), sul tracciato 3. In basso a sinistra la cosa che conta: 50,1 fotogrammi al secondo.
Quello che serve oltre il codice
| cosa | a cosa serve, e con cosa |
|---|---|
| Script | generare dati e tabelle, convertire la grafica, controllare la build: Python, con Pillow per leggere e scrivere le immagini |
| Automazione | ricompilare tutto con un comando solo: make, che arriva con gli strumenti da riga di comando di Apple (xcode-select --install), oppure i task di VS Code |
| Versioni | tornare indietro, confrontare, non perdere niente: Git |
| Sprite | disegnare gli sprite nei limiti del C64: Spritemate, che gira nel browser (sorgente) |
| Caratteri | il set di caratteri, le tessere e i livelli: VChar64, anche per Mac |
| Immagini | schermate e disegni con i colori e le risoluzioni del C64: Multipaint |
| Musica | comporre per il SID: GoatTracker 2 (c'è una versione per Mac), oppure SID-Wizard, che gira dentro il C64 o l'emulatore |
Spritemate con i quindici sprite del salto di Ruote Fumanti: l'auto in sette taglie, ognuna con due fasi delle ruote, più l'ombra. Se gli sprite sono una novità, sono spiegati da capo in gli sprite del C64.
La musica non deve per forza passare da un tracker: in Ruote Fumanti il motivo è scritto come testo, una riga per voce, e uno script Python lo converte in dati per il SID.
Per misurare invece di provare a occhio
È la parte che distingue «sembra che funzioni» da «funziona, e lo si può dimostrare».
| cosa | a cosa serve, e con cosa |
|---|---|
| CPU in Python | provare pezzi di codice senza aprire l'emulatore: si carica il programma, si chiama una routine, si controllano i registri: py65 |
| Emulatore via script | far guidare il gioco a un programma, leggere la memoria a ogni fotogramma, contare i fotogrammi persi, fare screenshot: il monitor remoto di VICE (opzione -remotemonitor), comandato da Python |
| Video | spezzoni per la pagina del gioco, con l'audio registrato dall'emulatore: FFmpeg |
| Secondo emulatore | controllare che il gioco non funzioni solo in VICE: VirtualC64, nativo per Mac |
| C64 vero | la prova finale, con una cartuccia flash come Kung Fu Flash, oppure un Ultimate 64 |

py65 prova i tasti M e F e i motori senza aprire l'emulatore: la tastiera è finta, il codice è quello vero del gioco. Ogni riga è una verifica, e in fondo FALLITE 0.

il monitor di VICE, comandato da uno script, ferma il gioco in corsa: i registri della CPU, il codice dello scorrimento disassemblato, e la memoria delle variabili. Le istruzioni da $14f5 in giù sono la routine .fine vista dall'interno della macchina.

le misure della 1.0.2: fotogrammi persi su 3000, per quanto la volante ti sta addosso, e cosa succede a fine tracciato.
Le quattro schermate di terminale sono ricomposte in immagine a partire dall'output reale dei comandi; le altre sono catture dirette dei programmi.
Farlo arrivare a chi lo gioca
Tre livelli
- per cominciare VS Code, ACME, VICE, Exomizer
- per un gioco vero in più Python, make, Git, e un editor per sprite, caratteri e musica
- per sapere che funziona py65, VICE pilotato da script, un secondo emulatore, e un C64 vero quando si può