diff options
author | angelosa <lordkale4@gmail.com> | 2020-08-29 04:06:11 +0200 |
---|---|---|
committer | angelosa <lordkale4@gmail.com> | 2020-08-29 04:06:11 +0200 |
commit | c3aab41ad900218ba31f47356ed4eeaee4547d4d (patch) | |
tree | 8665a9e9cb28e049c1a75b5cf015891907bd52b1 | |
parent | e1fcb43459aa29bd822ad3006f2e0d94b3b00261 (diff) |
snesb.cpp: bare minimum protection sim for wldgunsb, making it to boot
-rw-r--r-- | src/mame/drivers/snesb.cpp | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp index 146ae743b56..0ef4447e698 100644 --- a/src/mame/drivers/snesb.cpp +++ b/src/mame/drivers/snesb.cpp @@ -191,6 +191,12 @@ private: uint8_t rushbets_75axxx_r(offs_t offset); uint8_t rushbets_5b8e3c_r(); uint8_t sharedram2_r(offs_t offset); + uint8_t wldgunsb_722262_r(); + uint8_t wldgunsb_723364_r(); + uint8_t wldgunsb_721197_r(); + uint8_t wldgunsb_72553b_r(); + uint8_t wldgunsb_72443a_r(); + void sharedram2_w(offs_t offset, uint8_t data); uint8_t snesb_dsw1_r(); uint8_t snesb_dsw2_r(); @@ -289,7 +295,6 @@ void snesb_state::sharedram2_w(offs_t offset, uint8_t data) } /* Rushing Beat Shura */ - uint8_t snesb_state::rushbets_75axxx_r(offs_t offset) { /* protection checks */ @@ -313,6 +318,37 @@ uint8_t snesb_state::rushbets_5b8e3c_r() return ++m_cnt; } +/* Wild Guns */ +uint8_t snesb_state::wldgunsb_722262_r() +{ + // PC 2e2f6 + return 0x2b; +} + +uint8_t snesb_state::wldgunsb_723364_r() +{ + // PC b983 + return 0x93; +} + +uint8_t snesb_state::wldgunsb_721197_r() +{ + // PC 2e30c + return 0xe4; +} + +uint8_t snesb_state::wldgunsb_72553b_r() +{ + // PC 2e216 + return 0xbf; +} + +uint8_t snesb_state::wldgunsb_72443a_r() +{ + // PC 2e322 + return 0x66; +} + /* Generic read handlers for Dip Switches and coins inputs */ uint8_t snesb_state::snesb_dsw1_r() { @@ -1414,9 +1450,22 @@ void snesb_state::init_wldgunsb() m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x781021, read8sm_delegate(*this, FUNC(snesb_state::sharedram_r)), write8sm_delegate(*this, FUNC(snesb_state::sharedram_w))); //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781200, 0x781221, read8sm_delegate(*this, FUNC(snesb_state::sharedram2_r)), write8sm_delegate(*this, FUNC(snesb_state::sharedram2_w))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8smo_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770074, 0x770074, read8smo_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); - //m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8smo_delegate(*this, FUNC(snesb_state::snesb_coin_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8smo_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770072, 0x770072, read8smo_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8smo_delegate(*this, FUNC(snesb_state::snesb_coin_r))); + + // protection overlays + // counter (PC=0x2dfe7 / 0x2dfee) + m_maincpu->space(AS_PROGRAM).install_read_handler(0x7bf45b, 0x7bf45b, read8smo_delegate(*this, FUNC(snesb_state::sb2b_75bd37_r))); + + // these reads with a LDA but discards the upper 8-bit values + // POST + m_maincpu->space(AS_PROGRAM).install_read_handler(0x722262, 0x722262, read8smo_delegate(*this, FUNC(snesb_state::wldgunsb_722262_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x723363, 0x723363, read8smo_delegate(*this, FUNC(snesb_state::wldgunsb_723364_r))); + // in-game + m_maincpu->space(AS_PROGRAM).install_read_handler(0x721197, 0x721197, read8smo_delegate(*this, FUNC(snesb_state::wldgunsb_721197_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x72553b, 0x72553b, read8smo_delegate(*this, FUNC(snesb_state::wldgunsb_72553b_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x72443a, 0x72443a, read8smo_delegate(*this, FUNC(snesb_state::wldgunsb_72443a_r))); init_snes(); } |