// license:BSD-3-Clause // copyright-holders:Nicola Salmoria #include "audio/timeplt.h" #include "sound/namco.h" #include "sound/samples.h" struct jungler_star { int x, y, color; }; #define JUNGLER_MAX_STARS 1000 class rallyx_state : public driver_device { public: rallyx_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), m_radarattr(*this, "radarattr"), m_maincpu(*this, "maincpu"), m_namco_sound(*this, "namco"), m_samples(*this, "samples"), m_timeplt_audio(*this, "timeplt_audio"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } /* memory pointers */ required_shared_ptr m_videoram; required_shared_ptr m_radarattr; uint8_t * m_spriteram; uint8_t * m_spriteram2; uint8_t * m_radarx; uint8_t * m_radary; /* video-related */ tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; /* misc */ int m_last_bang; int m_spriteram_base; int m_stars_enable; int m_total_stars; uint8_t m_drawmode_table[4]; struct jungler_star m_stars[JUNGLER_MAX_STARS]; /* devices */ required_device m_maincpu; optional_device m_namco_sound; optional_device m_samples; optional_device m_timeplt_audio; required_device m_gfxdecode; required_device m_palette; bool m_main_irq_mask; DECLARE_WRITE8_MEMBER(rallyx_interrupt_vector_w); DECLARE_WRITE_LINE_MEMBER(bang_w); DECLARE_WRITE_LINE_MEMBER(irq_mask_w); DECLARE_WRITE_LINE_MEMBER(nmi_mask_w); DECLARE_WRITE_LINE_MEMBER(sound_on_w); DECLARE_WRITE_LINE_MEMBER(flip_screen_w); DECLARE_WRITE_LINE_MEMBER(coin_lockout_w); DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); DECLARE_WRITE8_MEMBER(rallyx_videoram_w); DECLARE_WRITE8_MEMBER(rallyx_scrollx_w); DECLARE_WRITE8_MEMBER(rallyx_scrolly_w); DECLARE_WRITE_LINE_MEMBER(stars_enable_w); TILEMAP_MAPPER_MEMBER(fg_tilemap_scan); TILE_GET_INFO_MEMBER(rallyx_bg_get_tile_info); TILE_GET_INFO_MEMBER(rallyx_fg_get_tile_info); TILE_GET_INFO_MEMBER(locomotn_bg_get_tile_info); TILE_GET_INFO_MEMBER(locomotn_fg_get_tile_info); DECLARE_MACHINE_START(rallyx); DECLARE_VIDEO_START(rallyx); DECLARE_PALETTE_INIT(rallyx); DECLARE_VIDEO_START(jungler); DECLARE_PALETTE_INIT(jungler); DECLARE_VIDEO_START(locomotn); DECLARE_VIDEO_START(commsega); uint32_t screen_update_rallyx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_jungler(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_locomotn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(rallyx_vblank_irq); DECLARE_WRITE_LINE_MEMBER(jungler_vblank_irq); inline void rallyx_get_tile_info( tile_data &tileinfo, int tile_index, int ram_offs); inline void locomotn_get_tile_info(tile_data &tileinfo,int tile_index,int ram_offs); void calculate_star_field( ); void rallyx_video_start_common( ); void plot_star( bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y, int color ); void draw_stars( bitmap_ind16 &bitmap, const rectangle &cliprect ); void rallyx_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); void locomotn_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); void rallyx_draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect, bool transpen ); void jungler_draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect, bool transpen ); void locomotn_draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect, bool transpen ); void commsega(machine_config &config); void locomotn(machine_config &config); void tactcian(machine_config &config); void rallyx(machine_config &config); void jungler(machine_config &config); void io_map(address_map &map); void jungler_map(address_map &map); void rallyx_map(address_map &map); };