Introduction
Exophase is a newcomer to the PSP scene and what an entrance, to
release a Full Speed GameBoy Advance emulator on your first day is an accomplishment like no other and the response from all corners of the PSP Scene has been breathtaking. So what better way to get to know more is for the webmaster of DCEmu to come out of retirement to interview Exophase.
Heres the latest DCEmu Interview:
Wraggster: Can you tell us where were you born, where you live,etc.?
Exophase: Born in Cleveland OH, USA. Right now I'm in Bloomington Indiana.
Wraggster: What qualifications do you have?
Exophase:Bachelors in computer science, going for a Masters at the moment.. no real work experience, although I've done a lot for the retro game creation system "MegaZeux."
Wraggster: What made you get into computers/consoles?
Exophase:I didn't actually own a computer until I was around 12. It's difficult to explain why, but long before that point I had a strong desire to know how computers work and how I could work with them.
As soon as I got my first (a Pentium 75MHz machine) I wanted to figure out how to program, by
naively opening up random executables in notepad and staring at awe at the mess of characters
that I thought someone must have hand inputed to make this thing. Anyway, I guess you could say
I was always interested in computers in some way.
As far as consoles go, that's pretty typical for all of us, although I didn't own an NES when everyone else did. First I had was the original Gameboy back in 1991 - someone let my mom play Tetris and after that she just had to have one. Eventually I got an NES and the other consoles (at budget prices) followed, like TG16 (good times..) and SNES at the very end of its lifetime.
Wraggster: What projects/coding have you done previous to your GBA Emulator for the PSP?
Exophase:Aside from projects for school (some of them kinda big and scary, like operating systems) I've mainly just worked on MegaZeux, as mentioned previously. gpSP is my first real emulator.
Wraggster: What inspired you to code a GBA Emulator to the PSP and what difficulties did you have getting it to run properly ?
Exophase:I wanted to do a GBA emulator because I figured it could be done, but that it'd take more than just a straight port of VBA. I've been interested in dynarec for a long time and from what I knew about ARM (GBA's CPU) I figured it'd be a great candidate for dynarec due to the large amount of decoding overhead necessary in interpreting it (at least in ARM mode, not so much in
Thumb mode). MIPS (PSP's CPU) was also an attractive target for a RISC recompiler. I had a lot of
other crazy ideas for GBA emulation involving the video code that mostly thinned out, I'm not sure
how much any of them would have worked out. Anyway, GBA seemed like one of the more in demand platforms to be emulated on PSP, and it'd make PSP that more comparable to DS which has native GBA playing capabilities.
Of course, there have been many difficulties, not much about this project was straightforward for
me. I spent hours comparing my debugger to the debugger of one of three other emulators (depending on the game), trying to find where mine goes wrong. Of course, I would have had a much harder time without such mature emulators to compare against. This was all on the PC, long before an initial PSP build was even made. I was always pretty intimidated about moving to PSP because I knew it'd be that much more difficult to debug. I only got a dynarec running on it by doing it in a very systematic fashion, starting with a rather weak but more platform independant approach that wasn't too difficult to port to MIPS, then eventually tuning the MIPS code into what it is now. It's
pretty similar to the approach StrmnNrmn took with Daedalus.
Wraggster: Can the Dynarec be used in any other Emulators ?
Exophase:It might be possible to use it for other platforms that use ARM7TDMI, although the memory interface would have to be revised, as well as the translation mapping functions. Moving to ARM9 would be a bit more work and anything with an MMU would be a headache as well. For other CPUs I don't think this would do much for anyone, even as a reference.
This is all assuming that MIPS is a target. Other platforms can be targeted (as x86 and MIPS are
now), but because of how the dynarec is designed it works best when the target platform has
significantly more registers than the one you're trying to emulate.
Wraggster: Can Full Speed and Full Compatability be accessed with your emulator in the future ?
Exophase:Hm, I don't think any emulator really achieves full compatability. I know the compatability can probably be improved... right now I'm not handling self modifying code as robustly as I should be, changing that might help things, I don't really know yet. I'm also not handling some things like code executed from VRAM. I know for sure that there are a number of dynarec bugs; the interpreter
has much better compatability (and is of course much slower). I'd say the interpreter has around
85-90% compatability, so hopefully one day the dynarec will approach that.
As for speed.. there are still things I can do to improve it. There are some techniques that I
believe will decrease the size of emited code which can improve speed massively if it's enough
(anything to improve icache performance). For games that use the BIOS heavily or games that use
...
Catherine: Full Body’s English translation for the Vita