Andrew was certain this would have been boring, some time passed from last interview, but reading it I found it the most intersting of the bunch we had so far, anyway read on and make up your minds.
GBA Hell : How does it feel to be interviewed?
Andrew Davie : I've done this quite a few times before, for various things. I'm happy to be doing things that interest people enough to want to interview me. But I still find it a bit amusing. What's one more slice of fame?
GBA Hell : Have u got a real life work, are you looking for one or just studying?
Andrew Davie : I'm working very hard on my own company TwoHeaded Software (with a few partners). Our site is www.2headed.com
GBA Hell : Which classic system did you own in the past, and which ones did you buy as a grown up? Any system you are still missing and willing to grab?
Andrew Davie : I have never owned a current games system. I've always programmed them professionally at work, so they've been available to me even before they are to anyone else. Systems I've toyed with are Atari 2600, Atari 400/800, Commodore 64, Nintendo NES and Nintendo SNES, and SEGA Genesis and Saturn. After that I spent a while on PC stuff. Currently I have a reasonable collection of retro-consoles. The newest thing we actually hook-up at home is a SNES.
GBA Hell : Which programming languages do you master? Do you think coders are normal human being?
Andrew Davie : I have working knowledge of many languages. I don't think one ever really masters a language. These days I primarily use C++, because I like the elegance of design it encourages. I'm also very skilled at C, and many variants of assembler. I've dabbled in lots of others - Pascal, Java, COBOL (!!), BASIC and many others too arcane to mention. A competent programmer can pick up languages pretty quickly. I use whatever language is most suitable for the job in hand.
I think good programmers are more anally perfectionist than most people.
GBA Hell : How hard is gba coding in your opinion? What are you using to develop, which tools and compiler?
Andrew Davie : I find the GBA platform very simple indeed. It's a lovely machine with lovely tools available. Perhaps the easiest console to program, ever. Being able to program in C++ and/or C or assembler if you wish, and the straightforward architecture and hardware assistance makes it a joy to work with. Combined with the extensive online availability of information and tools, it is really a pleasure to work on this machine.
I use custom-written tools, mostly. The compiler of choice depends on the particular application I'm writing. I would recommend anyone doing C++ or C on the GBA should check out the GCC tools.
GBA Hell : What's good and easy and what instead is a kick in the nuts about gameboy development?
Andrew Davie : The architecture of the platform is beautiful. This machine is my first introduction to the ARM processor - and I love it. It is very powerful, very simple to learn, and quite rapid. I don't think there are any bad points I can list about GBA development. The online community is fantastic, the machine is fantastic.
GBA Hell : >Your unreleased 2600 emulator, why did you choose the vcs2600, when did you start coding it, how long have you been on it so far and how many hours a week are you still putting on it?
Andrew Davie : I wrote an Atari 2600 game last year, and I wanted a project for the GBA to help me push my knowledge about how to program that machine efficiently. Since I already knew the Atari 2600 well, and had been discussing with people the feasibility of an Atari 2600 emulator on the GBA, I decided that would be as good a project as any for learning some aspects of coding on the platform. I started coding the emulator on a part time basis sometime in November, I think.
I haven't spent any effort on it for some time. The availability of source code on the 'net for Atari emulators makes the implementation of a basic emulator on GBA fairly straightforward. I did have a look at some of those and they were helpful in assisting me to design the architecture of my emulator. The real trick is figuring out how to get adequate speed on the GBA. I'm running about 8fps at the moment, but anticipate significant speedups if/when I go the next round of optimisations. There is already an Atari 2600 emulator running at 45Hz+ - though it is unreleased. Mine is one of several efforts. It was a good learning experience, and I enjoyed the challenge.
GBA Hell : 2 Headed software, what is it and where is it going? Is the 2600 a 2headed project or just your own idea?
Andrew Davie : The 2600 emulator is, as I mentioned, a learning testbed for applying optimisation techniques and efficient use of hardware resources. Nothing more, at this stage. TwoHeaded Software is a partnership between three industry veterans (all with 15+ years and many titles behind us). We hope to develop titles for the Gameboy Advance platform. Over the past year or so we've been refining our tools and skills and are now actively hunting work.
GBA Hell : What's your emulator current state?
Andrew Davie : Working, one minor CPU bug (a flag error). It runs different games at various speeds, but typically 8-10frames/second. No sound. It is currently not being worked on.
GBA Hell : How fast is It compared to hardware itself, and could it be improved easily or needs a complete recode?
Andrew Davie : The path to greater speed requires a small rewrite - a process which could be done over about a week. I have the algorithm well designed, it's just a matter of deciding if I really want to do that or not. The hard part has been done, so I'd rather work on other more challenging things at this stage.
GBA Hell : What is missing still in your own opinion and what are you looking for to add in next weeks, will it ever be ready for public? Mike said yours was the one to have more possibilities to reach a proper speed.
Andrew Davie : The project is on hold. Greater speed, support for different cart/bankswitching methods, and sound. Support for paddle controllers, and that sort of thing. It may eventually be a fully-fledged '2600 emulator available to the public, but it's just a pet-project. As such, it will occasionally be worked on. Intermittently, when I feel like just relaxing and enjoying some non-critical programming.
GBA Hell : What percentage of games are running on current build? Is 100% your target or you just want to get some of your oldtime favourite running?
Andrew Davie : It runs all the games I've thrown at it. But those are only 2K and 4K games with simple memory management. Addition of extra games is a matter of implementing the extra bank-switching schemes. No big problem, but that doesn't interest me greatly at this stage.
GBA Hell : Has the emulator any sound as yet, looks like sound is pretty an hard point in gba development...
Andrew Davie : No, sound is not a priority for me.
GBA Hell : How many people did work on this unreleased emulator and how many people did give small help?
Andrew Davie : One. But as noted, there is a large online body of information available to those who are interested in the inner workings of the Atari 2600. And it really helps to have programmed a title on the machine itself. It's quite a beautiful and complex challenge to make that system do anything. Anyone interested should look for the [stella] mailing list.
GBA Hell : Do you see emulators for Megadrive-Genesis, Snes or even PC Engine running at close full speed on GBA hardware now that you have been tweaking with every single bit of GBA, did you ever hear of anyone actually trying emulating one of those systems so far?
Andrew Davie : This is a matter of debate in the online community. It is my personal opinion that we will see a SNES emulator sooner rather than later. I have a bet that within two years we will see a 30Hz+ SNES emu available. I am confident that the similarity of hardware between the machines will make such an emu feasible. However, the 16.78MHz of the GBA requires very clever coding/emulation techniques. We will have to wait and see. As far as I know, there is a working NES emulator, and a Sega Master System one, a Sinclair one and who knows what else. I'd lke to see a Commodore 64 emu which should be feasible.
GBA Hell : Have you got something else in the work, I know you are pretty active on GBA-Development community?
Andrew Davie : I always have something up my sleeve. You'll have to wait and see :)
GBA Hell : Are you looking after someone elses GBA project, who would you consider best homebrew GBA coder around?
Andrew Davie : I am currently in discussions with some people about possible projects. I anticipate that I'll soon start work on an interesting game which is true to my heart, yet pushes the GBA to the limits. I enjoy pushing hardware as far as I can. There are a lot of very good GBA coders around. The system provides bitmaps so many PC coders are simply porting PC code/demos to the platform. That's OK, but I like to use the machine more intelligently than that.
GBA Hell : Any wider thoughts on GBA homebrew scene? Any one you wanna greet and any one you could not stand?
Andrew Davie : Everyone is very friendly and helpful. We're very careful not to pirate anything (documents/tools/ROMz), so we're all genuine homebrewers in that respect. The information available to us is generally taken from online sources and reverse-engineering projects. There are a lot of people willing to help the aspiring GBA programmer, especially on the #gbadev Yahoo! mailing list, the #gbadev IRC channel on efnet, and at www.gbadev.org
GBA Hell : What do you like to do when you are not coding, of course skipping sex related matters?
Andrew Davie : I code, therefore I am. I code for fun, I code for work. When I'm not coding I sleep. Yes, I have no life.
GBA Hell : Which are your favourite Videogames all-time and nowadays?
Andrew Davie : I don't play games that much, as writing them has always been my passion. Of the old-style games, it's hard to say. I like different games for various reasons. I loathe FPS games such as Doom, Quake. I prefer interesting and innovative design/play. I would not like to single out individual games, as I like different ones for different reasons. I do tend to prefer puzzle/thinking games, though.
GBA Hell : X-Box, Gamecube, PS2, none or all? Both from a coding point of view and as a gamer?
Andrew Davie : As long as FPS isn't the focus of a game, and gameplay is given attention above all else, then I really don't care about the platform. I don't subscribe to "this is more powerful" and "this pushes more pixels" sort of thing. You can still write great games for the Atari 2600.
From a coding point of view, those machines all require mid to large size teams and many many months of development time to produce anything of note. As such, they don't interest me as a coder. As a game player, I treat each game on an individual basis, not platform.
GBA Hell : Thanks for everything, any final thoughts, some exclusives to offer at the end?
Andrew Davie : If you are going to do something, do it with passion. Put your heart into it and don't care what other people think. I've always approached my interests that way, and even the obscure, uninteresting things, turn into something worthwhile that I can be proud of. You can be sure that whatever I'll be doing next will be... interesting :)
The Lost Question
GBA Hell : I must admit I did play a beta of yours, I really think you should work hard on it for a week and we will see something great happen, any hopes to see that actually happening?
Andrew Davie : Not for a while, but I haven't shelved the project permanently. I will dabble occasionally and if there's enough interest I might make those speed improvements I've been talking about. Hopefully somebody else will have released a stunning '2600 emulator before then, and we can all play that one instead :)
Thanks Andrew, and now people flood the board requesting him to complete the thing.