icon Screenshot My Arcade

written by Robert Hurst

News

14-Dec-2008

Page last updated.

26-June-2008

The creation of this project page.

Foreword

There are a lot of spectacular engines created that allow for the hardware it emulates to continue to operate its software, but on modern hardware.  Many may mock the idea of this software continuity, claiming these "blasts from the pasts" are exclusive to the old fossils of today that grew up with those wondrous machines.  Others may think of it as a window into history, like a museum or planetarium, that allows for a real hands-on look at the personal computer evolution.

Objective

Just as there are machine emulators, there are also many frontends to allow for easy pushbutton access for launching them and their wares.  This project took on the task of not only providing an easy launch experience, but also to run on both Linux and Windows, detecting and using popular game controllers, and taking into account that the hardware may be modest, so either a 2D or 3D accelerated card can be used.

Configuration

The heart of this frontend's configuration lies within the file, myarcade.xml, and can be edited for customizations using any ordinary text editor.  A summary of its elements and attributes follow:

This resources file is broken up into <section> elements that can be named to whatever is desired, i.e., yourname.  Within the named section, there must be an engine attribute defined and an accompanying <gui> element with at least one <yourname> element.  Within each <yourname> are its <title> list.  A special section -- named as engine -- is where the emulation and multimedia engines are defined and is required for operation.

A sample template follows:

<resources>

... is a required tag for the ClanLib XML parser.

<section name="oldgames">

... start of a new named section.

<gui name="theme" path="neon" bgcolor="0,0,0,255" fgcolor="0,255,0,255" />

... a required tag to set this section's graphical user interface theme.  In this example, myarcade will retrieve all of its graphics within the subfolder themes/neon using a black background color and a green font for its foreground color.

<oldgames name="computer" engine="mess" path="mess">

... start a list of new titles using the MESS engine.

<title name="program" binary="image.dat" help="mess/program.pdf" mouse="true" snap="snap/program.jpg">
	1979 ACME Inc.

	(Left) rotate ship left
        (Right) rotate ship right
        (LCtrl) fire
        (LAlt) thrust
        (Space) smart bomb
</title>

... a title named "program" that lists under the "computer" section.  Extended attributes include the name of the binary to pass along to its engine, a pointer to a help document file, a mouse is recommended, and a screenshot picture file.  Any text listed within the <title> is also displayed along with the title.

</oldgames>

... the required tag to denote an end of a section.

<engine name="mess" command="mess" options="-inipath etc" sdl="-video soft -nokeepaspect"
 HOTROD="-cfg_directory mess/cfg/HOTROD"
 PS3="-cfg_directory mess/cfg/PS3"
 WIN32="-video d3d"
 X360="-cfg_directory mess/cfg/X360">
	Powered by M.E.S.S.
	(Scroll Lock) toggles keyboard
	(TAB) for more options
	(ESC) to exit system
</engine>

... an emulation engine entry called by a launched title.  Its command-line is constructed by these attributes:

command[.exe] [options] [HOTROD|PS3|X360] [WIN32] [sdl] [tail]binary

The project presumes that each emulation engine is already preconfigured with optimal values, but allows here to override those settings on the command-line depending on conditions, such as platform type or which controller was detected at startup, or a video card is not 3D capable.

<engine name="movie" command="mplayer" options="-really-quiet -fs" />
<engine name="music" command="mplayer" options="-really-quiet" />

... these are multimedia tags and options for how to play movies and music files found in the media subfolders, only during idle time.

</section>

... the required tag to denote an end of a section.

</resources>

... the required tag to denote the end of these resources.

Note: each emulation engine has its own configurations, so reading up on each to maximize its potential on the target hardware is strongly recommended.  Some tips at the end of this page may provide additional insights.

Operation

The binary archive is all you need to download to use.  Unpack into any storage folder, even CD-ROM with autoplay, to have fun with it!  A readme file is included in both text and web browser formats.

Windows

Includes all these fine executables to run on any WIN32 or WINE platform:

Linux

