Interview
The Mole
Chris: How long have you been involved in the TI?
The Mole: My dad bought a TI when I was 4 years old, which was in 1982. I very distinctly remember playing TI Invaders for the first time for half an hour or so before going to bed. It was super exciting and I couldn't sleep, so early the next morning I snuck back downstairs to find my parents playing, trying to beat each other's high scores. They'd played all through the night. A few years later, when I was 10, we got an apartment by the sea (where my mom's side of the family lives) where we spent most of our vacations. But if you know a bit about the weather in Belgium, you know that for the better part of the year you end up being stuck indoors. I played my TI games for hours on end there, and when I finally got fed up with Parsec, Carwars, Invaders and a handful of Extended Basic games I started messing about with some type-in magazine games. You know, tediously typing in those long listings, changing graphics here and there, adding lives or speeding up bullets, adding my name to the title screen. That's when my dad gave me the Extended Basic reference manual and taught me how to code my first BASIC programs.
Chris: What specifically drew you to the TI-99/4A?
The Mole: It was basically what we had for a very long period of time. I was quite jealous of my friends with their C64's though, the quality of games on that system was just miles ahead of what we had on the TI. We did get a Sega Master System and Genesis eventually, so while I kept using the TI for programming, I was able to satiate my gaming needs elsewhere on more powerful systems.
Chris: Can you highlight a few other programs or projects you have been involved in for the TI?
The Mole: Not that much really, I only got back into the TI a couple of years ago by discovering ti99sim and the GCC port by Insomnia (I've been a Linux user for the longest time, and used to work as a C developer, so that's really where my skills and interests lay). My first public project was probably my attempt at doing a raytracer for the TI, of which you can still find some videos on my YouTube channel. In the end I got it to work, but it was too slow for an action game, so I left it at that. In between Alex Kidd coding sessions I have used that codebase to test my build environment for the F18A GPU though. I might just come back to it for an F18A exclusive game, who knows... I also released (an early version of) the source code for the PC-side tool that creates the graphics data for Alex's scrolling levels. Oh, and I did the splash screen graphics for Magellan's more recent versions.
Chris: Can you explain to the users what do you think ‘YOUR’ favorite feature is of the TI currently?
The Mole: This is a hard one to answer, nothing really sticks out. It's the complete package and a healthy helping of nostalgia that makes me love the system. It's funny really, if you would've asked me what I dislike about the TI, I could probably list any number of things... yet although it's my favorite system ever it's hard for me to single out what exactly I love about it.
Chris: Do you mainly exercise your skills within a TI Emulator or actual real hardware and why?
The Mole: Well, I use a cross-compiler, so I do everything on my Mac. I do have the real deal right in front of me (check the attached photo of my messy desk) and will ever so often check my work on that, but the development cycle is just so much easier with emulation. I would not have been able to make much progress if I actually had to code on the TI directly and I'm not one of those people who actually uses the TI as a computer for day-to-day use.
Chris: Why did you choose Alex Kidd to port to the TI-99/4A?
The Mole: I've always been someone who roots for the underdog, so when all my friends got Nintendo's, I got a Master System. The game that happened to come with the console was Alex Kidd in Miracle World and I absolutely loved it. It had a depth and playability that kept me coming back, even to this day where I will pick up the game and just play a few levels. I always wanted to make a side-scrolling platform game for the TI, since I feel the system is severely lacking in that area and it was probably the most popular genre in the generation of game consoles and home computers that came after the TI. Lastly, I figured my first game would be better if I could piggy back on the design of an existing game, instead of having to figure everything out from scratch.
Chris: I believe the game is coded completely in C. in your opinion what do you think the response from other coders are going to be by showing that the TI-99 can utilize C very extensively, specifically for the gaming area?
The Mole: All the game logic is done in C, with a few small bits of inline assembly here and there to talk to the hardware. I actually spent a few hours replacing the majority of assembly code with C code, for maintainability reasons. I truly believe that Insomnia's GCC port creates code that is so close to pure assembly in terms of speed for everyone but the most experienced assembly coders that it is an ideal development environment for action games. I hope that it will inspire other coders who are perhaps a bit daunted by assembler to try out coding something in C. Much like BASIC, C is a language that is easy to understand and very structured if you pay a bit of attention and keep to a few simple rules. It's infinitely faster though, so for some of the people that are looking to take their code one step further it is an excellent choice. And for those that are new to C, I would recommend using Tursi's very nice libti99 which provides the equivalent to a lot of BASIC's CALL statements (not work-alike's though, you'll need to learn how to use them) so you don't have to worry about talking to the hardware yourself.
Chris: With your port of Alex Kidd, are you adhering to the original gameplay or have you changed certain aspects to your liking while keeping the feel of the original game?
The Mole: I spent quite some time trying to get the physics as close as possible to the original. I think this is what I find lacking in most early platform games, like for instance miner2049'er, Jungle Hunt or even Donkey Kong: the character just doesn't control very well, with fixed jumping arcs and instant acceleration/deceleration. On the other hand, I had to make a fairly large number of concessions to make the game work on the TI, specifically in level design and features.
Chris Follow Up: If you have changed things, can you elaborate on a couple that you have done and why?
The Mole: There's a large number of things that will be different for technical reasons:
• For instance, there's just no more room for patterns to make the distinction between large and small money bags or to add the special item boxes that some levels have. So I stuck with one size of bag and I will hide special items in the regular 'star' boxes.
• The original game has vertical scrolling levels as well as horizontal scrolling levels. I'd need to extend my graphics engine quite a bit to support that on the TI and I'd rather get something out first before going overboard with special features.
• I'm not sure I'll include the iconic Janken matches. I never felt throwing in a couple of rock-paper-scissors matches was a good fit for an action game. I haven't decided on this one yet.
• The shop that you find in the original game will not be part of the levels, but instead show up before you start the level. Purely for technical reasons, since the shop would eat up way too many patterns and not look very good given the limitations in colors imposed by the scrolling algorithm.
• There's a story in the original, which is told by characters you meet at the end of certain levels. This will be replaced by separate story screens, again due to lack of patterns.
Given that I'm already forced to make a number of changes for technical reasons, I decided to not make a straight-up port, but to create a new game in the same universe, with mostly the same type of gameplay but with new and original levels. The current levels in the demo are ripped from the original game, but it will be mostly original levels in the final version.
Chris: What are some of the main hurdles that you have had to overcome for this port?
The Mole: The game has a relatively dynamic environment, so it consumes a lot of RAM. Originally, the game was supposed to run from disk but I ran out of memory. I spent a lot of time devising compression methods that would be speedy enough to decompress/update/recompress the map data in real time, or would allow manipulation of the map data without decompressing/recompressing, but they all turned out to be too slow to keep the game running at 60fps. I'm sure a more talented coder than me would be able to pull it off, but as things were going the whole thing nearly brought me to the point of abandoning (or at least greatly simplifying) the project. I left it for what it was for a good 8 months or so, before concluding that a cartridge release was the right approach. It will still need the 32k memory expansion, but all code runs from cartridge leaving most of that 32k available for game data.
Chris: I know there has been new games that are specifically designed to utilize the new F18A video upgrade for enhanced graphics and will not run on the standard TI-99/4A without the F18A video upgrade. Is your Alex Kidd port work on a standard TI-99/4A or does it require F18A enhanced graphics?
The Mole: The game will run on a standard TI with 32k memory expansion, but users that have an F18A installed will see greatly improved graphics. The game will automatically detect which VDP you have and select the best rendering path accordingly. This means that there will be one release for all systems. Rasmus has done some wonderful things on the F18A, and that has really inspired me to treat it like a first-class citizen.
Chris: Your Map screen you came up with is quite different from the original (I personally think its better, less cluttered up), but why did you steer this way?
The Mole: I always felt that the more stylized over world maps like you see in Mario or Zelda were a better match for that generation's graphics capabilities, and most of the graphics in the original Alex Kidd were very cartoonish and stylized, except for the map screen. I never really understood why they did this and figured I'd take a stab at designing my own map from scratch. Doing graphics is really something that I tend to do when I feel like I need to take a break from coding, but still want to work on the project. It's a way to clear my mind when I'm facing a nasty bug or particularly daunting piece of new functionality. I very much enjoyed doing the backgrounds for the F18A version recently.
Chris: How much improvement do you think has been done to your game since you have been open to user feedback on the AtariAge forum?
The Mole: That's difficult to say. I'm lucky in the sense that I've been able to stand on the shoulders of giants like Rasmus, Tursi and many others for some of the more tricky technical things. One example of where I got a lot of really useful feedback was on the map design, where multiple people actually stepped up and contributed bits and pieces that ended up in the final design. I've always felt that was a great showcase for how well our little community can work together.
I can tell you one thing though, if it weren't for the many positive reactions on the board I probably wouldn't have stuck with the project for so long. Typically in my projects, I tend to get to the proof of concept phase and then lose interest, but the continued support and kind words from the community really help in keeping my motivation up.
Chris: The music is amazing, was the music coded by you and worked out by trial and error or was it an easy port?
The Mole: All credit for the music and sound effects goes to Tursi's amazing SPF music library. I don't think enough people realize what an impact Tursi's work on this has had, but a good deal of the new demos and games you've seen recently make use of his excellent tools. They've allowed me to basically download the original games' music files in VGM format from
smspower.org and convert them to a compressed format that is directly usable from C and assembly using Tursi's highly optimized playback library.
Chris: Can you briefly explain why this game is now going to have to be a physical 512k cartridge for owners of real hardware.
The Mole: Like I mentioned before, I need a lot of RAM to store level data while the game is running, with the actual amount depending on the length of the level. On average you're looking at 3k for the music, 12k for the nametable and collision data and a couple of K for other miscellaneous stuff. I also need about 24k for code, so the 32k didn't cut it. I thought about requiring a SuperCart, but that would've only given me an extra 8k, which might have worked but still would've been very tight. Another option was targeting (S)AMS equipped systems, but I wanted to target as wide an audience as possible. So I decided to run from cartridge and drop the disk requirement. The reason I'm targeting the 512k carts (and not anything smaller) is because I need quite a bit of storage space for the level data for the two different VDP chips. In the original disk-based project I had planned on doing two separate downloadable releases, but for a cartridge release you really need to make sure you have just one SKU for all versions.
Chris: Will you be producing the physical cartridges and selling them with manuals, etc. or are you going to just provide the code for the user to burn to an EPROM on their own cartridge board or both?
The Mole: I'm currently planning on doing a physical release with real boxes, manuals and the works first, and releasing the final cartridge image for those that want to burn their own once I've got enough pre-orders to cover the setup costs. I really hope that I can match the sort of quality that you would see with a collectorvision release, for instance.
Chris: I know the game is not completely finished but if you had to estimate how many hours do you think you have invested into this project and how much longer do you think it will take to wrap it up?
The Mole: I've been working on this on and off for short periods of time over the past two years or so. It's hard to put a number on it, but we're certainly looking at several weeks if not months’ worth of full-time coding. I don't consider myself a bad coder by any stretch of the imagination, but when I see the speed at which people like sometimes99er or Rasmus can knock out games I have to admit that I'm nowhere near as prolific as those guys. I see light at the end of the tunnel as far as coding is concerned, but I still have a lot of work on creating and designing levels and graphics. When I recently did the design for the forest level, I probably spent the equivalent of about 3 8-hour working days on that. New levels will go faster as I optimize my workflow, but I want to have at least 10 more levels before I think I have a game worth releasing.
Chris: Do you have an estimate release date for us to look forward to?
The Mole: I plan on releasing a playable demo sometime this month. It will have three levels and is mainly meant to capture all remaining bugs and feedback from the community. I also hope it'll tide people over while I work on the final content of the game. With a bit of luck I can have everything wrapped up in time to put one of the cartridges under my own Christmas tree.
Chris: Have you had a chance to think of what you see on the horizon for your next project and if so can you elaborate?
The Mole: You're not rid of me yet, there are a number of things that I would really like to do. I'd like to make a really good pseudo-3D racing game in the style of Pole Position, but with a much smoother rendering engine. One of my all-time favorites in the genre is Pit Stop II on the C64. This might be an F18A/v99x8 only game though, I'm not sure the original VDP would be able to pull it off.
I'm also eager to do a port of Activision's Ghostbusters game. That's another favorite of mine for which almost every other home computer and console of the day got a port, and there's really nothing there that the TI couldn't do. This is the current frontrunner for my next project.
Lastly, I hope that I can continue to evolve the Alex Kidd engine with things like horizontal/vertical scrolling, slopes, etc. and use it for more/other games. Eventually I hope other people will be able to pick up the tools and design their own games. It's not for the faint of heart and it'll be a bit more complex than tools like Magellan, but I hope to make it easy enough so that motivated non-coders can play around with it as well.