Pretendo®


Pretendo WIP (a pseudo-rebirth)
Freeware NES Emulator
Windows 95/98/NT/2000
Pentium with a lot of MHz
DirectX 7.0

http://www.pretendo.org/

Pretendo is coded in C/C++ and x86 Assembly.
MS Visual C++ and NASM 0.98 have been used for compilation

Authors:
   Eli Dayan   (Delta)
   Evan Teran (PrOxY)




[ mommy, can i go out and play? ]

I have joyfully spent hours upon hours writing this lovely attempt at documentation. It's compeletely done in notepad, and if you haven't a grasp for the blatently obvious, it's an html file. Open it with a web browser. Don't attempt reading this at anything less than 800x600. It's just not cool.

Almost every emulator is shipped with some sort of a disclaimer. Below you can read ours. You should read it, even if you think making love to a clown would be a better way to spend the next three minutes.

This emulator was mainly created in order to satisfy our oldskool childhood urges to play Nintendo games on our PCs. If you have a different motive, so be it. It can all be regarded as a challenge, and a learning experience. We intend to keep it that way. The Authors (E. Dayan and E. Teran) are in absolutely no way promoting any illegalities pertaining to emulation and/or ROM Images. This ultimately includes having ROM Images in which for them you do not own the actual cart. If you're an artist, you can probably think of other badass things to do with your ROMs, like selling, distributing illegally (however that might be), trading your mother for, etc. If you are unsure about your own situation, and you're paranoid that the "Nintendo Police" (or some derivative of it) is going to raid your house, steal you while you're still in your PJ's, bring you to their holding quarters, and subject you to oddball forms of medieval punishment, you should stop dropping tabs of acid, and ofcourse, obtain your ROM Images legally. If you're still an artist, then you can probably think of various ways to go about doing this. I need not explain, but basically, if you have a ROM Image of a certain game, you're supposed to own the actual cart, blah blah blah. If you don't own the cart, you're supposed to delete the ROM Image after 24 hours, blah blah blah. Since you're the son your dad always wanted, or daddy's little angel, you wouldn't want to do anything illegal. You call the shots. We shall not in any way shape or form be held responsible for any sort of trouble you might find yourself in if you get caught for partaking in any illegal activity associated with ROM Images. This means if the "Nintendo Police" really does raid your home because you have 2876 ROM Images, and you just happen to be wearing your PJ's with the smurfs on them, it's not our fault. Furthemore, any software (like the emulator itself, and plugins and stuff like that) is provided on an *as-is* basis, and may not always be perfectly stable. We shall not be held accountable for any damage done to you, your computer, your family members, your pets, your smurfs PJ's, etc. Finally (it's about damn time), we are in no way affiliated with Nintendo of America, or any other copmany mentioned anywhere in this text, any other texts written by us, or our webpage, unless we make note of it. We hold nothing against any mentioned company, so if you work for XXXX, and feel like sending an assasain to our houses, don't. Nintendo is a registered trademark of Nintendo of America. Game Genie is a registered trademark of galoob.

If understanding isn't your "thing", use another emulator. We don't want any trouble.

Our disclaimer is better than yours.




[ go upstairs, and get me my gun. ]

Before proceeding, please take a moment to understand the following:


[ i didn't know our toaster could do that! ]

If you have no idea as to what the hell this thing is or does (tries to do?) then keep on reading. All those years of school had to have paid off.

- CPU -

- PPU -

- pAPU -

- Memory Mappers -

- Input -

- Game Genie -

- Save States -

Pretendo supports SNSS stylee state saving. Very much like this version of Pretendo, it is a WIP thing, so don't expect it to work right. There are ten (10) slots per game. One day, Pretendo save states will be compatible with those of loopynes.

- Tools -

- Plugin System -

NOTE: Currently, we have only established a standard for video plugins and input plugins. Once we figure out ways to do the other stuff, we'll decide if and how we are going to add it.

[ gravity. ]

When something doesn't work, it's fun to blame it on something stupid, like gravity. This list is a list of things that aren't fully implemented, missing, or don't work at all in this version. Oh yes, and this list, is probably in a somewhat random order.


[ time to take notes. ]

This is a list of stuff you need in order for Pretendo to soothe your NES craving.



[ my iNES header is bigger than yours. ]

First of all, props to Marat Fayzullin for concocting this elite header format. Apparently, it's come quite a long way, to become the standard in NES emulation. Below, you can read an overview on it. If you're super-k-rAd, and dump your own ROMs, then you probably won't find it at all necessary to read this section, unless of course, you like redundance.... unless of course you like redundance.... Hey! Look, a bird!

The iNES header is basically a 16 byte string of information, conviniently serving as the first 16 bytes of an iNES format ROM Image. It seems that about 99% of iNES format ROMs have the file extension ".nes". Strangely enough, you might come across a ".nez" extension. Same thing, except some whacko decided to get creative and be original and stick a Z in there. Maybe this was a result of too much hax0r talk. Anyways, the iNES header contains crucial information about the actual game that lies in your little .nes file. Essentially, the emulator will read the header, and then set itself up properly in order to run the game. Bytes 0-3 contain what I call the "NES File Signature." In a hex editor, it will appear as such: 4E45 531A Via some strange coincidence, bytes 0-2 read out "NES" Bytes 4-7 contain information about PRG size, CHR size, mirroring, and of course Mapper #. Bytes 8-15 MUST be all zeros, for the sake of being sanitary, and to make way for the new funky fresh extended iNES format, by Marat, and FanWen. Unless you know what you're doing, it sounds like this header shouldn't be messed with, right? If you don't even know what a hex editor is, even better. The problem is that, today, a lot of ROMs have what we call "dirty" headers. This means that the creative person/group who dumped the ROM put something interesting inside the reserved bytes. Usually, you'll see "Diskdude!", but sometimes they get really creative... I'll stop there. Sometimes, when a header is dirty, it will cause the game to run incorrectly.

So, "What's the solution?", you ask? Well, you can search the web for one of those nifty ROM header tools, or you could not waste your time doing that, and let Pretendo take care of it. That's right. When a header is dirty, Pretendo will not only inform you, but it will ask if you'd like to clean it. You should clean it.


[ make it go! ]

Okay. Basically, once you get the emulator running, everything should be self explanatory. You can run Pretendo by either double-clicking it, or if you have some sort of commandline fetish, you can do something like:

pretendo romnamehere.nes
Okay. Keys. Until we make input fully configurable (is that a word?), you'll have to use the default keys.
 Real NES Pad  Pretendo Equivalent
 "D-Pad"  Arrow keys on the keyboard.
 Select  Tab
 Start  Enter
nnbsp;B  Z
 A  X
Video. Pretendo is pre-shipped with two video plugins. DDraw_Video.dll and Dib_Video.dll We recommend using the DDraw plugin, as it's faster, and support fullscreen. The DIB plugin is also good if you don't have DirectX, or you'd like to stretch the window, but your hardware does not support it. Note, the DIB plugin does not have any options, unless FPU (it's author) adds them. Fullscreen mode is rendered in 8 bit. You can choose any resolution that your hardware supports. Video modes will be detected and listed automatically. If by some strange miracle, Pretend actually runs too fast in fullscreen, choose the VSync option in the Config->Video menu. Switching to and from fullscreen mode is done via hitting Alt+F4 on your keyboard. Hopefully, you can handle pressing two keys at once.

It seems that everything else is pretty much straightfoward. If you're having problems with Pretendo, feel free to mail us. If there's a great enough demand for a real help file, then I'll write one.


[ hey sexy, can i have your number? ]

Nah. But if you feel the need to get in touch with us, you can do so like this:

- e-mail. -
- icq. - - irc. -

If you haven't anything nice to say, we don't care, nor do we want to hear it, so don't waste your time. Don't ask us for things we cannot provide (ie ROMs). Don't send us any files without asking first.



[ credits ]


Here's the breakdown.

 What  Who
 Pretendo  Delta, PrOxY
 NES emulation (includes system, PPU, mappers, etc..)  Delta, PrOxY
 6502 CPU core  Neil Bradley
 DirectX Video  PrOxY
 DIB Video  FPU
 DInput Plugin  PrOxY
 Win32 Input Plugin  PrOxY
 Tools  Delta, PrOxY
 Documentation  Delta


[ thanks. ]

This is where we thank all the cool people that have helped us some way or another.

  • Y0SHi and company, Firebug - Literature.
  • "Who has had the greatest influence on your programming style and who has helped the most while you were creating Pretendo?" -Nyef
  • Neil Bradley for M6502, support, and help of all sorts.
  • loopy
  • Jabo
  • Cricket
  • Forbidden Access
  • Also, shout outs to TNSe^1999

[ greets. ]

#Emucamp: uzplayer, SillyCon-, Majai, RabidFrog, Newo, Overclkd, etc...

Delta's Shout-outs:
John M, Gil, Jay S, Peter, Jon H, Jon D, ZeR0 9, the girl with the sun in her head, and anybody else that I probably forgot.

Proxy would like to give shoutouts to all his peeps in Hewlett.

[ fin. ]