This time we take a look at oneof the pioneers of Emulation itself, Neil Bradley. Neilhas achieved an incredible amount of goals in emulation and his contributionsare spreaded all over different emulators. Despite his vast experience andamount of work on his back, he is a very friendly developer and has offered some ofhis time to answer a few questions and talk to EmuViews about Emulation, andthe current projects he works on. Here are the Q's & A's.
|Neil Bradley, pioneer, InterViewed - June 15,1998 by JoseQ
1. First of all, can you introduce yourself to the readers? Includingprevious works, your contributions to others projects, and yourcurrent responsibilities in current projects.
Boy - OK - the old stuff first: I released an Asteroids emulator for thePC in Sep '96. The only other freeware arcade emulator at the time that Icould find or knew about was Dave Spicer's Sparcade, which inspired me toget into emulation. I started email@example.com, which was an arcadeemulator mailing list. After that I renamed it to EMU, and added a bunchof new vector games (since I was a vector fanatic). Then came the delugeof other emulators in the October timeframe, including Pengo and a fewothers. It became sort of a bug, and everyone jumped on the bandwagon. ;-)I've also helped other emulator authors out (countless at this point) intheir emulations, such as Chris Pile's Asteroids emulator and PeterHirschberg's most excellent Vector Dream emulator. I've helped variousMAME driver authors out in several situations, extensively in some cases(Targ/Spectar/Blasteroids).I currently have a 6502, 6808, and Z80 ASM based x86 emulator suiteavailable for use by anyone who wants it. Some emulators that use mycores: Replay, Rockulator, Nofrendo (NES), Vector Dream, Shark,... Hm...and a few others that I can't recall right now. There's even rumor that my6808 core will make an appearance in MAME, to which it has my totalblessing.I'm also the head architect for Retrocade, the MAME-like emulator, thatfocuses specifically on performance and ease of use. Though MAME andRetrocade have similar functionality, our audiences are quite a bitdifferent and we really do serve two different purposes.
2. Can you tell us "relatively newbies" how different was the EmulationWorld was back when you released "Asteroids Emulator" and tell us a littleabout it?
That was a while ago. I had no one to talk to. I had no one to bounceideas off of. Basically, there *WAS* no arcade emulation scene then, withthe exception of Mr. Spicer's most excellent Sparcade. I saw his emulatorand said, "Hey! I can program! I can do that!". I actually started theAsteroids Emulator right about the time I saw Sparcade, and in mid-Feb of'96 I shelved it because I reached an impass with the digital vectorgenerator with scaling problems. I then talked with Al Kossow in lateAugust, and he provided the missing piece of the DVG I couldn't getworking, so I decided to pick the project back up and release theAsteroids Emulator.
3. In recent time, Emulation is a fashion, and something most programmersfind interesting and a challenge to do. Back then, what motivated youto start emulating?
- I was reminded how much I loved video games and how just playing thegames again conjured up good memories
- It was a good chance for me to brush up on my reverse engineering skills
- I wanted to learn hardware a bit more indepth than I had in the past
- I wanted to interact with people in a company/product fashion - with aproduct of my own design. It has taught me *TONS*.
4. You built the cores for the 6502, 6808, and Z80. What were the reasonsto emulate those chips? Are they used nowadays in games, or otherwise?
They're used in YESTERDAY'S games mostly. ;-) Occasionally you'll find amore modern game (like the Shark emulator) that will have a 68000 CPU as amain processor and a Z80 or 6502 as a slave processor. The 6808 was usedas a sound CPU for the Williams games. BTW, We've got a 6809 emulator corewe're getting some last minute bugs out of and will be releasing that,too. I'm also eventually going to tackle writing a 68000 emulator in x86asm, though that will be a while down the road. I've already got NeillCorlett's Starscream core, which is great. I'd like to do it for thechallenge and to learn the 68000 a bit better.
5. Those cores are used inside many popular emulators, and serve as thebase for people to develop on them. Was that your idea behind releasingthe code? Has freely distributed code always been one of your rules ofthumb? Why?
Many emulator authors did have performance problems in some games. Irealized this and wanted a fast ASM core for myself, and I figured, "Whynot share?" So I did. I did a bit of selling, and several came to me forthem.I do not, however, believe in distributing completed works in source form,especially when there's a warez market for it. The primary reason? Piracy.I want to make it extremely difficult for custom CD makers to be able tosell something that everyone can get for free. Don't laugh - IT HASHAPPENED on multiple occasions. I've been witness to two of them at alocal swap meet. Having the source available allows anyone to take out allcopyright notices and do whatever they please with it. Not having thesource available (and having internal tamper checks) can knock out most ofthat. That's why I don't release a completed work, but I'm willing to letpeople have my components or information.
6. Can you tell us about firstname.lastname@example.org? Goals then? Purposes now?
The original purpose was to get a group to together of people who wereinterested in a common arcade emulation theme - developers and usersalike. There wasn't anything at the time. It was quite active in "the olddays". I eventually moved it off of Synthcom and Mike Cuddy (KEM author)graciously offered to host it. Since around April/May of '97, the listdegenerated into a flame forum, and the signal/noise ratio became verylow. Late last year, the list died. The primary reason being that we nowhave Dave's Classics and other sites to go to for our emulation fixes. Anemail forum is no longer needed. Now all that happens is an occasionalannouncement or a "Am I still subscribed?" message. ;-)
7. In your mind, do you think Emulation is going in the right path? Ifnot, what would you think should be happening that isnt? Or what ishappening that shouldnt?
Well, yes and no. I think it's great that more games are being emulated,but I tend to not care much for the vertical nature of it. MAME's presencehas killed off other emulator authors. On purpose? I don't think soanymore. But one thing that comes up time and time again is the issue ofperformance. People beat MAME up about performance issues constantly, butlet's not forget that MAME's primary purpose is to document the operationof the games, and high performance isn't their focus. I think now with theadvent of Retrocade, we can focus on performance and usability and getsome of the people who are complaining about MAME's performance tocomplain about OUR performance instead and leave them alone. ;-)
8. As a guy with great vision, can you describe to us your perfect emulationworld?
*GRIN* Well, I don't know about "great vision", but my perfect emulationworld is where every game runs full speed, no frameskip, CD quality sound,works on all machines, and all popular platforms, even on lower endmachines.
9. Now to the good stuff. In your mind, what is Retrocade? Can you tell usa little about the main people involved, and their parts?
Retrocade has two focuses: Performance, and ease of use. IT doesn't need afront end. It doesn't need a bunch of command line options to get thingsworking optimally (but they're there if you want to run it from a commandprompt), and always selects the optimal sound and video settings for thegame that you're playing. We default to 44.1khz audio. All vector gamesdefault to 640x480. Think of an emulator that you'd walk into a store andbuy. That's what we're designing Retrocade to do.Currently we have quite a few people on the Retrocade team with varyingresponsibilities. I do architecture, most of the sound work, integration,platform/portability issues, and some games along with it. Mike Cuddy (ofKEM fame) has done the MCR series of games, performance optimizations,debugging, the GUI, and basically keeps me in line. Patrick Lawrence wroteour 6809 cores (we're on rev 2), and did the initial raster graphics work.Zonn Moore donated his Cinematronics CPU core to the cause, and drops hisbrilliance in from time to time on various issues, and is brilliant. PeterHirschberg of Vector Dream fame has put his artistic touch to Retrocade'svector games by adding backdrops, transluscent and antialiased vectors, tomany games, including Armor Attack, Warrior, Asteroids Deluxe, and a fewothers. Neill Corlett donated his Starscream 68000 core, his YM2151emulator and 5220 emulator used in Star Wars. Brian Peek has done a coupleof games, and is responsible for the Windows version of Retrocade. JeffMitchell works on the UNIX version. Brian Levine has added quite a fewgames to the collection and has written the Namco sound engine. PaulBiondich (ice.org) has done the artwork for the splash screen, our webpages, and the GUI. Richard Bannister is working on the Macintosh port.Edward Massey did the original graphics code and win32 work, but iscurrently too busy with life to contribute actively to Retrocade (sniff).
10. How did Retrocade materialize?
The short story: I called Mike Cuddy up and said, "Hey, want to write ahigh-performance easy to use emulator?". Both he and I at the time knewthat EMU (at version 2.3) and KEM were pretty much bursting at theirarchitecture's seams. They both needed a rewrite. Badly. I proposed theidea to Mike in July of '97 and, well, we've been at it ever since.
11. What are the plans for Retrocade release? How is beta doing?
It'll be in July sometime - hopefully July 4th. ;-) Maybe on July 17th -its one year birthday anniversary.The beta is going well. We thought beta 1 was great and bug free, but ourbeta testers found tons of bugs. We fixed several of those bugs, thoughtthey were all gone, and our beta testers found more bugs. etc... We're onbeta 4 now, and it looks like all the crash & burn bugs are gone. It'shealthy enough for release now, but I want to polish several sections ofit and improve performance of some of the games.
12. How come you're able to make it be "faster"?
Faster than MAME, or faster in general? I guess the answer is the sameeither way:
Consider also that Retrocade is almost entirely in C, with two exceptions- the CPU cores and the graphics libraries (Scitech MGL). It has beenported to the Macintosh, UNIX (FreeBSD, Linux, and SunOS), Windows NT/95,and DOS. We have C cores that have identical APIs to our processoremulators, so parts can be easily interchanged.
- We have our own sound routines that are very lean and optimized. We haveour own mixer core and Sound Card drivers. SEAL Is the culprit of a fewperformance problems from what I've been told by everyone who has used it.
- Our CPU cores are in x86 assembly for the x86 processor versions (UNIX,Windows, and DOS)
- Our graphics code does not go through pixel-by-pixel color lookuptables, and we do DWORD transfers from the emulation code to thebackbuffers.
- All of our controllers are event based - not polled. Meaning that theemulation doesn't need to stop and go check for controller input. Ithappens when an event actually happens (mouse button click, keypress,etc..)
- Our sound code runs inside the sound card's ISR entirely, so we don'tneed to stop periodically and push data out to the sound device.
13. What is the long run goal for Retrocade?
Emulate the games we think are cool, with our own twist in some cases, andto make people happy.
14. Now Callus supports TCP/IP network play, that is a feature that hasbroughtnew life to that emulator. Can it be that Retrocade will do to games likeBlasteroids what people can only wish MAME had done?
Anything is possible given enough resources and a strong will. ;-) There'sa few features that I'd like to see that will eventually be put into(or already is in) Retrocade:
Net play looks like it will be righteously cool, and one of these daysI'll stick that feature into Retrocade as well. ;-) The thought of a SpaceDuel net match just makes me grin!
- Save game capability
- Backdrop support for games that have them (Asteroids Deluxe)
- CD Quality sound through samples or through circuit simluation
15. What have been the major difficulties in getting Retrocade to workto release status?
Our motto: If it doesn't do what you want it to do, rewrite it so it's"right". WE DO NOT HACK IT. This is part of the reason it has taken solong. I've rewritten some sections two or three times to accomodate newfeatures, or rearchitected major sections to accomodate new games or a newplatform (Windows, Mac, etc...) The controller code has been rewrittenthree times. Instead of just hacking in new functionality, we coded it soit would accomodate everyone - always keeping performance, usability, andportability in foreground thought.
16. It seems you are developing to many platforms at once, has that affecteddevelopment at all?
Nope. We've kept that in mind since day one.
17. Is coding for portability maybe hindering the speed desires ofRetrocade?
Nope. We've very carefully isolated the speed impacting operations to beoperating system dependent, so each platform can take advantage ofpotential hardware accelleration (if available). That puts a greaterburden on the platform developer, but hey - we did say our primary goalwas performance! This has made some of the porting issues painful.
18. Will Retrocade be one huge monster like MAME or will you be splitting itup in parts where you deem reasonable?
It will be one huge monster. Splitting it up doesn't make sense, really,since the largest chunks are shared by a lot of the games. The biggest byfar is the 68000/68010 emluators, which, in combined form, take almost amegabyte.It's a common misconception that the bigger the executable is the slowerit will run. That's not so. If a particular game doesn't use a majorsection of the code, to the computer and cache system it's as if it's noteven there.
19. Message to emulator authors, and readers alike?
Stay focused. Don't let the lamers get to you. Don't give up if you hit atough spot in emulation. Keep at it.
Readers: Be kind to emulator authors. ;-) We don't put out sucky, buggy code onpurpose. ;-) ;-)
We want to thank Neil for offering again for an InterView and for beingso friendly and down to earth despite his amount of time in the scene andthe numerous projects he works on. He has been the fastest responder to ourquestionaires in all the InterViews over e-mail yet. For comments you cancontact Neil or Me.
One Article Up: EV News - Some Tidbits
One Article Down: Is It Really A Choice?