Think this is only supportable if we heavily abuse implementation details and allocate our own vtable, but we don't know the size of it since we don't have low-level access to it like a C implementation would.
I really don't want to do this, especially not for some obscure mod.
Nothing extracted yet.
When mod attempts to hook into the game, it crashes with
Unhandled page fault on write access.Crash happens at this particular line.
It takes
IDirect3DDevice9*from the game, and tries to hook theReset,BeginStateBlock,EvictManagedResourcesfunctions by overwriting their entries in vtable.Apparently native D3D9 allows that.
The more cursed part is that at some point it resets the vtable, which is what mod also expects, and it rehooks after
BeginStateBlock.WineD3D runs into the same issue.
With a couple of hacks, I was able to get it running on WineD3D, by removing the
constfrom the D3D9 vtable; and copying the vtable on initialization andAddReffor resetting part.Steps to reproduce:
It's probably too cursed and niche to support properly, so mostly leaving it here for the sake of documenting an edge case.
Software information
Melty Blood Actress Again Current Code, community edition, with CCCaster and MBAACC-Extended-Training-Mode
System information
Log files
wine-log-with-dxvk.txt