diff --git a/gameboy-hello/Makefile b/gameboy-hello/Makefile new file mode 100644 index 0000000..e9d24cc --- /dev/null +++ b/gameboy-hello/Makefile @@ -0,0 +1,10 @@ +CC = /home/enne2/.local/gbdk/bin/lcc +CFLAGS = -Wl-yt1 -Wl-ya4 + +hello.gb: main.c + $(CC) $(CFLAGS) -o $@ $^ + +clean: + rm -f *.gb *.ihx *.cdb *.adb *.noi *.map *.lst *.sym *.rel + +.PHONY: clean diff --git a/gameboy-hello/README.md b/gameboy-hello/README.md new file mode 100644 index 0000000..dbc46a3 --- /dev/null +++ b/gameboy-hello/README.md @@ -0,0 +1,63 @@ +# Game Boy Hello World + +Questa sottocartella contiene un minimo esempio di "Hello World" per Game Boy originale, compilato con **GBDK-2020** in C. + +## Struttura + +- `main.c` — sorgente C. +- `Makefile` — regola per compilare con `lcc` (GBDK-2020). +- `hello.gb` — ROM Game Boy risultante (32 KB). + +## Requisiti + +GBDK-2020 e installato in `/home/enne2/.local/gbdk`. Se vuoi spostarlo altrove, aggiorna il `CC` nel `Makefile`. + +## Build + +```bash +cd gameboy-hello +make +``` + +## Test con emulatore + +### PyBoy (senza finestra, screenshot) + +```bash +python3 - <<'PY' +from pyboy import PyBoy +rom = 'hello.gb' +pyboy = PyBoy(rom, window='null') +for _ in range(60*5): + pyboy.tick() +pyboy.screen.image.save('/tmp/hello_gb.png') +pyboy.stop() +print('Screenshot salvato in /tmp/hello_gb.png') +PY +``` + +### PyBoy (con finestra SDL2) + +```bash +python3 - <<'PY' +from pyboy import PyBoy +pyboy = PyBoy('hello.gb', window='SDL2') +for _ in range(60*30): + pyboy.tick() +pyboy.stop() +PY +``` + +## Note + +- La ROM usa il logo Nintendo corretto e il checksum di header e valido. +- Il testo viene visualizzato con `printf` sulla console testuale del Game Boy. +- Il loop principale chiama `wait_vbl_done()` per sincronizzarsi con il VBlank. + +## Prossimi passi + +Da qui si puo partire per un vero gioco Game Boy (ad esempio Tetris), aggiungendo: +- gestione di input tramite `joypad()`; +- sprite OAM per i pezzi; +- tilemap per il campo di gioco; +- musica/effetti sonori con i 4 canali audio del Game Boy. diff --git a/gameboy-hello/hello.gb b/gameboy-hello/hello.gb new file mode 100644 index 0000000..5a0c9c3 Binary files /dev/null and b/gameboy-hello/hello.gb differ diff --git a/gameboy-hello/main.c b/gameboy-hello/main.c new file mode 100644 index 0000000..ac34c50 --- /dev/null +++ b/gameboy-hello/main.c @@ -0,0 +1,9 @@ +#include +#include + +void main(void) { + printf("Hello Game Boy!"); + while (1) { + wait_vbl_done(); + } +}