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:
- Do *Not* Ask Us for ROM Images, these types of requests will definitely be ignored, and we will probably not like you.
- Do Not send us ROM Images, we have enough.
- Do Not ask us for the source code. If you are experiencing problems with the software, and think your 31337 coding skills outdo ours, give us suggestions on how to fix them, or write your own emulator. If you're cool and want to report bugs and the like, please do so in a kind fashion. We'll fix 'em. We currently have no plans or going open source, so please don't ask. Inquiries about porting will be disregarded for now. Hopefully, Pretendo will see ports to Linux and BeOS. We will be handling them.
- We cannot provide 24/7 assistance for you. We are busy people, but we will try our best to accomodate any problems, questions, suggestions, etc. that you may have. We can be contacted via e-mail, ICQ, or IRC, however, e-mail is preferred.
- Please do not distribute Pretendo in any other way than we do at the webpage. This means do not add/remove/modify any files in the archive. You especially don't want to distribute ROMs with the software.
[ 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 -
- "Multi-6502 CPU emulator by Neil Bradley (neil@synthcom.com)"
- All opcodes, adressing modes, IRQ, NMI, BRK, or any other three letter acronym that you might like.
- SRAM
- Y3k compatibility
- PPU -
- Main Graphics Engine powered by DirectX 7.0
- Plugin System for graphics engine
- VROM, VRAM
- Sprites. 8x8, 8x16, flipping, priorities
- Scrolling. Vertical, Horizontal
- Mirroring. Vertical, Horizontal, Purple, etc... But probably not purple.
- Myriad of NES palettes to choose from. It's really about 10, though.
- pAPU -
- Ooops, we forgot audio. One day, it will be as such:
- Main Audio Engine powered by DirectX 7.0
- Plugin System for Audio engine
- All Channels
- ~10-15 FPS slow down. Hopefully less, hopefully we can cover for it.
- Memory Mappers -
- Games with no mapper ( mapper #0).
- Nintendo MMC1
- UNROM
- CNROM
- AOROM
- Nintendo MMC2
- Nintendo MMC4
- Colour Dreams
- 100-in-1 ( Mapper 15)
- Irem 74HC161/32 ( Mapper 78)
- We're working on a plugin system for this as well, so now you'll finally be able to play your favourite hacked version of Dragon Ball Z Daimou Fukkatsu Gokku Den Saiya Tsubasa Jin Kyoshuu Zetsumetsu Rensen Hiyyu No Ken Senshei Jinzou Kyoufu Mogonotari Gekishin Freeza 2, or any other jap cart with an obscene name mapper number that comes to your mind.
- Input -
- Default Input Driver is DirectX powered
- Win32 standard is available if DX doesn't quite tickle your fancy
- Keyboard and Joysticks are supported (Joysticks must be DirectInput compatible)
- auto fire, in case you can't seem to shoot enough stuff whilst playing Contra ;)
- Players 1 and 2 are emulated, you can have twice the fun by playing Wheel of Fortune with your cat
- Game Genie -
- Our software driven version of this wonderful galoob stylee invention
- 6 and 8 character codes
- As many codes per game that can fit inside of a Windows listbox. If you just can't win at anything, there's room for over 32000 codes. Maybe you'll find something nice.
- 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 -
- ROM Info
- Diskdude!, the ever popular and annoying communist seed of evil is put to death. Pretendo offers dirty header detection, and cleaning if you want it. Dirty ROMs are not cool.
- Game Genie (listed here for the sake of being redundant)
- 6502 Disassembler
- Someday, a completely integrated debugger
- Hex Dump
- Real-time NameTables viewing, if you don't mind the slowdown that makes your grandma look like Flash.
- IPS Patcher
- Version Checker - via Internet (cool!)
- Plugin System -
- Pretendo will one day be capable of running the following via plugins:
- Graphics Engines/Palettes
- CPU Cores
- Sound Engines
- Memory Mappers
- Input Drivers
- Other things we (or you) will think up
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.
- pAPU Emulation and Audio Output. (stating the obvious)
- Better compatibility
- Better and greater Mapper support
- PPU emulation good enough to eat
- Video stuff in Assembly
- Movies
- NSF Player, and other audio related things.
- Zapper
- Four-Player stuff, and support for other interesting paraphenalia (PowerPad), but not that robot thingy
- VS Unisystem
- Famicom Disk System Emulation
- More plugins... come on people, shake and bake ;)
- Other things you probably want...
[ time to take notes. ]
This is a list of stuff you need in order for Pretendo to soothe your NES craving.
- A computer with a monitor and keyboard (already knew that...shhhh)
- A brain, and some other necessary body parts like eyes, ears, hands and fingers...
- Eye-Hand coordination
- Windows 95/98/NT or 2000
- Pentium processor. Hopefully it's fast.
- 16 meg RAM, you want 32 though.
- Ummm, some video RAM, 2 meg?
- DirectX 7.0 libraries
- DirectX compatible video and audio card(s). Most peripherals are, so this shouldn't be a problem.
- NES ROM Images. Currently, only the iNES format is supported. Once again, do NOT ask us for ROMs. You can read a bit about the iNES header below.
[ 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. -
- Delta - 26295185
- PrOxY - 18347580
- irc. -
- Delta can be found on EfNet irc under the nick [Delta]
- PrOxY can also be found on EfNet irc, and is usually under the nick _PrOxY_
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. ]
|