aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ARM.cpp37
-rw-r--r--src/DSi.cpp10
2 files changed, 45 insertions, 2 deletions
diff --git a/src/ARM.cpp b/src/ARM.cpp
index b7fe3c7..60dec9a 100644
--- a/src/ARM.cpp
+++ b/src/ARM.cpp
@@ -239,6 +239,36 @@ void ARMv4::JumpTo(u32 addr, bool restorecpsr)
else addr &= ~0x1;
}
+ /*if (addr==0x037D4668) printf("MYSTERY START\n");
+ if (addr==0x037CA71C) printf("MYSTERY END\n");
+ if (addr==0x037CCD68) printf("atomic_store %08X %08X, %08X\n", R[0], R[1], R[15]);
+ if (addr==0x037CDD00) printf("zog %08X\n", R[15]);*/
+ /*if (addr==0x037CDC00) printf("sendcmd %08X %08X\n", R[0], R[15]);
+ if (addr==0x037CA700) printf("prepare CID, %08X\n", R[15]);
+ if(addr==0x037D4498) printf("READ SHITTY FIFO. %08X\n", R[15]);
+ if (addr==0x037CCD68) printf("atomic_store %08X %08X, %08X\n", R[0], R[1], R[15]);
+ if (addr>=0x037CEE00 && addr<=0x037CEE30) printf("shitty loop: %08X->%08X\n", R[15], addr);
+ if (R[15]==0x037CCD8C) printf("BERG!!! %08X\n", addr);
+ if (addr==0x037CD600) printf("XFER IRQ HANDLER\n");
+ if (R[15]==0x037CD62C) printf("TERRIBLE HANDLER: %08X\n", addr);
+ if (addr==0x037CCE24) printf("SD IRQ HANDLER\n");
+ if (addr==0x037CCD94) printf("atomic_load %08X %08X, %08X\n", R[0], R[1], R[15]);
+ if (addr==0x037CEB7C) printf("CHECK CSR RESULT. %08X %08X %08X, %08X\n", R[0], R[1], R[2], R[15]);
+ if (R[15]==0x037CEC6C) printf("RETURN FROM CSR CHECK: %08X %08X\n", R[0], R[3]+0x38);
+ if (addr==0x037CB2AC) printf("ZOG!\n");
+ if (addr==0x037CB2A0) printf("GONP %08X %08X, %08X\n", R[1]+0x28, R[3]+0x34, R[15]);
+ if (addr==0x037CCFC0) printf("SDMMC TIMEOUT. %08X\n", R[15]);
+ if (addr==0x037D68A8) printf("BARKBARKBARK. %08X\n", R[15]);
+ if (addr==0x037CCF04) printf("BAKAAA\n");
+ if (addr==0x037D6988) printf("MORPMORPMORPMORPMORPMORPMORPMORPMORP %08X\n", R[15]);
+ if (addr==0x37D6904) printf("TIMEOUT FARTORED! %08X, %08X %08X, %08X\n", R[4], R[3], R[12], R[15]);
+ // TIMEOUT FARTORED! 037E89B8, 00000000 00200BFB, 037D68FC
+ if (addr==0x037CD660) printf("BRAAAAAAAAAAAP %08X\n", R[15]);
+ if (addr==0x037CD798) printf("BRAAPP SHATORED. %08X, %08X %08X\n", R[0], R[1], R[2]);
+ if (addr==0x037CCD34) printf("atomic_and %08X %08X, %08X\n", R[0], R[1], R[15]);*/
+ // atomic_and 0400481C 0000FFE7, 037CD850
+
+
u32 oldregion = R[15] >> 23;
u32 newregion = addr >> 23;
@@ -577,6 +607,13 @@ void ARMv4::Execute()
}
else
AddCycles_C();
+
+ /*if (R[15]==0x037CEE18) printf("SHITTY POINTER = %08X\n", R[0]+0x34);
+ if (R[15]==0x037CEE1C) printf("SHITTY FLAG = %08X\n", R[0]);
+ if (R[15]==0x037D68F0) printf("TIMESTAMP THING = %08X:%08X, CUR=%08X:%08X, ptr=%08X\n",
+ R[3], R[12], R[1], R[0], R[4]);
+ //if (R[15]==0x037CB29C) printf("GLORG!!! %08X\n", R[3]+0x34); 037E8A8C
+ if (R[15]==0x037CD730) printf("COUNT OF SHITO. %08X %08X\n", R[0], R[2]);*/
}
// TODO optimize this shit!!!
diff --git a/src/DSi.cpp b/src/DSi.cpp
index 0c9c26c..e6e3c5a 100644
--- a/src/DSi.cpp
+++ b/src/DSi.cpp
@@ -305,13 +305,19 @@ void RunNDMAs(u32 cpu)
{
if (NDS::ARM9Timestamp >= NDS::ARM9Target) return;
- //
+ if (!(NDS::CPUStop & 0x80000000)) NDMAs[0]->Run();
+ if (!(NDS::CPUStop & 0x80000000)) NDMAs[1]->Run();
+ if (!(NDS::CPUStop & 0x80000000)) NDMAs[2]->Run();
+ if (!(NDS::CPUStop & 0x80000000)) NDMAs[3]->Run();
}
else
{
if (NDS::ARM7Timestamp >= NDS::ARM7Target) return;
- //
+ NDMAs[4]->Run();
+ NDMAs[5]->Run();
+ NDMAs[6]->Run();
+ NDMAs[7]->Run();
}
}