From 3029c6c69a88497c368269c809737ab71d693e54 Mon Sep 17 00:00:00 2001 From: arbee Date: Sun, 9 Mar 2025 13:24:05 -0400 Subject: [PATCH] apple/apple2gs.cpp: Fix language card state after Control-Reset. (GitHub #13420) [R. Belmont] --- src/mame/apple/apple2gs.cpp | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/mame/apple/apple2gs.cpp b/src/mame/apple/apple2gs.cpp index e9f4b85c73b..5ebfceda441 100644 --- a/src/mame/apple/apple2gs.cpp +++ b/src/mame/apple/apple2gs.cpp @@ -473,6 +473,7 @@ private: u8 m_clkdata = 0, m_clock_control = 0; u8 m_clock_frame = 0; + void lcrom_update(); void do_io(int offset); u8 read_floatingbus(); void update_slotrom_banks(); @@ -1266,20 +1267,7 @@ void apple2gs_state::lc_update(int offset, bool writing) if (m_lcram != old_lcram) { - if (m_lcram) - { - m_lcbank.select(1); - m_lcaux.select(1); - m_lc00.select(1 + (m_romswitch ? 2 : 0)); - m_lc01.select(1); - } - else - { - m_lcbank.select(0); - m_lcaux.select(0); - m_lc00.select(0 + (m_romswitch ? 2 : 0)); - m_lc01.select(0); - } + lcrom_update(); } #if 0 @@ -1291,6 +1279,24 @@ void apple2gs_state::lc_update(int offset, bool writing) #endif } +void apple2gs_state::lcrom_update() +{ + if (m_lcram) + { + m_lcbank.select(1); + m_lcaux.select(1); + m_lc00.select(1 + (m_romswitch ? 2 : 0)); + m_lc01.select(1); + } + else + { + m_lcbank.select(0); + m_lcaux.select(0); + m_lc00.select(0 + (m_romswitch ? 2 : 0)); + m_lc01.select(0); + } +} + // most softswitches don't care about read vs write, so handle them here void apple2gs_state::do_io(int offset) { @@ -3412,6 +3418,7 @@ void apple2gs_state::adbmicro_p2_out(u8 data) m_video->page2_w(false); m_video->res_w(0); + lcrom_update(); auxbank_update(); update_slotrom_banks(); }