Asterix Gaming Guild Logo GeneralXXLXXL 2XXL 3XXXLOlympic GamesXXL EditorToolsOff-TopicXXL RomasteredXXL 2 RemasteredOther GamesModsCaesar's ChallengeUnfair XXLPatchesFan ArtPersonal ArtSpeedrunningMediaRandomizerBETA RomeHSKALPresence AdrienPresence SPQRPresence Mr. RubinshteinSupport Bot Helpdesk

#general

baku69
oof
schmeling65
<- still on 23H2
schmeling65
only 24H2 recieves this update. but still: Adrien and Heso should both be able to guide you through it. Usually you just say the debugger "hey, start this file, attach yourself to it" and the rest should go on its own. And because it crashes right at the start, it should come to a break very quickly and then you should be able to trace down the place which actually check why there is an Access Violation.
adrientd
So according to this report, the game crashed at file offset 0x1F3EAC, and you have to add 0x400000 to get the memory address of 0x5F3EAC In IDA it looks like this (highlightned light is where it crashed)
adrientd
And indeed it looks like it's trying to call QueryInterface on a COM object, could be DirectSound
adrientd
This is the GUID passed
adrientd
and found it
schmeling65
well, told you. Something got found by *someone* xD So it is a function called `IID_DirectSoundFXI3DL2Reverb` That is causing problems.
baku69
So how we can fix it now ?
adrientd
It's not a function, it's an ID to a COM interface
adrientd
What I've found so far is that the game crashes while trying to get a reverb effect interface from a sound buffer (I guess). But the pointer to the sound buffer is null or invalid.
schmeling65
most likely invalid. So now we need to know why the pointer is invalid
adrientd
An interesting thing is that in the DirectX documentation, it says that to get an access to IDirectSoundFXI3DL2Reverb, you have to call a method named `GetObjectInPath`, but the game uses QueryInterface instead... Probably not the actual issue, but why? :FrogThinking:
schmeling65
that's different. There is an 8 at the end
adrientd
The same :Obelul:
schmeling65
oh welp xD
schmeling65
is that actually a struct?
adrientd
It's a COM interface.
adrientd
It's like a class with only virtual methods defined.
schmeling65
like these? ``` pub unsafe fn SetAllParameters( &self, pcdsfxi3dl2reverb: *const DSFXI3DL2Reverb, ) -> Result<()> pub unsafe fn GetAllParameters( &self, pdsfxi3dl2reverb: *mut DSFXI3DL2Reverb, ) -> Result<()> pub unsafe fn SetPreset(&self, dwpreset: u32) -> Result<()> pub unsafe fn GetPreset(&self) -> Result pub unsafe fn SetQuality(&self, lquality: i32) -> Result<()> pub unsafe fn GetQuality(&self) -> Result ```