cv1k.cpp: some work towards save state support. Should work but it would be better not to save the bitmap, so for the time being it is disabled by default (nw)

This commit is contained in:
Ivan Vangelista 2016-04-01 19:25:57 +02:00
parent daadbc5fd5
commit bfbcdac2a6
6 changed files with 138 additions and 88 deletions

View File

@ -4115,7 +4115,7 @@ void sh34_base_device::device_start()
m_test_irq = 0; m_test_irq = 0;
save_item(NAME(m_pc)); save_item(NAME(m_pc));
save_item(NAME(m_r[15])); save_item(NAME(m_r));
save_item(NAME(m_sr)); save_item(NAME(m_sr));
save_item(NAME(m_pr)); save_item(NAME(m_pr));
save_item(NAME(m_gbr)); save_item(NAME(m_gbr));
@ -4126,59 +4126,20 @@ void sh34_base_device::device_start()
save_item(NAME(m_ssr)); save_item(NAME(m_ssr));
save_item(NAME(m_sgr)); save_item(NAME(m_sgr));
save_item(NAME(m_fpscr)); save_item(NAME(m_fpscr));
save_item(NAME(m_r[ 0])); save_item(NAME(m_rbnk));
save_item(NAME(m_r[ 1])); save_item(NAME(m_fr));
save_item(NAME(m_r[ 2])); save_item(NAME(m_xf));
save_item(NAME(m_r[ 3]));
save_item(NAME(m_r[ 4]));
save_item(NAME(m_r[ 5]));
save_item(NAME(m_r[ 6]));
save_item(NAME(m_r[ 7]));
save_item(NAME(m_r[ 8]));
save_item(NAME(m_r[ 9]));
save_item(NAME(m_r[10]));
save_item(NAME(m_r[11]));
save_item(NAME(m_r[12]));
save_item(NAME(m_r[13]));
save_item(NAME(m_r[14]));
save_item(NAME(m_fr[ 0]));
save_item(NAME(m_fr[ 1]));
save_item(NAME(m_fr[ 2]));
save_item(NAME(m_fr[ 3]));
save_item(NAME(m_fr[ 4]));
save_item(NAME(m_fr[ 5]));
save_item(NAME(m_fr[ 6]));
save_item(NAME(m_fr[ 7]));
save_item(NAME(m_fr[ 8]));
save_item(NAME(m_fr[ 9]));
save_item(NAME(m_fr[10]));
save_item(NAME(m_fr[11]));
save_item(NAME(m_fr[12]));
save_item(NAME(m_fr[13]));
save_item(NAME(m_fr[14]));
save_item(NAME(m_fr[15]));
save_item(NAME(m_xf[ 0]));
save_item(NAME(m_xf[ 1]));
save_item(NAME(m_xf[ 2]));
save_item(NAME(m_xf[ 3]));
save_item(NAME(m_xf[ 4]));
save_item(NAME(m_xf[ 5]));
save_item(NAME(m_xf[ 6]));
save_item(NAME(m_xf[ 7]));
save_item(NAME(m_xf[ 8]));
save_item(NAME(m_xf[ 9]));
save_item(NAME(m_xf[10]));
save_item(NAME(m_xf[11]));
save_item(NAME(m_xf[12]));
save_item(NAME(m_xf[13]));
save_item(NAME(m_xf[14]));
save_item(NAME(m_xf[15]));
save_item(NAME(m_ea)); save_item(NAME(m_ea));
save_item(NAME(m_delay));
save_item(NAME(m_cpu_off));
save_item(NAME(m_pending_irq));
save_item(NAME(m_test_irq));
save_item(NAME(m_fpul)); save_item(NAME(m_fpul));
save_item(NAME(m_dbr)); save_item(NAME(m_dbr));
save_item(NAME(m_exception_priority)); save_item(NAME(m_exception_priority));
save_item(NAME(m_exception_requesting)); save_item(NAME(m_exception_requesting));
save_item(NAME(m_irq_line_state));
save_item(NAME(m_m));
save_item(NAME(m_SH4_TSTR)); save_item(NAME(m_SH4_TSTR));
save_item(NAME(m_SH4_TCNT0)); save_item(NAME(m_SH4_TCNT0));
save_item(NAME(m_SH4_TCNT1)); save_item(NAME(m_SH4_TCNT1));
@ -4191,10 +4152,48 @@ void sh34_base_device::device_start()
save_item(NAME(m_SH4_TCOR2)); save_item(NAME(m_SH4_TCOR2));
save_item(NAME(m_SH4_TOCR)); save_item(NAME(m_SH4_TOCR));
save_item(NAME(m_SH4_TCPR2)); save_item(NAME(m_SH4_TCPR2));
save_item(NAME(m_SH4_IPRA)); save_item(NAME(m_SH4_IPRA));
save_item(NAME(m_SH4_IPRC)); save_item(NAME(m_SH4_IPRC));
save_item(NAME(m_SH4_DAR0));
save_item(NAME(m_SH4_DAR1));
save_item(NAME(m_SH4_DAR2));
save_item(NAME(m_SH4_DAR3));
save_item(NAME(m_SH4_CHCR0));
save_item(NAME(m_SH4_CHCR1));
save_item(NAME(m_SH4_CHCR2));
save_item(NAME(m_SH4_CHCR3));
save_item(NAME(m_SH4_DMATCR0));
save_item(NAME(m_SH4_DMATCR1));
save_item(NAME(m_SH4_DMATCR2));
save_item(NAME(m_SH4_DMATCR3));
save_item(NAME(m_SH4_DMAOR));
save_item(NAME(m_nmi_line_state));
save_item(NAME(m_sleep_mode));
save_item(NAME(m_frt_input));
save_item(NAME(m_irln));
save_item(NAME(m_internal_irq_level));
save_item(NAME(m_internal_irq_vector));
save_item(NAME(m_refresh_timer_base));
save_item(NAME(m_dma_timer_active));
save_item(NAME(m_dma_source));
save_item(NAME(m_dma_destination));
save_item(NAME(m_dma_count));
save_item(NAME(m_dma_wordsize));
save_item(NAME(m_dma_source_increment));
save_item(NAME(m_dma_destination_increment));
save_item(NAME(m_dma_mode));
save_item(NAME(m_sh4_icount));
save_item(NAME(m_fpu_sz));
save_item(NAME(m_fpu_pr));
save_item(NAME(m_ioport16_pullup));
save_item(NAME( m_ioport16_direction));
save_item(NAME(m_ioport4_pullup));
save_item(NAME(m_ioport4_direction));
save_item(NAME(m_sh4_tlb_address));
save_item(NAME(m_sh4_tlb_data));
save_item(NAME(m_sh4_mmu_enabled));
save_item(NAME(m_sh3internal_upper));
save_item(NAME(m_sh3internal_lower));
// Debugger state // Debugger state

