melonDS

Émulateur v1.0 RC

MelonDS est un émulateur de Nintendo DS qui se veut assez rapide. Son binaire est universel (Intel/Apple Silicon).

Dernière mise à jour :

Plateformes

Nintendo DS

Architecture

Mac OS X - macOS Mac OS X - macOS Intel x86 Intel x86 Apple Silicon Apple Silicon 64 bits 64 bits

Téléchargement et liens

Historique des versions

v1.1
* 3D: use 32-bit division in software renderer (Arisotura) * fix 8-bit NO$GBA debug register writes (FrankHB) * fix save type for Legacy of Ys - Books I and II (CasualPokePlayer) * ROM info dialog: make DS banner more accurate (Rayyan) * DSi: add DSP HLE, DSP audio, mic input (Arisotura, CasualPokePlayer) * make input system thread-safe (fixes random multiplayer crash) (Arisotura) * CI: various vcpkg improvements (Nadia) * JIT/x64: ensure writable code memory after alloc (Rayyan) * JIT: add support for PaX MPROTECT on NetBSD (Rayyan) * JIT: handle W^X codemem in fault handler (Rayyan) * SD/MMC: fix crash when accessing port with no device connected (Arisotura) * gdb stub: fix reading wrong code for vCont packet (jonko0493) * CI: add OpenBSD CI (Izder456) * DLDI: fix log2(size) in driver header (Arisotura) * camera: fix CAM_MCNT reset behavior (Arisotura) * CI: add x64 FreeBSD and NetBSD CI (Rayyan) * audio: add high-quality resampling with blip-buf (Nadia) * 3D: fix UB in software renderer when drawing polygons with linear interpolation and Z-buffering (Arisotura) * AR: add extra D400000x data processing opcodes (Arisotura) * Qt6: use new way to access the native display/window on X11/Wayland (Nadia) * nix: update inputs and add dev shell Qt wrapper workaround (Nadia) * DSi: add support for the main RAM size register, with hack to work around loader crash (Arisotura) * AR: add support for importing cheats from usrcheat.dat, improve UI (Arisotura) * fix UI glitchiness under Wayland when OpenGL is used (Arisotura, thanks PCSX2 team) * fix minor Thumb BLX immediate bugs (Jakly) * update xxHash to 0.8.3 (JordanTheToaster) * reduce frontend audio buffer size to 512, fix audio sync (Nadia) * fix bug that could randomly break audio output (Arisotura) * compute renderer: implement tile size scaling to alleviate glitches at high resolutions (FireNX70) * SPU: fix uninitialized variable causing potential crash (Nadia) * add support for building melonDS on Windows without MinGW (Nadia) * JIT: add OpenBSD compatibility (Izder456)
v1.0
* build system and CI fixes (Nadia) * DSi title manager: fix handling of title strings (Rayyan) * fix gdbstub not activating until the console is reset (ZNixian) * improve audio when not running at 60FPS (Jakly) * fix a lot of warnings (Nadia) * fix framelimiter bugs (Jakly) * add support for solar sensor without using Boktai ROM (Jesse) * set SDL_HINT_APP_NAME (redbluegreenhat) * fix undefined behavior when indexing into ARCode::Code (Jesse) * DLDI: add support for unaligned I/O in melonDLDI driver (Arisotura) * audio settings: fix mic settings not applying when closing the dialog (Arisotura, Nadia) * multiplayer: load firmware from correct instance-specific file (Arisotura) * 3D: small fix to translucency flag assignment (Jakly) * AES: load Tad key (edo9300) * slot-2: add support for Motion Pak and Guitar Grip (asie) * DSP: fix PDATA reads (Arisotura) * slot-2: don't return 0 when attempting to read from the GBA GPIO address (edo9300) * camera: always trigger DMA when reaching the end of a frame (Arisotura) * NDMA: fix IRQ in infinite repeat mode (Arisotura) * camera: fix resolution selection code (Arisotura) * UI: fix OpenGL issues with multiple windows (Arisotura) * UI: add a way to tell windows apart (Arisotura) * camera: make timings and FIFO more accurate (Arisotura) * DSi: add support for 32-bit bus VRAM timings (SCFG_EXT9 bit13) (Arisotura) * sound: use single buffer, improves audio latency (Sparronator9999) * fix "full bios boot" not being set properly on initial DSi class creation (Jakly)
v1.0rc
* add splashscreen (Arisotura) * add About dialog (Nadia) * emulation fixes for calico (fincs) * make the frontend mostly thread-safe * refactor core to support multiple instances in one process * OpenGL renderer: avoid undefined Z when using W-buffering (Generic) * improve microphone input (Arisotura) * add support for multiple windows (Arisotura) * new configuration system (Arisotura) * add OpenGL compute shader renderer (Generic) * implement framerate target presets (Jakly) * fix microphone blow noise input (Generic) * add LAN support (Arisotura) * add Nix flake (Nadia) * attempts at improving local multiplayer connections (Arisotura) * many accuracy improvements to the software 3D renderer (Jakly) * fix inaccuracy with NO$GBA debug registers (pants64DS) * OpenGL renderer: add support for changing BG0HOFS midframe (Arisotura) * fix zstd ROM loading issues (Nadia) * audio: add Gaussian (SNES) interpolation (Nadia) * fix DSiWare detection (JesseTG) * add support for R4 Revolution/M3 Simply carts (asiekierka) * fix DS/GBA comm not working when using FreeBIOS (Nadia) * probably more
v0.9.5
* remove incorrect color profile from PNG icons (Nadia) * DLDI fixes for the Smash demo (Arisotura) * fix gaps in I/O handling (Arisotura) * fix invalid savemem commands, fixes Dementium (Arisotura) * FreeBIOS: add VRAM-compatible LZ77 decompress function, fixes Yoshi's Island (Arisotura) * default firmware: in DSi mode, emulate DWM-W015 wifi board instead of DWM-W024 (Arisotura) * default firmware: save WFC settings to separate file (Arisotura) * disable firmware overrides UI when firmware override isn't checked (Nadia) * 2D: more accurate fade/blending (Arisotura) * DSi: add support for GXFIFO NDMA (Arisotura) * DSi: add mainRAM mirror at 0x0C000000 (Arisotura) * add 3DS 5:3 aspect ratio, refactor aspect ratio code (Nadia) * OpenGL: fix 16x resolution on macOS (Nadia) * fix triggers being recognized as negative analog stick values during mapping (Nadia) * fix joystick mapping buttons on macOS (Nadia) * DSi: preliminary implementation of SNDEXCNT (Generic) * DSi: fix SD inserted/removed IRQ bits (Generic) * DSi: implement 8/16bit access to AES registers (Generic) * DSi: fix SCFG_MC cart-inserted bit (Generic) * JIT: invalidate blocks in ARM7 VRAM/WRAM when it is remapped (Generic) * fix ROM banner reading when the ROM has no banner (Rayyan, Arisotura) * fix UTF16 ROM title handling in the ROM info dialog (Rayyan) * wifi: improvements to wifi emulation (Arisotura) * wifi: shared-memory based sync/comm mechanism for local wifi (Arisotura) * proper support for multiple melonDS instances for multiplayer (Arisotura) * DSi: actual, proper camera support (Arisotura) * DSi: fix DSP enough that it will actually work (Arisotura) * fix OpenGL context handling (Stenzek, Generic, Nadia) * force-align all memory accesses (instead of just CPU memory accesses) (Arisotura) * better CLI parameter handling (patataofcourse) * fix bugs in DSi direct boot (Arisotura)
v0.9.4
* Redesign of the Input dialog (Rayyan) * Use DraStic open-source DS BIOS replacement (Swordfish90, asiekierka) * Generate non-bootable firmware replacement (Swordfish90, asiekierka, others) * Support for syncing DLDI/DSi SD image to a folder (Arisotura) * ARM9 PU (code/data abort) support in interpreter mode (Arisotura) * Fix ADPCM decoding bug resulting in potential crackling (Arisotura) * Block sound DMA from reading the ARM7 BIOS (Arisotura) * Smarter SDL initialization (andrigamerita, Nadia, Arisotura) * Properly center the main window on macOS (Nadia) * Don't try to render if the emulator is inactive (Nadia) * Fix potential issues with DSi title importing (Nadia, Epicpkmn11) * Custom path support (Arisotura) * Fix nifi socket init on BSD and macOS (Nadia) * Add support for zero addresses in AR codes 3xxxxxxx to Axxxxxxx (Arisotura) * Lower window refresh rate if running too fast (RSDuck) * Wifi power-saving support (RSDuck) * Allow swap-screen hotkey to swap between displaying only top screen and only bottom screen (ZackWeinstein) * Add RAM search dialog (2jun0) * Add power management dialog for setting battery parameters (Rayyan)
v0.9.3
* Fix macOS right modifier detection (Nadia) * Fill most gaps in ROMList (Arisotura) * Fix touchscreen code in non-hybrid layout mode (Arisotura) * GBACart: simulate open-bus decay roughly (Arisotura) * Frontend: handle tablet and touch events (Generic aka RSDuck) * Implement NO$GBA debug registers (BlueTheDuck) * Make Setup Cheats option reappear on macOS (Nadia) * Add frame step hotkey (Yukitty, additional fixes by Gal20) * Add DSP code (PoroCYon, purringChaos) * Save window state (Arisotura) * JIT optimisations and fixes (Generic aka RSDuck) * Add ROM info dialog (Rayyan) * Allow using DSi footer within NAND images (MightyMax) * More accurate NWRAM implementation (MightyMax) * Only open microphone if necessary (Arisotura) * Fix undo load savestate loading (Generic aka RSDuck) * Fix pause when inactive (Generic aka RSDuck) * Add audio interpolation (Arisotura) * Add SOUNDBIAS and optional 10bit audio (Nadia) * Patch touchscreen calibration data in DSi mode (Arisotura) * Add DSi title manager (Arisotura) * Fix threaded rasteriser deadlock when VCount is moved (Generic aka RSDuck) * Add preliminary DSi-mode direct boot (MightyMax, Arisotura) * More accurate DMA timings (Arisotura)
v0.9.2
* fix JIT on ARM Macs * add proper Mac builds * GX: optimize single-param commands * add recent-files menu (abcdjdj) * add support for loading files from archives * fix JIT bugs * fix wifi bugs * improve performance of save-memory writeback * add hotkey for swapping screens * 3D/GL: attempt fixing various bugs * fix OpenGL scaling on hiDPI displays * rework GPU2D for easier integration of full GL rendering * rework NDSCart and GBACart to make it easier to implement new cart types * add support for NAND save memory (WarioWare DIY, Jam with the Band) * fix bugs in DSi I2C and SD/MMC interfaces * new screen modes
v0.9.1
* add fullscreen hotkey * remove hardcoded F11-debug key (oops) * fix some gaps in the IO handlers * add ability to run unlaunch'd DSi NANDs * add preliminary camera support (feeds fixed stripe pattern) * fix potential bugs with tight timers (fixes ZXDS) * SPU: small optimization to the mixer * better framerate limiter * fix several JIT issues * GPU: lay bases for EVIL PLANS * GPU: emulate separate scroll register for 3D layer scrolling * some corrections to the ROM savetype list * a bunch of misc fixes, as usual
v0.9
* merge in experimental DSi support * 2D: delay palette lookup for sprites * 2D: some attempts at fixing mosaic * CP15: only update PU regions when actually needed * 2D: fix sprite Y-flip * 3D/GL: fix transparency bugs * add warning against hacked firmwares * fix libpcap bug (i404788) * better file handling code (Nadia) * GBA slot and solar sensor support (rzumer) * add support for AR cheat codes * fix handling of ROMs with encrypted secure area * 3D: change clipping to be closer to hardware * 3D: implement DISP_1DOT_DEPTH * 3D: more accurate viewport transform * build fixes (Nadia) * add JIT recompiler (RSDuck) * new Qt UI * SPU: only start channels when they can actually run * 2D: allow writes to DISPCNT/masterbright/capture/dispFIFO regardless of POWCNT * SPU: don't process channels with len
v0.8.3
* fix ARM 'shift by register' operands (fixes Mario Party DS 'Stick and Spin' minigame) * remove glBindImageTexture() (not needed and requires GL 4.2) * fix input bugs when using Ctrl/Alt/Shift keys for buttons * fix possible crashes when exiting (again. heh) * 2D: support forcedblank+masterbrightness * 2D: fill gaps in implementation (mode6 on sub GPU, mode7, 'prohibited' modes/sizes for OBJ and largeBG) * build fixes * fix division edge case (xperia64) * new FPS limiter, audio sync, vsync for OpenGL * add warning message if romlist.bin is not found (Zettymaster)
v0.1
First release.
v0.2
* preliminary sound * various compatibility improvements and fixes * various little speedups too * cart transfer delays emulated * RTC uses system time * wifi stub -- games requiring wifi functionality shouldn't hang anymore * 2D: windows * 2D: various fixes to display capture * 3D: toon/highlight shading, shadows, polygonID * 3D: box test, pos test, vec test
v0.3
* set POSTFLG when booting games directly, fixes Pokémon games and likely others * fix bug with cart DMA, booting a game from the firmware should be stable now * better emulation of cart transfer delays * better save type heuristics * support for writing to VCount * 2D: fix display capture blending modes * 2D: implement X-flip for bitmap sprites (oops) * 3D: fix mode3 (vertex) texcoord generation (Eledees no longer looks like your TV decoder broke) * 3D: fix Z-buffering * 3D: attempt at fixing culling, works better * 3D: latch all rendering-related registers upon VBlank * 3D: delay rendering start a bit, for games that run late * 3D: optional threaded renderer * 3D: change renderer to work per-scanline; accurate stencil buffer * 3D: fix alpha calculation when alphablending is disabled via DISP3DCNT * 3D: fog and edge marking * wifi: more functionality emulated, attempt at sending/receiving data * misc bugfixes and optimizations * better framerate limiter
v0.4
* implement access modes for certain IO registers that were unhandled * actually implement RCNT instead of hardcoding it * wifi: emulation of multiplayer cmd/reply/ack transfers * wifi: more accurate RFSTATUS/RFPINS * wifi: some games can go into multiplayer now (Pictochat, NSMB, Pokémon known working) * improved savemem detect heuristic * implement firmware write, fix SPI bugs * accurate emulation of 'main memory display FIFO' * 2D: fix render/capture order * 2D: implement mode6 large BG * 2D: fix bitmap BG sizes * 2D: fix rotscaled bitmap sprites * 3D: fix missing term in MatrixTranslate * 3D: fix toon highlight mode * 3D: fix boxtest bug * 3D: accurate viewport transform * 3D: polygon Y-sorting * 3D: more accurate interpolation, still not perfect * 3D: more accurate Z and W transforms, fix some cases of Z-fighting * 3D: separate polygonID attributes for opaque and translucent pixels * 3D: start documenting and implementing depth test edge cases * emulate delays for SPI transfers and div/sqrt * misc bugfixes/additions as usual
v0.5
* new UI, more stable, less windows all over the place * wxWidgets ditched, lost some weight * 2D: allow reading BLDALPHA * GPU: fix potential issues with VCount write * implement 8bit accesses to some registers * 2D: mosaic (not quite right for rotscaled sprites) * 3D: fix culling * allow 128KB firmwares from DSi/3DS * 3D: more accurate fog * 3D: more accurate polygon edges (but not perfect) * 3D: antialiasing * 3D: misc optimizations
v0.6b
* fix screen option menu init * add icon * add resampler with small tolerance to prevent sound clicks/pops at fullspeed
v0.6
* don't fail completely if SDL haptic init fails (bentley) * fail gracefully when ROM loading fails * support Unicode filenames under Windows * FPS counter is back (sorry!) * allow Windows file picker to navigate through shortcuts (instead of trying to load the shortcut as a ROM) * screen layout/sizing/scaling modes, screen gap, rotation * toggle for screen linear filtering * add support for 8bit GXSTAT accesses * reset IE/IF properly * fix sound capture/playback for things like surround
v0.7
* fix possible crashes when exiting * wifi: add basic access point melonAP (very beta) * fix SMULWx/SMLAWx opcodes, fixes Sims 2 music * add support for loading BIOS/firmware files and config file from AppData or ~/.config/melonds or from the executable directory (hcorion) * add 32-bit IPCSYNC reads/writes (Dirbaio) * add savestates * 3D: (hopefully) fix bug in shadow/AA interaction (visible in the MKDS character select preview, bottom border of the platform thing)
v0.7.1
* fix glitched lines in 3D * fix backwards windows * more accurate GX timings * more accurate DMA and memory timings * check for config/etc files in melonDS's directory explicitly * allow joystick axis events even when no dpad buttons are mapped * detect savemem type from database instead of huge messy fucky code
v0.7.2
* microphone input (physical mic, noise, wav) * nocash-style console printing * send console output to cmd under Windows * corrections to romlist.bin * 2D: fix blending for semitransp sprites and 3D layer when windows are used (bypasses window 'color effect enable' check) * 3D: fix 'equal' depth test margin in Z-buffering mode, fixes Puzzlers World 2 * SPU: add support for channel repeat mode 3 (behaves same as 1) * SPU: always clear channel buffers, even when running ch0-7 in mode 3 (fixes American Girl - Kit Mystery Challenge!) * libui/windows: cache ideal size for uiButton. fixes lag in input config dialog * close/open lid, sleep mode * hotkey system * audio settings dialog, with volume slider and microphone settings * libui/gtk: remember last directory in which a ROM was opened * libui/gtk: attempts at fixing input config dialog crashes * framerate limiter toggle (abcdjdj) * add Linux libpcap library names (dogtopus) * betterer readme (Aqueminivan) * GX: set busy flag immediately when putting things in the FIFO, fixing possible race condition * GX: revise timing for SWAP_BUFFERS command * add flatpak manifest (cpba)
v0.7.3
* fix STRD_POST (fixes Just Sing - Vol 2 music) * add support for POWCNT1 (fixes Imagine - Teacher) * 2D: fix fade effects to semitransp sprites and 3D layer (fixes Devil Survivor) * 3D: truncate W to 24 bits before viewport transform. do not render polygons with any W=0. * attempt at fixing hiDPI under Windows * fix input config dialog crashes under Linux * add support for hotplugging joysticks * make 'savefile relocation when using savestates' disabled by default * remember whether main window is maximized * add menu for setting main window to an integer size * init save memory to 0xFF instead of 0x00 * romlist.bin: index games by serial rather than CRC. updated romlist. * add support for 128K EEPROM (Pokémon Mystery Dungeon - Explorers of Sky) * make nocashprint also work in ARM mode * GX: always latch rendering engine registers, even when not flushing * GX: fix polygon timings when polygon is rejected by culling/clipping * rewrite main emu loop to use absolute timestamps
v0.7.4
* fix potential spurious sounds when starting melonDS * fix crash when using microphone with a WAV that has multiple channels * small optimizations and tweaks * wifi: add wifi settings dialog, with libpcap adapter list * wifi: first version of indirect (non-libpcap) mode * move most of the config settings to a platform-specific array (really just making it easier to port melonDS)
v0.8
* fix CP15 init during direct boot * do not apply delays to cart transfers when the WR bit is set * misc fixes * OpenGL renderer and upscaling
v0.8.1
* fix potential issue generating the config file path under Linux * fix 3D/2D blending bugs under OpenGL * fix potential crash under the software renderer when display capture is used * basic, optional OSD system * add support for setting key mappings to none * add fast-forward and pause/reset hotkeys * fix crash when closing an input config dialog during the joystick mapping process * fix bugs when changing video settings with no game loaded * faster IRQ checks * faster VRAM reads * 3D/OpenGL: preliminary edge marking * 3D/OpenGL: fix fog alpha * 2D: render sprites one scanline in advance (iCarly - Groovy Foodie) * 3D/software: fix rendering of line polygons * 3D/OpenGL: add proper-ish support for line polygons * support multiple joysticks * add support for mapping keys with modifiers * add support for mapping joystick axes alongside buttons, remove hardcoded axis 0/1 mapping * overall better input/hotkey code
v0.8.2
* fix GL renderer not working at all on certain setups (RSDuck) * add 32bit writes to certain IO ports (fixes some freezes) * OpenGL: disable vsync under Windows * fix bug when mapping a joystick axis but no button * set kMaxIterationCycles to 64 (old value 16) * fix potential crash when pressing Escape with menus opened * OpenGL: remove shitty hack * OpenGL: better lines * fix potential crash when closing emu

Captures d'écran

Super Mario 64 DS dans melonDS