Giter VIP home page Giter VIP logo

melonds's Introduction

melonDS


DS emulator, sorta

The goal is to do things right and fast, akin to blargSNES (but hopefully better). But also to, you know, have a fun challenge :)


How to use

melonDS requires BIOS/firmware copies from a DS. Files required:

  • bios7.bin, 16KB: ARM7 BIOS
  • bios9.bin, 4KB: ARM9 BIOS
  • firmware.bin, 128/256/512KB: firmware

Firmware boot requires a firmware dump from an original DS or DS Lite. DS firmwares dumped from a DSi or 3DS aren't bootable and only contain configuration data, thus they are only suitable when booting games directly.

Possible firmware sizes

  • 128KB: DSi/3DS DS-mode firmware (reduced size due to lacking bootcode)
  • 256KB: regular DS firmware
  • 512KB: iQue DS firmware

DS BIOS dumps from a DSi or 3DS can be used with no compatibility issues. DSi BIOS dumps (in DSi mode) are not compatible. Or maybe they are. I don't know.

As for the rest, the interface should be pretty straightforward. If you have a question, don't hesitate to ask, though!

How to build

Linux:

  1. Install dependencies: sudo apt install cmake libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev qt5-default libslirp-dev libarchive-dev libepoxy-dev
  2. Download the melonDS repository and prepare:
git clone https://github.com/Arisotura/melonDS
cd melonDS
mkdir build && cd build
  1. Compile:
cmake ..
make -j$(nproc --all)

Windows:

  1. Install MSYS2
  2. Open the MSYS2 MinGW 64-bit terminal
  3. Update the packages using pacman -Syu and reopen the terminal if it asks you to
  4. Download the melonDS repository and prepare:
git clone https://github.com/Arisotura/melonDS
cd melonDS
mkdir build && cd build

Dynamic builds (with DLLs)

  1. Install dependencies: pacman -S git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5,libslirp,libarchive,libepoxy}
  2. Compile:
    cmake .. -G "MSYS Makefiles"
    make -j$(nproc --all)
    ../tools/msys-dist.sh

If everything went well, melonDS and the libraries it needs should now be in the dist folder.

Static builds (without DLLs, standalone executable)

  1. Install dependencies: pacman -S git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5-static,libslirp,libarchive,libepoxy}
  2. Compile:
    cmake .. -G 'MSYS Makefiles' -DBUILD_STATIC=ON -DQT5_STATIC_DIR=/mingw64/qt5-static
    make -j$(nproc --all)
    mkdir dist && cp melonDS.exe dist

If everything went well, melonDS should now be in the dist folder.

macOS:

  1. Install the Homebrew Package Manager
  2. Install dependencies: brew install git pkg-config cmake sdl2 qt@6 libslirp libarchive libepoxy
  3. Download the melonDS repository and prepare:
git clone https://github.com/Arisotura/melonDS
cd melonDS
mkdir build && cd build
  1. Compile:
    cmake .. -DCMAKE_PREFIX_PATH="$(brew --prefix qt@6);$(brew --prefix libarchive)" -DUSE_QT6=ON -DMACOS_BUNDLE_LIBS=ON
    make -j$(sysctl -n hw.logicalcpu)

If everything went well, melonDS.app should now be in the current directory.

TODO LIST

  • DSi emulation
  • the impossible quest of pixel-perfect 3D graphics
  • improve libui and the emulator UI
  • support for rendering screens to separate windows
  • emulating some fancy addons
  • other non-core shit (debugger, graphics viewers, cheat crapo, etc)

TODO LIST FOR LATER

  • better wifi
  • maybe emulate flashcarts or other fancy hardware
  • big-endian compatibility (Wii, etc)
  • LCD refresh time (used by some games for blending effects)
  • any feature you can eventually ask for that isn't outright stupid

Credits

  • Martin for GBAtek, a good piece of documentation
  • Cydrak for the extra 3D GPU research
  • limittox for the icon
  • All of you comrades who have been testing melonDS, reporting issues, suggesting shit, etc

License

GNU GPLv3 Image

melonDS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

melonds's People

Contributors

