VOGONS


First post, by Ichisich

User metadata
Rank Newbie
Rank
Newbie

Tested with various dgVoodoo2 version, so it's no regression bug.

Thanks to dgVoodoo's resolution setting one can easily SuperSample every game, which doesn't show artifacts like MSAA often does, or renders the UI too small.
In case of Aliens vs Presator 2 I render the game natively in 960x540, which is an integer of my native 1080p display, and then let dgVoodoo upscale by 4x.

In most cases, e.g. No one lives forever, which uses almost the same engine, this results in 540p -> 4x -> 2160p -> 1080p.
So I have a game with the interface of 540p and a sharp downscaled 1080p image.

In Aliens vs Predator 2 this also applies until one alt+tabs or minimizes the game.
DgVoodoo seems to resize the game when a focus loss occurs and doesn't rescale the game to the display resolution but the in-game resolution instead.
To illustrate:
https://youtu.be/OT_5Fjvauy0

I can work around the issue by maximizing the window with an autohotkey shortcut and the flip presentation model automatically disables the compositor.
Unfortunately, Alt+Enter doesn't work with this game.

Reply 1 of 8, by Dege

User metadata
Rank l33t
Rank
l33t

Oh, yes, this is an annoying issue that I'll look into.

D3D11 with a legacy blt flip presentation mode should be fine.
For D3D12 there is a workaround: try enabling/disabling option DirectX\DisableAltEnterToToggleScreenMode. It works for me with other games.

In fact, the resolution remains the same, but the window is forcibly sized to its expected (original) size for some reason. Which is not a problem with the legacy blt presentation modes.

Reply 2 of 8, by Ichisich

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2023-12-25, 14:59:

D3D11 with a legacy blt flip presentation mode should be fine.
For D3D12 there is a workaround: try enabling/disabling option DirectX\DisableAltEnterToToggleScreenMode. It works for me with other games.

I tried all backends, scaling modes, presentation models, windows full-screen optimization en/disabled and any setting which is vaguely related to window display.
Aliens vs Predator 2 is just persistent in reverting to the in-game resolution.

Flip has the at least the quirk to disable the compositor in case a borderless window completely covers the display, and d3d12 doesn't bottleneck in case LithTech renders multiple dynamic light sources (Polaris GPU).

But regardless:

Dege wrote on 2023-12-25, 14:59:

Oh, yes, this is an annoying issue that I'll look into.

glad to hear, and thanks for this fantastic software, which is essential in preserving a transformative period in video game history.

Reply 3 of 8, by Dege

User metadata
Rank l33t
Rank
l33t

Could you plz attach your dgv config file you're using? I cannot reproduce the problem with this game but the glitch comes with others.
I looked into one of them, and for the time being, I'm not sure what to do with this.

The problem is, no matter that dgVoodoo (DXGI) resizes the game window to cover the entire screen when entering fullscreen mode, the game itself resizes it back to the "expected" size.
This is a problem with Flip presentation model because the window is just drawn as a quad texture by the desktop compositor, no true fullscreen mode.
So, it's not that dgVoodoo is rendering in lower resolution but the game window itself is rendered in a reduced size.

TBH, it might be simpler to just patch such games than fighting it from dgVoodoo side.

Reply 4 of 8, by Ichisich

User metadata
Rank Newbie
Rank
Newbie

So I reinstalled the game with dgVoodoo 2.82.2.
Using the legacy presentation model rescales the game now properly, but the mouse still gets boxed into the native resolution (a top left 540p corner) after a focus loss occurs.
I aslo tested why d3d11 chockes when multiple light sources are rendered. It's the solid-color-textrue mitigation.

The config is default, except:
No Watermark
Resolution: 4x
Deframer size: disabled
Cursor Scale Factor: 1
FPS Limit: 60fps
Scaling Mode: Stretched (keep Aspect Ratio) | driver (Unspecific) and hardware (Stretched) scaling behaves similar but fiddle more with overlays, and the latter needs "Virtual Super Resolution" to work.

dgVoodoo.conf
;==========================================================================
; === Text based config file for dgVoodoo2
; === Use this file if you are a game modder/hacker or an experted user and
; want to modify some advanced properties not available via the CPL.
;==========================================================================

Version = 0x282

;--------------------------------------------------------------------------

[General]

