History
Well, here's my contribution to the TI-99/4A community. A few years back, I thought it would be neat to be able to play my old TI games on my PC. Instead of doing the smart thing (looking for an existing emulator), I sat down and wrote my own. At first is was a simple text-based simulation of the TI. Then I added graphical support for the OS/2 Presentation Manager. When I got bored with that, I ported it to Windows and added sound support. Now I've decided to try my hand at a Linux/cross-platform version. In the spirit of Linux and Open Source, I'm releasing the code under the GPL license.
Note: In order to run the emulator, you need to create a cartridge that contains the console ROM & GROMs from the TI. Texas Instruments will not allow these to be distributed, so you'll need to find a way to get them yourself. Please don't e-mail me asking for a copy - I won't even bother to respond. If you have a working copy of v9t9, instructions are included to help you create the required cartridge.
What's New
25-May-2020
Version 0.16.0: This release includes a lot of small changes from the past few years as well as a few bigger ones. Most of the smaller changes are code cleanup and tweaking implementation issues, bug fixes in disk image code, updated helper scripts, and fixing several potential crashes. The bigger changes include:
- ti99sim-sdl now uses SDL 2.0. Added support for numeric keypress events from joystick buttons.
- A reworked save image format (any old save images will not be usable). Loading a save image will now swap cartridges and any loaded disks to recreate the setup used to create the image. Note: The disk contents are not stored in the save image, so if a disk has been modified since the save was created, re-loading the save image may result in unexpected behavior if a disk operation was in progress when the image was craeted.
- Write support for HFE disk images. All disk images should now be readable & writeable.
- A command line option to use a specific console ROM file. If you want to run the QI console, you can now type: `ti99sim-sdl --console=ti-994a-qi.ctg`
18-Mar-2017
Version 0.15.0: This is mostly a maintenance release with small improvemnts to several areas. First, the speech emulator code has been updated to use the proper lookup table values. This should result is a much more accurate sound for synthesized speech. The audio system was also tweaked and a better resampler was used to improve the overall quality of speech. The SDl version of the emulater has had the CAPSLOCK logic updated to correctly track the state of the CAPSLOCK key. Finally, there have been many changes to the handling of files and disk images. The disk utility also has the ability to create blank formatted disk. For a complete set of changes check here.
This release also contains binaries for Windows. The source package also contains the VS2015 solution and project files for building on Windows.
25-Jun-2016
Version 0.14.0: This was going to be a smaller release with only a few minor bugs fixed. Along the way, parts of the code were re-designed which allowed some new features to be added (e.g. support for the UCSD p-System). Several new utilities were also created to help make creating and tracking cartridges easier (e.g. mkcart and catalog). A new script setup was also added to help get a new install up and running by automatically creating a number of cartridge files required the emulator.
Note: As part of the internal re-design, the 'roms' folder has been renamed to 'console'. If you're upgrading an existing install, make sure you rename any 'roms' folders you already have (~/.ti9isim/roms, /opt/ti99sim/roms, etc). Also, the .dat files for the TI-99/4A console and Gram Kracker cartridges have been updated. If you want to upgrade these cartridges, it may be easiest to create them using the supplied setup script. Finally, as part of this re-design, the name of the main console cartridge (TI-994A.ctg) is a bit more flexible. The system will look for the legacy name first and, if it's not found, look for the cartridge based on a list of known SHA1 values for various versions of the TI-99/4A console.
22-Feb-2016
Version 0.13.0: Another set of incremental changes. The main focus in this release is improved disk image support. The biggest change is read-only support for HxC disk images. The emulator and utilities can now read data from these HFE images (write support is next on the list). This means if you have an HFE image of a disk that uses weird copy protection (e.g. Miller Graphics' DISkASSEMBLER that uses data outside the sector area) it should work properly. The utility disk access routines now handle large disks (those with an AU greater than 1) properly.
Other improvements: Support for cartridges with up to 256 banks of bank-swapped ROM. convert-ctg has been updated to make it easier to create cartridges with either normal or inverted style 74LS379 banking.
Finally, bitmap mode support has been improved with proper support for color & pattern table size masking.
21-Apr-2015
Version 0.12.1: Here's a quick update to fix a few problems that cropped up in the 0.0.12 release (sorry about that). While I'm at it, I'm changing the version number format to be a bit more reasonable major.minor.patch notation.
04-Aug-2014
Version 0.0.12: It's not dead yet! I'm continuing to work on ti99sim on and off and using it as a platform to experiment with different ideas and language features. This release includes a switch to C++11. Unfortunately, my copy of Visual Studio doesn't like a lot of the newer features, so I'm not including a Windows version in this release. I'm not dropping Windows support, just skipping it for a release or two until Visual Studio catches up. I also don't have a Mac OS X development environment, so there are no Mac binaries, but everything should build and run on one if you have the appropriate tools. Finally, there was some work to make sure everything runs on the Raspberry Pi.
Aside from a lot of internal changes, this release is mainly focused on improved disk support including support for 80 track disk images for all command line tools. The other big change is support for the CF7+ in ti99sim itself. All versions of ti99sim can now read and write to CF7+ devices/images. See the list of changes for more information
14-Jul-2012
Version 0.0.11: There hasn't been any single feature that warranted a new release, but since it's been so long since the last release, I thought I'd make a new one. The biggest change is the support for 64-bit systems. New Makefiles should make it easier to build on the Mac. There have also been a number of minor changes to the utilities and internal code (see the README file for details). Finally, limited support for CF7+/nanoPEB images has been added.
20-Sep-2003
Version 0.0.10: Minor improvements to some of the utilities and a fix for the install. The most notable improvement to the utilities is the ability to read .ark files (files compressed using Barry Boone's archiver). Using the disk utility, files in an archive can be extracted to a file and added to an existing disk image (oh yeah, disk can now add files as well).
30-Aug-2003
Version 0.0.9: Finally, ti99sim now runs on Mac OS X! I managed to convince my brother to let me play around on his Mac in an effort to get ti99sim working. The good news: It compiles and runs just fine on the Mac (last time I checked). The bad news: 1) I don't currently have access to the Mac, so no Mac release in the archives yet. 2) I'm not familiar enough with Mac OS X to make a proper install package. In order to use ti99sim, you'll need to open a terminal window and use the command line (just like everybody else).
For those of you that don't have a Mac, this release also adds resizable window support, new scaling routines (Scale2X & Scale3X from the AdvanceMAME project) for double-size and triple-size windows, an alternate color palette selection, selectable master volume level, and several minor improvements. There is also a new utility that will let you play speech samples from the speech synthesizer ROM from the command line.
30-Aug-2002
Version 0.0.8: Changes include: improved support for international keyboards, more accurate clock cycle emulation, proper support of reduced frame rates, better audio quality under Windows NT, and a verbose
mode added to most programs. Emulation of the TMS9901 has also been rewritten to provide programs access to the chip's timer mode. There is also a new utility: dumpspch. This program allows you to dump a valid TI Speech ROM to either a hexadecimal or parsed text file. The parsed file allows you to more easily edit the individual LPC-10 speech frames. The modified file can then be converted back to a valid spchrom.bin file using mkspch. The decode utility has also been reworked to do a better job at detecting and recovering audio data from .wav files. The number of different .wav file formats supported has also been expanded. The README.html file has been updated and cleaned up as well.
06-Dec-2001
Version 0.0.7: There was a bug in the convert-ctg utility released in v0.0.6 that resulted in the inability to create a DSR cartridge (which meant no disk I/O). The TMS9918A (VDP) emulation support has also been improved and includes multicolor mode support, 4 sprite/line limit, 5th sprite detection, and coincidence checking. A few more minor changes and one new utility: list - a simple command line tool to list a TI BASIC/Extended BASIC program.
Features
General
- Emulation of the TI-99/4A Home Computer.
- Core emulator written in C for portability to multiple platforms.
- Tracks the emulated CPU speed so it runs at the right speed even on the fastest processors.
- Runs under Linux, Mac OS X, and Win32 (Windows 9X, Windows NT)
- Speed is kept as close as possible to the actual speed of the TI.
- Supports banked cartridges (like TI Extended BASIC).
- 32K RAM Expansion emulation.
- Save/restore the complete computer state (So you can pick up that game you were playing right where you left off).
- Save/restore the contents of battery-backed RAM cartridges (Mini-Memory, Gram Kracker™, etc…) to disk when cartridge is removed.
- Support for Gram Kracker™ emulation (requires actual GK GROM images).
- TMS9901 emulation support.
Graphics
- Uses SDL for graphics, sound, and joysticks - supports X11 and Win32.
- All documented modes emulated.
- Full sprite support: 4 sprite per line limit / co-incidence checking / 5th sprite flag/index.
- Scalable & Resizable window.
- Full screen mode.
Sound Support
- Three voice support using native sound device.
- Noise generation supported.
Speech Synthesis
- Access the built-in speech ROM (TI Extended BASIC). NOTE: Requires a speech synthesizer ROM dump.
- Modules with external speech samples (Parsec, Alpiner, Terminal Emulator II, ...).
Joystick Support
- Hardware joystick support.
- Emulated joystick using the numeric keypad.
Disk Support
- Emulation of the floppy disk controller (currently limited to SSSD and DSSD images).
- Complete read/write support for floppy disks. NOTE: Requires a TI disk controller ROM dump.
- Supports disk images created by AnaDisk, v9t9, PC99, HFE, and CF7+.
- The disk utility can convert between formats, add, remove, and extract files.
Programs included
- ti99sim-sdl - The SDL based version of the emulator.
- ti99sim-console - A simple, text-based emulator with an MG Explorer style interface.
- convert-ctg - A utility to convert various files to the cartridge format used by ti99sim. It will convert cartridge files on a TI disk created by a Gram Kracker™, specially formatted hex dumps, and .hex/.bin files from v9t9 to the native cartridge file format.
- decode - A simple program to convert a .wav file recording of a TI audio tape into a binary file. Supports all integer PCM formats (8/16/32-bit, mono/stereo/multi-track).
- disk - A simple program to display a listing of files on a TI disk image created by AnaDisk, v9t9, or PC99. All disk densities are supported, from SSSD to DSDD. In addition to listing disk contents, it can add and delete files to/from the disk image as well as extract files from a disk image to
normal
PC files or v9t9 FIAD files. - dumpcpu - A TMS9900 disassembler that will dump the ROM code in a cartridge file.
- dumpgrom - A GPL disassembler to dump the contents of GPL code in a cartridge.
- dumpspch - A utility to dump the contents of the TI Speech ROM to a text file.
- list - A utility to list TI BASIC/Extended BASIC programs stored in
normal
PC format or FIAD format. - mkspch - A utility to create a spchrom.bin file for the emulator.
- say - A utility to playback speech samples found in the spchrom.bin file.
Latest
ti99sim-0.16.0.amd64.tar.xz
ti99sim-0.16.0.armhf.tar.xz
Past versions can be found in the archives.
Requirements
- Simple DirectMedia Layer - A cross-platform multimedia library
- OpenSSL libraries (libcrypto.so) for SHA1 support
- Linux distributions using the provided binaries require gcc 4.6 run-time libraries (libstdc++.so.6, libm.so.6, libgcc_s.so.1, and libc.so.6).