summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author 987123879113 <63495610+987123879113@users.noreply.github.com>2022-02-08 09:13:24 +0900
committer GitHub <noreply@github.com>2022-02-07 19:13:24 -0500
commit99404ddd2d32a9c9058d8359cf9132e4b274e346 (patch)
tree7d3cea5aaa2ac44fcc41b96a3a6484ce055097dd
parente450cc79539942693b9fffcc61cdfc7d0e9cff17 (diff)
x76f041/x76f100/zs01: Implement new operations and security features (#9137)
* x76f100: Implement security features * x76f041: Implement security features * zs01: Implement security features * ksys573: Update security flash data * k573mcal: Add master calendar for initializing security cassettes * zs01: Update comment about unknown serial
-rw-r--r--scripts/target/mame/arcade.lua2
-rw-r--r--src/devices/machine/x76f041.cpp246
-rw-r--r--src/devices/machine/x76f041.h38
-rw-r--r--src/devices/machine/x76f100.cpp104
-rw-r--r--src/devices/machine/x76f100.h3
-rw-r--r--src/mame/drivers/ksys573.cpp445
-rw-r--r--src/mame/machine/k573mcal.cpp227
-rw-r--r--src/mame/machine/k573mcal.h52
-rw-r--r--src/mame/machine/zs01.cpp158
-rw-r--r--src/mame/machine/zs01.h17
10 files changed, 1006 insertions, 286 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index ece5ab8a4f4..1c2de8763d8 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -2545,6 +2545,8 @@ files {
MAME_DIR .. "src/mame/machine/k573fpga.h",
MAME_DIR .. "src/mame/machine/k573kara.cpp",
MAME_DIR .. "src/mame/machine/k573kara.h",
+ MAME_DIR .. "src/mame/machine/k573mcal.cpp",
+ MAME_DIR .. "src/mame/machine/k573mcal.h",
MAME_DIR .. "src/mame/machine/k573mcr.cpp",
MAME_DIR .. "src/mame/machine/k573mcr.h",
MAME_DIR .. "src/mame/machine/k573msu.cpp",
diff --git a/src/devices/machine/x76f041.cpp b/src/devices/machine/x76f041.cpp
index 03fb5b65bf9..06b831eeda6 100644
--- a/src/devices/machine/x76f041.cpp
+++ b/src/devices/machine/x76f041.cpp
@@ -48,13 +48,15 @@ x76f041_device::x76f041_device( const machine_config &mconfig, const char *tag,
m_bit( 0 ),
m_byte( 0 ),
m_command( 0 ),
- m_address( 0 )
+ m_address( 0 ),
+ m_is_password_accepted ( false )
{
}
void x76f041_device::device_start()
{
- memset( m_write_buffer, 0, sizeof( m_write_buffer ) );
+ std::fill( std::begin( m_write_buffer ), std::end( m_write_buffer ), 0 );
+ std::fill( std::begin( m_password_temp ), std::end( m_password_temp ), 0 );
save_item( NAME( m_cs ) );
save_item( NAME( m_rst ) );
@@ -67,6 +69,7 @@ void x76f041_device::device_start()
save_item( NAME( m_byte ) );
save_item( NAME( m_command ) );
save_item( NAME( m_address ) );
+ save_item( NAME( m_is_password_accepted ) );
save_item( NAME( m_write_buffer ) );
save_item( NAME( m_response_to_reset ) );
save_item( NAME( m_write_password ) );
@@ -74,6 +77,26 @@ void x76f041_device::device_start()
save_item( NAME( m_configuration_password ) );
save_item( NAME( m_configuration_registers ) );
save_item( NAME( m_data ) );
+ save_item( NAME( m_password_temp ) );
+}
+
+void x76f041_device::device_reset()
+{
+ std::fill( std::begin( m_write_buffer ), std::end( m_write_buffer ), 0 );
+ std::fill( std::begin( m_password_temp ), std::end( m_password_temp ), 0 );
+
+ m_cs = 0;
+ m_rst = 0;
+ m_scl = 0;
+ m_sdaw = 0;
+ m_sdar = 0;
+ m_state = STATE_STOP;
+ m_shift = 0;
+ m_bit = 0;
+ m_byte = 0;
+ m_command = 0;
+ m_address = 0;
+ m_is_password_accepted = false;
}
WRITE_LINE_MEMBER( x76f041_device::write_cs )
@@ -128,6 +151,15 @@ uint8_t *x76f041_device::password()
case COMMAND_READ:
return m_read_password;
+ case COMMAND_CONFIGURATION:
+ if( m_address == CONFIGURATION_PROGRAM_WRITE_PASSWORD )
+ return m_write_password;
+
+ if( m_address == CONFIGURATION_PROGRAM_READ_PASSWORD )
+ return m_read_password;
+
+ return m_configuration_password;
+
default:
return m_configuration_password;
}
@@ -135,6 +167,9 @@ uint8_t *x76f041_device::password()
void x76f041_device::password_ok()
{
+ if( m_configuration_registers[ CONFIG_CR ] & CR_RETRY_COUNTER_RESET_BIT )
+ m_configuration_registers[ CONFIG_RC ] = 0;
+
switch( m_command & 0xe0 )
{
case COMMAND_WRITE:
@@ -144,7 +179,7 @@ void x76f041_device::password_ok()
m_state = STATE_READ_DATA;
break;
case COMMAND_WRITE_USE_CONFIGURATION_PASSWORD:
- m_state = STATE_WRITE_DATA;
+ m_state = STATE_CONFIGURATION_WRITE_DATA;
break;
case COMMAND_READ_USE_CONFIGURATION_PASSWORD:
m_state = STATE_READ_DATA;
@@ -153,14 +188,22 @@ void x76f041_device::password_ok()
switch( m_address )
{
case CONFIGURATION_PROGRAM_WRITE_PASSWORD:
+ m_state = STATE_PROGRAM_WRITE_PASSWORD;
+ m_byte = 0;
break;
case CONFIGURATION_PROGRAM_READ_PASSWORD:
+ m_state = STATE_PROGRAM_READ_PASSWORD;
+ m_byte = 0;
break;
case CONFIGURATION_PROGRAM_CONFIGURATION_PASSWORD:
+ m_state = STATE_PROGRAM_CONFIGURATION_PASSWORD;
+ m_byte = 0;
break;
case CONFIGURATION_RESET_WRITE_PASSWORD:
+ m_state = STATE_RESET_WRITE_PASSWORD;
break;
case CONFIGURATION_RESET_READ_PASSWORD:
+ m_state = STATE_RESET_READ_PASSWORD;
break;
case CONFIGURATION_PROGRAM_CONFIGURATION_REGISTERS:
m_state = STATE_WRITE_CONFIGURATION_REGISTERS;
@@ -171,8 +214,10 @@ void x76f041_device::password_ok()
m_byte = 0;
break;
case CONFIGURATION_MASS_PROGRAM:
+ m_state = STATE_MASS_PROGRAM;
break;
case CONFIGURATION_MASS_ERASE:
+ m_state = STATE_MASS_ERASE;
break;
default:
break;
@@ -182,21 +227,56 @@ void x76f041_device::password_ok()
void x76f041_device::load_address()
{
- /* todo: handle other bcr bits */
- int bcr;
-
m_address = m_shift;
verboselog( 1, "-> address: %02x\n", m_address );
- if( ( m_command & 1 ) == 0 )
+ if( ( m_configuration_registers[ CONFIG_CR ] & CR_RETRY_COUNTER_ENABLE_BIT ) != 0 &&
+ m_configuration_registers[ CONFIG_RR ] == m_configuration_registers[ CONFIG_RC ] &&
+ ( m_configuration_registers[ CONFIG_CR ] & CR_UNAUTHORIZED_ACCESS_BITS ) == 0x80 )
{
- bcr = m_configuration_registers[ CONFIG_BCR1 ];
+ // No commands are allowed
+ verboselog( 1, "unauthorized access rejected\n" );
+ m_state = STATE_STOP;
+ m_sdar = 1;
+ m_byte = 0;
+ return;
}
- else
+
+ if( ( m_command & 0xe0 ) == COMMAND_CONFIGURATION )
{
- bcr = m_configuration_registers[ CONFIG_BCR2 ];
+ // Configuration commands can be used regardless of array control register bits
+ if( m_address == CONFIGURATION_RESET_WRITE_PASSWORD ||
+ m_address == CONFIGURATION_RESET_READ_PASSWORD ||
+ m_address == CONFIGURATION_MASS_PROGRAM ||
+ m_address == CONFIGURATION_MASS_ERASE )
+ {
+ verboselog( 1, "password not required\n" );
+ password_ok();
+ }
+ else
+ {
+ verboselog( 1, "send password\n" );
+ m_state = STATE_LOAD_PASSWORD;
+ m_byte = 0;
+ }
+
+ return;
+ }
+
+ if( ( m_configuration_registers[ CONFIG_CR ] & CR_RETRY_COUNTER_ENABLE_BIT ) != 0 &&
+ m_configuration_registers[ CONFIG_RR ] == m_configuration_registers[ CONFIG_RC ] &&
+ ( m_configuration_registers[ CONFIG_CR ] & CR_UNAUTHORIZED_ACCESS_BITS ) != 0x80 )
+ {
+ // Only configuration commands are allowed
+ verboselog( 1, "unauthorized access rejected\n" );
+ m_state = STATE_STOP;
+ m_sdar = 1;
+ m_byte = 0;
+ return;
}
+
+ int bcr = m_configuration_registers[ ( m_command & 1 ) ? CONFIG_BCR2 : CONFIG_BCR1 ];
if( ( m_address & 0x80 ) != 0 )
{
bcr >>= 4;
@@ -208,7 +288,8 @@ void x76f041_device::load_address()
/* todo: find out when this is really checked. */
verboselog( 1, "command not allowed\n" );
m_state = STATE_STOP;
- m_sdar = 0;
+ m_sdar = 1;
+ m_byte = 0;
}
else if( ( ( m_command & 0xe0 ) == COMMAND_WRITE && ( bcr & BCR_X ) == 0 ) ||
( ( m_command & 0xe0 ) == COMMAND_READ && ( bcr & BCR_Y ) == 0 ) )
@@ -272,7 +353,15 @@ WRITE_LINE_MEMBER( x76f041_device::write_scl )
case STATE_LOAD_PASSWORD:
case STATE_VERIFY_PASSWORD:
case STATE_WRITE_DATA:
+ case STATE_CONFIGURATION_WRITE_DATA:
case STATE_WRITE_CONFIGURATION_REGISTERS:
+ case STATE_PROGRAM_WRITE_PASSWORD:
+ case STATE_PROGRAM_READ_PASSWORD:
+ case STATE_PROGRAM_CONFIGURATION_PASSWORD:
+ case STATE_RESET_WRITE_PASSWORD:
+ case STATE_RESET_READ_PASSWORD:
+ case STATE_MASS_PROGRAM:
+ case STATE_MASS_ERASE:
if( m_scl == 0 && state != 0 )
{
if( m_bit < 8 )
@@ -311,6 +400,16 @@ WRITE_LINE_MEMBER( x76f041_device::write_scl )
if( m_byte == sizeof( m_write_buffer ) )
{
m_state = STATE_VERIFY_PASSWORD;
+
+ // Perform the password acceptance check before verify password because
+ // password verify ack is spammed and will quickly overflow the
+ // retry counter.
+ m_is_password_accepted = memcmp( password(), m_write_buffer, sizeof( m_write_buffer ) ) == 0;
+ if( !m_is_password_accepted )
+ {
+ if( m_configuration_registers[ CONFIG_CR ] & CR_RETRY_COUNTER_ENABLE_BIT )
+ m_configuration_registers[ CONFIG_RC ]++;
+ }
}
break;
@@ -321,7 +420,7 @@ WRITE_LINE_MEMBER( x76f041_device::write_scl )
if( m_shift == 0xc0 )
{
/* todo: this should take 10ms before it returns ok. */
- if( memcmp( password(), m_write_buffer, sizeof( m_write_buffer ) ) == 0 )
+ if( m_is_password_accepted )
{
password_ok();
}
@@ -338,6 +437,36 @@ WRITE_LINE_MEMBER( x76f041_device::write_scl )
if( m_byte == sizeof( m_write_buffer ) )
{
+ int bcr = m_configuration_registers[ ( m_command & 1 ) ? CONFIG_BCR2 : CONFIG_BCR1 ];
+ if( ( m_address & 0x80 ) != 0 )
+ {
+ bcr >>= 4;
+ }
+
+ if( ( bcr & ( BCR_Z | BCR_T ) ) == BCR_T )
+ {
+ // Bits in the data can only be set, not cleared, when in program only mode
+ bool is_unauthorized_write = false;
+
+ for( m_byte = 0; m_byte < sizeof( m_write_buffer ); m_byte++ )
+ {
+ int offset = data_offset();
+ if( m_write_buffer[ m_byte ] < m_data[ offset ] )
+ {
+ verboselog( 1, "tried to unset bits while in program only mode\n" );
+ is_unauthorized_write = true;
+ break;
+ }
+ }
+
+ if( is_unauthorized_write )
+ {
+ m_sdar = 1;
+ m_byte = 0;
+ break;
+ }
+ }
+
for( m_byte = 0; m_byte < sizeof( m_write_buffer ); m_byte++ )
{
int offset = data_offset();
@@ -350,6 +479,15 @@ WRITE_LINE_MEMBER( x76f041_device::write_scl )
}
break;
+
+ case STATE_CONFIGURATION_WRITE_DATA:
+ // Unlike normal writes, configuration writes aren't required to be exactly 8 bytes
+ // TODO: Store data in a temporary buffer until the proper end of the command before writing
+ verboselog( 2, "-> data: %02x\n", m_shift );
+ m_data[ data_offset() ] = m_shift;
+ m_byte++;
+ break;
+
case STATE_WRITE_CONFIGURATION_REGISTERS:
verboselog( 1, "-> configuration register[ %d ]: %02x\n", m_byte, m_shift );
/* todo: write after all bytes received? */
@@ -360,6 +498,90 @@ WRITE_LINE_MEMBER( x76f041_device::write_scl )
m_byte = 0;
}
break;
+
+ case STATE_PROGRAM_WRITE_PASSWORD:
+ verboselog( 1, "-> program write password[ %d ]: %02x\n", m_byte, m_shift );
+ m_password_temp[ m_byte++ ] = m_shift;
+
+ if( m_byte == sizeof( m_password_temp ) )
+ {
+ // Read in the password twice and if the two copies match then write it to the password field
+ if( memcmp( &m_password_temp[ 0 ], &m_password_temp[ 8 ], sizeof( m_write_password ) ) == 0 )
+ {
+ std::copy_n( std::begin( m_password_temp ), sizeof( m_write_password ), std::begin ( m_write_password ) );
+ }
+ else {
+ m_sdar = 1;
+ }
+
+ std::fill( std::begin( m_password_temp ), std::end( m_password_temp ), 0 );
+
+ m_byte = 0;
+ }
+ break;
+
+ case STATE_PROGRAM_READ_PASSWORD:
+ verboselog( 1, "-> program read password[ %d ]: %02x\n", m_byte, m_shift );
+ m_password_temp[ m_byte++ ] = m_shift;
+
+ if( m_byte == sizeof( m_password_temp ) )
+ {
+ if( memcmp( &m_password_temp[ 0 ], &m_password_temp[ 8 ], sizeof( m_read_password ) ) == 0 )
+ {
+ std::copy_n( std::begin( m_password_temp ), sizeof( m_read_password ), std::begin ( m_read_password ) );
+ }
+ else {
+ m_sdar = 1;
+ }
+
+ std::fill( std::begin( m_password_temp ), std::end( m_password_temp ), 0 );
+
+ m_byte = 0;
+ }
+ break;
+
+ case STATE_PROGRAM_CONFIGURATION_PASSWORD:
+ verboselog( 1, "-> program configuration password[ %d ]: %02x\n", m_byte, m_shift );
+ m_password_temp[ m_byte++ ] = m_shift;
+
+ if( m_byte == sizeof( m_password_temp ) )
+ {
+ if( memcmp( &m_password_temp[ 0 ], &m_password_temp[ 8 ], sizeof( m_configuration_password ) ) == 0 )
+ {
+ std::copy_n( std::begin( m_password_temp ), sizeof( m_configuration_password ), std::begin ( m_configuration_password ) );
+ }
+ else {
+ m_sdar = 1;
+ }
+
+ std::fill( std::begin( m_password_temp ), std::end( m_password_temp ), 0 );
+
+ m_byte = 0;
+ }
+ break;
+
+ case STATE_RESET_WRITE_PASSWORD:
+ verboselog( 1, "-> reset write password\n" );
+ std::fill( std::begin( m_write_password ), std::end( m_write_password ), 0 );
+ break;
+
+ case STATE_RESET_READ_PASSWORD:
+ verboselog( 1, "-> reset read password\n" );
+ std::fill( std::begin( m_read_password ), std::end( m_read_password ), 0 );
+ break;
+
+ case STATE_MASS_PROGRAM:
+ case STATE_MASS_ERASE:
+ {
+ const uint8_t fill = m_state == STATE_MASS_ERASE ? 0xff : 0;
+ verboselog( 1, "-> mass erase %02x\n", fill );
+ std::fill( std::begin( m_data ), std::end( m_data ), fill );
+ std::fill( std::begin( m_configuration_password ), std::end( m_configuration_password ), fill );
+ std::fill( std::begin( m_configuration_registers ), std::end( m_configuration_registers ), fill );
+ std::fill( std::begin( m_write_password ), std::end( m_write_password ), fill );
+ std::fill( std::begin( m_read_password ), std::end( m_read_password ), fill );
+ break;
+ }
}
m_bit = 0;
diff --git a/src/devices/machine/x76f041.h b/src/devices/machine/x76f041.h
index af487f75a1d..44f6baf52db 100644
--- a/src/devices/machine/x76f041.h
+++ b/src/devices/machine/x76f041.h
@@ -29,6 +29,7 @@ public:
protected:
// device-level overrides
virtual void device_start() override;
+ virtual void device_reset() override;
// device_nvram_interface overrides
virtual void nvram_default() override;
@@ -44,11 +45,24 @@ private:
enum configuration_register_t
{
- CONFIG_BCR1 = 0,
- CONFIG_BCR2 = 1,
- CONFIG_CR = 2,
- CONFIG_RR = 3,
- CONFIG_RC = 4
+ // If set to 1, retry counter is incremented when an invalid password is provided
+ CR_RETRY_COUNTER_ENABLE_BIT = 0x04,
+
+ // If set to 1, retry counter will be reset when a correct password is provided
+ CR_RETRY_COUNTER_RESET_BIT = 0x08,
+
+ // 10 = If retry counter is enabled, deny all commands when retry register equals retry counter
+ // 00, 01, 11 = If retry counter is enabled, allow only configuration commands when retry register equals retry counter
+ CR_UNAUTHORIZED_ACCESS_BITS = 0xc0,
+ };
+
+ enum configuration_registers_t
+ {
+ CONFIG_BCR1 = 0, // Array Control Register
+ CONFIG_BCR2 = 1, // Array Control Register 2
+ CONFIG_CR = 2, // Configuration Register
+ CONFIG_RR = 3, // Retry Register
+ CONFIG_RC = 4 // Reset Counter
};
enum bcr_t
@@ -91,8 +105,18 @@ private:
STATE_VERIFY_PASSWORD,
STATE_READ_DATA,
STATE_WRITE_DATA,
+ STATE_CONFIGURATION_WRITE_DATA,
STATE_READ_CONFIGURATION_REGISTERS,
- STATE_WRITE_CONFIGURATION_REGISTERS
+ STATE_WRITE_CONFIGURATION_REGISTERS,
+
+ STATE_PROGRAM_WRITE_PASSWORD,
+ STATE_PROGRAM_READ_PASSWORD,
+ STATE_PROGRAM_CONFIGURATION_PASSWORD,
+
+ STATE_RESET_WRITE_PASSWORD,
+ STATE_RESET_READ_PASSWORD,
+ STATE_MASS_PROGRAM,
+ STATE_MASS_ERASE
};
optional_memory_region m_region;
@@ -109,6 +133,7 @@ private:
int m_byte;
int m_command;
int m_address;
+ bool m_is_password_accepted;
uint8_t m_write_buffer[ 8 ];
uint8_t m_response_to_reset[ 4 ];
uint8_t m_write_password[ 8 ];
@@ -116,6 +141,7 @@ private:
uint8_t m_configuration_password[ 8 ];
uint8_t m_configuration_registers[ 8 ];
uint8_t m_data[ 512 ];
+ uint8_t m_password_temp[ 16 ];
};
diff --git a/src/devices/machine/x76f100.cpp b/src/devices/machine/x76f100.cpp
index 4c74bb5b7ad..b03829265ac 100644
--- a/src/devices/machine/x76f100.cpp
+++ b/src/devices/machine/x76f100.cpp
@@ -45,13 +45,15 @@ x76f100_device::x76f100_device( const machine_config &mconfig, const char *tag,
m_shift( 0 ),
m_bit( 0 ),
m_byte( 0 ),
- m_command( 0 )
+ m_command( 0 ),
+ m_password_retry_counter( 0 ),
+ m_is_password_accepted ( false )
{
}
void x76f100_device::device_start()
{
- memset( m_write_buffer, 0, sizeof( m_write_buffer ) );
+ std::fill( std::begin( m_write_buffer ), std::end( m_write_buffer ), 0 );
save_item( NAME( m_cs ) );
save_item( NAME( m_rst ) );
@@ -63,6 +65,8 @@ void x76f100_device::device_start()
save_item( NAME( m_bit ) );
save_item( NAME( m_byte ) );
save_item( NAME( m_command ) );
+ save_item( NAME( m_password_retry_counter ) );
+ save_item( NAME( m_is_password_accepted ) );
save_item( NAME( m_write_buffer ) );
save_item( NAME( m_response_to_reset ) );
save_item( NAME( m_write_password ) );
@@ -70,6 +74,24 @@ void x76f100_device::device_start()
save_item( NAME( m_data ) );
}
+void x76f100_device::device_reset()
+{
+ std::fill( std::begin( m_write_buffer ), std::end( m_write_buffer ), 0 );
+
+ m_cs = 0;
+ m_rst = 0;
+ m_scl = 0;
+ m_sdaw = 0;
+ m_sdar = 0;
+ m_state = STATE_STOP;
+ m_shift = 0;
+ m_bit = 0;
+ m_byte = 0;
+ m_command = 0;
+ m_password_retry_counter = 0;
+ m_is_password_accepted = false;
+}
+
WRITE_LINE_MEMBER( x76f100_device::write_cs )
{
if( m_cs != state )
@@ -124,11 +146,13 @@ uint8_t *x76f100_device::password()
void x76f100_device::password_ok()
{
- if( ( m_command & 0xe1 ) == COMMAND_READ )
+ m_password_retry_counter = 0;
+
+ if( ( m_command & 0x81 ) == COMMAND_READ )
{
m_state = STATE_READ_DATA;
}
- else if( ( m_command & 0xe1 ) == COMMAND_WRITE )
+ else if( ( m_command & 0x81 ) == COMMAND_WRITE )
{
m_state = STATE_WRITE_DATA;
}
@@ -141,8 +165,15 @@ void x76f100_device::password_ok()
int x76f100_device::data_offset()
{
int block_offset = ( m_command >> 1 ) & 0x0f;
+ int offset = ( block_offset * sizeof( m_write_buffer ) ) + m_byte;
+
+ // Technically there are 4 bits assigned to sector values but since the data array is only 112 bytes,
+ // it will try reading out of bounds when the sector is 14 (= starts at 112) or 15 (= starts at 120).
+ // TODO: Verify what happens on real hardware when reading/writing sectors 14 and 15
+ if( offset >= sizeof ( m_data ) )
+ return -1;
- return ( block_offset * sizeof( m_write_buffer ) ) + m_byte;
+ return offset;
}
WRITE_LINE_MEMBER( x76f100_device::write_scl )
@@ -223,6 +254,25 @@ WRITE_LINE_MEMBER( x76f100_device::write_scl )
if( m_byte == sizeof( m_write_buffer ) )
{
m_state = STATE_VERIFY_PASSWORD;
+
+ // Perform the password acceptance check before verify password because
+ // password verify ack is spammed and will quickly overflow the
+ // retry counter. This becomes an issue with System 573 games that use the
+ // X76F100 as an install cartridge. The boot process first tries to use the
+ // game cartridge password and if not accepted will try the install cartridge
+ // password and then enter installation mode if accepted.
+ m_is_password_accepted = memcmp( password(), m_write_buffer, sizeof( m_write_buffer ) ) == 0;
+ if( !m_is_password_accepted )
+ {
+ m_password_retry_counter++;
+ if( m_password_retry_counter >= 8 )
+ {
+ std::fill( std::begin( m_read_password ), std::end( m_read_password ), 0 );
+ std::fill( std::begin( m_write_password ), std::end( m_write_password ), 0 );
+ std::fill( std::begin( m_data ), std::end( m_data ), 0 );
+ m_password_retry_counter = 0;
+ }
+ }
}
break;
@@ -233,7 +283,7 @@ WRITE_LINE_MEMBER( x76f100_device::write_scl )
if( m_shift == COMMAND_ACK_PASSWORD )
{
/* todo: this should take 10ms before it returns ok. */
- if( memcmp( password(), m_write_buffer, sizeof( m_write_buffer ) ) == 0 )
+ if( m_is_password_accepted )
{
password_ok();
}
@@ -250,11 +300,31 @@ WRITE_LINE_MEMBER( x76f100_device::write_scl )
if( m_byte == sizeof( m_write_buffer ) )
{
- for( m_byte = 0; m_byte < sizeof( m_write_buffer ); m_byte++ )
+ if( m_command == COMMAND_CHANGE_WRITE_PASSWORD )
+ {
+ std::copy( std::begin( m_write_buffer ), std::end( m_write_buffer ), std::begin( m_write_password ) );
+ }
+ else if( m_command == COMMAND_CHANGE_READ_PASSWORD )
{
- int offset = data_offset();
- verboselog( 1, "-> data[ %03x ]: %02x\n", offset, m_write_buffer[ m_byte ] );
- m_data[ offset ] = m_write_buffer[ m_byte ];
+ std::copy( std::begin( m_write_buffer ), std::end( m_write_buffer ), std::begin( m_read_password ) );
+ }
+ else
+ {
+ for( m_byte = 0; m_byte < sizeof( m_write_buffer ); m_byte++ )
+ {
+ int offset = data_offset();
+
+ if( offset != -1 )
+ {
+ verboselog( 1, "-> data[ %03x ]: %02x\n", offset, m_write_buffer[ m_byte ] );
+ m_data[ offset ] = m_write_buffer[ m_byte ];
+ }
+ else
+ {
+ verboselog( 1, "-> attempted to write %02x out of bounds\n", m_write_buffer[m_byte] );
+ break;
+ }
+ }
}
m_byte = 0;
@@ -283,8 +353,18 @@ WRITE_LINE_MEMBER( x76f100_device::write_scl )
{
case STATE_READ_DATA:
offset = data_offset();
- m_shift = m_data[ offset ];
- verboselog( 1, "<- data[ %02x ]: %02x\n", offset, m_shift );
+
+ if( offset != -1 )
+ {
+ m_shift = m_data[ offset ];
+ verboselog( 1, "<- data[ %02x ]: %02x\n", offset, m_shift );
+ }
+ else
+ {
+ m_shift = 0;
+ verboselog( 1, "<- attempted to read out of bounds\n" );
+ }
+
break;
}
}
diff --git a/src/devices/machine/x76f100.h b/src/devices/machine/x76f100.h
index acec66e9c62..63f51815ec2 100644
--- a/src/devices/machine/x76f100.h
+++ b/src/devices/machine/x76f100.h
@@ -28,6 +28,7 @@ public:
protected:
// device-level overrides
virtual void device_start() override;
+ virtual void device_reset() override;
// device_nvram_interface overrides
virtual void nvram_default() override;
@@ -74,6 +75,8 @@ private:
int m_bit;
int m_byte;
int m_command;
+ int m_password_retry_counter;
+ bool m_is_password_accepted;
uint8_t m_write_buffer[ 8 ];
uint8_t m_response_to_reset[ 4 ];
uint8_t m_write_password[ 8 ];
diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp
index ab6c0fddda3..f86a3ef43ef 100644
--- a/src/mame/drivers/ksys573.cpp
+++ b/src/mame/drivers/ksys573.cpp
@@ -356,6 +356,7 @@ G: gun mania only, drives air soft gun (this game uses real BB bullet)
#include "machine/linflash.h"
#include "machine/k573cass.h"
#include "machine/k573dio.h"
+#include "machine/k573mcal.h"
#include "machine/k573mcr.h"
#include "machine/k573msu.h"
#include "machine/k573npu.h"
@@ -2412,6 +2413,10 @@ void ksys573_state::konami573(machine_config &config)
adc.set_input_callback(FUNC(ksys573_state::analogue_inputs_callback));
SYS573_JVS_HOST(config, m_sys573_jvs_host, 0);
+
+ // Uncomment for generating new security cartridges
+ // Warning: Does not play well with memory card reader (JVS chaining issue?)
+ //KONAMI_573_MASTER_CALENDAR(config, "k573mcal", 0, m_sys573_jvs_host);
}
// Variants with additional digital sound board
@@ -3533,7 +3538,7 @@ ROM_START( animechmp )
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca07ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(e230ceb6) SHA1(af0f0e74af62e813ba5b40e6767856d2866c5324) )
+ ROM_LOAD( "gca07ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(845e2907) SHA1(bf278d3eb35eaa233ccedf54bfee313b6ae772e0) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gca07ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -3543,7 +3548,7 @@ ROM_START( bassangl )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge765ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ee1b32a7) SHA1(c0f6b14b054f5a95ce474e794a3e0ca78faac681) )
+ ROM_LOAD( "ge765ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(98141cc7) SHA1(79ed944c556671a00af995e054b9aeafee245015) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "765jaa02", 0, SHA1(dfcf62581e0d0e994945cc2c37ef86827d511628) )
@@ -3553,7 +3558,7 @@ ROM_START( bassang2 )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc865ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(095cbfb5) SHA1(529ce0a7b0986cf7e64c37f466d6c2dac95cea7f) )
+ ROM_LOAD( "gc865ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(0a25aec3) SHA1(7b3c4da67f862d8d17e84cf5b9fbb3f7554cc409) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "865jaa02", 0, BAD_DUMP SHA1(b98d9aa54f13aa73bea580d6494cb6a7f3217be3) )
@@ -3577,7 +3582,7 @@ ROM_START( darkhleg )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx706ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(72b42574) SHA1(79dc959f0ce95ccb9ac0dbf0a72aec973e91bc56) )
+ ROM_LOAD( "gx706ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(04bb0b14) SHA1(6cdedee6b1e169e0be6e065f93263abd3285a21a) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "706jaa02", 0, SHA1(10101952fad80b7a10b1299158081bf86ce8cbe6) )
@@ -3586,8 +3591,8 @@ ROM_END
ROM_START( ddrextrm )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc36ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(c1601287) SHA1(929691a78f7bb6dd830f832f301116df0da1619b) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc36ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(197845c2) SHA1(c6c1c192f69331232a93ec6c690257e57a244e25) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcc36ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -3600,7 +3605,7 @@ ROM_START( ddru )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn845ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(c9e7fced) SHA1(aac4dde100091bc64d397f53484a0ffbf68b8101) )
+ ROM_LOAD( "gn845ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(a248d576) SHA1(081bcc86c72314159c6560681b4d03cef9e231a7) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "845uaa02", 0, BAD_DUMP SHA1(d3f9290d4dadb5e9b82ebe77abf7b99d1a89f716) )
@@ -3610,7 +3615,7 @@ ROM_START( ddrj )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc845jb.u1", 0x000000, 0x000224, BAD_DUMP CRC(a16f42b8) SHA1(da4f1eb3eb2b28cb3a0bc74bb9b9945970f56ac2) )
+ ROM_LOAD( "gc845jb.u1", 0x000000, 0x000224, BAD_DUMP CRC(cac06b23) SHA1(6df13364d07308c19d4d4c3c92730637989619f1) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "845jba02", 0, SHA1(e4be989f6a655857af8e7336c9a7acf82e51f123) )
@@ -3680,7 +3685,7 @@ ROM_START( ddra )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn845aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(327c4851) SHA1(f0939224af706fd103a67aae9c96518c1db90ac9) )
+ ROM_LOAD( "gn845aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(59d361ca) SHA1(7014768c660e591f63622442c842f442c0d8e0ea) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "845aaa02", 0, SHA1(9b786de9b1085009c088de0d40425976c1f8df7b) )
@@ -3690,7 +3695,7 @@ ROM_START( ddrkara )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq921jbb.u1", 0x000000, 0x000224, BAD_DUMP CRC(4c91aecf) SHA1(4b8318523d6691b2124afceafba78e6bac8ba75f) )
+ ROM_LOAD( "gq921jbb.u1", 0x000000, 0x000224, BAD_DUMP CRC(56fe552c) SHA1(51ccf6a64b478fd44a8e2d64c7a0f34138b680d2) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq921jbb.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3703,7 +3708,7 @@ ROM_START( ddr2m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn895jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(363f427e) SHA1(adec886a07b9bd91f142f286b04fc6582205f037) )
+ ROM_LOAD( "gn895jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(5d906be5) SHA1(4ea9c5506aaaf1726f2a39d0a37a8df35a6aad47) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "895jaa02", 0, BAD_DUMP SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) )
@@ -3713,7 +3718,7 @@ ROM_START( ddr2mc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn896ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) )
+ ROM_LOAD( "gn896ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(5d906be5) SHA1(4ea9c5506aaaf1726f2a39d0a37a8df35a6aad47) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "896jaa01", 0, BAD_DUMP SHA1(f802a0e2ba0147eb71c54d92af409c3010a5715f) )
@@ -3726,7 +3731,7 @@ ROM_START( ddr2mc2 )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge984ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) )
+ ROM_LOAD( "ge984ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(a066ad5e) SHA1(1783c62d7396e4e7f8d723b7bc07e45285dc122d) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "ge984a01,ddr", 0, SHA1(badd15656f2316f81b0a45026b5ef10287d1480b) )
@@ -3739,7 +3744,7 @@ ROM_START( ddr2ml )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge885jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) )
+ ROM_LOAD( "ge885jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(a066ad5e) SHA1(1783c62d7396e4e7f8d723b7bc07e45285dc122d) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "885jab01", 0, SHA1(c2bbb9e2e6f34e07f57e7076726af81df39f55c9) )
@@ -3752,7 +3757,7 @@ ROM_START( ddr2mla )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge885jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) )
+ ROM_LOAD( "ge885jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(a066ad5e) SHA1(1783c62d7396e4e7f8d723b7bc07e45285dc122d) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "885jaa02", 0, SHA1(f02bb09f41533c6ec496a662d815e85b304fcc72) )
@@ -3762,10 +3767,10 @@ ROM_START( ddr3ma )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge887aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(4ce86d32) SHA1(94cdb9873a7f7503acc3b763e9b49ec6af53533f) )
+ ROM_LOAD( "ge887aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(68e01a7b) SHA1(a0094ae0f78ef4246957f998b1493973b3bb67ec) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn887aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(bb14f9bd) SHA1(9d0adf5a32d8bbcaaea2f701f5c7a5d51ee0b8bf) )
+ ROM_LOAD( "gn887aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(0c095e3d) SHA1(0a5b3d4ba917f55b29ad80d989c20675c14b3cad) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge887aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3781,10 +3786,10 @@ ROM_START( ddr3mj )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(3a377cec) SHA1(5bf3107a89547bd7697d9f0ab8f67240e101a559) )
+ ROM_LOAD( "ge887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(cc8838ee) SHA1(b4db610103c0c5ba473f725b3b8b7f987ac3eaec) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(2f633432) SHA1(bce44f20a5a7318af6aea4fdfa8af64ddb76047c) )
+ ROM_LOAD( "gn887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(987e93b2) SHA1(9892b479fdc2c54b2e23783c69e270aa60596673) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge887ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3800,10 +3805,10 @@ ROM_START( ddr3mk )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge887kb.u1", 0x000000, 0x000084, BAD_DUMP CRC(4ce86d32) SHA1(94cdb9873a7f7503acc3b763e9b49ec6af53533f) )
+ ROM_LOAD( "ge887kb.u1", 0x000000, 0x000084, BAD_DUMP CRC(68e01a7b) SHA1(a0094ae0f78ef4246957f998b1493973b3bb67ec) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn887kb.u1", 0x000000, 0x000084, BAD_DUMP CRC(bb14f9bd) SHA1(9d0adf5a32d8bbcaaea2f701f5c7a5d51ee0b8bf) )
+ ROM_LOAD( "gn887kb.u1", 0x000000, 0x000084, BAD_DUMP CRC(0c095e3d) SHA1(0a5b3d4ba917f55b29ad80d989c20675c14b3cad) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge887kb.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3819,10 +3824,10 @@ ROM_START( ddr3mka )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge887ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(4ce86d32) SHA1(94cdb9873a7f7503acc3b763e9b49ec6af53533f) )
+ ROM_LOAD( "ge887ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(68e01a7b) SHA1(a0094ae0f78ef4246957f998b1493973b3bb67ec) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn887ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(bb14f9bd) SHA1(9d0adf5a32d8bbcaaea2f701f5c7a5d51ee0b8bf) )
+ ROM_LOAD( "gn887ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(0c095e3d) SHA1(0a5b3d4ba917f55b29ad80d989c20675c14b3cad) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge887ka.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3838,10 +3843,10 @@ ROM_START( ddr3mp )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gea22ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ef370ff7) SHA1(cb7a043f8bfa535e54ae9af728031d1018ed0734) )
+ ROM_LOAD( "gea22ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(adfc9021) SHA1(bb161b9c1bd358cb72e61197a9fafd58c44adb7c) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca22ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(6883c82c) SHA1(6fef1dc7150066eee427db685b6c5fb350b7768d) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca22ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(02f8ba64) SHA1(3d1b660ff7c98de7f6386fc4d3300dc4205b5a3a) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gea22ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3857,10 +3862,10 @@ ROM_START( ddr4m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gea33aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(7bd2a24f) SHA1(62c73a54c4ed7697cf81ddbf3d13d4b0ca827be5) )
+ ROM_LOAD( "gea33aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(a9bf9a0e) SHA1(7210ff9606746bc94bfba28e3522ee79222da32c) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca33aa.u1", 0x000000, 0x001014, BAD_DUMP CRC(f6feb2bd) SHA1(dfd5bd532338849289e2e4c155c0ca86e79b9ae5) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca33aa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(284effe1) SHA1(bdaeef1b47b643d9ad0ebac82651e60752565fcb) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gea33aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3876,10 +3881,10 @@ ROM_START( ddr4mj )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "a33jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(10f1e9b8) SHA1(985bd26638964beebba5de4c7cda772b402d2e59) )
+ ROM_LOAD( "a33jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(adfc9021) SHA1(bb161b9c1bd358cb72e61197a9fafd58c44adb7c) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca33ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(e5230867) SHA1(44aea9ccc90d81e7f41e5e9a62b28fcbdd75363b) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca33ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(3a291fea) SHA1(15e777d2137313e925d922e7289dd46c00838211) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "a33jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3895,10 +3900,10 @@ ROM_START( ddr4ms )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gea33ab.u1", 0x000000, 0x000224, BAD_DUMP CRC(32fb3d13) SHA1(3ca6c77438f96b13d2c05f13a10fcff89a1403a2) )
+ ROM_LOAD( "gea33ab.u1", 0x000000, 0x000224, BAD_DUMP CRC(4ca14f40) SHA1(90cdcaea12f1305c1068496df80ef1069625e398) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca33ab.u1", 0x000000, 0x001014, BAD_DUMP CRC(312ac13f) SHA1(05d733edc03cfc5ea03db6c683f59ed6ff860b5a) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca33ab.u1", 0x000000, 0x00008c, BAD_DUMP CRC(15d7ccf0) SHA1(2bda973c83cf2b042753492201a51db2e415338e) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gea33ab.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3914,10 +3919,10 @@ ROM_START( ddr4msj )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "a33jba.u1", 0x000000, 0x000224, BAD_DUMP CRC(babf6fdb) SHA1(a2ef6b855d42072f0d3c72c8de9aff1f867de3f7) )
+ ROM_LOAD( "a33jba.u1", 0x000000, 0x000224, BAD_DUMP CRC(b458d46a) SHA1(791b938e0a65131238e66fe86efa5f83d9225332) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca33jb.u1", 0x000000, 0x001014, BAD_DUMP CRC(00e4b531) SHA1(f421fc33642c5a3cd89fb14dc8cd601bdddd1f55) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca33jb.u1", 0x000000, 0x00008c, BAD_DUMP CRC(07b02cfb) SHA1(291d654d9dec8180f48a9da1cb71f4a4f7e86c26) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "a33jba.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3933,10 +3938,10 @@ ROM_START( ddr4mp )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gea34ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(10f1e9b8) SHA1(985bd26638964beebba5de4c7cda772b402d2e59) )
+ ROM_LOAD( "gea34ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(adfc9021) SHA1(bb161b9c1bd358cb72e61197a9fafd58c44adb7c) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca34ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(e9b6ce56) SHA1(f040fba2b2b446baa840026dcd10f9785f8cc0a3) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca34ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(e7f5f795) SHA1(cf942ed741d9605aaa1d99bfa848cc13f3f87b1b) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gea34ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3955,10 +3960,10 @@ ROM_START( ddr4mps )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gea34jb.u1", 0x000000, 0x000224, BAD_DUMP CRC(babf6fdb) SHA1(a2ef6b855d42072f0d3c72c8de9aff1f867de3f7) )
+ ROM_LOAD( "gea34jb.u1", 0x000000, 0x000224, BAD_DUMP CRC(b458d46a) SHA1(791b938e0a65131238e66fe86efa5f83d9225332) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca34jb.u1", 0x000000, 0x001014, BAD_DUMP CRC(0c717300) SHA1(00d21f39fe90494ffec2f8799767cc46a9cd2b00) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca34jb.u1", 0x000000, 0x00008c, BAD_DUMP CRC(da6cc484) SHA1(1fe1aa95bbee1de7fd4930e6883f99768486da2a) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gea34jb.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -3976,8 +3981,8 @@ ROM_END
ROM_START( ddr5m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca27ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(ec526036) SHA1(f47d94d19268fdfa3ae9d42db9f2e2f9be318f2b) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca27ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(0044c64d) SHA1(ac25b51125675ccca992d60b12396b3b370c6368) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gca27ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -3990,7 +3995,7 @@ ROM_START( ddrbocd )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn895jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(363f427e) SHA1(adec886a07b9bd91f142f286b04fc6582205f037) )
+ ROM_LOAD( "gn895jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(5d906be5) SHA1(4ea9c5506aaaf1726f2a39d0a37a8df35a6aad47) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "892jaa01", 0, BAD_DUMP SHA1(46ace0feef48a2a6643c3cb4ac9164ba0beeea94) )
@@ -4003,10 +4008,10 @@ ROM_START( ddrs2k )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge905aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(36d18e2f) SHA1(e976047dfbee62de9ad9e5de8e7629a24c29d581) )
+ ROM_LOAD( "ge905aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(b7a75390) SHA1(8ad65f4d9fa949296b5b21e7a12be0bde8ffec38) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc905aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(21073a3e) SHA1(afa12404ceb462b9016a41c40775da87aa09cfeb) )
+ ROM_LOAD( "gc905aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(961a9dbe) SHA1(c112af1da26eee8da237655ed28d9bae2bc5728a) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge905aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4021,8 +4026,8 @@ ROM_END
ROM_START( ddrmax )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb19ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(2255626a) SHA1(cb70c4b551265ffc6cc41f7bd2678696e8067060) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb19ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(680a3288) SHA1(b413c6c43c4a18c5c713049a9c2fbde2d98e36bc) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb19ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4034,8 +4039,8 @@ ROM_END
ROM_START( ddrmax2 )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb20ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(fb7e0f58) SHA1(e6da23257a2a2ba7c69e817a91a0a8864f009386) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb20ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(169be875) SHA1(de40794ebf9190fe3676326d21150fd6aa72dc25) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb20ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4048,10 +4053,10 @@ ROM_START( ddrs2kj )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge905ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(a077b0a1) SHA1(8f247b38c933a104a325ebf1f1691ef260480e1a) )
+ ROM_LOAD( "ge905ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(f3b65e55) SHA1(24656affd3fe3a0a594e2cd0aeb91eb6ceb996b8) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc905ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(b7a104b0) SHA1(0f6901e41640f729f8a084a33148a9b900475594) )
+ ROM_LOAD( "gc905ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(00bca330) SHA1(c83bd38846698cdfba9d7d40c51a59720a75bfee) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge905ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4067,7 +4072,7 @@ ROM_START( ddrsbm )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq894ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(cc3a47de) SHA1(f6e2e101870370b1e295a4a9ed546aa2d8bc2010) )
+ ROM_LOAD( "gq894ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(10b85f6b) SHA1(c15ec333c8bb0c33edb8d31bf4f309aa0db9ff55) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq894ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4079,8 +4084,8 @@ ROM_END
ROM_START( ddrusa )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gka44ua.u1", 0x000000, 0x001014, BAD_DUMP CRC(2ef7c4f1) SHA1(9004d27179ece86883d01b3e6bbfeebc1b478d57) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gka44ua.u1", 0x000000, 0x00008c, BAD_DUMP CRC(ca12febe) SHA1(3bd01332e5b20420ec195ab125671cb212a8f5f2) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gka44ua.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4093,7 +4098,7 @@ ROM_START( drmn )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq881ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(7dca0b3f) SHA1(db6d5c527e2a99133b516e01433024d3173848c6) )
+ ROM_LOAD( "gq881ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ff3a2868) SHA1(3949fe928cc435ceca8bb2fe8b5a558d91542dfd) )
ROM_REGION( 0x200000, "29f016a.31h", 0 ) /* onboard flash */
ROM_LOAD( "gq881ja.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) )
@@ -4111,7 +4116,7 @@ ROM_START( drmna )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq881ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(7dca0b3f) SHA1(db6d5c527e2a99133b516e01433024d3173848c6) )
+ ROM_LOAD( "gq881ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ff3a2868) SHA1(3949fe928cc435ceca8bb2fe8b5a558d91542dfd) )
ROM_REGION( 0x200000, "29f016a.31h", 0 ) /* onboard flash */
ROM_LOAD( "gq881ja.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) )
@@ -4133,10 +4138,10 @@ ROM_START( drmn2m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge912ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(1246fe5b) SHA1(b58d4f4c95e13abf639d645223565544bd79a58a) )
+ ROM_LOAD( "ge912ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(508d618d) SHA1(d30ba54ccc86072c10962632603028206ff08d4b) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn912ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(34deea99) SHA1(f179e22eaf30453bb94177ed9c25d7996f020c99) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gn912ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(952f4681) SHA1(667fc5ef07517801496444a91b6f1d88c8d0b9d2) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge912ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4152,10 +4157,10 @@ ROM_START( drmn2mpu )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge912ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(1246fe5b) SHA1(b58d4f4c95e13abf639d645223565544bd79a58a) )
+ ROM_LOAD( "ge912ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(508d618d) SHA1(d30ba54ccc86072c10962632603028206ff08d4b) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn912ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(34deea99) SHA1(f179e22eaf30453bb94177ed9c25d7996f020c99) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gn912ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(952f4681) SHA1(667fc5ef07517801496444a91b6f1d88c8d0b9d2) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge912ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4174,10 +4179,10 @@ ROM_START( drmn3m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "a23jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(90e544fa) SHA1(1feb617c36bad41aa720a6e5d3ec9e5cb2030567) )
+ ROM_LOAD( "a23jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(508d618d) SHA1(d30ba54ccc86072c10962632603028206ff08d4b) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca23ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(5af1b5da) SHA1(cf862ef9ab60e8da89af96266943137827e4a261) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca23ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(e78225db) SHA1(0870cfb01cd3f940812b842b315bc6329e956d88) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "a23jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4192,8 +4197,8 @@ ROM_END
ROM_START( drmn4m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gea25jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(356bbbf4) SHA1(a20a8fcaed2dce50451346b1683739c96067feb1) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gea25jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(8ee64348) SHA1(9c02096c94da68d096efc225f19e420cb9445820) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gea25jaa.31m", 0x000000, 0x200000, CRC(a0dd0ef4) SHA1(be4c1d3f2eb3c484b515be12b692c30cc780c36c) )
@@ -4213,8 +4218,8 @@ ROM_END
ROM_START( drmn5m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb05jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(6b629d68) SHA1(d01ef0677cd72c05f5f354fc6c4d9022b3506c1e) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb05jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(1f0e9f51) SHA1(64f9ae6c2d9a6264b09c1b66ae2acac9db9ada32) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb05jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4229,8 +4234,8 @@ ROM_END
ROM_START( drmn6m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb16jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(f6933041) SHA1(1839bb99d2db9413c58a2ed95e9039d2c7dd62ba) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb16jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(a8ab305d) SHA1(7815ec63fa419174d689f237bcb3ec2372fb6baa) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcb16jaa.31m", 0x000000, 0x200000, CRC(19de3e53) SHA1(bbb7a247bdd617a124330a946c2e8dd565b2a09c) )
@@ -4250,8 +4255,8 @@ ROM_END
ROM_START( drmn7m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc07jba.u1", 0x000000, 0x001014, BAD_DUMP CRC(8d9bcf10) SHA1(3d486df924ba41669675d62982396aebf8d12052) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc07jba.u1", 0x000000, 0x00008c, BAD_DUMP CRC(9b85fd8a) SHA1(34fc42389fc5eb5d09a0a7b6b4c4b4597b1f6849) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcc07jba.31m", 0x000000, 0x200000, CRC(7120d1ce) SHA1(4df9828150120762b99c5b212bc7a91b0d525bce) )
@@ -4271,8 +4276,8 @@ ROM_END
ROM_START( drmn7ma )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc07jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(b675b39b) SHA1(9639db913821641cee619d7cc520de5d0c3ae7fa) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc07jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(a5477405) SHA1(f532bba5f089a263bbfd07bb66f028663c659a84) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcc07jaa.31m", 0x000000, 0x200000, CRC(1e1cbfe3) SHA1(6c942820f915ea0e01f0e736d70780ad8408aa69) )
@@ -4292,8 +4297,8 @@ ROM_END
ROM_START( drmn8m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc38jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(aaa03630) SHA1(4976b0c2e1b4458840a165bd889861d62289ad89) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc38jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(c2895619) SHA1(49dcebd44435760dde02638b0e0a89b743064e69) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcc38jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4308,8 +4313,8 @@ ROM_END
ROM_START( drmn9m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd09jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(a1201529) SHA1(4a82f2ee9b049a16c00b7dcd905c43c1a06d60ee) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd09jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(f73f2f6b) SHA1(30abe964fcef3901b2098e32946568f4a7c617d7) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd09jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4324,8 +4329,8 @@ ROM_END
ROM_START( drmn10m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd40jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(ef0983a7) SHA1(06127b9fd786eca64eea50c40f7f73717b631e59) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd40jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(d98d4aa5) SHA1(7142c1e6291fdaac726477662487c7600c048e0a) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd40jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4340,8 +4345,8 @@ ROM_END
ROM_START( dmx )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge874ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(c5536373) SHA1(1492221f7dd9485f7745ecb0a982a88c8e768e53) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "ge874ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(f27cfd58) SHA1(4d8a61bdf2c5f3bebcb37cb2bac1e3de90a9a30e) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "ge874ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4353,8 +4358,8 @@ ROM_END
ROM_START( dmx2m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca39ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(ecc75eb7) SHA1(af66ced28ba5e79ae32ae0ef12d2ebe4207f3822) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca39ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(7f1e7a66) SHA1(65afe81544e096769c4b7ecf9ffde760f69dc331) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gca39ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4366,8 +4371,8 @@ ROM_END
ROM_START( dmx2majp )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca38ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(99a746b8) SHA1(333236e59a707ecaf840a66f9b947ceade2cf2c9) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca38ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(34d8db6f) SHA1(7936b7e1e464ce1738f38f9a0960507404735e86) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gca38ja.31m", 0x000000, 0x200000, CRC(a0f54ab5) SHA1(a5ae67d7619393779c79a2e227cac0675eeef538) )
@@ -4384,8 +4389,8 @@ ROM_END
ROM_START( dncfrks )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gk874ka.u1", 0x000000, 0x001014, BAD_DUMP CRC(7a6f4672) SHA1(2e009e57760e92f48070a69cff5597c37a4783a2) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gk874ka.u1", 0x000000, 0x00008c, BAD_DUMP CRC(43244ec6) SHA1(07040d4bc491274d39d6c5d39e346c0905892cb4) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gk874ka.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4398,7 +4403,7 @@ ROM_START( dsem )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge936ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(0f5b7ae3) SHA1(646dd49da1216cc2d3d6920bc9b3447d55ebfbf0) )
+ ROM_LOAD( "ge936ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(c7e3a7f9) SHA1(7120c0ef3c3dac23713922f9447d5eac1b91c54d) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "ge936ea.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4411,8 +4416,8 @@ ROM_START( dsem2 )
SYS573_BIOS_A
ROM_DEFAULT_BIOS("dsem2")
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gkc23ea.u1", 0x000000, 0x001014, BAD_DUMP CRC(aec2421a) SHA1(5ea9e9ce6161ebc99a50db0b7304385511bd4553) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gkc23ea.u1", 0x000000, 0x00008c, BAD_DUMP CRC(107e9868) SHA1(02a0f92fc3167d37818818332bf189f39e3c25fc) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gkc23ea.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4425,10 +4430,10 @@ ROM_START( dsfdct )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge887ja_gn887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(08a60147) SHA1(0d39dca5e9e17fff0e64f296c8416e4ca23fdc1b) )
+ ROM_LOAD( "ge887ja_gn887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(bfbba6c7) SHA1(eb082fe7bb1bbc3656391a0617075010281b8726) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc910jc.u1", 0x000000, 0x000084, BAD_DUMP CRC(3c1ca973) SHA1(32211a72e3ac88b2723f82dac0b26f93031b3a9c) )
+ ROM_LOAD( "gc910jc.u1", 0x000000, 0x000084, BAD_DUMP CRC(e09eb1c6) SHA1(046d5552c774ea2b9141fff45c13a926c18f705c) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge887ja_gn887ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4444,10 +4449,10 @@ ROM_START( dsfdcta )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gn884ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(ce6b98ce) SHA1(75549d9470345ce06d2706d373b19416d97e5b9a) )
+ ROM_LOAD( "gn884ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(12e9807b) SHA1(4bbd4696b9345030daf8922775463cea3ee792c5) )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc910ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(59a23808) SHA1(fcff1c68ff6cfbd391ac997a40fb5253fc62de82) )
+ ROM_LOAD( "gc910ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(eebf9f88) SHA1(afc5f63f4b4251edfe12e9bbc6a788ddb76c0985) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gn884ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4463,10 +4468,10 @@ ROM_START( dsfdr )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "gea37ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(5321055e) SHA1(d06b0dca9caba8249d71340469ad9083b02fd087) )
+ ROM_LOAD( "gea37ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(adfc9021) SHA1(bb161b9c1bd358cb72e61197a9fafd58c44adb7c) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca37ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(b6d9e7f9) SHA1(bc5f491de53a96d46745df09bc94e7853052296c) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca37ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(d7df793c) SHA1(3b85ef84edda34dce13fcafb7f6c77f4154eee5d) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "gea37ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4482,7 +4487,7 @@ ROM_START( dsftkd )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn884ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(ce6b98ce) SHA1(75549d9470345ce06d2706d373b19416d97e5b9a) )
+ ROM_LOAD( "gn884ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(12e9807b) SHA1(4bbd4696b9345030daf8922775463cea3ee792c5) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gn884ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4495,7 +4500,7 @@ ROM_START( dstage )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn845eb.u1", 0x000000, 0x000084, BAD_DUMP CRC(82b52af5) SHA1(3fb9efe76439fa17a9a759aaebc3dc066b432947) )
+ ROM_LOAD( "gn845eb.u1", 0x000000, 0x000084, BAD_DUMP CRC(35a88d75) SHA1(122317074a96f36cdfc33cd26851bab3d514da3c) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gn884eb.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4508,7 +4513,7 @@ ROM_START( dstagea )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn845ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(db643af7) SHA1(881221da640b883302e657b906ea0a4e74555679) )
+ ROM_LOAD( "gn845ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(b0cb136c) SHA1(ff9471517d94caaf6f8e07c0aa4f70762cbcd6ee) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "845uaa02", 0, BAD_DUMP SHA1(d3f9290d4dadb5e9b82ebe77abf7b99d1a89f716) )
@@ -4518,7 +4523,7 @@ ROM_START( fbait2bc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc865ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(ea8f0b4b) SHA1(363b1ea1a520b239ba8bca867366bbe8a9977a43) )
+ ROM_LOAD( "gc865ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(e9f61a3d) SHA1(367914f142811ca592700c43570b4498a32434cd) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "865uab02", 0, BAD_DUMP SHA1(d14dc066d4c16fba1e9b31d5f042ad249c4b5137) )
@@ -4528,7 +4533,7 @@ ROM_START( fbaitbc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge765ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(588748c6) SHA1(ea1ead61e0dcb324ef7b6106cae00bcf6702d6c4) )
+ ROM_LOAD( "ge765ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(5bfe59b0) SHA1(a15ae8e95a4fe6a3fa212297af8324b075b315c9) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "765uab02", 0, BAD_DUMP SHA1(07b09e763e4b90108aa924b518221b16667a7133) )
@@ -4538,7 +4543,7 @@ ROM_START( fbaitmc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx889ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(753ad84e) SHA1(e024cefaaee7c9945ccc1f9a3d896b8560adce2e) )
+ ROM_LOAD( "gx889ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(ceadb821) SHA1(12da44b0c4f4d4af133d1e8e0089602c0a3d8411) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) )
@@ -4548,7 +4553,7 @@ ROM_START( fbaitmca )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx889aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(9c22aae8) SHA1(c107b0bf7fa76708f2d4f6aaf2cf27b3858378a3) )
+ ROM_LOAD( "gx889aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(27b5ca87) SHA1(5c3c822b1bd8c03aabdebcd927cf4479fdfc3bff) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) )
@@ -4558,7 +4563,7 @@ ROM_START( fbaitmcj )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx889ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(6278603c) SHA1(d6b59e270cfe4016e12565aedec8a4f0702e1a6f) )
+ ROM_LOAD( "gx889ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(d9ef0053) SHA1(56503e668693af092e680fada47314ca4dcfea5f) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) )
@@ -4568,7 +4573,7 @@ ROM_START( fbaitmcu )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx889ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(67b91e54) SHA1(4d94bfab08e2bf6e34ee606dd3c4e345d8e5d158) )
+ ROM_LOAD( "gx889ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(dc2e7e3b) SHA1(461910918392037f9e33eb7ed2ac8e494c141fe1) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) )
@@ -4578,7 +4583,7 @@ ROM_START( fghtmn )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq918eaa.u1", 0x000000, 0x000224, CRC(f3342ff5) SHA1(d3d6ecc22396f74b99ad7aab7908cd542c518977) )
+ ROM_LOAD( "gq918eaa.u1", 0x000000, 0x000224, CRC(4bf384d9) SHA1(094d541efb27ad4f2faf799b141069b78db6ad6b) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gq918xxb.31m", 0x000000, 0x200000, CRC(3653b5d7) SHA1(1deb44335b7a38506fb30da40e0ca61b96aea7bb) )
@@ -4596,7 +4601,7 @@ ROM_START( fghtmna )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq918aaa.u1", 0x000000, 0x000224, CRC(1a2c5d53) SHA1(ab7e44a83e8cd271e2bf8580881a3050d35641df) )
+ ROM_LOAD( "gq918aaa.u1", 0x000000, 0x000224, CRC(a2ebf67f) SHA1(e845ffd517c23f5d577898267bec1572bb9559ef) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gq918xxb.31m", 0x000000, 0x200000, CRC(3653b5d7) SHA1(1deb44335b7a38506fb30da40e0ca61b96aea7bb) )
@@ -4614,7 +4619,7 @@ ROM_START( fghtmnk )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq918kaa.u1", 0x000000, 0x000224, CRC(cf32990b) SHA1(bf49b8560f008696b45a3f7f03fa7b3395635b0f) )
+ ROM_LOAD( "gq918kaa.u1", 0x000000, 0x000224, CRC(77f53227) SHA1(649d3fbf47369487f366a8d6192e79612be4ec83) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gq918xxb.31m", 0x000000, 0x200000, CRC(3653b5d7) SHA1(1deb44335b7a38506fb30da40e0ca61b96aea7bb) )
@@ -4632,7 +4637,7 @@ ROM_START( fghtmnu )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq918uaa.u1", 0x000000, 0x000224, CRC(e1b7e9ef) SHA1(5767f47cb9a689601fb92c6a494563c5ffdde04c) )
+ ROM_LOAD( "gq918uaa.u1", 0x000000, 0x000224, CRC(597042c3) SHA1(5bc16259c0c0d55bbb2142bae79cc9be3dc52304) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gq918xxb.31m", 0x000000, 0x200000, CRC(3653b5d7) SHA1(1deb44335b7a38506fb30da40e0ca61b96aea7bb) )
@@ -4714,7 +4719,7 @@ ROM_START( gbbchmp )
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb48ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(500b8b5b) SHA1(82dc5ace95b37034b9527dd3f74e2bd289dd6838) )
+ ROM_LOAD( "gcb48ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(879ff48d) SHA1(c548173c5adfda08a82a04e0d0fbcfc529ed41a0) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb48ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4774,14 +4779,14 @@ ROM_START( gchgchmp )
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge877jaa.u1", 0x000000, 0x000224, CRC(06d0e427) SHA1(cf61c421c0ea236b492d49a00b4608062bbe9063) )
+ ROM_LOAD( "ge877jaa.u1", 0x000000, 0x000224, CRC(6e2f06ff) SHA1(79901dfcc5b1bd89cf464246c27fc9657aff3f05) )
ROM_END
ROM_START( gtrfrks )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886eac.u1", 0x000000, 0x000224, BAD_DUMP CRC(06bd6c4f) SHA1(61930e467ad135e2f31393ff5af981ed52f3bef9) )
+ ROM_LOAD( "gq886eac.u1", 0x000000, 0x000224, BAD_DUMP CRC(3b38dccf) SHA1(c313d025b4faed73ab021b76dbf0c51c9d701eb3) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__d02", 0, BAD_DUMP SHA1(8d6681d6cacd054a047ad984184fa0dfa383ecb9) )
@@ -4791,7 +4796,7 @@ ROM_START( gtrfrksu )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886uac.u1", 0x000000, 0x000224, BAD_DUMP CRC(143eaa55) SHA1(51a4fa3693f1cb1646a8986003f9b6cc1ae8b630) )
+ ROM_LOAD( "gq886uac.u1", 0x000000, 0x000224, BAD_DUMP CRC(29bb1ad5) SHA1(797ba61b6407fc0d0531e58129a9230e1484dc11) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__d02", 0, BAD_DUMP SHA1(8d6681d6cacd054a047ad984184fa0dfa383ecb9) )
@@ -4801,7 +4806,7 @@ ROM_START( gtrfrksj )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886jac.u1", 0x000000, 0x000224, BAD_DUMP CRC(11ffd43d) SHA1(27f4f4d782604379254fb98c3c57e547aa4b321f) )
+ ROM_LOAD( "gq886jac.u1", 0x000000, 0x000224, BAD_DUMP CRC(2c7a64bd) SHA1(01bd46989a897dbd023603e5cabbd7deb85825ff) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__d02", 0, BAD_DUMP SHA1(8d6681d6cacd054a047ad984184fa0dfa383ecb9) )
@@ -4811,7 +4816,7 @@ ROM_START( gtrfrksa )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886aac.u1", 0x000000, 0x000224, BAD_DUMP CRC(efa51ee9) SHA1(3374d936de69c287e0161bc526546441c2943555) )
+ ROM_LOAD( "gq886aac.u1", 0x000000, 0x000224, BAD_DUMP CRC(d220ae69) SHA1(dfdd29197222cb621b05f9b9091cff9a20cd846e) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__d02", 0, BAD_DUMP SHA1(8d6681d6cacd054a047ad984184fa0dfa383ecb9) )
@@ -4821,7 +4826,7 @@ ROM_START( gtrfrksc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886eac.u1", 0x000000, 0x000224, BAD_DUMP CRC(06bd6c4f) SHA1(61930e467ad135e2f31393ff5af981ed52f3bef9) )
+ ROM_LOAD( "gq886eac.u1", 0x000000, 0x000224, BAD_DUMP CRC(3b38dccf) SHA1(c313d025b4faed73ab021b76dbf0c51c9d701eb3) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__c02", 0, BAD_DUMP SHA1(80293512c4b914ef98acb1bbc7e3a2ed944a0dad) )
@@ -4831,7 +4836,7 @@ ROM_START( gtrfrksuc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886uac.u1", 0x000000, 0x000224, BAD_DUMP CRC(143eaa55) SHA1(51a4fa3693f1cb1646a8986003f9b6cc1ae8b630) )
+ ROM_LOAD( "gq886uac.u1", 0x000000, 0x000224, BAD_DUMP CRC(29bb1ad5) SHA1(797ba61b6407fc0d0531e58129a9230e1484dc11) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__c02", 0, BAD_DUMP SHA1(80293512c4b914ef98acb1bbc7e3a2ed944a0dad) )
@@ -4841,7 +4846,7 @@ ROM_START( gtrfrksjc )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886jac.u1", 0x000000, 0x000224, BAD_DUMP CRC(11ffd43d) SHA1(27f4f4d782604379254fb98c3c57e547aa4b321f) )
+ ROM_LOAD( "gq886jac.u1", 0x000000, 0x000224, BAD_DUMP CRC(2c7a64bd) SHA1(01bd46989a897dbd023603e5cabbd7deb85825ff) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__c02", 0, BAD_DUMP SHA1(80293512c4b914ef98acb1bbc7e3a2ed944a0dad) )
@@ -4851,17 +4856,17 @@ ROM_START( gtrfrksac )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq886aac.u1", 0x000000, 0x000224, BAD_DUMP CRC(efa51ee9) SHA1(3374d936de69c287e0161bc526546441c2943555) )
+ ROM_LOAD( "gq886aac.u1", 0x000000, 0x000224, BAD_DUMP CRC(d220ae69) SHA1(dfdd29197222cb621b05f9b9091cff9a20cd846e) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "886__c02", 0, BAD_DUMP SHA1(80293512c4b914ef98acb1bbc7e3a2ed944a0dad) )
ROM_END
-ROM_START(gtrfrk2m)
+ROM_START( gtrfrk2m )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(687868c4) SHA1(1230e74e4cf17953febe501df56d8bbec1de9356) )
+ ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(3b4f65b0) SHA1(ddec1da89feb848ba412b70064bf45ca4ba50426) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4874,7 +4879,7 @@ ROM_START( gtrfrk2ma )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883eaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(4440ab9f) SHA1(74742e850d17daf09941482d93bf0ac1912dbb7f) )
+ ROM_LOAD( "gq883eaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(1777a6eb) SHA1(6d5fd8fd63bf96de31a1b2d6e372aa728b5deaab) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4887,7 +4892,7 @@ ROM_START( gtrfrk2mua )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883uaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(3f9697a6) SHA1(a05c0e4bb934cc24fe851475a250b70551aac5dd) )
+ ROM_LOAD( "gq883uaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(6ca19ad2) SHA1(5ef4a1c65966b646a8808ec1d97893d3df40819f) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4900,7 +4905,7 @@ ROM_START( gtrfrk2mja )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883jaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(687868c4) SHA1(1230e74e4cf17953febe501df56d8bbec1de9356) )
+ ROM_LOAD( "gq883jaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(3b4f65b0) SHA1(ddec1da89feb848ba412b70064bf45ca4ba50426) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4913,7 +4918,7 @@ ROM_START( gtrfrk2mka )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883kaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(67e71110) SHA1(29da052c30109ebb9695721da83cd9019fae3a6d) )
+ ROM_LOAD( "gq883kaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(34d01c64) SHA1(98fa0ff0d1f7f179648d4c37dd89d0cf5a322e64) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4926,7 +4931,7 @@ ROM_START( gtrfrk2maa )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883aaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(2c696501) SHA1(2f0930f77ae68641ecf02ea3b129e1716467cddb) )
+ ROM_LOAD( "gq883aaa.u1", 0x000000, 0x000084, BAD_DUMP CRC(7f5e6875) SHA1(44a217e674c82443a7876dab46dc56af75010ccf) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4939,7 +4944,7 @@ ROM_START( gtrfrk2ml1 )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(687868c4) SHA1(1230e74e4cf17953febe501df56d8bbec1de9356) )
+ ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(3b4f65b0) SHA1(ddec1da89feb848ba412b70064bf45ca4ba50426) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4952,7 +4957,7 @@ ROM_START( gtrfrk2ml2 )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(687868c4) SHA1(1230e74e4cf17953febe501df56d8bbec1de9356) )
+ ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(3b4f65b0) SHA1(ddec1da89feb848ba412b70064bf45ca4ba50426) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -4965,10 +4970,10 @@ ROM_START( gtrfrk3m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "949jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(96c21d71) SHA1(871f1f0429154a486e547e182534db1557008dd6) )
+ ROM_LOAD( "949jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(e98b0389) SHA1(bbc5d54946625d140b1b431cbbb09118b49d39f1) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge949jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(8645e17f) SHA1(e8a833384cb6bdb05870fcd44e7c8ed48a03c852) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "ge949jab.u1", 0x000000, 0x00008c, BAD_DUMP CRC(e7bd2ccc) SHA1(93721ef9fcd65073438c60fc4403293a7670811a) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "949jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -4987,10 +4992,10 @@ ROM_START( gtfrk3ma )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "949jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(96c21d71) SHA1(871f1f0429154a486e547e182534db1557008dd6) )
+ ROM_LOAD( "949jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(e98b0389) SHA1(bbc5d54946625d140b1b431cbbb09118b49d39f1) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge949jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(8645e17f) SHA1(e8a833384cb6bdb05870fcd44e7c8ed48a03c852) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "ge949jab.u1", 0x000000, 0x00008c, BAD_DUMP CRC(e7bd2ccc) SHA1(93721ef9fcd65073438c60fc4403293a7670811a) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "949jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -5005,8 +5010,8 @@ ROM_END
ROM_START( gtfrk3mb )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "ge949jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(61f35ee1) SHA1(0a2b66742364d76ec18647b2761590bd49229625) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "ge949jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(e7bd2ccc) SHA1(93721ef9fcd65073438c60fc4403293a7670811a) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "ge949jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5019,10 +5024,10 @@ ROM_START( gtrfrk4m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "a24jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(29e326fe) SHA1(41a600105b08accc9d7ebd2b8ae08c0863758aa0) )
+ ROM_LOAD( "a24jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(e98b0389) SHA1(bbc5d54946625d140b1b431cbbb09118b49d39f1) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gea24ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(d1fccf11) SHA1(6dcd79f3171d6e4bd7e1149901638f8ea58ff623) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gea24ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(6a6bb4b5) SHA1(a7ae107e42201f694a99e7c58b0f5b26d147b3d4) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "a24jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -5037,8 +5042,8 @@ ROM_END
ROM_START( gtrfrk5m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gea26jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(c2725fca) SHA1(b70a3266c61af5cbe0478a6f3dd850ebcab980dc) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gea26jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(5e16a3f1) SHA1(629dce132588035cea20d1fe92e0f17f90d0ef60) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gea26jaa.31m", 0x000000, 0x200000, CRC(1a25e660) SHA1(dbd8fad0bac307723c70d00763cadf4261a7ed73) )
@@ -5055,8 +5060,8 @@ ROM_END
ROM_START( gtrfrk6m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb06ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(673c98ab) SHA1(b1d889bf4fc5e425056acb6b72b2c563966fb7d7) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb06ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(6a4b2436) SHA1(c9ad3b9b1c1b58c70b7ceb0332e8904f62cd56f9) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb06ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5068,8 +5073,8 @@ ROM_END
ROM_START( gtrfrk7m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb17jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(5a338c31) SHA1(0fd9ee306335858dd6bef680a62557a8bf055cc3) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb17jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(3e08140c) SHA1(8ba94ced641edab17a61e25b890985280bf5d30b) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcb17jaa.31m", 0x000000, 0x200000, CRC(1e1cbfe3) SHA1(6c942820f915ea0e01f0e736d70780ad8408aa69) )
@@ -5086,8 +5091,8 @@ ROM_END
ROM_START( gtrfrk8m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc08jba.u1", 0x000000, 0x001014, BAD_DUMP CRC(db4b3027) SHA1(65ca32fcacda18954a4e8352dbb9bf583dfdd121) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc08jba.u1", 0x000000, 0x00008c, BAD_DUMP CRC(b7da7085) SHA1(19702458b22dc49e5475ee6e39b02cca9b626122) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcc08jba.31m", 0x000000, 0x200000, CRC(ddef5efe) SHA1(7c3a219eacf63f55894e81cb0e41753176191708) )
@@ -5104,8 +5109,8 @@ ROM_END
ROM_START( gtrfrk8ma )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc08jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(9c58f22b) SHA1(41ade23bac86e437b1f12c5730b8cce292ffe4f8) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc08jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(e35a6b58) SHA1(a10f670adae91efbef09b2a1c8c29e1ccb1036bc) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcc08jaa.31m", 0x000000, 0x200000, CRC(aa723d4c) SHA1(5f55ddaf7f21b624deac99cc40b89989cd6f3a3d) )
@@ -5122,8 +5127,8 @@ ROM_END
ROM_START( gtrfrk9m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc39jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(afb75814) SHA1(027dc2ae3444d10c14169f1f354ffcc928f62fb3) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc39jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(865d2191) SHA1(9f5226d01164d83c36fde315de2d15a2f3b61604) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcc39jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5135,8 +5140,8 @@ ROM_END
ROM_START( gtfrk10m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd10jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(43520577) SHA1(a0749e766688032fe6558707b564288b95da9b8d) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd10jab.u1", 0x000000, 0x00008c, BAD_DUMP CRC(4147d6fb) SHA1(35877a6c295369f3c6857f6e33fad80abf111156) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd10jab.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5151,8 +5156,8 @@ ROM_END
ROM_START( gtfrk10ma )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd10jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(43520577) SHA1(a0749e766688032fe6558707b564288b95da9b8d) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd10jaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(97b5afc8) SHA1(ac57ac0dfb0ee73ad5e0819505153fe9d7da9dc9) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd10jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5164,8 +5169,8 @@ ROM_END
ROM_START( gtfrk10mb )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd10jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(43520577) SHA1(a0749e766688032fe6558707b564288b95da9b8d) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd10jab.u1", 0x000000, 0x00008c, BAD_DUMP CRC(4147d6fb) SHA1(35877a6c295369f3c6857f6e33fad80abf111156) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd10jab.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5177,8 +5182,8 @@ ROM_END
ROM_START( gtfrk11m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd39ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(9bd81d0a) SHA1(c95f6d7317bf88177f7217de4ba4376485d5cdbf) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd39ja.u1", 0x000000, 0x00008c, BAD_DUMP CRC(809301a6) SHA1(718e646bc6e72d89e78b771fb64374f77c5662a0) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd39ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5400,7 +5405,7 @@ ROM_START( hypbbc2p )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx908ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(fb6c0635) SHA1(0d974462a0a244ffb1a651adb316242cde427756) )
+ ROM_LOAD( "gx908ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(8900eaff) SHA1(aea4449c2453875694dfa92451d46dace710faf2) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "908a02", 0, BAD_DUMP SHA1(573194ca9938c30415fc88dcc0c0152dd3024d71) )
@@ -5410,7 +5415,7 @@ ROM_START( hypbbc2pk )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx908ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(f4f37fe1) SHA1(30f90cdb2d092e4f8d6c14cfd4ca4945e6d352cb) )
+ ROM_LOAD( "gx908ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(869f932b) SHA1(db5f96536ede2c16fc5fd5ab6a8efdf0f03be43b) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "908a02", 0, BAD_DUMP SHA1(573194ca9938c30415fc88dcc0c0152dd3024d71) )
@@ -5420,7 +5425,7 @@ ROM_START( jppyex98 )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc811ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(e0f93270) SHA1(02a110bf692d5d1aa15e66132e3c4f60aa3f0f3c) )
+ ROM_LOAD( "gc811ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(fd70efbe) SHA1(206fd4a6424723f082856c19617461897d127638) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "811jaa02", 0, BAD_DUMP SHA1(e9580172d58b38841f643651ae0bcaf24fd5f118) )
@@ -5430,7 +5435,7 @@ ROM_START( konam80a )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc826aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(9b38b959) SHA1(6b4fca340a9b1c2ae21ad3903c1ac1e39ab08b1a) )
+ ROM_LOAD( "gc826aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(da4cff17) SHA1(9a7b074d15b7d861132d9588c753cd18a469590f) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "826aaa01", 0, BAD_DUMP SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) )
@@ -5440,7 +5445,7 @@ ROM_START( konam80j )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc826ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(e9e861e8) SHA1(45841db0b42d096213d9539a8d076d39391dca6d) )
+ ROM_LOAD( "gc826ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(0479ef71) SHA1(043c01f115dd1434273729d06be3ba9c2d7b7a86) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "826jaa01", 0, SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) )
@@ -5450,7 +5455,7 @@ ROM_START( konam80k )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc826ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(d41f7e38) SHA1(73e2bb132e23be72e72ea5b0686ccad28e47574a) )
+ ROM_LOAD( "gc826ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(b4d57749) SHA1(8edbc08bc160350aa45dc4eb75dff29bcfd3d8f0) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "826kaa01", 0, BAD_DUMP SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) )
@@ -5460,7 +5465,7 @@ ROM_START( konam80s )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc826ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(6ce4c619) SHA1(d2be08c213c0a74e30b7ebdd93946374cc64457f) )
+ ROM_LOAD( "gc826ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(7c12ec3f) SHA1(7989ed47fe551116a821c7d4bc4de6bbb22eff29) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "826eaa01", 0, BAD_DUMP SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) )
@@ -5470,7 +5475,7 @@ ROM_START( konam80u )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gc826ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(0577379b) SHA1(3988a2a5ef1f1d5981c4767cbed05b73351be903) )
+ ROM_LOAD( "gc826ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(077fefab) SHA1(2b3db957b6b767854ffeb99edd767040cb981489) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "826uaa01", 0, SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) )
@@ -5479,8 +5484,8 @@ ROM_END
ROM_START( mamboagg )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gqa40jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(fd9e7c1f) SHA1(6dd4790589d48803f58328d099c908f0565b2c01) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gqa40jab.u1", 0x000000, 0x00008c, BAD_DUMP CRC(bbb6033d) SHA1(22f3d0e9541be7c24338e97a8c29f0baadf40557) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gqa40jab.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5492,8 +5497,8 @@ ROM_END
ROM_START( mamboagga )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gqa40jrb.u1", 0x000000, 0x001014, BAD_DUMP CRC(367e4c0c) SHA1(bad21aa8818749282dd97cf00c34b7b049096ceb) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gqa40jrb.u1", 0x000000, 0x00008c, BAD_DUMP CRC(313b5685) SHA1(8df9cab660af8f9d057a1360ec4dc9f9ed50e185) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gqa40jrb.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5505,8 +5510,8 @@ ROM_END
ROM_START( mrtlbeat )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "geb47jb.u1", 0x000000, 0x001014, BAD_DUMP CRC(90079ff5) SHA1(8273ee3349dd13207836b0ebf72ad5fa67fef68a) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "geb47jb.u1", 0x000000, 0x00008c, BAD_DUMP CRC(83de7dd1) SHA1(cc9afd1f8f93829e845dbbb9e27eb786525e9d66) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "geb47jb.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5519,7 +5524,7 @@ ROM_START( powyakex )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gx802ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ea8bdda3) SHA1(780034ab08871631ef0e3e9b779ca89e016c26a8) )
+ ROM_LOAD( "gx802ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(82743f7b) SHA1(9019de5f38e79477327e4dde23e1e572e8450d67) )
DISK_REGION( "cdrom0" )
DISK_IMAGE_READONLY( "802jab02", 0, SHA1(460cc9f0b2514ec1da06b0a1d7b52fe43220d181) )
@@ -5529,7 +5534,7 @@ ROM_START( pcnfrk )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq881ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(6a88b34d) SHA1(2cc454ae099e948d5c5728c821484ddab195ad94) )
+ ROM_LOAD( "gq881ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(e878901a) SHA1(5c58c6b580b6d864d42e1fc0dd4852cfe4bbe02b) )
ROM_REGION( 0x200000, "29f016a.31h", 0 ) /* onboard flash */
ROM_LOAD( "gq881ea.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) )
@@ -5547,7 +5552,7 @@ ROM_START( pcnfrka )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq881aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(8390c1eb) SHA1(9ad0385c319aae318bc6efdd705a459957c669da) )
+ ROM_LOAD( "gq881aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(0160e2bc) SHA1(d18cb24c1ebf4ab4492ab2a2d863e522a7b47692) )
ROM_REGION( 0x200000, "29f016a.31h", 0 ) /* onboard flash */
ROM_LOAD( "gq881aa.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) )
@@ -5565,7 +5570,7 @@ ROM_START( pcnfrkk )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq881ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(568e05b3) SHA1(37fdf0ca45b9303bdd4e38990f9e91ff7de2a82c) )
+ ROM_LOAD( "gq881ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(d47e26e4) SHA1(c74209be867eeb4196e2c3a6cf2ef6c89ba9faf4) )
ROM_REGION( 0x200000, "29f016a.31h", 0 ) /* onboard flash */
ROM_LOAD( "gq881ka.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) )
@@ -5583,7 +5588,7 @@ ROM_START( drmnu )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq881ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(780b7557) SHA1(37f10437cf42310caf9ed8ea03e3ea342d59e59f) )
+ ROM_LOAD( "gq881ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(fafb5600) SHA1(b18c0ca09e563be710f3c3fcfc408a62131c6d18) )
ROM_REGION( 0x200000, "29f016a.31h", 0 ) /* onboard flash */
ROM_LOAD( "gq881ua.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) )
@@ -5601,10 +5606,10 @@ ROM_START( pcnfrk2m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge912aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(22c34654) SHA1(8173bde15b2fb89a72752253d832e05074ae3484) )
+ ROM_LOAD( "ge912aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(aed7ab59) SHA1(41103d383c35dab0b074e336b1b07dd346a855ee) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn912aa.u1", 0x000000, 0x001014, BAD_DUMP CRC(431b76c8) SHA1(fc4b20ad05b09b127918ee24634984cfa3df3647) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gn912aa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(89928c8b) SHA1(5999e5366ae12c24d7a68fad4f1e12dbee6ef7b2) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge912aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -5620,10 +5625,10 @@ ROM_START( pcnfrk2mk )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "ge912ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(b3d5ca9a) SHA1(3dd9034e1a3a78a03bef975186b7ac6b01e3131a) )
+ ROM_LOAD( "ge912ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(7bc96f01) SHA1(ea6a51a6b10c56beb68c949b6939e9d2fef3f44e) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gn912ka.u1", 0x000000, 0x001014, BAD_DUMP CRC(c6af0c1a) SHA1(042d23bcfabc2a7fb6d7a038978805968e229395) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gn912ka.u1", 0x000000, 0x00008c, BAD_DUMP CRC(bd67eb6b) SHA1(35e3434effaae1222b9e72886fa6ae28a74b9a42) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "ge912ka.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -5639,10 +5644,10 @@ ROM_START( pcnfrk3m )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "a23aaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(01dfcff6) SHA1(c2c86074fcf82b75a7c7aa56cf6daaae1646443c) )
+ ROM_LOAD( "a23aaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(aed7ab59) SHA1(41103d383c35dab0b074e336b1b07dd346a855ee) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca23aa.u1", 0x000000, 0x001014, BAD_DUMP CRC(6b3fc1d4) SHA1(f8e58d4af3663914b8c0e94e7078b6360728edc1) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca23aa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(f5e5c5d0) SHA1(8a27fbb3ac32bc4be9dad97bb3c428bb4bc60b24) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "a23aaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -5658,10 +5663,10 @@ ROM_START( pcnfrk3mk )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:install:eeprom", 0 )
- ROM_LOAD( "a23kaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(d71c4b5c) SHA1(3911c5dd933c30e6e44c8cf417bb4c284ecb4b80) )
+ ROM_LOAD( "a23kaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(7bc96f01) SHA1(ea6a51a6b10c56beb68c949b6939e9d2fef3f44e) )
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca23ka.u1", 0x000000, 0x001014, BAD_DUMP CRC(f392349c) SHA1(e7eb7979db276de560d5820163a70d97e6c023d8) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gca23ka.u1", 0x000000, 0x00008c, BAD_DUMP CRC(ee247c6f) SHA1(e6aa6b45e8151ea6d84834be93c831c6394864e7) )
ROM_REGION( 0x000008, "cassette:install:id", 0 )
ROM_LOAD( "a23kaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
@@ -5676,8 +5681,8 @@ ROM_END
ROM_START( pcnfrk4m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gea25aaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(04a5cffa) SHA1(ce7316ebdddeee326b0f4301f9a7c56498a95e70) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gea25aaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(9c81a343) SHA1(1ad243e4905e5c7ee1355221759f337bdec5bb58) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gea25aaa.31m", 0x000000, 0x200000, CRC(557093c2) SHA1(80e8eecf3248e890f9cce70859b6092725c4918c) )
@@ -5697,8 +5702,8 @@ ROM_END
ROM_START( pcnfrk4mk )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gka25kaa.u1", 0x000000, 0x001014, CRC(c30f390a) SHA1(a67a4639539b65d17486667fbf13e298cd337470) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gka25kaa.u1", 0x000000, 0x00008c, CRC(2b0efc90) SHA1(84bfc8dd365e9d51d248d4dbc09274aa3dff345f) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gka25kaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5710,8 +5715,8 @@ ROM_END
ROM_START( pcnfrk5m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb05aaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(db30ec65) SHA1(5c6c0906feda1400961a9214b2dcd3a8f498dc48) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb05aaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(484ba0d3) SHA1(4d24a38e0975449dd0f155021d9c804b7547354a) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb05aaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5723,8 +5728,8 @@ ROM_END
ROM_START( pcnfrk5mk )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb05kaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(f2a0e121) SHA1(d6ffa3513885a78662bcac9db4f17f0c10951962) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb05kaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(6fd59b3f) SHA1(5118a56f4303dce78a806b49ff9e834be85528a7) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcb05kaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5736,8 +5741,8 @@ ROM_END
ROM_START( pcnfrk6m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcb16aaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(da44cbd5) SHA1(aa64758524998c001791ffc4095b89e7ae1a6d8e) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcb16aaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(95f80e09) SHA1(14e7998baf42bc8610638a4e5aa13ba1afb361e2) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcb16aaa.31m", 0x000000, 0x200000, CRC(52c9334b) SHA1(2288f729611aefe93a470f8ef88a211582136e86) )
@@ -5754,8 +5759,8 @@ ROM_END
ROM_START( pcnfrk7m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc07aaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(9aa2480f) SHA1(d9e82294323500c8e9d6012d2fe0d033c3afd4d0) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc07aaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(98144a51) SHA1(376d265a0f897ad116cdd88a673f6e20d880204a) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gcc07aaa.31m", 0x000000, 0x200000, CRC(e32a680d) SHA1(fcdf8bc9ff2290350b2653588047c78ec6c5f4a8) )
@@ -5772,8 +5777,8 @@ ROM_END
ROM_START( pcnfrk8m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcc38aaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(98eba308) SHA1(46a58a747c2e5fc5889dca9f0f555740c4983a83) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcc38aaa.u1", 0x000000, 0x00008c, BAD_DUMP CRC(5a3611fe) SHA1(279dbad199abdaa947f8c1e39cf08385d9e102ab) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcc38aaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5785,8 +5790,8 @@ ROM_END
ROM_START( pcnfrk9m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd09aba.u1", 0x000000, 0x001014, BAD_DUMP CRC(315336e6) SHA1(83bc64ef952460e28b5a7b237746e2813c9ce632) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd09aba.u1", 0x000000, 0x00008c, BAD_DUMP CRC(1fe73b91) SHA1(b3c49b84295b9dfc946b12a53bdec5cd24541c98) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd09aba.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5798,8 +5803,8 @@ ROM_END
ROM_START( pcnfrk10m )
SYS573_BIOS_A
- ROM_REGION( 0x0001014, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gcd40aca.u1", 0x000000, 0x001014, BAD_DUMP CRC(dec7f7a9) SHA1(d88e003faefe7ad41e2ba049a07188ec4243d932) )
+ ROM_REGION( 0x000008c, "cassette:game:eeprom", 0 )
+ ROM_LOAD( "gcd40aca.u1", 0x000000, 0x00008c, BAD_DUMP CRC(cbeaaaae) SHA1(ccc6c47b20ab847859ec37c9c45dc90b24a232b5) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gcd40aca.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5812,7 +5817,7 @@ ROM_START( pnchmn )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq918jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(e4769787) SHA1(d60c6598c7c58b5cd8f86350ebf7f3f32c1ebe9b) )
+ ROM_LOAD( "gq918jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(5cb13cab) SHA1(7b4e084df560c317f5530d6d5f4052ec51ecc683) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gq918xxb.31m", 0x000000, 0x200000, CRC(3653b5d7) SHA1(1deb44335b7a38506fb30da40e0ca61b96aea7bb) )
@@ -5830,7 +5835,7 @@ ROM_START( pnchmna )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq918jab.u1", 0x000000, 0x000224, BAD_DUMP CRC(e4769787) SHA1(d60c6598c7c58b5cd8f86350ebf7f3f32c1ebe9b) )
+ ROM_LOAD( "gq918jab.u1", 0x000000, 0x000224, BAD_DUMP CRC(5cb13cab) SHA1(7b4e084df560c317f5530d6d5f4052ec51ecc683) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gq918xxb.31m", 0x000000, 0x200000, CRC(3653b5d7) SHA1(1deb44335b7a38506fb30da40e0ca61b96aea7bb) )
@@ -5848,7 +5853,7 @@ ROM_START( pnchmn2 )
SYS573_BIOS_A
ROM_REGION( 0x0000224, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gqa09ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(e1e4108f) SHA1(0605e2c7a7dcb2f4928350e96d2ffcc2ede4a762) )
+ ROM_LOAD( "gqa09ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(5923bba3) SHA1(97b099779f20f4169c3171c73f55048fb5314c50) )
ROM_REGION( 0x200000, "29f016a.31m", 0 ) /* onboard flash */
ROM_LOAD( "gqa09ja.31m", 0x000000, 0x200000, CRC(b1043a91) SHA1(b474439c1a7da7855d9b6d2162d4a522f499d6ab) )
@@ -5866,7 +5871,7 @@ ROM_START( salarymc )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gca18jaa.u1", 0x000000, 0x000084, CRC(c9197f67) SHA1(8e95a89008f756a79295f2cb557c39efca1351e7) )
+ ROM_LOAD( "gca18jaa.u1", 0x000000, 0x000084, CRC(c4e827e3) SHA1(9429eedcc793d84223c5494b50e64b906e2fa8e1) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gca18jaa.u6", 0x000000, 0x000008, CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
@@ -5879,7 +5884,7 @@ ROM_START( stepchmp )
SYS573_BIOS_A
ROM_REGION( 0x0000084, "cassette:game:eeprom", 0 )
- ROM_LOAD( "gq930ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(de141979) SHA1(fc91a8384852cb940ec1461c8a561118e9850c85) )
+ ROM_LOAD( "gq930ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(d3e541fd) SHA1(157812a2afeb287804c659115a2a7f8bb7fd2ee9) )
ROM_REGION( 0x000008, "cassette:game:id", 0 )
ROM_LOAD( "gq930ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
diff --git a/src/mame/machine/k573mcal.cpp b/src/mame/machine/k573mcal.cpp
new file mode 100644
index 00000000000..097e80e66fe
--- /dev/null
+++ b/src/mame/machine/k573mcal.cpp
@@ -0,0 +1,227 @@
+// license:BSD-3-Clause
+// copyright-holders:windyfairy
+/*
+ * Konami 573 Master Calendar
+ *
+ * This device was made for development/factory use only.
+ * It will override the game when connected and always boot into the master calendar-specific code.
+ * Every game has a master calendar-specific boot sequence but a few that don't have code to initialize security cartridges.
+ *
+ * The only games that this does not work on that have a security cart are ddr2mc2, ddr2ml, and ddr2mla (all variants of 885jaa02).
+ * Those games will boot into a screen that shows the game code, clock, and date with nothing else.
+ * For these games it's possible to set Sys573 DIPSW 1 with the master calendar connected and it will do a checksum of the game's data
+ * and attempt to write it to "c:/tmp/chksum.dat" on the host debugger PC but will crash in MAME.
+ *
+ * DIPSW 2 and 3 on the System 573 directly are also used to specify the "spec" of the game.
+ * For example, setting DIPSW allows you to switch between GN and GE specs in earlier games.
+ *
+ * Some games require you to hold service/F2 (and set Sys573 DIPSW 3?) during boot to initialize the installation cartridge.
+ *
+ */
+
+#include "emu.h"
+#include "k573mcal.h"
+
+#include "machine/timehelp.h"
+
+k573mcal_device::k573mcal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ jvs_device(mconfig, KONAMI_573_MASTER_CALENDAR, tag, owner, clock),
+ m_in1(*this, "IN1"),
+ seconds(0),
+ mainId(0),
+ subId(0)
+{
+}
+
+void k573mcal_device::device_start()
+{
+ jvs_device::device_start();
+}
+
+void k573mcal_device::device_reset()
+{
+ seconds = 0;
+
+ // Randomly picked values
+ // Is rendered in-game as x41-6379 where the x is generated based on the value of the main ID
+ mainId = 41; // valid range 0 - 99
+ subId = 6379; // valid range 0 - 9999
+
+ jvs_device::device_reset();
+}
+
+const char *k573mcal_device::device_id()
+{
+ return "KONAMI CO.,LTD.;Master Calendar;Ver1.0;";
+}
+
+uint8_t k573mcal_device::command_format_version()
+{
+ return 0x11;
+}
+
+uint8_t k573mcal_device::jvs_standard_version()
+{
+ return 0x20;
+}
+
+uint8_t k573mcal_device::comm_method_version()
+{
+ return 0x10;
+}
+
+int k573mcal_device::handle_message(const uint8_t* send_buffer, uint32_t send_size, uint8_t*& recv_buffer)
+{
+ switch (send_buffer[0]) {
+ case 0xf0:
+ // msg: f0 d9
+ device_reset();
+ break;
+
+ case 0x70: {
+ // msg: 70
+ // Writes to RTC chip
+
+ system_time systime;
+ machine().base_datetime(systime);
+
+ uint8_t resp[] = {
+ 0x01, // status, must be 1
+ uint8_t(systime.local_time.year % 100),
+ uint8_t(systime.local_time.month + 1),
+ systime.local_time.mday,
+ systime.local_time.weekday,
+ systime.local_time.hour,
+ systime.local_time.minute,
+ seconds // Can't be the same value twice in a row
+ };
+
+ seconds = (seconds + 1) % 60;
+
+ memcpy(recv_buffer, resp, sizeof(resp));
+ recv_buffer += sizeof(resp);
+ return 1;
+ }
+
+ case 0x71: {
+ // msg: 71 ff ff 01
+
+ uint8_t resp[] = {
+ 0x01, // status, must be 1
+ uint8_t(m_in1->read() & 0x0f), // Area specification
+ };
+
+ memcpy(recv_buffer, resp, sizeof(resp));
+ recv_buffer += sizeof(resp);
+ return 4;
+ }
+
+ case 0x7c: {
+ // msg: 7c 7f 00 04
+ const uint16_t val = (send_buffer[1] << 8) | send_buffer[2];
+
+ if (val == 0x7f00) {
+ // Return main ID
+ uint8_t resp[] = {
+ 0x01, // status, must be 1
+ uint8_t((mainId >> 24) & 0xff), uint8_t((mainId >> 16) & 0xff), uint8_t((mainId >> 8) & 0xff), uint8_t(mainId & 0xff),
+ };
+
+ memcpy(recv_buffer, resp, sizeof(resp));
+ recv_buffer += sizeof(resp);
+ }
+ else if (val == 0x8000) {
+ // Return sub ID
+ uint8_t resp[] = {
+ 0x01, // status, must be 1
+ '<', 'I', 'N', 'I', 'T', ' ', 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', '!', '>',
+ uint8_t((subId >> 24) & 0xff), uint8_t((subId >> 16) & 0xff), uint8_t((subId >> 8) & 0xff), uint8_t(subId & 0xff),
+ uint8_t((~subId >> 24) & 0xff), uint8_t((~subId >> 16) & 0xff), uint8_t((~subId >> 8) & 0xff), uint8_t(~subId & 0xff),
+ };
+
+ memcpy(recv_buffer, resp, sizeof(resp));
+ recv_buffer += sizeof(resp);
+ }
+
+ return 4;
+ }
+
+ case 0x7d: {
+ // msg: 7d 80 10 08 00 00 00 01 ff ff ff fe
+ const uint16_t val = (send_buffer[1] << 8) | send_buffer[2];
+
+ if (val == 0x8010) {
+ // Set next sub ID
+ subId = (send_buffer[4] << 24) | (send_buffer[5] << 16) | (send_buffer[6] << 8) | send_buffer[7];
+
+ uint8_t resp[] = {
+ 0x01, // status, must be 1
+ };
+
+ memcpy(recv_buffer, resp, sizeof(resp));
+ recv_buffer += sizeof(resp);
+ }
+
+ return 12;
+ }
+
+ case 0x7e: {
+ // This builds some buffer that creates data like this: @2B0001:020304050607:BC9A78563412:000000000000B5
+ // 2B0001 is ???
+ // 020304050607 is the machine SID
+ // BC9A78563412 is the machine XID
+ // 000000000000B5 is ???
+
+ // msg: 7e xx
+ uint8_t resp[] = {
+ // 0x01 - Breaks loop, sends next byte
+ // 0x04 - Resends byte
+ 0x01,
+ };
+
+ memcpy(recv_buffer, resp, sizeof(resp));
+ recv_buffer += sizeof(resp);
+
+ return 2;
+ }
+
+ case 0x7f:
+ // TODO: Where is this used?
+ // The command existed in the command list for a few games (starting at Drummania?) but was never referenced and then disappeared around DDR 3rd mix.
+ break;
+ }
+
+ // Command not recognized, pass it off to the base message handler
+ return jvs_device::handle_message(send_buffer, send_size, recv_buffer);
+}
+
+INPUT_PORTS_START( k573mcal )
+ PORT_START("IN1")
+ // Default the area to 3 because it's unused and will force you to actively select the region to initialize.
+ // For all but the earliest games it will show a message saying "this game only supports regions x, y, z".
+ // This is also a good way to discover new bootable variants that exist on the disc but were previously unknown.
+ PORT_DIPNAME(0x0f, 0x03, "Area")
+ PORT_DIPSETTING(0x00, "JA")
+ PORT_DIPSETTING(0x01, "UA")
+ PORT_DIPSETTING(0x02, "EA")
+ PORT_DIPSETTING(0x03, "3") // Unused
+ PORT_DIPSETTING(0x04, "AA")
+ PORT_DIPSETTING(0x05, "KA")
+ PORT_DIPSETTING(0x06, "JY/AY")
+ PORT_DIPSETTING(0x07, "JR")
+ PORT_DIPSETTING(0x08, "JB")
+ PORT_DIPSETTING(0x09, "UB")
+ PORT_DIPSETTING(0x0a, "EB")
+ PORT_DIPSETTING(0x0b, "11") // Unused
+ PORT_DIPSETTING(0x0c, "AB")
+ PORT_DIPSETTING(0x0d, "KB")
+ PORT_DIPSETTING(0x0e, "JZ/AZ")
+ PORT_DIPSETTING(0x0f, "JS")
+INPUT_PORTS_END
+
+ioport_constructor k573mcal_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME(k573mcal);
+}
+
+DEFINE_DEVICE_TYPE(KONAMI_573_MASTER_CALENDAR, k573mcal_device, "k573mcal", "Konami 573 Master Calendar")
diff --git a/src/mame/machine/k573mcal.h b/src/mame/machine/k573mcal.h
new file mode 100644
index 00000000000..8400a19038e
--- /dev/null
+++ b/src/mame/machine/k573mcal.h
@@ -0,0 +1,52 @@
+// license:BSD-3-Clause
+// copyright-holders:windyfairy
+/*
+ * Konami 573 Master Calendar
+ *
+ */
+#ifndef MAME_MACHINE_K573_MCAL_H
+#define MAME_MACHINE_K573_MCAL_H
+
+#pragma once
+
+#include "machine/jvsdev.h"
+#include "machine/timer.h"
+
+class k573mcal_device : public jvs_device
+{
+public:
+ template <typename T>
+ k573mcal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&jvs_host_tag)
+ : k573mcal_device(mconfig, tag, owner, clock)
+ {
+ host.set_tag(std::forward<T>(jvs_host_tag));
+ }
+
+ k573mcal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ template <uint8_t First> void set_port_tags() { }
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // JVS device overrides
+ virtual const char *device_id() override;
+ virtual uint8_t command_format_version() override;
+ virtual uint8_t jvs_standard_version() override;
+ virtual uint8_t comm_method_version() override;
+ virtual int handle_message(const uint8_t *send_buffer, uint32_t send_size, uint8_t *&recv_buffer) override;
+
+private:
+ required_ioport m_in1;
+
+ uint8_t seconds;
+ uint32_t mainId;
+ uint32_t subId;
+};
+
+DECLARE_DEVICE_TYPE(KONAMI_573_MASTER_CALENDAR, k573mcal_device)
+
+#endif // MAME_MACHINE_K573_MCAL_H
diff --git a/src/mame/machine/zs01.cpp b/src/mame/machine/zs01.cpp
index 3ce573892e5..c5e4606ec91 100644
--- a/src/mame/machine/zs01.cpp
+++ b/src/mame/machine/zs01.cpp
@@ -7,6 +7,8 @@
*
* This is a high level emulation of the PIC used in some of the System 573 security cartridges.
*
+ * Referred to internally in game code as "NS2K001".
+ *
*/
#include "emu.h"
@@ -43,7 +45,8 @@ zs01_device::zs01_device( const machine_config &mconfig, const char *tag, device
m_state( STATE_STOP ),
m_shift( 0 ),
m_bit( 0 ),
- m_byte( 0 )
+ m_byte( 0 ),
+ m_previous_byte( 0 )
{
}
@@ -65,6 +68,7 @@ void zs01_device::device_start()
save_item( NAME( m_shift ) );
save_item( NAME( m_bit ) );
save_item( NAME( m_byte ) );
+ save_item( NAME( m_previous_byte ) );
save_item( NAME( m_write_buffer ) );
save_item( NAME( m_read_buffer ) );
save_item( NAME( m_response_key ) );
@@ -72,6 +76,25 @@ void zs01_device::device_start()
save_item( NAME( m_command_key ) );
save_item( NAME( m_data_key ) );
save_item( NAME( m_data ) );
+ save_item( NAME( m_configuration_registers ) );
+}
+
+void zs01_device::device_reset()
+{
+ memset( m_write_buffer, 0, sizeof( m_write_buffer ) );
+ memset( m_read_buffer, 0, sizeof( m_read_buffer ) );
+ memset( m_response_key, 0, sizeof( m_response_key ) );
+
+ m_cs = 0;
+ m_rst = 0;
+ m_scl = 0;
+ m_sdaw = 0;
+ m_sdar = 0;
+ m_state = STATE_STOP;
+ m_shift = 0;
+ m_bit = 0;
+ m_byte = 0;
+ m_previous_byte = 0;
}
WRITE_LINE_MEMBER( zs01_device::write_rst )
@@ -309,9 +332,7 @@ uint16_t zs01_device::calc_crc( uint8_t *buffer, uint32_t length )
int zs01_device::data_offset()
{
- int block = ( ( m_write_buffer[ 0 ] & 2 ) << 7 ) | m_write_buffer[ 1 ];
-
- return block * SIZE_DATA_BUFFER;
+ return m_write_buffer[ 1 ] * SIZE_DATA_BUFFER;
}
WRITE_LINE_MEMBER( zs01_device::write_scl )
@@ -386,50 +407,94 @@ WRITE_LINE_MEMBER( zs01_device::write_scl )
{
decrypt( m_write_buffer, m_write_buffer, sizeof( m_write_buffer ), m_command_key, 0xff );
+ // TODO: What is bit 1 of m_write_buffer[0]?
+
+ // Bit 2 seems to be set when the sector is >= 4 and the sector is not 0xfc
if( ( m_write_buffer[ 0 ] & 4 ) != 0 )
{
- decrypt2( &m_write_buffer[ 2 ], &m_write_buffer[ 2 ], SIZE_DATA_BUFFER, m_data_key, 0x00 );
+ decrypt2( &m_write_buffer[ 2 ], &m_write_buffer[ 2 ], SIZE_DATA_BUFFER, m_data_key, m_previous_byte );
}
uint16_t crc = calc_crc( m_write_buffer, 10 );
+ uint16_t msg_crc = ( ( m_write_buffer[ 10 ] << 8 ) | m_write_buffer[ 11 ] );
- if( crc == ( ( m_write_buffer[ 10 ] << 8 ) | m_write_buffer[ 11 ] ) )
+ verboselog( 1, "-> command: %02x (%s)\n", m_write_buffer[ 0 ], ( m_write_buffer[ 0 ] & 1 ) ? "READ" : "WRITE" );
+ verboselog( 1, "-> address: %04x (%02x)\n", data_offset(), m_write_buffer[ 1 ] );
+ verboselog( 1, "-> data: %02x%02x%02x%02x%02x%02x%02x%02x\n",
+ m_write_buffer[ 2 ], m_write_buffer[ 3 ], m_write_buffer[ 4 ], m_write_buffer[ 5 ],
+ m_write_buffer[ 6 ], m_write_buffer[ 7 ], m_write_buffer[ 8 ], m_write_buffer[ 9 ] );
+ verboselog( 1, "-> crc: %04x vs %04x %s\n", crc, msg_crc, crc == msg_crc ? "" : "(BAD)");
+
+ if( crc == msg_crc )
{
- verboselog( 1, "-> command: %02x\n", m_write_buffer[ 0 ] );
- verboselog( 1, "-> address: %02x\n", m_write_buffer[ 1 ] );
- verboselog( 1, "-> data: %02x%02x%02x%02x%02x%02x%02x%02x\n",
- m_write_buffer[ 2 ], m_write_buffer[ 3 ], m_write_buffer[ 4 ], m_write_buffer[ 5 ],
- m_write_buffer[ 6 ], m_write_buffer[ 7 ], m_write_buffer[ 8 ], m_write_buffer[ 9 ] );
- verboselog( 1, "-> crc: %02x%02x\n", m_write_buffer[ 10 ], m_write_buffer[ 11 ] );
+ m_configuration_registers[ CONFIG_RC ] = 0; // Reset password fail counter
switch( m_write_buffer[ 0 ] & 1 )
{
case COMMAND_WRITE:
- memcpy( &m_data[ data_offset() ], &m_write_buffer[ 2 ], SIZE_DATA_BUFFER );
-
- /* todo: find out what should be returned. */
memset( &m_read_buffer[ 0 ], 0, sizeof( m_write_buffer ) );
+ m_read_buffer[ 0 ] = STATUS_OK;
+
+ if ( m_write_buffer[ 1 ] == 0xfd )
+ {
+ // Erase
+ std::fill( std::begin( m_data ), std::end( m_data ), 0 );
+ std::fill( std::begin( m_data_key ), std::end( m_data_key ), 0 );
+ }
+ else if ( m_write_buffer[ 1 ] == 0xfe )
+ {
+ // Configuration register
+ memcpy( m_configuration_registers, &m_write_buffer[ 2 ], SIZE_DATA_BUFFER );
+ }
+ else if ( m_write_buffer[ 1 ] == 0xff )
+ {
+ // Set password
+ memcpy( m_data_key, &m_write_buffer[ 2 ], SIZE_DATA_BUFFER );
+ }
+ else if ( data_offset() < sizeof ( m_data ) )
+ {
+ memcpy( &m_data[ data_offset() ], &m_write_buffer[ 2 ], SIZE_DATA_BUFFER );
+ }
+ else
+ {
+ verboselog( 1, "-> unknown write offset: %04x (%02x)\n", data_offset(), m_write_buffer[ 1 ] );
+ }
+
break;
case COMMAND_READ:
- /* todo: find out what should be returned. */
- memset( &m_read_buffer[ 0 ], 0, 2 );
+ m_read_buffer[ 0 ] = STATUS_OK;
- switch( m_write_buffer[ 1 ] )
+ if ( m_write_buffer[ 1 ] == 0xfc )
{
- case 0xfd:
+ // TODO: Unknown serial
+ // The serial is verified by the same algorithm as the one read from 0x7e8 (DS2401 serial), but the serial is different.
+ for (int i = 0; i < SIZE_DATA_BUFFER; i++)
{
- /* TODO: use read/write to talk to the ds2401, which will require a timer. */
- for( int i = 0; i < SIZE_DATA_BUFFER; i++ )
- {
- m_read_buffer[ 2 + i ] = m_ds2401->direct_read( SIZE_DATA_BUFFER - i - 1 );
- }
+ m_read_buffer[2 + i] = m_ds2401->direct_read(SIZE_DATA_BUFFER - i - 1);
}
- break;
-
- default:
+ }
+ else if ( m_write_buffer[ 1 ] == 0xfd )
+ {
+ // DS2401 serial
+ /* TODO: use read/write to talk to the ds2401, which will require a timer. */
+ for( int i = 0; i < SIZE_DATA_BUFFER; i++ )
+ {
+ m_read_buffer[ 2 + i ] = m_ds2401->direct_read( SIZE_DATA_BUFFER - i - 1 );
+ }
+ }
+ else if ( m_write_buffer[ 1 ] == 0xfe )
+ {
+ // Configuration register
+ memcpy( &m_read_buffer[ 2 ], m_configuration_registers, SIZE_DATA_BUFFER );
+ }
+ else if ( data_offset() < sizeof ( m_data ) )
+ {
memcpy( &m_read_buffer[ 2 ], &m_data[ data_offset() ], SIZE_DATA_BUFFER );
- break;
+ }
+ else
+ {
+ verboselog( 1, "-> unknown read offset: %04x (%02x)\n", data_offset(), m_write_buffer[ 1 ] );
}
memcpy( m_response_key, &m_write_buffer[ 2 ], sizeof( m_response_key ) );
@@ -439,18 +504,25 @@ WRITE_LINE_MEMBER( zs01_device::write_scl )
else
{
verboselog( 0, "bad crc\n" );
+ m_read_buffer[ 0 ] = STATUS_ERROR;
- /* todo: find out what should be returned. */
- memset( &m_read_buffer[ 0 ], 0xff, 2 );
+ m_configuration_registers[ CONFIG_RC ]++;
+ if ( m_configuration_registers[ CONFIG_RC ] >= m_configuration_registers[ CONFIG_RR ] )
+ {
+ // Too many bad reads, erase data
+ std::fill( std::begin( m_data ), std::end( m_data ), 0 );
+ std::fill( std::begin( m_data_key ), std::end( m_data_key ), 0 );
+ }
}
- verboselog( 1, "<- status: %02x%02x\n",
- m_read_buffer[ 0 ], m_read_buffer[ 1 ] );
+ verboselog( 1, "<- status: %02x\n", m_read_buffer[ 0 ] );
verboselog( 1, "<- data: %02x%02x%02x%02x%02x%02x%02x%02x\n",
m_read_buffer[ 2 ], m_read_buffer[ 3 ], m_read_buffer[ 4 ], m_read_buffer[ 5 ],
m_read_buffer[ 6 ], m_read_buffer[ 7 ], m_read_buffer[ 8 ], m_read_buffer[ 9 ] );
+ m_previous_byte = m_read_buffer[ 1 ];
+
crc = calc_crc( m_read_buffer, 10 );
m_read_buffer[ 10 ] = crc >> 8;
m_read_buffer[ 11 ] = crc & 255;
@@ -574,12 +646,25 @@ READ_LINE_MEMBER( zs01_device::read_sda )
void zs01_device::nvram_default()
{
- memset( m_response_to_reset, 0, sizeof( m_response_to_reset ) );
- memset( m_command_key, 0, sizeof( m_command_key ) );
+ m_response_to_reset[ 0 ] = 0x5a;
+ m_response_to_reset[ 1 ] = 0x53;
+ m_response_to_reset[ 2 ] = 0x00;
+ m_response_to_reset[ 3 ] = 0x01;
+
+ m_command_key[ 0 ] = 0xed;
+ m_command_key[ 1 ] = 0x68;
+ m_command_key[ 2 ] = 0x50;
+ m_command_key[ 3 ] = 0x4b;
+ m_command_key[ 4 ] = 0xc6;
+ m_command_key[ 5 ] = 0x44;
+ m_command_key[ 6 ] = 0x48;
+ m_command_key[ 7 ] = 0x3e;
+
memset( m_data_key, 0, sizeof( m_data_key ) );
+ memset( m_configuration_registers, 0, sizeof( m_configuration_registers ) );
memset( m_data, 0, sizeof( m_data ) );
- int expected_bytes = sizeof( m_response_to_reset ) + sizeof( m_command_key ) + sizeof( m_data_key ) + sizeof( m_data );
+ int expected_bytes = sizeof( m_response_to_reset ) + sizeof( m_command_key ) + sizeof( m_data_key ) + sizeof( m_configuration_registers ) + sizeof( m_data );
if (!m_region.found())
{
@@ -596,6 +681,7 @@ void zs01_device::nvram_default()
memcpy( m_response_to_reset, region, sizeof( m_response_to_reset ) ); region += sizeof( m_response_to_reset );
memcpy( m_command_key, region, sizeof( m_command_key ) ); region += sizeof( m_command_key );
memcpy( m_data_key, region, sizeof( m_data_key ) ); region += sizeof( m_data_key );
+ memcpy( m_configuration_registers, region, sizeof( m_configuration_registers ) ); region += sizeof( m_configuration_registers );
memcpy( m_data, region, sizeof( m_data ) ); region += sizeof( m_data );
}
}
@@ -605,6 +691,7 @@ void zs01_device::nvram_read( emu_file &file )
file.read( m_response_to_reset, sizeof( m_response_to_reset ) );
file.read( m_command_key, sizeof( m_command_key ) );
file.read( m_data_key, sizeof( m_data_key ) );
+ file.read( m_configuration_registers, sizeof( m_configuration_registers ) );
file.read( m_data, sizeof( m_data ) );
}
@@ -613,5 +700,6 @@ void zs01_device::nvram_write( emu_file &file )
file.write( m_response_to_reset, sizeof( m_response_to_reset ) );
file.write( m_command_key, sizeof( m_command_key ) );
file.write( m_data_key, sizeof( m_data_key ) );
+ file.write( m_configuration_registers, sizeof( m_configuration_registers ) );
file.write( m_data, sizeof( m_data ) );
}
diff --git a/src/mame/machine/zs01.h b/src/mame/machine/zs01.h
index 75b8f40784c..715228798a9 100644
--- a/src/mame/machine/zs01.h
+++ b/src/mame/machine/zs01.h
@@ -38,6 +38,7 @@ public:
protected:
// device-level overrides
virtual void device_start() override;
+ virtual void device_reset() override;
// device_nvram_interface overrides
virtual void nvram_default() override;
@@ -72,6 +73,18 @@ private:
STATE_READ_DATA
};
+ enum status_t
+ {
+ STATUS_OK,
+ STATUS_ERROR = 2,
+ };
+
+ enum configuration_registers_t
+ {
+ CONFIG_RR = 4, // Retry Register
+ CONFIG_RC = 5 // Reset Counter
+ };
+
// internal state
optional_device<ds2401_device> m_ds2401;
optional_memory_region m_region;
@@ -85,13 +98,15 @@ private:
int m_shift;
int m_bit;
int m_byte;
+ int m_previous_byte;
uint8_t m_write_buffer[ 12 ];
uint8_t m_read_buffer[ 12 ];
uint8_t m_response_key[ 8 ];
uint8_t m_response_to_reset[ 4 ];
uint8_t m_command_key[ 8 ];
uint8_t m_data_key[ 8 ];
- uint8_t m_data[ 4096 ];
+ uint8_t m_configuration_registers[ 8 ];
+ uint8_t m_data[ 112 ];
};