let's try gainput again

This commit is contained in:
Simone
2024-01-22 15:26:13 +01:00
parent 410f9f62fc
commit 9be2b238d2
5 changed files with 17 additions and 16 deletions

View File

@@ -208,6 +208,7 @@ void PIF::ProcessCommands(Mem &mem) {
channel++;
break;
case 1:
UpdateController();
if(!ReadButtons(res)) {
cmd[1] |= 0x80;
}

View File

@@ -115,7 +115,7 @@ enum Axis {
};
struct PIF {
PIF() = default;
PIF() : inputMap(inputManager) {}
~PIF() = default;
void Reset();
void MaybeLoadMempak();
@@ -136,7 +136,7 @@ struct PIF {
bool gamepadConnected = false, mempakOpen = false;
gainput::InputManager inputManager;
gainput::InputMap inputMap{ inputManager };
gainput::InputMap inputMap;
gainput::DeviceId keyboardId, padId;
JoybusDevice joybusDevices[6]{};
u8 bootrom[PIF_BOOTROM_SIZE]{}, ram[PIF_RAM_SIZE]{};

View File

@@ -7,17 +7,16 @@ EmuThread::EmuThread(std::unique_ptr<QtInstanceFactory>&& instance, std::unique_
[[noreturn]] void EmuThread::run() noexcept {
LoadWSIPlatform(instance.get(), std::move(wsiPlatform), std::move(windowInfo));
LoadParallelRDP(core.cpu->mem.GetRDRAM());
LoadParallelRDP(core->cpu->mem.GetRDRAM());
while (true) {
if (!core.pause) {
core.cpu->mem.mmio.si.pif.UpdateController();
core.Run(0.5, 0.5);
if(core.render) {
UpdateScreenParallelRdp(core, core.cpu->mem.mmio.vi);
if (!core->pause) {
core->Run(0.5, 0.5);
if(core->render) {
UpdateScreenParallelRdp(*core, core->cpu->mem.mmio.vi);
}
} else {
if(core.render) {
UpdateScreenParallelRdpNoGame(core);
if(core->render) {
UpdateScreenParallelRdpNoGame(*core);
}
}
}

View File

@@ -19,7 +19,7 @@ public:
[[noreturn]] void run() noexcept override;
n64::Core core;
n64::Core* core;
bool running = false;
void TogglePause()
@@ -30,15 +30,15 @@ public:
void Reset()
{
running = false;
core.Stop();
core.LoadROM(core.rom);
core->Stop();
core->LoadROM(core->rom);
running = true;
}
void Stop()
{
core.rom = {};
core->rom = {};
running = false;
core.Stop();
core->Stop();
}
};

View File

@@ -18,6 +18,7 @@ KaizenQt::KaizenQt() noexcept : QWidget(nullptr) {
setAcceptDrops(true);
mainWindow->show();
emuThread->core = new n64::Core();
}
void KaizenQt::ConnectMainWindowSignalsToSlots() noexcept {
@@ -43,5 +44,5 @@ void KaizenQt::dropEvent(QDropEvent* event) {
void KaizenQt::LoadROM(const QString& file_name) noexcept {
emuThread->start();
emuThread->core.LoadROM(file_name.toStdString());
emuThread->core->LoadROM(file_name.toStdString());
}