Supporting 4134

This commit is contained in:
Aaron Robinson 2003-07-19 02:13:56 +00:00
parent 860a4f3b10
commit 01fe2406f8
21 changed files with 569 additions and 71 deletions

View File

@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="CxbxKrnl" - 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 **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@ -154,6 +154,10 @@ SOURCE=.\Include\Win32\CxbxKrnl\D3D8.1.0.4034.h
# End Source File
# Begin Source File
SOURCE=.\Include\Win32\CxbxKrnl\D3D8.1.0.4134.h
# End Source File
# Begin Source File
SOURCE=.\Include\Win32\CxbxKrnl\D3D8.1.0.4361.h
# End Source File
# Begin Source File
@ -242,6 +246,10 @@ SOURCE=.\Include\Win32\CxbxKrnl\Xapi.1.0.4034.h
# End Source File
# Begin Source File
SOURCE=.\Include\Win32\CxbxKrnl\Xapi.1.0.4134.h
# End Source File
# Begin Source File
SOURCE=.\Include\Win32\CxbxKrnl\Xapi.1.0.4361.h
# End Source File
# Begin Source File
@ -298,6 +306,10 @@ SOURCE=.\Source\Win32\CxbxKrnl\D3D8.1.0.4034.inl
# End Source File
# Begin Source File
SOURCE=.\Source\Win32\CxbxKrnl\D3D8.1.0.4134.inl
# End Source File
# Begin Source File
SOURCE=.\Source\Win32\CxbxKrnl\D3D8.1.0.4361.inl
# End Source File
# Begin Source File
@ -394,6 +406,10 @@ SOURCE=.\Source\Win32\CxbxKrnl\Xapi.1.0.4034.inl
# End Source File
# Begin Source File
SOURCE=.\Source\Win32\CxbxKrnl\Xapi.1.0.4134.inl
# End Source File
# Begin Source File
SOURCE=.\Source\Win32\CxbxKrnl\Xapi.1.0.4361.inl
# End Source File
# Begin Source File

View File

@ -67,9 +67,9 @@ typedef signed long sint32;
// * Version information
// ******************************************************************
#ifndef _DEBUG_TRACE
#define _CXBX_VERSION "0.7.7b"
#define _CXBX_VERSION "0.7.8-Pre1"
#else
#define _CXBX_VERSION "0.7.7b-Trace"
#define _CXBX_VERSION "0.7.8-Pre1-Trace"
#endif
// ******************************************************************

View File

@ -0,0 +1,44 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4134.h
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef D3D8_1_0_4134_H
#define D3D8_1_0_4134_H
#include "OOVPA.h"
extern SOOVPA<13> IDirect3DDevice8_SetRenderState_CullMode_1_0_4134;
extern OOVPATable D3D8_1_0_4134[];
extern uint32 D3D8_1_0_4134_SIZE;
#endif

View File

@ -36,7 +36,6 @@
#include "OOVPA.h"
extern SOOVPA<13> IDirect3DDevice8_SetRenderState_CullMode_1_0_4361;
extern SOOVPA<10> IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4361;
extern OOVPATable D3D8_1_0_4361[];

View File

@ -95,5 +95,6 @@ extern Xbe::Header *g_pXbeHeader;
extern HANDLE g_hCurDir;
extern HANDLE g_hTDrive;
extern HANDLE g_hUDrive;
extern HANDLE g_hZDrive;
#endif

View File

@ -320,6 +320,14 @@ BOOL WINAPI EmuQueryPerformanceFrequency
PLARGE_INTEGER lpFrequency
);
// ******************************************************************
// * func: EmuXMountUtilityDrive
// ******************************************************************
BOOL WINAPI EmuXMountUtilityDrive
(
BOOL fFormatClean
);
// ******************************************************************
// * func: EmuXInitDevices
// ******************************************************************
@ -414,6 +422,15 @@ BOOL WINAPI EmuCloseHandle
HANDLE hObject
);
// ******************************************************************
// * func: EmuSetThreadPriority
// ******************************************************************
BOOL WINAPI EmuSetThreadPriority
(
HANDLE hThread,
int nPriority
);
// ******************************************************************
// * func: EmuXapiInitProcess
// ******************************************************************

