Welcome

Rice Video Plugin Documentation Documentation for the Rice Video project

Welcome

Hello, and welcome to the Rice Video documentation!

Rice Video is a open source DirectX and OpenGL graphics plug-in for Nintendo 64 emulators that support the Zilmar-Schibo plug-in specifications. The project underwent several different releases, which then finally it became open source at version 6.1.1 beta 10 on March 30, 2006 when Rice, the author of Rice Video, posted the source code at the EmuTalk forums. It is now under constant development under a group of individuals, in accordance with Rice's wishes to have someone (or some group) work on the plugin. Under this new management, development on the plugin will continue, and improvements to the plugin will still be made.

Since version v6.1.1 beta 1, the plug-in has been able to load custom user-made textures (from dumped files in PNG, JPG and BMP formats.) that replace the original game art, which has spawned a cohesive community of graphics artists. Custom textures can be used to potentially improve the graphical quality of games by using textures that use higher resolutions than those that ship with the games. It supports various texture filters such as 2xSaI, Scale2x or HQ4x, and has many different options available, making this a very configurable video plug-in. It is also hoped that in the future, more features are added, further refinements and emulation improvements are made as well, to bring Rice Video forward, and to preserve its relevancy.

This documentation aims to document and be useful as a resource for this plugin. It is intended to be the 1st point of call if any user has problems with this plugin. That said...enjoy!

--mudlord

Documentation (C) 2007 mudlord. All rights reserved. Copyrights are owned by thier specific owners.


Quick Start Guide

Quick Start Guide

If you wanna get started fast....

  • Use the stable plugin
  • Have the latest DirectX
  • Have the latest Microsoft Visual C++ runtimes
  • Go to the "Texture Enhancement" tab for loading/dumping hi-res textures
  • Use the DirectX rendering engine for best results in games
  • Use Project64 1.6 (this is heavily tested under Project64)

That's all that really needs to be done, for further guidance, look further in this documentation.

Known Issues.......

  • Framebuffer emulation in the development branch plugin won't work
  • FSAA won't work in the development branch plugin
  • There are some issues with Vista compatibility
  • There is a issue with Project64 1.7 resolution switching from full-screen mode to windowed mode in DirectX rendering. OpenGL rendering has no issues.


System Requirements

System Requirements

Development Branch Plugin

Required System Specifications :

CPU: Pentium III/Athlon (AMD K7) 800 MHz

RAM: 128 MB of RAM

Video Card: GeForce 4 or equivalent that supports DirectX 9 with Hardware Transformation and Lighting

Recommended System Specifications:

CPU: Pentium 4 or Athlon XP 1.6 GHz or faster

RAM: 256 MB of RAM or more

Video Card: GeForce 6 or equivalent that supports DirectX Shadel Model 2.0

Stable Branch Plugin

Required System Specifications :

CPU: Pentium III/Athlon (AMD K7) 800 MHz

RAM: 128 MB of RAM

Video Card: GeForce 2 or equivalent that supports DirectX 8 and OpenGL 1.1

Recommended System Specifications :

CPU: Pentium 4 or Athlon XP 1.6 GHz or faster

RAM: 256 MB of RAM or more

Video Card: GeForce FX or equivalent


FAQ (Frequently Asked Questions)

FAQ (Frequently Asked Questions)

A)

Where can I find the Legend of Zelda - OoT ROM!?!
Look for commercial ROM images yourself. Warez OR asking for commercial ROMs is a sin! Don't do it please. You'll just get yelled at or banned by the mods or admins. This also applies to warez of programs like Photoshop, Microsoft Visual Studio, and the Project64 betas (which are unauthorised if distributed). If you want ROMs for your emulator, dump them. You are on your own if you want to find them by other means. However, public domain ROMs are perfectly legal (www.pdroms.com ) , so feel free to spread links of these.

Note: Support WON'T be given to people who ask for these things, especially for PJ64 betas. I will NOT waste my time doing tech support for issues with leaked emulator versions! If you want support, its best to donate to the PJ64 devs for access to these betas. Don't make me ask questions to verify if you REALLY have the legit version.....

B)

Why won't this game/effect in game work properly?
There could be a large variety of different reasons for why this is so:
* It can be due to incomplete emulation. This can manifest in various different ways such as:

- Slow emulation of framebuffer effects (which makes some effects unemulated or emulated poorly)
- Incomplete framebuffer support (such as framebuffer detection issues, which makes some effects not being emulated at all)
- Missing dynamic lighting
- Missing texture format support (such as YUV texture support)
- Missing combiner support
- Core problems inherant to the chosen emulator

It can also be due to other reasons such as:

- ROM settings
- Settings used by the plugin
- Problems inherant to the host computer

There could be even other reasons which are unknown to the author, however these cases are rare.

C)

Why won't the plugins load?

* Haven't installed latest DirectX ?
* Placed the plugins in the wrong directory?

D)

Why does the plugin run slow?

This problem can be the following:

* Related to your CPU
* Related to the speed of your video card when it handles certain blending modes (such as pixel shader usage)
* Related to settings chosen in the plugin
* Could be just the game (some games can just be made to run slow)
* Timing of the host emulator
* Framebuffer effects (a major culprit)


