From e42be958c90bd6a8400d3bb1d103c8e99d8f49cc Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 28 Oct 2017 09:19:41 +0200 Subject: [PATCH] sothello.cpp: very minor cleanups + preparation for save state support (nw) --- src/devices/video/v9938.cpp | 1 + src/mame/drivers/sothello.cpp | 73 ++++++++++++++++++++--------------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/devices/video/v9938.cpp b/src/devices/video/v9938.cpp index 5fc4327adee..f5925cf1f48 100644 --- a/src/devices/video/v9938.cpp +++ b/src/devices/video/v9938.cpp @@ -33,6 +33,7 @@ todo: - vdp engine -- make run at correct speed - vr/hr/fh flags: double-check all of that - make vdp engine work in exp. ram +- fix save state support */ #include "emu.h" diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp index 244f573efb2..a214612262c 100644 --- a/src/mame/drivers/sothello.cpp +++ b/src/mame/drivers/sothello.cpp @@ -31,7 +31,7 @@ +---------------------------------------------------------------------------------+ CPU : Z80A(x2) 68B09 -Sound: YM2203?(surface scrached) + M5205 +Sound: YM2203?(surface scratched) + M5205 OSC : 8.0000MHz(X1) 21.477 MHz(X2) 384kHz(X3) */ @@ -51,20 +51,14 @@ class sothello_state : public driver_device public: sothello_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_v9938(*this, "v9938") , m_maincpu(*this, "maincpu"), m_soundcpu(*this, "soundcpu"), - m_subcpu(*this, "sub"), + m_subcpu(*this, "subcpu"), + m_v9938(*this, "v9938"), m_msm(*this, "msm"), - m_bank1(*this, "bank1") + m_bank1(*this, "mainbank") { } - required_device m_v9938; - - int m_subcpu_status; - int m_soundcpu_busy; - int m_msm_data; - DECLARE_WRITE8_MEMBER(bank_w); DECLARE_READ8_MEMBER(subcpu_halt_set); DECLARE_READ8_MEMBER(subcpu_halt_clear); @@ -77,16 +71,25 @@ public: DECLARE_WRITE8_MEMBER(subcpu_status_w); DECLARE_READ8_MEMBER(subcpu_status_r); DECLARE_WRITE8_MEMBER(msm_cfg_w); + DECLARE_WRITE_LINE_MEMBER(adpcm_int); +protected: virtual void machine_start() override; virtual void machine_reset() override; + +private: + int m_subcpu_status; + int m_soundcpu_busy; + int m_msm_data; + TIMER_CALLBACK_MEMBER(subcpu_suspend); TIMER_CALLBACK_MEMBER(subcpu_resume); - DECLARE_WRITE_LINE_MEMBER(adpcm_int); void unlock_shared_ram(); + required_device m_maincpu; required_device m_soundcpu; required_device m_subcpu; + required_device m_v9938; required_device m_msm; required_memory_bank m_bank1; }; @@ -107,6 +110,10 @@ public: void sothello_state::machine_start() { m_bank1->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000); + + save_item(NAME(m_subcpu_status)); + save_item(NAME(m_soundcpu_busy)); + save_item(NAME(m_msm_data)); } WRITE8_MEMBER(sothello_state::bank_w) @@ -135,14 +142,14 @@ TIMER_CALLBACK_MEMBER(sothello_state::subcpu_resume) READ8_MEMBER(sothello_state::subcpu_halt_set) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(sothello_state::subcpu_suspend),this)); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(sothello_state::subcpu_suspend), this)); m_subcpu_status|=2; return 0; } READ8_MEMBER(sothello_state::subcpu_halt_clear) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(sothello_state::subcpu_resume),this)); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(sothello_state::subcpu_resume), this)); m_subcpu_status&=~1; m_subcpu_status&=~2; return 0; @@ -159,9 +166,9 @@ READ8_MEMBER(sothello_state::soundcpu_status_r) } static ADDRESS_MAP_START( maincpu_mem_map, AS_PROGRAM, 8, sothello_state ) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_MIRROR(0x1800) AM_SHARE("share1") + AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) + AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") + AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_MIRROR(0x1800) AM_SHARE("mainsub") AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -198,7 +205,6 @@ WRITE8_MEMBER(sothello_state::msm_cfg_w) WRITE8_MEMBER(sothello_state::msm_data_w) { m_msm_data = data; - } WRITE8_MEMBER(sothello_state::soundcpu_busyflag_set_w) @@ -213,11 +219,11 @@ WRITE8_MEMBER(sothello_state::soundcpu_busyflag_reset_w) WRITE8_MEMBER(sothello_state::soundcpu_int_clear_w) { - m_soundcpu->set_input_line(0, CLEAR_LINE ); + m_soundcpu->set_input_line(0, CLEAR_LINE); } static ADDRESS_MAP_START( soundcpu_mem_map, AS_PROGRAM, 8, sothello_state ) - AM_RANGE(0x0000, 0xdfff) AM_ROM + AM_RANGE(0x0000, 0xdfff) AM_ROM AM_REGION("soundcpu", 0) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END @@ -257,10 +263,10 @@ READ8_MEMBER(sothello_state::subcpu_status_r) } static ADDRESS_MAP_START( subcpu_mem_map, AS_PROGRAM, 8, sothello_state ) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(subcpu_status_r,subcpu_status_w) + AM_RANGE(0x0000, 0x1fff) AM_READWRITE(subcpu_status_r, subcpu_status_w) AM_RANGE(0x2000, 0x77ff) AM_RAM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1") /* upper 0x800 of 6264 is shared with main cpu */ - AM_RANGE(0x8000, 0xffff) AM_ROM + AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("mainsub") /* upper 0x800 of 6264 is shared with main cpu */ + AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("subcpu", 0) ADDRESS_MAP_END static INPUT_PORTS_START( sothello ) @@ -332,26 +338,29 @@ INPUT_PORTS_END WRITE_LINE_MEMBER(sothello_state::adpcm_int) { /* only 4 bits are used */ - m_msm->data_w(m_msm_data & 0x0f ); - m_soundcpu->set_input_line(0, ASSERT_LINE ); + m_msm->data_w(m_msm_data & 0x0f); + m_soundcpu->set_input_line(0, ASSERT_LINE); } void sothello_state::machine_reset() { + m_subcpu_status = 0; + m_soundcpu_busy = 0; + m_msm_data = 0; } static MACHINE_CONFIG_START( sothello ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",Z80, MAINCPU_CLOCK) + MCFG_CPU_ADD("maincpu", Z80, MAINCPU_CLOCK) MCFG_CPU_PROGRAM_MAP(maincpu_mem_map) MCFG_CPU_IO_MAP(maincpu_io_map) - MCFG_CPU_ADD("soundcpu",Z80, SOUNDCPU_CLOCK) + MCFG_CPU_ADD("soundcpu", Z80, SOUNDCPU_CLOCK) MCFG_CPU_PROGRAM_MAP(soundcpu_mem_map) MCFG_CPU_IO_MAP(soundcpu_io_map) - MCFG_CPU_ADD("sub", M6809, SUBCPU_CLOCK) + MCFG_CPU_ADD("subcpu", M6809, SUBCPU_CLOCK) MCFG_CPU_PROGRAM_MAP(subcpu_mem_map) MCFG_QUANTUM_TIME(attotime::from_hz(600)) @@ -367,7 +376,7 @@ static MACHINE_CONFIG_START( sothello ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("ymsnd", YM2203, YM_CLOCK) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("sub", 0)) + MCFG_YM2203_IRQ_HANDLER(INPUTLINE("subcpu", 0)) MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA")) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSWB")) MCFG_SOUND_ROUTE(0, "mono", 0.25) @@ -390,7 +399,7 @@ MACHINE_CONFIG_END ***************************************************************************/ ROM_START( sothello ) - ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "3.7c", 0x00000, 0x8000, CRC(47f97bd4) SHA1(52c9638f098fdcf66903fad7dafe3ab171758572) ) ROM_LOAD( "4.8c", 0x08000, 0x8000, CRC(a98414e9) SHA1(6d14e1f9c79b95101e0aa101034f398af09d7f32) ) ROM_LOAD( "5.9c", 0x10000, 0x8000, CRC(e5b5d61e) SHA1(2e4b3d85f41d0796a4d61eae40dd824769e1db86) ) @@ -399,8 +408,8 @@ ROM_START( sothello ) ROM_LOAD( "1.7a", 0x0000, 0x8000, CRC(6951536a) SHA1(64d07a692d6a167334c825dc173630b02584fdf6) ) ROM_LOAD( "2.8a", 0x8000, 0x8000, CRC(9c535317) SHA1(b2e69b489e111d6f8105e68fade6e5abefb825f7) ) - ROM_REGION( 0x10000, "sub", 0 ) - ROM_LOAD( "6.7f", 0x8000, 0x8000, CRC(ee80fc78) SHA1(9a9d7925847d7a36930f0761c70f67a9affc5e7c) ) + ROM_REGION( 0x8000, "subcpu", 0 ) + ROM_LOAD( "6.7f", 0x0000, 0x8000, CRC(ee80fc78) SHA1(9a9d7925847d7a36930f0761c70f67a9affc5e7c) ) ROM_END -GAME( 1986, sothello, 0, sothello, sothello, sothello_state, 0, ROT0, "Success / Fujiwara", "Super Othello", 0 ) +GAME( 1986, sothello, 0, sothello, sothello, sothello_state, 0, ROT0, "Success / Fujiwara", "Super Othello", MACHINE_SUPPORTS_SAVE )