Friday, November 10, 2017

Witcher 3 Triple Monitor Cutscene Fix

So I've been playing The Witcher 3 a lot lately, and I've set up a triple monitor Nvidia Surround system on my computer. This means I can play the game and have it span across all three of my monitors for a peripheral vision level of widescreen.

Problem is, however, that the in-game cutscenes block out my left and right monitors. This is most likely put in place because the developers wanted to hide various things off-screen, since the game was not designed with this level of widescreen in mind.

But whether I see characters in a funky T-pose that are supposed to be off-screen, or people appearing and disappearing suddenly as they're supposed to walk into the scene, etc, I still want to see these cutscenes span all three of my monitors!

So I looked around everywhere online, and all I could find was a hex fix for the game's exe file to make the cutscenes span across a 21:9 aspect ratio. My system is much wider than that, but this at least gave me a basis on where to start. This was a major clue, so all I needed to figure out was how to modify the game exe's hex data myself.

I downloaded a piece of software called HxD, which allows me to access and easily modify the hex data of exe files, and many other things. I loaded in the game's exe file and, with the help of some online forums, discovered that people were creating the hex hack by changing a particular set of hex values within the exe. By default, a game running with a regular 16:9 display should have these hex values in this order within the exe file:

39 8E E3 3F

So the fix they came up with was to replace that sequence with this one, which is supposed to span the cutscenes across a 21:9 display:

8A E3 18 40

I have no idea what these numbers represent, so I did some more digging and discovered that people found these numbers by converting the existing hex values into a "floating point" value. I still have no bloody idea what's going on, so I figure I'll look up some floating point to hex conversion charts online and see if I can piece something together to make this make sense.

Having the knowledge that the floating point value people were using for the 21:9 ratio was 2.38888, I figured if I can convert that backwards and get the same hex value they did, I'd have figured out how to convert these numbers back and forth.

I tried it and got a completely different series of numbers, so I tried it in reverse, to see what floating point number I would get from the hex. Again, totally different numbers.

So clearly this wasn't right, and I still had no idea what I was doing. So I began to think outside of the box, and I looked up the exact resolution I'm running on these three monitors, 5760x1080, to see if anyone else has messed with converting this into a floating point or hex value. Turns out some crazy group of gamers did something similar with Dark Souls. But unfortunately, their hex values somehow made even less sense within this context, so that didn't really lead me anywhere.

I took the hex values I had for The Witcher 3 apart, converting them into decimal and back in different ways to see if any of this made any sense in relation to my actual horizontal resolution. It didn't.

Having messed with the hex values a few times and tested them in-game at this point, I had to find those hex values by looking up the unchanging values that immediately followed it using the CTRL-F find command:

55 55 15 40

In a final moment of almost giving up, I realized that really, what I have to do is come up with something somewhere in the general ballpark of what I need. This hex value probably just needs to be bigger, because it's clearly representing only the horizontal section of the cutscene blocks. So I went back to that floating point conversion website and played around with turning the floating point numbers into hex values until I found one that I thought "looked right". Still, I barely knew what I was doing, and was going purely off of instinct. But I figured I backed up my exe file a long time ago, so what's the harm in giving this a shot? What's the worst that could happen?

So I changed the hex values in question within the exe file to:

40 18 E3 69

I figured this might stretch the black bars off my left and right screens a little more, giving me an idea of how much further I'd need to raise this number. I booted the game up to give it a test and entered into a cutscene.

The blackness that blocked most of the cutscene visuals from my left and right screens was completely gone, and the in-game performance wasn't affected in the slightest. It accomplished exactly what I was trying to do, and it happened on accident.

So yeah. I had no idea what I was doing, but hey, whatever it did certainly worked. And this is why I always tell people to just go for it. Think about it. Whether you know what you're doing or not, take advantage of Google. Ask questions. Take advantage of our ability to deduce and reason. That's how I've gotten this far!

The floating point to hex converter I used was from this website:
https://gregstoll.dyndns.org/~gregstoll/floattohex/
I want to give some credit to the people on this forum page, because this particular page helped me immensely:
http://www.wsgf.org/forums/viewtopic.php?p=160343

No comments:

Post a Comment