Plugin License (The GNU GPL)

Plugin License (The GNU GPL)

GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it toyour programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of itin new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get thesource code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certainthat everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making theprogram proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.


Compatibility List

Compatibility List

Game Compatibility List for Rice's Video Plugin

Compatibility Definitions*:

Playable: Graphics can** be emulated to the point where it is possible to play through at least one in-game aspect. Instead of covering all of the different perceptions of the term 'playable', read the known issues for each game to see exactly how playable.
In-Game: Graphics emulation can push on to the point where the end user can tell that the game is beyond menu elements and in an area of gaming user interaction without being able to visibly interact.
FB: Framebuffer
DB: Depth buffer
Combine: Combiner
Blend: Blender
Texmap: Texture mapping

*All definitions apply only when using Rice's Video Plugin.
**By any end user without assumption of any programming or plugin development and improvement knowledge; only the ability to follow the instructions written in this compatibility list.

Game Title | Status | Known Graphics Issues | Notes
Banjo-Kazooie | Playable | Unemulated jigsaw transition effect (FB) Pixelated rendering to texture emulation of Bottles' jigsaw challenges (FB) Smooth but inaccurate texture mapping of pause menu frame buffer textures (FB) | As long as you don't screw around with the recent configuration set for this game, some frame buffer and texture rendering effects will be nicely attempted, though not as nicely as in Glide64 and Jabo's Direct3D 1.5.2+. You should see no fog or alpha issues of any kind. So far, the only known unsuccessful frame buffer drawing attempt is the jigsaw transition effect, which requires HWFBE or the "Write Back Every Frame" frame buffer setting.
Banjo-Tooie | Playable | Unrendered jigsaw pieces (FB) Unemulated pause screen (FB) | The Normal Blender and Normal Combiner settings together make the pause screen in-game background show up perfectly with no frame buffer emulation needed, just like they do in Banjo-Kazooie, but the Normal Combiner setting is known to cause great graphics issues in many games and should be left off.
Bomberman 64 | Playable | Unemulated motion blur and screen shrinkage effects (FB) Alpha issues with flashing and preimage effects, only fixable by software rendering. | Pretty good chances of black in-game and menu screens, unless you tweak around with the DirectX settings a lot. The cure option under the DirectX tab is difficult to confirm and experimental; try playing around with the anti-aliasing, anisotropic filtering and the two software advanced options. Only a temporary and unconfirmed fix, tested on two NVidia cards. Sure fix is to change screen update option to the "Before clear the Screen" setting, which will remove text and cause frame update issues.
Gauntlet Legends | Playable | Ocassional flickering that lasts for about a half minute, partial GUI display, slow during active in-game geometry | You may see a crash while loading the first level (Not all levels give this crash, but which levels is uncertain.) due to the rendering to texture emulation used. Have this option set to the basic setting while this level is loading if you are affected, so that next time you should be able to enter with the "Write Back & Reload" setting, the ultimate fix to many of this game's graphics issues with the plugin. Use the four C buttons to refresh the statistics GUI for your player if the flickering wipes it out. To fix the speed issue, either use 1964 for speed or the Project64 AudioFix edition for slight speed increase but a fix to the garbage voice sounds.
Mario Kart 64 | Playable | Unemulated gameplay projector screens in levels Luigi Raceway and Wario Stadium (FB) White tiling during game results display, should be black | The graphics plugin to fix both of these issues is at least Jabo's Direct3D 8 1.7, but texture mapping will be inaccurate in the title and Player Select screens.
Mystical Ninja: Staring Geomon | Playable | Some triangle flickering, text container image only shows in-game | Use version 5.9.9 for faster loading tiles with no side effects, Azimer's HLE v0.56 WIP 2 for proper sound.
Sin and Punishment | Playable | Missing motion blur (FB) Missing dithered alpha effects (Combine) | Lens flares are also used in the game but don't use depth buffer emulation. Motion blur will need HWFBE for correct speed and dithered alpha will need to be supported by the combiner.
Star Wars: Rogue Squadron | In-Game | No three-dimensional geometry is displayed, and transparency of animated text preimages is unsupported. | Heightfeld HLE microcode is currently unsupported by all graphics plugins, but LLE plugins such as z64 and Jabo's Direct3D 1.7+ do not need this to display the game's three-dimensional geometry. The best HLE attempt is to use Lemmy's Direct3D plugin supplied with Nemu64.
Star Wars: Shadows of the Empire | Playable | No known issues | Use version 5.9.9 for better use of regular texture mapping and rendering-to-texture emulation, Azimer's HLE with "Emulate/Simulate AI" disabled.
Super Mario 64 | Playable | Inaccurate sky texture mapping (Texmap) Mario does not dissolve correctly when teleporting or invisibile. (dithered alpha) Bowser also does not dissolve correctly after defeat. (dithered alpha) | Glide64 fixes the dissolve graphics issues with this game, but Direct64 and partially glN64 can be configured to fix them, too .

The following ROM files are not games, their titles preceeding a number from 0 to 10 representing graphics emulation success:

  • Action Replay Pro 64, ? (hacked, 10)
  • CD64 BIOS, ?
  • GameShark Pro, ?

