mappers updated to 0.98.16
[fceu.git] / boards / karaoke.c
index eccf9c2..e089cda 100644 (file)
 
 #include "mapinc.h"
 
-static uint8 DReg;
-static SFORMAT StateRegs[]=
-{
-  {&DReg, 1, "DREG"},
-  {0}
-};
+extern uint32 ROM_size;
+static uint8 latche;
 
 static void Sync(void)
 {
-  if(DReg)
+  if(latche)
   {
-    if(DReg & 0x10)
-      setprg16(0x8000,(DReg&7));
+    if(latche&0x10)
+      setprg16(0x8000,(latche&7));
     else
-      setprg16(0x8000,(DReg&7)|8);
+      setprg16(0x8000,(latche&7)|8);
   }
   else
-    setprg16(0x8000,7);
-}
-
-static void StateRestore(int version)
-{
-  Sync();
+    setprg16(0x8000,7+(ROM_size>>4));
 }
 
 static DECLFW(M188Write)
 {
-  DReg=V;
+  latche=V;
   Sync();
 }
 
-static DECLFR(testr)
+static DECLFR(ExtDev)
 {
   return(3);
 }
 
-
 static void Power(void)
 {
-  setchr8(0);
-  setprg8(0xc000,0xE);
-  setprg8(0xe000,0xF);
-  DReg = 0;
+  latche=0;
   Sync();
-  SetReadHandler(0x6000,0x7FFF,testr);
+  setchr8(0);
+  setprg16(0xc000,0x7);
+  SetReadHandler(0x6000,0x7FFF,ExtDev);
   SetReadHandler(0x8000,0xFFFF,CartBR);
   SetWriteHandler(0x8000,0xFFFF,M188Write);
 }
 
+static void StateRestore(int version)
+{
+  Sync();
+}
 
 void Mapper188_Init(CartInfo *info)
 {
   info->Power=Power;
   GameStateRestore=StateRestore;
-  AddExState(&StateRegs, ~0, 0, 0);
+  AddExState(&latche, 1, 0, "LATCH");
 }