|Harry Dodgson is the primary reason that we are all here. Well, not our actual existence,
but why GDG's Homebrew Heaven exists since Harry is responsible for creating the first homebrew game and started the entire craze!
And... he barely beat me to it, the bum!
You were first introduced to programming in High School. Be so kind and explain the atmosphere that initiated you into the programming scene. What type of equipment were you given access to and what direction did you receive?
HD> My first programming was in BASIC for a computer class. We had these klunky ASR-33 teletype systems with paper tape and a 300 baud modem which we used to dial into a mainframe at WMU. We only had access to the mainframe at certain times so when we couldn't, we'd store our program on the paper tape for uploading later.
Your slobbering love affair with the Atari began in 1977 while you were in the service of our country. You bought your VCS in Sunnyvale, California - literally the roots of Atari. How did you first react to the console after seeing it in operation for the first time?
Yes, it was love at first sight. Three months of nothing but tanks and biplanes and jets. There was nothing else like it - or even close at the time.
In 1991, I myself placed an advertisement in the Video Magic fanzine trying to locate others to help me make a new Colecovision game. Seems that we were both thinking the same thing around the same time. However, you beat me (and all the others) to the punch and became the first official console video game home brewer with the release of the 7800 Monitor Cartridge in 1993. How did you feel when you first held a new cartridge in your hand and realized what you had accomplished?
There was nothing special to me about that moment. I'd done lots of demo programs and ones for classes in college that this was really just another one. It was a nicer feeling when I started selling them. Nothing I had done before had been worth paying for..
How did you create the Monitor Cartridge software?
The first version was written on my Rockwell AIM-65 computer. I only had an old version of the Atari 7800 programming guidelines to go on, which were written before the system was released and had errors in them. I looked at the AIM-65 routines and wanted something like them, only better. The font is the same as the 8-bit computer, just reordered for the 7800 graphics chip.
MT> So, how EXACTLY did you manufacture the first cartridges?
HD> I bought a "Hat Trick" cartridge, removed the ROM, changed the onboard jumpers, installed a socket and plugged in an EPROM which was programmed with the previously mentioned AIM-65 using a board I bought that did 3 types of EPROMs (1K, 2K, and 4K). A piece of blue self-adhesive shelf paper cut to size finished it off.
You and Lance at Video 61 seem to make a good team. How and why did the two of you meet and decide to work together concerning programming and manufacturing homebrew cartridges?
I really don't remember how that came to be. I know I did the initial runs of the monitor cartridge myself. It wasn't until many years later that Lance took over that task.
When Ed Federmeyer followed your footsteps and released Sound X and Edtris for the VCS, did you realize that the homebrew scene would eventually grow to the healthy state that it currently enjoys and would develop an underground community granting new life to forgotten but beloved hardware?
When I released my cartridge, I hoped more people would be interested in writing games for the 2600 and/or 7800. I wasn't thinking so much of the far future, such as today is. I was hoping people would write more games for me to play on my favorite systems seeing as Atari was phasing them out - in polite terms.
How did you manage to reverse engineer the RSA decryption algorithm in the Lynx ROM and release the C source?
At that time, I had a Pinky/Mandy development unit and an Amiga 2000 to work with. It was easy to disassemble the tiny ROM in the Lynx with those tools. What I did to create the C source was just convert an assembly language instruction (or several) to an equivalent C command. I needed to find the same exploit used by "T-Tris" to bypass the Atari encryption as I was making lots of demos and I didn't want to keep sending them back into Atari for processsing after each change.
MT> Is it true that you programmed Othello on the Atari Lynx for your wife?
HD> Yes, that is correct. She was also my number 1 playtester. Since she lost a game or two on a regular basis, I figured it was just difficult enough.
You designed the LGSS, or Lynx Gaming Sharing System. Was this the first example of single card (cartridge) game sharing between two portable gaming systems?
As far as I know, it was the first one. I think I read that it was going to be a feature in the original Lynx advertisements. I thought it was a good idea. If I had known there was such a thing as "Software Patents", I could have made a lot of money off Nintendo when they released the DS.
MT> Almost a decade ago, you were working with Carl Forhan of Songbird Productions to finish up Ultravore, the Lynx version of the
Atari Jaguar's Ultra Vortek originally started by Beyond Games. How accurate is the Songbird Productions page that has the game listed as "coming soon."
HD> It's not very accurate. It's a very complicated amount
of source code with very few comments. I don't think much
has happened since I documented what I could and added the
(display only) health bars.
MT> What happened with the Atari Lynx Space Battles?
HD> Funny you should ask. I'm seeing what can be done to put
some of the eye candy that people expect into it. I playtested
it at CGE2K and I think the 'engine' is okay. It just needs
an animated title screen and something to make 1 player mode
You also worked on the XBAND Video Game Network, the multi-player video game modem and network that allowed 16-bit cartridge game players to play their favorite video games against other opponents in real time over a telephone line on the Sega Genesis and Super Nintendo. What was your contribution to the device?
Almost nothing, I'm sad to say. I tried for three months to get one SNES game to work with their system. As far as I know, the guy they assigned it to after me didn't get it working either. I did manage to reverse enough of the game code to find everything required; score memory, joypad input routines, and such. I just couldn't interface with their (undocumented and rapidly changing) modem code.
MT> You were a big VCS Combat fan while in the service. Is the Combat 1990 that you programmed for the Atari 7800 what you wished the original could or should have been?
HD> No. It's actually more what I would have liked to do after the monitor cartridge since I started with the "BumperTanks" code that I wrote for it to demonstrate software collision detection. As can be seen on the attract screen, it was done for a contest and I had time constraints to deal with, as usual.
MT> What was your involvement with the popular Lynx emulator Handy?
HD> I helped in the early stages with clarifications about how
things worked. I suggested file formats and tested new revisions.
I didn't write any code for it. I did contribute some C code in the later stages to speed up
the initial header decryption process. I'm not sure if it's
actually in the current version.
What is the story behind NeoDaleks for the Neo-Geo Pocket Color?
The NGPC is another fun system. It's another one that I fell in love with and managed to acquire enough tools to program it. Luckily I wasn't on my own and could share code with others with the same passion. NeoDaleks is just one of a series of "escape the robot" type games. The first one I know of was called "Chase" and was written in BASIC. I didn't do that much coding for NeoDaleks as I found an open source version in java on the 'net. I just had to adapt it to vanilla C then change the sound and graphics.
MT> What tinkering did you perform on the Atari 800 and Atari ST home computer formats?
HD> I did lots of little things on the 800, mostly in BASIC. I saw a sector copier which showed each sector onscreen as it copied it, so I wrote a sector editor with a similar display. There was a user's group in Kalamazoo and I had previously written a bunch of assembly language routines that could be contained in a BASIC string. I used those in the editor to show a real program example. I also had an article in their newsletter showing a custom display list that was almost as fast as blanking the entire screen to improve load times, but allowed one line for status. I also liked the DOS that came with the Indus GT floppy drives and wrote some tiny programs that changed parameters without rebooting or disturbing BASIC programs. I had one of their cassette drives and I would time my files and find a song that same length to put on the audio track and listen to while the program loaded.
On the ST, I had a bunch of files that I downloaded (newsletters and such) that I didn't like the naming convention. So I wrote a program to do bulk renames and submitted it to the UofM archives. There is also a program called "UW" which allowed multiple windows when connected to a Unix system which is open source. There is another one called MultiGEM which exploited the primitive multitasking built in the ST. I adapted the one to the other allowing me to edit files locally and transfer the results to and from the unix system.
MT> One of your latest projects is your "Keep Light On" application for the Blackberry. Please explain why this simple application is so valuable.
HD> When I wrote it, I had a BlackBerry Curve 8330. I took it
to work, where I would put it in a cradle to keep it powered
up where I could see it. The problem was that the
longest setting for the display/backlight was 2 minutes.
When I was listening to Slacker Radio, the isplay would
turn off so I couldn't see what song was playing. Even
worse would be after 15 minutes, the screenlock would activate
and I'd have to enter my password to get to the volume controls.
My program simply checked to see if the BlackBerry had power,
and if so, bypassed those two timeouts. No customizations,
no program limits, just click the icon to turn it on.
Not a big seller, but it paid the fee RIM requests to
created signed programs and use some of the privileged APIs.
Now I have a BlackBerry Bold 9650 but I still use my app
when I want to keep the backlight/display on.
MT> What did you contribute to the Commodore 64 Queztalcoatl C cross-compiler?
HD> That was a work in progress when I first saw it. I created a test program to see what did and didn't work. Then I got the source code from the author and started working on it. I don't know much C++, so it's been an uphill battle. But now I have documented all the things that don't work so well, fixed what I could, and how to work around the ones I can't or haven't gotten to yet. I've recently added several code optimizers, as well as a few commands (like switch). With a little help from a friend, I've also updated the code to compile under the latest GCC compilers so I have versions for Solaris, DOS, OSX, and Linux. The nicest addition I did (in my opinion) is the ability to use named variables for locations in RAM, like graphics registers.
This would be:
|#define GRAPHICS (*(uint8*)0x0020)
in normal C, but is:
var GRAPHICS = 0x0020;
in Quetzalcoatl C.
MT> Super Fighter Team recently released Zaku for the Atari Lynx. Rumor has it that you assisted them with the production of the title.
HD> If someone asks a question and I know the answer…