mirror of
https://github.com/Retropex/dolphin.git
synced 2025-05-28 13:02:37 +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("PrimeRestoreScanDash", bPrimeRestoreDashing);
|
||||||
core->Set("PrimeFriendVouchers", bPrimeFriendVouchers);
|
core->Set("PrimeFriendVouchers", bPrimeFriendVouchers);
|
||||||
core->Set("PrimeDisableHudMemo", bDisableHudMemoPopup);
|
core->Set("PrimeDisableHudMemo", bDisableHudMemoPopup);
|
||||||
|
core->Set("PrimeUnlockHypermode", bPrimeUnlockHypermode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SConfig::SaveMovieSettings(IniFile& ini)
|
void SConfig::SaveMovieSettings(IniFile& ini)
|
||||||
@ -513,6 +514,7 @@ void SConfig::LoadCoreSettings(IniFile& ini)
|
|||||||
core->Get("PrimeRestoreScanDash", &bPrimeRestoreDashing, false);
|
core->Get("PrimeRestoreScanDash", &bPrimeRestoreDashing, false);
|
||||||
core->Get("PrimeFriendVouchers", &bPrimeFriendVouchers, true);
|
core->Get("PrimeFriendVouchers", &bPrimeFriendVouchers, true);
|
||||||
core->Get("PrimeDisableHudMemo", &bDisableHudMemoPopup, false);
|
core->Get("PrimeDisableHudMemo", &bDisableHudMemoPopup, false);
|
||||||
|
core->Get("PrimeUnlockHypermode", &bPrimeUnlockHypermode, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SConfig::LoadMovieSettings(IniFile& ini)
|
void SConfig::LoadMovieSettings(IniFile& ini)
|
||||||
|
@ -140,6 +140,7 @@ struct SConfig
|
|||||||
bool bPrimePortalSkip = false;
|
bool bPrimePortalSkip = false;
|
||||||
bool bPrimeFriendVouchers = true;
|
bool bPrimeFriendVouchers = true;
|
||||||
bool bDisableHudMemoPopup = false;
|
bool bDisableHudMemoPopup = false;
|
||||||
|
bool bPrimeUnlockHypermode = true;
|
||||||
|
|
||||||
// Interface settings
|
// Interface settings
|
||||||
bool bConfirmStop = false;
|
bool bConfirmStop = false;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "Core/PrimeHack/Mods/PortalSkipMP2.h"
|
#include "Core/PrimeHack/Mods/PortalSkipMP2.h"
|
||||||
#include "Core/PrimeHack/Mods/DisableHudMemoPopup.h"
|
#include "Core/PrimeHack/Mods/DisableHudMemoPopup.h"
|
||||||
#include "Core/PrimeHack/Mods/ElfModLoader.h"
|
#include "Core/PrimeHack/Mods/ElfModLoader.h"
|
||||||
|
#include "Core/PrimeHack/Mods/UnlockHypermode.h"
|
||||||
|
|
||||||
#include "Core/HW/Wiimote.h"
|
#include "Core/HW/Wiimote.h"
|
||||||
#include "Core/HW/WiimoteEmu/WiimoteEmu.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("friend_vouchers_cheat", std::make_unique<FriendVouchers>());
|
||||||
hack_mgr.add_mod("disable_hudmemo_popup", std::make_unique<DisableHudMemoPopup>());
|
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("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("skip_cutscene");
|
||||||
hack_mgr.enable_mod("fov_modifier");
|
hack_mgr.enable_mod("fov_modifier");
|
||||||
@ -119,7 +121,7 @@ bool CheckSpringBallCtl() {
|
|||||||
bool ImprovedMotionControls() {
|
bool ImprovedMotionControls() {
|
||||||
return Wiimote::CheckImprovedMotions();
|
return Wiimote::CheckImprovedMotions();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckForward() {
|
bool CheckForward() {
|
||||||
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
||||||
return Pad::CheckForward();
|
return Pad::CheckForward();
|
||||||
@ -350,7 +352,7 @@ double GetHorizontalAxis() {
|
|||||||
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
||||||
if (Pad::PrimeUseController()) {
|
if (Pad::PrimeUseController()) {
|
||||||
return std::get<0>(Pad::GetPrimeStickXY());
|
return std::get<0>(Pad::GetPrimeStickXY());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Wiimote::PrimeUseController()) {
|
else if (Wiimote::PrimeUseController()) {
|
||||||
return std::get<0>(Wiimote::GetPrimeStickXY());
|
return std::get<0>(Wiimote::GetPrimeStickXY());
|
||||||
@ -366,7 +368,7 @@ double GetVerticalAxis() {
|
|||||||
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
if (hack_mgr.get_active_game() >= Game::PRIME_1_GCN) {
|
||||||
if (Pad::PrimeUseController()) {
|
if (Pad::PrimeUseController()) {
|
||||||
return std::get<1>(Pad::GetPrimeStickXY());
|
return std::get<1>(Pad::GetPrimeStickXY());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Wiimote::PrimeUseController()) {
|
else if (Wiimote::PrimeUseController()) {
|
||||||
return std::get<1>(Wiimote::GetPrimeStickXY());
|
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("friend_vouchers_cheat", settings.bPrimeFriendVouchers);
|
||||||
set_mod_enabled("portal_skip_mp2", settings.bPrimePortalSkip);
|
set_mod_enabled("portal_skip_mp2", settings.bPrimePortalSkip);
|
||||||
set_mod_enabled("disable_hudmemo_popup", settings.bDisableHudMemoPopup);
|
set_mod_enabled("disable_hudmemo_popup", settings.bDisableHudMemoPopup);
|
||||||
|
set_mod_enabled("unlock_hypermode", settings.bPrimeUnlockHypermode);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
disable_mod("noclip");
|
disable_mod("noclip");
|
||||||
@ -187,6 +188,7 @@ void HackManager::update_mod_states() {
|
|||||||
disable_mod("restore_dashing");
|
disable_mod("restore_dashing");
|
||||||
disable_mod("friend_vouchers_cheat");
|
disable_mod("friend_vouchers_cheat");
|
||||||
disable_mod("portal_skip_mp2");
|
disable_mod("portal_skip_mp2");
|
||||||
|
disable_mod("unlock_hypermode");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disallow any PrimeHack control mods
|
// 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_skipportalmp2 = new QCheckBox(tr("Skip MP2 Portal Cutscene"));
|
||||||
m_checkbox_friendvouchers = new QCheckBox(tr("Remove Friend Vouchers Requirement (Trilogy Only)"));
|
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_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_noclip);
|
||||||
layout->addWidget(m_checkbox_invulnerability);
|
layout->addWidget(m_checkbox_invulnerability);
|
||||||
@ -37,6 +38,7 @@ void PrimeCheatsWidget::CreateWidgets()
|
|||||||
layout->addWidget(m_checkbox_skipportalmp2);
|
layout->addWidget(m_checkbox_skipportalmp2);
|
||||||
layout->addWidget(m_checkbox_friendvouchers);
|
layout->addWidget(m_checkbox_friendvouchers);
|
||||||
layout->addWidget(m_checkbox_hudmemo);
|
layout->addWidget(m_checkbox_hudmemo);
|
||||||
|
layout->addWidget(m_checkbox_hypermode);
|
||||||
|
|
||||||
main_layout->addWidget(group_box);
|
main_layout->addWidget(group_box);
|
||||||
main_layout->addStretch();
|
main_layout->addStretch();
|
||||||
@ -53,6 +55,7 @@ void PrimeCheatsWidget::ConnectWidgets()
|
|||||||
connect(m_checkbox_skipportalmp2, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
connect(m_checkbox_skipportalmp2, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||||
connect(m_checkbox_friendvouchers, &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_hudmemo, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||||
|
connect(m_checkbox_hypermode, &QCheckBox::toggled, this, &PrimeCheatsWidget::OnSaveConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrimeCheatsWidget::OnSaveConfig()
|
void PrimeCheatsWidget::OnSaveConfig()
|
||||||
@ -65,6 +68,7 @@ void PrimeCheatsWidget::OnSaveConfig()
|
|||||||
settings.bPrimePortalSkip = m_checkbox_skipportalmp2->isChecked();
|
settings.bPrimePortalSkip = m_checkbox_skipportalmp2->isChecked();
|
||||||
settings.bPrimeFriendVouchers = m_checkbox_friendvouchers->isChecked();
|
settings.bPrimeFriendVouchers = m_checkbox_friendvouchers->isChecked();
|
||||||
settings.bDisableHudMemoPopup = m_checkbox_hudmemo->isChecked();
|
settings.bDisableHudMemoPopup = m_checkbox_hudmemo->isChecked();
|
||||||
|
settings.bPrimeUnlockHypermode = m_checkbox_hypermode->isChecked();
|
||||||
|
|
||||||
settings.SaveSettings();
|
settings.SaveSettings();
|
||||||
}
|
}
|
||||||
@ -79,6 +83,7 @@ void PrimeCheatsWidget::OnLoadConfig()
|
|||||||
m_checkbox_skipportalmp2->setChecked(settings.bPrimePortalSkip);
|
m_checkbox_skipportalmp2->setChecked(settings.bPrimePortalSkip);
|
||||||
m_checkbox_friendvouchers->setChecked(settings.bPrimeFriendVouchers);
|
m_checkbox_friendvouchers->setChecked(settings.bPrimeFriendVouchers);
|
||||||
m_checkbox_hudmemo->setChecked(settings.bDisableHudMemoPopup);
|
m_checkbox_hudmemo->setChecked(settings.bDisableHudMemoPopup);
|
||||||
|
m_checkbox_hypermode->setChecked(settings.bPrimeUnlockHypermode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrimeCheatsWidget::AddDescriptions()
|
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.");
|
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[] =
|
static const char TR_HUDMEMO[] =
|
||||||
QT_TR_NOOP("Removes the item pickup screen and explanation screen for powerups.");
|
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_noclip->setToolTip(tr(TR_NOCLIP));
|
||||||
m_checkbox_invulnerability->setToolTip(tr(TR_INVULNERABILITY));
|
m_checkbox_invulnerability->setToolTip(tr(TR_INVULNERABILITY));
|
||||||
@ -105,6 +112,7 @@ void PrimeCheatsWidget::AddDescriptions()
|
|||||||
m_checkbox_skipportalmp2->setToolTip(tr(TR_SKIPPORTAL));
|
m_checkbox_skipportalmp2->setToolTip(tr(TR_SKIPPORTAL));
|
||||||
m_checkbox_friendvouchers->setToolTip(tr(TR_FRIENDVOUCHERS));
|
m_checkbox_friendvouchers->setToolTip(tr(TR_FRIENDVOUCHERS));
|
||||||
m_checkbox_hudmemo->setToolTip(tr(TR_HUDMEMO));
|
m_checkbox_hudmemo->setToolTip(tr(TR_HUDMEMO));
|
||||||
|
m_checkbox_hypermode->setToolTip(tr(TR_HYPERMODE));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrimeCheatsWidget::showEvent(QShowEvent*)
|
void PrimeCheatsWidget::showEvent(QShowEvent*)
|
||||||
|
@ -25,4 +25,5 @@ private:
|
|||||||
QCheckBox* m_checkbox_skipportalmp2;
|
QCheckBox* m_checkbox_skipportalmp2;
|
||||||
QCheckBox* m_checkbox_friendvouchers;
|
QCheckBox* m_checkbox_friendvouchers;
|
||||||
QCheckBox* m_checkbox_hudmemo;
|
QCheckBox* m_checkbox_hudmemo;
|
||||||
|
QCheckBox* m_checkbox_hypermode;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user