Пример #1
0
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);
}
Пример #2
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;
}
Пример #3
0
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);
}
Пример #4
0
static void srtc_reset(running_machine *machine)
{
	snes_rtc.rtc_mode = RTCM_Read;
	snes_rtc.rtc_index = -1;
	srtc_update_time(machine);
}