straighten out bandai m159/m016 handling and add valid null-EEPROM emulation to get those games booting.

This commit is contained in:
zeromus 2011-11-14 01:53:20 +00:00
parent fd696c43e8
commit 170bcefdd2
4 changed files with 21 additions and 9 deletions

View File

@ -2,6 +2,7 @@
* *
* Copyright notice for this file: * Copyright notice for this file:
* Copyright (C) 2007 CaH4e3 * Copyright (C) 2007 CaH4e3
* Copyright (C) 2011 FCEUX team
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -21,6 +22,11 @@
* *
*/ */
//Famicom Jump 2 should get transformed to m153
//All other games are not supporting EEPROM saving right now.
//We may need to distinguish between 16 and 159 in order to know the EEPROM configuration.
//Until then, we just return 0x00 from the EEPROM read
#include "mapinc.h" #include "mapinc.h"
static uint8 reg[16], is153; static uint8 reg[16], is153;
@ -58,13 +64,7 @@ static void BandaiSync(void)
if(is153) if(is153)
{ {
int base=(reg[0]&1)<<4; int base=(reg[0]&1)<<4;
if(!UNIFchrrama) // SD Gundam Gaiden - Knight Gundam Monogatari 2 - Hikari no Kishi (J) uses WRAM but have CHRROM too setchr8(0);
{
int i;
for(i=0; i<8; i++) setchr1(i<<10,reg[i]);
}
else
setchr8(0);
setprg16(0x8000,(reg[8]&0x0F)|base); setprg16(0x8000,(reg[8]&0x0F)|base);
setprg16(0xC000,0x0F|base); setprg16(0xC000,0x0F|base);
} }
@ -102,11 +102,17 @@ static DECLFW(BandaiWrite)
} }
} }
DECLFR(BandaiRead)
{
return 0;
}
static void BandaiPower(void) static void BandaiPower(void)
{ {
BandaiSync(); BandaiSync();
SetReadHandler(0x8000,0xFFFF,CartBR); SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x6000,0xFFFF,BandaiWrite); SetWriteHandler(0x6000,0xFFFF,BandaiWrite);
SetReadHandler(0x6000,0x7FFF,BandaiRead);
} }
static void M153Power(void) static void M153Power(void)
@ -141,6 +147,12 @@ void Mapper16_Init(CartInfo *info)
AddExState(&StateRegs, ~0, 0, 0); AddExState(&StateRegs, ~0, 0, 0);
} }
void Mapper159_Init(CartInfo *info)
{
Mapper16_Init(info);
}
void Mapper153_Init(CartInfo *info) void Mapper153_Init(CartInfo *info)
{ {
is153=1; is153=1;

View File

@ -4,8 +4,6 @@
{0xbfc7a2e9,16,8}, {0xbfc7a2e9,16,8},
{0x33b899c9,16,-1}, /* Dragon Ball - Dai Maou Fukkatsu (J) [!] */ {0x33b899c9,16,-1}, /* Dragon Ball - Dai Maou Fukkatsu (J) [!] */
{0x3f15d20d,153,8}, /* Famicom Jump 2 */ {0x3f15d20d,153,8}, /* Famicom Jump 2 */
// {0xb049a8c4,153,-1}, /* SD Gundam Gaiden - Knight Gundam Monogatari 2 - Hikari no Kishi (J) [!] */
// NOT 16, since uses WRAM but 8000-FFFF address range for bankswitching,
{0x983d8175,157,8}, /* Datach Battle Rush */ {0x983d8175,157,8}, /* Datach Battle Rush */
{0x894efdbc,157,8}, /* Datach Crayon Shin Chan */ {0x894efdbc,157,8}, /* Datach Crayon Shin Chan */

View File

@ -566,6 +566,7 @@ static BMAPPINGLocal bmap[] = {
{"", 153, Mapper153_Init}, {"", 153, Mapper153_Init},
{"", 154, Mapper154_Init}, {"", 154, Mapper154_Init},
{"", 155, Mapper155_Init}, {"", 155, Mapper155_Init},
{"", 159, Mapper159_Init},
{"SA009", 160, SA009_Init}, {"SA009", 160, SA009_Init},
{"", 163, Mapper163_Init}, {"", 163, Mapper163_Init},
{"", 164, Mapper164_Init}, {"", 164, Mapper164_Init},

View File

@ -406,6 +406,7 @@ void Mapper152_Init(CartInfo *);
void Mapper153_Init(CartInfo *); void Mapper153_Init(CartInfo *);
void Mapper154_Init(CartInfo *); void Mapper154_Init(CartInfo *);
void Mapper155_Init(CartInfo *); void Mapper155_Init(CartInfo *);
void Mapper159_Init(CartInfo *);
void Mapper163_Init(CartInfo *); void Mapper163_Init(CartInfo *);
void Mapper164_Init(CartInfo *); void Mapper164_Init(CartInfo *);
void Mapper165_Init(CartInfo *); void Mapper165_Init(CartInfo *);