View File

@ -36,10 +36,12 @@
#include "Xapi.1.0.3911.h"
#include "Xapi.1.0.4034.h"
#include "Xapi.1.0.4134.h"
#include "Xapi.1.0.4361.h"
#include "Xapi.1.0.4627.h"
#include "D3D8.1.0.3925.h"
#include "D3D8.1.0.4034.h"
#include "D3D8.1.0.4134.h"
#include "D3D8.1.0.4361.h"
#include "D3D8.1.0.4627.h"
#include "DSound.1.0.4361.h"

View File

@ -36,7 +36,7 @@
#include "OOVPA.h"
extern SOOVPA<9> __cinit_1_0_3911;
extern SOOVPA<7> XapiInitProcess_1_0_3911;
extern OOVPATable XAPI_1_0_3911[];
extern uint32 XAPI_1_0_3911_SIZE;

View File

@ -36,7 +36,7 @@
#include "OOVPA.h"
extern OOVPATable XAPI_1_0_4361[];
extern uint32 XAPI_1_0_4361_SIZE;
extern OOVPATable XAPI_1_0_4034[];
extern uint32 XAPI_1_0_4034_SIZE;
#endif

View File

@ -0,0 +1,42 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.4134.h
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef XAPI_1_0_4134_H
#define XAPI_1_0_4134_H
#include "OOVPA.h"
extern OOVPATable XAPI_1_0_4134[];
extern uint32 XAPI_1_0_4134_SIZE;
#endif

View File

@ -0,0 +1,101 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4134.cpp
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_CullMode
// ******************************************************************
SOOVPA<13> IDirect3DDevice8_SetRenderState_CullMode_1_0_4134 =
{
0, // Large == 0
13, // Count == 13
-1, // XRef Not Saved
0, // XRef Not Used
{
// IDirect3DDevice8_SetRenderState_CullMode+0x19 : mov dword ptr [eax], 0x40308
{ 0x19, 0xC7 }, // (Offset,Value)-Pair #1
{ 0x1B, 0x08 }, // (Offset,Value)-Pair #2
{ 0x1C, 0x03 }, // (Offset,Value)-Pair #3
{ 0x1D, 0x04 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_CullMode+0x24 : add eax, 8
{ 0x24, 0x83 }, // (Offset,Value)-Pair #5
{ 0x25, 0xC0 }, // (Offset,Value)-Pair #6
{ 0x26, 0x08 }, // (Offset,Value)-Pair #7
// IDirect3DDevice8_SetRenderState_CullMode+0x30 : retn 4
{ 0x30, 0xC2 }, // (Offset,Value)-Pair #8
{ 0x31, 0x04 }, // (Offset,Value)-Pair #9
// IDirect3DDevice8_SetRenderState_CullMode+0x53 : add edx, 0x404
{ 0x53, 0x81 }, // (Offset,Value)-Pair #10
{ 0x54, 0xC2 }, // (Offset,Value)-Pair #11
{ 0x55, 0x04 }, // (Offset,Value)-Pair #12
{ 0x56, 0x04 }, // (Offset,Value)-Pair #13
}
};
// ******************************************************************
// * D3D8_1_0_4134
// ******************************************************************
OOVPATable D3D8_1_0_4134[] =
{
// IDirect3D8::CreateDevice (* unchanged since 1.0.3925 *)
{
(OOVPA*)&IDirect3D8_CreateDevice_1_0_3925,
XTL::EmuIDirect3D8_CreateDevice,
#ifdef _DEBUG_TRACE
"EmuIDirect3D8_CreateDevice"
#endif
},
// IDirect3DDevice8::SetRenderState_CullMode
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_CullMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_CullMode"
#endif
},
};
// ******************************************************************
// * D3D8_1_0_4134_SIZE
// ******************************************************************
uint32 D3D8_1_0_4134_SIZE = sizeof(D3D8_1_0_4134);