; OutputAPI: "d3d11warp", "d3d11_fl10_0", "d3d11_fl10_1", "d3d11_fl11_0",
; "d3d12_fl11_0", "d3d12_fl12_0", "bestavailable"
; Adapters: "all", or the ordinal of the adapter (1, ...)
;FullScreenOutput: "default", or the ordinal of the output on the adapter (1, ...)
; ScalingMode: "unspecified", "centered", "stretched", "centered_ar", "stretched_ar", "stretched_ar_crt",
; "stretched_4_3", "stretched_4_3_crt", "stretched_4_3_c64"
;
;InheritColorProfileInFullScreenMode:
; Enabled by default and can only be disabled only when a D3D11 output API
; is explicitly selected. Disabled case is intended for avoiding extra
; rendering resources on old hardware for better performance, if required.

OutputAPI = bestavailable
Adapters = all
FullScreenOutput = default
FullScreenMode = true
ScalingMode = stretched_ar
ProgressiveScanlineOrder = false
EnumerateRefreshRates = false

Brightness = 100
Color = 100
Contrast = 100
InheritColorProfileInFullScreenMode = true

KeepWindowAspectRatio = true
CaptureMouse = true
CenterAppWindow = false

;--------------------------------------------------------------------------

[GeneralExt]

; DesktopResolution: Desktop (native) resolution can be forced for dgVoodoo's internal calculations.
; Useful for rare applications that pre-set the desktop to other than the native
; resolution before dgVoodoo gets in action. Only the compact format can be used here,
; and applies to all outputs of the desktop.
; DesktopBitDepth: You can define what screen bit depth should be reported through dgVoodoo
; (8, 16, 32)
; DeframerSize: When resolution is forced to other than the app default then
; a black frame is drawn around the output image coming from a wrapped API
; to remove scaling artifacts -
; frame thickness can be defined in pixels (max 16, 0 = disable)
; ImageScaleFactor: Integer factor for scaling the output image coming from a wrapped API
; Always done by nearest point filtering, independent on scaling mode
; (0 = max available)
; Separate factors can be defined for horizontal and vertical scaling
; by subproperties, e.g.
Show last 289 lines
;                         ImageScaleFactor = x:3, y:2
; CursorScaleFactor: Integer factor for scaling the emulated hardware mouse (max 16)
; (0 = automatic, 1 = no scale, 2 = double scale, ...)
; DisplayROI: Display region of interest
; If scaling is done by the dgVoodoo then you can define a subrect of the
; output image, coming from a wrapped API, to be displayed. The defined subrect
; is mapped to the display output according to the current scaling mode
; It can be useful for applications rendering a widescreen subimage into a 4:3
; resolution; in this case you can scale up that subimage to (nearly) fill the
; whole screen on a widescreen monitor.
; DisplayROI empty value means the whole image.
; DisplayROI value can be a proportion in form of %d_%d or a pixel size (%d|%d)
; Pos subproperty is not mandatory and can be 'centered' or a pixel position (%d|%d)
; Examples: DisplayROI = 16_9, pos:centered
; DisplayROI = (320|200), pos:(10|10)
; Resampling: When scaling is done by the dgVoodoo for the given scaling mode,
; you can choose which filter is to be used for resampling the output image
; Available filters are: "pointsampled", "bilinear", "bicubic", "lanczos-2", "lanczos-3"
; PresentationModel: Low-level swapchain swap effect: if you know what you are doing then it can be
; overridden here. Flip models are better suited for modern OS features like auto HDR,
; while plain legacy models provide the best presentation performance under ideal conditions
; Not all model + output API + OS version combinations are supported.
; "auto", "discard", "seq", "flip_discard", "flip_seq"
; ColorSpace: Color space of the swap chain:
; "appdriven" - an application can choose argb2101010 through D3D9, but it means
; the legacy argb8888_srgb in any other case
; "argb8888_srgb" - Legacy 32 bit output for SDR displays
; "argb2101010_sdr" - 32 bit extended precision for SDR displays
; "argb2101010_sdr_wcg" - Wide Color Gamut format for SDR displays (available from Windows 11 22H2)
; "argb16161616_hdr" - Float16 HDR output (available from Windows 10 1709)
; FreeMouse: If true then physical mouse is free to move inside the game window
; when using emulated scaling and/or application and forced resolution
; differs; can be useful when a game relies on the physical window size
; WindowedAttributes: You can define attributes for forced windowed appearance (separated by commas):
; "borderless" - forces the app window not have any border
; "alwaysontop" - forces the app window into the top-most band
; "fullscreensize" - forces the app window to be full screen size with image scaling inside
; FullscreenAttributes: You can define attributes for fullscreen appearance (separated by commas):
; "fake" - forces fake fullscreen mode with a screen-size window
; FPSLimit: An integer or rational (fractional) value, 0 = unlimited
; Environment: Software environment in which dgVoodoo is running: can be left unspecified (native)
; or can be set to 'DosBox' or 'QEmu'.
; SystemHookFlags: You can define which part of the system should be hooked (x86-DX only):
; "gdi" - for showing graphical contents rendered through GDI
; (like movie playback through the ancient Windows Multimedia AVI player library)
; "cursor" - for suppressing double-cursor symptoms when the cursor is emulated

