diff --git a/src/frontend/qt_sdl/Config.cpp b/src/frontend/qt_sdl/Config.cpp
index 6b32e5b279..1da54bd875 100644
--- a/src/frontend/qt_sdl/Config.cpp
+++ b/src/frontend/qt_sdl/Config.cpp
@@ -162,6 +162,7 @@ bool GdbARM9BreakOnStartup;
int MetroidAimSensitivity;
int MetroidVirtualStylusSensitivity;
+int MetroidVsPlayerInput;
CameraConfig Camera[2];
@@ -404,6 +405,7 @@ ConfigEntry ConfigFile[] =
{"MetroidAimSensitivity", 0, &MetroidAimSensitivity, MetroidAimSensitivityDefault, false},
{"MetroidVirtualStylusSensitivity", 0, &MetroidVirtualStylusSensitivity, MetroidVirtualStylusSensitivityDefault, false},
+ {"MetroidVsPlayerInput", 0, &MetroidVsPlayerInput, MetroidVsPlayerInputDefault, false},
// TODO!!
// we need a more elegant way to deal with this
diff --git a/src/frontend/qt_sdl/Config.h b/src/frontend/qt_sdl/Config.h
index 890bf4c407..c6b61e55cc 100644
--- a/src/frontend/qt_sdl/Config.h
+++ b/src/frontend/qt_sdl/Config.h
@@ -236,9 +236,11 @@ extern bool GdbARM9BreakOnStartup;
extern int MetroidAimSensitivity;
extern int MetroidVirtualStylusSensitivity;
+extern int MetroidVsPlayerInput;
const int MetroidAimSensitivityDefault = 30;
const int MetroidVirtualStylusSensitivityDefault = 20;
+const int MetroidVsPlayerInputDefault = 1;
void Load();
void Save();
diff --git a/src/frontend/qt_sdl/EmuThread.cpp b/src/frontend/qt_sdl/EmuThread.cpp
index c423ab4f7f..ec5e766907 100644
--- a/src/frontend/qt_sdl/EmuThread.cpp
+++ b/src/frontend/qt_sdl/EmuThread.cpp
@@ -694,15 +694,16 @@ void EmuThread::run()
#define FN_INPUT_PRESS(i) Input::InputMask.setBit(i, false);
#define FN_INPUT_RELEASE(i) Input::InputMask.setBit(i, true);
+ melonDS::u32 aimXAddr;
+ melonDS::u32 aimYAddr;
+
#define METROID_US_1_1 1
#ifdef METROID_US_1_1
- const melonDS::u32 aimXAddr = 0x020DEDA6;
- const melonDS::u32 aimYAddr = 0x020DEDAE;
+ const bool metroidUSRev1 = true;
const melonDS::u32 inBallAddr = 0x020DB098;
const melonDS::u32 inVisorOrMapAddr = 0x020D9A7D; // my best guess
#else
- const melonDS::u32 aimXAddr = 0x020DE526;
- const melonDS::u32 aimYAddr = 0x020DE52E;
+ const bool metroidUSRev1 = true;
const melonDS::u32 inBallAddr = 0x020DA818;
#endif
@@ -935,6 +936,46 @@ void EmuThread::run()
processMoveInput();
+ // aim addresses for version and player number
+ if(metroidUSRev1) {
+ switch(Config::MetroidVsPlayerInput) {
+ case 2:
+ aimXAddr = 0x020DEDEE;
+ aimYAddr = 0x020DEDF6;
+ break;
+ case 3:
+ aimXAddr = 0x020DEE36;
+ aimYAddr = 0x020DEE3E;
+ break;
+ case 4:
+ aimXAddr = 0x020DEE7E;
+ aimYAddr = 0x020DEE86;
+ break;
+ default:
+ aimXAddr = 0x020DEDA6;
+ aimYAddr = 0x020DEDAE;
+ }
+ }
+ else {
+ switch(Config::MetroidVsPlayerInput) {
+ case 2:
+ aimXAddr = 0x020DF66E;
+ aimYAddr = 0x020DF676;
+ break;
+ case 3:
+ aimXAddr = 0x020DF6B6;
+ aimYAddr = 0x020DF6BE;
+ break;
+ case 4:
+ aimXAddr = 0x020DF626;
+ aimYAddr = 0x020DF706;
+ break;
+ default:
+ aimXAddr = 0x020DE526;
+ aimYAddr = 0x020DE52E;
+ }
+ }
+
// cursor looking
if (abs(mouseRel.x()) > 0) {
diff --git a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.cpp b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.cpp
index 3ecfb64dc5..e59901e69b 100644
--- a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.cpp
+++ b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.cpp
@@ -94,6 +94,7 @@ InputConfigDialog::InputConfigDialog(QWidget* parent) : QDialog(parent), ui(new
ui->metroidAimSensitvitySpinBox->setValue(Config::MetroidAimSensitivity);
ui->metroidVirtualStylusSensitvitySpinBox->setValue(Config::MetroidVirtualStylusSensitivity);
+ ui->metroidVsPlayerInputSpinBox->setValue(Config::MetroidVsPlayerInput);
}
void InputConfigDialog::switchTabToAddons() {
@@ -215,6 +216,7 @@ void InputConfigDialog::on_InputConfigDialog_accepted()
Config::MetroidAimSensitivity = ui->metroidAimSensitvitySpinBox->value();
Config::MetroidVirtualStylusSensitivity = ui->metroidVirtualStylusSensitvitySpinBox->value();
+ Config::MetroidVsPlayerInput = ui->metroidVsPlayerInputSpinBox->value();
Config::Save();
diff --git a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.ui b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.ui
index 2000a2035f..50ba28bf68 100644
--- a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.ui
+++ b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.ui
@@ -2328,6 +2328,26 @@
Reset sensitivity values
+
+ -
+
+
+ Vs. mode player input:
+
+
+
+ -
+
+
+ 1
+
+
+ 4
+
+
+ 0
+
+