## Releases
**X16Emu ADD** is the Advanced Disassembler and Debugger, a fork of the
[official Commander X16 emulator](https://github.com/X16Community/x16-emulator).
Releases are named `R.`:
* **`R`** names the official Commander X16 release line the build follows. That half of the
number is upstream's, and so are its release notes — they are not reproduced here. Read them at
[X16Community/x16-emulator/releases](https://github.com/X16Community/x16-emulator/releases),
e.g. [r49 ("Pyrite")](https://github.com/X16Community/x16-emulator/releases/tag/r49).
* **`nnn`** counts the ADD builds on top of that line. Those are the changes listed below.
`R49` means the build follows the R49 line, not that it is byte-for-byte official R49: the emulator
core tracks upstream's ongoing development after that release, so a build may include upstream
fixes made since R49 was cut. Each release package ships the `rom.bin` it was built and tested
against — use that one.
### R49.001
The first ADD release, following the upstream R49 line. Everything here is new relative to the
official emulator.
**Graphical debugger (`-imgui`)**
* New Dear ImGui debug window with a dockable, rearrangeable layout that is saved between runs
* Disassembly panel with effective-address tooltips, run-to-here and breakpoint toggling
* CPU panel: registers with 65C816-aware widths, decoded flags, the stack, the X16 virtual
registers R0–R15, and user-defined address watches
* Memory panel: hex editor over CPU space, banked RAM and VRAM, with range selection, hex/ASCII
search, changed-byte highlighting, and break-on-write straight from a selection
* Source panel: original cc65 source in tabs, current line highlighted and centred on each stop,
breakpoints settable before the PC ever reaches the code
* VERA panel: palette, tile, sprite, bitmap and tilemap viewers, plus all 32 registers decoded
per scanline so raster splits are visible rather than flattened
* PSG, YM2151 and PCM panels with scope traces that keep drawing while the machine is paused
* Symbols, Call Stack and Breakpoints panels; the call stack names frames by nearest label, so
code without debug info still reads sensibly
* Toolbar with run/step controls, an absolute clock-speed readout (red above native speed) and a
warp toggle; status line showing run state, IRQ nesting depth, 24-bit PC, cycles and instructions
**Remote debugging (`-debugport`)**
* New Debug Adapter Protocol server over TCP, default port 9009, for VS Code, Visual Studio or
any other DAP-compliant client
* Breakpoints, stepping, stack traces, scopes, variables, memory read/write and disassembly
* VRAM read and write through `readMemory`/`writeMemory` with a `vram:` reference, reaching VERA's
17-bit space that the CPU map cannot address
* Conditional breakpoints on registers and memory (`A == $05`, `byte[$1234] != 0`), bank-pinned
conditions (`bank == 2`), and hit counts
* Expression evaluation covering registers, memory, cc65 labels and equates, VRAM, and VERA
registers — including `vera_line`, which reports the registers that actually rendered a given
scanline
* Scriptable keyboard, text and joystick input, making automated regression runs practical. The
virtual SNES controllers need no gamepad attached and no `-joy1`..`-joy4` flag, so a headless CI
machine can drive a game that reads the controller ports
* `tools/x16dbg`, a .NET command-line DAP client with one-shot and interactive modes
**Source-level debugging (`-dbgfile`, `-srcpath`)**
* cc65 `.dbg` parsing: addresses map back to source files, lines, labels and equates
* `.dbg` files auto-load alongside the program they belong to, including for modules the running
program `LOAD`s at runtime, so debugging follows execution into overlays
* Breakpoints are invalidated when a module unloads and re-resolved when one loads back in
* Banked code in `$A000`–`$BFFF` is attributed to the correct RAM bank at runtime, so source
mapping and breakpoints stay correct across bank switches
**Debugger capacity**
* Memory write watchpoints, up to 64 of them
* 65C816 / GS support throughout: 24-bit bank:address browsing and mode-correct register widths
**Windows**
* Statically linked MSVC builds for x64, x86 and ARM64 — a single self-contained `x16emu.exe`
with no SDL2, zlib or Visual C++ redistributable to install
* Separate MIDI builds shipping FluidSynth, for those who want it
* The emulator keeps running and painting while its window is dragged or resized, instead of
freezing for the duration
**Build and release**
* Every push is built for all platforms; pushing an `R.` tag stages a draft release
with every platform asset attached, ready for a human to publish, and the default branch keeps a
rolling `dev` prerelease
* ROM images are fetched with a fallback to the latest release when the upstream build artifact
has expired
**Known limitations**
* The debugger and DAP server are experimental — expect keys, layouts and DAP details to change
* The WebAssembly build is not tested with the debugger or the DAP server
* MSVC builds have no `-trace`; use a `-mingw` package if you need it
* Upstream's original `-debug` debugger is still present but is not extended by ADD