San Juan 21

Cool Links



Programming Projects

A few years ago, after discovering and enjoying emulators, I became interested in learning more about how they worked. Having dabbled in 6502 assembly language long ago and already possessing a decent understanding of "classical" computer basics, all I lacked was programming skill. What better way to learn than to write an emulator myself? This became my "excuse" to learn C. I happened upon the excellent (but now quite dated) "HowTo" document on the internet, which details how to get started. With the help of the HowTo and an open-source CPU-core, my first programming project was born:

  • JABAWAPE: Just Another Beginner's Attempt to Write A Phoenix Emulator

    After 'conquering' Phoenix, I thought it would be fun to try emulating a (slightly) more challenging, and more fun to play, arcade machine. I wanted something with a single Z-80 processor, and sprites (which Phoenix lacked). I decided on Pac-man:

  • JABAWAPME: Just Another Beginner's Attempt to Write A Pac-Man Emulator

    After Pac-man, I didn't do any programming for a while. Then I got a Casio E-100 Palm-sized PC (Microsoft now calls the newer ones "Pocket PCs"). A guy named Ben Cooley ported MAME (MAME32 actually) to this device, and released his source code. Being somewhat dissappointed in the performance, and annoyed by few other things, I decided to try building MAMECE myself, and tweaking it, releasing "un-official" MAMECE builds to anyone interested. Before long, I'd made a huge list of changes, and the "official" MAMECE kind of died, so I decided to distinguish my development branch by giving it its own name:

  • MAMECE-10X: MAME for the Casio E-10X Palm-sized PC (Windows CE2.11 device)

    That eventually became dormant, and I didn't do much programming for quite a while. Then I got a new toy: a Sega Dreamcast. A little while after 'hobbyist' programming for the Dreamcast became possible (and popular), I saw a Phoenix emulator for the Dreamcast. I looked at the source code, and discovered it was a port of JABAWAPE! This spurred my interest enough to order me a "coders cable" (which makes it possible to run programs without burning a CD) to try my hand at doing some DC programming. A few weeks later, the result was:

  • DCSI: A Space Invaders emulator for the Sega Dreamcast

    I know, I know, seems like a step backward to emualte Space Invaders. But I'd never emulated Space Invaders, and even though it's a fairly simple machine it had a few things which were new and different for me, like bitmapped video. What made DCSI truely interesting for me, aside from making it work on the Dreamcast, was that I decided to write my own CPU emulator for it rather than use someone else's CPU emulator as I had done before. Since Space Invaders is so old, it used one of the simplest CPUs on the face of the earth: the Intel 8080. The CPU emulator I wrote is 100% C, and thus competely portable. It is written to be very easily understood, unlike more CPU emulators. However, it still has bugs and will only run SI and a few other 8080 games without crashing. Hence it's name:

  • POS8080: Portable Open Source 8080 emulator
  • ©1999-200333 D. Finck