summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/seibu/cabal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/seibu/cabal.cpp')
-rw-r--r--src/mame/seibu/cabal.cpp525
1 files changed, 381 insertions, 144 deletions
diff --git a/src/mame/seibu/cabal.cpp b/src/mame/seibu/cabal.cpp
index ed0ee86034d..1fb4b0da968 100644
--- a/src/mame/seibu/cabal.cpp
+++ b/src/mame/seibu/cabal.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
-// copyright-holders:Carlos A. Lozano
+// copyright-holders: Carlos A. Lozano
+
/******************************************************************
Cabal (c)1988/1989 Tad
@@ -163,15 +164,248 @@ Notes:
******************************************************************/
#include "emu.h"
-#include "cabal.h"
+
+#include "seibusound.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/upd4701.h"
+#include "sound/msm5205.h"
#include "sound/ymopm.h"
+
+#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "tilemap.h"
+
+
+namespace {
+
+class cabal_base_state : public driver_device
+{
+public:
+ cabal_base_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_msm(*this, "msm%u", 1U),
+ m_spriteram(*this, "spriteram"),
+ m_colorram(*this, "colorram"),
+ m_videoram(*this, "videoram")
+ { }
+
+protected:
+ virtual void video_start() override ATTR_COLD;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<cpu_device> m_audiocpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+ required_device_array<msm5205_device, 2> m_msm;
+
+ required_shared_ptr<uint16_t> m_spriteram;
+ required_shared_ptr<uint16_t> m_colorram;
+ required_shared_ptr<uint16_t> m_videoram;
+
+ void flipscreen_w(uint8_t data);
+ void background_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void text_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+private:
+ tilemap_t *m_background_layer = nullptr;
+ tilemap_t *m_text_layer = nullptr;
+
+ TILE_GET_INFO_MEMBER(get_back_tile_info);
+ TILE_GET_INFO_MEMBER(get_text_tile_info);
+
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+};
+
+class cabal_state : public cabal_base_state
+{
+public:
+ cabal_state(const machine_config &mconfig, device_type type, const char *tag) :
+ cabal_base_state(mconfig, type, tag),
+ m_seibu_sound(*this, "seibu_sound"),
+ m_adpcm(*this, "adpcm%u", 1U)
+ { }
+
+ void cabal(machine_config &config);
+ void cabalbl2(machine_config &config);
+ void cabalt(machine_config &config);
+
+ void init_cabal();
+
+private:
+ required_device<seibu_sound_device> m_seibu_sound;
+ required_device_array<seibu_adpcm_device, 2> m_adpcm;
+
+ void sound_irq_trigger_word_w(offs_t offset, uint16_t data, uint16_t mem_mask);
+
+ void main_map(address_map &map) ATTR_COLD;
+ void sound_decrypted_opcodes_map(address_map &map) ATTR_COLD;
+ void sound_map(address_map &map) ATTR_COLD;
+ void trackball_main_map(address_map &map) ATTR_COLD;
+ void cabalbl2_predecrypted_opcodes_map(address_map &map) ATTR_COLD;
+ void cabalbl2_sound_map(address_map &map) ATTR_COLD;
+};
+
+class cabalbl_state : public cabal_base_state
+{
+public:
+ cabalbl_state(const machine_config &mconfig, device_type type, const char *tag) :
+ cabal_base_state(mconfig, type, tag)
+ { }
+
+ void cabalbl(machine_config &config);
+
+protected:
+ virtual void machine_start() override ATTR_COLD;
+ virtual void machine_reset() override ATTR_COLD;
+
+private:
+ int m_sound_command[2]{};
+
+ void sndcmd_w(offs_t offset, uint16_t data);
+ void sound_irq_trigger_word_w(uint16_t data);
+ template<uint8_t Which> uint8_t snd_r();
+ void coin_w(uint8_t data);
+ template<uint8_t Which> void adpcm_w(uint8_t data);
+
+ void main_map(address_map &map) ATTR_COLD;
+ void sound_map(address_map &map) ATTR_COLD;
+ void talk1_map(address_map &map) ATTR_COLD;
+ void talk1_portmap(address_map &map) ATTR_COLD;
+ void talk2_map(address_map &map) ATTR_COLD;
+ void talk2_portmap(address_map &map) ATTR_COLD;
+};
+
+
+TILE_GET_INFO_MEMBER(cabal_base_state::get_back_tile_info)
+{
+ int tile = m_videoram[tile_index];
+ int const color = (tile >> 12) & 0xf;
+
+ tile &= 0xfff;
+
+ tileinfo.set(1, tile, color, 0);
+}
+
+TILE_GET_INFO_MEMBER(cabal_base_state::get_text_tile_info)
+{
+ int tile = m_colorram[tile_index];
+ int const color = (tile >> 10);
+
+ tile &= 0x3ff;
+
+ tileinfo.set(0, tile, color, 0);
+}
+
+
+void cabal_base_state::video_start()
+{
+ m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cabal_base_state::get_back_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16);
+ m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cabal_base_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
+
+ m_text_layer->set_transparent_pen(3);
+ m_background_layer->set_transparent_pen(15);
+}
+
+
+/**************************************************************************/
+
+void cabal_base_state::flipscreen_w(uint8_t data)
+{
+ int const flip = (data & 0x20) ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0;
+ m_background_layer->set_flip(flip);
+ m_text_layer->set_flip(flip);
+
+ flip_screen_set(data & 0x20);
+}
+
+void cabal_base_state::background_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ COMBINE_DATA(&m_videoram[offset]);
+ m_background_layer->mark_tile_dirty(offset);
+}
+
+void cabal_base_state::text_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ COMBINE_DATA(&m_colorram[offset]);
+ m_text_layer->mark_tile_dirty(offset);
+}
+
+
+/********************************************************************
+
+ Cabal Spriteram
+ ---------------
+
+ +0 .......x ........ Sprite enable bit
+ +0 ........ xxxxxxxx Sprite Y coordinate
+ +1 ..??.... ........ ??? unknown ???
+ +1 ....xxxx xxxxxxxx Sprite tile number
+ +2 .xxxx... ........ Sprite color bank
+ +2 .....x.. ........ Sprite flip x
+ +2 .......x xxxxxxxx Sprite X coordinate
+ +3 (unused)
+
+ -------E YYYYYYYY
+ ----BBTT TTTTTTTT
+ -CCCCF-X XXXXXXXX
+ -------- --------
+
+********************************************************************/
+
+void cabal_base_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ for (int offs = m_spriteram.bytes() / 2 - 4; offs >= 0; offs -= 4)
+ {
+ int const data0 = m_spriteram[offs];
+ int const data1 = m_spriteram[offs + 1];
+ int const data2 = m_spriteram[offs + 2];
+
+ if (data0 & 0x100)
+ {
+ int const tile_number = data1 & 0xfff;
+ int const color = (data2 & 0x7800) >> 11;
+ int sy = (data0 & 0xff);
+ int sx = (data2 & 0x1ff);
+ int flipx = (data2 & 0x0400);
+ int flipy = 0;
+
+ if (sx > 256) sx -= 512;
+
+ if (flip_screen())
+ {
+ sx = 240 - sx;
+ sy = 240 - sy;
+ flipx = !flipx;
+ flipy = !flipy;
+ }
+
+ m_gfxdecode->gfx(2)->transpen(bitmap, cliprect,
+ tile_number,
+ color,
+ flipx, flipy,
+ sx, sy, 0xf);
+ }
+ }
+}
+
+
+uint32_t cabal_base_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);
+ m_text_layer->draw(screen, bitmap, cliprect, 0, 0);
+ return 0;
+}
void cabalbl_state::machine_start()
@@ -203,12 +437,12 @@ void cabalbl_state::sndcmd_w(offs_t offset, uint16_t data)
-void cabal_state::sound_irq_trigger_word_w(offs_t, u16 data, u16 mem_mask)
+void cabal_state::sound_irq_trigger_word_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (ACCESSING_BITS_0_7)
m_seibu_sound->main_w(4, data & 0x00ff);
- /* spin for a while to let the Z80 read the command, otherwise coins "stick" */
+ // spin for a while to let the Z80 read the command, otherwise coins "stick"
m_maincpu->spin_until_time(attotime::from_usec(50));
}
@@ -223,15 +457,15 @@ void cabal_state::main_map(address_map &map)
{
map(0x00000, 0x3ffff).rom();
map(0x40000, 0x437ff).ram();
- map(0x43800, 0x43fff).ram().share("spriteram");
+ map(0x43800, 0x43fff).ram().share(m_spriteram);
map(0x44000, 0x4ffff).ram();
- map(0x60000, 0x607ff).ram().w(FUNC(cabal_state::text_videoram_w)).share("colorram");
- map(0x80000, 0x801ff).ram().w(FUNC(cabal_state::background_videoram_w)).share("videoram");
+ map(0x60000, 0x607ff).ram().w(FUNC(cabal_state::text_videoram_w)).share(m_colorram);
+ map(0x80000, 0x801ff).ram().w(FUNC(cabal_state::background_videoram_w)).share(m_videoram);
map(0x80200, 0x803ff).ram();
map(0xa0000, 0xa0001).portr("DSW");
map(0xa0008, 0xa0009).portr("IN2");
map(0xa0010, 0xa0011).portr("INPUTS");
- map(0xc0040, 0xc0041).nopw(); /* ??? */
+ map(0xc0040, 0xc0041).nopw(); // ???
map(0xc0081, 0xc0081).w(FUNC(cabal_state::flipscreen_w));
map(0xe0000, 0xe07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xe8000, 0xe800d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
@@ -255,15 +489,15 @@ void cabalbl_state::main_map(address_map &map)
{
map(0x00000, 0x3ffff).rom();
map(0x40000, 0x437ff).ram();
- map(0x43800, 0x43fff).ram().share("spriteram");
+ map(0x43800, 0x43fff).ram().share(m_spriteram);
map(0x44000, 0x4ffff).ram();
- map(0x60000, 0x607ff).ram().w(FUNC(cabalbl_state::text_videoram_w)).share("colorram");
- map(0x80000, 0x801ff).ram().w(FUNC(cabalbl_state::background_videoram_w)).share("videoram");
+ map(0x60000, 0x607ff).ram().w(FUNC(cabalbl_state::text_videoram_w)).share(m_colorram);
+ map(0x80000, 0x801ff).ram().w(FUNC(cabalbl_state::background_videoram_w)).share(m_videoram);
map(0x80200, 0x803ff).ram();
map(0xa0000, 0xa0001).portr("DSW");
map(0xa0008, 0xa0009).portr("JOY");
map(0xa0010, 0xa0011).portr("INPUTS");
- map(0xc0040, 0xc0041).nopw(); /* ??? */
+ map(0xc0040, 0xc0041).nopw(); // ???
map(0xc0081, 0xc0081).w(FUNC(cabalbl_state::flipscreen_w));
map(0xe0000, 0xe07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xe8000, 0xe8003).w(FUNC(cabalbl_state::sndcmd_w));
@@ -276,7 +510,7 @@ void cabalbl_state::main_map(address_map &map)
template<uint8_t Which>
uint8_t cabalbl_state::snd_r()
{
- return bitswap<8>(m_sound_command[Which], 7,2,4,5,3,6,1,0);
+ return bitswap<8>(m_sound_command[Which], 7, 2, 4, 5, 3, 6, 1, 0);
}
void cabalbl_state::coin_w(uint8_t data)
@@ -298,7 +532,7 @@ void cabal_state::sound_map(address_map &map)
map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
- map(0x4013, 0x4013).portr("COIN");
+ map(0x4013, 0x4013).r(m_seibu_sound, FUNC(seibu_sound_device::coin_r));
map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
map(0x401a, 0x401a).w(m_adpcm[0], FUNC(seibu_adpcm_device::ctl_w));
map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
@@ -325,7 +559,7 @@ void cabalbl_state::sound_map(address_map &map)
map(0x400a, 0x400a).r(FUNC(cabalbl_state::snd_r<0>));
map(0x400c, 0x400c).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x400e, 0x400f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
- map(0x6000, 0x6000).nopw(); /* ??? */
+ map(0x6000, 0x6000).nopw(); // ???
map(0x8000, 0xffff).rom();
}
@@ -340,7 +574,7 @@ void cabal_state::cabalbl2_sound_map(address_map &map)
map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
- map(0x4013, 0x4013).portr("COIN");
+ map(0x4013, 0x4013).r(m_seibu_sound, FUNC(seibu_sound_device::coin_r));
map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
map(0x401a, 0x401a).w(m_adpcm[0], FUNC(seibu_adpcm_device::ctl_w));
map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
@@ -355,13 +589,13 @@ void cabal_state::cabalbl2_predecrypted_opcodes_map(address_map &map)
map(0x8000, 0xffff).rom().region("audiocpu", 0x8000);
}
-/* the bootleg has 2x z80 sample players */
+// the bootleg has 2x z80 sample players
template<uint8_t Which>
void cabalbl_state::adpcm_w(uint8_t data)
{
m_msm[Which]->reset_w(BIT(data, 7));
- /* ?? bit 6?? */
+ // ?? bit 6??
m_msm[Which]->data_w(data);
m_msm[Which]->vclk_w(1);
m_msm[Which]->vclk_w(0);
@@ -449,14 +683,14 @@ static INPUT_PORTS_START( common )
PORT_DIPSETTING( 0x2000, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) )
- PORT_DIPUNKNOWN_DIPLOC( 0x4000, 0x4000, "SW2:7" ) /* Left blank in the manual */
+ PORT_DIPUNKNOWN_DIPLOC( 0x4000, 0x4000, "SW2:7" ) // Left blank in the manual
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(4) /* read through sound cpu */
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(4) /* read through sound cpu */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(4) // read through sound CPU
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(4) // read through sound CPU
INPUT_PORTS_END
static INPUT_PORTS_START( cabalt )
@@ -496,7 +730,7 @@ static INPUT_PORTS_START( cabalj )
/* Since the Trackball version was produced first, and it doesn't use
the third button, Pin 24 of the JAMMA connector ('JAMMA button 3')
- has no trace on the pcb. To work around this design issue the
+ has no trace on the PCB. To work around this design issue the
manufacturer had to use pin 15 which is usually the test / service
button
*/
@@ -506,7 +740,7 @@ static INPUT_PORTS_START( cabalj )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0ff0, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) /* the 3rd button connects to the service switch */
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) // the 3rd button connects to the service switch
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START1 )
@@ -601,30 +835,30 @@ static const gfx_layout sprite_layout =
static GFXDECODE_START( gfx_cabal )
- GFXDECODE_ENTRY( "gfx1", 0x000000, text_layout, 0, 1024/4 )
- GFXDECODE_ENTRY( "gfx2", 0x000000, tile_layout, 32*16, 16 )
- GFXDECODE_ENTRY( "gfx3", 0x000000, sprite_layout, 16*16, 16 )
+ GFXDECODE_ENTRY( "chars", 0x000000, text_layout, 0, 1024/4 )
+ GFXDECODE_ENTRY( "tiles", 0x000000, tile_layout, 32*16, 16 )
+ GFXDECODE_ENTRY( "sprites", 0x000000, sprite_layout, 16*16, 16 )
GFXDECODE_END
void cabal_state::cabal(machine_config &config)
{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */
+ // basic machine hardware
+ M68000(config, m_maincpu, XTAL(20'000'000) / 2); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &cabal_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(cabal_state::irq1_line_hold));
- Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
+ Z80(config, m_audiocpu, XTAL(3'579'545)); // verified on PCB
m_audiocpu->set_addrmap(AS_PROGRAM, &cabal_state::sound_map);
m_audiocpu->set_addrmap(AS_OPCODES, &cabal_state::sound_decrypted_opcodes_map);
m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("audiocpu");
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.60); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_refresh_hz(59.60); // verified on PCB
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
screen.set_size(256, 256);
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(cabal_state::screen_update));
@@ -633,28 +867,29 @@ void cabal_state::cabal(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cabal);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
- /* sound hardware */
+ // sound hardware
SEIBU_SOUND(config, m_seibu_sound, 0);
m_seibu_sound->int_callback().set_inputline(m_audiocpu, 0);
+ m_seibu_sound->coin_io_callback().set_ioport("COIN");
m_seibu_sound->set_rom_tag("audiocpu");
m_seibu_sound->ym_read_callback().set("ymsnd", FUNC(ym2151_device::read));
m_seibu_sound->ym_write_callback().set("ymsnd", FUNC(ym2151_device::write));
SPEAKER(config, "mono").front_center();
- ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); // verified on PCB
ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler));
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
- SEIBU_ADPCM(config, m_adpcm[0], XTAL(12'000'000)/32/48, m_msm[0]);
- SEIBU_ADPCM(config, m_adpcm[1], XTAL(12'000'000)/32/48, m_msm[1]);
+ SEIBU_ADPCM(config, m_adpcm[0], XTAL(12'000'000) /32 / 48, m_msm[0]);
+ SEIBU_ADPCM(config, m_adpcm[1], XTAL(12'000'000) /32 / 48, m_msm[1]);
- MSM5205(config, m_msm[0], XTAL(12'000'000)/32); /* verified on pcb */
+ MSM5205(config, m_msm[0], XTAL(12'000'000) / 32); // verified on PCB
m_msm[0]->vck_callback().set(m_adpcm[0], FUNC(seibu_adpcm_device::msm_int));
m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125 kHz */
m_msm[0]->add_route(ALL_OUTPUTS, "mono", 0.40);
- MSM5205(config, m_msm[1], XTAL(12'000'000)/32); /* verified on pcb */
+ MSM5205(config, m_msm[1], XTAL(12'000'000) / 32); // verified on PCB
m_msm[1]->vck_callback().set(m_adpcm[1], FUNC(seibu_adpcm_device::msm_int));
m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125 kHz */
m_msm[1]->add_route(ALL_OUTPUTS, "mono", 0.40);
@@ -684,34 +919,34 @@ void cabal_state::cabalbl2(machine_config &config)
}
-/* the bootleg has different sound hardware (2 extra Z80s for ADPCM playback) */
+// the bootleg has different sound hardware (2 extra Z80s for ADPCM playback)
void cabalbl_state::cabalbl(machine_config &config)
{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */
+ // basic machine hardware
+ M68000(config, m_maincpu, XTAL(20'000'000) / 2); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &cabalbl_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(cabalbl_state::irq1_line_hold));
- Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
+ Z80(config, m_audiocpu, XTAL(3'579'545)); // verified on PCB
m_audiocpu->set_addrmap(AS_PROGRAM, &cabalbl_state::sound_map);
- /* there are 2x z80s for the ADPCM */
- z80_device &adpcm_1(Z80(config, "adpcm_1", XTAL(3'579'545))); /* verified on pcb */
+ // there are 2x z80s for the ADPCM
+ z80_device &adpcm_1(Z80(config, "adpcm_1", XTAL(3'579'545))); // verified on PCB
adpcm_1.set_addrmap(AS_PROGRAM, &cabalbl_state::talk1_map);
adpcm_1.set_addrmap(AS_IO, &cabalbl_state::talk1_portmap);
adpcm_1.set_periodic_int(FUNC(cabalbl_state::irq0_line_hold), attotime::from_hz(8000));
- z80_device &adpcm_2(Z80(config, "adpcm_2", XTAL(3'579'545))); /* verified on pcb */
+ z80_device &adpcm_2(Z80(config, "adpcm_2", XTAL(3'579'545))); // verified on PCB
adpcm_2.set_addrmap(AS_PROGRAM, &cabalbl_state::talk2_map);
adpcm_2.set_addrmap(AS_IO, &cabalbl_state::talk2_portmap);
adpcm_2.set_periodic_int(FUNC(cabalbl_state::irq0_line_hold), attotime::from_hz(8000));
config.set_maximum_quantum(attotime::from_hz(600));
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
screen.set_size(256, 256);
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(cabalbl_state::screen_update));
@@ -720,43 +955,43 @@ void cabalbl_state::cabalbl(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cabal);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, "soundlatch");
GENERIC_LATCH_8(config, "soundlatch2");
GENERIC_LATCH_8(config, "soundlatch3");
- ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); // verified on PCB
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
- MSM5205(config, m_msm[0], XTAL(12'000'000)/32); /* verified on pcb (no resonator) */
+ MSM5205(config, m_msm[0], XTAL(12'000'000) / 32); // verified on PCB (no resonator)
m_msm[0]->set_prescaler_selector(msm5205_device::SEX_4B);
m_msm[0]->add_route(ALL_OUTPUTS, "mono", 0.60);
- MSM5205(config, m_msm[1], XTAL(12'000'000)/32); /* verified on pcb (no resonator)*/
+ MSM5205(config, m_msm[1], XTAL(12'000'000) / 32); // verified on PCB (no resonator)
m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B);
m_msm[1]->add_route(ALL_OUTPUTS, "mono", 0.60);
}
ROM_START( cabal )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "13.7h", 0x00000, 0x10000, CRC(00abbe0c) SHA1(bacf17444abfb4f56248ff56e37b0aa2b1a3800d) )
ROM_LOAD16_BYTE( "11.6h", 0x00001, 0x10000, CRC(44736281) SHA1(1d6da95ef96d9c02aea70791e1cb87b70097d5ed) )
ROM_LOAD16_BYTE( "12.7j", 0x20000, 0x10000, CRC(d763a47c) SHA1(146d8082a404b6eddaf2dc9ba41a997949c17f8a) )
ROM_LOAD16_BYTE( "10.6j", 0x20001, 0x10000, CRC(96d5e8af) SHA1(ed7d854f08e87db5ae6cf526eafa029dfd2bfb9f) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "4-3n", 0x0000, 0x2000, CRC(4038eff2) SHA1(0bcafc1b78c3bef9a0e9b822c482ea4a942fd180) )
ROM_LOAD( "3-3p", 0x8000, 0x8000, CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
- ROM_REGION( 0x4000, "gfx1", 0 )
- ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) ) /* characters */
+ ROM_REGION( 0x4000, "chars", 0 )
+ ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) )
- /* The Joystick versions use a sub-board instead of the mask roms
- the content is the same as the mask roms */
- ROM_REGION( 0x80000, "gfx2", 0 )
+ /* The Joystick versions use a sub-board instead of the mask ROMs
+ the content is the same as the mask ROMs */
+ ROM_REGION( 0x80000, "tiles", 0 )
ROM_LOAD16_BYTE( "bg_rom1.bin", 0x00000, 0x10000, CRC(1023319b) SHA1(38fcc8159776b82779b3163329b07c61be939fae) )
ROM_LOAD16_BYTE( "bg_rom2.bin", 0x00001, 0x10000, CRC(3b6d2b09) SHA1(4cdcd22836dce4ee6348c4e6df7c6360d12ef912) )
ROM_LOAD16_BYTE( "bg_rom3.bin", 0x20000, 0x10000, CRC(420b0801) SHA1(175be6e3ca3cb98672e4cdbc9b5f5b007bc531c9) )
@@ -766,7 +1001,7 @@ ROM_START( cabal )
ROM_LOAD16_BYTE( "bg_rom7.bin", 0x60000, 0x10000, CRC(d28d921e) SHA1(e133de5129a33ca9ff449948a959621bbfc58c11) )
ROM_LOAD16_BYTE( "bg_rom8.bin", 0x60001, 0x10000, CRC(67e4fe47) SHA1(15620fc5e985a249677da333b77331e40d2b24ab) )
- ROM_REGION( 0x80000, "gfx3", 0 )
+ ROM_REGION( 0x80000, "sprites", 0 )
ROM_LOAD16_BYTE( "sp_rom1.bin", 0x00000, 0x10000, CRC(34d3cac8) SHA1(a6a2304fb576267db2c72cfbf0a3f66740ebe60e) )
ROM_LOAD16_BYTE( "sp_rom2.bin", 0x00001, 0x10000, CRC(4e49c28e) SHA1(ea74443a9423b14611a1f97e44692badfedd0ead) )
ROM_LOAD16_BYTE( "sp_rom3.bin", 0x20000, 0x10000, CRC(7065e840) SHA1(baa8cd28be60c678d782ecfabde6cd5e36480415) )
@@ -776,19 +1011,19 @@ ROM_START( cabal )
ROM_LOAD16_BYTE( "sp_rom7.bin", 0x60000, 0x10000, CRC(55c44764) SHA1(7fad1f2084664b5b4d1384c8081371b0c79c4f5e) )
ROM_LOAD16_BYTE( "sp_rom8.bin", 0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
- ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
+ ROM_REGION( 0x0200, "proms", 0 ) // unknown
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
ROM_LOAD( "prom10.4j", 0x0100, 0x0100, CRC(261c93bc) SHA1(942470198143d584d3766f28587d1879abd912c1) )
ROM_END
ROM_START( cabala )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-a-9.7h", 0x00000, 0x10000, CRC(00abbe0c) SHA1(bacf17444abfb4f56248ff56e37b0aa2b1a3800d) )
ROM_LOAD16_BYTE( "epr-a-7.6h", 0x00001, 0x10000, CRC(c89608db) SHA1(a56e77526227af5b693eea9ef74da0d9d57cc55c) )
ROM_LOAD16_BYTE( "epr-a-8.7k", 0x20000, 0x08000, CRC(fe84788a) SHA1(29c49ebbe62357c27befcdcc4c19841a8bf32b2d) )
@@ -796,26 +1031,26 @@ ROM_START( cabala )
ROM_LOAD16_BYTE( "epr-a-6.6k", 0x20001, 0x08000, CRC(81eb1355) SHA1(bbf926d40164d78319e982da0e8fb8ec4d4f8b87) )
ROM_RELOAD(0x30001,0x08000)
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "epr-a-4.3n", 0x0000, 0x2000, CRC(4038eff2) SHA1(0bcafc1b78c3bef9a0e9b822c482ea4a942fd180) )
ROM_LOAD( "epr-a-3.3p", 0x8000, 0x4000, CRC(c0097c55) SHA1(874f813c1b466dab2d15a707e340b9bdb200246c) )
- ROM_REGION( 0x8000, "gfx1", 0 )
- ROM_LOAD( "epr-a-5.6s", 0x00000, 0x08000, CRC(189033fd) SHA1(814f0cbc5f72345c04922d6d7c986f99d57335fa) ) /* characters */
+ ROM_REGION( 0x8000, "chars", 0 )
+ ROM_LOAD( "epr-a-5.6s", 0x00000, 0x08000, CRC(189033fd) SHA1(814f0cbc5f72345c04922d6d7c986f99d57335fa) )
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) ) /* tiles */
+ ROM_REGION( 0x80000, "tiles", 0 )
+ ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) )
- ROM_REGION( 0x80000, "gfx3", 0 )
- ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
+ ROM_REGION( 0x80000, "sprites", 0 )
+ ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "epr-a-2.1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "epr-a-1.1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
- ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
+ ROM_REGION( 0x0200, "proms", 0 ) // unknown
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
ROM_LOAD( "prom10.4j", 0x0100, 0x0100, CRC(261c93bc) SHA1(942470198143d584d3766f28587d1879abd912c1) )
ROM_END
@@ -823,54 +1058,54 @@ ROM_END
ROM_START( cabaluk )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "9-7h.bin", 0x00000, 0x10000, CRC(f66378e5) SHA1(b3802f24863f857506ae1aeddc4e5c2908810695) )
ROM_LOAD16_BYTE( "7-6h.bin", 0x00001, 0x10000, CRC(960991ac) SHA1(7e3ab0673585424206d791e8b0ed6af38e2ae8a9) )
ROM_LOAD16_BYTE( "8-7k.bin", 0x20000, 0x10000, CRC(82160ab0) SHA1(a486f30ec3068025b690da4c1ae7295e79e7cd74) )
ROM_LOAD16_BYTE( "6-6k.bin", 0x20001, 0x10000, CRC(7ef2ecc7) SHA1(43d621e2e7cfea8d906a968047817e23a3e4d047) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "4-3n", 0x0000, 0x2000, CRC(4038eff2) SHA1(0bcafc1b78c3bef9a0e9b822c482ea4a942fd180) )
ROM_LOAD( "3-3p", 0x8000, 0x8000, CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
- ROM_REGION( 0x4000, "gfx1", 0 )
- ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) ) /* characters */
+ ROM_REGION( 0x4000, "chars", 0 )
+ ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) )
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) ) /* tiles */
+ ROM_REGION( 0x80000, "tiles", 0 )
+ ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) )
- ROM_REGION( 0x80000, "gfx3", 0 )
- ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
+ ROM_REGION( 0x80000, "sprites", 0 )
+ ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
- ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
+ ROM_REGION( 0x0200, "proms", 0 ) // unknown
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
ROM_LOAD( "prom10.4j", 0x0100, 0x0100, CRC(261c93bc) SHA1(942470198143d584d3766f28587d1879abd912c1) )
ROM_END
ROM_START( cabalukj )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "13.7h", 0x00000, 0x10000, CRC(00abbe0c) SHA1(bacf17444abfb4f56248ff56e37b0aa2b1a3800d) )
ROM_LOAD16_BYTE( "14.6h", 0x00001, 0x10000, CRC(5b04b101) SHA1(fc58b3a3854dbbf65251486a009035060349a66c) )
ROM_LOAD16_BYTE( "12.7j", 0x20000, 0x10000, CRC(d763a47c) SHA1(146d8082a404b6eddaf2dc9ba41a997949c17f8a) )
ROM_LOAD16_BYTE( "10.6j", 0x20001, 0x10000, CRC(96d5e8af) SHA1(ed7d854f08e87db5ae6cf526eafa029dfd2bfb9f) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "4-3n", 0x0000, 0x2000, CRC(4038eff2) SHA1(0bcafc1b78c3bef9a0e9b822c482ea4a942fd180) )
ROM_LOAD( "3-3p", 0x8000, 0x8000, CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
- ROM_REGION( 0x4000, "gfx1", 0 )
- ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) ) /* characters */
+ ROM_REGION( 0x4000, "chars", 0 )
+ ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) )
- /* The Joystick versions use a sub-board instead of the mask roms
- the content is the same as the mask roms */
- ROM_REGION( 0x80000, "gfx2", 0 )
+ /* The Joystick versions use a sub-board instead of the mask ROMs
+ the content is the same as the mask ROMs */
+ ROM_REGION( 0x80000, "tiles", 0 )
ROM_LOAD16_BYTE( "bg_rom1.bin", 0x00000, 0x10000, CRC(1023319b) SHA1(38fcc8159776b82779b3163329b07c61be939fae) )
ROM_LOAD16_BYTE( "bg_rom2.bin", 0x00001, 0x10000, CRC(3b6d2b09) SHA1(4cdcd22836dce4ee6348c4e6df7c6360d12ef912) )
ROM_LOAD16_BYTE( "bg_rom3.bin", 0x20000, 0x10000, CRC(420b0801) SHA1(175be6e3ca3cb98672e4cdbc9b5f5b007bc531c9) )
@@ -880,7 +1115,7 @@ ROM_START( cabalukj )
ROM_LOAD16_BYTE( "bg_rom7.bin", 0x60000, 0x10000, CRC(d28d921e) SHA1(e133de5129a33ca9ff449948a959621bbfc58c11) )
ROM_LOAD16_BYTE( "bg_rom8.bin", 0x60001, 0x10000, CRC(67e4fe47) SHA1(15620fc5e985a249677da333b77331e40d2b24ab) )
- ROM_REGION( 0x80000, "gfx3", 0 )
+ ROM_REGION( 0x80000, "sprites", 0 )
ROM_LOAD16_BYTE( "sp_rom1.bin", 0x00000, 0x10000, CRC(34d3cac8) SHA1(a6a2304fb576267db2c72cfbf0a3f66740ebe60e) )
ROM_LOAD16_BYTE( "sp_rom2.bin", 0x00001, 0x10000, CRC(4e49c28e) SHA1(ea74443a9423b14611a1f97e44692badfedd0ead) )
ROM_LOAD16_BYTE( "sp_rom3.bin", 0x20000, 0x10000, CRC(7065e840) SHA1(baa8cd28be60c678d782ecfabde6cd5e36480415) )
@@ -890,75 +1125,75 @@ ROM_START( cabalukj )
ROM_LOAD16_BYTE( "sp_rom7.bin", 0x60000, 0x10000, CRC(55c44764) SHA1(7fad1f2084664b5b4d1384c8081371b0c79c4f5e) )
ROM_LOAD16_BYTE( "sp_rom8.bin", 0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
- ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
+ ROM_REGION( 0x0200, "proms", 0 ) // unknown
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
ROM_LOAD( "prom10.4j", 0x0100, 0x0100, CRC(261c93bc) SHA1(942470198143d584d3766f28587d1879abd912c1) )
ROM_END
ROM_START( cabalus )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "h7_512.bin", 0x00000, 0x10000, CRC(8fe16fb4) SHA1(fedb2d0c6c21516f68cfa99093772fe8fa862389) )
ROM_LOAD16_BYTE( "h6_512.bin", 0x00001, 0x10000, CRC(6968101c) SHA1(d65005ac235dae5c32bbcd182cb365e8fa067fe7) )
ROM_LOAD16_BYTE( "k7_512.bin", 0x20000, 0x10000, CRC(562031a2) SHA1(ed5ef50a66c7797a7f345e479162cf83d6777f7c) )
ROM_LOAD16_BYTE( "k6_512.bin", 0x20001, 0x10000, CRC(4fda2856) SHA1(a213cb7443cdccbad3f2610e8d42b2e149cbedb9) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "4-3n", 0x0000, 0x2000, CRC(4038eff2) SHA1(0bcafc1b78c3bef9a0e9b822c482ea4a942fd180) )
ROM_LOAD( "3-3p", 0x8000, 0x8000, CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
- ROM_REGION( 0x4000, "gfx1", 0 )
- ROM_LOAD( "t6_128.bin", 0x00000, 0x04000, CRC(1ccee214) SHA1(7c842bc1c6002ec90693160fd5407345092420bb) ) /* characters */
+ ROM_REGION( 0x4000, "chars", 0 )
+ ROM_LOAD( "t6_128.bin", 0x00000, 0x04000, CRC(1ccee214) SHA1(7c842bc1c6002ec90693160fd5407345092420bb) )
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) ) /* tiles */
+ ROM_REGION( 0x80000, "tiles", 0 )
+ ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) )
- ROM_REGION( 0x80000, "gfx3", 0 )
- ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
+ ROM_REGION( 0x80000, "sprites", 0 )
+ ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples? */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
- ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
+ ROM_REGION( 0x0200, "proms", 0 ) // unknown
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
ROM_LOAD( "prom10.4j", 0x0100, 0x0100, CRC(261c93bc) SHA1(942470198143d584d3766f28587d1879abd912c1) )
ROM_END
ROM_START( cabalus2 )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "9-7h", 0x00000, 0x10000, CRC(ebbb9484) SHA1(2c77d5b4acdc37720dc7ccab526862981bf8da51) )
ROM_LOAD16_BYTE( "7-6h", 0x00001, 0x10000, CRC(51aeb49e) SHA1(df38dc58d8c6fa3d35904bf34e29111e7bd523ad) )
ROM_LOAD16_BYTE( "8-7k", 0x20000, 0x10000, CRC(4c24ed9a) SHA1(f0fc25c3e7dc8ac71fdad3e91ab618cd7a037123) )
ROM_LOAD16_BYTE( "6-6k", 0x20001, 0x10000, CRC(681620e8) SHA1(c9eacfb55059986dbecc2fae1339069a852f917b) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "4-3n", 0x0000, 0x2000, CRC(4038eff2) SHA1(0bcafc1b78c3bef9a0e9b822c482ea4a942fd180) )
ROM_LOAD( "3-3p", 0x8000, 0x8000, CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
- ROM_REGION( 0x4000, "gfx1", 0 )
- ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) ) /* characters */
+ ROM_REGION( 0x4000, "chars", 0 )
+ ROM_LOAD( "5-6s", 0x00000, 0x04000, CRC(6a76955a) SHA1(733cb4b862b5dac97c2641b58f2362471e62fcf2) )
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) ) /* tiles */
+ ROM_REGION( 0x80000, "tiles", 0 )
+ ROM_LOAD( "tad-2.7s", 0x00000, 0x80000, CRC(13ca7ae1) SHA1(b26bb4876a6518e3809e0fa4d442616508b3e7e8) )
- ROM_REGION( 0x80000, "gfx3", 0 )
- ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) ) /* sprites */
+ ROM_REGION( 0x80000, "sprites", 0 )
+ ROM_LOAD( "tad-1.5e", 0x00000, 0x80000, CRC(8324a7fe) SHA1(aed4470df35ec18e65e35bddc9c217a5019fdcbf) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "2-1s", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "1-1u", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
- ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
+ ROM_REGION( 0x0200, "proms", 0 ) // unknown
ROM_LOAD( "prom05.8e", 0x0000, 0x0100, CRC(a94b18c2) SHA1(e7db4c1efc9e313e36eef3f53ae5b2e573a38920) )
ROM_LOAD( "prom10.4j", 0x0100, 0x0100, CRC(261c93bc) SHA1(942470198143d584d3766f28587d1879abd912c1) )
ROM_END
@@ -1000,21 +1235,21 @@ Note: The bootleg has *3* Z80s
*/
ROM_START( cabalbl )
- ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD16_BYTE( "cabal_24.bin", 0x00000, 0x10000, CRC(00abbe0c) SHA1(bacf17444abfb4f56248ff56e37b0aa2b1a3800d) )
ROM_LOAD16_BYTE( "cabal_22.bin", 0x00001, 0x10000, CRC(78c4af27) SHA1(31049d1ec76d76284682de7a0592f63d97019240) )
ROM_LOAD16_BYTE( "cabal_23.bin", 0x20000, 0x10000, CRC(d763a47c) SHA1(146d8082a404b6eddaf2dc9ba41a997949c17f8a) )
ROM_LOAD16_BYTE( "cabal_21.bin", 0x20001, 0x10000, CRC(96d5e8af) SHA1(ed7d854f08e87db5ae6cf526eafa029dfd2bfb9f) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "cabal_11.bin", 0x0000, 0x10000, CRC(d308a543) SHA1(4f45db42512f83266001daee55d06f49e7908e35) )
- ROM_REGION( 0x8000, "gfx1", 0 )
- ROM_LOAD( "cabal_20.bin", 0x00000, 0x08000, CRC(189033fd) SHA1(814f0cbc5f72345c04922d6d7c986f99d57335fa) ) /* characters */
+ ROM_REGION( 0x8000, "chars", 0 )
+ ROM_LOAD( "cabal_20.bin", 0x00000, 0x08000, CRC(189033fd) SHA1(814f0cbc5f72345c04922d6d7c986f99d57335fa) )
- /* The bootleg versions use a sub-board instead of the mask roms
- the content is the same as the mask roms */
- ROM_REGION( 0x80000, "gfx2", 0 )
+ /* The bootleg versions use a sub-board instead of the mask ROMs
+ the content is the same as the mask ROMs */
+ ROM_REGION( 0x80000, "tiles", 0 )
ROM_LOAD16_BYTE( "cabal_15.bin", 0x00000, 0x10000, CRC(1023319b) SHA1(38fcc8159776b82779b3163329b07c61be939fae) )
ROM_LOAD16_BYTE( "cabal_17.bin", 0x00001, 0x10000, CRC(3b6d2b09) SHA1(4cdcd22836dce4ee6348c4e6df7c6360d12ef912) )
ROM_LOAD16_BYTE( "cabal_14.bin", 0x20000, 0x10000, CRC(420b0801) SHA1(175be6e3ca3cb98672e4cdbc9b5f5b007bc531c9) )
@@ -1024,7 +1259,7 @@ ROM_START( cabalbl )
ROM_LOAD16_BYTE( "cabal_13.bin", 0x60000, 0x10000, CRC(d28d921e) SHA1(e133de5129a33ca9ff449948a959621bbfc58c11) )
ROM_LOAD16_BYTE( "cabal_19.bin", 0x60001, 0x10000, CRC(67e4fe47) SHA1(15620fc5e985a249677da333b77331e40d2b24ab) )
- ROM_REGION( 0x80000, "gfx3", 0 )
+ ROM_REGION( 0x80000, "sprites", 0 )
ROM_LOAD16_BYTE( "cabal_04.bin", 0x00000, 0x10000, CRC(34d3cac8) SHA1(a6a2304fb576267db2c72cfbf0a3f66740ebe60e) )
ROM_LOAD16_BYTE( "cabal_05.bin", 0x00001, 0x10000, CRC(4e49c28e) SHA1(ea74443a9423b14611a1f97e44692badfedd0ead) )
ROM_LOAD16_BYTE( "cabal_03.bin", 0x20000, 0x10000, CRC(7065e840) SHA1(baa8cd28be60c678d782ecfabde6cd5e36480415) )
@@ -1035,36 +1270,36 @@ ROM_START( cabalbl )
ROM_LOAD16_BYTE( "cabal_08.bin", 0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
ROM_REGION( 0x10000, "adpcm_1", 0 )
- ROM_LOAD( "cabal_09.bin", 0x00000, 0x10000, CRC(4ffa7fe3) SHA1(381d8e765a7b94678fb3308965c748bbe9f8e247) ) /* Z80 code/adpcm data */
+ ROM_LOAD( "cabal_09.bin", 0x00000, 0x10000, CRC(4ffa7fe3) SHA1(381d8e765a7b94678fb3308965c748bbe9f8e247) ) // Z80 code/ADPCM data
ROM_REGION( 0x10000, "adpcm_2", 0 )
- ROM_LOAD( "cabal_10.bin", 0x00000, 0x10000, CRC(958789b6) SHA1(344c3ee8a1e272b56499e5c0415bb714aec0ddcf) ) /* Z80 code/adpcm data */
+ ROM_LOAD( "cabal_10.bin", 0x00000, 0x10000, CRC(958789b6) SHA1(344c3ee8a1e272b56499e5c0415bb714aec0ddcf) ) // Z80 code/ADPCM data
ROM_END
// alternate bootleg
-// this is much closer to the original, the only real difference is the soundcpu has been pre-decrypted,
-// with the encrypted/decrypted data split across the rom
+// this is much closer to the original, the only real difference is the sound CPU has been pre-decrypted,
+// with the encrypted/decrypted data split across the ROM
// based on stickers present on the board it appears to have been manufactured by 'TAB-Austria' and is marked 'CA02'
ROM_START( cabalbl2 )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 64k for cpu code */
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD16_BYTE( "c9.bin", 0x00000, 0x10000, CRC(00abbe0c) SHA1(bacf17444abfb4f56248ff56e37b0aa2b1a3800d) )
ROM_LOAD16_BYTE( "c7.bin", 0x00001, 0x10000, CRC(44736281) SHA1(1d6da95ef96d9c02aea70791e1cb87b70097d5ed) )
ROM_LOAD16_BYTE( "c8.bin", 0x20000, 0x10000, CRC(d763a47c) SHA1(146d8082a404b6eddaf2dc9ba41a997949c17f8a) )
ROM_LOAD16_BYTE( "c6.bin", 0x20001, 0x10000, CRC(96d5e8af) SHA1(ed7d854f08e87db5ae6cf526eafa029dfd2bfb9f) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "c4.bin", 0x2000, 0x2000, CRC(82f9f296) SHA1(2769ffdc28f003684e77d4806be07b87d50be31c) )
ROM_CONTINUE(0x0000,0x2000)
ROM_IGNORE(0x4000)
ROM_LOAD( "c3.bin", 0x8000, 0x8000, CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
- ROM_REGION( 0x4000, "gfx1", 0 )
- ROM_LOAD( "c5.bin", 0x00000, 0x04000, CRC(183e4834) SHA1(05ab0c388be8701930a9de437978206cda6fed68) ) /* characters */
+ ROM_REGION( 0x4000, "chars", 0 )
+ ROM_LOAD( "c5.bin", 0x00000, 0x04000, CRC(183e4834) SHA1(05ab0c388be8701930a9de437978206cda6fed68) )
ROM_CONTINUE(0x0000,0x4000)
- ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_REGION( 0x80000, "tiles", 0 )
ROM_LOAD16_BYTE( "c14.bin", 0x00000, 0x10000, CRC(1023319b) SHA1(38fcc8159776b82779b3163329b07c61be939fae) )
ROM_LOAD16_BYTE( "c10.bin", 0x00001, 0x10000, CRC(3b6d2b09) SHA1(4cdcd22836dce4ee6348c4e6df7c6360d12ef912) )
ROM_LOAD16_BYTE( "c15.bin", 0x20000, 0x10000, CRC(420b0801) SHA1(175be6e3ca3cb98672e4cdbc9b5f5b007bc531c9) )
@@ -1074,7 +1309,7 @@ ROM_START( cabalbl2 )
ROM_LOAD16_BYTE( "c17.bin", 0x60000, 0x10000, CRC(d28d921e) SHA1(e133de5129a33ca9ff449948a959621bbfc58c11) )
ROM_LOAD16_BYTE( "c13.bin", 0x60001, 0x10000, CRC(67e4fe47) SHA1(15620fc5e985a249677da333b77331e40d2b24ab) )
- ROM_REGION( 0x80000, "gfx3", 0 )
+ ROM_REGION( 0x80000, "sprites", 0 )
ROM_LOAD16_BYTE( "c18.bin", 0x00000, 0x10000, CRC(34d3cac8) SHA1(a6a2304fb576267db2c72cfbf0a3f66740ebe60e) )
ROM_LOAD16_BYTE( "c22.bin", 0x00001, 0x10000, CRC(4e49c28e) SHA1(ea74443a9423b14611a1f97e44692badfedd0ead) )
ROM_LOAD16_BYTE( "c19.bin", 0x20000, 0x10000, CRC(7065e840) SHA1(baa8cd28be60c678d782ecfabde6cd5e36480415) )
@@ -1084,10 +1319,10 @@ ROM_START( cabalbl2 )
ROM_LOAD16_BYTE( "c21.bin", 0x60000, 0x10000, CRC(55c44764) SHA1(7fad1f2084664b5b4d1384c8081371b0c79c4f5e) )
ROM_LOAD16_BYTE( "c25.bin", 0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
- ROM_REGION( 0x10000, "adpcm1", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm1", 0 )
ROM_LOAD( "c2.bin", 0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
- ROM_REGION( 0x10000, "adpcm2", 0 ) /* Samples */
+ ROM_REGION( 0x10000, "adpcm2", 0 )
ROM_LOAD( "c1.bin", 0x00000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
ROM_END
@@ -1098,13 +1333,15 @@ void cabal_state::init_cabal()
m_adpcm[1]->decrypt();
}
+} // anonymous namespace
+
-GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, init_cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, init_cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Korea?, Joystick)", MACHINE_SUPPORTS_SAVE ) // Korea?
-GAME( 1989, cabalukj, cabal, cabal, cabalj, cabal_state, init_cabal, ROT0, "TAD Corporation (Electrocoin license)", "Cabal (UK, Joystick)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, init_cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, init_cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Korea?, Joystick)", MACHINE_SUPPORTS_SAVE ) // Korea?
+GAME( 1989, cabalukj, cabal, cabal, cabalj, cabal_state, init_cabal, ROT0, "TAD Corporation (Electrocoin license)", "Cabal (UK, Joystick)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, cabalbl_state, empty_init, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cabalbl2, cabal, cabalbl2, cabalj, cabal_state, init_cabal, ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cabalbl2, cabal, cabalbl2, cabalj, cabal_state, init_cabal, ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cabalus, cabal, cabalt, cabalt, cabal_state, init_cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cabalus2, cabal, cabalt, cabalt, cabal_state, init_cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, cabaluk, cabal, cabalt, cabalt, cabal_state, init_cabal, ROT0, "TAD Corporation (Electrocoin license)", "Cabal (UK, Trackball)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cabalus, cabal, cabalt, cabalt, cabal_state, init_cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cabalus2, cabal, cabalt, cabalt, cabal_state, init_cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cabaluk, cabal, cabalt, cabalt, cabal_state, init_cabal, ROT0, "TAD Corporation (Electrocoin license)", "Cabal (UK, Trackball)", MACHINE_SUPPORTS_SAVE )