Esempio n. 1
0
static DECLFW(UNLSL1632CMDWrite)
{
  if(A==0xA131)
  {
    bbrk=V;
  }
  if(bbrk&2)
  {
    FixMMC3PRG(MMC3_cmd);
    FixMMC3CHR(MMC3_cmd);
    if(A<0xC000)
      MMC3_CMDWrite(A,V);
    else
      MMC3_IRQWrite(A,V);
  }
  else
  {
    if((A>=0xB000)&&(A<=0xE003))
    {
      int ind=((((A&2)|(A>>10))>>1)+2)&7;
      int sar=((A&1)<<2);
      chrcmd[ind]=(chrcmd[ind]&(0xF0>>sar))|((V&0x0F)<<sar);
    }
    else
      switch(A&0xF003)
Esempio n. 2
0
static DECLFW(M199Write) {
	if ((A == 0x8001) && (MMC3_cmd & 8)) {
		EXPREGS[MMC3_cmd & 3] = V;
		FixMMC3PRG(MMC3_cmd);
		FixMMC3CHR(MMC3_cmd);
	} else
	if (A < 0xC000)
		MMC3_CMDWrite(A, V);
	else
		MMC3_IRQWrite(A, V);
}
Esempio n. 3
0
static DECLFW(BMC8IN1Write) {
    if(A & 0x1000) {
        EXPREGS[0] = V;
        FixMMC3PRG(MMC3_cmd);
        FixMMC3CHR(MMC3_cmd);
    } else {
        if(A < 0xC000)
            MMC3_CMDWrite(A, V);
        else
            MMC3_IRQWrite(A, V);
    }
}
Esempio n. 4
0
static DECLFW(M199Write)
{
  if((A==0x8001)&&(MMC3_cmd&8))
  {
//    FCEU_printf("%02x=>%02x\n",MMC3_cmd,V);
    EXPREGS[MMC3_cmd&3]=V;
    FixMMC3PRG(MMC3_cmd);
    FixMMC3CHR(MMC3_cmd);
  }
  else    
    if(A<0xC000)
      MMC3_CMDWrite(A,V);
    else
      MMC3_IRQWrite(A,V);
}
Esempio n. 5
0
static DECLFW(BMCFK23CHiWrite)
{
  if(EXPREGS[0]&0x40)
  {
    if(EXPREGS[0]&0x30)
      unromchr=0;
    else
    {
      unromchr=V&3;
      FixMMC3CHR(MMC3_cmd);
    }
  }
  else
  {
    if((A==0x8001)&&(EXPREGS[3]&2)&&(MMC3_cmd&8))
    {
      EXPREGS[4|(MMC3_cmd&3)]=V;
      FixMMC3PRG(MMC3_cmd);
      FixMMC3CHR(MMC3_cmd);
    }
    else
      if(A<0xC000) {
        if(UNIFchrrama) { // hacky... strange behaviour, must be bit scramble due to pcb layot restrictions
                          // check if it not interfer with other dumps
          if((A==0x8000)&&(V==0x46))
            V=0x47;
          else if((A==0x8000)&&(V==0x47))
            V=0x46;
        }
        MMC3_CMDWrite(A,V);
        FixMMC3PRG(MMC3_cmd);
      }
      else
        MMC3_IRQWrite(A,V);
  }
}