If you have an entry to submit or corrections for one that already exists within this document, please send a message to this discussion thread or send an e-mail to Iconoclast at rj150@hotmail.com.
General Nintendo 64 game compatibility and support is covered in this documentation .


Credits and Greetings

Credits and Greetings

Plugin Credits

Programming

Rice
Maxim Stepin
Kreed
Nitsuja
Ryan A. Nyunn
M. Scott Heiman
mudlord
Cyberman
jackschmidt

INI configuration and compatibility list

Iconoclast

Hostage

Doomulation (private alpha server )
rabiddiety (SVN server )
retroK (AEP Emulation mirror )

Testing

Legend

klasa (for preliminary Vista testing)

Enzo Dragon

xxxHolic

squall_leonhart

Mollymutt

M[u]ddy

Benjamin Siskoo

mudlord's greetz ....

* to the various emulation devs: Hacktarux, Gonetz, Jabo, zilmar. schibo, icepir8, Rice, Orkin, Azimer, Pete Bernert, _Demo_, ziggy, okaygo and anyone else I forgotten..

* to Ken Harris for writing the pixel shader tutorials on Codesampler.com. Also was a excellent resource for Direct3D programming.

* to the folks at NeHe Productions (valuable OpenGL optimizations/hardware framebuffer tricks)

* to the members and team at EmuTalk.net...

* Anyone else I forgot.................


Changelog

Changelog

Preview Release (Development)

6.1.2 (DX9):
Changes

  • Fixed: near Z errors in SM64, MK64
  • Fixed: many other small graphics bugs I forgotten. Essentially, graphics quality is now the same as the official plugin, like it should be, so I recommend this plugin now over the official one. Which is why I bumped the version number up to 6.1.2, because I beleive all the new fixes warrant a new release.
  • Updated: Registry key remover tool
  • Updated: Documentation
  • Updated: SSE optimizations are back
Update 10:
Changes
  • Updated: Heavy GUI updates and tweaks, this includes removing the FB selection, for now..
  • Updated: Optimized file size, with no ill effects. This also holds true for the stable branch plugin, too.
  • Updated: Heavy refactorisation
  • Updated: Optimized installer size
  • Updated: Documentation
  • Updated: Direct3D screenshots are compressed in PNG (uses internal PNG compression routines)
  • Updated: Tagging on development plugin
  • Updated: Documentation (refactorisation)
  • Updated: Texture loading/dumping can now be enabled when "hide advanced options" is ticked (by request)
  • Updated: Updated INI configuration file (thanks to Iconoclast)
  • Updated: Hardware transformation and lighting is now a core requirement
  • New: A custom installer system based on NSIS
  • Debugger: Heavily updated and overhauled the debugger plugin. Involves major core restructuring, GUI updates, a massive reduction in file size, and now manages hi-res textures properly again. Also, no longer requires the Visual C++ 2005 runtimes as well. Enjoy!
  • Source: Updated to now compile with VC6 (VC6, ICC and the Processor Pack) . This means that builds compiled with this compiler no longer need additional runtimes apart from the DirectX/D3DX runtimes. However. SSE optimizations are unusable when this process of compilation is done.
  • Removed: Framebuffer selection (framebuffer emulation is incomplete)
  • Removed: Antialiasing/multisampling (doesnt work due to hardware limitations)
  • Removed: Software transformation and lighting
  • Removed: registry key cleaner (needs to be rewritten)

Update 9:
Changes

  • New: Unified documentation
  • New: A tool to thoroughly clean the System Registry of Rice Video settings.
  • New: RAR archives are now digitally signed (authenticity verification)
  • Updated: changed "Texture Filters" tab to "Textures Enhancement"
  • Updated: changed main registry key to not conflict with Stable release plugin
  • Removed: Due to a general concensus, PE compression is dropped

