summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/tetrisp2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/tetrisp2.h')
-rw-r--r--src/mame/includes/tetrisp2.h213
1 files changed, 121 insertions, 92 deletions
diff --git a/src/mame/includes/tetrisp2.h b/src/mame/includes/tetrisp2.h
index 79eebe99f69..88ddeab064f 100644
--- a/src/mame/includes/tetrisp2.h
+++ b/src/mame/includes/tetrisp2.h
@@ -2,6 +2,7 @@
// copyright-holders:Luca Elia
#include "machine/gen_latch.h"
+#include "machine/jaleco_ms32_sysctrl.h"
#include "video/ms32_sprite.h"
#include "emupal.h"
#include "tilemap.h"
@@ -10,57 +11,49 @@ class tetrisp2_state : public driver_device
{
public:
tetrisp2_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_subcpu(*this, "sub"),
- m_sprite(*this, "sprite"),
- m_rocknms_sub_sprite(*this, "sub_sprite"),
- m_spriteram(*this, "spriteram"),
- m_spriteram2(*this, "spriteram2"),
- m_vram_fg(*this, "vram_fg"),
- m_vram_bg(*this, "vram_bg"),
- m_vram_rot(*this, "vram_rot"),
- m_nvram(*this, "nvram"),
- m_scroll_fg(*this, "scroll_fg"),
- m_scroll_bg(*this, "scroll_bg"),
- m_rotregs(*this, "rotregs"),
- m_rocknms_sub_priority(*this, "sub_priority"),
- m_rocknms_sub_vram_rot(*this, "sub_vram_rot"),
- m_rocknms_sub_vram_fg(*this, "sub_vram_fg"),
- m_rocknms_sub_vram_bg(*this, "sub_vram_bg"),
- m_rocknms_sub_scroll_fg(*this, "sub_scroll_fg"),
- m_rocknms_sub_scroll_bg(*this, "sub_scroll_bg"),
- m_rocknms_sub_rotregs(*this, "sub_rotregs"),
- m_gfxdecode(*this, "gfxdecode"),
- m_sub_gfxdecode(*this, "sub_gfxdecode"),
- m_palette(*this, "palette"),
- m_sub_palette(*this, "sub_palette"),
- m_paletteram(*this, "paletteram"),
- m_sub_paletteram(*this, "sub_paletteram"),
- m_leds(*this, "led%u", 0U)
+ driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_sysctrl(*this, "sysctrl")
+ , m_sprite(*this, "sprite")
+ , m_screen(*this, "screen")
+ , m_spriteram(*this, "spriteram")
+ , m_spriteram2(*this, "spriteram2")
+ , m_vram_fg(*this, "vram_fg")
+ , m_vram_bg(*this, "vram_bg")
+ , m_vram_rot(*this, "vram_rot")
+ , m_nvram(*this, "nvram")
+ , m_scroll_fg(*this, "scroll_fg")
+ , m_scroll_bg(*this, "scroll_bg")
+ , m_rotregs(*this, "rotregs")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_sub_gfxdecode(*this, "sub_gfxdecode")
+ , m_palette(*this, "palette")
+ , m_paletteram(*this, "paletteram")
+ , m_leds(*this, "led%u", 0U)
{ }
void rockn2(machine_config &config);
void tetrisp2(machine_config &config);
void nndmseal(machine_config &config);
- void rocknms(machine_config &config);
void rockn(machine_config &config);
void init_rockn2();
void init_rockn1();
void init_rockn();
void init_rockn3();
- void init_rocknms();
-
- DECLARE_CUSTOM_INPUT_MEMBER(rocknms_main2sub_status_r);
TILE_GET_INFO_MEMBER(get_tile_info_bg);
- TILE_GET_INFO_MEMBER(stepstag_get_tile_info_fg);
TILE_GET_INFO_MEMBER(get_tile_info_rot);
protected:
- void rockn_systemregs_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub_systemregs_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void setup_main_sysctrl(machine_config &config, const XTAL clock);
+ void setup_main_sprite(machine_config &config, const XTAL clock);
+ DECLARE_WRITE_LINE_MEMBER(flipscreen_w);
+ DECLARE_WRITE_LINE_MEMBER(timer_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(vblank_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(field_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(sound_reset_line_w);
+
u16 rockn_adpcmbank_r();
void rockn_adpcmbank_w(u16 data);
void rockn2_adpcmbank_w(u16 data);
@@ -69,66 +62,42 @@ protected:
void nndmseal_sound_bank_w(offs_t offset, u16 data, u16 mem_mask = ~0);
u16 tetrisp2_ip_1_word_r();
u16 rockn_nvram_r(offs_t offset);
- u16 rocknms_main2sub_r();
- void rocknms_main2sub_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub2main_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void tetrisp2_coincounter_w(u16 data);
void nndmseal_coincounter_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void nndmseal_b20000_w(u16 data);
- void tetrisp2_systemregs_w(offs_t offset, u16 data, u16 mem_mask = ~0);
u16 tetrisp2_nvram_r(offs_t offset);
void tetrisp2_nvram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void tetrisp2_palette_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub_palette_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void tetrisp2_priority_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub_priority_w(offs_t offset, u16 data, u16 mem_mask = ~0);
u16 tetrisp2_priority_r(offs_t offset);
void tetrisp2_vram_bg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void tetrisp2_vram_fg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void tetrisp2_vram_rot_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub_vram_bg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub_vram_fg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void rocknms_sub_vram_rot_w(offs_t offset, u16 data, u16 mem_mask = ~0);
TILE_GET_INFO_MEMBER(get_tile_info_fg);
- TILE_GET_INFO_MEMBER(get_tile_info_rocknms_sub_bg);
- TILE_GET_INFO_MEMBER(get_tile_info_rocknms_sub_fg);
- TILE_GET_INFO_MEMBER(get_tile_info_rocknms_sub_rot);
-
DECLARE_VIDEO_START(tetrisp2);
DECLARE_VIDEO_START(nndmseal);
DECLARE_VIDEO_START(rockntread);
- DECLARE_VIDEO_START(rocknms);
u32 screen_update_tetrisp2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_rockntread(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- u32 screen_update_rocknms_left(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- u32 screen_update_rocknms_right(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(rockn_timer_level4_callback);
- TIMER_CALLBACK_MEMBER(rockn_timer_sub_level4_callback);
- TIMER_CALLBACK_MEMBER(rockn_timer_level1_callback);
- TIMER_CALLBACK_MEMBER(rockn_timer_sub_level1_callback);
void init_rockn_timer();
void nndmseal_map(address_map &map);
void rockn1_map(address_map &map);
void rockn2_map(address_map &map);
- void rocknms_main_map(address_map &map);
- void rocknms_sub_map(address_map &map);
void tetrisp2_map(address_map &map);
virtual void machine_start() override { m_leds.resolve(); }
required_device<cpu_device> m_maincpu;
- optional_device<cpu_device> m_subcpu;
-
+ required_device<jaleco_ms32_sysctrl_device> m_sysctrl;
required_device<ms32_sprite_device> m_sprite;
- optional_device<ms32_sprite_device> m_rocknms_sub_sprite;
+ required_device<screen_device> m_screen;
required_shared_ptr<u16> m_spriteram;
optional_shared_ptr<u16> m_spriteram2;
- u16 m_systemregs[0x10];
required_shared_ptr<u16> m_vram_fg;
required_shared_ptr<u16> m_vram_bg;
required_shared_ptr<u16> m_vram_rot;
@@ -137,59 +106,114 @@ protected:
required_shared_ptr<u16> m_scroll_bg;
required_shared_ptr<u16> m_rotregs;
std::unique_ptr<u8[]> m_priority;
- optional_shared_ptr<u16> m_rocknms_sub_priority;
- optional_shared_ptr<u16> m_rocknms_sub_vram_rot;
- optional_shared_ptr<u16> m_rocknms_sub_vram_fg;
- optional_shared_ptr<u16> m_rocknms_sub_vram_bg;
- optional_shared_ptr<u16> m_rocknms_sub_scroll_fg;
- optional_shared_ptr<u16> m_rocknms_sub_scroll_bg;
- optional_shared_ptr<u16> m_rocknms_sub_rotregs;
required_device<gfxdecode_device> m_gfxdecode;
optional_device<gfxdecode_device> m_sub_gfxdecode;
required_device<palette_device> m_palette;
- optional_device<palette_device> m_sub_palette;
required_shared_ptr<u16> m_paletteram;
- optional_shared_ptr<u16> m_sub_paletteram;
output_finder<45> m_leds;
- u16 m_rocknms_sub_systemregs[0x10];
u16 m_rockn_protectdata;
u16 m_rockn_adpcmbank;
u16 m_rockn_soundvolume;
- emu_timer *m_rockn_timer_l4;
- emu_timer *m_rockn_timer_sub_l4;
- emu_timer *m_rockn_timer_l1;
- emu_timer *m_rockn_timer_sub_l1;
+ int m_rot_ofsx, m_rot_ofsy;
int m_bank_lo;
int m_bank_hi;
- u16 m_rocknms_main2sub;
- u16 m_rocknms_sub2main;
- int m_flipscreen_old;
+
tilemap_t *m_tilemap_bg;
tilemap_t *m_tilemap_fg;
tilemap_t *m_tilemap_rot;
+};
+
+class rocknms_state : public tetrisp2_state
+{
+public:
+ rocknms_state(const machine_config &mconfig, device_type type, const char *tag)
+ : tetrisp2_state(mconfig, type, tag)
+ , m_subcpu(*this, "sub")
+ , m_sub_sysctrl(*this, "sub_sysctrl")
+ , m_sub_screen(*this, "sub_screen")
+ , m_rocknms_sub_sprite(*this, "sub_sprite")
+ , m_rocknms_sub_priority(*this, "sub_priority")
+ , m_rocknms_sub_vram_rot(*this, "sub_vram_rot")
+ , m_rocknms_sub_vram_fg(*this, "sub_vram_fg")
+ , m_rocknms_sub_vram_bg(*this, "sub_vram_bg")
+ , m_rocknms_sub_scroll_fg(*this, "sub_scroll_fg")
+ , m_rocknms_sub_scroll_bg(*this, "sub_scroll_bg")
+ , m_rocknms_sub_rotregs(*this, "sub_rotregs")
+ , m_sub_palette(*this, "sub_palette")
+ , m_sub_paletteram(*this, "sub_paletteram")
+ { }
+
+ void rocknms(machine_config &config);
+ void init_rocknms();
+ DECLARE_CUSTOM_INPUT_MEMBER(rocknms_main2sub_status_r);
+
+private:
+ required_device<cpu_device> m_subcpu;
+ required_device<jaleco_ms32_sysctrl_device> m_sub_sysctrl;
+ required_device<screen_device> m_sub_screen;
+ required_device<ms32_sprite_device> m_rocknms_sub_sprite;
+ required_shared_ptr<u16> m_rocknms_sub_priority;
+ required_shared_ptr<u16> m_rocknms_sub_vram_rot;
+ required_shared_ptr<u16> m_rocknms_sub_vram_fg;
+ required_shared_ptr<u16> m_rocknms_sub_vram_bg;
+ required_shared_ptr<u16> m_rocknms_sub_scroll_fg;
+ required_shared_ptr<u16> m_rocknms_sub_scroll_bg;
+ required_shared_ptr<u16> m_rocknms_sub_rotregs;
+ required_device<palette_device> m_sub_palette;
+ required_shared_ptr<u16> m_sub_paletteram;
+
+ u32 screen_update_rocknms_left(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ u32 screen_update_rocknms_right(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void rocknms_main_map(address_map &map);
+ void rocknms_sub_map(address_map &map);
+
+ u16 rocknms_main2sub_r();
+ void rocknms_main2sub_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void rocknms_sub2main_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void rocknms_sub_palette_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void rocknms_sub_priority_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void rocknms_sub_vram_bg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void rocknms_sub_vram_fg_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void rocknms_sub_vram_rot_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ DECLARE_VIDEO_START(rocknms);
+
+ TILE_GET_INFO_MEMBER(get_tile_info_rocknms_sub_bg);
+ TILE_GET_INFO_MEMBER(get_tile_info_rocknms_sub_fg);
+ TILE_GET_INFO_MEMBER(get_tile_info_rocknms_sub_rot);
+
+ u16 m_rocknms_main2sub;
+ u16 m_rocknms_sub2main;
+
tilemap_t *m_tilemap_sub_bg;
tilemap_t *m_tilemap_sub_fg;
tilemap_t *m_tilemap_sub_rot;
+
+ DECLARE_WRITE_LINE_MEMBER(sub_flipscreen_w);
+ DECLARE_WRITE_LINE_MEMBER(sub_timer_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(sub_vblank_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(sub_field_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(sub_sound_reset_line_w);
};
class stepstag_state : public tetrisp2_state
{
public:
stepstag_state(const machine_config &mconfig, device_type type, const char *tag) :
- tetrisp2_state(mconfig, type, tag),
- m_vj_sprite_l(*this, "sprite_l"),
- m_vj_sprite_m(*this, "sprite_m"),
- m_vj_sprite_r(*this, "sprite_r"),
- m_spriteram1(*this, "spriteram1"),
- m_spriteram3(*this, "spriteram3"),
- m_vj_palette_l(*this, "lpalette"),
- m_vj_palette_m(*this, "mpalette"),
- m_vj_palette_r(*this, "rpalette"),
- m_vj_paletteram_l(*this, "paletteram1"),
- m_vj_paletteram_m(*this, "paletteram2"),
- m_vj_paletteram_r(*this, "paletteram3"),
- m_soundlatch(*this, "soundlatch")
+ tetrisp2_state(mconfig, type, tag)
+ , m_subcpu(*this, "sub")
+ , m_vj_sprite_l(*this, "sprite_l")
+ , m_vj_sprite_m(*this, "sprite_m")
+ , m_vj_sprite_r(*this, "sprite_r")
+ , m_spriteram1(*this, "spriteram1")
+ , m_spriteram3(*this, "spriteram3")
+ , m_vj_palette_l(*this, "lpalette")
+ , m_vj_palette_m(*this, "mpalette")
+ , m_vj_palette_r(*this, "rpalette")
+ , m_vj_paletteram_l(*this, "paletteram1")
+ , m_vj_paletteram_m(*this, "paletteram2")
+ , m_vj_paletteram_r(*this, "paletteram3")
+ , m_soundlatch(*this, "soundlatch")
{ }
void stepstag(machine_config &config);
@@ -217,9 +241,10 @@ private:
void stepstag_palette_mid_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void stepstag_palette_right_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ TILE_GET_INFO_MEMBER(stepstag_get_tile_info_fg);
u32 screen_update_stepstag_left(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
u32 screen_update_stepstag_mid(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- u32 screen_update_stepstag_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ u32 screen_update_stepstag_right(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
u32 screen_update_stepstag_main(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
// inline int mypal(int x);
@@ -227,6 +252,10 @@ private:
void stepstag_sub_map(address_map &map);
void vjdash_map(address_map &map);
+ TIMER_DEVICE_CALLBACK_MEMBER(field_cb);
+ void setup_non_sysctrl_screen(machine_config &config, screen_device *screen, const XTAL xtal);
+
+ required_device<cpu_device> m_subcpu;
optional_device<ms32_sprite_device> m_vj_sprite_l;
optional_device<ms32_sprite_device> m_vj_sprite_m;
optional_device<ms32_sprite_device> m_vj_sprite_r;