MonoNX - an experimental Nintendo Switch emulator for Android

Screenshot_20190215-002811_MonoNX.png

Hello there, I've been working on this for a few days and I thought I'd finally show it off!

Please note that there is absolutely no graphics, only console output! Also, it's not very fast (only runs at 15fps on a SD625) and it only runs old homebrew (e.g. first libtransistor tests and such).

Discord support: https://discord.gg/fn8VV9T
Source code: https://github.com/Cyuubi/MonoNX

Credits:
Ryujinx Team - For the base of MonoNX, without them this would not be possible! Show them some love over at their GitHub (https://github.com/Ryujinx/Ryujinx).
Xamarin - For allowing us C# developers to program on Android.
Dr.Hacknik - Logo design.

Requirements:
An ARM64 or 64-bit x86 processor

Play Store download: https://play.google.com/store/apps/details?id=com.cyuubiapps.mononx
Alternative APK downloads: https://github.com/Cyuubi/MonoNX/releases
Test ROM download: https://drive.google.com/open?id=1cVa5BDn1w6FNb6QEKmch2m6k67t_q5c_
 

Attachments

  • Screenshot_20190215-002811_MonoNX.png
    Screenshot_20190215-002811_MonoNX.png
    189.7 KB · Views: 300
Last edited by ItsKaitlyn03,

Rokutiz

Member
Newcomer
Joined
Jul 25, 2018
Messages
10
Trophies
0
Age
23
XP
111
Country
Lithuania
Still
Never mind what I said, found the issue. Please load your ROM from root of storage, don't use the crappy documents/downloads shortcut. It will break things.
Still get a crash, i checked permissions, it only asks to read contents from sd card but doesnt from internal storage. Maybe thats whats wrong. If not im pepega
 

ZachyCatGames

Well-Known Member
Member
Joined
Jun 19, 2018
Messages
3,398
Trophies
1
Location
Hell
XP
4,209
Country
United States
What you are doing is pointless. You aren't going to successfully emulate the switch on arm hardware. Instead, people should be trying to find a way to run horizon natively
Yea no. That would never work. The closest we'll probably ever get is maybe running horizon on a Jetson TX1 or something

A hypervisor is for security, it's to prevent overflows and access escalation.

I think you are thinking more of an interpreter or virtual machine, and if so.... why are they impossible on Android?
They can also be used for VMs and that kind of shit (SciresM will also be using one for his emunand implementation)
 
Last edited by ZachyCatGames,

kromara

Member
Newcomer
Joined
Nov 25, 2012
Messages
9
Trophies
0
XP
384
Country
United States
I've read your replies, @ctrninja, but just figured I'd drop in to report error here as well on Pixel 2XL and Pixel 3XL. Cannot access the file in any location, including root storage. Also ensured to enable storage access. I also have a few other Google phones, including Nexus 5 and Nexus 6P, but also a OnePlus 5. Feel free to message me for requests on testing it on any of my devices.
 

KyleHyde

Well-Known Member
Member
Joined
Dec 10, 2018
Messages
195
Trophies
0
Age
31
XP
451
Country
Puerto Rico
This seems rather interesting.
It's been a while since I've seen someone attempt to make a brand new emulator for Android.
I wish you good luck on your project.
 
  • Like
Reactions: grey72

nl255

Well-Known Member
Member
Joined
Apr 9, 2004
Messages
3,000
Trophies
2
XP
2,791
Country
Hypervisors on Android are nearly impossible.

You mean like hypervisors capable of running unmodified versions of Windows/Linux/etc on an old Pentium 2/3 despite the lack of hardware virtualization support? Or even on the Nintendo DS which doesn't even have a MMU? It is either that or try taking the same approach that UltraHLE did and make native Android versions of the Switch SDK libraries via clean room reverse engineering. Here is what I found on software only virtualization on hardware that doesn't support it using a combination of binary translation/code scanning and shadow page tables though note that it is x86 specific and will have to be adapted.

https://en.wikipedia.org/wiki/X86_virtualization#Software-based_virtualization

In any case, good luck.

--------------------- MERGED ---------------------------

A hypervisor is for security, it's to prevent overflows and access escalation.

I think you are thinking more of an interpreter or virtual machine, and if so.... why are they impossible on Android?

A hypervisor and a virtual machine monitor are pretty much the same thing and it is quite possible to do them even on hardware that doesn't support virtualization (the ds doesn't even have a mmu yet gbarunner2 exists) though it is slower and can have compatibility issues.
 