DesktopResolution =
DesktopBitDepth =
DeframerSize = 0
ImageScaleFactor = 1
CursorScaleFactor = 1
DisplayROI =
Resampling = bilinear
PresentationModel = auto
ColorSpace = appdriven
FreeMouse = false
WindowedAttributes =
FullscreenAttributes =
FPSLimit = 60
Environment =
SystemHookFlags =

;--------------------------------------------------------------------------

[Glide]

; VideoCard: "voodoo_graphics", "voodoo_rush", "voodoo_2", "voodoo_banshee", "other_greater"
; OnboardRAM: in MBs
; MemorySizeOfTMU: in kBs
; TMUFiltering: "appdriven", "pointsampled", "bilinear"
;
; Resolution: either "unforced", "max", "max_isf", "max_fhd", "max_fhd_isf", "max_qhd", "max_qhd_isf", "desktop", "%dx",
; "max_%dx", "max_isf_%dx", "max_fhd_%dx", "max_fhd_isf_%d"x, "max_qhd_%dx", "max_qhd_isf_%dx", "desktop_%dx"
; or subproperties: h: horizontal, v: vertical
; + optional subproperty refrate: refresh rate in Hz
; e.g. Resolution = max, refrate:60
; Resolution = 2x, refrate:59
; Resolution = h:1280, v:1024, refrate:75
; Resolution = max_2x
; or just use the compact form like "1024x768@60" or "512x384"
;
;Antialiasing: "off", "appdriven", "2x", "4x", "8x", "16x" (your GPU must support the chosen one)

VideoCard = voodoo_2
OnboardRAM = 8
MemorySizeOfTMU = 4096
NumberOfTMUs = 2
TMUFiltering = appdriven
DisableMipmapping = false
Resolution = unforced
Antialiasing = appdriven

EnableGlideGammaRamp = true
ForceVerticalSync = true
ForceEmulatingTruePCIAccess = false
16BitDepthBuffer = false
3DfxWatermark = true
3DfxSplashScreen = false
PointcastPalette = false
EnableInactiveAppState = false


;--------------------------------------------------------------------------

[GlideExt]

; DitheringEffect: "pure32bit", "dither2x2", "dither4x4"
; Dithering: "disabled", "appdriven", "forcealways"
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
; 1 = normal, 2 = double size, etc.
; 0 = automatic (the aim is to have some retro feel&look)

DitheringEffect = pure32bit
Dithering = forcealways
DitherOrderedMatrixSizeScale = 0

;--------------------------------------------------------------------------

[DirectX]

; VideoCard: "svga", "internal3D", "geforce_ti_4800", "ati_radeon_8500",
; "matrox_parhelia-512", "geforce_fx_5700_ultra", "geforce_9800_gt"
; VRAM: in MBs (default) or in GBs (e.g. VRAM = 2GB)
; Filtering: "appdriven", "pointsampled", "bilinear", "pointmip", "linearmip", "trilinear"
; or the integer value of an anisotropic filtering level (1-16)
; Mipmapping: "appdriven", "disabled", "autogen_point", "autogen_bilinear"
; KeepFilterIfPointSampled: if enabled then forced filtering affects only non-point sampled textures
; Bilinear2DOperations: if enabled then DirectDraw Blit and CPU-written data is transferred with bilinear scaling

DisableAndPassThru = false

VideoCard = internal3D
VRAM = 256
Filtering = appdriven
Mipmapping = appdriven
KeepFilterIfPointSampled = false
Resolution = 4x
Antialiasing = appdriven

AppControlledScreenMode = true
DisableAltEnterToToggleScreenMode = true

Bilinear2DOperations = false
PhongShadingWhenPossible = false
ForceVerticalSync = false
dgVoodooWatermark = false
FastVideoMemoryAccess = false

;--------------------------------------------------------------------------

[DirectXExt]

