merge mappers from FCEU-mm
[fceu.git] / boards / 43.c
index ee12dec..94aa7b6 100644 (file)
  *\r
  * You should have received a copy of the GNU General Public License\r
  * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ *\r
+ * FDS Conversion\r
+ *\r
  */\r
 \r
-//ccording to nestopia, BTL_SMB2_C, otherwise known as UNL-SMB2J\r
-\r
 #include "mapinc.h"\r
 \r
 static uint8 reg;\r
-static uint8 IRQa;\r
-static uint32 IRQCount;\r
+static uint32 IRQCount, IRQa;\r
 \r
 static SFORMAT StateRegs[]=\r
 {\r
@@ -36,7 +36,7 @@ static SFORMAT StateRegs[]=
 \r
 static void Sync(void)\r
 {\r
-  setprg4(0x5000,16);  \r
+  setprg4(0x5000,16);    // Only YS-612 advdnced version\r
   setprg8(0x6000,2);\r
   setprg8(0x8000,1);\r
   setprg8(0xa000,0);\r
@@ -47,11 +47,13 @@ static void Sync(void)
 \r
 static DECLFW(M43Write)\r
 {\r
-  int transo[8]={4,3,4,4,4,7,5,6};\r
+//  int transo[8]={4,3,4,4,4,7,5,6};\r
+  int transo[8]={4,3,5,3,6,3,7,3};  // According to hardware tests\r
   switch(A&0xf1ff)\r
   {\r
     case 0x4022: reg=transo[V&7]; Sync(); break;\r
-    case 0x8122: IRQa=V&1; IRQCount=0; break;\r
+    case 0x8122:                                                            // hacked version\r
+    case 0x4122: IRQa=V&1; X6502_IRQEnd(FCEU_IQEXT); IRQCount=0; break;     // original version\r
   }\r
 }\r
 \r
@@ -59,7 +61,6 @@ static void M43Power(void)
 {\r
   reg=0;\r
   Sync();\r
-//  SetReadHandler(0x5000,0x5fff,CartBR);\r
   SetReadHandler(0x5000,0xffff,CartBR);\r
   SetWriteHandler(0x4020,0xffff,M43Write);\r
 }\r
@@ -68,15 +69,15 @@ static void M43Reset(void)
 {\r
 }\r
 \r
-static void M43IRQHook(int a)\r
+static void FP_FASTAPASS(1) M43IRQHook(int a)\r
 {\r
- IRQCount+=a;\r
- if(IRQa)\r
-  if(IRQCount>=4096)\r
-  {\r
-   IRQa=0;\r
-   X6502_IRQBegin(FCEU_IQEXT);\r
-  }\r
 IRQCount+=a;\r
 if(IRQa)\r
+    if(IRQCount>=4096)\r
+    {\r
+      IRQa=0;\r
+      X6502_IRQBegin(FCEU_IQEXT);\r
+    }\r
 }\r
 \r
 static void StateRestore(int version)\r