abcdjdj avatar ace4896 avatar aqueminivan avatar arisotura avatar bentley avatar bslenul avatar desperateprogrammer avatar dirbaio avatar fuel-pcbox avatar gal20 avatar i404788 avatar inactive123 avatar liberodark avatar libretroadmin avatar myaats avatar nadia-h avatar nadiaholmquist avatar namaneo avatar pedrovelho avatar rayyanansari avatar rsduck avatar rzumer avatar stuken avatar superusercode avatar suuperw avatar swordfish90 avatar v1993 avatar webgeek1234 avatar zapeth avatar zettymaster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

melonds's Issues

[Windows] Latest update breaks OpenGL (Pokémon Black)

OpenGL breaks the graphics in the latest build. It doesn't switch from Vulkan to Glcore/Gl automatically so I thought it was the cause but it doesn't solve anything when switching to Glcore/Gl manually.

Software is working great though with the latest commits from upstream.

Runahead not working at all with this core

When activating Runahead with the latest code for this core (which I assume is using the software renderer by default), I am experiencing these two effects respectively:

  • If you enable Runahead without secondary instance, the entire core hangs almost immediately and makes RA crash.
  • If you enable Runahead with secondary instance, content is apparently reset but the audio still refers to the initial instance. After a few seconds, everything hangs.

Doesn't work on Arm/Arm64 devices.

Hey there, I really like this emulator. It is a fantastic alternative to Desmume and works excellently. However, when I try to get it working on Rapberry Pi 3B, Odroid XU4 or Odroid N2, it just crashes. Seems to be something wrong with the version for Arm Linux/Android devices.

Android makefile missing after major update

Before the core was updated, the jni directory existed to allow building the android core. It no longer exists, and just dropping the old one in doesn't correctly build.

[Switch] [Request] map touch controls to right stick (reward inside)

Currently melonDS supports 2 modes for touch controls: touchscreen and mouse.
It would be possible to map mouse to right stick and leave the following button setting?:
Right Stick Click = Close/Open DS lid
Right Stick = Touch movement
ZL = Touch screen Click
ZR = Mic Blow

Obviously it can be changed under options, so touchscreen controls still enabled.
I'm willing to put a $40 reward if someone can implement this.

Some general issues

I got some issues/problems with the current core:
1.The online mode wont work even though I got winpcap/npcap installed (cant choose the internet adapter in core options).
2.Some games wont work or wont enter gameplay - probably related to save support?
3.The default for touch mode is none for me so i had to change it to mouse.
I am using the core on Windows.

[Feature Request] DSi Support

This should be (mostly) functional in upstream, but seems to need to load in a different mode. Just adding in the dsi extension provides an error about the game not being loadable on a standard DS.

Request for libretro core build instructions

I tried the following:

$ mkdir build
$ cd build
$ cmake ..
$ make

It compiles melonDS executable just fine, but the generated src/libcore.a fails to load under Load Core in RetroArch. What am I missing? Thanks.

Freeze and Crash on Close Content [Regression]

The latest buildbot builds of the core after the Jan 16th rebase to 0.9.1 will freeze for a few seconds when closing content or exiting RetroArch. It does close after awhile, but I believe it's crashing because it doesn't write changed core options to file. This seems to only happen when using Vulkan as RetroArch's video driver (using software rendering in MelonDS). glcore doesn't have the issue. I've only tested on Windows, but one user on the Libretro Discord reported it happening on Android too. A few people have said it doesn't happen on Linux, but I haven't confirmed if they were using glcore or Vulkan.

One tip for reproducing this: If you've run the core with content using glcore before, you may need to restart your machine after switching to Vulkan for it to freeze. For some reason after I successfully ran the core without issue with glcore, the issue was gone in Vulkan until I restarted.

I have a previous 0.9 build of the core that doesn't have this issue. The git hash it shows is: 7bbf8e1

Errors on compiling

During compiling with make after cmake configuration I get this error:

 [  1%] Building CXX object CMakeFiles/melonDS.dir/src/SPI.cpp.o
 /usr/bin/c++    -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include  -O3 -DNDEBUG   -pthread -std=gnu++11 -o CMakeFiles/melonDS.dir/src/SPI.cpp.o -c /home/yuta/Documents/melonDS/src/SPI.cpp
 /home/yuta/Documents/melonDS/src/SPI.cpp: In function ‘void SPI_Firmware::Reset()’:
 /home/yuta/Documents/melonDS/src/SPI.cpp:147:10: error: ‘path’ was not declared in this scope
   sprintf(path, "firmware.bin.bak");

