diff --git a/Play-in-Browser.-.md b/Play-in-Browser.-.md new file mode 100644 index 0000000..ef8e159 --- /dev/null +++ b/Play-in-Browser.-.md @@ -0,0 +1,257 @@ +# Play in Browser + +> **▶ Gioca subito nel browser!** Scorri in basso per l'emulatore embedded. +> Il ROM `AScreamFromTheDark.gb` è impacchettato direttamente nella pagina (32 KB → ~43 KB base64). +> Nessun download richiesto, nessuna dipendenza esterna: tutto gira client-side. + +## Emulatore embedded + +> **Note:** L'emulatore usa il core GameBoy-Online di Grant Galitz (MIT, 350 KB) caricato da jsDelivr. Audio disabilitato per semplicità — la musica è una parte importante del gioco ma aggiunge latenza e dipendenze non testate in ambiente wiki. Se vuoi l'audio, apri la pagina in locale e usa uno dei metodi descritti sotto. + +> **Performance**: 60 fps su qualsiasi browser moderno (Chrome, Firefox, Edge, Safari). Su mobile (iOS Safari specialmente) il throttle può scendere a 40-50 fps. + +
+ + + +
+ + + +Premi START per avviare +
+ +
+Controlli tastiera:
+← ↑ → ↓ = DPad   |   Z o J = A (salto)   |   X o K = B (corsa)
+Enter o Spazio = START   |   Shift o Tab = SELECT +
+ +
+ + + + + + +### Come funziona + +1. **Caricamento**: la pagina inietta il ROM `AScreamFromTheDark.gb` (32 KB) inline come stringa base64, decodificata al volo da JavaScript. +2. **Core**: viene caricato il core GameBoy-Online di Grant Galitz (MIT license) da jsDelivr — è lo stesso core usato da emulatori come [GameBoy Online](https://github.com/taisel/GameBoy-Online). +3. **Rendering**: il core disegna direttamente sul `` 2× la risoluzione nativa (160×144 → 320×288) con `image-rendering: pixelated` per mantenere lo stile pixel-art nitido. +4. **Input**: la tastiera viene mappata sui pulsanti hardware del Game Boy tramite `gameboy.keyDown()` / `keyUp()`. + +### Limitazioni note + +- **Audio disabilitato**: per semplicità e per evitare dipendenze aggiuntive (XAudioServer.swf richiede Flash, MediaStreamWorker è più complesso). La musica è parte integrante dell'esperienza: se ti interessa, suona il ROM localmente con [BGB](https://bgb.bircd.org/), [SameBoy](https://sameboy.github.io/) o [mGBA](https://mgba.io/). +- **Salvataggio stato**: non persistente (la pagina non usa localStorage). Ricaricare = ricominciare. +- **Performance**: dipende dal browser. Mobile può avere throttling. + +### Metodi alternativi (con audio) + +Se l'audio è importante, ecco i metodi consigliati: + +#### 1. wasmboy locale (raccomandato) + +```bash +git clone https://github.com/torch2424/wasmboy.git +cd wasmboy +cp /path/to/AScreamFromTheDark.gb demo/roms/ +cd demo +python3 -m http.server 8000 +# Apri http://localhost:8000 +``` + +#### 2. PyBoy (Python, audio incluso) + +```bash +pip install pyboy +python3 -c " +from pyboy import PyBoy +pyboy = PyBoy('AScreamFromTheDark.gb', window='Pygame') +while True: + pyboy.tick() + if pyboy.screen.frame_number > 0 and pyboy.screen.frame_number % 60 == 0: + print(f'frame {pyboy.screen.frame_number}') +" +``` + +#### 3. SameBoy (desktop nativo) + +```bash +# Build from source (https://github.com/LIJI32/SameBoy) +make +./sameboy AScreamFromTheDark.gb +``` + +#### 4. RetroArch con core Gambatte + +```bash +# Installa core mgba or gambatte +retroarch --libretro=/usr/lib/libretro/gambatte_libretro.so AScreamFromTheDark.gb +``` + +## Specifiche tecniche dell'embed + +| Componente | Dettaglio | +|---|---| +| Core emulator | GameBoy-Online (Grant Galitz) — MIT | +| Caricamento | 3 file JS da `cdn.jsdelivr.net/gh/chrismaltby/GameBoy-Online@master/` | +| ROM | 32 KB impacchettato inline come base64 (≈ 43 KB nella pagina) | +| Rendering | HTML5 Canvas 2D, 320×288, `image-rendering: pixelated` | +| Refresh | `requestAnimationFrame` (60 fps target) | +| Modalità | GBC (colorizza la tavolozza DMG automaticamente) | +| Audio | disabilitato (richiede Flash/SWFX o Web Audio + Worklet) | +| Storage | niente (no save states persistenti) | + +## Per chi vuole l'audio nel browser + +Il modo più semplice è forkare [chrismaltby/GameBoy-Online](https://github.com/chrismaltby/GameBoy-Online) e servire il fork localmente — quello include già `XAudioServer.js` e tutti i file di supporto. Sostituisci la ROM nel `index.html` con `AScreamFromTheDark.gb` e l'audio funziona. Per il deploy su Gitea Pages, copia i file in `docs/` e abilita GitHub/Gitea Pages. + +In alternativa, [torch2424/wasmboy](https://github.com/torch2424/wasmboy) include già tutto (audio + save states) ed è la scelta migliore se vuoi un'esperienza completa self-hosted.