From fc5eedc7169b38e9131ed125aa3e7db630b87804 Mon Sep 17 00:00:00 2001
From: Arisotura <thetotalworm@gmail.com>
Date: Mon, 15 Jun 2020 13:39:33 +0200
Subject: * take nwifi forward some * shut up CP15 printf's for Fx0 * fix bugs

---
 src/NDS.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'src/NDS.cpp')

diff --git a/src/NDS.cpp b/src/NDS.cpp
index 22368ae..34a9da9 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -1756,14 +1756,14 @@ void debug(u32 param)
     }
     fclose(shit);*/
     FILE*
-    /*shit = fopen("debug/dump9.bin", "wb");
+    shit = fopen("debug/dump9.bin", "wb");
     for (u32 i = 0x02000000; i < 0x04000000; i+=4)
     {
         u32 val = DSi::ARM9Read32(i);
         fwrite(&val, 4, 1, shit);
     }
-    fclose(shit);*/
-    shit = fopen("debug/dump7_2.bin", "wb");
+    fclose(shit);
+    shit = fopen("debug/dump7.bin", "wb");
     for (u32 i = 0x02000000; i < 0x04000000; i+=4)
     {
         u32 val = DSi::ARM7Read32(i);
-- 
cgit v1.2.3


From 2f9a6b7c0346c31cbed34a006174d9a9b4efb79e Mon Sep 17 00:00:00 2001
From: Arisotura <thetotalworm@gmail.com>
Date: Thu, 23 Jul 2020 12:59:19 +0200
Subject: SPU: delay channel start until whenever it can actually start. fixes
 maxmod interpolated mode.

---
 src/NDS.cpp | 2 +-
 src/SPU.cpp | 9 +++++++++
 src/SPU.h   | 3 ++-
 3 files changed, 12 insertions(+), 2 deletions(-)

(limited to 'src/NDS.cpp')

diff --git a/src/NDS.cpp b/src/NDS.cpp
index 8cd7f93..2ad6bad 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -493,7 +493,7 @@ void Reset()
         printf("ARM7 BIOS loaded\n");
         fclose(f);
     }
-    
+
 #ifdef JIT_ENABLED
     ARMJIT::Reset();
 #endif
diff --git a/src/SPU.cpp b/src/SPU.cpp
index 9f6b107..cd5c5b8 100644
--- a/src/SPU.cpp
+++ b/src/SPU.cpp
@@ -160,6 +160,8 @@ void Channel::Reset()
     else
         BusRead32 = NDS::ARM7Read32;
 
+    KeyOn = false;
+
     SetCnt(0);
     SrcAddr = 0;
     TimerReload = 0;
@@ -187,6 +189,7 @@ void Channel::DoSavestate(Savestate* file)
     file->Var8(&VolumeShift);
     file->Var8(&Pan);
 
+    file->Var8((u8*)&KeyOn);
     file->Var32(&Timer);
     file->Var32((u32*)&Pos);
     file->Var16((u16*)&CurSample);
@@ -417,6 +420,12 @@ void Channel::Run(s32* buf, u32 samples)
 {
     if (!(Cnt & (1<<31))) return;
 
+    if (KeyOn)
+    {
+        Start();
+        KeyOn = false;
+    }
+
     for (u32 s = 0; s < samples; s++)
     {
         Timer += 512; // 1 sample = 512 cycles at 16MHz
diff --git a/src/SPU.h b/src/SPU.h
index 8ab17a0..964841d 100644
--- a/src/SPU.h
+++ b/src/SPU.h
@@ -69,6 +69,7 @@ public:
     u8 VolumeShift;
     u8 Pan;
 
+    bool KeyOn;
     u32 Timer;
     s32 Pos;
     s16 CurSample;
@@ -105,7 +106,7 @@ public:
 
         if ((val & (1<<31)) && !(oldcnt & (1<<31)))
         {
-            Start();
+            KeyOn = true;
         }
     }
 
-- 
cgit v1.2.3


From 8a96dfce18b8de93d8e6d5b21d7fa0ba9bbcab23 Mon Sep 17 00:00:00 2001
From: RSDuck <rsduck@users.noreply.github.com>
Date: Sat, 25 Jul 2020 20:59:53 +0200
Subject: fix build with JIT disabled fixes #675 and #674

---
 src/ARM.cpp  |  2 +-
 src/ARM.h    |  2 +-
 src/CP15.cpp |  8 ++++++--
 src/DSi.cpp  | 38 ++++++++++++++++++++++++++++++++++++++
 src/NDS.cpp  |  2 ++
 5 files changed, 48 insertions(+), 4 deletions(-)

(limited to 'src/NDS.cpp')

diff --git a/src/ARM.cpp b/src/ARM.cpp
index 8530795..ecf94cd 100644
--- a/src/ARM.cpp
+++ b/src/ARM.cpp
@@ -80,7 +80,7 @@ ARM::~ARM()
 ARMv5::ARMv5() : ARM(0)
 {
 #ifndef JIT_ENABLED
-    DTCM = new u8[DTCMSize];
+    DTCM = new u8[DTCMPhysicalSize];
 #endif
 }
 
diff --git a/src/ARM.h b/src/ARM.h
index 0248e26..ee6ac96 100644
--- a/src/ARM.h
+++ b/src/ARM.h
@@ -57,7 +57,7 @@ public:
     }
 
     virtual void Execute() = 0;