MelonDS quits retroarch

If I try to run a game with melonds (release from today) than retroarch is going to close.
Means I cannot run any game with melonds. Tested with windows 10 build

Crash When firmware.bin.bak Not Present; Writes to firmware.bin Cause White Screen

I reported this in another closed issue, but figured I'd open an issue specifically for it, since others are reporting this in the libretro Discord. It seems 7fe9d50 causes crashes during retro_load_game on some Win10 systems. I've tried getting a useful crash log out of it, but one dev mentioned that the makefile might not be setup to add debug symbols when building with DEBUG=1.

Wifi capabilities?

Just wondering the current state of wifi on this branch of melonDS, I know it was not implemented initially. Any eta or is it not planned?

JIT fast memory blocks loading content on Android

melonDS 0.9 5ef2547, Android aarch64 core on RA 1.9.0, Android 11

When melonDS is loaded with option "JIT fast memory" enabled, loading any ROM only yields a blank screen. In RA log it says

=== Build =======================================
Capabilities:  ASIMD
[INFO] Built: Aug 11 2020
[INFO] Version: 1.9.0
[INFO] Git: 6388872
[INFO] =================================================
jni_thread_destruct()
[CORE]: Loading dynamic libretro core from: "/data/user/0/com.retroarch.aarch64/cores/melonds_libretro_android.so"
[Overrides]: Core-specific overrides found at /storage/emulated/0/RetroArch/config/melonDS/melonDS.cfg.
[Overrides]: No content-dir-specific overrides found at /storage/emulated/0/RetroArch/config/melonDS/downloads.cfg.
[Overrides]: No game-specific overrides found at /storage/emulated/0/RetroArch/config/melonDS/Pokémon_Platinum_(C).cfg.
Config: appending config "/storage/emulated/0/RetroArch/config/melonDS/melonDS.cfg"
[Overrides]: Configuration overrides unloaded, original configuration restored.
**[CORE]: No content, starting dummy core.**
[Cheats]: Save game-specific cheatfile: /storage/emulated/0/RetroArch/cheats/melonDS/Pokémon_Platinum_(C).cht
Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[CORE]: Unloading game..
[CORE]: Unloading core..
[CORE]: Unloading core symbols..
[Core Options]: Saved core options file to "/storage/emulated/0/RetroArch/config/melonDS/melonDS.opt"
Threaded video stats: Frames pushed: 965, Frames dropped: 10.
RetroArch 1.9.0 (Git 6388872)

With JIT fast memory disabled, content loads properly.

Seems only happening on Android aarch64 so far - Windows x64 build works fine.

The hybrid displays are extremely bizarre in the melonDS 0.9.1 core

I typically design overlays for personal use on RetroArch, but the actual output is displayed very oddly on the melonDS core. I thought it would be simple to port over my old overlays I have been using for years, but they have had to be changed with both melonDS 0.9 and 0.9.1 and I figure it was important to address this before it became a long term problem

I have taken screenshots to show exactly where the oddities are: https://imgur.com/a/SNdy9Hi

I think the solution should be to just replicate the display options on DeSmuME since they are what most people who have been using RetroArch for DS emulation for years are already used to and existing overlays already work for them.

Not having the spacing adjustable for the top/bottom view too with opengl on is mildly frustrating as well since that also breaks a few standard overlays, but I think tackling the hybrid display option is much more important

[Bounty] [$50] Update melonDS core to latest version + extra features

I'm opening this issue to serve as a general request for updating this core to the latest version (upstream code reached version 0.9 recently and the Windows x64 libretro core is particularly outdated at this point), while also adding a bounty to provide further incentive and take into account the following features in the process:

  • implement some form of Hybrid 3:1 view, similar to what is available on the Desmume core, to take advantage as much as possible of 16:9 AR screens. See #61
  • savestate support. See #66
  • Runahead (single and/or second instance) support for the software renderer. See #45

Hopefully all of the above is realistically feasible! This would definitely make it the ultimate go-to libretro core for DS / DSi titles.

