hmm
This commit is contained in:
parent
8f9f07d99d
commit
bf7b949d2b
2
Cxbx.dsp
2
Cxbx.dsp
|
@ -1,5 +1,5 @@
|
||||||
# Microsoft Developer Studio Project File - Name="Cxbx" - Package Owner=<4>
|
# Microsoft Developer Studio Project File - Name="Cxbx" - Package Owner=<4>
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
# Microsoft Developer Studio Generated Build File, Format Version 60000
|
||||||
# ** DO NOT EDIT **
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
|
@ -79,7 +79,8 @@ extern "C" CXBXKRNL_API void NTAPI EmuSuspend();
|
||||||
// resume emulation
|
// resume emulation
|
||||||
extern "C" CXBXKRNL_API void NTAPI EmuResume();
|
extern "C" CXBXKRNL_API void NTAPI EmuResume();
|
||||||
|
|
||||||
// global flag specifying current emulation state
|
// global flags specifying current emulation state
|
||||||
|
extern BOOL g_bEmuException;
|
||||||
extern BOOL g_bEmuSuspended;
|
extern BOOL g_bEmuSuspended;
|
||||||
|
|
||||||
// global exception patching address
|
// global exception patching address
|
||||||
|
|
|
@ -72,6 +72,7 @@ extern HANDLE g_hTDrive = NULL;
|
||||||
extern HANDLE g_hUDrive = NULL;
|
extern HANDLE g_hUDrive = NULL;
|
||||||
extern HANDLE g_hZDrive = NULL;
|
extern HANDLE g_hZDrive = NULL;
|
||||||
extern BOOL g_bEmuSuspended = FALSE;
|
extern BOOL g_bEmuSuspended = FALSE;
|
||||||
|
extern BOOL g_bEmuException = FALSE;
|
||||||
|
|
||||||
// global exception patching address
|
// global exception patching address
|
||||||
extern uint32 g_HaloHack[4] = {0};
|
extern uint32 g_HaloHack[4] = {0};
|
||||||
|
@ -510,7 +511,7 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
|
||||||
// _USE_XGMATH Disabled in mesh :[
|
// _USE_XGMATH Disabled in mesh :[
|
||||||
// halo : dword_0_2E2D18
|
// halo : dword_0_2E2D18
|
||||||
// halo : 1744F0 (bink)
|
// halo : 1744F0 (bink)
|
||||||
//_asm int 3
|
_asm int 3
|
||||||
|
|
||||||
Entry();
|
Entry();
|
||||||
|
|
||||||
|
@ -563,7 +564,7 @@ extern "C" CXBXKRNL_API void NTAPI EmuWarning(const char *szWarningMessage, ...)
|
||||||
// cleanup emulation
|
// cleanup emulation
|
||||||
extern "C" CXBXKRNL_API void NTAPI EmuCleanup(const char *szErrorMessage, ...)
|
extern "C" CXBXKRNL_API void NTAPI EmuCleanup(const char *szErrorMessage, ...)
|
||||||
{
|
{
|
||||||
EmuSuspend();
|
g_bEmuException = TRUE;
|
||||||
|
|
||||||
// print out error message (if exists)
|
// print out error message (if exists)
|
||||||
if(szErrorMessage != NULL)
|
if(szErrorMessage != NULL)
|
||||||
|
@ -589,8 +590,6 @@ extern "C" CXBXKRNL_API void NTAPI EmuCleanup(const char *szErrorMessage, ...)
|
||||||
MessageBox(NULL, szBuffer1, "CxbxKrnl", MB_OK | MB_ICONSTOP);
|
MessageBox(NULL, szBuffer1, "CxbxKrnl", MB_OK | MB_ICONSTOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
EmuResume();
|
|
||||||
|
|
||||||
printf("CxbxKrnl: Terminating Process\n");
|
printf("CxbxKrnl: Terminating Process\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
@ -642,7 +641,7 @@ extern "C" CXBXKRNL_API void NTAPI EmuRegisterThread(HANDLE hThread)
|
||||||
// suspend all threads that have been created with PsCreateSystemThreadEx
|
// suspend all threads that have been created with PsCreateSystemThreadEx
|
||||||
extern "C" CXBXKRNL_API void NTAPI EmuSuspend()
|
extern "C" CXBXKRNL_API void NTAPI EmuSuspend()
|
||||||
{
|
{
|
||||||
if(g_bEmuSuspended)
|
if(g_bEmuSuspended || g_bEmuException)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_bEmuSuspended = TRUE;
|
g_bEmuSuspended = TRUE;
|
||||||
|
@ -697,6 +696,8 @@ extern "C" CXBXKRNL_API void NTAPI EmuResume()
|
||||||
// exception handler
|
// exception handler
|
||||||
extern int EmuException(LPEXCEPTION_POINTERS e)
|
extern int EmuException(LPEXCEPTION_POINTERS e)
|
||||||
{
|
{
|
||||||
|
g_bEmuException = TRUE;
|
||||||
|
|
||||||
if(EmuIsXboxFS())
|
if(EmuIsXboxFS())
|
||||||
EmuSwapFS();
|
EmuSwapFS();
|
||||||
|
|
||||||
|
@ -745,6 +746,8 @@ extern int EmuException(LPEXCEPTION_POINTERS e)
|
||||||
printf("EmuMain (0x%X): Halo Access Adjust 1 was applied!\n", GetCurrentThreadId());
|
printf("EmuMain (0x%X): Halo Access Adjust 1 was applied!\n", GetCurrentThreadId());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
g_bEmuException = FALSE;
|
||||||
|
|
||||||
return EXCEPTION_CONTINUE_EXECUTION;
|
return EXCEPTION_CONTINUE_EXECUTION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -778,6 +781,8 @@ extern int EmuException(LPEXCEPTION_POINTERS e)
|
||||||
printf("EmuMain (0x%X): Halo Access Adjust 2 was applied!\n", GetCurrentThreadId());
|
printf("EmuMain (0x%X): Halo Access Adjust 2 was applied!\n", GetCurrentThreadId());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
g_bEmuException = FALSE;
|
||||||
|
|
||||||
return EXCEPTION_CONTINUE_EXECUTION;
|
return EXCEPTION_CONTINUE_EXECUTION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -830,6 +835,9 @@ extern int EmuException(LPEXCEPTION_POINTERS e)
|
||||||
else if(ret == IDIGNORE)
|
else if(ret == IDIGNORE)
|
||||||
{
|
{
|
||||||
printf("EmuMain (0x%X): Ignored Breakpoint Exception\n", GetCurrentThreadId());
|
printf("EmuMain (0x%X): Ignored Breakpoint Exception\n", GetCurrentThreadId());
|
||||||
|
|
||||||
|
g_bEmuException = FALSE;
|
||||||
|
|
||||||
return EXCEPTION_CONTINUE_EXECUTION;
|
return EXCEPTION_CONTINUE_EXECUTION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -851,6 +859,8 @@ extern int EmuException(LPEXCEPTION_POINTERS e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_bEmuException = FALSE;
|
||||||
|
|
||||||
return EXCEPTION_CONTINUE_SEARCH;
|
return EXCEPTION_CONTINUE_SEARCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3327,11 +3327,13 @@ BOOL WINAPI XTL::EmuIDirect3DResource8_IsBusy
|
||||||
// debug trace
|
// debug trace
|
||||||
#ifdef _DEBUG_TRACE
|
#ifdef _DEBUG_TRACE
|
||||||
{
|
{
|
||||||
|
/* too much output
|
||||||
printf("EmuD3D8 (0x%X): EmuIDirect3DResource8_IsBusy\n"
|
printf("EmuD3D8 (0x%X): EmuIDirect3DResource8_IsBusy\n"
|
||||||
"(\n"
|
"(\n"
|
||||||
" pThis : 0x%.08X\n"
|
" pThis : 0x%.08X\n"
|
||||||
");\n",
|
");\n",
|
||||||
GetCurrentThreadId(), pThis);
|
GetCurrentThreadId(), pThis);
|
||||||
|
//*/
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5000,10 +5002,10 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetStreamSource
|
||||||
printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_SetStreamSource\n"
|
printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_SetStreamSource\n"
|
||||||
"(\n"
|
"(\n"
|
||||||
" StreamNumber : 0x%.08X\n"
|
" StreamNumber : 0x%.08X\n"
|
||||||
" pStreamData : 0x%.08X\n"
|
" pStreamData : 0x%.08X (0x%.08X)\n"
|
||||||
" Stride : 0x%.08X\n"
|
" Stride : 0x%.08X\n"
|
||||||
");\n",
|
");\n",
|
||||||
GetCurrentThreadId(), StreamNumber, pStreamData, Stride);
|
GetCurrentThreadId(), StreamNumber, pStreamData, (pStreamData != 0) ? pStreamData->EmuVertexBuffer8 : 0, Stride);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5459,9 +5461,12 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DrawIndexedVertices
|
||||||
|
|
||||||
uint32 nStride = EmuFixupVerticesA(PrimitiveType, PrimitiveCount, pOrigVertexBuffer8, pHackVertexBuffer8, 0, 0, 0, 0);
|
uint32 nStride = EmuFixupVerticesA(PrimitiveType, PrimitiveCount, pOrigVertexBuffer8, pHackVertexBuffer8, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
if(pIndexData != 0)
|
||||||
|
EmuCleanup("Unsupported?");
|
||||||
|
|
||||||
g_pD3DDevice8->DrawIndexedPrimitive
|
g_pD3DDevice8->DrawIndexedPrimitive
|
||||||
(
|
(
|
||||||
PCPrimitiveType, 0, VertexCount, ((DWORD)pIndexData)/2, PrimitiveCount
|
PCPrimitiveType, 0, VertexCount, /*((DWORD)pIndexData)/2*/0, PrimitiveCount
|
||||||
);
|
);
|
||||||
|
|
||||||
if(nStride != -1)
|
if(nStride != -1)
|
||||||
|
|
Loading…
Reference in New Issue