VOGONS


First post, by Krolin

User metadata
Rank Newbie
Rank
Newbie
Darkness Knight wrote on 2022-11-10, 18:47:

Hi, I'm using the latest version of dgvoodoo2 and I can't change the resolution in the game Colin McRae Rally (1), any ideas?

EDIT: My mistake, sorry... saludos!

Forcing resolution through dgVoodoo (even as low as 320x240) causes 99% GPU usage in vehicle setup menu.

cmr1_menu_gpu_usage.png
Filename
cmr1_menu_gpu_usage.png
File size
155 KiB
Views
2323 views
File license
Public domain

Another thing I noticed was camera jitter when motion smoothness is off.

Strangely enough, setting compatibility mode to Windows 98 fixes the camera stutter but menu turns into a slide show.

cmr1_menu_gpu_usage_win98.png
Filename
cmr1_menu_gpu_usage_win98.png
File size
150.18 KiB
Views
2323 views
File license
Public domain
Last edited by Krolin on 2023-05-17, 08:04. Edited 1 time in total.

Reply 1 of 12, by Dege

User metadata
Rank l33t
Rank
l33t

Higher GPU usage is a known thing, altough it's been a long time I looked into this particular game. I mean, what happens under the hood.
What GPU is it? My IntelHD 530 renders those menus at 60fps, altough the GPU usage is indeed high.

Reply 2 of 12, by Krolin

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2023-04-28, 15:40:

Higher GPU usage is a known thing, altough it's been a long time I looked into this particular game. I mean, what happens under the hood.
What GPU is it? My IntelHD 530 renders those menus at 60fps, altough the GPU usage is indeed high.

GTX 960M but my laptop also has an Intel HD 530. I tried disabling GTX 960M in BIOS, so only HD 530 is involved.
Looks like GPU usage also jumps to 100% when resolution is unforced, but now it runs even worse than GTX 960M.
I'm on Windows 10 22H2 and using the latest dgVoodoo 2.8.1

Resolution: Unforced

cmr1_resolution_unforced.png
Filename
cmr1_resolution_unforced.png
File size
732.89 KiB
Views
2138 views
File license
Public domain

Resolution: 320x240

cmr1_resolution_320x240.png
Filename
cmr1_resolution_320x240.png
File size
648.96 KiB
Views
2138 views
File license
Public domain

Reply 3 of 12, by Dege

User metadata
Rank l33t
Rank
l33t

It's weird, but anyway your unforced resolution seems to be very large (I must be using 640x480 or sg like that). How can resolution be set in this game?
Generally speaking, for these old games (reading back videomemory or rendering into 8 bit surfaces like this game) it's better to select a small ingame resolution and force the resolution externally through dgVoodoo (set it to 'Max').

Reply 4 of 12, by Krolin

User metadata
Rank Newbie
Rank
Newbie