Update 8:
Changes

  • New: Added tagging to specify builds internally
  • Fixed: DKR, Zelda, Brunswick Bowling......
  • Updated: Compiled with MSVS 2005 SP1
  • Updated: EXE packer to UPack 0.36
    •

    Update 7:
    Changes

  • Updated: Built against August 2006 DX9 SDK
    (included updated d3d9_30.dll)
  • Updated: BMGLib...'Nuff said.
  • New: Completely reworked the DX renderer, now DX8 support is 100% dropped
  • New: Added internal support for custom DX9 HLSL/assembly style pixel shaders (not selectable, yet)
    (thanks to Ryan "Colourless" Nyunn, creator of the hardware DX9 HLSL 2xSai algorithm)
  • New: Changed internal structure on how code is called.
  • New: Packed with UPX
  • Fixed: Hi res texture loading/dumping now is fixed.
  • Fixed: Randomness of DX9 graphics glitches (f*ck MS and thier compiler optimizations....... )
  • Removed: Forcing aspect ratios (its gonna be back when I come up with the right solution)
    •

    Update 6:
    Changes

  • New: OpenGL aspect ratio fixing to screen res
  • New: DX9-based renderer... (requires a DX9 card)
    (requires d3d9_27.dll)
  • New: Packed with UPX EXE compressor
  • Updated: Documentation to reflect upcoming features....
    •

    Current Release (Stable)
    6.1.4:
    Changes
    • Updated: 32x and 64x texture scaling
    • New: HQ/LQ2XXS post proprocessing filters
    6.1.3:
    Changes
    • Updated: 8x and 16x texture scaling
    • And loads other things I forgotten...
    Update 10:
    Changes
    • Updated: Compiled with VC6 (using the Processor Pack)
    • Updated: Updated INI configuration file (thanks to Iconoclast)
    • Updated: Texture loading/dumping can now be enabled when "hide advanced options" is ticked (by request)
    • Source: Updated to now compile with VC6 (VC6, ICC and the Processor Pack)
    • Documentation: added a preliminary compatibility list (thanks to Iconoclast)
    • Updated: Direct3D screenshots are compressed in PNG (uses internal PNG compression routines)
    • Updated: Optimized installer size
    Update 9:
    Changes
    • Updated: Documentation (refactorisation)
    • Updated: Tagging on stable plugin

    Update 8:
    Changes

    • New: Unified documentation
    • New: RAR archives are now digitally signed (authenticity verification)
    • New: A tool to thoroughly clean the System Registry of Rice Video settings.
    • New: Rejoice! For we now have a updated debugger plugin! ^_^
    • Updated: changed "Texture Filters" tab to "Textures Enhancement"
    • Updated: changed main registry key to not conflict with Development plugin
    • Removed: Due to a general concensus, PE compression is dropped

    Update 7:
    Changes

  • Fixed: DKR, Zelda, Brunswick Bowling......
  • Updated: EXE packer to UPack 0.36
  • New: Added tagging to specify builds internally
  • Updated: Compiled with MSVS 2005 SP1
    •

    Update 6:
    Changes

  • Updated: Documentation
  • New: Changed internal structure on how code is called.
  • Fixed: Hi res texture loading/dumping
  • Updated: Made BMGLib go on a SEVERE diet....hehehehh
  • Updated: More GUI sh*t I missed on last round.
    •

    Update 5: (Note that this is due to various fixes on my half, but this is the 1st build for public consumption)

    Changes from official build

  • New: Documentation (CHM)
  • New: BMGLib.DLL is NOT needed anymore (greatly simplifies plugin installing)
  • New: Updated tooltips for many different user options...
  • Fixed: Dialog items sharing tooltips
  • Updated: Grammer use in options (typographical errors etc....)
  • Updated: Texture scaling can now be done in 8x, 16x, 32x, 64x....
    •

    Official Version Changelog

    03/26/2006

    Source code released

    Beta 10

    " I don't know why beta 9 has the bug. C++ template didn't do the job as it should do. So I have to add extra check on the Sorted List search result to make sure it is valid. And there was no problem with the DEBUG build. Now beta 10 should be work as beta 9 should.

    I really wish this beta is the final beta."

    Beta 9

    - Display initialization messages to tell the status of texture file searching progress
    - Won't remember the texture dump option value anymore. This option will be disabled when the plugin is loaded. In order to use the texture dump feature, you have to manually turn it on every time after you restart the emulator. This prevents the texture dump option is accidentally left on.
    - Fix the graphic tearing problem at Super Mario head (This is a general bug in many games) and related polygon depth bias problems.
    - Textures are now dumpped into subfolders and texture dump will also check into the subfolders.
    - Using sorted list to manage the texture info, and using binary search to speed up texture checking/loading process. This should speed up the game when texture dump is enabled, also speed up hires texture loading a little bit.
    - Palette CRC calculation is only up to the maximum palette values really used by a texture. This will reduce the duplicated texture dump for different palette CRC values.
    - Other extra checking to reduce duplicated texture dump
    - For Mario Kart. You want to enable the option "Fast loading tiles". The new beta will give you much better texture dump for this game because of new implementation and extra check on texture size for this game. For most textures used by this game, you can have them dumped in complete textures instead of broken sub-textures.

    Beta 8

    Try to solve the hires texture loading problem at mirroring and clamping situations (again).
    Forget about the changes in beta 6. We are now back to use the base textures, not the mirror-replicated textures for the mirroring situation. This is for both CI and RGBA textures. Beta 5 was in this way for CI textures only.

    The new beta 8 works in all situations as I tested.

    Again, if your texture stop working after beta 8 but was working before it, try to dump it again and check your texture against the dumped one. You may need to half your textures.

    Please don't complain about the such changes. This is the reason why I call the release as a beta, which is supposed to change. And I am sure that each change is making the plugin to a better direction.

    To dump a perticular texture, it is much easier to use the debugger version. This is the reason why I am included the debugger version in the release.

    Beta 7

    Fixed the hires texture problem with clamped textures as the bug reported by _pm_ for the link shield in SSB 64.

    Beta 6

    Try to solve the mirrored texture replication problem again, and the minor texture dump bug reported for beta 5. The minor bug is actually a big one, especially for games using CI mirror texture but not using the "Using smaller texture" option.
    Sorry for some of you. If you find some of your hires textures stop working after this beta, check the dumpped texture with the new plugin against the textures you created. The plugin need you to provide replicated textures, you may need to mirror-replicate your texture as the newly dumpped texture. (It should not be a big deal for you.)
    This beta should also fix some weired problems that half dumped texture is black, and problems with hires textures won't load because of the mirror/non-mirror texture size mismatch.

    Beta 5

    Beta 5 adds the ability to load RGBA textures in PNG format for CI textures.

    Beta 4

    Beta 4 fixes a stupid bug (misplacing a single line) which causes the mirror hires texture replication problem with OpenGL.

    Beta 3

    Beta 3 fixes the mirror texture replication problem when using the "Use smaller textures" option for SSB64. it also supports for JPEG image format, and generates screen shot image files in JPEG instead of PNG. For hires project, JPEG files can be used only for *_rgb and *_a files, not for *_all or *_ci files. Paired *_rgb and *_a files must be both in same format (JPEG, PNG or BMP). To use the new beta, you need to copy the BMGlib.dll file to your emulator folder. Filename extension for JPEG files is ".jpg", not ".jpeg".

    Note:

    When comparing to PNG, JPEG does not give better texture quality since it uses lossy compression. The intention to support JPEG format is to provide the 2nd option for large textures. Even JPEG files are smaller on disk (for large textures), such textures will take the same amount of memory after loaded. JPEG works better for screen shot feature then PNG.

    Beta 2

    Fix the CI bmp dump/reload problem for texture scan lines not 32bit aligned

    Rice's words on the official version:

    I don't want to release it as an official version, but rather as a beta version, so you guys can try and see if it can solve the base texture replication problems which was encountered in Super Smash Brothers 64.

    The new debugger version has also been uploaded to the official 6.1.0 thread.

    To fix the problem I am talking about here for SSB 64, you need to redump the related textures. The plugin will dump the base textures, not the replicated and enlarged textures. Texture enhancement works should be done on these new dumpped base textures.

    If you want to use the debugger DLL to dump the texture, you need to find the base texture files under your D:\. The image shown in the popup image viewer window is not the base texture, but the whole replicated and enlarged texture.

    You still need to enable the option "Try to Use Smaller Textures (faster)" in order for the new hires textures to work. You must also disable the option "Alternative texture size calculation".


