Stereochild: Battlefront has always been one of my favourite games, and I was so excited when it was re-released on Steam and GoG. But it had certain problems back then, so I decided to postpone the purchase. According to the forums, the first update in 2019 fixed some of those problems while adding new ones. Now the second update, almost a year later, does the same. It really pains me to see this gem in such sad state.
The first update was basically original 1.2 (the same as retail) with wimm wrapper dll that was doing mostly 2 things:
1. Checking one of the current resolution's height values and overriding it with 4:3 aspect equivalent
2. Hooking into IDirect3DDevice9::Present and delaying it to limit the framerate to 60 (except I have some concerns that it was doing it incorrectly, as in the calculation function seemed incorrect and actually limit fps to something about 100) - this was done to work around the physics glitches with vehicles.
I did however have some serious qualms with how the wrapper was built, due to the way it was obtaining process handles and how it was writing and reading from process.
Stereochild: Ok, enough nostalgic grumbling. My questions are:
- Does this update fix ALL the previous problems, like stretched pictire/HUD, wrong positioning of soldier models on the class selection screen, bugged crouching, vehicle flipping, etc.?
The changes are far more significant this time around.
- Menu resolution does change together with settings set in options (it's no longer locked at 800x600), although the menu elements still seem stretched from 4:3 aspect ratio (not completely sure about buttons, but background certainly is).
- The loading UI is sort of scaled now - it's pillarboxed on resolutions wider than 4:3, although I am not entirely sure if scaling is done fully right there (but that's a minor thing).
- Character selection and spawn point selection seem to be scaled correctly now and so seems most HUD elements.
- Crouching doesn't seem to work at all.
- Vehicle flipping seems to be sort of fix... I think.
Stereochild: - Has anyone tried to modify the draw distance from the config?
Config file (and rest of your profile) is stored in binary file. Changing bytes related to LOD distance (cause that seems to be mostly an issue) causes an error when loading profile.
-- EDIT--
So I was playing with hacking it etc. for a bit and I managed to drastically extend it, but it's clear that pure LOD is not an issue. At this point, I am pretty sure, the issue is that for whatever reason the the low poly terrain is just not being rendered at all. The reason is - you can clearly see, that the chunk of terrain in 1.3.5 is missing from the point, where in 1.2 it transitions to low poly terrain (or should I say lower poly, since it's always low poly mesh). Other than that, I am leaning even more towards the conclusion this is proper recompiled exe, as the functions related to LOD now use XMM registers, when they originally were using float stack (accessible via fld/fldi instructions).