TI Breakout is a simple action game for the TI-99/4A home computer. Keep bouncing balls in the playing field with the paddle. Aim the balls to clear the bricks before time runs out.
- Fast and smooth.
- Straight into the action with 4 bouncing balls.
- Colorful graphics, sounds, chords, and chord progressions.
- Keyboard or Mechatronic mouse.
- Entirely written in TMS-9900 assembly code.
- Runs on a console without expansion cartridges, by breaking out of the TI BASIC sandbox.
- The source code, with useful generic definitions and macros.
A TI-99/4A home computer or emulator, such as Mame.
You need to have the xdt99
cross-development tools installed, for the xas99
assembler.
On Linux, you can run the build script:
./build.sh
Alternatively, you can run its commands manually.
You'll then have three alternative binaries:
out/breakout.prg
: a raw TI BASIC file.out/breakout.dsk
: a disk image with the BASIC file, for emulators like Mame.out/breakout.tfi
: the BASIC file in TIFILES format, for emulators like Classic 99. Emulators may require the name without an extension.
The easiest way is to use the Mame emulator.
On Linux, you can run the script to launch Mame with the proper options:
./run.sh
Alternatively, you can run the Mame command manually.
Once Mame is running and showing the TI-99/4A home screen:
- Press any key.
- Press
1
for "TI BASIC". - Type
OLD DSK1.BREAKOUT
and Enter. - Type
RUN
and Enter.
The program then starts on the animated title screen with some instructions and the high score. Start a game by pressing the space bar or Redo. You can control the paddle in two ways:
- With the keyboard:
Z
/X
for fast/slow left and,
/.
for slow/fast right. - With a Mechatronic mouse attached to the joystick port (or emulated).
You can pause the game with the space bar. The shrinking red bar on the left shows the remaining time. The number on the right shows the score. When you clear a playing field, you get a time bonus and a new, wider playing field. The available time remains the same, so make good use of the bouncing balls to clear the field in time!
You can exit Mame by pressing Insert
and then Esc
.
Technically, the game is a proof of concept for breaking out of the sandbox of an unexpanded console. Texas Instruments restricted software on the console to its slow TI BASIC, without access to the way more powerful TMS-9900 assembly code or even the built-in GPL bytecode. You could only develop and run assembly code with expensive specialized cartridges and hardware expansion systems. This limited commonly available software to simple programs or professional cartridges. In hindsight, the artificial sandbox greatly contributed to the demise of the computer in the eighties, in favor of more open systems.
However, a jailbreak that was little-known at the time could have made a difference:
- The brothers Riccardo and Corrado Tesio published the concept in 1984, in the Italian magazine MC Microcomputer 34, which ti99iuc archived and translated in 2017.
- James Abbatiello created another prototype, which Vorticon brought back to attention in 2013.
- Senior_falcon elaborated on the idea with a demo in 2013 and an early prototype for a game in 2017. He also contributed enhancements for this project that make the code relocatable on systems with different hardware.
This game takes the prototypes a step further, with the help of modern technology -- notably the brilliant xdt99 cross-development tools. The source code assembles to a small TI BASIC program that escapes its sandbox. The payload consists of the actual assembly code. Since a basic console only has 256 bytes of CPU RAM (!) and 16 KB of video RAM, I have written the game code as small snippets that get swapped in from video RAM to CPU RAM. The technique requires some thriftiness and creativity, but it's pretty successful. Oh, the great things that could have been if we had known this back in the days...
TI Breakout is released under the GNU General Public License, version 2.
Enjoy!
Eric Lafortune