NoiES for Switch (NES Emu)

NoiES for Switch

I present to you my own original NES emulator for the Switch, NoiES! This entire emulator was written from scratch by me. I started this project just to teach myself about how emulators are made so that I can work on larger projects in the future, but it went farther than I originally expected and is now pretty much a full-fledged emulator, apart from some minor inaccuracies and some missing mappers.

But there are already other NES emulators for the Switch, why use this one?
Well, no reason in particular. As I said before, this was more a learning experience for me, but I ported it to the Switch for the homebrew bounty and I might as well release it. I suppose the biggest advantage I can offer is that since I developed the entire emulator core myself I am very familiar with it and can easily dive in to fix bugs and add new features.

Minor inaccuracies?
Yes, well, aside from the missing mappers, it's mainly the audio stuff that needs work done. Most importantly the DMC audio channel, which isn't implemented at all. There are also a few minor inaccuracies in other places that shouldn't affect most things.

Mappers?
Right. Every ROM has a mapper; it's basically what loads different portions of the ROM memory into the CPU memory for execution. I've implemented the most popular mappers as well as a few others, which should cover a large portion of the NES library. If you have any particular games you want to play that aren't supported, tell me the mapper number (the emulator will tell you which one it is if it isn't supported) so I can place higher priority on implementing it.

Screenshots
2019050519035900-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019050519040400-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019050519043500-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019040117475600-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019040117495500-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019040117523000-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019040117541800-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019040117574000-39044917CFF4239A6A8855A4FBFD24A3.jpg 2019040716355600-39044917CFF4239A6A8855A4FBFD24A3.jpg2019050519045800-39044917CFF4239A6A8855A4FBFD24A3.jpg

Downloads
If you're interested, you can find downloads on GitHub and on the GBAtemp download center. Source code is also available on GitHub, as well as a Linux build if you're into that. Hopefully someone finds some use for this, I at least learned a lot from making it!
 
Last edited by Hydr8gon,
D

Deleted User

Guest
NoiES for Switch

I present to you my own original NES emulator for the Switch, NoiES! This entire emulator was written from scratch by me. I started this project just to teach myself about how emulators are made so that I can work on larger projects in the future, but it went farther than I originally expected and is now pretty much a full-fledged emulator, apart from some minor inaccuracies and some missing mappers.

But there are already other NES emulators for the Switch, why use this one?
Well, no reason in particular. As I said before, this was more a learning experience for me, but I ported it to the Switch for the homebrew bounty and I might as well release it. I suppose the biggest advantage I can offer is that since I developed the entire emulator core myself I am very familiar with it and can easily dive in to fix bugs and add new features.

Minor inaccuracies?
Yes, well, I've yet to test my CPU timing for cycle accuracy so no promises there. There are also some minor timing issues with the PPU, particularly with the MMC3 IRQ counter, which can be seen in the slight vibration of the status bar in Kirby's Adventure. Another odd bug I found is that I can't seem to navigate the items menu in The Legend of Zelda. Oh, and the audio system is still kind of a work in progress, so you might notice crackles (especially in docked mode!), missing sounds, or things that sound slightly off. (Wow, doing a great job selling it here)

Mappers?
Right. Every ROM has a mapper; it's basically what loads different portions of the ROM memory into the CPU memory for execution. I've implemented mappers 1 through 4, which should cover a large portion of the NES library. If you have any particular games you want to play that aren't supported, tell me the mapper number (the emulator will tell you which one it is if it isn't supported) so I can place higher priority on implementing it.

Screenshots
View attachment 162588 View attachment 162589 View attachment 162590 View attachment 162591 View attachment 162592 View attachment 162593 View attachment 162594 View attachment 162595 View attachment 162596

Downloads
If you're interested, you can find downloads on GitHub and on the GBAtemp download center. Source code is also available on GitHub, as well as a Linux build if you're into that. Hopefully someone finds some use for this, I at least learned a lot from making it!
Thanks for releasing this!!!!! Good job.
 

fst312

Well-Known Member
Member
Joined
Nov 4, 2008
Messages
1,176
Trophies
1
Age
35
Location
New York
XP
2,983
Country
United States
Finally tested the emulator today with adventure island and it works great.
Is there a possibility of making an nsp forwarder for this. I really like stand alone emulators. If possible is there a way to make the emulator remember the nes folder when loaded.
 

ZeroX504

Member
Newcomer
Joined
Dec 2, 2016
Messages
24
Trophies
0
Age
43
XP
180
Country
United States
First of all, nice job buddy and thanks for the contribution!
I was wondering if you could tell us a few things about how did you get started in emulation and maybe provide us with some tips...thank you in advance.
 

Hydr8gon

Dragon Trainer
OP
Developer
Joined
Dec 15, 2014
Messages
316
Trophies
1
Website
hydr8gon.github.io
XP
2,580
Country
Canada
How is MelonDS coming?
Hardware renderer is in the planning stages, stay tuned! Any updates on that will be in the melonDS Switch thread or on the melonDS blog.

