static UINT8 srtc_read( address_space &space, UINT16 addr ) { addr &= 0xffff; if (addr == 0x2800) { if (rtc_state.mode != RTCM_Read) { return 0x00; } if (rtc_state.index < 0) { srtc_update_time(space.machine()); rtc_state.index++; return 0x0f; } else if (rtc_state.index > 12) { rtc_state.index = -1; return 0x0f; } else { return rtc_state.ram[rtc_state.index++]; } } return snes_open_bus_r(space, 0); }
static UINT8 srtc_mmio_read(running_machine *machine, UINT16 addr) { addr &= 0xffff; if(addr == 0x2800) { if(snes_rtc.rtc_mode != RTCM_Read) { return 0x00; } if(snes_rtc.rtc_index < 0) { srtc_update_time(machine); snes_rtc.rtc_index++; return 0x0f; } else if(snes_rtc.rtc_index > 12) { snes_rtc.rtc_index = -1; return 0x0f; } else { return snes_rtc.rtc_ram[snes_rtc.rtc_index++]; } } return 0xff; }
static void srtc_init( running_machine &machine ) { rtc_state.mode = RTCM_Read; rtc_state.index = -1; srtc_update_time(machine); state_save_register_global_array(machine, rtc_state.ram); state_save_register_global(machine, rtc_state.mode); state_save_register_global(machine, rtc_state.index); }
static void srtc_reset(running_machine *machine) { snes_rtc.rtc_mode = RTCM_Read; snes_rtc.rtc_index = -1; srtc_update_time(machine); }