예제 #1
0
파일: nuova.c 프로젝트: Bremma/pinmame
static WRITE_HANDLER(bank_w) {
  if (locals.enable) {
    locals.bank = core_BitColToNum((~data & 0x0f) ^ 0x01);
//  logerror("bank: %d\n", locals.bank);
    cpu_setbank(1, memory_region(REGION_SOUND1) + 0x8000 * locals.bank);
    locals.mute = (data >> 6) & 1;
    locals.LED = ~data >> 7;
    coreGlobals.diagnosticLed = (coreGlobals.diagnosticLed & 1) | (locals.LED << 1);
  }
예제 #2
0
static READ_HANDLER(port_r) {
  UINT8 *ram = memory_region(REGION_CPU1) + 0x1000;
  UINT8 retVal = ram[offset];
  logerror("%03x: R%x %02x - %02x\n", activecpu_get_previouspc(), locals.p2 >> 4, offset, locals.p1);
  switch (locals.p2 >> 4) {
    case 0: retVal = ~core_revbyte(coreGlobals.swMatrix[1 + core_BitColToNum(0xff ^ locals.p1)]); break;
    // case 1: unused by code, possible expansion (J4-7)
    case 4: retVal = core_getDip(0); break;
    case 5: retVal = core_getDip(1); break;
    case 6: retVal = core_getDip(3); printf("DIP3 used!!!"); break; // unused, so place it at the end and don't map it
    case 7: retVal = core_getDip(2); break;
  }
  return retVal;
}
예제 #3
0
파일: efo.c 프로젝트: CarnyPriest/SAMbuild
static WRITE_HANDLER(row_w) {
  locals.row = !data ? 0 : 1 + core_BitColToNum(data);
  locals.pos = 0;
}
예제 #4
0
파일: efo.c 프로젝트: CarnyPriest/SAMbuild
static WRITE_HANDLER(col_w) {
  locals.col = core_BitColToNum(data);
}
예제 #5
0
static WRITE_HANDLER(port_w) {
  static int solBank;
  static UINT8 lampData;
  static UINT8 segData[4];
  static UINT8 dispBlank;
  int col;
  UINT8 *ram = memory_region(REGION_CPU1) + 0x1000;
  logerror("%03x: W%x %02x: %02x\n", activecpu_get_previouspc(), locals.p2 >> 4, offset, data);
  switch (locals.p2 >> 4) {
    case 0:
    case 0x0e:
      ram[offset] = data;
      break;
    case 1:
      solBank = data;
      if (!solBank) {
        locals.solenoids = 0;
      }
      break;
    case 2:
      if (solBank) {
        locals.vblankCount = 0;
        if (solBank & 1) {
          locals.solenoids = (locals.solenoids & 0xff00) | data;
        }
        if (solBank & 2) {
          locals.solenoids = (locals.solenoids & 0x00ff) | (data << 8);
        }
        if (data) { // sometimes data is flaky, so allow fast overwrites and also keep previous data
          coreGlobals.solenoids = locals.solenoids;
        }
      }
      break;
    case 3:
      dispBlank = 0xff ^ data;
      break;
    // case 5/6: unused by code, possible expansion (J4-14, J4-13)
    case 8:
      segData[0] = data;
      break;
    case 9:
      segData[1] = data;
      break;
    case 0x0a:
      segData[2] = data;
      break;
    case 0x0b:
      segData[3] = data;
      break;
    case 0x0c:
      lampData = data;
      break;
    case 0x0d:
      col = core_BitColToNum(data);
      coreGlobals.lampMatrix[col] = lampData;
      coreGlobals.segments[col].w = dispBlank & 1 ? 0 : core_bcd2seg7[segData[0] & 0x0f];
      coreGlobals.segments[8 + col].w = dispBlank & 2 ? 0 : core_bcd2seg7[segData[0] >> 4];
      coreGlobals.segments[16 + col].w = dispBlank & 4 ? 0 : core_bcd2seg7[segData[1] & 0x0f];
      coreGlobals.segments[24 + col].w = dispBlank & 8 ? 0 : core_bcd2seg7[segData[1] >> 4];
      coreGlobals.segments[32 + col].w = dispBlank & 0x10 ? 0 : core_bcd2seg7[segData[2] & 0x0f];
      coreGlobals.segments[40 + col].w = dispBlank & 0x20 ? 0 : core_bcd2seg7[segData[2] >> 4];
      coreGlobals.segments[48 + col].w = dispBlank & 0x40 ? 0 : core_bcd2seg7[segData[3] & 0x0f];
      coreGlobals.segments[56 + col].w = dispBlank & 0x80 ? 0 : core_bcd2seg7[segData[3] >> 4];
      break;
    default:
      printf("%03x: W%x %02x: %02x\n", activecpu_get_previouspc(), locals.p2 >> 4, offset, data);
  }
}
예제 #6
0
파일: nsm.c 프로젝트: Bremma/pinmame
static WRITE_HANDLER(parallel_0_out) {
  locals.strobe = core_BitColToNum(data);
}