Aller au contenu
Phosphoneowiki
Sommaire

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-keys remplace la première (la commande VER tapé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 00 avant le cycle 1 000 000 puis 11.

--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.

Sources dans le dépôt : src/main.c, README.md.