The Configuration Explained

The Configuration Explained

In this section, the many different options in the plugin are discussed. This is useful if you want to know about a particular feature in depth, or are just curious about functionalities of the plugin.


General Options

General Options

Render Engine: This changes the renderer (known simply as the render engine) used by the plugin. There are two choices here: DirectX and OpenGL. Which one is preferred is DirectX, with it being more stable in some emulators, and havnig a much more mature code base..

Window Mode Resolution: This sets the graphics resolution used by the plugin in windowed mode (that is, not in full-screen).

Full Screen Resolution: This sets the graphics resolution used by the plugin in full-screen mode.

Full Screen Colour Quality: This sets the bit-depth (number of colours) used by the plugin when processing in full screen mode. Often 32-bit is considered the default (and best) setting.

Full Screen Refresh Rate: This sets the speed in which the screen is redrawn (refreshed) per second. Often, higher values lead to a display with less flicker.

Display Tooltips: This option enables the use of tooltips (small information bubbles), that help prompt the user on the use of different plugin settings.

Enable SSE: This option enables the use of special programming optimizations used by the plugin, to boost speed. Specifically, this enables the use of SSE processor optimizations (if your CPU is capable of using these). Visual C++ 6 compiled builds have SSE optimizations disabled.

WinFrame Mode: This option enables the use of wireframe rendering. This option wil not render the textures or solid models. Instead it renders only the graphical "bones" of a surface or model. This option is a novelty one.

Skip frame: This option enables frame-skipping, to boost speed. However, this option can lead to a non-smooth picture, due to the skipping of certain frames being rendered by the plugin.

Hide Advanced Options: This option, if enabled, will disable some options to be usable, for the sake of simplicity. If you know what you are doing, its recommended that this is turned off.

Enable Fog: This option allows for fog effects in games that use them. Its recommended that this option is turned on.


Current Game Options

Current Game Options

Frame Update at: This option controls when the screen is updated. This can be:

  • At VI origin update.
  • At VI origin change.
  • At CI change.
  • At the 1st CI change.
  • At the 1st drawing.
  • Before the screen is cleared.
  • and at the VI origin update, after the screen is drawn (default option).

N64 Frame Buffer: This option controls framebuffer emulation, which is often used by games for special effects. The options are:

  • None: Performs no emulation of framebuffers. This provides the best emulation speed and is the default option.
  • Hide Framebuffer Effects: Ignores framebuffer texture writing, so the effects won't render.
  • Basic Framebuffer: Performs a basic level of framebuffer emulation. Note that this might create a small to large performance hit, depending on computer specifications.
  • Basic & Write Back: Performs a bit more framebuffer emulation than Basic Framebuffer. This might give a even bigger speed hit, depending on the game.
  • Write Back & Reload: Performs a large amount of framebuffer emulaton. This has potential for a large speed hit because framebuffer textures are written and read regularily from video RAM and normal RAM.
  • Write Back Every Frame: Performs a complete framebuffer emulation. This can be very slow, since frames are read constantly, on every single frame.
  • Basic framebuffer & With Emulator: This performs basic framebuffer emulation, but the emulator notifies the plugin when framebuffer effects are performed.
  • With Emulator Read Only: Framebuffers are only read when the emulator notifies the plugin.
  • With Emulator Write Only: Framebuffers are only written when the emulator notifies the plugin.

