================================================
          Project64, by Zilmar and Jabo
            Copyright (c) 1998 - 2001
  The Premiere Nintendo64 emulator for Windows
================================================

--------
Overview
--------

Project64 is an emulator that has been in developlment for a couple of years. We are proud to allow other people to use the product that we have made for their enjoyment. Project64 features emulation of the Reality Signal Processor, which was reverse engineered by zilmar. This information has produced an accurate interpreter that has turned in to a recompiler by jabo, setting it apart from some of the emulators in development today. Another feature in Project64 is an accurate and fast Display Processor graphics core for OpenGL and Direct3D, developed by jabo over the last few years.

--------
Features
--------

Internally Project64 features two advanced recompilers, for the R4300i and the RSP respectively, both based off of zilmar's original interpreters. The R4300i interpreter is available as an alternative to the recompiler via settings.

- The R4300i recompiler is written by zilmar. It features dynamic block creation and advanced optimizations due to it's register caching core. It also has self-mod protection schemes   implemented to maximize compatibility and speed.

- The RSP recompiler is written by jabo. This compiler creates dynamic blocks of code, and optimizes the signal processor code through various code analysis techniques. It makes use of MMX and SSE to provide real-time emulation of this powerful co-processor.

Project64 uses high-level emulation for graphics, and low level emulation for audio. Jabo wrote Direct3D and OpenGL plugins for graphics, they have high quality blending and texturing, with several microcodes implemented from Mario64 to Zelda64 between the plugins. High level microcode emulation is optimized using SSE, and 3DNow!, and some parts of texturing have MMX optimizations.

-------------------
System Requirements
-------------------

Windows95 or higher, Pentium III 600Mhz or higher, DirectX 6.0 with a Direct3D compatible Accelerator, at least 16 megs of Video RAM. It may be possible to run with a slower system and if you find it useable on it then enjoy. DirectX 8.0a is strongly recommended as it is the latest release from microsoft and fixes issues.

*) Good video hardware: 

Riva TNT, Riva TNT2, GeForce, GeForce 2, ATI Radeon

*) Bad video hardware:

Matrox G200 and G400 - Some blending errors, the G400 looks decent, but don't expect perfection by any means.

ATI Rage Pro - It doesn't support constants well, yet it does multi-texturing, this card looks very bad as a result.

3Dfx Voodoo Banshee - The drivers for Direct3D are not that great, in Glide this card is alot more functional even though it only has 1 texture unit, lots of blending errors here unfortunately, I doubt the drivers will be fixed for any 3Dfx card.

*) Other Info:

General information - Some users reported disabling AGP Texturing in Direct3D via various advanced tweaking utilities availabe on the internet help fix lots of graphical glitches, this is probably due to poorly written drivers.

If you have a 3Dfx card, set your desktop to 16bpp, some 3Dfx cards don't do 32bpp Direct3D! Secondary devices (read: voodoo1, voodoo graphics, voodoo 2) are not supported by the graphics plugins included.

---------------
Saving in Games
---------------

PJ64 provides instant saves and saves like on the n64. Instant saves seem to work perfectly find in most cases but they are not perfect. It maybe possible to corrupt the n64 save you have with them. Test them out and see they should work with most games but we do not guarantee that they will work.

---------------
How to Use PJ64
---------------

PJ64 is a very easy emulator to use, open a rom and play a game. Look through the menus for the shortcut keys available, PJ has 11 save state slots for quick use. Most configuration is done through plugins, simplifying the main interface. Below is information on the plugins included with PJ64 only.

Direct3D and OpenGL:
--------------------

Texture type: 32-bit textures are are only used if the texture being downloaded requires that depth of precision. If this option is OFF some form of a 16-bit texture will be used which reduces quality. This option should generally be enabled unless your video card does not support 32-bit textures, or has severe performance penalties for using them. (NOTE: once a texture is downloaded toggling this option has no effect, make sure it is set properly before opening a game)

Before resizing the window or changing devices, it is recommended you pause emulation, while you don't have to always, it's just good practice so you don't crash anything.

OpenGL Only:
------------

The OpenGL plugin isn't complete, it's provided for demonstration purposes, and OpenGL runs some games a little better (parts of WaveRace for example). Generally it requires an nVidia card, TNT or higher, but reports indicate some ATI cards have the nVidia extension implemented.

Direct3D Plugin Only:
---------------------

Transforms: The difference to the user between the pipelines really is hard to tell, since there isn't much, no matter what lighting is done internally, but transforms can be done either way, the internal one tends is highly optimized for SSE and a little for 3DNow!. It's also important to mention the internal one works best on cards with hardware clipping.

FOG NOTE: Make sure fog table emulation is enabled! if you own an NVIDIA card, you can do so in the NVIDIA display driver properties.