; AdapterIDType: "nvidia", "amd", "intel" or leave it undefined
; You can define what type of driver version and vendor id's the wrapper should report to
; the application; Some games rely on that information so it can be useful for them
; Can be defined only for SVGA and Internal3D card types; the others have their own wired
; information

; VendorID, DeviceID, SubsystemID, RevisionID:
; Can be defined only for SVGA and Internal3D card types
; You can overwrite these properties even if a non-default AdapterIDType is defined;
; say, you defined an nvidia id type but would like to refine the vendor id

; DefaultEnumeratedResolutions: you can define what resolutions should be enumerated to the application by default
; "all", "classics", "none"

; ExtraEnumeratedResolutions: you can add extra resolutions (separated by commas, max 16) that will get
; enumerated to the application as display adapter supported ones -
; can be useful if an app supports rendering at arbitrary resolutions
; and you have a particular favorite resolution that are not
; enumerated to the application by default
; you can either use the compact resolution format here, or
; "max", "max@refrate" meaning your desktop resolution with a potential refresh rate, or
; "max_4_3", "max_4_3@refrate", "max_16_9", "max_16_9@refrate"
; meaning the maximum resolution with the given aspect ratio calculated from
; the desktop resolution with the given refresh rate, e.g. "max_4_3@60", "max_16_9"

; EnumeratedResolutionBitdepths: you can filter what bitdepths are included in the resolution enumeration
; any subset of {"8", "16", "32"}, or "all"

; DitheringEffect: "high_quality", "ordered2x2", "ordered4x4"
; Dithering: "disabled", "appdriven", "forceon16bit", "forcealways"
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
; 1 = normal, 2 = double size, etc.
; 0 = automatic
; DepthBuffersBitDepth: internal bit depth of depth/stencil buffers for 3D rendering (32 bit is not recommended)
; "appdriven", "forcemin24bit", "force32bit"
; Default3DRenderFormat: default format of 3D rendering
; "auto", "argb8888", "argb2101010", "argb16161616"
; auto corresponds to the selected color space
; argb2101010 has the benefit that it is still 32 bit but it can corrupt the rendering
; because of the lowered alpha bits, not recommended

; MaxVSConstRegisters: Max number of vertex shader constant registers (DX8/9 only)
; Can be defined only for SVGA and Internal3D card types
; Valid values are 256 (default), 512 or 1024

; NPatchTesselationLevel: Force N-Patch tesselation level (D3D8/9)
; 0 = app driven
; 1 = disable
; 2 to 8 = a forced tesselation level
; Altough tesselation works with all vertex shader versions, you can force level higher than 1
; only for the fixed function or vs.1.x vertex pipeline because of performance and practical reasons
; (forced tesselation also disables adaptive mode (D3D9), but forcing is not recommended at all, anyway)

; DisplayOutputEnableMask: Each bit in this 32 bit value corresponds to a display output. Display outputs of the adapters are numbered
; sequentially. If Adapter0 has n display outputs and Adapter1 has m display outputs attached then the lowest
; n bits match Adapter0 display outputs, the next m bits match Adapter1 outputs, and so on. The lowest bit
; in a group corresponds to Output0. If a bit value is 0 then the display output is disabled for the device
; enumeration, in other words, it is invisible to the application. It can be useful for D3D9 multihead-
; or very special applications where you want to enable only individual displays on your monitor wall.

; MSD3DDeviceNames: if true then original Microsoft D3D device names are exposed
; (some applications check for them and they fail)

; RTTexturesForceScaleAndMSAA: if true then forced resolution scaling and MSAA is
; applied also to rendertarget textures
; Set it to false for games requiring pixel-precise rendering
; but be careful it can EASILY break certain things, not recommended

; SmoothedDepthSampling: if true then extra smoothing is added to depth textures
; when they are sampled

; DeferredScreenModeSwitch: If true the switching to full screen is deferred after the application initialized
; the DirectX device; can be useful for games that don't expect rendering window changes
; during initialization and crash

; PrimarySurfaceBatchedUpdate: If true then direct changes of the primary surface are batched together for presenting them
; If false then each change is instantly presented (debug-like mode)

; SuppressAMDBlacklist: Some AMD GPU models are blacklisted to workaround the solid-color-textures driver issue
; You can suppress it to check out if the problem is fixed in your current driver

AdapterIDType =
VendorID =
DeviceID =
SubsystemID =
RevisionID =

DefaultEnumeratedResolutions = all
ExtraEnumeratedResolutions =
EnumeratedResolutionBitdepths = all

