Has anyone kept (or started keeping?) a list of all the folks who post here on the forum stating they're working on NES emulators? I'm guessing the number would be in the high hundreds by now.
Just curious -- if not, I'm tempted to start something like this...
Only those announced here at the forum? Can't be that many. But if you included every NES emulator ever released I'm guessing the count would approach 1 shitload.
Maybe we could have people post (just once) in a thread if they are working on an emulator, along with info about it (programming language, status, etc..) and then just update their post as things change.
Al
A list of NES emulators would work better on a wiki.
- It depends. Does unofficial ports count? Does M.E.S.S. count, since it has a NES driver? Mednafren? We would need to create categories.
I was specifically referring to dedicated NES emulators which are in development, not multi-console emulators. Meaning: "Hi, I'm Jim, I'm 14 years old and I'm making a NES emulator". "Hi I'm working on my NES emu and I have a thousand questions"...
There's been tens, if not a hundred, people over the years showing up on this forum talking about how they're doing a NES emulator. Yet, basically none of them come to fruition.
My point is more or less to bring to the attention of the masses that no new emulators need to be made -- instead, spend the time/effort to help improve ones already in development or already established. Or better yet, pick another console altogether; the NES is full. :)
Quote:
My point is more or less to bring to the attention of the masses that no new emulators need to be made -- instead, spend the time/effort to help improve ones already in development. Or pick another console; the NES is full.
Depends on what their goal is. I don't see the problem in writing a NES emulator if you're just getting started and want to learn how to write an emulator. Seems to me that NES/GB/SMS/GG would be the best choice in that situation.
I couldn't care less if someone starts writing NES emulator #536 and then never releases it. It doesn't affect me in any way. Then again, I tend to stay out of the Nesemdev subforum.
I've sometimes thought it would be neat to write an emulator of minimal functionality just for the learning experience. I don't think I'd ever make a big "announcement" about it, it would just be for fun. But, personally, making a game just seems so much more interesting and creative (especially since so many fine emulators are available that aid tremendously in creating a game---I see these as the shoulders of giants upon which I can stand). I was surprised when I first got on this forum to see only sivak's youtube videos about the as yet untitled battle kid. I expected to find dozens of such videos by dozens of people. I guess most indie developers are targeting newer systems
or, developing emulators
I find developing games more rewarding than developing emulators. A game, no matter how simple, always presents something new. But emulators usually just allow people to play the same old games everyone already knows without offering anything new.
Given the fact that there are already a couple of great emulators that do almost everything anyone would ever need, I don't see a point in making yet another emulator unless there is something innovative about it, like a (preferably useful) feature that was never implemented before.
I can understand people that code emulators as a form of studying the system (even though I think they'd be making better use of their time if they were coding games instead), but such emulators rarely offer anything interesting (as opposed to games), and should probably be kept private.
Surprisingly enough, Pasofami is still in development, with a recent release.
koitsu wrote:
Or better yet, pick another console altogether; the NES is full. :)
I think you misunderstand the reason why people write emulators.
I think people pick a system to emulate based on how much they like that system, not how many emulators there are for it. It just happens that a LOT of people like the NES, so it's only natural that there are a crapload of NES emulators...
I don't see any fun in being the first to emulate an obscure system that most people never heard of just for the sake of being the first.
Quote:
A game, no matter how simple, always presents something new. But emulators usually just allow people to play the same old games everyone already knows without offering anything new.
I disagree. Most beginner coders who think "hey, writing a game would be totally radical!" and actually finishes their project end up either doing a remake of some old game (tetris, arkanoid, pong, snake), or something very similar. I'm not saying there's anything wrong with doing that - I'm just pointing out that there's nothing inherently more creative or "new" about writing a game compared to an emulator.
Quote:
I don't see any fun in being the first to emulate an obscure system that most people never heard of just for the sake of being the first.
Me neither. But I can see the fun in doing it as a technical challenge. Like the people who write MAME drivers for old obscure arcade systems that only had a couple of games made for them, without always having a whole lot of documentation to go by.
tokumaru wrote:
A game, no matter how simple, always presents something new.
Even clones of existing games, as mic_ pointed out?
Quote:
But emulators usually just allow people to play the same old games everyone already knows without offering anything new.
Yet Virtual Console prints money.
Quote:
I don't see a point in making yet another emulator unless there is something innovative about it, like a (preferably useful) feature that was never implemented before.
A useful feature such as the ability to run on a piece of hardware that thousands of people already have.
Quote:
I can understand people that code emulators as a form of studying the system (even though I think they'd be making better use of their time if they were coding games instead)
You have to come up with your own graphics and game rules. (WarioWare DIY thinks AI stands for "action instructions"). Some people weren't trained for that.
tepples wrote:
Even clones of existing games, as mic_ pointed out?
Even when the overall idea isn't revolutionary, at least the graphics and music usually bring something new to the table.
Quote:
Yet Virtual Console prints money.
To people who don't know how to make their consoles play their pirate RoMz the VC is an innovation that allows them to do something they couldn't before.
Quote:
A useful feature such as the ability to run on a piece of hardware that thousands of people already have.
If there isn't already a good emulator for said piece of hardware, yeah, then it makes sense to make one.
Quote:
You have to come up with your own graphics and game rules. (WarioWare DIY thinks AI stands for "action instructions"). Some people weren't trained for that.
If someone decides to make an emulator because they lack the talent to make games that's fine, but they won't get any notoriety unless they include features that will make their software stand out.
This is all just my opinion though. I'm obviously biased towards game developing, after all that's the path I chose. But I know that I enjoy a new game announcement much more than a new emulator announcement, and I believe most people in this scene do to. This is not a "superiority" discussion by any means (in case someone is thinking that), it's actually a matter of balance... The NES has always had tons of emulators and few homebrew games, and right now this scene needs games more than it needs emulators.
There are enough emulators for the NES for an actual complete list of them to be fairly interesting (and lengthy). Especially to see the variety on non-PC platforms.
mic_ wrote:
I disagree. Most beginner coders who think "hey, writing a game would be totally radical!" and actually finishes their project end up either doing a remake of some old game (tetris, arkanoid, pong, snake), or something very similar. I'm not saying there's anything wrong with doing that - I'm just pointing out that there's nothing inherently more creative or "new" about writing a game compared to an emulator.
That's a good point, a lot of first projects aren't really original but it's kind of like comparing between a 14 year old's sketches, a van Gogh painting, and a 3 year-old's coloring book.
I guess it depends on what kind of stuff people want to write. If one just wants to write boring ol' stuff that is just 100% following specifications, then emulation would help you get good at that (assuming a ~95% documented system like the NES). If you want to come up with all sorts of cool stuff, and face all kinds of challenges in figuring out how it will work, then writing a game is the way to go.
Me personally, last year I had started to write a 6502 emulator (in Propeller assembly). I figured if nothing else, it would be the beginnings of a homemade NSF player. But it was so tedious and boring to code, that I was falling asleep while writing it, no kidding. I guess as soon as I knew it was possible, it wasn't as fun anymore, heheh.
I spent the past 3 hours this morning adding the following document to the Wiki:
http://wiki.nesdev.com/w/index.php/Emulators
This is in no way a comprehensive list -- I only went through 4-5 pages of NESemdev posts, not all 18 (?). But that's the entire point of a Wiki -- you can edit it and improve it.
I also linked it on the main Wiki page, since it's a pretty common topic. I took the time to clean up the CSS, HTML, and other whatnots on the main Wiki page too (what a mess!).
koitsu wrote:
I took the time to clean up the CSS, HTML, and other whatnots on the main Wiki page too (what a mess!).
Usually you're supposed to use the least possible html tags inside the wiki to make it easier to change style. I just had some idea for the main page and saw some style I liked on wikipedia after seeing some "blue box container". I didn't know how to get the template for it so I just extracted the html. This is one of the main reason of the mess
Which would mean the template had similar html/css too..
Banshaku wrote:
koitsu wrote:
I took the time to clean up the CSS, HTML, and other whatnots on the main Wiki page too (what a mess!).
Usually you're supposed to use the least possible html tags inside the wiki to make it easier to change style. I just had some idea for the main page and saw some style I liked on wikipedia after seeing some "blue box container". I didn't know how to get the template for it so I just extracted the html. This is one of the main reason of the mess ;) Which would mean the template had similar html/css too..
If the CSS in the "style" statements could be put into their own class (in a .css file somewhere and then included with <link> within <head>), then all those div statements could become <div class="whatever">. There's also the possibility of getting rid of the table stuff altogether (it's possible to do using CSS and <div>), or using Wiki syntax for tables. :) Anyway, that's for another discussion.
- Great.
Two things: a) Isn't Nestopia available for MacOS? b) I'm removing the DOS mention, since RockNES has stopped DOS support at version 4.xx. Indeed, there's one Linux version, but it's so outdated that I thing not worth to mention it.
mic_ wrote:
Only those announced here at the forum? Can't be that many. But if you included every NES emulator ever released I'm guessing the count would approach 1 shitload.
Counting forks(including ports of popular emulators to game consoles), and multi-system emulators, and excluding emulators that never had a release/working code in a repository, I'd say there are around 180-200.
Zepper wrote:
- Great. :) Two things: a) Isn't Nestopia available for MacOS?
It's hard to determine, and it's a debate. The official author of Nestopia is Martin Freij, who's responsible for the Win32 version of Nestopia. All the other versions (for other OSes), as far as I know, only get updated after the official Win32 release is out -- because they have to backport the changes.
The OS X version is a "port", also called "Nestopia", and maintained by Richard Bannister. Don't confuse this with "OpenNestopia" which is maintained by Josh Weinberg. Be sure to note that Richard's version is version 1.41 while the official Win32 version is only up to 1.40.
Finally, there's a Linux port from someone named Arbee.
Summary: Win32 is the only official platform that I know of, with all the others being done after-the-fact. None of the projects appear to be "centralised", meaning there's no unison between all of the authors. It's MAME all over again.
If someone wants to add the two OS X ports to the list, be my guest -- it's a Wiki.
I'm developing yet another NES emulator just because I wanted to code something challenging, as opposed to my day job which is definitely not.
It won't be a regular emulator which tries to emulate exactly the original NES and nothing else, it will be, I think, something new and original. No too original since it's inspired on Pacifi3D and the LUA-scriptable feature of FCEUX, but hopefully different.
I also thought that emulating the NES would be a good starting point to build knowledge of 6502-based machines to later emulate other consoles or computers based on that chip, as the commodore and the atari for example.
As I see it, contributing to an already working emulator won't help a lot either, because emulators like Nintendulator, Nestopia and others are already pretty accurate, and I'm not sure about how much they can be improved.
Edit: this is on the wiki, I see now.
[ What I would like to see is a list of working, accurate, finished emulators written by users of this forum, along with their creators. (if there's not already such thing) ]
Petruza wrote:
emulators like FCEU and others are already pretty accurate
I don't find FCEU accurate at all. It plays most games fine (probably because it was tailored according to the existing commercial games), but when it comes to the tiny dirty little details we run into while homebrewing, it's not reliable at all.
Which ones are the most accurate emulators available?
I always took FCEUXD SP as reference cause it has a good debugger, but I really don't know.
I've always considered the FCEU branches good for debugging logic, but they aren't amazingly accurate when it comes to timing and graphics.
The most accurate ones I'm aware of are Nintendulator and Nestopia. Whenever I'm testing sensitive code those are the ones that behave the most like my real NES (but even they are wrong sometimes).
What percentage of original* games ( leaving out homebrew and demos ) would you say used some graphic technique that would require accurate timing, other than a regular sprite-0 hit scrolling to make a horizontal split-screen?
I don't know if I'm being clear about this, I want to know how much mid-scanline scrolling or other techniques I'm not aware of, were used, to have an idea of how serious is for an emulator not to be accurate about PPU timing.
I leave APU, sound & music out of the question on purpose.
PS: I use the term `original game` to refer to a commercial game released back in the days of the NES. Is there a more used and accurate term for that?
Petruza wrote:
What percentage of original* games ( leaving out homebrew and demos ) would you say used some graphic technique that would require accurate timing, other than a regular sprite-0 hit scrolling to make a horizontal split-screen?
Balloon Fight uses cycle-timed NMI to make a horizontal split screen in Balloon Trip mode. Pirates! and Marble Madness both use mid-scanline CHR bank switching. F1 Race, Rad Racer, Space Harrier, and 3D World Runner use timed scroll writes to bend the road. Cosmic Epsilon uses this along with timed horizontal scroll writes and timed CHR bank switching to change texels in the scrolling path.
By excluding APU, you exclude Time Lord and a few games by Codemasters, which abuse the DMC IRQ as a generic timer so that they can put the sprite 0 split near the bottom.
Ok you made your point. Pretty serious.
A game that is notoriously hard to emulate is Super Cars. It uses $2004 reads for timing purposes, and very few emulators handle such reads correctly, AFAIK.
tokumaru wrote:
A game that is notoriously hard to emulate is Super Cars. It uses $2004 reads for timing purposes, and very few emulators handle such reads correctly, AFAIK.
Wow. I just tried that one in NESICIDE and it looks great. I'm confused though because I also tried it in Nintendulator 0.965 and the bridges don't show up. Anyone have a video of playing track 1 on a real NES? =]
I think Nestopia emulates it correctly. Nintendulator has some problems with the name tables (weird, huh?) and FCEUX has problems with the gray bar at the top of the screen.
EDIT: I just noticed that Nintendulator complains that an invalid opcode is used (LAX). Until now I wasn't aware of commercial games that use illegal opcodes.
tokumaru wrote:
EDIT: I just noticed that Nintendulator complains that an invalid opcode is used (LAX). Until now I wasn't aware of commercial games that use illegal opcodes.
Yeah I saw some other discussion about that on here. I had to turn off the debug window to get the game to run...
Part of the reason why I decided to just allow execution of illegals and flag them with an icon in my code browser. I need a 22x22 PNG of a bomb for the KIL opcodes. =]
NESICIDE wrote:
I need a 22x22 PNG of a bomb for the KIL opcodes. =]
Why 22x22? If 16x16 is OK, you could just use the bomb from
Concentration Room. Or, because the analogous opcode on 65C816 is STP, try the logo of
STP (Scientifically Treated Petroleum).
tepples wrote:
NESICIDE wrote:
I need a 22x22 PNG of a bomb for the KIL opcodes. =]
Why 22x22? If 16x16 is OK, you could just use the bomb from
Concentration Room. Or, because the analogous opcode on 65C816 is STP, try the logo of
STP (Scientifically Treated Petroleum).
Ahh that's a good idea...a STOP sign for KIL opcodes (but only when they're about to be executed though, otherwise there'd be stop-signs all over the data).
I couldn't find the 16x16 bomb... ?
tokumaru wrote:
EDIT: I just noticed that Nintendulator complains that an invalid opcode is used (LAX). Until now I wasn't aware of commercial games that use illegal opcodes.
Are folks sure it isn't a bad dump or that there isn't a bug in the emulator that's causing it to somehow set PC to the wrong thing? (I can think of mapper emulation bugs that might cause the wrong PRG page to be switched in and thus wrong code getting executed)
Just sayin'.
This bomb:
I found it in the pattern data.
koitsu wrote:
tokumaru wrote:
EDIT: I just noticed that Nintendulator complains that an invalid opcode is used (LAX). Until now I wasn't aware of commercial games that use illegal opcodes.
Are folks sure it isn't a bad dump or that there isn't a bug in the emulator that's causing it to somehow set PC to the wrong thing? (I can think of mapper emulation bugs that might cause the wrong PRG page to be switched in and thus wrong code getting executed)
Just sayin'.
Typically if the game didn't intentionally execute the undocumented opcode I would expect it to be completely inoperative -- especially if it was a bankswitch fault in the emulator! The game seems to work fine, but there's a few scanlines at the top that are a bit mangled looking. But, I can't say for sure because I never had it on a real NES. That's why I was wondering if anyone has a video of it being played on a real NES or even with a PowerPak [another thing I don't have].
I'm pretty sure I tried it on my PowerPak back when I was researching ways to hide vertical scrolling glitches, and I seem to remember it working just like in Nestopia. The gray "border" at the top is intentional, it's meant to hide vertical scrolling artifacts. It's supposed to be a steady (not shaky like in FCEUX), 20-scanlines tall border.
The problem is that in order to time the height of that border the game relies on $2004 reads to detect the start of the frame, and not many emulators have such writes implemented correctly.
koitsu wrote:
I spent the past 3 hours this morning adding the following document to the Wiki:
http://wiki.nesdev.com/w/index.php/Emulators
I'm not sure where my emulator belongs... while I continue to develop it, on occasion, it's more or less complete and has been available for download for years now. I wouldn't say it's popular, though. Maybe there needs to be a third section to differentiate working emulators from those that are works-in-progress?
James wrote:
koitsu wrote:
I spent the past 3 hours this morning adding the following document to the Wiki:
http://wiki.nesdev.com/w/index.php/EmulatorsI'm not sure where my emulator belongs... while I continue to develop it, on occasion, it's more or less complete and has been available for download for years now. I wouldn't say it's popular, though. Maybe there needs to be a third section to differentiate working emulators from those that are works-in-progress?
It needs to go in the bottom portion of the page, along with all the other emulators. Popular/common ones are at the top.
Yeah mine would definitely not be considered working. (although it is entertaining)
Some NROM games look and run fine, while others (like Galaxian) look like a mess.
I saw a post earlier about Super Cars. Is there a link or list somewhere of the games that are tricky to emulate?
For example, I think Galaxian is tricky for a number of reasons, but at least one reason is that it uses a vertical scroll value of 255 (which I think acts like a negative scroll).
I like the idea of indicating NROM games that have quirks since that allows emulator writers to avoid mapper compliance until they are sure other important aspects are working.
Al
Yes that would be great.
We should have a ROMs list on our wiki with as much relevant info for emulator developers as possible.
A good start is
http://tuxnes.sourceforge.net/nesmapper.txt
albailey wrote:
Is there a link or list somewhere of the games that are tricky to emulate?
There is
such a list on the wiki, along with an
incomplete list of glitches that should be there. Anyone who can help make these lists more complete is invited to do so.
Is there a way to get a list of all the articles of the wiki, instead of having to find a link to one?
On any MediaWiki wiki, visit
Special:AllPages.
tepples wrote:
albailey wrote:
Is there a link or list somewhere of the games that are tricky to emulate?
There is
such a list on the wiki, along with an
incomplete list of glitches that should be there. Anyone who can help make these lists more complete is invited to do so.
Thanks. I appreciate it.
Al