Browse Source

Add Game Boy Hello World example with GBDK-2020 and PyBoy test

master
Matteo Benedetto 3 days ago
parent
commit
8c1aab93aa
  1. 10
      gameboy-hello/Makefile
  2. 63
      gameboy-hello/README.md
  3. BIN
      gameboy-hello/hello.gb
  4. 9
      gameboy-hello/main.c

10
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

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

BIN
gameboy-hello/hello.gb

Binary file not shown.

9
gameboy-hello/main.c

@ -0,0 +1,9 @@
#include <gb/gb.h>
#include <stdio.h>
void main(void) {
printf("Hello Game Boy!");
while (1) {
wait_vbl_done();
}
}
Loading…
Cancel
Save