rewrite more of mapper 227 to work even better (fixes Xiang Shuai Chuan Qi better)
This commit is contained in:
parent
d27e7bf2b1
commit
4f4805760b
|
@ -20,51 +20,63 @@
|
|||
|
||||
#include "mapinc.h"
|
||||
|
||||
//zero 14-apr-2012 - redid this entirely to match bizhawk
|
||||
|
||||
#define rg mapbyte1
|
||||
|
||||
static void DoSync(uint32 A)
|
||||
{
|
||||
int32 p=((A>>3)&0xF) | ((A>>4)&0x10);
|
||||
{
|
||||
int S = A & 1;
|
||||
int M_horz = (A>>1)&1;
|
||||
int p = (A >> 2) & 0x1F;
|
||||
p += (A&0x100) ? 0x20 : 0;
|
||||
bool o = (A>>7)&1;
|
||||
bool L = (A>>9)&1;
|
||||
|
||||
if (o && !S )
|
||||
{
|
||||
ROM_BANK16(0x8000,p);
|
||||
ROM_BANK16(0xC000,p);
|
||||
}
|
||||
if (o && S )
|
||||
{
|
||||
ROM_BANK16(0x8000,p);
|
||||
ROM_BANK16(0xC000,p+1);
|
||||
}
|
||||
if (!o && !S && !L )
|
||||
{
|
||||
ROM_BANK16(0x8000,p);
|
||||
ROM_BANK16(0xC000,p&0x38);
|
||||
}
|
||||
if (!o && S && !L )
|
||||
{
|
||||
ROM_BANK16(0x8000,p&0x3E);
|
||||
ROM_BANK16(0xC000,p&0x38);
|
||||
}
|
||||
if (!o && !S && L)
|
||||
{
|
||||
ROM_BANK16(0x8000,p);
|
||||
ROM_BANK16(0xC000,p|7);
|
||||
}
|
||||
if (!o && S && L )
|
||||
{
|
||||
ROM_BANK16(0x8000,p&0x3E);
|
||||
ROM_BANK16(0xC000,p|7);
|
||||
}
|
||||
|
||||
rg[0]=A;
|
||||
rg[1]=A>>8;
|
||||
|
||||
MIRROR_SET((A>>1)&1);
|
||||
if(A&1) //32 KB
|
||||
{
|
||||
ROM_BANK32(p);
|
||||
}
|
||||
else //16 KB
|
||||
{
|
||||
ROM_BANK16(0x8000,(p<<1)|((A&4)>>2));
|
||||
ROM_BANK16(0xc000,(p<<1)|((A&4)>>2));
|
||||
}
|
||||
if(A&0x80)
|
||||
{
|
||||
//zero 09-apr-2012 - re #3515350
|
||||
//removed this to fix [NJXXX] Xiang Shuai Chuan Qi which wouldnt be able to write any of its vram otherwise
|
||||
//if this needs to be here for some other reason, then we'll have to learn how to decide when to do it
|
||||
//PPUCHRRAM=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
PPUCHRRAM=0xFF;
|
||||
if(A&0x200)
|
||||
ROM_BANK16(0xC000,(p<<1)|7);
|
||||
else
|
||||
ROM_BANK16(0xC000,(p<<1)&(~7));
|
||||
}
|
||||
}
|
||||
|
||||
static DECLFW(Mapper227_write)
|
||||
{
|
||||
rg[A&1]=V;
|
||||
DoSync(A);
|
||||
}
|
||||
|
||||
static void M227Reset(void)
|
||||
{
|
||||
rg[0]=rg[1]=0;
|
||||
DoSync(0);
|
||||
}
|
||||
|
||||
|
@ -75,7 +87,7 @@ static void M227Restore(int version)
|
|||
|
||||
void Mapper227_init(void)
|
||||
{
|
||||
SetWriteHandler(0x6000,0xffff,Mapper227_write);
|
||||
SetWriteHandler(0x8000,0xffff,Mapper227_write);
|
||||
MapperReset=M227Reset;
|
||||
GameStateRestore=M227Restore;
|
||||
M227Reset();
|
||||
|
|
Loading…
Reference in New Issue