[Scummvm-cvs-logs] SF.net SVN: scummvm: [25122] scummvm/trunk/backends/platform/ds/arm7/source

agent-q at users.sourceforge.net agent-q at users.sourceforge.net
Fri Jan 19 22:36:48 CET 2007


Revision: 25122
          http://scummvm.svn.sourceforge.net/scummvm/?rev=25122&view=rev
Author:   agent-q
Date:     2007-01-19 13:36:47 -0800 (Fri, 19 Jan 2007)

Log Message:
-----------
Adding libcartreset to ARM7 binary

Added Paths:
-----------
    scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/
    scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset.c
    scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h


Property changes on: scummvm/trunk/backends/platform/ds/arm7/source/libcartreset
___________________________________________________________________
Name: svn:ignore
   + *.bak
*.d


Added: scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset.c
===================================================================
--- scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset.c	                        (rev 0)
+++ scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset.c	2007-01-19 21:36:47 UTC (rev 25122)
@@ -0,0 +1,109 @@
+/**********************************
+  Copyright (C) Rick Wong (Lick)
+  http://licklick.wordpress.com/
+***********************************/
+#include <cartreset_nolibfat.h>
+
+
+#ifdef ARM9
+
+bool cartSetMenuMode(u32 _deviceType)
+{
+    *(vu16*)(0x04000204) &= ~0x0880;    //sysSetBusOwners(true, true);
+    u32 deviceType = _deviceType;
+
+    *((vu32*)0x027FFFF8) = 0x080000C0; // ARM7 reset address
+
+    if(deviceType == DEVICE_TYPE_EFA2)
+    {
+        *(u16 *)0x9FE0000 = 0xD200;
+        *(u16 *)0x8000000 = 0x1500;
+        *(u16 *)0x8020000 = 0xD200;
+        *(u16 *)0x8040000 = 0x1500;
+        *(u16 *)0x9880000 = 1 << 15;
+        *(u16 *)0x9FC0000 = 0x1500;
+        return true;
+    }
+    else if(deviceType == DEVICE_TYPE_MPCF)
+    {
+        return true;
+    }
+    else if(deviceType == DEVICE_TYPE_EZSD)
+    {
+        return true;
+    }
+    else if(deviceType == DEVICE_TYPE_M3CF || deviceType == DEVICE_TYPE_M3SD)
+    {
+        u32 mode = 0x00400004;
+	    vu16 tmp;
+        tmp = *(vu16*)(0x08E00002);
+        tmp = *(vu16*)(0x0800000E);
+        tmp = *(vu16*)(0x08801FFC);
+        tmp = *(vu16*)(0x0800104A);
+        tmp = *(vu16*)(0x08800612);
+        tmp = *(vu16*)(0x08000000);
+        tmp = *(vu16*)(0x08801B66);
+        tmp = *(vu16*)(0x08000000 + (mode << 1)); 
+        tmp = *(vu16*)(0x0800080E);
+        tmp = *(vu16*)(0x08000000);
+
+        tmp = *(vu16*)(0x080001E4);
+        tmp = *(vu16*)(0x080001E4);
+        tmp = *(vu16*)(0x08000188);
+        tmp = *(vu16*)(0x08000188);
+        return true;
+    }
+    else if(deviceType == DEVICE_TYPE_SCCF || deviceType == DEVICE_TYPE_SCSD)
+    {
+        *(vu16*)0x09FFFFFE = 0xA55A;
+        *(vu16*)0x09FFFFFE = 0xA55A;
+        *(vu16*)0x09FFFFFE = 0;
+        *(vu16*)0x09FFFFFE = 0;
+        *((vu32*)0x027FFFF8) = 0x08000000; // Special ARM7 reset address
+        return true;
+    }
+
+    return false;
+}
+
+
+
+void passmeloopEnter()
+{
+    *(vu16*)(0x04000208) = 0;           //REG_IME = IME_DISABLE;
+    *(vu16*)(0x04000204) |= 0x0880;     //sysSetBusOwners(false, false);
+    *((vu32*)0x027FFFFC) = 0;
+    *((vu32*)0x027FFE04) = (u32)0xE59FF018;
+    *((vu32*)0x027FFE24) = (u32)0x027FFE04;
+    asm("swi 0x00");                    //swiSoftReset();
+    asm("bx lr");
+}
+
+#endif
+
+
+#ifdef ARM7
+
+//#include <nds.h>
+
+bool passmeloopQuery()
+{
+    if(*((vu32*)0x027FFE24) == (u32)0x027FFE04)
+        return true;
+    return false;
+}
+
+
+
+void cartExecute()
+{
+    *(vu16*)(0x04000208) = 0;       //REG_IME = IME_DISABLE;
+    *((vu32*)0x027FFE34) = *((vu32*)0x027FFFF8);
+    asm("swi 0x00");                //swiSoftReset();
+    asm("bx lr");
+}
+
+#endif
+
+
+


Property changes on: scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset.c
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Added: scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h	                        (rev 0)
+++ scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h	2007-01-19 21:36:47 UTC (rev 25122)
@@ -0,0 +1,56 @@
+/**********************************
+  Copyright (C) Rick Wong (Lick)
+  http://licklick.wordpress.com/
+***********************************/
+#ifndef CARTRESET_H
+#define CARTRESET_H
+
+#include <fat.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef ARM9
+// Auto detect:
+#define DEVICE_TYPE_AUTO        0x00000000 // doesn't work in libcartreset "nolibfat" version
+
+// Not supported:
+#define DEVICE_TYPE_FCSR        0x52534346
+#define DEVICE_TYPE_MMCF        0x46434D4D
+#define DEVICE_TYPE_NJSD        0x44534A4E
+#define DEVICE_TYPE_NMMC        0x434D4D4E
+
+// Supported:
+#define DEVICE_TYPE_EFA2        0x32414645
+#define DEVICE_TYPE_MPCF        0x4643504D
+#define DEVICE_TYPE_M3CF        0x4643334D
+#define DEVICE_TYPE_M3SD        0x4453334D
+#define DEVICE_TYPE_SCCF        0x46434353
+#define DEVICE_TYPE_SCSD        0x44534353
+
+// Supported, but libfat doesn't detect the device:
+#define DEVICE_TYPE_EZSD        0x44535A45
+
+
+bool cartSetMenuMode(u32 _deviceType);
+void passmeloopEnter();
+
+#endif
+
+
+#ifdef ARM7
+
+bool passmeloopQuery();
+void cartExecute();
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
+


Property changes on: scummvm/trunk/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list