Actually, all Linuxes are alike. Almost. In the end, you run into problems because one system is by default installed with some library that another does not use. Since these libraries are installed only once, the challenge is to find out which libraries need to be installed and which are already there, and this is again different from system to system.

Thus, not the Linuxes are different, but their installation evolves over time. I will give some hints for installing MAME on different systems on this page.

Running MAME

MAME is dynamically linked against some libraries which may not be installed on your machine.

But fixing this is a simple job which you have to do only once. The following commands have been tested on a fresh installation. After installing, you should be able to run MAME. (Please report if you find a different situation.)

Unfortunately, different Linux flavors come with different package installers. And to make things worse, they use different package names for the same libraries.

If your system does not have the required libraries, you will see an error message like this:

$ ./mame ti99_4a
./mame: error while loading shared libraries: xxxx: cannot open shared object file: No such file or directory

The xxxx is the file name of the missing library file. The package name is usually slightly different.

openSUSE Tumbleweed

(July 2023)

sudo zypper install libSDL2_ttf-2_0-0

Ubuntu 22.04 LTS

sudo apt-get install libsdl2-2.0-0
sudo apt-get install libsdl2-ttf-2.0-0
sudo apt-get install libqt5widgets5

Installing the TTF lib will also install the SDL2 base lib, so you may skip the first command.

Linux Mint 19.3

sudo apt install libsdl2-ttf-2.0-0
sudo apt install libqt5widgets5

Configure it once

Open a bash shell and type

user@host:~$ cd mame
user@host:~/mame$ ./mame -createconfig

This creates a file ~/mame/mame.ini. Open it in some text editor.

In the second section ("CORE SEARCH PATH OPTIONS") you will find a setting rompath. This is relative to your base directory ~/mame; typically, you will find the value roms (i.e. it will be ~/mame/roms). This subdirectory is already created by unpacking the zip file (or after the build process). If you like, you can append ;cartridges or similar in order to separate between modules and system roms. You must make sure that there is a directory ~/mame/cartridges; if needed, create a new folder of that name in your explorer.

Scroll down to "OSD VIDEO OPTION"; change window to 1 to get a windowed output, otherwise it is fullscreen. In the next section "OSD PER-WINDOW VIDEO OPTION" you should set the first resolution property to 1280x960 or bigger, as you find suitable.

Note that this configuration is only done once, when you install MAME, as we show it here.

Install system ROMs and cartridges

Go to our WHTech repository and download ti99_complete.zip from the directory /System ROMs/MAME. Unzip its contents into the roms subdir. Do not unzip the zip files inside.

Also from WHTech, download all_carts.zip from /Cartridges/MAME. It contains a collection of zip files, each one for a cartridge; do not unpack these cartridge zips.

Store the cartridge zips into the cartridges subdir if you added that location to the rompath, otherwise move all cartridge zip files to the roms subdir.

Create starter script files

The following examples will only work if the specified disk or cassette image files are actually present at the indicated paths (or in the working directory if no path is specified). The backslashes are used to continue the command line on the next line; do not forget them.

Example 1

Plain console, cassette file inserted

#!/bin/bash
cd ~/mame ./mame ti99_4a -cass1 cassette.wav

Example 2

External 32K memory expansion, TI floppy controller, myfloppyimage.dsk inserted in DSK1

#!/bin/bash
cd ~/mame
./mame ti99_4a -ioport peb -ioport:peb:slot2 32kmem -ioport:peb:slot8 tifdc -flop1 myfloppyimage.dsk

Example 3

Cartridge Extended Basic, external 32K memory expansion, RS232 card, HFDC controller, one drive, myfloppyimage.dsk inserted

#!/bin/bash
cd ~/mame
./mame ti99_4a -cart exbasic -ioport peb -ioport:peb:slot2 32kmem \
-ioport:peb:slot7 tirs232 -ioport:peb:slot8 hfdc \
-flop1 myfloppyimage.dsk

Example 4

Cartridge Editor/Assembler, external 32K memory expansion, Speech synthesizer, Horizon RAMDisk, HFDC, hard disk, one floppy image inserted

#!/bin/bash
cd ~/mame
./mame ti99_4a -cart editass -ioport peb -ioport:peb:slot2 32kmem \
-ioport:peb:slot3 spchsyn -ioport:peb:slot4 horizon -ioport:peb:slot8 hfdc \
-ioport:peb:slot8:hfdc:h1 generic -hard1 myharddisk.hd -flop1 myfloppyimage.dsk

Example 5

P-Code system, external 32K memory expansion, TI floppy controller, one drive, Editor/Filer inserted from folder C:\prg\mame\disks\UCSD

#!/bin/bash
cd ~/mame
./mame ti99_4a -ioport peb -ioport:peb:slot2 32kmem \
-ioport:peb:slot3 pcode -ioport:peb:slot8 tifdc \
-flop1 disks\UCSD\ucsd_pascal_editor_filer_1.dsk

Note: You must turn on the P-Code card in the DIP switches menu of the On-screen display (OSD). The card is turned off by default because it immediately takes over control on start.

Example 6

Geneve, Horizon RAMDisk, Speech, RS232, HFDC, one hard disk

#!/bin/bash
cd ~/mame
./mame geneve -peb:slot4 horizon -peb:slot5 spchsyn \
-peb:slot6 tirs232 -peb:slot8 hfdc \
-ioport:peb:slot8:hfdc:h1 generic -hard1 myharddisk.hd
We use cookies
We use cookies on our website. All of these cookies are essential for the operation of the site. They are only used on this site and not transmitted to any third party. None of them are Tracking Cookies, and they do not serve to analyze your behavior.