let's try gainput again
This commit is contained in:
@@ -208,6 +208,7 @@ void PIF::ProcessCommands(Mem &mem) {
|
|||||||
channel++;
|
channel++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
UpdateController();
|
||||||
if(!ReadButtons(res)) {
|
if(!ReadButtons(res)) {
|
||||||
cmd[1] |= 0x80;
|
cmd[1] |= 0x80;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ enum Axis {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct PIF {
|
struct PIF {
|
||||||
PIF() = default;
|
PIF() : inputMap(inputManager) {}
|
||||||
~PIF() = default;
|
~PIF() = default;
|
||||||
void Reset();
|
void Reset();
|
||||||
void MaybeLoadMempak();
|
void MaybeLoadMempak();
|
||||||
@@ -136,7 +136,7 @@ struct PIF {
|
|||||||
|
|
||||||
bool gamepadConnected = false, mempakOpen = false;
|
bool gamepadConnected = false, mempakOpen = false;
|
||||||
gainput::InputManager inputManager;
|
gainput::InputManager inputManager;
|
||||||
gainput::InputMap inputMap{ inputManager };
|
gainput::InputMap inputMap;
|
||||||
gainput::DeviceId keyboardId, padId;
|
gainput::DeviceId keyboardId, padId;
|
||||||
JoybusDevice joybusDevices[6]{};
|
JoybusDevice joybusDevices[6]{};
|
||||||
u8 bootrom[PIF_BOOTROM_SIZE]{}, ram[PIF_RAM_SIZE]{};
|
u8 bootrom[PIF_BOOTROM_SIZE]{}, ram[PIF_RAM_SIZE]{};
|
||||||
|
|||||||
@@ -7,17 +7,16 @@ EmuThread::EmuThread(std::unique_ptr<QtInstanceFactory>&& instance, std::unique_
|
|||||||
|
|
||||||
[[noreturn]] void EmuThread::run() noexcept {
|
[[noreturn]] void EmuThread::run() noexcept {
|
||||||
LoadWSIPlatform(instance.get(), std::move(wsiPlatform), std::move(windowInfo));
|
LoadWSIPlatform(instance.get(), std::move(wsiPlatform), std::move(windowInfo));
|
||||||
LoadParallelRDP(core.cpu->mem.GetRDRAM());
|
LoadParallelRDP(core->cpu->mem.GetRDRAM());
|
||||||
while (true) {
|
while (true) {
|
||||||
if (!core.pause) {
|
if (!core->pause) {
|
||||||
core.cpu->mem.mmio.si.pif.UpdateController();
|
core->Run(0.5, 0.5);
|
||||||
core.Run(0.5, 0.5);
|
if(core->render) {
|
||||||
if(core.render) {
|
UpdateScreenParallelRdp(*core, core->cpu->mem.mmio.vi);
|
||||||
UpdateScreenParallelRdp(core, core.cpu->mem.mmio.vi);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(core.render) {
|
if(core->render) {
|
||||||
UpdateScreenParallelRdpNoGame(core);
|
UpdateScreenParallelRdpNoGame(*core);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public:
|
|||||||
|
|
||||||
[[noreturn]] void run() noexcept override;
|
[[noreturn]] void run() noexcept override;
|
||||||
|
|
||||||
n64::Core core;
|
n64::Core* core;
|
||||||
bool running = false;
|
bool running = false;
|
||||||
|
|
||||||
void TogglePause()
|
void TogglePause()
|
||||||
@@ -30,15 +30,15 @@ public:
|
|||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
running = false;
|
running = false;
|
||||||
core.Stop();
|
core->Stop();
|
||||||
core.LoadROM(core.rom);
|
core->LoadROM(core->rom);
|
||||||
running = true;
|
running = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Stop()
|
void Stop()
|
||||||
{
|
{
|
||||||
core.rom = {};
|
core->rom = {};
|
||||||
running = false;
|
running = false;
|
||||||
core.Stop();
|
core->Stop();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -18,6 +18,7 @@ KaizenQt::KaizenQt() noexcept : QWidget(nullptr) {
|
|||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
|
|
||||||
mainWindow->show();
|
mainWindow->show();
|
||||||
|
emuThread->core = new n64::Core();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KaizenQt::ConnectMainWindowSignalsToSlots() noexcept {
|
void KaizenQt::ConnectMainWindowSignalsToSlots() noexcept {
|
||||||
@@ -43,5 +44,5 @@ void KaizenQt::dropEvent(QDropEvent* event) {
|
|||||||
|
|
||||||
void KaizenQt::LoadROM(const QString& file_name) noexcept {
|
void KaizenQt::LoadROM(const QString& file_name) noexcept {
|
||||||
emuThread->start();
|
emuThread->start();
|
||||||
emuThread->core.LoadROM(file_name.toStdString());
|
emuThread->core->LoadROM(file_name.toStdString());
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user