From 46853ecdf10021a20ef152a02cb65269c41c4903 Mon Sep 17 00:00:00 2001 From: Simone Coco Date: Fri, 17 May 2024 16:08:10 +0200 Subject: [PATCH] slightly better abstraction --- src/backend/core/mmio/PIF.hpp | 7 ++++ src/frontend/KaizenQt.cpp | 72 +++++++++++++++++------------------ 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/backend/core/mmio/PIF.hpp b/src/backend/core/mmio/PIF.hpp index d160a0e6..5945c274 100644 --- a/src/backend/core/mmio/PIF.hpp +++ b/src/backend/core/mmio/PIF.hpp @@ -169,6 +169,13 @@ struct PIF { void EepromRead(const u8*, u8*, const Mem&) const; void EepromWrite(const u8*, u8*, const Mem&); std::vector Serialize(); + void UpdateButton(int index, Controller::Key k, bool state) { + joybusDevices[index].controller.UpdateButton(k, state); + } + + void UpdateAxis(int index, Controller::Axis a, s8 state) { + joybusDevices[index].controller.UpdateAxis(a, state); + } bool mempakOpen = false; JoybusDevice joybusDevices[6]{}; diff --git a/src/frontend/KaizenQt.cpp b/src/frontend/KaizenQt.cpp index 829d24bf..c6803404 100644 --- a/src/frontend/KaizenQt.cpp +++ b/src/frontend/KaizenQt.cpp @@ -68,24 +68,24 @@ void KaizenQt::LoadTAS(const QString& fileName) noexcept { void KaizenQt::keyPressEvent(QKeyEvent *e) { emuThread->core.pause = true; auto k = static_cast(e->key()); - if(k == settingsWindow->keyMap[0]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::A, true); - if(k == settingsWindow->keyMap[1]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::B, true); - if(k == settingsWindow->keyMap[2]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::Z, true); - if(k == settingsWindow->keyMap[3]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::Start, true); - if(k == settingsWindow->keyMap[4]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::LT, true); - if(k == settingsWindow->keyMap[5]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::RT, true); - if(k == settingsWindow->keyMap[6]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DUp, true); - if(k == settingsWindow->keyMap[7]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DDown, true); - if(k == settingsWindow->keyMap[8]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DLeft, true); - if(k == settingsWindow->keyMap[9]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DRight, true); - if(k == settingsWindow->keyMap[10]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CUp, true); - if(k == settingsWindow->keyMap[11]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CDown, true); - if(k == settingsWindow->keyMap[12]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CLeft, true); - if(k == settingsWindow->keyMap[13]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CRight, true); - if(k == settingsWindow->keyMap[14]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::Y, 86); - if(k == settingsWindow->keyMap[15]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::Y, -86); - if(k == settingsWindow->keyMap[16]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::X, -86); - if(k == settingsWindow->keyMap[17]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::X, 86); + if(k == settingsWindow->keyMap[0]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::A, true); + if(k == settingsWindow->keyMap[1]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::B, true); + if(k == settingsWindow->keyMap[2]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::Z, true); + if(k == settingsWindow->keyMap[3]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::Start, true); + if(k == settingsWindow->keyMap[4]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::LT, true); + if(k == settingsWindow->keyMap[5]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::RT, true); + if(k == settingsWindow->keyMap[6]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DUp, true); + if(k == settingsWindow->keyMap[7]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DDown, true); + if(k == settingsWindow->keyMap[8]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DLeft, true); + if(k == settingsWindow->keyMap[9]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DRight, true); + if(k == settingsWindow->keyMap[10]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CUp, true); + if(k == settingsWindow->keyMap[11]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CDown, true); + if(k == settingsWindow->keyMap[12]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CLeft, true); + if(k == settingsWindow->keyMap[13]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CRight, true); + if(k == settingsWindow->keyMap[14]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::Y, 86); + if(k == settingsWindow->keyMap[15]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::Y, -86); + if(k == settingsWindow->keyMap[16]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::X, -86); + if(k == settingsWindow->keyMap[17]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::X, 86); emuThread->core.pause = false; QWidget::keyPressEvent(e); } @@ -93,24 +93,24 @@ void KaizenQt::keyPressEvent(QKeyEvent *e) { void KaizenQt::keyReleaseEvent(QKeyEvent *e) { emuThread->core.pause = true; auto k = static_cast(e->key()); - if (k == settingsWindow->keyMap[0]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::A, false); - if (k == settingsWindow->keyMap[1]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::B, false); - if (k == settingsWindow->keyMap[2]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::Z, false); - if (k == settingsWindow->keyMap[3]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::Start, false); - if (k == settingsWindow->keyMap[4]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::LT, false); - if (k == settingsWindow->keyMap[5]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::RT, false); - if (k == settingsWindow->keyMap[6]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DUp, false); - if (k == settingsWindow->keyMap[7]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DDown, false); - if (k == settingsWindow->keyMap[8]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DLeft, false); - if (k == settingsWindow->keyMap[9]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::DRight, false); - if (k == settingsWindow->keyMap[10]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CUp, false); - if (k == settingsWindow->keyMap[11]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CDown, false); - if (k == settingsWindow->keyMap[12]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CLeft, false); - if (k == settingsWindow->keyMap[13]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateButton(n64::Controller::Key::CRight, false); - if (k == settingsWindow->keyMap[14]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::Y, 0); - if (k == settingsWindow->keyMap[15]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::Y, 0); - if (k == settingsWindow->keyMap[16]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::X, 0); - if (k == settingsWindow->keyMap[17]) emuThread->core.cpu->GetMem().mmio.si.pif.joybusDevices[0].controller.UpdateAxis(n64::Controller::Axis::X, 0); + if (k == settingsWindow->keyMap[0]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::A, false); + if (k == settingsWindow->keyMap[1]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::B, false); + if (k == settingsWindow->keyMap[2]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::Z, false); + if (k == settingsWindow->keyMap[3]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::Start, false); + if (k == settingsWindow->keyMap[4]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::LT, false); + if (k == settingsWindow->keyMap[5]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::RT, false); + if (k == settingsWindow->keyMap[6]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DUp, false); + if (k == settingsWindow->keyMap[7]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DDown, false); + if (k == settingsWindow->keyMap[8]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DLeft, false); + if (k == settingsWindow->keyMap[9]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::DRight, false); + if (k == settingsWindow->keyMap[10]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CUp, false); + if (k == settingsWindow->keyMap[11]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CDown, false); + if (k == settingsWindow->keyMap[12]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CLeft, false); + if (k == settingsWindow->keyMap[13]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateButton(0, n64::Controller::Key::CRight, false); + if (k == settingsWindow->keyMap[14]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::Y, 0); + if (k == settingsWindow->keyMap[15]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::Y, 0); + if (k == settingsWindow->keyMap[16]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::X, 0); + if (k == settingsWindow->keyMap[17]) emuThread->core.cpu->GetMem().mmio.si.pif.UpdateAxis(0, n64::Controller::Axis::X, 0); emuThread->core.pause = false; QWidget::keyPressEvent(e); } \ No newline at end of file