From 5423b119911d0b4f13822eca21c3ccaba91e459f Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 20 Mar 2019 18:02:52 +0900 Subject: twincobr.cpp, wardner.cpp : Updates Simplify handlers, Fix minor namings, Remove register_postload, Fix some code styles, Use shorter type values Mark tilemap dirty when ROM/RAM bank is changed --- src/mame/drivers/twincobr.cpp | 16 ++--- src/mame/drivers/wardner.cpp | 40 ++++++------ src/mame/includes/twincobr.h | 116 +++++++++++++++++----------------- src/mame/machine/twincobr.cpp | 39 +++++------- src/mame/video/twincobr.cpp | 144 ++++++++++++++++++++++-------------------- 5 files changed, 176 insertions(+), 179 deletions(-) diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp index 8bb8cefa7a3..13260ae4e60 100644 --- a/src/mame/drivers/twincobr.cpp +++ b/src/mame/drivers/twincobr.cpp @@ -413,7 +413,7 @@ void twincobr_state::main_program_map(address_map &map) map(0x078008, 0x078009).portr("VBLANK"); /* V-Blank & FShark Coin/Start */ map(0x07800b, 0x07800b).w(m_coinlatch, FUNC(ls259_device::write_nibble_d0)); /* Flying Shark DSP Comms & coin stuff */ map(0x07800d, 0x07800d).w(m_mainlatch, FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra DSP Comms & system control */ - map(0x07a000, 0x07afff).rw(FUNC(twincobr_state::twincobr_sharedram_r), FUNC(twincobr_state::twincobr_sharedram_w)); /* 16-bit on 68000 side, 8-bit on Z80 side */ + map(0x07a000, 0x07afff).rw(FUNC(twincobr_state::twincobr_sharedram_r), FUNC(twincobr_state::twincobr_sharedram_w)).umask16(0x00ff); /* 16-bit on 68000 side, 8-bit on Z80 side */ map(0x07e000, 0x07e001).rw(FUNC(twincobr_state::twincobr_txram_r), FUNC(twincobr_state::twincobr_txram_w)); /* data for text video RAM */ map(0x07e002, 0x07e003).rw(FUNC(twincobr_state::twincobr_bgram_r), FUNC(twincobr_state::twincobr_bgram_w)); /* data for bg video RAM */ map(0x07e004, 0x07e005).rw(FUNC(twincobr_state::twincobr_fgram_r), FUNC(twincobr_state::twincobr_fgram_w)); /* data for fg video RAM */ @@ -626,8 +626,8 @@ static const gfx_layout charlayout = RGN_FRAC(1,3), /* 2048 characters */ 3, /* 3 bits per pixel */ { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + { STEP8(0,1) }, + { STEP8(0,8) }, 8*8 /* every char takes 8 consecutive bytes */ }; @@ -637,8 +637,8 @@ static const gfx_layout tilelayout = RGN_FRAC(1,4), /* 4096/8192 tiles */ 4, /* 4 bits per pixel */ { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + { STEP8(0,1) }, + { STEP8(0,8) }, 8*8 /* every tile takes 8 consecutive bytes */ }; @@ -667,8 +667,6 @@ void twincobr_state::twincobr(machine_config &config) config.m_minimum_quantum = attotime::from_hz(6000); - MCFG_MACHINE_RESET_OVERRIDE(twincobr_state,twincobr) - LS259(config, m_mainlatch); m_mainlatch->q_out_cb<2>().set(FUNC(twincobr_state::int_enable_w)); m_mainlatch->q_out_cb<3>().set(FUNC(twincobr_state::flipscreen_w)); @@ -698,7 +696,7 @@ void twincobr_state::twincobr(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(28_MHz_XTAL/4, 446, 0, 320, 286, 0, 240); - m_screen->set_screen_update(FUNC(twincobr_state::screen_update_toaplan0)); + m_screen->set_screen_update(FUNC(twincobr_state::screen_update)); m_screen->screen_vblank().set(m_spriteram16, FUNC(buffered_spriteram16_device::vblank_copy_rising)); m_screen->screen_vblank().append(FUNC(twincobr_state::twincobr_vblank_irq)); m_screen->set_palette(m_palette); @@ -1296,7 +1294,7 @@ ROM_END void twincobr_state::init_twincobr() { - twincobr_driver_savestate(); + driver_savestate(); } diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp index a89ab9a1b35..9665ae01fa9 100644 --- a/src/mame/drivers/wardner.cpp +++ b/src/mame/drivers/wardner.cpp @@ -181,14 +181,14 @@ void wardner_state::main_program_map(address_map &map) { map(0x0000, 0x6fff).rom(); map(0x7000, 0x7fff).ram(); - map(0x8000, 0x8fff).w(FUNC(wardner_state::wardner_sprite_w)); // AM_SHARE("spriteram8") - map(0xa000, 0xafff).w(m_palette, FUNC(palette_device::write8)); // AM_SHARE("palette") + map(0x8000, 0x8fff).w(FUNC(wardner_state::wardner_sprite_w)); // .share("spriteram8") + map(0xa000, 0xafff).w(m_palette, FUNC(palette_device::write8)); // .share("palette") map(0xc000, 0xc7ff).writeonly().share("sharedram"); map(0x8000, 0xffff).r(m_membank, FUNC(address_map_bank_device::read8)); } // Overlapped RAM/Banked ROM -// Can't use AM_RANGE(0x00000, 0x3ffff) for ROM because the shared pointers get messed up somehow +// Can't use map(0x00000, 0x3ffff) for ROM because the shared pointers get messed up somehow void wardner_state::main_bank_map(address_map &map) { map(0x00000, 0x00fff).r(FUNC(wardner_state::wardner_sprite_r)).share("spriteram8"); @@ -338,24 +338,24 @@ INPUT_PORTS_END static const gfx_layout charlayout = { - 8,8, /* 8*8 characters */ - 2048, /* 2048 characters */ - 3, /* 3 bits per pixel */ - { 0*2048*8*8, 1*2048*8*8, 2*2048*8*8 }, /* the bitplanes are separated */ - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 /* every char takes 8 consecutive bytes */ + 8,8, /* 8*8 characters */ + RGN_FRAC(1,3), /* 2048 characters */ + 3, /* 3 bits per pixel */ + { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* the bitplanes are separated */ + { STEP8(0,1) }, + { STEP8(0,8) }, + 8*8 /* every char takes 8 consecutive bytes */ }; static const gfx_layout tilelayout = { - 8,8, /* 8*8 tiles */ - 4096, /* 4096 tiles */ - 4, /* 4 bits per pixel */ - { 0*4096*8*8, 1*4096*8*8, 2*4096*8*8, 3*4096*8*8 }, /* the bitplanes are separated */ - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 /* every tile takes 8 consecutive bytes */ + 8,8, /* 8*8 tiles */ + RGN_FRAC(1,4), /* 4096 tiles */ + 4, /* 4 bits per pixel */ + { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, /* the bitplanes are separated */ + { STEP8(0,1) }, + { STEP8(0,8) }, + 8*8 /* every tile takes 8 consecutive bytes */ }; @@ -369,12 +369,12 @@ GFXDECODE_END void wardner_state::driver_start() { /* Save-State stuff in src/machine/twincobr.cpp */ - twincobr_driver_savestate(); + driver_savestate(); } void wardner_state::machine_reset() { - MACHINE_RESET_CALL_MEMBER(twincobr); + twincobr_state::machine_reset(); m_membank->set_bank(0); } @@ -429,7 +429,7 @@ void wardner_state::wardner(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(14_MHz_XTAL/2, 446, 0, 320, 286, 0, 240); - m_screen->set_screen_update(FUNC(wardner_state::screen_update_toaplan0)); + m_screen->set_screen_update(FUNC(wardner_state::screen_update)); m_screen->screen_vblank().set(m_spriteram8, FUNC(buffered_spriteram8_device::vblank_copy_rising)); m_screen->screen_vblank().append(FUNC(wardner_state::wardner_vblank_irq)); m_screen->set_palette(m_palette); diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h index 5bcda60c5bc..e212a0fe71c 100644 --- a/src/mame/includes/twincobr.h +++ b/src/mame/includes/twincobr.h @@ -43,50 +43,52 @@ public: void init_twincobr(); protected: + virtual void device_post_load() override; + virtual void machine_reset() override; virtual void video_start() override; - optional_shared_ptr m_sharedram; + optional_shared_ptr m_sharedram; optional_device m_spriteram8; optional_device m_spriteram16; - int32_t m_fg_rom_bank; - int32_t m_bg_ram_bank; + u32 m_fg_rom_bank; + u32 m_bg_ram_bank; int m_intenable; int m_dsp_on; int m_dsp_bio; int m_fsharkbt_8741; int m_dsp_execute; - uint32_t m_dsp_addr_w; - uint32_t m_main_ram_seg; - std::unique_ptr m_bgvideoram16; - std::unique_ptr m_fgvideoram16; - std::unique_ptr m_txvideoram16; + u32 m_dsp_addr_w; + u32 m_main_ram_seg; + std::unique_ptr m_bgvideoram16; + std::unique_ptr m_fgvideoram16; + std::unique_ptr m_txvideoram16; size_t m_bgvideoram_size; size_t m_fgvideoram_size; size_t m_txvideoram_size; - int32_t m_txscrollx; - int32_t m_txscrolly; - int32_t m_fgscrollx; - int32_t m_fgscrolly; - int32_t m_bgscrollx; - int32_t m_bgscrolly; - int32_t m_txoffs; - int32_t m_fgoffs; - int32_t m_bgoffs; - int32_t m_display_on; + s32 m_txscrollx; + s32 m_txscrolly; + s32 m_fgscrollx; + s32 m_fgscrolly; + s32 m_bgscrollx; + s32 m_bgscrolly; + s32 m_txoffs; + s32 m_fgoffs; + s32 m_bgoffs; + s32 m_display_on; tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; tilemap_t *m_tx_tilemap; - DECLARE_WRITE16_MEMBER(twincobr_dsp_addrsel_w); - DECLARE_READ16_MEMBER(twincobr_dsp_r); - DECLARE_WRITE16_MEMBER(twincobr_dsp_w); - DECLARE_WRITE16_MEMBER(wardner_dsp_addrsel_w); - DECLARE_READ16_MEMBER(wardner_dsp_r); - DECLARE_WRITE16_MEMBER(wardner_dsp_w); - DECLARE_WRITE16_MEMBER(twincobr_dsp_bio_w); - DECLARE_READ16_MEMBER(fsharkbt_dsp_r); - DECLARE_WRITE16_MEMBER(fsharkbt_dsp_w); + void twincobr_dsp_addrsel_w(u16 data); + u16 twincobr_dsp_r(); + void twincobr_dsp_w(u16 data); + void wardner_dsp_addrsel_w(u16 data); + u16 wardner_dsp_r(); + void wardner_dsp_w(u16 data); + void twincobr_dsp_bio_w(u16 data); + u16 fsharkbt_dsp_r(); + void fsharkbt_dsp_w(u16 data); DECLARE_READ_LINE_MEMBER(twincobr_bio_r); DECLARE_WRITE_LINE_MEMBER(int_enable_w); DECLARE_WRITE_LINE_MEMBER(dsp_int_w); @@ -94,47 +96,45 @@ protected: DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); DECLARE_WRITE_LINE_MEMBER(coin_lockout_1_w); DECLARE_WRITE_LINE_MEMBER(coin_lockout_2_w); - DECLARE_READ16_MEMBER(twincobr_sharedram_r); - DECLARE_WRITE16_MEMBER(twincobr_sharedram_w); - DECLARE_WRITE16_MEMBER(twincobr_txoffs_w); - DECLARE_READ16_MEMBER(twincobr_txram_r); - DECLARE_WRITE16_MEMBER(twincobr_txram_w); - DECLARE_WRITE16_MEMBER(twincobr_bgoffs_w); - DECLARE_READ16_MEMBER(twincobr_bgram_r); - DECLARE_WRITE16_MEMBER(twincobr_bgram_w); - DECLARE_WRITE16_MEMBER(twincobr_fgoffs_w); - DECLARE_READ16_MEMBER(twincobr_fgram_r); - DECLARE_WRITE16_MEMBER(twincobr_fgram_w); - DECLARE_WRITE16_MEMBER(twincobr_txscroll_w); - DECLARE_WRITE16_MEMBER(twincobr_bgscroll_w); - DECLARE_WRITE16_MEMBER(twincobr_fgscroll_w); - DECLARE_WRITE16_MEMBER(twincobr_exscroll_w); - DECLARE_WRITE8_MEMBER(wardner_txlayer_w); - DECLARE_WRITE8_MEMBER(wardner_bglayer_w); - DECLARE_WRITE8_MEMBER(wardner_fglayer_w); - DECLARE_WRITE8_MEMBER(wardner_txscroll_w); - DECLARE_WRITE8_MEMBER(wardner_bgscroll_w); - DECLARE_WRITE8_MEMBER(wardner_fgscroll_w); - DECLARE_WRITE8_MEMBER(wardner_exscroll_w); - DECLARE_READ8_MEMBER(wardner_videoram_r); - DECLARE_WRITE8_MEMBER(wardner_videoram_w); - DECLARE_READ8_MEMBER(wardner_sprite_r); - DECLARE_WRITE8_MEMBER(wardner_sprite_w); + u8 twincobr_sharedram_r(offs_t offset); + void twincobr_sharedram_w(offs_t offset, u8 data); + void twincobr_txoffs_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 twincobr_txram_r(); + void twincobr_txram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void twincobr_bgoffs_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 twincobr_bgram_r(); + void twincobr_bgram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void twincobr_fgoffs_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 twincobr_fgram_r(); + void twincobr_fgram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void twincobr_txscroll_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void twincobr_bgscroll_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void twincobr_fgscroll_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void twincobr_exscroll_w(offs_t offset, u16 data); + void wardner_txlayer_w(offs_t offset, u8 data); + void wardner_bglayer_w(offs_t offset, u8 data); + void wardner_fglayer_w(offs_t offset, u8 data); + void wardner_txscroll_w(offs_t offset, u8 data); + void wardner_bgscroll_w(offs_t offset, u8 data); + void wardner_fgscroll_w(offs_t offset, u8 data); + void wardner_exscroll_w(offs_t offset, u8 data); + u8 wardner_videoram_r(offs_t offset); + void wardner_videoram_w(offs_t offset, u8 data); + u8 wardner_sprite_r(offs_t offset); + void wardner_sprite_w(offs_t offset, u8 data); TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_tx_tile_info); - DECLARE_MACHINE_RESET(twincobr); - uint32_t screen_update_toaplan0(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(twincobr_vblank_irq); DECLARE_WRITE_LINE_MEMBER(wardner_vblank_irq); - void twincobr_restore_dsp(); void twincobr_create_tilemaps(); DECLARE_WRITE_LINE_MEMBER(display_on_w); DECLARE_WRITE_LINE_MEMBER(flipscreen_w); DECLARE_WRITE_LINE_MEMBER(bg_ram_bank_w); DECLARE_WRITE_LINE_MEMBER(fg_rom_bank_w); - void twincobr_log_vram(); - void twincobr_driver_savestate(); + void log_vram(); + void driver_savestate(); required_device m_maincpu; required_device m_dsp; required_device m_spritegen; diff --git a/src/mame/machine/twincobr.cpp b/src/mame/machine/twincobr.cpp index 5fa63ece69a..2bfdbbf9f79 100644 --- a/src/mame/machine/twincobr.cpp +++ b/src/mame/machine/twincobr.cpp @@ -34,7 +34,7 @@ WRITE_LINE_MEMBER(twincobr_state::wardner_vblank_irq) } -WRITE16_MEMBER(twincobr_state::twincobr_dsp_addrsel_w) +void twincobr_state::twincobr_dsp_addrsel_w(u16 data) { /* This sets the main CPU RAM address the DSP should */ /* read/write, via the DSP IO port 0 */ @@ -50,11 +50,11 @@ WRITE16_MEMBER(twincobr_state::twincobr_dsp_addrsel_w) LOG(("DSP PC:%04x IO write %04x (%08x) at port 0\n",m_dsp->pcbase(),data,m_main_ram_seg + m_dsp_addr_w)); } -READ16_MEMBER(twincobr_state::twincobr_dsp_r) +u16 twincobr_state::twincobr_dsp_r() { /* DSP can read data from main CPU RAM via DSP IO port 1 */ - uint16_t input_data = 0; + u16 input_data = 0; switch (m_main_ram_seg) { case 0x30000: @@ -68,7 +68,7 @@ READ16_MEMBER(twincobr_state::twincobr_dsp_r) return input_data; } -WRITE16_MEMBER(twincobr_state::twincobr_dsp_w) +void twincobr_state::twincobr_dsp_w(u16 data) { /* Data written to main CPU RAM via DSP IO port 1 */ m_dsp_execute = 0; @@ -84,7 +84,7 @@ WRITE16_MEMBER(twincobr_state::twincobr_dsp_w) LOG(("DSP PC:%04x IO write %04x at %08x (port 1)\n",m_dsp->pcbase(),data,m_main_ram_seg + m_dsp_addr_w)); } -WRITE16_MEMBER(twincobr_state::wardner_dsp_addrsel_w) +void twincobr_state::wardner_dsp_addrsel_w(u16 data) { /* This sets the main CPU RAM address the DSP should */ /* read/write, via the DSP IO port 0 */ @@ -99,11 +99,11 @@ WRITE16_MEMBER(twincobr_state::wardner_dsp_addrsel_w) LOG(("DSP PC:%04x IO write %04x (%08x) at port 0\n",m_dsp->pcbase(),data,m_main_ram_seg + m_dsp_addr_w)); } -READ16_MEMBER(twincobr_state::wardner_dsp_r) +u16 twincobr_state::wardner_dsp_r() { /* DSP can read data from main CPU RAM via DSP IO port 1 */ - uint16_t input_data = 0; + u16 input_data = 0; switch (m_main_ram_seg) { case 0x7000: @@ -118,7 +118,7 @@ READ16_MEMBER(twincobr_state::wardner_dsp_r) return input_data; } -WRITE16_MEMBER(twincobr_state::wardner_dsp_w) +void twincobr_state::wardner_dsp_w(u16 data) { /* Data written to main CPU RAM via DSP IO port 1 */ m_dsp_execute = 0; @@ -135,7 +135,7 @@ WRITE16_MEMBER(twincobr_state::wardner_dsp_w) LOG(("DSP PC:%04x IO write %04x at %08x (port 1)\n",m_dsp->pcbase(),data,m_main_ram_seg + m_dsp_addr_w)); } -WRITE16_MEMBER(twincobr_state::twincobr_dsp_bio_w) +void twincobr_state::twincobr_dsp_bio_w(u16 data) { /* data 0xffff means inhibit BIO line to DSP and enable */ /* communication to main processor */ @@ -159,7 +159,7 @@ WRITE16_MEMBER(twincobr_state::twincobr_dsp_bio_w) } } -READ16_MEMBER(twincobr_state::fsharkbt_dsp_r) +u16 twincobr_state::fsharkbt_dsp_r() { /* IO Port 2 used by Flying Shark bootleg */ /* DSP reads data from an extra MCU (8741) at IO port 2 */ @@ -170,7 +170,7 @@ READ16_MEMBER(twincobr_state::fsharkbt_dsp_r) return (m_fsharkbt_8741 & 1); } -WRITE16_MEMBER(twincobr_state::fsharkbt_dsp_w) +void twincobr_state::fsharkbt_dsp_w(u16 data) { /* Flying Shark bootleg DSP writes data to an extra MCU (8741) at IO port 2 */ #if 0 @@ -209,7 +209,7 @@ WRITE_LINE_MEMBER(twincobr_state::dsp_int_w) } } -void twincobr_state::twincobr_restore_dsp() +void twincobr_state::device_post_load() { dsp_int_w(m_dsp_on); } @@ -236,21 +236,18 @@ WRITE_LINE_MEMBER(twincobr_state::coin_lockout_2_w) } -READ16_MEMBER(twincobr_state::twincobr_sharedram_r) +u8 twincobr_state::twincobr_sharedram_r(offs_t offset) { return m_sharedram[offset]; } -WRITE16_MEMBER(twincobr_state::twincobr_sharedram_w) +void twincobr_state::twincobr_sharedram_w(offs_t offset, u8 data) { - if (ACCESSING_BITS_0_7) - { - m_sharedram[offset] = data & 0xff; - } + m_sharedram[offset] = data; } -MACHINE_RESET_MEMBER(twincobr_state,twincobr) +void twincobr_state::machine_reset() { m_dsp_addr_w = 0; m_main_ram_seg = 0; @@ -259,7 +256,7 @@ MACHINE_RESET_MEMBER(twincobr_state,twincobr) m_fsharkbt_8741 = -1; } -void twincobr_state::twincobr_driver_savestate() +void twincobr_state::driver_savestate() { save_item(NAME(m_intenable)); save_item(NAME(m_dsp_on)); @@ -268,6 +265,4 @@ void twincobr_state::twincobr_driver_savestate() save_item(NAME(m_dsp_bio)); save_item(NAME(m_dsp_execute)); save_item(NAME(m_fsharkbt_8741)); - - machine().save().register_postload(save_prepost_delegate(FUNC(twincobr_state::twincobr_restore_dsp), this)); } diff --git a/src/mame/video/twincobr.cpp b/src/mame/video/twincobr.cpp index 61951369a1b..ed15675d03d 100644 --- a/src/mame/video/twincobr.cpp +++ b/src/mame/video/twincobr.cpp @@ -24,11 +24,9 @@ TILE_GET_INFO_MEMBER(twincobr_state::get_bg_tile_info) { - int code, tile_number, color; - - code = m_bgvideoram16[tile_index+m_bg_ram_bank]; - tile_number = code & 0x0fff; - color = (code & 0xf000) >> 12; + const u16 code = m_bgvideoram16[tile_index+m_bg_ram_bank]; + const u32 tile_number = code & 0x0fff; + const u32 color = (code & 0xf000) >> 12; SET_TILE_INFO_MEMBER(2, tile_number, color, @@ -37,11 +35,9 @@ TILE_GET_INFO_MEMBER(twincobr_state::get_bg_tile_info) TILE_GET_INFO_MEMBER(twincobr_state::get_fg_tile_info) { - int code, tile_number, color; - - code = m_fgvideoram16[tile_index]; - tile_number = (code & 0x0fff) | m_fg_rom_bank; - color = (code & 0xf000) >> 12; + const u16 code = m_fgvideoram16[tile_index]; + const u32 tile_number = (code & 0x0fff) | m_fg_rom_bank; + const u32 color = (code & 0xf000) >> 12; SET_TILE_INFO_MEMBER(1, tile_number, color, @@ -50,11 +46,9 @@ TILE_GET_INFO_MEMBER(twincobr_state::get_fg_tile_info) TILE_GET_INFO_MEMBER(twincobr_state::get_tx_tile_info) { - int code, tile_number, color; - - code = m_txvideoram16[tile_index]; - tile_number = code & 0x07ff; - color = (code & 0xf800) >> 11; + const u16 code = m_txvideoram16[tile_index]; + const u32 tile_number = code & 0x07ff; + const u32 color = (code & 0xf800) >> 11; SET_TILE_INFO_MEMBER(0, tile_number, color, @@ -93,9 +87,9 @@ void twincobr_state::video_start() twincobr_create_tilemaps(); - m_txvideoram16 = make_unique_clear(m_txvideoram_size); - m_fgvideoram16 = make_unique_clear(m_fgvideoram_size); - m_bgvideoram16 = make_unique_clear(m_bgvideoram_size); + m_txvideoram16 = make_unique_clear(m_txvideoram_size); + m_fgvideoram16 = make_unique_clear(m_fgvideoram_size); + m_bgvideoram16 = make_unique_clear(m_bgvideoram_size); m_display_on = 0; @@ -135,140 +129,148 @@ WRITE_LINE_MEMBER(twincobr_state::flipscreen_w) WRITE_LINE_MEMBER(twincobr_state::bg_ram_bank_w) { m_bg_ram_bank = state ? 0x1000 : 0x0000; + m_bg_tilemap->mark_all_dirty(); } WRITE_LINE_MEMBER(twincobr_state::fg_rom_bank_w) { m_fg_rom_bank = state ? 0x1000 : 0x0000; + m_fg_tilemap->mark_all_dirty(); } -WRITE16_MEMBER(twincobr_state::twincobr_txoffs_w) +void twincobr_state::twincobr_txoffs_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_txoffs); m_txoffs %= m_txvideoram_size; } -READ16_MEMBER(twincobr_state::twincobr_txram_r) +u16 twincobr_state::twincobr_txram_r() { return m_txvideoram16[m_txoffs]; } -WRITE16_MEMBER(twincobr_state::twincobr_txram_w) +void twincobr_state::twincobr_txram_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_txvideoram16[m_txoffs]); m_tx_tilemap->mark_tile_dirty(m_txoffs); } -WRITE16_MEMBER(twincobr_state::twincobr_bgoffs_w) +void twincobr_state::twincobr_bgoffs_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_bgoffs); m_bgoffs %= (m_bgvideoram_size >> 1); } -READ16_MEMBER(twincobr_state::twincobr_bgram_r) +u16 twincobr_state::twincobr_bgram_r() { return m_bgvideoram16[m_bgoffs+m_bg_ram_bank]; } -WRITE16_MEMBER(twincobr_state::twincobr_bgram_w) +void twincobr_state::twincobr_bgram_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_bgvideoram16[m_bgoffs+m_bg_ram_bank]); m_bg_tilemap->mark_tile_dirty((m_bgoffs+m_bg_ram_bank)); } -WRITE16_MEMBER(twincobr_state::twincobr_fgoffs_w) +void twincobr_state::twincobr_fgoffs_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_fgoffs); m_fgoffs %= m_fgvideoram_size; } -READ16_MEMBER(twincobr_state::twincobr_fgram_r) +u16 twincobr_state::twincobr_fgram_r() { return m_fgvideoram16[m_fgoffs]; } -WRITE16_MEMBER(twincobr_state::twincobr_fgram_w) +void twincobr_state::twincobr_fgram_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_fgvideoram16[m_fgoffs]); m_fg_tilemap->mark_tile_dirty(m_fgoffs); } -WRITE16_MEMBER(twincobr_state::twincobr_txscroll_w) +void twincobr_state::twincobr_txscroll_w(offs_t offset, u16 data, u16 mem_mask) { - if (offset == 0) { + if (offset == 0) + { COMBINE_DATA(&m_txscrollx); m_tx_tilemap->set_scrollx(0, m_txscrollx); } - else { + else + { COMBINE_DATA(&m_txscrolly); m_tx_tilemap->set_scrolly(0, m_txscrolly); } } -WRITE16_MEMBER(twincobr_state::twincobr_bgscroll_w) +void twincobr_state::twincobr_bgscroll_w(offs_t offset, u16 data, u16 mem_mask) { - if (offset == 0) { + if (offset == 0) + { COMBINE_DATA(&m_bgscrollx); m_bg_tilemap->set_scrollx(0, m_bgscrollx); } - else { + else + { COMBINE_DATA(&m_bgscrolly); m_bg_tilemap->set_scrolly(0, m_bgscrolly); } } -WRITE16_MEMBER(twincobr_state::twincobr_fgscroll_w) +void twincobr_state::twincobr_fgscroll_w(offs_t offset, u16 data, u16 mem_mask) { - if (offset == 0) { + if (offset == 0) + { COMBINE_DATA(&m_fgscrollx); m_fg_tilemap->set_scrollx(0, m_fgscrollx); } - else { + else + { COMBINE_DATA(&m_fgscrolly); m_fg_tilemap->set_scrolly(0, m_fgscrolly); } } -WRITE16_MEMBER(twincobr_state::twincobr_exscroll_w)/* Extra unused video layer */ +void twincobr_state::twincobr_exscroll_w(offs_t offset, u16 data)/* Extra unused video layer */ { if (offset == 0) logerror("PC - write %04x to unknown video scroll Y register\n",data); else logerror("PC - write %04x to unknown video scroll X register\n",data); } /******************** Wardner interface to this hardware ********************/ -WRITE8_MEMBER(twincobr_state::wardner_txlayer_w) +void twincobr_state::wardner_txlayer_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - twincobr_txoffs_w(space, offset / 2, data << shift, 0xff << shift); + twincobr_txoffs_w(offset / 2, data << shift, 0xff << shift); } -WRITE8_MEMBER(twincobr_state::wardner_bglayer_w) +void twincobr_state::wardner_bglayer_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - twincobr_bgoffs_w(space, offset / 2, data << shift, 0xff << shift); + twincobr_bgoffs_w(offset / 2, data << shift, 0xff << shift); } -WRITE8_MEMBER(twincobr_state::wardner_fglayer_w) +void twincobr_state::wardner_fglayer_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - twincobr_fgoffs_w(space, offset / 2, data << shift, 0xff << shift); + twincobr_fgoffs_w(offset / 2, data << shift, 0xff << shift); } -WRITE8_MEMBER(twincobr_state::wardner_txscroll_w) +void twincobr_state::wardner_txscroll_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - twincobr_txscroll_w(space, offset / 2, data << shift, 0xff << shift); + twincobr_txscroll_w(offset / 2, data << shift, 0xff << shift); } -WRITE8_MEMBER(twincobr_state::wardner_bgscroll_w) +void twincobr_state::wardner_bgscroll_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - twincobr_bgscroll_w(space, offset / 2, data << shift, 0xff << shift); + twincobr_bgscroll_w(offset / 2, data << shift, 0xff << shift); } -WRITE8_MEMBER(twincobr_state::wardner_fgscroll_w) +void twincobr_state::wardner_fgscroll_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - twincobr_fgscroll_w(space, offset / 2, data << shift, 0xff << shift); + twincobr_fgscroll_w(offset / 2, data << shift, 0xff << shift); } -WRITE8_MEMBER(twincobr_state::wardner_exscroll_w)/* Extra unused video layer */ +void twincobr_state::wardner_exscroll_w(offs_t offset, u8 data)/* Extra unused video layer */ { switch (offset) { @@ -279,37 +281,39 @@ WRITE8_MEMBER(twincobr_state::wardner_exscroll_w)/* Extra unused video layer */ } } -READ8_MEMBER(twincobr_state::wardner_videoram_r) +u8 twincobr_state::wardner_videoram_r(offs_t offset) { int shift = 8 * (offset & 1); - switch (offset/2) { - case 0: return twincobr_txram_r(space,0,0xffff) >> shift; - case 1: return twincobr_bgram_r(space,0,0xffff) >> shift; - case 2: return twincobr_fgram_r(space,0,0xffff) >> shift; + switch (offset / 2) + { + case 0: return twincobr_txram_r() >> shift; + case 1: return twincobr_bgram_r() >> shift; + case 2: return twincobr_fgram_r() >> shift; } return 0; } -WRITE8_MEMBER(twincobr_state::wardner_videoram_w) +void twincobr_state::wardner_videoram_w(offs_t offset, u8 data) { int shift = 8 * (offset & 1); - switch (offset/2) { - case 0: twincobr_txram_w(space,0,data << shift, 0xff << shift); break; - case 1: twincobr_bgram_w(space,0,data << shift, 0xff << shift); break; - case 2: twincobr_fgram_w(space,0,data << shift, 0xff << shift); break; + switch (offset / 2) + { + case 0: twincobr_txram_w(0,data << shift, 0xff << shift); break; + case 1: twincobr_bgram_w(0,data << shift, 0xff << shift); break; + case 2: twincobr_fgram_w(0,data << shift, 0xff << shift); break; } } -READ8_MEMBER(twincobr_state::wardner_sprite_r) +u8 twincobr_state::wardner_sprite_r(offs_t offset) { - uint16_t *spriteram16 = reinterpret_cast(m_spriteram8->live()); + u16 *spriteram16 = reinterpret_cast(m_spriteram8->live()); int shift = (offset & 1) * 8; return spriteram16[offset/2] >> shift; } -WRITE8_MEMBER(twincobr_state::wardner_sprite_w) +void twincobr_state::wardner_sprite_w(offs_t offset, u8 data) { - uint16_t *spriteram16 = reinterpret_cast(m_spriteram8->live()); + u16 *spriteram16 = reinterpret_cast(m_spriteram8->live()); if (offset & 1) spriteram16[offset/2] = (spriteram16[offset/2] & 0x00ff) | (data << 8); else @@ -320,7 +324,7 @@ WRITE8_MEMBER(twincobr_state::wardner_sprite_w) -void twincobr_state::twincobr_log_vram() +void twincobr_state::log_vram() { #ifdef MAME_DEBUG @@ -360,12 +364,12 @@ void twincobr_state::twincobr_log_vram() } -uint32_t twincobr_state::screen_update_toaplan0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 twincobr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - twincobr_log_vram(); + log_vram(); - uint16_t *buffered_spriteram16; - uint32_t bytes; + u16 *buffered_spriteram16; + u32 bytes; if (m_spriteram16 != nullptr) { buffered_spriteram16 = m_spriteram16->buffer(); @@ -373,7 +377,7 @@ uint32_t twincobr_state::screen_update_toaplan0(screen_device &screen, bitmap_in } else { - buffered_spriteram16 = reinterpret_cast(m_spriteram8->buffer()); + buffered_spriteram16 = reinterpret_cast(m_spriteram8->buffer()); bytes = m_spriteram8->bytes(); } -- cgit v1.2.3