đź Support Amiga â Autostart, multi-disques et intĂ©gration vAmigaWeb
Contexte
Le repo dispose déjà d'un packer Amiga dédié (packers/amiga/) basé sur vAmigaWeb (émulateur WASM natif), distinct du packer universel (EmulatorJS). Ce packer fonctionne mais utilise des scripts per-game (ex: Jimmy Willburne). L'objectif est de rendre le support Amiga générique et automatisé.
Ătat actuel
Packer Amiga existant (packers/amiga/)
| Fichier |
RĂŽle |
amiga-packer.md |
Documentation |
pack_jimmy.py |
Script de packing spécifique à Jimmy Willburne |
template_amiga_1disk.html |
Template HTML pour jeux 1 disque |
template_amiga_2disks.html |
Template HTML pour jeux 2 disques |
vAmiga.js / vAmiga.wasm |
Ămulateur vAmigaWeb compilĂ© |
Pourquoi vAmigaWeb et pas EmulatorJS/puae ?
| Aspect |
EmulatorJS (puae) |
vAmigaWeb |
| Multi-disques |
â CassĂ© â TypeError dans emulator.min.js, M3U non supportĂ© |
â
DF0-DF3 pré-chargés |
| Kickstart |
ProblĂšme de distribution (copyright) |
Embarqué dans le HTML |
| Autostart |
Pas de core_option fiable |
â
Boot automatique depuis DF0 |
| Taille HTML |
~1-2 MB |
~5-10 MB (WASM complet) |
| Qualité émulation |
Correcte (libretro) |
TrĂšs bonne (cycle-exact) |
Conclusion : vAmigaWeb est le bon choix pour l'Amiga dans ce projet.
Investigation : mécanisme d'autostart
Analyse des disquettes Jimmy Willburne
Analyse réalisée sur les 3 ADF originaux du jeu Jimmy Willburne :
Disk 1 â Original (jimmy_disk1.adf)
Fichiers Ă la racine:
Jimmy FILE (386708 bytes) â exĂ©cutable du jeu
Jimmy.info FILE (7231 bytes) â icĂŽne Workbench
Info_Jimmy FILE (6537 bytes)
Data1 FILE (375341 bytes) â donnĂ©es
Sauvegarde.JW FILE (3680 bytes)
+ C/, Devs/, Fonts/, Libs/, S/
S/startup-sequence (14 bytes):
Loadwb
endcli
â Charge le Workbench (bureau Amiga). L'utilisateur doit manuellement double-cliquer sur Jimmy.info.
Disk 3 â Intro (jimmy_disk3.adf)
Fichiers Ă la racine:
Intro_Jimmy FILE (22268 bytes)
SetChipRev FILE (8344 bytes)
Data3 FILE (329262 bytes)
s/startup-sequence (12 bytes):
intro_jimmy
â Lance l'intro directement (autostart natif).
Disk 2 â DonnĂ©es (jimmy_disk2.adf)
- Disque de données pur, label "Jimmy_Disk_222"
- Pas de startup-sequence
La modification pour l'autostart
Le fichier jimmy_disk1_mod.adf dans le repo est une version modifiĂ©e du disk 1 oĂč la S/startup-sequence a Ă©tĂ© changĂ©e de :
en :
â Le jeu se lance directement au boot sans passer par le Workbench.
Mécanisme multi-disques
Le packer vAmigaWeb charge les disques dans DF0 + DF1 avant le boot :
floppy_drive_count = 2
DF0 â disk1 (boot)
DF1 â disk2 (donnĂ©es)
Les deux disques sont insĂ©rĂ©s avant le boot â pas de swap nĂ©cessaire. L'Amiga voit les 2 drives directement. Extensible Ă DF0-DF3 pour â€4 disques.
Problématique : automatiser l'autostart
Chaque jeu Amiga a un exécutable différent (Jimmy, Turrican, Xenon2, etc.). Comment détecter automatiquement quel programme lancer ?
Catégories de jeux Amiga
| Catégorie |
Autostart |
Patchable ? |
% estimé |
| Trackloaders |
â
Boot direct (bootblock custom, pas de filesystem) |
Non nécessaire |
~30% |
| AmigaDOS â startup lance le jeu |
â
Déjà autostart |
Non nécessaire |
~15% |
| AmigaDOS â Loadwb/endcli |
â Charge Workbench |
â
Oui â patcher startup-sequence |
~35% |
| WHDLoad |
â ïž NĂ©cessite slave + assigns |
đ¶ Complexe |
~15% |
| Multi-exe (intro + jeu) |
â ïž Choix nĂ©cessaire |
đ¶ Moyen |
~5% |
Stratégie de détection automatique
Utilisateur charge un .adf
â
Parser le filesystem AmigaDOS
â
âââ Pas de filesystem (trackloader)
â â Pas de patch, boot direct (fonctionne tout seul)
â
âââ Startup-sequence lance dĂ©jĂ le jeu
â â Pas besoin de patcher, on garde tel quel
â
âââ Startup-sequence = Loadwb/endcli (ou vide)
â â DĂ©tection heuristique de l'exĂ©cutable :
â â
â âââ 1. Chercher le plus gros fichier Ă la racine
â â (exclure C/, Libs/, Devs/, Fonts/, S/, *.info, *.font)
â â
â âââ 2. Chercher les .info Ă la racine â nom sans .info = exĂ©cutable
â â
â âââ 3. Si trouvĂ© â proposer "Lancer [NomExe] au boot ?"
â â
â âââ 4. Si pas trouvĂ© â champ manuel
Heuristiques détaillées
- Lire la startup-sequence existante â si elle lance dĂ©jĂ quelque chose (pas
Loadwb/endcli/echo), on la garde
- Plus gros fichier exĂ©cutable Ă la racine â exclure les rĂ©pertoires systĂšme (
C/, Libs/, Devs/, Fonts/, S/) et les fichiers non-exe (.info, .font, données < 10KB)
- Fichiers .info Ă la racine â un
.info correspond souvent Ă un exĂ©cutable du mĂȘme nom
- Fallback â champ texte pour que l'utilisateur spĂ©cifie manuellement
Exemple avec Jimmy Willburne :
Jimmy = 386 KB (plus gros fichier racine) â
Jimmy.info existe â confirme que Jimmy est l'exĂ©cutable â
- Détection automatique réussie
Proposition d'implémentation
Phase 1 â Packer Amiga gĂ©nĂ©rique (single-disk)
Phase 2 â Multi-disques
Phase 3 â IntĂ©gration packer web (optionnel)
Phase 4 â Cas avancĂ©s
Kickstart / BIOS
| Kickstart |
ModĂšle |
Usage |
| kick13.A500 (256 KB) |
Amiga 500 |
~80% des jeux (la majorité) |
| kick20.A500 |
Amiga 500+ |
Quelques jeux |
| kick31.A1200 |
Amiga 1200 |
Jeux AGA (graphismes avancés) |
Note lĂ©gale : Les Kickstart ROM sont sous copyright Cloanto/Amiga Inc. Ils ne peuvent pas ĂȘtre distribuĂ©s librement. Options :
- L'utilisateur fournit son propre Kickstart (via
--bios ou upload dans le packer web)
- Le Kickstart est embarqué dans le HTML par l'utilisateur au moment du packing (pas distribué dans le repo)
- Fallback AROS (open-source) â compatibilitĂ© ~60%
Le packer actuel (packers/amiga/) embarque déjà kick13.A500 dans les templates.
Fichiers de référence
- Packer actuel :
packers/amiga/pack_jimmy.py
- Templates :
packers/amiga/template_amiga_1disk.html, template_amiga_2disks.html
- vAmigaWeb :
packers/amiga/vAmiga.js, vAmiga.wasm
- Packer universel :
packers/universal/pack_game.py (Amiga = core puae, mais pas recommandé)
- ROMs test :
jimmy_disk1.adf, jimmy_disk1_mod.adf, jimmy_disk2.adf, jimmy_disk3.adf
Liens utiles
đź Support Amiga â Autostart, multi-disques et intĂ©gration vAmigaWeb
Contexte
Le repo dispose déjà d'un packer Amiga dédié (
packers/amiga/) basĂ© sur vAmigaWeb (Ă©mulateur WASM natif), distinct du packer universel (EmulatorJS). Ce packer fonctionne mais utilise des scripts per-game (ex: Jimmy Willburne). L'objectif est de rendre le support Amiga gĂ©nĂ©rique et automatisĂ©.Ătat actuel
Packer Amiga existant (
packers/amiga/)amiga-packer.mdpack_jimmy.pytemplate_amiga_1disk.htmltemplate_amiga_2disks.htmlvAmiga.js/vAmiga.wasmPourquoi vAmigaWeb et pas EmulatorJS/puae ?
Conclusion : vAmigaWeb est le bon choix pour l'Amiga dans ce projet.
Investigation : mécanisme d'autostart
Analyse des disquettes Jimmy Willburne
Analyse réalisée sur les 3 ADF originaux du jeu Jimmy Willburne :
Disk 1 â Original (
jimmy_disk1.adf)â Charge le Workbench (bureau Amiga). L'utilisateur doit manuellement double-cliquer sur
Jimmy.info.Disk 3 â Intro (
jimmy_disk3.adf)â Lance l'intro directement (autostart natif).
Disk 2 â DonnĂ©es (
jimmy_disk2.adf)La modification pour l'autostart
Le fichier
jimmy_disk1_mod.adfdans le repo est une version modifiĂ©e du disk 1 oĂč laS/startup-sequencea Ă©tĂ© changĂ©e de :en :
â Le jeu se lance directement au boot sans passer par le Workbench.
Mécanisme multi-disques
Le packer vAmigaWeb charge les disques dans DF0 + DF1 avant le boot :
Les deux disques sont insĂ©rĂ©s avant le boot â pas de swap nĂ©cessaire. L'Amiga voit les 2 drives directement. Extensible Ă DF0-DF3 pour â€4 disques.
Problématique : automatiser l'autostart
Chaque jeu Amiga a un exécutable différent (
Jimmy,Turrican,Xenon2, etc.). Comment détecter automatiquement quel programme lancer ?Catégories de jeux Amiga
Stratégie de détection automatique
Heuristiques détaillées
Loadwb/endcli/echo), on la gardeC/,Libs/,Devs/,Fonts/,S/) et les fichiers non-exe (.info,.font, donnĂ©es < 10KB).infocorrespond souvent Ă un exĂ©cutable du mĂȘme nomExemple avec Jimmy Willburne :
Jimmy= 386 KB (plus gros fichier racine) âJimmy.infoexiste â confirme queJimmyest l'exĂ©cutable âProposition d'implĂ©mentation
Phase 1 â Packer Amiga gĂ©nĂ©rique (single-disk)
pack_amiga.pygĂ©nĂ©rique (remplacerpack_jimmy.py)S/startup-sequencedans l'ADF si nĂ©cessairePhase 2 â Multi-disques
Phase 3 â IntĂ©gration packer web (optionnel)
pack_game_fr.html/pack_game_en.htmlPhase 4 â Cas avancĂ©s
AssignnécessairesKickstart / BIOS
Note lĂ©gale : Les Kickstart ROM sont sous copyright Cloanto/Amiga Inc. Ils ne peuvent pas ĂȘtre distribuĂ©s librement. Options :
--biosou upload dans le packer web)Le packer actuel (
packers/amiga/) embarque dĂ©jĂkick13.A500dans les templates.Fichiers de rĂ©fĂ©rence
packers/amiga/pack_jimmy.pypackers/amiga/template_amiga_1disk.html,template_amiga_2disks.htmlpackers/amiga/vAmiga.js,vAmiga.wasmpackers/universal/pack_game.py(Amiga = corepuae, mais pas recommandé)jimmy_disk1.adf,jimmy_disk1_mod.adf,jimmy_disk2.adf,jimmy_disk3.adfLiens utiles