View File

@ -1092,41 +1092,6 @@ SOOVPA<11> IDirect3DDevice8_SetRenderState_VertexBlend_1_0_4361 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_CullMode
// ******************************************************************
SOOVPA<13> IDirect3DDevice8_SetRenderState_CullMode_1_0_4361 =
{
0, // Large == 0
13, // Count == 13
-1, // XRef Not Saved
0, // XRef Not Used
{
// IDirect3DDevice8_SetRenderState_CullMode+0x19 : mov dword ptr [eax], 0x40308
{ 0x19, 0xC7 }, // (Offset,Value)-Pair #1
{ 0x1B, 0x08 }, // (Offset,Value)-Pair #2
{ 0x1C, 0x03 }, // (Offset,Value)-Pair #3
{ 0x1D, 0x04 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_CullMode+0x24 : add eax, 8
{ 0x24, 0x83 }, // (Offset,Value)-Pair #5
{ 0x25, 0xC0 }, // (Offset,Value)-Pair #6
{ 0x26, 0x08 }, // (Offset,Value)-Pair #7
// IDirect3DDevice8_SetRenderState_CullMode+0x30 : retn 4
{ 0x30, 0xC2 }, // (Offset,Value)-Pair #8
{ 0x31, 0x04 }, // (Offset,Value)-Pair #9
// IDirect3DDevice8_SetRenderState_CullMode+0x53 : add edx, 0x404
{ 0x53, 0x81 }, // (Offset,Value)-Pair #10
{ 0x54, 0xC2 }, // (Offset,Value)-Pair #11
{ 0x55, 0x04 }, // (Offset,Value)-Pair #12
{ 0x56, 0x04 }, // (Offset,Value)-Pair #13
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_TextureFactor
// ******************************************************************
@ -2429,9 +2394,9 @@ OOVPATable D3D8_1_0_4361[] =
"EmuIDirect3DDevice8_SetRenderState_VertexBlend"
#endif
},
// IDirect3DDevice8::SetRenderState_CullMode
// IDirect3DDevice8::SetRenderState_CullMode (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4361,
(OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_CullMode,

View File

@ -1812,9 +1812,9 @@ OOVPATable D3D8_1_0_4627[] =
"EmuIDirect3DDevice8_SetTextureState_TexCoordIndex"
#endif
},
// IDirect3DDevice8::SetRenderState_CullMode (* unchanged since 4361 *)
// IDirect3DDevice8::SetRenderState_CullMode (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4361,
(OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_CullMode,

View File

@ -67,6 +67,7 @@ Xbe::Header *g_pXbeHeader = NULL;
HANDLE g_hCurDir = NULL;
HANDLE g_hTDrive = NULL;
HANDLE g_hUDrive = NULL;
HANDLE g_hZDrive = NULL;
// ******************************************************************
// * static
@ -301,6 +302,22 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
if(g_hUDrive == INVALID_HANDLE_VALUE)
EmuCleanup("Could not map U:\\\n");
}
// Create ZData Directory
{
strcpy(&szBuffer[spot], "\\CxbxCache");
CreateDirectory(szBuffer, NULL);
sprintf(&szBuffer[spot+6], "\\%08x", pCertificate->dwTitleId);
CreateDirectory(szBuffer, NULL);
g_hZDrive = CreateFile(szBuffer, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if(g_hUDrive == INVALID_HANDLE_VALUE)
EmuCleanup("Could not map Z:\\\n");
}
}
// ******************************************************************
@ -376,7 +393,7 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
if(bXRefFirstPass)
{
if(strcmp("XAPILIB", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 && (BuildVersion == 4627 || BuildVersion == 4361 || BuildVersion == 4034 || BuildVersion == 3911))
if(strcmp("XAPILIB", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 && (BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4627))
{
uint32 lower = pXbeHeader->dwBaseAddr;
uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
@ -384,9 +401,13 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
// ******************************************************************
// * Locate XapiProcessHeap
// ******************************************************************
if(BuildVersion == 4361 || BuildVersion == 4627)
{
void *pFunc = EmuLocateFunction((OOVPA*)&XapiInitProcess_1_0_4361, lower, upper);
{
void *pFunc = 0;
if(BuildVersion >= 4361)
pFunc = EmuLocateFunction((OOVPA*)&XapiInitProcess_1_0_4361, lower, upper);
else // 3911, 4034, 4134
pFunc = EmuLocateFunction((OOVPA*)&XapiInitProcess_1_0_3911, lower, upper);
if(pFunc != 0)
{
@ -400,19 +421,21 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
}
}
}
else if(strcmp("D3D8", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 && (BuildVersion == 4361 || BuildVersion == 4627))
else if(strcmp("D3D8", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 && (BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4627))
{
uint32 lower = pXbeHeader->dwBaseAddr;
uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
void *pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4361, lower, upper);
void *pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_4134, lower, upper);
// ******************************************************************
// * Locate D3DDeferredRenderState
// ******************************************************************
if(pFunc != 0 && (BuildVersion == 4361 || BuildVersion == 4627))
if(pFunc != 0 && (BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4627))
{
if(BuildVersion == 4361)
if(BuildVersion == 4134)
XTL::EmuD3DDeferredRenderState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x2B) - 0x248 + 82*4); // TODO: Verify
else if(BuildVersion == 4361)
XTL::EmuD3DDeferredRenderState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x2B) - 0x200 + 82*4);
else if(BuildVersion == 4627)
XTL::EmuD3DDeferredRenderState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x2B) - 0x24C + 92*4);
@ -432,7 +455,9 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
// * Locate D3DDeferredTextureState
// ******************************************************************
{
if(BuildVersion == 4361)
if(BuildVersion == 4134)
EmuCleanup("Oops, I didnt do this part yet either");
else if(BuildVersion == 4361)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4361, lower, upper);
else if(BuildVersion == 4627)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627, lower, upper);

View File

@ -619,7 +619,7 @@ XBSYSAPI EXPORTNUM(149) xboxkrnl::BOOLEAN NTAPI xboxkrnl::KeSetTimer
// ******************************************************************
// * 0x009C - KeTickCount
// ******************************************************************
XBSYSAPI EXPORTNUM(156) xboxkrnl::DWORD xboxkrnl::KeTickCount = 0;
XBSYSAPI EXPORTNUM(156) volatile xboxkrnl::DWORD xboxkrnl::KeTickCount = 0;
// ******************************************************************
// * 0x00A4 - LaunchDataPage (actually a pointer)
@ -699,6 +699,40 @@ XBSYSAPI EXPORTNUM(166) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateContiguousMemo
return pRet;
}
// ******************************************************************
// * 0x00A7 - MmAllocateSystemMemory
// ******************************************************************
XBSYSAPI EXPORTNUM(167) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateSystemMemory
(
ULONG NumberOfBytes,
ULONG Protect
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuKrnl (0x%X): MmAllocateContiguousMemoryEx\n"
"(\n"
" NumberOfBytes : 0x%.08X\n"
" Protect : 0x%.08X\n"
");\n",
GetCurrentThreadId(), NumberOfBytes, Protect);
}
#endif
// TODO: Make this much more efficient and correct if necessary!
// HACK: Should be aligned!!
PVOID pRet = (PVOID)new unsigned char[NumberOfBytes];
EmuSwapFS(); // Xbox FS
return pRet;
}
// ******************************************************************
// * 0x00AB - MmFreeContiguousMemory
// ******************************************************************
@ -729,6 +763,38 @@ XBSYSAPI EXPORTNUM(171) VOID NTAPI xboxkrnl::MmFreeContiguousMemory
return;
}
// ******************************************************************
// * 0x00AC - MmFreeSystemMemory
// ******************************************************************
XBSYSAPI EXPORTNUM(172) NTSTATUS NTAPI xboxkrnl::MmFreeSystemMemory
(
PVOID BaseAddress,
ULONG NumberOfBytes
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuKrnl (0x%X): MmFreeSystemMemory\n"
"(\n"
" BaseAddress : 0x%.08X\n"
" NumberOfBytes : 0x%.08X\n"
");\n",
GetCurrentThreadId(), BaseAddress, NumberOfBytes);
}
#endif
delete[] BaseAddress;
EmuSwapFS(); // Xbox FS
return STATUS_SUCCESS;
}
// ******************************************************************
// * 0x00B2 - MmPersistContiguousMemory
// ******************************************************************
@ -1003,10 +1069,11 @@ XBSYSAPI EXPORTNUM(190) NTSTATUS NTAPI xboxkrnl::NtCreateFile
szBuffer += 3;
ObjectAttributes->RootDirectory = g_hTDrive;
#ifdef _DEBUG_TRACE
printf("EmuKrnl (0x%X): NtCreateFile Corrected path...\n", GetCurrentThreadId());
printf(" Org:\"%s\"\n", ObjectAttributes->ObjectName->Buffer);
printf(" New:\"$CxbxPath\\%s\"\n", szBuffer);
printf(" New:\"$CxbxPath\\TDATA\\%s\"\n", szBuffer);
#endif
}
else if( (szBuffer[0] == 'U' || szBuffer[0] == 'u') && szBuffer[1] == ':' && szBuffer[2] == '\\')
@ -1014,10 +1081,23 @@ XBSYSAPI EXPORTNUM(190) NTSTATUS NTAPI xboxkrnl::NtCreateFile
szBuffer += 3;
ObjectAttributes->RootDirectory = g_hUDrive;
#ifdef _DEBUG_TRACE
printf("EmuKrnl (0x%X): NtCreateFile Corrected path...\n", GetCurrentThreadId());
printf(" Org:\"%s\"\n", ObjectAttributes->ObjectName->Buffer);
printf(" New:\"$CxbxPath\\%s\"\n", szBuffer);
printf(" New:\"$CxbxPath\\UDATA\\%s\"\n", szBuffer);
#endif
}
else if( (szBuffer[0] == 'Z' || szBuffer[0] == 'z') && szBuffer[1] == ':' && szBuffer[2] == '\\')
{
szBuffer += 3;
ObjectAttributes->RootDirectory = g_hZDrive;
#ifdef _DEBUG_TRACE
printf("EmuKrnl (0x%X): NtCreateFile Corrected path...\n", GetCurrentThreadId());
printf(" Org:\"%s\"\n", ObjectAttributes->ObjectName->Buffer);
printf(" New:\"$CxbxPath\\CxbxCache\\%s\"\n", szBuffer);
#endif
}

