*\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
\r
#include "mapinc.h"\r
\r
static DECLFW(LatchWrite)\r
{\r
- FCEU_printf("%04x:%02x\n",A,V);\r
+// FCEU_printf("%04x:%02x\n",A,V);\r
latche=A;\r
WSync();\r
}\r
}\r
\r
\r
+//------------------ UNL43272 ---------------------------\r
+// mapper much complex, including 16K bankswitching \r
+static void UNL43272Sync(void)\r
+{\r
+ if((latche&0x81) == 0x81)\r
+ {\r
+ setprg32(0x8000,(latche&0x38)>>3);\r
+ }\r
+ else\r
+ FCEU_printf("unrecognized command %04x!\n",latche);\r
+ setchr8(0);\r
+ setmirror(0);\r
+}\r
+\r
+static DECLFR(UNL43272Read)\r
+{\r
+ if(latche&0x400)\r
+ return CartBR(A & 0xFE);\r
+ else\r
+ return CartBR(A);\r
+}\r
+\r
+static void UNL43272Reset(void)\r
+{\r
+ latche = 0;\r
+ UNL43272Sync();\r
+}\r
+\r
+void UNL43272_Init(CartInfo *info)\r
+{ \r
+ Latch_Init(info, UNL43272Sync, UNL43272Read, 0x81, 0x8000, 0xFFFF);\r
+ info->Reset=UNL43272Reset;\r
+ AddExState(&dipswitch, 1, 0, "DIPSW");\r
+}\r
+\r
//------------------ Map 058 ---------------------------\r
\r
static void BMCGK192Sync(void)\r
Latch_Init(info, BMCGK192Sync, 0, 0, 0x8000, 0xFFFF);\r
}\r
\r
+//------------------ Map 092 ---------------------------\r
+// Another two-in-one mapper, two Jaleco carts uses similar\r
+// hardware, but with different wiring.\r
+// Original code provided by LULU\r
+// Additionally, PCB contains DSP extra sound chip, used for voice samples (unemulated)\r
+\r
+static void M92Sync(void)\r
+{\r
+ uint8 reg = latche & 0xF0;\r
+ setprg16(0x8000,0);\r
+ if(latche>=0x9000)\r
+ {\r
+ switch (reg)\r
+ {\r
+ case 0xD0: setprg16(0xc000, latche & 15); break;\r
+ case 0xE0: setchr8(latche & 15); break;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ switch (reg)\r
+ {\r
+ case 0xB0: setprg16(0xc000, latche & 15); break;\r
+ case 0x70: setchr8(latche & 15); break;\r
+ }\r
+ }\r
+}\r
+\r
+void Mapper92_Init(CartInfo *info)\r
+{\r
+ Latch_Init(info, M92Sync, 0, 0x80B0, 0x8000, 0xFFFF);\r
+}\r
+\r
//------------------ Map 200 ---------------------------\r
\r
static void M200Sync(void)\r
Latch_Init(info, BMC190in1Sync, 0, 0, 0x8000, 0xFFFF);\r
}\r
\r
+//-------------- BMC810544-C-A1 ------------------------\r
+\r
+static void BMC810544CA1Sync(void)\r
+{\r
+ uint32 bank = latche>>7;\r
+ if(latche&0x40)\r
+ setprg32(0x8000,bank);\r
+ else\r
+ {\r
+ setprg16(0x8000,(bank<<1)|((latche>>5)&1));\r
+ setprg16(0xC000,(bank<<1)|((latche>>5)&1));\r
+ }\r
+ setchr8(latche&0x0f);\r
+ setmirror(((latche>>4)&1)^1);\r
+}\r
+\r
+void BMC810544CA1_Init(CartInfo *info)\r
+{ \r
+ Latch_Init(info, BMC810544CA1Sync, 0, 0, 0x8000, 0xFFFF);\r
+}\r
+\r
+//-------------- BMCNTD-03 ------------------------\r
+\r
+static void BMCNTD03Sync(void)\r
+{\r
+ // 1PPP Pmcc spxx xccc\r
+ // 1000 0000 0000 0000 v\r
+ // 1001 1100 0000 0100 h\r
+ // 1011 1010 1100 0100\r
+ uint32 prg = ((latche>>10)&0x1e);\r
+ uint32 chr = ((latche&0x0300)>>5)|(latche&7);\r
+ if(latche&0x80)\r
+ {\r
+ setprg16(0x8000,prg|((latche>>6)&1));\r
+ setprg16(0xC000,prg|((latche>>6)&1));\r
+ }\r
+ else\r
+ setprg32(0x8000,prg>>1);\r
+ setchr8(chr);\r
+ setmirror(((latche>>10)&1)^1);\r
+}\r
+\r
+void BMCNTD03_Init(CartInfo *info)\r
+{ \r
+ Latch_Init(info, BMCNTD03Sync, 0, 0, 0x8000, 0xFFFF);\r
+}\r