VOGONS


Halo CE problems

Topic actions

First post, by Cambid

User metadata
Rank Newbie
Rank
Newbie

Halo: CE (the 2003 version). The heat meters on the plasma pistol and plasma rifle do not draw since 2.84 and all subsequent version. It worked on 2.83.2 and prior versions.
2.86.1

The attachment pp1.png is no longer available

2.83.2

The attachment pp2png.png is no longer available

Also the glass shader in the game uses the wrong sampler type for the bump cube map so depending on the d3d9 implementation, the bump effect will fail to render. Dgvoodoo used to account for this but no longer does as of v2.8
2.86.1

The attachment glass1.png is no longer available

2.79.3

The attachment glass2.png is no longer available

Reply 1 of 19, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

because Halo CE (2003) must be played with Chimera and CEnshine to get the fixed shaders of the OG XBOX version (PC version shaders are just wrong since the release, you can get the correct ones in the MCC version).

https://github.com/SnowyMouse/chimera
https://github.com/Sledmine/censhine

But yes, they're still wrong with the lastest version of dgvoodoo2 (no colour gradient in Covenant plasma weapons but I have the base indicator)

Reply 2 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie

Yes the glass can be fixed by actually fixing the shader (though CEnshine on custom edition or straight up hex editing the fx.bin on the retail version to use the correct sampler type). It's just that Dgvoodoo used to account for the stock shader being wrong but now doesn't. Not really a big deal though.

Reply 3 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Cambid wrote on 2025-04-21, 11:59:

Yes the glass can be fixed by actually fixing the shader (though CEnshine on custom edition or straight up hex editing the fx.bin on the retail version to use the correct sampler type). It's just that Dgvoodoo used to account for the stock shader being wrong but now doesn't. Not really a big deal though.

It's because of this (at least I guess):
F.E.A.R - Two remaining issues (well three)

I changed the mismatching sampler behavior for the sake of FEAR, and to match the native D3D9 driver implementations (I looked at various vendors). And that fix went into v2.8.

Btw, are there other problems with dgVodoo besides the indicator and this sampler-mismatch thing?
Frankly, I'm getting lost in this Halo shader-mess. I don't even understand why there is no only 1 fix for the game, containing the fixed shader binaries with the modified sampler types (independently on D3D9 implementations). Maybe I should have made a patch for it myself.
Also, I suppose the game appeared correctly with the contemporary GPU it was written for, so if I knew what that hw was (XBox ?), I could put back the old sampler-mismatch implementation for one/some of the virtual cards.

Reply 4 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2025-04-22, 07:12:

Btw, are there other problems with dgVodoo besides the indicator and this sampler-mismatch thing?

Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fighting is noticably worse compared to DXVK and native AMD D3d9, but the same as native Nvidia D3D9. Specifically refering to these light strips in the repeated rooms on Assault on the Control Room and Two Betrayals.

The attachment z-fighting.png is no longer available

Halo for PC is early Direct3D 9 so Geforce FX/Radeon 9000 would have been what it was made for.