View File

@ -293,6 +293,32 @@ BOOL WINAPI XTL::EmuQueryPerformanceFrequency
return bRet;
}
// ******************************************************************
// * func: EmuXMountUtilityDrive
// ******************************************************************
BOOL WINAPI XTL::EmuXMountUtilityDrive
(
BOOL fFormatClean
)
{
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
EmuSwapFS(); // Win2k/XP FS
printf("EmuXapi (0x%X): EmuXMountUtilityDrive\n"
"(\n"
" fFormatClean : 0x%.08X\n"
");\n",
GetCurrentThreadId(), fFormatClean);
EmuSwapFS(); // XBox FS
}
#endif
return TRUE;
}
// ******************************************************************
// * func: EmuXInitDevices
// ******************************************************************
@ -618,11 +644,43 @@ BOOL WINAPI XTL::EmuCloseHandle
}
#endif
BOOL Ret = CloseHandle(hObject);
BOOL bRet = CloseHandle(hObject);
EmuSwapFS(); // XBox FS
return Ret;
return bRet;
}
// ******************************************************************
// * func: EmuSetThreadPriority
// ******************************************************************
BOOL WINAPI XTL::EmuSetThreadPriority
(
HANDLE hThread,
int nPriority
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuXapi (0x%X): EmuSetThreadPriority\n"
"(\n"
" hThread : 0x%.08X\n"
" nPriority : 0x%.08X\n"
");\n",
GetCurrentThreadId(), hThread, nPriority);
}
#endif
BOOL bRet = SetThreadPriority(hThread, nPriority);
EmuSwapFS(); // XBox FS
return bRet;
}
// ******************************************************************

