Skip to content

Commit 1e624e8

Browse files
authored
Merge pull request #2492 from RadWolfie/update-xbsdb
Sync with XbSymbolDatabase changes for APIs and symbols rename
2 parents 2b19c8a + 0d07644 commit 1e624e8

6 files changed

Lines changed: 194 additions & 200 deletions

File tree

import/XbSymbolDatabase

Submodule XbSymbolDatabase updated 155 files

src/core/hle/D3D8/Direct3D9/Direct3D9.cpp

Lines changed: 109 additions & 109 deletions
Large diffs are not rendered by default.

src/core/hle/D3D8/Direct3D9/Direct3D9.h

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -76,23 +76,23 @@ xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice)
7676
X_D3DDevice **ppReturnedDeviceInterface
7777
);
7878

79-
xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ebx_ppReturnedDeviceInterface)
79+
xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice_16__LTCG_eax4_ebx6)
8080
(
8181
uint_xt Adapter,
8282
D3DDEVTYPE DeviceType,
8383
HWND hFocusWindow,
8484
X_D3DPRESENT_PARAMETERS *pPresentationParameters
8585
);
8686

87-
xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface)
87+
xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice_16__LTCG_eax4_ecx6)
8888
(
8989
uint_xt Adapter,
9090
D3DDEVTYPE DeviceType,
9191
HWND hFocusWindow,
9292
X_D3DPRESENT_PARAMETERS *pPresentationParameters
9393
);
9494

95-
xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice_4)
95+
xbox::hresult_xt WINAPI EMUPATCH(Direct3D_CreateDevice_4__LTCG_eax1_ecx3)
9696
(
9797
X_D3DPRESENT_PARAMETERS *pPresentationParameters
9898
);
@@ -171,7 +171,7 @@ xbox::hresult_xt WINAPI EMUPATCH(D3DDevice_EndVisibilityTest)
171171
dword_xt Index
172172
);
173173

174-
xbox::hresult_xt WINAPI EMUPATCH(D3DDevice_EndVisibilityTest_0)();
174+
xbox::hresult_xt WINAPI EMUPATCH(D3DDevice_EndVisibilityTest_0__LTCG_eax1)();
175175

176176
// ******************************************************************
177177
// * patch: D3DDevice_GetVisibilityTestResult
@@ -197,9 +197,9 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader)
197197
dword_xt Address
198198
);
199199

200-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle)();
201-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle)();
202-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_4)
200+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_ecx1_eax2)();
201+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_edx1_eax2)();
202+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_4__LTCG_eax1)
203203
(
204204
dword_xt Address
205205
);
@@ -428,7 +428,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexShaderConstant)
428428
dword_xt ConstantCount
429429
);
430430

431-
xbox::void_xt __fastcall EMUPATCH(D3DDevice_SetVertexShaderConstant_8)
431+
xbox::void_xt __fastcall EMUPATCH(D3DDevice_SetVertexShaderConstant_8__LTCG_edx3)
432432
(
433433
void*,
434434
dword_xt ConstantCount,
@@ -509,7 +509,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetPixelShader)
509509
dword_xt Handle
510510
);
511511

512-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetPixelShader_0__LTCG_eax_handle)();
512+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetPixelShader_0__LTCG_eax1)();
513513

514514
// ******************************************************************
515515
// * patch: D3DDevice_CreateTexture2
@@ -594,9 +594,9 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetIndices)
594594
);
595595

596596
// ******************************************************************
597-
// * patch: D3DDevice_SetIndices_4
597+
// * patch: D3DDevice_SetIndices_4__LTCG_ebx1
598598
// ******************************************************************
599-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetIndices_4)
599+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetIndices_4__LTCG_ebx1)
600600
(
601601
uint_xt BaseVertexIndex
602602
);
@@ -610,12 +610,12 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetTexture)
610610
X_D3DBaseTexture *pTexture
611611
);
612612

