How much of those 29ms are rendering (which can be frameskipped) and how much is cpu/audio emulation (which has to be done even if the frame is skipped)? If it runs fullspeed at 900MHz when skipping every other frame (30 FPS instead of 60), that would be good enough for me. I can't tell the difference between 30 FPS and 60 FPS anyway.
Is the 3D emulation done in software or hardware?
This is from memory so it's not going to be a perfect answer, and I can't do the test atm, but currently it's around 28.5ms, 6.5ms for 2D, 6.5ms for 3D rendering, and 4.5ms for geometry. Last three can all be frameskipped, meaning if you threw out every other frame you'd gain back a little under 9ms and still wouldn't be full speed, but it gets closer to realistic after enough other optimizations. You could throw out more frames for one screen and gain more, but it wouldn't help you a ton since the subscreen tends to be less demanding (but not always). Audio which is somewhere like 2-3ms can be lowered by reducing the sample rate (it's at 44.1KHz I think), but is also probably rife for optimization - just moving to GCC 4.7 helps its performance significantly so you can tell the compiler isn't doing a good job with it. I'm not ready to move to GCC 4.7 just yet but I can probably do okay with more ASM.
Note this is from an area with just little Mario on the screen, which is light in 3D. The gold coins use 3D too, although they're also pretty small. Mega Mario uses a lot more 3D (hence why it starts slowing down the 1.2GHz video). I don't really remember but I think that's
mostly it, aside from the mega mushroom and maybe some enemies, and the world map which is fully 3D.
3D emulation is purely in software, and it's very unoptimized, especially for Cortex-A8 since it uses floats. Geometry can be optimized too, it uses some 64-bit arithmetic which the compiler sucks at and could be improved somewhat with NEON. I don't want to start optimizing 3D until I have a more thorough idea of how the thing works, so I do it right (although there's a good chance I won't bother with anti-aliasing, it's very expensive here)
If you can't tell the difference between every other frame thrown out or not in something that's predominantly 2D then no offense, but something is wrong with your eyes. I think you probably just think you can't tell the difference but easily can
Try it some time. I remember on gpSP on PSP it made a huge difference when I was first able to run some games at fs0 instead of fs1 (before it had auto frameskip).