mirror of
https://github.com/Retropex/dolphin.git
synced 2025-05-12 19:30:44 +02:00
Merge branch 'release1.05'
This commit is contained in:
commit
c8e17716f7
@ -255,6 +255,7 @@ void SConfig::SaveCoreSettings(IniFile& ini)
|
||||
core->Set("PrimeRestoreScanDash", bPrimeRestoreDashing);
|
||||
core->Set("PrimeFriendVouchers", bPrimeFriendVouchers);
|
||||
core->Set("PrimeDisableHudMemo", bDisableHudMemoPopup);
|
||||
core->Set("PrimeUnlockHypermode", bPrimeUnlockHypermode);
|
||||
}
|
||||
|
||||
void SConfig::SaveMovieSettings(IniFile& ini)
|
||||
@ -513,6 +514,7 @@ void SConfig::LoadCoreSettings(IniFile& ini)
|
||||
core->Get("PrimeRestoreScanDash", &bPrimeRestoreDashing, false);
|
||||
core->Get("PrimeFriendVouchers", &bPrimeFriendVouchers, true);
|
||||
core->Get("PrimeDisableHudMemo", &bDisableHudMemoPopup, false);
|
||||
core->Get("PrimeUnlockHypermode", &bPrimeUnlockHypermode, true);
|
||||
}
|
||||
|
||||
void SConfig::LoadMovieSettings(IniFile& ini)
|
||||
|
@ -140,6 +140,7 @@ struct SConfig
|
||||
bool bPrimePortalSkip = false;
|
||||
bool bPrimeFriendVouchers = true;
|
||||
bool bDisableHudMemoPopup = false;
|
||||
bool bPrimeUnlockHypermode = true;
|
||||
|
||||
// Interface settings
|
||||
bool bConfirmStop = false;
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "Core/PrimeHack/Mods/PortalSkipMP2.h"
|
||||
#include "Core/PrimeHack/Mods/DisableHudMemoPopup.h"
|
||||
#include "Core/PrimeHack/Mods/ElfModLoader.h"
|
||||
#include "Core/PrimeHack/Mods/UnlockHypermode.h"
|
||||
|
||||
#include "Core/HW/Wiimote.h"
|
||||
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
|
||||
@ -79,6 +80,7 @@ void InitializeHack() {
|
||||
hack_mgr.add_mod("friend_vouchers_cheat", std::make_unique<FriendVouchers>());
|
||||
hack_mgr.add_mod("disable_hudmemo_popup", std::make_unique<DisableHudMemoPopup>());
|
||||
hack_mgr.add_mod("elf_mod_loader", std::make_unique<ElfModLoader>());
|
||||
hack_mgr.add_mod("unlock_hypermode", std::make_unique<UnlockHypermode>());
|
||||
|
||||
hack_mgr.enable_mod("skip_cutscene");
|
||||
hack_mgr.enable_mod("fov_modifier");
|
||||
@ -119,7 +121,7 @@ bool CheckSpringBallCtl() {
|
||||
bool ImprovedMotionControls() {
|
||||
return Wiimote::CheckImprovedMotions();
|
||||
}
|
||||
|
||||
|
||||
bool CheckForward() {
|
||||
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
||||
return Pad::CheckForward();
|
||||
@ -350,7 +352,7 @@ double GetHorizontalAxis() {
|
||||
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
||||
if (Pad::PrimeUseController()) {
|
||||
return std::get<0>(Pad::GetPrimeStickXY());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Wiimote::PrimeUseController()) {
|
||||
return std::get<0>(Wiimote::GetPrimeStickXY());
|
||||
@ -366,7 +368,7 @@ double GetVerticalAxis() {
|
||||
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
||||
if (Pad::PrimeUseController()) {
|
||||
return std::get<1>(Pad::GetPrimeStickXY());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Wiimote::PrimeUseController()) {
|
||||
return std::get<1>(Wiimote::GetPrimeStickXY());
|
||||
|
@ -179,6 +179,7 @@ void HackManager::update_mod_states() {
|
||||
set_mod_enabled("friend_vouchers_cheat", settings.bPrimeFriendVouchers);
|
||||
set_mod_enabled("portal_skip_mp2", settings.bPrimePortalSkip);
|
||||
set_mod_enabled("disable_hudmemo_popup", settings.bDisableHudMemoPopup);
|
||||
set_mod_enabled("unlock_hypermode", settings.bPrimeUnlockHypermode);
|
||||
}
|
||||
else {
|
||||
disable_mod("noclip");
|
||||
@ -187,6 +188,7 @@ void HackManager::update_mod_states() {
|
||||
disable_mod("restore_dashing");
|
||||
disable_mod("friend_vouchers_cheat");
|
||||
disable_mod("portal_skip_mp2");
|
||||
disable_mod("unlock_hypermode");
|
||||
}
|
||||
|
||||
// Disallow any PrimeHack control mods
|
||||
|
35
Source/Core/Core/PrimeHack/Mods/UnlockHypermode.h
Normal file
35
Source/Core/Core/PrimeHack/Mods/UnlockHypermode.h
Normal file
@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
|
||||
#include "Core/PrimeHack/PrimeMod.h"
|
||||
#include "Core/PrimeHack/PrimeUtils.h"
|
||||
|
||||
namespace prime {
|
||||
class UnlockHypermode : public PrimeMod {
|
||||
public:
|
||||
void run_mod(Game game, Region region) override {
|
||||
if (game != Game::MENU) {
|
||||
return;
|
||||
}
|
||||
|
||||
u32 base = read32(GPR(13) - r13_offset);
|
||||
write8(1, base + 0x68);
|
||||
write8(1, base + 0xa0);
|
||||
write8(1, base + 0xd8);
|
||||
}
|
||||
|
||||
bool init_mod(Game game, Region region) override {
|
||||
if (region == Region::NTSC_U) {
|
||||
r13_offset = 0x2f94;
|
||||
} else if (region == Region::PAL) {
|
||||
r13_offset = 0x2f34;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void on_state_change(ModState old_state) override {}
|
||||
|
||||
private:
|
||||
u32 r13_offset;
|
||||
};
|
||||
}
|
@ -29,6 +29,7 @@ void PrimeCheatsWidget::CreateWidgets()
|
||||
m_checkbox_skipportalmp2 = new QCheckBox(tr("Skip MP2 Portal Cutscene"));
|
||||
m_checkbox_friendvouchers = new QCheckBox(tr("Remove Friend Vouchers Requirement (Trilogy Only)"));
|
||||
m_checkbox_hudmemo = new QCheckBox(tr("Disable Hud Popup on Pickup Acquire"));
|
||||
m_checkbox_hypermode = new QCheckBox(tr("Unlock Hypermode Difficulty"));
|
||||
|
||||
layout->addWidget(m_checkbox_noclip);
|
||||
layout->addWidget(m_checkbox_invulnerability);
|
||||
@ -37,6 +38,7 @@ void PrimeCheatsWidget::CreateWidgets()
|
||||
layout->addWidget(m_checkbox_skipportalmp2);
|
||||
layout->addWidget(m_checkbox_friendvouchers);
|
||||
layout->addWidget(m_checkbox_hudmemo);
|
||||
layout->addWidget(m_checkbox_hypermode);
|
||||
|
||||
main_layout->addWidget(group_box);
|
||||
main_layout->addStretch();
|
||||
@ -53,6 +55,7 @@ void PrimeCheatsWidget::ConnectWidgets()
|
||||
connect(m_checkbox_skipportalmp2, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||
connect(m_checkbox_friendvouchers, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||
connect(m_checkbox_hudmemo, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||
connect(m_checkbox_hypermode, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||
}
|
||||
|
||||
void PrimeCheatsWidget::OnSaveConfig()
|
||||
@ -65,6 +68,7 @@ void PrimeCheatsWidget::OnSaveConfig()
|
||||
settings.bPrimePortalSkip = m_checkbox_skipportalmp2->isChecked();
|
||||
settings.bPrimeFriendVouchers = m_checkbox_friendvouchers->isChecked();
|
||||
settings.bDisableHudMemoPopup = m_checkbox_hudmemo->isChecked();
|
||||
settings.bPrimeUnlockHypermode = m_checkbox_hypermode->isChecked();
|
||||
|
||||
settings.SaveSettings();
|
||||
}
|
||||
@ -79,6 +83,7 @@ void PrimeCheatsWidget::OnLoadConfig()
|
||||
m_checkbox_skipportalmp2->setChecked(settings.bPrimePortalSkip);
|
||||
m_checkbox_friendvouchers->setChecked(settings.bPrimeFriendVouchers);
|
||||
m_checkbox_hudmemo->setChecked(settings.bDisableHudMemoPopup);
|
||||
m_checkbox_hypermode->setChecked(settings.bPrimeUnlockHypermode);
|
||||
}
|
||||
|
||||
void PrimeCheatsWidget::AddDescriptions()
|
||||
@ -97,6 +102,8 @@ void PrimeCheatsWidget::AddDescriptions()
|
||||
QT_TR_NOOP("Removes the friend voucher cost from all purchasable extras. This is on by default as friend-vouchers are impossible to obtain.");
|
||||
static const char TR_HUDMEMO[] =
|
||||
QT_TR_NOOP("Removes the item pickup screen and explanation screen for powerups.");
|
||||
static const char TR_HYPERMODE[] =
|
||||
QT_TR_NOOP("Unlock Hypermode Difficulty.");
|
||||
|
||||
m_checkbox_noclip->setToolTip(tr(TR_NOCLIP));
|
||||
m_checkbox_invulnerability->setToolTip(tr(TR_INVULNERABILITY));
|
||||
@ -105,6 +112,7 @@ void PrimeCheatsWidget::AddDescriptions()
|
||||
m_checkbox_skipportalmp2->setToolTip(tr(TR_SKIPPORTAL));
|
||||
m_checkbox_friendvouchers->setToolTip(tr(TR_FRIENDVOUCHERS));
|
||||
m_checkbox_hudmemo->setToolTip(tr(TR_HUDMEMO));
|
||||
m_checkbox_hypermode->setToolTip(tr(TR_HYPERMODE));
|
||||
}
|
||||
|
||||
void PrimeCheatsWidget::showEvent(QShowEvent*)
|
||||
|
@ -25,4 +25,5 @@ private:
|
||||
QCheckBox* m_checkbox_skipportalmp2;
|
||||
QCheckBox* m_checkbox_friendvouchers;
|
||||
QCheckBox* m_checkbox_hudmemo;
|
||||
QCheckBox* m_checkbox_hypermode;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user