613-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetTexture_4__LTCG_eax_pTexture)
613+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetTexture_4__LTCG_eax2)
614614
(
615615
dword_xt Stage
616616
);
617617

618-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetTexture_4__LTCG_eax_Stage)
618+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetTexture_4__LTCG_eax1)
619619
(
620620
X_D3DBaseTexture *pTexture
621621
);
@@ -679,9 +679,9 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexData4f)
679679
);
680680

681681
// ******************************************************************
682-
// * patch: D3DDevice_SetVertexData4f_16
682+
// * patch: D3DDevice_SetVertexData4f_16__LTCG_edi1
683683
// ******************************************************************
684-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexData4f_16)
684+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexData4f_16__LTCG_edi1)
685685
(
686686
float_xt a,
687687
float_xt b,
@@ -768,7 +768,7 @@ dword_xt WINAPI EMUPATCH(D3DDevice_Swap)
768768
dword_xt Flags
769769
);
770770

771-
dword_xt WINAPI EMUPATCH(D3DDevice_Swap_0)();
771+
dword_xt WINAPI EMUPATCH(D3DDevice_Swap_0__LTCG_eax1)();
772772

773773
// ******************************************************************
774774
// * patch: IDirect3DResource8_Register
@@ -1357,20 +1357,20 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource)
13571357
uint_xt Stride
13581358
);
13591359

1360-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride)();
1360+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_0__LTCG_eax1_edi2_ebx3)();
13611361

1362-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_4)
1362+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_4__LTCG_eax1_ebx2)
13631363
(
13641364
uint_xt Stride
13651365
);
13661366

1367-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_8)
1367+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_8__LTCG_eax1)
13681368
(
13691369
X_D3DVertexBuffer *pStreamData,
13701370
uint_xt Stride
13711371
);
13721372

1373-
xbox::void_xt __fastcall EMUPATCH(D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber)
1373+
xbox::void_xt __fastcall EMUPATCH(D3DDevice_SetStreamSource_8__LTCG_edx1)
13741374
(
13751375
void*,
13761376
uint_xt StreamNumber,
@@ -1386,7 +1386,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexShader)
13861386
dword_xt Handle
13871387
);
13881388

1389-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexShader_0)();
1389+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexShader_0__LTCG_ebx1)();
13901390

13911391
// ******************************************************************
13921392
// * patch: D3DDevice_DrawVertices
@@ -1523,9 +1523,9 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetRenderTarget)
15231523
);
15241524

15251525
// ******************************************************************
1526-
// * patch: D3DDevice_SetRenderTarget_0
1526+
// * patch: D3DDevice_SetRenderTarget_0__LTCG_ecx1_eax2
15271527
// ******************************************************************
1528-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetRenderTarget_0)();
1528+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetRenderTarget_0__LTCG_ecx1_eax2)();
15291529

15301530
// ******************************************************************
15311531
// * patch: D3D_CommonSetRenderTarget
@@ -1546,7 +1546,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetPalette)
15461546
X_D3DPalette *pPalette
15471547
);
15481548

1549-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetPalette_4)
1549+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetPalette_4__LTCG_eax1)
15501550
(
15511551
X_D3DPalette *pPalette
15521552
);
@@ -1559,7 +1559,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetFlickerFilter)
15591559
dword_xt Filter
15601560
);
15611561

1562-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetFlickerFilter_0)();
1562+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetFlickerFilter_0__LTCG_esi1)();
15631563

15641564
// ******************************************************************
15651565
// * patch: D3DDevice_SetSoftDisplayFilter
@@ -1605,7 +1605,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_DeleteVertexShader)
16051605
dword_xt Handle
16061606
);
16071607

1608-
xbox::void_xt WINAPI EMUPATCH(D3DDevice_DeleteVertexShader_0)();
1608+
xbox::void_xt WINAPI EMUPATCH(D3DDevice_DeleteVertexShader_0__LTCG_eax1)();
16091609

