From c86bf06a82bbe8455d04a97a536ee0d117e17bdf Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Wed, 1 Jul 2026 10:21:55 +0000 Subject: [PATCH] init: Test-&-QA --- Test-%26-QA.-.md | 103 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 Test-%26-QA.-.md diff --git a/Test-%26-QA.-.md b/Test-%26-QA.-.md new file mode 100644 index 0000000..2966185 --- /dev/null +++ b/Test-%26-QA.-.md @@ -0,0 +1,103 @@ +# Test & QA + +Script di test headless per validare build e gameplay. + +## Setup + +```bash +pip install --user Pillow pyboy opencv-python numpy +``` + +## Test 1 — ROM game over (isolato) + +Compila una ROM minimale che porta immediatamente al game over, utile per testare la schermata death: + +```bash +make build/test_gameover.gb +``` + +Questo crea un binario che entra direttamente in `show_death()` con un metasprite GAME OVER. Da testare con screenshot. + +## Test 2 — ROM finale (isolato) + +Stessa idea, ma per la schermata finale: + +```bash +make build/test_finale.gb +``` + +Va direttamente al finale con la musica. Utile per testare la sequenza audio lunga. + +## Test 3 — Movimento WRAM + +`scripts/test_movement.py` legge la WRAM via PyBoy e verifica che il movimento cambi le coordinate del player: + +```bash +python3 scripts/test_movement.py +``` + +Controlla: +- Pressione DPad → player_lx/ly cambiano +- Rilascio → no input +- DAS delay funziona +- Sprint (B) consuma stamina + +## Test 4 — Screenshot diff + +`scripts/test_pyboy.py` cattura screenshot di ogni schermata e li salva in `assets/screenshots/`: + +```bash +python3 scripts/test_pyboy.py +``` + +Produce: +- `title.png` +- `gameplay_lv1.png` +- `gameplay_lv2.png` +- `gameplay_lv3.png` +- `gameover.png` + +## Test 5 — Glitch detection (OpenCV) + +`scripts/opencv_analyze_tiles.py` usa OpenCV per rilevare glitch visivi (tile sballati, posizioni sbagliate): + +```bash +python3 scripts/opencv_analyze_tiles.py assets/screenshot.png +``` + +Output: lista di anomalie con coordinate `(x, y)` e tipo. + +## Test 6 — ROM size sanity + +```bash +ls -la build/hello_iso.gb +# deve essere esattamente 32768 bytes +``` + +## Test 7 — Verifica header GB + +```bash +xxd build/hello_iso.gb | head -8 +# deve mostrare il logo Nintendo e il titolo "HELLO_ISO" o simile +``` + +## Test 8 — BGB debugger + +Se hai BGB (https://bgb.bircd.org/): + +1. Apri `build/hello_iso.gb` +2. `Window > Tile viewer` → controlla i tile in VRAM +3. `Window > Map viewer` → controlla il BG map +4. `Window > OAM viewer` → controlla gli sprite +5. `Window > IO Map` → monitora SCX, SCY, LY, ecc. + +## Continuous Integration (TODO) + +Una CI con GitHub Actions potrebbe: +1. Compilare con GBDK +2. Verificare dimensione ROM +3. Lanciare i test PyBoy in CI container +4. Confrontare screenshot con baseline (visual regression) +5. Pubblicare release su tag `v*` + +Per ora i test sono manuali.