Skip to content
Phosphoricwiki
Contents

Where Phosphoric stands

Phosphoric is at version 2.30.0, of 5 October 2026. Here is what the project claims, the test that proves it, what it does not claim, and the road travelled since January.

On this page

What is proved

ClaimThe test that would make it fall
The 6502 is exact to the cycle: 100.00% exact bus sequences on 2,440,000 casesmake test-cycle CYCLE_MAX_CASES=0
The functional test 6502_functional_test passes in full (about 96 million cycles)its target in make tests
The machine is cycle-stepped: one call of the clock, one cycle of everything, never emptymake test-clock (14 tests)
The VIA timers count per cycle (period N+2, PB7, CA2)make test-io
The ULA reads one cell per cycle, after the CPU access of the same cyclemake test-raster-split, make test-clock
The PSG runs at clock/8, with integrated output, without aliasingmake test-audio (signal measurement)
A save state taken mid-frame resumes at exactly the same pointmake test-savestate-determinism
At equal cycles, the programs of the local corpus give the same picturemake test-corpus
A frame costs less than 1,000 µs on the reference machinemake test-bench

The whole suite: 70 suites, 1,362 checks, green. Details in The tests.

What stays approximate, and is not hidden

  • The floppy controller (WD1793) is at level N1+: it is clocked in cycles, with a real rotational latency, but its transfer delays are fixed, and the disk image is flat (no magnetic stream). A real lost byte or CRC error therefore cannot happen.
  • The half cycle of the VIA’s one-shot mode (N + 1.5) is not represented.
  • The border and blanking are not drawn: the picture is always 240 × 224 pixels.
  • The absolute phase between the scan and the processor is not modelled. On an unmodified Oric it is only observable with a hardware modification, the “VSYNC hack”, which is not emulated.
  • Tapes load by default through a patched ROM (fast loading). The signal mode exists (--tape-signal) and is exact to the cycle, but it is not the default, by choice: same content loaded, 2.4 times fewer cycles.

The full ranking, component by component, is in Accuracy, word by word.

The programs tried

The repository’s compatibility list dates from 30 August 2026 (version 1.110). At that date, 26 tapes and 11 floppies worked, including period games loaded fast, and Sedoric 3 and 4. A single case needs signal-level loading: a game whose own loader decrypts the data while reading the tape itself.

When the new 6502 core came in, thirteen real programs (six Sedoric floppies, seven tapes) gave the same screen with the old and the new core, and the Oric-1 and Atmos start-ups are byte-identical.

The platforms

PlatformBuildVerified by
Linuxmake (GCC or Clang, SDL2)the reference; the whole test suite
Windows 11.exe cross-built on Linux by the CI, or MinGW-w64CI windows-build (build and tests)
macOS (Intel and Apple Silicon)Apple’s clang and Homebrew’s SDL2CI macos-build, on real Apple Silicon
Browsermake wasm (Emscripten)end-to-end tests in headless Chrome

On Windows, a few features remain Linux and WSL2 only: some serial transports, the GDB server, --control’s asynchronous pause, Chromecast streaming and host MIDI.

The timeline

Phosphoric from January to October 2026On 31 January 2026, the project's first structure (0.1.0). On 22 February, 1.0. On 16 July, the SDL2 display becomes the default (1.67). On 30 August, the macOS port (1.110). On 10 September, the 65x02 oracle measures 44.26% exact bus sequences; on 11 September, 2.0: a micro-sequenced core at 100% and a cycle-stepped machine. On 30 September, the F1 menu (2.5); on 5 October, 2.30. 405 versions in all.405 versions in eight monthsJanFebMarAprMayJunJulAugSepOct0.131 January: the project1.022 February1.67SDL2 by default1.110macOS port1.122 → 2.010-11 Sep: from 44.26% to 100%2.5F1 menu2.305 OctoberFrom the oracle (V2-S1) to 2.0 (V2-S11): eleven steps in under 24 hours.The 2.x series splits the architecture: main() in steps, cards as modules, F1 menu, LOCI-USB.
From the first structure, on 31 January 2026, to version 2.30, on 5 October: 405 versions.
VersionDateWhat it brings
0.1.031 January 2026the project’s structure
1.0.0-alpha22 Februaryprocessor, memory, input/output, picture, sound and storage brought together
1.6716 Julythe SDL2 display becomes the default
1.11030 Augustthe native macOS build
1.12210 Septemberthe 65x02 oracle: 44.26% exact bus sequences, the measured starting point
1.12411 Septemberthe micro-sequenced core by default: 100%
2.0.011 Septemberthe cycle-stepped machine: master clock, VIA, ULA, PSG, FDC, tape
2.0.212 Septemberthe CPU-then-ULA order within the cycle, taken from hardware measurements
2.5.030 Septemberthe peripherals menu (F1)
2.6 and 2.730 Septemberthe VIA measured on a real 6522, then its exact “lazy” path
2.13 to 2.193 Octoberexpansion cards as modules
2.275 Octobera plugged-in LOCI-USB is used automatically
2.285 Octoberthe F1 menu in French or English
2.30.05 Octoberthe LOCI-USB reads in blocks: back to BASIC in 4 s instead of 12

What is planned

The repository keeps open, among others:

  • a magnetic track model for the floppy controller (real byte loss, READ TRACK, CRC);
  • sub-cycle timestamping of all processor accesses, then calibration of the expansion bus constants on hardware;
  • running, in Phosphoric’s CI, the VIA test programs that came from another emulator.

Sources in the repository : README.md, VERSION_TRACKING, docs/ACCURACY.md, docs/COMPATIBILITY.md, docs/specs/V2_CYCLE_ACCURACY.md.