View File

@ -51,10 +51,12 @@ namespace XTL
#include "Xapi.1.0.3911.inl"
#include "Xapi.1.0.4034.inl"
#include "Xapi.1.0.4134.inl"
#include "Xapi.1.0.4361.inl"
#include "Xapi.1.0.4627.inl"
#include "D3D8.1.0.3925.inl"
#include "D3D8.1.0.4034.inl"
#include "D3D8.1.0.4134.inl"
#include "D3D8.1.0.4361.inl"
#include "D3D8.1.0.4627.inl"
#include "DSound.1.0.4361.inl"
@ -75,13 +77,6 @@ HLEData HLEDataBase[] =
XAPI_1_0_3911,
XAPI_1_0_3911_SIZE
},
// Xapilib Version 1.0.4361
{
"XAPILIB",
1, 0, 4361,
XAPI_1_0_4361,
XAPI_1_0_4361_SIZE
},
// Xapilib Version 1.0.4034
{
"XAPILIB",
@ -89,6 +84,20 @@ HLEData HLEDataBase[] =
XAPI_1_0_4034,
XAPI_1_0_4034_SIZE
},
// Xapilib Version 1.0.4134
{
"XAPILIB",
1, 0, 4134,
XAPI_1_0_4134,
XAPI_1_0_4134_SIZE
},
// Xapilib Version 1.0.4361
{
"XAPILIB",
1, 0, 4361,
XAPI_1_0_4361,
XAPI_1_0_4361_SIZE
},
// Xapilib Version 1.0.4627
{
"XAPILIB",

View File

@ -232,12 +232,12 @@ extern "C" CXBXKRNL_API uint32 KernelThunkTable[367] =
(uint32)&xboxkrnl::LaunchDataPage, // 0x00A4 (164)
(uint32)&xboxkrnl::MmAllocateContiguousMemory, // 0x00A5 (165)
(uint32)&xboxkrnl::MmAllocateContiguousMemoryEx,// 0x00A6 (166)
(uint32)PANIC(0x00A7), // 0x00A7 (167)
(uint32)&xboxkrnl::MmAllocateSystemMemory, // 0x00A7 (167)
(uint32)PANIC(0x00A8), // 0x00A8 (168)
(uint32)PANIC(0x00A9), // 0x00A9 (169)
(uint32)PANIC(0x00AA), // 0x00AA (170)
(uint32)&xboxkrnl::MmFreeContiguousMemory, // 0x00AB (171)
(uint32)PANIC(0x00AC), // 0x00AC (172)
(uint32)&xboxkrnl::MmFreeSystemMemory, // 0x00AC (172)
(uint32)PANIC(0x00AD), // 0x00AD (173)
(uint32)PANIC(0x00AE), // 0x00AE (174)
(uint32)PANIC(0x00AF), // 0x00AF (175)

View File

@ -72,7 +72,7 @@ SOOVPA<7> XapiInitProcess_1_0_3911 =
0, // XRef Not Used
{
// XapiInitProcess+0x00 : sub esp, 30h
// XapiInitProcess+0x03 : sub esp, 30h
{ 0x05, 0x30 }, // (Offset,Value)-Pair #1
// XapiInitProcess+0x0F : push 0x0C

View File

@ -0,0 +1,139 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.4134.cpp
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * SetThreadPriority
// ******************************************************************
SOOVPA<10> SetThreadPriority_1_0_4134 =
{
0, // Large == 0
10, // Count == 10
-1, // XRef Not Saved
0, // XRef Not Used
{
// SetThreadPriority+0x0D : push [ebp+0x08]
{ 0x0D, 0xFF }, // (Offset,Value)-Pair #1
{ 0x0E, 0x75 }, // (Offset,Value)-Pair #2
{ 0x0F, 0x08 }, // (Offset,Value)-Pair #3
// SetThreadPriority+0x18 : jl +0x2C
{ 0x18, 0x7C }, // (Offset,Value)-Pair #4
{ 0x19, 0x2C }, // (Offset,Value)-Pair #5
// SetThreadPriority+0x22 : push 0x10
{ 0x22, 0x6A }, // (Offset,Value)-Pair #6
{ 0x23, 0x10 }, // (Offset,Value)-Pair #7
// SetThreadPriority+0x26 : cmp eax, 0xFFFFFFF1
{ 0x26, 0x83 }, // (Offset,Value)-Pair #8
{ 0x27, 0xF8 }, // (Offset,Value)-Pair #9
{ 0x28, 0xF1 }, // (Offset,Value)-Pair #10
}
};
// ******************************************************************
// * XMountUtilityDrive
// ******************************************************************
SOOVPA<10> XMountUtilityDrive_1_0_4134 =
{
0, // Large == 0
10, // Count == 10
-1, // XRef Not Saved
0, // XRef Not Used
{
// XMountUtilityDrive+0x03 : sub esp, 0x0114
{ 0x03, 0x81 }, // (Offset,Value)-Pair #1
{ 0x04, 0xEC }, // (Offset,Value)-Pair #2
{ 0x05, 0x14 }, // (Offset,Value)-Pair #3
{ 0x06, 0x01 }, // (Offset,Value)-Pair #4
// XMountUtilityDrive+0x45 : push 0x0104
{ 0x45, 0x68 }, // (Offset,Value)-Pair #5
{ 0x46, 0x04 }, // (Offset,Value)-Pair #6
{ 0x47, 0x01 }, // (Offset,Value)-Pair #7
// XMountUtilityDrive+0xAA : lea eax, [ebp-0x10]
{ 0xAA, 0x8D }, // (Offset,Value)-Pair #8
{ 0xAB, 0x45 }, // (Offset,Value)-Pair #9
{ 0xAC, 0xF0 }, // (Offset,Value)-Pair #10
}
};
// ******************************************************************
// * XAPI_1_0_4134
// ******************************************************************
OOVPATable XAPI_1_0_4134[] =
{
//* Too High Level
// XapiInitProcess (* unchanged since 3911 *)
{
(OOVPA*)&XapiInitProcess_1_0_3911,
XTL::EmuXapiInitProcess,
#ifdef _DEBUG_TRACE
"EmuXapiInitProcess"
#endif
},
//*/
// SetThreadPriority
{
(OOVPA*)&SetThreadPriority_1_0_4134,
XTL::EmuSetThreadPriority,
#ifdef _DEBUG_TRACE
"EmuSetThreadPriority"
#endif
},
// XMountUtilityDrive
{
(OOVPA*)&XMountUtilityDrive_1_0_4134,
XTL::EmuXMountUtilityDrive,
#ifdef _DEBUG_TRACE
"EmuXMountUtilityDrive"
#endif
}
};
// ******************************************************************
// * XAPI_1_0_4134_SIZE
// ******************************************************************
uint32 XAPI_1_0_4134_SIZE = sizeof(XAPI_1_0_4134);

View File

@ -565,7 +565,7 @@ SOOVPA<7> XapiInitProcess_1_0_4361 =
0, // XRef Not Used
{
// XapiInitProcess+0x00 : sub esp, 30h
// XapiInitProcess+0x03 : sub esp, 30h
{ 0x05, 0x30 }, // (Offset,Value)-Pair #1
// XapiInitProcess+0x0F : push 0x0C