Validate Blending: this option is the best choice for people experiencing problems with blending, it will not fix problems. What it will do is manipulate what the requested modes until your video card accepts it, this may hegenerally this helps a great deal, but it's possible it may hurt things as well.

Frame Buffer Option - this setting is for advanced users only, it may fix graphical glitches in some games (Zelda64, Banjo-Kazooie, and Mario Kart) but is best left on None so you don't loose lots of performance. This option is provided for debugging purposes mostly.

Audio Plugin:
-------------

There are two provided, one written by zilmar which is open-source (see the emulation64 web-site for our plugin spec) and one written by jabo. One of these should work well for you.

For more information see the support site, a link is provided on our website.

Input Plugin:
-------------

This plugin uses DirectInput, it has a fully configurable 4-player dialog. It supports lots of different game pads, and allows input from the keyboard at the same time.

Because the N64 has a large amount of buttons, a layout for one game may not be suitable for another. The profile feature solves this problem, it loads and save profiles for quick and easy access to different settings.

DeadZones - Some gamepads are not the most accurate devices, USB devices usually are the most accurate. This option can be considered a sensitivity control, increased deadzone makes it less sensitive, decreasing it makes it more sensitive to movement. This option is mostly dependent on the connection interface used (USB or gameport) and whether your device has analog stick capabilities, the default is a 25% deadzone.

RSP Plugins:
------------

There is currently one option, high level simulation of audio lists. This option is for users who have downloaded an audio plugin capable of simulating audio lists. A plugin with this capability is not included with Project64, our emulator uses low level RSP emulation to handle audio lists.

------------
Rom Settings
------------

You shouldn't need to modify the settings included with PJ64 for specific games, they should be setup for optimal performance in the rom database. However, here is a brief explanation of the settings.

Default Memory Size: Project64 supports "Expansion Memory", this is a toggle between 8 megs of memory or 4, obviously only select 8 if you know the game requires it so you don't use up memory.

Default Save Type: Should be left on default, if you know the details about a game's saving method than you can select the appropriate save type, again it's not necessary usually.

Self-mod Method: this setting has an impact on performance and compatibility. Protected memory is the most compatible, and None is the fastest. The other ones do different things and may result in better performance than Protected memory.

Max Speed: you can select a sync of 50 or 60 fps here if desired.

Always use TLB: this is a compiler switch that some roms require, but some do not. Additional performance may be obtained by turning this switch off for roms that do not require it.

The only thing not specified on a rom basis is register caching, this should be turned on always, however compatibility problems may be solved by turning this compiler optimization OFF.

--------------
Known Problems
--------------

Project64 is not perfect, there is some compatibility issues in terms of CPU, Graphics, and Audio that prevents games from functioning properly in various aspects. See our support web site for a compatibility listing of games that are known to run with Project64, as well as problems that are known already.

Please do not expect games to be perfect, we put a lot of effort into this emulator, but every detail may not meet the guidelines for perfect emulation. If you want to experience games as they were meant to be played purchase a nintendo 64.

-------------------
Contact the Authors
-------------------

All our plugins use the Project64 plugin specifications, see our website for details.

(!) Read this file entirely, use the message boards on the website for all feedback on PJ64, we do not have time to help people individually.

- Do not ask us about games, we will not send them to you or tell you where to get them
- If you don't at least meet the min requirements, don't ask us for help
- Do not ask us when a specific game will work
- Do not ask us when the next version will be out, for betas, or what features it will have
- Do not ask us about plugins we didn't write, contact the proper author
- Do not report problems with using our plugins in other emulators
- Do not ask if your system will work, for help with it, or if we will support your hardware
- Do not email us files without permission

no exceptions, if you want to ask these questions try a messageboard at our website. 
http://www.pj64.net

You can reach us at the following email addresses, if it's feedback on pj64 please think about what you are asking, lots of emails get ignored because you either aren't supposed to email us these questions (read above), or it's answered in this file or our support website.

jabo@emulation64.com, zilmar@emulation64.com

------------------
Credits and Greets
------------------

We would like to thank the following people for their support and help, in no specific order.

hWnd, Cricket, F|RES, rcp, _Demo_, Phrodide, icepir8, TNSe, gerrit, schibo, Azimer, Lemmy, LaC, Anarko, duddie, Bpoint, StrmnNrmn, slacka, smiff

As well as the people we have forgotten.

-------------------
Standard Disclaimer
-------------------

The N64 is a registered trademark of Nintendo, same goes for other companies mentioned above, or their products.

The authors are not affiliated with any of the companies mentioned, this software may be distributed for free, never sold, as long as the original archive and software included is not modified any way or distributed with ROM images.

You use this software at your own risk, the authors are not responsible for any loss or damage resulting from the use of this software. If you do not agree with these terms do not use this software, simple.

[EOF]