Khameleon Documentation

Welcome to Khameleon!

Khameleon is a front-end program. A front-end is a menu system that allows players to select from a list of games. Once a game is selected from the list, the game is launched using an appropriate emulator.

Khameleon Home Page

Starting Out - Install the Application!

Khameleon consists of several application, three of which are important to the user. They are the frontend itself (khameleon), the configuration program (konfig) and the skin editing program (skinner).

Launch the installer application, which will be named "khameleon_setup.exe".

Click "Next" to proceed.

Next, choose a directory in which to save the Khameleon applications, and files.

Khameleon will install icons for the frontend, the config program, the skinner program, and the uninstaller into a start menu group of your choice.

Another available option is to create a desktop icon. Shortcuts to the Khameleon application, the config program, and the skinner will be placed here if the checkbox is left checked. There isn't any option in the installation for installing a Quick Launch icon in the task bar.

Once you have set up the installation process the way you want it, click Install.

There are more than 1000 source code files so it may take a couple of minutes, depending on how fast your computer is.

Once the installation is done, you will have the option of running the front end right away, or running the config program right away. You probably should uncheck "Launch Khameleon" so you can get the front end set up first.

That's it, you're done!

Launch the Konfig Application

After launching the configuration application after installing you may get a window that looks like this:

Not to worry, this is just the console screen that applications compiled with MinGW create to display standard output. MAME creates a black screen very similar to this. Just minimize this black-screened window.

You should see a window that looks like this:

Now you're ready to configure Khameleon!

Configuring an Emulator

The first things you'll need to configure are your artwork directories and an emulator.

Start off by configuring MAME and then you can go back and configure other emulators later on.

In the main dialog of the Konfig program, you'll see a list box with the filenames of your emulator description (.emu) files. Khameleon is shipped with a single .emu file configured in the front end, but there are other .emu files included in the config subdirectory.

For MAME, click on "config\mame.emu" and then click on "Configure" to the right of the list box.

You should see something like this:

It's a pretty complicated dialog box. Let's break it down into pieces and handle one piece at a time.

First, let's make sure your ROM paths are set up correctly. Here's what the ROM path part of the dialog looks like.

Depending on your installation, you may have several ROM paths. You can add ROM paths either by entering them into the text box by hand and clicking <--Add--- after each one, or by clicking "Browse ROM Path...", navigating your way to the ROM path, then clicking OK to the Browse Rom Path, followed by <--Add--- If the provided value c:\mame\roms is not what you want, just click on the list box item and then click "Remove".

Don't forget to check the ROM extension box on the far right. MAME uses .zip for it's rom extension, other emulators may use something else.

You'll need to set up an entry in the "Emulator Launch Commands" section if you want to generate a game list from MAME. Here's what that part of the Emulator Configuration dialog looks like.

The Launch Commands section describes what commands are used to launch the emulator. When the frontend launches an emulator, sometimes more than one program is run. A control panel viewer may be invoked, a setup program for a keyboard encoder, a LED control program, or whatever may be run. When a game is launched with the emulator, the commands are run in the order that they are listed in the list box. The default configuration at installation is for one launch command, which launches the emulator.

When a launch command is created or edited, a separate dialog is shown. This dialog looks like this:

This dialog is fairly straighforward. You just enter (or browse to) the path that the executable resides in and the name of the executable.

The Program Parameters part of the dialog box is used when the emulator is launched, but not in the case that MAME is used for list generation. In this area you can put custom parameters that may not be in your mame.ini file. Leave this part alone for now.

The "Wait for program to complete" is used, the frontend will wait on that command to complete before launching the next command. For the default, leave it checked, so Khameleon will wait for MAME to complete. Once you're done, click OK to go back to the Emulator Configuration dialog.

You should be ready to generate a game list now. Although Khameleon comes with a game list, it does not have every game in it. Let's create a new category file by clicking "Create". Here's the dialog that will come up.


The first thing to fill out the category name. This can be something descriptive, such as "All Games", or whatever. Your skin can be set up to display the category name, if desired.

You can uncheck the "Use Category Image", this option is not used in any of the skins shipped with Khameleon. This check box will allow an image to be displayed according to the category. If your category has two-way joystick games only, you could create an image of a joystick with left and right arrows next to it, to help identify the category of games to the user of the skin.

The "List Filename" field tells konfig what the name of the generated list is. Lists are always saved to the "lists" subdirectory in your Khameleon installation.

The "Filter Filename" field tells konfig how to filter the games. The filter will be displayed in the large edit control below the "Save Filter" button. The filter is in SQL, so very powerful filters can be made easily. If you want to create a new filter file, press "Copy Filter From File..." and select an existing file, then modify as desired. You'll need to select a filename to save the filter under. Once you're done editing the filter, press "Save Filter".

The MAME emulator generates XML which describes what games are available and other information about each game, including whether the game is playable, the year it was made, and so on. There is information missing from the XML, such as whether the game contains mature content. These files, catver.ini and so on, are optional. They need to be saved in the lists subdirectory of your Khameleon installation.

The checkboxes below the edit box are list generator options:
Use Clones - Include "clone" games. MAME separates games into "Parent" games and "Clone" games, because many games share program code and other architectural details. This option doesn't really have much meaning outside MAME.
Strip Descriptions - Many descriptions of games have detail that may not be needed or wanted, such as "Japan set 1" or whatever. This option, if checked, strips the extra description information out.
Audit ROMs - This options will exclude games for which you do not have the ROM. It does not audit MAME CHDs.
Unique Games - MAME frequently has many different copies of a game that are different only superficially. This option will take the extra games out. This options works well with Strip Descriptions.

The last controls are the "Help" button and the "Save Game List" button.