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: 299
Last edited by ItsKaitlyn03,

Essasetic

General Spectator
Member
Joined
Jun 16, 2018
Messages
1,573
Trophies
1
XP
3,304
Country
United Kingdom
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 CPS3, 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 :)
Some emulators just start out as learning the device and reverse engineering it. Xenia (for example) started out because one guy wanted to learn how the Xbox 360 worked.
 
  • Like
Reactions: Cyan

Dr.Hacknik

Ashley | Developer | Trans
Member
Joined
Mar 26, 2014
Messages
1,773
Trophies
1
Age
24
Location
inside your fridge
Website
dochacknik.keybase.pub
XP
2,219
Country
United States
Error on load. Running on Huawei Ascend XT², Android 8.0. Running provided test ROM.

System has 2GB RAM.

View attachment 158021

Place the ROM on the root of your storage (root/media) then run it. Do not place it within a documents or any other folder.
This just seems to cause issues with the loader not liking the directory paths.

It's also recommended that you use a device with 4GB of RAM or greater. Not one with 2GB of RAM.
 

MK73DS

Non-commutative algebra
Member
Joined
Feb 23, 2015
Messages
575
Trophies
0
Age
25
Location
France
Website
www.youtube.com
XP
1,536
Country
France
It doesn't want to load the ROM for me too, I have a Samsung Galaxy Note 9 running Android 9.0
Screenshot_20190216-210537_Package installer.jpg Screenshot_20190216-210555_MonoNX.jpg

EDIT : I'm curious, because the Switch's hardware is very similar the the Smartphone's one, will emulation take benefit from that fact ? Or do I totally not understand how emulation works ?
Thanks :)
 
Last edited by MK73DS,

Techjunky90

Well-Known Member
Member
Joined
Apr 7, 2017
Messages
487
Trophies
0
Age
33
XP
882
Country
United States
It doesn't want to load the ROM for me too, I have a Samsung Galaxy Note 9 running Android 9.0
View attachment 158030 View attachment 158031

EDIT : I'm curious, because the Switch's hardware is very similar the the Smartphone's one, will emulation take benefit from that fact ? Or do I totally not understand how emulation works ?
Thanks :)
Emulation will not take benefit from that. Switch emulation on arm hardware will never be more than a proof of concept. The only way to play switch games on arm hardware is a Switch or making the switch software run natively.
 
  • Like
Reactions: MK73DS

Dr.Hacknik

Ashley | Developer | Trans
Member
Joined
Mar 26, 2014
Messages
1,773
Trophies
1
Age
24
Location
inside your fridge
Website
dochacknik.keybase.pub
XP
2,219
Country
United States
EDIT : I'm curious, because the Switch's hardware is very similar the the Smartphone's one, will emulation take benefit from that fact ? Or do I totally not understand how emulation works ?
Thanks :)
Ryujinx and Yuzu have to convert/translate a ton of CPU instructions from ARM64 to x64. So having to translate any CPU instructions isn't necessary and would only slow down emulation. Since you're using thesame CPU Arch. The only thing you really need to focus on is getting System Services working from the firmware; and emulating GPU instructions here and there. Most of all that is handled by OpenGL or in this case OpenGL ES; which is the mobile variant. So yeah, think of this project as a waaaay more LLE type of Emulation standpoint, since you're not needing to worry too much about HLE since you don't need to emulate a ton of hardware, but mostly firmware services.
 
Last edited by Dr.Hacknik,
  • Like
Reactions: MK73DS and Cyan

Wolfy

Person That Never Was
Member
Joined
Aug 18, 2015
Messages
1,131
Trophies
0
Age
25
Location
Somewhere In The Aether...
XP
3,002
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

Honestly, damn. Trying to put down someone whose willing to try something, even if it's thought to be an impossible task. Aren't you the slightest bit curious how far they can take it?

Don't be a jerk, instead encourage those who are willing to pursue any challenge.
 

Techjunky90

