From 742e1f859ae368072b25bfa4782e37538cd26e35 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 5 Nov 2022 12:23:58 +0100 Subject: midtunit, midyunit: fix protection ram size off by 1 --- src/mame/midway/midtunit_m.cpp | 12 ++++++------ src/mame/midway/midyunit.h | 1 + src/mame/midway/midyunit_m.cpp | 19 ++++++++++--------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/mame/midway/midtunit_m.cpp b/src/mame/midway/midtunit_m.cpp index 1360d9515c5..92dece3b60a 100644 --- a/src/mame/midway/midtunit_m.cpp +++ b/src/mame/midway/midtunit_m.cpp @@ -382,8 +382,8 @@ void midtunit_state::init_mktunit() m_maincpu->space(AS_PROGRAM).install_read_handler(0x1b00000, 0x1b6ffff, read16sm_delegate(*this, FUNC(midtunit_state::mk_prot_r))); m_maincpu->space(AS_PROGRAM).install_write_handler(0x1b00000, 0x1b6ffff, write16s_delegate(*this, FUNC(midtunit_state::mk_prot_w))); - m_hidden_ram = std::make_unique(42); - save_pointer(NAME(m_hidden_ram), 42); + m_hidden_ram = std::make_unique(43); + save_pointer(NAME(m_hidden_ram), 43); /* sound chip protection (hidden RAM) */ m_adpcm_sound->get_cpu()->space(AS_PROGRAM).install_ram(0xfb9c, 0xfbc6, m_hidden_ram.get()); @@ -418,8 +418,8 @@ void midtunit_state::init_nbajam_common(int te_protection) m_maincpu->space(AS_PROGRAM).install_write_handler(0x1b95f40, 0x1bb7f5f, write16sm_delegate(*this, FUNC(midtunit_state::nbajam_prot_w))); } - m_hidden_ram = std::make_unique(42); - save_pointer(NAME(m_hidden_ram), 42); + m_hidden_ram = std::make_unique(43); + save_pointer(NAME(m_hidden_ram), 43); /* sound chip protection (hidden RAM) */ if (!te_protection) @@ -449,8 +449,8 @@ void midtunit_state::init_jdreddp() /* protection */ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b00000, 0x1bfffff, read16sm_delegate(*this, FUNC(midtunit_state::jdredd_prot_r)), write16sm_delegate(*this, FUNC(midtunit_state::jdredd_prot_w))); - m_hidden_ram = std::make_unique(42); - save_pointer(NAME(m_hidden_ram), 42); + m_hidden_ram = std::make_unique(43); + save_pointer(NAME(m_hidden_ram), 43); /* sound chip protection (hidden RAM) */ m_adpcm_sound->get_cpu()->space(AS_PROGRAM).install_ram(0xfbcf, 0xfbf9, m_hidden_ram.get()); diff --git a/src/mame/midway/midyunit.h b/src/mame/midway/midyunit.h index 1ac721eaac1..4bc3f59a72f 100644 --- a/src/mame/midway/midyunit.h +++ b/src/mame/midway/midyunit.h @@ -171,6 +171,7 @@ private: void dma_draw(uint16_t command); void init_generic(int bpp, int sound, int prot_start, int prot_end); + void install_hidden_ram(mc6809e_device &cpu, int prot_start, int prot_end); void term2_init_common(write16s_delegate hack_w); }; diff --git a/src/mame/midway/midyunit_m.cpp b/src/mame/midway/midyunit_m.cpp index 67eb8a13fb5..aa05b47e9fd 100644 --- a/src/mame/midway/midyunit_m.cpp +++ b/src/mame/midway/midyunit_m.cpp @@ -232,6 +232,13 @@ void midyunit_state::cvsd_protection_w(offs_t offset, uint8_t data) m_cvsd_protection_base[offset] = data; } +void midyunit_state::install_hidden_ram(mc6809e_device &cpu, int prot_start, int prot_end) +{ + size_t size = 1 + prot_end - prot_start; + m_hidden_ram = std::make_unique(size); + save_pointer(NAME(m_hidden_ram), size); + cpu.space(AS_PROGRAM).install_ram(prot_start, prot_end, m_hidden_ram.get()); +} void midyunit_state::init_generic(int bpp, int sound, int prot_start, int prot_end) { @@ -292,21 +299,15 @@ void midyunit_state::init_generic(int bpp, int sound, int prot_start, int prot_e break; case SOUND_CVSD: - m_hidden_ram = std::make_unique(prot_end - prot_start); - save_pointer(NAME(m_hidden_ram), prot_end - prot_start); - m_cvsd_sound->get_cpu()->space(AS_PROGRAM).install_ram(prot_start, prot_end, m_hidden_ram.get()); + install_hidden_ram(*m_cvsd_sound->get_cpu(), prot_start, prot_end); break; case SOUND_ADPCM: - m_hidden_ram = std::make_unique(prot_end - prot_start); - save_pointer(NAME(m_hidden_ram), prot_end - prot_start); - m_adpcm_sound->get_cpu()->space(AS_PROGRAM).install_ram(prot_start, prot_end, m_hidden_ram.get()); + install_hidden_ram(*m_cvsd_sound->get_cpu(), prot_start, prot_end); break; case SOUND_NARC: - m_hidden_ram = std::make_unique(prot_end - prot_start); - save_pointer(NAME(m_hidden_ram), prot_end - prot_start); - m_narc_sound->get_cpu()->space(AS_PROGRAM).install_ram(prot_start, prot_end, m_hidden_ram.get()); + install_hidden_ram(*m_cvsd_sound->get_cpu(), prot_start, prot_end); break; case SOUND_YAWDIM: -- cgit v1.2.3