- C 50.2%
- Python 38%
- C++ 8.7%
- Shell 2.6%
- Makefile 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- emulator/cpc: a headless CPC 6128 (Z80, gate array, CRTC, PPI, AY, uPD765, 128 KB) that logs what a game does: screenshots, memory dumps, watched writes, readers / writers, registers at PCs, traces, coverage, AY log; driven by keys, typed text and pokes; boots a disc's boot sector, a binary or, with the user's ROMs, BASIC / AMSDOS; standard and EXTENDED DSK images - emulator/ay: renders the AY log like a CPC - tools: dsk.py (disc images, AMSDOS files), cpc.py (dumps: screen, palette, sprites, tiles, text in any charset, diff, xref, coverage), z80dis.py, psg.py (sound segments, loop length, Ogg) - docs: the method step by step, every emulator option, a CPC cheat sheet - examples/rainbow-islands: the whole extraction behind the JumPHP remake - AGENTS.md and a Claude Code skill; tests on a disc built by the tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018nX3d49j1YFpo3vu8qZuQd |
||
| .claude/skills/dsk2jumphp | ||
| docs | ||
| emulator | ||
| examples/rainbow-islands | ||
| tests | ||
| tools | ||
| .gitignore | ||
| AGENTS.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
dsk2jumphp
Les outils pour désosser un jeu Amstrad CPC sur disquette (.dsk) et le refaire en PHP avec
JumPHP : un petit émulateur CPC sans écran qui fait tourner le jeu et
note tout ce qu'il voit, et des outils pour en sortir les graphismes, les cartes, les textes et la musique.
Ils ont servi à refaire Rainbow Islands (CPC, 1989) : https://github.com/davidnurdin/rainbow-island —
l'extraction complète est dans examples/rainbow-islands/.
Installation
git clone https://github.com/davidnurdin/dsk2jumphp.git
cd dsk2jumphp
make # compile l'émulateur (emulator/cpc) et le rendu sonore (emulator/ay) : il faut un compilateur C
make test # vérifie tout (Python 3 avec Pillow et numpy ; ffmpeg pour les .ogg)
En bref
python3 -I tools/dsk.py info jeu.dsk # ce qu'il y a sur la disquette
mkdir run && emulator/cpc jeu.dsk run 1500 -S 50 # 30 s de jeu, une capture d'écran par seconde
emulator/cpc jeu.dsk run 1500 -rom cpc6128.rom -urom 7:amsdos.rom -type '100:RUN"DISC\n' -S 50 # avec les ROM
emulator/cpc jeu.dsk run 1500 -d 500,1400 # deux images de la mémoire...
python3 -I tools/cpc.py diff run/dump-00500.bin run/dump-01400.bin --from 3 --to 2 # ... où sont les vies ?
python3 -I tools/cpc.py gfx run/dump-01400.bin ed80 6 24 4 sprites.png # des sprites en PNG
python3 -I tools/psg.py render run/psg.bin 500 1500 musique.ogg # la musique
| Dossier | Contenu |
|---|---|
emulator/ |
l'émulateur CPC 6128 (Z80, gate array, CRTC, AY, contrôleur de disquette, 128 Ko) et ay.c |
tools/ |
dsk.py (disquettes), cpc.py (images mémoire : écran, sprites, textes, différences), z80dis.py, psg.py (son) |
docs/ |
method.md la méthode pas à pas, emulator.md toutes les options, cpc.md le CPC en bref |
examples/rainbow-islands/ |
un jeu entier : adresses trouvées, scripts d'extraction, commandes |
.claude/skills/dsk2jumphp/ |
la compétence (skill) pour Claude Code |
AGENTS.md |
les consignes pour les agents IA |
Avec un agent IA (Claude Code...)
Le dépôt contient un AGENTS.md et un skill : un agent sait s'en servir sans réécrire d'émulateur. Pour qu'il
soit disponible dans un projet JumPHP :
git clone https://github.com/davidnurdin/dsk2jumphp.git ~/dsk2jumphp && make -C ~/dsk2jumphp
mkdir -p .claude/skills && ln -s ~/dsk2jumphp/.claude/skills/dsk2jumphp .claude/skills/dsk2jumphp
Puis : « refais le jeu de /chemin/jeu.dsk avec dsk2jumphp ».
Ce qui n'est pas fourni
Ni disquettes, ni ROM du CPC (sous droits). Les ROM ne servent qu'aux jeux lancés depuis le BASIC : prends
celles d'un émulateur installé sur ta machine (cpc6128.rom, amsdos.rom). Ne publie que les scripts et les
notes ; les éléments extraits d'un jeu appartiennent à ses auteurs.
Licence MIT (les outils).