Current projects

Megadrive / Sega Genesis SDK

This is a small software development kit for the Sega Genesis for any Posix-compatible operating system. (Linux, Mac OS X, etc.) It has a build script that will automatically download and build a GCC cross-compiler for the Motorola 68000 CPU.

md-sdk.zip current version


Multi-CPU assembler

This is an assembler for many major 8-bit and 16-bit CPUs, which can assemble code for multiple CPUs from the same source file.

It started out as a college assignment to write an 8080 assembler, then was translated from PL/I to Pascal to C. Along the way it got macro support, then it got multi-CPU support.

asmx project page


Simple GAL assembler

I discovered GAL chips back in 2005. However, the only free software to generate fuse maps for them was closed-source DOS executables. So I wrote a simple command-line C program to compile GAL fuse maps.

palwiz-1.1.zip


Atari 2600 touch-tone dialer

The Atari 2600 has a little-used mode in its sound hardware which allows for two channels of 4-bit PCM sound. This code makes full use of both sound channels to output the two sine waves necessary to do touch-tone telephone dialing.

Atari 2600 touch-tone dialer source listing
Atari 2600 touch-tone dialer source instructions
2600-touch-tone-dialer.zip

AtariAge thread


Atari 7800 digital signature utility

The Atari 7800 was the first console system to use a digital signature to lock out unauthorized games. Fortunately, the program which contained the private key to the 960 bit (yes, nine hundred and sixty bits) digital signature was found on a hard drive in an Atari dumpster.

This is the second C program written to generate the digital signature, but the first linked against a crypto library and was therefore not easy to recompile from scratch. The version that I wrote is based on hand-decompiling the 68000 assembly code and translating it to C.

sign7800-1.02.zip


"Tubes" video game

Tubes started out as an Atari 7800 game, but development stalled because the 7800 video chip steals too many bus cycles if you display too much data on the screen. Also, I've never been a fan of 6502 code.

It has been ported to the Sega Genesis.

Tubes project page


RPG game

The RPG project started out as a ColecoVision game, but got bogged down because the Coleco only has a 32K cartridge space. The game size was already 22K for just a demo. Since no released game ever used bank switching, there is no emulator support for larger ColecoVision cartridges.

It has been ported to the Sega Genesis.

RPG project page


Video game console cartridge boards

I have made some cartridge boards for the Atari 7800 and Sega Genesis. They use GAL chips for memory decode.


Atari 7800 "mini-ultra" cartridge board


Sega Genesis cartridge board
(on the right are some 8-pin SOIC/TSOP breakout boards that I paneled into the board run)


Black Onyx (SG-1000) translation

In early 2007, I did a translation of the SG-1000 version of the Japanese RPG "Black Onyx" and conversion to ColecoVision in about two weeks. There wasn't much text to translate, but I had to do a complete disassembly so that the text could be freely changed. The source code can be assembled either for SG-1000 or ColecoVision with either English or Japanese text by changing conditional assembly constants.

onyx-006.asm


Old projects