summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2019-03-23 08:56:04 -0400
committer GitHub <noreply@github.com>2019-03-23 08:56:04 -0400
commit35a03ba1aab5a0c6f304b7dbac66699ad6f0220e (patch)
treeadfedf7ae8d18a37bef1403c56eade5fb76335f6
parentde34548eb142c17629dbc2124d121179ca959221 (diff)
parentd3eb9d346a35f121404d38c14eea7199200a6d7c (diff)
Merge pull request #4793 from cam900/namcos1_args
namcos1.cpp : Updates
-rw-r--r--src/mame/drivers/namcos1.cpp8
-rw-r--r--src/mame/includes/namcos1.h85
-rw-r--r--src/mame/machine/namcos1.cpp273
-rw-r--r--src/mame/video/namcos1.cpp53
4 files changed, 167 insertions, 252 deletions
diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp
index cf6125f6939..458bedf556e 100644
--- a/src/mame/drivers/namcos1.cpp
+++ b/src/mame/drivers/namcos1.cpp
@@ -347,12 +347,12 @@ C - uses sub board with support for player 3 and 4 controls
/**********************************************************************/
-WRITE8_MEMBER(namcos1_state::audiocpu_irq_ack_w)
+void namcos1_state::audiocpu_irq_ack_w(u8 data)
{
m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
}
-WRITE8_MEMBER(namcos1_state::mcu_irq_ack_w)
+void namcos1_state::mcu_irq_ack_w(u8 data)
{
m_mcu->set_input_line(HD6301_IRQ_LINE, CLEAR_LINE);
}
@@ -372,14 +372,14 @@ READ8_MEMBER(namcos1_state::dsw_r)
return 0xf0 | bitswap<4>(m_dsw_sel->output_r(), 0, 1, 2, 3);
}
-WRITE8_MEMBER(namcos1_state::coin_w)
+void namcos1_state::coin_w(u8 data)
{
machine().bookkeeping().coin_lockout_global_w(BIT(~data, 0));
machine().bookkeeping().coin_counter_w(0, BIT(data, 1));
machine().bookkeeping().coin_counter_w(1, BIT(data, 2));
}
-WRITE8_MEMBER(namcos1_state::dac_gain_w)
+void namcos1_state::dac_gain_w(u8 data)
{
/* DAC0 (GAIN0 = bit0, GAIN1 = bit2) */
int dac0_gain = (BIT(data, 2) << 1) | BIT(data, 0);
diff --git a/src/mame/includes/namcos1.h b/src/mame/includes/namcos1.h
index 13be3197c3e..3b8f0604e29 100644
--- a/src/mame/includes/namcos1.h
+++ b/src/mame/includes/namcos1.h
@@ -33,6 +33,9 @@ public:
m_rom(*this, "user1"),
m_soundbank(*this, "soundbank"),
m_mcubank(*this, "mcubank"),
+ m_io_in(*this, "IN%u", 0U),
+ m_io_control(*this, "CONTROL%u", 0U),
+ m_io_paddle(*this, "PADDLE%u", 0U),
m_io_dipsw(*this, "DIPSW"),
m_dsw_sel(*this, "dsw_sel")
{ }
@@ -63,6 +66,12 @@ public:
void init_dspirit();
void init_pistoldm();
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+ void driver_init() override;
+
private:
required_device<mc6809e_device> m_maincpu;
required_device<mc6809e_device> m_subcpu;
@@ -74,13 +83,16 @@ private:
required_device_array<dac_8bit_r2r_device, 2> m_dac;
required_device<gfxdecode_device> m_gfxdecode;
- required_shared_ptr<uint8_t> m_spriteram;
- required_shared_ptr<uint8_t> m_triram;
- required_region_ptr<uint8_t> m_rom;
+ required_shared_ptr<u8> m_spriteram;
+ required_shared_ptr<u8> m_triram;
+ required_region_ptr<u8> m_rom;
required_memory_bank m_soundbank;
required_memory_bank m_mcubank;
+ optional_ioport_array<4> m_io_in;
+ optional_ioport_array<2> m_io_control;
+ optional_ioport_array<2> m_io_paddle;
required_ioport m_io_dipsw;
required_device<ls157_device> m_dsw_sel;
@@ -91,51 +103,50 @@ private:
int m_key_swap4;
int m_key_bottom4;
int m_key_top4;
- unsigned int m_key_quotient;
- unsigned int m_key_reminder;
- unsigned int m_key_numerator_high_word;
- uint8_t m_key[8];
+ u32 m_key_quotient;
+ u32 m_key_reminder;
+ u32 m_key_numerator_high_word;
+ u8 m_key[8];
int m_mcu_patch_data;
int m_reset;
int m_input_count;
int m_strobe;
int m_strobe_count;
int m_stored_input[2];
- int m_copy_sprites;
- uint8_t m_drawmode_table[16];
+ bool m_copy_sprites;
+ u8 m_drawmode_table[16];
DECLARE_WRITE_LINE_MEMBER(subres_w);
- DECLARE_WRITE8_MEMBER(audiocpu_irq_ack_w);
- DECLARE_WRITE8_MEMBER(mcu_irq_ack_w);
+ void audiocpu_irq_ack_w(u8 data);
+ void mcu_irq_ack_w(u8 data);
DECLARE_READ8_MEMBER(dsw_r);
- DECLARE_WRITE8_MEMBER(coin_w);
- DECLARE_WRITE8_MEMBER(dac_gain_w);
- DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
- DECLARE_WRITE8_MEMBER(mcu_bankswitch_w);
- DECLARE_WRITE8_MEMBER(mcu_patch_w);
- DECLARE_READ8_MEMBER(quester_paddle_r);
- DECLARE_READ8_MEMBER(berabohm_buttons_r);
- DECLARE_READ8_MEMBER(faceoff_inputs_r);
- DECLARE_WRITE8_MEMBER(spriteram_w);
- DECLARE_WRITE8_MEMBER(_3dcs_w);
- DECLARE_READ8_MEMBER(no_key_r);
- DECLARE_WRITE8_MEMBER(no_key_w);
- DECLARE_READ8_MEMBER(key_type1_r);
- DECLARE_WRITE8_MEMBER(key_type1_w);
- DECLARE_READ8_MEMBER(key_type2_r);
- DECLARE_WRITE8_MEMBER(key_type2_w);
- DECLARE_READ8_MEMBER(key_type3_r);
- DECLARE_WRITE8_MEMBER(key_type3_w);
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
- void driver_init() override;
-
- void TilemapCB(uint16_t code, int *tile, int *mask);
+ void coin_w(u8 data);
+ void dac_gain_w(u8 data);
+ void sound_bankswitch_w(u8 data);
+ void mcu_bankswitch_w(u8 data);
+ void mcu_patch_w(u8 data);
+ u8 quester_paddle_r(offs_t offset);
+ u8 berabohm_buttons_r(offs_t offset);
+ u8 faceoff_inputs_r(offs_t offset);
+ void spriteram_w(offs_t offset, u8 data);
+ void _3dcs_w(offs_t offset, u8 data);
+ u8 no_key_r(offs_t offset);
+ void no_key_w(offs_t offset, u8 data);
+ u8 key_type1_r(offs_t offset);
+ void key_type1_w(offs_t offset, u8 data);
+ u8 key_type2_r(offs_t offset);
+ void key_type2_w(offs_t offset, u8 data);
+ u8 key_type3_r(offs_t offset);
+ void key_type3_w(offs_t offset, u8 data);
+
+ void key_type_1_init(int key_id);
+ void key_type_2_init(int key_id);
+ void key_type_3_init(int key_id, int reg, int rng, int swap4_arg, int swap4, int bottom4, int top4);
+
+ void TilemapCB(u16 code, int *tile, int *mask);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
void main_map(address_map &map);
diff --git a/src/mame/machine/namcos1.cpp b/src/mame/machine/namcos1.cpp
index 627e2a8222c..02dc8fedb50 100644
--- a/src/mame/machine/namcos1.cpp
+++ b/src/mame/machine/namcos1.cpp
@@ -10,20 +10,20 @@
* *
*******************************************************************************/
-WRITE8_MEMBER( namcos1_state::_3dcs_w )
+void namcos1_state::_3dcs_w(offs_t offset, u8 data)
{
if (offset & 1) popmessage("LEFT");
else popmessage("RIGHT");
}
-READ8_MEMBER( namcos1_state::no_key_r )
+u8 namcos1_state::no_key_r(offs_t offset)
{
popmessage("%s: keychip read %04x\n", m_mcu->tag(), m_mcu->pc(), offset);
return 0;
}
-WRITE8_MEMBER( namcos1_state::no_key_w )
+void namcos1_state::no_key_w(offs_t offset, u8 data)
{
popmessage("%s: keychip write %04x=%02x\n", m_mcu->tag(), m_mcu->pc(), offset, data);
}
@@ -128,7 +128,7 @@ puzlclub:
CPU #0 PC e017: keychip write 0003=35 [they probably used RAM instead of a key chip for this prototype]
CPU #0 PC e3d4: keychip read 0003 [AND #$37 = key no.]
*/
-READ8_MEMBER( namcos1_state::key_type1_r )
+u8 namcos1_state::key_type1_r(offs_t offset)
{
// logerror("%s: keychip read %04x\n", machine().describe_context(), offset);
@@ -159,7 +159,7 @@ READ8_MEMBER( namcos1_state::key_type1_r )
return 0;
}
-WRITE8_MEMBER( namcos1_state::key_type1_w )
+void namcos1_state::key_type1_w(offs_t offset, u8 data)
{
// logerror("%s: keychip write %04x=%02x\n", machine().describe_context(), offset, data);
@@ -311,7 +311,7 @@ CPU #0 PC e574: keychip read 0001
*/
-READ8_MEMBER( namcos1_state::key_type2_r )
+u8 namcos1_state::key_type2_r(offs_t offset)
{
// logerror("%s: keychip read %04x\n", machine().describe_context(), offset);
@@ -330,7 +330,7 @@ READ8_MEMBER( namcos1_state::key_type2_r )
return 0;
}
-WRITE8_MEMBER( namcos1_state::key_type2_w )
+void namcos1_state::key_type2_w(offs_t offset, u8 data)
{
// logerror("%s: keychip write %04x=%02x\n", machine().describe_context(), offset, data);
@@ -340,8 +340,8 @@ WRITE8_MEMBER( namcos1_state::key_type2_w )
if (offset == 3)
{
- unsigned int d = (m_key[0] << 8) | m_key[1];
- unsigned int n = (m_key_numerator_high_word << 16) | (m_key[2] << 8) | m_key[3];
+ u32 d = (m_key[0] << 8) | m_key[1];
+ u32 n = (m_key_numerator_high_word << 16) | (m_key[2] << 8) | m_key[3];
if (d)
{
@@ -437,7 +437,7 @@ CPU #0 PC ca96: keychip read 0043 [0x30 | (ARG & 0x0f)]
CPU #0 PC e45a: keychip read 0030 [discarded]
*/
-READ8_MEMBER( namcos1_state::key_type3_r )
+u8 namcos1_state::key_type3_r(offs_t offset)
{
// logerror("%s: keychip read %04x\n", machine().describe_context(), offset);
@@ -447,7 +447,7 @@ READ8_MEMBER( namcos1_state::key_type3_r )
The schematics don't show A11 being used, so I go for this handling.
*/
- int op = (offset & 0x70) >> 4;
+ const int op = (offset & 0x70) >> 4;
if (op == m_key_reg) return m_key_id;
if (op == m_key_rng) return machine().rand();
@@ -461,7 +461,7 @@ READ8_MEMBER( namcos1_state::key_type3_r )
return 0;
}
-WRITE8_MEMBER( namcos1_state::key_type3_w )
+void namcos1_state::key_type3_w(offs_t offset, u8 data)
{
// logerror("%s: keychip write %04x=%02x\n", machine().describe_context(), offset, data);
@@ -476,7 +476,7 @@ WRITE8_MEMBER( namcos1_state::key_type3_w )
* *
*******************************************************************************/
-WRITE8_MEMBER(namcos1_state::sound_bankswitch_w)
+void namcos1_state::sound_bankswitch_w(u8 data)
{
m_soundbank->set_entry((data & 0x70) >> 4);
}
@@ -545,7 +545,7 @@ void namcos1_state::machine_reset()
*******************************************************************************/
/* mcu banked rom area select */
-WRITE8_MEMBER(namcos1_state::mcu_bankswitch_w)
+void namcos1_state::mcu_bankswitch_w(u8 data)
{
int bank;
@@ -581,7 +581,7 @@ WRITE8_MEMBER(namcos1_state::mcu_bankswitch_w)
/* I found set $A6 only initialize in MCU */
/* This patch kill write this data by MCU case $A6 to xx(clear) */
-WRITE8_MEMBER(namcos1_state::mcu_patch_w)
+void namcos1_state::mcu_patch_w(u8 data)
{
//logerror("mcu C000 write %s data=%02x\n",machine().describe_context(),data);
if (m_mcu_patch_data == 0xa6) return;
@@ -603,14 +603,14 @@ void namcos1_state::driver_init()
{
if ((i & 0x010000) == 0)
{
- uint8_t t = m_rom[i];
+ u8 t = m_rom[i];
m_rom[i] = m_rom[i + 0x010000];
m_rom[i + 0x010000] = t;
}
}
// kludge! see notes
- m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(namcos1_state::mcu_patch_w), this));
+ m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8smo_delegate(FUNC(namcos1_state::mcu_patch_w), this));
// these are overridden as needed in the specific DRIVER_INIT_MEMBERs
m_key_id = 0;
@@ -622,6 +622,38 @@ void namcos1_state::driver_init()
m_key_top4 = 0;
}
+void namcos1_state::key_type_1_init(int key_id)
+{
+ m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
+ read8sm_delegate(FUNC(namcos1_state::key_type1_r),this),
+ write8sm_delegate(FUNC(namcos1_state::key_type1_w),this));
+ m_key_id = key_id;
+}
+
+void namcos1_state::key_type_2_init(int key_id)
+{
+ m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
+ read8sm_delegate(FUNC(namcos1_state::key_type2_r),this),
+ write8sm_delegate(FUNC(namcos1_state::key_type2_w),this));
+ m_key_id = key_id;
+ save_item(NAME(m_key_quotient));
+ save_item(NAME(m_key_reminder));
+ save_item(NAME(m_key_numerator_high_word));
+}
+
+void namcos1_state::key_type_3_init(int key_id, int reg, int rng, int swap4_arg, int swap4, int bottom4, int top4)
+{
+ m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
+ read8sm_delegate(FUNC(namcos1_state::key_type3_r),this),
+ write8sm_delegate(FUNC(namcos1_state::key_type3_w),this));
+ m_key_id = key_id;
+ m_key_reg = reg;
+ m_key_rng = rng;
+ m_key_swap4_arg = swap4_arg;
+ m_key_swap4 = swap4;
+ m_key_bottom4 = bottom4;
+ m_key_top4 = top4;
+}
/*******************************************************************************
* Shadowland / Youkai Douchuuki specific *
@@ -637,10 +669,7 @@ void namcos1_state::init_shadowld()
void namcos1_state::init_dspirit()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type1_r),this),
- write8_delegate(FUNC(namcos1_state::key_type1_w),this));
- m_key_id = 0x36;
+ key_type_1_init(0x36);
}
/*******************************************************************************
@@ -649,10 +678,7 @@ void namcos1_state::init_dspirit()
void namcos1_state::init_wldcourt()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type1_r),this),
- write8_delegate(FUNC(namcos1_state::key_type1_w),this));
- m_key_id = 0x35;
+ key_type_1_init(0x35);
}
/*******************************************************************************
@@ -661,10 +687,7 @@ void namcos1_state::init_wldcourt()
void namcos1_state::init_blazer()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type1_r),this),
- write8_delegate(FUNC(namcos1_state::key_type1_w),this));
- m_key_id = 0x13;
+ key_type_1_init(0x13);
}
/*******************************************************************************
@@ -673,10 +696,7 @@ void namcos1_state::init_blazer()
void namcos1_state::init_puzlclub()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type1_r),this),
- write8_delegate(FUNC(namcos1_state::key_type1_w),this));
- m_key_id = 0x35;
+ key_type_1_init(0x35);
}
/*******************************************************************************
@@ -685,13 +705,7 @@ void namcos1_state::init_puzlclub()
void namcos1_state::init_pacmania()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type2_r),this),
- write8_delegate(FUNC(namcos1_state::key_type2_w),this));
- m_key_id = 0x12;
- save_item(NAME(m_key_quotient));
- save_item(NAME(m_key_reminder));
- save_item(NAME(m_key_numerator_high_word));
+ key_type_2_init(0x12);
}
/*******************************************************************************
@@ -700,13 +714,7 @@ void namcos1_state::init_pacmania()
void namcos1_state::init_alice()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type2_r),this),
- write8_delegate(FUNC(namcos1_state::key_type2_w),this));
- m_key_id = 0x25;
- save_item(NAME(m_key_quotient));
- save_item(NAME(m_key_reminder));
- save_item(NAME(m_key_numerator_high_word));
+ key_type_2_init(0x25);
}
/*******************************************************************************
@@ -715,13 +723,7 @@ void namcos1_state::init_alice()
void namcos1_state::init_galaga88()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type2_r),this),
- write8_delegate(FUNC(namcos1_state::key_type2_w),this));
- m_key_id = 0x31;
- save_item(NAME(m_key_quotient));
- save_item(NAME(m_key_reminder));
- save_item(NAME(m_key_numerator_high_word));
+ key_type_2_init(0x31);
}
/*******************************************************************************
@@ -730,13 +732,7 @@ void namcos1_state::init_galaga88()
void namcos1_state::init_ws()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type2_r),this),
- write8_delegate(FUNC(namcos1_state::key_type2_w),this));
- m_key_id = 0x07;
- save_item(NAME(m_key_quotient));
- save_item(NAME(m_key_reminder));
- save_item(NAME(m_key_numerator_high_word));
+ key_type_2_init(0x07);
}
/*******************************************************************************
@@ -745,13 +741,7 @@ void namcos1_state::init_ws()
void namcos1_state::init_bakutotu()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type2_r),this),
- write8_delegate(FUNC(namcos1_state::key_type2_w),this));
- m_key_id = 0x22;
- save_item(NAME(m_key_quotient));
- save_item(NAME(m_key_reminder));
- save_item(NAME(m_key_numerator_high_word));
+ key_type_2_init(0x22);
}
/*******************************************************************************
@@ -760,16 +750,7 @@ void namcos1_state::init_bakutotu()
void namcos1_state::init_splatter()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 181;
- m_key_reg = 3;
- m_key_rng = 4;
- m_key_swap4_arg = -1;
- m_key_swap4 = -1;
- m_key_bottom4 = -1;
- m_key_top4 = -1;
+ key_type_3_init(181, 3, 4, -1, -1, -1, -1);
}
/*******************************************************************************
@@ -778,16 +759,7 @@ void namcos1_state::init_splatter()
void namcos1_state::init_rompers()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 182;
- m_key_reg = 7;
- m_key_rng = -1;
- m_key_swap4_arg = -1;
- m_key_swap4 = -1;
- m_key_bottom4 = -1;
- m_key_top4 = -1;
+ key_type_3_init(182, 7, -1, -1, -1, -1, -1);
}
/*******************************************************************************
@@ -796,16 +768,7 @@ void namcos1_state::init_rompers()
void namcos1_state::init_blastoff()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 183;
- m_key_reg = 0;
- m_key_rng = 7;
- m_key_swap4_arg = 3;
- m_key_swap4 = 5;
- m_key_bottom4 = -1;
- m_key_top4 = -1;
+ key_type_3_init(183, 0, 7, 3, 5, -1, -1);
}
/*******************************************************************************
@@ -814,16 +777,7 @@ void namcos1_state::init_blastoff()
void namcos1_state::init_ws89()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 184;
- m_key_reg = 2;
- m_key_rng = -1;
- m_key_swap4_arg = -1;
- m_key_swap4 = -1;
- m_key_bottom4 = -1;
- m_key_top4 = -1;
+ key_type_3_init(184, 2, -1, -1, -1, -1, -1);
}
/*******************************************************************************
@@ -832,16 +786,7 @@ void namcos1_state::init_ws89()
void namcos1_state::init_tankfrce()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 185;
- m_key_reg = 5;
- m_key_rng = -1;
- m_key_swap4_arg = 1;
- m_key_swap4 = -1;
- m_key_bottom4 = 2;
- m_key_top4 = -1;
+ key_type_3_init(185, 5, -1, 1, -1, 2, -1);
}
void namcos1_state::init_tankfrc4()
@@ -853,7 +798,7 @@ void namcos1_state::init_tankfrc4()
m_stored_input[0] = 0;
m_stored_input[1] = 0;
- m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this));
+ m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::faceoff_inputs_r), this));
save_item(NAME(m_input_count));
save_item(NAME(m_stored_input));
}
@@ -864,16 +809,7 @@ void namcos1_state::init_tankfrc4()
void namcos1_state::init_dangseed()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 308;
- m_key_reg = 6;
- m_key_rng = -1;
- m_key_swap4_arg = 5;
- m_key_swap4 = -1;
- m_key_bottom4 = 0;
- m_key_top4 = 4;
+ key_type_3_init(308, 6, -1, 5, -1, 0, 4);
}
/*******************************************************************************
@@ -882,16 +818,7 @@ void namcos1_state::init_dangseed()
void namcos1_state::init_pistoldm()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 309;
- m_key_reg = 1;
- m_key_rng = 2;
- m_key_swap4_arg = 0;
- m_key_swap4 = -1;
- m_key_bottom4 = 4;
- m_key_top4 = -1;
+ key_type_3_init(309, 1, 2, 0, -1, 4, -1);
}
/*******************************************************************************
@@ -900,16 +827,7 @@ void namcos1_state::init_pistoldm()
void namcos1_state::init_ws90()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 310;
- m_key_reg = 4;
- m_key_rng = -1;
- m_key_swap4_arg = 7;
- m_key_swap4 = -1;
- m_key_bottom4 = 3;
- m_key_top4 = -1;
+ key_type_3_init(310, 4, -1, 7, -1, 3, -1);
}
/*******************************************************************************
@@ -918,16 +836,7 @@ void namcos1_state::init_ws90()
void namcos1_state::init_soukobdx()
{
driver_init();
- m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
- read8_delegate(FUNC(namcos1_state::key_type3_r),this),
- write8_delegate(FUNC(namcos1_state::key_type3_w),this));
- m_key_id = 311;
- m_key_reg = 2;
- m_key_rng = 3; /*?*/
- m_key_swap4_arg = 0;
- m_key_swap4 = -1;
- m_key_bottom4 = 4;
- m_key_top4 = -1;
+ key_type_3_init(311, 2, 3 /*?*/, 0, -1, 4, -1);
}
@@ -935,16 +844,16 @@ void namcos1_state::init_soukobdx()
/*******************************************************************************
* Quester specific *
*******************************************************************************/
-READ8_MEMBER( namcos1_state::quester_paddle_r )
+u8 namcos1_state::quester_paddle_r(offs_t offset)
{
if (offset == 0)
{
int ret;
if (!(m_strobe & 0x20))
- ret = (ioport("CONTROL0")->read()&0x90) | (m_strobe & 0x40) | (ioport("PADDLE0")->read()&0x0f);
+ ret = (m_io_control[0]->read()&0x90) | (m_strobe & 0x40) | (m_io_paddle[0]->read()&0x0f);
else
- ret = (ioport("CONTROL0")->read()&0x90) | (m_strobe & 0x40) | (ioport("PADDLE1")->read()&0x0f);
+ ret = (m_io_control[0]->read()&0x90) | (m_strobe & 0x40) | (m_io_paddle[1]->read()&0x0f);
m_strobe ^= 0x40;
@@ -955,9 +864,9 @@ READ8_MEMBER( namcos1_state::quester_paddle_r )
int ret;
if (!(m_strobe & 0x20))
- ret = (ioport("CONTROL1")->read()&0x90) | 0x00 | (ioport("PADDLE0")->read()>>4);
+ ret = (m_io_control[1]->read()&0x90) | 0x00 | (m_io_paddle[0]->read()>>4);
else
- ret = (ioport("CONTROL1")->read()&0x90) | 0x20 | (ioport("PADDLE1")->read()>>4);
+ ret = (m_io_control[1]->read()&0x90) | 0x20 | (m_io_paddle[1]->read()>>4);
if (!(m_strobe & 0x40)) m_strobe ^= 0x20;
@@ -969,7 +878,7 @@ void namcos1_state::init_quester()
{
m_strobe = 0;
driver_init();
- m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::quester_paddle_r), this));
+ m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::quester_paddle_r), this));
save_item(NAME(m_strobe));
}
@@ -979,7 +888,7 @@ void namcos1_state::init_quester()
* Beraboh Man specific *
*******************************************************************************/
-READ8_MEMBER( namcos1_state::berabohm_buttons_r )
+u8 namcos1_state::berabohm_buttons_r(offs_t offset)
{
int res;
@@ -987,16 +896,13 @@ READ8_MEMBER( namcos1_state::berabohm_buttons_r )
{
int inp = m_input_count;
- if (inp == 4) res = ioport("CONTROL0")->read();
+ if (inp == 4) res = m_io_control[0]->read();
else
{
- char portname[40];
-
#ifdef PRESSURE_SENSITIVE
static int counter[4];
- sprintf(portname,"IN%d",inp); /* IN0-IN3 */
- res = ioport(portname)->read();
+ res = m_io_in[inp]->read(); /* IN0-IN3 */
if (res & 0x80)
{
if (counter[inp] >= 0)
@@ -1019,8 +925,7 @@ READ8_MEMBER( namcos1_state::berabohm_buttons_r )
else
counter[inp] = -1;
#else
- sprintf(portname,"IN%d",inp); /* IN0-IN3 */
- res = ioport(portname)->read();
+ res = m_io_in[inp]->read(); /* IN0-IN3 */
if (res & 1) res = 0x7f; /* weak */
else if (res & 2) res = 0x48; /* medium */
else if (res & 4) res = 0x40; /* strong */
@@ -1031,7 +936,7 @@ READ8_MEMBER( namcos1_state::berabohm_buttons_r )
}
else
{
- res = ioport("CONTROL1")->read() & 0x8f;
+ res = m_io_control[1]->read() & 0x8f;
/* the strobe cannot happen too often, otherwise the MCU will waste too
much time reading the inputs and won't have enough cycles to play two
@@ -1059,7 +964,7 @@ void namcos1_state::init_berabohm()
m_strobe = 0;
m_strobe_count = 0;
driver_init();
- m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::berabohm_buttons_r), this));
+ m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::berabohm_buttons_r), this));
save_item(NAME(m_input_count));
save_item(NAME(m_strobe));
save_item(NAME(m_strobe_count));
@@ -1073,19 +978,19 @@ void namcos1_state::init_berabohm()
// used by faceoff and tankforce 4 player (input multiplex)
-READ8_MEMBER( namcos1_state::faceoff_inputs_r )
+u8 namcos1_state::faceoff_inputs_r(offs_t offset)
{
int res;
if (offset == 0)
{
- res = (ioport("CONTROL0")->read() & 0x80) | m_stored_input[0];
+ res = (m_io_control[0]->read() & 0x80) | m_stored_input[0];
return res;
}
else
{
- res = ioport("CONTROL1")->read() & 0x80;
+ res = m_io_control[1]->read() & 0x80;
/* the strobe cannot happen too often, otherwise the MCU will waste too
much time reading the inputs and won't have enough cycles to play two
@@ -1100,17 +1005,17 @@ READ8_MEMBER( namcos1_state::faceoff_inputs_r )
switch (m_input_count)
{
case 0:
- m_stored_input[0] = ioport("IN0")->read() & 0x1f;
- m_stored_input[1] = (ioport("IN3")->read() & 0x07) << 3;
+ m_stored_input[0] = m_io_in[0]->read() & 0x1f;
+ m_stored_input[1] = (m_io_in[3]->read() & 0x07) << 3;
break;
case 3:
- m_stored_input[0] = ioport("IN2")->read() & 0x1f;
+ m_stored_input[0] = m_io_in[2]->read() & 0x1f;
break;
case 4:
- m_stored_input[0] = ioport("IN1")->read() & 0x1f;
- m_stored_input[1] = ioport("IN3")->read() & 0x18;
+ m_stored_input[0] = m_io_in[1]->read() & 0x1f;
+ m_stored_input[1] = m_io_in[3]->read() & 0x18;
break;
default:
@@ -1138,7 +1043,7 @@ void namcos1_state::init_faceoff()
m_stored_input[1] = 0;
driver_init();
- m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this));
+ m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::faceoff_inputs_r), this));
save_item(NAME(m_input_count));
save_item(NAME(m_stored_input));
}
diff --git a/src/mame/video/namcos1.cpp b/src/mame/video/namcos1.cpp
index af5c91be3a1..ccabf3c0ca9 100644
--- a/src/mame/video/namcos1.cpp
+++ b/src/mame/video/namcos1.cpp
@@ -53,7 +53,7 @@ Namco System 1 Video Hardware
***************************************************************************/
-void namcos1_state::TilemapCB(uint16_t code, int *tile, int *mask)
+void namcos1_state::TilemapCB(u16 code, int *tile, int *mask)
{
code &= 0x3fff;
*tile = code;
@@ -82,7 +82,7 @@ void namcos1_state::video_start()
for (i = 0x0800;i < 0x1000;i++)
m_c116->shadow_table()[i] = i + 0x0800;
- m_copy_sprites = 0;
+ m_copy_sprites = false;
save_item(NAME(m_copy_sprites));
}
@@ -95,7 +95,7 @@ void namcos1_state::video_start()
***************************************************************************/
-WRITE8_MEMBER( namcos1_state::spriteram_w )
+void namcos1_state::spriteram_w(offs_t offset, u8 data)
{
/* 0000-07ff work ram */
/* 0800-0fff sprite ram */
@@ -103,7 +103,7 @@ WRITE8_MEMBER( namcos1_state::spriteram_w )
/* a write to this offset tells the sprite chip to buffer the sprite list */
if (offset == 0x0ff2)
- m_copy_sprites = 1;
+ m_copy_sprites = true;
}
@@ -136,32 +136,32 @@ sprite format:
void namcos1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- uint8_t *spriteram = m_spriteram + 0x800;
- const uint8_t *source = &spriteram[0x800-0x20]; /* the last is NOT a sprite */
- const uint8_t *finish = &spriteram[0];
+ u8 *spriteram = m_spriteram + 0x800;
+ const u8 *source = &spriteram[0x800-0x20]; /* the last is NOT a sprite */
+ const u8 *finish = &spriteram[0];
gfx_element *gfx = m_gfxdecode->gfx(0);
- int sprite_xoffs = spriteram[0x07f5] + ((spriteram[0x07f4] & 1) << 8);
- int sprite_yoffs = spriteram[0x07f7];
+ const int sprite_xoffs = spriteram[0x07f5] + ((spriteram[0x07f4] & 1) << 8);
+ const int sprite_yoffs = spriteram[0x07f7];
while (source >= finish)
{
static const int sprite_size[4] = { 16, 8, 32, 4 };
- int attr1 = source[10];
- int attr2 = source[14];
- int color = source[12];
+ const u8 attr1 = source[10];
+ const u8 attr2 = source[14];
+ u32 color = source[12];
int flipx = (attr1 & 0x20) >> 5;
int flipy = (attr2 & 0x01);
- int sizex = sprite_size[(attr1 & 0xc0) >> 6];
- int sizey = sprite_size[(attr2 & 0x06) >> 1];
- int tx = (attr1 & 0x18) & (~(sizex-1));
- int ty = (attr2 & 0x18) & (~(sizey-1));
+ const u16 sizex = sprite_size[(attr1 & 0xc0) >> 6];
+ const u16 sizey = sprite_size[(attr2 & 0x06) >> 1];
+ const u16 tx = (attr1 & 0x18) & (~(sizex - 1));
+ const u16 ty = (attr2 & 0x18) & (~(sizey - 1));
int sx = source[13] + ((color & 0x01) << 8);
int sy = -source[15] - sizey;
- int sprite = source[11];
- int sprite_bank = attr1 & 7;
- int priority = (source[14] & 0xe0) >> 5;
- int pri_mask = (0xff << (priority + 1)) & 0xff;
+ u32 sprite = source[11];
+ const u32 sprite_bank = attr1 & 7;
+ const int priority = (source[14] & 0xe0) >> 5;
+ const u8 pri_mask = (0xff << (priority + 1)) & 0xff;
sprite += sprite_bank * 256;
color = color >> 1;
@@ -205,7 +205,7 @@ void namcos1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
-uint32_t namcos1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+u32 namcos1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
rectangle new_clip = cliprect;
@@ -252,16 +252,15 @@ WRITE_LINE_MEMBER(namcos1_state::screen_vblank)
{
if (m_copy_sprites)
{
- uint8_t *spriteram = m_spriteram + 0x800;
- int i,j;
+ u8 *spriteram = m_spriteram + 0x800;
- for (i = 0;i < 0x800;i += 16)
+ for (int i = 0; i < 0x800; i += 16)
{
- for (j = 10;j < 16;j++)
- spriteram[i+j] = spriteram[i+j - 6];
+ for (int j = 10; j < 16; j++)
+ spriteram[i + j] = spriteram[i + j - 6];
}
- m_copy_sprites = 0;
+ m_copy_sprites = false;
}
m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);