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
| Claim | The test that would make it fall |
|---|---|
| The 6502 is exact to the cycle: 100.00% exact bus sequences on 2,440,000 cases | make 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 empty | make 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 cycle | make test-raster-split, make test-clock |
| The PSG runs at clock/8, with integrated output, without aliasing | make test-audio (signal measurement) |
| A save state taken mid-frame resumes at exactly the same point | make test-savestate-determinism |
| At equal cycles, the programs of the local corpus give the same picture | make test-corpus |
| A frame costs less than 1,000 µs on the reference machine | make 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
| Platform | Build | Verified by |
|---|---|---|
| Linux | make (GCC or Clang, SDL2) | the reference; the whole test suite |
| Windows 11 | .exe cross-built on Linux by the CI, or MinGW-w64 | CI windows-build (build and tests) |
| macOS (Intel and Apple Silicon) | Apple’s clang and Homebrew’s SDL2 | CI macos-build, on real Apple Silicon |
| Browser | make 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
| Version | Date | What it brings |
|---|---|---|
| 0.1.0 | 31 January 2026 | the project’s structure |
| 1.0.0-alpha | 22 February | processor, memory, input/output, picture, sound and storage brought together |
| 1.67 | 16 July | the SDL2 display becomes the default |
| 1.110 | 30 August | the native macOS build |
| 1.122 | 10 September | the 65x02 oracle: 44.26% exact bus sequences, the measured starting point |
| 1.124 | 11 September | the micro-sequenced core by default: 100% |
| 2.0.0 | 11 September | the cycle-stepped machine: master clock, VIA, ULA, PSG, FDC, tape |
| 2.0.2 | 12 September | the CPU-then-ULA order within the cycle, taken from hardware measurements |
| 2.5.0 | 30 September | the peripherals menu (F1) |
| 2.6 and 2.7 | 30 September | the VIA measured on a real 6522, then its exact “lazy” path |
| 2.13 to 2.19 | 3 October | expansion cards as modules |
| 2.27 | 5 October | a plugged-in LOCI-USB is used automatically |
| 2.28 | 5 October | the F1 menu in French or English |
| 2.30.0 | 5 October | the 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.