Note: Framebuffer drawing is currently incomplete in the OpenGL renderer. Also, hardware framebuffer emulation is incomplete in the development branch plugin.

Rendering to Texture: This option controls how render-to-texture operations are performed by the plugin. Render-to-texture is a component of framebuffer emulation. The options are:

  • None: Performs zero render-to-texture techniques (this is the default).
  • Hide Render-to-texture Effects: Ignores render-to-texture operations to render buffers. This means that framebuffer effects won't work correctly.
  • Basic Render-to-texture: Performs a basic level of texture copying and rendering. This is slow, due to the current implementation.
  • Basic & Write Back: Performs a basic level of texture copying and rendering, while writing back frames. This is also slow..
  • Write Back & Reload: Performs complete render-to-texture rendering. This can be very slow, depending on the speed in which data is transfered to and fro from the GPU and main RAM.

Note: Render-to-texture is currently incomplete in the OpenGL renderer. Also, hardware render to texture is incomplete in the development branch plugin.

Normal Blender: Enable this if you have problems with transparency problems in games.

Disable Blender: This disable's the plugin's blender algorithm. This can cause problems with alpha/transparency, etc..

Normal Combiner: Enables the normal color combiner. Use this if you you have texture color issues, transparency problems or issues with monochrome textures.

Force Buffer Clear: This option forces the plugin to clear the screen before rendering. This is needed for some games.

Emulate Clear: This option enables memory clearing. This is needed for some certain games.

Fine Texture Mapping: This option enables more accurate texture mapping. This is useful if you have thin line problems in some games.

Fast Texture Loading: This option speeds up texture loading, through a faster CRC (cyclic redundancy check) calculation and checking algorithm.

Force Depth Compare: This option relates to depth buffer emulation. It forces depth buffer comparing and updating. Use this only if you need it.

Try to use Smaller Texture: This option makes the plugin use smaller textures, therefore this can make the plugin run faster. due to the processing of smaller textures (which take up VRAM, if they are large).

N64 Screen Width/Height: This option overrides the internal N64 screen resolution

Advanced Options:

  • Disable Culling
  • Texture Scale Hack
  • Faster Loading Tiles
  • Texture 1 Hack
  • Primary Depth Hack
  • Increase TextRect Edge
  • Near Plane Z Hack
  • TMEM Emulation
  • Alternative texture size calculation
  • Enable Texture LOD
  • Use CI Width and Ratio

Note: These are all VERY advanced options. To minimize the risks, its best NOT to bother with these, UNLESS you known what you are doing and what the options do.


Game Default Options

Game Default Options

Normal Blender: Enable this if you have problems with transparency problems in games.

Normal Combiner: Enables the normal color combiner. Use this if you you have texture color issues, transparency problems or issues with monochrome textures.

Accurate Texture Mapping: This option enables more accurate texture mapping. This is useful if you have thin line problems in some games.

Faster Texture Loading: This option speeds up texture loading, through a faster CRC (cyclic redundancy check) calculation and checking algorithm.

Framebuffer Emulation

Note: Framebuffer drawing is currently incomplete in the OpenGL renderer. Also, hardware framebuffer emulation is incomplete in the development branch plugin, which is why these options are unusable in it.

N64 Frame Buffer Emulation: This option controls framebuffer emulation, which is often used by games for special effects. The options are:

  • None: Performs no emulation of framebuffers. This provides the best emulation speed and is the default option.
  • Hide Framebuffer Effects: Ignores framebuffer texture writing, so the effects won't render.
  • Basic Framebuffer: Performs a basic level of framebuffer emulation. Note that this might create a small to large performance hit, depending on computer specifications.
  • Basic & Write Back: Performs a bit more framebuffer emulation than Basic Framebuffer. This might give a even bigger speed hit, depending on the game.
  • Write Back & Reload: Performs a large amount of framebuffer emulaton. This has potential for a large speed hit because framebuffer textures are written and read regularily from video RAM and normal RAM.
  • Write Back Every Frame: Performs a complete framebuffer emulation. This can be very slow, since frames are read constantly, on every single frame.
  • Basic framebuffer & With Emulator: This performs basic framebuffer emulation, but the emulator notifies the plugin when framebuffer effects are performed.
  • With Emulator Read Only: Framebuffers are only read when the emulator notifies the plugin.
  • With Emulator Write Only: Framebuffers are only written when the emulator notifies the plugin.

Rendering to Texture Emulation: This option controls how render-to-texture operations are performed by the plugin. Render-to-texture is a component of framebuffer emulation. The options are:

  • None: Performs zero render-to-texture techniques (this is the default).
  • Hide Render-to-texture Effects: Ignores render-to-texture operations to render buffers. This means that framebuffer effects won't work correctly.
  • Basic Render-to-texture: Performs a basic level of texture copying and rendering. This is slow, due to the current implementation.
  • Basic & Write Back: Performs a basic level of texture copying and rendering, while writing back frames. This is also slow..
  • Write Back & Reload: Performs complete render-to-texture rendering. This can be very slow, depending on the speed in which data is transfered to and fro from the GPU and main RAM.

