static DECLFR(UNLKS7030RamRead0) { if ((A >= 0x6000) && A <= 0x6BFF) { return WRAM[A - 0x6000]; } else if ((A >= 0x6C00) && A <= 0x6FFF) { return CartBR(0xC800 + (A - 0x6C00)); } else if ((A >= 0x7000) && A <= 0x7FFF) { return CartBR(0xB800 + (A - 0x7000)); } return 0; }
static DECLFR(BMC70in1Read) { if (bank_mode == 0x10) /* if(is_large_banks) */ return CartBR((A & 0xFFF0) | hw_switch); #if 0 else return CartBR((A&0xFFF0)|hw_switch); #endif else return CartBR(A);
static DECLFR(UNLD2000Read) { if(prg & 0x40) return X.DB; else return CartBR(A); }
static DECLFR(M68Read) { if (!(kogame & 8)) { count++; if (count == 1784) setprg16r(0, 0x8000, prg_reg); } return CartBR(A); }
static DECLFW(LatchWrite) { // FCEU_printf("bs %04x %02x\n",A,V); if (bus_conflict) latche = (V == CartBR(A)) ? V : 0; else latche = V; WSync(); }
static DECLFR(M175Read) { if(A==0xFFFC) { delay = 0; Sync(); } return CartBR(A); }
static DECLFR(UNLKS7030RamRead1) { if ((A >= 0xB800) && A <= 0xBFFF) { return WRAM[0x0C00 + (A - 0xB800)]; } else if ((A >= 0xC000) && A <= 0xCBFF) { return CartBR(0xCC00 + (A - 0xC000)); } else if ((A >= 0xCC00) && A <= 0xD7FF) { return WRAM[0x1400 + (A - 0xCC00)]; } return 0; }
static DECLFR(UNLRT01Read) { // u16 i, prot_areas[2][2] = { // { 0x8E80, 0x8EFF }, // { 0xFE80, 0xFEFF }, // }; if(((A >= 0xCE80) && (A < 0xCF00)) || ((A >= 0xFE80) && (A < 0xFF00))) { return 0xF2 | (xoroshiro128plus_next() & 0x0D); } else return CartBR(A); }
static DECLFR(SUN5AWRAM) { if((sungah&0xC0)==0x40) return X.DB; return CartBR(A); }
static DECLFR(SUN5AWRAM) { if((wram_control&0xC0)==0x40) return X.DB; return CartBR(A); }
static DECLFW(Write50282) { latch = (V & 0xFE & CartBR(A)) | (CartBR(A) & 1); Sync(); }
static DECLFW(Write) { latch = V & CartBR(A); Sync(); }
static DECLFR(EH8813ARead) { if (addrlatch & 0x40) A= (A & 0xFFF0) + hw_mode; return CartBR(A); }