diff --git a/build/win32/CxbxKrnl.vcxproj b/build/win32/CxbxKrnl.vcxproj index aa88caf26..d9df3af45 100644 --- a/build/win32/CxbxKrnl.vcxproj +++ b/build/win32/CxbxKrnl.vcxproj @@ -223,6 +223,8 @@ + + @@ -412,6 +414,7 @@ true true + @@ -446,6 +449,7 @@ true true + diff --git a/src/CxbxKrnl/EmuD3D8.cpp b/src/CxbxKrnl/EmuD3D8.cpp index f41cf7bbd..f34e83a76 100644 --- a/src/CxbxKrnl/EmuD3D8.cpp +++ b/src/CxbxKrnl/EmuD3D8.cpp @@ -4340,7 +4340,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register { case X_D3DCOMMON_TYPE_VERTEXBUFFER: { - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Creating VertexBuffer...\n"); + DbgPrintf("EmuIDirect3DResource8_Register : Creating VertexBuffer...\n"); X_D3DVertexBuffer *pVertexBuffer = (X_D3DVertexBuffer*)pResource; @@ -4393,7 +4393,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register pResource->Data = (ULONG)pData; } - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Successfully Created VertexBuffer (0x%.08X)\n", pResource->EmuVertexBuffer8); + DbgPrintf("EmuIDirect3DResource8_Register : Successfully Created VertexBuffer (0x%.08X)\n", pResource->EmuVertexBuffer8); } break; @@ -4445,7 +4445,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register pResource->Data = (ULONG)pData; } - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Successfully Created IndexBuffer (0x%.08X)\n", pResource->EmuIndexBuffer8); + DbgPrintf("EmuIDirect3DResource8_Register : Successfully Created IndexBuffer (0x%.08X)\n", pResource->EmuIndexBuffer8); } break; @@ -4472,7 +4472,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register pResource->Data = (ULONG)pBase; } - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Successfully Created PushBuffer (0x%.08X, 0x%.08X, 0x%.08X)\n", pResource->Data, pPushBuffer->Size, pPushBuffer->AllocationSize); + DbgPrintf("EmuIDirect3DResource8_Register : Successfully Created PushBuffer (0x%.08X, 0x%.08X, 0x%.08X)\n", pResource->Data, pPushBuffer->Size, pPushBuffer->AllocationSize); } break; @@ -4660,8 +4660,8 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register DXGetErrorString8A(hRet), DXGetErrorDescription8A(hRet)*/); ; - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Successfully Created ImageSurface (0x%.08X, 0x%.08X)\n", pResource, pResource->EmuSurface8); - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Width : %d, Height : %d, Format : %d\n", dwWidth, dwHeight, Format); + DbgPrintf("EmuIDirect3DResource8_Register : Successfully Created ImageSurface (0x%.08X, 0x%.08X)\n", pResource, pResource->EmuSurface8); + DbgPrintf("EmuIDirect3DResource8_Register : Width : %d, Height : %d, Format : %d\n", dwWidth, dwHeight, Format); } else { @@ -4714,7 +4714,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register CxbxKrnlCleanup("CreateCubeTexture Failed!\n\nError: \nDesc: "/*, DXGetErrorString8A(hRet), DXGetErrorDescription8A(hRet)*/); - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Successfully Created CubeTexture (0x%.08X, 0x%.08X)\n", pResource, pResource->EmuCubeTexture8); + DbgPrintf("EmuIDirect3DResource8_Register : Successfully Created CubeTexture (0x%.08X, 0x%.08X)\n", pResource, pResource->EmuCubeTexture8); } else { @@ -4747,7 +4747,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register CxbxKrnlCleanup("CreateTexture Failed!\n\nError: \nDesc: "/*, DXGetErrorString8A(hRet), DXGetErrorDescription8A(hRet)*/); - DbgPrintf("EmuIDirect3DResource8_Register (0x%X) : Successfully Created Texture (0x%.08X, 0x%.08X)\n", pResource, pResource->EmuTexture8); + DbgPrintf("EmuIDirect3DResource8_Register : Successfully Created Texture (0x%.08X, 0x%.08X)\n", pResource, pResource->EmuTexture8); } } @@ -5170,7 +5170,7 @@ ULONG WINAPI XTL::EmuIDirect3DResource8_Release if(uRet == 0) { - DbgPrintf("EmuIDirect3DResource8_Release (0x%X): Cleaned up a Resource!\n"); + DbgPrintf("EmuIDirect3DResource8_Release : Cleaned up a Resource!\n"); #ifdef _DEBUG_TRACE_VB if(Type == D3DRTYPE_VERTEXBUFFER) @@ -7476,7 +7476,7 @@ XTL::X_D3DVertexBuffer* WINAPI XTL::EmuIDirect3DDevice8_GetStreamSource2 // debug trace - DbgPrintf( "EmuD3D8 (0x%.08X): EmuIDirect3DDevice8_GetStreamSource2\n" + DbgPrintf( "EmuD3D8 : EmuIDirect3DDevice8_GetStreamSource2\n" "(\n" " StreamNumber : 0x%.08X\n" " pStride : 0x%.08X\n" @@ -7503,7 +7503,7 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetStreamSource { - DbgPrintf("EmuD3D8: EmuIDirect3DDevice8_SetStreamSource\n" + DbgPrintf("EmuD3D8 : EmuIDirect3DDevice8_SetStreamSource\n" "(\n" " StreamNumber : 0x%.08X\n" " pStreamData : 0x%.08X (0x%.08X)\n" @@ -8437,7 +8437,7 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DeleteVertexShader { - DbgPrintf( "EmuD3D8 (0x%.08X): EmuIDirect3DDevice8_DeleteVertexShader\n" + DbgPrintf( "EmuD3D8: EmuIDirect3DDevice8_DeleteVertexShader\n" "(\n" " Handle : 0x%.08X\n" ");\n", diff --git a/src/CxbxKrnl/EmuXOnline.cpp b/src/CxbxKrnl/EmuXOnline.cpp index 3eac7c053..d6bd1abd5 100644 --- a/src/CxbxKrnl/EmuXOnline.cpp +++ b/src/CxbxKrnl/EmuXOnline.cpp @@ -120,6 +120,76 @@ SOCKET XTL::EmuThis::Emusocket RETURN(ret); } +// ****************************************************************** +// * func: EmuThis::Emuconnect +// ****************************************************************** +int XTL::EmuThis::Emuconnect +( + SOCKET s, + const struct sockaddr FAR *name, + int namelen +) +{ + LOG_FUNC_BEGIN + LOG_FUNC_ARG(this) + LOG_FUNC_ARG(s) + LOG_FUNC_ARG(name) + LOG_FUNC_ARG(namelen) + LOG_FUNC_END; + + int ret = connect(s, name, namelen); + + RETURN(ret); +} + +// ****************************************************************** +// * func: EmuThis::Emusend +// ****************************************************************** +int XTL::EmuThis::Emusend +( + SOCKET s, + const char FAR *buf, + int len, + int flags +) +{ + LOG_FUNC_BEGIN + LOG_FUNC_ARG(this) + LOG_FUNC_ARG(s) + LOG_FUNC_ARG(buf) + LOG_FUNC_ARG(len) + LOG_FUNC_ARG(flags) + LOG_FUNC_END; + + int ret = send(s, buf, len, flags); + + RETURN(ret); +} + +// ****************************************************************** +// * func: EmuThis::Emurecv +// ****************************************************************** +int XTL::EmuThis::Emurecv +( + SOCKET s, + char FAR *buf, + int len, + int flags +) +{ + LOG_FUNC_BEGIN + LOG_FUNC_ARG(this) + LOG_FUNC_ARG(s) + LOG_FUNC_ARG(buf) + LOG_FUNC_ARG(len) + LOG_FUNC_ARG(flags) + LOG_FUNC_END; + + int ret = recv(s, buf, len, flags); + + RETURN(ret); +} + // ****************************************************************** // * func: EmuThis::Emubind // ****************************************************************** diff --git a/src/CxbxKrnl/EmuXOnline.h b/src/CxbxKrnl/EmuXOnline.h index ea1db8411..af6055e7d 100644 --- a/src/CxbxKrnl/EmuXOnline.h +++ b/src/CxbxKrnl/EmuXOnline.h @@ -53,6 +53,21 @@ class EmuThis // ****************************************************************** SOCKET Emusocket(int af, int type, int protocol); + // ****************************************************************** + // * func: EmuThis::Emuconnect + // ****************************************************************** + int Emuconnect(SOCKET s, const struct sockaddr FAR *name, int namelen); + + // ****************************************************************** + // * func: EmuThis::Emusend + // ****************************************************************** + int Emusend(SOCKET s, const char FAR *buf, int len, int flags); + + // ****************************************************************** + // * func: EmuThis::Emurecv + // ****************************************************************** + int Emurecv(SOCKET s, char FAR *buf, int len, int flags); + // ****************************************************************** // * func: Emubind // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase.cpp b/src/CxbxKrnl/HLEDataBase.cpp index c502eef99..6baf8f3d4 100644 --- a/src/CxbxKrnl/HLEDataBase.cpp +++ b/src/CxbxKrnl/HLEDataBase.cpp @@ -61,6 +61,7 @@ const char *Lib_XONLINES = "XONLINES"; #include "HLEDataBase/Xapi.1.0.4361.inl" #include "HLEDataBase/Xapi.1.0.4432.inl" #include "HLEDataBase/Xapi.1.0.4627.inl" +#include "HLEDataBase/Xapi.1.0.4721.inl" #include "HLEDataBase/Xapi.1.0.5233.inl" #include "HLEDataBase/Xapi.1.0.5558.inl" #include "HLEDataBase/Xapi.1.0.5849.inl" @@ -91,6 +92,7 @@ const char *Lib_XONLINES = "XONLINES"; #include "HLEDataBase/XG.1.0.5558.inl" #include "HLEDataBase/XG.1.0.5849.inl" #include "HLEDataBase/XNet.1.0.3911.inl" +#include "HLEDataBase/XNet.1.0.4627.inl" #include "HLEDataBase/XOnline.1.0.4361.inl" #include "HLEDataBase/XOnline.1.0.4627.inl" #include "HLEDataBase/XOnline.1.0.5233.inl" @@ -145,7 +147,14 @@ HLEData HLEDataBase[] = XAPI_1_0_4627, XAPI_1_0_4627_SIZE }, - // Xapilib Version 1.0.5233 + // Xapilib Version 1.0.4721 + { + Lib_XAPILIB, + 1, 0, 4721, + XAPI_1_0_4721, + XAPI_1_0_4721_SIZE + }, + // Xapilib Version 1.0.5233 { Lib_XAPILIB, 1, 0, 5233, @@ -355,6 +364,13 @@ HLEData HLEDataBase[] = XNet_1_0_3911, XNet_1_0_3911_SIZE }, + // XNet Version 1.0.4627 + { + Lib_XNETS, + 1, 0, 4627, + XNet_1_0_4627, + XNet_1_0_4627_SIZE + }, // XOnline Version 1.0.4361 { Lib_XONLINE, // TODO : Typo for XONLINES? diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.h b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.h new file mode 100644 index 000000000..49c31bd1f --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.h @@ -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->XNet.1.0.4627.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 +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XNET_1_0_4627_H +#define XNET_1_0_4627_H + +#include "OOVPA.h" + +extern OOVPATable XNet_1_0_4627[]; +extern uint32 XNet_1_0_4627_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl new file mode 100644 index 000000000..e4094b2a8 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl @@ -0,0 +1,353 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XNet.1.0.4627.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 +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XnInit +// ****************************************************************** +OOVPA_XREF_LARGE(XnInit_1_0_4627, 18, + + XREF_XNINIT, + XRefZero) + + // XnInit+0x0000 : push ebp + { 0x0000, 0x55 }, // (Offset,Value)-Pair #1 + + // XnInit+0x0003 : sub esp, 0x0218 + { 0x0003, 0x81 }, // (Offset,Value)-Pair #2 + { 0x0004, 0xEC }, // (Offset,Value)-Pair #3 + { 0x0005, 0x18 }, // (Offset,Value)-Pair #4 + { 0x0006, 0x02 }, // (Offset,Value)-Pair #5 + + // XnInit+0x0019 : cmpxchg [ecx], edx + { 0x0019, 0x0F }, // (Offset,Value)-Pair #6 + { 0x001A, 0xB1 }, // (Offset,Value)-Pair #7 + { 0x001B, 0x11 }, // (Offset,Value)-Pair #8 + + // XnInit+0x0041 : push 0x0AF8 + { 0x0041, 0x68 }, // (Offset,Value)-Pair #9 + { 0x0042, 0xF8 }, // (Offset,Value)-Pair #10 + { 0x0043, 0x0A }, // (Offset,Value)-Pair #11 + + // XnInit+0x01FA : OR DWORD PTR SS:[EBP-4],FFFFFFFF + { 0x01FA, 0x83 }, // (Offset,Value)-Pair #12 + { 0x01FB, 0x4D }, // (Offset,Value)-Pair #13 + { 0x01FC, 0xFC }, // (Offset,Value)-Pair #14 + { 0x01FD, 0xFF }, // (Offset,Value)-Pair #15 + + // XnInit+0x0203 : retn 18h + { 0x0203, 0xC2 }, // (Offset,Value)-Pair #16 + { 0x0204, 0x18 }, // (Offset,Value)-Pair #17 + { 0x0205, 0x00 }, // (Offset,Value)-Pair #18 +OOVPA_END; + +// ****************************************************************** +// * XNetStartup +// ****************************************************************** +OOVPA_XREF(XNetStartup_1_0_4627, 8, + + XRefNoSaveIndex, + XRefOne) + + // XNetStartup+0x0F : call [XnInit] + { 0x10, XREF_XNINIT }, // (Offset,Value)-Pair #1 + + // XNetStartup+0x00 : xor eax, eax + { 0x00, 0x33 }, // (Offset,Value)-Pair #2 + { 0x01, 0xC0 }, // (Offset,Value)-Pair #3 + + // XNetStartup+0x02 : push eax + { 0x02, 0x50 }, // (Offset,Value)-Pair #4 + + // XNetStartup+0x03 : push eax + { 0x03, 0x50 }, // (Offset,Value)-Pair #5 + + // XNetStartup+0x04 : push eax + { 0x04, 0x50 }, // (Offset,Value)-Pair #6 + + // XNetStartup+0x14 : retn 0x04 + { 0x14, 0xC2 }, // (Offset,Value)-Pair #7 + { 0x15, 0x04 }, // (Offset,Value)-Pair #8 +OOVPA_END; + +// ****************************************************************** +// * WSAStartup +// ****************************************************************** +OOVPA_XREF(WSAStartup_1_0_4627, 9, + + XRefNoSaveIndex, + XRefOne) + + // WSAStartup+0x0F : call [XnInit] + { 0x14, XREF_XNINIT }, // (Offset,Value)-Pair #1 + + // WSAStartup+0x00 : push [esp+0x08] + { 0x00, 0xFF }, // (Offset,Value)-Pair #2 + { 0x01, 0x74 }, // (Offset,Value)-Pair #3 + { 0x02, 0x24 }, // (Offset,Value)-Pair #4 + { 0x03, 0x08 }, // (Offset,Value)-Pair #5 + + // WSAStartup+0x04 : push [esp+0x08] + { 0x04, 0xFF }, // (Offset,Value)-Pair #6 + { 0x05, 0x74 }, // (Offset,Value)-Pair #7 + { 0x06, 0x24 }, // (Offset,Value)-Pair #8 + { 0x07, 0x08 }, // (Offset,Value)-Pair #9 +OOVPA_END; + +/////// +// ****************************************************************** +// * socket +// ****************************************************************** +OOVPA_NO_XREF_LARGE(socket_1_0_4627, 20) + + // socket+0x13 : push 0x276D + { 0x0013, 0x68 }, // (Offset,Value)-Pair #1 + { 0x0014, 0x6D }, // (Offset,Value)-Pair #2 + { 0x0015, 0x27 }, // (Offset,Value)-Pair #3 + + // socket+0x69 : cmp edi, 0x11 + { 0x0069, 0x83 }, // (Offset,Value)-Pair #4 + { 0x006A, 0xFF }, // (Offset,Value)-Pair #5 + { 0x006B, 0x11 }, // (Offset,Value)-Pair #6 + + // socket+0x8C : SETNE DL + { 0x008C, 0x0F }, // (Offset,Value)-Pair #7 + { 0x008D, 0x95 }, // (Offset,Value)-Pair #8 + { 0x008E, 0xC2 }, // (Offset,Value)-Pair #9 + + // socket+0xAE : MOV EAX,273B + { 0x00AE, 0xB8 }, // (Offset,Value)-Pair #10 + { 0x00AF, 0x3B }, // (Offset,Value)-Pair #11 + { 0x00B0, 0x27 }, // (Offset,Value)-Pair #12 + { 0x00B1, 0x00 }, // (Offset,Value)-Pair #13 + { 0x00B2, 0x00 }, // (Offset,Value)-Pair #14 + + // socket+0x0116 : mov [esi+4], ecx + { 0x0116, 0x89 }, // (Offset,Value)-Pair #15 + { 0x0117, 0x4E }, // (Offset,Value)-Pair #16 + { 0x0118, 0x04 }, // (Offset,Value)-Pair #17 + + // socket+0x012D : retn 0C + { 0x012D, 0xC2 }, // (Offset,Value)-Pair #18 + { 0x012E, 0x0C }, // (Offset,Value)-Pair #19 + { 0x012F, 0x00 }, // (Offset,Value)-Pair #20 +OOVPA_END; + +// ****************************************************************** +// * socket +// ****************************************************************** +OOVPA_NO_XREF(connect_1_0_4627, 24) + + // connect+0x00 : push ebp + { 0x00, 0x55 }, // (Offset,Value)-Pair #1 + + // connect+0x0B : je short +09 + { 0x0B, 0x74 }, // (Offset,Value)-Pair #2 + { 0x0C, 0x09 }, // (Offset,Value)-Pair #3 + + // connect+0x16 : PUSH 276D + { 0x16, 0x68 }, // (Offset,Value)-Pair #4 + { 0x17, 0x6D }, // (Offset,Value)-Pair #5 + { 0x18, 0x27 }, // (Offset,Value)-Pair #6 + { 0x19, 0x00 }, // (Offset,Value)-Pair #7 + { 0x1A, 0x00 }, // (Offset,Value)-Pair #8 + + // connect+0x42 : TEST DL,40 + { 0x42, 0xF6 }, // (Offset,Value)-Pair #9 + { 0x43, 0xC2 }, // (Offset,Value)-Pair #10 + { 0x44, 0x40 }, // (Offset,Value)-Pair #11 + + // connect+0x68 : PUSH DWORD PTR SS:[EBP+8] + { 0x68, 0xFF }, // (Offset,Value)-Pair #12 + { 0x69, 0x75 }, // (Offset,Value)-Pair #13 + { 0x6A, 0x08 }, // (Offset,Value)-Pair #14 + + // connect+0x8F : MOV ESI,80072733 + { 0x8F, 0xBE }, // (Offset,Value)-Pair #15 + { 0x90, 0x33 }, // (Offset,Value)-Pair #16 + { 0x91, 0x27 }, // (Offset,Value)-Pair #17 + { 0x92, 0x07 }, // (Offset,Value)-Pair #18 + { 0x93, 0x80 }, // (Offset,Value)-Pair #19 + + // connect+0xCD : PUSH -1 + { 0xCD, 0x6A }, // (Offset,Value)-Pair #20 + { 0xCE, 0xFF }, // (Offset,Value)-Pair #21 + + // connect+0xE6 : retn 0C + { 0xE6, 0xC2 }, // (Offset,Value)-Pair #22 + { 0xE7, 0x0C }, // (Offset,Value)-Pair #23 + { 0xE8, 0x00 }, // (Offset,Value)-Pair #24 +OOVPA_END; + +// ****************************************************************** +// * send +// ****************************************************************** +OOVPA_NO_XREF(send_1_0_4627, 24) + + // send+0x00 : push ebp + { 0x00, 0x55 }, // (Offset,Value)-Pair #1 + + // send+0x17 : push 0x276D + { 0x17, 0x68 }, // (Offset,Value)-Pair #2 + { 0x18, 0x6D }, // (Offset,Value)-Pair #3 + { 0x19, 0x27 }, // (Offset,Value)-Pair #4 + + // send+0x24 : jmp + { 0x24, 0xEB }, // (Offset,Value)-Pair #5 + { 0x25, 0x6A }, // (Offset,Value)-Pair #6 + + // send+0x51 : LEA EAX,DWORD PTR SS:[EBP-20] + { 0x51, 0x8D }, // (Offset,Value)-Pair #7 + { 0x52, 0x45 }, // (Offset,Value)-Pair #8 + { 0x53, 0xE0 }, // (Offset,Value)-Pair #9 + + // send+0x6C : JL SHORT +04 + { 0x6C, 0x7C }, // (Offset,Value)-Pair #10 + { 0x6D, 0x04 }, // (Offset,Value)-Pair #11 + + // send+0x7B : MOV DWORD PTR DS:[ESI+8],2B434F53 + { 0x7B, 0xC7 }, // (Offset,Value)-Pair #12 + { 0x7C, 0x46 }, // (Offset,Value)-Pair #13 + { 0x7D, 0x08 }, // (Offset,Value)-Pair #14 + { 0x7E, 0x53 }, // (Offset,Value)-Pair #15 + { 0x7F, 0x4F }, // (Offset,Value)-Pair #16 + { 0x80, 0x43 }, // (Offset,Value)-Pair #17 + { 0x81, 0x2B }, // (Offset,Value)-Pair #18 + + // send+0x8C : MOV EAX,DWORD PTR SS:[EBP-10] + { 0x8C, 0x8B }, // (Offset,Value)-Pair #19 + { 0x8D, 0x45 }, // (Offset,Value)-Pair #20 + { 0x8E, 0xF0 }, // (Offset,Value)-Pair #21 + + // send+0x92 : retn 10h + { 0x92, 0xC2 }, // (Offset,Value)-Pair #22 + { 0x93, 0x10 }, // (Offset,Value)-Pair #23 + { 0x94, 0x00 }, // (Offset,Value)-Pair #24 +OOVPA_END; + +// ****************************************************************** +// * recv +// ****************************************************************** +OOVPA_NO_XREF(recv_1_0_4627, 24) + + // recv+0x00 : push ebp + { 0x00, 0x55 }, // (Offset,Value)-Pair #1 + + // recv+0x17 : push 0x276D + { 0x17, 0x68 }, // (Offset,Value)-Pair #2 + { 0x18, 0x6D }, // (Offset,Value)-Pair #3 + { 0x19, 0x27 }, // (Offset,Value)-Pair #4 + + // recv+0x24 : jmp + { 0x24, 0xEB }, // (Offset,Value)-Pair #5 + { 0x25, 0x66 }, // (Offset,Value)-Pair #6 + + // recv+0x51 : MOV DWORD PTR SS:[EBP-14],EAX + { 0x51, 0x89 }, // (Offset,Value)-Pair #7 + { 0x52, 0x45 }, // (Offset,Value)-Pair #8 + { 0x53, 0xEC }, // (Offset,Value)-Pair #9 + + // recv+0x68 : JL SHORT +04 + { 0x68, 0x7C }, // (Offset,Value)-Pair #10 + { 0x69, 0x04 }, // (Offset,Value)-Pair #11 + + // recv+0x77 : MOV DWORD PTR DS:[ESI+8],2B434F53 + { 0x77, 0xC7 }, // (Offset,Value)-Pair #12 + { 0x78, 0x46 }, // (Offset,Value)-Pair #13 + { 0x79, 0x08 }, // (Offset,Value)-Pair #14 + { 0x7A, 0x53 }, // (Offset,Value)-Pair #15 + { 0x7B, 0x4F }, // (Offset,Value)-Pair #16 + { 0x7C, 0x43 }, // (Offset,Value)-Pair #17 + { 0x7D, 0x2B }, // (Offset,Value)-Pair #18 + + // recv+0x88 : MOV EAX,DWORD PTR SS:[EBP+8] + { 0x88, 0x8B }, // (Offset,Value)-Pair #19 + { 0x89, 0x45 }, // (Offset,Value)-Pair #20 + { 0x8A, 0x08 }, // (Offset,Value)-Pair #21 + + // recv+0x8E : retn 10h + { 0x8E, 0xC2 }, // (Offset,Value)-Pair #22 + { 0x8F, 0x10 }, // (Offset,Value)-Pair #23 + { 0x90, 0x00 }, // (Offset,Value)-Pair #24 +OOVPA_END; + +// ****************************************************************** +// * ioctlsocket +// ****************************************************************** +OOVPA_NO_XREF(ioctlsocket_1_0_4627, 10) + + // ioctlsocket+0x13 : push 0x276D + { 0x13, 0x68 }, // (Offset,Value)-Pair #1 + { 0x14, 0x6D }, // (Offset,Value)-Pair #2 + { 0x15, 0x27 }, // (Offset,Value)-Pair #3 + + // ioctlsocket+0x62 : lea edx, [esi+0x24] + { 0x62, 0x8D }, // (Offset,Value)-Pair #4 + { 0x63, 0x56 }, // (Offset,Value)-Pair #5 + { 0x64, 0x24 }, // (Offset,Value)-Pair #6 + + // ioctlsocket+0x81 : mov cl, al + { 0x81, 0x8A }, // (Offset,Value)-Pair #7 + { 0x82, 0xC8 }, // (Offset,Value)-Pair #8 + + // ioctlsocket+0xC6 : retn 0x0C + { 0xC6, 0xC2 }, // (Offset,Value)-Pair #9 + { 0xC7, 0x0C }, // (Offset,Value)-Pair #10 +OOVPA_END; + +// ****************************************************************** +// * XNet_1_0_4627 +// ****************************************************************** +OOVPATable XNet_1_0_4627[] = { + // XNetStartup + OOVPA_TABLE_PATCH(XNetStartup_1_0_4627, XTL::EmuXNetStartup), // same as xonline 4361 + // WSAStartup + OOVPA_TABLE_PATCH(WSAStartup_1_0_4627, XTL::EmuWSAStartup), // same as xonline 4361 + // XnInit (XREF) + OOVPA_TABLE_XREF(XnInit_1_0_4627), + // socket + OOVPA_TABLE_PATCH(socket_1_0_4627, MFPtoFP(&XTL::EmuThis::Emusocket)), + // connect + OOVPA_TABLE_PATCH(connect_1_0_4627, MFPtoFP(&XTL::EmuThis::Emuconnect)), + // send + OOVPA_TABLE_PATCH(send_1_0_4627, MFPtoFP(&XTL::EmuThis::Emusend)), + // recv + OOVPA_TABLE_PATCH(recv_1_0_4627, MFPtoFP(&XTL::EmuThis::Emurecv)), + // ioctlsocket + OOVPA_TABLE_PATCH(ioctlsocket_1_0_4627, MFPtoFP(&XTL::EmuThis::Emuioctlsocket)), +}; + +// ****************************************************************** +// * XNet_1_0_4627_SIZE +// ****************************************************************** +uint32 XNet_1_0_4627_SIZE = sizeof(XNet_1_0_4627); diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl index 5118f2fc1..194feb353 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl @@ -33,31 +33,31 @@ // ****************************************************************** // ****************************************************************** -// * XnInit +// * XnInit -> Belongs in XNet lib // ****************************************************************** -OOVPA_XREF(XnInit_1_0_4627, 12, - - XREF_XNINIT, - XRefZero) - - // XnInit+0x03 : sub esp, 0x0218 - { 0x03, 0x81 }, // (Offset,Value)-Pair #1 - { 0x04, 0xEC }, // (Offset,Value)-Pair #2 - { 0x05, 0x18 }, // (Offset,Value)-Pair #3 - { 0x06, 0x02 }, // (Offset,Value)-Pair #4 - - // XnInit+0x19 : cmpxchg [ecx], edx - { 0x19, 0x0F }, // (Offset,Value)-Pair #5 - { 0x1A, 0xB1 }, // (Offset,Value)-Pair #6 - { 0x1B, 0x11 }, // (Offset,Value)-Pair #7 - - // XnInit+0x3C : push 0x4454454E - { 0x3C, 0x68 }, // (Offset,Value)-Pair #8 - { 0x3D, 0x4E }, // (Offset,Value)-Pair #9 - { 0x3E, 0x45 }, // (Offset,Value)-Pair #10 - { 0x3F, 0x54 }, // (Offset,Value)-Pair #11 - { 0x40, 0x44 }, // (Offset,Value)-Pair #12 -OOVPA_END; +//OOVPA_XREF(XnInit_1_0_4627, 12, +// +// XREF_XNINIT, +// XRefZero) +// +// // XnInit+0x03 : sub esp, 0x0218 +// { 0x03, 0x81 }, // (Offset,Value)-Pair #1 +// { 0x04, 0xEC }, // (Offset,Value)-Pair #2 +// { 0x05, 0x18 }, // (Offset,Value)-Pair #3 +// { 0x06, 0x02 }, // (Offset,Value)-Pair #4 +// +// // XnInit+0x19 : cmpxchg [ecx], edx +// { 0x19, 0x0F }, // (Offset,Value)-Pair #5 +// { 0x1A, 0xB1 }, // (Offset,Value)-Pair #6 +// { 0x1B, 0x11 }, // (Offset,Value)-Pair #7 +// +// // XnInit+0x3C : push 0x4454454E +// { 0x3C, 0x68 }, // (Offset,Value)-Pair #8 +// { 0x3D, 0x4E }, // (Offset,Value)-Pair #9 +// { 0x3E, 0x45 }, // (Offset,Value)-Pair #10 +// { 0x3F, 0x54 }, // (Offset,Value)-Pair #11 +// { 0x40, 0x44 }, // (Offset,Value)-Pair #12 +//OOVPA_END; // ****************************************************************** // * XNetGetEthernetLinkStatus diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.h b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.h new file mode 100644 index 000000000..837727de3 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.h @@ -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.4721.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 +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XAPI_1_0_4721_H +#define XAPI_1_0_4721_H + +#include "OOVPA.h" + +extern OOVPATable XAPI_1_0_4721[]; +extern uint32 XAPI_1_0_4721_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl new file mode 100644 index 000000000..280da04c3 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl @@ -0,0 +1,86 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ 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.4721.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 +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XAPI_1_0_4721 +// ****************************************************************** +OOVPATable XAPI_1_0_4721[] = { + /* + // RtlCreateHeap (* unchanged since 1.0.4361 *) (* OR FARTHER *) + obsolete OOVPA_TABLE_PATCH(RtlCreateHeap_1_0_3911, XTL::EmuRtlCreateHeap), + // RtlAllocateHeap (* unchanged since 1.0.4361 *) (* OR FARTHER *) + obsolete OOVPA_TABLE_PATCH(RtlAllocateHeap_1_0_3911, XTL::EmuRtlAllocateHeap), + // RtlReAllocateHeap + obsolete OOVPA_TABLE_PATCH(RtlReAllocateHeap_1_0_4627, XTL::EmuRtlReAllocateHeap), + // RtlFreeHeap + obsolete OOVPA_TABLE_PATCH(RtlFreeHeap_1_0_4627, XTL::EmuRtlFreeHeap), + // RtlSizeHeap + obsolete OOVPA_TABLE_PATCH(RtlSizeHeap_1_0_4627, XTL::EmuRtlSizeHeap), + // RtlDestroyHeap + obsolete OOVPA_TABLE_PATCH(RtlDestroyHeap_1_0_4627, XTL::EmuRtlDestroyHeap), + */ + // XMountUtilityDrive + OOVPA_TABLE_PATCH(XMountUtilityDrive_1_0_4432, XTL::EmuXMountUtilityDrive), + // XInitDevices (* unchanged since 1.0.3911 *) + OOVPA_TABLE_PATCH(XInitDevices_1_0_3911, XTL::EmuXInitDevices), + // XGetDevices (* unchanged since 1.0.4134 *) + OOVPA_TABLE_PATCH(XGetDevices_1_0_4134, XTL::EmuXGetDevices), + // XInputOpen (* unchanged since 1.0.4361 *) + OOVPA_TABLE_PATCH(XInputOpen_1_0_4361, XTL::EmuXInputOpen), + // XInputGetCapabilities (* unchanged since 1.0.4361 *) + OOVPA_TABLE_PATCH(XInputGetCapabilities_1_0_4361, XTL::EmuXInputGetCapabilities), + // XInputGetState (* unchanged since 1.0.4361 *) + OOVPA_TABLE_PATCH(XInputGetState_1_0_4361, XTL::EmuXInputGetState), + // XInputSetState (* unchanged since 1.0.4361 *) + OOVPA_TABLE_PATCH(XInputSetState_1_0_4361, XTL::EmuXInputSetState), + // XID_fCloseDevice (* unchanged since 1.0.4361 *) + OOVPA_TABLE_XREF(XID_fCloseDevice_1_0_4361), + // XInputClose (* unchanged since 1.0.3911 *) + OOVPA_TABLE_PATCH(XInputClose_1_0_3911, XTL::EmuXInputClose), + // XInputClose (* unchanged since 1.0.4361 *) + // OOVPA_TABLE_PATCH(XInputClose_1_0_4361, XTL::EmuXInputClose), + // XapiThreadStartup (* unchanged since 1.0.4361 *) + // obsolete OOVPA_TABLE_PATCH(XapiThreadStartup_1_0_4361, XTL::EmuXapiThreadStartup), + //* Too High Level + // XapiInitProcess (* unchanged since 1.0.4361 *) + // obsolete OOVPA_TABLE_PATCH(XapiInitProcess_1_0_4361, XTL::EmuXapiInitProcess), + //*/ + // XapiBootToDash (* unchanged since 1.0.3911 *) + /* obsolete OOVPA_TABLE_PATCH(XapiBootDash_1_0_3911, XTL::EmuXapiBootDash),*/ +}; + +// ****************************************************************** +// * XAPI_1_0_4721_SIZE +// ****************************************************************** +uint32 XAPI_1_0_4721_SIZE = sizeof(XAPI_1_0_4721);