Monday, January 08, 2007
Upcoming goodness

I think I'll soon be releasing a new version of JEmu2 now that I finally found the (incredibly silly) bug which prevented a number of MSX2 disk games to boot, which include Konami's Snatcher and SD Snatcher (both early Hideo Kojima games of Metal Gear Solid fame).
Both these games are feature more or less the same fantastic cyberpunk story in a 'Blade Runner-esque' setting but are both completely different games: Snatcher is a menu driven adventure game, SD Snatcher is an action RPG game. The rich story really has that Hideo Kojima trademark; thought provoking, intelligent and emotional. People who have enjoyed the Metal Gear games (especially the later Metal Gear Solid games) will know what I'm talking about.
Snatcher has been released on a number of platforms, the most well known (outside of japan) is probably the Sega CD version as that version was the only version to be released outside of japan. To be honest, that version was really much better as the MSX2 version had a few problems: Due to a rushed release, it was actually incomplete; Act 3 was completely missing, making the ending much darker and ambiguous. Because of the rushed release, the MSX2 version was also suffering from long loading times, reportedly partly because of inefficient programming of image decompressing.
On the other hand, the Sega CD version was slightly toned down on violence and some nudity was removed. The MSX2 version can thus be seen as a raw 'uncut' version, which is still worth to be experienced.

SD Snatcher on the other hand more suited the MSX2 and was actually never published on any other platform. It's a unique action RPG game which has some nice surprises in the plot for people who are familiar with Snatcher. Really a forgotten gem! SD stands for 'Super Deformed', which refers to a japanese drawing style where people have strange child-like proportions featuring huge heads and small bodies (see screenshot).

Also a cool game in the upcoming release is Aleste 2, a cool shoot-em up which was also unique to the MSX2 system. JEmu2's MSX emulation shows some minor bugs in this game, fortunately only visible in the introduction sequence. The game itself runs perfect.
Finally, JEmu2 will feature ZX Spectrum emulation in the next release. It's as of yet a fairly simple Spectrum emulator only emulating the 48k Spectrum, but able to run many games pretty well. It does feature emulation of the sound speaker (which sounds quite horrible, to be honest) and Kempston Joystick interface.

