Thursday, August 21, 2014

Titanfall higher framerate than your refresh rate

So firstly yes I know framerate != refresh rate... that's a deeper conversation that I'm not going to get into.

Special Thanks to: Kiwi-B3ar for originally discovering that running Titanfall on another monitor with a higher refresh rate (like a CRT) and dragging it over to another monitor it maintains the higher framerate, even after messing with the video settings... A second thank you to him, for discovering as well if you change your resolution, launch the game during the countdown timer if the video settings are okay, it will automatically reset, but Titanfall will still have those hertz value set (will make sense later).

So Respawn of course took a long time to get the unlocked framerates going, and not only that get the kinks worked out at running at a faster framerate. I'm also going to start off with a few warnings I've seen from some other blogs and of course the obvious.

Warnings and needs to know:.
  •  Mileage may vary, this method worked for me, doesn't mean it will work for you.
  • I bounced between a couple different methods while working on this solution, my methodology explained.
  •  Framerates higher than your refresh rate can cause abnormalities such as screen tearing. 
  •  Apparently in Titanfall there is a direct correlation between framerate and mouse sensitivity, this can drive a person insane if you are not careful
  • So if you want to maintain the higher framerates to avoid the mouse sensitivity changes lower your settings!
  • Titanfall still maxes at 144FPS
Why you would do this:
  • Some people find 60FPS is not high enough for responsive gameplay, especially for a fast game like Titanfall, or any mouse input game due to the accuracy of a mouse vs let's say a controller.
  • Bypass something because you can? You can't tell me what framerate to run the game at!

What you need for this tutorial: 
(once you read this you may take a different approach)

Let's get started:

  1. I'm going to go through how I did it on my system.
  2. Launch the NVIDIA Control Panel (Right click your desktop > NVIDIA Control Panel) (nvidia steps end at step#9, AMD users, Intel, or CRU users can skip to step#10)
  3. Under the "Display" section you should see "Change resolution"
  4. Once there, select the display that is your primary monitor (Titanfall defaults to this screen)
  5. Then Choose the "Customize..." button towards the bottom of the window (note if you clicked anything the button might disappear, just apply your changes and it should re-appear).
  6. A window should pop-up that will allow you to check a box for "Enable resolutions not exposed by the display" and then click "Create Custom Resolution..."
  7. Simply use your same resolution with your desired new framerate, since Titanfall maxes out at 144, I put 144.
  8. When you click "Test" if your monitor doesn't support that resolution it's either going to go black or do funky things, don't worry that's why we're here. It's going to have a pop-up more than likely you can't see asking if you can see it, counting down from I believe 15 seconds. Press the "Y" key for yes.. I believe "space" or "enter" will also work here.
  9. It will except the changes and go back to your standard resolution, Click "OK" and you should have a new custom resolution, this is needed so MultiRes doesn't flip out and tell you the inputs you are giving it are not supported.
  10. Now onto MultiRes, if you only have one monitor skip to step #16
  11. Let's determine what monitor your primary is, believe it or not it's not always listed as #1 in MultiRes.
  12. When you launch MultiRes your taskbar should get 3 little monitor icons, hovering over each one gives you information like their current resolution, and graphics card.
  13. You should notice each icon has a distinct number, if your monitors have different resolutions I'm sure you already figured out which one is your main.
  14. Click an icon, go up to refresh rate and you should see your new entry.
  15. Mine happen to be 1... remember what number it's going to be.
  16. Now the purpose of multires is so we can write a batch file that launches Titanfall making this a much smoother experience than having to drag it from a CRT or other monitor with higher refresh rates, or change to the custom resolution, launch titanfall blind, and wait for it to time out and load the old resolution.
  17. My Bat filestart /D "C:\Program Files (x86)\MultiRes\" MultiRes.exe /1:2560,1440,32,144 /exit
    start /D "E:\Program Files (x86)\Origin Games\Titanfall\" Titanfall.exe
    TIMEOUT /T 5
    :search
    tasklist|find "Titanfall.exe"
    IF %ERRORLEVEL% == 0 GOTO found
    TIMEOUT /T 5
    GOTO search
    :found
    start /D "C:\Program Files (x86)\MultiRes\" MultiRes.exe /restore /exit
  18. Now some explanation here, and where you might have to do some trial and error
  19. Line 1, my primary is 1 so I started with /1: .. you single monitor folks can just go right into the resolution like so /2560,1440,32,144 (2560 horizontal pixels, 1440 Vertical, 32 bit color, 144hz)
  20. I also think for your main monitor I could skip the 1:, but better safe than sorry.
  21. The timeouts may not be the same for everyone, so this is waiting 5 seconds before searching for the process as sometimes the process starts, but hasn't detected the HERTZ yet.
  22. That goes for the other 5 second timer, if it doesn't find Titanfall, we want it to wait before searching again so it has some time to load, computer specs can affect this, not to mention things like SSDs (I'm currently running Titanfall from a 10k WD Raptor drive)
  23. Please also note your install directories may be different, and this changes your batch file.
  24. Enjoy your higher framerate.