DitheringEffect = high_quality
Dithering = forcealways
DitherOrderedMatrixSizeScale = 0
DepthBuffersBitDepth = appdriven
Default3DRenderFormat = auto

MaxVSConstRegisters = 256

NPatchTesselationLevel = 0

DisplayOutputEnableMask = 0xffffffff

MSD3DDeviceNames = false
RTTexturesForceScaleAndMSAA = true
SmoothedDepthSampling = true
DeferredScreenModeSwitch = false
PrimarySurfaceBatchedUpdate = false
SuppressAMDBlacklist = false

;--------------------------------------------------------------------------

[Debug]

; This section affects only debug/spec release builds
;
; Info, Warning, Error
; "Disable" - disables all messages and debugger break
; "Enable" - enables messages and disables debugger break
; "EnableBreak" - enables both messages and breaking into debugger
;
; MaxTraceLevel: Maximum level of tracing API calls
; 0 - Disable
; 1 - API Functions and methods
; 2 - Additional trace info for internals
;
; LogToFile: if false or debugger is detected then output goes to the debug output
; if true and no debugger detected then output goes to 'dgVoodoo.log'
; (not implemented yet, always the default debug output is used)

Info = enable
Warning = enable
Error = enable
MaxTraceLevel = 0

;LogToFile = false

The game config:

