I've messed around with a few things of my own, but the only really significant contributions I've made have been to MAME, with a couple of drivers in Raine too.
9. Can you tell us when and how you got involved in them?
I don't remember the exact sequence of events. I was fascinated by Mega Drive emulation, but MAME, being 'open source' (not true Open Source, but that’s not a debate I wish to get into) provided a large amount of code to study, so I studied it.
I subscribed to some mailing lists about emulation, but in all honesty didn’t understand a great deal of the discussion. In the end I found trial and error to be the best way forward.
Sorry I can’t provide more details, but it’s not something I remember vividly.
10. What was your first driver in MAME?
First contribution was a couple of clones, possibly Winter Bobble, the Snow Bros. bootleg. The first actual driver was the Sega C2 driver, which is an arcade board based on similar hardware to the Mega Drive , which fascinated me at the time. In all fairness Aaron rewrote the majority of that driver and while I gained a great deal of experience from working on it, it would be fairer to credit that to Aaron Giles and Charles Macdonald.
Sega System E probably came a little after that, an arcade system based on the SMS. I should revisit and rewrite both those drivers at some point as both currently have outstanding problems I was unable to solve at the time. At some point after that I began looking at some of the more obscure games which were being overlooked, and successfully emulated several of them including titles such as Angel Kids, Mug Smashers, and Steel Force.
11. What is your favourite driver in MAME or favourite MAME memory?
I've enjoyed seeing the progression, tasks which were once thought to be impossible being figured out. The recent progress on the Sega FD1094 / FD1089 encryption was nothing short of amazing, that and the recent DECO102 encryption only leaves a small number of ‘tough’ encryption schemes that we don’t understand. Gaelco Video Ram, CPS2 / CPS3, and the Data East DECO156 encrypted ARM CPU.
Seeing a game boot for the first time is always a great feeling, I remember the great surprise when working on the Psikyo hardware driver and I first saw sprites (which at the time were random pieces of garbage) flying around the screen in bullet formations. That was an especially good memory as prior to then the SH2 core hadn’t been used for any drivers and was therefore untested.
Favourite driver is difficult to judge, least favourite is much easier to answer, that accolade would go to the NeoGeo and CPS2 drivers for all the hassle and unwanted attention they’ve caused us.
If the Sega ST-V driver was improved to the point of perfection that would probably take the crown of favourite driver due to the sheer technical accomplishment involved in perfecting it, however, such a goal is quite a long way off as the Saturn hardware was no easy beast to tame, or emulate.
12. How many hours a week do you spend working on MAME or other projects?
It depends on the week, the mood, and the direction the wind is blowing. Sometimes I’ll spend no time at all on MAME, other time whole days trying to sort out problems. If I have an idea I like to see it through, regardless of the time it takes although I won’t always be successful and often if I’m wrong will have nothing to show for the work put in.
13. Do you speak/meet with other MAMEdevs?
I speak online with other developers all the time, but any actual meetings are often in London and my location isn't ideal for getting there and back in a single day so I’ve only ever met one or two developers.
14. What piece of MAME code are you most proud of? And what does it do?
I can't pick out a single piece of code. I think the overall contribution I've made has been more important.
Picking out a single key moment I would say that taking over the releases / source management from Nicola was a vital step in the history of MAME. At the time Nicola was struggling with the workload due to real-life commitments and the time between releases was getting longer all the time. Many submissions weren’t being included confining development to a frustrating cycle of re-sync and resubmit leaving developers having little idea of what the current code-base was. At this point I offered to take over the releases, and would highlight the following three changes I made as being significant.
1. The introduction of the regular ‘u’ diff update system.
This resolved the main problem, giving both developers and users easy access to the latest code and a faster turnaround time for feedback on submissions
2. The removal of the TESTDRIVER system.
Previously non-playable games were disabled in the source as ‘TESTDRIVERS’ I feel that by removing this system, and enabling all drivers regardless of if they were actually playable opened the door to more external developers contributing to the project.
3. Addition of more preliminary drivers
As well as enabling the non-playable games I also encouraged submission of WIP code. This helped turn MAME into a document of everything we know, even if in some cases it is very little. Again these WIP drivers provided a way for external contributors to help with the project.
I feel my changes have helped MAME appear as a more serious project (which it is) and made it more accessible to potential developers. The changes may not have been popular with gamers but that does not concern me.
I don’t regret the decision to offer to help, despite since handing control of releases over to Aaron to focus more on development.
In addition to the changes made during the management of the project I’m always glad to see new developers who I’ve helped teach the basics of MAME to becoming full-time developers for the project, for example, seeing the work of Pierpaolo Prazzoli (Reip) has done on MAME lately makes the time taken to explain how things worked to him seem all the more worthwhile.
15. What does your significant other think of MAME and other projects? If single do you use it as a pickup line?
I've never really found the opposite sex to enjoy Arcade titles that much, not wanting to stereotype, but aside from a bit of Puzzle Bobble interest seems minimal, and odds are it wouldn't work very well as a pickup line for that reason too. As a conversation piece with friends it works quite well but that’s about it.
16. What do you use for developing MAME?
My current hardware is an Athlon XP2400 / 512mb Ram / Geforce 4, 4600 which I find is fine for most tasks although the lack of RAM makes working on one or two drivers more difficult. Hyper NeoGeo 64 for example really requires at least 1Gb of RAM to be able to develop with meaning I’m unlikely to make any real progress on that driver until I upgrade, although in all fairness I probably wouldn’t anyway as I have almost no interest in emulating 3D systems.
17. When testing MAME do you use a keyboard and mouse or do you use Arcade controls?
Keyboard / Mouse combination, I don’t really have the space for anything else and don’t really play games often enough to warrant it anyway.
18. Do you use a front end, if so what is currently your front end of choice?
No, I use the command line, a front-end would not aid development in any way, and even simple front-ends such as the one built into Mame32 get in the way, which is why the baseline MAME application is still command-line based.
19. How does MAME currently compare to what you thought MAME would be when you first started, and why do you feel this is the case?
It’s a bigger project than I ever imagined it would be. I’m amazed by commitment and enthusiasm shown by the developers and the rate at which progress has been made.
When I first started looking at MAME, which was quite a while before I first contributed to MAME, it was just another arcade emulator in a fairly crowded scene. Since then it has grown into what can only be considered one of the ultimate arcade references.
MAME is continually improving and has outlasted almost every other arcade emulator. The reasons for this, while unpopular with gamers, are simple. MAME development has been focused on creating an emulator for developers, aiming to provide a fully-featured generic framework which can be used by anybody emulating a game while maintaining a high level of coding standards free from hacks and such aimed at pleasing gamers.
The vast number of CPU and sound chips emulated, integrated debugger and graphic functions available to developers make emulating new hardware using MAME a relatively simple task and allows developers to focus on reverse engineering the hardware and documenting their findings instead of duplicating work in emulating previously emulated components and writing complex video rendering code for each new driver.
By taking this approach MAME drivers are both clear to read, and easy to develop in contrast with many of the other emulators which focused on making individual games run fast, or be more fun to play. These single game, or smaller multi-game emulators often utilized a large number of hacks for each game and each driver contained complete video rendering written on a per game basis, only emulating exactly what each game needed with a large number of hacks for speed.
The approach used by these emulators may have produced something which was more fun to play in the short-term but often produces code which is very hard to read and near impossible to maintain, and with ever increasing PC hardware specifications the optimizations soon become obsolete anyway. It’s no real surprise that most of these emulators have died out.
I’m glad to see that in this sense the goals of MAME haven’t changed at all, the temptation to add ‘fun’ features to appease gamers has been resisted, and development is still going strong. People don’t seem to want to believe that MAME is primarily a documentation project but the evidence is greatly stacked against them.
20. Do you feel like your work is appreciated?
I think to answer this I must break the user-base into groups.
For general users, No, I'm pretty sure the work I do isn't appreciated. I've read too many “Why do MAMEDev keep emulating crap Korean games instead of ‘abc’ we actually want to play” style comments to really be able to convince myself otherwise. Also the simple fact that so many people blatantly ignore our wishes when it comes to how MAME is used would seem to indicate that they either don’t comprehend or care for the sheer amount of effort that goes into it.
At the end of the day I prefer to work on obscure titles. Working on unknown titles is more of an adventure, and personally something I find more rewarding and the occasional “Thank You” you get from somebody who actually remembers the obscure titles more meaningful.
For developers is another matter, I think most developers appreciate the regular updates giving them easier access to current code and the ability to follow the development process more closely.
There are of course exceptions, I’m sure some general users do appreciate the work that I’ve done on the project, in that sense it’s not fair to generalise.
Either way, the historical importance of the work being done is more a driving factor for me than any appreciation being shown. I’ve never even really cared too much about getting credit for the work I’ve done on MAME because I know myself the value of it and that’s all that matters. I don’t understand why more people can’t see things this way. 20 years from now hopefully I’ll be able to look back and think to myself “I figured out how that worked” because the beauty of MAME is that it’s a document of how things work, and one which will hopefully last forever.
If I wanted to feel appreciated by the masses I could try and emulate the latest VS. Fighter, but I don’t, and actually I find it more of a deterrent than anything else.
21. What would you suggest for some young developers, who are interested in MAME / emulation, as a starting point?
Many of the more enthusiastic developers we have are the younger ones, and providing you can gain a firm understanding of a few basic concepts it isn't that hard to get started at all, especially given the framework MAME already provides.
The ability to learn is however something which cannot be understated. There is a fine line between making useful contributions and annoying developers / wasting their time. People who learn from their mistakes and improve are likely to make good developers while those who fail to and continually attempt to send worthless contributions despite having the errors of their ways explained to them multiple times are not.
As more and more things are emulated there is less scope for new developers, and the remaining bugs become more difficult to fix properly but there will always be room for contributions. As mentioned in the answer to a prior question, one of the main changes I made to MAME was allowing for more WIP code / non-working drivers to be included and this can often be improved upon as a good starting point for any developer who wants to try their hand at emulating arcade hardware.
There are a couple of important things to remember. Firstly you shouldn’t be afraid to try, and shouldn’t be afraid to fail. Failure is just part of the ‘job’, not every idea will work. A good way of getting started is to look at what has already been done because the same basic principals apply to many, many pieces of arcade hardware. Secondly, when emulating arcade hardware things should be logical, it should be possible to explain any code put in a driver in terms of how it would work on the real hardware, if something were 100% illogical chances are it didn’t actually work that way.
I would also say like to add that if you’re only interested in adding brand new games, or unwanted ‘popular’ features to MAME to make the games more fun to play then don’t bother, write something else instead.
22. After stopping maintaining MAME, What are you most excited about? Extra time, family?
Being able to work on MAME at my own pace is important. I was starting to find that I had no time to make actual contributions to MAME because I was spending my free time testing submissions and putting together updates instead. Hopefully the additional free time will allow me to look back at some of my previous drivers and make improvement, or attempt to emulate previously unemulated titles.
23. What possible problems do you see for MAME in the near (or distant) future?
I think the increase in unwanted commercial attention is a serious threat that we’re going to have to deal with quickly. Too many people seem to be attempting to take advantage of the MAME name and software in order to make their own little profit through selling illegal products based around MAME. MAME is a non-commercial venture and it is a shame to see people abusing it in this way as it puts MAME in a very bad light.
The trend towards multi-core CPUs may also present an issue for emulation. Emulation is not really suited to multi-core systems, and at present even the fastest single core CPU on the market struggles to emulate the processors found in some arcade machines at a speed where development is enjoyable, and multi-core systems won’t help this at all.
Long-term I’m somewhat concerned about all the talk of ‘Trusted Computing’ (or whatever the buzzword of today for it is) The implications of such a system could be huge, to the point of making it impossible to run any home developed code. It is already perfectly legal to prevent people running their own software on consoles, and it would be a huge blow to the home developer if the modern PC is replaced by a far less functional device which is the way I see things going. The problem is when you’re in a minority, and most of the population don’t care as long as they can run Office on their PC, it’s an uphill battle.
Aside from MAME I also wonder if enough is being done to preserve the modern-day culture. I can’t help but notice if you look for online resources for modern PC games which are more than a couple of years old many are no longer available because the homepages have been abandoned, downloads lead to bad links, or sites simply no longer exist. Finding once easy to locate maps for popular titles such as Quake 2 can be difficult, with often only a single source still hosting them. For less popular games the search can be futile.
24. Anything you consider Impossible?
I’m still not optimistic we’ll see proper emulation of the Toaplan sound MCUs used on titles such as Batsugun, and likewise, games such as Gaelco’s Master Boy which use a similar MCU as the main CPU.
Several older games are also something of a concern. Bitrot seems to have taken its toll on many of the very early IREM titles which now sell for exorbitant prices if found working, and several of the early Sega games which were protected by battery backed encrypted CPUs also seem impossible to find in working condition. The remaining DECO cassette games may also prove difficult / impossible to find.
25. What would you like to see?
The impossible. I love to be proved wrong about such things.
26. What irritates you?
People who could contribute, but don’t. There are a few people who would rather wave screenshots of their progress in your face but never submit it, drivers for prototypes and such. As a developer I put all I can into the project, everything I know is there in the source, and if I make any new discoveries I make sure to document them fully.
Secondly people who seem to think that because the MAME source is available to them that they can do whatever they want with it, regardless of how myself and other developers feel about their changes. The source of MAME is available because it’s a document of our knowledge and to allow people to contribute, not so that others can make unwanted changes to it and destroy its purpose.
27. Dumbest question you ever actually answered? (This one doesn't count)
A guy mailed me to ask why the debug version of MAME still has bugs in it. That mail was unique so sticks in my mind as a pretty dumb question.
28. Closing comments?
I’ve had many insults thrown my way over the period of the last few years, from Nazi to Hypocrite and everything in-between. I doubt this interview will do much to change people’s views, in fact in some cases it may just make them stronger. People are entitled to their opinion, even if I disagree with it.
I will say that I might not be the easiest person to relate to, at least for those who don’t know me, but anybody who does know me will know that I do put my heart into the things I do. I don’t claim to be the most experienced developer it would be foolish to make such claims because I know I’m not. My real world programming experience is non-existent to laughable and sometimes it shows, but I will sit here and say that if you want to do something then the only limit is how much it means to you to do it. 5 Years ago I would have laughed at anybody even making the suggestion that I’d emulate half the hardware I’ve emulated, actually its still something I can laugh about today.
That wraps up another interview. I would like to thank [Haze] for taking the time to participate in this interview. I'd also like to again thank the members of BYOAC for submitting a few of the interview questions.