Bounty link: https://www.bountysource.com/issues/92807839-bounty-update-melonds-core-to-latest-version-extra-features

Very low performance with Runahead (both Single Instance and Secondary Instance modes)

I’m opening this issue to collect and investigate reports related to Runahead performance with this core (using the software renderer), which currently appears to be quite low, with huge framerate drops and stuttering anytime this option is active. Here’s a recap of what I am experiencing:

  • Single Instance. Performance is significantly reduced compared to no Runahead.
  • Second Instance. If the core is left running without any inputs, framerate is fine. Upon pressing or mashing any button, framerate drops considerably similar to what happens with Single Instance.

I am not expecting any miracle of course. If it is ultimately clear that this is just a matter of a very high performance requirement and there’s nothing that can be done at all, then it’s fine, but the performance difference experienced here between no Runahead and with Runahead enabled is massive, much higher than most other software cores available right now, so I’m hoping there might be some way to improve the situation.

Content failing to continue because of save-related issue ("could not erase data")

I am experiencing an issue affecting the entirety of the content I have tried so far with this core. Here's what happens:

  • content is loaded at first and video shows correctly;
  • after the initial title screen / splash screen (depending on each content) a save-related error comes up, indicating that the system could not "erase data" and suggesting to reinsert the Game Card;
  • there's no way to make the content actually continue running after this error is shown.

Here's an example of what I am seeing with the European version of New Super Mario Bros.: https://i.imgur.com/acOSZ9M.png

This is happening with all core-options set to their default values and with runahead disabled. I have also tried changing the savefile directory to other paths, but to no avail.

RFE: new screen mode to only show screens with movies when a movie is playing.

This is my 'idea' for a 'no fuss' option for single screen (and thus larger screen) gaming for the DS and 3D.

