Is There Anyone Working In A 2-cores Snes Emulator?


PokeParadox posted on Oct 16 2006 at 05:16 PM said:
Well in the PicorDrive thread, someone mentioned having:

All options enabled, accurate timings, etc. one one core @ 200MHz: 3fps
All options enabled, accurate timings, etc. one TWO cores @ 200MHz full speed

well it was something like that anyway, check the PicoDrive thread. It was a significant difference.

lol, serious misquote,

Real Quote

reiboul posted on Oct 16 2006 at 02:34 AM said:
By playing Sonic 3 at 130Mhz, all options ON, I get 13fps with 2nd core and... 1, without!!

So I guess that roughly 12fps increase for gen emu. My bet is that snes emu will reach full speed, just a matter of time.
 
Last edited by a moderator:
Depending on how you read it, you could either say a 12 fps increase, or a 13x increase. Either one is big, but if it's more of the latter that is huge.

Here's my test:
NHL 94:
-140mhz, 44khz, 16bit accurate renderer, single core - fluctuates between rates of <1 and 15 fps, usually at 8-13

-Same as above, but with second core enabled: fluctuates between 40-55, usually at 45-48.

Sonic 2:
- All the same settings as above, single core - 12-18 fps, usually at 16

- dual core - 38-55 fps, usually at about 46.

So according to that brief test, we are talking about a boost of 3x in PicoDrive for dual core use. That is massive! Very exciting news for SNES.

The question on my mind however, is how easy is it to follow notaz's example? Can his code structure simply be copied, or will it take some serious work of the SNES dev?
 
doc5avage posted on Oct 16 2006 at 11:05 AM said:
PokeParadox posted on Oct 16 2006 at 05:16 PM said:
Well in the PicorDrive thread, someone mentioned having:

All options enabled, accurate timings, etc. one one core @ 200MHz: 3fps
All options enabled, accurate timings, etc. one TWO cores @ 200MHz full speed

well it was something like that anyway, check the PicoDrive thread. It was a significant difference.

lol, serious misquote,

Real Quote

reiboul posted on Oct 16 2006 at 02:34 AM said:
By playing Sonic 3 at 130Mhz, all options ON, I get 13fps with 2nd core and... 1, without!!

So I guess that roughly 12fps increase for gen emu. My bet is that snes emu will reach full speed, just a matter of time.

I've bolded what was important to note about that post. I told you to go check the PicoDrive thread, because what I was saying was from memory, I had no time to check it myself as I had to get out the door for uni! ;)
 
Last edited by a moderator:
naples39 posted on Oct 16 2006 at 04:40 PM said:
Sonic 2:
- All the same settings as above, single core - 12-18 fps, usually at 16

- dual core - 38-55 fps, usually at about 46.

So according to that brief test, we are talking about a boost of 3x in PicoDrive for dual core use. That is massive! Very exciting news for SNES.
Don't know how you got such results, this is not accurate. You probably used auto frameskip, which skips frames whenever it detects it is lagging behind, so it is not good for benchmarks (you should always use 0 for benchmarks). The real difference is ~35-50%, and should never get above 2/3 (66%).
 
Last edited by a moderator:
notaz posted on Oct 16 2006 at 07:05 PM said:
Don't know how you got such results, this is not accurate. You probably used auto frameskip, which skips frames whenever it detects it is lagging behind, so it is not good for benchmarks (you should always use 0 for benchmarks). The real difference is ~35-50%, and should never get above 2/3 (66%).


Anyway, there is some SERIOUS speed boost and since it is open source, it will help many developpers!
 
Last edited by a moderator:
notaz posted on Oct 16 2006 at 01:05 PM said:
naples39 posted on Oct 16 2006 at 04:40 PM said:
Sonic 2:
- All the same settings as above, single core - 12-18 fps, usually at 16

- dual core - 38-55 fps, usually at about 46.

