Installing MESS

From Ninerpedia
Jump to navigation Jump to search

From experience I know that the installation of MESS may become somewhat tricky, but eventually you should get a perfectly running system if you keep all issues in mind. I will provide a step-by-step description to guide you during the installation procedure for MESS. The version used here is 0.142.

Installing the Windows version


On the MESS download page you will find the most recent version of MESS, and also earlier versions which may be of interest if there is something wrong with the new version or if you have any other reason to use an earlier version.

However, please understand that you cannot expect appropriate support for earlier versions. Newer versions come up just because some errors have been corrected, and if you encounter some problems, what else should you expect but be advised to use the latest version? This may mean that some features are different, some menus look different, or - in the worst case - something stopped working. In that case we would really appreciate if you notify us so that we can find out how to correct the issue.

In the table "Current Windows Release" you will find three download options:

  • The current version as a 32-bit i586 build.
  • The current version as a 32-bit i686 build.
  • The source code of the current version.

Unless you are using really old hardware, you should use the i686 build.

Concerning the MESS sources you should read the comments below. You should use the source (, Luke) also if you want to build a 64-bit version.

Nightly build: If you are more adventureous, and you just cannot stand to wait until the next version is officially released, you can download a nightly build. This build is created each day from the current head of the source code revisions. While this may give you some last minute fixes that did not make it into the official version, you may as well get a completely broken version.

Unpack the file

Downloading delivers a ZIP file which you should save to your file system. MESS currently does not use an installer, so you simply unpack the file where you want it to be. Assume that you want everything to be installed in C:\prg\mess, you should create this path in the Explorer, then navigate to the folder where the downloads are stored. Double-click the ZIP file, mark all files and copy them, and then open the C:\prg\mess filder in Explorer, where you paste the copied files into.

Install the ROMs

In the C:\prg\mess folder you should find a file like mess.exe or messpp.exe. Up to now, MESS will not be able to execute any emulation, since the required ROMs are missing. The next step is to install the ROMs, and the default path is the roms subdirectory (i.e. C:\prg\mess\roms). If this folder is missing, create it with Explorer.

Now where do you get the ROMs from? The problem is that almost all ROMs have not been released into public domain and are therefore subject to licensing. Due to the giant number of emulated systems, MESS simply cannot afford to license the ROMs.

System ROM files are ZIP files containing the dumps of the various memory chips in the system. For the different TI systems, we need a set of ROM contents specific to the respective system.

Let's assume you have found the file somewhere; next, you drop this file into the roms folder that you previously created.

Do not unpack the ZIP file that contains the system ROMs. Just drop it in the roms folder.

Start the emulation

Double-click the messui.exe (i586) or messuipp.exe (i686) file. The MESS UI starts up, looking similar as in this screenshot. Scroll down the list of systems until you reach the TI systems. Note that the Geneve is listed far above, at G, of course.

The MESS system selection

Double-click the row starting with TI-99/4A Home Computer (Europe).

Note to the VirtualBox users. MESS requires DirectX, so you need to install the VirtualBox Guest Additions, or MESS will abort with an error message. Remember that you must install the Guest Additions in Safe Mode in order to get DirectX functionality. You can check DirectX by executing dxdiag.

Now the TI-99/4A master title screen should show up fullscreen. You can now use the emulation. If you prefer to operate in a window, right-click on the menu selection in the MESS UI (which you just double-clicked to start it) and choose Properties for ti99_4x.c. There, select the tab Display, check Run in a window and uncheck Start out maximized. Now you will get a window in which the emulation starts. The window size should be selectable in the MESS UI somewhere, but I have not found it yet. You can use the mouse to adjust the window size.

Start with a cartridge

Cartridges are files like the system ROMs, but they carry the extension rpk. In order to insert a cartridge before starting you can select the cartridge in the MESS UI.

If not already available, create a new folder cartridges (C:\prg\mess\cartridges). Copy the Editor/Assembler cartridge into this folder; it is normally named editor_assembler.rpk.

Now you can insert this cartridge into the cartridge slot. The TI emulation features a nice enhancement - it has a multi-cartridge slot, one of the kind that was planned but never built. You can plug in up to 4 cartridges at the same time and select via the console.

Have a look at the MESS UI. Just right from the system selection there is a column with three tabs (Picker, Device View, Software). Select the tab Device View. Click on the button (three dots) next to the uppermost Cartslot device, and a file manager window will open. You can now navigate to the cartridges folder and select the cartridge.

You can add this software path to the list of known directories in the pull-down menu Options->Directories so that you will immediately go to this folder the next time.

When you now double-click the ti99_4ae row, the system will start up with an inserted cartridge. Verify it by going past the master title screen.

Use floppy disks

Similar to cartridges, floppy disks are stored as one single file which contains the whole contents of the disk. These image files are, accordingly, 90K in size for a SSSD disk and 360K for a DSDD disk. Disk images are expected to have the suffix dsk.

You can insert a floppy disk right in the same way as you did with cartridges, but this time you select the uppermost Floppy Disk device.

Get into TI BASIC and type


If you get an error message like BAD NAME, you should make sure that the HFDC is selected as floppy controller. You can check this in the MESS OSD menu by the menu item Driver Configuration as described below.

Insert or change a cartridge at runtime

You can, of course, replace the disks and cartridges at runtime, as you could do with the real console. This cannot be done from the MESS UI, but you need to use the OSD (on-screen display) menu within the emulation.

The MESS OSD menu

You can make the OSD menu pop up by pressing the TAB key within the keyboard partial emulation mode. You can toggle between the full emulation mode and the partial emulation mode using the Scrl-Lock key (default). In case the Scrl-Lock key is not available you can put the mode switch on any other key.

