The Affinity Y0SHi/Riff Interview on qNES
Alan Dykes - Nov. 24, 1996
- Please state your name and affliliates.
- I'm part of Damaged Cybernetics, DAC, MTDS, and OldSkoOL
- You are currently writing an emulator correct?
- Yup, that's correct
- What is it called, and what system does it emulate?
- We call it qNES (quickNES) -- it emulates the standard 6502 CPU used
by the Nintendo Entertainment System and a few other gaming consoles.
- What all exactly is involved in programming an emulator?
- Well, it takes a lot of time -- time is the biggest restraint in
itself... The most difficult part though, probably has to be tolerance.
It all starts from scratch, as everyone knows; since qNES is in pure
assembly, it takes a lot of intelligence and understanding how the CPU
itself works -- both the x86 and the 6502. Even today, where the 6502 is
*YEARS* old, there still are some small aspects of the chip which are...
shall I say, incognito. Primarily with decimal mode. But, I won't get into
that unless desired :-)
- Sounds like a task. How far are you currently in programming qNES?
- Well, Riff and I have accomplished the first task in writing an
emulator: Getting the actual opcodes up and working. :-) I had to
write a 6000+ line assembly program in 6502 just to test the validity
of our 6502 emulation... And it passed with flying colours, but not
without bugs in the very beginning! I am just now beginning to work
on the register emulation (for those who don't know, the registers
are what games on the NES use to control the NES in certain ways)
qNES also has one small (very small, but may play a role in the
future; nothing to boast about) advantage over other emulators -- we
support decimal mode, which no other emulators seem to support. In
the process of register emulation, I will be implementing graphics
and the like. Our first target game is Mario Brothers, so... :-)
- You keep talking about decimal mode, could you explain in a nutshell
what it is?
- Sure, i'd be happy to. Basically, the 6502 has two "modes" for
subtraction and addition; binary mode (the standard) and decimal mode.
To make it short and sweet, in binary mode, if you add 2 to 8, you
get 10 (or 0x0A in hex). But, in decimal mode, adding 2 + 8 results
in 0x10 hex, which is actually 15... Decimal mode, which is rarely
used, can be used to handle score and other interesting things in
games. Personally i've never seen it used, but as part of 6502
emulation, we have to support it :-) Riff's the genius here; he's
the guy who implemented it :-)
- About how long will it be before you have a working demo to show?
- Riff and I get asked this question almost constantly...
All we can really say is, it'll be out when it's out...
Riff is a college student, so he's usually at classes the like -
tests and what not :-). Myself, I work a full-time job, so qNES is
something I work on in my spare time, or (sometimes, if i'm a sneaky
bastard) at work. So, we're trying our best to do what we can in
such small amounts of time. :-)
- Well, that's about all. Do you have anything you would like to add?
- Yeah, I need to address the issue of qNES and VeNES... There's some
seriously wacked-out rumours spreading in the emulation scene about
qNES & VeNES... Some of the rumours are that my roommate, Mr. Snazz,
and I are at war, therefore we are writing our own emulators...
Another rumour i've heard went to the extreme to say Mr. Snazz and I
had lost our friendship and gone our own ways... Both rumours are
untrue, as well as others, such as that qNES was started due to me
hating Mr. Snazz and the like... qNES was created originally by me,
solely because Mr. Snazz and I have coding discrepencies... I don't
agree with the way he goes about doing things in VeNES...
In summary, Mr. Snazz and I are still roommates, and still friends.
We're just two different style of coders, that's all :-)
As it's been stated, VeNES is in Pascal with tidbits of assembly,
and qNES is in pure 386 assembly.
The other issue i'd like to address is just as important :-)
I'd like to thank everyone for the help they've given Riff and I --
especially Alex Krasivsky (Landy). He's a lifesaver.
And one final issue I almost forgot:
qNES is not really a competition NES emulator -- Riff and I converse
with Landy, and TaNdRuM (author of DNESE) whenever they are around, just to
discuss NES stuff or anything we want. We're all in it this together -- to
have fun and learn.
- Thanks for the interview Y0SHi, and we at Affinity wish you the best
- Thanks; I wish you the best of luck too :-)
- Please state your name and affiliations.
- Mike Perry. Programmer at large (no affiliations)
- You are working on a NES emu with Y0SHi of DC correct?
- Y0SHi said that you do A LOT of programming, what do you program for
- So far I have programmed the core emulation routines for the 6502
processor that the NES uses.
- Sounds like of tough job, since you are programming the core, what
does it take to program an EMU (ie: what kind of knowledge, and what
goes into it?)
- Ideally one should have a strong background knowlege of computer
architecture and computer system organization. Also knowing how
video displays work helps a bit. I'm just starting to learn more
about that aspect myself. The most important information you need to
have is information on the hardware of the system itself. Either
that or you need to be able to figure it out yourself.
- Sounds like a tough job! About how far is qNES in your opinion?
- No opinions necessary. So far qNES consists of a simple .NES image
loader and a fetch-decode-execute loop which grabs opcode bytes and
executes the proper code for emulating the instructions. Currently
all 151 of the 6502 opcodes are implemented and working.
Unfortunately decimal mode has not been added yet. This will be a
simple addition though.
- Sounds like you are well on your way! About what is your estimate of
when qNES will be finished?
- I cannot provide anything more than upper and lower bounds. In fact,
I can't really give a lower bound. I can't picture qNES taking
longer than 6 months to finish :) Something playable should be ready a lot
earlier than that. I don't know what the plans are for prerelease versions.
That is pretty much up to Yoshi.
Realize also that qNES will probably be enhanced well beyond that range also.
- Sounds like you and Y0SHi are hard at work. We wish you luck with
your EMU here at AFT! Do you have anything you would like to add?
- Sure. I'll be hard at work on an emulator for the arcade game Juno
First (Konami, 1983) soon. If anyone can provide schematics, memory
maps, screenshots, or WHATEVER, then I would be very grateful.
Plus if someone would buy me an NES I'd like that too :) Ok, so I
missed out on the real thing.
- Thanks for your time in telling us a bit about your emulator!
- No problem.