Lewpy's 3dfx/Glideł Renderer

 

1. Plugin Information

2. Bug Reporting

3. Disclaimer/Licence

4. Description

5. Installation

6. Configuration

6.1 Keys
6.2
Menu System
6.3 Miscellaneous Settings

7. Problems

8. Greets

9. Version History

10. FAQ

 

1. Plugin Information

Plugin Type GPU
Plugin Name Lewpy's 3dfx/Glideł Renderer
Plugin Version 1.0.35
Date 01/08/2001
Author Lewpy (based on Tratax's Glide plugin)

 

2. Bug Reporting

Only contact me about things to do with this plugin.
General enquiries about PSEmu Pro and requests for PSX BIOS's will be ignored. Read the FAQ.

Before you think about reporting a bug, please check if there is an update for this driver. Try the PSEmu Pro homepage, ePSXe homepage, or my own Beta pages.

Email: psemu@arisen.demon.co.uk

Send me details of the problems you encounter with the following info:-

  1. Version of PSEmu
  2. Version of my plugin
  3. Game that has problem, including language, NTSC/PAL, etc.
  4. Description of problem
  5. Does the software renderer have this problem as well? [if so, then it is more than likely not my problem, but a problem with the main emulator!]

Most of this info can be automatically gathered using the button named Copy Info on the configuration screen of the plugin. Just press the button, and then paste into the mail message.

DO NOT include any screenshots!!!! If I need one, I may ask for one :) My mailbox does not need filling!!

*** READ THE VERSION NOTES FOR THE LATEST INFO ***

 

3. Disclaimer/Licence

This plugin is for use only with freeware PSX emulators that use the PSEmu Pro plugin system, and can not be used in any other software.
This program is freeware and cannot be sold. Also this program cannot be distributed without written permission. This program cannot be used for any commercial purposes.
You may not reverse engineer, decompile, or disassemble the enclosed software.
Authors are not responsible for any damages that this program may cause, and are also not responsible for anything this plugin may be used for.

 

4. Description

This is a hardware driver for 3dfx graphics accelerators. This means it will NOT run on any other manufacturer's 3D card.
It *requires* Glideł runtime libraries to be installed for you 3dfx card.
Download them either from your card manufacturers web site, or grab the 3dfx reference drivers from the 3dfx web site.

Note: this driver is optimised for the latest range of 3dfx cards. That is, it offers better visual quality on Voodoo˛, Banshee and Voodooł cards, and later. Voodooš cards and Voodoo Rush cards should work with the driver, but they will suffer some transparency problems compared to the newer cards.

 

5. Installation

Copy this plugin to "plugin" directory that resides in PSEmu directory, or similar directory for other PSX emulators. Check the emulators documentation for details.
Use Configuration in PSEmu to choose this plugin, and select the resolution you want it to run in and alter any settings you wish. These settings can be changed at runtime as well.

Do not try to use this plugin with Impact! (the arcade emulator) as it is not designed to work with it, and will not work properly.

 

6. Configuration

6.1. Keys

The actual keys are programmable. The ones listed below are the default settings.

    DEL - Menu Scroll
       This key cycles through the available configuration items
    END - Menu Toggle
       This key changes the configuration item between it's available settings
    CTRL - Show VRAM
       This is really for my benefit :)
       It's not perfect, as it can't handle double buffer too well.
       BGR is also displayed as RGB :( Seems to be a Glide bug. Oh well.
       HANDY FEATURE: tapping this key will help clear the screen of any surplus
                      graphics.
    SHIFT - Show VRAM, with no rendering
       This is really for my benefit :)
       Needs to be pressed while you are already Showing VRAM, and then the
       hardware rendering is stopped, allowing clear view of VRAM.

The plugin supports the Screen Shot function, and will write a screen shot to the sub-directory called "Snap". It will create the sub-directory if it does not already exist, and the files will be named PSGLDxxx.bmp, where xxx is a number from 1 to 999, automatically incremented to avoid overwriting existing files.
Please refer to the emulator's documentation to find the correct key to activate the Screen Shot function.

6.2. Menu System

The Menu System is an On-Screen system: information is displayed on the screen :)
There are two keys to use: one to select, one to activate.

The following options are available to play with:-

On-Screen Display  
Off No display [default]
FPS FPS is displayed
FPS/PSX Mode FPS and PSX Mode (NOT the 3dfx mode you are running)
Full Info Lots of information
Description The On-Screen Display provides information to the user by means of an overlaid display in the top left of the screen. The first two options are the most useful to most people: Off and FPS.
Off will give you the most speed, as the drawing technique of the display will actually slow down the emulator.
FPS mode will provide you with the current speed of emulation (in Frames Per Second), plus some other bits of information, demonstrated and described below

     FPSxx/yy z s AM

xx = current FPS
yy = maximum FPS allowed
z = current DrawMethod, as selected in the configuration (0 == Bright, 1 == Dim, 2 == Multipass)
s  = currently selected Save State slot (if the emulator supports Save States)
A = a 'A' is displayed here if the controller is switched to analogue mode in ePSXe
M = an 'M' is displayed here if the controller is switched to mouse mode in ePSXe

FPS and PSX Mode enables another line of information, which details the current PSX mode being emulated, as demonstrated and described below

    XXXxYYYIDRRP

XXX = current PSX x resolution (width)
YYY = current PSX y resolution (height)
I = whether the mode is interlaced or non-interlaced: an 'i' for interlaced mode, and 'ni' for non-interlaced mode
D = whether the mode is double-height or not: a 'd' for double-height, nothing otherwise
RR = whether the colour depth is 16bits or 24bits
P = whether the display is in PAL or NTSC

Full Info adds some statistics for the rendered frame, which are self-explanatory. THIS SETTING REALLY SLOWS DOWN THE EMULATOR!

RECOMMEND: Off or FPS

   
Frame Skip  
Off Frame Skip not active [default]
On Frame Skip active
Description Frame Skipping is a technique for improving the apparent speed of emulation, but it looses visual quality. The effect is achieved by rendering fewer frames than are actually drawn by the game. As implemented in this plugin, it is a very simple system: if the system is running slower than the correct emulation speed, the next frame will not be drawn. At most only one frame will be skipped. Worst case, every other frame is skipped.
This option can cause all kinds of graphical problems, especially with games running in interlaced display modes. If you are suffering from graphical problems, switch this option off.

RECOMMEND: Off

   
FrameRate Limit  
Full-Rate Game FPS limited to 60fps or 50fps, depending on System Type setting
Half-Rate Game FPS limited to 30fps or 25fps, depending on System Type setting
Custom Game FPS limited to user-definable limit
Auto Game FPS is automatically set according to PSX modes, ignoring the System Type setting [default]
Description This option sets the maximum speed that the emulator will run a game at. It works in tandem with the System Type setting below.

RECOMMEND: Auto

   
System Type  
NTSC Sets the FPS limits to 60/30fps [default]
PAL Sets the FPS limits to 50/25fps
Description This setting defines the system type of the emulator: PAL or NTSC. It is used by the FrameRate Limit to decide what the actual maximum speed of a game should be.
It is ignored if the FrameRate Limit is set to Auto.

RECOMMEND: Your countries TV standard (PAL for UK, NTSC for USA, etc.)

   
FrameCap Method  
Old Uses the old method of determining maximum frame-rate
New Use the new method of determining maximum frame-rate [default]
Hybrid Use the new method of determining maximum frame-rate, but with some tweaks
Description Most PSX emulators run PSX games as fast as they possibly can, so if the game can be run faster than it should be, it will be :)
To make these games playable, the GPU plugin attempts to limit the speed of graphics updates, so that it matches the correct speed of the PSX.
Old
uses the original frame-capping algorithm I devised, which was simply to limit the page-flips to the correct frame-rate for the currently selected PSX display mode. This means for PAL: 25fps in non-interlaced modes (2 fields per frame), and 50fps in interlaced modes (1 field per frame); and for NTSC: 30fps in non-interlaced modes (2 fields per frame), and 60fps in interlaced modes (1 field per frame). The logic behind this is that there is little point updating a non-interlaced display more than 25fps, otherwise you effectively reduce the vertical resolution by half (fields are scanned twice per frame, using alternate scan-lines). But, unfortunately, there are a lot of PSX games that seem to do just that: run at 50/60fps in non-interlaced modes :(
New takes a different approach, and limits the time between vertical interrupts to precisely 1/50th (or 1/60th for NTSC) of a second. The vertical interrupt is actually calculated by the main emulator, and signalled to the GPU plugin. In theory, this is the perfect solution .... except it relies on the main emulator to provide the vertical interrupts. It has been observed that the emulators often generate too many vertical interrupts per frame (i.e. 3 interrupts per non-interlaced frame, instead of 2, etc.) and this causes the game to actually generate a lower rate of frame updates (i.e. 50/3 = 16.667fps, instead of 50/2 = 25fps). It is clear that the emulator can far exceed this frame-rate, but there is some internal problem that maybe makes the game think it is taking too long to draw a frame: pure speculation here. But, even with this graphical drop in speed, the sound and everything else stays in proper synchronisation. Some games even flip between running too fast and running too slow.
Hybrid modifies the behaviour of the New method slightly, and only allows a maximum of 2 vertical interrupts per frame. What this does is smoothes out the apparent frame-rate (can be seen in racing games such as Rage Racer and Ridge Racer Type 4), but it has a side effect: it tends to make the sound run too fast, as it is not correctly limiting the speed of the vertical interrupts :(

RECOMMEND: New

   
Draw Method  
Bright Bright display, but some colours not displayed correctly [default]
Dim Dim display, but colours displayed are correct relative intensities
MultiPass Bright display, correct relative intensities, better Alpha Blending accuracy, but slower (each poly is drawn twice)
VSA-100 Removed for now - not selectable
Description The PSX uses a different lighting equation than 3dfx cards, which means an alteration is required to the lighting equation inputs to achieve the correct colour balance.
Bright boosts the lighting values on the primitives, to attempt to achieve the same lighting equation as the PSX. The problem is that the lighting values can saturate due to this boost, and then the lighting is distorted (bits are not as bright as they should be). In general, however, this looks the best.
Dim does not boost the lighting values, but instead reduces the lighting on other non-light primitives. This has the effect of dimming the whole screen, but it keeps the lighting consistent with the real PSX.
MultiPass achieves the correct PSX lighting equation by doing multiple passes on the required primitives, there by boosting their lighting without the saturation problem of the Bright setting. This is, however, considerably slower than the first two settings, as there are many many more internal state changes in the 3dfx hardware.
VSA-100 would achieve the correct PSX lighting equation on VSA-100 hardware, if the Glide driver was not bugged. Due to the bug, this mode will not work. Since 3dfx is winding down, I doubt we will ever see this working. This is a crying shame, as it appears to work in their D3D & OpenGL drivers, just not Glideł.

RECOMMEND: Bright

   
Alpha Blending Mode  
Basic Transparent objects are drawn totally transparent
Disabled Transparent objects are not drawn transparent
Advanced Available on Voodoo˛ and later cards: Transparent objects drawn correctly [default]
Description The PSX supports alpha-blending for primitives, which is controllable (on & off) per texel. To emulate this correctly on 3dfx hardware, a feature added to Voodoo˛ and later cards is required (i.e.. a feature not present on the original Voodoo and Voodoo Rush).
Basic does a basic implementation of the PSX alpha-blending, which does not support the per texel control. This means some objects will not be correctly displayed, and may be transparent when they shouldn't be.
Disabled switches off all transparency. This is to help those that can't use the advanced option, and find out that some important object is transparent when it shouldn't be.
Advanced implements correct PSX alpha-blending, complete with per texel control over the alpha-blending. If you can use it, use it!

RECOMMEND: Advanced

   
Bilinear Filtering  
Disabled Bilinear filtering off (standard PSX-style display) [default]
Enabled Bilinear filtering on (non-standard PSX-style display, has problems)
Enabled w/o Sprites Bilinear filtering on, but not on Sprites (non-standard PSX-style display, has problems)
Description Bilinear filtering is a technique used in 3d graphics to reduce the pixelation of textures when viewed close up (beyond one texel per pixel magnification). It calculates the texture colour on each pixel drawn, by doing a weighted calculation of the nearest 4 texels in the texture map. This effectively blurs the texture, but reduces the pixelation.
There is a problem with doing this to PSX textures: they are not designed for bilinear filtering, and this therefore causes problems on the edges of textures, where texels from neighbouring texture maps are accidentally used in the bilinear equation. Also, when displaying tiled backgrounds, noticeable lines appear between primitives, where the filtering is dis-jointed.
Disabled does not use bilinear filtering. This is how a real PSX looks.
Enabled implements bilinear filtering, however it will suffer from the above problems.
Enabled w/o Sprites implements bilinear filtering on most of the PSX primitives, but not sprites. Sprites are used frequently in games to create a tiled background, and to display informational texts to the gamer. Preventing Sprites from being bilinear filtered helps reduce the problems detailed above.

RECOMMEND: Off

   
Alpha Testing  
Normal Alpha testing is done to an average value [default]
Aggressive Alpha testing is done to a more aggressive value
Description Alpha testing is used to help eliminate the black borders around objects that can be produced when using bilinear filtering on the PSX's chromakeyed textures. In most cases, an average value for the alpha test function works 'best' [this is, of course, subjective, as with most graphical phenomena], giving a trade-off between amount of visible black and amount of real texture removed.
Normal uses this average value for the alpha test function.
Aggressive uses a value closer to the PSX's chromakey colour, thereby removing literally all the blackness around objects. The flip-side of this is that it also removes more of the real texture on the edge, as this part of the texture is 'contaminated' by the chromakey colour. However, this setting is very important in games that use MASK bits a lot (i.e. Silent Hill), as any bits of chromakey colour cause problems with any MASK bit blending operations.

RECOMMEND: Normal

   
FrameBuffer Access  
Disabled FrameBuffer writes ignored (could be faster in some games)
Write FrameBuffer writes are supported (Splash screens, etc.) [default]
Read FrameBuffer reads are supported (recursive texturing, screen storing, etc.)
Read/Write FrameBuffer reads and writes supported (see above descriptions)
Description On the PSX, it is very easy to send images direct to the display screen, or read from the screen, just by accessing to the correct area of the VRAM. This can be used for recursive texturing (using a previous [or current] frame as a texture for the current frame], or for capturing a copy of the display for effects processing.
Disabled does not emulate this kind of VRAM access, offering the most speed, but preventing certain types of displays appearing.
Write offers support for direct writes to the the framebuffer. This kind of activity is mainly used for static splash-screens and MDECs, but can be used in other ways. This is generally fast enough that you don't notice it, except if the game accesses the framebuffer in a way which is hard to optimise emulation.
Read offers support for reading back from the framebuffer. This is mainly used for recursive texturing (see above) and for copying the current framebuffer to another section of VRAM, for processing. This is _SLOW_, and you will notice it (generally as a pause), but it helps offer almost total emulation of PSX effects (yes, swirly-screen alert!).
Read/Write offers support for both reading and writing to the framebuffer. See the descriptions above.

RECOMMEND: Write

   
Off-Screen Drawing  
Disabled Off-Screen Drawing ignored (could be faster in some games)
Basic Off-Screen Drawing supported, for those primitives determined to be non-visible (rendered textures, clears, etc.) [default]
Extra Off-Screen Drawing supported, with extra checks for recursive texturing
Extra+FBR Off-Screen Drawing supported, with extra checks for recursive texturing and a forced initial framebuffer read
Full Off-Screen Drawing supported, for all primitives
Description On the PSX, it is very easy to draw primitives to areas of VRAM that are not actually being displayed. These rendered images can then be re-used as textures that are actually displayed on the screen. This is emulated by using software routines to draw the primitives in the emulated PSX VRAM.
Disabled does not use any software routines. This is the fastest option, but will not display some styles of PSX rendering.
Basic uses software routines to render primitives that are determined not to be in the visible area of the PSX VRAM.
Extra takes the off-screen drawing a step further, with another level of checking. If an attempt is made to use a display buffer as a texture, then full off-screen drawing will be enabled, but only for the necessary amount of time. As soon as recursive texturing stops, the off-screen drawing falls back to Basic mode.
Extra+FBR is the same as Extra, but includes a framebuffer read at the start of full VRAM rendering, which is often necessary. This setting is designed for those that want swirly-screen effects, etc. but don't want framebuffer read access enabled all the time (note: designed with FFIX in mind!).
Full draws all primitives in to PSX VRAM using software routines at all times. It's like running a software plugin at the same time, so is obvious very processor-intensive, and can slow down emulation by a very large amount. But, it allows literally all PSX rendering techniques to be emulated.

RECOMMEND: Basic

   
Polygon Mode  
Textured Objects drawn normally [default]
Textured/WireFrame Objects drawn normally, with Wire Frame super-imposed
WireFrame Objects drawn in Wire Frame only
Description A debugging feature that was left in for public use!
Textured mode is the normal rendering mode of the plugin.
Texture/WireFrame mode adds a wire-frame outline of all primitives, as drawn, on top of the textured primitives. The wire-frame is in white.
WireFrame mode only draws the primitives in wire-frame, with the correct texturing and lighting applied to the lines.

RECOMMEND: Textured

   
Texture Windows  
Disabled Disables the use of Texture Windows (worse graphical quality in some games)
Enabled Enable the use of Texture Windows (may impact performance) [default]
Faked Texture Windows are faked: no texture is draw, just a solid colour polygon.
Description Texture Windows is a feature of the PSX that is very hard to emulate on standard PC hardware accelerators.
Normal PSX texture pages are 256x256 texels in size. What a 'texture window' does is create a smaller texture area within the standard texture page, from which the primitives are actually rendered. This allows for texture wrapping a small area of a bigger texture over a primitive.
To emulate this on standard PC hardware, the small texture area needs to be copied to its own texture, and then uploaded. If there are lots of texture windows used in a frame, each one from a different texture page or a different area of a texture page, then this can add up to a lot of individual textures, each one needing copied and uploaded. This can be very slow.
Disabled switches off Texture Window support. Most games don't use the texture window feature of the PSX, but there is no extra overhead in leaving the emulation of the Texture Window enabled. The only reason to disabled texture windows is if a) enabling texture window emulation causes the plugin to crash (rare), or b) enabling texture window support makes the game too slow to be playable (i.e.. RRT4).
Enabled switches on Texture Window support. This will give the correct display of all textures.
Faked is a 'hack' to try to make those games that use texture windows, but run too slowly with texture window support enabled, look better than disabling texture window support. Instead of drawing a textured primitive with the wrong texture, it just draws a non-textured primitive with the correct lighting. It can look better.

RECOMMEND: Enabled

   
VSync  
Disabled Frame update is not synchronised to the vertical sync of the graphics card
Enabled Frame update is synchronised to the vertical sync of the graphics card [default]
Description Enables/Disables waiting for Vertical Sync before flipping the display buffers.
Disabling VSync will give an overall smoother game play, but a visible 'tear' in the display will be noticeable.
Enabling VSync will give a cleaner display with no 'tears', but may not be as smooth.
A 'tear' occurs when the front and back display buffer are switched while the front buffer was being scanned to the VDU. This creates a horizontal discontinuity in the displayed image, which makes the image look like it is torn in two.

RECOMMEND: Enabled

   
Banshee Code  
Disabled Disable Banshee-specific code [default]
Enabled Enable Banshee-specific code [a work around if you suffer crashes]
Description This options enables specific code designed to work around a bug in old Banshee drivers which caused the plugin to crash on start-up. It also employs a slightly different colour blending arrangement in Glide, which may work around other bugs in Glide drivers.

RECOMMEND: Disabled

   
MDEC Format  
Texture MDECs are uploaded as a texture, then scaled to the screen [default]
Direct Write MDECs are uploaded directly to the screen buffer, with no scaling
Description Normally, the frame-buffer writes are uploaded as textures and drawn straight to the screen, with bilinear filtering. This fills the whole screen with the texture, and it is in the correct proportion to the emulated PSX display.
The side effect of this is that when displaying 24bit MDECs on old Voodoo cards (pre VSA-100 cards), the 24bit MDEC image must be reduced to a 16bit texture before being uploaded. This is then rendered to the Voodoo frame-buffer, which has a claimed 22bit effective colour depth. The reduction in colour depth results in a reduction in visual quality.
Using the Direct Write method, the frame-buffer writes pixels are uploaded directly to the Voodoo frame-buffer, in full 24bit quality. This means that the only colour reduction is when the Voodoo card dithers the 24bit pixel to effective 22bit in its frame-buffer. Unfortunately, no scaling of the MDEC image is done, as this would be impractical. The MDEC is centred in the screen.
Note: on VSA-100 hardware, which supports 32bit frame-buffers and textures, 24bit MDECs are automatically uploaded as 32bit textures, and the frame-buffer is automatically set to 32bit depth. This results in the best possible display of 24bit MDECs, with no loss of colour depth at any step of the rendering.

RECOMMEND: Texture

   
Experimental Flipping  
Off Disables experimental frame-flipping detection code [default]
On Enables experimental frame-flipping detection code - fixes Final Fantasy games, may cause problems in others
Description This is an experimental method (i.e.. it may or may not work) of detecting the time at which the PSX application switches between ('flips') using the frontbuffer (the graphics that are displayed on the screen) and the backbuffer (the area where graphics are drawn to, in preparation to be displayed on the next 'flip' of buffers).
I had to make some modifications to the code that detects a 'flip' between buffers (non-trivial in a hardware GPU!!) so that the battle-menus in Final Fantasy games worked properly, and since I wasn't sure whether it would mess up other games, I made it a selectable option. So, if it messes up a games, you can disable it for that game.

RECOMMEND: Off (On for Final Fantasy games)

Experimental Screen Sizing  
Off Disables experimental screen sizing code [default]
On Enables experimental screen sizing code - fixes Metal Gear: Solid CODEC screen, may cause problems in other games
Description This is an experimental method (i.e.. it may or may not work) of detecting the actual resolution/pixels the PSX is programmed to display.
As it is experimental, it is fairly untested, and only has been checked to work with Metal Gear: Solid.
It may help other games, then again it may totally break them!

RECOMMEND: Off (On for Metal Gear: Solid)

FrontBuffer Rendering Fix  
Off Disables experimental frontbuffer rendering fix [default]
On Enables experimental frontbuffer rendering fix - fixes menus in NFS games, will probably cause problems in others
Description Some games (most notably Need For Speed games) operate in double-buffered mode (as described above with a front-buffer and back-buffer), but when they display a menu, they stop flipping buffers and just render to the one buffer (the frontbuffer). This is really quite crap, as far as graphical display techniques goes, but we have no control over how the developers use the GPU. This 'habit' of rendering direct to the front-buffer is really a massive pain in the butt for hardware GPUs, so I came up with a 'fix' which tries its best to detect this behaviour and actually display the data for those menus. However, because this is quite a major hack, it will probably cause problems in other games, so this option should only be enable if you think you need it (i.e.. NFS games, and maybe other games where you know menus, etc. are missing).

RECOMMEND: Off (On for Need For Speed games)

FF7 TextureWindow Fix  
Off Disables FF7 TextureWindow Fix [default]
On Enables FF7 TextureWindow Fix - fixes character dialogue boxes, etc in Final Fantasy 7, may cause problems in other games
Description Final Fantasy 7 seems to need a special alignment fix to get Texture Windows implemented correctly. This option enables an extra check/modification to the Texture Window co-ordinates.

RECOMMEND: Off (On for Final Fantasy 7)

DMAChain Fix  
Disabled Disables DMAChain length fix - can cause certain games to lock.
Short Enables cropping DMAChains to a short length - speeds up certain pauses in games, but may cause incorrect rendering of other games.
Long Enables cropping DMAChains to a long length - all games should be rendered properly, but some games may get periodic excessive pauses [default]
Description A 'DMA Chain' is the standard method of how the PSX CPU transfers primitives to the GPU. It is a long linked list of primitives, to be drawn in order. It has been noted that the DMA Chain that comes from the emulator can be looped (i.e. an infinite cycle of null primitives), or the DMA Chain may contain lots of unnecessary null primitives at the end of it. In an attempt to work round these problems (as it is unclear whether the PSX would actually generate such DMA Chains, or whether it is an emulation 'glitch'), the DMA Chain is monitored to make sure it does not exceed certain lengths.
Disabled does no checking of the DMA Chain (neither it's length, nor it's starting point), so the GPU is at the mercy of the emulator :) Note: this may make the plugin display stuff in Impact! again, but remember this plugin is still not designed for Impact! and will not work properly.
Short crops the DMA Chain at a fairly low value, giving less pauses in certain games (i.e. end of a bout in Tekken3, before victory display) but may cause other games that really use a long DMA Chain problems, as not all the primitives will be drawn. Of course, this option may not help all pauses, as the pauses may be caused for other reasons.
Long crops the DMA Chain to a much larger value, which should allow all games to draw correctly, but may causes pauses in certain games at certain points (i.e. the Tekken3 example above).

RECOMMEND: Long (Short for games that exhibit strange pauses)

6.3. Miscellaneous Settings

There are a few miscellaneous settings, which are not part of the menu system

Stored Configuration There are 4 sets of configuration settings, which can be switched between
3dfx Card If you have multiple 3dfx cards in your system, you can choose which one is used by the emulator [currently unimplemented]
Copy Info This button copies your current plugin configuration (plus some system info) to the clipboard, so it an be pasted in to an email, etc.
Resolution This is the graphical resolution that the emulator will run at
Refresh Rate This is the graphical refresh rate that the emulator will run at [appears not to work!!]
Emulate Mask Bit Enables emulation of the PSX MASK bit. This requires the use of the ZBuffer, so will slow down the emulation, and may offer less choices of resolution
Enable Dynamic Caching Enables Dynamic Caching of texture windows. This reserves a chunk of texture memory on the 3dfx card for the job, so may have an impact on the performance of older 3dfx cards (Voodoo, Voodoo˛, Voodoo Rush). Since this could affect plugin stability (i.e. it could make it crash), it is controllable for all 3dfx cards. It will significantly increase the performance of games that use extensive texture windows (Ridge Racer Type 4, for example).
Custom FrameRate Sets the Frame Rate that games are capped to when the Custom option is selected in the FrameRate Limit menu option

The Key Configuration panel allows you to customise the keys used for the various runtime functions of the plugin, so that you can avoid clashes with keys that may be configured for other plugin's functions (such as the PAD plugin). There is also the following option

Enable Quick Configuration Hotkeys Enables the hotkeys for switching configurations on-the-fly (i.e.. during a game). These are simply the keys 1, 2, 3, and 4. This option is here in case those keys clash with the keys you use for emulating the PSX gamepads.

For those of you incapable of reading the readme (but you wouldn't also be reading this, eh? ;) ), then there is a new button

Explain Setting Brings up the text from the readme which explains the setting.

Settings are stored in the Registry automatically, and are loaded again at start-up.
Everything is stored under "HKEY_CURRENT_USER\Software\Vision Thing\PSEmu Pro\GPU\LewGlide".
This means all emulators that use the plugin will share common settings.

 

7. Problems

Don't try and use this driver if you do not have a 3dfx graphics card!!!
Also, make sure you have Glide3 installed: this will install a file called GLIDE3X.DLL in your WINDOWS/SYSTEM directory. If this driver is not present, expect it not to appear in the list of plugins at all!

Really old 3dfx cards (mainly sent to developers early on) will not be able to run with this plugin. This is due to the plugin needing a texture palette, and the early 3dfx cards did not have this capability (Revision0 TMU's). I believe all production cards had later revision TMU's, so this should not affect 99.99% of people.

 

8. Greets

Greets to :-
IRC: mappy, moopy, stubbette, Ravian, Adept, Vastator, Gaffer, Frenzy, Statix
IRCNet #coders, EFNet #3dfx, #PSEmu, & #ePSXe!
Duddie, Tratax, Kaz : where would we be without PSEmu Pro?
calb, Galtor, _demo_ : ePSXe is incredible!! great work guys :)
Pete "Dove" Bernert : where you find the time and energy for _all_ your plugins, I don't know!
RealLife(tm): Paul, Damian, Sarah (and all at Bizarre Creations), Matt, Sue, Dunx, Tabs, Paula, Giles "Hoohah", Simon "Delbert", Harry The Bastard, Jim, Rik, Pete.

 

9. Version History

* ver. 1.0.35 - 01.08.2001
 - Display bug fixed!!!
     Even though I was unable to purchase the game (it's not released in the UK and
     none of the import shops I tried had it), I've managed to fix the display bug
     in Xenogears :) This was causing occasional flickering screens.
     It's a generic fix, so may well help other games with similar display problems.
     I would like to thank Cloud Strife for providing me with the debug information
     I needed, and to Mark Fraser for trying to help me before.
 - OnScreen Display Enhancement
     Shesh :) I got one report of the display appearing when it shouldn't, so I've
     but more checking around the code, to make sure the counter isn't a value it
     shouldn't be. Also, I've removed the Save Slot message, since the Save Slot
     picture support makes this obsolete.
 
* ver. 1.0.34 - 15.07.2001
 - Save State Picture Support
     I've added full support for Save State pictures. You can see them, and it saves
     them too :)
  - Tweaked Off-Screen Drawing Settings
     I've tweaked the detection of recursive texturing when OSD is set to EXTRA.
     It should have less false detections (slowdowns if set to EXTRA, massive pauses
     if set to EXTRA+FBR), and hopefully it doesn't miss what is trying to detect!
 - OnScreen Display Enhancement
     If the OnScreen display is set to OFF, you get a 2 second message appear
     on-screen whenever you change the Save State slot or change the controller type.
     Unfortunately, there was a yet another bug in the last release, which meant
     after a while these messages would appear and then stay on screen.
     Whoops. REALLY fixed now :) .... I hope :)
 - Improved Copy Info Output
     Includes detection of Windows XP, and DirectX 8.1. Also fixed the bug that
     meant the output was cropped if ePSXe CDRom was set to "First Cdrom".
 - Tidier Glide shutdown
     I now clear both the front and rear Glide display buffers before I close down
     the Glide window, which helps keep the screen tidy if you are running dual
     monitors, like I do :) The 3dfx drivers are very poor at being used as a
     secondary display, and don't re-initialise the desktop after a Glide session :(
 - Miscellaneous Fixes
     Not too many this release. Don't expect any compatibility improvements with
     games that were having trouble with the last release (i.e. Xenogears, etc.) :(
 
* ver. 1.0.33 - 06.05.2001
 - FrameBuffer Access Improvements
     I've been working on fully emulating framebuffer access within my plugin.
     As such, "FrameBuffer Writes" is no more, and has been replaced by
     "FrameBuffer Access". This has 4 [obvious?] settings: Disabled, Write,
     Read, and Read/Write. This controls whether the plugin will emulate reads
     and/or writes directly to the 3dfx framebuffer. Writes are generally fast,
     reads are generally slow. Setting this to "Write" is the same as setting
     the old option to "Enabled". The new part is the "Read" option, and fans
     of the swirly effects in PSX games will love this setting ;)
     Related to Off-Screen Drawing.
 - Off-Screen Drawing Improvements
     I've added two more options to off-screen drawing, to help support recursive
     texturing. The options have been renamed to: Disabled, Basic, Extra, and Full.
     Basic is the same as the old Enabled setting. Full offers full VRAM primitives,
     and Extra offers intelligent switching between the two settings.
     Read the setting description for more details.
     (eg. Extra allows the MG:S Codec screen to display the frequency, etc. correctly)
     Related to FrameBuffer Access.
     For FF9, try - FBA=WRITE, OSD=Extra+FBR. This is the best compromise, with swirly
     effect on entering a battle, and full recursive textured spell effects, but it does
     slow down battle FPS when those effects are active.
     And remember: you can always switch off the new functionality if you don't like it!
     Setting FBA=WRITE and OSD=BASIC will make it operate like the old plugins.
 - 16Bit Texture ChromaKey bug fixed
     While working on the FrameBuffer Access improvements, I came across a bug with
     16Bit textures and chromakey, where the STP bit was being incorrectly ignored.
     This is now fixed.
 - OnScreen Display Enhancement
     If the OnScreen display is set to OFF, you get a 2 second message appear
     on-screen whenever you change the Save State slot or change the controller type.
     Unfortunately, there was a bug in the last release, which meant after a while
     these messages would appear and then stay on screen. Whoops. Fixed now :)
 - New Explain Setting Button
     Another addition to the special "Super Lewpy Clunky GUI(tm)" suite! It's not
     quite tool-tips, but hey ;) Press the button and up comes the exact same text
     from this readme ... because too many people don't seem to RTFM ;)
 - Improved Copy Info Output
     Now has a section for the ePSXe configuration. Might prove handy.
 - Miscellaneous Fixes
     There's no doubt a few fixes which I've lost track of :)
 
* ver. 1.0.32 - 20.04.2001
 - Removed 3 Options, Added 2 More
     I have removed the following redundant settings from the menus :-
     The other two nominated candidates for removal (Banshee Code & MDEC Format),
     received a few emails in support, so I have left them in.
     One new option is called Alpha Testing. Read the description
     in the readme for more info, but it was mainly introduced to help with
     Silent Hill, which uses alpha blending and MASK bit a lot. If you play the
     game with this version of the plugin, you will see the difference :)
     It will also have an effect on other games when bilinear filtering is
     enabled, so see whether you prefer it :)
     The other new option is called Experimental Screen Sizing, which fixes the
     CODEC screen in Metal Gear: Solid. But it may mess up other games, so use
     with caution at the moment :)
 - Crashing Bug nailed
     There was a nasty bug that caused the plugin to crash, which was mainly
     evident in FF9 (an evil little game for exposing GPU Bugs!!).
     This has been tracked down and squashed (with extreme prejudice!).
 - MDECs + 3D Action improved
     Mainly for FF8, scenes with MDEC backgrounds and 3D rendering in the foreground
     should now display correctly.
 - Fixed FF8 Intro
     I've fixed up the intro of FF8, so the horizontal lines are gone.
 - Fix to Hybrid FrameCap Option
     I noticed that the HYBRID setting could cause MDECs to play at the wrong speed,
     so I've tweaked it to prevent this from happening (hopefully!).
 - BOF4 Spell Effects
     These were not working properly, due to off-screen line drawing not working in
     my plugin. I've implemented this now, so the spell effects appear in their full
     glory :)
 - OnScreen Display Enhancement
     If the OnScreen display is set to OFF, you get a 2 second message appear
     on-screen whenever you change the Save State slot or change the controller type.
 - Front/Back Buffer Copying
     I investigated this, to help fix some flickering during transitions in FF8, but
     the speed penalty was prohibitive to its effectiveness :( I will carry on doing
     investigations, to see if something can be done that works reasonably well.
 - Dino Crisis 2
     I managed to get hold of this game, so investigated the transparent people bug.
     The game makes use of MASK bits and also texturing from a previous framebuffer.
     Although I don't support the latter operation, I have managed to tweak my
     plugin so an acceptable compromise is reached: the characters are non-transparent,
     but the motion blur effect is not done.
 - Fixed STP bit in 16bit Textures
     I have been inverting the STP bit for _ages_ in 16bit textures, as a result of
     investigating alpha-blending problems. The problem I was investigating appears
     to have been fixed when I fixed the problems in the blending mode caching a few
     versions ago, so I've now corrected 16bit textures.
 - Improved MASK bit emulation
     I've implemented the changes that Pete made recently. Silent Hill looks a lot
     better, but remember to play with the Alpha Testing option for that game.
     Thanks Pete :)
 - Fixed Hall Of Mirrors bug in Tony Hawks Pro Skater 2
     I noticed a Hall Of Mirrors clearing bug in THPS2, which I've resolved.
 - Fixed Splash-Screens in Spiderman
     Some splash-screens, and the comic covers section, were not working, so I've
     fixed them up.
 - Fixed Crash when Configuring for non-3dfx owners
     Well, they can't use my plugin anyway, but it doesn't crash now :)
 - Fixed Bugs in 8Bit and 16Bit Texture Windows
     Found a couple of bugs in the creation of 8bit and 16bit texture windows, so that
     may fix up some graphics problems.
 - Implemented true PSX PolyLines
     I've finally implemented proper polyline support in to my plugin, which should
     help out those games which use it.
 - Miscellaneous Fixes
     There's no doubt a few fixes which I've lost track of :)
And I only stopped there because Feature Creep(tm) was setting in :)
 
* ver. 1.0.31 - 25.02.2001
 - "Stop! .... Carry On" Crash Bug :)
     Woke up this morning to reports of a new crash bug in my last release :(
     If you stopped emulation (pressing ESC) and then continued, the plugin would
     crash :( I've traced the problem to an un-initialised pointer (doh!), that was
     introduced in v1.29 in the Copy Info functions. Should all be fixed now.
     Thanks to Elvis HUDRY, deryiu3, and clue1ess.
     P.s. I guess that title is lost on anyone who doesn't listen to Radio 1 in the
     afternoons :)
 - VRAM Upload in DMAChain
     As Kazzuya and Pete have implemented, so have I: my plugin now supports the
     uploading of VRAM data in a DMA Chain. This should fix a couple of games.
     Again, thanks to Taka-san for his in-depth analysis of the problem, and his
     solution!
 
* ver. 1.0.30 - 24.02.2001
 - Dynamic Texture Window Caching
     I've re-written parts of the code for handling the dynamic texture cache, and
     approached some things slightly differently. This has increased the robustness
     of the code, and therefore increased its stability ... a good thing :)
 - Texture Bug
     There has been a long-standing texture bug, where the top most row of texels
     in a texture page has not been uploaded to VRAM correctly. I've finally looked
     into this, and corrected the fault.
 
* ver. 1.0.29 - 11.02.2001
 - Dynamic Texture Window Caching
     There were some nasty bugs in the initialisation of the Dynamic Cache memory
     pool in the previous version, which could cause corrupt graphics and random
     crashes :( It's all fixed now [hopefully!!] :)
 - FrameCap Method Option
     You can now control the method by which my plugin tries to limit the speed of
     a game. Read the Menu System descriptions in the readme file for full info.
 - More Chrono Cross fixes
     1) Save game screen is no longer corrupt and flickering
     2) Status screen works and doesn't freeze the game (thanks Pete!)
     3) Last frame of MDEC doesn't jitter :) subtle, but hey :)
 - Texture Window improvements
     General improvements to the creation of texture window textures. Should help
     reduce corrupt graphics.
 - Palette Bug fixed
     There was a palette bug in previous versions which would cause primitives to
     be 100% transparent. This has been fixed. This problem was most noticeable in
     certain XMen vs. Street Fighter scenes.
 - Text File free with each Screen-Shot!
     Bargain of the century, roll-up roll-up :)
     The configuration of the plugin is written to a .txt file, with the same name
     as the screen-shot. Err, just like Pete's plugins do :)
     Useful for posting with screen-shots on web-sites, so people can see exactly
     what hardware it was taken on, and also how the plugin was configured.
     It's the same style as the COPY INFO button.
 - DMAChain fix
     A small fix to the DMAChain handling routine, that should make it handle
     corrupt DMA Chains better. Thanks for the tip, Pete ;)
 - Miscellaneous Fixes
     There are the usual bunch of miscellaneous fixes, which I loose track of :)
 
* ver. 1.0.28 - 27.01.2001
 - Dynamic Texture Window Caching
     Finally, I've got my dynamic texture caching code stable enough to use :)
     This will make a _huge_ difference in the speed of some games, that make
     heavy use of texture windows (Ridge Racer Type 4 is a good example).
     This is enabled by default, switch it off only if it degrades the performance
     of other games, or if it causes fatal problems to the plugin :)
 - Off-Screen Drawing Improvements
     There were a couple of Off-Screen Drawing problems in the previous release.
     The first one caused a performance slow-down in certain games (the underwater
     scene in Chrono Cross intro, and certain arenas in Soul Blade, are two
     examples). This has been fixed.
     The second problem was more serious, as it could cause the plugin to crash.
     This problem most noticeably occurred during certain spell effects in FF IX.
     Again, this has been fixed.
     Note: for FF IX, it is now safe to have Off-Screen Drawing and FrameBuffer
     Writes enabled in this version of the plugin. Make sure you also enable
     Experimental Flipping for Final Fantasy games, otherwise the battle menu
     will be incomplete.
 - DMAChain Fix Option
     I have allowed user control of the DMA Chain fix, so that you can decide what
     level of checking is done. Read the configuration option notes to understand
     the options.
 - Programmable Keys
     The keys used by the plugin in-game are now configurable. There is a new
     panel with the key functions listed, and a pull-down list of keys. Some of
     the key names are cryptic, as they are taken straight from programming
     descriptions, and I haven't had the time to tidy them up. I will go through
     and do this soon. Also, choosing some keys (i.e. Escape) is pretty stupid :)
     Note: you need to re-select the Enable HotKey setting, if you want it. It is
     now on the new Key Configuration panel.
 - Rendering State Fix
     There was a slight glitch with the internal Rendering State caching, which
     caused a one primitive lag on certain state changes. This would cause
     certain primitives at certain points in certain games (i.e. could be anywhere
     in any game!!) to be rendered incorrectly. This was evident in a certain
     forest/swamp location in FF IX, where sprites were lit incorrectly, causing
     flickering dark patches on the screen.
 - Miscellaneous Fixes
     There are the usual bunch of miscellaneous fixes, which I loose track of :)
 - Configuration Hint
     You can change the configuration of my plugin without having to restart the
     emulator :) To do this, configure my plugin as normal. As long as you press
     the OK button on my configuration panel, the settings will be stored. When
     you return to the emulator configuration panel, click CANCEL. This will make
     the emulator think that nothing has changed, and it will be happy to allow
     you to start a game. In fact, the settings have been changed :)
 
* ver. 1.0.27 - 14.01.2001
 - Final Fantasy IX Improvements
     I've made some improvements to Final Fantasy IX, namely
     - fixed spell special effects (although they may not look 100% right)
     - fixed highlight of character name in battle menu (very subtle! ;)
     The first fix is generic, so may improve other games too, because
     off-screen drawing has been vastly extended to include all primitives,
     with all blending modes, by using Pete's software routines.
 - Chrono Cross Improvements
     Having finally gotten hold of Chrono Cross, I've fixed some problems
     exhibited by this game, namely
     - fixed underwater wave effect and character dialogue boxes (8bit/16bit
       texture windows were badly bugged ... badly un-implemented actually!!)
     - fixed black screen display at character name screen (some internal GPU
       status reporting was incorrect)
     Both of these fixes are generic, so may improve other games too. The texture
     window fix helps BOF4.
 - Final Fantasy VII Fix
     I have implemented Pete's Final Fantasy VII Texture Window fix :)
     Enable this for Final Fantasy VII only. It messes up Final Fantasy IX.
 - Bilinear Filtering Option
     I have implemented an option which disables bilinear filtering of sprites.
     This should improve games that use sprites for backgrounds (Final Fantasy,
     BOF, Chrono Cross, etc.) and for character text.
     It's a personal choice as to which you prefer.
     Note: due to this change, your current selection for bilinear filtering will
     be reversed (off for on, on for off), so reset your selection.
 - Texture Window Option
     I have implemented an option which fakes texture windows. They are not drawn
     textured, but are drawn without the texture entirely (just the lighting is
     used to control the colour). This helps out games which run too slowly with
     texture windows enabled, but look awful with texture windows disabled (such
     as RRT4). This doesn't look brilliant, but at least it draws a solid object
     (useful for the road in RRT4!!!).
     This is a temporary measure until texture window support is implemented with
     no slowdown.
 - New HotKeys Function
     You can now toggle between the 4 stored configurations at the touch of a
     button, on-the-fly (i.e. in game!!!). All you need to do is tick the
     Enable HotKeys box in the configuration panel, and then keys 1-4 on the
     keyboard will switch between configurations, even switching resolutions
     on-the-fly.
 - New Set Default Button
     There is now a Set Default button on the configuration panel, which will set
     the current configuration to the default settings. Useful if you have been
     playing with settings and can't remember what the defaults are.
 - Improved Windows Compatibility
     If you press ALT-TAB, or use another method to take the focus away from the
     emulator, the Glide screen will be closed and the desktop will become visible.
     Just ALT-TAB back to the emulator display window, and the Glide window will be
     re-opened.
     Note: emulation is NOT paused when you do this!!!
 - Improved Copy Info
     The Copy Info button now includes even more information about the Operating
     System you are using, the amount of RAM you have, and the details of your
     processor (make/model/speed/number).
     Please use this function when making bug reports, as it really helps to see
     your system configuration.
 - Improved Documentation
     I've gone through the options detailed in the readme document, and added
     descriptions and recommended settings against each option. Useful for both
     the newbie and the inquisitive ;)
 
* ver. 1.0.26 - 28.12.2000
 - Final Fantasy IX Crash Fix
     I received Final Fantasy IX USA through the post today, and debugged what
     was going wrong. Hopefully, that is all sorted now, so you can re-enable
     FrameBuffer Writes in this game. Any more problems with this game, let me
     know.
     Again, this is a generic fix, so it may well help other games that were
     crashing before this version.
 - FrontBuffer Rendering Fix
     There is now a new configuration called FrontBuffer Rendering Fix. This is
     designed primarily for the NFS games, where the menus were not visible
     up until now, but may work for other games. It is by no means perfect,
     and will cause display flickering as the menus are drawn, but something
     is better than nothing :)
 - Screen-Shot Fix
     There was a bug when taking screen-shots on Voodoo4/5 cards, which I've
     now fixed.
 - Improved Copy Info
     The Copy Info button now includes more information about the Operating
     System you are using, the amount of RAM you have, and the details of your
     processor (make/model/speed/number).
     Please use this function when making bug reports, as it really helps to see
     your system configuration.
 
* ver. 1.0.25 - 26.12.2000
 - Merry Post-Christmas!!!
     I hope you all had a great Christmas, and best wishes for the New Year :)
 - Blending Stage Caching
     There was a bug in the way blending stages were cached within the plugin.
     This was first brought to my attention by Pete Bernert, as there was a
     problem in one of the menu screens in BOF4. With Pete's help, I managed
     to remotely debug what was going wrong (DCC'ing back and forth between
     UK and Germany :). What I discovered was a bug which could be affecting
     all games, it just had surfaced in BOF4. All fixed now, so if something
     seemed strange before, it may well be fixed now ... fingers crossed :)
     Also fixes transparent characters in SmackDown 2, but enable Banshee Code
     in that game to avoid crashes in the cutscenes, although the graphics may
     get corrupted in those scenes: better than crashing though :)
     (thanks to BromanX for testing that for me).
 - Impact!
     This plugin is not designed to work with Impact! I get enough emails about
     this that I thought I would add this statement.
 
* ver. 1.0.24 - 25.12.2000
 - Merry Christmas - Again!!!
     Quick note to you all, to wish you all a Merry Christmas and a Happy New Year!
 - FrameBuffer Write fix - Again!!!
     I introduced a simple, but nasty bug on last release, meaning that a lot
     of FrameBuffer Writes would not work :( Resolved it :)
 
* ver. 1.0.23 - 24.12.2000
 - Merry Christmas!!!
     Quick note to you all, to wish you all a Merry Christmas and a Happy New Year!
 - Support for Custom Refresh Rates
     I've added support for selecting the refresh rate of the display.
     It doesn't seem to work with my Voodoo5, but maybe it will work on other cards.
     PLEASE BE CAREFUL WITH THE REFRESH RATE YOU SELECT!!!
 - Custom Frame-Cap Option
     I've changed the Unlimited FrameCap option to a custom one.
     Select the frame rate limit you want to set in the configuration panel, and
     select the CUSTOM option under FrameRate Limit configuration menu item.
     You can set the old Unlimited option by simply setting this to 200Hz :)
 - FrameBuffer Write fix
     There was a bug in the frame-buffer write code, that meant some splash-
     screens were not shown in the last release. I've fixed this, so all
     should be back to normal.
     There is still a bug that seems to crash Final Fantasy IX, so please
     disable FrameBuffer Writes in that game for now :(
 - Display of Analogue/Digital Pad mode
     I forgot to mention this last release, but if you set the OnScreen Display
     option to at least FPS, then you will see notification of what mode the Pad
     is in. An "A" will be shown for Analogue mode, and an "M" will be shown for
     "Mouse" mode. Nothing therefore means normal Digital mode :)
 - Removed VSA-100 Draw Method
     I've disabled this, as it is not usable with current Voodoo4/5 drivers, and
     when it is usable, I need to spend some time tweaking it. It shouldn't
     really of been enabled in the last couple of releases :)
     We'll have to wait and see if the bug in the drivers is ever fixed :(
 - Improved CopyInfo function
     This function now supports ePSXe better :)
 
* ver. 1.0.22 - 19.12.2000
 - Startup crashing bug squashed!! :)
     The plugin no longer crashes with fast processors :)
     A bug in the MMX detection code I was using, so I re-wrote it using C++
     structured exception-handling. Much cleaner, and above all it doesn't crash :)
 - MASK Bit Optional
     Emulation of the MASK bit is now optional. This should return some speed,
     as the ZBuffer is no longer being used. It will also return any display
     resolutions that were lost with the previous release.
     This option can only be selected BEFORE running a game: it can't be
     changed "in-game".
 - Integration of Pete's Improvements
     Hats off to Pete Bernert :)
     Integrated in the new co-ordinate wrapping code that Pete devised, and
     also the revised frame-limiting code. The frame-rate should always hover
     around the full-rate speed. I strongly advise setting the Frame-Rate option
     to AUTO to get the full benefits of the new code.
 - Experimental Flipping code
     For all you Final Fantasy lovers out there ;)
     This option should fix missing display items (mainly battle menus) in the
     Final Fantasy series of games.
     Just in case it causes problems with other games, it's an option so you
     can just turn it off :)
 
* ver. 1.0.21 - 29.10.2000
 - Voodoo4/5 Support
     The plugin will detect Voodoo4/5 cards, and automatically move in to 32-bit
     colour mode for better display quality. 24-bit MDECs are also automatically
     uploaded as 32-bit textures, again for better quality.
 - MASK Bit Support
     The PSX MASK Bit is emulated, using the ZBuffer.
 - Multiple Configurations
     The plugin now has 4 sets of configurations you can select in the
     configuration screen. On-The-Fly switching is not supported yet.
 
* ver. 1.0.19 - 11.07.2000
 - Re-Compiled Re-Release
     Re-compiled with less optimised compiler options to prevent crashes when
     starting with a very fast processor (Coppermine, etc.)

 

* ver. 1.20.98 - 28.12.1999
 - Miscellaneous
     The usual bunch of miscellaneous things that I forget about over the
     time between releases :) Plus a change in plugin version numbering
     which I soon changed back to the old method ;)

 

* ver. 1.0.19 - 22.5.1999
 - More Linking Fun
     I've removed all MFC code from my plugin, so it has reduced in size
     and in complexity. It's quite hard to get past the MFC stuff in
     Visual C help system, and get to the core stuff: I wonder if Micro$oft
     did that deliberately? ;)
 - Improved Bilinear Filtering
     I've had a good bash at improving Bilinear Filtering on my plugin.
     It's not perfect, but it is much better than before. There are a
     couple of new options for texture correction due to bilinear
     artefacts, so have a play with them (on a per-game basis).
     I now run my plugin with Bilinear Filtering on by default ;)
     NOTE: it will only look good if you set ALPHA BLENDING MODE to
     ADVANCED. If you can't select that option, then you won't be able
     to enjoy fully enhanced bilinear filtering :(
 - Fixed a problem with FrameLimiter
     FrameLimiter only worked if you had the FPS counter on-screen.
     It now works all the time (thanks Pete! :)
 - Primitive Fixes
     Put in a couple of "special case" scenarios for some primitives, to
     fix some funnies in some games.
 - ReWrote Frame Uploading code
     Rewrote the code so that frames are uploaded in an overlapped fashion,
     so that bilinear filtering does not exhibit anomalies (ie. sharp
     transition lines across the screen).
     This is slower, but it looks nicer.
 - Miscellaneous
     The usual bunch of miscellaneous things that I forget about over the
     time between releases :)

 

* ver. 1.0.18 - 25.4.1999
 - Dynamic Linking
     All non-system dependencies are statically linked or dynamically loaded.
     This should reduce all dependency problems, and allow more meaningful
     error messages.
 - Improved Texture Alignment
     Having gotten hold of some decent 2D games, I've managed to resolve
     some texture problems (which I call Texture Alignment). There is an
     option in the configuration menu to disable this, if you experience
     any problems with it.
     Note: it's not perfect yet, but it's better :)
 - Improved Display Handling Code
     Yet again[!!] I've reviewed the display handling code. Hopefully now
     I've reduced the number of games that display nothing, or have
     violently flashing screens. If any games were bad before, please try
     them again and let me know if there is still problems.
     There is still a few problems with some screen sizing/positioning,
     which I am looking into.
 - "Copy Info" Button on Configuration Screen
     A new button, that magically copies some useful information to the
     clipboard. Press the button, and then paste the clipboard into a mail
     message, giving lots of useful background information about your setup.
 - Miscellaneous
     The usual bunch of miscellaneous things that I forget about over the
     time between releases :)

 

* ver. 1.0.17 - 7.3.1999
 - Fixed Texture Window bug
     There was a nasty bug that could result in a crash in games that use
     8-bit texture windows. Fixed.
 - Fixed Alpha Blend bug
     I've revised the way one Alpha Blend mode was handled, so things should
     look better where it is used. It's still not 100% perfect, and I doubt
     it ever will be, due to single-pass limitations. Maybe I will offer the
     option of handling just this Alpha Blend mode as a two-pass operation
     in the future.
     Note: it was always 100% correct in MultiPass mode.
 - Banshee Code option
     Since 3dfx have released updated Banshee drivers, this option allows
     Banshee-owner's to disable the Banshee-specific code in my driver.
     DO NOT disable this setting unless you are running Banshee drivers
     released this year: on older drivers, my plugin will crash as soon
     as you try to use it [known bug in the Banshee Glideł driver].
     Good luck Banshee owners :)

 

* ver. 1.0.16 - 20.2.1999
 - ***Prelimenary*** Texture Window support
     This build contains Texture Window support, but the Texture Windows are
     not properly cached yet. This means it will slow down games that heavily
     use Texture Windows, but it does substantially improve the visual quality
     of the game.
     Proper caching of the Texture Windows will be implemented in a future
     build.
 - Revised Configuration Panel
     All configuration items can be configured via the Configuration Panel
     (ie. outside of a game).
 - Change to InGame Configuration Menu Control
     As soon as you configure an item, the next press of the Menu Cycle key
     will exit the menu system.
 - Control of System Type
     You can control the system type (NTSC/PAL), so that the frame rate
     limiters can be set to 60/30fps or 50/25fps, except ....
 - New Limit Mode: Automatic
     This is an "experimental" mode, whereby the speed of the game is limited
     automatically by the plugin. It ignores all other user settings, and
     tries to work it all out for itself!
 - Control of VSync
     VSync can be controlled from the configuration menu.
 - Revised Display Setting
     Rewrote some of the display setting code, which hopefully reduces some
     of the flashing screens that affect some games.
 - Revised FrameBuffer Writing Sequencing
     Changed the way framebuffer writes were handled, when they occur after
     a series of other framebuffer writes with an inbetween drawn primitive
     (you could call this "The Sandwich Effect" or something :). Previous to
     this, the last framebuffer write would cause the inbetween drawn
     primitives to be overwritten. This fixes some hidden menus, and such
     like, in some games.
 - Banshee
     Again, I've fiddled around with the work-around code I have to use to
     get Banshee working. Hopefully, this stops any nasty side-effects like
     lockups. All problems should magically disappear when 3dfx release fixed
     drivers ....
 - BlockFill Optimisation
     This was a last-minute optimisation I just thought of. It should speed
     up some games where there is blockfill to clear the screen and you are
     running in a high resolution. Hopefully this hasn't introduced any
     side-effects.
 - Bugfixes
     A few miscellaneous bugfixes, that hopefully help out.

 

* ver. 1.0.15 Beta 12 - 3.1.1999
 - New Configuration System
     The number of keys that I needed was getting too many, so I've re-designed
     the way runtime configuration is handled. Now, it basically takes only two
     keys to do all the configuration settings :) Settings are also
     stored/retrieved from the registry. That has interesting possibilities.
     NOTE: you will need to reselect your resolution setting, as I've
     re-arranged the storage of data in the registry.
     *** BANSHEE OWNERS ***
     My plugin will try to use the Advanced Alpha Blending mode with your cards
     (because the Banshee Glide3 driver says it can support it). At this time,
     the support in the Banshee Glide3 driver is actualy broken (3dfx should fix
     this on the next release of driver). Until then, please change to one of
     the other settings to avoid screen problems (this should be stored in the
     registry, so it will happen only on initial startup).
 - Frame Skip
     I've added a FrameSkip facility, accessable from the menu system. Only one
     frame in two is skipped, if things are running slow. The affect of this will
     vary from game to game, since some games depend more heavily on the GPU
     plugin than others.
 - FrameRate Limiter
     There is now an option for a 200fps limit (basically no limit), if you want
     to run your games a stupid speeds.
 - Changed Off-Screen Rendering a little
     I finished off my own basic poly drawer, as it was much quicker. Speeds up
     Crash Bandicoot 3, where Crash's shadow is continuously drawn offscreen,
     then textured on-screen.
 - Optimised texture memory invalidation
     Something "Under The Hood". It's a "Good Thing" :)
 - Re-wrote texture manipulation routines
     Some more hand-optimised assembler in action. Speeds things up.
 - Re-wrote palette manipulation routines
     Even more hand-optimised assembler :) Speeds things up, and is more
     "Cache Friendly" (no more huge lookup tables).
 - Implemented a WireFrame Mode
     For research, mainly ... but left in for a laugh :)
 - Check the Menu System section for more details on the available configuration
   settings

 

* ver. 1.0.15 Beta 11 - 27.12.1998
 - Optimised off-screen clearing
     This should speed games up a bit. Amount will vary from game to game.
 - Fixed connected lines bug
     Connected lines was messed up in Beta 10, doing all kinds of weird stuff
     (didn't crash though).
 - Implemented more basic off-screen rendering support,
   using Duddie's GPU code in the end :)
     In Beta 9/10, I added non-textured triangles. Now I've added Sprites.
     Although none are blended correctly yet, it's better to have something
     than nothing :) This means the skeletal menu in MediEvil is now visible:
     a personal crusade to get that going! :)
     None of the offscreen drawing (except clearing and copying) is optimised
     yet. This shouldn't affect too many things, since off-screen drawing is
     not all that common.
 - Fixed potential lockups selecting BiLinear filtering, or doing a screenshot
     These were "interrupts" coming in and executing out-of-synch with the rest
     of the Glide rendering. Thay are now synched to the main flow of execution.
 - New Banshee code
     Hopefully, this should improve matters for the Banshee owners. With the
     Banshee drivers being as painful as they have been, there is always a
     chance things actually get worse :( Since I don't have a Banshee,
     I can't check ... so please give feedback over this.

 

* ver. 1.0.15 Beta 10 - 25.12.1998 - Christmas Release Part II
 - Beta9 had a nasty bug which crept in at the last minute,
   which caused lots of crashes
 - This is a bug-fix for Beta9
 - Fix for DevKit problems
 - Extra "work-around" for Banshee
 - Implemented basic off-screen rendering support,
   using Duddie's GPU code in the end :)
 - Fixed a crashing bug that prevented Crash Bandicoot 3 from running.

 

* ver. 1.0.15 Beta 9 - 24.12.1998 - Christmas Release
 - Happy Christmas everyone :)
 - lots of things, and no time to write this :(
 - See if you can notice the differences

 

* ver. 1.0.15 Beta 8 - 14.12.1998
 - fixed a bug due to Tekken3 "fix"
     Fixed a bug whereby only some of the scene was being drawn in some games,
     such as GT. The whole scene is now drawn properly.
 - Added a Frame-Rate Limiter
     Games are now capped at 60fps(-ish), PAL and NTSC. You can slow it down
     to 30fps by using the SHIFT key.
 - Added multiple Display Modes
     Still playing around with the colour balance!! There are now 3 options.
     The latest option (Option 3) is the best, but it does slow down the
     update rate (depending on the game). Option 1 & 2 are the two options that
     have been available before: one bright, one dim.
     Select the one you prefer, which will probably vary from game to game.
 - Small palette optimisation
     I added a small optimisation to the palette code. Not sure if this will
     really be noticable.
 - Compiled under Visual C v6
     SP1 seemed to stabalise Visual Studio 6, so took the update step.
     Seems pretty cool. Dunno if it's affected the speed of the code, but it
     has made the plugin bigger! You will need the latest Visual C runtime
     libraries (MSVCRT.DLL and MFC42.DLL), which are available from the PSEmu
     beta page.

 

* ver. 1.0.15 Beta 7 - 07.12.1998
 - fixed the Tekken3 hang, we hope!
     Implemented a "fix" for the Tekken3 problem, thanks to the guys on IRC.
     Best bet is to advance to the next round by using the START button to
     skip over the end Replay and the "victory" animation of your character.
     I have noticed repeatable loops if the "victory" animation ends.
 - fixed display modes some more
     Something that I overlooked in Kaz's code. Thanks to Kaz for putting me
     straight! I hope this helps GT NTSC display frames properly ....
     we shall see.
 - fixed problem with DevMode
     Returned initialisation code back to how it was in v1.14, unless you
     have a Banshee in which case a little work-around is required until the
     Banshee Glide3 drivers are sorted!
 - altered colour balance
     I'm messing with the colour balance again! Display has dimmed down again:
     this will allow the menus in Spyro to display the selected item properly
     (it didn't flash in previous beta's, due to colour clamping). This may
     result in another toggle key, to provide a nice, bright display most of
     the time, but if something isn't displaying right you can switch down to
     the more-compatible dimmer display while needed.

 

* ver. 1.0.15 Beta 6 - 29.11.1998
[2 Beta's in one day :)]
 - fixed another crashing bug
     Yep, yet another one squashed! This one was in some old code, that
     pre-dates my work :) Anyway, this lets the demo of MediEvil play, so I'm
     sure it will help other games as well.
 - Messed up menu graphics in GT
     Corrected this. Probably helps other games as well.
 - Messed up dialogue text in MediEvil
     No-one would have seen this yet :) Corrected this. Probably helps other
     games as well.
 - Fixed Screen Scaling
     At last!! My screen resolutions are the same as Kaz's. No more dead area
     at the bottom of the screen!! Thanks to Kaz for his latest code for this.
Known Issues
 - Messed up graphics
     Skeletal menu at the start of MediEvil demo is not displaying right. This
     may affect other games too.
 - Incorrect MDEC display
     I have heard reports of MDEC playing back in white, or really slowly.
     I am investigating this.

 

* ver. 1.0.15 Beta 5 - 29.11.1998
 - fixed frame buffer writes
     Basically re-wrote the way frame buffer writes were handled, plus fixed
     24bit MDEC support (re-wrote that really!). GT MDEC now displays properly
     (no flashing), but it does have rubbish in the "dead" area of the screen.
     This should also fix some crashes, since the previous code was trying to
     draw some "illegal" triangles that would have caused Glide3 to lock-up
     [see previous entries, it's all related!!]. Just to be safe, even the
     screen-writes are now clipped!! :)
Known Issues
 - Messed up menu graphics in GT
     Some menu graphics messed-up (illegible), such as the manufacturer select
     menu. This probably affects other games too.
 - Messed up graphics in the "dead" areas of the screen
     Normally these are CLUTs being uploaded to the screen. Once I sort out
     correct screen scaling, these will all magically go away. At the moment,
     just take this to mean that my framebuffer writing code is working properly!

 

