• Welcome to SCdev.org. Please log in.

Welcome to the new SCdev forums!

Why is SNES so hard to emulate well?

Started by Madrigal, February 27, 2006, 05:41:39 PM

Previous topic - Next topic

Koji

Quote from: "ssj4android"Is SNES DS still being worked on? It seems to hardly work right now. Freezes in Super Butoden 3, can't see bullets or enemies in Strike Gunner, and major graphics/keyboard appearing problems in Family Feud. Any games that work well?

Yes it's still being worked on, but the main coder (Loopy) has about a million other projects he does for the DS and GBA as well as works on flashme and such.

Also, the latest version crashes a lot. Try using the 12-8 version.

Nphinity

I do get tired of this.  Someone comes along and asks about something or suggests something.  And then people who know more come along and kick sand in their face.  Sheesh...

Ookay so here's some info.(and though I know you will anyway) correct me if I'm wrong.

SnesDS is a port of GBASnes(or was it SNESGBA or whatever) to use the NDS hardware to its best use in a fashion more reminiscent of a high level emulator like PJ64, rather than more accurate lower level emulation like (I know you all say yadda yadda Snes9x, but IMO ZSNES is soooooo much better, sooo) ZSNES.

ZSNES and other SNES emus, emulate each chip that is inside the origional hardware, and everything it emulates is all done on your one single proccessor.  It does use some tricks to accelerate things here and there, some of the graphics, and sound hardware in your computer can be safely used in a higher level design to take time off the main proc.

It took years for these emus to reach the compatability we see today, and alot of dedicated work by several people, infact I would say, an entire community.  These sorts of people wrote many excellent emus for many systems.  And sort of exhausted all the truley emulatable hardware.

FYI, I remember ZSNES getting to the point where I could do 100% emu speed with 100% frame drawing at low resolutions around the time I got a 233mhz proc.(snes9x was at this time no competetor for what zsnes could do, imo).

With all the slow proc systems already having been emulated so well, people moved on to the new, old systems, like the Nintendo 64, and the PSX.  But they were working on these systems well before the hardware needed to do 100% software emu existed.  So the only option to getting these systems to do their thing was high level emulation.  Meaning, instead of directly emulating the hardware, instead the commands were translated from their origional form, to a form that could be applied to modern hardware.  Aka, code for rendering a set of vertecies on a nintendo 64, could be translated to code to render the same thing on a modern graphics proc.

These emu's were a whole new breed, and frankly were growing up in a time when the specs for such hardware was new.  But what they showed is that translation(or dynamic recompilation) would allow for far better use of the hardware.  Thing is, it's not emualtion, it's in a since reprogramming the software on the fly for a new platform, from machine code.  This is a very trick thing to do, and can often lead to great incompatability.  Cause instead of code for one machine being run in an emulated machine, it is being rewritten on the fly for a totally new platform.  Other problems plagued the scene as well, especially that of the fact that the hardware that one was recoding for, was not set.  I mean, it had to work on many different graphics cards, proccessor arcitectures, and in general different environments alltogether.

Now we move on to our new system, the NDS.  It has the hardware needed to totally blow away what a SNES could do.  However, it doesn't all live on one single chip, its on a bunch of independant, specialized hardware.  A great deal of the power it brings with it, is in it's 3d rendering capabilities, something that can be of use to SNES emulation, but as has been shown in projects like N64 and PSX emus, is very veyr difficult to get right.  The NDS however has one nice leg up, it is a fixed hardware, everyone using an NDS has the exact same equipment(well in turms of whats needed for emu, obviouslly we have a wide range of flash carts).

The proc on the NDS has nowhere near enough power to emulate the SNES hardware, like I said, on the PC, we werent seing full framerate rendering till about the time of 233mhz, and that was with some assistance of the gpu and spu.

But, the NDS luckily is designed to do the same thing the SNES was, its designed to play games.  And as such, it has hardware designed to perform many of the same functions as the SNES, and luckily its hardware that for the most part has more juice on its hands, which is good, cause there will be overhead in converting the code.

Basically this all boils down to, the only way good emu is going to happen on the NDS, is through dynamic recompilation, which I assume is just what is done in SNESDS, it translates the origional commands to similar commands in the NDS, and when a command doesnt exist it maps it through emulated code run on the proc.

So there are two approaches to getting an emu on the NDS, one, right one from scratch using dynamic recompialtion.  Or, one could take an emu like ZSNES, and drill it down to function under the NDS hardware, changing the code translation in it to use the nds hardware, instead of the pc hardware.  And most importantly one would have to replace large sections of emulation, with translation.

I would say the advantage of the first, is that it would likely be easier to get the project running, and the code would be well efficientized for the platform.  But it would have to go a long way to achieve good compat.  And really requires a hard working dedicated team of people who KNOW their stuff.

The second method, needs more time to get it running, cause it means alot of reworking code, and what not to get things, going, and would have lots of problems to be fixed, but the compat would come much quicker, and a smaller team could achieve this method.  For the most part this emu would go from not working to working well.   But would have a long time between the two points.  While the other method would go from working a bit, to working more to, working more, to working well with a few games, to increasing compat.

Finally the problem at hand, SnesDS, it's "under" development.  Notice the quotes, what I mean is, it ain't seing much work at all.  It needs more people working on it.  And they need to know the NDS and the SNES real well to do it.  Such people are hard to find.  Also remember its ported from a GBA SNES emu so frankly the total work thats been put in on it, is quite little.

