summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2015-03-05 18:13:53 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2015-03-05 18:13:53 +0100
commit8301a2478de5ecf435e7a7d874d2fd5b4096f8f9 (patch)
tree3aeea19ace97bb03ecc5aba79bdf59b9b0273028
parent7e3e5cd7f05d02aecc90951ed0812e9a3a73b4d4 (diff)
cabal.c, deadang.c: added save state support (nw)
-rw-r--r--src/mame/drivers/cabal.c46
-rw-r--r--src/mame/drivers/deadang.c34
-rw-r--r--src/mame/includes/cabal.h44
-rw-r--r--src/mame/includes/deadang.h43
-rw-r--r--src/mame/video/cabal.c18
-rw-r--r--src/mame/video/deadang.c46
6 files changed, 129 insertions, 102 deletions
diff --git a/src/mame/drivers/cabal.c b/src/mame/drivers/cabal.c
index 3bd57425a79..1ac68036d78 100644
--- a/src/mame/drivers/cabal.c
+++ b/src/mame/drivers/cabal.c
@@ -48,6 +48,17 @@ Dip locations verified with Fabtek manual for the trackball version
#include "sound/msm5205.h"
#include "includes/cabal.h"
+MACHINE_START_MEMBER(cabal_state,cabal)
+{
+ save_item(NAME(m_last));
+}
+
+MACHINE_START_MEMBER(cabal_state,cabalbl)
+{
+ save_item(NAME(m_sound_command1));
+ save_item(NAME(m_sound_command2));
+}
+
MACHINE_RESET_MEMBER(cabal_state,cabalbl)
{
m_sound_command1 = m_sound_command2 = 0xff;
@@ -94,7 +105,7 @@ READ16_MEMBER(cabal_state::track_r)
}
-WRITE16_MEMBER(cabal_state::cabal_sound_irq_trigger_word_w)
+WRITE16_MEMBER(cabal_state::sound_irq_trigger_word_w)
{
m_seibu_sound->main_word_w(space,4,data,mem_mask);
@@ -114,17 +125,17 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, cabal_state )
AM_RANGE(0x40000, 0x437ff) AM_RAM
AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x44000, 0x4ffff) AM_RAM
- AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(cabal_text_videoram16_w) AM_SHARE("colorram")
- AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(cabal_background_videoram16_w) AM_SHARE("videoram")
+ AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram")
+ AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x80200, 0x803ff) AM_RAM
AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW")
AM_RANGE(0xa0008, 0xa000f) AM_READ(track_r)
AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
AM_RANGE(0xc0000, 0xc0001) AM_WRITE(track_reset_w)
AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
- AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w)
+ AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabal_sound_irq_trigger_word_w) // fix coin insertion
+ AM_RANGE(0xe8008, 0xe8009) AM_WRITE(sound_irq_trigger_word_w) // fix coin insertion
AM_RANGE(0xe8000, 0xe800d) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
ADDRESS_MAP_END
@@ -133,14 +144,14 @@ static ADDRESS_MAP_START( cabalbl_main_map, AS_PROGRAM, 16, cabal_state )
AM_RANGE(0x40000, 0x437ff) AM_RAM
AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x44000, 0x4ffff) AM_RAM
- AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(cabal_text_videoram16_w) AM_SHARE("colorram")
- AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(cabal_background_videoram16_w) AM_SHARE("videoram")
+ AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram")
+ AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x80200, 0x803ff) AM_RAM
AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW")
AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("JOY")
AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
- AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w)
+ AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w)
AM_RANGE(0xe8004, 0xe8005) AM_READ(soundlatch2_word_r)
@@ -464,6 +475,8 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(sound_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cabal_state,cabal)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -471,7 +484,7 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
+ MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cabal)
@@ -521,6 +534,7 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state )
MCFG_QUANTUM_TIME(attotime::from_hz(600))
+ MCFG_MACHINE_START_OVERRIDE(cabal_state,cabalbl)
MCFG_MACHINE_RESET_OVERRIDE(cabal_state,cabalbl)
/* video hardware */
@@ -529,7 +543,7 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
+ MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cabal)
@@ -847,10 +861,10 @@ DRIVER_INIT_MEMBER(cabal_state,cabalbl2)
}
-GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick version)", 0 )
-GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", 0 ) // korea?
-GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND )
-GAME( 1988, cabalbl2,cabal, cabal, cabalj, cabal_state, cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", 0 )
+GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick version)", GAME_SUPPORTS_SAVE )
+GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", GAME_SUPPORTS_SAVE ) // korea?
+GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1988, cabalbl2,cabal, cabal, cabalj, cabal_state, cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", 0 )
-GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", 0 )
+GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", GAME_SUPPORTS_SAVE )
+GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/deadang.c b/src/mame/drivers/deadang.c
index 9c51c520cb0..8b2fb6edbd5 100644
--- a/src/mame/drivers/deadang.c
+++ b/src/mame/drivers/deadang.c
@@ -63,7 +63,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, deadang_state )
AM_RANGE(0x05000, 0x05fff) AM_WRITEONLY
AM_RANGE(0x06000, 0x0600f) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
AM_RANGE(0x06010, 0x07fff) AM_WRITEONLY
- AM_RANGE(0x08000, 0x087ff) AM_WRITE(deadang_text_w) AM_SHARE("videoram")
+ AM_RANGE(0x08000, 0x087ff) AM_WRITE(text_w) AM_SHARE("videoram")
AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY
AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2")
AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW")
@@ -76,9 +76,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, deadang_state )
AM_RANGE(0x00000, 0x037ff) AM_RAM
- AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(deadang_foreground_w) AM_SHARE("video_data")
+ AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(foreground_w) AM_SHARE("video_data")
AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x08000, 0x08001) AM_WRITE(deadang_bank_w)
+ AM_RANGE(0x08000, 0x08001) AM_WRITE(bank_w)
AM_RANGE(0x0c000, 0x0c001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xe0000, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -206,7 +206,7 @@ GFXDECODE_END
/* Interrupt Generators */
-TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_main_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::main_scanline)
{
int scanline = param;
@@ -217,7 +217,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_main_scanline)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xc8/4);
}
-TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_sub_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::sub_scanline)
{
int scanline = param;
@@ -235,11 +235,11 @@ static MACHINE_CONFIG_START( deadang, deadang_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, deadang_main_scanline, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, main_scanline, "screen", 0, 1)
MCFG_CPU_ADD("sub", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */
MCFG_CPU_PROGRAM_MAP(sub_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, deadang_sub_scanline, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, sub_scanline, "screen", 0, 1)
SEIBU3A_SOUND_SYSTEM_CPU(XTAL_14_31818MHz/4)
@@ -251,7 +251,7 @@ static MACHINE_CONFIG_START( deadang, deadang_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update_deadang)
+ MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", deadang)
@@ -267,13 +267,13 @@ MACHINE_CONFIG_END
/* ROMs */
ROM_START( deadang )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("2.18h", 0x0c0000, 0x10000, CRC(1bc05b7e) SHA1(21833150a1f5ab543999a67f5b3bfbaf703e5508) )
ROM_LOAD16_BYTE("4.22h", 0x0c0001, 0x10000, CRC(5751d4e7) SHA1(2e1a30c20199461fd876849f7563fef1d9a80c2d) )
ROM_LOAD16_BYTE("1.18f", 0x0e0000, 0x10000, CRC(8e7b15cc) SHA1(7e4766953c1adf04be18207a2aa6f5e861ea5f6c) )
ROM_LOAD16_BYTE("3.21f", 0x0e0001, 0x10000, CRC(e784b1fa) SHA1(3f41d31e0b36b9a2fab5e9998bb4146dfa0a97eb) )
- ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */
+ ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("5.6bh", 0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) )
ROM_LOAD16_BYTE("6.9b", 0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) )
@@ -314,13 +314,13 @@ ROM_START( deadang )
ROM_END
ROM_START( leadang )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("2.18h", 0x0c0000, 0x10000, CRC(611247e0) SHA1(1b9ad50f67ba3a3a9e5a0d6e33f4d4be2fc20446) ) // sldh
ROM_LOAD16_BYTE("4.22h", 0x0c0001, 0x10000, CRC(348c1201) SHA1(277dd77dcbc950299de0fd56a4f66db8f90752ad) ) // sldh
ROM_LOAD16_BYTE("1.18f", 0x0e0000, 0x10000, CRC(fb952d71) SHA1(c6578cddf019872e6005c3a9e8e3e024d17d8c6e) ) // sldh
ROM_LOAD16_BYTE("3.22f", 0x0e0001, 0x10000, CRC(2271c6df) SHA1(774a92bb698606e58d0c74ea07d7eaecf766dddf) )
- ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */
+ ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("5.6b", 0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) )
ROM_LOAD16_BYTE("6.9b", 0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) )
@@ -361,13 +361,13 @@ ROM_START( leadang )
ROM_END
ROM_START( ghunter )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("ggh-2.h18", 0x0c0000, 0x10000, CRC(7ccc6fee) SHA1(bccc283d82f080157f0521457b04fdd1d63caafe) )
ROM_LOAD16_BYTE("ggh-4.h22", 0x0c0001, 0x10000, CRC(d1f23ad7) SHA1(2668729af797ccab52ac2bf519d43ab2fa9e54ce) )
ROM_LOAD16_BYTE("ggh-1.f18", 0x0e0000, 0x10000, CRC(0d6ff111) SHA1(209d26170446b43d1d463737b447e30aaca614a7) )
ROM_LOAD16_BYTE("ggh-3.f22", 0x0e0001, 0x10000, CRC(66dec38d) SHA1(78dd3143265c3da90d1a0ab2c4f42b4e32716af8) )
- ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */
+ ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("ggh-5.b6", 0x0e0000, 0x10000, CRC(1f612f3b) SHA1(71840fa0e988828a819d371f082ce31d5a5e3a30) )
ROM_LOAD16_BYTE("ggh-6.b10", 0x0e0001, 0x10000, CRC(63e18e56) SHA1(5183d0909a7c795e76540723fb710a5a75730298) )
@@ -428,6 +428,6 @@ DRIVER_INIT_MEMBER(deadang_state,ghunter)
/* Game Drivers */
-GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", 0 )
-GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", 0 )
-GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", 0 )
+GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", GAME_SUPPORTS_SAVE )
+GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/cabal.h b/src/mame/includes/cabal.h
index 92035066970..6bd2ff2ebcd 100644
--- a/src/mame/includes/cabal.h
+++ b/src/mame/includes/cabal.h
@@ -6,9 +6,6 @@ class cabal_state : public driver_device
public:
cabal_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_spriteram(*this, "spriteram"),
- m_colorram(*this, "colorram"),
- m_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_seibu_sound(*this, "seibu_sound"),
@@ -17,11 +14,10 @@ public:
m_msm1(*this, "msm1"),
m_msm2(*this, "msm2"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
-
- required_shared_ptr<UINT16> m_spriteram;
- required_shared_ptr<UINT16> m_colorram;
- required_shared_ptr<UINT16> m_videoram;
+ m_palette(*this, "palette"),
+ m_spriteram(*this, "spriteram"),
+ m_colorram(*this, "colorram"),
+ m_videoram(*this, "videoram") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
@@ -33,31 +29,47 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ required_shared_ptr<UINT16> m_spriteram;
+ required_shared_ptr<UINT16> m_colorram;
+ required_shared_ptr<UINT16> m_videoram;
+
tilemap_t *m_background_layer;
tilemap_t *m_text_layer;
int m_sound_command1;
int m_sound_command2;
int m_last[4];
- DECLARE_WRITE16_MEMBER(cabalbl_sndcmd_w);
+
+ // common
+ DECLARE_WRITE16_MEMBER(flipscreen_w);
+ DECLARE_WRITE16_MEMBER(background_videoram_w);
+ DECLARE_WRITE16_MEMBER(text_videoram_w);
+
+ // cabal specific
DECLARE_WRITE16_MEMBER(track_reset_w);
DECLARE_READ16_MEMBER(track_r);
- DECLARE_WRITE16_MEMBER(cabal_sound_irq_trigger_word_w);
+ DECLARE_WRITE16_MEMBER(sound_irq_trigger_word_w);
+
+ // cabalbl specific
+ DECLARE_WRITE16_MEMBER(cabalbl_sndcmd_w);
DECLARE_WRITE16_MEMBER(cabalbl_sound_irq_trigger_word_w);
DECLARE_READ8_MEMBER(cabalbl_snd2_r);
DECLARE_READ8_MEMBER(cabalbl_snd1_r);
DECLARE_WRITE8_MEMBER(cabalbl_coin_w);
- DECLARE_WRITE16_MEMBER(cabal_flipscreen_w);
- DECLARE_WRITE16_MEMBER(cabal_background_videoram16_w);
- DECLARE_WRITE16_MEMBER(cabal_text_videoram16_w);
DECLARE_WRITE8_MEMBER(cabalbl_1_adpcm_w);
DECLARE_WRITE8_MEMBER(cabalbl_2_adpcm_w);
+
DECLARE_DRIVER_INIT(cabal);
DECLARE_DRIVER_INIT(cabalbl2);
+ DECLARE_MACHINE_START(cabal);
+ DECLARE_MACHINE_START(cabalbl);
+ DECLARE_MACHINE_RESET(cabalbl);
+ virtual void video_start();
+
TILE_GET_INFO_MEMBER(get_back_tile_info);
TILE_GET_INFO_MEMBER(get_text_tile_info);
- virtual void video_start();
- DECLARE_MACHINE_RESET(cabalbl);
- UINT32 screen_update_cabal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+
void seibu_sound_bootleg(const char *cpu,int length);
};
diff --git a/src/mame/includes/deadang.h b/src/mame/includes/deadang.h
index 6aca0dbdcad..ff8ece8d97c 100644
--- a/src/mame/includes/deadang.h
+++ b/src/mame/includes/deadang.h
@@ -5,54 +5,57 @@ class deadang_state : public driver_device
public:
deadang_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_spriteram(*this, "spriteram"),
- m_videoram(*this, "videoram"),
- m_scroll_ram(*this, "scroll_ram"),
- m_video_data(*this, "video_data"),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
m_seibu_sound(*this, "seibu_sound"),
m_adpcm1(*this, "adpcm1"),
m_adpcm2(*this, "adpcm2"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
-
- required_shared_ptr<UINT16> m_spriteram;
- required_shared_ptr<UINT16> m_videoram;
- required_shared_ptr<UINT16> m_scroll_ram;
- required_shared_ptr<UINT16> m_video_data;
+ m_palette(*this, "palette"),
+ m_spriteram(*this, "spriteram"),
+ m_videoram(*this, "videoram"),
+ m_scroll_ram(*this, "scroll_ram"),
+ m_video_data(*this, "video_data") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_device<seibu_sound_device> m_seibu_sound;
required_device<seibu_adpcm_device> m_adpcm1;
required_device<seibu_adpcm_device> m_adpcm2;
-
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ required_shared_ptr<UINT16> m_spriteram;
+ required_shared_ptr<UINT16> m_videoram;
+ required_shared_ptr<UINT16> m_scroll_ram;
+ required_shared_ptr<UINT16> m_video_data;
+
tilemap_t *m_pf3_layer;
tilemap_t *m_pf2_layer;
tilemap_t *m_pf1_layer;
tilemap_t *m_text_layer;
- int m_deadangle_tilebank;
- int m_deadangle_oldtilebank;
+ int m_tilebank;
+ int m_oldtilebank;
+ DECLARE_WRITE16_MEMBER(foreground_w);
+ DECLARE_WRITE16_MEMBER(text_w);
+ DECLARE_WRITE16_MEMBER(bank_w);
DECLARE_READ16_MEMBER(ghunter_trackball_low_r);
DECLARE_READ16_MEMBER(ghunter_trackball_high_r);
- DECLARE_WRITE16_MEMBER(deadang_foreground_w);
- DECLARE_WRITE16_MEMBER(deadang_text_w);
- DECLARE_WRITE16_MEMBER(deadang_bank_w);
+
DECLARE_DRIVER_INIT(deadang);
DECLARE_DRIVER_INIT(ghunter);
+ virtual void video_start();
+
TILEMAP_MAPPER_MEMBER(bg_scan);
TILE_GET_INFO_MEMBER(get_pf3_tile_info);
TILE_GET_INFO_MEMBER(get_pf2_tile_info);
TILE_GET_INFO_MEMBER(get_pf1_tile_info);
TILE_GET_INFO_MEMBER(get_text_tile_info);
- virtual void video_start();
- UINT32 screen_update_deadang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(deadang_main_scanline);
- TIMER_DEVICE_CALLBACK_MEMBER(deadang_sub_scanline);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ TIMER_DEVICE_CALLBACK_MEMBER(main_scanline);
+ TIMER_DEVICE_CALLBACK_MEMBER(sub_scanline);
};
diff --git a/src/mame/video/cabal.c b/src/mame/video/cabal.c
index 908ccbad8b0..4f1ada04ba9 100644
--- a/src/mame/video/cabal.c
+++ b/src/mame/video/cabal.c
@@ -1,6 +1,6 @@
/***************************************************************************
- video.c
+ cabal.c
Functions to emulate the video hardware of the machine.
@@ -48,7 +48,7 @@ void cabal_state::video_start()
/**************************************************************************/
-WRITE16_MEMBER(cabal_state::cabal_flipscreen_w)
+WRITE16_MEMBER(cabal_state::flipscreen_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -60,13 +60,13 @@ WRITE16_MEMBER(cabal_state::cabal_flipscreen_w)
}
}
-WRITE16_MEMBER(cabal_state::cabal_background_videoram16_w)
+WRITE16_MEMBER(cabal_state::background_videoram_w)
{
COMBINE_DATA(&m_videoram[offset]);
m_background_layer->mark_tile_dirty(offset);
}
-WRITE16_MEMBER(cabal_state::cabal_text_videoram16_w)
+WRITE16_MEMBER(cabal_state::text_videoram_w)
{
COMBINE_DATA(&m_colorram[offset]);
m_text_layer->mark_tile_dirty(offset);
@@ -97,13 +97,11 @@ WRITE16_MEMBER(cabal_state::cabal_text_videoram16_w)
void cabal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int offs,data0,data1,data2;
- UINT16 *spriteram16 = m_spriteram;
-
for( offs = m_spriteram.bytes()/2 - 4; offs >= 0; offs -= 4 )
{
- data0 = spriteram16[offs];
- data1 = spriteram16[offs+1];
- data2 = spriteram16[offs+2];
+ data0 = m_spriteram[offs];
+ data1 = m_spriteram[offs+1];
+ data2 = m_spriteram[offs+2];
if( data0 & 0x100 )
{
@@ -134,7 +132,7 @@ void cabal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
-UINT32 cabal_state::screen_update_cabal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 cabal_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_background_layer->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
draw_sprites(bitmap,cliprect);
diff --git a/src/mame/video/deadang.c b/src/mame/video/deadang.c
index 868cc79799d..606a7f08e8b 100644
--- a/src/mame/video/deadang.c
+++ b/src/mame/video/deadang.c
@@ -4,27 +4,26 @@
/******************************************************************************/
-WRITE16_MEMBER(deadang_state::deadang_foreground_w)
+WRITE16_MEMBER(deadang_state::foreground_w)
{
COMBINE_DATA(&m_video_data[offset]);
m_pf1_layer->mark_tile_dirty(offset );
}
-WRITE16_MEMBER(deadang_state::deadang_text_w)
+WRITE16_MEMBER(deadang_state::text_w)
{
- UINT16 *videoram = m_videoram;
- COMBINE_DATA(&videoram[offset]);
+ COMBINE_DATA(&m_videoram[offset]);
m_text_layer->mark_tile_dirty(offset );
}
-WRITE16_MEMBER(deadang_state::deadang_bank_w)
+WRITE16_MEMBER(deadang_state::bank_w)
{
if (ACCESSING_BITS_0_7)
{
- m_deadangle_tilebank = data&1;
- if (m_deadangle_tilebank!=m_deadangle_oldtilebank)
+ m_tilebank = data&1;
+ if (m_tilebank!=m_oldtilebank)
{
- m_deadangle_oldtilebank = m_deadangle_tilebank;
+ m_oldtilebank = m_tilebank;
m_pf1_layer->mark_all_dirty();
}
}
@@ -57,14 +56,13 @@ TILE_GET_INFO_MEMBER(deadang_state::get_pf1_tile_info)
int color=tile >> 12;
tile=tile&0xfff;
- SET_TILE_INFO_MEMBER(2,tile+m_deadangle_tilebank*0x1000,color,0);
+ SET_TILE_INFO_MEMBER(2,tile+m_tilebank*0x1000,color,0);
}
TILE_GET_INFO_MEMBER(deadang_state::get_text_tile_info)
{
- UINT16 *videoram = m_videoram;
- int tile=(videoram[tile_index] & 0xff) | ((videoram[tile_index] >> 6) & 0x300);
- int color=(videoram[tile_index] >> 8)&0xf;
+ int tile=(m_videoram[tile_index] & 0xff) | ((m_videoram[tile_index] >> 6) & 0x300);
+ int color=(m_videoram[tile_index] >> 8)&0xf;
SET_TILE_INFO_MEMBER(0,tile,color,0);
}
@@ -79,19 +77,21 @@ void deadang_state::video_start()
m_pf2_layer->set_transparent_pen(15);
m_pf1_layer->set_transparent_pen(15);
m_text_layer->set_transparent_pen(15);
+
+ save_item(NAME(m_tilebank));
+ save_item(NAME(m_oldtilebank));
}
void deadang_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT16 *spriteram16 = m_spriteram;
int offs,fx,fy,x,y,color,sprite,pri;
for (offs = 0; offs<0x800/2; offs+=4)
{
/* Don't draw empty sprite table entries */
- if ((spriteram16[offs+3] & 0xff00)!=0xf00) continue;
+ if ((m_spriteram[offs+3] & 0xff00)!=0xf00) continue;
- switch (spriteram16[offs+2]&0xc000) {
+ switch (m_spriteram[offs+2]&0xc000) {
default:
case 0xc000: pri=0; break; /* Unknown */
case 0x8000: pri=0; break; /* Over all playfields */
@@ -99,15 +99,15 @@ void deadang_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
case 0x0000: pri=0xf0|0xcc; break; /* Under middle playfield */
}
- fx= spriteram16[offs+0]&0x2000;
- fy= spriteram16[offs+0]&0x4000;
- y = spriteram16[offs+0] & 0xff;
- x = spriteram16[offs+2] & 0xff;
+ fx= m_spriteram[offs+0]&0x2000;
+ fy= m_spriteram[offs+0]&0x4000;
+ y = m_spriteram[offs+0] & 0xff;
+ x = m_spriteram[offs+2] & 0xff;
if (fy) fy=0; else fy=1;
- if (spriteram16[offs+2]&0x100) x=0-(0xff-x);
+ if (m_spriteram[offs+2]&0x100) x=0-(0xff-x);
- color = (spriteram16[offs+1]>>12)&0xf;
- sprite = spriteram16[offs+1]&0xfff;
+ color = (m_spriteram[offs+1]>>12)&0xf;
+ sprite = m_spriteram[offs+1]&0xfff;
if (flip_screen()) {
x=240-x;
@@ -123,7 +123,7 @@ void deadang_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
}
}
-UINT32 deadang_state::screen_update_deadang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 deadang_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* Setup the tilemaps */
m_pf3_layer->set_scrolly(0, ((m_scroll_ram[0x01]&0xf0)<<4)+((m_scroll_ram[0x02]&0x7f)<<1)+((m_scroll_ram[0x02]&0x80)>>7) );