This interview is conducted
by Mike Gregerson. Special thanks goes out to Mike for sending this in.
(Mike's questions are in cyan;
zsKnight's are in white.)
I would like to say your work is
great to the emu scene. But to get down
to business I would like to ask
you some questions about your Mr. Grim sound battle. It's for an emulation
newsletter. If you wish, after I'll send you a copy.
Sure thing!
First question: How exactly did Mr.Grim help you?
Mr.Grim helped us by giving us key
info on the sound decompression routines
(mainly how the filter values work),
definitions of a couple of SPC instructions (We removed them out of ZSNES
since we haven't found any docs on them yet).
Second: Did Mr.Grim give you the Snes9x sound codes?
No way! From the way how ZSNES produces sound, I thought it was perfectly obvious that the sound code from Snes9x was never used on ZSNES. I've heard a lot of differences between the way how ZSNES and Snes9x plays sound. Listen to the pitch and volume of both. Then listen to several games such as Mario World (When Yoshi pops out), Tetris Attack (the intro music), and many many other games has sound that are very different (that doesn't count as pitch nor volume).
Third: what is your relationship to Jeremy Koot AKA "The Teacher"?
The_Teach is a very nice guy.
We are both friends at the moment. Whenever
we meet in IRC, we always talk
with one another about stuff like programming, SNES development, etc.
The_Teach also takes a good role in ZSNES. He has helped us with
a lot of information such as HiROM, BG priorities, etc.
Forth: How did Mr.Grim join up with you?
You know _Demo_? My partner
for ZSNES. _Demo_ was the main
programmer of the SPC in GrimSNES.
I've first met _Demo_ when he was programming Mario Improvement (If you've
tried Knight's level, that's my level!). We've chatting in #MI for
a while and then I mentioned "I'm writing an SNES emulator". At that
time, I've never known _Demo_ was the programmer of
the SPC for GrimSNES. But
it came to me as a shock when he mentioned that
he was the programmer of the SPC
for GrimSNES. However, later on, _Demo_
found out that Mr.Grim has quit
GrimSNES. Once I heard that, I asked _Demo_ if he would like to help
me with ZSNES. _Demo_ agreed and started programming the SPC engine
for ZSNES right away.
Mr.Grim was a little annoying at
first (I remember that part when he kept asking us to get DKC1 working
properly =) ), but eventually I got to know him better and I've noticed
that he's a nice person once you hang around with him for a while.
But he is a somewhat serious threat to the ZSNES team (I'm sure that if
I never knew him, this incidence would have never happened). The
one challenge that we tried to do is to program ZSNES with as little help
as possible. This got to us in a big way all because the snes lacks
so much documentation
(65816, PPU, SPC all lack some documentation). The 65816 is
really documented poorly. How
I overcame this problem is by writing a test program
that outputs the registers and flags after executing an instruction
and running them on Snes9x. But
this doesn't solve several instructions. Some
opcodes of certain instructions, such as JMP, JSR, jumps to a weird
bank. The only way to solve this
part is to debug games. There are also different
copy protection checks too (i.e. Puzzle Bobble). This also needs
to be debugged to find out how
it to bypass it. Sorry if I've gotten off topic, but I really do
need to clear this issue up.
Thanks For The Time.
No problem.