init: Build-&-Run
+100
@@ -0,0 +1,100 @@
|
||||
# Build & Run
|
||||
|
||||
Come compilare il ROM a partire dal sorgente.
|
||||
|
||||
## Prerequisiti
|
||||
|
||||
1. **GBDK-2020** installato (testato con 4.2.0+)
|
||||
- Path di default nel Makefile: `~/local/gbdk` (modifica `GBDK_HOME` se necessario)
|
||||
- Variabili richieste: `lcc`, `png2asset`
|
||||
2. **Python 3** con:
|
||||
```bash
|
||||
pip install --user Pillow pyboy opencv-python numpy
|
||||
```
|
||||
3. **make** e **bash**
|
||||
4. (Opzionale) un emulatore per testare il ROM:
|
||||
- **BGB** (https://bgb.bircd.org/) — debugger consigliato
|
||||
- **SameBoy** (https://github.com/LIJI32/SameBoy) — accurato
|
||||
- **mGBA** (https://mgba.io/) — multipiattaforma
|
||||
- **PyBoy** — Python, headless-friendly
|
||||
|
||||
## Compilazione
|
||||
|
||||
Da Windows / Linux / macOS con bash:
|
||||
|
||||
```bash
|
||||
# Pulizia completa (rigenera anche gli asset da PNG)
|
||||
make clean
|
||||
|
||||
# Build standard: produce hello_iso.gb + test_gameover.gb
|
||||
make
|
||||
|
||||
# Build "release": copia anche con il nome canonico AScreamFromTheDark.gb
|
||||
make release
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
| File | Descrizione |
|
||||
|---|---|
|
||||
| `build/hello_iso.gb` | ROM principale (32 KB) |
|
||||
| `build/AScreamFromTheDark.gb` | copia "release" (identica) |
|
||||
| `build/test_gameover.gb` | ROM di test game-over (più piccola) |
|
||||
| `build/*.map`, `build/*.noi` | simboli per debug |
|
||||
|
||||
## Struttura del Makefile
|
||||
|
||||
I target principali sono:
|
||||
|
||||
| Target | Effetto |
|
||||
|---|---|
|
||||
| `make` | genera asset e compila i 2 ROM |
|
||||
| `make release` | `make` + copia `AScreamFromTheDark.gb` |
|
||||
| `make clean` | rimuove `build/` e tutti i `.c/.h` generati |
|
||||
| `make generate_images` | rigenera i PNG da Python |
|
||||
| `make generate_c_assets` | rigenera i `.c/.h` da PNG via `png2asset` |
|
||||
|
||||
## Esecuzione
|
||||
|
||||
### Su emulatore desktop
|
||||
|
||||
```bash
|
||||
# mGBA
|
||||
mgba build/AScreamFromTheDark.gb
|
||||
|
||||
# SameBoy
|
||||
sameboy build/AScreamFromTheDark.gb
|
||||
|
||||
# BGB
|
||||
bgb build/AScreamFromTheDark.gb
|
||||
```
|
||||
|
||||
### Su hardware reale
|
||||
|
||||
Il ROM è 32 KB flat, compatibile con qualsiasi flashcart DMG/CGB:
|
||||
- **EverDrive GB X7 / Mini**
|
||||
- **BennVenn JoeyJr**
|
||||
- **FPGA cores** (Analogue Pocket)
|
||||
- **GB Operator**
|
||||
|
||||
Copia `AScreamFromTheDark.gb` sulla SD del flashcart, accendi la console, seleziona il gioco.
|
||||
|
||||
### Nel browser (WebAssembly)
|
||||
|
||||
Vedi [Play in Browser](Play-in-Browser) per come eseguire il ROM in un emulatore WASM.
|
||||
|
||||
## Variabili del Makefile
|
||||
|
||||
```make
|
||||
GBDK_HOME = /home/enne2/.local/gbdk # path di GBDK-2020
|
||||
SRC_DIR = src # sorgenti C
|
||||
ASSETS_DIR = assets # PNG sorgenti
|
||||
BUILD_DIR = build # output
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **`png2asset: warning 64: 64 palettes found, truncating to 8`**: warning benigno, ignorabile.
|
||||
- **`conditional flow changed by optimizer`**: warning SDCC, non blocca la compilazione.
|
||||
- **ROM troppo grande (> 32 KB)**: errore di link. Controlla che i `.c/.h` generati non si siano accumulati dopo un `make` parziale. Esegui `make clean` e ricompila.
|
||||
- **font IBM non visibile**: controlla che `font_ibm` sia disponibile in GBDK (`$(GBDK_HOME)/include/gb/font_ibm.h`).
|
||||
Reference in New Issue
Block a user