Discovery:

  • So after Kiwi dropped that knowledge on me about his CRT giving him a higher framerate for his IPS panel I had to get this to work. 
  • I didn't have a CRT so, I found CRU and had my second monitor which happened to be a HP2310 hooked to my GTX780 via DVI.
  • I added 120hz to the standard resolutions list, as well as the Detailed resolutions list, clicked OK and rebooted.
  • This gave me what I needed, set this Monitor as the main display launched titanfall, then dragged it over to my main screen... I told Kiwi this and he tried setting a custom res on his main monitor and launching the game and letting the countdown timer go back to his normal res/refreshrate and it worked while titanfall kept the higher framerate.
  • This is where I really got interested in getting a batch file to work, so I switched my focus to my main display... 2560x1440 Monoprice 27" IPS
  • Custom Resolution Utility didn't really get me what I wanted, no matter what I inputted into that software it would not even let me fake 120hz on this Monoprice monitor.
  • And tried using multires command line to change the res/refresh to something that wasn't listed, it would error out.
  • So I remembered people downsampling in Nvidia with custom resolution and knew I could set the HERTZ there so I did, and bam I started getting somewhere... 
  • So now I know multres has command line support so I went off to the races to get this to work, and eventually got the batch file you see in the tutorial step# 17
  • I also attempted several other ways to get a higher framerate, such as my autoexec.cfg fps_max max_fps com_maxfps(quake command, don't know why I would think it would work).
  • I even tried browsing the Titanfall VPK _dir files for some sort of solution using this tool .. which the answer might still be in there I just didn't find it.
  • I tried forcing a higher framerate with NVIDIA Inspector, by editing the driver
  • I tried using MSI Afterburner (basically a skinned/easier to use RivaTuner) and setting the framerate there.
  • Tried to see what I could find using Cheat Engine (basically process inspect tool) saw some commands going through and I think some stuff from an autoexect or my video settings, but didn't locate anything FPS... I didn't focus too hard on this aspect as the custom resolution method I had already discovered... Also this tool can be used for a lot more awesome things than cheating, and there may be better process inspectors I could have been using, but this is the one that I knew about for setting my FOV back in the MW2 days.... which will VAC ban you btw :-(
  • Opened Titanfall EXE in a hex editor... looked pretty encrypted especially with the digicert at the bottom. it did point to some dlls in the bin\x64_retail location launcher and tier0 so I'm poking around in there see some amusing things like c:/hl2/src/blah.cpp ignore asset debugger... 
  • and a bunch of other things I'm currently still going through DLLs and EXE's for a hint...
  • This is a good enough way to launch the game as any.





random sidenote -novid shaves about 9 seconds (in my non-scientific study of running with and without using a stopwatch) from game launch to clicking items in the menu, but for some reason it feels longer because you are still waiting about 20 seconds just to get to the menu, which I guess is better than 30. I leave the videos on, as the sound let's me know what's about to happen. also 20-30 seconds for with(out) videos you could probably get away with waiting longer than 5 seconds searching for the titanfall process

EDIT1: If you are having trouble setting custom resolutions check out downsampling guides
EDIT2: From the Reddit thread, looks like https://www.youtube.com/watch?v=UYnZRNuasd4 was discovered beforehand, but I wanted to have a batch process before posting this blog. Anyway giving credit where credit is due.

EDIT3: Apparently easier method Source
1. Turn on Vsync in the game.
2. Force Vsync off in the drivers aka Nvidia control panel 3D application settings
3. If desired, use something like Nvidia Inspector and set a max framerate.

For me I was able to max fps 120, played a game on Haven and it seemed to work out pretty good. The input lag was certainly better than it being stuck at 60, but I don't know if it was quite as gone as with the above method. It does feel pretty good, I'm going to use it for a while and see how it goes.  (all of this may be for nothing as I did order that new Asus RoG swift Gsync monitor PG278Q.. but it's in high demand so it might be a while before I see it so I'll stick with these methods.

2 comments:

  1. Since there isn't a lot of conversation here, if you wanted to take a look at the reddit thread http://www.reddit.com/r/titanfall/comments/2e99fw/running_titanfall_at_a_higher_framerate_than_your/

    ReplyDelete
  2. Your blog has given me that thing which I never expect to get from all over the websites. Nice post guys!

    regards,
    Web Hosting Melbourne

    ReplyDelete