Last edited by nl255,

Tumoche

Well-Known Member
Member
Joined
Apr 30, 2017
Messages
186
Trophies
0
XP
1,254
Country
Spain
That's just not true. The switch uses the same hardware as the nvidia shield, and that hardware is just old. The cpu on it is outclassed completely, and iirc the gpu is surpassed by newer phone gpus. That's comparing the Nvidia shield to phones. The switch cpu and gpu is underclocked a good amount, especially in handheld mode. Really the only thing the switch has going for it is the active cooling with a fan, and optimization since it's uniform hardware.
The cpu in the switch is several generations old, but the gpu is still better. Why? Because android gpu drivers are trash.
 

Essasetic

General Spectator
Member
Joined
Jun 16, 2018
Messages
1,573
Trophies
1
XP
3,304
Country
United Kingdom
Wish you the best of luck with this. The switch is a current gen system so it probably wouldn't be 3-4 years of smartphone development until we can get decent fps. Honestly. I think the first thing the emulator should be able to run is the Horizon homescreen. (Because that's about all current gen phones can handle right now lol)

--------------------- MERGED ---------------------------

The cpu in the switch is several generations old, but the gpu is still better. Why? Because android gpu drivers are trash.
Depends on the phone. Samsung Exynos GPU drivers are absolute trash and is the main reason why Dolphin runs so slow on it. (Also the CPU has crap documentation). Compare that to a OnePlus 6T (for example) and it's probably the best device (outside of Android TV) that can run dolphin. So with Android it's a mixed bag.

--------------------- MERGED ---------------------------

Also the switch is just an underclocked Nvidia Shield Android TV. And the Tegra X1 is still decently powerful for a mobile processor. So it'll be a while before we can emulate it.
 

Tumoche

Well-Known Member
Member
Joined
Apr 30, 2017
Messages
186
Trophies
0
XP
1,254
Country
Spain
Wish you the best of luck with this. The switch is a current gen system so it probably wouldn't be 3-4 years of smartphone development until we can get decent fps. Honestly. I think the first thing the emulator should be able to run is the Horizon homescreen. (Because that's about all current gen phones can handle right now lol)

--------------------- MERGED ---------------------------


Depends on the phone. Samsung Exynos GPU drivers are absolute trash and is the main reason why Dolphin runs so slow on it. (Also the CPU has crap documentation). Compare that to a OnePlus 6T (for example) and it's probably the best device (outside of Android TV) that can run dolphin. So with Android it's a mixed bag.

--------------------- MERGED ---------------------------

Also the switch is just an underclocked Nvidia Shield Android TV. And the Tegra X1 is still decently powerful for a mobile processor. So it'll be a while before we can emulate it.
It runs well on the 6T because you disabled Store EFB Copies to RAM and another similar setting.
Nvidia drivers dont have this issue. (My Mi MIX 2S also runs dolphin decently with that turned off)
 

Essasetic

General Spectator
Member
Joined
Jun 16, 2018
Messages
1,573
Trophies
1
XP
3,304
Country
United Kingdom
It runs well on the 6T because you disabled Store EFB Copies to RAM and another similar setting.
Nvidia drivers dont have this issue. (My Mi MIX 2S also runs dolphin decently with that turned off)
There's also the fact that Exynos does not support ARB_Buffer_Storage in its drivers. Which is critical for Dolphins performance. Also thermal throttling and the JIT being less refined. The 6T is just better overall.
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
45
Location
Engine room, learning
XP
15,649
Country
France
Don't worry about people saying it's useless because they can't play games.
it emulates another device's functionalities, it is an emulator. it doesn't have to be playable. it feels like first release of CPS3RPCS3, it wasn't playable, but it emulated the cpus at very low frequencies, that was enough for a start.

Like said before, people should start somewhere !

Good luck on your project, I hope it'll keep improving.
don't forget to submit it to this month's bounty :)
 
Last edited by Cyan,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    OctoAori20 @ OctoAori20: Nice nice-