From 367c557a779ef226f10cce7a6d7ab98f050c9554 Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Sat, 28 Jun 2014 09:52:03 -0400 Subject: [PATCH] Update Synergy gamedata and switch NMRiH gamedata on linux to use symbols. --- gamedata/sdktools.games/engine.sdk2013.txt | 143 +-------------------- gamedata/sdktools.games/game.empires.txt | 115 +++++++++++++++++ gamedata/sdktools.games/game.nmrih.txt | 123 ++++++++++++++++-- gamedata/sdktools.games/game.synergy.txt | 115 +++++++++++++++++ 4 files changed, 344 insertions(+), 152 deletions(-) diff --git a/gamedata/sdktools.games/engine.sdk2013.txt b/gamedata/sdktools.games/engine.sdk2013.txt index d08f3b8d..a02236eb 100644 --- a/gamedata/sdktools.games/engine.sdk2013.txt +++ b/gamedata/sdktools.games/engine.sdk2013.txt @@ -11,127 +11,6 @@ "Games" { - /* General Temp Entities */ - "#default" - { - "#supported" - { - "game" "synergy" - "game" "nmrih" - "game" "empires" - } - - "Offsets" - { - /* Offset into CBaseTempEntity constructor */ - "s_pTempEntities" - { - "windows" "19" - "linux" "20" - } - "GetTEName" - { - "windows" "4" - "linux" "4" - "mac" "4" - } - "GetTENext" - { - "windows" "8" - "linux" "8" - "mac" "8" - } - "TE_GetServerClass" - { - "windows" "0" - "linux" "0" - "mac" "0" - } - } - - "Signatures" - { - "CBaseTempEntity" - { - "library" "server" - "windows" "\x55\x8B\xEC\x8B\xC1\x8B\x4D\x2A\xC7\x00\x2A\x2A\x2A\x2A\x89\x48" - "linux" "\x55\x89\xE5\x8B\x45\x08\x8B\x55\x0C\xC7\x2A\x2A\x2A\x2A\x2A\x89\x50\x04\x8B\x15\x2A\x2A\x2A\x2A\xA3" - } - "s_pTempEntities" - { - "library" "server" - "mac" "@_ZN15CBaseTempEntity15s_pTempEntitiesE" - } - } - } - - /* CGlobalEntityList */ - "#default" - { - "#supported" - { - "game" "synergy" - "game" "nmrih" - "game" "empires" - } - - "Signatures" - { - /* Functions in CGlobalEntityList */ - "FindEntityByClassname" - { - "library" "server" - "windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x4D\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\x03\xC0\x8B\x3C\xC6\xEB\x2A\x8B" - "linux" "\x55\x89\xE5\x57\x56\x53\x83\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x85\xC0\x74\x2A\x8B\x10\x89\x04\x24\xFF\x52\x0C\x8B\x55\x08\x8B\x00\x25\xFF\x0F\x00\x00\xC1\xE0\x04\x8B\x2A\x2A\x2A\xEB\x15\x66" - "mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" - } - } - } - - /* General GameRules */ - "#default" - { - "#supported" - { - "game" "synergy" - "game" "nmrih" - "game" "empires" - } - - "Offsets" - { - /* Offset into CreateGameRulesObject */ - "g_pGameRules" - { - "windows" "2" - "linux" "1" - } - } - - "Signatures" - { - /* This signature sometimes has multiple matches, but this - * does not matter as g_pGameRules is involved in all of them. - * The same g_pGameRules offset applies to each match. - * - * Sometimes this block of bytes is at the beginning of the static - * CreateGameRulesObject function and sometimes it is in the middle - * of an entirely different function. This depends on the game. - */ - "CreateGameRulesObject" - { - "library" "server" - "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2" - "linux" "\xA1\x2A\x2A\x2A\x2A\x8B\x5D\x08\x85\xC0\x74\x08\x8B\x10\x89" - } - "g_pGameRules" - { - "library" "server" - "mac" "@g_pGameRules" - } - } - } - /* IServer interface pointer */ "#default" { @@ -169,7 +48,7 @@ } } - /* EntityFactoryDictionary function */ + /* No longer necessary. Remove later. */ "#default" { "Signatures" @@ -184,26 +63,6 @@ } } - /* CBaseEntityOutput::FireOutput */ - "#default" - { - "#supported" - { - "game" "synergy" - "game" "empires" - } - "Signatures" - { - "FireOutput" - { - "library" "server" - "windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\xC5\x89\x45\x2A\x8B\x45\x2A\x53\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\xC7" - "linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x65\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x31\xC0\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89" - "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" - } - } - } - /* SetUserInfo data */ "#default" { diff --git a/gamedata/sdktools.games/game.empires.txt b/gamedata/sdktools.games/game.empires.txt index 27e75314..de52228f 100644 --- a/gamedata/sdktools.games/game.empires.txt +++ b/gamedata/sdktools.games/game.empires.txt @@ -11,6 +11,121 @@ "Games" { + /* General Temp Entities */ + "#default" + { + "Offsets" + { + /* Offset into CBaseTempEntity constructor */ + "s_pTempEntities" + { + "windows" "19" + "linux" "20" + } + "GetTEName" + { + "windows" "4" + "linux" "4" + "mac" "4" + } + "GetTENext" + { + "windows" "8" + "linux" "8" + "mac" "8" + } + "TE_GetServerClass" + { + "windows" "0" + "linux" "0" + "mac" "0" + } + } + + "Signatures" + { + "CBaseTempEntity" + { + "library" "server" + "windows" "\x55\x8B\xEC\x8B\xC1\x8B\x4D\x2A\xC7\x00\x2A\x2A\x2A\x2A\x89\x48" + "linux" "\x55\x89\xE5\x8B\x45\x08\x8B\x55\x0C\xC7\x2A\x2A\x2A\x2A\x2A\x89\x50\x04\x8B\x15\x2A\x2A\x2A\x2A\xA3" + } + "s_pTempEntities" + { + "library" "server" + "mac" "@_ZN15CBaseTempEntity15s_pTempEntitiesE" + } + } + } + + /* CGlobalEntityList */ + "#default" + { + "Signatures" + { + /* Functions in CGlobalEntityList */ + "FindEntityByClassname" + { + "library" "server" + "windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x4D\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\x03\xC0\x8B\x3C\xC6\xEB\x2A\x8B" + "linux" "\x55\x89\xE5\x57\x56\x53\x83\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x85\xC0\x74\x2A\x8B\x10\x89\x04\x24\xFF\x52\x0C\x8B\x55\x08\x8B\x00\x25\xFF\x0F\x00\x00\xC1\xE0\x04\x8B\x2A\x2A\x2A\xEB\x15\x66" + "mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" + } + } + } + + /* General GameRules */ + "#default" + { + "Offsets" + { + /* Offset into CreateGameRulesObject */ + "g_pGameRules" + { + "windows" "2" + "linux" "1" + } + } + + "Signatures" + { + /* This signature sometimes has multiple matches, but this + * does not matter as g_pGameRules is involved in all of them. + * The same g_pGameRules offset applies to each match. + * + * Sometimes this block of bytes is at the beginning of the static + * CreateGameRulesObject function and sometimes it is in the middle + * of an entirely different function. This depends on the game. + */ + "CreateGameRulesObject" + { + "library" "server" + "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2" + "linux" "\xA1\x2A\x2A\x2A\x2A\x8B\x5D\x08\x85\xC0\x74\x08\x8B\x10\x89" + } + "g_pGameRules" + { + "library" "server" + "mac" "@g_pGameRules" + } + } + } + + /* CBaseEntityOutput::FireOutput */ + "#default" + { + "Signatures" + { + "FireOutput" + { + "library" "server" + "windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\xC5\x89\x45\x2A\x8B\x45\x2A\x53\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\xC7" + "linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x65\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x31\xC0\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89" + "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" + } + } + } + "empires" { "Offsets" diff --git a/gamedata/sdktools.games/game.nmrih.txt b/gamedata/sdktools.games/game.nmrih.txt index 61470a78..3ee6c98e 100644 --- a/gamedata/sdktools.games/game.nmrih.txt +++ b/gamedata/sdktools.games/game.nmrih.txt @@ -11,6 +11,119 @@ "Games" { + /* General Temp Entities */ + "#default" + { + "Offsets" + { + /* Offset into CBaseTempEntity constructor */ + "s_pTempEntities" + { + "windows" "19" + } + "GetTEName" + { + "windows" "4" + "linux" "4" + "mac" "4" + } + "GetTENext" + { + "windows" "8" + "linux" "8" + "mac" "8" + } + "TE_GetServerClass" + { + "windows" "0" + "linux" "0" + "mac" "0" + } + } + + "Signatures" + { + "CBaseTempEntity" + { + "library" "server" + "windows" "\x55\x8B\xEC\x8B\xC1\x8B\x4D\x2A\xC7\x00\x2A\x2A\x2A\x2A\x89\x48" + } + "s_pTempEntities" + { + "library" "server" + "linux" "@_ZN15CBaseTempEntity15s_pTempEntitiesE" + "mac" "@_ZN15CBaseTempEntity15s_pTempEntitiesE" + } + } + } + + /* CGlobalEntityList */ + "#default" + { + "Signatures" + { + /* Functions in CGlobalEntityList */ + "FindEntityByClassname" + { + "library" "server" + "windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x4D\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\x03\xC0\x8B\x3C\xC6\xEB\x2A\x8B" + "linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" + "mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" + } + } + } + + /* General GameRules */ + "#default" + { + "Offsets" + { + /* Offset into CreateGameRulesObject */ + "g_pGameRules" + { + "windows" "2" + } + } + + "Signatures" + { + /* This signature sometimes has multiple matches, but this + * does not matter as g_pGameRules is involved in all of them. + * The same g_pGameRules offset applies to each match. + * + * Sometimes this block of bytes is at the beginning of the static + * CreateGameRulesObject function and sometimes it is in the middle + * of an entirely different function. This depends on the game. + */ + "CreateGameRulesObject" + { + "library" "server" + "windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2" + } + "g_pGameRules" + { + "library" "server" + "linux" "@g_pGameRules" + "mac" "@g_pGameRules" + } + } + } + + /* CBaseEntityOutput::FireOutput */ + "#default" + { + "Signatures" + { + "FireOutput" + { + "library" "server" + "windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x57\x89" + "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" + "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" + } + } + } + /* No More Room in Hell */ "nmrih" { @@ -107,15 +220,5 @@ "mac" "253" } } - "Signatures" - { - "FireOutput" - { - "library" "server" - "windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x57\x89" - "linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x65\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x31\xC0\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89" - "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" - } - } } } diff --git a/gamedata/sdktools.games/game.synergy.txt b/gamedata/sdktools.games/game.synergy.txt index 0599796c..b52712dd 100644 --- a/gamedata/sdktools.games/game.synergy.txt +++ b/gamedata/sdktools.games/game.synergy.txt @@ -11,6 +11,121 @@ "Games" { + /* General Temp Entities */ + "#default" + { + "Offsets" + { + /* Offset into CBaseTempEntity constructor */ + "s_pTempEntities" + { + "windows" "16" + "linux" "20" + } + "GetTEName" + { + "windows" "4" + "linux" "4" + "mac" "4" + } + "GetTENext" + { + "windows" "8" + "linux" "8" + "mac" "8" + } + "TE_GetServerClass" + { + "windows" "0" + "linux" "0" + "mac" "0" + } + } + + "Signatures" + { + "CBaseTempEntity" + { + "library" "server" + "windows" "\x55\x8B\xEC\x8B\x45\x08\x89\x41\x04\xC7\x01\x2A\x2A\x2A\x2A\xA1" + "linux" "\x55\x89\xE5\x8B\x45\x08\x8B\x55\x0C\xC7\x2A\x2A\x2A\x2A\x2A\x89\x50\x04\x8B\x15\x2A\x2A\x2A\x2A\xA3" + } + "s_pTempEntities" + { + "library" "server" + "mac" "@_ZN15CBaseTempEntity15s_pTempEntitiesE" + } + } + } + + /* CGlobalEntityList */ + "#default" + { + "Signatures" + { + /* Functions in CGlobalEntityList */ + "FindEntityByClassname" + { + "library" "server" + "windows" "\x55\x8B\xEC\x53\x56\x57\x8B\xF9\x8B\x4D\x08\x85\xC9\x74\x15" + "linux" "\x55\x89\xE5\x57\x56\x53\x83\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x85\xC0\x74\x2A\x8B\x10\x89\x04\x24\xFF\x52\x0C\x8B\x55\x08\x8B\x00\x25\xFF\x0F\x00\x00\xC1\xE0\x04\x8B\x2A\x2A\x2A\xEB\x15\x66" + "mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc" + } + } + } + + /* General GameRules */ + "#default" + { + "Offsets" + { + /* Offset into CreateGameRulesObject */ + "g_pGameRules" + { + "windows" "5" + "linux" "1" + } + } + + "Signatures" + { + /* This signature sometimes has multiple matches, but this + * does not matter as g_pGameRules is involved in all of them. + * The same g_pGameRules offset applies to each match. + * + * Sometimes this block of bytes is at the beginning of the static + * CreateGameRulesObject function and sometimes it is in the middle + * of an entirely different function. This depends on the game. + */ + "CreateGameRulesObject" + { + "library" "server" + "windows" "\x55\x8B\xEC\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x07" + "linux" "\xA1\x2A\x2A\x2A\x2A\x8B\x5D\x08\x85\xC0\x74\x08\x8B\x10\x89" + } + "g_pGameRules" + { + "library" "server" + "mac" "@g_pGameRules" + } + } + } + + /* CBaseEntityOutput::FireOutput */ + "#default" + { + "Signatures" + { + "FireOutput" + { + "library" "server" + "windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\xC5\x89\x45\xFC\x53\x8B\x5D\x20\x8B\xC1\x8B\x4D\x1C\x56\x57\x8B" + "linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x2A\x2A\xC7\x85\xDC\xFE\xFF\xFF\x00\x00\x00\x00\x8B" + "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f" + } + } + } + "synergy" { "Offsets"