Framebuffer Write Back: This option controls the frequency in which frames from the framebuffer are written.

In N64 Native Resolution: This option sets the framebuffer resolution to the same as used on the original N64.This option is very useful if you want to save precious VRAM , especially on 32MB cards and lower.

Try to save VRAM: This option makes the framebuffer algorithm more conservative in how it manages textures in its texture cache, thus saving RAM.

Automattically Write Back Overlapped Texture: This option will automatically write back textures in the framebuffer if they are covered partially by new framebuffer textures.

Double the Resolution for Small Render-to-texture: This option will double the resolution used by small render-to-texture buffers, like dynamic shadows.


DirectX

DirectX

Combiner Type: This option has several different suboptions, that relate to how the plugin renders graphics in the plugin, through the DirectX rendering engine. Several different combiner options are available:

  • To Fit Your Video Card: This is the default (and recommended) option.
  • For Low End Video Cards: This is for most onboard and low end video cards.
  • For High End Video Cards: This is for "high end" (even though in this day and age they are quite low-end) cards such as ATI Radeon, and Nvidia GeForce 2/3/4/Ti video cards.
  • For Nvidia TNT/TNT2/GF2: This is for Nvidia video cards such as the TNT/TNT2/GeForce 2 MX/GeForce 4 MX video cards).
  • The Limited 2/3/4 stage combiner options: These options are used in cases where the Nvidia drivers report the wrong number needed for combiner emulation by the video card.
  • Pixel Shader: This option is for any recent video card that supports pixel shaders. Some examples of video cards that support pixel shaders are the GeForce FX/6/7/8 series and the ATI Radeon 9600 video cards and upwards.
  • Semi-Pixel Shader: This option only enables the use of pixel shaders when deemed important by the plugin. It uses a mixture of other combiner modes too. It is for video cards that have a weak implementation of pixel shaders.

Swap Effect: This option controls how the DirectX render engine performs buffer swaps. Often, Flip is the best option.

OnScreen Display: These options control whether a on screen display is shown during emulation, and what sort of display is shown. The options are pretty much self-explanatory, so there's no need for a detailed discussion on each effect.

OnScreen Text Color: This option controls the color of the onscreen display. Values entered need to be in hexadecimal.

Force Software Transformation and Lighting: This option forces the use of software T&L. This means that all lighting calculations are performed in software mode (on the CPU), which means potentially that graphics are rendered slower than they would be in hardware T&L (recommended). Note: This option is unavailable in the development branch plugin

Use Software Vertex Clipper: This is a advanced option. If set, the option will force all clipping operations to run on the CPU. This method requires a fast CPU, and its often needed for new and recent video cards.

Full Screen Anti-Aliasing: This option, when used, will reduce the amount of "jaggies" present of graphics edges. Please note, due to hardware limitations, FSAA will not work on framebuffer effects. Note: This option is unavailable in the development branch plugin

Anisotropic Filtering: This option, when used, will enable anisotropic filtering. The level of graphics filtering possible depends on your video card's capabilities.


OpenGL

OpenGL

Combiner Type: This option has several different suboptions, that relate to how the plugin renders graphics in the plugin, through the OpenGL rendering engine. Several different combiner options are available:

  • OpenGL 1.1 (lowest) : All OpenGL capable video cards should support this .
  • OpenGL 1.2/1.3 :This is a improvement of the OpenGL 1.1 combiner. It is for video cards that lack what is known as "Texture Crossbar" support.
  • OpenGL 1.4: This combiner is for video cards that support "Texture Crossbar". The GeForce 4's and ATI Radeon 8500 support this combiner.
  • OpenGL for Nvidia TNT or better: This combiner is specifically for Nvidia video cards from the TNT series .
  • OpenGL for Nvidia Geforce or better: This combiner is for all Nvidia cards starting from the GeForce 256.
  • OpenGL Fragment Program Extension: This combiner is the best combiner. It is for video cards that support OpenGL 1.5 and above. This combiner uses what is known as "fragment programs" (pixel shaders in DirectX).

Depth Buffer: This option sets the bit-depth for the depth buffer. This option doesnt need to be changed.


Texture Enhancement

Texture Enhancement

Texture Quality: This option sets the colour quality of textures:

  • Default: Sets the texture quality to the same as the color depth .
  • 32-bit: Forces 32-bit color processing.
  • 16-bit: Forces 16-bit color processing.