Finally tested the emulator today with adventure island and it works great.
Is there a possibility of making an nsp forwarder for this. I really like stand alone emulators. If possible is there a way to make the emulator remember the nes folder when loaded.
@OkazakiTheOtaku made a forwarder for melonDS, I'm sure they or someone else could do the same for this project. I don't do NSPs personally, I do like to play Smash online occasionally :P
Remembering the folder... I totally forgot to do that! I have that feature in melonDS Switch. Hopefully I'll remember to add it in the next release. I'll probably have to do some config reworking behind the scenes to do per-platform settings (since there's a barebones Linux version as well).

I do like the way it looks like the switch's system UI, but I think it should have an option to Not show the ".nes" part at the end of the rom name.
Request noted, I'll consider it for the future. Only problem right now is there would be no way to differentiate folders from files! I'd like to add some basic icons for the next release though.

First of all, nice job buddy and thanks for the contribution!
I was wondering if you could tell us a few things about how did you get started in emulation and maybe provide us with some tips...thank you in advance.
If you're interested in learning yourself, start by looking into making a CHIP-8 emulator. It's super simple, only 30 or so CPU instructions and a basic display where pixels can only be either on or off. My attempt is on GitHub, though it might have some flaws because I moved on fairly quickly. There are some guides out there to get you started (Google "how to write a CHIP-8 emulator") and the CHIP-8 Wikipedia page is also really useful. Of course you'll need to be reasonably competent with some sort of programming language. Going in with some knowledge of assembly code and related concepts would certainly make things easier as well. Once you've succeeded with that, well, it's up to you. Originally I tried my hand at the original Game Boy but I got stuck (can't remember on what) and ended up scrapping it. Later I tried the NES and after about 2 days of nonstop work (I mayyy have been skipping my Uni classes, shhh) I managed to get the Castlevania title screen working! That was the first game to boot on NoiES. Before that I wasn't even sure if I was doing things right; the more complex the system the more work needs to be done before you get any results. The CHIP-8 is a good starting point because it's pretty much just the CPU, but for more complex systems like the NES you also have to worry about the PPU, interrupts, mappers, special registers, etc. One last tip: be very careful not to make stupid mistakes like this, it can break a whole lot of stuff (how did I even mess that up?). If you do decide to attempt this, good luck! It's not easy, but it's worth it when you finally see your first working result.
 

OkazakiTheOtaku

no thanks, I don't want a custom title
Member
Joined
Jul 20, 2016
Messages
1,461
Trophies
1
Location
127.0.0.1
XP
3,114
Country
Japan
@OkazakiTheOtaku made a forwarder for melonDS, I'm sure they or someone else could do the same for this project.
I really didn't do anything special, I just used NRO2NSP to redirect to the location of the .nro on the SD card. If I get some time later I'll take a crack at it though.
 
  • Like
Reactions: Hydr8gon

Hydr8gon

Dragon Trainer
OP
Developer
Joined
Dec 15, 2014
Messages
316
Trophies
1
Website
hydr8gon.github.io
XP
2,580
Country
Canada
I just whipped this up real quick (I thought the system itself would make for a better icon, being square and all). Thoughts, anyone? Of course I'll find a better font and do some touch-ups if people like it.
upload_2019-4-3_13-27-32.png
 
  • Like
Reactions: fst312

OkazakiTheOtaku

no thanks, I don't want a custom title
Member
Joined
Jul 20, 2016
Messages
1,461
Trophies
1
Location
127.0.0.1
XP
3,114
Country
Japan
I just whipped this up real quick (I thought the system itself would make for a better icon, being square and all). Thoughts, anyone? Of course I'll find a better font and do some touch-ups if people like it.
View attachment 162740
I really like it! Maybe under NoiES do "by Hydr8gon" like where "Entertainment System" is on the console.
 
  • Like
Reactions: Hydr8gon

Hydr8gon

Dragon Trainer
OP
Developer
Joined
Dec 15, 2014
Messages
316
Trophies
1
Website
hydr8gon.github.io
XP
2,580
Country
Canada
Here's what I ended up with. I decided to go for an even more flat look; I think it works better for the square icon. Simple, but it works I suppose. So I guess the next release will have this, file browser icons, MMC2 mapper support, some much needed sound crackle fixes, and maybe some timing improvements. That's the plan anyways. I need to start allocating a bit more of my time to school again before I fail all my finals :P

(Honestly I totally forgot that I released this without an icon)
 

Attachments

  • 2019040314510800-39044917CFF4239A6A8855A4FBFD24A3.jpg
    2019040314510800-39044917CFF4239A6A8855A4FBFD24A3.jpg
    119.8 KB · Views: 82

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: *yawn*