SnowyMouse / chimera

The update to Halo PC that never was
https://chimera.opencarnage.net
GNU General Public License v3.0
137 stars 26 forks source link

Fix biped spawning on UI maps #103

Closed Sledmine closed 10 months ago

Sledmine commented 11 months ago

It seems there is an issue with Halo (at least with Custom Edition, It might happen on Trial too) when you attempt to spawn a biped object in a map defined as UI the games crashes, I tried several things to make it work but all of them end with a crash due to some kind of validation the game does to biped objects, more specifically an empty EDX pointer in some float comparision instruction is causing the crash.

So in order to be able to use bipeds for another project I am working on I wanted to apply a "fix" to that wierd validation, more like a workaroud tbh, I was not able to fully understand the purpose of that function and why it is crashing due to that empty register but at least I do know that we can bypass the object float validation on the UI safely.

Here is a stock ui.zip with an object pre added to the scenario map to replicate the issue (it happens in any kind of case, different bsp, different camera position, object, etc) It only happens if the object is a biped and it spawns on a UI type map.

Use object_create test to crash the game and get an exception.

And a video showing the workaround fix in action: https://github.com/SnowyMouse/chimera/assets/40512223/d08cc914-770b-41f9-ada8-5186a440cdbb

I confirmed fix gets reverted when you are not in a UI map type anymore so it should be safe, let me know your toughts :)

MangoFizz commented 10 months ago

Okay that's definitely weird. Nice work!