merge mapper code from FCEUX
[fceu.git] / mappers / 67.c
index 96c695b..ee2390a 100644 (file)
@@ -1,7 +1,7 @@
 /* FCE Ultra - NES/Famicom Emulator
  *
  * Copyright notice for this file:
- *  Copyright (C) 2002 Ben Parnell
+ *  Copyright (C) 2002 Xodnizel
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
 #include "mapinc.h"
@@ -23,7 +23,7 @@
 
 #define suntoggle mapbyte1[0]
 
-DECLFW(Mapper67_write)
+static DECLFW(Mapper67_write)
 {
  A&=0xF800;
  if((A&0x800) && A<=0xb800)
@@ -34,11 +34,18 @@ DECLFW(Mapper67_write)
  {
   case 0xc800:
   case 0xc000:if(!suntoggle)
-              {IRQCount&=0xFF;IRQCount|=V<<8;}
-              else{IRQCount&=0xFF00;IRQCount|=V;}
+              {
+               IRQCount&=0xFF;
+               IRQCount|=V<<8;
+              }
+              else
+              {
+               IRQCount&=0xFF00;
+               IRQCount|=V;
+              }
               suntoggle^=1;
               break;
-  case 0xd800:suntoggle=0;IRQa=V&0x10;break;
+  case 0xd800:suntoggle=0;IRQa=V&0x10;X6502_IRQEnd(FCEU_IQEXT);break;
 
   case 0xe800:switch(V&3)
               {
@@ -51,13 +58,17 @@ DECLFW(Mapper67_write)
   case 0xf800:ROM_BANK16(0x8000,V);break;
  }
 }
-static void FP_FASTAPASS(1) SunIRQHook(int a)
+static void SunIRQHook(int a)
 {
   if(IRQa)
   {
    IRQCount-=a;
    if(IRQCount<=0)
-   {TriggerIRQ();IRQa=0;IRQCount=0xFFFF;}
+   {
+    X6502_IRQBegin(FCEU_IQEXT);
+    IRQa=0;
+    IRQCount=0xFFFF;
+   }
   }
 }
 void Mapper67_init(void)