Friday, June 30, 2006
JEmu2 does Sega X-Board!
The next release of JEmu2 will include a brand new driver for the Sega X-Board arcade system. The 1st supported X-Board game will be the famous After Burner 2!
This is the first JEmu2 driver to emulate 2 M68000 CPU's plus a Z80, and zooming sprites hardware.
Although After Burner 2 is fully playable, there are still some minor issues in the driver:
- No sound yet (working on it)
- Not all attributes of the tile layers are emulated correctly, which results in some wrong graphics in attract mode.
- There seems to be a little bug in the M68000 core which leads to some strange behaviour during the refeulling sequence (doesn't affect gameplay though).
- The road generator is not really emulated yet, so in the landing sequences, you will land your fighter in the dirt instead of a proper landing strip :-)
- The controls in the real arcade are analogue, which I mapped to the mouse. It works pretty well, but maybe I'll need to tune it a bit to make it feel better.
It is not optimized at all yet, so you will need a fairly new system to run it in full speed. The screenshot was taken on my laptop where it reaches ~100FPS average, but there it is running on Sun's 1.6 server VM, which is a very fast VM but still in Beta.
I plan to upload the new version tonight, or somewhere this weekend!
This is the first JEmu2 driver to emulate 2 M68000 CPU's plus a Z80, and zooming sprites hardware.
Although After Burner 2 is fully playable, there are still some minor issues in the driver:
- No sound yet (working on it)
- Not all attributes of the tile layers are emulated correctly, which results in some wrong graphics in attract mode.
- There seems to be a little bug in the M68000 core which leads to some strange behaviour during the refeulling sequence (doesn't affect gameplay though).
- The road generator is not really emulated yet, so in the landing sequences, you will land your fighter in the dirt instead of a proper landing strip :-)
- The controls in the real arcade are analogue, which I mapped to the mouse. It works pretty well, but maybe I'll need to tune it a bit to make it feel better.
It is not optimized at all yet, so you will need a fairly new system to run it in full speed. The screenshot was taken on my laptop where it reaches ~100FPS average, but there it is running on Sun's 1.6 server VM, which is a very fast VM but still in Beta.
I plan to upload the new version tonight, or somewhere this weekend!
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.
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.