diff options
| author | 2025-07-11 13:54:57 +0200 | |
|---|---|---|
| committer | 2025-07-11 13:55:06 +0200 | |
| commit | 4d2dfc820467a1c18fa935290b964ff50d007774 (patch) | |
| tree | bfb1c52af6758ffde5653da90355a59c261facab | |
| parent | 671b8c33d9f964e1d118910905e506a58ea1beed (diff) | |
sega/megadriv.cpp: fix #13941
| -rw-r--r-- | src/mame/sega/mdconsole.cpp | 8 | ||||
| -rw-r--r-- | src/mame/sega/mdconsole.h | 1 | ||||
| -rw-r--r-- | src/mame/sega/megadriv.cpp | 7 | ||||
| -rw-r--r-- | src/mame/sega/megadriv.h | 3 | ||||
| -rw-r--r-- | src/mame/sega/segapico.cpp | 2 |
5 files changed, 15 insertions, 6 deletions
diff --git a/src/mame/sega/mdconsole.cpp b/src/mame/sega/mdconsole.cpp index 57b90a7a18c..15c515c015f 100644 --- a/src/mame/sega/mdconsole.cpp +++ b/src/mame/sega/mdconsole.cpp @@ -325,6 +325,12 @@ void md_cons_state::init_genesis() m_version_hi_nibble |= 0x20; } +void md_cons_state::init_genesis_tmss() +{ + init_genesis(); + m_version_lo_nibble = 1; +} + void md_cons_state::init_md_eur() { init_megadrie(); @@ -967,7 +973,7 @@ CONS( 1990, megadriv, genesis, 0, ms_megadpal, md, md_cons_s CONS( 1988, megadrij, genesis, 0, ms_megadrivj, md, md_cons_slot_state, init_md_jpn, "Sega", "Mega Drive (Japan, NTSC)", MACHINE_SUPPORTS_SAVE ) // 1990+ models had the TMSS security chip, leave this as a clone, it reduces compatibility and nothing more. -CONS( 1990, genesis_tmss, genesis, 0, genesis_tmss, md, md_cons_slot_state, init_genesis, "Sega", "Genesis (USA, NTSC, with TMSS chip)", MACHINE_SUPPORTS_SAVE ) +CONS( 1990, genesis_tmss, genesis, 0, genesis_tmss, md, md_cons_slot_state, init_genesis_tmss, "Sega", "Genesis (USA, NTSC, with TMSS chip)", MACHINE_SUPPORTS_SAVE ) // the 32X plugged in the cart slot, games plugged into the 32x. Maybe it should be handled as an expansion device? CONS( 1994, 32x, 0, 0, genesis_32x, md, md_cons_state, init_genesis, "Sega", "Genesis with 32X (USA, NTSC)", MACHINE_NOT_WORKING ) diff --git a/src/mame/sega/mdconsole.h b/src/mame/sega/mdconsole.h index 7e260ae414f..f4def6510ab 100644 --- a/src/mame/sega/mdconsole.h +++ b/src/mame/sega/mdconsole.h @@ -31,6 +31,7 @@ public: void init_genesis(); void init_md_eur(); void init_md_jpn(); + void init_genesis_tmss(); void md_32x(machine_config &config); void genesis_32x(machine_config &config); diff --git a/src/mame/sega/megadriv.cpp b/src/mame/sega/megadriv.cpp index 7cc00059936..4d88199e328 100644 --- a/src/mame/sega/megadriv.cpp +++ b/src/mame/sega/megadriv.cpp @@ -245,9 +245,8 @@ uint16_t md_base_state::m68k_version_read() D0 : Bit 0 of version number */ LOG("%s: read version register\n", machine().describe_context()); - // Version number contained in bits 3-0 - // TODO: non-TMSS BIOSes must return 0 here - uint16_t const retdata = m_version_hi_nibble | 0x01; + // Version number contained in bits 3-0 (TMSS) + uint16_t const retdata = m_version_hi_nibble | m_version_lo_nibble; return retdata | (retdata << 8); } @@ -956,6 +955,8 @@ void md_base_state::megadriv_init_common() save_pointer(NAME(m_genz80.z80_prgram), 0x2000); m_maincpu->set_tas_write_callback(*this, FUNC(md_base_state::megadriv_tas_callback)); + + m_version_lo_nibble = 0; } void md_base_state::init_megadriv() diff --git a/src/mame/sega/megadriv.h b/src/mame/sega/megadriv.h index b273170e3c6..238f8e55757 100644 --- a/src/mame/sega/megadriv.h +++ b/src/mame/sega/megadriv.h @@ -131,7 +131,8 @@ protected: optional_shared_ptr<uint16_t> m_megadrive_ram; genesis_z80_vars m_genz80; - int m_version_hi_nibble; + uint8_t m_version_hi_nibble; + uint8_t m_version_lo_nibble; // 0 = non-TMSS, 1 = TMSS required_device_array<megadrive_io_port_device, 3> m_ioports; diff --git a/src/mame/sega/segapico.cpp b/src/mame/sega/segapico.cpp index dff6f2ae139..bece9dc0fc7 100644 --- a/src/mame/sega/segapico.cpp +++ b/src/mame/sega/segapico.cpp @@ -158,7 +158,7 @@ protected: required_ioport m_io_penx; required_ioport m_io_peny; - int m_version_hi_nibble; + uint8_t m_version_hi_nibble; uint8_t m_page_register; |
