Because I know smf will eventually do a dynarec R3000 CPU core (although I get the feeling the possible 50% speed gain mentioned might be pushing it a bit) and probably some other optimisations too. He's mentioned it a couple of times on the mame.net forums. More games should be working before that will be done anyway.
Frameskip does not have any effect on these games - it can actually make them go slower. The video rendering code is NOT the bottleneck, it's the CPU emulation and the amount of RAM it writes.
This has been well known since when Killer Instinct 1 and 2 were first emulated in MAME. Fast emulated CPU (100MHz MIPS R4600) takes up all the emulation time. The video hardware is very simple, no 3D or anything.
Cruisin' USA/World are similar.
If the 3d emulation is all in software (running on cpu only), i guess it would then be a mame-crime to change the emulation to convert it to using the latest 3d api's? since then it wouldn't be authentic but it would speed it up.
Chad wrote:If the 3d emulation is all in software (running on cpu only), i guess it would then be a mame-crime to change the emulation to convert it to using the latest 3d api's? since then it wouldn't be authentic but it would speed it up.
That would be right. Although I doubt there would be much of a speed up. A dynarec MIPS R3000 CPU core would probably give a better speed improvement - like it did with Killer Instinct.
Of course, there's nothing stopping you from adding Direct3D/OpenGL support for 3D games... it'll just never be an official part of the MAME core.
Chad wrote:If the 3d emulation is all in software (running on cpu only), i guess it would then be a mame-crime to change the emulation to convert it to using the latest 3d api's? since then it wouldn't be authentic but it would speed it up.
From what I know about emulation engines, this would be just about an impossible task. You'd have to look at the disassembled ROM and see where it calls it's own 3D graphics handling routines. The emulator would then have to reinterpret this to a Direct 3D routine. Even this is very unlikely to work because the game's own graphics routine and the corresponding DirectX routine would have to match precisely, same parameters etc.
For example, game reaches a point where it calls 'Plot Triangle'. The emulator stops CPU emulation, skips the 'jsr' instruction and calls the necessary DirectX 'Plot Triangle' routine instead (if there is one) with the necessary parameters, then resumes normal CPU emulation.
This would be a miracle if it worked not to mention the amount of work involved to implement it! Gaz.