;==========================================================================
; === 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                              = 0x283

;--------------------------------------------------------------------------

[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                             = 1
FullScreenOutput                     = default
FullScreenMode                       = true
ScalingMode                          = unspecified
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.
;                         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                         = 1
ImageScaleFactor                     = 1
CursorScaleFactor                    = 0
DisplayROI                           = 
Resampling                           = bilinear
PresentationModel                    = auto
ColorSpace                           = appdriven
FreeMouse                            = false
WindowedAttributes                   = 
FullscreenAttributes                 = 
FPSLimit                             = 0
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                                = 4096
Filtering                           = appdriven
Mipmapping                          = appdriven
KeepFilterIfPointSampled            = false
Resolution                          = unforced
Antialiasing                        = 2x

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
;           D3D12BoundsChecking: If enabled then the D3D12 backend does bound checking on vs const register file accesses (D3D8/9 only)
;                                It should always be enabled to be fully compatible with the D3D8/9 specs but unfortunately that can cause
;                                performance loss while the vast majority of games do not need it; try to enable it if you experience a
;                                GPU crash with a D3D8/9 game

;        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
D3D12BoundsChecking                 = true

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