Me, I would LOVE to see my NDS doing SNES emu like ZSNES.  I have hoped for a pocket SNES for years, I have all these great SNES games that I soo wanna play, and the only time I will be able to play them, is when I've got spare time while waiting on things in the world, which is when I whip out my NDS.  I dont have the time for it when I'm at home.

There are others like us who really would like to see SNES emu.  But most of em grew up with the SNES, like I did, and these people, are getting older.  The people who are best for writing these projects are still in high school, or sometimes lower schools.  They are the ones with the time for the projects.  And thing is, school kids today, have NEVER seen a SNES, and could care less about EMUing it.  This means the most likely crew to make our dream emu, is gunna be older, working folks who know both the NDS and SNES well, and have enough spare time to work on the project, and cause their spare time will be less, it will take more of them,(why more, cause devs come and go, its rare to keep on a project for more than a couple of years, so you need new people to replace the old ones).

Anyway, here is the key to getting SNES emu.  Ask for it, talk about how you would like to see more progress on the project.  Be willing to try to talk people who can do it, into doing it.  Be a conduit to bring coders together.  And most importantly, ignore the people who tell you not to post about it, not to talk about it, and to just sit back and wait, cause they dont have a clue what it takes to get the projects done that they enjoy so much.  It takes initiative, not passive doing nothingness.

As a coder, I will tell you, my #1 inspiration is users, asking me for more.  I mean I don't like it if they are rude about it or anything, but showing intrest in a programmers project, makes the coder feel good.

Nphinity

All shall bow down before the might of my tremendous posts!

MAD2X

I just want to say that I didn't even take the time to read your post, you have the biggest post congrats, wooptidoo. When I heard this: Why is SNES on DS so hard to emulat/slow? First thing that comes to mind is the lack of processing POWER, the DS doesnt really have much to start with. SNES was even hard to emulate at full speed on the Dreamcast, wich is much faster then a DS. Having a full working SNES emulator for the DS would be close to a miracle, just think about the harware the coders have to work with.
ilver NDS w/Flashme V.6
Supercard SD v1.61 firmware
1 GB coreMicro high speed card

Koji

I'd say no one knows the GBA/DS hardware as well as Loopy does. Well, maybe DarkFader... but I digress. The problem with loopy is not the fact that he is a single person working on the project. It's that he's a single person working on tons of projects plus a full time job.

Flubba has talked about working on SNESadvance again and adding HDMA (which would probably double compatibility as well as getting Chrono Trigger working) emulation. If he does follow through with that, Loopy won't have much of a problem adding that as well.

EBCubs03

Hey everyone, I'd like to apologize for my son Magridal. He enjoys posting complete bullshit on tech forums to annoy people much smarter than him. It's certainly not my fault! I didn't raise Madrigal this way and he will be receiving quite a spanking later tonight. Madgridal doesn't even have a  cell phone! Such a dissapointing son.

Quote from: "kompact"
Quote from: "K2000"I can confirm Madrigal doesn't know what he's talking about, I have a Nokia 6680, (arm9 220Mhz) and I can say without a shadow of doubt that there is some heavy frameskipping going there, it's even worse on my n-gage, completly unplayable.

LOL, not trying to be a dick to you or anything K2000 but Madrigal is my brother and I have played SNES roms on his phone and as he said they run just fine. maybe it is just that the games he is into work well and the one(s) you have tried have issues. No need to call him a liar bud, he has no reason to come in here making phoney claims for playing games on a phone.

My son does not have any siblings. You are obviously a liar. You also do not know what you are talking about.

MAD2X

This is too funny, but how would we know if you really are Magridal's father? :lol:
ilver NDS w/Flashme V.6
Supercard SD v1.61 firmware
1 GB coreMicro high speed card

Madrigal

Quote from: "EBCubs03"Hey everyone, I'd like to apologize for my son Magridal. He enjoys posting complete bullshit on tech forums to annoy people much smarter than him. It's certainly not my fault! I didn't raise Madrigal this way and he will be receiving quite a spanking later tonight. Madgridal doesn't even have a  cell phone! Such a dissapointing son.

Quote from: "kompact"
Quote from: "K2000"I can confirm Madrigal doesn't know what he's talking about, I have a Nokia 6680, (arm9 220Mhz) and I can say without a shadow of doubt that there is some heavy frameskipping going there, it's even worse on my n-gage, completly unplayable.

LOL, not trying to be a dick to you or anything K2000 but Madrigal is my brother and I have played SNES roms on his phone and as he said they run just fine. maybe it is just that the games he is into work well and the one(s) you have tried have issues. No need to call him a liar bud, he has no reason to come in here making phoney claims for playing games on a phone.

My son does not have any siblings. You are obviously a liar. You also do not know what you are talking about.

:roll: Yep. That's what I do. I come on forums and post BS. It gives me sexual pleasure.

And I do have a cell phone. State of the art!! Here's the pic to prove it!!!

img]http://img297.imageshack.us/img297/3183/dsig4uu.jpg[/img]
DS Lite (US) Polar White - M3 Lite - Superkey - Sandisk MicroSD 1GB

kompact

Bahahah EBCubs03 good stuff man. If a moderator or forum Admin clickes on the "IP" button beside our posts they will see that Madrigal's IP and mine are the same (meaning we live in the same house)- and yours is completely different! Eat that!
size=9]White NDSL / Flashme v7[/size]
R4 / SCMiniSD