As part of my symbol debugger branch I want to make use of the HLECache INI files for symbol/address lookup.
In some cases there are multiple symbols to _one address_ (!!). These symbols, for example:
D3DDevice_LazySetStateVB=179a20
D3DDevice_SetStateVB_UNPATCHED=179a20
It could be that the bytecode used to identify the function is too vague?
Here are the headers from one such title (Grabbed by the Ghoulies-9a254e88.ini):
[Certificate]
Name=Grabbed by the Ghoulies
TitleID=4d530053
Region=1
[Libs]
XAPILIB=5659
D3D8=5659
D3DX8=5659
XGRAPHC=5659
XBOXKRNL=5659
LIBCMT=5659
LIBCPMT=5659
XACTENG=5659
DSOUND=5659
D3D8_BuildVersion=5659
@jarupxx Could you look into this perhaps?
I will look into this. These two OOVPA are very similar.
These symbols have been fixed by PR #833. As far as I tested other symbols look good.
@x1nixmzeng Could you retest with this fix?
@jarupxx Thanks for your quick response, it's very much appreciated!
Many thanks @jarupxx this is resolved with your change (after clearing my AppData\Roaming\Cxbx-Reloaded\HLECache folder)
Any idea why HLEDatabaseVersion hasn't updated in the INI files though? The latest file still reads:
[Info]
HLEDatabaseVersion=Tue Oct 31 23:14:19 2017
The HLEDatabaseVersion is declared as __TIMESTAMP__ in src/CxbxKrnl/HLEDataBase.cpp
Perhaps that macro returns the last modified timestamp of that file, instead of the time the solution was compiled?
And indeed : https://stackoverflow.com/a/27691135
So, it's reflecting the last modified time of HLEDataBase.cpp, which doesn't reflect the modification of included OOVPA definitions.
It should be using the most recent modification timestamp of all OOVPA declaration files. But how can we arrange that?
Maybe best to create a separate issue for that.
We need somewhere we can define that timestamp so that it is only updated when the HLE database actually changes: Perhaps it's worth just hashing the entire HLE database and storing that hash in the cache file. The purpose of this is so that we can re-use HLECache files across Cxbx-Reloaded revisions in which the HLE database did not change at all, while not needing to be manually cleared when the database is updated.
The last remark got addressed here : https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/issues/836
Most helpful comment
These symbols have been fixed by PR #833. As far as I tested other symbols look good.