Releases
v0.1.1
Compare
Sorry, something went wrong.
No results found
0.1.1 (2026-06-16)
Features
add Cloudflare Workers configuration (#1 ) (67ef2b9 )
app: --player CLI flag to launch straight into the player (b760c84 )
app: multi-window player, console tile art, 8 new systems (f260042 )
app: on-screen FPS counter + rolling graph (4b5a56e )
app: seed the nxdk demo XBEs into the Xbox shelf (28299cf )
atari2600: add Atari 2600 (VCS) core from scratch (7c672f5 )
audio: DirectSound A/B + Web Audio output (106ba20 )
audio: implement PSG channels 1-4 + stereo output (91b9109 )
bios: implement HuffUnComp (SWI 0x13) (7a85e8c )
bios: SWI HLE — math, memory, decompression, intr-wait (593093f )
cheats: GS / Action Replay / CodeBreaker cheat code support (f0b3682 )
cheats: import / export cheat lists (1e7404c )
cheats: surface known cheats from the libretro database (1a30432 )
controller-panel: raw signals dump for unknown D-pad indices (b472d03 )
core-api: sketch shared FrameSource/EmulatorCore contract (b889335 )
core: port the GBA core to Rust + WebAssembly (037e7fd )
cores: add fault-loop crash screens to GBA/NDS/NES/SMS/GBC (38000cd )
cpu: ARM7TDMI state + ARM/THUMB interpreters (05cba92 )
desktop: cross-platform Rust front-end (eframe) — v1 (0f553cd )
desktop: fullscreen (F11), pause (P), and reset (5035794 )
desktop: save states (F2/F4) + recents library (329bf20 )
desktop: settings panel, persisted config, and per-game .sav saves (7987f4d )
docs: add per-core capability matrix, populated for GBA (02ceace )
docs: support matrices for all 16 cores (4a343a7 )
emuapp: controller remapping + hide top bar in fullscreen (3e0589e )
emuapp: Metal renderer with curved-CRT shader + MetalFX upscaling (be2a8e0 )
emuapp: pixel-art upscaling (Scale2x/Scale3x) (cddade0 )
emuapp: redesign controller remapping UI + fix PS5 face defaults (ee6d301 )
emuapp: settings, attachments, storage manager, key remapping, retro filters (a2621c4 )
emuapp: unify video scaling into one Upscaling picker with pixel-perfect (a7441e7 )
gba: emulate the Wireless Adapter (RFU) with a host↔client peer seam (5b7bc4f )
gba: expose wireless + multiboot via wasm and docs (f186fb0 )
gba: Single-Pak multiboot — child-receive boot + SWI 0x25 HLE (ef7aabb )
gbc: complete the Game Boy Color core (CPU/PPU/APU/timer/DMA/serial + run_frame + wasm) (06fefd9 )
gbc: scaffold core-gbc crate with LR35902 CPU + memory-map/MBC foundation (652733e )
gc: add Nintendo GameCube (PowerPC "Gekko") foundation core (fc8cca7 )
genesis: add Sega Genesis / Mega Drive core from scratch (0fd523e )
input: turbo/autofire + usePersistedState hook (fa4727c )
io: IO bridge + DMA(4) + Timers(4) + IRQ + Keypad (05d9d1d )
io: link-cable serial controller (Phase A — loopback) (9ae2f85 )
jit: add THUMB control flow + block transfer (formats 5/14/15/19) (5de2298 )
jit: add THUMB formats 2/12/13 and remaining non-shift ALU ops (3b495c6 )
jit: add THUMB immediate and register shifts (formats 1 and 4) (e6ee8cb )
jit: add THUMB load/store formats 6/7/8/10/11 (0790b22 )
jit: block linking — chain compiled blocks per dispatch (1ba1afa )
jit: enable the recompiler by default (2c55b1e )
jit: recompile ARM + optimize register sync (f9b717c )
launcher: audio for NES/SMS/GBC/PS1/NDS players (cb0ac38 )
launcher: console-first web homescreen redesign (d0d46a1 )
launcher: Rust-rendered home screen with multi-system library (8605afa )
launcher: scrollable game grid (81e14d1 )
launcher: settings menu rendered in the Rust launcher (8bd5e8e )
launcher: wire GBC + GB into the host (gbc & gb playable) (bdd3c22 )
launcher: wire NDS core into the host (dual-screen player, nds playable) (b76c1fc )
launcher: wire NES core into the host (single-screen player, nes playable) (3a592a4 )
launcher: wire PS1 into the host (BIOS-gated player, ps1 playable) (7b1c08c )
launcher: wire SMS + Game Gear into the host (sms & gg playable) (aea4b09 )
library: "favorites only" filter (40ed613 )
library: favorite games (a6fb145 )
library: user-supplied cover art (1b250d7 )
libretro: persist SRAM via retro_get_memory_data (battery saves) (1a6cd91 )
libretro: RetroArch core wrapping the unified emu-native Emu (e781bb0 )
libretro: save states via retro_serialize (GBA) (4686248 )
link: lockstep Multi-play over the WS (Phase B-2) (753d3d5 )
link: WS-relay link cable via Durable Object (Phase B-1) (5888a32 )
macos: native SwiftUI app for all cores (EmuApp) (48581a1 )
memory: EEPROM 8K save support (fixes Minish Cap save) (c71b994 )
memory: GBA bus + region decoder, Flash 128K, S-3511A RTC (46e7df9 )
n64: add Nintendo 64 core foundation from scratch (1e91200 )
native: C ABI for saves, link attachments, and save-kind (2f3c489 )
native: unified all-core native FFI (emu-native) (948047d )
native: wire the 8 new console cores into the unified FFI (5a2ad5a )
nds: implement run_frame + WasmNds wasm surface (core is runnable) (fe169e6 )
nds: port 2D PPU (engines A/B, tiled/affine/bitmap bg, sprites, blending) (0b5043f )
nds: port cart loader + BIOS HLE (HLE boot + SWIs) (5239b07 )
nds: port dual-CPU interpreter (ARM7 ARMv4T + ARM9 ARMv5TE) (3ec4558 )
nds: port IO subsystem (irq, dma, ipc, timers, spi, rtc, touch, ds_math, sound) (d74af9d )
nds: port the 3D geometry engine (gx/lighting/fog) — NDS is now full 3D (5bcc0bc )
nds: scaffold core-nds crate with memory + CPU-state foundation (df682d0 )
nes: from-scratch NES core (6502 + 2C02 PPU + APU + mappers 0-4) (9096065 )
ngpc: add Neo Geo Pocket Color core from scratch (63fd041 )
pce: add PC Engine / TurboGrafx-16 core from scratch (edc65e2 )
player: video recording + copy-frame to clipboard (735c735 )
ppu: implement WIN0/WIN1/OBJ-window masking in compositor (f8600a3 )
ppu: proper affine BG renderer for modes 1 & 2 (ec5a4f0 )
ppu: scanline PPU — modes 0/1/3/4/5, sprites, blend, window (5d2ff6f )
ps1: biosless HLE disc boot + crash screen (a07b1cd )
ps1: build the rest of the PS1 core (subsystems + GPU/GTE/SPU/CDROM + run_frame + wasm) (c588b73 )
ps1: implement R3000A instruction set (cpu/exec.rs) (aefb34a )
ps1: scaffold core-ps1 crate with R3000A CPU + memory-map foundation (1aaf569 )
pwa: installable offline app shell (367c2d7 )
recomp: real THUMB block recompiler — foundation (61206cf )
recomp: WASM module emitter + hot-block translator scaffold (62a7ce7 )
save: persistent in-game saves with localStorage + Export/Import (7b69499 )
sio: slave-side multi-play propagation + per-baud transfer time (91f0250 )
sms: from-scratch Master System + Game Gear core (one Z80 core, two systems) (c9bb438 )
snes: add Super Nintendo (SNES) core from scratch (8c93a65 )
sprite mosaic + zip ROM imports (283f3b5 )
SRAM saves + save-type auto-detect + BG mosaic (9ecaaaa )
ui+wire: Emulator, canvas blit, keypad bindings, RTC GPIO (e40c8de )
ui: add Pokemon Ruby to the ROM picker (d3bbab3 )
ui: backfill md5 + real cover art from LibRetro thumbnails (139cd28 )
ui: bulk ROM delete + Debug panel + cleaner layout (358abc4 )
ui: controller diagnostics panel + UI buttons highlight from any source (b3826d0 )
ui: error boundaries around player, controls, and modals (5daca52 )
ui: footer link to GitHub Issues + README bug-report section (2582904 )
ui: fullscreen support for the player (cb07abf )
ui: Hasheous metadata lookup + box-art placeholder + confirm modal (1ca2a8d )
ui: mobile-friendly viewport sizing (3316084 )
ui: overlay live boot diagnostics on the canvas (8086815 )
ui: per-ROM details page (67347f5 )
ui: React rewrite, on-screen gamepad, ROM picker (5 games) (85c1413 )
ui: real controller panel — visual diagram + named buttons + remap (a584e6b )
ui: real IGDB box art via Cloudflare Worker + Twitch OAuth (049a316 )
ui: run the app on the wasm core, drop the TypeScript core (2bfc3db )
ui: savestates — full emulator snapshot save/load (89b4e74 )
ui: split App into routed Library + Player pages (2b978e2 )
ui: Tailwind v4 + IndexedDB ROM library for user-uploaded ROMs (51f8879 )
ui: TanStack Query for all async data + richer cover URL match (f4144fc )
ui: turn diagnostic overlay into a real boot splash (84c1688 )
ui: UI overhaul, player features, and richer input (cbc6253 )
ui: Web Gamepad API support + 60Hz pacing (ec42cfe )
video: GBA LCD color correction (f37be98 )
virtualboy: add Virtual Boy core from scratch (d3f27e5 )
web: load ROMs from disk via File System Access API (46cca6f )
web: wire the 8 new cores into the browser launcher (e984935 )
winapp: native Windows app (WPF); drop cross-platform egui app (7dd83d7 )
wonderswan: add WonderSwan / WonderSwan Color core from scratch (43bf8a0 )
xbox: add original Xbox (Pentium III / NV2A) foundation core (abdf167 )
xbox: boot clears init — 7M+ instructions, now waiting on hardware (9d684d8 )
xbox: boot reaches Halo 2's first kernel call (b8568c2 )
xbox: complete NV2A scanout path (display framebuffer + shared rasterizer) (38522af )
xbox: cooperative thread scheduler — multi-threaded boot (d89ff3f )
xbox: crack PFIFO bring-up + display init — Halo 2 past the GPU wait (1d5fe28 )
xbox: CRT atomics, IRQL, TLS, RDMSR, whole-EEPROM read (a06cab1 )
xbox: drive-letter mount + RtlEqualString — Halo 2 boots deeper (3ae707c )
xbox: expand x86 interpreter for real game code (a0cdbce )
xbox: file-info ordinals + HDD save files report absent (ec067f1 )
xbox: Gouraud-shaded triangles (barycentric color interpolation) (468ac11 )
xbox: GPU PLL + PFB config registers — pb_init passes, scanout goes live (1235eb1 )
xbox: handle FWAIT (0x9B) — boot reaches x87 FPU code (380a9f3 )
xbox: HDD IOCTLs + time kernel calls — Halo CE runs real game code (27544ff )
xbox: HLE interrupt + DPC delivery, GPU instance mem + PCI space (dae2499 )
xbox: HLE kernel — Halo 2 boots through init (1400+ instrs) (c0c30e6 )
xbox: implement x87 0xDA register form (FCMOVcc + FUCOMPP) (027ce3e )
xbox: indexed drawing (ARRAY_ELEMENT16) + viewport transform (03afed5 )
xbox: kernel DATA exports + system clock — Halo 2 clears its timed wait (2b60a2b )
xbox: load default.xbe and execute the game's entry point (4e046ff )
xbox: mount XISO/XDVDFS discs + identify the title (51d8781 )
xbox: NtCreateMutant + real SHA-1 (XcSHA*) — nxdk homebrew boots (689727c )
xbox: NtPulseEvent/NtSetEvent/NtClearEvent — past pbkit vblank sync (9a7f53e )
xbox: NV2A channel PUT/GET — breaks the first GPU pushbuffer wait (c82872b )
xbox: NV2A per-rect clip+clear — composed boot screen (91619d6 )
xbox: NV2A primitive drawing — immediate-mode triangle rasterizer (0276aea )
xbox: NV2A pushbuffer execution + surface clear + scanout (a4997c5 )
xbox: present an HDD so Halo 2 stops rebooting to dashboard (cc4b2c2 )
xbox: quick-reboot relaunch (HalReturnToFirmware + XLaunchNewImage) (d8504e8 )
xbox: real AvGet/SetSavedDataAddress + preserve across reboot (59c571b )
xbox: render a homebrew XBE boot screen end-to-end (f946320 )
xbox: report AV pack + standard from AvSendTVEncoderOption(GET_SETTINGS) (1b9c9dc )
xbox: scaffold HLE kernel modules (stubs + interface) (ab609e6 )
xbox: software 3D rasterizer + NV2A reference doc (2c7ab04 )
xbox: SSE — XMM register file + vector instructions (dfc7192 )
xbox: symlink objects, NtCreateEvent, advance time exports, KeRemoveQueueDpc (408257a )
xbox: vblank interrupts + port I/O + event stubs — game reaches main loop (1a55ed0 )
xbox: vertex transform via constant-matrix chain (T&L pipeline) (d548ff0 )
xbox: x87 FPU (and SSE/MMX decode seam) (a254b45 )
xbox: XISO-backed virtual filesystem — Halo 2 reads from disc (e549727 )
Bug Fixes
audio: compute live source rate from driving timer, was hard-coded (58eee10 )
bios: no-op SWIs above 0x2A instead of crashing into the SVC vector (eb80dce )
bios: RegisterRamReset bits 5 (SIO), 6 (Sound), 7 (other IO) (90a6fa3 )
bios: RegisterRamReset(bit 7) sets BG affine PA/PD to identity (cae7fb1 )
build: commit prebuilt wasm so deploy doesn't need wasm-pack (d79e403 )
build: exclude Node-only test files from tsc -b (33e99df )
build: noEmit goes in tsconfig.json, not the CLI (61eef2e )
bus: mirror ROM reads across the cart's actual size (753dc53 )
cheats: repair mojibake + drop note pseudo-entries in libretro index (3f35f73 )
ci: commit the open-source PS1 BIOS (was excluded by *.bin gitignore) (c1b8e4e )
controller-panel: Esc unbinds + new bind steals from previous owner (5bfe35f )
cpu: correct BIOS stub IRQ branch offset (was 0x108, should be 0x128) (8256273 )
cpu: correct PC pipeline + minimal BIOS IRQ stub (17251fb )
cpu: make BIOS reset vector actually jump to ROM (46506f7 )
cpu: THUMB POP {PC} must not interwork on ARMv4T (bcd5b13 )
cpu: track branched flag instead of comparing r[15] to visible PC (8b45598 )
emuapp: label face buttons A/B/X/Y instead of ambiguous "South (A/B)" (539d7b4 )
emuapp: re-seed demos at packages/ path, prune dead recents, center player (e171b7b )
emulator: break BootInit chicken-and-egg in FireRed/Emerald (b44abee )
emulator: clear stale HBlank IF + force VBlank wait-flag bit (0398840 )
emulator: pre-prime FireRed BootInit gates that BIOS would set (bf3986c )
emulator: remove redundant 0x310C wait-flag write (b3c79e7 )
emulator: simulate BIOS post-reset DISPSTAT; ROM picker UI (dee5acd )
flash: erase command sequence was short-circuited by AwaitFirst (5b1d4d9 )
gamepad: decode single-axis HID hat for D-pad (PS5/Safari fix) (dae7172 )
gamepad: treat HID hat axes 6/7 as D-pad (6096758 )
input: adjust sliders/selects via controller in panels (034c654 )
io: DMA control register read returns live state, not raw mirror (9f392e9 )
jit: defer dispatch on pending IRQ/halt and invalidate self-modified RAM blocks (a7364ff )
jit: rotate unaligned LDR and mask STR word addresses like the interpreter (1b3d278 )
launcher: recognize PS1 disc images (.bin/.cue/.img/.iso/.pbp) (acda470 )
macos: game launch crashed the app (audio format) + UI throttle (d42f478 )
macos: player status bar no longer covers the screen (ee95c87 )
nds: "data could not be saved" — clear WEL on deferred CS release (bd1ee10 )
nds: glitchy audio (mix one-shot channels before step clears them) (10d9c6f )
ppu: 8bpp BG tile index addresses 32-byte slots, not 64-byte tiles (7feb0e7 )
ppu: BG2 in bitmap modes (3/4/5) is always affine (70aedfc )
ppu: implement affine sprite rendering (Oak split-in-half fix) (9482b88 )
ppu: sprite priority bits were colliding with the layer-id field (7241931 )
pwa: don't run the service worker on *.localhost dev hosts (141ae37 )
recomp: advance cycle counter by JIT block size, not 1 (a2ca82c )
rtc, lz77: RTC sampling edge + LZ77 self-reference in VRAM mode (b9e2bd2 )
rtc: clear input buffer on new command + fix SIO mirror in reply (9a5ee40 )
rtc: default status to 0x80 (POW set) so Ruby boots past battery check (664e7a8 )
sio: also reset slave-side SIOMULTI to 0xFFFF on transfer start (2eb60ac )
sio: reset SIOMULTI registers to 0xFFFF on transfer start (7d5a304 )
sio: SIOCNT.START is read-only on slaves in Multi-Play mode (2ee7c87 )
sio: use real-hardware Multi-play transfer cycles per baud (4364cb1 )
thumb: properly dispatch Format 7 (LDR/STR reg offset) and Format 8 (56eea50 )
ui: bump persister cache key + sweep old rq:v1 (7aeef72 )
ui: cover probe re-runs when thumbnails arrive after mount (69e838e )
ui: drop COEP require-corp + bump hasheous cache version (de2c461 )
ui: fullscreen canvas actually fills the viewport (e76ad68 )
ui: import .sav auto-resets so the new save takes effect (c214d6b )
ui: include candidates in useCoverUrl query key (4c44b17 )
ui: save import silently lost the file picker (983f289 )
ui: square covers + sweep stale cache entries (10ee549 )
ui: visible 'fetching metadata' indicator while enriching (f942ca2 )
xbox: break Halo's reboot loop — serve title metadata, isolate kernel data (cdc9389 )
xbox: init HalDiskCachePartitionCount (ord 40) so Halo stops zeroing itself (3e3f107 )
xbox: present only completed frames (no mid-clear black flash) (c28ac6e )
xbox: realistic per-frame step budget (~12M) + decoupled preempt quantum (a52c30a )
xbox: render real geometry — vertex arrays + DRAW_ARRAYS + clear rects (9197dd9 )
xbox: resolve SET_SURFACE_COLOR_OFFSET against the framebuffer — triangle renders (3d4ba68 )
xbox: revert step_cpu to safe mem::take (the split-borrow was UB) (402ff1a )
Performance Improvements
batch PPU/Timer advancement and cache IRQ pending flag (2dc64cf )
core: static bus dispatch, boxed RAM, zero-copy fb + RN FFI (e1e6e49 )
gate recompiler dispatch + fix RTC status writes (Ruby battery) (a6254b6 )
recomp: JIT register file in WASM linear memory + ADV toggle (3290c92 )
xbox: cheap branch-trace gate (drop per-branch Once::call_once) (611dec9 )
xbox: direct-RAM fast path for read/write/fetch (959df44 )
xbox: drop per-instruction env lookup + mem::take in the step loop (98597a5 )
xbox: present at ~30fps by trimming the per-frame spin budget (74149a6 )
xbox: step the CPU via a disjoint split-borrow, not mem::take (d1c4f3d )
You can’t perform that action at this time.