The OSD menu allows you to change the configuration of the TI emulation, like activating or deactivating peripheral cards (Driver Configuration) or setting DIP switches on cards (Dip Switches).

Caution: In partial mode, pressing ESC will exit the emulation immediately. However, ESC is also used to step back in the OSD. Thus, always make sure you immediately switch back to full emulation mode when you exit the OSD.

In the File Manager you will find again the slots and drives you already noticed in the MESS UI under Device View. Here, the navigation is not quite so comfortable, although the mouse is also supported. You can change inserted media just by selecting a new entry, but you can also remove the cartridge or disk by selecting Empty slot.

Notice that when you insert a new cartridge, the emulation will automatically reset. This is partly intentional (as it happens with the real console as well), partly a requirement of the current implementation (as inserting the cartridge changes the device tree within the emulation, which is currently updated by a reset). That is, at this time there is no way of sticking tape over the reset line.

Installing the Linux version


As said above, on the MESS download page you will find the most recent version of MESS. However, for Linux there is no pre-built version here. You have to build the version on your system.

One notice here: The MESS download page only contains the source code for the MESS-specific parts. This will not suffice to build the system. You have to download the MAME base of the same version number, unpack it in your filesystem, and unpack the MESS sources directly over them. See the MAME download page for downloading MAME.

Build the sources and install

Make sure you have a proper build environment. You need the GCC C and C++ compilers. The source package contains a makefile, so building is no rocket science. Have a look at our detailed building instructions.

After building the MESS executable you have one of the following files:

mess mess 32-bit standard build
messd mess 32-bit debug build
mess64 mess 64-bit standard build
mess64d mess 64-bit debug build

The debug builds are much larger than the standard builds, and you may experience bad performance. For a normal usage, the standard builds are clearly recommended. However, the debug builds are quite useful for debugging MESS, especially within the GNU debugging tool gdb.

The executables are all statically linked. Thus you can copy the executable file into some part of your PATH; if you want to provide it to all users on the system you may want to copy it to /usr/local/bin or similar locations.

For the following descriptions we assume you have copied the mess executable into $HOME/mess.

Install the ROMs

Create a roms directory in your mess installation directory. Copy the file (or,, etc.) into this directory.

user@host:~/mess> mkdir roms
user@host:~/mess> cp roms

Create a config file

You may want to create a configuration file first in order to adjust some setttings. If the executable is called mess64, type

user@host:~/mess> mess64 -createconfig

Check the contents. We want to make sure that writeconfig is 0, since a 1 causes all changes of inserted media to become saved in this file, which is most likely not what you prefer.

readconfig                1
writeconfig               0

Check the paths. It is important that the rompath cites the directory where you put the ROM zip files. Hashes are not important for the TI emulations.

rompath                   roms
hashpath                  hash
samplepath                samples
artpath                   artwork
ctrlrpath                 ctrlr
inipath                   $HOME/.mess;.;ini
fontpath                  .
cheatpath                 cheat
crosshairpath             crosshair 

If you have OpenGL support in your system you should make use of it, since it ensures best video performance. Linux distributions should offer the glxgears test program, and if you can see spinning gears in a window, OpenGL is available. Also, I don't like fullscreen display, so I set window to 1 and maximize to 0.

video                     opengl
numscreens                1
window                    1
maximize                  0

And finally you want to have a comfortable window size.

screen                    auto
aspect                    auto
resolution                640x480

Launching MESS

You are certainly already familiar to Linux, and you should not be surprised that the prefered way of starting MESS is by command line in a terminal. You can, of course, create an icon in your favorite window system (like GNOME or KDE) that launches MESS with some appropriate switches. Maybe you want to create a small script file that launches mess with your favorite options.

You will need some libraries against which the binary file has been linked. These libraries are automatically installed when you install the development packages as described in Building MAME. If you use a pre-built package please check with your Linux distribution whether you already have the libraries.

If the executable is in your PATH, just start it by name, else put the path to the executable before.

user@host:~/mess> mess64

This will give you a selection of systems as available by the ROM files in your roms directory. If you already know that you want to start the TI emulation, type

user@host:~/mess> mess64 ti99_4a

MESS has a set of drive emulations, so you might want to start the emulator with an inserted disk.

user@host:~/mess> mess64 ti99_4a -peb:slot8 hfdc -flop1 mydisk.dsk -flop2 anotherdisk.dsk

This will mount the image files to DSK1 and DSK2. Also, since version 0.145, you have to define the controllers plugged into your emulated PEB, like the HFDC in slot 8. If you forget this parameter you will not be able to use the floppy, just as if you fail to plug in the controller in the real system.

Of course, you may also start with a module inserted:

user@host:~/mess> mess64 ti99_4a -cart1 editor_assembler.rpk -peb:slot8 hfdc -flop1 eadisk.dsk

If Editor/Asembler complains about a missing 32K expansion you should either turn on the "console 32K" mod, or you plug in the 32K expansion in another slot. Check the slot options with

user@host:~/mess> mess64 ti99_4a -listslots

You can insert, change, and remove all media from the On-Screen Display - the same one as in the Windows version as shown above.

Your Geneve emulation may be started with

user@host:~/mess> mess64 geneve -peb:slot8 hfdc -hard1 mfmdisk.hd -flop1 working.dsk

if you have put the contents of your hard disk into the mfmdisk.hd file before. This can be done with the chdman tool (part of the MESS distribution).

Additional configurations

If you have an international keyboard you may encounter some dead keys. This can be fixed by using a keymap. The keymap files are part of the source distribution. You may want to copy them into your mess directory. Therefore, my usual script file to start MESS looks like this:

./mess64 ti99_4ae -keymap -keymap_file keymaps/ $*

which allows me to add some switches to the invocation of this file, as, for instance, to mount disks or cartridges.