idle skipping works!

This commit is contained in:
2026-05-22 00:20:17 +02:00
parent 5fbda03ceb
commit c9a0307878
8 changed files with 26 additions and 41 deletions
@@ -140,6 +140,7 @@ void Interpreter::branch(const bool cond, const s64 address) {
regs.delaySlot = true;
if (cond) {
regs.nextPC = address;
Core::MaybeIdleSkip();
}
}
@@ -147,6 +148,7 @@ void Interpreter::branch_likely(const bool cond, const s64 address) {
if (cond) {
regs.delaySlot = true;
regs.nextPC = address;
Core::MaybeIdleSkip();
} else {
regs.SetPC64(regs.nextPC);
}
+1 -1
View File
@@ -425,7 +425,6 @@ auto PI::Read(u32 addr) const -> u32 {
return wrLen;
case 0x04600010:
{
Core::SetIdleSkippingStatus(true);
u32 value = 0;
value |= (dmaBusy << 0); // Is PI DMA active?
value |= (ioBusy << 1); // Is PI IO busy?
@@ -433,6 +432,7 @@ auto PI::Read(u32 addr) const -> u32 {
value |= (mem.mmio.mi.intr.pi << 3); // PI interrupt?
return value;
}
case 0x04600034:
case 0x04600014:
return piBsdDom1Lat;
case 0x04600018:
-1
View File
@@ -24,7 +24,6 @@ auto SI::Read(u32 addr) const -> u32 {
return 0;
case 0x04800018:
{
Core::SetIdleSkippingStatus(true);
u32 val = 0;
val |= status.dmaBusy;
val |= (0 << 1);