Duration and pace
Phosphoneo counts in 65C02 cycles: 6,250,000 cycles make one second of machine time, and a frame is 109,226 cycles (60 Hz). Since time is counted in emulated cycles, a run gives the same result every time, whatever computer runs it.
--cycles
Syntax : --cycles N
Stops after N cycles and prints the tally: elapsed cycles and number of API calls. Without it, Phosphoneo runs until stopped (window closed, breakpoint, --stop-on-self-jmp). It is the basis of every windowless trial.
Example
$ phosphoneo graphics.neo6502@800 cold --cycles 3000000
phosphoneo : 3000001 cycles, 7 appels API
Good to know. Rule of thumb: 6,250,000 cycles = 1 s; 109,226 cycles = one frame; 62,500 cycles = one tick of the 100 Hz timer.
--headless
Syntax : --headless
No display. This is the default; the option exists to say so in a script (the reference cases always pass it). It does not prevent --screenshot or --record.
--realtime
Syntax : --realtime
Real-time pace without a window: one emulated frame lasts 1/60 s of wall-clock time. Useful for a network program (the software modem needs real time) or for the WebAssembly build run under Node. Without it, Phosphoneo goes as fast as it can.
--stop-on-self-jmp
Syntax : --stop-on-self-jmp
Stops when the program executes a JMP to its own address (the “JMP *” that ends a test program) and says where and when. Saves guessing a large enough --cycles.
Example
$ phosphoneo graphics.neo6502@800 cold --stop-on-self-jmp --cycles 30000000
phosphoneo : JMP * en $0940 après 391 cycles
phosphoneo : 391 cycles, 7 appels API
--version
Syntax : --version
Prints the version and what is built in.
Example
$ phosphoneo --version
Phosphoneo 0.5.0 (firmware/common lié, co-sim RP2040, SDL, wasm, modem logiciel)