trunk/src/mame/machine/raiden2cop.c
| r32147 | r32148 | |
| 12 | 12 | |
| 13 | 13 | raiden2cop_device::raiden2cop_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 14 | 14 | : device_t(mconfig, RAIDEN2COP, "RAIDEN2COP", tag, owner, clock, "raiden2cop", __FILE__), |
| 15 | cop_dma_v1(0), |
| 16 | cop_dma_v2(0), |
| 17 | cop_dma_mode(0), |
| 18 | cop_dma_adr_rel(0), |
| 19 | pal_brightness_val(0), |
| 20 | pal_brightness_mode(0), |
| 15 | 21 | m_videoramout_cb(*this), |
| 16 | 22 | m_palette(*this, ":palette") |
| 17 | 23 | { |
| 24 | memset(cop_dma_src, 0, sizeof(UINT16)*(0x200)); |
| 25 | memset(cop_dma_dst, 0, sizeof(UINT16)*(0x200)); |
| 26 | memset(cop_dma_size, 0, sizeof(UINT16)*(0x200)); |
| 18 | 27 | } |
| 19 | 28 | |
| 20 | 29 | |
| r32147 | r32148 | |
| 23 | 32 | //------------------------------------------------- |
| 24 | 33 | void raiden2cop_device::device_start() |
| 25 | 34 | { |
| 35 | save_item(NAME(cop_dma_v1)); |
| 36 | save_item(NAME(cop_dma_v2)); |
| 37 | save_item(NAME(cop_dma_mode)); |
| 38 | save_item(NAME(cop_dma_adr_rel)); |
| 39 | save_item(NAME(pal_brightness_val)); |
| 40 | save_item(NAME(pal_brightness_mode)); |
| 41 | |
| 42 | save_item(NAME(cop_dma_src)); |
| 43 | save_item(NAME(cop_dma_dst)); |
| 44 | save_item(NAME(cop_dma_size)); |
| 45 | |
| 26 | 46 | m_videoramout_cb.resolve_safe(); |
| 27 | 47 | } |
| 28 | 48 | |
trunk/src/mame/includes/raiden2.h
| r32147 | r32148 | |
| 17 | 17 | m_seibu_sound(*this, "seibu_sound"), |
| 18 | 18 | m_gfxdecode(*this, "gfxdecode"), |
| 19 | 19 | m_palette(*this, "palette"), |
| 20 | |
| 21 | bg_bank(0), |
| 22 | fg_bank(0), |
| 23 | mid_bank(0), |
| 24 | raiden2_tilemap_enable(0), |
| 25 | prg_bank(0), |
| 26 | cop_bank(0), |
| 27 | cop_itoa(0), |
| 28 | cop_status(0), |
| 29 | cop_scale(0), |
| 30 | cop_itoa_digit_count(0), |
| 31 | cop_angle(0), |
| 32 | cop_dist(0), |
| 33 | cop_latch_addr(0), |
| 34 | cop_latch_trigger(0), |
| 35 | cop_latch_value(0), |
| 36 | cop_latch_mask(0), |
| 37 | cop_angle_target(0), |
| 38 | cop_angle_step(0), |
| 39 | sprite_prot_x(0), |
| 40 | sprite_prot_y(0), |
| 41 | dst1(0), |
| 42 | cop_spr_maxx(0), |
| 43 | cop_spr_off(0), |
| 44 | cop_hit_status(0), |
| 45 | cop_hit_baseadr(0), |
| 46 | cop_hit_val_x(0), |
| 47 | cop_hit_val_y(0), |
| 48 | cop_hit_val_z(0), |
| 49 | cop_hit_val_unk(0), |
| 50 | cop_sort_ram_addr(0), |
| 51 | cop_sort_lookup(0), |
| 52 | cop_sort_param(0), |
| 20 | 53 | tile_buffer(320, 256), |
| 21 | 54 | sprite_buffer(320, 256), |
| 22 | 55 | m_raiden2cop(*this, "raiden2cop") |
| 23 | | { } |
| 56 | { |
| 57 | memset(scrollvals, 0, sizeof(UINT16)*6); |
| 58 | memset(cop_regs, 0, sizeof(UINT32)*8); |
| 59 | memset(cop_itoa_digits, 0, sizeof(UINT8)*10); |
| 24 | 60 | |
| 25 | | UINT16 *back_data, *fore_data, *mid_data, *text_data; |
| 61 | memset(cop_func_trigger, 0, sizeof(UINT16)*(0x100/8)); |
| 62 | memset(cop_func_value, 0, sizeof(UINT16)*(0x100/8)); |
| 63 | memset(cop_func_mask, 0, sizeof(UINT16)*(0x100/8)); |
| 64 | memset(cop_program, 0, sizeof(UINT16)*(0x100)); |
| 65 | memset(sprite_prot_src_addr, 0, sizeof(UINT16)*2); |
| 66 | memset(cop_collision_info, 0, sizeof(colinfo)*2); |
| 67 | } |
| 68 | |
| 69 | UINT16 *back_data, *fore_data, *mid_data, *text_data; // private buffers, allocated in init |
| 26 | 70 | required_shared_ptr<UINT16> sprites; |
| 27 | 71 | required_device<cpu_device> m_maincpu; |
| 28 | 72 | required_device<seibu_sound_device> m_seibu_sound; |
| r32147 | r32148 | |
| 95 | 139 | static UINT16 const xsedae_blended_colors[]; |
| 96 | 140 | static UINT16 const zeroteam_blended_colors[]; |
| 97 | 141 | |
| 98 | | bool blend_active[0x800]; |
| 142 | bool blend_active[0x800]; // cfg |
| 99 | 143 | |
| 100 | 144 | tilemap_t *background_layer,*midground_layer,*foreground_layer,*text_layer; |
| 145 | |
| 146 | |
| 101 | 147 | int bg_bank, fg_bank, mid_bank; |
| 102 | 148 | UINT16 raiden2_tilemap_enable; |
| 103 | | UINT8 prg_bank,prot_data; |
| 149 | UINT8 prg_bank; |
| 104 | 150 | UINT16 cop_bank; |
| 105 | 151 | |
| 106 | 152 | UINT16 scrollvals[6]; |
| r32147 | r32148 | |
| 116 | 162 | UINT16 cop_angle_target; |
| 117 | 163 | UINT16 cop_angle_step; |
| 118 | 164 | |
| 119 | | bitmap_ind16 tile_buffer, sprite_buffer; |
| 120 | 165 | |
| 121 | 166 | DECLARE_WRITE16_MEMBER( sprite_prot_x_w ); |
| 122 | 167 | DECLARE_WRITE16_MEMBER( sprite_prot_y_w ); |
| r32147 | r32148 | |
| 133 | 178 | UINT16 sprite_prot_x,sprite_prot_y,dst1,cop_spr_maxx,cop_spr_off; |
| 134 | 179 | UINT16 sprite_prot_src_addr[2]; |
| 135 | 180 | |
| 136 | | struct { |
| 181 | struct colinfo { |
| 137 | 182 | int x, y, z; |
| 138 | 183 | int min_x, min_y, min_z, max_x, max_y, max_z; |
| 139 | | } cop_collision_info[2]; |
| 184 | }; |
| 140 | 185 | |
| 186 | colinfo cop_collision_info[2]; |
| 187 | |
| 141 | 188 | UINT16 cop_hit_status, cop_hit_baseadr; |
| 142 | 189 | INT16 cop_hit_val_x, cop_hit_val_y, cop_hit_val_z, cop_hit_val_unk; |
| 143 | 190 | |
| r32147 | r32148 | |
| 156 | 203 | |
| 157 | 204 | UINT32 cop_sort_ram_addr, cop_sort_lookup; |
| 158 | 205 | UINT16 cop_sort_param; |
| 159 | | const int *cur_spri; |
| 206 | const int *cur_spri; // cfg |
| 160 | 207 | |
| 161 | 208 | DECLARE_DRIVER_INIT(raidendx); |
| 162 | 209 | DECLARE_DRIVER_INIT(xsedae); |
| r32147 | r32148 | |
| 183 | 230 | |
| 184 | 231 | void init_blending(const UINT16 *table); |
| 185 | 232 | |
| 233 | bitmap_ind16 tile_buffer, sprite_buffer; |
| 186 | 234 | required_device<raiden2cop_device> m_raiden2cop; |
| 187 | 235 | |
| 188 | | |
| 236 | protected: |
| 237 | virtual void machine_start(); |
| 189 | 238 | }; |
| 190 | 239 | |
| 191 | 240 | /*----------- defined in machine/r2crypt.c -----------*/ |
trunk/src/mame/drivers/raiden2.c
| r32147 | r32148 | |
| 164 | 164 | #include "includes/raiden2.h" |
| 165 | 165 | #include "video/seibu_crtc.h" |
| 166 | 166 | |
| 167 | |
| 168 | void raiden2_state::machine_start() |
| 169 | { |
| 170 | save_item(NAME(bg_bank)); |
| 171 | save_item(NAME(fg_bank)); |
| 172 | save_item(NAME(mid_bank)); |
| 173 | save_item(NAME(raiden2_tilemap_enable)); |
| 174 | save_item(NAME(prg_bank)); |
| 175 | save_item(NAME(cop_bank)); |
| 176 | save_item(NAME(cop_itoa)); |
| 177 | save_item(NAME(cop_status)); |
| 178 | save_item(NAME(cop_scale)); |
| 179 | save_item(NAME(cop_itoa_digit_count)); |
| 180 | save_item(NAME(cop_angle)); |
| 181 | save_item(NAME(cop_dist)); |
| 182 | save_item(NAME(cop_latch_addr)); |
| 183 | save_item(NAME(cop_latch_trigger)); |
| 184 | save_item(NAME(cop_latch_value)); |
| 185 | save_item(NAME(cop_latch_mask)); |
| 186 | save_item(NAME(cop_angle_target)); |
| 187 | save_item(NAME(cop_angle_step)); |
| 188 | save_item(NAME(sprite_prot_x)); |
| 189 | save_item(NAME(sprite_prot_y)); |
| 190 | save_item(NAME(dst1)); |
| 191 | save_item(NAME(cop_spr_maxx)); |
| 192 | save_item(NAME(cop_spr_off)); |
| 193 | save_item(NAME(cop_hit_status)); |
| 194 | save_item(NAME(cop_hit_baseadr)); |
| 195 | save_item(NAME(cop_hit_val_x)); |
| 196 | save_item(NAME( cop_hit_val_y)); |
| 197 | save_item(NAME(cop_hit_val_z)); |
| 198 | save_item(NAME(cop_hit_val_unk)); |
| 199 | save_item(NAME(cop_sort_ram_addr)); |
| 200 | save_item(NAME(cop_sort_lookup)); |
| 201 | save_item(NAME(cop_sort_param)); |
| 202 | |
| 203 | save_item(NAME(scrollvals)); |
| 204 | save_item(NAME(cop_regs)); |
| 205 | save_item(NAME(cop_itoa_digits)); |
| 206 | save_item(NAME(cop_func_trigger)); |
| 207 | save_item(NAME(cop_func_value)); |
| 208 | save_item(NAME(cop_func_mask)); |
| 209 | save_item(NAME(cop_program)); |
| 210 | save_item(NAME(sprite_prot_src_addr)); |
| 211 | |
| 212 | // save_pointer(NAME(cop_collision_info), sizeof(colinfo)*2); // this is illegal |
| 213 | save_item(NAME(cop_collision_info[0].x)); |
| 214 | save_item(NAME(cop_collision_info[0].y)); |
| 215 | save_item(NAME(cop_collision_info[0].z)); |
| 216 | |
| 217 | save_item(NAME(cop_collision_info[0].min_x)); |
| 218 | save_item(NAME(cop_collision_info[0].min_y)); |
| 219 | save_item(NAME(cop_collision_info[0].min_z)); |
| 220 | |
| 221 | save_item(NAME(cop_collision_info[0].max_x)); |
| 222 | save_item(NAME(cop_collision_info[0].max_y)); |
| 223 | save_item(NAME(cop_collision_info[0].max_z)); |
| 224 | |
| 225 | save_item(NAME(cop_collision_info[1].x)); |
| 226 | save_item(NAME(cop_collision_info[1].y)); |
| 227 | save_item(NAME(cop_collision_info[1].z)); |
| 228 | |
| 229 | save_item(NAME(cop_collision_info[1].min_x)); |
| 230 | save_item(NAME(cop_collision_info[1].min_y)); |
| 231 | save_item(NAME(cop_collision_info[1].min_z)); |
| 232 | |
| 233 | save_item(NAME(cop_collision_info[1].max_x)); |
| 234 | save_item(NAME(cop_collision_info[1].max_y)); |
| 235 | save_item(NAME(cop_collision_info[1].max_z)); |
| 236 | |
| 237 | // save_item(NAME(tile_buffer)); |
| 238 | // save_item(NAME(sprite_buffer)); |
| 239 | } |
| 240 | |
| 167 | 241 | UINT16 raiden2_state::rps() |
| 168 | 242 | { |
| 169 | 243 | return m_maincpu->state_int(NEC_CS); |