Thief 1/2 & SShock 2: DDFix and Enhanced Resolution Patch - discussion - by bikerdude
Timeslip on 13/3/2008 at 16:15
There's not a lot I can do if it doesn't work on radeons; I don't have one to test with, so I have no way of knowing what the problem is. :(
bikerdude on 13/3/2008 at 16:21
Quote Posted by Timeslip
There's not a lot I can do if it doesn't work on radeons; I don't have one to test with, so I have no way of knowing what the problem is. :(
Where are you located, I could send you an AGP/PCI Radeon X300 foc if you aint miles away from me..
biker
Timeslip on 13/3/2008 at 16:31
Quote Posted by Bikerdude
Where are you located, I could send you an AGP/PCI Radeon X300 foc if you aint miles away from me..
biker
Thanks for the offer, but it's not a lot of use without a spare computer hanging round to stick it in. ;)
If there's anyone with a radeon who know's their way around visual studio, telling me the last function called before the Direct3DDevice3 interface gets released would be a useful start. (I didn't include source code in the latest download, but if anyone wants it just ask.) If not, I can add some debugging code to keep track of which functions are being called and which ones are failing.
Hiatus on 13/3/2008 at 16:41
@Timeslip:
which version of VS would be ok? I could try (maybe - can't promise) during the weekend. Meanwhile, please add debug code (separate debug release for ATI users, preferably) so we can tell you where it fails (also, source code included would be nice :)).
btw: does this DX6 version of your fix less of performance fix than DX9 one? DX9 one was ~20% performance drop (compared with T2 running w/o ddfix) in CPU bound places in the game (that with overlay enabled; with overlay disabled it was even ~5% faster than vanilla version). Is it possible to disable overlay in this version for performance boost?
also: I noticed with previous DX9 version of ddfix (1.1.1) that even though it had good framerates, it felt slightly laggy (some kind of micro lag, had to describe it) for me, compared with vanilla one. It just didn't feel as smooth - I suspect some additional CPU usage in your version, giving this impression. It was not big of a difference, but still noticeable for me when playing right after vanilla version. Do you have an explanation what might be causing it, and would it be possible for you to further optimize it, bringing it to par with vanilla version regarding smoothnes/lack of micro lag/stattering? That would be awesome.
last thing I noticed in 1.1.1 (and also 1.2.1) is that text in menus (i.e. save game list) in a bit blurry now when using res of 1024x768 (on CRT screen - didn't try any other resolutions). Vanilla version is always 640x480 in menus, regardless of chosen res if I'm correct, and it is not blurry/fuzzy. Again, do you have an idea what might be causing this, and any way of fixing it, possibly?
Timeslip on 13/3/2008 at 18:09
Quote Posted by Hiatus
which version of VS would be ok? I could try (maybe - can't promise) during the weekend. Meanwhile, please add debug code (separate debug release for ATI users, preferably) so we can tell you where it fails (also, source code included would be nice :)).
I know vs2005 and 2008 both work. Anything down to vs6 should work with a few lines changed. A debug dll and source code can be downloaded (
http://timeslip.chorrol.com/temp/ddfixDebug.7z) here.
Switching out the 1.2.1 dll with the version included in that download and running thief until it crashes should create a file called ddfix-log.txt in thief's directory. (Or somewhere in the virtual store, if you're using vista...) Can you give me the contents of that?
Quote Posted by Hiatus
btw: does this DX6 version of your fix less of performance fix than DX9 one? DX9 one was ~20% performance drop (compared with T2 running w/o ddfix) in CPU bound places in the game (that with overlay enabled; with overlay disabled it was even ~5% faster than vanilla version). Is it possible to disable overlay in this version for performance boost?
I haven't benchmarked it, but it might be a bit faster. It's still checking every vertex to make sure none have a z coord of exactly 1, but the secondry surface I use to let thief draw text to the screen now gets blacked by the graphics card instead of the cpu, which probably makes it a bit faster.
There's no way to disable the overlay anymore. In any case, I'm surprised if you've managed to find a computer slow enough to notice a 5% performance change, but which has a graphics card new enough to require ddfix. :p
Quote Posted by Hiatus
also: I noticed with previous DX9 version of ddfix (1.1.1) that even though it had good framerates, it felt slightly laggy (some kind of micro lag, had to describe it) for me, compared with vanilla one. It just didn't feel as smooth - I suspect some additional CPU usage in your version, giving this impression. It was not big of a difference, but still noticeable for me when playing right after vanilla version. Do you have an explanation what might be causing it, and would it be possible for you to further optimize it, bringing it to par with vanilla version regarding smoothnes/lack of micro lag/stattering? That would be awesome.
Probably the fault of vwait, or because I was trying to copy 10mb of gunk to the graphics card just before flipping the backbuffer.
Either way, 1.2 shouldn't be effected.
Quote Posted by Hiatus
last thing I noticed in 1.1.1 (and also 1.2.1) is that text in menus (i.e. save game list) in a bit blurry now when using res of 1024x768 (on CRT screen - didn't try any other resolutions). Vanilla version is always 640x480 in menus, regardless of chosen res if I'm correct, and it is not blurry/fuzzy. Again, do you have an idea what might be causing this, and any way of fixing it, possibly?
DX is scaling the 640x480 image up to your screen resolution now, rather than your monitor doing it as was the case with unmodded thief. It might look a bit different, but I don't think it's a bug as such, and I can't really do anything about it unless you want the menus as a 640x480 box in the top left corner of the screen.
If you don't want it bluring, you'd need to use a resolution that's exactly double 640x480. (I use my lcd's native resolution of 1280x1024, which blurs things slightly in the y direction, but isn't really noticable.)
Nameless Voice on 13/3/2008 at 18:10
I'll point out that I got the same "Could not set screen mode" error at first because the resolution set in the ddfix.ini in the latest patch was not the same resolution as the game was set to use (in cam.cfg).
So, if you get that, make sure to double-check that both of those valeus are correct.
Hiatus on 13/3/2008 at 18:28
ok, here is my ddfix-log.txt (game crashed a few secs after level load - of course it was running in 640x480x16 software mode - image like in clearing's pic above):
desktop res (CRT): 1024x768x32bit @85HZ Vsync ON for D3D
ddfix.ini: gWidth=1024; gHeight=768
cam.cfg: game_screen_size 1024 768
Code:
v1.2.1, 1024x768
Duel core fix: 1
Video fix: 0
SetDisplayMode: 640x480x16
SetDisplayMode: 1024x768x16
FAIL: -2147467263
FakeDirectDraw::CreateSurface
Line 57
Device created
SetDisplayMode: 640x480x16
FAIL: -2147467263
FakeDirectDraw::CreateSurface
Line 57
Device created
EDIT: on 2nd try with:
desktop res (CRT): 1024x768x
16bit @85HZ Vsync ON for D3D (all else the same)
game also crashes after a few secs and ddfix-log.txt contents are identical.
Timeslip on 13/3/2008 at 18:57
Quote Posted by Hiatus
ok, here is my ddfix-log.txt (game crashed a few secs after level load):
Code:
FAIL: -2147467263
FakeDirectDraw::CreateSurface
Line 57
That's a rather more useful error than I was expecting. :)
Can you redownload, and this time there should be a bit of extra detail in the error, including the width and height of the surface that failed. If it's 1024x768, then try adding the line 'UseCompatibleZBuffer=1' to ddfix.ini. If that doesn't work, or if adding that line changes the error message in the log file, try adding 'UseSysMemOverlay=1' too.
If none of that works, there should be a line in the error message 'caps: xxx' that will hopefully give me a few more ideas.
Hiatus on 13/3/2008 at 19:19
log with newer debug .dll (nothing new added to .ini yet):
Code:
v1.2.1, 1024x768
Duel core fix: 1
Video fix: 0
SetDisplayMode: 640x480x16
SetDisplayMode: 1024x768x16
FAIL: -2147467263
FakeDirectDraw::CreateSurface
Line 59
Width: 1024
Height: 768
Caps: 147456Device created
SetDisplayMode: 640x480x16
FAIL: -2147467263
FakeDirectDraw::CreateSurface
Line 59
Width: 640
Height: 480
Caps: 147456Device created
Software mode in 640x480x16 and quick crash as before.
Hiatus on 13/3/2008 at 19:22
step 2:
adding only line: UseCompatibleZBuffer=1 to ddfix.ini fixed crashes and 3D hardware accelerated mode now WORKS! (in 1024x768x16)
here's log with working 3D mode:
Code:
v1.2.1, 1024x768
Duel core fix: 1
Video fix: 0
SetDisplayMode: 640x480x16
SetDisplayMode: 1024x768x16
Device created
SetDisplayMode: 640x480x16
Now I'll try to add UseSysMemOverlay=1 line to .ini (in addition to UseCompatibleZBuffer=1) and see what happens now and will report back in a min...