autoexec.cfg
"NUMCONSOLELINES" "0"
"FARZ" "45000.000000"
"LMFullBright" "0"
"SpeciesName" "Predator"
"VS_SPRITES_NOZ" "128"
"CARDDESC" "display"
"NormalTurnRate" "1.500000"
"MouseInvertYAxis" "0"
"DETAILTEXTURESCALE" "1.0"
"MODELWARBLE" "0"
"DynamicLightSetting" "2.000000"
"LIGHTMODELSPRITES" "1"
"MAXMODELSHADOWS" "1"
"AutoswitchWeapons" "1"
"VS_PARTICLESYSTEMS" "128"
"FOGENABLE" "1.000000"
"ScreenFlash" "1.000000"
"HeadCanting" "1"
"ENVPANSPEED" "0.000500"
"MODELLOD" "2.000000"
"OPTIMIZESURFACES" "1.0"
"LowViolence" "0"
"RunLock" "1"
"WeaponSway" "1"
"VS_SPRITES" "512"
"OrientOverlay" "1"
"ScalingMenus" "1"
"LIGHTMAP" "1"
"Renderer" "dgVoodoos. DirectX Wrapper"
"DetailLevel" "4"
"VS_POLYGRIDS_TRANSLUCENT" "32"
"MouseSensitivity" "1.000000"
"FastTurnRate" "2.300000"
"Sound16Bit" "1"
"SATURATE" "1"
"BITDEPTH" "32"
"ClipSpeed" "1000.0"
"VS_MODELS_CHROMAKEY" "512"
"VS_POLYGRIDS" "32"
"FixTJunc" "1"
"SCREENWIDTH" "960"
"RENDERDLL" "d3d.ren"
"Trilinear" "1"
"MaxWorldPoliesToDraw" "50000"
"MASTERPALETTEMODE" "1.000000"
"SpecialFX" "2.000000"
"RATEENABLE" "2"
"VS_WORLDMODELS_CHROMAKEY" "256"
"modeldist1" "150.000000"
"UpdateRateInitted" "1"
"GAMMA" "1.000000"
"32BITTEXTURES" "1"
"AspectRatio" "1"
"modeldist2" "250.000000"
"BulletHoles" "100.000000"
"MuzzleLight" "1"
"ObjectiveMessages" "1"
"NumRuns" "24.000000"
"EnableHints" "1"
"DRAWSKY" "1"
Show last 214 lines
"VS_CANVASES" "32"
"MsgMgrTimeScale" "0.750000"
"modeldist3" "350.000000"
"DETAILTEXTURES" "1"
"enabledevice" "##mouse"
"UseJoystick" "0"
"MultipassGouraud" "1"
"VS_CANVASES_TRANSLUCENT" "128"
"PickupIconDuration" "5.000000"
"IgnoreTaunts" "0"
"ENVMAPENABLE" "1"
"EnvMapWorld" "1"
"MusicVolume" "50.000000"
"maxswvoices" "32.000000"
"multiplayer" "0"
"VS_LINESYSTEMS" "128"
"FORCECLEAR" "1"
"FASTLIGHT" "0"
"SoundVolume" "100.000000"
"VSync" "0"
"INPUTRATE" "100.000000"
"VS_MODELS" "256"
"POLYGRIDS" "1.000000"
"GROUPOFFSET0" "-1"
"MouseLook" "1"
"Subtitles" "1"
"GROUPOFFSET1" "-1"
"globaldetail" "2.000000"
"EnableSky" "1"
"GROUPOFFSET2" "-1"
"SFXVolume" "90.000000"
"NEARZ" "4.000000"
"musictype" "ima"
"InvertHack" "0"
"GROUPOFFSET3" "-1"
"PVWeapons" "0.000000"
"MODELSHADOWALPHA" "96"
"CONSOLEALPHA" "0.65"
"TextureDetail" "2.000000"
"VS_WORLDMODELS_TRANSLUCENT" "256"
"GROUPOFFSET4" "-1"
"MouseInvertY" "0"
"VS_LIGHTS" "64"
"GROUPOFFSET5" "-1"
"UPDATERATE" "100"
"GroupOffset6" "-1"
"CrouchLock" "0"
"GroupOffset7" "-1"
"MODELFULLBRITE" "1"
"GroupOffset8" "-1"
"DEBUGLEVEL" "0"
"GroupOffset9" "-1"
"CLOUDMAPLIGHT" "1.000000"
"GameScreenHeight" "540"
"MsgMgrMaxHeight" "0.200000"
"DrawViewModel" "1"
"SCREENHEIGHT" "540"
"VS_MODELS_TRANSLUCENT" "512"
"TripleBuffer" "1"
"AnisotropicFiltering" "4"
"ServerConfig" "unnamed"
"MUSICENABLE" "1"
"32BitLightmaps" "1"
"WallWalkLock" "0"
"DYNAMICLIGHT" "1"
"GameScreenWidth" "960"
"ImpactFXLevel" "2"
"SOUNDENABLE" "1"
"PerformanceConfig" ".DefaultExtraLow"
"FogPerformanceScale" "100"
"WARBLESCALE" ".95"
"GameBitDepth" "32"
"LookUpRate" "2.500000"
"Gore" "1.000000"
"HeadBob" "1"
"DebrisFXLevel" "2"
"VS_WORLDMODELS" "256"
"LookSpring" "0.000000"
"ShellCasings" "1"
"MIPMAPDIST" "375.000000"
"SHADOWZRANGE" "17.000000"
"SHADOWLODOFFSET" "100.000000"
"LIGHTSATURATE" "1.0"
"ProfileName" "Player_0"
"WARBLESPEED" "15"
AddAction Forward 0
AddAction Backward 1
AddAction Left 2
AddAction Right 3
AddAction Strafe 4
AddAction StrafeLeft 5
AddAction StrafeRight 6
AddAction Run 7
AddAction Duck 8
AddAction Jump 9
AddAction LookUp 10
AddAction LookDown 11
AddAction CenterView 12
AddAction RunLock 13
AddAction Fire 14
AddAction AltFire 15
AddAction Reload 16
AddAction Activate 17
AddAction PrevWeapon 18
AddAction NextWeapon 19
AddAction ZoomIn 20
AddAction ZoomOut 21
AddAction LastWeapon 22
AddAction CrouchToggle 23
AddAction TorchSelect 24
AddAction WallWalk 25
AddAction WallWalkToggle 26
AddAction PounceJump 27
AddAction EnergySift 28
AddAction MediComp 29
AddAction Weapon0 30
AddAction Weapon1 31
AddAction Weapon2 32
AddAction Weapon3 33
AddAction Weapon4 34
AddAction Weapon5 35
AddAction Weapon6 36
AddAction Weapon7 37
AddAction Weapon8 38
AddAction Weapon9 39
AddAction Item0 40
AddAction Item1 41
AddAction Item2 42
AddAction Item3 43
AddAction Item4 44
AddAction Item5 45
AddAction Item6 46
AddAction Item7 47
AddAction Item8 48
AddAction Item9 49
AddAction PrevVision 50
AddAction NextVision 51
AddAction PrevHud 60
AddAction NextHud 61
AddAction MouseAim 62
AddAction Crosshair 63
AddAction ChaseView 64
AddAction QuickSave 65
AddAction QuickLoad 66
AddAction Message 70
AddAction TeamMessage 71
AddAction ScoreDisplay 72
AddAction PlayerInfo 73
AddAction Taunt 74
AddAction LeaveUnassigned 99
AddAction Axis3 -3
AddAction Axis2 -2
AddAction Axis1 -1

