summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/toaplan/toaplan2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/toaplan/toaplan2.h')
-rw-r--r--src/mame/toaplan/toaplan2.h280
1 files changed, 167 insertions, 113 deletions
diff --git a/src/mame/toaplan/toaplan2.h b/src/mame/toaplan/toaplan2.h
index d2d054ec776..c7eb2f6505e 100644
--- a/src/mame/toaplan/toaplan2.h
+++ b/src/mame/toaplan/toaplan2.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Quench, Yochizo, David Haywood
-#ifndef MAME_INCLUDES_TOAPLAN2_H
-#define MAME_INCLUDES_TOAPLAN2_H
+#ifndef MAME_TOAPLAN_TOAPLAN2_H
+#define MAME_TOAPLAN_TOAPLAN2_H
#pragma once
@@ -25,83 +25,48 @@ public:
toaplan2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_shared_ram(*this, "shared_ram")
- , m_tx_videoram(*this, "tx_videoram")
- , m_tx_lineselect(*this, "tx_lineselect")
- , m_tx_linescroll(*this, "tx_linescroll")
- , m_tx_gfxram(*this, "tx_gfxram")
, m_mainram(*this, "mainram")
, m_maincpu(*this, "maincpu")
, m_audiocpu(*this, "audiocpu")
, m_vdp(*this, "gp9001_%u", 0U)
, m_oki(*this, "oki%u", 1U)
, m_eeprom(*this, "eeprom")
- , m_rtc(*this, "rtc")
, m_gfxdecode(*this, "gfxdecode")
, m_screen(*this, "screen")
, m_palette(*this, "palette")
- , m_soundlatch(*this, "soundlatch")
- , m_soundlatch2(*this, "soundlatch2")
- , m_hopper(*this, "hopper")
- , m_dma_space(*this, "dma_space")
+ , m_soundlatch(*this, "soundlatch%u", 1U)
, m_z80_rom(*this, "audiocpu")
, m_oki_rom(*this, "oki%u", 1U)
- , m_audiobank(*this, "audiobank")
, m_okibank(*this, "okibank")
- , m_raizing_okibank{{*this, "raizing_okibank0_%u", 0U},
- {*this, "raizing_okibank1_%u", 0U}}
- , m_io_pad(*this, "PAD%u", 1U)
- , m_eepromout(*this, "EEPROMOUT")
{ }
+ void batsugun(machine_config &config);
+ void batsugunbl(machine_config &config);
void dogyuun(machine_config &config);
- void othldrby(machine_config &config);
- void snowbro2(machine_config &config);
- void bgareggabl(machine_config &config);
- void pwrkick(machine_config &config);
- void mahoudai(machine_config &config);
- void tekipaki(machine_config &config);
- void bbakraid(machine_config &config);
- void fixeightbl(machine_config &config);
- void fixeight(machine_config &config);
- void ghox(machine_config &config);
- void bgaregga(machine_config &config);
- void batrider(machine_config &config);
- void shippumd(machine_config &config);
+ void dogyuunto(machine_config &config);
+ void enmadaio(machine_config &config);
void kbash(machine_config &config);
+ void kbash2(machine_config &config);
void pipibibs(machine_config &config);
void pipibibsbl(machine_config &config);
- void batsugun(machine_config &config);
- void batsugunbl(machine_config &config);
- void enmadaio(machine_config &config);
- void truxton2(machine_config &config);
+ void snowbro2(machine_config &config);
+ void snowbro2b3(machine_config &config);
+ void tekipaki(machine_config &config);
void vfive(machine_config &config);
- void kbash2(machine_config &config);
- void nprobowl(machine_config &config);
- void init_bbakraid();
- void init_pipibibsbl();
void init_dogyuun();
- void init_fixeight();
- void init_bgaregga();
+ void init_enmadaio();
void init_fixeightbl();
+ void init_pipibibsbl();
void init_vfive();
- void init_batrider();
- void init_enmadaio();
- DECLARE_READ_LINE_MEMBER(c2map_r);
+ int c2map_r();
protected:
- virtual void device_post_load() override;
-
-private:
// We encode priority with colour in the tilemaps, so need a larger palette
static constexpr unsigned T2PALETTE_LENGTH = 0x10000;
optional_shared_ptr<u8> m_shared_ram; // 8 bit RAM shared between 68K and sound CPU
- optional_shared_ptr<u16> m_tx_videoram;
- optional_shared_ptr<u16> m_tx_lineselect;
- optional_shared_ptr<u16> m_tx_linescroll;
- optional_shared_ptr<u16> m_tx_gfxram;
optional_shared_ptr<u16> m_mainram;
required_device<m68000_base_device> m_maincpu;
@@ -109,46 +74,153 @@ private:
optional_device_array<gp9001vdp_device, 2> m_vdp;
optional_device_array<okim6295_device, 2> m_oki;
optional_device<eeprom_serial_93cxx_device> m_eeprom;
- optional_device<upd4992_device> m_rtc;
optional_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- optional_device<generic_latch_8_device> m_soundlatch; // tekipaki, batrider, bgaregga, batsugun
- optional_device<generic_latch_8_device> m_soundlatch2;
- optional_device<ticket_dispenser_device> m_hopper;
-
- optional_device<address_map_bank_device> m_dma_space;
+ optional_device_array<generic_latch_8_device, 4> m_soundlatch; // tekipaki, batrider, bgaregga, batsugun
optional_region_ptr<u8> m_z80_rom;
optional_region_ptr_array<u8, 2> m_oki_rom;
- optional_memory_bank m_audiobank;
optional_memory_bank m_okibank;
- optional_memory_bank_array<8> m_raizing_okibank[2];
- optional_ioport_array<2> m_io_pad;
- optional_ioport m_eepromout;
-
- s8 m_old_p1_paddle_h = 0; /* For Ghox */
- s8 m_old_p2_paddle_h = 0;
u8 m_sound_reset_bit = 0; /* 0x20 for dogyuun/batsugun, 0x10 for vfive, 0x08 for fixeight */
- u8 m_sndirq_line = 0; /* IRQ4 for batrider, IRQ2 for bbakraid */
- u8 m_z80_busreq = 0;
- u16 m_gfxrom_bank[8]{}; /* Batrider object bank */
bitmap_ind8 m_custom_priority_bitmap;
bitmap_ind16 m_secondary_render_bitmap;
- tilemap_t *m_tx_tilemap = nullptr; /* Tilemap for extra-text-layer */
u16 video_count_r();
void coin_w(u8 data);
void coin_sound_reset_w(u8 data);
- void shippumd_coin_w(u8 data);
u8 shared_ram_r(offs_t offset);
void shared_ram_w(offs_t offset, u8 data);
- u16 ghox_p1_h_analog_r();
- u16 ghox_p2_h_analog_r();
void sound_reset_w(u8 data);
void fixeightbl_oki_bankswitch_w(u8 data);
+
+ template<int Chip> void oki_bankswitch_w(u8 data);
+ void enmadaio_oki_bank_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+
+ DECLARE_VIDEO_START(toaplan2);
+ DECLARE_VIDEO_START(batsugunbl);
+
+ // Teki Paki sound
+ u8 tekipaki_cmdavailable_r();
+
+ u32 screen_update_toaplan2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ u32 screen_update_dogyuun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ u32 screen_update_batsugun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_vblank(int state);
+ void cpu_space_fixeightbl_map(address_map &map);
+ void cpu_space_pipibibsbl_map(address_map &map);
+
+ void toaplan2_reset(int state);
+
+ void batsugun_68k_mem(address_map &map);
+ void batsugunbl_68k_mem(address_map &map);
+ void dogyuun_68k_mem(address_map &map);
+ void dogyuunto_68k_mem(address_map &map);
+ void dogyuunto_sound_z80_mem(address_map &map);
+ void enmadaio_68k_mem(address_map &map);
+ void enmadaio_oki(address_map &map);
+ void fixeightbl_oki(address_map &map);
+ void hd647180_io_map(address_map &map);
+ void kbash2_68k_mem(address_map &map);
+ void kbash_68k_mem(address_map &map);
+ void kbash_v25_mem(address_map &map);
+ void pipibibi_bootleg_68k_mem(address_map &map);
+ void pipibibs_68k_mem(address_map &map);
+ void pipibibs_sound_z80_mem(address_map &map);
+ void snowbro2_68k_mem(address_map &map);
+ void snowbro2b3_68k_mem(address_map &map);
+ void tekipaki_68k_mem(address_map &map);
+ void v25_mem(address_map &map);
+ void vfive_68k_mem(address_map &map);
+ void vfive_v25_mem(address_map &map);
+};
+
+// with paddle
+class ghox_state : public toaplan2_state
+{
+public:
+ ghox_state(const machine_config &mconfig, device_type type, const char *tag)
+ : toaplan2_state(mconfig, type, tag)
+ , m_io_pad(*this, "PAD%u", 1U)
+ { }
+
+ void ghox(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ required_ioport_array<2> m_io_pad;
+
+ s8 m_old_paddle_h[2] = {0};
+
+ template<unsigned Which> u16 ghox_h_analog_r();
+
+ void ghox_68k_mem(address_map &map);
+ void ghox_hd647180_mem_map(address_map &map);
+};
+
+// with text layer
+class truxton2_state : public toaplan2_state
+{
+public:
+ truxton2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : toaplan2_state(mconfig, type, tag)
+ , m_tx_videoram(*this, "tx_videoram")
+ , m_tx_lineselect(*this, "tx_lineselect")
+ , m_tx_linescroll(*this, "tx_linescroll")
+ , m_tx_gfxram(*this, "tx_gfxram")
+ , m_dma_space(*this, "dma_space")
+ , m_audiobank(*this, "audiobank")
+ , m_raizing_okibank{
+ { *this, "raizing_okibank0_%u", 0U },
+ { *this, "raizing_okibank1_%u", 0U } }
+ , m_eepromout(*this, "EEPROMOUT")
+ { }
+
+ void batrider(machine_config &config);
+ void bbakraid(machine_config &config);
+ void bgaregga(machine_config &config);
+ void bgareggabl(machine_config &config);
+ void fixeight(machine_config &config);
+ void fixeightbl(machine_config &config);
+ void mahoudai(machine_config &config);
+ void nprobowl(machine_config &config);
+ void shippumd(machine_config &config);
+ void truxton2(machine_config &config);
+
+ void init_batrider();
+ void init_bbakraid();
+ void init_bgaregga();
+ void init_fixeight();
+
+protected:
+ virtual void machine_start() override;
+ virtual void device_post_load() override;
+
+private:
+ required_shared_ptr<u16> m_tx_videoram;
+ optional_shared_ptr<u16> m_tx_lineselect;
+ optional_shared_ptr<u16> m_tx_linescroll;
+ optional_shared_ptr<u16> m_tx_gfxram;
+
+ optional_device<address_map_bank_device> m_dma_space;
+
+ optional_memory_bank m_audiobank;
+ optional_memory_bank_array<8> m_raizing_okibank[2];
+
+ optional_ioport m_eepromout;
+
+ u8 m_sndirq_line = 0; /* IRQ4 for batrider, IRQ2 for bbakraid */
+ u8 m_z80_busreq = 0;
+ u16 m_gfxrom_bank[8]{}; /* Batrider object bank */
+
+ tilemap_t *m_tx_tilemap = nullptr; /* Tilemap for extra-text-layer */
+
+ void shippumd_coin_w(u8 data);
void raizing_z80_bankswitch_w(u8 data);
void raizing_oki_bankswitch_w(offs_t offset, u8 data);
u8 bgaregga_E01D_r();
@@ -172,82 +244,64 @@ private:
void batrider_objectbank_w(offs_t offset, u8 data);
void batrider_bank_cb(u8 layer, u32 &code);
- template<int Chip> void oki_bankswitch_w(u8 data);
- void enmadaio_oki_bank_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void install_raizing_okibank(int chip);
TILE_GET_INFO_MEMBER(get_text_tile_info);
- virtual void machine_start() override;
- DECLARE_MACHINE_RESET(toaplan2);
DECLARE_MACHINE_RESET(bgaregga);
- DECLARE_VIDEO_START(toaplan2);
- DECLARE_MACHINE_RESET(ghox);
DECLARE_VIDEO_START(truxton2);
DECLARE_VIDEO_START(fixeightbl);
DECLARE_VIDEO_START(bgaregga);
DECLARE_VIDEO_START(bgareggabl);
DECLARE_VIDEO_START(batrider);
- DECLARE_VIDEO_START(batsugunbl);
- // Teki Paki sound
- u8 tekipaki_cmdavailable_r();
-
- u32 screen_update_toaplan2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- u32 screen_update_dogyuun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- u32 screen_update_batsugun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_truxton2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank);
- void cpu_space_fixeightbl_map(address_map &map);
- void cpu_space_pipibibsbl_map(address_map &map);
INTERRUPT_GEN_MEMBER(bbakraid_snd_interrupt);
void create_tx_tilemap(int dx = 0, int dx_flipped = 0);
- void pwrkick_coin_w(u8 data);
- void pwrkick_coin_lockout_w(u8 data);
-
- DECLARE_WRITE_LINE_MEMBER(toaplan2_reset);
-
void batrider_68k_mem(address_map &map);
void batrider_dma_mem(address_map &map);
void batrider_sound_z80_mem(address_map &map);
void batrider_sound_z80_port(address_map &map);
- void batsugun_68k_mem(address_map &map);
- void batsugunbl_68k_mem(address_map &map);
void bbakraid_68k_mem(address_map &map);
void bbakraid_sound_z80_mem(address_map &map);
void bbakraid_sound_z80_port(address_map &map);
void bgaregga_68k_mem(address_map &map);
void bgaregga_sound_z80_mem(address_map &map);
- void dogyuun_68k_mem(address_map &map);
- void enmadaio_68k_mem(address_map &map);
- void enmadaio_oki(address_map &map);
void fixeight_68k_mem(address_map &map);
void fixeight_v25_mem(address_map &map);
void fixeightbl_68k_mem(address_map &map);
- void fixeightbl_oki(address_map &map);
- void ghox_68k_mem(address_map &map);
- void ghox_hd647180_mem_map(address_map &map);
- void hd647180_io_map(address_map &map);
- void kbash2_68k_mem(address_map &map);
- void kbash_68k_mem(address_map &map);
- void kbash_v25_mem(address_map &map);
void mahoudai_68k_mem(address_map &map);
void nprobowl_68k_mem(address_map &map);
- void othldrby_68k_mem(address_map &map);
- void pipibibi_bootleg_68k_mem(address_map &map);
- void pipibibs_68k_mem(address_map &map);
- void pipibibs_sound_z80_mem(address_map &map);
- void pwrkick_68k_mem(address_map &map);
template<unsigned Chip> void raizing_oki(address_map &map);
void raizing_sound_z80_mem(address_map &map);
void shippumd_68k_mem(address_map &map);
- void snowbro2_68k_mem(address_map &map);
- void tekipaki_68k_mem(address_map &map);
void truxton2_68k_mem(address_map &map);
- void v25_mem(address_map &map);
- void vfive_68k_mem(address_map &map);
- void vfive_v25_mem(address_map &map);
};
-#endif // MAME_INCLUDES_TOAPLAN2_H
+
+// with RTC, hopper
+class pwrkick_state : public toaplan2_state
+{
+public:
+ pwrkick_state(const machine_config &mconfig, device_type type, const char *tag)
+ : toaplan2_state(mconfig, type, tag)
+ , m_rtc(*this, "rtc")
+ , m_hopper(*this, "hopper")
+ { }
+
+ void othldrby(machine_config &config);
+ void pwrkick(machine_config &config);
+
+private:
+ required_device<upd4992_device> m_rtc;
+ optional_device<ticket_dispenser_device> m_hopper;
+
+ void pwrkick_coin_w(u8 data);
+ void pwrkick_coin_lockout_w(u8 data);
+
+ void othldrby_68k_mem(address_map &map);
+ void pwrkick_68k_mem(address_map &map);
+};
+
+#endif // MAME_TOAPLAN_TOAPLAN2_H