Files
gameboy-hello/docs/index.md
T

76 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MICE! — Documentazione Tecnica
Benvenuto nella documentazione tecnica di **MICE!**, un gioco completo per **Game Boy DMG (1989)** scritto interamente in C con la toolchain [GBDK-2020](https://github.com/gbdk-2020/gbdk-2020).
![Schermata Titolo e Gameplay](../screenshot.png)
---
## Cos'è MICE!
MICE! è un gioco di strategia in tempo reale a schermata fissa. Il labirinto viene generato proceduralmente ad ogni partita. Il giocatore controlla un cursore di mira e deve eliminare tutti i topi prima che il tempo scada. I topi si muovono autonomamente, trovano percorsi nel labirinto e si riproducono se si incontrano.
### Meccaniche principali
| Meccanica | Descrizione |
|-----------|-------------|
| **Generazione labirinto** | Recursive Backtracker iterativo, sempre risolvibile |
| **AI topi** | Pathfinding casuale senza backtracking, spatial hash per collisioni |
| **Riproduzione** | Spawn di un cucciolo a ogni incontro tra topi adulti |
| **Bomba (A)** | Esplosione a croce che si propaga lungo tutto il corridoio |
| **Fucile (B)** | Sparo istantaneo con cooldown di 3 secondi |
| **Timer** | Countdown visualizzato come HUD sprite nella barra inferiore |
| **Musica** | Tracker chiptune 4 canali nativo, jingle dedicati per vittoria/sconfitta |
---
## Struttura della Documentazione
| Sezione | Contenuto |
|---------|-----------|
| [Hardware Game Boy](hardware.md) | Vincoli fisici: SM83, VRAM, OAM, APU |
| [Architettura Moduli](architecture.md) | Grafico dei moduli C e dipendenze |
| [Loop Principale](main_loop.md) | Sequenza di inizializzazione e game loop |
| [Generazione Labirinto](maze.md) | Algoritmo Recursive Backtracker, MAZE_PITCH |
| [AI dei Topi](ai.md) | Movimento, pathfinding, riproduzione, spatial hash |
| [Rendering e Autotiling](rendering.md) | Tile system, bitmask 4-bit, hardware scrolling |
| [Sprite e OAM](sprites.md) | Allocazione 40 sprite hardware, meta-sprite 16×8 |
| [Armi e Gameplay](weapons.md) | Cursore DAS, bomba propagante, fucile con cooldown |
| [Audio](audio.md) | Mini-tracker 4 canali, SFX, Wave RAM |
| [Pipeline Asset](assets.md) | Script Python, conversione PNG → header C 2bpp |
| [Ottimizzazioni](optimizations.md) | Riepilogo di tutte le tecniche di ottimizzazione |
---
## Quick Start
```bash
# Compila tutto
make
# Gioca
pyboy -w SDL2 -s 3 --sound-volume 100 maze.gb
# Test audio interattivo
pyboy -w SDL2 -s 3 --sound-volume 100 test_audio.gb
# Validazione headless
python3 tests/test_pyboy.py
```
---
## Dati Tecnici
| Parametro | Valore |
|-----------|--------|
| **Target hardware** | Nintendo Game Boy DMG (1989) |
| **Toolchain** | GBDK-2020 + SDCC |
| **Linguaggio** | C (SM83/Z80-compatible) |
| **ROM size** | 32 KB (MBC1 `0x00`, solo ROM) |
| **Tile in VRAM** | 256 tile 8×8 @ 2bpp |
| **Sprite OAM** | 40 slot hardware (8×8 px ciascuno) |
| **RAM disponibile** | 8 KB (WRAM) |
| **FPS target** | 60 Hz (sincronizzato su VBlank) |
| **Frequenza CPU** | ~4.19 MHz |