After the enjoyable Terminator game from Teyon, the announcement of RoboCop from the same developer made it one of my most anticipated games. Like many, I really liked the film and have watched it multiple times. It deserved a good game dedicated to it.
Fixing the game would become a real challenge taking every hour with few distractions over the course of three days. There's a lot to talk about, so the post will be long. I'm separating it into sections but feel free to just download the solution.
When I got access to the beta months ago, my first impression in relation to ultrawide was like that of other people: it must be vert-!
Unlike the average player, I had the knowledge of having fixed Terminator Resistance from the same developer, so I knew they probably used the same approach again. Lo and behold, once you ensure that your resolution is selected in the settings and touch the FOV slider before you compare to 16:9, you see that the view is actually hor+ and the reason it appears otherwise is that the game carries over the increased FOV of 21:9 to 16:9 unless the FOV slider is manipulated, so you get the same max FOV of 116 from 21:9 rather than the native 100 of 16:9. One less issue. Moving on!
Another issue was the vertical reduction of the weapon model, which was not affected by the slider, resembling the same problem of The Outer Worlds and other games. I personally submitted bug reports on this to the dev from the beta and from playing the demo later.
Using the demo, I also had a brief look into the weapon issue but found no quick solution and chose to postpone the work, guided by the ideas expressed in my post on demo versions. At the same time, Lyall was putting in more effort and had some findings that he would share with me.
Once the full game came out, it was clear that the developer hasn't fixed the weapon scaling issue. I also got two personal requests for addressing the issues with the game. I didn't want to take credit for Lyall's findings, so directed the people to Lyall, but he didn't own the game.
At first I was hopeful because Lyall's findings showed a lot of promise. Then as I dug deeper, I faced many issues with the game.
My first goal was to try to optimize his approach that involved a very long offset (in theory, it was unlikely to survive game updates), but initially I was getting nowhere.
Then I worked on creating a script for FWS but found that the app doesn't support some basic assembly instructions. I may have figured out a workaround, but as usual, the app was as much of an obstacle as the game itself. It also made me realize that targeting the root values found by Lyall was hardly an option, as it creates an endless loop. You write a new FOV value and it reads that, then writes to it again and again. Writing once is possible, but that would break things if the player runs the game at 16:9, then switches to 21:9, whereas I prefer my fixes to scale.
After a full day of uninterrupted work on the game and a night of sleep, I went back to my original experiments that relied on conditional checks to weed out the target FOV values in the more immediate functions. This was quite problematic as well, because one of the values from Lyall was used not only for the weapon but also at the menus. I had to code in a bunch of questionable checks and inject more to work around this, making the weapon adjustment part of the fix rather unreliable until later.
As I prepared screenshots for this post, by accident I discovered that the ADS view is vertically reduced even when the weapon model is corrected. This took me on another trip of going through the game code to isolate the ADS FOV from the natively corrected main FOV.
It's around this time that Para on the WSGF Discord reported that some dialogue scenes in the game have black bars, so it was another issue to address. Thankfully, I was sent the save files, making it easier to get to the affected area, remove the black bars, and correct that FOV as well.
As Para tested the fix for me, multiple issues popped up. For one, as I had expected, the weapon correction was extremely unreliable and breaking many other unrelated things, be it the map, terminal access, or what have you.
On the third day, I had two goals: to make the weapon fix more reliable and to kill the devs' FOV calculations and replace with my own. The latter was needed because when Para showed me the terminal issue, I noticed that the FOV was also reduced. In other words, by default the game corrects only some things for ultrawide and leaves out quite a few uncorrected.
After some hours on the weapon issue again, I managed to find a location that few values go through, which allowed me to clean up much of my earlier code and make this part of the fix significantly more reliable.
By the evening I managed to locate the devs' functions responsible for correcting the view of the cutscenes and the main view. I got rid of that and replaced with my own code as intended, but this overcompensated at the letterboxed cutscenes, as they relied on a different aspect ratio and thus needed a different approach.
The hours from then were spent on ensuring that my correction is smart and that the vertical FOV of every scene matches 16:9.
The switch to global FOV correction also addressed the rare issue of the FOV going crazy when shooting, which was the only outstanding bug reported by Para. In their own words on the last version, "played few hours with the fix and everything seems now fixed".
Overall, the complexity of the work seems to come close only to my Chained Echoes and We Are OFK solutions, though many of the scene-specific overrides were replaced by my global FOV solution in the final version. Did I say my old PC can barely run the game? So it was in the name of science, I guess!