Cxbx-Reloaded / game-compatibility

Cxbx-Reloaded game compatibilty list, using GitHub issues
GNU General Public License v2.0
115 stars 29 forks source link

RainbowSix 3 [Tom Clancy's Rainbow Six 3] [US-019] [1.01] #499

Open Fisherman166 opened 6 years ago

Fisherman166 commented 6 years ago

Description

The game gets to the bootup loading screen before throwing an exception. No sound is present.

Received Exception Code 0xC0000005 @ EIP := 0x51106E0F

Dumps

RainbowSix3_Xbe.txt RainbowSix3_KrnlDebug.txt RainbowSix 3_HLECache.txt

Status

Previous behavior: None Reported.

Current behavior: The game gets to the bootup loading screen before throwing an exception. No sound is present.

Screenshots

capture

Additional Information

Tested on commit: f5ea8c693bc1d5a52dfc609ceae58aebf7a4a9f8 (Jan 05, 2018)

Fisherman166 commented 6 years ago

New XBE with direct FTP dump from disc drive.

Xbe.txt

Fisherman166 commented 6 years ago

With Pull Request #848 (git commit 5ce5da70368d5a3b0129b059a05c43e26fedf078), the game now gets passed the Ubisoft intro, the game intro (but ends quickly without pressing any buttons), and the ESRB online rating warning before throwing an exception:

Received Exception Code 0xC0000005 @ EIP := 0x0405A5FE

I traced the error down to the patched D3DTexture_GetSurfaceLevel2 function:

HLECache: 0x003b9000 -> D3DTexture_GetSurfaceLevel2 PATCHED

In that function, this function call is returning a null pointer:

IDirect3DTexture8 *pHostTexture = GetHostTexture(pThis);

Tracing back up further, GetHostTexture() returns the value of pThis->Lock. In this case, pThis->Lock = 0x0, which causes a nullptr exception when this line is executed shorty after:

HRESULT hRet = pHostTexture->GetSurfaceLevel(Level, &pNewHostSurface);

Placing a data breakpoint on pThis->Lock shows only one place where it is being modified before the exception is thrown. A 'rep movs' instruction seems to set the value. From the debug KrnlDebug logs and the disassembly of the location where pThis->Lock is modified, it looks like NV2A operations are occurring, but nothing is happening of course since the N2Va operations are NOPs essentially...At this point I do not know where to take the debug further and will defer to the experts.

KrnlDebug.txt

LukeUsher commented 6 years ago

Sounds like a missing direct3d patch. Either a function we implement and didn't find in this title, or one we don't know about at all. Game needs investigation to figure out what function it is. (Currently we need to patch all functions that alter the Lock field)

frankyfife commented 6 years ago

Description

Cxbx-Reloaded (Version 16256597 (May 16 2018))

The menus are displayed completely, it is possible to come in-game. The hud is displayed completely, but no environment graphics, the sound output is perfect. The intro videos are not played or are not displayed graphically. Once in-game you can move and look around (but only the hud is displayed), no error messages appear.

Status

Previous behavior:

state-booting

Current behavior:

state-interactive

Screenshots

image image image

LeRutY commented 6 years ago

Nightvision is disorted, Thermal vision is just a blank blue. Some soundeffects are missing from the start (ingame) like zooming in. Many other soundeffects get lost after a minute while in a mission, they also don´t come back when restarting mission etc. Game gets stuck when loading a NEW mission, restarting played mission will work. Ingame saving doesn´t work, outputs this error message:

error 5

LeRutY commented 4 years ago

Not being able to get into missions anymore, it´s worse now. Crashing and getting this error where the loading sequence should be (has always been a black screen) CXBX