// license:BSD-3-Clause // copyright-holders:Zsolt Vasvari, Couriersud /*************************************************************************** Burger Time hardware ***************************************************************************/ #include "machine/gen_latch.h" #include "machine/input_merger.h" #include "machine/timer.h" #include "screen.h" class btime_state : public driver_device { public: btime_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_rambase(*this, "rambase") , m_videoram(*this, "videoram") , m_colorram(*this, "colorram") , m_bnj_backgroundram(*this, "bnj_bgram") , m_zoar_scrollram(*this, "zoar_scrollram") , m_lnc_charbank(*this, "lnc_charbank") , m_deco_charram(*this, "deco_charram") , m_spriteram(*this, "spriteram") , m_audio_rambase(*this, "audio_rambase") , m_maincpu(*this, "maincpu") , m_audiocpu(*this, "audiocpu") , m_audionmi(*this, "audionmi") , m_gfxdecode(*this, "gfxdecode") , m_screen(*this, "screen") , m_palette(*this, "palette") , m_soundlatch(*this, "soundlatch") , m_prom_region(*this, "proms") { } /* memory pointers */ optional_shared_ptr m_rambase; required_shared_ptr m_videoram; required_shared_ptr m_colorram; optional_shared_ptr m_bnj_backgroundram; optional_shared_ptr m_zoar_scrollram; optional_shared_ptr m_lnc_charbank; optional_shared_ptr m_deco_charram; optional_shared_ptr m_spriteram; // used by disco // uint8_t * m_decrypted; optional_shared_ptr m_audio_rambase; /* video-related */ std::unique_ptr m_background_bitmap; uint8_t m_btime_palette; uint8_t m_bnj_scroll1; uint8_t m_bnj_scroll2; uint8_t m_btime_tilemap[4]; /* audio-related */ uint8_t m_audio_nmi_enable_type; /* protection-related (for mmonkey) */ int m_protection_command; int m_protection_status; int m_protection_value; int m_protection_ret; /* devices */ required_device m_maincpu; optional_device m_audiocpu; optional_device m_audionmi; required_device m_gfxdecode; required_device m_screen; required_device m_palette; optional_device m_soundlatch; optional_memory_region m_prom_region; DECLARE_WRITE8_MEMBER(audio_nmi_enable_w); DECLARE_READ8_MEMBER(zoar_dsw1_read); DECLARE_READ8_MEMBER(wtennis_reset_hack_r); DECLARE_READ8_MEMBER(mmonkey_protection_r); DECLARE_WRITE8_MEMBER(mmonkey_protection_w); DECLARE_WRITE8_MEMBER(lnc_videoram_w); DECLARE_READ8_MEMBER(btime_mirrorvideoram_r); DECLARE_READ8_MEMBER(btime_mirrorcolorram_r); DECLARE_WRITE8_MEMBER(btime_mirrorvideoram_w); DECLARE_WRITE8_MEMBER(lnc_mirrorvideoram_w); DECLARE_WRITE8_MEMBER(btime_mirrorcolorram_w); DECLARE_WRITE8_MEMBER(deco_charram_w); DECLARE_WRITE8_MEMBER(bnj_background_w); DECLARE_WRITE8_MEMBER(bnj_scroll1_w); DECLARE_WRITE8_MEMBER(bnj_scroll2_w); DECLARE_WRITE8_MEMBER(btime_video_control_w); DECLARE_WRITE8_MEMBER(bnj_video_control_w); DECLARE_WRITE8_MEMBER(zoar_video_control_w); DECLARE_WRITE8_MEMBER(disco_video_control_w); DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_irq_hi); DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_irq_lo); DECLARE_INPUT_CHANGED_MEMBER(coin_inserted_nmi_lo); DECLARE_WRITE8_MEMBER(ay_audio_nmi_enable_w); void init_btime(); void init_tisland(); void init_cookrace(); void init_zoar(); void init_sdtennis(); void init_wtennis(); void init_bnj(); void init_protennb(); void init_disco(); void init_lnc(); DECLARE_MACHINE_START(btime); DECLARE_MACHINE_RESET(btime); DECLARE_PALETTE_INIT(btime); DECLARE_MACHINE_RESET(lnc); DECLARE_PALETTE_INIT(lnc); DECLARE_MACHINE_START(mmonkey); DECLARE_MACHINE_RESET(mmonkey); DECLARE_VIDEO_START(bnj); DECLARE_VIDEO_START(disco); uint32_t screen_update_btime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_cookrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_lnc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_eggs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_bnj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_zoar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_disco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(audio_nmi_gen); void draw_chars( bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t transparency, uint8_t color, int priority ); void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* tmap, uint8_t color ); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t color, uint8_t sprite_y_adjust, uint8_t sprite_y_adjust_flip_screen, uint8_t *sprite_ram, offs_t interleave ); void lnc(machine_config &config); void disco(machine_config &config); void mmonkey(machine_config &config); void bnj(machine_config &config); void cookrace(machine_config &config); void wtennis(machine_config &config); void sdtennis(machine_config &config); void tisland(machine_config &config); void zoar(machine_config &config); void btime(machine_config &config); void audio_map(address_map &map); void bnj_map(address_map &map); void btime_map(address_map &map); void cookrace_map(address_map &map); void disco_audio_map(address_map &map); void disco_map(address_map &map); void lnc_map(address_map &map); void mmonkey_map(address_map &map); void tisland_map(address_map &map); void zoar_map(address_map &map); };