-#ifdef ENABLE_JIT
+#ifdef JIT_ENABLED
     virtual void ExecuteJIT() = 0;
 #endif
 
diff --git a/src/CP15.cpp b/src/CP15.cpp
index 992c83f..6ac31aa 100644
--- a/src/CP15.cpp
+++ b/src/CP15.cpp
@@ -21,9 +21,11 @@
 #include "NDS.h"
 #include "DSi.h"
 #include "ARM.h"
+
+#ifdef JIT_ENABLED
 #include "ARMJIT.h"
 #include "ARMJIT_Memory.h"
-
+#endif
 
 // access timing for cached regions
 // this would be an average between cache hits and cache misses
@@ -105,7 +107,7 @@ void ARMv5::UpdateDTCMSetting()
     {
         newDTCMBase = DTCMSetting & 0xFFFFF000;
         newDTCMSize = 0x200 << ((DTCMSetting >> 1) & 0x1F);
-        //printf("DTCM [%08X] enabled at %08X, size %X\n", DTCMSetting, DTCMBase, DTCMSize);
+        //printf("DTCM [%08X] enabled at %08X, size %X\n", DTCMSetting, newDTCMBase, newDTCMSize);
     }
     else
     {
@@ -115,7 +117,9 @@ void ARMv5::UpdateDTCMSetting()
     }
     if (newDTCMBase != DTCMBase || newDTCMSize != DTCMSize)
     {
+#ifdef JIT_ENABLED
         ARMJIT_Memory::RemapDTCM(newDTCMBase, newDTCMSize);
+#endif
         DTCMBase = newDTCMBase;
         DTCMSize = newDTCMSize;
     }
diff --git a/src/DSi.cpp b/src/DSi.cpp
index 97a63cd..839fdbf 100644
--- a/src/DSi.cpp
+++ b/src/DSi.cpp
@@ -540,7 +540,9 @@ void MapNWRAM_A(u32 num, u8 val)
         return;
     }
 
+#ifdef JIT_ENABLED
     ARMJIT_Memory::RemapNWRAM(0);
+#endif
 
     int mbkn = 0, mbks = 8*num;
 
@@ -573,7 +575,9 @@ void MapNWRAM_B(u32 num, u8 val)
         return;
     }
 
+#ifdef JIT_ENABLED
     ARMJIT_Memory::RemapNWRAM(1);
+#endif
 
     int mbkn = 1+(num>>2), mbks = 8*(num&3);
 
@@ -610,7 +614,9 @@ void MapNWRAM_C(u32 num, u8 val)
         return;
     }
 
+#ifdef JIT_ENABLED
     ARMJIT_Memory::RemapNWRAM(2);
+#endif
 
     int mbkn = 3+(num>>2), mbks = 8*(num&3);
 
@@ -644,7 +650,9 @@ void MapNWRAMRange(u32 cpu, u32 num, u32 val)
     u32 oldval = MBK[cpu][5+num];
     if (oldval == val) return;
 
+#ifdef JIT_ENABLED
     ARMJIT_Memory::RemapNWRAM(num);
+#endif
 
     MBK[cpu][5+num] = val;
 