Most of the stock shaders in Halo PC are broken in some way or another (ie they're massive downgrades compared to the xbox version) due to the port being rushed and half-arsed. The MCC version had most of the regressions fixed a few years ago in the D3d11 renderer it uses. Conveniently, 343i released the fixed HLSL shader code for all the shaders as part of the official mod tools. CEnshine is a project that has backported many of those fixed MCC shaders to the old PC version, so things like the glass work properly with that. As such, accounting for the sampler mismatch probably isnt necessary for most use cases anymore. CEnshine is only for custom edition though. The file structure of the shader collections are different to the retail version and noone has bothered to port it. There is ongoing work by a few modders to fix the remaining issues with the custom edition branch of the Halo PC D3D9 renderer including restoring the missing shaders that gearbox stripped from the PC port.

Reply 5 of 19, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

You can play Combat Edition on Custom Edition+Chrimera just copying the map files, it's why the definitive solution is Halo Custom Edition + Chimera + CEnshine + Combat Evolved maps 😁
Halo PC player since BEFORE the release here (http://www.marketpress.info/notiziario_det.php?art=226964)

My setup is:
*Halo Custom Edition + Chimera + CEnshine + Combat Evolved maps ( Refined project: https://www.proxeninc.net/Halo/Refined/Refine … n_en_v4beta2.7z )
*DGVoodoo2
*Dsound+OpenAL Soft to regain EAX ( https://github.com/kcat/dsoal/releases/tag/r648 )
*Special K to manage all the rest (VRR, monitor presentation and, yes, HDR Output too)

Actually the only problem for me are the plasma weapons heat indicators (they work but no colour gradient)

Reply 6 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Cambid wrote on 2025-04-22, 11:39:
Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fi […]
Show full quote
Dege wrote on 2025-04-22, 07:12:

Btw, are there other problems with dgVodoo besides the indicator and this sampler-mismatch thing?

Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fighting is noticably worse compared to DXVK and native AMD D3d9, but the same as native Nvidia D3D9. Specifically refering to these light strips in the repeated rooms on Assault on the Control Room and Two Betrayals.

The attachment z-fighting.png is no longer available

Halo for PC is early Direct3D 9 so Geforce FX/Radeon 9000 would have been what it was made for.

Most of the stock shaders in Halo PC are broken in some way or another (ie they're massive downgrades compared to the xbox version) due to the port being rushed and half-arsed. The MCC version had most of the regressions fixed a few years ago in the D3d11 renderer it uses. Conveniently, 343i released the fixed HLSL shader code for all the shaders as part of the official mod tools. CEnshine is a project that has backported many of those fixed MCC shaders to the old PC version, so things like the glass work properly with that. As such, accounting for the sampler mismatch probably isnt necessary for most use cases anymore. CEnshine is only for custom edition though. The file structure of the shader collections are different to the retail version and noone has bothered to port it. There is ongoing work by a few modders to fix the remaining issues with the custom edition branch of the Halo PC D3D9 renderer including restoring the missing shaders that gearbox stripped from the PC port.

Thanks for the information!

I created a quick fix. The shader code translator is fixed for the plasma pistol and I modified the behavior of the GF 5700 Ultra virtual card to ignore the texture-sampler mismatch (the old behavior from 2.7.x).
This card supports shaders only up to sm2.x so early d3d9 games can rely on this behavior if needed.

I must admit that I couldn't test it because I made it in a rush:
http://dege.fw.hu/temp/dgVoodoo2_86_1_shader_fix.zip

Edit: btw, I couldn't reproduce the level loading crash

Reply 7 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2025-04-22, 19:49:
Thanks for the information! […]
Show full quote
Cambid wrote on 2025-04-22, 11:39:
Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fi […]
Show full quote
Dege wrote on 2025-04-22, 07:12:

Btw, are there other problems with dgVodoo besides the indicator and this sampler-mismatch thing?

Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fighting is noticably worse compared to DXVK and native AMD D3d9, but the same as native Nvidia D3D9. Specifically refering to these light strips in the repeated rooms on Assault on the Control Room and Two Betrayals.

The attachment z-fighting.png is no longer available

Halo for PC is early Direct3D 9 so Geforce FX/Radeon 9000 would have been what it was made for.

Most of the stock shaders in Halo PC are broken in some way or another (ie they're massive downgrades compared to the xbox version) due to the port being rushed and half-arsed. The MCC version had most of the regressions fixed a few years ago in the D3d11 renderer it uses. Conveniently, 343i released the fixed HLSL shader code for all the shaders as part of the official mod tools. CEnshine is a project that has backported many of those fixed MCC shaders to the old PC version, so things like the glass work properly with that. As such, accounting for the sampler mismatch probably isnt necessary for most use cases anymore. CEnshine is only for custom edition though. The file structure of the shader collections are different to the retail version and noone has bothered to port it. There is ongoing work by a few modders to fix the remaining issues with the custom edition branch of the Halo PC D3D9 renderer including restoring the missing shaders that gearbox stripped from the PC port.

Thanks for the information!

I created a quick fix. The shader code translator is fixed for the plasma pistol and I modified the behavior of the GF 5700 Ultra virtual card to ignore the texture-sampler mismatch (the old behavior from 2.7.x).
This card supports shaders only up to sm2.x so early d3d9 games can rely on this behavior if needed.

I must admit that I couldn't test it because I made it in a rush:
http://dege.fw.hu/temp/dgVoodoo2_86_1_shader_fix.zip

Edit: btw, I couldn't reproduce the level loading crash

Many thanks. The heat meter is fixed. The glass is still broken with the 5700 Ultra virtual card though.

Hmm maybe the d3d12 crash thing is an AMD driver problem.

Reply 8 of 19, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

Intel too.
But using SpecialK for the HDR10 Output D3D11 is the way.

Reply 9 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Cambid wrote on 2025-04-23, 01:25:
Dege wrote on 2025-04-22, 19:49:
Thanks for the information! […]
Show full quote
Cambid wrote on 2025-04-22, 11:39:
Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fi […]
Show full quote

Apart from those, I've noticed the D3D12 output API seg faults on loading a level. D3D11 works fine. Another small quirk is Z-fighting is noticably worse compared to DXVK and native AMD D3d9, but the same as native Nvidia D3D9. Specifically refering to these light strips in the repeated rooms on Assault on the Control Room and Two Betrayals.

The attachment z-fighting.png is no longer available

Halo for PC is early Direct3D 9 so Geforce FX/Radeon 9000 would have been what it was made for.

Most of the stock shaders in Halo PC are broken in some way or another (ie they're massive downgrades compared to the xbox version) due to the port being rushed and half-arsed. The MCC version had most of the regressions fixed a few years ago in the D3d11 renderer it uses. Conveniently, 343i released the fixed HLSL shader code for all the shaders as part of the official mod tools. CEnshine is a project that has backported many of those fixed MCC shaders to the old PC version, so things like the glass work properly with that. As such, accounting for the sampler mismatch probably isnt necessary for most use cases anymore. CEnshine is only for custom edition though. The file structure of the shader collections are different to the retail version and noone has bothered to port it. There is ongoing work by a few modders to fix the remaining issues with the custom edition branch of the Halo PC D3D9 renderer including restoring the missing shaders that gearbox stripped from the PC port.

Thanks for the information!

I created a quick fix. The shader code translator is fixed for the plasma pistol and I modified the behavior of the GF 5700 Ultra virtual card to ignore the texture-sampler mismatch (the old behavior from 2.7.x).
This card supports shaders only up to sm2.x so early d3d9 games can rely on this behavior if needed.

I must admit that I couldn't test it because I made it in a rush:
http://dege.fw.hu/temp/dgVoodoo2_86_1_shader_fix.zip

Edit: btw, I couldn't reproduce the level loading crash

Many thanks. The heat meter is fixed. The glass is still broken with the 5700 Ultra virtual card though.

Hmm maybe the d3d12 crash thing is an AMD driver problem.

Thanks!
I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated the .zip file so now the GF5700 should work.

However, I looked into the old conversations about this problem and found this:
Re: Halo Combat Evolved

I don't know if it's true, but I'm unsure if restoring the old behavior for the sampler-textype mismatch in any form is a right approach.

Reply 10 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2025-04-23, 17:26:
Thanks! I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated th […]
Show full quote
Cambid wrote on 2025-04-23, 01:25:
Dege wrote on 2025-04-22, 19:49:
Thanks for the information! […]
Show full quote

Thanks for the information!

I created a quick fix. The shader code translator is fixed for the plasma pistol and I modified the behavior of the GF 5700 Ultra virtual card to ignore the texture-sampler mismatch (the old behavior from 2.7.x).
This card supports shaders only up to sm2.x so early d3d9 games can rely on this behavior if needed.

I must admit that I couldn't test it because I made it in a rush:
http://dege.fw.hu/temp/dgVoodoo2_86_1_shader_fix.zip

Edit: btw, I couldn't reproduce the level loading crash

Many thanks. The heat meter is fixed. The glass is still broken with the 5700 Ultra virtual card though.

Hmm maybe the d3d12 crash thing is an AMD driver problem.

Thanks!
I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated the .zip file so now the GF5700 should work.

However, I looked into the old conversations about this problem and found this:
Re: Halo Combat Evolved

I don't know if it's true, but I'm unsure if restoring the old behavior for the sampler-textype mismatch in any form is a right approach.

Confirmed working wiht GF5700 now.

I can't say for sure how it behaves on a real GF5700 or the radeon equivilents of the time as I don't have one or have seen any gameplay footage. But I did get out an old 2006 era WinXP laptop that I've got which has a quadro NVS 110M GPU (Geforce 7 generation so 2005). The sampler mismatch is handled on that.

The attachment nvs110.png is no longer available

I also looked on another old laptop which has an Intel HD 4000 iGPU (2013) and the glass also works on that.

Reply 11 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie

Also the Z-fighting on the lightstrips was significantly less apparent on the old XP laptop.

Reply 12 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Cambid wrote on 2025-04-23, 21:59:
Confirmed working wiht GF5700 now. […]
Show full quote
Dege wrote on 2025-04-23, 17:26:
Thanks! I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated th […]
Show full quote
Cambid wrote on 2025-04-23, 01:25:

Many thanks. The heat meter is fixed. The glass is still broken with the 5700 Ultra virtual card though.

Hmm maybe the d3d12 crash thing is an AMD driver problem.

Thanks!
I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated the .zip file so now the GF5700 should work.

However, I looked into the old conversations about this problem and found this:
Re: Halo Combat Evolved

I don't know if it's true, but I'm unsure if restoring the old behavior for the sampler-textype mismatch in any form is a right approach.

Confirmed working wiht GF5700 now.

I can't say for sure how it behaves on a real GF5700 or the radeon equivilents of the time as I don't have one or have seen any gameplay footage. But I did get out an old 2006 era WinXP laptop that I've got which has a quadro NVS 110M GPU (Geforce 7 generation so 2005). The sampler mismatch is handled on that.

The attachment nvs110.png is no longer available

I also looked on another old laptop which has an Intel HD 4000 iGPU (2013) and the glass also works on that.

Oh, cool! Thanks for checking it out! Then I'll leave this feature in the code.

I'll look at the depth bias, now I remember that I compared it to my native NV rendering, back when I saw those light strips z-fighting.

Reply 13 of 19, by dr.zeissler

User metadata
Rank l33t
Rank
l33t

The shaders are broken on several Mac-versions too.

Retro-Gamer 😀 ...on different machines

Reply 14 of 19, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

GeForce FX 5700 issue (not present in the base preset) with the Bandit airship:

haloce-2025-04-25-20-10-36-641.jpg

Same for the jackal's shield

Reply 15 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie
lowenz wrote on 2025-04-25, 18:14:
GeForce FX 5700 issue (not present in the base preset) with the Bandit airship: […]
Show full quote

GeForce FX 5700 issue (not present in the base preset) with the Bandit airship:

haloce-2025-04-25-20-10-36-641.jpg

Same for the jackal's shield

That would be because of the refined maps. To try and emulate shader_transparent_generic, large animated textures are used which are probably exceeding the texture size limit. I guess the texture size limit for GF5700 is set somewhat lower than Internal3D.

Reply 16 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Cambid wrote on 2025-04-26, 03:49:
lowenz wrote on 2025-04-25, 18:14:
GeForce FX 5700 issue (not present in the base preset) with the Bandit airship: […]
Show full quote

GeForce FX 5700 issue (not present in the base preset) with the Bandit airship:

haloce-2025-04-25-20-10-36-641.jpg

Same for the jackal's shield

That would be because of the refined maps. To try and emulate shader_transparent_generic, large animated textures are used which are probably exceeding the texture size limit. I guess the texture size limit for GF5700 is set somewhat lower than Internal3D.

Yes, the max texture size is 4K x 4K for the GF5700.

Reply 17 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2025-04-24, 13:31:
Cambid wrote on 2025-04-23, 21:59:
Confirmed working wiht GF5700 now. […]
Show full quote
Dege wrote on 2025-04-23, 17:26:
Thanks! I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated th […]
Show full quote

Thanks!
I cannot test the glass textures in the game because I don't have a vanilla installation at the moment, but I updated the .zip file so now the GF5700 should work.

However, I looked into the old conversations about this problem and found this:
Re: Halo Combat Evolved

I don't know if it's true, but I'm unsure if restoring the old behavior for the sampler-textype mismatch in any form is a right approach.

Confirmed working wiht GF5700 now.

I can't say for sure how it behaves on a real GF5700 or the radeon equivilents of the time as I don't have one or have seen any gameplay footage. But I did get out an old 2006 era WinXP laptop that I've got which has a quadro NVS 110M GPU (Geforce 7 generation so 2005). The sampler mismatch is handled on that.

The attachment nvs110.png is no longer available

I also looked on another old laptop which has an Intel HD 4000 iGPU (2013) and the glass also works on that.

Oh, cool! Thanks for checking it out! Then I'll leave this feature in the code.

I'll look at the depth bias, now I remember that I compared it to my native NV rendering, back when I saw those light strips z-fighting.

I looked at depth bias but the light strips is bad in the same way with all 3 vendors (NV, AMD, Intel):
Maybe the old GPU's had a little different calculations for depth bias or didn't do it according to the DX9 specs?

Reply 18 of 19, by Cambid

User metadata
Rank Newbie
Rank
Newbie

It's still bad with current AMD but marginally less bad than dgvoodoo. This particular light strip on TB/AotCR shows it pretty clearly.

The attachment zfightpng.png is no longer available

Yeah dunno what the deal is with the old gpu but the z-fighting significantly less than any of the modern implementations. The game has always had various issues with d3d9 implementations. I remember probably 10 years ago, glass reflections would flicker like crazy on AMD.

Reply 19 of 19, by Dege

User metadata
Rank l33t
Rank
l33t
Cambid wrote on 2025-04-27, 20:12:

Yeah dunno what the deal is with the old gpu but the z-fighting significantly less than any of the modern implementations. The game has always had various issues with d3d9 implementations. I remember probably 10 years ago, glass reflections would flicker like crazy on AMD.

My only guess is the lightstrip polygons are not exactly coplanar with walls/ceils, and old hw with vertex shader 1.x/2.x support didn't have full IEEE-752 compliant floating point support unlike modern hw with at least sm4.x support. So, old hw must have produced larger precision errors and due to that, z-fighting was mostly avoided. And top of that, the game was played at lower resolution where the z-precision errors less likely appear, especially with triangle interpolators with larger imprecision compared to modern hw.

But it's only a speculation. TBH, I don't know what to do with this phenomenon.