unsigned char mbc_lo,mbc_hi;
unsigned short RomBankRegister;
//.....
if(MBC5) // MBC5
{
// grab the rom bank select bits
if(address<0x3000)
mbc_lo=data;
else
mbc_hi=data&BIT7;
// assamble the 9bit rom bank select
RomBankRegister=(mbc_hi<<1)|mbc_lo;
// switch the rom bank
memcpy(&memory[0x4000],&rom.Buffer[RomBankRegister*0x4000],0x4000);
}