View File

@ -15,6 +15,8 @@
#include "machine/rtc9701.h" #include "machine/rtc9701.h"
ALLOW_SAVE_TYPE(rtc9701_state_t);
//************************************************************************** //**************************************************************************
// GLOBAL VARIABLES // GLOBAL VARIABLES
@ -104,6 +106,25 @@ void rtc9701_device::device_start()
rtc_state = RTC9701_CMD_WAIT; rtc_state = RTC9701_CMD_WAIT;
cmd_stream_pos = 0; cmd_stream_pos = 0;
current_cmd = 0; current_cmd = 0;
save_item(NAME(m_latch));
save_item(NAME(m_reset_line));
save_item(NAME(m_clock_line));
save_item(NAME(rtc_state));
save_item(NAME(cmd_stream_pos));
save_item(NAME(current_cmd));
save_item(NAME(rtc9701_address_pos));
save_item(NAME(rtc9701_current_address));
save_item(NAME(rtc9701_current_data));
save_item(NAME(rtc9701_data_pos));
save_item(NAME(rtc9701_data));
save_item(NAME(m_rtc.sec));
save_item(NAME(m_rtc.min));
save_item(NAME(m_rtc.hour));
save_item(NAME(m_rtc.day));
save_item(NAME(m_rtc.wday));
save_item(NAME(m_rtc.month));
save_item(NAME(m_rtc.year));
} }