In most games the secondary screen is just used for a map or a menu (or the 3ds at least, since on the DS it's usually not interactable).

So the idea was:

  1. enable a shortcut to switch between top and bottom screens and only show one.
  2. unless one or two of the screens are playing FMV. If one is playing, put it in fullscreen, if both are playing, put both in fullscreen on their 'natural' order (with the gap optionally).
  3. return to the configuration in 1 after all the videos stop playing.

A alternative to 1. and 2. if the information there is really important and requires user input is to overlay or place on top a smaller version of the secondary screen (on the same modes) for a larger than expected 'main screen', except on FMVs where both would jump to their natural size at monitor resolution for a nondistorted FMV.

Would make the (3)ds games a more traditional 'console experience' for the games where the secondary screen is not important except for video cutscenes.

I have no idea if melonds is HLE enough to recognize movies playing, and this would fail with games using engine cutscenes but that's the idea. The current alternative of just ignoring the secondary screen for the gameplay screen size can cause you to miss cutscenes or required user input easily.

Chrono Trigger DS - Crash right after introduction movie

As reported in the issue title, with the latest version of this core Chrono Trigger DS will lead to a sudden segfault / crash right after the introduction movie plays out, as well as if you skip the intro movie by pressing a button or clicking on the emulated touchscreen. RetroArch will close itself suddenly. This happens regardless of the core options used.

I have yet to perform a bisect, but I am fairly certain that it used to work well not too long ago. I had tested this specific game quite a few times after the core rebase.

Add Screen Switch Hotkey

Desmume maps L3 as a screen switch hotkey. It swaps the positioning of the screens in all layout modes. I find it primarily useful in the single screen modes, so I can easily see map screens and the like when I need to without it always taking up screen space.

[Switch] Trying to go back to the RetroArch menu after ROM boot crashes RetroArch

Downloaded yesterday's (August 11th) nightly of melonDS, and fired it up on my 8.1.0 Switch running Atmosphere with title redirection.

I do have the correct firmware.bin, bios7.bin and bios9.bin files in the system directory.
Managed to boot quite a few games just fine (although slow, but that's expected).

However, when trying to use the button combo to go back to the Quick Menu of RetroArch, the console crashes and throws out an Atmosphere (CFW) error.
This seems to be consistent with any ROM I try to boot.

[Feature Request] Autohide Touchscreen Cursor

The touchscreen cursor in Joystick and Mouse touch modes should hide after a few seconds of not moving. This should make the Off touch mode obsolete too, since I think it's only there to hide the cursor.

[Feature Request] A core option to add gap between screens.

Hey!

I think it would be nice to have a core option to add a gap between screens, as it can look very weird in some game without a gap.

One example is Yoshi's Island, here's what it looks without the gap, it's really obvious if you look at the stairs:

image

and with a gap (set to 64 pixels):

image

And as you can tell from these screenshots, the option already exists in standalone (idk if it necessarily means it would be easier to implement tho :p):

image

Add Touchscreen Cursor Analog Stick Support

Being able to control the touchscreen cursor with the right or left stick is really handy when you don't have a mouse nearby. Desmume has a core option to use either stick and maps R2 to "tap screen".

Feature request: touchscreen support

This would bring the melonDS core closer to feature parity with the Desmume core which already supports touchscreens. Given that many games rely on the touchscreen in one form or another, it should significantly boost the core's usability.

Update Core to v0.9

MelonDS core seems to still be on v0.8.3, v0.9 has been out for a little while now, would like to see some of the improvements added for all platforms that retroarch is avaliable on not just PC.

System/BIOS Settings Aren't Saved

Changes to things in the system menu like Language or User Name aren't being saved/loaded. I see a firmware.bin.bak file is being created in the system folder. Not sure if that's where it's supposed to store them or not.

Linux : Enabling OpenGL causes segfault

Trying to enable openGL on melonds causes the core to segfault. The software renderer runs fine.

The interesting part of the log is as follows:

[ERROR] GL: Invalid enum.
[ERROR] [Video]: Cannot open video driver ... Exiting ...
[ERROR] Fatal error received in: "init_video()"
[ERROR] failed_to_start_audio_driver

I have tried to debug where "invalid enum" is set but unfortunately I cannot seem to build the khronos libraries with debug support so I cannot apply any breakpoints.

I am using Fedora 29 with an Nvidia GTX 1070 on the 430.40 propriatory driver. All other cores and games run fine with openGL on my machine. Further backtrace and full log attached.

Backtrace:

#0  0x00007ffff31ff106 in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
#1  0x00007fffe9e9bb3a in copy_screen(ScreenLayoutData*, unsigned int*, unsigned int) () at /mnt/games/native_emulators/retroarch/cores/melonds_libretro.so
#2  0x00007fffe9e9c014 in retro_run ()
    at /mnt/games/native_emulators/retroarch/cores/melonds_libretro.so
#3  0x0000000000484ee2 in core_run () at retroarch.c:26367
#4  0x0000000000481a0a in runloop_iterate () at retroarch.c:24992
#5  0x000000000045c4f7 in rarch_main (argc=1, argv=0x7fffffffdc58, data=0x0)
    at retroarch.c:6100
#6  0x00000000005da5b5 in main(int, char**) (argc=1, argv=0x7fffffffdc58)
    at ui/drivers/qt/ui_qt_application.cpp:150

Full Terminal Output

[INFO] RetroArch 1.7.8 (Git 7ebeb6b572)
[INFO] === Build =======================================
[INFO] CPU Model Name: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
[INFO] Capabilities: MMX MMXEXT SSE1 SSE2 SSE3 SSSE3 SSE4 SSE4.2 AVX AVX2 AES 
[INFO] Built: Aug 26 2019
[INFO] Version: 1.7.8
[INFO] Git: 7ebeb6b572
[INFO] =================================================
[INFO] Environ SET_PIXEL_FORMAT: RGB565.
[INFO] Redirecting save file to "/home/toxicshadow/.config/retroarch/saves/.srm".
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 30000.00 Hz.
[INFO] [Video]: Video @ 960x720
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [GLX]: GLX_EXT_swap_control_tear supported.
[INFO] [GL]: Found GL context: x
[INFO] [GL]: Detecting screen resolution 3840x1880.
[INFO] [GLX]: Window manager is KWin.
[INFO] [GLX]: X = 0, Y = 0, W = 960, H = 720.
[INFO] [GLX]: Found swap function: glXSwapIntervalEXT.
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [GL]: Vendor: NVIDIA Corporation, Renderer: GeForce GTX 1070/PCIe/SSE2.
[INFO] [GL]: Version: 4.6.0 NVIDIA 430.40.
[INFO] [GL]: Using resolution 960x720
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Setting up menu pipeline shaders for XMB ... 
[INFO] [GLSL]: Compiling ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling simple ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling modern snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling bokeh shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snowflake shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Joypad]: Found joypad driver: "sdl2".
[INFO] [Font]: Using font rendering backend: bitmap.
[INFO] [X11]: Suspending screensaver (X11, xdg-screensaver).
[INFO] [Video]: Found display server: x11
[INFO] [PulseAudio]: Requested 24576 bytes buffer, got 18432.
[INFO] [Menu]: Found menu display driver: "gl".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Menu]: Found menu display driver: "gl".
[CDROM] Could not open /dev/sg4, please check permissions.
[CDROM] Could not open /dev/sg3, please check permissions.
[CDROM] Could not open /dev/sg2, please check permissions.
[CDROM] Could not open /dev/sg1, please check permissions.
[CDROM] Could not open /dev/sg0, please check permissions.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[WARN] [XMB] Asset missing: /home/toxicshadow/.config/retroarch/assets/xmb/monochrome/png/disc.png
[INFO] [LED]: LED driver = 'null' 0x113e400
[INFO] [MIDI]: Initializing ...
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "alsa" driver.
[INFO] Disconnecting device from port 2.
[INFO] Disconnecting device from port 3.
[INFO] Disconnecting device from port 4.
[INFO] SRAM will not be saved.
[INFO] Loading history file: [/home/toxicshadow/.config/retroarch/content_history.lpl].
[INFO] Loading history file: [/home/toxicshadow/.config/retroarch/content_music_history.lpl].
[INFO] Loading history file: [/home/toxicshadow/.config/retroarch/content_video_history.lpl].
[INFO] Loading history file: [/home/toxicshadow/.config/retroarch/content_image_history.lpl].
[INFO] Loading favorites file: [/home/toxicshadow/.config/retroarch/content_favorites.lpl].
[INFO] [GL]: VSync => on
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [GL]: VSync => on
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [PulseAudio]: Pausing.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] This core is compatible with the current video driver.
[INFO] Using content: /mnt/nas_games/emulators/roms/nds/super_mario_64_ds_u.nds.
[INFO] arg #0: retroarch
[INFO] arg #1: /mnt/nas_games/emulators/roms/nds/super_mario_64_ds_u.nds
[INFO] arg #2: -s
[INFO] arg #3: /home/toxicshadow/.config/retroarch/saves
[INFO] arg #4: -c
[INFO] arg #5: /home/toxicshadow/.config/retroarch/retroarch.cfg
[INFO] arg #6: -L
[INFO] arg #7: /mnt/games/native_emulators/retroarch/cores/melonds_libretro.so
[INFO] arg #8: -v
[INFO] Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] Unloading game..
[INFO] Unloading core..
[INFO] Unloading core symbols..
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 3.
[INFO] [XINERAMA]: Saved monitor #0.
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
[INFO] Set config file to : /home/toxicshadow/.config/retroarch/retroarch.cfg
[INFO] RetroArch 1.7.8 (Git 7ebeb6b572)
[INFO] Redirecting save file to "/home/toxicshadow/.config/retroarch/saves/super_mario_64_ds_u.srm".
[INFO] Redirecting savestate to "/mnt/nas_games/emulators/roms/nds/super_mario_64_ds_u.state".
[INFO] === Build =======================================
[INFO] CPU Model Name: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
[INFO] Capabilities: MMX MMXEXT SSE1 SSE2 SSE3 SSSE3 SSE4 SSE4.2 AVX AVX2 AES 
[INFO] Built: Aug 26 2019
[INFO] Version: 1.7.8
[INFO] Git: 7ebeb6b572
[INFO] =================================================
[INFO] Loading dynamic libretro core from: "/mnt/games/native_emulators/retroarch/cores/melonds_libretro.so"
[INFO] [Overrides] no core-specific overrides found at /home/toxicshadow/.config/retroarch/config/melonDS/melonDS.cfg.
[INFO] [Overrides] no content-dir-specific overrides found at /home/toxicshadow/.config/retroarch/config/melonDS/nds.cfg.
[INFO] [Overrides] no game-specific overrides found at /home/toxicshadow/.config/retroarch/config/melonDS/super_mario_64_ds_u.cfg.
[INFO] Environ SET_VARIABLES.
[INFO] Environ GET_LOG_INTERFACE.
[INFO] Environ SET_CONTROLLER_INFO.
[INFO] Core requested VFS version >= v1, providing v3
[INFO] [Remaps]: remap directory: /home/toxicshadow/.config/retroarch/config/remaps
[INFO] Redirecting save file to "/home/toxicshadow/.config/retroarch/saves/super_mario_64_ds_u.srm".
[INFO] Redirecting savestate to "/mnt/nas_games/emulators/roms/nds/super_mario_64_ds_u.state".
[INFO] Environ SYSTEM_DIRECTORY: "/home/toxicshadow/.config/retroarch/system".
[INFO] Content loading skipped. Implementation will load it on its own.
[INFO] Environ SET_INPUT_DESCRIPTORS:
[INFO] Environ SET_PIXEL_FORMAT: XRGB8888.
[INFO] Environ SET_HW_RENDER.
[INFO] Requesting OpenGL context.
ARM9 BIOS loaded
ARM7 BIOS loaded
MAC: 00:09:BF:8C:9E:FD
FW: WIFI CRC16 = GOOD
FW: AP1 CRC16 = GOOD
FW: AP2 CRC16 = GOOD
FW: AP3 CRC16 = GOOD
FW: USER0 CRC16 = GOOD
FW: USER1 CRC16 = GOOD
Game code: ASME
ROM CRC32: E6321562
chk_size=3387, key=4A4B4A43, wanted=454D5341, offset=00000000
chk_size=1693, key=45545041, wanted=454D5341, offset=00000000
chk_size=846, key=45454359, wanted=454D5341, offset=00000000
chk_size=423, key=454D4343, wanted=454D5341, offset=000034E0
chk_size=211, key=45514759, wanted=454D5341, offset=00004F50
chk_size=105, key=454F4641, wanted=454D5341, offset=00004F50
chk_size=52, key=454E4543, wanted=454D5341, offset=00004F50
chk_size=26, key=454D5259, wanted=454D5341, offset=00004F50
chk_size=13, key=454E3542, wanted=454D5341, offset=000050F0
chk_size=6, key=454D5741, wanted=454D5341, offset=000050F0
chk_size=3, key=454D5459, wanted=454D5341, offset=000050F0
chk_size=1, key=454D5341, wanted=454D5341, offset=000050F0
ROM entry: 01000000 00000002 00000000
Cart ID: 00000FC2
ARM9: offset=00004000 entry=02004800 RAM=02004000 size=000580AC
ARM7: offset=001B0000 entry=02380000 RAM=02380000 size=00024B64
CP15Control = 00052078 (00002078->00052000)
Re-encrypting cart secure area
Save file: /home/toxicshadow/.config/retroarch/saves/super_mario_64_ds_u.sav
[INFO] Skipping SRAM load..
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 32823.63 Hz.
[INFO] [Video]: Video @ 6144x2304
[INFO] [Video]: Using HW render, OpenGL driver forced.
[INFO] [Video]: Using configured "gl" driver for GL HW render.
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [RCHEEVOS]: testing NES (discards header)
[INFO] [RCHEEVOS]: testing Generic (plain content)
[INFO] [GLX]: GLX_EXT_swap_control_tear supported.
[INFO] [GL]: Found GL context: x
[INFO] [GL]: Detecting screen resolution 3840x1880.
[INFO] [GLX]: Window manager is KWin.
[INFO] [GLX]: X = 0, Y = 0, W = 6144, H = 2304.
[INFO] [GLX]: Creating context for requested version 3.3.
[INFO] [RCHEEVOS]: got game id 0
[INFO] [RCHEEVOS]: testing Generic (filename)
[INFO] [RCHEEVOS]: got game id 0
[INFO] [RCHEEVOS]: this game doesn't feature achievements
[INFO] [RCHEEVOS]: Load task finished
[INFO] [GLX]: Not running Mesa, trying higher versions...
[INFO] [GLX]: Creating context for version 4.6.
[INFO] [GLX]: Found swap function: glXSwapIntervalEXT.
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [GL]: Vendor: NVIDIA Corporation, Renderer: GeForce GTX 1070/PCIe/SSE2.
[INFO] [GL]: Version: 4.6.0 NVIDIA 430.40.
[INFO] [GL]: Using resolution 1280x735
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Setting up menu pipeline shaders for XMB ... 
[INFO] [GLSL]: Compiling ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling simple ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling modern snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling bokeh shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snowflake shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [Joypad]: Found joypad driver: "sdl2".
[INFO] [Font]: Using font rendering backend: bitmap.
[ERROR] GL: Invalid enum.
[ERROR] [Video]: Cannot open video driver ... Exiting ...
[ERROR] Fatal error received in: "init_video()"
[ERROR] failed_to_start_audio_driver
CP15Control = 00002078 (00052078->00002000)
PU: region 0 = 04000033 : enabled, 04000000-08000000
PU: region 1 = 0200002B : enabled, 02000000-02400000
PU: region 2 = 027C0023 : enabled, 027C0000-02800000
PU: region 3 = 08000035 : enabled, 08000000-10000000
PU: region 4 = 023C001B : enabled, 023C0000-023C4000
PU: region 5 = 0100002F : enabled, 01000000-02000000
PU: region 6 = FFFF001D : enabled, FFFF0000-FFFF8000
PU: region 7 = 027FF017 : enabled, 027FF000-02800000
PU: CodeCacheable=00000042
PU: DataCacheable=00000042
PU: DataCacheWrite=00000002
PU: CodeRW=05100011
PU: DataRW=15111011
CP15Control = 0005707D (00002078->00057005)
PU region 0: 04000000-08000000, user=00 priv=07
PU region 1: 02000000-02400000, user=70 priv=77
PU region 2: 027C0000-02800000, user=00 priv=00
PU region 3: 08000000-10000000, user=00 priv=03
PU region 4: 023C0000-023C4000, user=00 priv=03
PU region 5: 01000000-02000000, user=00 priv=07
PU region 6: FFFF0000-FFFF8000, user=50 priv=55
PU region 7: 027FF000-02800000, user=00 priv=03
Segmentation fault (core dumped)

