Sunday, June 18, 2006

 

Progress

It's been a while since my last post, but there has been some progress. First of all, the next version will have a brand new M68000 emulator, written by my friend Stephan Dittrich of jEnesis fame. Check out his extremely cool jEnesis project, a Sega Genesis/32X emulator, at the homepage. It is the very first java based emulator capable of emulating the Sega 32X, which is a tough one to emulate both correctly and at good speed.

His M68000 emulator seems to be very compatible and quite fast as well, and it fixed the remaining problems in Street Fighter 2 (random lock-ups) and some minor glitches in Snow Bros.

One interesting thing to note in his M68000 emulator is that he didn't use the traditional switch/case mechanism for opcode despatching, but used an array of Opcode interfaces (which act sort of like function pointers to all opcodes).

This is a more clean approach but previously this used to be slower than switch/case, so it wasn't used much in java based CPU cores.

Apparently, things have changed for the better in the JVM department and the Opcode interface implementation is now actually faster than the switch-case approach!
He mentioned that especially in his SH2 core for his 32X emulator, this made the whole thing run 10% faster than with using switch-case, which is remarkable.

OTOH, this is on 1.4 and 1.5 JRE's. On the upcoming 1.6 version of Sun's JVM, there are some switch-case performance improvements implemented.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?