Well-Known Member
Member
Joined
Apr 7, 2017
Messages
487
Trophies
0
Age
33
XP
882
Country
United States
Honestly, damn. Trying to put down someone whose willing to try something, even if it's thought to be an impossible task. Aren't you the slightest bit curious how far they can take it?

Don't be a jerk, instead encourage those who are willing to pursue any challenge.
It's not thought to be an impossible task, it is known to be an impossible task. It's not called being a jerk, it's called facing the facts. Oh let's go emulate a ps4 on a low end pc, nope, not going to happen. Why? The hardware doing the emulation needs to be more powerful than the hardware it's emulating. Does not matter if it runs on the same architecture or not. If the hardware isn't powerful enough (arm chipset is not) then proper emulation can NOT happen. Instead of wasting time trying to make a proof of concept emulator, it's better to spend that time trying to figure out how to run Nintendo's operating system and software natively.
 

Essasetic

General Spectator
Member
Joined
Jun 16, 2018
Messages
1,573
Trophies
1
XP
3,304
Country
United Kingdom
It's not thought to be an impossible task, it is known to be an impossible task. It's not called being a jerk, it's called facing the facts. Oh let's go emulate a ps4 on a low end pc, nope, not going to happen. Why? The hardware doing the emulation needs to be more powerful than the hardware it's emulating. Does not matter if it runs on the same architecture or not. If the hardware isn't powerful enough (arm chipset is not) then proper emulation can NOT happen. Instead of wasting time trying to make a proof of concept emulator, it's better to spend that time trying to figure out how to run Nintendo's operating system and software natively.
Let's completely ignore the fact that mobile hardware evolves over time and in 3-4 years have sufficient power to emulate the switch. And also that's what Ryujinx is doing. Stop pissing on people's work because you don't believe it'll go anywhere.
 

smf

Well-Known Member
Member
Joined
Feb 23, 2009
Messages
6,641
Trophies
2
XP
5,857
Country
United Kingdom
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

The problem is every phone is different, and horizon wants switch hardware. You could patch horizon, but you'd be doing it for every phone.

The hardware doing the emulation needs to be more powerful than the hardware it's emulating. Does not matter if it runs on the same architecture or not. If the hardware isn't powerful enough (arm chipset is not) then proper emulation can NOT happen.

The closer the architecture, the more tricks you can pull. If you wrote shims for all the switch os calls to map to android and could make the game code run natively then you might get away with it. GPU shaders will probably be a pain if they're precompiled for the switch (which I assume they are).

However I suspect that android and the switch use the same mechanism for syscalls and so you'll need to resolve that, with something like an arm to arm recompiler (most instructions are copied 1:1, only the ones that need changing are patched). Exceptions will probably be a headache as well.

You could probably be fine even if the cpu in the phone wasn't as quick as the switch, some games would be fine, some would skip frames and some would crash.

Probably my first step would be to port Yuzu to android/arm.
 
Last edited by smf,

Essasetic

General Spectator
Member
Joined
Jun 16, 2018
Messages
1,573
Trophies
1
XP
3,304
Country
United Kingdom
The problem is every phone is different, and horizon wants switch hardware. You could patch horizon, but you'd be doing it for every phone.



The closer the architecture, the more tricks you can pull. If you wrote shims for all the switch os calls to map to android and could make the game code run natively then you might get away with it. GPU shaders will probably be a pain if they're precompiled for the switch (which I assume they are).

However I suspect that android and the switch use the same mechanism for syscalls and so you'll need to resolve that, with something like an arm to arm recompiler (most instructions are copied 1:1, only the ones that need changing are patched). Exceptions will probably be a headache as well.

You could probably be fine even if the cpu in the phone wasn't as quick as the switch, some games would be fine, some would skip frames and some would crash.

Probably my first step would be to port Yuzu to android/arm.
Let's keep in mind this only happened because of Ryujinx's developments and documentation. Yuzu won't happen for a VERY long time.
 
D

Deleted User

Guest
why do people make emulators for android? they cannot run at their full potentisl. even some pcs can barely emulate the wii u, still no cellphone can emulate the 3ds
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Bunjolio @ Bunjolio: a