summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/itech32.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/itech32.h')
-rw-r--r--src/mame/includes/itech32.h175
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