A wrapper script, myarcade.sh, is provided for Linux (tested under Fedora only) that will detect and run either the 32- or 64-bit executable, prompt for settings, and create a nice GNOME desktop launcher.  It also tests for the presence of certain RPMs and will install them, if possible.

Download

The source code is written in C++ and leverages the cross-platform ClanLib Game SDK.  It includes a Code::Blocks project file for easy compiling and debugging under Linux.  It also includes a Microsoft Visual 2008 Express project file for producing an executable suitable for their Windows operating systems, as well as the ClanLib include headers and link libraries -- but it does require the installation of DirectX SDK (August 2007) for compiling.

Click here for the latest source code (ZIP).

Click here for My Arcade 2008 DVD (ISO).

Click here for My Arcade 2008 DVD insert (PDF).

Tips

MAME / MESS

Linux with 2D only:

	-video soft
	-nokeepaspect
These options may be tweaked for visual improvements:
	-nounevenstretch
	-resolution0 640x480

Linux with 3D acceleration:

	-video opengl
	-keepaspect

For pulseaudio users, you might need to override the SDL audio driver, such as:

	env SDL_AUDIODRIVER=dsp mame pacman
As of SDLMAME .127, this option can be used instead:
	-audiodriver dsp

Windows works best with:

	-video d3d
And leverage multi-threading processors to improve internal emulator functions:
	-mt
Refer to the new MESS manual.

STELLA

Plainly speaking, Stella is the balls when it comes to Atari 2600 (VCS) emulation. It already features an excellent front-end to manage configuration options and cartridge loading. It exposes everything on the command-line as well, although it can be quite daunting to send keyboard / joystick mappings. Nonetheless, it simply works.

UAE

It's too bad the Linux port E-UAE from WinUAE is lagging so far behind nowadays. Because of that fact, I am seeing degradation with the emulator, particularly with timing issues, i.e., bad tempo in music playing, and sometimes it will "catch-up".

WinUAE 1.5+ seems to have fullscreen flickering issues for my Radeon 3870 x2 card, so I operate it in windowed mode without issue. NOTE: I discovered that "disabling AI" in ATI's Catalyst Manager fixed the flickering issue -- yeah!!

I spent a fair amount of time breaking out the cfg files into hardware, os, and diskettes -- making their options compatible between the two ports. And leaving as much of their respective "default" values out. What is nice is that the last command-option used is the last value to take effect. So, a typical command-line might look like this for an original stock Amiga 500:

	uae -s gfx_fullscreen_amiga=true -f uae/cfg/model/a500.uae -f uae/cfg/os/ks120.uae -s joyport0=mouse -f uae/cfg/game/advconst.uae
An original U.S. version of the Amiga 2000 with Kickstart 1.3, but using a HotRod or X-Arcade as the joystick controllers:
	uae -s gfx_fullscreen_amiga=true -s joyport0=kbd5 -s joyport1=kbd4 -f uae/cfg/model/a2000.uae -f uae/cfg/os/ks130.uae -f uae/cfg/game/tvsbb.uae
The TV Sports: Basketball file requires these options to override the NTSC configuration:
	;must be in PAL mode
	ntsc=false
	chipset_refreshrate=50

VICE

As far as I have experienced, perfect emulation of all Commodore 8-bit computers, but does require that you to know how to operate a Commodore computer to begin with... which is to say, any Commodore computer is relatively easy to operate, and VICE's user interface exposes those operations in avariety of ways, but you have to know what you are doing to get results. Frankly, I wish they could somehow merge the great audio / video driver capabilities found within sdlmess into their project. And I am amazed they still maintain a usable DOS port.

Overall safe improvements that are not on by default:

	-refresh 1
	-sound
	+confirmexit
To improve software loading speeds on non-copy-protected disk images:
	+truedrive
Other options just for VIC20:
	-ntsc
	-memory none
	-VICdsize
	-VICdscan
Other options just for C64:
	-ntscold
	-VICIIdsize
	-VICIIdscan