OatmealDome (the Dolphin for iOS developer) found that Dolphin without a JIT runs at 20% of full speed on an iPhone.
https://oatmealdome.me/blog/why-dolphin-isnt-coming-to-the-app-store/
I doubt you could get it to full speed, but if you could make it just a little faster, you could play RPGs and other games where speed isn't an issue...
Surely there's low-hanging fruit in Dolphin's CachedInterpreter? e.g.
- can you use Fastmem in CachedInterpreter to skip parts of the MMU emulation?
- Are there any instructions that could be optimized specifically for the CachedInterpreter (somehow), instead of using the regular Interpreter's code?
- Can you move the dispatch loop into the instructions themselves, like a threaded interpreter?
- Can you avoid saving/restoring registers in the interpreter's instructions?
The code looks simple enough (400 lines!) that you should play with it and see if you could make it faster...
(https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp)