VOGONS

Common searches


Choppiness on Blood

Topic actions

First post, by switchblade

User metadata
Rank Newbie
Rank
Newbie

I have Blood with Plasma Pak installed and patched, and I've tried it only for it to lag like hell. I've even have the lastest Catalyst drivers 5.7 for my Radeon X700 PRO, and that still doesn't get rid of it, although I don't know if I have the right OpenGl32.dll file.

Anyway to stop the lag, without having to worsen quality or anything? Thx.

Reply 1 of 26, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

The right opengl32? There should only be one and it should be in your system32 directory. You shouldn't be worried about tho since it's the OGL ICD that comes with your vid card drivers that you'll need to be using. Hopefully your not playing Blood in software OGL.

How To Ask Questions The Smart Way
Make your games work offline

Reply 2 of 26, by Glidos

User metadata
Rank l33t
Rank
l33t

Games that use palette tricks are hopeless on ATI cards because they don't implement glColorTableEXT. You can try setting IgnorePaletteChanges to 1 in OpenGLid.INI, but that will lose the lighting effects. Its a real pain. Not sure what to do. I think I could implement it with pixel shaders, but from what I can see, if you use pixel shaders for anything, you have to use them for everything, so its a big big change.

Reply 3 of 26, by Gezzdt

User metadata
Rank Newbie
Rank
Newbie

Hi! I want to play Blood with 3DFX patch, Glidos 1.32, VDMsound 2.1.0, Geforce 6800GT, ForceWare 77.76 (NGO), AthlonXP 2800+ (OC 2,4GHz). I can start and play Blood but its real slow. When i look at a wall or the ground its smooth. Without Glidos it runs normal.

Reply 6 of 26, by Glidos

User metadata
Rank l33t
Rank
l33t

Damn! It is something I want to sort out at some stage, but its complicated.

What I think I need as a starting point is a pixel shader program that has exactly the same effect as not using a shader program. So it must perform all the functions of the stage it replaces.

At least, that's what I think I need. Only briefly looked at shaders.

Reply 7 of 26, by Guest

User metadata

I don't think that pixel shaders help there (but maybe I'm wrong).
I know, there are instruction(s) for texture lookup operations, but, what if bilinear interpolation is applied to the texture?
So that, there is a 256x1 texture containig the palette itself, and there is a texture in some kind of textureformat containing the palette index values in one of its components. And then, using the pixels of the "paletted" texture as direct positions in the "palette" texture would work, I think. But, if bilinear filtering is on, then the interpolation would be applied on the palette indices themself, not on the lookup values from the "palette" texture. There are problems with the order of operations.
(Or, you should read all of the 4 pixels "rounding" a given position, then make a lookup for all of them, and then do the interpolation "by hand". Could it be done in a pixel shader at an acceptable speed? It seems very complitated to me.)

Reply 8 of 26, by switchblade

User metadata
Rank Newbie
Rank
Newbie

Just keep spamming Monolith's e-mail inbox, forcing them to release the source code for Blood already, then they probably might listen... 😏

P.S: So far, I've only tried chaning priorities, and tried other programs like "dgVoodoo" or whatever it's called and others, looks like they won't run properly as well.

Reply 11 of 26, by Glidos

User metadata
Rank l33t
Rank
l33t

Yeah dgVoodoo uses DirectX. I assume that provides some palette support.

You still get all the textures in strips with dgVoodoo though, don't you? In Glidos, I collect all the timy strips that the buid engine produces and coalesce them into much bigger polygons so that I can obtain proper bilinear interpolation. Probably the most complicated part of Glidos, put in only for Blood.

Reply 12 of 26, by Glidos

User metadata
Rank l33t
Rank
l33t
Anonymous wrote:

I don't think that pixel shaders help there (but maybe I'm wrong).

You may well be right. It was a while ago I looked into this, and I think I can remember being worried about the interpolation thing. I remember thinking it was solvable, but might have been overoptimistic.

Reply 14 of 26, by Glidos

User metadata
Rank l33t
Rank
l33t

The CPU usage is because Glidos raises the thread priority of the game. Its all part of getting the game to at least try to run at correct speed, which is quite difficult to achieve under XP.

The business about being fine if you are looking at a wall or the floor all makes sense. The palette tricks are used to darken things in the distance, so if those aren't in view, there's no problem.

This is something I want to sort out, especially as all modern cards have dropped the palettised texture extension. What I might have a go at is recognising that a palette is being set to const + factor * old_palette. That way I could leave the palette unchanged, and have glide apply the factor and constant. That is what the game should be doing really. Some games don't simply because they were first written for software rendering.

Reply 18 of 26, by Glidos

User metadata
Rank l33t
Rank
l33t

Sorry, it'll take ages.... uh no, I've done it! 😁

For a card with no palette support, OpenGLide builds an OpenGL texture for each palette. That works hopelessly for Red Baron 3D (the game for which I introduced all this stuff) because it generates loads of different palettes, but Blood looks to build only a few, so I was a bit confused as to why it wasn't working. When I ran it through the debugger, I found that Blood uses Alpha/Palette textures; for those OpenGLide had the "texture per palette" thing disabled. I've enabled it and it all seems to run at an acceptable speed - here at least.

Here's a new version of Glide2x.dll to pop into your Glidos folder.

Attachments

  • Filename
    Glide2x.zip
    File size
    34.47 KiB
    Downloads
    429 downloads
    File comment
    New version of OpenGLide which handles palette changes better
    File license
    Fair use/fair dealing exception