The spectrum was a popular home computer from the eighties, which made up its audio visiual limitations (compared to it's more expensive main contender, the C64) with performance: The spectrum was often able to run games at better speed, especially 3D games. Although many spectrum games don't look like much (especially nowadays), there are still many great and very playable games produced for this little machine.
Wednesday, January 03, 2007
Happy 2007
First of all, happy new year!
Looking back, 2006 has been a good year for GaGaPlay.com with many new games and exciting new hardware emulation in JEmu2:
* For the first time in java, Sega X-Board and Y-Board emulation (the most complex hardware emulated in JEmu2 yet, with up to 4 CPU's, math chips, zooming & rotating sprites, FM sound, 16 channel PCM etc).
* The introduction of VirtuArcade, the first ever true virtual arcade emulating 20 arcades at once in a hardware accellerated 3D environment.
* The introduction of pretty accurate emulation of the Sega Master System console.
* The introduction of MSX1/2 emulation with support for Konami SCC and Pana FM-PAC sound add-ons. The SCC emulation even improves over the original, creating a nice stereo output.
* A new homebrew game 'Hyper Blazer', a fast 3D action game. Think of the game as 'Trail Blazer' on steroids, adding many gameplay features to the original.
Special mention should go to Stephan Dittrich, who donated his Motorola MC68000 CPU emulator for use with JEmu2. This CPU is used in systems such as X-Board (After Burner), Y-Board (G-Loc, Power Driver etc), CPS1 (Street Fighter 2) and Snow Bros. Nick & Tom.
Check out his website featuring his project jEnesis, a great emulator of the Sega Genesis with 32X add-on. For the first time in java, running at good speed.
For 2007, the following is in the pipeline:
* Atari ST emulation. I still got a long way to go with this; it's now booting about halfway to TOS 1.02.
* ZX Spectrum emulation. I got a 48k speccy driver working okay, with support of it's 'beeper' sound output and Kempston Joystick. Okay, it's been done numerous times before, but it was a nice little system in it's days with many great games made for it.
* Disk support for MSX. I had this working great before I lost my latest sources. I got it mostly working again, but am running into a problem which prevents it from running the great 'SD Snatcher' (a fantastic 3-Disk cyberpunk action RPG made by Hideo Kojima of Metal Gear Solid fame). I remember having this problem before, but don't remember how I fixed it before losing sources...
* More homebrew games? Hyper Blazer ranks up high in the top 10 of most popular games on GaGaPlay.com...
* .... who knows? My plans tend to change a lot :-)
Looking back, 2006 has been a good year for GaGaPlay.com with many new games and exciting new hardware emulation in JEmu2:
* For the first time in java, Sega X-Board and Y-Board emulation (the most complex hardware emulated in JEmu2 yet, with up to 4 CPU's, math chips, zooming & rotating sprites, FM sound, 16 channel PCM etc).
* The introduction of VirtuArcade, the first ever true virtual arcade emulating 20 arcades at once in a hardware accellerated 3D environment.
* The introduction of pretty accurate emulation of the Sega Master System console.
* The introduction of MSX1/2 emulation with support for Konami SCC and Pana FM-PAC sound add-ons. The SCC emulation even improves over the original, creating a nice stereo output.
* A new homebrew game 'Hyper Blazer', a fast 3D action game. Think of the game as 'Trail Blazer' on steroids, adding many gameplay features to the original.
Special mention should go to Stephan Dittrich, who donated his Motorola MC68000 CPU emulator for use with JEmu2. This CPU is used in systems such as X-Board (After Burner), Y-Board (G-Loc, Power Driver etc), CPS1 (Street Fighter 2) and Snow Bros. Nick & Tom.
Check out his website featuring his project jEnesis, a great emulator of the Sega Genesis with 32X add-on. For the first time in java, running at good speed.
For 2007, the following is in the pipeline:
* Atari ST emulation. I still got a long way to go with this; it's now booting about halfway to TOS 1.02.
* ZX Spectrum emulation. I got a 48k speccy driver working okay, with support of it's 'beeper' sound output and Kempston Joystick. Okay, it's been done numerous times before, but it was a nice little system in it's days with many great games made for it.
* Disk support for MSX. I had this working great before I lost my latest sources. I got it mostly working again, but am running into a problem which prevents it from running the great 'SD Snatcher' (a fantastic 3-Disk cyberpunk action RPG made by Hideo Kojima of Metal Gear Solid fame). I remember having this problem before, but don't remember how I fixed it before losing sources...
* More homebrew games? Hyper Blazer ranks up high in the top 10 of most popular games on GaGaPlay.com...
* .... who knows? My plans tend to change a lot :-)
Monday, August 28, 2006
An old MSX classic
I recently did a bit of work on the MSX part of JEmu2. Not even MSX2, but 'good-ole' MSX1. One of the reasons was that a personal favourite of mine didn't work correctly on it yet: The sadly overlooked 'Iriegas' (a.k.a. 'Illegus'), made by the japanese ASCII corp. (the main creators of the MSX standard).

It plays much like an updated version of the ZX81 classic 3D Monster Maze, but in full colour, much smoother game play and animation, sound, traps you have to jump over, atmospherically changing light conditions, I/R goggles, gold, and this time you can shoot back at your enemies!
Not exactly Doom4 or Half-Life 3, but you can still regard this as a pretty good, early First Person Shooter.
I have some fond memories playing this game, which is at least as scary as the mentioned 3D Moster Maze. Especially the day/night cycles add a sense of urge to finish a level before night has fallen completely.
If you're lucky, you have found the infra red goggles before that happens, but they tend to deplete when you need them most which leaves you helplessly wandering in the dark, hoping you'll find new goggles or a brand new day to arrive before the baddies find you, or before you fall into a trap.
Even the sound, which is merely a pulsating drone indicating the distance to a baddy, adds a lot to the atmosphere.
The things that were missing from JEmu2 to allow this game to work correctly were proper SCREEN 3 support and support for zoomed sprites.
The use of SCREEN 3 (a low resolution graphics mode) is probably one of the reasons this full 3D game moves so fluidly on an old machine like the MSX.
I will add this game to the next version of JEmu2, and I recommend anyone to give this one a go!

It plays much like an updated version of the ZX81 classic 3D Monster Maze, but in full colour, much smoother game play and animation, sound, traps you have to jump over, atmospherically changing light conditions, I/R goggles, gold, and this time you can shoot back at your enemies!
Not exactly Doom4 or Half-Life 3, but you can still regard this as a pretty good, early First Person Shooter.
I have some fond memories playing this game, which is at least as scary as the mentioned 3D Moster Maze. Especially the day/night cycles add a sense of urge to finish a level before night has fallen completely.
If you're lucky, you have found the infra red goggles before that happens, but they tend to deplete when you need them most which leaves you helplessly wandering in the dark, hoping you'll find new goggles or a brand new day to arrive before the baddies find you, or before you fall into a trap.
Even the sound, which is merely a pulsating drone indicating the distance to a baddy, adds a lot to the atmosphere.
The things that were missing from JEmu2 to allow this game to work correctly were proper SCREEN 3 support and support for zoomed sprites.
The use of SCREEN 3 (a low resolution graphics mode) is probably one of the reasons this full 3D game moves so fluidly on an old machine like the MSX.
I will add this game to the next version of JEmu2, and I recommend anyone to give this one a go!
Tuesday, August 22, 2006
Announcing VirtuArcade
I'm currently working on the next step in online emulation: VirtuArcade!
VirtuArcade is, as the name suggests, a totally 3D representation of a 'real' virtual arcade with multiple machines, all running simultaneously in real-time. You can simply walk around to look what games the arcade has running, walk towards the game you feel like doing, insert a 'virtual' coin and start playing.
The idea was also to make things as scalable as possible, so running an arcade with many games at once should be doable on today's machines.
To pull this off, a number of optimizations, tricks and clever cheats were needed.
I have an early prototype running locally now, which already works nicely but the graphics and models (obviously) need work, as you can see below.
Screenshot of the prototype displaying 6 fully working arcades at once at full speed:

VirtuArcade is built on JEmu2, so all hardware currently emulated by JEmu2 work in VirtuArcade too and they will be simultaneously updated.
You can regard VirtuArcade as a new, enhanced 3D front-end for JEmu2.
Stay tuned!
VirtuArcade is, as the name suggests, a totally 3D representation of a 'real' virtual arcade with multiple machines, all running simultaneously in real-time. You can simply walk around to look what games the arcade has running, walk towards the game you feel like doing, insert a 'virtual' coin and start playing.
The idea was also to make things as scalable as possible, so running an arcade with many games at once should be doable on today's machines.
To pull this off, a number of optimizations, tricks and clever cheats were needed.
I have an early prototype running locally now, which already works nicely but the graphics and models (obviously) need work, as you can see below.
Screenshot of the prototype displaying 6 fully working arcades at once at full speed:

VirtuArcade is built on JEmu2, so all hardware currently emulated by JEmu2 work in VirtuArcade too and they will be simultaneously updated.
You can regard VirtuArcade as a new, enhanced 3D front-end for JEmu2.
Stay tuned!
Monday, July 31, 2006
Update
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.
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).