WTF! Out of desperation I just found a config file on google that I copied and pasted:
Audio.AltNameColor = false
Audio.MusicVol = 1.00000000
Audi
utput = 0
Audio.SFXVol = 0.98000002
Audio.Subtitles = true
Audio.VoiceVol = 1.00000000
Control.AimAssistEnabled = true
Control.AimingPosition = 1
Control.ControllerSensitivity = 2
Control.FireButtonControls = true
Control.InvertX = false
Control.InvertY = false
Control.MouseSensitivity = 0.50000000
Control.Shock = true
Controls.AcL.X = 0×01040360
Controls.AcL.Y = 0×00030008
Game.PDiff = -1
Game.Played = 0
Misc.LastSaveSlot = 2
QualityOptions.ActorMotionBlur = true
QualityOptions.Bloom = true
QualityOptions.Blur = true
QualityOptions.ConfigType = 1
QualityOptions.Decals = true
QualityOptions.Distortion = true
QualityOptions.DoF = true
QualityOptions.EdgeAA = true
QualityOptions.Flare = true
QualityOptions.Glow = true
QualityOptions.HighLightQuality = true
QualityOptions.ManipColor = true
QualityOptions.ShaderQuality = 2
QualityOptions.Shadows = 2
Window.Fullscreen = true
Window.Gamma = 0.50000000
Window.Height = 900
Window.Hz = 60
Window.Left = 0
Window.MessageNotification = 1
Window.State = 0
Window.Top = 0
Window.VSync = true
Window.Width = 1440
That allowed me to load in windowed 1080P and switch to full screen 1080P without crashing. Not sure how that makes any sense, but okay. Whatever works.