midwayic: Make initial serial number random (nw)

This commit is contained in:
Ted Green 2019-01-08 23:17:10 -07:00
parent 4ed62c466d
commit 70b8384564
3 changed files with 14 additions and 6 deletions

View File

@ -352,8 +352,8 @@ int smc91c9x_device::address_filter(u8 *buf)
return ADDR_MULTICAST;
}
LOGMASKED(LOG_FILTER, "address_filter rejected multicast %02x-%02x-%02x-%02x-%02x-%02x crc: %08x hash: %02x multi: %16ullx\n",
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], crc, m_rx_hash, *(u64*)&m_reg[B3_MT0_1]);
LOGMASKED(LOG_FILTER, "address_filter rejected multicast %02x-%02x-%02x-%02x-%02x-%02x crc: %08x hash: %02x multi: %08x%08x\n",
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], crc, m_rx_hash, *(u32*)&m_reg[B3_MT2_3], *(u32*)&m_reg[B3_MT0_1]);
}
else
{

View File

@ -32,13 +32,12 @@
*
*************************************/
void midway_serial_pic_device::generate_serial_data(int upper)
void midway_serial_pic_device::generate_serial_data(int upper, uint32_t serial_number)
{
int year = atoi(machine().system().year), month = 12, day = 11;
uint32_t serial_number, temp;
uint32_t temp;
uint8_t serial_digit[9];
serial_number = 123456;
serial_number += upper * 1000000;
serial_digit[0] = (serial_number / 100000000) % 10;
@ -320,6 +319,9 @@ void midway_serial_pic2_device::device_start()
m_time_just_written = 0;
m_time_write_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(midway_serial_pic2_device::reset_timer),this));
memset(m_default_nvram, 0xff, sizeof(m_default_nvram));
// Set the first four bytes to random serial number
u32 rand_serial = rand() & 0x7ffff;
memcpy(m_default_nvram, &rand_serial, 4);
}
@ -580,11 +582,17 @@ WRITE8_MEMBER(midway_serial_pic2_device::write)
void midway_serial_pic2_device::nvram_default()
{
memcpy(m_nvram, m_default_nvram, sizeof(m_nvram));
// Create serial number from first 4 bytes of nvram memory
generate_serial_data(m_upper, (*(uint32_t*)m_nvram) & 0x7ffff);
}
void midway_serial_pic2_device::nvram_read(emu_file &file)
{
file.read(m_nvram, sizeof(m_nvram));
// Create serial number from first 4 bytes of nvram memory
generate_serial_data(m_upper, (*(uint32_t*)m_nvram) & 0x7ffff);
}
void midway_serial_pic2_device::nvram_write(emu_file &file)

View File

@ -36,7 +36,7 @@ protected:
// device-level overrides
virtual void device_start() override;
void generate_serial_data(int upper);
void generate_serial_data(int upper, uint32_t serial_number = 123456);
void serial_register_state();
uint8_t m_data[16]; // reused by other devices