View File

@ -9,6 +9,7 @@
#include "machine/serflash.h" #include "machine/serflash.h"
ALLOW_SAVE_TYPE(flash_state_t);
//************************************************************************** //**************************************************************************
// LIVE DEVICE // LIVE DEVICE
@ -42,12 +43,27 @@ void serflash_device::device_start()
m_flashwritemap.resize(m_length / FLASH_PAGE_SIZE); m_flashwritemap.resize(m_length / FLASH_PAGE_SIZE);
memset(&m_flashwritemap[0], 0, m_length / FLASH_PAGE_SIZE); memset(&m_flashwritemap[0], 0, m_length / FLASH_PAGE_SIZE);
save_item(NAME(m_flash_state));
save_item(NAME(m_flash_enab));
save_item(NAME(m_flash_cmd_seq));
save_item(NAME(m_flash_cmd_prev));
save_item(NAME(m_flash_addr_seq));
save_item(NAME(m_flash_read_seq));
save_item(NAME(m_flash_row));
save_item(NAME(m_flash_col));
save_item(NAME(m_flash_page_addr));
save_item(NAME(m_flash_page_index));
save_item(NAME(m_flashwritemap));
save_item(NAME(m_last_flash_cmd));
save_item(NAME(m_flash_addr));
save_item(NAME(m_flash_page_data));
} }
void serflash_device::device_reset() void serflash_device::device_reset()
{ {
m_flash_enab = 0; m_flash_enab = 0;
flash_hard_reset(machine()); flash_hard_reset();
m_last_flash_cmd = 0x00; m_last_flash_cmd = 0x00;
m_flash_addr_seq = 0; m_flash_addr_seq = 0;
@ -115,7 +131,7 @@ void serflash_device::nvram_write(emu_file &file)
file.write(&page, 4); file.write(&page, 4);
} }
void serflash_device::flash_hard_reset(running_machine &machine) void serflash_device::flash_hard_reset()
{ {
// logerror("%08x FLASH: RESET\n", cpuexec_describe_context(machine)); // logerror("%08x FLASH: RESET\n", cpuexec_describe_context(machine));
@ -141,7 +157,7 @@ WRITE8_MEMBER( serflash_device::flash_enab_w )
m_flash_enab = data; m_flash_enab = data;
} }
void serflash_device::flash_change_state(running_machine &machine, flash_state_t state) void serflash_device::flash_change_state(flash_state_t state)
{ {
m_flash_state = state; m_flash_state = state;
@ -176,7 +192,7 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
break; break;
case 0x70: // READ STATUS case 0x70: // READ STATUS
flash_change_state( space.machine(), STATE_READ_STATUS ); flash_change_state( STATE_READ_STATUS );
break; break;
case 0x80: // PAGE / CACHE PROGRAM case 0x80: // PAGE / CACHE PROGRAM
@ -186,11 +202,11 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
break; break;
case 0x90: // READ ID case 0x90: // READ ID
flash_change_state( space.machine(), STATE_READ_ID ); flash_change_state( STATE_READ_ID );
break; break;
case 0xff: // RESET case 0xff: // RESET
flash_change_state( space.machine(), STATE_IDLE ); flash_change_state( STATE_IDLE );
break; break;
default: default:
@ -210,7 +226,7 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
m_flash_page_addr = m_flash_col; m_flash_page_addr = m_flash_col;
m_flash_page_index = m_flash_row; m_flash_page_index = m_flash_row;
flash_change_state( space.machine(), STATE_READ ); flash_change_state( STATE_READ );
//logerror("%08x FLASH: caching page = %04X\n", m_maincpu->pc(), m_flash_row); //logerror("%08x FLASH: caching page = %04X\n", m_maincpu->pc(), m_flash_row);
} }
@ -219,7 +235,7 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
case 0x60: // BLOCK ERASE case 0x60: // BLOCK ERASE
if (data==0xd0) if (data==0xd0)
{ {
flash_change_state( space.machine(), STATE_BLOCK_ERASE ); flash_change_state( STATE_BLOCK_ERASE );
m_flashwritemap[m_flash_col] |= 1; m_flashwritemap[m_flash_col] |= 1;
memset(m_region + m_flash_col * FLASH_PAGE_SIZE, 0xff, FLASH_PAGE_SIZE); memset(m_region + m_flash_col * FLASH_PAGE_SIZE, 0xff, FLASH_PAGE_SIZE);
//logerror("erased block %04x (%08x - %08x)\n", m_flash_col, m_flash_col * FLASH_PAGE_SIZE, ((m_flash_col+1) * FLASH_PAGE_SIZE)-1); //logerror("erased block %04x (%08x - %08x)\n", m_flash_col, m_flash_col * FLASH_PAGE_SIZE, ((m_flash_col+1) * FLASH_PAGE_SIZE)-1);
@ -232,7 +248,7 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
case 0x80: case 0x80:
if (data==0x10) if (data==0x10)
{ {
flash_change_state( space.machine(), STATE_PAGE_PROGRAM ); flash_change_state( STATE_PAGE_PROGRAM );
m_flashwritemap[m_flash_row] |= (memcmp(m_region + m_flash_row * FLASH_PAGE_SIZE, m_flash_page_data, FLASH_PAGE_SIZE) != 0); m_flashwritemap[m_flash_row] |= (memcmp(m_region + m_flash_row * FLASH_PAGE_SIZE, m_flash_page_data, FLASH_PAGE_SIZE) != 0);
memcpy(m_region + m_flash_row * FLASH_PAGE_SIZE, m_flash_page_data, FLASH_PAGE_SIZE); memcpy(m_region + m_flash_row * FLASH_PAGE_SIZE, m_flash_page_data, FLASH_PAGE_SIZE);
//logerror("re-written block %04x (%08x - %08x)\n", m_flash_row, m_flash_row * FLASH_PAGE_SIZE, ((m_flash_row+1) * FLASH_PAGE_SIZE)-1); //logerror("re-written block %04x (%08x - %08x)\n", m_flash_row, m_flash_row * FLASH_PAGE_SIZE, ((m_flash_row+1) * FLASH_PAGE_SIZE)-1);

View File

@ -50,7 +50,7 @@ public:
DECLARE_WRITE8_MEMBER( flash_data_w ); DECLARE_WRITE8_MEMBER( flash_data_w );
DECLARE_WRITE8_MEMBER( flash_cmd_w ); DECLARE_WRITE8_MEMBER( flash_cmd_w );
DECLARE_WRITE8_MEMBER( flash_enab_w ); DECLARE_WRITE8_MEMBER( flash_enab_w );
void flash_hard_reset(running_machine &machine); void flash_hard_reset();
DECLARE_READ8_MEMBER(n3d_flash_r); DECLARE_READ8_MEMBER(n3d_flash_r);
DECLARE_WRITE8_MEMBER(n3d_flash_cmd_w); DECLARE_WRITE8_MEMBER(n3d_flash_cmd_w);
@ -66,7 +66,7 @@ protected:
virtual void nvram_read(emu_file &file) override; virtual void nvram_read(emu_file &file) override;
virtual void nvram_write(emu_file &file) override; virtual void nvram_write(emu_file &file) override;
void flash_change_state(running_machine &machine, flash_state_t state); void flash_change_state(flash_state_t state);
// runtime state // runtime state
size_t m_length; size_t m_length;

View File

@ -49,6 +49,20 @@ void epic12_device::device_start()
m_blitter_delay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(epic12_device::blitter_delay_callback),this)); m_blitter_delay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(epic12_device::blitter_delay_callback),this));
m_blitter_delay_timer->adjust(attotime::never); m_blitter_delay_timer->adjust(attotime::never);
save_item(NAME(m_gfx_addr));
save_item(NAME(m_gfx_scroll_0_x));
save_item(NAME(m_gfx_scroll_0_y));
save_item(NAME(m_gfx_scroll_1_x));
save_item(NAME(m_gfx_scroll_1_y));
save_item(NAME(m_delay_scale));
save_item(NAME(m_gfx_addr_shadowcopy));
save_item(NAME(m_gfx_scroll_0_x_shadowcopy));
save_item(NAME(m_gfx_scroll_0_y_shadowcopy));
save_item(NAME(m_gfx_scroll_1_x_shadowcopy));
save_item(NAME(m_gfx_scroll_1_y_shadowcopy));
save_pointer(NAME(m_ram16_copy.get()), m_main_ramsize/2);
save_item(NAME(*m_bitmaps));
} }
void epic12_device::device_reset() void epic12_device::device_reset()