16101610
// ******************************************************************
16111611
// * patch: D3DDevice_GetShaderConstantMode
@@ -2063,13 +2063,12 @@ void WINAPI EMUPATCH(D3D_SetCommonDebugRegisters)();
20632063
// ******************************************************************
20642064
// * patch: D3D_BlockOnTime
20652065
// ******************************************************************
2066-
void WINAPI EMUPATCH(D3D_BlockOnTime)( dword_xt Unknown1, int Unknown2 );
2066+
void WINAPI EMUPATCH(D3D_BlockOnTime)(dword_xt Time, int MakeSpace);
20672067

20682068
// ******************************************************************
2069-
// * patch: D3D_BlockOnTime_4
2070-
// One of the parameters (unknown which) passed in EAX
2069+
// * patch: D3D_BlockOnTime_4__LTCG_eax1
20712070
// ******************************************************************
2072-
void WINAPI EMUPATCH(D3D_BlockOnTime_4)( dword_xt Unknown1 );
2071+
void WINAPI EMUPATCH(D3D_BlockOnTime_4__LTCG_eax1)(int MakeSpace);
20732072

20742073
// ******************************************************************
20752074
// * patch: D3D_BlockOnResource
@@ -2082,9 +2081,9 @@ void WINAPI EMUPATCH(D3D_BlockOnResource)( X_D3DResource* pResource );
20822081
void WINAPI EMUPATCH(D3D_DestroyResource)( X_D3DResource* pResource );
20832082

20842083
// ******************************************************************
2085-
// * patch: D3D_DestroyResource__LTCG
2084+
// * patch: D3D_DestroyResource_0__LTCG_edi1
20862085
// ******************************************************************
2087-
void WINAPI EMUPATCH(D3D_DestroyResource__LTCG)();
2086+
void WINAPI EMUPATCH(D3D_DestroyResource_0__LTCG_edi1)();
20882087

20892088

20902089
// ******************************************************************