enabledevice "##keyboard"
rangebind "##keyboard" "##48" 0.000000 0.000000 "PrevVision"
rangebind "##keyboard" "##34" 0.000000 0.000000 "MediComp"
rangebind "##keyboard" "##20" 0.000000 0.000000 "EnergySift"
rangebind "##keyboard" "##45" 0.000000 0.000000 "LastWeapon"
rangebind "##keyboard" "##9" 0.000000 0.000000 "Weapon7"
rangebind "##keyboard" "##8" 0.000000 0.000000 "Weapon6"
rangebind "##keyboard" "##7" 0.000000 0.000000 "Weapon5"
rangebind "##keyboard" "##6" 0.000000 0.000000 "Weapon4"
rangebind "##keyboard" "##5" 0.000000 0.000000 "Weapon3"
rangebind "##keyboard" "##4" 0.000000 0.000000 "Weapon2"
rangebind "##keyboard" "##3" 0.000000 0.000000 "Weapon1"
rangebind "##keyboard" "##2" 0.000000 0.000000 "Weapon0"
rangebind "##keyboard" "##33" 0.000000 0.000000 "Item9"
rangebind "##keyboard" "##46" 0.000000 0.000000 "Item8"
rangebind "##keyboard" "##35" 0.000000 0.000000 "Item2"
rangebind "##keyboard" "##209" 0.000000 0.000000 "ZoomOut"
rangebind "##keyboard" "##201" 0.000000 0.000000 "ZoomIn"
rangebind "##keyboard" "##19" 0.000000 0.000000 "Reload"
rangebind "##keyboard" "##44" 0.000000 0.000000 "PrevWeapon"
rangebind "##keyboard" "##16" 0.000000 0.000000 "NextWeapon"
rangebind "##keyboard" "##18" 0.000000 0.000000 "Activate"
rangebind "##keyboard" "##53" 0.000000 0.000000 "CrouchToggle"
rangebind "##keyboard" "##42" 0.000000 0.000000 "Duck"
rangebind "##keyboard" "##52" 0.000000 0.000000 "Crosshair"
rangebind "##keyboard" "##14" 0.000000 0.000000 "Taunt"
rangebind "##keyboard" "##43" 0.000000 0.000000 "TeamMessage"
rangebind "##keyboard" "##28" 0.000000 0.000000 "Message"
rangebind "##keyboard" "##15" 0.000000 0.000000 "ScoreDisplay"
rangebind "##keyboard" "##210" 0.000000 0.000000 "MouseAim"
rangebind "##keyboard" "##211" 0.000000 0.000000 "CenterView"
rangebind "##keyboard" "##207" 0.000000 0.000000 "LookDown"
rangebind "##keyboard" "##199" 0.000000 0.000000 "LookUp"
rangebind "##keyboard" "##47" 0.000000 0.000000 "NextVision"
rangebind "##keyboard" "##57" 0.000000 0.000000 "Jump"
rangebind "##keyboard" "##50" 0.000000 0.000000 "RunLock"
rangebind "##keyboard" "##58" 0.000000 0.000000 "Run"
rangebind "##keyboard" "##37" 0.000000 0.000000 "Strafe"
rangebind "##keyboard" "##32" 0.000000 0.000000 "StrafeRight"
rangebind "##keyboard" "##30" 0.000000 0.000000 "StrafeLeft"
rangebind "##keyboard" "##205" 0.000000 0.000000 "Right"
rangebind "##keyboard" "##203" 0.000000 0.000000 "Left"
rangebind "##keyboard" "##31" 0.000000 0.000000 "Backward"
rangebind "##keyboard" "##17" 0.000000 0.000000 "Forward"
rangebind "##keyboard" "##12" 0.000000 0.000000 "PrevHud"
rangebind "##keyboard" "##13" 0.000000 0.000000 "NextHud"
rangebind "##keyboard" "##64" 0.000000 0.000000 "QuickSave"
rangebind "##keyboard" "##65" 0.000000 0.000000 "QuickLoad"
enabledevice "##mouse"
rangebind "##mouse" "##z-axis" -255.000000 -0.100000 "ZoomOut" 0.100000 255.000000 "ZoomIn"
rangebind "##mouse" "##4" 0.000000 0.000000 "AltFire"
rangebind "##mouse" "##3" 0.000000 0.000000 "Fire"
rangebind "##mouse" "##y-axis" 0.000000 0.000000 "Axis2"
scale "##mouse" "##y-axis" 0.000583
rangebind "##mouse" "##x-axis" 0.000000 0.000000 "Axis1"
scale "##mouse" "##x-axis" 0.000530
ModelAdd 0.000000 0.000000 0.000000
ModelDirAdd 0.000000 0.000000 0.000000
WMAmbient 0.000000 0.000000 0.000000
Dege wrote on 2024-01-10, 21:43:

