- Details
- Category: MAME
The key to switch between Full Keyboard Mode and Partial Keyboard Mode is preset to Scroll Lock. If you want to map it to another key, simply define the uimodekey property in mame.ini.
Setting in mame.ini
... #
# OSD KEYBOARD MAPPING OPTIONS
#
uimodekey ENTER_PAD
This would change the menu key to the Enter key on the number keypad. You can choose any key from this set:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, ESC, TILDE, MINUS, EQUALS, BACKSPACE, TAB, OPENBRACE, CLOSEBRACE, ENTER, COLON, QUOTE, BACKSLASH, BACKSLASH2, COMMA, STOP, SLASH, SPACE, INSERT, DEL, HOME, END, PGUP, PGDN, LEFT, RIGHT, UP, DOWN, 0_PAD, 1_PAD, 2_PAD, 3_PAD, 4_PAD, 5_PAD, 6_PAD, 7_PAD, 8_PAD, 9_PAD, SLASH_PAD, ASTERISK, MINUS_PAD, PLUS_PAD, DEL_PAD, ENTER_PAD, PRTSCR, PAUSE, LSHIFT, RSHIFT, LCONTROL, RCONTROL, LALT, RALT, SCRLOCK, NUMLOCK, CAPSLOCK, LWIN, RWIN, MENU, CANCEL
If you do not yet have a mame.ini file in your folder, run MAME with the -createconfig option from a command shell:
mame -createconfig
Command line option
As with all settings in mame.ini, you can also provide this setting in the command line:
mame64 ti99_4a -uimodekey ENTER_PAD
- Details
- Category: MAME
The MAME emulator is operated via the keyboard and a graphic menu. However, the system that it emulates also make more or less extensive use of the keyboard, so we should expect conflicts.
Hence, MAME defines two operation modes and two layout modes of the keyboard:
- Operation modes
- Full keyboard mode
- Partial keyboard mode
- Layout modes
- Emulated keyboard mode
- Natural keyboard mode
You can change the key for switching between the modes if your keyboard does not have a Scroll-Lock key: Change the UI mode key.
The natural keyboard
The natural keyboard posts complete strings for each keystroke but throttles the output.
Example:
- © -> (C) (three characters)
- ß -> ss
- æ -> ae
Alpha Lock: Caution must be taken that Alpha Lock is in the release state when starting the emulation. The reason is that the Alpha Lock state cannot be changed in natural keyboard mode. Instead, the case is controlled by the PC keyboard and its Caps Lock state. If Alpha Lock is on (from the last emulation run with emulated keyboard), all characters appear as upper case, regardless of the Caps Lock setting.
- Details
- Category: MAME
We're going to describe a fast way to install MAME on your Windows computer. If you follow these steps closely, there should not be any problem getting it running.
Check your Windows release
You should run a post-XP version (Vista, 7, 8, or 10). Do not try any older release like Windows 98, ME, or 2000. Windows XP is not recommended for security reasons, and MAME is not tested to run on it.
Get the MAME package
Download the most recent MAME release from the MAMEdev website from the section Official Binaries. You should use the 64 bit version (unless you know that your computer is 32 bit only).
Please do not attempt to install an older release, particularly not if its release number is much smaller than the current one. There have been changes in the meantime concerning the ROM formats, and this may make it impossible to run MAME.
Install the files
Run the exe file; this is just a self-extracting archive file. Choose your target directory; for easier configuration, a simple path like C:\prg\mame is recommended. The extracted files will be located in that directory.
Note that MAME does not alter your registry file. This means you can at any time simply remove the MAME installation, install another one in a separate directory, or reinstall it if desired. Uninstallation means that you have to remove that directory.
Configure it once
Open a command shell and type (in black)
C:\Users\Whoever> cd \prg\mame
C:\prg\mame> mame64 -createconfig
C:\prg\mame> exit
This creates a file C:\prg\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 C:\prg\mame; typically, you will find the value roms (i.e. it will be C:\prg\mame\roms). This subdirectory is already created by unpacking the zip file. 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 C:\prg\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 640x480 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, too.
Create a starter batch
Create a small batch file to launch MAME. You may drop that on your desktop. For that, open some text editor and type
c:
cd \prg\mame
mame64 ti99_4a
Save it as ti99.bat to your desktop, or anywhere else as desired.
You can now edit this starter batch or create copies. You can change the system name (e.g. geneve, ti99_8), add cartridges (-cart exbasic) or peripheral devices (-ioport peb -ioport:peb:slot8 hfdc), and add floppy disks (-flop1 mydisk.dsk).
If you prefer the 32 KiB internal 16-bit RAM expansion, you can turn it on in the "System configuration" menu of the on-screen display (OSD). You then have to remove the 32kmem configuration below in all examples, however.
Example 1
Plain console, cassette file inserted
Important: This and the following examples will only work if you actually offer the specified disk or cassette image files at the indicated paths (or in the working directory if no path is specified).
c:
cd \prg\mame
mame64 ti99_4a -cass1 cassette.wav
Example 2
External 32K memory expansion, TI floppy controller, myfloppyimage.dsk inserted in DSK1
c:
cd \prg\mame
mame64 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
c:
cd \prg\mame
mame64 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
c:
cd \prg\mame
mame64 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
c:
cd \prg\mame
mame64 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
c:
cd \prg\mame
mame64 geneve -peb:slot4 horizon -peb:slot5 spchsyn -peb:slot6 tirs232 -peb:slot8 hfdc -ioport:peb:slot8:hfdc:h1 generic -hard1 myharddisk.hd
Reconfiguration
If you do not plan to change your configuration too often, you may want to set it inside MAME using the OSD. You can use the menu selection Slot devices to change the peripheral box contents, for example. Note that this change is only temporary until you leave MAME.
If you want to keep changes after stopping MAME, you must set readconfig and writeconfig to 1 in mame.ini.
When you use this setting, be aware that your command-line arguments may be overridden by what you had set in the OSD menu before you exited MAME the last time.
- Details
- Category: MAME
While the simulation of hardware circuits is in no way problematic with respect to copyright (since we produce a new system by observing the behavior of the original one), the distribution of memory contents is generally subject to copyright, and unlicenced distribution is considered an offense by most jurisdictions. Some countries know exemptions in the case of legacy software that is not runnable without the hardware, when the hardware is not available anymore. Other countries do not have corresponding exemptions. So you have to be aware of the following:
Consequently, I will not provide links for downloading these files. Find out by yourself how to get them. The safest way (from a legal standpoint) is to dump the contents from the real equipment if you own such a system.
At least for the TI-99/8 we have a written consent from TI that the ROM contents may be freely distributed. For TI-99/8 ROMs have a look at Planet99.net (login required).
Rumours are that you should also try the FTP site of WHTech.
The ROM dumps used for the TI emulations can be identified by this list. The required files must be present when starting the emulation. If an optional file is missing, the emulation will run, provided that the affected component that needs the ROM is not accessed. You will get a warning message stating that ROMs are missing and that the emulation will probably not run correctly.
Systems may be parents of others. In that case, the child systems borrow the ROM files from the parents if they do not have them in their own ZIP file. This means that if you have the ti99_4a.zip file, you can always launch the European version ti99_4ae since all files are equal, and the ti99_4a is the parent of ti99_4ae.
- ti99_4 is the parent of ti99_4e (european version)
- ti99_4a is the parent of ti99_4ae and ti99_4ev
- ti99_8 is the parent of ti99_8e
MAME is tolerant about the file names inside the ZIP files; the only important key is the hash code. ROM contents are compared by their hash code to make sure that the contents are authentic. Files may be renamed within the ZIP files.
The following table refers to MAME versions 0.212 and higher. The ROM dumps are distributed over a set of ZIP files. Each ZIP file corresponds to a single system or peripheral extension.
Main systems
These are the ROMs for the consoles, the Geneve, and the SGCPU.
TI-99/4A (ti99_4a)
Also comprises the European version (ti99_4ae)
File name | CRC | SHA-1 | Description |
994a_grom0.u500 | 2445a5e8 | ea15d8b0ac52112dc0d5f4ab9a79ac8ca1cc1bbc | GROM chip 0000-17ff |
994a_grom1.u501 | b8f367ab | 3ecead4b83ec525084c70b6123d4053f8a80e1f7 | GROM chip 2000-37ff |
994a_grom2.u502 | e0bb5341 | e255f0d65d69b927cecb8fcfac7a4c17d585ea96 | GROM chip 4000-57ff |
994a_rom_hb.u610 | ee859c5f | a45245707c3dccea902b718554a882d214a82504 | ROM chip 0000-1fff high bytes |
994a_rom_lb.u611 | 37859301 | f4e774fd5913b387a763f1b8de5524c54b255434 | ROM chip 0000-1fff low bytes |
TI-99/4A modified for use with EVPC (ti99_4ev)
Inherits from ti99_4a
File name | CRC | SHA-1 | Description |
994ev_grom1.u501 | 6885326d | 1a98de5ee886dce705de5cce11034a7be31aceac | Modified GROM chip 2000-37ff |
TI-99/4QI (ti99_4qi)
Inherits from ti99_4a
File name | CRC | SHA-1 | Description |
994qi_grom0.u29 | 8b07772d | 95dcf5b7350ade65297eadd2d680c27561cc975c | Modified GROM chip 0000-17ff |
Geneve 9640 (geneve)
File name | CRC | SHA-1 | Description |
genbt098.bin | b2e20df9 | 2d5d09177afe97d63ceb3ad59b498b1c9e2153f7 | Boot EPROM v0.98 ("Swan") |
genbt100.bin | 8001e386 | b44618b54dabac3882543e18555d482b299e0109 | Boot EPROM v1.00 |
Geneve 9640 modified (genmod)
Reuses the boot EPROM from the Geneve 9640 (v1.00)
File name | CRC | SHA-1 | Description |
gnmbt100.bin | 8001e386 | b44618b54dabac3882543e18555d482b299e0109 | Boot EPROM v1.00 |
SNUG TI-99/4P aka SGCPU (ti99_4p)
Also requires a prepared HSGPL card and the EVPC.
File name | CRC | SHA-1 | Description |
sgcpu_hb.bin | aa100730 | 35e585b2dcd3f2a0005bebb15ede6c5b8c787366 | ROM 0000-7FFF high bytes |
sgcpu_lb.bin | 2a5dc818 | dec141fe2eea0b930859cbe1ebd715ac29fa8ecb | ROM 0000-7FFF low bytes |
TI-99/8 (ti99_8)
May use the HX5102 as storage. TI-99/4A expansion cards are not guaranteed to work.
ROM file | CRC | SHA-1 | Description |
cd2325a.vsm | 1f58b571 | 0ef4f178716b575a1c0c970c56af8a8d97561ffe | Speech ROM chip 1 |
cd2326a.vsm | 65d00401 | a367242c2c96cebf0e2bf21862f3f6734b2b3020 | Speech ROM chip 2 |
g0_f830.bin | 1026db60 | 7327095bf4f390476e69d9fd8424e98ea1f2325a | GROM 0 at address F830 (System) |
g1_f830.bin | 93a43d65 | 19be8a07d674bc7554c2bc9c7a5725d81e888e6e | GROM 1 at address F830 |
g2_f830.bin | 06f2b901 | f65e0fcb2c63e230b4a9563c72f91259b94ce955 | GROM 2 at address F830 |
g0_f840.bin | 44501071 | 4b5ef7f1aa43a87e7ae4f02090944be5c39b1f26 | GROM 0 at address F840 (Text-to-Speech) |
g1_f840.bin | 5a271d9e | bb95befa2ffba2cc17ac437386e069e8ff621248 | GROM 1 at address F840 |
g2_f840.bin | d52502df | 17063e33ee8709d0df8030f38bb92c4322d55e1e | GROM 2 at address F840 |
g3_f840.bin | 86c12396 | 119b6df9211b5399245e017721fc51b88b60879f | GROM 3 at address F840 |
g4_f840.bin | f17a2ef8 | dcb044f71d7f8a165b41f39e35a368d8f2d63b67 | GROM 4 at address F840 |
g5_f840.bin | 7dc41301 | dff714da68de352db93fba309db8e5a8ae7cab1a | GROM 5 at address F840 |
g6_f840.bin | 7e310a90 | e927d8b3f8b32aa4fb9f7d080d5262c566a77fc7 | GROM 6 at address F840 |
g7_f840.bin | 3a9d20df | 1e6f9f8ec7df4b997a7579be742d0a7d54bc8763 | GROM 7 at address F840 |
g0_f850.bin | 2d948672 | cf15912d6dae5a450e0cfd796aa36ea5e521dc56 | GROM 0 at address F850 (P-Code library 1) |
g1_f850.bin | 7d64a842 | d5884bb2af21c8027311478ee506beac6f46203d | GROM 1 at address F850 |
g2_f850.bin | e5ed8900 | 03826882ce10fb5a6b3a9ccc85d3d1fe51979d0b | GROM 2 at address F850 |
g3_f850.bin | 87aaf19e | fdbe163773b8a30fa6b9508e679be6fa4f99bf7a | GROM 3 at address F850 |
g4_f850.bin | d3e789a5 | 5ab06aa75ca694b1035ce5ac0bebacc928721388 | GROM 4 at address F850 |
g5_f850.bin | 49fd90bd | 44b2cef29c2d5304a0dcfedbdcdf9f21f2201bf9 | GROM 5 at address F850 |
g6_f850.bin | 31bac4ab | e29049f0597d5de0bfd5c9c7bfea902abe858010 | GROM 6 at address F850 |
g7_f850.bin | 71534098 | 75e87123efde885e27dd749e07cb189eb2cc45a8 | GROM 7 at address F850 |
g0_f860.bin | 0ceef210 | b89957fbff094b758746391a69dea6907c66b950 | GROM 0 at address F860 (P-Code library 2) |
g1_f860.bin | fc87de25 | 4695b7f979f59a01ec16c55e4587c3379482b658 | GROM 1 at address F860 |
g2_f860.bin | e833e350 | 6ffe501981a1112be1af596a489d96e287fc6be5 | GROM 2 at address F860 |
u25a_pas.bin | d7ed6dd6 | 32212ce6426ceccbff73d342d4a3ef699c0ae1e4 | ROM (16K) containing Pascal support |
u25_rom1.bin | b574461a | 42c6aed44802cfabdd26b565d6e5ddfcd689f11e | ROM containing ROM1 (16K), Text-to-speech DSR (8K), Hexbus DSR (8K) |
u4_rom0.bin | 901eb8d6 | 13190c5e834baa9c0a70066b566cfcef438ed88a | ROM0 (only used in 99/4A mode) |
TI-99/4 (ti99_4)
Less successful predecessor of the TI-99/4A.
File name | CRC | SHA-1 | Description |
994_grom0.u500 | aa757e13 | 4658d3d01c0131c283a30cebd12e76754d41a84a | GROM chip 0000-17ff |
994_grom1.u501 | c863e460 | 6d849a76011273a069a98ed0c3feaf13831c942f | GROM chip 2000-37ff |
994_grom2.u502 | b0eda548 | 725e3f26f8c819f356e4bb405b4102b5ae1e0e70 | GROM chip 4000-57ff |
994_rom_hb.u610 | 6fcf4b15 | d085213c64701d429ae535f9a4ac8a50427a8343 | ROM chip 0000-1fff high bytes |
994_rom_lb.u611 | 491c21d1 | 7741ae9294c51a44a78033d1b77c01568a6bbfb9 | ROM chip 0000-1fff low bytes |
TI-99/2 24K (ti99_224)
Uses 24K ROM; earlier prototype. Does not support Hexbus.
File name | CRC | SHA-1 | Description |
rom0000.bin | c57436f1 | 71d9048fed0317cfcc4cd966dcbc3bc163080cf9 | ROM 0000-1FFF |
rom2000.bin | be22c6c4 | 931931d61732bacdab1da227c01b8045ca860f0b | ROM 2000-3FFF |
rom4000.bin | 926ca20e | 91624a16aa2c62c7ebc23128308709efdebddca3 | ROM 4000-5FFF |
TI-99/2 32K (ti99_232)
Uses 32K ROM; later prototype. May use HX5102 as storage.
File name | CRC | SHA-1 | Description |
rom0000.u2a | 01b94f06 | ef2e0c5f0492d7d024ebfe3fad29c2b57ea849e1 | ROM 0000-1FFF |
rom2000.u12 | 0a32f80a | 32ed98481998be295e637eaa2117337cfa4a7984 | ROM 2000-3FFF |
rom4000a.u3 | 10c11fab | d43e0952538e66e2cedc307b71b65cb388cbe8e3 | ROM 4000-5FFF Bank 1 |
rom4000b.u2b | 34dd52ed | e01892b1b110d7d592a7e7f1f39f9f46ea0818db | ROM 4000-5FFF Bank 2 |
Peripheral Expansion Cards
These are cards that are plugged into the Peripheral Expansion Box (PEB).
SNUG BwG disk controller (ti99_bwg)
File name | CRC | SHA-1 | Description |
bwg_dsr.u15 | 06f1ec89 | 6ad77033ed268f986d9a5439e65f7d391c4b7651 | DSR ROM (4 banks) |
SNUG Enhanced Video Processor Card (ti99_evpc)
Runs on ti99_4ev, sgcpu
File name | CRC | SHA-1 | Description |
evpc_dsr.u21 | a062b75d | 6e8060f86e3bb9c36f244d88825e3fe237bfe9a9 | Card DSR |
Myarc Hard and Floppy Disk Controller (ti99_hfdc)
Standard floppy and hard disk controller. Runs with TI-99/4A and Geneve. Supports 2 sides, single (9) and double (18) density, and 40 or 80 tracks.
File name | CRC | SHA-1 | Description |
hfdc_dsr.u34 | 66fbe0ed | 11df2ecef51de6f543e4eaf8b2529d3e65d0bd59 | Card DSR |
Myarc Memory Expansion Card MEXP-1 (ti99_myarcmem)
Configured to run with Myarc Extended Basic II.
File name | CRC | SHA-1 | Description |
myarc512k_xb2_dsr.bin | 41fbb96d | 4dc7fdfa46842957bcbb0cf2c37764e4bb6d877a | Card DSR |
P-Code Card (ti99_pcode)
Card has a master enable/disable switch (check DIP settings).
File name | CRC | SHA-1 | Description |
pcode_grom0.u11 | 505e5df0 | 66911fba7599c64981180f8a673581f4b05941ff | Card GROM 0000-17FF |
pcode_grom1.u13 | 63b546d5 | 3d830c8bdac102275ec0702eff1ebf4b67484f52 | Card GROM 2000-37FF |
pcode_grom2.u14 | 28821e5c | c147bd5d8d624caa690284bfc253c6699e3518d4 | Card GROM 4000-57FF |
pcode_grom3.u16 | 1db4a4a5 | f7a0ba8050f00ccc1ee328c66df5cc4269748ced | Card GROM 6000-77FF |
pcode_grom4.u19 | 9618eb9b | 1f223f3febcb93e648cefe49c83bfeac802be9d6 | Card GROM 8000-97FF |
pcode_grom5.u20 | c47efe6d | f5b56c7de1cb1e7345a0716d35f00a3a9722febe | Card GROM A000-B7FF |
pcode_grom6.u21 | 06a34c93 | 56172c56afa3868f2098328f81881022230d949d | Card GROM C000-D7FF |
pcode_grom7.u22 | a09ca8d9 | 2ea33d875f9c8e7c00df023a0d8d4461d50f0a87 | Card GROM E000-F7FF |
pcode_rom0.u1 | 3881d5b0 | a60e0468bb15ff72f97cf6e80979ca8c11ed0426 | Card ROM 4000-4FFF |
pcode_rom1.u18 | 46a06b8b | 24e2608179921aef312cdee6f455e3f46deb30d0 | Card ROM 5000-5FFF 2 Banks |
TI Floppy Disk Controller Card (ti99_tifdc)
Supports 2 sides, FM recording (single density), and 40 tracks.
File name | CRC | SHA-1 | Description |
fdc_dsr.u26 | 693c6b6e | 0c24fb4944843ad3f08b0b139244a6bb05e1c6c2 | Card DSR 4000-4FFF |
fdc_dsr.u27 | 2c921087 | 3646c3bcd2dce16b918ee01ea65312f36ae811d2 | Card DSR 5000-5FFF |
TI RS232/PIO Card (ti99_rs232)
Provides two serial interfaces and one parallel interface. May be used twice in the system to get two more serial interfaces and one more parallel interface. Check DIP settings for CRU base.
File name | CRC | SHA-1 | Description |
rs232pio_dsr.u1 | eab382fb | ee609a18a21f1a3ddab334e8798d5f2a0fcefa91 | Card DSR 4000-4FFF |
Other devices
GRAMKracker (ti99_gkracker)
To be used in the GROM port (cartridge slot).
File name | CRC | SHA-1 | Description |
gkracker.bin | 86eaaf9f | a3bd5257c63e190800921b52dbe3ffa91ad91113 | GK loader |
Speech Synthesizer (ti99_speech)
Also used as a peripheral card (using an adaptor card)
File name | CRC | SHA-1 | Description |
cd2325a.u2a | 1f58b571 | 0ef4f178716b575a1c0c970c56af8a8d97561ffe | Speech ROM 128 Kbit |
cd2326a.u2b | 65d00401 | a367242c2c96cebf0e2bf21862f3f6734b2b3020 | Speech ROM 128 Kbit |
HX5102 Hexbus Floppy Drive (ti_hx5102)
Used with TI-99/8 and TI-99/2 32K. Supports 2 sides, single (9) or double density (16 sectors) and 40 or 77 tracks.
File name | CRC | SHA-1 | Description |
hx5102_rom1.u25 | 40621a77 | 1532f6f23e0104326c21909cb0ec46936242a12a | Drive firmware 8K |
hx5102_rom2.u29 | 57c2603b | 2f1d01378943436f0abd5b20710f6c8c175fde13 | Drive firmware 8K |
- Details
- Category: MAME
Here are some instructions for building MAME from source.
Windows
TODO
MacOS
TODO
Linux and other Unix variants
If you decide to build MAME from source code in Linux, you should probably directly use the git repository on Github since bugs are corrected very quickly (and new ones are as quickly introduced ...).
Version 0.210 and higher
You need
- gcc / gcc-c++ version 7 or higher
- git
- make
- Development package of alsa
- Development package of gconf2
- Development package of gtk2
- Development package of the SDL2 library
- Development package of the SDL2_ttf library
- Development package of the Qt5Core library
- Development package of Pulseaudio (since 0.230)
Use git to clone the repository to your local drive:
git clone https://github.com/mamedev/mame.git
Ubuntu
Ubuntu users need to make use of the apt-get command or check the software repository tools.
For Ubuntu 18.04 and newer, the following packages are required:
sudo apt install git
sudo apt install qt5-default
sudo apt install libsdl2-ttf-dev
sudo apt install libfontconfig1-dev
sudo apt install python
This set of package installations also imports gcc/gcc-c++ and make. You may put all package names in one single apt install call.
openSUSE
For an openSUSE installation, either use YaST or (if not already installed) follow this path:
sudo zypper install git-core
sudo zypper install gcc-c++
sudo zypper install libqt5-qtbase-devel
sudo zypper install xorg-x11-devel
sudo zypper install alsa-devel
sudo zypper install libSDL2_ttf-devel
sudo zypper install fontconfig-devel
sudo zypper install python-xml
sudo zypper install libpulse-devel
Compiling
You can just build the complete MAME package by running make.
If you only want the TI systems to be included, you may specify them in the command line:
make -j4 SOURCES=src/mame/drivers/ti99_4x.cpp,src/mame/drivers/ti99_4p.cpp,src/mame/drivers/ti99_8.cpp,src/mame/drivers/geneve.cpp,src/mame/drivers/ti99_2.cpp REGENIE=1 TOOLS=1
REGENIE should be specified, since the GENie project generator tool is used for building. TOOLS will generate the additional helpers imgtool, chdman, and others. You probably don't need them if you use TIImageTool.
The -j4 switch is used to start 4 build jobs concurrently, which speeds up the compilation considerably. You must make sure that your build environment is not too old. GCC should be at least version 7. You can also use clang by
OVERRIDE_CC=clang OVERRIDE_CXX=clang++
When you want to get a current version, use the git pull command. Cleaning the build environment is optional, but if you experience problems when compiling, try to clean first.
git pull
make clean
After compiling has finished, you should have a freshly built mame64 executable file.
- Details
- Category: MAME
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.
openSUSE Tumbleweed
sudo zypper install libSDL2_ttf-2_0-0
sudo zypper install libQt5Widgets5
Ubuntu 19.10, 20.04
Linux Mint 19.3
sudo apt install libsdl2-ttf-2.0-0
sudo apt install libqt5widgets5
- Details
- Category: MAME
Important changes
MESS/MAME has undergone some rare, but important changes in usage that users should be aware of. In particular, when many releases are skipped, things may suddenly appear broken, but there may have been a change a while back.
These changes may require you to modify your existing MAME setup to achieve the same behaviour as before the release.
Version | Changes |
0.229 | The main executable is now called mame(.exe), not mame64(.exe), for all architectures. |
0.227 | Reimplemented Horizon RAMdisk may fail to load the older NVRAM file; backup to disk and restore recommended |
0.213 | The Geneve/EVPC mouse is unplugged by default; must be explicitly attached to the colorbus. |
0.199 | Geneve BIOS must be selected by the switch "-bios x.xx", not by DIP switches |
0.199 | GenMod is now a separate machine, not a configuration of the Geneve. Has its own ROM zip file (genmod.zip). |
0.186 | The I/O port of the 99/4A is explicitly emulated. Device paths must be prefixed with "ioport" (like -ioport:peb:slot2). |
0.174 | ROM dumps are reorganized; requires to use new system ROM zips and cartridges. Older dumps are not accepted anymore. |
0.174 | The cartridge type "paged" is replaced by "paged12k" and "paged16k". Requires to replace affected RPKs. |
0.165 | The internal 16-bit 32K memory expansion is now off by default. Use the PEB card or turn it on in the OSD. |
0.131 | Cartridges are emulated by RPK files. Plain dumps ("cartc.bin", "cartg.bin") are not accepted anymore. |
Detailed history
This version log of MAME specifically lists all TI-related changes in the code.
Version |
Release date | Git Revision | New features | Fixes | Bugs or Regressions |
0.244 | ? | ? | - | - | - |
0.243 | 2022-04-29 | addbb8ab40b | TIPI async mode | TIPI debugging, stability; TMS9901 counter update by S0 | - |
0.242 | 2022-04-01 | e8166b52740 | TIPI emulation | Geneve/Genmod debugging | - |
0.241 | 2022-02-24 | 31f001e5019 | - | DSK4 motor now operated by DDCC1; P-Code card works in debugger | Debugger does not work in Genmod ("Bad RAM") |
0.240 | 2022-01-26 | f0ab44fe1c8 | - | - | - |
0.239 | 2021-12-29 | 80bcaea1ed9 | WHTech SCSI card (without Block mode DMA); new Geneve boot EPROM 2.0 | - | No reading/writing to DSK4 at DDCC1 |
0.238 | 2021-11-24 | fb21b789040 | - | - | - |
0.237 | 2021-10-26 | 34d8357465c | - | - | - |
0.236 | 2021-09-29 | 5e865af5405 | - | - | - |
0.235 | 2021-08-31 | ec9ba6fa76c | - | - | - |
0.234 | 2021-07-28 | 2633c19a68f | - | - | - |
0.233 | 2021-07-01 | 05d0cf61e7f | - | HFDC hangs with not connected drives; now also using timed steps for sector I/O instead of buffered steps only | - |
0.232 | 2021-05-27 | 2b0f01bc3ae | - | - | - |
0.231 | 2021-04-28 | 1f221136613 | - | Changed default floppy step rates and Corcomp monoflop config | - |
0.230 | 2021-03-31 | 943c06cba08 | - | IDE card AME/AMD decoding | - |
0.229 | 2021-02-24 | 4322eaae9d6 | - | Debugger write for Geneve | - |
0.228 | 2021-01-27 | 140f4469331 | - | - | ARM build broken (Raspi), fixed with fd5fb05acee |
0.227 | 2020-12-31 | d85735634cd | - |
Horizon RAMDisk reimplemented; paged378 cartridges mirror smaller ROMs; corrected fill byte after data CRC in HFDC |
- |
0.226 | 2020-10-28 | 3c56452b07a | - | BQ4847 is correctly detected by IDEDSR | - |
0.225 | 2020-09-29 | 5a1fd0cc172 | SID Master 99 | Gromemu type allows for bank-switched ROMs | Horizon RAMDisk broken |
0.224 | 2020-08-25 | 5892c78a152 | - | - | - |
0.223 | 2020-08-06 | c55a261d26d | TI-99/2 Expansion port and 32K expansion | Debugger write to PEB from TI-99/4A (regression from release 0.173) | - |
0.222 | 2020-06-26 | 6d50d60a43b | - | Changed default switch setting in IDE controller; fixed some issues in clock chips | - |
0.221 | 2020-05-19 | e8a0e0469b0 | PGRAM(+) card, IDE controller with clock chip selection | IDE controller with RTC-65271 | - |
0.220 | 2020-04-05 | c5c5723b9d5 | CorComp and Myarc DDCC-1 floppy controllers, FORTi card | Stale datamux byte cleanup | - |
0.219 | 2020-02-29 | 221f0064426 | Selectable EVPC memory size | - | - |
0.218 | 2020-02-02 | 0e2a252d309 | Low-level emulation of the Geneve mainboard (Gate Array, PAL, Genmod) |
TI-99/2 floppy loads program files with more than 1 sector; fixed datamux so that Ambulance runs again; Cassette working again |
- |
0.217 | 2019-12-25 | 13997a8f317 | - | Sound wait states | - |
0.216 | 2019-11-27 | b8b7c7e232 | - | - | - |
0.215 | 2019-10-30 | e9ef4808dd | - | - | - |
0.214 | 2019-09-25 | 24d07a12d7 | Pluggable keyboard for the Geneve | - | - |
0.213 | 2019-09-04 | f7172322a2 | Mouse optional for EVPC and Geneve, must be plugged explicitly. This prevents mouse pointer capturing in Windows when mouse is not needed. | - | - |
0.212 | 2019-07-31 | 1182bd9325 | - | CRU base address setting for RS232 | Cassette operations |
0.211 | 2019-06-27 | 1b969a8acb | - | - | - |
0.210 | 2019-05-30 | ad45c9c609 | - | TMS9901 counter now counts at all times, not only when set to non-null. | - |
0.209 | 2019-04-24 | 2b317bf296 gcc < 9 |
- |
Fixed CRU multi-bit operations with *Rx+; fixed TI FDC issues with Geneve GPL mode; fixed SGCPU regression with CRU operations |
- |
0.208 | 2019-03-27 | 9483624864 | - | Fixed Geneve GPL mode, fixed status bits (C and OV) for SLA and INV | - |
0.207 | 2019-02-27 | 40fc33967c | - | - | Geneve GPL mode lockup (e12e17ce8) |
0.206 | 2019-01-30 | cf02fe333a | - | - | Changes in key mappings (757436bbfb) |
0.205 | 2018-12-26 | b691c38273 | - | Reject cartridges with more than 2 MiB dump size to avoid mem corruption | Cassette operations broken in 99/8 (since 0.198) |
0.204 | 2018-11-28 | c6150e7542 | - | - | - |
0.203 | 2018-10-31 | b57a140101 | - | - | - |
0.202 | 2018-09-26 | 856478fbda | - | - | - |
0.201 | 2018-08-29 | 4dc302ed05 | All disk formats (DSK, DTK, HFE) allow for 16 sectors/track; HX5102 working with 99/2 | Formatting works in 99/8 (also when changing densities); track dumps now working safely in PC99. Full cassette support for 99/2(32K). Unneeded cassette channel (Ch.1) removed. | - |
0.200 | 2018-07-25 | ff19cd3977 | - | - | - |
0.199 | 2018-06-27 | f2e805a153 | BIOS selection for Geneve; GenMod now a separate driver (check ROM zips) | Double density for HX5102 (HFE format only) | - |
0.198 | 2018-05-30 | c5f6a62d59 | TI-99/2 running; HX5102 can host two drives | Fixed interrupt latching in 9995 (for 99/2); OSD blank disk creation; double-sided disks with HX5102 | HX5102 cannot handle double density |
0.197 | 2018-04-25 | 74293f8247 | Hexbus floppy HX5102 working | Read track for TIFDC; can now load Diskassembler from MG | HX5102 cannot handle double-sided disks |
0.196 | 2018-03-28 | e8f2016076 | - | - | - |
0.195 | 2018-02-28 | e44e85b8ef | - | - | - |
0.194 | 2018-01-31 | 5be2496d0c | Selectable VRAM size for Geneve | Debugging in cartridges, esp. MiniMemory | - |
0.193 | 2017-12-27 | bf28b347fb | - | Removed auto-waitstates from Geneve | - |
0.192 | 2017-11-29 | d771f54227 | - | - | - |
0.191 | 2017-10-25 | a5db728b9c | - | - | - |
0.190 | 2017-09-27 | f57574c238 | - | - | - |
0.189 | 2017-08-30 | 2beedc540f | - | - | - |
0.188 | 2017-07-26 | 7b45ec19f1 | Hexbus WIP | - | - |
0.187 | 2017-06-28 | 1d9648b01c | Hexbus early WIP; new cartridge type "paged7" for TI-CALC | - | - |
0.186 | 2017-05-31 | e4c6cb15e0 | Rearranged bus/ti99 source subtree; introduced ioport as a slot (PEB must now be plugged in) | - | - |
0.185 | 2017-04-26 | fe01a1342c | - | - | - |
0.184 | 2017-03-29 | 7768128734 | Bus mouse is a separate device, can be used with EVPC now | TI-99/4 crashes; jerky Geneve mouse; debugging for TI-99/8; sector read on HFDC | - |
0.183 | 2017-02-22 | c207031 | - | - | - |
0.182 | 2017-01-25 | dc374ba | - | - | - |
0.181 | 2016-12-27 | bbeda6a | - | - | - |
0.180 | 2016-11-29 | cfc8419 | - | Fixed state saving | - |
0.179 | 2016-10-26 | 32b7e58 | - | - | - |
0.178 | 2016-09-28 | 012d47d | HxC HFE format support, MAME state save capability; improved performance for 99/8 | Tag for MEXP-1 RAM (led to error on start) | TI-99/4 unstable, presumably buffer overflow |
0.177 | 2016-08-31 | 1ecb023 | New floppy sounds | Stuck INT line in TMS9902; RS232 line mapping; issues with deleted marks in single density; double stepping; debugger access to cartridge | - |
0.176 | 2016-07-27 | 4887ce1 | - | - | - |
0.175 | 2016-06-29 | 63f9a01 | - | - | - |
0.174 | 2016-05-25 | 68785dc | Per-chip system ROM dumps, new cartridge ZIP files (download from WHTech), split "paged" into "paged16k" (Atarisoft) and "paged12k" (Extended Basic); | Fixed GROMEMU, fixed MBX, multi-cart can be switched without reset | - |
0.173 | 2016-04-27 | cfee536 | GROMs rewritten as synchronous devices; TI-99/8 mainboard rewritten; Horizon with 8M setting | HOLD behavior of TMS9995; issues with paged37x cartridges; missing AlphaLock on SGCPU | GROMEMU cartridges broken |
0.172 | 2016-03-30 | 913ab1e | - | - | AlphaLock does not work for SGCPU |
0.171 | 2016-02-24 | 3abcaee | - | - | - |
0.170 | 2016-01-27 | b1d6f6d | - | - | - |
0.169 | 2015-12-30 | 4afd75e | - | - | - |
0.168 | 2015-11-25 | 0825ce4 | - | - | - |
0.167 | 2015-10-28 | 47f5637 | - | Speech working again | - |
0.166 | 2015-09-30 | 8e4ced4 | - | - | Speak command only works after preceding Speak External |
0.165 | 2015-08-26 | efa3a67 | PFM512 support for Geneve; Floppy drive sounds; Cartridge types paged377, paged378 (no GROM yet); HFDC switch "wait for HD" (TB 3) | Track dump images working again. 32K expansion mod is off by default now (turn on in OSD menu or choose 32kmem card) | - |
0.164 | 2015-07-29 | 1b452e3 | Modern low-level MFM hard disk emulation. Removed legacy floppy emulation. | PIO fixed (no more lockups) | Track dump images (dtk) may show CRC errors. |
0.163 | 2015-06-24 | d1583b9 | Removed legacies 'tifdcleg' and 'bwgleg' | - | - |
0.162 | 2015-05-27 | 64e16ca | MAME and MESS distributed as one single application | - | - |
0.161 | 2015-04-29 | 76b978d | - | - | - |
0.160 | 2015-03-25 | 0147bb4 | Added a non-toggling Alphalock key for use with physical keyboards | UCSD Pascal disks do not crash the emulation anymore | - |
0.159 | 2015-02-25 | 6ae44e4 | - | - | - |
0.158 | 2015-01-28 | 26e7a17 | - | - | - |
0.157 | 2015-01-03 | e6f78d5 | - | - | - |
0.156 | 2014-11-26 | ebeaa95; switched from svn | - | - | - |
0.155 | 2014-10-15 | svn 32761 | - | BwG saves double density data again | - |
0.154 | 2014-07-23 | 31396 | Modern floppy emulation for HFDC (old one remains 'hfdc', new one is 'hfdcnew') | - | - |
0.153 | 2014-04-07 | 29406 | Modern floppy system for TI FDC and BwG (old ones renamed to 'tifdcleg' and 'bwgleg') | Several fixes in HSGPL | HSGPL still found to crash when initializing GRAM; new BwG corrupts image on write (MFM) - bwgleg still working |
0.152 | 2013-12-24 | 26738 | TI-99/8 with working Pascal | Fixed BwG double density and TI FDC issues | - |
0.151 | 2013-11-09 | 26005 | Improved timing by split memory access | tms9995: Fixed decrementer bug; improved debugger access | - |
0.150 | 2013-09-17 | 25362 | TI-99/4QI available | BwG controller DIP setting defaults to DSK1-DSK4. HSGPL SCON subprogram now working. RS232 dropouts fixed. | - |
0.149 | 2013-06-12 | 23624 | (Almost) All cartridges available via software list | Introduced a new cartridge type "gromemu" which allows for 8K "GROM emulations" | DSK2 and DSK3 yield IO error 6 with tifdc. BwG corrupts file on write. |
0.148 | 2013-01-11 | 20193 | Accepts TI99-PC disk images with bad sector map | TMS99xx overflow bit; HDC9234 flag for setting delete mark | - |
0.147 | 2012-09-17 | 17960 | Cycle-precise CPU; LOAD interrupt; configurable RESET trigger in cartslot; VDP memory now visible in Debugger | READY line-driven speech output | - |
0.146 | 2012-05-21 | 17371 (u5) MAME / MESS merge | - | - | 8K GROM cartriges stopped working (e.g. RXB) |
0.145 | 2012-02-07 | - | Complete architectural redesign | - | - |
0.144 | 2011-11-15 | - | - | Fixed problems with GRAM Kracker | - |
0.143 | 2011-06-29 | - | Full RS232 connectivity | HSGPL flashing; SAMS fix; no more HSGPL crash with plugged-in cartridge | - |
0.142 | 2011-04-04 | - | Configurable v9938 RAM (128/192), MEMEX emulation | Multicolor mode | - |
0.141 | 2011-01-09 | - | - | - | HSGPL flashing does not work |
0.140 | 2010-10-31 | - | - | - | - |
0.139 | 2010-08-01 | - | GRAM Kracker. Paged379i cartridges can now host 128 KiB. EVPC fully configurable. | HSGPL, SGCPU, EVPC. Lots of small fixes, now all working properly. | IDE support (required rewrite) |
0.138 | 2010-05-22 | - | Reorganized configuration; selectable speed for disk drives | HFDC and its chipset are completely rewritten. No more crash when formatting disks/hd with HFDC. Changed speech processor to TMC 0285. | HSGPL and SGCPU (TI-99/4P) broken |
0.137 | 2010-03-14 | - | Track dump disk images ("PC99") | Defineable noise (-4/-8) corrected | - |
0.136 | 2010-01-10 | - | - | Noise generator adjusted for preset noises | - |
0.135 | 2009-11-07 | - | New cartridge types: paged379i and pagedcru; chdman now allows to create uncompressed writeable images. | - | - |
0.134 | 2009-09-15 | - | - | Fixed chdman; hard drive images stay writeable | - |
0.133 | 2009-07-23 | - | P-Code card | ROM-only modules are usable with the automatic cartridge selector | - |
0.132 | 2009-06-16 | - | - | - | chdman sets hard drive to read-only after conversion |
0.131 | 2009-05-03 | - | Multi-cartridge handling with complex images | Port control fixed (CRU); TI-99/8 declared working again. | - |
0.130 | 2009-03-10 | - | - | - | TI-99/8 locks up on startup. Declared GAME_NOT_WORKING. |
0.129 | 2009-01-06 | - | Geneve got a dip switch to toggle between the version 0.9 ("Swan") and version 1.0 boot eprom. | - | - |
0.128 | 2008-10-20 | - | - | Geneve hard disk regression fixed. Real-time clock init fixed (DOW was incorrectly set). Natural keyboard now takes F12 as QUIT instead of ESC (TI-99) | - |
0.127 | 2008-08-25 | - | - | - | Geneve can't read hard drive images. |
0.126 | 2008-07-08 | - | Mini Memory keeps contents in NVRAM. | Peripheral cards (including floppy controllers) work again; mem_mask processing fixed | - |
0.125 | 2008-05-10 | - | - | Natural keyboard arrow keys, delete key. | Peripheral cards (including floppy controllers) deactivated. |
0.124 | 2008-03-25 | - | - | - | Floppy controllers broken due to mem_mask inverted; natural keyboard arrow keys do not work. |
0.123 | 2008-02-09 | - | - | Mechatronic mouse axis swapping resolved; more floppy cleanups; fixed TI99_8 regression and made the floppy drive usable. | - |
0.122 | 2007-12-30 | - | - | Refactorings and code cleanups | - |
0.121 | 2007-11-24 | - | - | Border is displayed again. | - |
0.114 | 2007-04-12 | - | - | Fixed assertion failure for ti99/4a and ti99/8 | - |
0.98 | 2005-07-10 | - | - | - | Floppy access broken. |
Page 1 of 2