Reply 40 of 48, by Deadalus
That still doesn't fix the white textures & menu fonts :\
That still doesn't fix the white textures & menu fonts :\
Unfortunately ACT 5.6 isn't working correctly with Xp 32-bit. Can't open the system applications database. And no help from Negro$oft, they with to bury WinXp and sell *censored* Windows8 to all.
Asus P4P800 SE/Pentium4 3.2E/2 Gb DDR400B,
Radeon HD3850 Agp (Sapphire), Catalyst 14.4 (XpProSp3).
Voodoo2 12 MB SLI, Win2k drivers 1.02.00 (XpProSp3).
Hey folks.
I realize this is a rather old topic, but the problem with white textures is due to the format not being compatible with newer graphics cards. That's why with older graphics cards you're able to see them.
*Some* textures are still visible, though, so there must be some format we can use that is compatible with newer graphics cards.
So, I'm thinking at some point this year I will pick this project back up, break open the archive files again, and see if I can convert the graphics to the new graphics format.
I plan to write this as a utility you can run on your original game files, so that the download is small and doesn't distribute the copyrighted material. (Even though Acclaim is toast by now, it's principle!)
Sound device guides:
Sound Blaster
Aztech
OPL3-SA
It is an old topic, the game runs perfectly on modern computers under dgVooodoo2 or WineD3D wrappers now
wrote:It is an old topic, the game runs perfectly on modern computers under dgVooodoo2 or WineD3D wrappers now
Oh, that's fantastic! Thanks for the heads up.
Sound device guides:
Sound Blaster
Aztech
OPL3-SA
Sorry for the bump, but if some random Internet wanderer ends up in this thread, like I did, do know;
- You need to do the hex edit thing posted on the first page of this thread (if you don't want or can't use Microsoft's Application Compatibility Toolkit).
- To fix the graphics rendering issues you need to use dgVoodoo and in DirectX settings set the videocard to ATI Radeon 8500.
Tested working on Windows 7 64 bit and dgVoodoo 2.54.
In case this may give birth to some bright idea, this is what happens from the DxWnd point of view, that is close to the application logic:
with Wine3.0 you get this log:
BuildGenericEmu: lpdd=54d59a0 pCreateSurface=66cc6af0 lpddsd=698a00 version=2
FixSurfaceCaps: INPUT Flags=21007(DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+MIPMAPCOUNT) Caps=401808(DDSCAPS_COMPLEX+SYSTEMMEMORY+TEXTURE+MIPMAP)
FixSurfaceCaps: OUTPUT Flags=21007(DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+MIPMAPCOUNT) Caps=401808(DDSCAPS_COMPLEX+SYSTEMMEMORY+TEXTURE+MIPMAP)
BuildGenericEmu: CREATED lpddsd=9ed04d0 version=2 SurfaceDesc: [Emu Generic] Flags=21007(DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+MIPMAPCOUNT) Width=64 Height=32 MipMapCount=1 Caps=401808(DDSCAPS_COMPLEX+SYSTEMMEMORY+TEXTURE+MIPMAP) PixelFormat flags=40(DDPF_RGB) BPP=16 RGB=(f800,7e0,1f)
Hooking surface dds=9ed04d0 dxversion=2 prim=0 thread_id=17fc
In same situation but no Wine, just genuine ddraw:
BuildGenericEmu: lpdd=1c6bc40 pCreateSurface=5d42617e lpddsd=698a00 version=2
FixSurfaceCaps: INPUT Flags=21007(DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+MIPMAPCOUNT) Caps=401808(DDSCAPS_COMPLEX+SYSTEMMEMORY+TEXTURE+MIPMAP)
FixSurfaceCaps: OUTPUT Flags=21007(DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+MIPMAPCOUNT) Caps=401808(DDSCAPS_COMPLEX+SYSTEMMEMORY+TEXTURE+MIPMAP)
BuildGenericEmu: CreateSurface ERROR res=80070057(DDERR_INVALIDPARAMS) at 768
BuildGenericEmu: ERROR SurfaceDesc: [Emu Generic] Flags=21007(DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+MIPMAPCOUNT) Width=32 Height=48 MipMapCount=1 Caps=401808(DDSCAPS_COMPLEX+SYSTEMMEMORY+TEXTURE+MIPMAP) PixelFormat flags=40(DDPF_RGB) BPP=16 RGB=(f800,7e0,1f)
In conclusion, it seems that wine allows the creation of 16bit mipmapped textures and genuine ddraw doesn't. I (sorry, let me introduce myself, I'm the coder of DxWnd ..) already tried to disable the MIPMAP requests but something still doesn't work. I'm still working on this..
Good! Though the result is not perfect, I found an interesting trick: if when DxWnd finds a surface creation operation like the ones descibed above, if the mipmap and complex capabilities are cleared then the operation doesn't fail and the result is much better with the white textures properly colored. I'm posting a few screenshots on DxWnd SourceForce forum....
@SaxxonPike: this is the code of the DxWnd tweak. If you still want to patch the game, the operation could be simpler: find all occurrences of ddraw CreateSurface in the assemply that request the unsupported capabilities (that is DDSCAPS_MIPMAP + DDSCAPS_COMPLEX + DDSCAPS_TEXTURE, possibly not in many places) and trim them down changing the values passed to CreateSurface.
#define DDSD_MARKER (DDSCAPS_MIPMAP|DDSCAPS_COMPLEX|DDSCAPS_TEXTURE)
if ((lpddsd->dwFlags & DDSD_MIPMAPCOUNT) &&
((lpddsd->ddsCaps.dwCaps & DDSCAPS_MARKER) == DDSCAPS_MARKER)
){
lpddsd->dwFlags &= ~DDSD_MIPMAPCOUNT;
lpddsd->dwMipMapCount = 0;
lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_MIPMAP|DDSCAPS_COMPLEX);
}