summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2017-10-28 09:19:41 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2017-10-28 09:19:41 +0200
commite42be958c90bd6a8400d3bb1d103c8e99d8f49cc (patch)
treec87fd20269b3cdc28073e5350c88a4ee7f3457e6
parent2f5add827bf87fb41ce712b214a31ea35de3320c (diff)
sothello.cpp: very minor cleanups + preparation for save state support (nw)
-rw-r--r--src/devices/video/v9938.cpp1
-rw-r--r--src/mame/drivers/sothello.cpp73
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<v9938_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<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<cpu_device> m_subcpu;
+ required_device<v9938_device> m_v9938;
required_device<msm5205_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 )