zsKnight Interviewed

(October 22, 1997)

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.