Impressions Games' City Building series

General information and assistance with dgVoodoo.

Impressions Games' City Building series

Postby XJDHDR » 2018-9-28 @ 09:23

I am going to use this thread to report any problems I'm having getting the various City Building games working with dgVoodoo. I am running these games on Windows 10 x64. My main goal with using dgVoodoo on these games is to use dgVoodoo's ability to force games to run in Windowed mode. I'm aware that these games already have built-in support for Windowed mode but I want to use dgVoodoo's Windowed mode because it fixes a bug in all four of the games in question when run in Windowed mode(*).

All of these tests were done using the GOG versions of the four games.
The biggest one in this list is Zeus: Master of Olympus. This is what the main menu is supposed to look like after the game starts:
Zeus working.png
Zeus working normally

This is what the same screen looks like with dgVoodoo installed and with FullScreenMode = false in dgVoodoo.conf:
Zeus bugged.png
Zeus running with dgVoodoo

Finally, this is the same screen with dgVoodoo installed and after I manipulated the game to not load the title screen's background image:
Zeus - No title texture.png
Zeus running with dgVoodoo and no title screen background

This seems to indicate that when using dgVoodoo, the buttons are being drawn behind the background.

All of the above is with Zeus configured to run in Windowed mode. I also tried configuring the game to run in Fullscreen mode with dgVoodoo configured to force Windowed mode and see what happened. Unfortunately, all I got was a black screen:
Zeus - Fullscreen.png
Zeus with Fullscreen mode selected in game and Windowed selected in dgVoodoo
(4.41 KiB) Not downloaded yet


Next is Caesar 3. This game seems the best behaved of the four. dgVoodoo correctly forces it into Windowed mode regardless of whether I have the game configured to Fullscreen or Windowed mode.
Caesar 3 - Fullscreen & windowed.png
Caesar 3 running in dgVoodoo



(*) The bug that is affecting me is that the games seem to initialize in Fullscreen mode at 1024x768 before switching to Windowed mode. This causes all of my open windows to get resized to fit a 1024x768 resolution then get moved to the top-left corner of my screen. Obviously, it quickly gets annoying to fix my windows every time this happens.
Last edited by XJDHDR on 2018-9-28 @ 10:02, edited 1 time in total.
XJDHDR
Newbie
 
Posts: 18
Joined: 2015-5-17 @ 16:37

Re: Impressions Games' City Building series

Postby XJDHDR » 2018-9-28 @ 09:28

Continued from the first post:

I then tested Pharaoh. It works correctly when the game is configured to Windowed mode but when I configure the game to Fullscreen mode, I get the same black screen from Zeus except that some residue text from the loading screens appear:
Pharaoh.png
Pharaoh configured to Windowed mode

Pharaoh - Fullscreen.png
Pharaoh configured to Fullscreen mode
(4.82 KiB) Not downloaded yet


Finally, I tested Emperor: Rise of the Middle Kingdom. This one behaved pretty much identically to Pharaoh. Works correctly if set to Windowed mode but gives a black screen with loading text if set to Fullscreen mode:
Emperor.png
Emperor configured to Windowed mode

Emperor - Fullscreen.png
Emperor configured to Fullscreen mode
(4.79 KiB) Not downloaded yet


Another thing I want to mention is that I was trying to make the games run in a Borderless Window using the WIP50 version of dgVoodoo. As you can see from my screenshots, I couldn't get this feature to work at all (unless it is working in those cases where I just get a black window).
XJDHDR
Newbie
 
Posts: 18
Joined: 2015-5-17 @ 16:37

Re: Impressions Games' City Building series

Postby XJDHDR » 2018-9-28 @ 10:01

Continued from the second post:

All of the above is from me using dgVoodoo with the unmodified GOG versions of the four games. Things change after I apply the unofficial high resolution patches for the games. You can grab those patches from here:
https://sourceforge.net/projects/xjdhdr-random-code/files/Game_related_files/City_Building_Strategy_Games_Series_files/

All of these results were obtained using the WIP50 version of dgVoodoo.
Caesar 3 was put in a window with a border despite me telling dgVoodoo to create a Borderless Window. This happened regardless of whether I selected Windowed or Fullscreen mode in the game:
Caesar 3.jpg
Caesar 3's window


As for Pharaoh, if I configured the game to use Windowed mode, the game was put in a window with a border. If configured to Fullscreen, the game used a Borderless Window instead:
Pharaoh.jpg
Pharaoh in Windowed mode


For Zeus, the game demonstrated the same "background in front of buttons" bug that occurred in the unmodified version of the game if configured to use Windowed mode. Conversely, the game was rendered correctly and in a Borderless Window if configured to Fullscreen mode:
Zeus - Windowed.jpg
Zeus in Windowed mode

Zeus - Fullscreen.jpg
Zeus in Fullscreen mode


Finally, Emperor was placed in a Borderless Window regardless of whether I set the game to Fullscreen or Windowed mode. However, the game's window seems to be shifted to the right slightly and appears under the Windows taskbar. Telling dgVoodoo to "Center app window" did not fix this problem:
Emperor.png
Emperor's window



Here is the dgVoodoo.conf I used for all four of the games:
Code: Select all
;==========================================================================
; === 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                              = 0x255

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

[General]

;    OutputAPI: "d3d11warp", "d3d11_fl10_0", "d3d11_fl10_1", "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_4_3", "stretched_4_3_crt", "stretched_4_3_c64"

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