So according to that brief test, we are talking about a boost of 3x in PicoDrive for dual core use. That is massive! Very exciting news for SNES.
Don't know how you got such results, this is not accurate. You probably used auto frameskip, which skips frames whenever it detects it is lagging behind, so it is not good for benchmarks (you should always use 0 for benchmarks). The real difference is ~35-50%, and should never get above 2/3 (66%).

I thought the FPS counter at the bottom indicated frames drawn, totally disregarding however many were skipped. I guess that is incorrect since you would know better than I.

Did the same tests again (140 mhz, 16bit renderer, 44khz sound), but with frameskip locked at 0.
NHL 94: single core, 38-45, dual core 52-58
Sonic 2: single core, 37-42, 48-56

So yeah, that is a 35-45% boost. Not quite 200%... :unsure:
 
Last edited by a moderator:
Mm, makes sense. A framerate boost that dramatic from using the 940T seemed unrealistic. It's hard to use that chip because its use adds extra 'traffic' to the bus, clogging up the paths to memory so to speak, slowing the work the main 920T processor is doing-- and where the most important work is going on in the emulator. I'd expect 'decent' increases but nothing groundbeaking like that.
 
Epicenter posted on Oct 17 2006 at 08:42 AM said:
I'd expect 'decent' increases but nothing groundbeaking like that.

Personally, I'd say a 35-50% (10-20 FPS) increase in one go qualifies as groundbreaking.
 
Last edited by a moderator:
WarmFluffyUK posted on Oct 17 2006 at 03:08 AM said:
Is it ever likely that Starfox will be supported on a GP2X SNES emulator?
Absolutely won't happen, unfortunately-- at least not at an acceptable framerate. (Maybe in the single digits.) The SNES is enough of a challenge without a >20 MHz polygon processor that's far more powerful than the SNES' CPU is.
 