The problem is, no matter that dgVoodoo (DXGI) resizes the game window to cover the entire screen when entering fullscreen mode, the game itself resizes it back to the "expected" size.
This is a problem with Flip presentation model because the window is just drawn as a quad texture by the desktop compositor, no true fullscreen mode.

As Flip is just a borderless window which disables the compositor when alligning with the display size, would it be possible to just never minimize or scale the window differently than the current desktop size?
Many modern games just let the flip window in the background as if it would be the desktop background.

Reply 5 of 8, by Dege

User metadata
Rank l33t
Rank
l33t
Ichisich wrote on 2024-01-11, 11:47:

So I reinstalled the game with dgVoodoo 2.82.2.
Using the legacy presentation model rescales the game now properly, but the mouse still gets boxed into the native resolution (a top left 540p corner) after a focus loss occurs.
I aslo tested why d3d11 chockes when multiple light sources are rendered. It's the solid-color-textrue mitigation.

Yes, becuase the game expects the mouse coordinates in the boxed range. But the physical cursor should be hidden and you should have and the emulated cursor for the full size screen instead.
So, the lightmap update performance is still there? A 1-2 year ago I put a lot of optimization into the code for that and I didn't find a gameplay location that caused fps loss (but of course there can be such one).

Ichisich wrote on 2024-01-11, 11:47:

As Flip is just a borderless window which disables the compositor when alligning with the display size, would it be possible to just never minimize or scale the window differently than the current desktop size?
Many modern games just let the flip window in the background as if it would be the desktop background.

If option DirectX\DisableAltEnterToToggleScreenMode is disabled then dgVoodoo does not emulate a DX device loss and does not minimize/maximize the window when the focus lost/gained, just leaves it as it is.
However DX11/12 itself kicks it out from fullscreen mode if it detects any other window (partly) covering it and restores the window original framed/captioned style.

Your only option to try for that is fake fullscreen, there is an option for that in dgVoodoo. But of course, it can affect the performance.

Reply 6 of 8, by Ichisich

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2024-01-13, 18:23:

Yes, becuase the game expects the mouse coordinates in the boxed range. But the physical cursor should be hidden and you should have and the emulated cursor for the full size screen instead.

Yep, the physical cursor is hidden, and the emulated one interacts visible with the game.
Until a focus loss occurs, then only the physical cursor is visible, but the emulated one still exclusively interacts with the game.
The black transition is when the game gets minimized and restored again, the red line is inserted by me to visualize the physical border for the physical cursor:
https://youtu.be/j1slBeZHSy4

Dege wrote on 2024-01-13, 18:23:

So, the lightmap update performance is still there? A 1-2 year ago I put a lot of optimization into the code for that and I didn't find a gameplay location that caused fps loss (but of course there can be such one).

In case of Alien vs Predator 2 it's pretty heavy. Flashlights, flares and flickering light maps all cumulate in destroying the framerate and frametimes.
It's already blatant in the first playable chapter in the marine campaign.
I have a Polaris card, so the mitigation is, as far as I checked, pretty new, maybe Vega or other architectures fare better, but on the bright side, I never had any issues with the d3d12 backend.
For AMD probably the better default.

Dege wrote on 2024-01-13, 18:23:

Your only option to try for that is fake fullscreen, there is an option for that in dgVoodoo. But of course, it can affect the performance.

In case of Flip, nothing changes.
In case of BitBlt, it behaves now like Flip and rescales the borderless window to the expected in-game resolution instead.
In addition, BitBlt is always composed in its windowed presentation, but that is to be expected.

Reply 7 of 8, by Dege

User metadata
Rank l33t
Rank
l33t

Yes, the lightmaps were always a problem with AMD + D3D11 combo. Vega might be worse now because that's on the AMD blacklist and that affects the texture upload code path.
But anyway, others, like Firtasik also reported this problem with e.g. Blood 2 and AFAIK D3D12 works ok with AMD. But I'll check it out on my AMD (GCN3).

As for the window/mouse problem: are there patches for this game, maybe? If we're using the same version then I don't understand why I don't encounter any of those problems.