From 8dadef4ccc5bc4fee98f5f6eda33afaeab9a97ee Mon Sep 17 00:00:00 2001 From: CCHyper <73803386+CCHyper@users.noreply.github.com> Date: Wed, 9 Mar 2022 00:08:47 +0000 Subject: [PATCH] Moves issue-#8 to MultiMission. --- src/bugfix/bugfix_hooks.cpp | 16 ------ src/extensions/ext_hooks.cpp | 2 + .../multimission/multimissionext_hooks.cpp | 51 +++++++++++++++++++ .../multimission/multimissionext_hooks.h | 31 +++++++++++ 4 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 src/extensions/multimission/multimissionext_hooks.cpp create mode 100644 src/extensions/multimission/multimissionext_hooks.h diff --git a/src/bugfix/bugfix_hooks.cpp b/src/bugfix/bugfix_hooks.cpp index c79c28041..e3e5fab12 100644 --- a/src/bugfix/bugfix_hooks.cpp +++ b/src/bugfix/bugfix_hooks.cpp @@ -49,21 +49,6 @@ #include "hooker_macros.h" -/** - * #issue-8 - * - * Fixes MultiMission "MaxPlayers" incorrectly loaded with "MinPlayers". - * - * @author: CCHyper - */ -static void _MultiMission_Constructor_MaxPlayers_Typo_Patch() -{ - static const char *TEXT_MAXPLAYERS = "MaxPlayers"; - Patch_Dword(0x005EF124+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode - Patch_Dword(0x005EF5E4+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode -} - - /** * Scale up the input rect to the desired width and height, while maintaining the aspect ratio. * @@ -377,5 +362,4 @@ void BugFix_Hooks() _Intro_Movie_Patches(); _Dont_Stretch_Main_Menu_Video_Patch(); _Scale_Movies_By_Ratio_Patch(); - _MultiMission_Constructor_MaxPlayers_Typo_Patch(); } diff --git a/src/extensions/ext_hooks.cpp b/src/extensions/ext_hooks.cpp index 4c2a073c6..8626b84bc 100644 --- a/src/extensions/ext_hooks.cpp +++ b/src/extensions/ext_hooks.cpp @@ -105,6 +105,7 @@ #include "mapseedext_hooks.h" #include "multiscoreext_hooks.h" +#include "multimissionext_hooks.h" #include "cciniext_hooks.h" @@ -205,6 +206,7 @@ void Extension_Hooks() MapSeedClassExtension_Hooks(); MultiScoreExtension_Hooks(); + MultiMissionExtension_Hooks(); CCINIClassExtension_Hooks(); diff --git a/src/extensions/multimission/multimissionext_hooks.cpp b/src/extensions/multimission/multimissionext_hooks.cpp new file mode 100644 index 000000000..83b0fe66a --- /dev/null +++ b/src/extensions/multimission/multimissionext_hooks.cpp @@ -0,0 +1,51 @@ +/******************************************************************************* +/* O P E N S O U R C E -- V I N I F E R A ** +/******************************************************************************* + * + * @project Vinifera + * + * @file MULTIMISSIONEXT_HOOKS.CPP + * + * @author CCHyper + * + * @brief Contains the hooks for the extended MultiMission class. + * + * @license Vinifera is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version + * 3 of the License, or (at your option) any later version. + * + * Vinifera 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 received a copy of the GNU General Public + * License along with this program. + * If not, see . + * + ******************************************************************************/ +#include "endgameext_hooks.h" +#include "debughandler.h" +#include "asserthandler.h" + +#include "hooker.h" +#include "hooker_macros.h" + + +/** + * Main function for patching the hooks. + */ +void MultiMissionExtension_Hooks() +{ + /** + * #issue-8 + * + * Fixes MultiMission "MaxPlayers" incorrectly loaded with "MinPlayers". + * + * @author: CCHyper + */ + static const char *TEXT_MAXPLAYERS = "MaxPlayers"; + Patch_Dword(0x005EF124+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode + Patch_Dword(0x005EF5E4+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode +} diff --git a/src/extensions/multimission/multimissionext_hooks.h b/src/extensions/multimission/multimissionext_hooks.h new file mode 100644 index 000000000..0792c63f4 --- /dev/null +++ b/src/extensions/multimission/multimissionext_hooks.h @@ -0,0 +1,31 @@ +/******************************************************************************* +/* O P E N S O U R C E -- V I N I F E R A ** +/******************************************************************************* + * + * @project Vinifera + * + * @file MULTIMISSIONEXT_HOOKS.H + * + * @author CCHyper + * + * @brief Contains the hooks for the extended MultiMission class. + * + * @license Vinifera is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version + * 3 of the License, or (at your option) any later version. + * + * Vinifera 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 received a copy of the GNU General Public + * License along with this program. + * If not, see . + * + ******************************************************************************/ +#pragma once + + +void MultiMissionExtension_Hooks();