VOGONS


First post, by jrichey98

User metadata
Rank Newbie
Rank
Newbie

First off I just wanted to say thanks for programming dgVoodoo2. I've used it for years and I absolutely love it when playing old games. It also let's me use ReShade on all old games, which won't work on some by itself. I can use an older version, however I threw something at your PayPal already as encouragement to keep maintaining it, and let you know how much I really appreciate it. Also definitely encourage others to pay it forward as well.

Game: Deus Ex - Invisible War
Issue: There is a double cursor / not disappearing cursor in the 3D rendered part of the game. It's fine upon loading the game, but the first time you go to load a UI element the cursor appears, but doesn't disappear once you exit the screen.
dgVoodoo2 stats: Working <= 2.7; 2.71 <= Broken => 2.79_3
Log: https://drive.google.com/file/d/1M8gqHL4KLDNZ … iew?usp=sharing

Log - Filter "Curser" Include:
0.000000 2022/10/13 03:21:34.029 0 DebugView++.exe File Identification Header, DebugView++ Format Version 1
0.310763 2022/10/13 02:27:35.084 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
2.705350 2022/10/13 02:27:37.479 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 0)
2.727346 2022/10/13 02:27:37.501 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
2.728039 2022/10/13 02:27:37.501 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 0)
14.386653 2022/10/13 02:27:49.160 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 1)
14.386679 2022/10/13 02:27:49.160 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorPosition (this = c078800, XScreenSpace = 1280, YScreenSpace = 700)
14.388905 2022/10/13 02:27:49.163 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
14.389247 2022/10/13 02:27:49.163 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 1)
14.766053 2022/10/13 02:27:49.539 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
14.766520 2022/10/13 02:27:49.540 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 1)
15.139335 2022/10/13 02:27:49.913 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
15.140193 2022/10/13 02:27:49.914 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 1)
15.524356 2022/10/13 02:27:50.298 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
15.524981 2022/10/13 02:27:50.299 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 1)
15.906148 2022/10/13 02:27:50.679 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
15.906788 2022/10/13 02:27:50.680 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 1)
16.273729 2022/10/13 02:27:51.047 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 0)
17.646904 2022/10/13 02:27:52.420 3604 Deus Ex Invisible War.dblog Direct3D8Device::SetCursorProperties (this = c078800, XHotSpot = 0, YHotSpot = 0, pCursorBitmap = defa9c4)
17.647371 2022/10/13 02:27:52.421 3604 Deus Ex Invisible War.dblog Direct3D8Device::ShowCursor (this = c078800, bShow = 0)

Log Analysis:
After loading a save, it does a ShowCursor set to 0. The cursor is not present on screen (other than the center screen graphic). At 14 seconds in was when I was finally able to get over and click something. You can see a ShowCursor 1, followed immediately by a SetCursorPosition 1280 x 700. It shows ShowCursor 1 a few more times, but eventually shows a ShowCursor 0 @ 16.273729, which was caused by me exiting the ui menu. The cursor is not supposed to be present after that. The final ShowCursor 0 at 17.647371 is from me alt-tabbing out of the window.

I tried to capture as little logs as relevant to keep the log size down, however from going into the window multiple times, you enter and it does a ShowCursor 1 and the cursor shows up. When you exit it does a ShowCursor 0 and the cursor doesn't ever disappear after that. There is another game cursor, but I'm pretty sure it is just a reticle drawn on the screen, not an actual cursor as far as DX is concerned. ShowCursor 0 seems to be non-functional.

I've never done any DirectX programming, so I hope I'm not throwing a red herring here. Just trying to do as much on my end as I could to help with the issue.

Sincerely,
--Jem

Edit: Further information discovered. With 2.70 changing ScalingMode from unspecified to centered_af will cause an identical issue. However with 2.79_3 it does it on ScalingMode unspecified as well.
Edit2: Works best with 2.64 or earlier, still had some issues with 2.70. Attached is working 2.64 dgVoodoo.conf & Default.ini from Invisible War (set for widescreen & 2560x1440). No mod's, ReShade is working well.

Attachments

  • Filename
    Default.ini
    File size
    49.38 KiB
    Downloads
    46 downloads
    File license
    Public domain
  • Filename
    dgVoodoo.conf
    File size
    15.16 KiB
    Downloads
    48 downloads
    File license
    Public domain
  • 20221013_040230.jpg
    Filename
    20221013_040230.jpg
    File size
    1.52 MiB
    Views
    767 views
    File license
    Public domain

Reply 1 of 2, by Dege

User metadata
Rank l33t
Rank
l33t

Jem,

Thanks for the donation and the extensive description for the problem! I'm sorry about checking this issue out and responding to it so late.

Yes, you're right, Direct3D8Device::ShowCursor with bShow = FALSE doesn't work as expected. In the older versions the device cursor implementation was kinda trash (problems with FFXI) so I rewrited that part from scratch. That's when this bug must have appeared in the code.

Now I fixed it and tested with all cases (hardware cursor, emulated cursor), and it works with this game. But of course, it should do it with others too. 😀

Reply 2 of 2, by jrichey98

User metadata
Rank Newbie
Rank
Newbie

Dege,

Glad my digging was able to shed some light on the issue. I know this takes time, and the work you've done and shared with everyone is amazing and appreciated. I use it for all my old games.

Sincerest thanks,
--Jem