I wanted to build my own emulator mainly for the challenge and to understand how the system worked. It was also a great way to improve my coding skills. I achieved a key goal when NxEmu managed to boot a commercial game, but after that, I didn’t do much more with it as life got in the way.
Even though I put the project on hold, I’ve thought about it off and on and have always wanted to take it further, ideally to the point where it’s good enough for someone to enjoyably play games on it.
With Yuzu and Ryujinx being taken down, I’ve been thinking more about the legal side of switch emulation. As I understand it, emulation itself is legal, but the main issue was the DMCA 1201 and how they handled decryption. If they hadn’t included decryption, they would probably still be in active development today.
With this in mind, I’ve considered leveraging what I’ve learned and understood from my experience by modularizing the safe and legal components from Yuzu, such as the CPU, OS, and video. The goal is to create a proof of concept that modularizes these parts of the emulator and combines them to run a demo.
As I’ve been working on my emulator, I’ve kept in mind the principle behind Chesterton’s Fence, which suggests you should understand the purpose of something before you change it. Given the significant changes I’ve already made to ensure each part fits, I’ve decided to defer any changes that can wait. This is to ensure the system remains stable before I introduce more modifications.
This project is not just another fork. While I am leveraging code from Yuzu, I am selectively integrating parts of the souce code one at a time. This approach not only allows me to gain a deeper understanding of each component but also ensures I can effectively work with it and avoid problematic elements like decryption. However, the downside of not simply forking is that I don’t inherit everything automatically. I need to add each part bit by bit. This does mean a lot of functionality will be missing initially as I gradually rebuild what was available in Yuzu at the time it was discontinued. Therefore, achieving feature parity with Yuzu is going to take a while.
Initial Version (0.1.0.59-17dfe18)
The initial version i have working and is running the 2048 demo rom.
Download Links:
- Emulator: NxEmu.0.1.0.59-17dfe18.zip
- 2048 ROM: 2048.nro
- Source Code: View on GitHub
Controls:
- Arrow Keys: Move up, down, left, right
- X: Acts as the B button
Development Note:
The project is built using Visual Studio, instead of the make system. i know when i get the software compatable on windows and want to look at say android at that point i will need to get the make file system working again.
Whats next
The next major goal is to get the emulator to be able to run a single pre-decrypted Switch game as well as a new UI to allow configuration.