* ver. 1.0.15 Beta 4 - 26.11.1998
 - fixed another crashing bug
     Another update, another crashing bug fixed! :) Hopefully, no more added!
     For those that want to know, it was a problem with Tiles that weren't
     being clipped. Now _everything_ is being clipped, and all seems to be more
     stable. I am sure there are still crashing bugs, so don't be surprised if
     it crashes :( This clears the lock-up in Glide3: I guess it was my fault,
     and I caused Glide3 to get it's knickers in a twist!
Known Issues
 - Flashing Displays
     Yup, some framewrites are not working quite right
 - Messed up graphics in the "dead" areas of the screen
     Normally these are CLUTs being uploaded to the screen. Once I sort out
     correct screen scaling, these will all magically go away. At the moment,
     just take this to mean that my framebuffer writing code is working properly!

 

* ver. 1.0.15 Beta 3 - 24.11.1998
 - fixed some more things to do with frame write uploads
     This clears up a corruption/crashing problem that I located
 - removed some debug code
     This was forcing some default values (like fps counter), plus it prevented
     the frame delay "feature" from working. In fact, it would make some games
     run way too fast. Ooops.
Known Issues
 -   I am trying to track down a lock-up within a Glide3 call. This is totally
     weird, and none of the debugging tools I have is helping :( Basically, this
     is crashing some games and I don't have a clue why!! This coding lark
     isn't fun sometimes :(

 

* ver. 1.0.15 Beta 2 - 19.11.1998
 - fixed some things with frame write uploads
     This should clear up some splash screens. It also now means that some stuff
     gets uploaded (ie. drawn) off the bottom of the screen in the "dead" area.
     Really, that "dead" area shouldn't be there!! It will go once I get the
     display setting stiff working 100% right.
 - removed the display clearing hack
     This was a nice idea, just not fully thought out!! This is what comes of
     coding late into the night!! :)
     I'll resolve the stray drawing another way, for now it just has to stay.

 

* ver. 1.0.15 Beta 1 - 17.11.1998
 - fixed problems with 2D clipping
     There were a couple of issues here. Firstly, I forgot to clip lines :(
     This resulted in repeatative lockups within games. FIXED. Secondly,
     textures were "swimming" on the edge of the screen, where polys were getting
     cropped. That is to say, they were swimming _more_ than normal for a PSX!! :)
     Problem is related to the fact that the PSX doesn't do perspective-correct
     texture mapping. FIXED.
 - got Banshee working!!!
     I've worked around bugs in the current 3dfx Banshee Glide3 driver, so
     hopefully all you Banshee owners will be pleased! :) There are still issues,
     but this will be resolved once 3dfx update the Banshee Glide3 driver, and
     it actually supports what it says it supports!!
 - MDEC support!!!
     Full 16bit and 24bit MDEC support!! It may be slow in some cases :( But I'll
     work on that :)
     This also means that those splash screens and backdrops that were missing
     should now be working!
 - Re-arranged keys
     This was to avoid clashes with other parts of the emulator (mainly the
     function keys), and also to match my Show VRAM to Kaz's :)
 - Altered palette stuff
     Reduced the complexity of my palette caching routines, which hopefully
     should resolve some palette bugs. It may result in slightly slower overall
     speed, but I'll work on that in a different way in the future.
 Things ToDo
 - Find more Speed!!
     Of course! Where I can, I will.
 - Better support for Bilinear filtering
     Maybe. There is a few things I could try. If 3dfx actually put full support
     for their hardware in their drivers, the black edges that appear on alot of
     textures may well vanish (this is a ChromaKey/Bilinear clash that occurs in
     3dfx hardware).
 Known Issues
 - I've got a hack in place to tidy up the bottom of the screen. This may possibly
result in some weirdness in games I haven't been able to test with (something like
a large black square covering part of the screen). It does effect the Tekken3 menu
screen near the bottom, but that is easily outweighed by the reduction in rogue
flashing bits on the screen in other games!!

 

* ver. 1.0.14 - 01.11.1998
 - implemented 2D clipping against the viewport
     This fixes a hack that I had to introduce, so visual quality is up a bit
     It also seems to help speed
 - tried to balance the lighting
     Display is a brighter now, with better balance between textured and
     non-textured surfaces. It's still not perfect, so I may implement a
     toggle-key in a future version
 - loads of behind-the-scenes stuff that you probably won't notice :)
 - maybe fixed problems with Banshee? Nope, it appears not :(
     Damn this is painful ... believe me, I am _trying_ to get my plugin
     to run on the Banshee.
 - PLEASE RE-RUN THE CONFIG SCREEN AND SELECT A RESOLUTION!!!
     Things have changed slighty, so some of the higher resolutions
     will not be on offer. These seemed to be bugged anyway.
 Things ToDo
 - MDEC support!!
     Full support for direct writes to the framebuffer
 - Find more Speed!!
     Of course! Where I can, I will.

 

* ver. 1.0.12 - 29.10.1998
 - added runtime keys as follows
    SHIFT - Show VRAM
       This is really for my benefit :)
       It's not perfect, as it can't handle double buffer too well
 - stream-lined colour support in primitives
 - added better palette caching
 - fixed screen resolutions: Tekken3 now scales correctly
 - cleaned-up init/shutdown code
 Known Issues
 - Doesn't work on Banshee :(
     I am investigating this ....
 - Funny display
     Try lowering the resolution. I believe this to be a Glide3 driver bug,
     so it may be fixed with improved drivers. If I can find a workaround
    (short of disabling problem resolutions), I will incorporate it.
 - Crashes in some games
     This is on the ToDo list, once I am happy the driver is pretty solid.
 Things ToDo
 - MDEC support!!
     Full support for direct writes to the framebuffer
 - Find more Speed!!
     Of course! Where I can, I will.

 

* ver. 1.0.11 - 22.10.1998
 - added runtime keys as follows
    F6 - Enable/Disable Bilinear filtering                    Default: Off
       Looks nice some of the time, but not all of the time.
       Now you can choose when and where.
    F7 - Enable/Disable OnScreen display                      Default: Off
       Mainly for debugging, not too useful.
       I can't say whether the stats are 100% accurate.
    F8 - Enable/Disable texture alpha blending                Default: On
       This setting is for the older 3dfx cards: use this
       to disable alpha blending if you think some textures
       are being made transparent when they should be visible.
       Unfortunately, it will make textures that should be
       transparent visible. Sorry, it's one or the other :(
       For newer 3dfx cards, this key does nothing as it would
       gain you nothing (except an incorrect image).
 - disabled the following configuration settings
    Enable bilinear filtering
    Disable VSync
    Enable OnScreen display
   They are now obsolete: use the runtime keys instead.

 

* ver. 1.0.10 - 21.10.1998
 - first public release

 

10. FAQ

Problem : Emulator crashes when trying to exit (Voodooł/Banshee users)

Solution :

Make sure you are not running the emulator at exactly the same resolution as your desktop. Also, setting your desktop to 32-bit colour may help.

This is a bug in the Voodooł/Banshee drivers.

 

Problem : "Mutual exclusion prohibits this" error message

Solution :

If it happens every time you run PSEmu, then it is probably down to one of the following:-

1) You are running a background task/application that is hogging the Voodoo card. Taskbar applications used to configure Direct3D options can do this. Try stopping any that you have running in turn until you find the one (if there is one) that is interfering.

2) You have an OpenGL plugin in the plugins directory, and you have installed the 3dfx OpenGL driver. Unfortunately, due to the way PSEmu handles plugins (I guess), the OpenGL plugin with 3dfx OpenGL driver hogs the 3dfx card, so my plugin can't use it. Try removing the 3dfx OpenGL driver, and only put it back when you _really_ want to use it. If you are using the OpenGL plugin more than my Glideł plugin, then I need to do some serious work :(

"Mutual exclusion prohibits this" error is a new "feature" of Glideł, designed to prevent program contention. Previous versions of Glide did not handle multi-tasking situations, which 3dfx have tried to address.

If this problem happens occasionally, it could be that a program you have previously run since last rebooting your PC did not close down cleanly, and has left Glide in a bad state. The only way around this is to reboot.

 

Problem : "VXD Error: expected v1.4 found v1.x" error message

Solution :

The file in question is FXMEMMAP.VXD. What the error message means is this: Glide is loading, and looking for the file it needs, FXMEMMAP.VXD. The file it is finding is the wrong version: it is too old. Therefore, Glide can't run :(
This can happen for a number of reasons, but the main reason is due to stray copies of FXMEMMAP.VXD on the computer, that are not getting updated when the main drivers are getting updated.
A common place for an extra copy of FXMEMMAP.VXD is in the WINDOWS directory (it should only be in the WINDOWS\SYSTEM directory, and the WINDOWS directory is checked first in the path). If you have a copy of FXMEMMAP.VXD in the WINDOWS directory, rename it to FXMEMMAP.OLD (you can search your entire hard-disks, and rename all copies that are not in the WINDOWS\SYSTEM directory). Then make sure the latest version of FXMEMMAP.VXD is in the WINDOWS\SYSTEM directory (there should already be a copy of the file there, so make sure it is up-to-date ... the latest version is in the 3dfx driver archive that you installed).

Once you are happy your problems are resolved, you may deleted any FXMEMMAP.OLD files, as they are unnecessary and are just taking up your hard disk space :)

 

Question : Does your plugin run with Glide Wrappers?

Answer :

I DO NOT support "Glide Wrappers", and I ignore all enquiries about them. Please DO NOT contact me about them. Just use another plugin that works with your card.