updated bords/mappers/stuff to 0.98.15, lots of them got broken, asmcore support...
[fceu.git] / boards / subor.c
diff --git a/boards/subor.c b/boards/subor.c
new file mode 100644 (file)
index 0000000..31e5b65
--- /dev/null
@@ -0,0 +1,79 @@
+#include "mapinc.h"\r
+\r
+static uint8 mode;\r
+static uint8 DRegs[4];\r
+\r
+static SFORMAT StateRegs[]=\r
+{\r
+ {DRegs, 4, "DREG"},\r
+ {0}\r
+};\r
+\r
+static void Sync(void)\r
+{\r
+ int base, bank;\r
+ base = ((DRegs[0]^DRegs[1])&0x10)<<1;\r
+ bank = (DRegs[2]^DRegs[3])&0x1f;\r
+\r
+ if(DRegs[1]&0x08)\r
+ {\r
+   bank &= 0xfe;\r
+   if(mode==0)\r
+   {\r
+     setprg16(0x8000,base+bank+1);\r
+     setprg16(0xC000,base+bank+0);\r
+   }\r
+   else\r
+   {\r
+     setprg16(0x8000,base+bank+0);\r
+     setprg16(0xC000,base+bank+1);\r
+   }\r
+ }\r
+ else\r
+ {\r
+   if(DRegs[1]&0x04)\r
+   {\r
+     setprg16(0x8000,0x1f);\r
+     setprg16(0xC000,base+bank);\r
+   }\r
+   else\r
+   {\r
+     setprg16(0x8000,base+bank);\r
+     if(mode==0)\r
+        setprg16(0xC000,0x20);\r
+     else\r
+        setprg16(0xC000,0x07);\r
+   }\r
+ }\r
+}\r
+\r
+static DECLFW(Mapper167_write)\r
+{\r
+ DRegs[(A>>13)&0x03]=V;\r
+ Sync();\r
+}\r
+\r
+static void StateRestore(int version)\r
+{\r
+ Sync();\r
+}\r
+\r
+void Mapper166_init(void)\r
+{\r
+ mode=1;\r
+ DRegs[0]=DRegs[1]=DRegs[2]=DRegs[3]=0;\r
+ Sync();\r
+ SetWriteHandler(0x8000,0xFFFF,Mapper167_write);\r
+ GameStateRestore=StateRestore;\r
+ AddExState(&StateRegs, ~0, 0, 0);\r
+}\r
+\r
+void Mapper167_init(void)\r
+{\r
+ mode=0;\r
+ DRegs[0]=DRegs[1]=DRegs[2]=DRegs[3]=0;\r
+ Sync();\r
+ SetWriteHandler(0x8000,0xFFFF,Mapper167_write);\r
+ GameStateRestore=StateRestore;\r
+ AddExState(&StateRegs, ~0, 0, 0);\r
+}\r