williams.cpp, wmg.cpp : Simplify handlers

This commit is contained in:
cam900 2019-03-31 14:01:11 +09:00
parent f86c3204dd
commit 60e62c62be
5 changed files with 76 additions and 77 deletions

View File

@ -3185,7 +3185,7 @@ void williams_state::init_mayday()
CONFIGURE_BLITTER(WILLIAMS_BLITTER_NONE, 0x0000);
/* install a handler to catch protection checks */
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa190, 0xa191, read8_delegate(FUNC(williams_state::mayday_protection_r),this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa190, 0xa191, read8sm_delegate(FUNC(williams_state::mayday_protection_r),this));
m_mayday_protection = m_videoram + 0xa190;
}
@ -3220,7 +3220,7 @@ void williams_state::init_bubbles()
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
/* bubbles has a full 8-bit-wide CMOS */
m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc00, 0xcfff, write8_delegate(FUNC(williams_state::bubbles_cmos_w),this));
m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc00, 0xcfff, write8sm_delegate(FUNC(williams_state::bubbles_cmos_w),this));
}

View File

@ -100,15 +100,15 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(wmg_mux_r);
private:
DECLARE_READ8_MEMBER(wmg_nvram_r);
DECLARE_WRITE8_MEMBER(wmg_nvram_w);
DECLARE_READ8_MEMBER(wmg_pia_0_r);
DECLARE_WRITE8_MEMBER(wmg_c400_w);
DECLARE_WRITE8_MEMBER(wmg_d000_w);
u8 wmg_nvram_r(offs_t offset);
void wmg_nvram_w(offs_t offset, u8 data);
u8 wmg_pia_0_r(offs_t offset);
void wmg_c400_w(u8 data);
void wmg_d000_w(u8 data);
DECLARE_WRITE8_MEMBER(wmg_blitter_w);
DECLARE_WRITE_LINE_MEMBER(wmg_port_select_w);
DECLARE_WRITE8_MEMBER(wmg_sound_reset_w);
DECLARE_WRITE8_MEMBER(wmg_vram_select_w);
void wmg_sound_reset_w(u8 data);
void wmg_vram_select_w(u8 data);
void wmg_cpu1(address_map &map);
void wmg_cpu2(address_map &map);
@ -325,12 +325,12 @@ INPUT_PORTS_END
* NVRAM (8k x 8), banked
*
*************************************/
READ8_MEMBER( wmg_state::wmg_nvram_r )
u8 wmg_state::wmg_nvram_r(offs_t offset)
{
return m_p_ram[offset+(m_wmg_c400<<10)];
}
WRITE8_MEMBER( wmg_state::wmg_nvram_w )
void wmg_state::wmg_nvram_w(offs_t offset, u8 data)
{
m_p_ram[offset+(m_wmg_c400<<10)] = data;
}
@ -355,7 +355,7 @@ WRITE8_MEMBER( wmg_state::wmg_blitter_w )
/* switches the banks around when given a game number.
The hardware has a lock feature, so that once a bank is selected, the next choice must be the menu */
WRITE8_MEMBER( wmg_state::wmg_c400_w )
void wmg_state::wmg_c400_w(u8 data)
{
data &= 7;
if (m_wmg_c400 == data)
@ -364,7 +364,7 @@ WRITE8_MEMBER( wmg_state::wmg_c400_w )
if ((data == 0) || (m_wmg_c400 == 0)) // we must be going to/from the menu
{
m_wmg_c400 = data;
wmg_d000_w( space, 0, 0); // select i/o
wmg_d000_w(0); // select i/o
m_mainbank->set_entry(m_wmg_vram_bank ? (1+m_wmg_c400) : 0); // Gfx etc
m_codebank->set_entry(data); // Code
m_soundbank->set_entry(data); // Sound
@ -372,13 +372,13 @@ WRITE8_MEMBER( wmg_state::wmg_c400_w )
}
}
WRITE8_MEMBER( wmg_state::wmg_sound_reset_w )
void wmg_state::wmg_sound_reset_w(u8 data)
{
/* This resets the sound card when bit 0 is low */
if (!BIT(data, 0)) m_soundcpu->reset();
}
WRITE8_MEMBER( wmg_state::wmg_vram_select_w )
void wmg_state::wmg_vram_select_w(u8 data)
{
/* VRAM/ROM banking from bit 0 */
m_wmg_vram_bank = BIT(data, 0);
@ -390,7 +390,7 @@ WRITE8_MEMBER( wmg_state::wmg_vram_select_w )
// if defender, choose a rom, else enable i/o
WRITE8_MEMBER( wmg_state::wmg_d000_w )
void wmg_state::wmg_d000_w(u8 data)
{
data &= 15;
if (m_wmg_d000 == data)
@ -446,12 +446,11 @@ void wmg_state::machine_start()
void wmg_state::machine_reset()
{
address_space &space1 = m_maincpu->space(AS_PROGRAM);
m_wmg_c400=0xff;
m_wmg_d000=0xff;
m_wmg_port_select=0;
m_wmg_vram_bank=0;
wmg_c400_w( space1, 0, 0);
wmg_c400_w(0);
m_maincpu->reset();
}
@ -482,7 +481,7 @@ CUSTOM_INPUT_MEMBER(wmg_state::wmg_mux_r)
}
}
READ8_MEMBER( wmg_state::wmg_pia_0_r )
u8 wmg_state::wmg_pia_0_r(offs_t offset)
{
/* if player presses P1 and P2 in a game, return to the menu.
Since there is no code in rom to handle this, it must be a hardware feature
@ -492,7 +491,7 @@ READ8_MEMBER( wmg_state::wmg_pia_0_r )
if ((m_wmg_c400) && (offset == 0) && ((data & 0x30) == 0x30)) // P1 and P2 pressed
{
wmg_c400_w( space, 0, 0);
wmg_c400_w(0);
m_maincpu->reset();
}

View File

@ -68,10 +68,10 @@ public:
void init_robotron();
void init_bubbles();
DECLARE_READ8_MEMBER(williams_49way_port_0_r);
DECLARE_WRITE8_MEMBER(williams_snd_cmd_w);
DECLARE_WRITE8_MEMBER(defender_video_control_w);
DECLARE_READ8_MEMBER(williams_video_counter_r);
u8 williams_49way_port_0_r();
void williams_snd_cmd_w(u8 data);
void defender_video_control_w(u8 data);
u8 williams_video_counter_r();
DECLARE_WRITE8_MEMBER(williams_watchdog_reset_w);
TIMER_DEVICE_CALLBACK_MEMBER(williams_va11_callback);
@ -109,12 +109,12 @@ protected:
uint8_t m_blitter_remap_index;
const uint8_t *m_blitter_remap;
std::unique_ptr<uint8_t[]> m_blitter_remap_lookup;
DECLARE_WRITE8_MEMBER(williams_vram_select_w);
DECLARE_WRITE8_MEMBER(williams_cmos_w);
DECLARE_WRITE8_MEMBER(bubbles_cmos_w);
DECLARE_WRITE8_MEMBER(defender_bank_select_w);
DECLARE_READ8_MEMBER(mayday_protection_r);
DECLARE_WRITE8_MEMBER(sinistar_vram_select_w);
void williams_vram_select_w(u8 data);
void williams_cmos_w(offs_t offset, u8 data);
void bubbles_cmos_w(offs_t offset, u8 data);
void defender_bank_select_w(u8 data);
u8 mayday_protection_r(offs_t offset);
void sinistar_vram_select_w(u8 data);
DECLARE_WRITE8_MEMBER(williams_blitter_w);
DECLARE_MACHINE_START(defender);
@ -124,7 +124,7 @@ protected:
TIMER_CALLBACK_MEMBER(williams_deferred_snd_cmd_w);
DECLARE_WRITE8_MEMBER(playball_snd_cmd_w);
void playball_snd_cmd_w(u8 data);
DECLARE_WRITE_LINE_MEMBER(lottofun_coin_lock_w);
@ -197,12 +197,12 @@ private:
uint8_t m_vram_bank;
uint8_t m_rom_bank;
DECLARE_WRITE8_MEMBER(blaster_vram_select_w);
DECLARE_WRITE8_MEMBER(blaster_bank_select_w);
DECLARE_WRITE8_MEMBER(blaster_remap_select_w);
DECLARE_WRITE8_MEMBER(blaster_video_control_w);
void blaster_vram_select_w(u8 data);
void blaster_bank_select_w(u8 data);
void blaster_remap_select_w(u8 data);
void blaster_video_control_w(u8 data);
TIMER_CALLBACK_MEMBER(blaster_deferred_snd_cmd_w);
DECLARE_WRITE8_MEMBER(blaster_snd_cmd_w);
void blaster_snd_cmd_w(u8 data);
DECLARE_MACHINE_START(blaster);
DECLARE_VIDEO_START(blaster);
@ -244,20 +244,20 @@ protected:
uint8_t m_williams2_tilemap_config;
TILE_GET_INFO_MEMBER(get_tile_info);
DECLARE_WRITE8_MEMBER(williams2_bank_select_w);
void williams2_bank_select_w(u8 data);
DECLARE_WRITE8_MEMBER(williams2_watchdog_reset_w);
DECLARE_WRITE8_MEMBER(williams2_7segment_w);
DECLARE_WRITE8_MEMBER(williams2_paletteram_w);
DECLARE_WRITE8_MEMBER(williams2_fg_select_w);
DECLARE_WRITE8_MEMBER(williams2_bg_select_w);
DECLARE_WRITE8_MEMBER(williams2_tileram_w);
DECLARE_WRITE8_MEMBER(williams2_xscroll_low_w);
DECLARE_WRITE8_MEMBER(williams2_xscroll_high_w);
DECLARE_WRITE8_MEMBER(williams2_blit_window_enable_w);
void williams2_7segment_w(u8 data);
void williams2_paletteram_w(offs_t offset, u8 data);
void williams2_fg_select_w(u8 data);
void williams2_bg_select_w(u8 data);
void williams2_tileram_w(offs_t offset, u8 data);
void williams2_xscroll_low_w(u8 data);
void williams2_xscroll_high_w(u8 data);
void williams2_blit_window_enable_w(u8 data);
TIMER_DEVICE_CALLBACK_MEMBER(williams2_va11_callback);
TIMER_DEVICE_CALLBACK_MEMBER(williams2_endscreen_callback);
TIMER_CALLBACK_MEMBER(williams2_deferred_snd_cmd_w);
DECLARE_WRITE8_MEMBER(williams2_snd_cmd_w);
void williams2_snd_cmd_w(u8 data);
DECLARE_MACHINE_START(williams2);
DECLARE_MACHINE_RESET(williams2);
@ -290,7 +290,7 @@ public:
private:
DECLARE_WRITE_LINE_MEMBER(maxvol_w);
DECLARE_WRITE8_MEMBER(lamp_w);
void lamp_w(u8 data);
DECLARE_MACHINE_START(tshoot);

View File

@ -105,7 +105,7 @@ MACHINE_START_MEMBER(williams2_state,williams2)
MACHINE_RESET_MEMBER(williams2_state,williams2)
{
/* make sure our banking is reset */
williams2_bank_select_w(machine().dummy_space(), 0, 0);
williams2_bank_select_w(0);
}
@ -116,7 +116,7 @@ MACHINE_RESET_MEMBER(williams2_state,williams2)
*
*************************************/
WRITE8_MEMBER(williams_state::williams_vram_select_w)
void williams_state::williams_vram_select_w(u8 data)
{
/* VRAM/ROM banking from bit 0 */
m_mainbank->set_entry(data & 0x01);
@ -126,7 +126,7 @@ WRITE8_MEMBER(williams_state::williams_vram_select_w)
}
WRITE8_MEMBER(williams2_state::williams2_bank_select_w)
void williams2_state::williams2_bank_select_w(u8 data)
{
/* the low two bits control the paging */
switch (data & 0x03)
@ -166,13 +166,13 @@ TIMER_CALLBACK_MEMBER(williams_state::williams_deferred_snd_cmd_w)
m_pia[2]->cb1_w((param == 0xff) ? 0 : 1);
}
WRITE8_MEMBER(williams_state::williams_snd_cmd_w)
void williams_state::williams_snd_cmd_w(u8 data)
{
/* the high two bits are set externally, and should be 1 */
machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams_deferred_snd_cmd_w),this), data | 0xc0);
}
WRITE8_MEMBER(williams_state::playball_snd_cmd_w)
void williams_state::playball_snd_cmd_w(u8 data)
{
machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams_deferred_snd_cmd_w),this), data);
}
@ -182,7 +182,7 @@ TIMER_CALLBACK_MEMBER(williams2_state::williams2_deferred_snd_cmd_w)
m_pia[2]->write_porta(param);
}
WRITE8_MEMBER(williams2_state::williams2_snd_cmd_w)
void williams2_state::williams2_snd_cmd_w(u8 data)
{
machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams2_state::williams2_deferred_snd_cmd_w),this), data);
}
@ -214,7 +214,7 @@ WRITE8_MEMBER(williams2_state::williams2_snd_cmd_w)
* 1000 = right/down full
*/
READ8_MEMBER(williams_state::williams_49way_port_0_r)
u8 williams_state::williams_49way_port_0_r()
{
static const uint8_t translate49[7] = { 0x0, 0x4, 0x6, 0x7, 0xb, 0x9, 0x8 };
return (translate49[ioport("49WAYX")->read() >> 4] << 4) | translate49[ioport("49WAYY")->read() >> 4];
@ -228,14 +228,14 @@ READ8_MEMBER(williams_state::williams_49way_port_0_r)
*
*************************************/
WRITE8_MEMBER(williams_state::williams_cmos_w)
void williams_state::williams_cmos_w(offs_t offset, u8 data)
{
/* only 4 bits are valid */
m_nvram[offset] = data | 0xf0;
}
WRITE8_MEMBER(williams_state::bubbles_cmos_w)
void williams_state::bubbles_cmos_w(offs_t offset, u8 data)
{
/* bubbles has additional CMOS for a full 8 bits */
m_nvram[offset] = data;
@ -272,7 +272,7 @@ WRITE8_MEMBER(williams2_state::williams2_watchdog_reset_w)
*
*************************************/
WRITE8_MEMBER(williams2_state::williams2_7segment_w)
void williams2_state::williams2_7segment_w(u8 data)
{
int n;
char dot;
@ -320,17 +320,17 @@ MACHINE_START_MEMBER(williams_state,defender)
MACHINE_RESET_MEMBER(williams_state,defender)
{
defender_bank_select_w(machine().dummy_space(), 0, 0);
defender_bank_select_w(0);
}
WRITE8_MEMBER(williams_state::defender_video_control_w)
void williams_state::defender_video_control_w(u8 data)
{
m_cocktail = data & 0x01;
}
WRITE8_MEMBER(williams_state::defender_bank_select_w)
void williams_state::defender_bank_select_w(u8 data)
{
m_bankc000->set_bank(data & 0x0f);
}
@ -343,7 +343,7 @@ WRITE8_MEMBER(williams_state::defender_bank_select_w)
*
*************************************/
READ8_MEMBER(williams_state::mayday_protection_r)
u8 williams_state::mayday_protection_r(offs_t offset)
{
/* Mayday does some kind of protection check that is not currently understood */
/* However, the results of that protection check are stored at $a190 and $a191 */
@ -361,10 +361,10 @@ READ8_MEMBER(williams_state::mayday_protection_r)
*
*************************************/
WRITE8_MEMBER(williams_state::sinistar_vram_select_w)
void williams_state::sinistar_vram_select_w(u8 data)
{
/* low two bits are standard */
williams_vram_select_w(space, offset, data);
williams_vram_select_w(data);
/* window enable from bit 2 (clips to 0x7400) */
m_blitter_window_enable = data & 0x04;
@ -400,7 +400,7 @@ inline void blaster_state::update_blaster_banking()
}
WRITE8_MEMBER(blaster_state::blaster_vram_select_w)
void blaster_state::blaster_vram_select_w(u8 data)
{
/* VRAM/ROM banking from bit 0 */
m_vram_bank = data & 0x01;
@ -414,7 +414,7 @@ WRITE8_MEMBER(blaster_state::blaster_vram_select_w)
}
WRITE8_MEMBER(blaster_state::blaster_bank_select_w)
void blaster_state::blaster_bank_select_w(u8 data)
{
m_rom_bank = data & 0x0f;
update_blaster_banking();
@ -431,7 +431,7 @@ TIMER_CALLBACK_MEMBER(blaster_state::blaster_deferred_snd_cmd_w)
}
WRITE8_MEMBER(blaster_state::blaster_snd_cmd_w)
void blaster_state::blaster_snd_cmd_w(u8 data)
{
machine().scheduler().synchronize(timer_expired_delegate(FUNC(blaster_state::blaster_deferred_snd_cmd_w),this), data);
}
@ -481,7 +481,7 @@ WRITE_LINE_MEMBER(tshoot_state::maxvol_w)
}
WRITE8_MEMBER(tshoot_state::lamp_w)
void tshoot_state::lamp_w(u8 data)
{
/* set the grenade lamp */
m_grenade_lamp = BIT(~data, 2);

View File

@ -340,7 +340,7 @@ void williams_state::williams_palette(palette_device &palette) const
WRITE8_MEMBER(williams2_state::williams2_paletteram_w)
void williams2_state::williams2_paletteram_w(offs_t offset, u8 data)
{
static const uint8_t ztable[16] =
{
@ -365,7 +365,7 @@ WRITE8_MEMBER(williams2_state::williams2_paletteram_w)
}
WRITE8_MEMBER(williams2_state::williams2_fg_select_w)
void williams2_state::williams2_fg_select_w(u8 data)
{
m_williams2_fg_color = data & 0x3f;
}
@ -378,7 +378,7 @@ WRITE8_MEMBER(williams2_state::williams2_fg_select_w)
*
*************************************/
READ8_MEMBER(williams_state::williams_video_counter_r)
u8 williams_state::williams_video_counter_r()
{
if (m_screen->vpos() < 0x100)
return m_screen->vpos() & 0xfc;
@ -428,7 +428,7 @@ TILE_GET_INFO_MEMBER(williams2_state::get_tile_info)
}
WRITE8_MEMBER(williams2_state::williams2_bg_select_w)
void williams2_state::williams2_bg_select_w(u8 data)
{
/* based on the tilemap config, only certain bits are used */
/* the rest are determined by other factors */
@ -453,21 +453,21 @@ WRITE8_MEMBER(williams2_state::williams2_bg_select_w)
}
WRITE8_MEMBER(williams2_state::williams2_tileram_w)
void williams2_state::williams2_tileram_w(offs_t offset, u8 data)
{
m_williams2_tileram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(williams2_state::williams2_xscroll_low_w)
void williams2_state::williams2_xscroll_low_w(u8 data)
{
m_tilemap_xscroll = (m_tilemap_xscroll & ~0x00f) | ((data & 0x80) >> 4) | (data & 0x07);
m_bg_tilemap->set_scrollx(0, (m_tilemap_xscroll & 7) + ((m_tilemap_xscroll >> 3) * 6));
}
WRITE8_MEMBER(williams2_state::williams2_xscroll_high_w)
void williams2_state::williams2_xscroll_high_w(u8 data)
{
m_tilemap_xscroll = (m_tilemap_xscroll & 0x00f) | (data << 4);
m_bg_tilemap->set_scrollx(0, (m_tilemap_xscroll & 7) + ((m_tilemap_xscroll >> 3) * 6));
@ -481,14 +481,14 @@ WRITE8_MEMBER(williams2_state::williams2_xscroll_high_w)
*
*************************************/
WRITE8_MEMBER(blaster_state::blaster_remap_select_w)
void blaster_state::blaster_remap_select_w(u8 data)
{
m_blitter_remap_index = data;
m_blitter_remap = m_blitter_remap_lookup.get() + data * 256;
}
WRITE8_MEMBER(blaster_state::blaster_video_control_w)
void blaster_state::blaster_video_control_w(u8 data)
{
m_blaster_video_control = data;
}
@ -575,7 +575,7 @@ WRITE8_MEMBER(williams_state::williams_blitter_w)
}
WRITE8_MEMBER(williams2_state::williams2_blit_window_enable_w)
void williams2_state::williams2_blit_window_enable_w(u8 data)
{
m_blitter_window_enable = data & 0x01;
}