Brightness                           = 100
Color                                = 100
Contrast                             = 100
InheritColorProfileInFullScreenMode  = false

KeepWindowAspectRatio                = true
CaptureMouse                         = true
CenterAppWindow                      = true

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

[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.
;           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
;ForceNearestPointFilter: When the scaling is done by the wrapper for the given scaling mode,
;                         you can force nearest point filtering instead of bilinear one
;              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
;            Environment: Software environment in which dgVoodoo is running: can be left unspecified (native)
;                         or can be set to 'DosBox' or 'QEmu'.

DesktopResolution                    =
DeframerSize                         = 1
ImageScaleFactor                     = 1
ForceNearestPointFilter              = false
FreeMouse                            = false
WindowedAttributes                   = borderless,alwaysontop
Environment                          =

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

[Glide]

;  VideoCard:      "voodoo_graphics", "voodoo_rush", "voodoo_2", "voodoo_banshee", "other_greater"
; OnboardRAM:      in MBs
; MemorySizeOfTMU: in kBs
;
; Resolution: either "unforced", "max", "max_isf", "max_fhd", "max_fhd_isf", "max_qhd", "max_qhd_isf", "%d x"
;             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
;             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
ForceBilinearFilter                 = false
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"
;       VRAM: in MBs
;  Filtering: "appdriven", "pointsampled", "bilinear", "linearmip", "trilinear"
;             or the integer value of an anisotropic filtering level (1-16)

DisableAndPassThru                  = false

VideoCard                           = internal3D
VRAM                                = 128
Filtering                           = appdriven
DisableMipmapping                   = false
Resolution                          = unforced
Antialiasing                        = appdriven

AppControlledScreenMode             = false
DisableAltEnterToToggleScreenMode   = true

BilinearBlitStretch                 = false
PhongShadingWhenPossible            = false
ForceVerticalSync                   = false
dgVoodooWatermark                   = false
FastVideoMemoryAccess               = false

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

[DirectXExt]

; VendorID, DeviceID, SubsystemID, RevisionID:
;           can be defined only for SVGA and Internal3D card types

;  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: "pure32bit", "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"

; 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

VendorID                            = 0x0
DeviceID                            = 0x0
SubsystemID                         = 0x0
RevisionID                          = 0x0

DefaultEnumeratedResolutions        = all
ExtraEnumeratedResolutions          =
EnumeratedResolutionBitdepths       = all

DitheringEffect                     = pure32bit
Dithering                           = forcealways
DitherOrderedMatrixSizeScale        = 0
DepthBuffersBitDepth                = appdriven

MSD3DDeviceNames                    = false
RTTexturesForceScaleAndMSAA         = true
SmoothedDepthSampling               = true

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

[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
XJDHDR
Newbie
 
Posts: 18
Joined: 2015-5-17 @ 16:37

Re: Impressions Games' City Building series

Postby ZellSF » 2018-9-28 @ 14:35

You've made no mention whether "Disable Alt-Enter to toggle screen state" was experimented with? I found it a pretty critical setting to test for windowed mode.
ZellSF
Oldbie
 
Posts: 1247
Joined: 2006-1-01 @ 18:19

Re: Impressions Games' City Building series

Postby XJDHDR » 2018-9-28 @ 21:27

ZellSF wrote:You've made no mention whether "Disable Alt-Enter to toggle screen state" was experimented with? I found it a pretty critical setting to test for windowed mode.

Thank you for the suggestion. In all of the above tests, I used the default option which was "DisableAltEnterToToggleScreenMode = true". When I set that option to false, things did change slightly. The results I had were the same as with the option at True with the following exceptions:

All 4 games: When I had the games configured to Windowed mode and was running the original GOG version, the games would initially start in Windowed mode with a border but switch to Borderless Windowed after about 2 seconds after starting. However, the window looks like it has just had a black overlay applied on top of the title bar and border rather than removing them. Additionally, the mouse's activation point was moved to about 30 pixels below where the mouse appeared to be. I've attached some screenshots demonstrating this. In each case, the mouse cursor was where the red dot I drew is. In each case, you can see that the mouse is activating objects below where I'm pointing the cursor.
I don't get these two problems when I use the unofficial widescreen patched versions of the games. There is no black border present and the mouse's activation point is where the mouse cursor is rendered.

Caesar 3: When set to Fullscreen mode and running the original GOG version of the game, it starts demonstrating the same black screen bug that I saw in the other three games.

Pharaoh: When using the unofficial widescreen version, the game runs in a Borderless Window without issue regardless of whether I configure the game to Fullscreen or Windowed mode.

Zeus: Unofficial widescreen version runs in a Borderless Window even if configured to Windowed mode. Background image being drawn over buttons is still a problem.

Emperor: Unofficial widescreen version starts Borderless in correct position but moves to the wrong position I mentioned in my 3rd post after a few seconds. Every 3 seconds or so, the entire window gets moved to the left to where it should be for a split second but then moves back to the right again after that.

Caesar 3.png
Caesar 3 - Original GOG version - Windowed mode

Pharaoh.png
Pharaoh - Original GOG version - Windowed mode

Zeus.png
Zeus - Original GOG version - Windowed mode

Emperor.png
Emperor - Original GOG version - Windowed mode
XJDHDR
Newbie
 
Posts: 18
Joined: 2015-5-17 @ 16:37


Return to dgVoodoo General

Who is online

Users browsing this forum: Weebob and 3 guests