This commit is contained in:
Nayla Hanegan 2025-01-16 11:25:03 -05:00
parent 9dcc090b6e
commit 92812b9fb0
8 changed files with 1249 additions and 33 deletions

View file

@ -320,11 +320,13 @@ C207D25C 0000000B
39C00000 00000000
$Lottery - Double the Price [Tabitha]
0407BD20 2C1E000A
C207D25C 00000001
2C1E000A 00000000
*Makes the lottery cost nothing instead of the usual 5 coins.
$Lottery - Free Entry [Tabitha]
0407BD20 2C1E0000
C207D25C 00000001
2C1E0000 00000000
*Makes the lottery cost nothing instead of the usual 5 coins.
$Items - Bowser Suit Can Appear in Item Bags [WolfGC64]
@ -617,6 +619,10 @@ C2083CF0 00000002
*-Warp Pipe and Mini-Mega Hammer have a 10% rate
*-Boo Crystal Ball, Gaddlight, Magic Lamp and Bowser Suit have a 5% rate
$Items - Item Shops - Are Open Last Turn [Tabitha]
C2077DCC 00000001
60000000 00000000
$Items - Start with a Mini and Mega Mushroom [WolfGC64]
C2063AE0 00000013
7C83032E 2C040007

File diff suppressed because it is too large Load diff

View file

@ -9443,6 +9443,7 @@ GMNE78 = Monsters, Inc. Scream Arena
GMNP78 = Monsters, Inc. Scream Arena
GMOP70 = Micro Machines
GMPE01 = Mario Party 4
GMPEDX = Mario Party 4 DX
GMPJ01 = Mario Party 4
GMPP01 = Mario Party 4
GMPW01 = Mario Party 4

View file

@ -1087,30 +1087,10 @@ CPUThreadGuard::~CPUThreadGuard()
}
static GameName mGameBeingPlayed = GameName::UnknownGame;
const std::map<std::string, GameName> mGameMap = {{"GMPE01", GameName::MarioParty4},
const std::map<std::string, GameName> mGameMap = {{"GMPE01", GameName::MarioParty4DX},
{"GP5E01", GameName::MarioParty5},
{"GP6E01", GameName::MarioParty6},
{"GP7E01", GameName::MarioParty7},
{"RM8E01", GameName::MarioParty8}};
std::optional<std::pair<u32,u32>> getGameFreeMemory()
{
switch (mGameBeingPlayed) {
case GameName::MarioParty4:
return std::nullopt;
case GameName::MarioParty5:
return std::make_pair(0x801A811C, 0x801A9B5C);
case GameName::MarioParty6:
return std::make_pair(0x80213974, 0x80216014);
case GameName::MarioParty7:
return std::make_pair(0x8023CF6C, 0x8023F9D0);
case GameName::MarioParty8:
return std::make_pair(0x802D5100, 0x802D9500);
case GameName::UnknownGame:
return std::nullopt;
default:
return std::nullopt;
}
}
{"RM8E01", GameName::MarioParty8},
{"GMPEDX", GameName::MarioParty4}};
} // namespace Core

View file

@ -199,13 +199,13 @@ void UpdateInputGate(bool require_focus, bool require_full_focus = false);
void UpdateTitle(Core::System& system);
enum class GameName : u8 {
UnknownGame = 0,
MarioParty4 = 1,
MarioParty5 = 2,
MarioParty6 = 3,
MarioParty7 = 4,
MarioParty8 = 5
UnknownGame = 0,
MarioParty4 = 1,
MarioParty5 = 2,
MarioParty6 = 3,
MarioParty7 = 4,
MarioParty8 = 5,
MarioParty4DX = 6
};
std::optional<std::pair<u32,u32>> getGameFreeMemory();
} // namespace Core

View file

@ -182,7 +182,7 @@ static Installation InstallCodeHandlerLocked(const Core::CPUThreadGuard& guard)
const bool is_mpn_handler_and_game_id_gp5e01 =
IsGeckoCodeHandlerMPN() && (SConfig::GetInstance().GetGameID() == "GP5E01");
const bool is_mpn_handler_and_game_id_gmpe01 =
IsGeckoCodeHandlerMPN() && (SConfig::GetInstance().GetGameID() == "GMPE01");
IsGeckoCodeHandlerMPN() && (SConfig::GetInstance().GetGameID() == "GMPE01") || (SConfig::GetInstance().GetGameID() == "GMPEDX");
u32 codelist_base_address =
is_mpn_handler_and_game_id_rm8e01 ? INSTALLER_BASE_ADDRESS_MP8 :

View file

@ -115,6 +115,7 @@ GeckoDialog::GeckoDialog(QWidget* parent) : QDialog(parent)
QVBoxLayout* layout = new QVBoxLayout();
QTabWidget* tab_widget = new QTabWidget(this);
GeckoCodeWidget* mp4_gecko = new GeckoCodeWidget("GMPE01", "GMPE01", 0);
GeckoCodeWidget* mp4dx_gecko = new GeckoCodeWidget("GMPEDX", "GMPEDX", 0);
GeckoCodeWidget* mp5_gecko = new GeckoCodeWidget("GP5E01", "GP5E01", 0);
GeckoCodeWidget* mp6_gecko = new GeckoCodeWidget("GP6E01", "GP6E01", 0);
GeckoCodeWidget* mp7_gecko = new GeckoCodeWidget("GP7E01", "GP7E01", 0);
@ -122,6 +123,8 @@ GeckoDialog::GeckoDialog(QWidget* parent) : QDialog(parent)
connect(mp4_gecko, &GeckoCodeWidget::OpenGeneralSettings, this,
&GeckoDialog::OpenGeneralSettings);
connect(mp4dx_gecko, &GeckoCodeWidget::OpenGeneralSettings, this,
&GeckoDialog::OpenGeneralSettings);
connect(mp5_gecko, &GeckoCodeWidget::OpenGeneralSettings, this,
&GeckoDialog::OpenGeneralSettings);
connect(mp6_gecko, &GeckoCodeWidget::OpenGeneralSettings, this,
@ -136,6 +139,8 @@ GeckoDialog::GeckoDialog(QWidget* parent) : QDialog(parent)
tab_widget->addTab(GetWrappedWidget(mp4_gecko, this, padding_width, padding_height),
tr("Mario Party 4"));
tab_widget->addTab(GetWrappedWidget(mp4dx_gecko, this, padding_width, padding_height),
tr("Mario Party 4 DX"));
tab_widget->addTab(GetWrappedWidget(mp5_gecko, this, padding_width, padding_height),
tr("Mario Party 5"));
tab_widget->addTab(GetWrappedWidget(mp6_gecko, this, padding_width, padding_height),

View file

@ -185,6 +185,12 @@ bool InstallUpdateDialog::unzipFile(const std::string& zipFilePath, const std::s
return false; // Failed to get file info
}
// Skip User/GC and User/GameSettings directories
if (std::string(filename).find("User/GC") == 0 || std::string(filename).find("User/GameSettings") == 0)
{
continue; // Skip these directories
}
// Create full path for the extracted file
std::string fullPath = destDir + "/" + std::string(filename);
QString qFullPath = QString::fromStdString(fullPath);