darkblu, I think you might not be very familiar with bsnes. The "CPU-centric portable SNES emulator" need was met several years prior with SNES9x. bsnes was designed to be a "reference" emulator that's as accurate as possible while also being very clearly written - although some optimizations were made it was never written with high performance in mind and never while compromising any facet of its accuracy. We're talking an extreme level of timing precision, down to master clock cycles between several chips. Few emulators (much less SNES emulators) are written with this level of accuracy in mind - largely because it's not needed to play most (and when youhit a certain point, all) games and more serves as documentation, a more homebrew-safe platform, and satisfying academic interest, perfectionism, and peace of mind. It's not really what the goal should be for a platform that is not at the performance level established for needing this.
What you're describing (in as much extent as it'd even work) would definitely be a compromise to accuracy because you just can't maintain the extreme level bsnes operates at w/o maintaining the ability to switch between what component you're emulating at a really fine level. Especially if you're now throwing recompilers into the mix. This doesn't really make sense because computationally getting things most of the way there doesn't require much in the way resource-wise (SNES emulators on DS pull this off okay with a 33MHz ARM7) so suggesting things like recompilers for SPC700 code is silly. Audio is not really where the big speed hit is for bsnes; that's in IRQ tracking (lots of checks constantly) and PPU emulation. The intense "bit-perfect" audio emulation I was describing earlier is for the fixed function DSP emulation. It can be done much faster with a negligable accuracy cost - the code used (blargg's core) even has this option. That I said this bit-perfect core would perform poorly on Pandora was purely academic.
There's a good reason that emulators haven't been using GPU shaders for 2D console emulation - it just doesn't fit. Read some of my posts on this thread:
http://vba-m.com/for...ress-t-455.html Although it's related to GBA a lot of similar problems apply. Even the basic per-pixel operations involve bit unpacking operations for looking up a tile map entry, generating a texture address inside a tile with conditionally flipped and mirrored sub-indexes, and fetching a a palette entry from a texture. Yhe only way to accomplish per-tile priority would be to draw 8 pixel lines instead of screen width lines, with varying depth or stencil. That's at least 8 * 224 * 4 * 60 = 1.7m polygons per pass. You'd need two passes for main-screen and subscreen rendering (no MRT on OGL ES 2, and I doubt PMAP3's SGX is good at it) and a third pass to combine them. To handle sprite ordering correctly wrt BG rendering (I call it the "sprite mangling" effect) you'd need to render sprites and BG in separate passes too, so it's now up to 5. In order to handle mid-frame effects effects you'll need a queuing system and you'll need to carefully track accesses to VRAM, palette, and OAM to keep it coherent with the SGX's textures.
It might be possible to construct this logistically, but I doubt it'd run acceptably on SGX530 on OMAP3, with its one TMU at 110MHz and limited bandwidth (not even including a final pass to scale the result).
I think that in the end of the day IF you got anything working at all it'd be much less accurate (and compatible) than bsnes and prone to performance issues under non-ideal circumstances. It would also be a near-total rewrite of bsnes that would barely resemble it, and wouldn't be as portable (relying on OGL ES 2+ or worse, C64x+). Meanwhile, the usual ARM optimized SNES9x ports would probably be more compatible (outside of bugs) and would be less battery hungry by virtue of having more efficient ARM code and not needlessly taxing the SGX and DSP.
I'm just not seeing the point.