1 // license:BSD-3-Clause 2 // copyright-holders:David Haywood, Sylvain Glaize, Paul Priest, Olivier Galibert 3 #ifndef MAME_INCLUDES_SUPRNOVA_H 4 #define MAME_INCLUDES_SUPRNOVA_H 5 6 #pragma once 7 8 #include "video/sknsspr.h" 9 10 #include "cpu/sh/sh2.h" 11 #include "machine/timer.h" 12 13 #include "emupal.h" 14 #include "screen.h" 15 #include "tilemap.h" 16 17 18 class skns_state : public driver_device 19 { 20 public: skns_state(const machine_config & mconfig,device_type type,const char * tag)21 skns_state(const machine_config &mconfig, device_type type, const char *tag) : 22 driver_device(mconfig, type, tag), 23 m_maincpu(*this,"maincpu"), 24 m_spritegen(*this, "spritegen"), 25 m_gfxdecode(*this, "gfxdecode"), 26 m_palette(*this, "palette"), 27 m_screen(*this, "screen"), 28 m_spriteram(*this,"spriteram"), 29 m_spc_regs(*this, "spc_regs"), 30 m_v3_regs(*this, "v3_regs"), 31 m_tilemapA_ram(*this, "tilemapa_ram"), 32 m_tilemapB_ram(*this, "tilemapb_ram"), 33 m_v3slc_ram(*this, "v3slc_ram"), 34 m_pal_regs(*this, "pal_regs"), 35 m_palette_ram(*this, "palette_ram"), 36 m_v3t_ram(*this, "v3t_ram"), 37 m_main_ram(*this, "main_ram"), 38 m_cache_ram(*this, "cache_ram"), 39 m_paddle(*this, "Paddle.%c", 'A') 40 { } 41 42 void sknsk(machine_config &config); 43 void sknsu(machine_config &config); 44 void sknsa(machine_config &config); 45 void sknsj(machine_config &config); 46 void sknse(machine_config &config); 47 void skns(machine_config &config); 48 49 void init_sengekis(); 50 void init_cyvern(); 51 void init_puzzloopa(); 52 void init_teljan(); 53 void init_panicstr(); 54 void init_puzzloope(); 55 void init_sengekij(); 56 void init_puzzloopj(); 57 void init_sarukani(); 58 void init_gutsn(); 59 void init_jjparad2(); 60 void init_galpans3(); 61 void init_jjparads(); 62 void init_galpans2(); 63 void init_galpanis(); 64 void init_puzzloopu(); 65 void init_senknow(); 66 void init_galpani4(); 67 void init_ryouran(); 68 69 template <int P> DECLARE_CUSTOM_INPUT_MEMBER(paddle_r); 70 71 private: 72 struct hit_t 73 { 74 uint16_t x1p, y1p, z1p, x1s, y1s, z1s; 75 uint16_t x2p, y2p, z2p, x2s, y2s, z2s; 76 uint16_t org; 77 78 uint16_t x1_p1, x1_p2, y1_p1, y1_p2, z1_p1, z1_p2; 79 uint16_t x2_p1, x2_p2, y2_p1, y2_p2, z2_p1, z2_p2; 80 uint16_t x1tox2, y1toy2, z1toz2; 81 int16_t x_in, y_in, z_in; 82 uint16_t flag; 83 84 uint8_t disconnect; 85 }; 86 87 required_device<sh2_device> m_maincpu; 88 required_device<sknsspr_device> m_spritegen; 89 required_device<gfxdecode_device> m_gfxdecode; 90 required_device<palette_device> m_palette; 91 required_device<screen_device> m_screen; 92 93 required_shared_ptr<uint32_t> m_spriteram; 94 required_shared_ptr<uint32_t> m_spc_regs; 95 required_shared_ptr<uint32_t> m_v3_regs; 96 required_shared_ptr<uint32_t> m_tilemapA_ram; 97 required_shared_ptr<uint32_t> m_tilemapB_ram; 98 required_shared_ptr<uint32_t> m_v3slc_ram; 99 required_shared_ptr<uint32_t> m_pal_regs; 100 required_shared_ptr<uint32_t> m_palette_ram; 101 required_shared_ptr<uint32_t> m_v3t_ram; 102 required_shared_ptr<uint32_t> m_main_ram; 103 required_shared_ptr<uint32_t> m_cache_ram; 104 105 optional_ioport_array<4> m_paddle; 106 107 hit_t m_hit; 108 bitmap_ind16 m_sprite_bitmap; 109 bitmap_ind16 m_tilemap_bitmap_lower; 110 bitmap_ind8 m_tilemap_bitmapflags_lower; 111 bitmap_ind16 m_tilemap_bitmap_higher; 112 bitmap_ind8 m_tilemap_bitmapflags_higher; 113 int m_depthA; 114 int m_depthB; 115 int m_use_spc_bright; 116 int m_use_v3_bright; 117 uint8_t m_bright_spc_b; 118 uint8_t m_bright_spc_g; 119 uint8_t m_bright_spc_r; 120 uint8_t m_bright_spc_b_trans; 121 uint8_t m_bright_spc_g_trans; 122 uint8_t m_bright_spc_r_trans; 123 uint8_t m_bright_v3_b; 124 uint8_t m_bright_v3_g; 125 uint8_t m_bright_v3_r; 126 uint8_t m_bright_v3_b_trans; 127 uint8_t m_bright_v3_g_trans; 128 uint8_t m_bright_v3_r_trans; 129 int m_spc_changed; 130 int m_v3_changed; 131 int m_palette_updated; 132 int m_alt_enable_background; 133 int m_alt_enable_sprites; 134 tilemap_t *m_tilemap_A; 135 tilemap_t *m_tilemap_B; 136 uint8_t *m_btiles; 137 uint8_t m_region; 138 139 void hit_w(offs_t offset, uint32_t data); 140 void hit2_w(uint32_t data); 141 uint32_t hit_r(offs_t offset); 142 void io_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 143 void v3t_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 144 void pal_regs_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 145 void palette_ram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 146 void tilemapA_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 147 void tilemapB_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 148 void v3_regs_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 149 150 uint32_t gutsn_speedup_r(); 151 uint32_t cyvern_speedup_r(); 152 uint32_t puzzloopj_speedup_r(); 153 uint32_t puzzloopa_speedup_r(); 154 uint32_t puzzloopu_speedup_r(); 155 uint32_t puzzloope_speedup_r(); 156 uint32_t senknow_speedup_r(); 157 uint32_t teljan_speedup_r(); 158 uint32_t jjparads_speedup_r(); 159 uint32_t jjparad2_speedup_r(); 160 uint32_t ryouran_speedup_r(); 161 uint32_t galpans2_speedup_r(); 162 uint32_t panicstr_speedup_r(); 163 uint32_t sengekis_speedup_r(); 164 uint32_t sengekij_speedup_r(); 165 166 virtual void machine_start() override; 167 virtual void machine_reset() override; 168 virtual void video_start() override; 169 virtual void video_reset() override; 170 DECLARE_MACHINE_RESET(sknsa); 171 DECLARE_MACHINE_RESET(sknsj); 172 DECLARE_MACHINE_RESET(sknsu); 173 DECLARE_MACHINE_RESET(sknse); 174 DECLARE_MACHINE_RESET(sknsk); 175 176 TILE_GET_INFO_MEMBER(get_tilemap_A_tile_info); 177 TILE_GET_INFO_MEMBER(get_tilemap_B_tile_info); 178 uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 179 DECLARE_WRITE_LINE_MEMBER(screen_vblank); 180 181 TIMER_DEVICE_CALLBACK_MEMBER(interrupt_callback); 182 TIMER_DEVICE_CALLBACK_MEMBER(irq); 183 void draw_roz(bitmap_ind16 &bitmap, bitmap_ind8& bitmapflags, const rectangle &cliprect, tilemap_t *tmap, uint32_t startx, uint32_t starty, int incxx, int incxy, int incyx, int incyy, int wraparound, int columnscroll, uint32_t* scrollram); 184 void palette_set_rgb_brightness (int offset, uint8_t brightness_r, uint8_t brightness_g, uint8_t brightness_b); 185 void palette_update(); 186 void draw_a( bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const rectangle &cliprect, int tran ); 187 void draw_b( bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const rectangle &cliprect, int tran ); 188 void hit_recalc(); 189 void init_drc(); 190 void set_drc_pcflush(uint32_t addr); 191 192 void skns_map(address_map &map); 193 }; 194 195 #endif // MAME_INCLUDES_SUPRNOVA_H 196