@@ -850,7 +858,9 @@ void ARM9Write8(u32 addr, u8 val)
             if (ptr)
             {
                 *(u8*)&ptr[addr & 0xFFFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(addr);
+#endif
             }
             return;
         }
@@ -860,7 +870,9 @@ void ARM9Write8(u32 addr, u8 val)
             if (ptr)
             {
                 *(u8*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(addr);
+#endif
             }
             return;
         }
@@ -870,7 +882,9 @@ void ARM9Write8(u32 addr, u8 val)
             if (ptr)
             {
                 *(u8*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(addr);
+#endif
             }
             return;
         }
@@ -895,7 +909,9 @@ void ARM9Write16(u32 addr, u16 val)
             if (ptr)
             {
                 *(u16*)&ptr[addr & 0xFFFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(addr);
+#endif
             }
             return;
         }
@@ -905,7 +921,9 @@ void ARM9Write16(u32 addr, u16 val)
             if (ptr)
             {
                 *(u16*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(addr);
+#endif
             }
             return;
         }
@@ -915,7 +933,9 @@ void ARM9Write16(u32 addr, u16 val)
             if (ptr)
             {
                 *(u16*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(addr);
+#endif
             }
             return;
         }
@@ -940,7 +960,9 @@ void ARM9Write32(u32 addr, u32 val)
             if (ptr)
             {
                 *(u32*)&ptr[addr & 0xFFFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(addr);
+#endif
             }
             return;
         }
@@ -950,7 +972,9 @@ void ARM9Write32(u32 addr, u32 val)
             if (ptr)
             {
                 *(u32*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(addr);
+#endif
             }
             return;
         }
@@ -960,7 +984,9 @@ void ARM9Write32(u32 addr, u32 val)
             if (ptr)
             {
                 *(u32*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(addr);
+#endif
             }
             return;
         }
@@ -1196,7 +1222,9 @@ void ARM7Write16(u32 addr, u16 val)
             if (ptr)
             {
                 *(u16*)&ptr[addr & 0xFFFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_A>(addr);
+#endif
             }
             return;
         }
@@ -1206,7 +1234,9 @@ void ARM7Write16(u32 addr, u16 val)
             if (ptr)
             {
                 *(u16*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_B>(addr);
+#endif
             }
             return;
         }
@@ -1216,7 +1246,9 @@ void ARM7Write16(u32 addr, u16 val)
             if (ptr)
             {
                 *(u16*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_C>(addr);
+#endif
             }
             return;
         }
@@ -1241,7 +1273,9 @@ void ARM7Write32(u32 addr, u32 val)
             if (ptr)
             {
                 *(u32*)&ptr[addr & 0xFFFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_A>(addr);
+#endif
             }
             return;
         }
@@ -1251,7 +1285,9 @@ void ARM7Write32(u32 addr, u32 val)
             if (ptr)
             {
                 *(u32*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_B>(addr);
+#endif
             }
             return;
         }
@@ -1261,7 +1297,9 @@ void ARM7Write32(u32 addr, u32 val)
             if (ptr)
             {
                 *(u32*)&ptr[addr & 0x7FFF] = val;
+#ifdef JIT_ENABLED
                 ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_C>(addr);
+#endif
             }
             return;
         }
diff --git a/src/NDS.cpp b/src/NDS.cpp
index 2ad6bad..18ae3e9 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -1137,7 +1137,9 @@ void MapSharedWRAM(u8 val)
     if (val == WRAMCnt)
         return;
 
+#ifdef JIT_ENABLED
     ARMJIT_Memory::RemapSWRAM();
+#endif
 
     WRAMCnt = val;
 
-- 
cgit v1.2.3


From ea734084cad4334e0a1247be99320e37f3bd2ee1 Mon Sep 17 00:00:00 2001
From: RSDuck <rsduck@users.noreply.github.com>
Date: Mon, 27 Jul 2020 23:18:33 +0200
Subject: check DSi interrupts for halted processor wakeup

---
 src/NDS.cpp | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'src/NDS.cpp')

diff --git a/src/NDS.cpp b/src/NDS.cpp
index 65c3223..823d39a 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -1270,6 +1270,9 @@ bool HaltInterrupted(u32 cpu)
     if (IF[cpu] & IE[cpu])
         return true;
 
+    if ((ConsoleType == 1) && cpu && (IF2 & IE2))
+        return true;
+
     return false;
 }
 
-- 
cgit v1.2.3