# JSD Emulator Hub v0.4.0

JSD Emulator Hub è una raccolta di emulatori sperimentali **HTML + JavaScript** eseguiti interamente nel browser. Ogni core resta autonomo; `index.html` aggiunge riconoscimento ROM/BIOS, scansione ZIP, lancio assistito e una gestione centralizzata dei salvataggi disponibili.

## Build corrente

**v0.4.0 — 18 sistemi nel launcher + laboratorio LaserDisc separato.**

Questa release consolida il vecchio Hub, sostituisce i singoli arcade con **Poliarcade** e aggiunge **Acorn Archimedes, Amiga 500 e Atari ST**.

| # | Sistema | File | Revisione / note |
|---:|---|---|---|
| 1 | Game Boy / GBC / GBA | `gbjsd.html` | GBJSD/GBA audio auto fixed |
| 2 | Nintendo DS / DS Lite | `ndsjsd.html` | Hub-stable alpha 0.50 geometry core |
| 3 | Master System / Game Gear | `segajsd.html` | Z80 + VDP Mode 4 + SN76489 |
| 4 | Mega Drive / Genesis | `megadrivejsd.html` | MDJSD alpha 1.1 Raster Timing |
| 5 | NES / Famicom | `nesjsd.html` | nested ZIP build |
| 6 | SNES / Super Famicom | `snesjsd.html` | alpha 22c stable |
| 7 | PC Engine / TurboGrafx / CD-ROM² | `pcejsd.html` | CD-ROM alpha 20 |
| 8 | ColecoVision | `colecojsd.html` | Z80/TMS9918A |
| 9 | ZX Spectrum 48K | `zx48jsd.html` | 48K core |
| 10 | MSX1 | `msx1jsd.html` | MSX1 core |
| 11 | Intellivision | `intellijsd.html` | CP1610/STIC |
| 12 | Vectrex | `vectrex_emulator.html` | MC6809/VIA/AY |
| 13 | Commodore 64 | `c64jsd.html` | alpha 65 rotational layout |
| 14 | DOS / IBM PC | `dosjsd.html` | alpha 1.24 PM16 IDT verified |
| 15 | **Poliarcade** | `poliarcade.html` + `poliarcade_part2.js` | arcade unificati, incluso IREM alpha42 |
| 16 | **Acorn Archimedes** | `archimedesjsd.html` | alpha 0.23, ARM2/ARM26, VIDC, WD1772, ADF |
| 17 | **Amiga 500 OCS/PAL** | `amigajsd.html` | alpha 0.21, 68000/OCS/Paula, dual ADF/ZIP |
| 18 | **Atari ST** | `ataristjsd.html` | alpha 0.12, TOS/EmuTOS, ST/MSA/STX, YM2149 |
| — | LaserDisc lab | `laserdiscjsd_v1_0_daphne_timeline.html` | laboratorio separato |

### Poliarcade incluso

La build inclusa è quella corrente con:
- IREM **M92JSD alpha 0.42 YM2151 fast**;
- CPS3 alpha85 con loader diretto e strumenti SH-2;
- exporter uniformi per CAVE, CPS1, System16, Nichibutsu e PGM/PGM2;
- disassembler MC6809 + Sound Z80 per Speed Rumbler;
- Taito F3 rimosso dalla release corrente.

## Firmware e ROM

**Nessun gioco commerciale o firmware proprietario deve essere committato nel repository.**

La build GitHub di Archimedes non contiene la ROM RISC OS 3.11 usata durante lo sviluppo: carica una ROM RISC OS/Acorn ottenuta legalmente. Lo stesso principio vale per Kickstart Amiga, TOS Atari, BIOS C64/Coleco/MSX/Vectrex e gli altri firmware richiesti.

Vedi [`firmware/README.md`](firmware/README.md).

## Avvio

Apri `index.html` in un browser moderno. Il launcher può analizzare una cartella scelta dall'utente; conserva nel browser solo metadati/cache e non archivia copie persistenti delle ROM.

Ogni emulatore continua a essere utilizzabile direttamente, senza il launcher. Il protocollo `jsd-probe → jsd-emulator-ready → jsd-launch → jsd-launch-accepted` viene attivato solo quando il launcher apre il core con `#jsdlaunch`.

## GitHub Pages

Pubblica la root del branch `main` con **Settings → Pages → Deploy from a branch → main → /(root)**. `.nojekyll` è incluso.

## Verifica

Prima del push:

```bash
python tools/validate_repo.py
```

Il validator controlla file richiesti, riferimenti del launcher, sintassi JavaScript inline, limite GitHub di 100 MB e assenza della ROM RISC OS incorporata.

## Push

I comandi pronti sono in [`GITHUB_PUSH.md`](GITHUB_PUSH.md).

Il progetto è sperimentale e non dichiara accuratezza cycle-perfect.
