christo930 said:
What about moving the renderer and or sound to the second processor? How much of a speed boost would that get? It seems to me that if you efficiently move the renderer and the sound to the second processor , you would see a significant speed boost.
Moving the renderer to the second core would be quite difficult to do while still having good accuracy. SNES games often rely on making changes to the screen state per scanline, several times per frame. Your options are either to synchronize the two cores per scanline (which would not be worth it) or log every video related access and let the other core catch up. For a platform like SNES where games are highly limited in how much video state they can actually change per frame (although DMA could skew this a lot) this might not be too bad, but it'd definitely be a lot of work.
It also might not be a very good fit there since the 940T has so much less cache. The way SNES9x is written the rendering thrashes through cache like crazy, and having 4KB means that fewer scanlines that you have access to the same tile data - in fact, it may not even be enough to get through a single tile where you'd have been sure to reuse the same cache line. In dual core you're only as fast as your slowest element and the SNES emulators spend a lot more CPU on video than anything else. Making the baseline slower would not be a good move.
Keeping the video on the main CPU and moving the CPU and audio emulation to the second CPU might be a better fit.
Sound would probably work better, as the PSP version of SNES9x TYL has demonstrated. It would still be a lot of synchronization work, and there's less to gain because the SNES emulators for GP2X already use ARM SPC700 cores.
No matter what, using the two cores on GP2X is a serious pain in the ass because of lack of consistent address space between them and OS support (can't even run syscalls on the second one you know), hence why almost no one wants to do it.
christo930 said:
Does anyone know if the sourcecode for the jxd301 snes emulator is available? That seems to be a very well done emulator with excelent speed. I understand that it even plays yoshi's island pretty smoothly.
Chris
I think you're greatly misinformed about JXD301. The CPU is generally not slower than GP2X's, in fact, it has the potential to be much faster. It also has more cache. Its actual performance probably varies wildly (and the accounts of JXD301 emulator performance are a testament to this, I would say), but in raw CPU power it should be able to do as much as 2-3x what GP2X can do.
Even then, it's hitting limits because their VBA port performs terribly, and I don't think its Super FX emulation is nearly as amazing as you think it is. The accounts I've read say that Star Fox runs poorly, and Yoshi's Island is at best "playable", but not fullspeed (I don't really know how the game interacts with its FX2 chip, it could be that it spends a lot of time being idle)
The SNES emulator is just SNES9x (I suppose modified for the menu stuff, I doubt they put much else effort into it). All of their emulators are open source ports, and are violating license agreements. I would have been pretty irate if they used my GBA emulator, but on the other hand, maybe then they actually would have had playable GBA emulation...
christo930 said:
PS... Thanks so much for your work on Picodrive. It's truly a work of art.
I agree. IMO it's easily the most sophisticated emulator on the platform in both efficiency and features.