In-game resolution can be set in Options -> Settings -> Graphics -> Advanced.
It seems hard-coded to support only 4 resolutions: 320x240, 512x384, 640x480 and 800x600.
Mine was set to 800x600 and I was running the game in borderless fullscreen (fullscreen exclusive didn't help either).

I tried in-game 320x240 and dgVoodoo Max and it's the same as before: 99% GPU usage in vehicle setup menu.
Unlike the HD 530, Unforced resolution is fine with GTX 960M (30-40% GPU usage).

Reply 6 of 12, by Dege

User metadata
Rank l33t
Rank
l33t

I did some captures from the menu and I couldn't see anything unusual. Aside from the fact that 2d shaders could be specialized/optimized, I think I'll do it finally.

Btw, do you see any difference between dgV 2.8.x and 2.79.3? I made an optimization for P8 surfaces that should affect this game. So, the old one is better, worse or the same?

Reply 7 of 12, by Krolin

User metadata
Rank Newbie
Rank
Newbie

I haven't tested HD 530 yet but CMR1 runs better on version 2.79.3

GTX 960M at forced desktop resolution:
2.8.2 - 47 FPS, 99% usage
2.79.3 - 60 FPS, 50% usage

It would be great if Windows 98 compatibility mode didn't have these menu issues as well (goes as low as 2 FPS).
Win98 mode fixes jitter during gameplay which happens on modern OSes for some reason when motion smoothness is off.

Reply 8 of 12, by Dege

User metadata
Rank l33t
Rank
l33t

Indeed, finally I could reproduce it. In 2.8 I did a fix for P8 surfaces which was also an optimization for performance (for example Jazz Jack Rabbit 2 got a significant performance increase on my Intel IGP).
It turned out that something was missed in the optimization, that can cause some overhead in general but CMRally's surface access pattern cumulates that lot of small overheads into a large one.
Anyway, I implemented the needed part and now CMRally menu needs ~14% less GPU for the same performance as 2.79.3 (Intel HD).

Win98 mode is indeed very slow. It's not directly dgVoodoo, something seems to cause a lot of waiting in dx11 but I didn't yet look into it deeply. D3D12 doesn't even work, it crashes somewhere in the dx runtime.

Reply 9 of 12, by Krolin

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2023-05-17, 19:02:

Indeed, finally I could reproduce it. In 2.8 I did a fix for P8 surfaces which was also an optimization for performance (for example Jazz Jack Rabbit 2 got a significant performance increase on my Intel IGP).
It turned out that something was missed in the optimization, that can cause some overhead in general but CMRally's surface access pattern cumulates that lot of small overheads into a large one.
Anyway, I implemented the needed part and now CMRally menu needs ~14% less GPU for the same performance as 2.79.3 (Intel HD).

It wasn't implemented in v2.8.2 I suppose? Still the same behaviour as v2.8.1

By the way, I found a way to greatly mitigate jitter without Win98 compat mode - combining DxWrapper (DDrawCompat v0.2.1) and dgVoodoo:
1. Copy dxwrapper.dll and dxwrapper.ini (or AllSettings.ini) to CMR1 folder, rename them to winmm.dll and winmm.ini
2. Open winmm.ini, set "DDrawCompat = 1" and "DDrawCompat21 = 1"
3. Copy D3DImm.dll and DDraw.dll from dgVoodoo MS\x86 folder to CMR1 folder

Reply 10 of 12, by Dege

User metadata
Rank l33t
Rank
l33t
Krolin wrote on 2023-06-10, 22:35:
It wasn't implemented in v2.8.2 I suppose? Still the same behaviour as v2.8.1 […]
Show full quote
Dege wrote on 2023-05-17, 19:02:

Indeed, finally I could reproduce it. In 2.8 I did a fix for P8 surfaces which was also an optimization for performance (for example Jazz Jack Rabbit 2 got a significant performance increase on my Intel IGP).
It turned out that something was missed in the optimization, that can cause some overhead in general but CMRally's surface access pattern cumulates that lot of small overheads into a large one.
Anyway, I implemented the needed part and now CMRally menu needs ~14% less GPU for the same performance as 2.79.3 (Intel HD).

It wasn't implemented in v2.8.2 I suppose? Still the same behaviour as v2.8.1

By the way, I found a way to greatly mitigate jitter without Win98 compat mode - combining DxWrapper (DDrawCompat v0.2.1) and dgVoodoo:
1. Copy dxwrapper.dll and dxwrapper.ini (or AllSettings.ini) to CMR1 folder, rename them to winmm.dll and winmm.ini
2. Open winmm.ini, set "DDrawCompat = 1" and "DDrawCompat21 = 1"
3. Copy D3DImm.dll and DDraw.dll from dgVoodoo MS\x86 folder to CMR1 folder

No, it's not released yet. I'm working on the code generator for the 2D infrastructure, hoping for better performance with iGPU's and that the AMD D3D11 solid color textures will be gone.
But it's a little bit complicated and unfortunately I have ridiculously little time for dgVoodoo, so it's going slow.

Reply 11 of 12, by Myloch

User metadata
Rank Oldbie
Rank
Oldbie

Take your time dude. Dgvoodoo2 rocks. I'm particularly interested in future refinements of fmv, gdi and ddraw hooks.

"Gamer & collector for passion, I firmly believe in the preservation and the diffusion of old/rare software, against all personal egoisms"

Reply 12 of 12, by Krolin

User metadata
Rank Newbie
Rank
Newbie
Krolin wrote on 2023-06-10, 22:35:
By the way, I found a way to greatly mitigate jitter without Win98 compat mode - combining DxWrapper (DDrawCompat v0.2.1) and dg […]
Show full quote

By the way, I found a way to greatly mitigate jitter without Win98 compat mode - combining DxWrapper (DDrawCompat v0.2.1) and dgVoodoo:
1. Copy dxwrapper.dll and dxwrapper.ini (or AllSettings.ini) to CMR1 folder, rename them to winmm.dll and winmm.ini
2. Open winmm.ini, set "DDrawCompat = 1" and "DDrawCompat21 = 1"
3. Copy D3DImm.dll and DDraw.dll from dgVoodoo MS\x86 folder to CMR1 folder

I completed the game with WIP92.1, everything is perfect aside from one lag spike when crossing a bridge in Corsica Stage 5 (only happens when object draw distance is set to max).

DxWrapper is no longer necessary, setting Rally.exe CPU affinity to a single core is enough to fix jitter issues. I used Process Lasso, though it would be cool if dgVoodoo had this option as well :)

For anyone else playing this game, I also recommend enabling Fast Video Memory Access and Bilinear DD/CPU Operations.