diff --git a/build/win32/Cxbx.vcxproj b/build/win32/Cxbx.vcxproj index b60243436..5fe56c5f2 100644 --- a/build/win32/Cxbx.vcxproj +++ b/build/win32/Cxbx.vcxproj @@ -395,6 +395,7 @@ $(SOLUTIONDIR)Export.bat + diff --git a/build/win32/Cxbx.vcxproj.filters b/build/win32/Cxbx.vcxproj.filters index be097bf2e..e4aecf01c 100644 --- a/build/win32/Cxbx.vcxproj.filters +++ b/build/win32/Cxbx.vcxproj.filters @@ -821,6 +821,9 @@ HLEDatabase\XG + + HLEDatabase\XG + HLEDatabase\XG diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl index 2f22766fc..26be78802 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl @@ -76,7 +76,6 @@ OOVPA_NO_XREF(XGSwizzleBox, 3911, 8) { 0xFE, 0x45 }, OOVPA_END; -/* Leave unpatched // ****************************************************************** // * XGUnswizzleRect // ****************************************************************** @@ -91,7 +90,6 @@ OOVPA_NO_XREF(XGUnswizzleRect, 3911, 8) { 0xDE, 0x89 }, { 0xFE, 0x60 }, OOVPA_END; -*/ // ****************************************************************** // * XGWriteSurfaceOrTextureToXPR @@ -152,6 +150,29 @@ OOVPA_NO_XREF(XGUnswizzleBox, 3911, 8) { 0xFE, 0x20 }, OOVPA_END; +// ****************************************************************** +// * XGCompressRect +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(XGCompressRect, 3911, 12) + + { 0x00, 0x55 }, + { 0x01, 0x8D }, + + { 0x14, 0x83 }, + { 0x15, 0x7D }, + { 0x16, 0x6C }, + { 0x17, 0x00 }, + { 0x18, 0x56 }, + { 0x19, 0x57 }, + { 0x1A, 0xC7 }, + { 0x1B, 0x45 }, + + { 0xC0, 0x7E }, + { 0xC1, 0x01 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * XGCompressRect // ****************************************************************** @@ -166,7 +187,7 @@ OOVPA_NO_XREF(XGCompressRect, 3911, 8) { 0xBE, 0x80 }, { 0xDA, 0xAF }, OOVPA_END; - +#endif // ****************************************************************** // * XGSetIndexBufferHeader // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4134.inl new file mode 100644 index 000000000..29b80426c --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4134.inl @@ -0,0 +1,81 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XG.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) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XGSetVertexBufferHeader +// ****************************************************************** +//Generic OOVPA as of 4134 and newer. +OOVPA_NO_XREF(XGSetVertexBufferHeader, 4134, 15) + + { 0x01, 0x44 }, + { 0x04, 0x8B }, + { 0x07, 0x18 }, + { 0x0A, 0x08 }, + + { 0x0C, 0xC7 }, + { 0x0D, 0x00 }, + { 0x0E, 0x01 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, // XGSetVertexBufferHeader 0x00 vs XGSetIndexBufferHeader 0x01 + { 0x11, 0x00 }, + { 0x12, 0x89 }, + { 0x13, 0x48 }, + { 0x14, 0x04 }, + { 0x15, 0xC2 }, + { 0x16, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * XGSetIndexBufferHeader +// ****************************************************************** +//Generic OOVPA as of 4134 and newer. +OOVPA_NO_XREF(XGSetIndexBufferHeader, 4134, 15) + + { 0x01, 0x44 }, + { 0x04, 0x8B }, + { 0x07, 0x18 }, + { 0x0A, 0x08 }, + + { 0x0C, 0xC7 }, + { 0x0D, 0x00 }, + { 0x0E, 0x01 }, + { 0x0F, 0x00 }, + { 0x10, 0x01 }, // XGSetVertexBufferHeader 0x00 vs XGSetIndexBufferHeader 0x01 + { 0x11, 0x00 }, + { 0x12, 0x89 }, + { 0x13, 0x48 }, + { 0x14, 0x04 }, + { 0x15, 0xC2 }, + { 0x16, 0x18 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl index c334b2c5d..ae1f6e6d6 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl @@ -86,6 +86,7 @@ OOVPA_NO_XREF(XGSwizzleRect, 4361, 10) { 0xED, 0x0B }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * XGSetVertexBufferHeader // ****************************************************************** @@ -100,6 +101,7 @@ OOVPA_NO_XREF(XGSetVertexBufferHeader, 4361, 8) // 4134 { 0x13, 0x48 }, { 0x16, 0x18 }, OOVPA_END; +#endif #if 0 // Moved to 3911 // ****************************************************************** // * XGCompressRect @@ -116,7 +118,7 @@ OOVPA_NO_XREF(XGCompressRect, 4361, 8) { 0xFE, 0x8B }, OOVPA_END; #endif - +#if 0 // Moved to 4134 // ****************************************************************** // * XGSetIndexBufferHeader // ****************************************************************** @@ -138,6 +140,7 @@ OOVPA_NO_XREF(XGSetIndexBufferHeader, 4361, 13) { 0x16, 0x18 }, OOVPA_END; +#endif // ****************************************************************** // * XFONT_OpenBitmapFontFromMemory @@ -165,8 +168,8 @@ OOVPATable XG_4361[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl index 6c08bbec9..39772642c 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl @@ -45,8 +45,8 @@ OOVPATable XG_4432[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl index 33c8fafe0..29faf2fed 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl @@ -83,8 +83,8 @@ OOVPATable XG_4627[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl index fb8dad14d..2576e8db7 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl @@ -42,8 +42,8 @@ OOVPATable XG_5028[] = { // REGISTER_OOVPA(XGUnswizzleRect, 3911, DISABLED), // TODO : Uncomment REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl index 2300f9c74..94be2358d 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl @@ -43,8 +43,8 @@ OOVPATable XG_5233[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl index 17bcfc828..ac32843d0 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl @@ -43,8 +43,8 @@ OOVPATable XG_5344[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl index 3ba2263a6..60453b26d 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl @@ -73,8 +73,8 @@ OOVPATable XG_5558[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl index 12de2621d..eb35a12a9 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl @@ -60,8 +60,8 @@ OOVPATable XG_5788[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl index 8169dbd0a..9b9fbe55b 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl @@ -43,8 +43,8 @@ OOVPATable XG_5849[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl index e330af410..91b62125b 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl @@ -32,6 +32,18 @@ // * // ****************************************************************** +// TODO: Known Xgraphics OOVPA issue list +// * 4034 is not verified each OOVPA. +// * Following OOVPA revision are not verified +// * XGCompressRect (4242, 4721, 5028, 5120) +// * XGSetIndexBufferHeader (4039) +// * XGSetVertexBufferHeader (4039) +// * XGSwizzleBox (4242) +// * XGUnswizzleBox (4039) +// * XGWriteSurfaceOrTextureToXPR (4242, 5028) +// NOTE: Known Xgraphics OOVPA not included in initial revision. +// * XFONT_OpenBitmapFontFromMemory (4361) + #ifndef XGRAPHC_OOVPA_INL #define XGRAPHC_OOVPA_INL @@ -39,6 +51,7 @@ #include "HLEDataBase/XG.1.0.3911.inl" #include "HLEDataBase/XG.1.0.4034.inl" +#include "HLEDataBase/XG.1.0.4134.inl" #include "HLEDataBase/XG.1.0.4361.inl" #include "HLEDataBase/XG.1.0.4432.inl" #include "HLEDataBase/XG.1.0.4627.inl" @@ -57,13 +70,13 @@ OOVPATable XGRAPHC_OOVPAV2[] = { REGISTER_OOVPAS(XFONT_OpenBitmapFontFromMemory, XREF, 4361), REGISTER_OOVPAS(XGCompressRect, XREF, 3911), REGISTER_OOVPAS(XGIsSwizzledFormat, PATCH, 3911), - REGISTER_OOVPAS(XGSetIndexBufferHeader, XREF, 3911, 4361), + REGISTER_OOVPAS(XGSetIndexBufferHeader, XREF, 3911, 4134/*4361*/), REGISTER_OOVPAS(XGSetTextureHeader, PATCH, 3911), - REGISTER_OOVPAS(XGSetVertexBufferHeader, XREF, 3911, 4361), + REGISTER_OOVPAS(XGSetVertexBufferHeader, XREF, 3911, 4134/*4361*/), REGISTER_OOVPAS(XGSwizzleBox, PATCH, 3911), - // REGISTER_OOVPAS(XGSwizzleRect, UNPATCHED, 3911), // TODO : Uncomment + REGISTER_OOVPAS(XGSwizzleRect, UNPATCHED, 3911), REGISTER_OOVPAS(XGUnswizzleBox, UNPATCHED, 3911), - // REGISTER_OOVPAS(XGUnswizzleRect, UNPATCHED, 3911), // TODO : Uncomment + REGISTER_OOVPAS(XGUnswizzleRect, UNPATCHED, 3911), REGISTER_OOVPAS(XGWriteSurfaceOrTextureToXPR, PATCH, 3911), };