Savestates not working on the core.

Just as mentioned (for Theresia, didn't check other games).
The files get created, but when trying to load them

savestate: bad length 6525900
savestate: VERY BAD!!!!!! EVENT FUNCTION POINTER ID 12 IS OUT OF RANGE. HAX?????

Touchscreen Cursor Doesn't Appear in "Top Only" Screen Layout

Some games use the top screen as the main screen, so I have them set as Top Only, but for some reason that mode always acts as if Touch mode is off. I'd like to be able to use the screen switch button to glance at the bottom screen and use touch screen functions with the analog stick.

Saving Changes in Firmware Causes White Screen Freeze

Steps to reproduce:

  1. Go into the firmware settings (DS icon at the bottom of the screen).
  2. Change the language setting to something different.
  3. Let the emulated DS reboot (will get stuck on a black screen).
  4. Close and reopen RetroArch.
  5. When loading content again, melonDS will get stuck on a white screen.
  6. Restoring the firmware.bin file from backup fixes it.

The fix for the .bak file not being present didn't fix this.

Feature: Add support for side by side view.

Desmume offers a side by side option for the displays (rather than top to bottom) and this works very well in widescreen monitors.

I realise this might not be possible if upstream doesn't support it but worth a mention incase it can be added in the future.

Add Microphone Noise Hotkey

This is useful for games that have a "blow in the mic" function, like the Ace Attorney series or the underwater sections of Super Princess Peach. Desmume maps this to L3. Mario and Luigi: Bowser's Inside Story has a "Mic Test" option on it's title screen that makes it easy to test.

Use Libretro logging

It doesn't seem to use libretro's logging for the melonDS text like "unknown CP15 write op 640 027E001B".

libslirp support

The core is missing libslirp so currently you can't use online wifi with games/homebrew.

How to compile for iOS

I tried to compile the core for iOS by running
make platform=ios-arm64, make platform=ios9 and make platform=ios

It generates a .dylib file, but after compiling retroarch and the generated core with Xcode, it doesn’t work.

An older MelonDS core I found somewhere else works.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.