View File

@ -207,18 +207,18 @@ public:
required_shared_ptr<UINT64> m_ram; required_shared_ptr<UINT64> m_ram;
required_shared_ptr<UINT64> m_rombase; required_shared_ptr<UINT64> m_rombase;
DECLARE_READ8_MEMBER(cv1k_flash_io_r); DECLARE_READ8_MEMBER(flash_io_r);
DECLARE_WRITE8_MEMBER(cv1k_flash_io_w); DECLARE_WRITE8_MEMBER(flash_io_w);
DECLARE_READ8_MEMBER(serial_rtc_eeprom_r); DECLARE_READ8_MEMBER(serial_rtc_eeprom_r);
DECLARE_WRITE8_MEMBER(serial_rtc_eeprom_w); DECLARE_WRITE8_MEMBER(serial_rtc_eeprom_w);
DECLARE_READ64_MEMBER(cv1k_flash_port_e_r); DECLARE_READ64_MEMBER(flash_port_e_r);
UINT32 screen_update_cv1k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual void machine_reset() override; virtual void machine_reset() override;
/* game specific */ /* game specific */
DECLARE_READ64_MEMBER(cv1k_speedup_r); DECLARE_READ64_MEMBER(speedup_r);
DECLARE_DRIVER_INIT(mushisam); DECLARE_DRIVER_INIT(mushisam);
DECLARE_DRIVER_INIT(ibara); DECLARE_DRIVER_INIT(ibara);
DECLARE_DRIVER_INIT(espgal2); DECLARE_DRIVER_INIT(espgal2);
@ -232,13 +232,13 @@ public:
UINT32 m_idleramoffs; UINT32 m_idleramoffs;
UINT32 m_idlepc; UINT32 m_idlepc;
void install_cv1k_speedups(UINT32 idleramoff, UINT32 idlepc, bool is_typed); void install_speedups(UINT32 idleramoff, UINT32 idlepc, bool is_typed);
}; };
/**************************************************************************/ /**************************************************************************/
UINT32 cv1k_state::screen_update_cv1k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) UINT32 cv1k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{ {
m_blitter->set_delay_scale(m_blitrate->read()); m_blitter->set_delay_scale(m_blitrate->read());
@ -249,13 +249,13 @@ UINT32 cv1k_state::screen_update_cv1k(screen_device &screen, bitmap_rgb32 &bitma
// FLASH interface // FLASH interface
READ64_MEMBER( cv1k_state::cv1k_flash_port_e_r ) READ64_MEMBER( cv1k_state::flash_port_e_r )
{ {
return ((m_serflash->flash_ready_r(space, offset) ? 0x20 : 0x00)) | 0xdf; return ((m_serflash->flash_ready_r(space, offset) ? 0x20 : 0x00)) | 0xdf;
} }
READ8_MEMBER( cv1k_state::cv1k_flash_io_r ) READ8_MEMBER( cv1k_state::flash_io_r )
{ {
switch (offset) switch (offset)
{ {
@ -268,7 +268,7 @@ READ8_MEMBER( cv1k_state::cv1k_flash_io_r )
case 0x06: case 0x06:
case 0x07: case 0x07:
// logerror("cv1k_flash_io_r offset %04x\n", offset); // logerror("flash_io_r offset %04x\n", offset);
return 0xff; return 0xff;
case 0x00: case 0x00:
@ -276,13 +276,13 @@ READ8_MEMBER( cv1k_state::cv1k_flash_io_r )
} }
} }
WRITE8_MEMBER( cv1k_state::cv1k_flash_io_w ) WRITE8_MEMBER( cv1k_state::flash_io_w )
{ {
switch (offset) switch (offset)
{ {
default: default:
case 0x03: case 0x03:
logerror("unknown cv1k_flash_io_w offset %04x data %02x\n", offset, data); // 03 enable/disable fgpa access? logerror("unknown flash_io_w offset %04x data %02x\n", offset, data); // 03 enable/disable fgpa access?
break; break;
case 0x00: case 0x00:
@ -336,7 +336,7 @@ WRITE8_MEMBER( cv1k_state::serial_rtc_eeprom_w )
static ADDRESS_MAP_START( cv1k_map, AS_PROGRAM, 64, cv1k_state ) static ADDRESS_MAP_START( cv1k_map, AS_PROGRAM, 64, cv1k_state )
AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason.. AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason..
AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0x800000) // work RAM AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0x800000) // work RAM
AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(cv1k_flash_io_r, cv1k_flash_io_w, U64(0xffffffffffffffff)) AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(flash_io_r, flash_io_w, U64(0xffffffffffffffff))
AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, U64(0xffffffffffffffff)) AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, U64(0xffffffffffffffff))
AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, U64(0xffffffffffffffff)) AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, U64(0xffffffffffffffff))
// AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset // AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset
@ -346,7 +346,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cv1k_d_map, AS_PROGRAM, 64, cv1k_state ) static ADDRESS_MAP_START( cv1k_d_map, AS_PROGRAM, 64, cv1k_state )
AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason.. AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason..
AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("mainram") // work RAM AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("mainram") // work RAM
AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(cv1k_flash_io_r, cv1k_flash_io_w, U64(0xffffffffffffffff)) AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(flash_io_r, flash_io_w, U64(0xffffffffffffffff))
AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, U64(0xffffffffffffffff)) AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, U64(0xffffffffffffffff))
AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, U64(0xffffffffffffffff)) AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, U64(0xffffffffffffffff))
// AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset // AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset
@ -356,7 +356,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cv1k_port, AS_IO, 64, cv1k_state ) static ADDRESS_MAP_START( cv1k_port, AS_IO, 64, cv1k_state )
AM_RANGE(SH3_PORT_C, SH3_PORT_C+7) AM_READ_PORT("PORT_C") AM_RANGE(SH3_PORT_C, SH3_PORT_C+7) AM_READ_PORT("PORT_C")
AM_RANGE(SH3_PORT_D, SH3_PORT_D+7) AM_READ_PORT("PORT_D") AM_RANGE(SH3_PORT_D, SH3_PORT_D+7) AM_READ_PORT("PORT_D")
AM_RANGE(SH3_PORT_E, SH3_PORT_E+7) AM_READ( cv1k_flash_port_e_r ) AM_RANGE(SH3_PORT_E, SH3_PORT_E+7) AM_READ( flash_port_e_r )
AM_RANGE(SH3_PORT_F, SH3_PORT_F+7) AM_READ_PORT("PORT_F") AM_RANGE(SH3_PORT_F, SH3_PORT_F+7) AM_READ_PORT("PORT_F")
AM_RANGE(SH3_PORT_L, SH3_PORT_L+7) AM_READ_PORT("PORT_L") AM_RANGE(SH3_PORT_L, SH3_PORT_L+7) AM_READ_PORT("PORT_L")
AM_RANGE(SH3_PORT_J, SH3_PORT_J+7) AM_DEVREADWRITE( "blitter", epic12_device, fpga_r, fpga_w ) AM_RANGE(SH3_PORT_J, SH3_PORT_J+7) AM_DEVREADWRITE( "blitter", epic12_device, fpga_r, fpga_w )
@ -455,7 +455,7 @@ static MACHINE_CONFIG_START( cv1k, cv1k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 0x200) MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1) MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
MCFG_SCREEN_UPDATE_DRIVER(cv1k_state, screen_update_cv1k) MCFG_SCREEN_UPDATE_DRIVER(cv1k_state, screen_update)
MCFG_PALETTE_ADD("palette", 0x10000) MCFG_PALETTE_ADD("palette", 0x10000)
@ -828,18 +828,18 @@ ROM_START( dfkbl )
ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(31f9eb0a) SHA1(322158779e969bb321241065dd49c1167b91ff6c) ) ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(31f9eb0a) SHA1(322158779e969bb321241065dd49c1167b91ff6c) )
ROM_END ROM_END
READ64_MEMBER( cv1k_state::cv1k_speedup_r ) READ64_MEMBER( cv1k_state::speedup_r )
{ {
if (m_maincpu->pc()== m_idlepc ) m_maincpu->spin_until_time( attotime::from_usec(10)); if (m_maincpu->pc()== m_idlepc ) m_maincpu->spin_until_time( attotime::from_usec(10));
return m_ram[m_idleramoffs/8]; return m_ram[m_idleramoffs/8];
} }
void cv1k_state::install_cv1k_speedups(UINT32 idleramoff, UINT32 idlepc, bool is_typed) void cv1k_state::install_speedups(UINT32 idleramoff, UINT32 idlepc, bool is_typed)
{ {
m_idleramoffs = idleramoff; m_idleramoffs = idleramoff;
m_idlepc = idlepc; m_idlepc = idlepc;
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000000+m_idleramoffs, 0xc000000+m_idleramoffs+7, read64_delegate(FUNC(cv1k_state::cv1k_speedup_r),this)); m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000000+m_idleramoffs, 0xc000000+m_idleramoffs+7, read64_delegate(FUNC(cv1k_state::speedup_r),this));
m_maincpu->add_fastram(0x00000000, 0x003fffff, TRUE, m_rombase); m_maincpu->add_fastram(0x00000000, 0x003fffff, TRUE, m_rombase);
@ -850,37 +850,37 @@ void cv1k_state::install_cv1k_speedups(UINT32 idleramoff, UINT32 idlepc, bool is
DRIVER_INIT_MEMBER(cv1k_state,mushisam) DRIVER_INIT_MEMBER(cv1k_state,mushisam)
{ {
install_cv1k_speedups(0x024d8, 0xc04a2aa, false); install_speedups(0x024d8, 0xc04a2aa, false);
} }
DRIVER_INIT_MEMBER(cv1k_state,ibara) DRIVER_INIT_MEMBER(cv1k_state,ibara)
{ {
install_cv1k_speedups(0x022f0, 0xc04a0aa, false); install_speedups(0x022f0, 0xc04a0aa, false);
} }
DRIVER_INIT_MEMBER(cv1k_state,espgal2) DRIVER_INIT_MEMBER(cv1k_state,espgal2)
{ {
install_cv1k_speedups(0x02310, 0xc05177a, false); install_speedups(0x02310, 0xc05177a, false);
} }
DRIVER_INIT_MEMBER(cv1k_state,mushitam) DRIVER_INIT_MEMBER(cv1k_state,mushitam)
{ {
install_cv1k_speedups(0x0022f0, 0xc04a0da, false); install_speedups(0x0022f0, 0xc04a0da, false);
} }
DRIVER_INIT_MEMBER(cv1k_state,pinkswts) DRIVER_INIT_MEMBER(cv1k_state,pinkswts)
{ {
install_cv1k_speedups(0x02310, 0xc05176a, false); install_speedups(0x02310, 0xc05176a, false);
} }
DRIVER_INIT_MEMBER(cv1k_state,deathsml) DRIVER_INIT_MEMBER(cv1k_state,deathsml)
{ {
install_cv1k_speedups(0x02310, 0xc0519a2, false); install_speedups(0x02310, 0xc0519a2, false);
} }
DRIVER_INIT_MEMBER(cv1k_state,dpddfk) DRIVER_INIT_MEMBER(cv1k_state,dpddfk)
{ {
install_cv1k_speedups(0x02310, 0xc1d1346, true); install_speedups(0x02310, 0xc1d1346, true);
} }