Last edited by a moderator:
Epicenter posted on Oct 18 2006 at 03:48 AM said:
WarmFluffyUK posted on Oct 17 2006 at 03:08 AM said:
Is it ever likely that Starfox will be supported on a GP2X SNES emulator?
Absolutely won't happen, unfortunately-- at least not at an acceptable framerate. (Maybe in the single digits.) The SNES is enough of a challenge without a >20 MHz polygon processor that's far more powerful than the SNES' CPU is.
:(
 
Last edited by a moderator:
Don't lose hope, WF-UK!

Epicentre also said the second core couldn't be used for anything, yet Notaz did a superb job using it for sound in PicoDrive. Many people said Amiga would never be playable, yet the latest release is fullspeed with sound on many games. They also said the PSX emu would never be more than a tech demo, yet several games are now playable on it. So, y'never know.

Anything's possible...
 
The main speed bottleneck with SNES emulation is rendering graphics... a 10-20MHz chip thrown in the mix might not be a total killer. Besides, I think some super FX games hardly use the SNES's CPU the majority of the time.

If the graphics routines get better optimized, plus sound emulation on the 2nd core, Super FX may be feasible. Also, you could probably do FS1-2 without noticing it much because many of the games didn't update every frame.
 
BradN posted on Oct 18 2006 at 07:15 PM said:
The main speed bottleneck with SNES emulation is rendering graphics... a 10-20MHz chip thrown in the mix might not be a total killer. Besides, I think some super FX games hardly use the SNES's CPU the majority of the time.

If this really is the case, would it be possible to add an option to underclock the SNES's CPU?
 
Last edited by a moderator:
Epicentre also said the second core couldn't be used for anything, yet Notaz did a superb job using it for sound in PicoDrive. ... They also said the PSX emu would never be more than a tech demo, yet several games are now playable on it. So, y'never know.
I didn't say it couldn't be used for anything, don't put words in my mouth. Show me somewhere in my post history I ever said that. What I said is still quite true-- the 940T coprocessor is extremely difficult to use and limited in applications. I've said before putting relatively low-resource-intensive tasks on it can be beneficial, like emulating the MegaDrive's Z80 sound coprocessor on it, to allow faster M68000 execution/graphics handling on the 920T, and that seems to be exactly what PicoDrive is doing. What I said about PSX emulation still holds true as well. I said it can be highly optimized and you might squeeze framerates close to 30 FPS out of it in some simple games, but that higher-end 3D games would stay very slow no matter what-- that's still true. Zodttd/Unai have done a remarkable job with the GP2X's limited resources for 3D rendering, but the PSX is still an insurmountable task to emulate correctly without a hardware rendering solution.

BradN said:
The main speed bottleneck with SNES emulation is rendering graphics... a 10-20MHz chip thrown in the mix might not be a total killer. Besides, I think some super FX games hardly use the SNES's CPU the majority of the time.
If this really is the case, would it be possible to add an option to underclock the SNES's CPU?
If the emulator's graphics handling code was 100% highly-optimized ARM9 ASM, you might be able to handle the additional processor, but you'd have to underclock the emulated chip for it to be a concievable goal-- and even then it's a stretch. In such a scenario I'd expect around 5 FPS ... with very heavy ARM920T overclocking. If the SuperFX emulation could be handled on the 940T without burdening the memory bus and 920T too much, it might break 10 FPS... but this is an extraordinarily ambitious goal.

If this really is the case, would it be possible to add an option to underclock the SNES's CPU?
Sure; I think I suggested it a while ago-- but you'd only see a couple FPS increase, in all likelihood. The CPU emulation is only a relatively small portion of the work a SNES emulator does, as its graphics subsystem is far more tasking to emulate, and you've still got sound to handle, too. The CPU is already a snappy ARM9 ASM core, too. It provides big benefits in NeoGeo emulation to underclock the 68000 and Z80 processors, because they are beefy chips-- but the SNES' pitifully underpowered 65c816 at a typical 2.68 MHz isn't much to emulate. (That reminds me, I need to suggest an emulated-CPU clockrate control be added to PicoDrive and AlexKidd2x, they could both REALLY use one.. Pepone was awesome enough to add one to gngeo when I asked. :D )
 
Last edited by a moderator:
Epicenter posted on Oct 19 2006 at 11:11 AM said:
[...]
I've said before putting relatively low-resource-intensive tasks on it can be beneficial, like emulating the MegaDrive's Z80 sound coprocessor on it, to allow faster M68000 execution/graphics handling on the 920T, and that seems to be exactly what PicoDrive is doing.
[...]
Not quite true, I use 940T only to generate YM2612 samples (which isn't a simple task, to generate 1 sample for 1 channel, one needs to do 4 data table look-ups + some other stuff, and if all 5 channels are used and you do 44100 samples per second, you get quite a bit of CPU load). I think doing YM2612 @ 44kHz when it's using all it's channels is ~40-50% of whole emulation job,

Epicenter posted on Oct 19 2006 at 11:11 AM said:
[...]
(That reminds me, I need to suggest an emulated-CPU clockrate control be added to PicoDrive and AlexKidd2x, they could both REALLY use one.. Pepone was awesome enough to add one to gngeo when I asked. :D )
PicoDrive has 68k idle autodetection (this was already in Dave's original version), so I don't think it would benefit much from this.
 
Last edited by a moderator:
notaz posted on Oct 19 2006 at 08:31 AM said:
PicoDrive has 68k idle autodetection (this was already in Dave's original version), so I don't think it would benefit much from this.
I meant more for OVERclocking the emulated M68000, once the emulator is optimized enough that the CPU load won't be off the scale (e.g. right now you still need to do some fairly heavy overclocking for full speed in most games.. or at least the [admittedly demanding] ones I play.) I overclock my real hardware MDs and I'm quite used to the speed at 12 MHz M68000 clock .. ;) The slower emulators could use an emulated-CPU underclocking feature though.
 
Last edited by a moderator:
Back
Top