diff options
author | 2018-08-23 16:24:13 +0100 | |
---|---|---|
committer | 2018-08-23 11:24:13 -0400 | |
commit | 12b2f888e286e0d67bb8cc432efbba9af0cf3938 (patch) | |
tree | 771c122d56384b3e6ab9811a3f3307322ba58070 | |
parent | e3a13bf8e2d416b174d11fccba0d962c8c32eed8 (diff) |
misc small fixes (btime.cpp note, nightmare.cpp defaults) (#3885)
* misc (nw)
* whitespace (nw)
-rwxr-xr-x | src/devices/machine/sda2006.cpp | 19 | ||||
-rwxr-xr-x | src/devices/machine/sda2006.h | 37 | ||||
-rw-r--r-- | src/mame/drivers/btime.cpp | 12 | ||||
-rw-r--r-- | src/mame/drivers/nightmare.cpp | 9 |
4 files changed, 50 insertions, 27 deletions
diff --git a/src/devices/machine/sda2006.cpp b/src/devices/machine/sda2006.cpp index cfa31d9591d..aef96819c8f 100755 --- a/src/devices/machine/sda2006.cpp +++ b/src/devices/machine/sda2006.cpp @@ -36,7 +36,16 @@ DEFINE_DEVICE_TYPE(SDA2006, sda2006_device, "sda2006", "SDA2006 EEPROM") sda2006_device::sda2006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SDA2006, tag, owner, clock) , device_nvram_interface(mconfig, *this) - , m_latch(0), m_current_address(0), m_eeprom_state(),m_read_stream_pos(0),m_is_end_o_stream(false), m_write_stream_length(0), m_write_stream(0), m_write_state(0), m_clock_state (0) + , m_latch(0) + , m_current_address(0) + , m_eeprom_state() + , m_read_stream_pos(0) + , m_is_end_o_stream(false) + , m_write_stream_length(0) + , m_write_stream(0) + , m_write_state(0) + , m_clock_state(0) + , m_region(*this, DEVICE_SELF) { } @@ -80,7 +89,6 @@ void sda2006_device::device_reset() m_read_stream_pos = 0; m_eeprom_state = EEPROM_WRITE; m_clock_state = 0; - } //------------------------------------------------- @@ -90,6 +98,13 @@ void sda2006_device::device_reset() void sda2006_device::nvram_default() { + // region always wins + if (m_region.found()) + { + memcpy(m_eeprom_data, m_region->base(), EEPROM_CAPACITY); + return; + } + for (auto & elem : m_eeprom_data) elem = 0xffff; } diff --git a/src/devices/machine/sda2006.h b/src/devices/machine/sda2006.h index 51fb91446d2..c17f655ef0a 100755 --- a/src/devices/machine/sda2006.h +++ b/src/devices/machine/sda2006.h @@ -9,18 +9,18 @@ // sda2006_device -class sda2006_device : public device_t, - public device_nvram_interface +class sda2006_device : public device_t, + public device_nvram_interface { public: // construction/destruction sda2006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // I/O operations - DECLARE_READ_LINE_MEMBER( read_data ); - DECLARE_WRITE_LINE_MEMBER( write_data ); - DECLARE_WRITE_LINE_MEMBER( write_clock ); - DECLARE_WRITE_LINE_MEMBER( write_enable ); + DECLARE_READ_LINE_MEMBER(read_data); + DECLARE_WRITE_LINE_MEMBER(write_data); + DECLARE_WRITE_LINE_MEMBER(write_clock); + DECLARE_WRITE_LINE_MEMBER(write_enable); protected: // device-level overrides @@ -38,19 +38,18 @@ private: EEPROM_WRITE }; - uint8_t m_latch; - uint8_t m_current_address; - uint32_t m_eeprom_state; - uint8_t m_read_stream_pos; - bool m_is_end_o_stream; - uint8_t m_write_stream_length; - uint32_t m_write_stream; - uint8_t m_write_state; - uint8_t m_clock_state; - - - - uint16_t m_eeprom_data[0x20]; + uint8_t m_latch; + uint8_t m_current_address; + uint32_t m_eeprom_state; + uint8_t m_read_stream_pos; + bool m_is_end_o_stream; + uint8_t m_write_stream_length; + uint32_t m_write_stream; + uint8_t m_write_state; + uint8_t m_clock_state; + + optional_memory_region m_region; + uint16_t m_eeprom_data[0x20]; }; diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp index 43a25c9f72e..4d0db81edce 100644 --- a/src/mame/drivers/btime.cpp +++ b/src/mame/drivers/btime.cpp @@ -2002,8 +2002,10 @@ void btime_state::init_zoar() /* At location 0xD50A is what looks like an undocumented opcode. I tried implementing it given what opcode 0x23 should do, but it still didn't - work in demo mode. So this could be another protection or a bad ROM read. - I'm NOPing it out for now. */ + work in demo mode, this could be another protection. + + The ROM has been confirmed as good on multiple working PCBs, so this + isn't a bitrot issue */ memset(&rom[0xd50a],0xea,8); m_audio_nmi_enable_type = AUDIO_ENABLE_AY8910; @@ -2016,7 +2018,11 @@ void btime_state::init_tisland() /* At location 0xa2b6 there's a strange RLA followed by a BPL that reads from an unmapped area that causes the game to fail in several circumstances.On the Cassette version the RLA (33) is in reality a BIT (24),so I'm guessing that there's something - wrong going on in the encryption scheme.*/ + wrong going on in the encryption scheme. + + There are other locations with similar problems. These ROMs have NOT yet been + confirmed on multiple PCBs, so this could still be a bad dump. + */ memset(&rom[0xa2b6],0x24,1); m_audio_nmi_enable_type = AUDIO_ENABLE_DIRECT; diff --git a/src/mame/drivers/nightmare.cpp b/src/mame/drivers/nightmare.cpp index 7ae9b71d737..c9f5d8ec885 100644 --- a/src/mame/drivers/nightmare.cpp +++ b/src/mame/drivers/nightmare.cpp @@ -170,7 +170,7 @@ Sound Board: - + (also used on some Pinball machines) IC9, EFO 90503 (seems a remarked TMS5220, speech synthesizer IC). @@ -201,7 +201,7 @@ - Verify video mixing (Press F2 to enter service mode, then press 1 + 2 to continue to settings screen. There's diagnostic color pattern at the top of screen) - Add sound hardware (ROM is missing) - + - Quitting MAME while in service mode settings screen will invalidate settings ******************************************************************************/ @@ -476,6 +476,9 @@ ROM_START( nightmare ) ROM_REGION( 0x10000, "cdp1802_sound", 0 ) ROM_LOAD( "sound.bin", 0x0000, 0x4000, NO_DUMP ) + + ROM_REGION( 0x40, "eeprom", 0 ) + ROM_LOAD( "eeprom", 0x00, 0x40, CRC(7824e1f8) SHA1(2ccac62b4e8abcb2b3d66fa4025947fea184664e) ) ROM_END -GAME( 1982, nightmare, 0, nightmare, nightmare, nightmare_state, empty_init, ROT90, "E.F.O.", "Nightmare", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1982, nightmare, 0, nightmare, nightmare, nightmare_state, empty_init, ROT90, "E.F.O.", "Nightmare (Spain)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) |