Clavier, manette, souris et mémoire
Ces options font ce qu’un joueur ferait, à un cycle précis : l’essai est donc rejouable à l’identique. Jusqu’à 4 096 actions programmées par essai pour --gamepad-at, --poke-at et --poke-when, 256 pour la souris.
--type-keys
Syntaxe : --type-keys CYCLES:TEXTE
Tape le TEXTE au clavier à partir du cycle indiqué, touche par touche (appui, relâchement), en clavier américain. Séquences spéciales : \n Entrée, \e Échap, \1 à \9 F1 à F9, \0 F10, \\ une barre oblique inverse, \u \d \l \r les flèches, \h Début, \k Fin, \x Suppr, \b Retour arrière, \z Ctrl+Alt+Suppr. Pas de pauses : attendre que le programme soit prêt, c’est choisir le bon cycle de départ.
Exemple
$ phosphoneo --cycles 45000000 --type-keys '15000000:VER\nDIR\n' --screenshot-text out.txt
A:\>VER
NeoDOS version 0.34.0
Neo6502 firmware 0.16.94
A:\>DIR
Volume in drive A is HOST0
Directory of A:\
File not found
A:\>
À savoir. Une seule frappe est active à la fois : une seconde option
--type-keysremplace la première (la commandeVERtapée à un cycle serait perdue). Pour enchaîner des commandes, les mettre dans un seul texte, séparées par\n.
--gamepad-at
Syntaxe : --gamepad-at CYCLES:BITS
Pose l’état de la manette après N cycles : BITS est un nombre hexadécimal, un bit par bouton. 01 gauche, 02 droite, 04 haut, 08 bas, 10 A, 20 B, 40 X, 80 Y. Pour relâcher, poser 0. On additionne : 11 = gauche + A.
Exemple
$ phosphoneo pad.neo6502@800 cold --cycles 4000000 --gamepad-at 1000000:11 --screenshot-text pad.txt
00
11
À savoir. Une seule manette, sans axe analogique. Le programme voit
00avant le cycle 1 000 000 puis11.
--mouse-at
Syntaxe : --mouse-at CYCLES:X,Y,BOUTONS
Pose la position de la souris (en pixels) et l’état des boutons (bit 0 gauche, bit 1 droit, bit 2 milieu) après N cycles. Répétable jusqu’à 256 fois.
Exemple
$ phosphoneo mouse.neo6502@800 cold --cycles 4000000 --mouse-at 1000000:100,50,1 --screenshot-text m.txt
SOURIS : cliquez
0064 0032 01
À savoir. Le programme d’essai affiche X, Y et boutons en hexadécimal : 100 =
0064, 50 =0032.
--mouse-when
Syntaxe : --mouse-when ADRESSE:VALEUR:X,Y,BOUTONS
Comme --mouse-at, mais déclenché quand le mot 16 bits en mémoire à l’ADRESSE (hexadécimal) vaut VALEUR (décimal) : cliquer « à la trame 120 » sans calculer de cycle.
--poke-at
Syntaxe : --poke-at CYCLES:ADRESSE=VALEUR
Écrit un octet en mémoire (ADRESSE et VALEUR en hexadécimal) après N cycles. Sert à téléporter un joueur, régler une variable, forcer un état difficile à atteindre. Jusqu’à 4 096 écritures ; leur nombre ne ralentit pas l’émulation.
Exemple
$ phosphoneo prog.neo --cycles 3000000 --poke-at 1000:0900=EA
À savoir. Le plafond a été relevé de 16 à 4 096 le 2026-10-29, pour valider un jeu touche par touche.
--poke-when
Syntaxe : --poke-when ADRESSE:VALEUR:ADR=VAL
Comme --poke-at, mais déclenché quand le mot 16 bits à l’ADRESSE vaut VALEUR (décimal). Cette option force un parcours à chaque instruction : à réserver aux cas qui en ont besoin.