src/core/hle/Intercept.cpp

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,12 @@ void CDECL EmuRegisterSymbol(const char* library_str,
208208
uint32_t library_flag,
209209
uint32_t xref_index,
210210
const char* symbol_str,
211-
uint32_t func_addr,
212-
uint32_t revision)
211+
xbaddr symbol_addr,
212+
uint32_t build_version,
213+
uint32_t symbol_type,
214+
uint32_t call_type,
215+
uint32_t param_count,
216+
const XbSDBSymbolParam* param_list)
213217
{
214218
// Ignore registered symbol in current database.
215219
uint32_t hasSymbol = g_SymbolAddresses[symbol_str];
@@ -218,8 +222,8 @@ void CDECL EmuRegisterSymbol(const char* library_str,
218222

219223
// Output some details
220224
std::stringstream output;
221-
output << "Symbol: 0x" << std::setfill('0') << std::setw(8) << std::hex << func_addr
222-
<< " -> " << symbol_str << " " << std::dec << revision;
225+
output << "Symbol: 0x" << std::setfill('0') << std::setw(8) << std::hex << symbol_addr
226+
<< " -> " << symbol_str << " " << std::dec << build_version;
223227

224228
#if 0 // TODO: XbSymbolDatabase - Need to create a structure for patch and stuff.
225229
bool IsXRef = OovpaTable->Oovpa->XRefSaveIndex != XRefNoSaveIndex;
@@ -286,7 +290,7 @@ void CDECL EmuRegisterSymbol(const char* library_str,
286290

287291
output << "\n";
288292

289-
g_SymbolAddresses[symbol_str] = func_addr;
293+
g_SymbolAddresses[symbol_str] = symbol_addr;
290294
printf(output.str().c_str());
291295
}
292296

@@ -297,22 +301,22 @@ void EmuUpdateLLEStatus(uint32_t XbLibScan)
297301
g_EmuShared->GetFlagsLLE(&FlagsLLE);
298302

299303
if ((FlagsLLE & LLE_GPU) == false
300-
&& !((XbLibScan & XbSymbolLib_D3D8) > 0
301-
|| (XbLibScan & XbSymbolLib_D3D8LTCG) > 0)) {
304+
&& !((XbLibScan & XBSDBLIB_D3D8) > 0
305+
|| (XbLibScan & XBSDBLIB_D3D8LTCG) > 0)) {
302306
bLLE_GPU = true;
303307
FlagsLLE ^= LLE_GPU;
304308
EmuOutputMessage(XB_OUTPUT_MESSAGE_INFO, "Fallback to LLE GPU.");
305309
}
306310

307311
if ((FlagsLLE & LLE_APU) == false
308-
&& (XbLibScan & XbSymbolLib_DSOUND) == 0) {
312+
&& (XbLibScan & XBSDBLIB_DSOUND) == 0) {
309313
bLLE_APU = true;
310314
FlagsLLE ^= LLE_APU;
311315
EmuOutputMessage(XB_OUTPUT_MESSAGE_INFO, "Fallback to LLE APU.");
312316
}
313317
#if 0 // Reenable this when LLE USB actually works
314318
if ((FlagsLLE & LLE_USB) == false
315-
&& (XbLibScan & XbSymbolLib_XAPILIB) == 0) {
319+
&& (XbLibScan & XBSDBLIB_XAPILIB) == 0) {
316320
bLLE_USB = true;
317321
FlagsLLE ^= LLE_USB;
318322
EmuOutputMessage(XB_OUTPUT_MESSAGE_INFO, "Fallback to LLE USB.");
@@ -346,25 +350,25 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
346350
if (xdkVersion < BuildVersion) {
347351
xdkVersion = BuildVersion;
348352
}
349-
XbLibFlag = XbSymbolDatabase_LibraryToFlag(std::string(pLibraryVersion[v].szName, pLibraryVersion[v].szName + 8).c_str());
353+
XbLibFlag = XbSDB_LibraryToFlag(std::string(pLibraryVersion[v].szName, pLibraryVersion[v].szName + 8).c_str());
350354
XbLibScan |= XbLibFlag;
351355

352356
// Keep certain library versions for plugin usage.
353-
if ((XbLibFlag & (XbSymbolLib_D3D8 | XbSymbolLib_D3D8LTCG)) > 0) {
357+
if ((XbLibFlag & (XBSDBLIB_D3D8 | XBSDBLIB_D3D8LTCG)) > 0) {
354358
if (g_LibVersion_D3D8 < BuildVersion) {
355359
g_LibVersion_D3D8 = BuildVersion;
356360
}
357361
}
358-
else if ((XbLibFlag & XbSymbolLib_DSOUND) > 0) {
362+
else if ((XbLibFlag & XBSDBLIB_DSOUND) > 0) {
359363
g_LibVersion_DSOUND = BuildVersion;
360364
}
361365
}
362366

363367
// Since XDK 4039 title does not have library version for DSOUND, let's check section header if it exists or not.
364368
for (unsigned int v = 0; v < pXbeHeader->dwSections; v++) {
365369
SectionName = (const char*)pSectionHeaders[v].dwSectionNameAddr;
366-
if (strncmp(SectionName, Lib_DSOUND, 8) == 0) {
367-
XbLibScan |= XbSymbolLib_DSOUND;
370+
if (strncmp(SectionName, LIB_DSOUND, 8) == 0) {
371+
XbLibScan |= XBSDBLIB_DSOUND;
368372

369373
// If DSOUND version is not set, we need to force set it.
370374
if (g_LibVersion_DSOUND == 0) {
@@ -417,7 +421,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
417421
// Verify the version of the cache file against the Symbol Database version hash
418422
const uint32_t SymbolDatabaseVersionHash = symbolCacheData.GetLongValue(section_info, sect_info_keys.SymbolDatabaseVersionHash, /*Default=*/0);
419423

420-
if (SymbolDatabaseVersionHash == XbSymbolDatabase_LibraryVersion()) {
424+
if (SymbolDatabaseVersionHash == XbSDB_LibraryVersion()) {
421425
g_SymbolCacheUsed = true;
422426
CSimpleIniA::TNamesDepend symbol_names;
423427

@@ -488,9 +492,9 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
488492
}
489493
#endif
490494

491-
XbSymbolDatabase_SetOutputMessage(EmuOutputMessage);
495+
XbSDB_SetOutputMessage(EmuOutputMessage);
492496

493-
XbSymbolScan(pXbeHeader, EmuRegisterSymbol, false);
497+
XbSDB_Scan(pXbeHeader, EmuRegisterSymbol, false);
494498
}
495499

496500
std::printf("\n");
@@ -499,7 +503,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
499503
symbolCacheData.Reset();
500504

501505
// Store Symbol Database version
502-
symbolCacheData.SetLongValue(section_info, sect_info_keys.SymbolDatabaseVersionHash, XbSymbolDatabase_LibraryVersion(), nullptr, /*UseHex =*/false);
506+
symbolCacheData.SetLongValue(section_info, sect_info_keys.SymbolDatabaseVersionHash, XbSDB_LibraryVersion(), nullptr, /*UseHex =*/false);
503507

504508
// Store Certificate Details
505509
symbolCacheData.SetValue(section_certificate, sect_certificate_keys.Name, tAsciiTitle);

src/core/hle/JVS/JVS.cpp

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -209,35 +209,23 @@ void JVS_Init()
209209
// Determine which version of JVS_SendCommand this title is using and derive the offset
210210
// TODO: Extract this into a function and also locate PINSB
211211
static int JvsSendCommandVersion = -1;
212-
g_pPINSA = nullptr;
213-
g_pPINSB = nullptr;
212+
g_pPINSA = (DWORD*)GetXboxSymbolPointer("JVS_g_pPINSA");
213+
g_pPINSB = (DWORD*)GetXboxSymbolPointer("JVS_g_pPINSB");
214214

215215
auto JvsSendCommandOffset1 = (uintptr_t)GetXboxSymbolPointer("JVS_SendCommand");
216216
auto JvsSendCommandOffset2 = (uintptr_t)GetXboxSymbolPointer("JVS_SendCommand2");
217217
auto JvsSendCommandOffset3 = (uintptr_t)GetXboxSymbolPointer("JVS_SendCommand3");
218218

219219
if (JvsSendCommandOffset1) {
220220
JvsSendCommandVersion = 1;
221-
g_pPINSA = *(DWORD**)(JvsSendCommandOffset1 + 0x2A0);
222-
g_pPINSB = (DWORD*)((DWORD)g_pPINSA - 8);
223221
}
224222

225223
if (JvsSendCommandOffset2) {
226224
JvsSendCommandVersion = 2;
227-
g_pPINSA = *(DWORD**)(JvsSendCommandOffset2 + 0x312);
228-
g_pPINSB = (DWORD*)((DWORD)g_pPINSA - 8);
229225
}
230226

231227
if (JvsSendCommandOffset3) {
232228
JvsSendCommandVersion = 3;
233-
g_pPINSA = *(DWORD**)(JvsSendCommandOffset3 + 0x307);
234-
g_pPINSB = (DWORD*)((DWORD)g_pPINSA - 8);
235-
236-
if ((DWORD)g_pPINSA > XBE_MAX_VA) {
237-
// This was invalid, we must have the other varient of SendCommand3 (SEGABOOT)
238-
g_pPINSA = *(DWORD**)(JvsSendCommandOffset3 + 0x302);
239-
g_pPINSB = (DWORD*)((DWORD)g_pPINSA - 8);
240-
}
241229
}
242230

243231
// Set state to a sane initial default

0 commit comments

Comments
 (0)