+/* FCE Ultra - NES/Famicom Emulator\r
+ *\r
+ * Copyright notice for this file:\r
+ * Copyright (C) 2005 CaH4e3\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+ */\r
+ \r
#include "mapinc.h"\r
\r
static uint8 mode;\r
\r
static SFORMAT StateRegs[]=\r
{\r
- {DRegs, 4, "DREG"},\r
- {0}\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
+ 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
+ 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
+ DRegs[(A>>13)&0x03]=V;\r
+ Sync();\r
}\r
\r
static void StateRestore(int version)\r
{\r
- Sync();\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
+ 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
+ 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