Force Texture Filter: This option forces the use of a particular texture filter

  • N64 Default Texture Filter: uses the same filtering as the N64
  • Force Nearest Filter: Forces "nearest" filtering.
  • Force Linear Filter: Forces linear filtering.
    •

    Full TMEM Emulation: This is a advanced option. It enables emulation of the TMEM area. This is needed for some games.

    Texture Enhancement: This option enables the use of several graphics scalers:

    • N64 original texture: No graphics post-processing is performed.
    • 2x: Doubles the size of the textures.
    • 2xSai: Enables the use of the 2xSai graphics scaling filter. Can be intensive on the CPU.
    • HQ2x: Enables the use of the HQ2x graphics scaling algorithm. This filter is very CPU intensive.
    • LQ2x: Enables the use of LQ2x, a variation of the HQ2x algorithm.
    • HQ4x: Enables the use of HQ4x, a exceedingly CPU intense graphics scaling filter.
    • Sharpen: Enables Rice's "Sharpen" graphics scaler.
    • Sharpen More: A variant of Sharpen, but performs more sharpening.

    Enhancement Control: This option controls the scaler's effects:

    • Normal: Performs no extra processing.
    • Smooth: Performs smoothing after the enhancement scalers.
    • Less Smooth: Performs subtle smoothing after the scalers.
    • 2xSai Smooth: Performs post-processing on the 2xSai scaler.
    • Less 2xSai Smooth: Performs subtle smoothing after the 2xSai scalers.

    For TextRect only: If this is enabled, texture enhancement will be ONLY when processing the TxtRect microcode.

    For small textures: If this is enabled, texture enhancement will be ONLY performed IF textures with a height and width less than or equal to 128x128.

    Load hi-res textures if available: If this is enabled, custom textures will be loaded for the game, if they exist in the "hires_texture" directory, which is in the same folder as the plugin.

    Dump textures to files: If this is enabled, game textures will be dumped into the "textures_dump" directory, in the same folder as the plugin.


How to

How to

Here discusses how to perform different operations in the plugin such as:

  1. Installing
  2. Uninstalling
  3. Using and creating hi-resolution replacement graphics
  4. Compiling the plugin from source code


Dump textures to external files

Dump textures to external files

Note: when creating hi-res textures, there can be a large volume of textures, contributing to a possible loss in diskspace. Therefore, its quite wise to disable texture dumping when its not needed or wanted.

  1. Click the option in the emulator to configure the video plugin.
  2. In the Rice Video plugin dialog box, you should see the following:

  1. Click on the Texture Enhancement tab.
  2. Then, tick Dump textures to files. The textures then will be dumped to the "texture_dump" subdirectory of your emulator's "Plugin" directory, under the game's internal N64 ROM name:

  1. To disable texture dumping, untick the Dump textures to files option.
  2. To modify the textures, you'll need to use a graphics program. Often, Photoshop is a good program for performing. custom game art creations. When creating the new custom textures, its essential that the SAME filename when saving the new textures is the same as the texture you want to replace. This is due to the plugin's method of texture dumping.


Use external (hi-res) textures

Use external (hi-res) textures

Note: It is imperative that the textures that you want to load are in the "hires_texture" subdirectory of the "Plugin" directory of the emulator you are using. Otherwise, the textures will NOT load correctly or at all.....

  1. Click the option in the emulator to configure the video plugin.
  2. In the Rice Video plugin dialog box, you should see the following:

  1. Click on the Texture Enhancement tab.
  2. Then, click Load hi-res textures if available.

5. Then click OK.

6. To disable texture loading, untick the Load hi-res textures if available option.


Install the plugin

Install the plugin

  1. Use the installer to install to the directory of the emulator you are using.
  2. To load the plugin, set the plugin in your emulator configuration. Often, the different emulators have different ways of reaching this dialog box


Uninstall the plugin

Uninstall the plugin

1. Delete the "RiceVideo6.1.2.dll" and "RiceVideo6.1.0.ini" files in your emulator directory. This is all that usually is needed to occur. Or if you selected additional options in the installer, you can delete the files manually.


Use the debugger (adv.)

Use the debugger (adv.)

NOTE: The debugger is usually used ONLY by plugin developers, hacking enthusiasts, and other highly experienced computer users. Its not needed for normal emulation.

  1. Compile the plugin's source with a "Debug" grade compile
  2. Copy the compiled plugin to your "plugin" directory of the emulator you use.
  3. Select the plugin in the emulator plugin selection dialog box


Compile Rice Video (adv.)

Compile Rice Video (adv.)

Libraries needed for compilation:

BMGLib (needed to load hi-res textures)
(located on SVN server )
Microsoft DirectX8 SDK with the D3DX8 libraries (www.microsoft.com/directx)

OR Microsoft DirectX9 SDK (August 2006) (to compile the development branch plugin)

Microsoft Platform SDK

Compiler Needed:

Microsoft Visual Studio 2005 with Service Pack 1 or higher

Microsoft Visual Studio .NET 2003 (highly recommended)

Microsoft Visual C++ 6

Intel C/C++ Compiler 9.0

How to compile:

1) Its important that the BMGLib headers are in "lib" of the directory containing the project files.
2) Use the project files to link against "BMGlib.lib" (which you should have created by creating a release grade compile of "BMGLib_DLL"). Use the BMGLib provided on SVN. For VC6/ICC compiles, you must recompile BMGLib for these compiler sets.
3) Choose your relevant options when compiling (release grade or debug).
4) Go to "Build", in Visual Studio and hit the relevant option to compile.


($title$)

($title$)

($content$)