3.5.0 Release - The Island of Misfit Platforms#

8bitworkshop now supports five additional 8-bit platforms!

They don’t really fit in with any of our books, though they use the same toolchains as the other 6502 and Z80 platforms. Thus, you can program all of them in either C or assembler!

We’ll do some follow-up posts in the near future describing technical and programming details for each platform. For now, we’ll give a quick overview, starting with a very important video chip.

The TMS9918A Video Display Processor#

The TMS9918 chip design started in 1977, the same year the Atari 2600 was released to the world. It was the first consumer chip to interface directly to DRAM. But since memory was so expensive back then, it wouldn’t see full adoption until the early 80s.

The TI 99/4A was released in 1981 with a TMS9918A driving a full 16 KB of video RAM. The main CPU could only address 256 bytes of scratchpad RAM directly, but could dip into the VDP’s RAM when needed.

No matter, the VDP stole the show. It could display a character-mapped or bitmapped background with 15 different colors. It was the first system to coin the term “sprites”, and could smoothly move 32 of them across the screen.

The next three platforms all use a variant of the TMS9918 chip for video display, paired with a Z80 CPU. Their architectures are all close enough that we can use the same C library (libCV) for these platforms. This library doesn’t depend on a specific BIOS, but you can copy bitmap fonts from ROM to RAM if they’re available.

ColecoVision#

The ColecoVision gave Atari a run for their money in 1982 by bundling a near-perfect port of Donkey Kong with the console. It included a full 16 KB of video memory, but also 8 KB of main RAM that could power complex games and even a Logo programming package.

MSX#

No one really agrees on what MSX stands for, but it was an early 80s home computer standard promoted by Microsoft and Japanese manufacturers. These machines featured similar hardware to a ColecoVision albeit with more RAM, and a full keyboard and expansion slots. The platform enjoyed success in Japan, South Korea, Brazil, and other countries.

The 8bitworkshop IDE includes the open-source C-BIOS. It doesn’t include a BASIC interpreter, but supports most of the simple BIOS functions, like console I/O.

Sega Master System#

Sega’s SG-1000 console was almost hardware-identical to the ColecoVision, but its successor, the Sega Master System (Sega Mark III in Japan) was a significant upgrade, with more color depth and hardware scrolling. Yet it remained backward-compatible with the TMS9918A to play older titles (and the Game Gear’s hardware would be backwards-compatible with it.)

Bally Astrocade#

Bally Astrocade (by Evan-Amos, CC-BY-SA 3.0)

The Bally Astrocade was announced and made available via mail-order in 1977, the same year the TMS9918A’s design was conceived. It was originally announced as the “Bally Home Library Computer” and then as the “Bally Professional Arcade”.

The Astrocade packed in 8 KB of RAM, available at a volume discount due to its failure to pass specification tests, but good enough to be used as video RAM. It included a video display chip developed by Dave Nutting Associates for Midway, the same chip used in standup arcade games like Gorf and Wizard of Wor.

This chip did not include hardware sprites, but instead could accelerate video RAM operations via a function generator. It could be configured to shift, expand, combine, mirror, and rotate bytes as they’re written to the frame buffer.

The ambitious system never attained the popularity of the Atari 2600. It had odd controllers and overheating problems.

The Astrocade’s built-in BIOS provided a ton of features that the tiny game ROMs could use – a menuing system, object display and movement, music, BCD math, and more. We’ve actually written a compatible open-source BIOS, called AstroLibre, which we use in the IDE.

Atari 7800#

Atari 7800 (by Evan-Amos, CC-BY-SA 3.0)

The Atari 7800 was the first console from Atari designed by an outside company, General Computer Corporation (GCC), who had parlayed their lawsuits from game manufacturers into gainful employment. It was supposed to have been released in 1984, but internal Atari drama postponed its release until 1986. It was backwards-compatible with the Atari 2600, but since it was nine years old by this time, this wasn’t as much of a selling point.

While the Atari 2600 requires cycle-exact programming to even draw a simple sprite, the Atari 7800’s graphics allow a more hands-off approach. Its MARIA chip operates exclusively via DMA, reading from RAM at high speed and drawing into an internal frame buffer. Each scanline is defined as part of a Display List, and the entire screen is defined by a collection of these – a Display List List (really!) Unlike the ANTIC chip designed by Jay Miner and Joe Decuir, MARIA required expensive static RAM.

Other Stuff#

The new 8bitworkshop IDE 3.5.0 release has lots of other new features:

New Z80 Simulator

The old Z80 simulator had some clever runtime-generated code that led to giant switch statements that led to lots of little pauses. The new Z80 simulator doesn’t hiccup at all, and it’s really fast.

Memory Probe and CRT Probe

We’ve got new debug views that show a real-time view of memory accesses. The Memory Probe shows a map of memory space, and the CRT Probe shows a map of the electron beam as it goes across the screen.

Additional Resources#

You might be asking, how do I program this stuff? The included code samples will give you a head start, and there are plenty of links to technical info on the awesome-8bitgamedev list.

Happy programming!