diff options
Diffstat (limited to 'src/mame/includes/itech32.h')
-rw-r--r-- | src/mame/includes/itech32.h | 175 |
1 files changed, 84 insertions, 91 deletions
diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h index df6125eee76..92d97047d00 100644 --- a/src/mame/includes/itech32.h +++ b/src/mame/includes/itech32.h @@ -42,7 +42,9 @@ public: m_main_ram(*this, "main_ram", 0), m_nvram(*this, "nvram", 0), m_video(*this, "video", 0), - m_main_rom(*this, "main_rom", 0) + m_main_rom(*this, "main_rom", 0), + m_grom(*this, "gfx1"), + m_soundbank(*this, "soundbank") { } void base_devices(machine_config &config); @@ -82,21 +84,24 @@ protected: required_device<ticket_dispenser_device> m_ticket; optional_device<timekeeper_device> m_timekeeper; - optional_shared_ptr<uint16_t> m_main_ram; - optional_shared_ptr<uint16_t> m_nvram; - optional_shared_ptr<uint16_t> m_video; - optional_shared_ptr<uint16_t> m_main_rom; + optional_shared_ptr<u16> m_main_ram; + optional_shared_ptr<u16> m_nvram; + optional_shared_ptr<u16> m_video; + optional_shared_ptr<u16> m_main_rom; + + required_region_ptr<u8> m_grom; + required_memory_bank m_soundbank; virtual void nvram_init(nvram_device &nvram, void *base, size_t length); - std::unique_ptr<uint16_t[]> m_videoram; - uint8_t m_vint_state; - uint8_t m_xint_state; - uint8_t m_qint_state; - uint8_t m_irq_base; - uint8_t m_sound_data; - uint8_t m_sound_return; - uint8_t m_sound_int_state; + std::unique_ptr<u16[]> m_videoram; + u8 m_vint_state; + u8 m_xint_state; + u8 m_qint_state; + u8 m_irq_base; + u8 m_sound_data; + u8 m_sound_return; + u8 m_sound_int_state; offs_t m_itech020_prot_address; int m_special_result; int m_p1_effx; @@ -107,67 +112,58 @@ protected: int m_p2_effy; int m_p2_lastresult; attotime m_p2_lasttime; - uint8_t m_written[0x8000]; - uint16_t m_xfer_xcount; - uint16_t m_xfer_ycount; - uint16_t m_xfer_xcur; - uint16_t m_xfer_ycur; + u8 m_written[0x8000]; + u16 m_xfer_xcount; + u16 m_xfer_ycount; + u16 m_xfer_xcur; + u16 m_xfer_ycur; rectangle m_clip_rect; rectangle m_scaled_clip_rect; rectangle m_clip_save; emu_timer *m_scanline_timer; - uint32_t m_grom_bank; - uint16_t m_color_latch[2]; - uint8_t m_enable_latch[2]; - uint16_t *m_videoplane[2]; + u32 m_grom_bank; + u16 m_color_latch[2]; + u8 m_enable_latch[2]; + u16 *m_videoplane[2]; // configuration at init time - uint8_t m_planes; - uint16_t m_vram_height; - uint32_t m_vram_mask; - uint32_t m_vram_xmask; - uint32_t m_vram_ymask; - uint8_t *m_grom_base; - uint32_t m_grom_size; - uint32_t m_grom_bank_mask; - - DECLARE_WRITE16_MEMBER(int1_ack_w); - DECLARE_READ16_MEMBER(trackball_r); - DECLARE_READ16_MEMBER(trackball_p2_r); - DECLARE_READ32_MEMBER(trackball32_8bit_r); - DECLARE_READ32_MEMBER(trackball32_4bit_p1_r); - DECLARE_READ32_MEMBER(trackball32_4bit_p2_r); - DECLARE_READ32_MEMBER(trackball32_4bit_combined_r); - DECLARE_READ16_MEMBER(wcbowl_prot_result_r); - DECLARE_READ32_MEMBER(itech020_prot_result_r); - DECLARE_READ32_MEMBER(gt2kp_prot_result_r); - DECLARE_READ32_MEMBER(gtclass_prot_result_r); - DECLARE_WRITE8_MEMBER(sound_bank_w); - DECLARE_WRITE16_MEMBER(sound_data_w); - DECLARE_READ32_MEMBER(sound_data32_r); - DECLARE_WRITE32_MEMBER(sound_data32_w); - DECLARE_READ8_MEMBER(sound_data_r); - DECLARE_WRITE8_MEMBER(sound_return_w); - DECLARE_READ8_MEMBER(sound_data_buffer_r); - DECLARE_WRITE8_MEMBER(firq_clear_w); - DECLARE_WRITE32_MEMBER(int1_ack32_w); - DECLARE_WRITE16_MEMBER(timekill_colora_w); - DECLARE_WRITE16_MEMBER(timekill_colorbc_w); - DECLARE_WRITE16_MEMBER(timekill_intensity_w); - DECLARE_WRITE16_MEMBER(bloodstm_color1_w); - DECLARE_WRITE16_MEMBER(bloodstm_color2_w); - DECLARE_WRITE16_MEMBER(bloodstm_plane_w); - DECLARE_WRITE32_MEMBER(itech020_color1_w); - DECLARE_WRITE32_MEMBER(itech020_color2_w); - DECLARE_WRITE32_MEMBER(itech020_plane_w); + u8 m_planes; + u16 m_vram_height; + u32 m_vram_mask; + u32 m_vram_xmask; + u32 m_vram_ymask; + u32 m_grom_bank_mask; + + void int1_ack_w(u16 data); + u8 trackball_r(); + u8 trackball_p2_r(); + u16 trackball_8bit_r(); + u32 trackball32_4bit_p1_r(); + u32 trackball32_4bit_p2_r(); + u32 trackball32_4bit_combined_r(); + u16 wcbowl_prot_result_r(); + u8 itech020_prot_result_r(); + u32 gt2kp_prot_result_r(); + u32 gtclass_prot_result_r(); + void sound_bank_w(u8 data); + void sound_data_w(u8 data); + u8 sound_return_r(); + u8 sound_data_r(); + void sound_return_w(u8 data); + u8 sound_data_buffer_r(); + void firq_clear_w(u8 data); + void timekill_colora_w(u8 data); + void timekill_colorbc_w(u8 data); + void timekill_intensity_w(u8 data); + template<unsigned Layer> void color_w(u8 data); + void bloodstm_plane_w(u8 data); + void itech020_plane_w(u8 data); DECLARE_WRITE16_MEMBER(bloodstm_paletteram_w); - DECLARE_WRITE16_MEMBER(itech32_video_w); - DECLARE_READ16_MEMBER(itech32_video_r); - DECLARE_WRITE16_MEMBER(bloodstm_video_w); - DECLARE_READ16_MEMBER(bloodstm_video_r); - DECLARE_WRITE32_MEMBER(itech020_video_w); - DECLARE_READ32_MEMBER(itech020_video_r); - DECLARE_WRITE8_MEMBER(pia_portb_out); + void video_w(offs_t offset, u16 data, u16 mem_mask = u16(~0)); + u16 video_r(offs_t offset); + void bloodstm_video_w(offs_t offset, u16 data, u16 mem_mask = u16(~0)); + u16 bloodstm_video_r(offs_t offset); + void pia_portb_out(u8 data); virtual void machine_start() override; virtual void machine_reset() override; @@ -178,7 +174,7 @@ protected: void install_timekeeper(); void init_gt_common(); - uint32_t screen_update_itech32(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); WRITE_LINE_MEMBER(generate_int1); TIMER_CALLBACK_MEMBER(delayed_sound_data_w); TIMER_CALLBACK_MEMBER(scanline_interrupt); @@ -187,14 +183,14 @@ protected: inline void enable_clipping(); virtual void logblit(const char *tag); void update_interrupts(int fast); - void draw_raw(uint16_t *base, uint16_t color); + void draw_raw(u16 *base, u16 color); virtual void command_blit_raw(); virtual void command_shift_reg(); - inline void draw_rle_fast(uint16_t *base, uint16_t color); - inline void draw_rle_fast_xflip(uint16_t *base, uint16_t color); - inline void draw_rle_slow(uint16_t *base, uint16_t color); - void draw_rle(uint16_t *base, uint16_t color); - virtual void shiftreg_clear(uint16_t *base, uint16_t *zbase); + inline void draw_rle_fast(u16 *base, u16 color); + inline void draw_rle_fast_xflip(u16 *base, u16 color); + inline void draw_rle_slow(u16 *base, u16 color); + void draw_rle(u16 *base, u16 color); + virtual void shiftreg_clear(u16 *base, u16 *zbase); void handle_video_command(); void update_interrupts(int vint, int xint, int qint); void bloodstm_map(address_map &map); @@ -209,8 +205,7 @@ class drivedge_state : public itech32_state public: drivedge_state(const machine_config &mconfig, device_type type, const char *tag) : itech32_state(mconfig, type, tag), - m_dsp1(*this, "dsp1"), - m_dsp2(*this, "dsp2"), + m_dsp(*this, "dsp%u", 1U), m_zbuf_control(*this, "zctl"), m_tms1_boot(*this, "tms1_boot"), m_tms1_ram(*this, "tms1_ram"), @@ -228,8 +223,8 @@ protected: virtual void machine_start() override; virtual void machine_reset() override; - DECLARE_READ32_MEMBER(steering_r); - DECLARE_READ32_MEMBER(gas_r); + u16 steering_r(); + u16 gas_r(); DECLARE_READ32_MEMBER(tms1_speedup_r); DECLARE_READ32_MEMBER(tms2_speedup_r); @@ -240,10 +235,9 @@ protected: DECLARE_WRITE32_MEMBER(tms1_trigger_w); DECLARE_WRITE32_MEMBER(tms2_trigger_w); - DECLARE_WRITE32_MEMBER(color0_w); - DECLARE_WRITE32_MEMBER(zbuf_control_w); + void zbuf_control_w(offs_t offset, u32 data, u32 mem_mask = u32(~0)); - DECLARE_WRITE8_MEMBER(portb_out); + void portb_out(u8 data); DECLARE_WRITE_LINE_MEMBER(turbo_light); void main_map(address_map &map); @@ -252,22 +246,21 @@ protected: virtual void nvram_init(nvram_device &nvram, void *base, size_t length) override; virtual void logblit(const char *tag) override; - virtual void shiftreg_clear(uint16_t *base, uint16_t *zbase) override; + virtual void shiftreg_clear(u16 *base, u16 *zbase) override; virtual void command_blit_raw() override; virtual void command_shift_reg() override; - void draw_raw(uint16_t *base, uint16_t *zbase, uint16_t color); - - required_device<cpu_device> m_dsp1; - required_device<cpu_device> m_dsp2; - required_shared_ptr<uint32_t> m_zbuf_control; - required_shared_ptr<uint32_t> m_tms1_boot; - required_shared_ptr<uint32_t> m_tms1_ram; - required_shared_ptr<uint32_t> m_tms2_ram; + void draw_raw(u16 *base, u16 *zbase, u16 color); + + required_device_array<cpu_device, 2> m_dsp; + required_shared_ptr<u32> m_zbuf_control; + required_shared_ptr<u32> m_tms1_boot; + required_shared_ptr<u32> m_tms1_ram; + required_shared_ptr<u32> m_tms2_ram; output_finder<4> m_leds; required_ioport m_steer; required_ioport m_gas; - uint8_t m_tms_spinning[2]; + u8 m_tms_spinning[2]; }; #endif // MAME_INCLUDES_ITECH32_H |