summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cave.cpp
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-11-23 02:40:33 +0900
committer Ivan Vangelista <mesgnet@yahoo.it>2018-11-22 18:40:33 +0100
commita23771ab39bfaced20e82640b9122fe78c7fd273 (patch)
tree281cf0c78bc919e705262637269395eea6c1ce89 /src/mame/drivers/cave.cpp
parentfabd214f57445791de064591bd2cede79fe9e6fe (diff)
cave.cpp : Cleanups (#4020)
* cave.cpp : Remove unnecessary palette init, Add notes, Fix spacings, Remove some MCFGs, Cleanup namings, Remove register_postload cave.h : Use private: * cave,cpp : Fix save * cave.cpp : Fix spacing * cave.cpp : Cleanup some ACCESSING_BITs, Write handlers, Inputs, gfxdecodes, Correct namings, Fix tilemap update
Diffstat (limited to 'src/mame/drivers/cave.cpp')
-rw-r--r--src/mame/drivers/cave.cpp1218
1 files changed, 566 insertions, 652 deletions
diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp
index df20177d6a7..4a8ac61a708 100644
--- a/src/mame/drivers/cave.cpp
+++ b/src/mame/drivers/cave.cpp
@@ -112,7 +112,7 @@ void cave_state::update_irq_state()
m_maincpu->set_input_line(m_irq_level, CLEAR_LINE);
}
-TIMER_CALLBACK_MEMBER(cave_state::cave_vblank_end)
+TIMER_CALLBACK_MEMBER(cave_state::vblank_end)
{
if (m_kludge == 3) /* mazinger metmqstr */
{
@@ -122,29 +122,29 @@ TIMER_CALLBACK_MEMBER(cave_state::cave_vblank_end)
m_agallet_vblank_irq = 0;
}
-TIMER_DEVICE_CALLBACK_MEMBER(cave_state::cave_vblank_start)
+TIMER_DEVICE_CALLBACK_MEMBER(cave_state::vblank_start)
{
m_vblank_irq = 1;
update_irq_state();
- cave_get_sprite_info(0);
+ get_sprite_info(0);
m_agallet_vblank_irq = 1;
m_vblank_end_timer->adjust(attotime::from_usec(2000));
}
-TIMER_DEVICE_CALLBACK_MEMBER(cave_state::cave_vblank_start_left)
+TIMER_DEVICE_CALLBACK_MEMBER(cave_state::vblank_start_left)
{
- cave_get_sprite_info(1);
+ get_sprite_info(1);
}
-TIMER_DEVICE_CALLBACK_MEMBER(cave_state::cave_vblank_start_right)
+TIMER_DEVICE_CALLBACK_MEMBER(cave_state::vblank_start_right)
{
- cave_get_sprite_info(2);
+ get_sprite_info(2);
}
/* Called once/frame to generate the VBLANK interrupt */
-INTERRUPT_GEN_MEMBER(cave_state::cave_interrupt)
+INTERRUPT_GEN_MEMBER(cave_state::interrupt)
{
m_int_timer->adjust(attotime::from_usec(17376 - m_time_vblank_irq));
}
-INTERRUPT_GEN_MEMBER(cave_state::cave_interrupt_ppsatan)
+INTERRUPT_GEN_MEMBER(cave_state::interrupt_ppsatan)
{
m_int_timer->adjust (attotime::from_usec(17376 - m_time_vblank_irq));
m_int_timer_left->adjust (attotime::from_usec(17376 - m_time_vblank_irq));
@@ -175,7 +175,7 @@ WRITE_LINE_MEMBER(cave_state::sound_irq_gen)
/* Reads the cause of the interrupt and clears the state */
-READ16_MEMBER(cave_state::cave_irq_cause_r)
+u16 cave_state::irq_cause_r(offs_t offset)
{
int result = 0x0003;
@@ -217,12 +217,12 @@ READ16_MEMBER(cave_state::cave_irq_cause_r)
/* We need a FIFO buffer for sailormn, where the inter-CPUs
communication is *really* tight */
-READ8_MEMBER(cave_state::soundflags_r)
+u8 cave_state::soundflags_r()
{
// bit 2 is low: can read command (lo)
// bit 3 is low: can read command (hi)
-// return (m_sound_flag1 ? 0 : 4) |
-// (m_sound_flag2 ? 0 : 8) ;
+// return (m_sound_flag[0] ? 0 : 4) |
+// (m_sound_flag[1] ? 0 : 8) ;
return 0;
}
@@ -230,8 +230,8 @@ READ16_MEMBER(cave_state::soundflags_ack_r)
{
// bit 0 is low: can write command
// bit 1 is low: can read answer
-// return ((m_sound_flag1 | m_sound_flag2) ? 1 : 0) |
-// ((m_soundbuf_wptr != m_soundbuf_rptr) ? 0 : 2) ;
+// return ((m_sound_flag[0] | m_sound_flag[1]) ? 1 : 0) |
+// (m_soundbuf_empty ? 0 : 2) ;
return m_soundbuf_empty ? 2 : 0;
}
@@ -239,8 +239,8 @@ READ16_MEMBER(cave_state::soundflags_ack_r)
/* Main CPU: write a 16 bit sound latch and generate a NMI on the sound CPU */
WRITE16_MEMBER(cave_state::sound_cmd_w)
{
-// m_sound_flag1 = 1;
-// m_sound_flag2 = 1;
+// m_sound_flag[0] = 1;
+// m_sound_flag[1] = 1;
m_soundlatch->write(space, offset, data, mem_mask);
m_maincpu->spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply
}
@@ -248,14 +248,14 @@ WRITE16_MEMBER(cave_state::sound_cmd_w)
/* Sound CPU: read the low 8 bits of the 16 bit sound latch */
READ8_MEMBER(cave_state::soundlatch_lo_r)
{
-// m_sound_flag1 = 0;
+// m_sound_flag[0] = 0;
return m_soundlatch->read(space, offset, 0x00ff) & 0xff;
}
/* Sound CPU: read the high 8 bits of the 16 bit sound latch */
READ8_MEMBER(cave_state::soundlatch_hi_r)
{
-// m_sound_flag2 = 0;
+// m_sound_flag[1] = 0;
return m_soundlatch->read(space, offset, 0xff00) >> 8;
}
@@ -300,51 +300,45 @@ WRITE8_MEMBER(cave_state::soundlatch_ack_w)
***************************************************************************/
-WRITE16_MEMBER(cave_state::cave_eeprom_msb_w)
+void cave_state::eeprom_w(u8 data)
{
- if (data & ~0xfe00)
+ if (data & ~0xfe)
logerror("%s: Unknown EEPROM bit written %04X\n", machine().describe_context(), data);
- if (ACCESSING_BITS_8_15) // even address
- {
- machine().bookkeeping().coin_lockout_w(1,~data & 0x8000);
- machine().bookkeeping().coin_lockout_w(0,~data & 0x4000);
- machine().bookkeeping().coin_counter_w(1, data & 0x2000);
- machine().bookkeeping().coin_counter_w(0, data & 0x1000);
+ machine().bookkeeping().coin_lockout_w(1, BIT(~data, 7));
+ machine().bookkeeping().coin_lockout_w(0, BIT(~data, 6));
+ machine().bookkeeping().coin_counter_w(1, BIT( data, 5));
+ machine().bookkeeping().coin_counter_w(0, BIT( data, 4));
- // latch the bit
- m_eeprom->di_write((data & 0x0800) >> 11);
+ // latch the bit
+ m_eeprom->di_write(BIT(data, 3));
- // reset line asserted: reset.
- m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
+ // reset line asserted: reset.
+ m_eeprom->cs_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE);
- // clock line asserted: write latch or select next bit to read
- m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
- }
+ // clock line asserted: write latch or select next bit to read
+ m_eeprom->clk_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE);
}
-WRITE16_MEMBER(cave_state::sailormn_eeprom_msb_w)
+void cave_state::sailormn_eeprom_w(u8 data)
{
- sailormn_tilebank_w(data & 0x0100);
- cave_eeprom_msb_w(space, offset, data & ~0x0100, mem_mask);
+ sailormn_tilebank_w(BIT(data, 0));
+ eeprom_w(data & ~0x01);
}
-WRITE16_MEMBER(cave_state::hotdogst_eeprom_msb_w)
+void cave_state::hotdogst_eeprom_w(u8 data)
{
- if (ACCESSING_BITS_8_15) // even address
- {
- // latch the bit
- m_eeprom->di_write((data & 0x0800) >> 11);
+ // latch the bit
+ m_eeprom->di_write(BIT(data, 3));
- // reset line asserted: reset.
- m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
+ // reset line asserted: reset.
+ m_eeprom->cs_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE);
- // clock line asserted: write latch or select next bit to read
- m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
- }
+ // clock line asserted: write latch or select next bit to read
+ m_eeprom->clk_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE);
}
-WRITE16_MEMBER(cave_state::ppsatan_eeprom_msb_w)
+void cave_state::ppsatan_eeprom_w(offs_t offset, u16 data, u16 mem_mask)
{
if (data & ~0x000f)
logerror("%s: Unknown EEPROM bit written %04X\n",machine().describe_context(),data);
@@ -365,62 +359,50 @@ WRITE16_MEMBER(cave_state::ppsatan_eeprom_msb_w)
}
-WRITE16_MEMBER(cave_state::cave_eeprom_lsb_w)
+void cave_state::guwange_eeprom_w(u8 data)
{
- if (data & ~0x00ef)
+ if (data & ~0xef)
logerror("%s: Unknown EEPROM bit written %04X\n",machine().describe_context(),data);
- if (ACCESSING_BITS_0_7) // odd address
- {
- machine().bookkeeping().coin_lockout_w(1, ~data & 0x0008);
- machine().bookkeeping().coin_lockout_w(0, ~data & 0x0004);
- machine().bookkeeping().coin_counter_w(1, data & 0x0002);
- machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ machine().bookkeeping().coin_lockout_w(1, BIT(~data, 3));
+ machine().bookkeeping().coin_lockout_w(0, BIT(~data, 2));
+ machine().bookkeeping().coin_counter_w(1, BIT( data, 1));
+ machine().bookkeeping().coin_counter_w(0, BIT( data, 0));
- // latch the bit
- m_eeprom->di_write((data & 0x80) >> 7);
+ // latch the bit
+ m_eeprom->di_write(BIT(data, 7));
- // reset line asserted: reset.
- m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
+ // reset line asserted: reset.
+ m_eeprom->cs_write(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE);
- // clock line asserted: write latch or select next bit to read
- m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
- }
+ // clock line asserted: write latch or select next bit to read
+ m_eeprom->clk_write(BIT(data, 6) ? ASSERT_LINE : CLEAR_LINE);
}
/* - No eeprom or lockouts */
-WRITE16_MEMBER(cave_state::gaia_coin_lsb_w)
+void cave_state::gaia_coin_w(u8 data)
{
- if (ACCESSING_BITS_0_7) // odd address
- {
- machine().bookkeeping().coin_counter_w(1, data & 0x0002);
- machine().bookkeeping().coin_counter_w(0, data & 0x0001);
- }
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
}
/* - No coin lockouts
- - Writing 0xcf00 shouldn't send a 1 bit to the EEPROM */
-WRITE16_MEMBER(cave_state::metmqstr_eeprom_msb_w)
+ - Writing 0xcf shouldn't send a 1 bit to the EEPROM */
+void cave_state::metmqstr_eeprom_w(u8 data)
{
- if (data & ~0xff00)
- logerror("%s: Unknown EEPROM bit written %04X\n", machine().describe_context(), data);
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 5));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 4));
- if (ACCESSING_BITS_8_15) // even address
+ if (BIT(~data, 0))
{
- machine().bookkeeping().coin_counter_w(1, data & 0x2000);
- machine().bookkeeping().coin_counter_w(0, data & 0x1000);
-
- if (~data & 0x0100)
- {
- // latch the bit
- m_eeprom->di_write((data & 0x0800) >> 11);
+ // latch the bit
+ m_eeprom->di_write(BIT(data, 3));
- // reset line asserted: reset.
- m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
+ // reset line asserted: reset.
+ m_eeprom->cs_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE);
- // clock line asserted: write latch or select next bit to read
- m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
- }
+ // clock line asserted: write latch or select next bit to read
+ m_eeprom->clk_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE);
}
}
@@ -436,6 +418,7 @@ template<int Chip>
WRITE16_MEMBER(cave_state::vram_w)
{
uint16_t *VRAM = m_vram[Chip];
+ int TDIM = m_tiledim[Chip];
tilemap_t *TILEMAP = m_tilemap[Chip];
if ((VRAM[offset] & mem_mask) == (data & mem_mask))
@@ -443,7 +426,7 @@ WRITE16_MEMBER(cave_state::vram_w)
COMBINE_DATA(&VRAM[offset]);
offset /= 2;
- if (offset < 0x1000 / 4) // 16x16 tilemap
+ if ((offset < 0x1000 / 4) && (TDIM)) // 16x16 tilemap
{
offset = (offset % (512 / 16)) * 2 + (offset / (512 / 16)) * (512 / 8) * 2;
TILEMAP->mark_tile_dirty(offset + 0);
@@ -451,7 +434,7 @@ WRITE16_MEMBER(cave_state::vram_w)
TILEMAP->mark_tile_dirty(offset + 0 + 512 / 8);
TILEMAP->mark_tile_dirty(offset + 1 + 512 / 8);
}
- else if (offset >= 0x4000 / 4) // 8x8 tilemap
+ else if ((offset >= 0x4000 / 4) && (!TDIM)) // 8x8 tilemap
TILEMAP->mark_tile_dirty(offset - 0x4000 / 4);
}
@@ -493,22 +476,22 @@ WRITE16_MEMBER(cave_state::vram_8x8_w)
void cave_state::dfeveron_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
- map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x708000, 0x708fff).ram().share("paletteram.0"); // Palette
- map(0x710000, 0x710bff).readonly(); // ?
- map(0x710c00, 0x710fff).ram(); // ?
- map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x800000, 0x800007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
- map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
- map(0xb00000, 0xb00001).portr("IN0"); // Inputs
- map(0xb00002, 0xb00003).portr("IN1"); // Inputs + EEPROM
- map(0xc00000, 0xc00001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x708000, 0x708fff).ram().share("paletteram.0"); // Palette
+ map(0x710000, 0x710bff).readonly(); // ?
+ map(0x710c00, 0x710fff).ram(); // ?
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00001).portr("IN0"); // Inputs
+ map(0xb00002, 0xb00003).portr("IN1"); // Inputs + EEPROM
+ map(0xc00000, 0xc00000).w(FUNC(cave_state::eeprom_w)); // EEPROM
}
@@ -518,22 +501,22 @@ void cave_state::dfeveron_map(address_map &map)
void cave_state::ddonpach_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
- map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x700000, 0x70ffff).ram().w(FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2
- map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x800000, 0x800007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
- map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
- map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
- map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
- map(0xd00000, 0xd00001).portr("IN0"); // Inputs
- map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM
- map(0xe00000, 0xe00001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x700000, 0x70ffff).ram().w(FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00000, 0xd00001).portr("IN0"); // Inputs
+ map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM
+ map(0xe00000, 0xe00000).w(FUNC(cave_state::eeprom_w)); // EEPROM
}
@@ -548,7 +531,7 @@ READ16_MEMBER(cave_state::donpachi_videoregs_r)
case 0:
case 1:
case 2:
- case 3: return cave_irq_cause_r(space, offset, 0xffff);
+ case 3: return irq_cause_r(offset);
default: return 0x0000;
}
@@ -556,23 +539,23 @@ READ16_MEMBER(cave_state::donpachi_videoregs_r)
void cave_state::donpachi_map(address_map &map)
{
- map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x200000, 0x207fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x400000, 0x407fff).ram().w(FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2
- map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites
- map(0x600000, 0x600005).ram().share("vctrl.1"); // Layer 1 Control
- map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
- map(0x800000, 0x800005).ram().share("vctrl.2"); // Layer 2 Control
- map(0x900000, 0x90007f).ram().r(FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs
- map(0xa08000, 0xa08fff).ram().share("paletteram.0"); // Palette
- map(0xb00000, 0xb00003).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // M6295
- map(0xb00010, 0xb00013).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); //
- map(0xb00020, 0xb0002f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); //
- map(0xc00000, 0xc00001).portr("IN0"); // Inputs
- map(0xc00002, 0xc00003).portr("IN1"); // Inputs + EEPROM
- map(0xd00000, 0xd00001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x200000, 0x207fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x407fff).ram().w(FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2
+ map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites
+ map(0x600000, 0x600005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0x800000, 0x800005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0x900000, 0x90007f).ram().r(FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs
+ map(0xa08000, 0xa08fff).ram().share("paletteram.0"); // Palette
+ map(0xb00000, 0xb00003).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // M6295
+ map(0xb00010, 0xb00013).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); //
+ map(0xb00020, 0xb0002f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); //
+ map(0xc00000, 0xc00001).portr("IN0"); // Inputs
+ map(0xc00002, 0xc00003).portr("IN1"); // Inputs + EEPROM
+ map(0xd00000, 0xd00000).w(FUNC(cave_state::eeprom_w)); // EEPROM
}
@@ -582,22 +565,22 @@ void cave_state::donpachi_map(address_map &map)
void cave_state::esprade_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
- map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x700000, 0x707fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
- map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x800000, 0x800007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
- map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
- map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
- map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
- map(0xd00000, 0xd00001).portr("IN0"); // Inputs
- map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM
- map(0xe00000, 0xe00001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x700000, 0x707fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00000, 0xd00001).portr("IN0"); // Inputs
+ map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM
+ map(0xe00000, 0xe00000).w(FUNC(cave_state::eeprom_w)); // EEPROM
}
@@ -607,27 +590,27 @@ void cave_state::esprade_map(address_map &map)
void cave_state::gaia_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
- map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprite
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x508000, 0x50ffff).ram(); // More Layer 0, Tested but not used?
- map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x608000, 0x60ffff).ram(); // More Layer 1, Tested but not used?
- map(0x700000, 0x707fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
- map(0x708000, 0x70ffff).ram(); // More Layer 2, Tested but not used?
- map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x800000, 0x800007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
- map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
- map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
- map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
- map(0xd00010, 0xd00011).portr("IN0"); // Inputs
- map(0xd00010, 0xd00011).w(FUNC(cave_state::gaia_coin_lsb_w)); // Coin counter only
- map(0xd00012, 0xd00013).portr("IN1"); // Inputs
- map(0xd00014, 0xd00015).portr("DSW"); // Dips
- map(0xd00014, 0xd00015).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog?
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprite
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x508000, 0x50ffff).ram(); // More Layer 0, Tested but not used?
+ map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x608000, 0x60ffff).ram(); // More Layer 1, Tested but not used?
+ map(0x700000, 0x707fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x708000, 0x70ffff).ram(); // More Layer 2, Tested but not used?
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00010, 0xd00011).portr("IN0"); // Inputs
+ map(0xd00011, 0xd00011).w(FUNC(cave_state::gaia_coin_w)); // Coin counter only
+ map(0xd00012, 0xd00013).portr("IN1"); // Inputs
+ map(0xd00014, 0xd00015).portr("DSW"); // Dips
+ map(0xd00014, 0xd00015).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog?
}
@@ -637,24 +620,24 @@ void cave_state::gaia_map(address_map &map)
void cave_state::guwange_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM
- map(0x200000, 0x20ffff).ram(); // RAM
- map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x300000, 0x300007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x700000, 0x707fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
- map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
- map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
- map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
- map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
-/**/map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
- map(0xd00010, 0xd00011).portr("IN0"); // Inputs
- map(0xd00010, 0xd00011).w(FUNC(cave_state::cave_eeprom_lsb_w)); // EEPROM
- map(0xd00012, 0xd00013).portr("IN1"); // Inputs + EEPROM
-// AM_RANGE(0xd00012, 0xd00013) AM_WRITENOP // ?
-// AM_RANGE(0xd00014, 0xd00015) AM_WRITENOP // ? $800068 in dfeveron ? probably Watchdog
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x300000, 0x300007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x700000, 0x707fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+/**/map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00010, 0xd00011).portr("IN0"); // Inputs
+ map(0xd00011, 0xd00011).w(FUNC(cave_state::guwange_eeprom_w)); // EEPROM
+ map(0xd00012, 0xd00013).portr("IN1"); // Inputs + EEPROM
+// map(0xd00012, 0xd00013).nopw(); // ?
+// map(0xd00014, 0xd00015).nopw(); // ? $800068 in dfeveron ? probably Watchdog
}
@@ -671,15 +654,15 @@ void cave_state::hotdogst_map(address_map &map)
map(0x900000, 0x907fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
map(0x980000, 0x987fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
map(0xa80000, 0xa8007f).writeonly().share("videoregs.0"); // Video Regs
- map(0xa80000, 0xa80007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
-// AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r) // From Sound CPU
+ map(0xa80000, 0xa80007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+// map(0xa8006e, 0xa8006f).r(FUNC(cave_state::soundlatch_ack_r)); // From Sound CPU
map(0xa8006e, 0xa8006f).w(FUNC(cave_state::sound_cmd_w)); // To Sound CPU
map(0xb00000, 0xb00005).ram().share("vctrl.0"); // Layer 0 Control
map(0xb80000, 0xb80005).ram().share("vctrl.1"); // Layer 1 Control
map(0xc00000, 0xc00005).ram().share("vctrl.2"); // Layer 2 Control
map(0xc80000, 0xc80001).portr("IN0"); // Inputs
map(0xc80002, 0xc80003).portr("IN1"); // Inputs + EEPROM
- map(0xd00000, 0xd00001).w(FUNC(cave_state::hotdogst_eeprom_msb_w)); // EEPROM
+ map(0xd00000, 0xd00000).w(FUNC(cave_state::hotdogst_eeprom_w)); // EEPROM
map(0xd00002, 0xd00003).nopw(); // ???
map(0xf00000, 0xf0ffff).ram().share("spriteram.0"); // Sprites
}
@@ -720,7 +703,7 @@ WRITE16_MEMBER(cave_state::korokoro_leds_w)
}
-WRITE16_MEMBER(cave_state::korokoro_eeprom_msb_w)
+void cave_state::korokoro_eeprom_w(offs_t offset, u16 data, u16 mem_mask)
{
if (data & ~0x7000)
{
@@ -757,14 +740,14 @@ void cave_state::korokoro_map(address_map &map)
map(0x140000, 0x140005).writeonly().share("vctrl.0"); // Layer 0 Control
map(0x180000, 0x187fff).writeonly().share("spriteram.0"); // Sprites
map(0x1c0000, 0x1c007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x1c0000, 0x1c0007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x1c0000, 0x1c0007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
map(0x200000, 0x207fff).writeonly().share("paletteram.0"); // Palette
-// AM_RANGE(0x240000, 0x240003) AM_DEVREAD8("ymz", ymz280b_device, read, 0x00ff) // YMZ280
+// map(0x240000, 0x240003).r("ymz", FUNC(ymz280b_device::read)).umask16(0x00ff); // YMZ280
map(0x240000, 0x240003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
map(0x280000, 0x280001).portr("IN0"); // Inputs + ???
map(0x280002, 0x280003).portr("IN1"); // Inputs + EEPROM
map(0x280008, 0x280009).w(FUNC(cave_state::korokoro_leds_w)); // Leds
- map(0x28000a, 0x28000b).w(FUNC(cave_state::korokoro_eeprom_msb_w)); // EEPROM
+ map(0x28000a, 0x28000b).w(FUNC(cave_state::korokoro_eeprom_w)); // EEPROM
map(0x28000c, 0x28000d).nopw(); // 0 (watchdog?)
map(0x300000, 0x30ffff).ram(); // RAM
}
@@ -780,10 +763,10 @@ void cave_state::crusherm_map(address_map &map)
map(0x280000, 0x280001).portr("IN0"); // Inputs + ???
map(0x280002, 0x280003).portr("IN1"); // Inputs + EEPROM
map(0x280008, 0x280009).w(FUNC(cave_state::korokoro_leds_w)); // Leds
- map(0x28000a, 0x28000b).w(FUNC(cave_state::korokoro_eeprom_msb_w)); // EEPROM
+ map(0x28000a, 0x28000b).w(FUNC(cave_state::korokoro_eeprom_w)); // EEPROM
map(0x28000c, 0x28000d).nopw(); // 0 (watchdog?)
map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x300000, 0x300007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x300000, 0x300007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
map(0x340000, 0x34ffff).ram(); // RAM
}
@@ -797,7 +780,7 @@ void cave_state::mazinger_map(address_map &map)
map(0x100000, 0x10ffff).ram(); // RAM
map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x300000, 0x300007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x300000, 0x300007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
map(0x300068, 0x300069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
map(0x30006e, 0x30006f).rw(FUNC(cave_state::soundlatch_ack_r), FUNC(cave_state::sound_cmd_w)); // From Sound CPU
map(0x400000, 0x407fff).ram().w(FUNC(cave_state::vram_8x8_w<1>)).share("vram.1"); // Layer 1
@@ -806,7 +789,7 @@ void cave_state::mazinger_map(address_map &map)
map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
map(0x800000, 0x800001).portr("IN0"); // Inputs
map(0x800002, 0x800003).portr("IN1"); // Inputs + EEPROM
- map(0x900000, 0x900001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x900000, 0x900000).w(FUNC(cave_state::eeprom_w)); // EEPROM
map(0xc08000, 0xc0ffff).ram().share("paletteram.0"); // Palette
map(0xd00000, 0xd7ffff).rom().region("user1", 0); // extra data ROM
}
@@ -830,7 +813,7 @@ void cave_state::metmqstr_map(address_map &map)
map(0x980000, 0x987fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
map(0x988000, 0x98ffff).ram(); //
map(0xa80000, 0xa8007f).writeonly().share("videoregs.0"); // Video Regs
- map(0xa80000, 0xa80007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0xa80000, 0xa80007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
map(0xa80068, 0xa80069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog?
map(0xa8006c, 0xa8006d).r(FUNC(cave_state::soundflags_ack_r)).nopw(); // Communication
map(0xa8006e, 0xa8006f).rw(FUNC(cave_state::soundlatch_ack_r), FUNC(cave_state::sound_cmd_w)); // From Sound CPU
@@ -839,7 +822,7 @@ void cave_state::metmqstr_map(address_map &map)
map(0xc00000, 0xc00005).ram().share("vctrl.0"); // Layer 0 Control
map(0xc80000, 0xc80001).portr("IN0"); // Inputs
map(0xc80002, 0xc80003).portr("IN1"); // Inputs + EEPROM
- map(0xd00000, 0xd00001).w(FUNC(cave_state::metmqstr_eeprom_msb_w)); // EEPROM
+ map(0xd00000, 0xd00000).w(FUNC(cave_state::metmqstr_eeprom_w)); // EEPROM
map(0xf00000, 0xf0ffff).ram().share("spriteram.0"); // Sprites
}
@@ -927,44 +910,44 @@ WRITE16_MEMBER(cave_state::ppsatan_out_w)
void cave_state::ppsatan_map(address_map &map)
{
- map(0x000000, 0x03ffff).rom(); // ROM
- map(0x040000, 0x04ffff).ram(); // RAM
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x04ffff).ram(); // RAM
// Left Screen (Player 2)
- map(0x080000, 0x080005).ram().share("vctrl.1"); // Layer Control
- map(0x100000, 0x107fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer
-// AM_RANGE(0x180000, 0x1803ff) AM_RAM // Palette (Tilemaps)
-// AM_RANGE(0x187800, 0x188fff) AM_RAM AM_SHARE("paletteram.1") // Palette (Sprites)
- map(0x180000, 0x188fff).ram().share("paletteram.1"); // Palette
- map(0x1c0000, 0x1c7fff).ram().share("spriteram.1"); // Sprites
- map(0x200000, 0x200001).portr("SYSTEM"); // DSW + (unused) EEPROM
- map(0x200000, 0x200001).w(FUNC(cave_state::ppsatan_out_w)); // Outputs + OKI banking
- map(0x200002, 0x200003).rw(FUNC(cave_state::ppsatan_touch2_r), FUNC(cave_state::ppsatan_eeprom_msb_w)); // Touch Screen + (unused) EEPROM
+ map(0x080000, 0x080005).ram().share("vctrl.1"); // Layer Control
+ map(0x100000, 0x107fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer
+// map(0x180000, 0x1803ff).ram() // Palette (Tilemaps)
+// map(0x187800, 0x188fff).ram().share("paletteram.1"); // Palette (Sprites)
+ map(0x180000, 0x188fff).ram().share("paletteram.1"); // Palette
+ map(0x1c0000, 0x1c7fff).ram().share("spriteram.1"); // Sprites
+ map(0x200000, 0x200001).portr("SYSTEM"); // DSW + (unused) EEPROM
+ map(0x200000, 0x200001).w(FUNC(cave_state::ppsatan_out_w)); // Outputs + OKI banking
+ map(0x200002, 0x200003).rw(FUNC(cave_state::ppsatan_touch2_r), FUNC(cave_state::ppsatan_eeprom_w)); // Touch Screen + (unused) EEPROM
map(0x200004, 0x200005).rw(FUNC(cave_state::ppsatan_touch1_r), FUNC(cave_state::ppsatan_io_mux_w)); // Touch Screen
- map(0x200006, 0x200007).nopw(); // Lev. 2 IRQ Ack?
- map(0x2c0000, 0x2c007f).writeonly().share("videoregs.1"); // Video Regs
- map(0x2c0000, 0x2c0007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x2c0068, 0x2c0069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x200006, 0x200007).nopw(); // Lev. 2 IRQ Ack?
+ map(0x2c0000, 0x2c007f).writeonly().share("videoregs.1"); // Video Regs
+ map(0x2c0000, 0x2c0007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x2c0068, 0x2c0069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
- map(0x300001, 0x300001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0x300001, 0x300001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
// Right Screen (Player 1)
- map(0x480000, 0x480005).ram().share("vctrl.2"); // Layer Control
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer
-// AM_RANGE(0x580000, 0x5803ff) AM_RAM // Palette (Tilemaps)
-// AM_RANGE(0x587800, 0x588fff) AM_RAM //AM_SHARE("paletteram.2") // Palette (Sprites)
- map(0x580000, 0x588fff).ram().share("paletteram.2"); // Palette
- map(0x5c0000, 0x5c7fff).ram().share("spriteram.2"); // Sprites
- map(0x6c0000, 0x6c007f).writeonly().share("videoregs.2"); // Video Regs
+ map(0x480000, 0x480005).ram().share("vctrl.2"); // Layer Control
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer
+// map(0x580000, 0x5803ff).ram() // Palette (Tilemaps)
+// map(0x587800, 0x588fff).ram().share("paletteram.2"); // Palette (Sprites)
+ map(0x580000, 0x588fff).ram().share("paletteram.2"); // Palette
+ map(0x5c0000, 0x5c7fff).ram().share("spriteram.2"); // Sprites
+ map(0x6c0000, 0x6c007f).writeonly().share("videoregs.2"); // Video Regs
// Top Screen
- map(0x880000, 0x880005).ram().share("vctrl.0"); // Layer Control
- map(0x900000, 0x907fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer
-// AM_RANGE(0x980000, 0x9803ff) AM_RAM // Palette (Tilemaps)
-// AM_RANGE(0x987800, 0x988fff) AM_RAM AM_SHARE("paletteram.0") // Palette (Sprites)
- map(0x980000, 0x988fff).ram().share("paletteram.0"); // Palette
- map(0x9c0000, 0x9c7fff).ram().share("spriteram.0"); // Sprites
- map(0xac0000, 0xac007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x880000, 0x880005).ram().share("vctrl.0"); // Layer Control
+ map(0x900000, 0x907fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer
+// map(0x980000, 0x9803ff).ram(); // Palette (Tilemaps)
+// map(0x987800, 0x988fff).ram().share("paletteram.0"); // Palette (Sprites)
+ map(0x980000, 0x988fff).ram().share("paletteram.0"); // Palette
+ map(0x9c0000, 0x9c7fff).ram().share("spriteram.0"); // Sprites
+ map(0xac0000, 0xac007f).writeonly().share("videoregs.0"); // Video Regs
}
@@ -997,26 +980,26 @@ WRITE16_MEMBER(cave_state::pwrinst2_vctrl_w)
void cave_state::pwrinst2_map(address_map &map)
{
- map(0x000000, 0x1fffff).rom(); // ROM
- map(0x400000, 0x40ffff).ram(); // RAM
- map(0x500000, 0x500001).portr("IN0"); // Inputs
- map(0x500002, 0x500003).portr("IN1"); //
- map(0x600000, 0x6fffff).rom().region("user1", 0); // extra data ROM space
- map(0x700000, 0x700001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
- map(0x800000, 0x807fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
- map(0x880000, 0x887fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x900000, 0x907fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
- map(0x980000, 0x987fff).ram().w(FUNC(cave_state::vram_8x8_w<3>)).share("vram.3"); // Layer 3
- map(0xa00000, 0xa0ffff).ram().share("spriteram.0"); // Sprites
- map(0xa10000, 0xa1ffff).ram(); // Sprites?
- map(0xa80000, 0xa8007f).ram().r(FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram(); // RAM
+ map(0x500000, 0x500001).portr("IN0"); // Inputs
+ map(0x500002, 0x500003).portr("IN1"); //
+ map(0x600000, 0x6fffff).rom().region("user1", 0); // extra data ROM space
+ map(0x700000, 0x700000).w(FUNC(cave_state::eeprom_w)); // EEPROM
+ map(0x800000, 0x807fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x880000, 0x887fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x900000, 0x907fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x980000, 0x987fff).ram().w(FUNC(cave_state::vram_8x8_w<3>)).share("vram.3"); // Layer 3
+ map(0xa00000, 0xa0ffff).ram().share("spriteram.0"); // Sprites
+ map(0xa10000, 0xa1ffff).ram(); // Sprites?
+ map(0xa80000, 0xa8007f).ram().r(FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs
map(0xb00000, 0xb00005).ram().w(FUNC(cave_state::pwrinst2_vctrl_w<2>)).share("vctrl.2"); // Layer 2 Control
map(0xb80000, 0xb80005).ram().w(FUNC(cave_state::pwrinst2_vctrl_w<0>)).share("vctrl.0"); // Layer 0 Control
map(0xc00000, 0xc00005).ram().w(FUNC(cave_state::pwrinst2_vctrl_w<1>)).share("vctrl.1"); // Layer 1 Control
map(0xc80000, 0xc80005).ram().w(FUNC(cave_state::pwrinst2_vctrl_w<3>)).share("vctrl.3"); // Layer 3 Control
- map(0xd80000, 0xd80001).r(FUNC(cave_state::soundlatch_ack_r)); // ? From Sound CPU
- map(0xe00000, 0xe00001).w(FUNC(cave_state::sound_cmd_w)); // To Sound CPU
- map(0xe80000, 0xe80001).r(FUNC(cave_state::pwrinst2_eeprom_r)); // EEPROM
+ map(0xd80000, 0xd80001).r(FUNC(cave_state::soundlatch_ack_r)); // ? From Sound CPU
+ map(0xe00000, 0xe00001).w(FUNC(cave_state::sound_cmd_w)); // To Sound CPU
+ map(0xe80000, 0xe80001).r(FUNC(cave_state::pwrinst2_eeprom_r)); // EEPROM
map(0xf00000, 0xf04fff).ram().share("paletteram.0"); // Palette
}
@@ -1033,31 +1016,31 @@ READ16_MEMBER(cave_state::sailormn_input0_r)
void cave_state::sailormn_map(address_map &map)
{
- map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x110000, 0x110001).ram(); // (agallet)
- map(0x200000, 0x3fffff).rom(); // ROM
- map(0x400000, 0x407fff).ram(); // (agallet)
- map(0x408000, 0x40bfff).ram().share("paletteram.0"); // Palette
- map(0x40c000, 0x40ffff).ram(); // (agallet)
- map(0x410000, 0x410001).ram(); // (agallet)
- map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites
- map(0x510000, 0x510001).ram(); // (agallet)
- map(0x600000, 0x600001).r(FUNC(cave_state::sailormn_input0_r)); // Inputs + Watchdog!
- map(0x600002, 0x600003).portr("IN1"); // Inputs + EEPROM
- map(0x700000, 0x700001).w(FUNC(cave_state::sailormn_eeprom_msb_w)); // EEPROM
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x110000, 0x110001).ram(); // (agallet)
+ map(0x200000, 0x3fffff).rom(); // ROM
+ map(0x400000, 0x407fff).ram(); // (agallet)
+ map(0x408000, 0x40bfff).ram().share("paletteram.0"); // Palette
+ map(0x40c000, 0x40ffff).ram(); // (agallet)
+ map(0x410000, 0x410001).ram(); // (agallet)
+ map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites
+ map(0x510000, 0x510001).ram(); // (agallet)
+ map(0x600000, 0x600001).r(FUNC(cave_state::sailormn_input0_r)); // Inputs + Watchdog!
+ map(0x600002, 0x600003).portr("IN1"); // Inputs + EEPROM
+ map(0x700000, 0x700000).w(FUNC(cave_state::sailormn_eeprom_w)); // EEPROM
map(0x800000, 0x807fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
map(0x880000, 0x887fff).ram().w(FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
map(0x900000, 0x907fff).ram().w(FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
- map(0x908000, 0x908001).ram(); // (agallet)
- map(0xa00000, 0xa00005).ram().share("vctrl.0"); // Layer 0 Control
- map(0xa80000, 0xa80005).ram().share("vctrl.1"); // Layer 1 Control
- map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
- map(0xb80000, 0xb8007f).writeonly().share("videoregs.0"); // Video Regs
- map(0xb80000, 0xb80007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause (bit 2 tested!)
- map(0xb8006c, 0xb8006d).r(FUNC(cave_state::soundflags_ack_r)); // Communication
- map(0xb8006e, 0xb8006f).r(FUNC(cave_state::soundlatch_ack_r)); // From Sound CPU
- map(0xb8006e, 0xb8006f).w(FUNC(cave_state::sound_cmd_w)); // To Sound CPU
+ map(0x908000, 0x908001).ram(); // (agallet)
+ map(0xa00000, 0xa00005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa80000, 0xa80005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xb80000, 0xb8007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0xb80000, 0xb80007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause (bit 2 tested!)
+ map(0xb8006c, 0xb8006d).r(FUNC(cave_state::soundflags_ack_r)); // Communication
+ map(0xb8006e, 0xb8006f).r(FUNC(cave_state::soundlatch_ack_r)); // From Sound CPU
+ map(0xb8006e, 0xb8006f).w(FUNC(cave_state::sound_cmd_w)); // To Sound CPU
}
@@ -1067,20 +1050,20 @@ void cave_state::sailormn_map(address_map &map)
void cave_state::tekkencw_map(address_map &map)
{
- map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
- map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
- map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x400000, 0x400001).portr("IN0"); // Inputs + EEPROM + Hopper
- map(0x400002, 0x400003).portr("IN1"); // Inputs
- map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
- map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette
- map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x700000, 0x700007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x400001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x400002, 0x400003).portr("IN1"); // Inputs
+ map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0xc00000, 0xc00001).w(FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
- map(0xe00000, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+ map(0xc00001, 0xc00001).w(FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
+ map(0xe00001, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_w)); // EEPROM
}
@@ -1090,20 +1073,20 @@ void cave_state::tekkencw_map(address_map &map)
void cave_state::tekkenbs_map(address_map &map)
{
- map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
- map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
- map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette
- map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
- map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper
- map(0x600002, 0x600003).portr("IN1"); // Inputs
- map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x700000, 0x700007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette
+ map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x600002, 0x600003).portr("IN1"); // Inputs
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0xc00000, 0xc00001).w(FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
- map(0xe00000, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+ map(0xc00001, 0xc00001).w(FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
+ map(0xe00001, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_w)); // EEPROM
}
@@ -1111,37 +1094,31 @@ void cave_state::tekkenbs_map(address_map &map)
Tobikose! Jumpman
***************************************************************************/
-WRITE16_MEMBER(cave_state::tjumpman_eeprom_lsb_w)
+void cave_state::tjumpman_eeprom_w(u8 data)
{
- if (data & ~0x0038)
+ if (data & ~0x38)
logerror("%s: Unknown EEPROM bit written %04X\n",machine().describe_context(),data);
- if (ACCESSING_BITS_0_7) // odd address
- {
- // latch the bit
- m_eeprom->di_write((data & 0x0020) >> 5);
+ // latch the bit
+ m_eeprom->di_write(BIT(data, 5));
- // reset line asserted: reset.
- m_eeprom->cs_write((data & 0x0008) ? ASSERT_LINE : CLEAR_LINE);
+ // reset line asserted: reset.
+ m_eeprom->cs_write(BIT(data, 3) ? ASSERT_LINE : CLEAR_LINE);
- // clock line asserted: write latch or select next bit to read
- m_eeprom->clk_write((data & 0x0010) ? ASSERT_LINE : CLEAR_LINE);
- }
+ // clock line asserted: write latch or select next bit to read
+ m_eeprom->clk_write(BIT(data, 4) ? ASSERT_LINE : CLEAR_LINE);
}
-WRITE16_MEMBER(cave_state::tjumpman_leds_w)
+void cave_state::tjumpman_leds_w(u8 data)
{
- if (ACCESSING_BITS_0_7)
- {
- m_led_outputs[0] = BIT(data, 0); // suru
- m_led_outputs[1] = BIT(data, 1); // shinai
- m_led_outputs[2] = BIT(data, 2); // payout
- m_led_outputs[3] = BIT(data, 3); // go
- m_led_outputs[4] = BIT(data, 4); // 1 bet
- m_led_outputs[5] = BIT(data, 5); // medal
- m_hopper = BIT(data, 6); // hopper
- m_led_outputs[6] = BIT(data, 7); // 3 bet
- }
+ m_led_outputs[0] = BIT(data, 0); // suru
+ m_led_outputs[1] = BIT(data, 1); // shinai
+ m_led_outputs[2] = BIT(data, 2); // payout
+ m_led_outputs[3] = BIT(data, 3); // go
+ m_led_outputs[4] = BIT(data, 4); // 1 bet
+ m_led_outputs[5] = BIT(data, 5); // medal
+ m_hopper = BIT(data, 6); // hopper
+ m_led_outputs[6] = BIT(data, 7); // 3 bet
// popmessage("led %04X", data);
}
@@ -1154,20 +1131,20 @@ CUSTOM_INPUT_MEMBER(cave_state::tjumpman_hopper_r)
void cave_state::tjumpman_map(address_map &map)
{
map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
- map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
- map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x304000, 0x307fff).w(FUNC(cave_state::vram_w<0>)); // Layer 0 - 16x16 tiles mapped here
- map(0x400000, 0x400005).writeonly().share("vctrl.0"); // Layer 0 Control
- map(0x500000, 0x50ffff).ram().share("paletteram.0"); // Palette
- map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper
- map(0x600002, 0x600003).portr("IN1"); // Inputs
- map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x700000, 0x700007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x304000, 0x307fff).w(FUNC(cave_state::vram_w<0>)); // Layer 0 - 16x16 tiles mapped here
+ map(0x400000, 0x400005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x500000, 0x50ffff).ram().share("paletteram.0"); // Palette
+ map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x600002, 0x600003).portr("IN1"); // Inputs
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0xc00000, 0xc00001).w(FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
- map(0xe00000, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+ map(0xc00001, 0xc00001).w(FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
+ map(0xe00001, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_w)); // EEPROM
}
@@ -1175,18 +1152,15 @@ void cave_state::tjumpman_map(address_map &map)
Pac-Slot
***************************************************************************/
-WRITE16_MEMBER(cave_state::pacslot_leds_w)
+void cave_state::pacslot_leds_w(u8 data)
{
- if (ACCESSING_BITS_0_7)
- {
- m_led_outputs[0] = data & 0x0001; // pac-man
- m_led_outputs[1] = data & 0x0002; // ms. pac-man
- m_led_outputs[2] = data & 0x0004; // payout
- m_led_outputs[3] = data & 0x0008; // start
- m_led_outputs[4] = data & 0x0010; // bet
- m_led_outputs[5] = data & 0x0020; // medal
- m_hopper = data & 0x0040; // hopper
- }
+ m_led_outputs[0] = data & 0x0001; // pac-man
+ m_led_outputs[1] = data & 0x0002; // ms. pac-man
+ m_led_outputs[2] = data & 0x0004; // payout
+ m_led_outputs[3] = data & 0x0008; // start
+ m_led_outputs[4] = data & 0x0010; // bet
+ m_led_outputs[5] = data & 0x0020; // medal
+ m_hopper = data & 0x0040; // hopper
// popmessage("led %04X", data);
}
@@ -1194,19 +1168,19 @@ WRITE16_MEMBER(cave_state::pacslot_leds_w)
void cave_state::pacslot_map(address_map &map)
{
map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
- map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
- map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x400000, 0x40007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x400000, 0x400007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x400068, 0x400069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
- map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
- map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette
- map(0x700000, 0x700001).portr("IN0"); // Inputs + EEPROM + Hopper
- map(0x700002, 0x700003).portr("IN1"); // Inputs
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x40007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x400000, 0x400007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x400068, 0x400069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette
+ map(0x700000, 0x700001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x700002, 0x700003).portr("IN1"); // Inputs
map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0xc00000, 0xc00001).w(FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper
- map(0xe00000, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+ map(0xc00001, 0xc00001).w(FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper
+ map(0xe00001, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_w)); // EEPROM
}
@@ -1219,19 +1193,19 @@ void cave_state::pacslot_map(address_map &map)
void cave_state::paceight_map(address_map &map)
{
map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
- map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
- map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette
- map(0x500000, 0x500001).portr("IN0"); // Inputs + EEPROM + Hopper
- map(0x500002, 0x500003).portr("IN1"); // Inputs
- map(0x600000, 0x600005).writeonly().share("vctrl.0"); // Layer 0 Control
- map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x700000, 0x700007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette
+ map(0x500000, 0x500001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x500002, 0x500003).portr("IN1"); // Inputs
+ map(0x600000, 0x600005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0xc00000, 0xc00001).w(FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper
- map(0xe00000, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+ map(0xc00000, 0xc00001).w(FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper
+ map(0xe00001, 0xe00001).w(FUNC(cave_state::tjumpman_eeprom_w)); // EEPROM
}
/***************************************************************************
@@ -1240,18 +1214,18 @@ void cave_state::paceight_map(address_map &map)
void cave_state::uopoko_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM
- map(0x100000, 0x10ffff).ram(); // RAM
- map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
- map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
- map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
- map(0x600000, 0x60007f).writeonly().share("videoregs.0"); // Video Regs
- map(0x600000, 0x600007).r(FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
- map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
- map(0x800000, 0x80ffff).ram().share("paletteram.0"); // Palette
- map(0x900000, 0x900001).portr("IN0"); // Inputs
- map(0x900002, 0x900003).portr("IN1"); // Inputs + EEPROM
- map(0xa00000, 0xa00001).w(FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x60007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x600000, 0x600007).r(FUNC(cave_state::irq_cause_r)); // IRQ Cause
+ map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0x800000, 0x80ffff).ram().share("paletteram.0"); // Palette
+ map(0x900000, 0x900001).portr("IN0"); // Inputs
+ map(0x900002, 0x900003).portr("IN1"); // Inputs + EEPROM
+ map(0xa00000, 0xa00000).w(FUNC(cave_state::eeprom_w)); // EEPROM
}
@@ -1265,7 +1239,7 @@ void cave_state::uopoko_map(address_map &map)
***************************************************************************/
template<int Mask>
-WRITE8_MEMBER(cave_state::z80_rombank_w)
+void cave_state::z80_rombank_w(u8 data)
{
if (data & ~Mask)
logerror("CPU #1 - PC %04X: Bank %02X\n", m_audiocpu->pc(), data);
@@ -1274,7 +1248,7 @@ WRITE8_MEMBER(cave_state::z80_rombank_w)
}
template<int Mask>
-WRITE8_MEMBER(cave_state::oki1_bank_w)
+void cave_state::oki1_bank_w(u8 data)
{
int bank1 = (data >> 0) & Mask;
int bank2 = (data >> 4) & Mask;
@@ -1283,7 +1257,7 @@ WRITE8_MEMBER(cave_state::oki1_bank_w)
}
template<int Mask>
-WRITE8_MEMBER(cave_state::oki2_bank_w)
+void cave_state::oki2_bank_w(u8 data)
{
int bank1 = (data >> 0) & Mask;
int bank2 = (data >> 4) & Mask;
@@ -1311,20 +1285,20 @@ void cave_state::oki2_map(address_map &map)
void cave_state::hotdogst_sound_map(address_map &map)
{
- map(0x0000, 0x3fff).rom(); // ROM
+ map(0x0000, 0x3fff).rom(); // ROM
map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
- map(0xe000, 0xffff).ram(); // RAM
+ map(0xe000, 0xffff).ram(); // RAM
}
void cave_state::hotdogst_sound_portmap(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x0f>)); // ROM bank
- map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
- map(0x40, 0x40).r(FUNC(cave_state::soundlatch_hi_r)); //
- map(0x50, 0x51).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
+ map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x0f>)); // ROM bank
+ map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x40, 0x40).r(FUNC(cave_state::soundlatch_hi_r)); //
+ map(0x50, 0x51).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
map(0x60, 0x60).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0x70, 0x70).w(FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank
+ map(0x70, 0x70).w(FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank
}
@@ -1334,22 +1308,22 @@ void cave_state::hotdogst_sound_portmap(address_map &map)
void cave_state::mazinger_sound_map(address_map &map)
{
- map(0x0000, 0x3fff).rom(); // ROM
+ map(0x0000, 0x3fff).rom(); // ROM
map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
- map(0xc000, 0xc7ff).ram(); // RAM
- map(0xf800, 0xffff).ram(); // RAM
+ map(0xc000, 0xc7ff).ram(); // RAM
+ map(0xf800, 0xffff).ram(); // RAM
}
void cave_state::mazinger_sound_portmap(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank
- map(0x10, 0x10).w(FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
+ map(0x10, 0x10).w(FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
- map(0x50, 0x51).w("ymsnd", FUNC(ym2203_device::write)); // YM2203
- map(0x52, 0x53).r("ymsnd", FUNC(ym2203_device::read)); // YM2203
- map(0x70, 0x70).w("oki1", FUNC(okim6295_device::write)); // M6295
- map(0x74, 0x74).w(FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank
+ map(0x50, 0x51).w("ymsnd", FUNC(ym2203_device::write)); // YM2203
+ map(0x52, 0x53).r("ymsnd", FUNC(ym2203_device::read)); // YM2203
+ map(0x70, 0x70).w("oki1", FUNC(okim6295_device::write)); // M6295
+ map(0x74, 0x74).w(FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank
}
@@ -1359,23 +1333,23 @@ void cave_state::mazinger_sound_portmap(address_map &map)
void cave_state::metmqstr_sound_map(address_map &map)
{
- map(0x0000, 0x3fff).rom(); // ROM
+ map(0x0000, 0x3fff).rom(); // ROM
map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
- map(0xe000, 0xffff).ram(); // RAM
+ map(0xe000, 0xffff).ram(); // RAM
}
void cave_state::metmqstr_sound_portmap(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x0f>)); // Rom Bank
- map(0x20, 0x20).r(FUNC(cave_state::soundflags_r)); // Communication
- map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
- map(0x40, 0x40).r(FUNC(cave_state::soundlatch_hi_r)); //
+ map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x0f>)); // Rom Bank
+ map(0x20, 0x20).r(FUNC(cave_state::soundflags_r)); // Communication
+ map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x40, 0x40).r(FUNC(cave_state::soundlatch_hi_r)); //
map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
- map(0x60, 0x60).w("oki1", FUNC(okim6295_device::write)); // M6295 #0
- map(0x70, 0x70).w(FUNC(cave_state::oki1_bank_w<0x7>)); // Samples Bank #0
- map(0x80, 0x80).w("oki2", FUNC(okim6295_device::write)); // M6295 #1
- map(0x90, 0x90).w(FUNC(cave_state::oki2_bank_w<0x7>)); // Samples Bank #1
+ map(0x60, 0x60).w("oki1", FUNC(okim6295_device::write)); // M6295 #0
+ map(0x70, 0x70).w(FUNC(cave_state::oki1_bank_w<0x7>)); // Samples Bank #0
+ map(0x80, 0x80).w("oki2", FUNC(okim6295_device::write)); // M6295 #1
+ map(0x90, 0x90).w(FUNC(cave_state::oki2_bank_w<0x7>)); // Samples Bank #1
}
@@ -1385,9 +1359,9 @@ void cave_state::metmqstr_sound_portmap(address_map &map)
void cave_state::pwrinst2_sound_map(address_map &map)
{
- map(0x0000, 0x7fff).rom(); // ROM
+ map(0x0000, 0x7fff).rom(); // ROM
map(0x8000, 0xbfff).bankr("z80bank"); // ROM (Banked)
- map(0xe000, 0xffff).ram(); // RAM
+ map(0xe000, 0xffff).ram(); // RAM
}
void cave_state::pwrinst2_sound_portmap(address_map &map)
@@ -1395,13 +1369,13 @@ void cave_state::pwrinst2_sound_portmap(address_map &map)
map.global_mask(0xff);
map(0x00, 0x00).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
map(0x08, 0x08).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
- map(0x10, 0x17).w("nmk112", FUNC(nmk112_device::okibank_w)); // Samples bank
- map(0x40, 0x41).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
- map(0x50, 0x50).w(FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
-// AM_RANGE(0x51, 0x51) AM_WRITENOP // ?? volume
- map(0x80, 0x80).w(FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank
- map(0x60, 0x60).r(FUNC(cave_state::soundlatch_hi_r)); // From Main CPU
- map(0x70, 0x70).r(FUNC(cave_state::soundlatch_lo_r)); //
+ map(0x10, 0x17).w("nmk112", FUNC(nmk112_device::okibank_w)); // Samples bank
+ map(0x40, 0x41).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
+ map(0x50, 0x50).w(FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
+// map(0x51, 0x51).nopw(); // ?? volume
+ map(0x60, 0x60).r(FUNC(cave_state::soundlatch_hi_r)); // From Main CPU
+ map(0x70, 0x70).r(FUNC(cave_state::soundlatch_lo_r)); //
+ map(0x80, 0x80).w(FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank
}
@@ -1411,24 +1385,24 @@ void cave_state::pwrinst2_sound_portmap(address_map &map)
void cave_state::sailormn_sound_map(address_map &map)
{
- map(0x0000, 0x3fff).rom(); // ROM
+ map(0x0000, 0x3fff).rom(); // ROM
map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
- map(0xc000, 0xdfff).mirror(0x2000).ram(); // RAM (8KB, mirrored)
+ map(0xc000, 0xdfff).mirror(0x2000).ram(); // RAM (8KB, mirrored)
}
void cave_state::sailormn_sound_portmap(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x1f>)); // Rom Bank
- map(0x10, 0x10).w(FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
- map(0x20, 0x20).r(FUNC(cave_state::soundflags_r)); // Communication
- map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
- map(0x40, 0x40).r(FUNC(cave_state::soundlatch_hi_r)); //
- map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0x00, 0x00).w(FUNC(cave_state::z80_rombank_w<0x1f>)); // Rom Bank
+ map(0x10, 0x10).w(FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
+ map(0x20, 0x20).r(FUNC(cave_state::soundflags_r)); // Communication
+ map(0x30, 0x30).r(FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x40, 0x40).r(FUNC(cave_state::soundlatch_hi_r)); //
+ map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
map(0x60, 0x60).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 #0
- map(0x70, 0x70).w(FUNC(cave_state::oki1_bank_w<0xf>)); // Samples Bank #0
+ map(0x70, 0x70).w(FUNC(cave_state::oki1_bank_w<0xf>)); // Samples Bank #0
map(0x80, 0x80).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 #1
- map(0xc0, 0xc0).w(FUNC(cave_state::oki2_bank_w<0xf>)); // Samples Bank #1
+ map(0xc0, 0xc0).w(FUNC(cave_state::oki2_bank_w<0xf>)); // Samples Bank #1
}
@@ -1462,10 +1436,7 @@ static INPUT_PORTS_START( cave )
PORT_SERVICE_NO_TOGGLE( 0x0200, IP_ACTIVE_LOW )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? exit service mode
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? enter & exit service mode
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1") // Player 2
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
@@ -1478,12 +1449,8 @@ static INPUT_PORTS_START( cave )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xf400, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/* Gaia Crusaders, no EEPROM. Has DIPS */
@@ -1508,11 +1475,7 @@ static INPUT_PORTS_START( gaia )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0fc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW")
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
@@ -1629,18 +1592,8 @@ static INPUT_PORTS_START( guwange )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_LOW )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xff70, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
@@ -1651,35 +1604,15 @@ static INPUT_PORTS_START( korokoro )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(10) // bit 0x0080 of leds
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) // round button (choose)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) // square button (select in service mode / medal out in game)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0fe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE2 ) // service medal out?
PORT_SERVICE( 0x2000, IP_ACTIVE_LOW )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,korokoro_hopper_r, nullptr) // motor / hopper status ???
PORT_START("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xefff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
@@ -1695,16 +1628,13 @@ static INPUT_PORTS_START( tekkencw )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,tjumpman_hopper_r, nullptr)
PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_CONFNAME( 0x08, 0x08, "Self Test" )
PORT_CONFSETTING( 0x08, DEF_STR( Off ) )
PORT_CONFSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( DEF_STR( No ) ) PORT_CODE(KEYCODE_N) // shinai ("not")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Action" )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // medal (impulse needed to coin up reliably)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x87, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
@@ -1720,24 +1650,20 @@ static INPUT_PORTS_START( tekkenbs )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,tjumpman_hopper_r, nullptr)
PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_CONFNAME( 0x08, 0x08, "Self Test" )
PORT_CONFSETTING( 0x08, DEF_STR( Off ) )
PORT_CONFSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Start" )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // medal (impulse needed to coin up reliably)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x87, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( tjumpman )
PORT_START("IN0")
PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y) // suru ("do")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
@@ -1745,9 +1671,7 @@ static INPUT_PORTS_START( tjumpman )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,tjumpman_hopper_r, nullptr)
PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_CONFNAME( 0x08, 0x08, "Self Test" )
PORT_CONFSETTING( 0x08, DEF_STR( Off ) )
PORT_CONFSETTING( 0x00, DEF_STR( On ) )
@@ -1770,16 +1694,13 @@ static INPUT_PORTS_START( pacslot )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state, tjumpman_hopper_r, nullptr)
PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_CONFNAME( 0x08, 0x08, "Self Test" )
PORT_CONFSETTING( 0x08, DEF_STR( Off ) )
PORT_CONFSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Ms. Pac-Man" ) PORT_CODE(KEYCODE_N)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // medal (impulse needed to coin up reliably)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x87, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( paceight )
@@ -1796,12 +1717,9 @@ INPUT_PORTS_END
static INPUT_PORTS_START( ppsatan )
PORT_START("SYSTEM") // $200000
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 ) // advance in service mode
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0072, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
@@ -1861,9 +1779,9 @@ static const gfx_layout layout_8x8x6 =
8,8,
RGN_FRAC(1,1),
6,
- {8,9, 0,1,2,3},
+ {STEP2(8,1),STEP4(0,1)},
{0*4,1*4,4*4,5*4,8*4,9*4,12*4,13*4},
- {0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64},
+ {STEP8(0,8*8)},
8*8*8
};
@@ -1886,9 +1804,9 @@ static const gfx_layout layout_8x8x8 =
8,8,
RGN_FRAC(1,1),
8,
- {8,9,10,11, 0,1,2,3},
+ {STEP4(8,1),STEP4(0,1)},
{0*4,1*4,4*4,5*4,8*4,9*4,12*4,13*4},
- {0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64},
+ {STEP8(0,8*8)},
8*8*8
};
@@ -1933,8 +1851,8 @@ static GFXDECODE_START( gfx_ddonpach )
color code and the 4000-7fff range in the color table. */
// "sprites"
- GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x8000, 0x40 ) // [0] Layer 0
- GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x8000, 0x40 ) // [1] Layer 1
+ GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4000, 0x40 ) // [0] Layer 0
+ GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x4000, 0x40 ) // [1] Layer 1
GFXDECODE_ENTRY( "layer2", 0, layout_8x8x8, 0x4000, 0x40 ) // [2] Layer 2
GFXDECODE_END
@@ -2065,7 +1983,7 @@ GFXDECODE_END
void cave_state::machine_start()
{
m_led_outputs.resolve();
- m_vblank_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cave_state::cave_vblank_end), this));
+ m_vblank_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cave_state::vblank_end), this));
save_item(NAME(m_soundbuf_wptr));
save_item(NAME(m_soundbuf_rptr));
@@ -2078,7 +1996,7 @@ void cave_state::machine_start()
save_item(NAME(m_agallet_vblank_irq));
}
-MACHINE_RESET_MEMBER(cave_state,cave)
+void cave_state::machine_reset()
{
std::fill(std::begin(m_soundbuf_data), std::end(m_soundbuf_data), 0);
m_soundbuf_wptr = 0;
@@ -2100,12 +2018,11 @@ MACHINE_CONFIG_START(cave_state::dfeveron)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(dfeveron_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2113,11 +2030,12 @@ MACHINE_CONFIG_START(cave_state::dfeveron)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_dfeveron);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dfeveron)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
@@ -2140,12 +2058,11 @@ MACHINE_CONFIG_START(cave_state::ddonpach)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(ddonpach_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2153,11 +2070,12 @@ MACHINE_CONFIG_START(cave_state::ddonpach)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddonpach);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ddonpach)
- MCFG_PALETTE_ADD("palette", 0x8000 + 0x40*16) // $400 extra entries for layers 1&2
- MCFG_PALETTE_INIT_OWNER(cave_state,ddonpach)
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2179,12 +2097,11 @@ MACHINE_CONFIG_START(cave_state::donpachi)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(donpachi_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2192,11 +2109,12 @@ MACHINE_CONFIG_START(cave_state::donpachi)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_donpachi)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_donpachi);
+
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2225,12 +2143,11 @@ MACHINE_CONFIG_START(cave_state::esprade)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(esprade_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2238,11 +2155,12 @@ MACHINE_CONFIG_START(cave_state::esprade)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_esprade);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_esprade)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2264,11 +2182,9 @@ MACHINE_CONFIG_START(cave_state::gaia)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(gaia_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
-
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
WATCHDOG_TIMER(config, "watchdog");
@@ -2278,11 +2194,12 @@ MACHINE_CONFIG_START(cave_state::gaia)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_esprade);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_esprade)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2304,12 +2221,11 @@ MACHINE_CONFIG_START(cave_state::guwange)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(guwange_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2317,11 +2233,12 @@ MACHINE_CONFIG_START(cave_state::guwange)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_esprade)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_esprade);
+
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2342,16 +2259,15 @@ MACHINE_CONFIG_START(cave_state::hotdogst)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL/2)
MCFG_DEVICE_PROGRAM_MAP(hotdogst_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
MCFG_DEVICE_ADD("audiocpu", Z80, 32_MHz_XTAL/8)
MCFG_DEVICE_PROGRAM_MAP(hotdogst_sound_map)
MCFG_DEVICE_IO_MAP(hotdogst_sound_portmap)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2359,11 +2275,12 @@ MACHINE_CONFIG_START(cave_state::hotdogst)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_hotdogst);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hotdogst)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2395,12 +2312,11 @@ MACHINE_CONFIG_START(cave_state::korokoro)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(korokoro_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2408,11 +2324,12 @@ MACHINE_CONFIG_START(cave_state::korokoro)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1-2, 0, 240-1-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_korokoro);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_korokoro)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,korokoro)
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_korokoro), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2440,7 +2357,7 @@ MACHINE_CONFIG_START(cave_state::mazinger)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(mazinger_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
MCFG_DEVICE_ADD("audiocpu", Z80, 4_MHz_XTAL) // Bidirectional communication
MCFG_DEVICE_PROGRAM_MAP(mazinger_sound_map)
@@ -2448,10 +2365,9 @@ MACHINE_CONFIG_START(cave_state::mazinger)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2459,11 +2375,12 @@ MACHINE_CONFIG_START(cave_state::mazinger)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mazinger)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,mazinger)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_mazinger);
+
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_mazinger), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
@@ -2495,7 +2412,7 @@ MACHINE_CONFIG_START(cave_state::metmqstr)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(metmqstr_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
MCFG_DEVICE_ADD("audiocpu", Z80, 32_MHz_XTAL / 4)
MCFG_DEVICE_PROGRAM_MAP(metmqstr_sound_map)
@@ -2503,10 +2420,9 @@ MACHINE_CONFIG_START(cave_state::metmqstr)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) /* start with the watchdog armed */
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2514,11 +2430,12 @@ MACHINE_CONFIG_START(cave_state::metmqstr)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x7d, 0x7d + 0x180-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_donpachi);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_donpachi)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2553,15 +2470,13 @@ MACHINE_CONFIG_START(cave_state::pacslot)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(pacslot_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
+ EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
- EEPROM_93C46_16BIT(config, "eeprom", eeprom_serial_streaming::ENABLE);
-
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2569,11 +2484,12 @@ MACHINE_CONFIG_START(cave_state::pacslot)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_uopoko)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2610,12 +2526,11 @@ MACHINE_CONFIG_START(cave_state::ppsatan)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(ppsatan_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt_ppsatan)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt_ppsatan)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(1)); /* a guess, and certainly wrong */
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_lev2", cave_state, timer_lev2_cb, attotime::from_hz(60))
@@ -2626,7 +2541,7 @@ MACHINE_CONFIG_START(cave_state::ppsatan)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_ppsatan_top)
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
MCFG_SCREEN_ADD("screen_left", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
@@ -2634,7 +2549,7 @@ MACHINE_CONFIG_START(cave_state::ppsatan)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_ppsatan_left)
- MCFG_TIMER_DRIVER_ADD("int_timer_left", cave_state, cave_vblank_start_left)
+ MCFG_TIMER_DRIVER_ADD("int_timer_left", cave_state, vblank_start_left)
MCFG_SCREEN_ADD("screen_right", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
@@ -2642,11 +2557,13 @@ MACHINE_CONFIG_START(cave_state::ppsatan)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_ppsatan_right)
- MCFG_TIMER_DRIVER_ADD("int_timer_right", cave_state, cave_vblank_start_right)
+ MCFG_TIMER_DRIVER_ADD("int_timer_right", cave_state, vblank_start_right)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_ppsatan);
+
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_ppsatan), this));
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ppsatan)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,ppsatan)
config.set_default_layout(layout_ppsatan);
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2672,16 +2589,15 @@ MACHINE_CONFIG_START(cave_state::pwrinst2)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL) /* 16 MHz */
MCFG_DEVICE_PROGRAM_MAP(pwrinst2_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL / 2) /* 8 MHz */
MCFG_DEVICE_PROGRAM_MAP(pwrinst2_sound_map)
MCFG_DEVICE_IO_MAP(pwrinst2_sound_portmap)
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2689,11 +2605,12 @@ MACHINE_CONFIG_START(cave_state::pwrinst2)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x70, 0x70 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_pwrinst2);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pwrinst2)
- MCFG_PALETTE_ADD("palette", 0x8000+0x2800)
- MCFG_PALETTE_INIT_OWNER(cave_state,pwrinst2)
+ PALETTE(config, m_palette, 0x8000+0x2800);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_pwrinst2), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_4_layers)
@@ -2733,8 +2650,8 @@ TIMER_DEVICE_CALLBACK_MEMBER( cave_state::sailormn_startup )
MACHINE_RESET_MEMBER(cave_state,sailormn)
{
+ machine_reset();
m_startup->adjust(attotime::from_usec(1000), 0, attotime::zero);
- MACHINE_RESET_CALL_MEMBER(cave);
}
MACHINE_CONFIG_START(cave_state::sailormn)
@@ -2742,7 +2659,7 @@ MACHINE_CONFIG_START(cave_state::sailormn)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(sailormn_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
// could be a wachdog, but if it is then our watchdog address is incorrect as there are periods where the game doesn't write it.
MCFG_TIMER_DRIVER_ADD(m_startup, cave_state, sailormn_startup)
@@ -2754,9 +2671,9 @@ MACHINE_CONFIG_START(cave_state::sailormn)
// MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(cave_state,sailormn)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2764,11 +2681,12 @@ MACHINE_CONFIG_START(cave_state::sailormn)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320+1, 240)
MCFG_SCREEN_VISIBLE_AREA(0+1, 320+1-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sailormn)
- MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OWNER(cave_state,sailormn) // 4 bit sprites, 6 bit tiles
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_sailormn);
+
+ PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_sailormn), this)); // 4 bit sprites, 6 bit tiles
MCFG_VIDEO_START_OVERRIDE(cave_state,sailormn_3_layers) /* Layer 2 has 1 banked ROM */
@@ -2805,15 +2723,13 @@ MACHINE_CONFIG_START(cave_state::tekkencw)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(tekkencw_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
-
- EEPROM_93C46_16BIT(config, "eeprom", eeprom_serial_streaming::ENABLE);
+ EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2821,11 +2737,12 @@ MACHINE_CONFIG_START(cave_state::tekkencw)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_uopoko)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
+
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2858,15 +2775,13 @@ MACHINE_CONFIG_START(cave_state::tjumpman)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(tjumpman_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
- MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
-
- EEPROM_93C46_16BIT(config, "eeprom", eeprom_serial_streaming::ENABLE);
+ EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2874,11 +2789,12 @@ MACHINE_CONFIG_START(cave_state::tjumpman)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_uopoko)
- MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
+
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2903,11 +2819,11 @@ MACHINE_CONFIG_START(cave_state::uopoko)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(uopoko_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
- EEPROM_93C46_16BIT(config, "eeprom");
+ EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
+ MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2915,12 +2831,13 @@ MACHINE_CONFIG_START(cave_state::uopoko)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_uopoko)
- MCFG_PALETTE_ADD("palette", 0x8000)
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
- MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
@@ -4665,7 +4582,6 @@ BPSM.U77 23C16000 GFX
***************************************************************************/
-
#define ROMS_SAILORMN \
ROM_REGION( 0x400000, "maincpu", 0 ) \
ROM_LOAD16_WORD_SWAP( "bpsm945a.u45", 0x000000, 0x080000, CRC(898c9515) SHA1(0fe8d7f13f5cfe2f6e79a0a21b2e8e7e70e65c4b) ) \
@@ -5090,10 +5006,6 @@ ROM_START( uopokoj )
ROM_END
-
-
-
-
/***************************************************************************
@@ -5147,7 +5059,6 @@ void cave_state::init_oki_bank(int chip)
m_okibank_hi[chip]->configure_entries(0, max, &ROM[0x00000], 0x20000);
}
-
void cave_state::init_agallet()
{
init_cave();
@@ -5184,6 +5095,10 @@ void cave_state::init_ddonpach()
ddp_unpack_sprites(0);
m_spritetype[0] = 1; // "different" sprites (no zooming?)
m_time_vblank_irq = 90;
+
+ /* 4bpp but Only first 16 colors are used in palette index for Layer 0, 1. */
+ m_gfxdecode->gfx(0)->set_granularity(256);
+ m_gfxdecode->gfx(1)->set_granularity(256);
}
void cave_state::init_donpachi()
@@ -5195,7 +5110,6 @@ void cave_state::init_donpachi()
m_time_vblank_irq = 90;
}
-
void cave_state::init_esprade()
{
init_cave();