Wednesday, December 31, 2014

XMAME v1.0 for GCW-Zero

After a good year in development:

HAPPY NEW YEAR: XMAME v1.0 for GCW-Zero!

It wasn't quite ready for before Christmas but at least it made a 2014 release (only just).
There's certainly more work in all the little details than what you may think!

(Latest version is v1.3)


XMAME v1.3 splash screen

Konami's Xexex running on XMAME v1.3 (Mame 0.69)

Taito's Chase HQ running on XMAME v1.3 (Mame 0.69)




What is XMAME?

XMAME is a UNIX version of MAME optimized for the GCW-Zero handheld.
The main goal of XMAME is to provide an updated version (actually versions) of MAME which was something other than the ubiquitous MAME4ALL.

Why?
  • New games. 1000s of new games.
  • Updates for existing games. ie. adding sound where previously missing and new graphical effects.
  • Save state support for some games. Disclaimer: Some games, certainly not all!
  • Better frontend launcher.
As many MAME users have already noted, later versions do tend to get slower. This is true to a degree, and confirmed by MAME developer Aaron Giles, see his post.

XMAME v1.3 for GCW-Zero supports three versions:

MAME 0.37b16, 0.69 and 0.84.

Take careful note of those versions and understand that optimally you will need three sets of ROMs to play all the games that this release supports.

The good news is that you won't really need three sets.

XMAME v1.3 updates

* Added 32-bit color mode and support in drivers where required for high quality alpha blending screens (all versions).
* Updates to drivers using ALPHA BLEND modes. Games supporting ALPHA in v1.0 - v1.2 always ran in 16-bit mode. The user will now have the option of running in 16 or 32-bit color mode. 16-bit mode is faster, 32-bit mode is more accurate and has some extra effects. The default is 16-bit mode, you need to select the 32-bit before starting the game. This only applies to certain games (see those listed below).
* Fixed: Bucky O'Hare and COW-boys of Moo-Meesa (69 and 84)
* Fixed: Dragon Blaze, Strikers 1945 II, etc (69 and 84)
* Fixed: Taito F3 games (69 and 84).
* Fixed: Analog controls (84).
* Fixed: Analog controls now have correct defaults for rotated screen modes (all versions).
* "No sound" option now works (all versions).
* Fixed: Sega System16 games like Altered Beast and Alien Storm and Enduro Racer. Hooray! Long standing bug which was really annoying! (all versions).
* Fixed: XMAME frontend after adding/removing ROMs and using "START" to refresh cached list, wasn't calculating correct number of games available for each filter mode.
* Fixed: Multi32 games like Outrunners for 69 and 84.
* Fixed: Konami games using KONAMIGX hardware (ie.Mystic Warriors, Violent Storm, etc)  for 69 and 84.
* Fixed: Gaelco 3D games however there is still an issue (see "Future release") for 84.
* Fixed: Tecmo Raiga - Strato Fighter for 84.
* Fixed: The Game Room's Lethal Justice for 84.
* Fixed: Tecmo's Super Pinball Action for 84.
* Added: save-state controls for 84. Also fixes for 52 and 69.
* Added: speed-ups for Neo Geo for 52 only. Everything runs at 100% 60


Three versions of MAME?

Correct, the frontend not only lets you choose the game but also which version of MAME to run. There are also other frontend improvements including being able to filter the ROM lists, create favourites and snapshot image support.

So will I really need all those ROM sets?

Well of course not - unless you plan to try every single game. If you are, please contact me so perhaps you could do some testing for me ;)

The versions of MAME chosen were not random, many hours went into researching which versions would be best.

The final list of versions are a nice mix of earlier releases, with MAME 0.84 providing a large number of playable games. MAME 0.84 happens to be the same version that MAMEOX - MAME for the Xbox - was based on.


Basic Installation

Copy the xmame_1.2.opk installer to your apps folder, either internal storage or external SD card.

XMAME v1.2 can be installed to the GCW-Zero's internal 16GB storage or on an external SD card.

Once the installer has started you can choose the destination - either internal or external storage.

If you want to install to the external SD card but there is no option to do so from the installer, exit the installer, and try running the "reboot" icon under "settings" in Gmenu2X. Then try running the installer again. For some reason the GCW-Zero doesn't always mount the SD card successfully first time around.

Once the destination has been selected, wait a minute or two. When finished you will have a new icon under the emulators section called XMAME v1.2.

The installer can be deleted now as it is no longer required.

Important: Before you run XMAME, you will need to copy some ROMS into each of the "roms" directories for each version of XMAME installed.


Advanced Installation

Once the basic installation is complete, you can optionally make you own adjustments.
This may include:
  • Using symlinks to share ROM folders just like the "snap" directory in the basic install.
    By default  the install sets up three separate "roms" directories one for each version but as an alternative, you could use a single "roms" directory and use symlinks to share this directory between all versions of XMAME.
If you run into trouble, delete what you've done and follow the Basic Installation again.



How does the XMAME frontend and main executables work?

The XMAME frontend checks to see which versions of XMAME are installed. The directory structure should be as per the basic install for the frontend to function correctly
ie. /xmame/xmame69/xmame.SDL.69
The new frontend allows the user to switch versions of XMAME and select a game. The new frontend then sets the XMAMEROOT environment variable (see below) and starts the selected XMAME with the parameters chosen by the user.
The XMAME executables don't explicitly need the frontend, and can be run from a shell. Indeed during development this is the best and quickest way to test games.
Each of the main XMAME executables searches for directories ie. "roms" or "snap" in a directory defined by the XMAMEROOT environment variable. If this variable is not defined it is defined when starting XMAME as the current directory where the XMAME executable resides.


Credits (in no particular order)

  • The MAME developers.
  • The GCC developers.
  • Franxis for the original MAME for the GP32 and later MAME4ALL.
  • d_smagin for the cywin version of the GCW-Zero toolchain.
  • sparkymark79 for pestering me :)
  • hi-ban for testing and updated icons.
  • Justin for a GCW-Zero.
  • notaz for Cyclone and Pandora's SDL (yes, there is a Pandora version coming)