Monday, July 31, 2006



Progress is continueing in JEmu2. For the next version, the following changes are done:
1) Much reduced memory footprint in all games. This might lead to more games being able to make it as applets (which have more memory restrictions).
2) Reduced and sometimes even eliminated Sega Y-Board graphics glitchiness. This is kind of a hack because I don't know exactly how the hw should behave with regards to interrupts. For the time being, I overclocked the 68000 CPU's for some games and fiddled with IRQ2 timing which seemed to solve most problems. Because idle loop elimination was already implemented, this didn't cause a noticable performance penalty.
3) Added support for Strike Fighter
4) Added 3 new rendering methods: Plain, Plain with Scanlines, Plain with Scale2x. These rendering methods don't apply any filtering like the current 'default' rendering methods.

I'm also considering to change the local caching of the games. Currently, I'm relying on Java Web Start to do this, but this leads to large downloads the first time you start JEmu2 (all games are downloaded then). Especially with 16bit games (which are generally larger than 8bit games), this is becoming an increasing problem.

A new caching scheme is being implemented where only one game is downloaded from the server if you start that game for the first time, instead of all games at once.

Friday, July 21, 2006


Y-Board Sprite Rotation

A picture says more than a 1000 words...
Sprite rotation in the Y-Board driver now fully works, making the driver now complete. The above screenshot is from the game G-Loc, which is now fully playable.
There some general glitchyness in the games (some more than others), though. This also happens in MAME and FinalBurn. As MAME suggests, this might have something to do with very sensitive IRQ timing. So my final step will be to tweak the IRQ timing (maybe even separately for each game) to minimize the glitches.

In any case, expect a release this weekend!

Tuesday, July 18, 2006


More Y-Board progress!

I've finally figured out the sprite colours and the controls, and got both Galaxy Force II and Power Drift fully playable, and with sound.
Before I'll upload this new version, I intend to work on the following:
* Add more game drivers for the Y-Board, such as G-Loc, Rail Chase and Strike Fighter.
* Do some optimizations, such as idle loop removal.
* Maybe implement the Y-Board's screen tilt feature.
* Fix the background colors.

Currently the supported games run easily at full speed on my new laptop using java 1.6 client VM, but not on my not-so-new desktop PC, where the games currently run at about 45 fps on the java 1.4.2 client VM. Hopefully I can get it to run full speed on my desktop too, but the Y-Board driver is quite a resource hungry one (more so than the X-Board driver).

Sunday, July 16, 2006


Sega Y-Board progress

I've made some good progress with emulation of the Sega Y-Board hardware. It's quite powerful hardware to emulate, featuring 2 zooming sprite layers, custom math hardware, three M68000 processors plus one Z80, a YM2151 FM synthesizer chip and a 16 channel PCM chip.
All hardware is currently emulated except the controls, but there's still some work to do before it's ready to be released:
1) Figure out the sprite colours
2) Hook up controls
3) Optimizations

Friday, July 07, 2006


Adding sound

I've been busy improving the Sega X-Board driver, and the most important improvement in the next version will be sound support in After Burner II!

Both the YM2151 and SegaPCM emulators have now simply been ported from existing and open C sources to java (preventing to reinvent the wheel).
Also the general sound system needed a small change, because it didn't support stereo sound yet.

Both sound chip emulators have been hooked up in the X-Board driver, and the Z80 emulation has been enabled. Thankfully, the performance impact is smaller than I expected and with everything enabled, I can still easily run it at full speed with great sound.

There's still some wrinkles to iron out, though. Most importantly, the music tempo is too low for some reason. Could be a bug in the interrupt timing or maybe there's a bug in the YM2151 timer function, not sure yet...
Also I still need to implement and test the option to disable sound in the driver (in case things run too slow).

Another (not sound related) thing I noticed is that maybe the 68K emulator is not at fault regarding the wrong refuelling sequences I mentioned in my last blog. For some reason, this behaviour seems to have improved in my latest build and I didn't change anything in the 68K emulation at all (as I didn't find any possible bug in it yet). I'm not sure I know what it was exactly that improved this behaviour.

Anyway, I hope to have ironed out the last issues regarding sound emulation soon so that I can release a new JEmu2 update this weekend.

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