elishacloud / dxwrapper

Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game processes.
zlib License
1.16k stars 83 forks source link

RF Online v1.0.3, vsync not work after first resize game window in built-in windowed mode #116

Open sun1ight opened 3 years ago

sun1ight commented 3 years ago

After the second resize it works again, after the third it stops, after the fourth it works again, etc... With "WindowModeBorder = 1" the same happens, borders are lost after the first window resize.

My settings: [General] DisableLogging = 0

[Compatibility] D3d8to9 = 1 HandleExceptions = 1 DisableHighDPIScaling = 0 ResetScreenRes = 0

[d3d9] AnisotropicFiltering = 1 AntiAliasing = 1 EnableVSync = 1 ForceVsyncMode = 1

Logs: 20096 04:23:00.233 Starting DxWrapper v1.0.6483.21 20096 04:23:00.233 To Be Filled By O.E.M. To Be Filled By O.E.M. To Be Filled By O.E.M. (Desktop) 20096 04:23:00.233 ASRock Z390 Taichi Ultimate (Desktop) 20096 04:23:00.234 NVIDIA GeForce RTX 2080 Ti 20096 04:23:00.235 Windows 10 Enterprise 64-bit (10.0.19041) 20096 04:23:00.235 "RF_Online.bin" (PID:2780) 20096 04:23:00.238 Environment variable __COMPAT_LAYER = "" 20096 04:23:00.238 Set exception handler 20096 04:23:00.238 Loaded library: kernel32.dll 20096 04:23:00.238 Finished setting exception handler 20096 04:23:00.238 Enabling d3d8to9 wrapper 20096 04:23:00.238 Enabling d3d9 wrapper 20096 04:23:00.238 Loading 'd3d9.dll'... 20096 04:23:00.242 Hooking d3d9.dll APIs... 20096 04:23:00.243 DxWrapper loaded! 20096 04:23:01.703 d8_Direct3DCreate8 20096 04:23:01.703 Starting D3d8to9 v1.11.0.0 20096 04:23:01.703 Redirecting 'Direct3DCreate8' to --> 'Direct3DCreate9' (220) 20096 04:23:01.703 d9_Direct3DCreate9 20096 04:23:01.703 Redirecting 'Direct3DCreate9' ... 20096 04:23:01.744 Creating interface m_IDirect3D9Ex::m_IDirect3D9Ex (0350BB90) 20096 04:23:01.744 Loading d3dx9_xx.dll 20096 04:23:01.839 Loaded library: d3dx9_43.dll 20096 04:23:02.023 Setting MultiSample 8 Quality 0 20096 04:23:02.023 Creating interface m_IDirect3DDevice9Ex::InitDirect3DDevice (034BFA28) 20096 04:23:02.023 Creating interface m_IDirect3DSurface9::m_IDirect3DSurface9 (0E781E68) 20096 04:23:02.023 Creating interface m_IDirect3DSurface9::m_IDirect3DSurface9 (0E781E90) 20096 04:23:02.024 Creating interface m_IDirect3DTexture9::m_IDirect3DTexture9 (0E793C38) 20096 04:23:02.024 Creating interface m_IDirect3DSurface9::m_IDirect3DSurface9 (0E781EB8) 20096 04:23:02.024 Creating interface m_IDirect3DTexture9::m_IDirect3DTexture9 (0E793BD8) 20096 04:23:02.025 Creating interface m_IDirect3DTexture9::m_IDirect3DTexture9 (0E793B30) 20096 04:23:02.028 Creating interface m_IDirect3DVertexShader9::m_IDirect3DVertexShader9 (0E793D58) 20096 04:23:02.028 Creating interface m_IDirect3DVertexDeclaration9::m_IDirect3DVertexDeclaration9 (0E793D28) 20096 04:23:02.030 Creating interface m_IDirect3DVertexShader9::m_IDirect3DVertexShader9 (0E793DB8) 20096 04:23:02.030 Creating interface m_IDirect3DVertexDeclaration9::m_IDirect3DVertexDeclaration9 (0E793E90) 20096 04:23:02.034 Creating interface m_IDirect3DVertexShader9::m_IDirect3DVertexShader9 (0E793FC8) 20096 04:23:02.034 Creating interface m_IDirect3DVertexDeclaration9::m_IDirect3DVertexDeclaration9 (0E793D70) 20096 04:23:02.034 Creating interface m_IDirect3DVertexBuffer9::m_IDirect3DVertexBuffer9 (0E793DE8) 20096 04:23:02.038 Creating interface m_IDirect3DPixelShader9::m_IDirect3DPixelShader9 (035C5698) 20096 04:23:02.043 Creating interface m_IDirect3DPixelShader9::m_IDirect3DPixelShader9 (035C5AE8) 20096 04:23:02.043 Creating interface m_IDirect3DVertexBuffer9::m_IDirect3DVertexBuffer9 (035C5C38) 20096 04:23:02.043 Creating interface m_IDirect3DVertexBuffer9::m_IDirect3DVertexBuffer9 (035C5B00) 20096 04:23:02.043 Creating interface m_IDirect3DIndexBuffer9::m_IDirect3DIndexBuffer9 (035C5CF8) 20096 04:23:02.049 Creating interface m_IDirect3DStateBlock9::m_IDirect3DStateBlock9 (035C5458) 20096 04:23:02.049 Creating interface m_IDirect3DStateBlock9::m_IDirect3DStateBlock9 (035C5218) 20096 04:23:02.050 Creating interface m_IDirect3DStateBlock9::m_IDirect3DStateBlock9 (035C5500) 20096 04:23:03.120 Creating interface m_IDirect3DIndexBuffer9::m_IDirect3DIndexBuffer9 (0FAFBBB8) 20096 04:23:03.142 Creating interface m_IDirect3DIndexBuffer9::m_IDirect3DIndexBuffer9 (0FDB3098) 20096 04:23:12.247 Creating interface m_IDirect3DPixelShader9::m_IDirect3DPixelShader9 (148A7EB8) 20096 04:23:57.648 Quiting DxWrapper 20096 04:23:57.648 Unloading libraries... 20096 04:23:57.648 Unloading exception handlers 20096 04:23:57.648 DxWrapper terminated!

elishacloud commented 1 year ago

I noticed that you have AntiAliasing enabled also. Is it just the vsync that is lost after resizing or does it affect AntiAliasing as well?

Also, it looks like you have some settings enabled you don't need. The game appears to be a Direct3D9 game so you don't need D3d8to9 and instead should have EnableD3d9Wrapper. Also, you should not need HandleExceptions or ForceVsyncMode.

Here are the settings you should need:

[Compatibility]
EnableD3d9Wrapper = 1

[d3d9]
AnisotropicFiltering = 1
AntiAliasing = 1
EnableVSync = 1

Can you try with this update: dxwrapper.zip

sun1ight commented 1 year ago

This is an old version of the game that runs exactly on d3d8 and is available on the rf-classic.com, I tried with the uploaded version, but the problem didn't resolve.

elishacloud commented 1 year ago

Is it just the vsync that is lost after resizing or does it affect AntiAliasing and other dxwrapper options as well?

sun1ight commented 1 year ago

Now I repeated the experiment again. All other parameters work. It seems that vsync does not stop working, but the frame rate decreases and it seems that the picture is intermittent and vsync does not work.

1 window resize - breaks, 2 window resize - restored, 3 window resize-breaks, 4-is restored and so on constantly.

Perhaps when changing the window size, reinitialization occurs and not all settings are applied?