Nintendo DS
Your player
Ready to play?
Choose a .nds or .zip file,
or drop it anywhere on this page.
Starting the player…
Settings
Preferences & tools
Settings
Display & audio
Rotation: 0°
Microphone off. Enable only when a game needs it.
Renders 3D at 2× resolution (512×384), then downsamples for smoother edges. May reduce speed.
Saves & states
No backup device configured. Select the type used by the cartridge.
Savestates are ROM-validated and compressed when supported by the browser.
Controls
Show the directional pad and DS buttons below the screens.
Keyboard
Use your keyboard to play. Remap any button to make it yours.
DS clock
Game
Game
Load a cartridge
Homebrew or legally dumped .nds ROMs up to 512 MiB, including single-ROM ZIP archives. Files never leave your device.
Game infoROM header Not loaded
- Title
- —
- Game code
- —
- ARM9
- —
- ARM7
- —
Advanced
Auto uses one rendering worker at native resolution and up to two for HD when the device and browser support it. Workers are used only when the scene qualifies for offloading. Higher counts may help HD rendering but use more CPU and memory. The emulator uses one additional worker. Resets to Auto when you reload.
Try an alternative CPU scheduler. Tests found no consistent speedup; some games may be slower. Off by default and resets when you reload.
Execution
LiveCore telemetry Advanced
- Frame
- 0
- VCOUNT
- 0
- ARM9 PC
- —
- ARM7 PC
- —
- ARM9 IRQs
- 0
- ARM7 IRQs
- 0
- FPS
- —
- Audio
- 32.8 kHz
ToolsDeveloper diagnostics Off
The experimental JIT compiles selected instructions; unsupported instructions use the interpreter.
In ARM9 compiled mode, play to learn arithmetic instructions, then pause and export a profile. Prepare that profile before a later run to use it without background learning. Experimental; a speedup is not guaranteed.
Debug snapshots are collected inside the deterministic worker. The profiler separates core, renderer, presentation, and browser costs.
Live DS debug
Debug is off.
Performance profiler
BuildWhat works? v0.7.86 · ABI 0x00073e00
- Validated NDS header parsing and direct-boot binary loading
- Interleaved ARM9 and ARM7 ARM/Thumb interpreter substrate
- Banked CPU modes, IRQ/SWI/undefined entry, and architectural exception return
- ARM9 CP15 control with 32 KiB ITCM and 16 KiB DTCM mapping
- ARM9 32/64-bit division and square root with busy timing and hardware edge cases
- POSTFLG, POWCNT1/2, display power/swap, ARM7 HALTCNT, and ARM9 wait-for-interrupt wake behavior
- ARMv5TE BLX/CLZ, saturation, DSP multiplies, doubleword transfers, and extended CP15 permissions
- IPCSYNC and bidirectional 16-word IPC FIFOs with interrupt edges
- Four shared-WRAM allocation modes and full ARM7 private-WRAM mirrors
- All nine VRAM banks with LCDC, BG, OBJ, and ARM7 mappings
- Both 2D engines render text, affine, extended-affine, paletted, and direct-color backgrounds
- Affine matrices, clipping/wrap, tile flips, large mode-6 bitmaps, alpha bits, and BG extended palettes
- Normal and affine tiled objects with both color depths, flips, wrapping, priority, and 1D/2D mapping
- Bitmap objects, per-object alpha, OBJ extended palettes, and BG/OBJ mosaic
- WIN0/WIN1 and OBJ windows with region precedence and per-layer masks
- Alpha blending, semi-transparent objects, brightness effects, and master brightness
- HBlank-latched scanline rendering, main-memory display DMA, and display capture
- Packed/direct geometry FIFO commands, matrix stacks, transforms, per-polygon viewports, triangles, quads, and strips
- Depth-buffered 3D rasterization with Z/W modes, vertex colors, diffuse lighting, translucency, and perspective-correct textures
- Palette, alpha-indexed, direct-color, and 4×4-compressed texture formats through texture VRAM
- Six-plane polygon clipping and texture-matrix generation from coordinates, normals, or vertices
- Specular/shininess and toon/highlight lighting, alpha test, wireframes, corrected clear depth, edge marking, and depth fog
- Polygon-ID-aware translucent fragments, automatic/manual Y ordering, one-dot culling, and VRAM-backed rear-plane images
- 3D composition as engine-A BG0, display capture, VBlank buffer swaps, geometry DMA, and adaptive dedicated-worker rasterization
- SDK-compatible User-bank context transfers and direct-boot IRQ handoff
- Four timers and four DMA channels per CPU, IPC, Slot-1 gamecard, keypad, touch, and event-scheduled display/timer/audio timing
- Automatic detection with recoverable manual selection of EEPROM, Flash, and FRAM cartridge saves with compressed browser autosave plus local import/export
- Explicit microphone permission, a deterministic test signal and host ADC input; capture stops when hidden. Speech/waveform fidelity remains incomplete.
- Local .nds and single-ROM ZIP loading, ROM-validated gzip savestate import/export, volume control, remappable keys, rotation, and adjustable dual-screen layout
- ARM7 PCM8/PCM16, IMA-ADPCM, PSG duty-wave, noise mixing, hardware gain/capture quirks, POWCNT2 speaker gating, and bounded low-latency browser playback
- ARM7 system SPI with generated firmware, touch ADC, power management, and RTC date/time/alarm controls
- IR-cartridge save passthrough plus ARM7 WiFi RAM/controller/baseband startup behavior for hardware self-tests
The browser interface uses direct boot with built-in HLE system services. CPU timing, exact bus contention, remaining 3D edge cases, save-device edge-case refinement/AUXSPI latency, RTC frequency output/precise pulse timing, microphone waveform fidelity, actual Wi-Fi packet/radio transport, local/online multiplayer, and broad game compatibility remain roadmap work.