Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(2 edits) (+1)

The TI99/4a was a curious computer. While it had numerous innovations (32 sprites handled by hardware, user-definable characters, sound synthesis with both square waves and two types of noise, a 16-bit processor), it was highly compromised (an 8-bit bus, Dartmouth BASIC in a slow virtual machine, small memory space with hardwired addressing, etc.) This computer clearly was meant to be a stepping stone to better things to come, which never came to pass. (Commodore Business Machines won a savage pricing war, and the business market supported Intel-based PCs.)

Today, more people are familiar with the MSX line of computers, which used the same visual-processor and sound-processing hardware, but with a core Zilog-80. The TI99/4a has all the same restrictions (only four 1-bit sprites per scan-line, no hardware scrolling) but slightly worse. In the spirit of this year’s theme of “limited”, would it be possible to make a bullet hell? 🤔

The TI does support raster interrupts and bank-switching, and the memory is expandable from cartridges (which TI calls “solid-state software command modules” 😊). There’s been some new games for it in recent years, with very impressive work! In all candor, I didn’t try to do a deep dive into how TMS9900 assembly works. This game was made in GameMaker 2, but with the limitations of the TI in mind.

  • With only four sprites per scan-line, the bullets would need to be rendered on the tile layer. Eight tiles were reserved for a pattern of three. The bullets themselves are tracked on a pixel level, then rendered in a pass using the custom characters. This technique gives very satisfying results.
  • The TI joystick — or as the manual calls it, the “Wired Remote Controller” — only has one button. But the TI also has a functional keyboard, so we assume you would need to be close enough to press the space bar to use your screen-clearing bomb. (Or you could ask your younger sibling to press it for you.)
  • For maximum control, the player’s avatar is a freely-moving sprite. All enemies are rendered using the tileset. The player has full control over each 60fps frame, whereas enemies are often resolved every fourth or even every eight frame.
  • We wanted to avoid a complex upgrade scheme. There’s a limited number of objects we can display. “Options” and other add-ons would be too much clutter. We also wanted to avoid getting killed and losing all upgrades. The compromise here is that your “power” is both your life-bar status and your offensive power.
  • Enemy “sprites” can only move on tile divisions. To disguise this, enemies often move quickly. Or their sprites have jittery animations (flapping wings, turning wheels, etc).
  • The color palette has 15 colors: black, and fourteen colors all with 50% brightness or more! 🕶️ To keep the background from being distracting, pixels are drawn on every other vertical line. (Presumably, it would like nice and ghostly on your tube television.)
  • The ground is about 16 tiles, pixel-shifted to look like scrolling in perspective. (For real hardware, this setup would need to be optimized if not scrapped entirely.)
  • There’s no priority for sprites - they’re always on top. To add a little more dimension, an enlarged sprite is scrolled at regular intervals. It’s solid black to avoid being too distracting. Just this one little feature immensely helped the look and feel.
  • To reward riskier play, a score multiplier was added. This feature takes up very few resources while being very easy to implement.
  • Most of the sound is reserved for the music. With three square-wave voices and one noise generator, there’s a lot to work with! It’s no wonder this chip was very popular with JP manufacturers, with a long legacy in consoles and in arcades. Thanks again to Moult for contributing our opening theme and its high-pitched whistle.
  • Because the TI is a “business machine”, it needed to support a forty-column screen. (That’s what “business” meant in the 8 bit era.) So the TI has a 40-column mode that is only 240 pixels wide, with 6x8 tiles. Then the TI’s built-in font is characters in only 5x7 pixels, which explains why it has that unique, wide spacing. (I’m not sure what explains the choice to use small-caps instead of lower-case letters, but it must have made sense to someone at Texas Instruments. 🤔)

When pursuing a retro gaming project, I always like to think about what challenges the original programmers had faced, how they would address these challenges, and what unique games they might create in these conditions. This is just a small happiness I can give you. Share and enjoy. 💙