src/mame/video/dynax.c
| r7640 | r7641 | |
| 30 | 30 | { |
| 31 | 31 | int i; |
| 32 | 32 | |
| 33 | | for (i = 0;i < machine->config->total_colors;i++) |
| 33 | for (i = 0; i < machine->config->total_colors; i++) |
| 34 | 34 | { |
| 35 | | int x = (color_prom[i]<<8) + color_prom[0x200+i]; |
| 35 | int x = (color_prom[i] << 8) + color_prom[0x200 + i]; |
| 36 | 36 | /* The bits are in reverse order! */ |
| 37 | | int r = BITSWAP8((x >> 0) & 0x1f, 7,6,5, 0,1,2,3,4 ); |
| 38 | | int g = BITSWAP8((x >> 5) & 0x1f, 7,6,5, 0,1,2,3,4 ); |
| 39 | | int b = BITSWAP8((x >> 10) & 0x1f, 7,6,5, 0,1,2,3,4 ); |
| 40 | | palette_set_color_rgb(machine,i,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 37 | int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); |
| 38 | int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); |
| 39 | int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); |
| 40 | palette_set_color_rgb(machine, i, pal5bit(r), pal5bit(g), pal5bit(b)); |
| 41 | 41 | } |
| 42 | 42 | } |
| 43 | 43 | |
| r7640 | r7641 | |
| 49 | 49 | |
| 50 | 50 | ***************************************************************************/ |
| 51 | 51 | |
| 52 | | |
| 53 | | static int dynax_blit_scroll_x, dynax_blit2_scroll_x; |
| 54 | | static int dynax_blit_scroll_y, dynax_blit2_scroll_y; |
| 55 | | static int dynax_blit_wrap_enable, dynax_blit2_wrap_enable; |
| 56 | | static int blit_x,blit_y, blit2_x,blit2_y; |
| 57 | | static int blit_src, blit2_src; |
| 58 | | static const char * dynax_blit_romregion, *dynax_blit2_romregion; |
| 59 | | static int dynax_blit_dest, dynax_blit2_dest; |
| 60 | | static int dynax_blit_pen, dynax_blit2_pen; |
| 61 | | static int dynax_blit_palbank, dynax_blit2_palbank; |
| 62 | | static int dynax_blit_palettes, dynax_blit2_palettes; |
| 63 | | static int dynax_layer_enable; |
| 64 | | static int dynax_blit_backpen; |
| 65 | | |
| 66 | | static int hanamai_layer_half; |
| 67 | | static int hnoridur_layer_half2; |
| 68 | | |
| 69 | | static int extra_scroll_x,extra_scroll_y; |
| 70 | | static int flipscreen; |
| 71 | | |
| 72 | 52 | #define LAYOUT_HANAMAI 0 // 4 layers, interleaved |
| 73 | 53 | #define LAYOUT_HNORIDUR 1 // same as hanamai but some bits are inverted and layer order is reversed |
| 74 | 54 | #define LAYOUT_DRGPUNCH 2 // 3 couples of layers, interleaved |
| 75 | 55 | #define LAYOUT_MJDIALQ2 3 // 2 layers |
| 76 | 56 | #define LAYOUT_JANTOUKI 4 // 2 x (4 couples of layers, interleaved) |
| 77 | 57 | |
| 78 | | static int layer_layout; |
| 79 | | |
| 80 | | static void (*update_irq_func)(running_machine *machine); // some games trigger IRQ at blitter end, some don't |
| 81 | | |
| 82 | | // up to 8 layers, 2 images per layer (interleaved on screen) |
| 83 | | static UINT8 *dynax_pixmap[8][2]; |
| 84 | | |
| 85 | | |
| 86 | | |
| 87 | 58 | WRITE8_HANDLER( dynax_extra_scrollx_w ) |
| 88 | 59 | { |
| 89 | | extra_scroll_x = data; |
| 60 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 61 | state->extra_scroll_x = data; |
| 90 | 62 | } |
| 91 | 63 | |
| 92 | 64 | WRITE8_HANDLER( dynax_extra_scrolly_w ) |
| 93 | 65 | { |
| 94 | | extra_scroll_y = data; |
| 66 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 67 | state->extra_scroll_y = data; |
| 95 | 68 | } |
| 96 | 69 | |
| 97 | 70 | |
| 98 | 71 | /* Destination Pen */ |
| 99 | 72 | WRITE8_HANDLER( dynax_blit_pen_w ) |
| 100 | 73 | { |
| 101 | | dynax_blit_pen = data; |
| 102 | | LOG(("P=%02X ",data)); |
| 74 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 75 | state->blit_pen = data; |
| 76 | LOG(("P=%02X ", data)); |
| 103 | 77 | } |
| 78 | |
| 104 | 79 | WRITE8_HANDLER( dynax_blit2_pen_w ) |
| 105 | 80 | { |
| 106 | | dynax_blit2_pen = data; |
| 107 | | LOG(("P'=%02X ",data)); |
| 81 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 82 | state->blit2_pen = data; |
| 83 | LOG(("P'=%02X ", data)); |
| 108 | 84 | } |
| 109 | 85 | |
| 86 | |
| 110 | 87 | /* Destination Layers */ |
| 111 | 88 | WRITE8_HANDLER( dynax_blit_dest_w ) |
| 112 | 89 | { |
| 113 | | dynax_blit_dest = data; |
| 114 | | if (layer_layout == LAYOUT_HNORIDUR) |
| 115 | | dynax_blit_dest = BITSWAP8(dynax_blit_dest ^ 0x0f, 7,6,5,4, 0,1,2,3); |
| 90 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 91 | state->blit_dest = data; |
| 92 | if (state->layer_layout == LAYOUT_HNORIDUR) |
| 93 | state->blit_dest = BITSWAP8(state->blit_dest ^ 0x0f, 7, 6, 5, 4, 0, 1, 2, 3); |
| 116 | 94 | |
| 117 | | LOG(("D=%02X ",data)); |
| 95 | LOG(("D=%02X ", data)); |
| 118 | 96 | } |
| 97 | |
| 119 | 98 | WRITE8_HANDLER( dynax_blit2_dest_w ) |
| 120 | 99 | { |
| 121 | | dynax_blit2_dest = data; |
| 122 | | LOG(("D'=%02X ",data)); |
| 100 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 101 | state->blit2_dest = data; |
| 102 | LOG(("D'=%02X ", data)); |
| 123 | 103 | } |
| 104 | |
| 124 | 105 | WRITE8_HANDLER( tenkai_blit_dest_w ) |
| 125 | 106 | { |
| 126 | | dynax_blit_dest_w(space, 0, BITSWAP8(data, 7,6,5,4, 0,1,2,3)); |
| 107 | dynax_blit_dest_w(space, 0, BITSWAP8(data, 7, 6, 5, 4, 0, 1, 2, 3)); |
| 127 | 108 | } |
| 128 | 109 | |
| 110 | |
| 129 | 111 | /* Background Color */ |
| 130 | 112 | WRITE8_HANDLER( dynax_blit_backpen_w ) |
| 131 | 113 | { |
| 132 | | dynax_blit_backpen = data; |
| 133 | | LOG(("B=%02X ",data)); |
| 114 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 115 | state->blit_backpen = data; |
| 116 | LOG(("B=%02X ", data)); |
| 134 | 117 | } |
| 135 | 118 | |
| 119 | |
| 136 | 120 | /* Layers 0&1 Palettes (Low Bits) */ |
| 137 | 121 | WRITE8_HANDLER( dynax_blit_palette01_w ) |
| 138 | 122 | { |
| 139 | | if (layer_layout == LAYOUT_HNORIDUR) |
| 140 | | dynax_blit_palettes = (dynax_blit_palettes & 0x00ff) | ((data&0x0f)<<12) | ((data&0xf0)<<4); |
| 123 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 124 | if (state->layer_layout == LAYOUT_HNORIDUR) |
| 125 | state->blit_palettes = (state->blit_palettes & 0x00ff) | ((data & 0x0f) << 12) | ((data & 0xf0) << 4); |
| 141 | 126 | else |
| 142 | | dynax_blit_palettes = (dynax_blit_palettes & 0xff00) | data; |
| 143 | | LOG(("P01=%02X ",data)); |
| 127 | state->blit_palettes = (state->blit_palettes & 0xff00) | data; |
| 128 | LOG(("P01=%02X ", data)); |
| 144 | 129 | } |
| 130 | |
| 145 | 131 | WRITE8_HANDLER( tenkai_blit_palette01_w ) |
| 146 | 132 | { |
| 147 | | dynax_blit_palettes = (dynax_blit_palettes & 0xff00) | data; |
| 148 | | LOG(("P01=%02X ",data)); |
| 133 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 134 | state->blit_palettes = (state->blit_palettes & 0xff00) | data; |
| 135 | LOG(("P01=%02X ", data)); |
| 149 | 136 | } |
| 150 | 137 | |
| 138 | |
| 151 | 139 | /* Layers 4&5 Palettes (Low Bits) */ |
| 152 | 140 | WRITE8_HANDLER( dynax_blit_palette45_w ) |
| 153 | 141 | { |
| 154 | | if (layer_layout == LAYOUT_HNORIDUR) |
| 155 | | dynax_blit2_palettes = (dynax_blit2_palettes & 0x00ff) | ((data&0x0f)<<12) | ((data&0xf0)<<4); |
| 142 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 143 | |
| 144 | if (state->layer_layout == LAYOUT_HNORIDUR) |
| 145 | state->blit2_palettes = (state->blit2_palettes & 0x00ff) | ((data & 0x0f) << 12) | ((data & 0xf0) << 4); |
| 156 | 146 | else |
| 157 | | dynax_blit2_palettes = (dynax_blit2_palettes & 0xff00) | data; |
| 158 | | LOG(("P45=%02X ",data)); |
| 147 | state->blit2_palettes = (state->blit2_palettes & 0xff00) | data; |
| 148 | LOG(("P45=%02X ", data)); |
| 159 | 149 | } |
| 160 | 150 | |
| 151 | |
| 161 | 152 | /* Layer 2&3 Palettes (Low Bits) */ |
| 162 | 153 | WRITE8_HANDLER( dynax_blit_palette23_w ) |
| 163 | 154 | { |
| 164 | | if (layer_layout == LAYOUT_HNORIDUR) |
| 165 | | dynax_blit_palettes = (dynax_blit_palettes & 0xff00) | ((data&0x0f)<<4) | ((data&0xf0)>>4); |
| 155 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 156 | |
| 157 | if (state->layer_layout == LAYOUT_HNORIDUR) |
| 158 | state->blit_palettes = (state->blit_palettes & 0xff00) | ((data & 0x0f) << 4) | ((data & 0xf0) >> 4); |
| 166 | 159 | else |
| 167 | | dynax_blit_palettes = (dynax_blit_palettes & 0x00ff) | (data<<8); |
| 168 | | LOG(("P23=%02X ",data)); |
| 160 | state->blit_palettes = (state->blit_palettes & 0x00ff) | (data << 8); |
| 161 | LOG(("P23=%02X ", data)); |
| 169 | 162 | } |
| 163 | |
| 170 | 164 | WRITE8_HANDLER( tenkai_blit_palette23_w ) |
| 171 | 165 | { |
| 172 | | dynax_blit_palettes = (dynax_blit_palettes & 0x00ff) | ((data&0x0f)<<12) | ((data&0xf0)<<4); |
| 173 | | LOG(("P23=%02X ",data)); |
| 166 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 167 | state->blit_palettes = (state->blit_palettes & 0x00ff) | ((data & 0x0f) << 12) | ((data & 0xf0) << 4); |
| 168 | LOG(("P23=%02X ", data)); |
| 174 | 169 | } |
| 170 | |
| 171 | |
| 175 | 172 | /* Layer 6&7 Palettes (Low Bits) */ |
| 176 | 173 | WRITE8_HANDLER( dynax_blit_palette67_w ) |
| 177 | 174 | { |
| 178 | | if (layer_layout == LAYOUT_HNORIDUR) |
| 179 | | dynax_blit2_palettes = (dynax_blit2_palettes & 0xff00) | ((data&0x0f)<<4) | ((data&0xf0)>>4); |
| 175 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 176 | |
| 177 | if (state->layer_layout == LAYOUT_HNORIDUR) |
| 178 | state->blit2_palettes = (state->blit2_palettes & 0xff00) | ((data & 0x0f) << 4) | ((data & 0xf0) >> 4); |
| 180 | 179 | else |
| 181 | | dynax_blit2_palettes = (dynax_blit2_palettes & 0x00ff) | (data<<8); |
| 182 | | LOG(("P67=%02X ",data)); |
| 180 | state->blit2_palettes = (state->blit2_palettes & 0x00ff) | (data << 8); |
| 181 | LOG(("P67=%02X ", data)); |
| 183 | 182 | } |
| 184 | 183 | |
| 185 | 184 | |
| 186 | | |
| 187 | 185 | /* Layers Palettes (High Bits) */ |
| 188 | 186 | WRITE8_HANDLER( dynax_blit_palbank_w ) |
| 189 | 187 | { |
| 190 | | dynax_blit_palbank = data; |
| 191 | | LOG(("PB=%02X ",data)); |
| 188 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 189 | state->blit_palbank = data; |
| 190 | LOG(("PB=%02X ", data)); |
| 192 | 191 | } |
| 192 | |
| 193 | 193 | WRITE8_HANDLER( dynax_blit2_palbank_w ) |
| 194 | 194 | { |
| 195 | | dynax_blit2_palbank = data; |
| 196 | | LOG(("PB'=%02X ",data)); |
| 195 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 196 | state->blit2_palbank = data; |
| 197 | LOG(("PB'=%02X ", data)); |
| 197 | 198 | } |
| 198 | 199 | |
| 200 | |
| 199 | 201 | /* Which half of the layers to write two (interleaved games only) */ |
| 200 | 202 | WRITE8_HANDLER( hanamai_layer_half_w ) |
| 201 | 203 | { |
| 202 | | hanamai_layer_half = (~data) & 1; |
| 203 | | LOG(("H=%02X ",data)); |
| 204 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 205 | state->hanamai_layer_half = (~data) & 1; |
| 206 | LOG(("H=%02X ", data)); |
| 204 | 207 | } |
| 205 | 208 | |
| 209 | |
| 206 | 210 | /* Write to both halves of the layers (interleaved games only) */ |
| 207 | 211 | WRITE8_HANDLER( hnoridur_layer_half2_w ) |
| 208 | 212 | { |
| 209 | | hnoridur_layer_half2 = (~data) & 1; |
| 210 | | LOG(("H2=%02X ",data)); |
| 213 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 214 | state->hnoridur_layer_half2 = (~data) & 1; |
| 215 | LOG(("H2=%02X ", data)); |
| 211 | 216 | } |
| 212 | 217 | |
| 213 | 218 | WRITE8_HANDLER( mjdialq2_blit_dest_w ) |
| 214 | 219 | { |
| 220 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 215 | 221 | int mask = (2 >> offset); /* 1 or 2 */ |
| 216 | 222 | |
| 217 | | dynax_blit_dest &= ~mask; |
| 218 | | if (~data & 1) dynax_blit_dest |= mask; |
| 223 | state->blit_dest &= ~mask; |
| 224 | |
| 225 | if (~data & 1) |
| 226 | state->blit_dest |= mask; |
| 219 | 227 | } |
| 220 | 228 | |
| 229 | |
| 221 | 230 | /* Layers Enable */ |
| 222 | 231 | WRITE8_HANDLER( dynax_layer_enable_w ) |
| 223 | 232 | { |
| 224 | | dynax_layer_enable = data; |
| 225 | | LOG(("E=%02X ",data)); |
| 233 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 234 | state->layer_enable = data; |
| 235 | LOG(("E=%02X ", data)); |
| 226 | 236 | } |
| 227 | 237 | |
| 228 | 238 | WRITE8_HANDLER( jantouki_layer_enable_w ) |
| 229 | 239 | { |
| 230 | | int mask = 1 << (7-offset); |
| 231 | | dynax_layer_enable = (dynax_layer_enable & ~mask) | ((data & 1) ? mask : 0); |
| 232 | | dynax_layer_enable |= 1; |
| 240 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 241 | int mask = 1 << (7 - offset); |
| 242 | state->layer_enable = (state->layer_enable & ~mask) | ((data & 1) ? mask : 0); |
| 243 | state->layer_enable |= 1; |
| 233 | 244 | } |
| 234 | 245 | |
| 235 | 246 | WRITE8_HANDLER( mjdialq2_layer_enable_w ) |
| 236 | 247 | { |
| 248 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 237 | 249 | int mask = (2 >> offset); /* 1 or 2 */ |
| 238 | 250 | |
| 239 | | dynax_layer_enable &= ~mask; |
| 240 | | if (~data & 1) dynax_layer_enable |= mask; |
| 251 | state->layer_enable &= ~mask; |
| 252 | if (~data & 1) |
| 253 | state->layer_enable |= mask; |
| 241 | 254 | } |
| 242 | 255 | |
| 243 | 256 | |
| 244 | 257 | WRITE8_HANDLER( dynax_flipscreen_w ) |
| 245 | 258 | { |
| 246 | | flipscreen = data & 1; |
| 259 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 260 | state->flipscreen = data & 1; |
| 247 | 261 | if (data & ~1) |
| 248 | 262 | logerror("CPU#0 PC %06X: Warning, flip screen <- %02X\n", cpu_get_pc(space->cpu), data); |
| 249 | | LOG(("F=%02X ",data)); |
| 263 | LOG(("F=%02X ", data)); |
| 250 | 264 | } |
| 251 | 265 | |
| 252 | 266 | |
| r7640 | r7641 | |
| 254 | 268 | |
| 255 | 269 | WRITE8_HANDLER( dynax_blit_romregion_w ) |
| 256 | 270 | { |
| 271 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 257 | 272 | if (data < ARRAY_LENGTH(gfxregions)) |
| 258 | | dynax_blit_romregion = gfxregions[data]; |
| 259 | | LOG(("GFX%X ",data+1)); |
| 273 | state->blit_romregion = data; |
| 274 | LOG(("GFX%X ", data + 1)); |
| 260 | 275 | } |
| 261 | 276 | |
| 262 | 277 | WRITE8_HANDLER( dynax_blit2_romregion_w ) |
| 263 | 278 | { |
| 264 | | if (data+1 < ARRAY_LENGTH(gfxregions)) |
| 265 | | dynax_blit2_romregion = gfxregions[data+1]; |
| 266 | | LOG(("GFX%X' ",data+2)); |
| 279 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 280 | if (data + 1 < ARRAY_LENGTH(gfxregions)) |
| 281 | state->blit2_romregion = data + 1; |
| 282 | LOG(("GFX%X' ", data + 2)); |
| 267 | 283 | } |
| 268 | 284 | |
| 269 | 285 | /*************************************************************************** |
| r7640 | r7641 | |
| 294 | 310 | |
| 295 | 311 | |
| 296 | 312 | /* Plot a pixel (in the pixmaps specified by dynax_blit_dest) */ |
| 297 | | INLINE void blitter_plot_pixel(int layer,int mask, int x, int y, int pen, int wrap, int flags) |
| 313 | INLINE void blitter_plot_pixel( running_machine *machine, int layer, int mask, int x, int y, int pen, int wrap, int flags ) |
| 298 | 314 | { |
| 315 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 299 | 316 | int addr; |
| 300 | 317 | |
| 301 | | if ( (y > 0xff) && (!(wrap & 2)) ) return; // fixes mjdialq2 & mjangels title screens |
| 302 | | if ( (x > 0xff) && (!(wrap & 1)) ) return; |
| 318 | if ((y > 0xff) && (!(wrap & 2))) return; // fixes mjdialq2 & mjangels title screens |
| 319 | if ((x > 0xff) && (!(wrap & 1))) return; |
| 303 | 320 | |
| 304 | 321 | x &= 0xff; // confirmed by some mjdialq2 gfx and especially by mjfriday, which |
| 305 | 322 | // uses the front layer to mask out the right side of the screen as |
| r7640 | r7641 | |
| 309 | 326 | // mjdialq2 title screen so there's something we are missing. <fixed, see above> |
| 310 | 327 | |
| 311 | 328 | /* "Flip Screen" just means complement the coordinates to 255 */ |
| 312 | | if (flipscreen) { x ^= 0xff; y ^= 0xff; } |
| 329 | if (state->flipscreen) { x ^= 0xff; y ^= 0xff; } |
| 313 | 330 | |
| 314 | 331 | /* Rotate: rotation = SWAPXY + FLIPY */ |
| 315 | | if (flags & 0x08) { int t = x; x = y; y = t; } |
| 332 | if (flags & 0x08) { int t = x; x = y; y = t; } |
| 316 | 333 | |
| 317 | | addr = x + (y<<8); |
| 334 | addr = x + (y << 8); |
| 318 | 335 | |
| 319 | | switch (layer_layout) |
| 336 | switch (state->layer_layout) |
| 320 | 337 | { |
| 321 | 338 | case LAYOUT_HANAMAI: |
| 322 | | if (mask & 0x01) dynax_pixmap[layer+0][hanamai_layer_half^flipscreen][addr] = pen; |
| 323 | | if (mask & 0x02) dynax_pixmap[layer+1][hanamai_layer_half^flipscreen][addr] = pen; |
| 324 | | if (mask & 0x04) dynax_pixmap[layer+2][hanamai_layer_half^flipscreen][addr] = pen; |
| 325 | | if (mask & 0x08) dynax_pixmap[layer+3][hanamai_layer_half^flipscreen][addr] = pen; |
| 339 | if (BIT(mask, 0)) state->pixmap[layer + 0][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 340 | if (BIT(mask, 1)) state->pixmap[layer + 1][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 341 | if (BIT(mask, 2)) state->pixmap[layer + 2][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 342 | if (BIT(mask, 3)) state->pixmap[layer + 3][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 326 | 343 | break; |
| 327 | 344 | |
| 328 | 345 | case LAYOUT_HNORIDUR: |
| 329 | | if (mask & 0x01) dynax_pixmap[layer+0][hanamai_layer_half^flipscreen][addr] = pen; |
| 330 | | if (mask & 0x02) dynax_pixmap[layer+1][hanamai_layer_half^flipscreen][addr] = pen; |
| 331 | | if (mask & 0x04) dynax_pixmap[layer+2][hanamai_layer_half^flipscreen][addr] = pen; |
| 332 | | if (mask & 0x08) dynax_pixmap[layer+3][hanamai_layer_half^flipscreen][addr] = pen; |
| 333 | | if (!hnoridur_layer_half2) break; |
| 334 | | if (mask & 0x01) dynax_pixmap[layer+0][1^hanamai_layer_half^flipscreen][addr] = pen; |
| 335 | | if (mask & 0x02) dynax_pixmap[layer+1][1^hanamai_layer_half^flipscreen][addr] = pen; |
| 336 | | if (mask & 0x04) dynax_pixmap[layer+2][1^hanamai_layer_half^flipscreen][addr] = pen; |
| 337 | | if (mask & 0x08) dynax_pixmap[layer+3][1^hanamai_layer_half^flipscreen][addr] = pen; |
| 346 | if (BIT(mask, 0)) state->pixmap[layer + 0][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 347 | if (BIT(mask, 1)) state->pixmap[layer + 1][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 348 | if (BIT(mask, 2)) state->pixmap[layer + 2][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 349 | if (BIT(mask, 3)) state->pixmap[layer + 3][state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 350 | if (!state->hnoridur_layer_half2) |
| 351 | break; |
| 352 | if (BIT(mask, 0)) state->pixmap[layer + 0][1 ^ state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 353 | if (BIT(mask, 1)) state->pixmap[layer + 1][1 ^ state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 354 | if (BIT(mask, 2)) state->pixmap[layer + 2][1 ^ state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 355 | if (BIT(mask, 3)) state->pixmap[layer + 3][1 ^ state->hanamai_layer_half ^ state->flipscreen][addr] = pen; |
| 338 | 356 | break; |
| 339 | 357 | |
| 340 | 358 | case LAYOUT_JANTOUKI: |
| 341 | | if (mask & 0x80) dynax_pixmap[layer+3][1^flipscreen][addr] = pen; |
| 342 | | if (mask & 0x40) dynax_pixmap[layer+3][0^flipscreen][addr] = pen; |
| 359 | if (BIT(mask, 7)) state->pixmap[layer + 3][1 ^ state->flipscreen][addr] = pen; |
| 360 | if (BIT(mask, 6)) state->pixmap[layer + 3][0 ^ state->flipscreen][addr] = pen; |
| 343 | 361 | case LAYOUT_DRGPUNCH: |
| 344 | | if (mask & 0x20) dynax_pixmap[layer+2][1^flipscreen][addr] = pen; |
| 345 | | if (mask & 0x10) dynax_pixmap[layer+2][0^flipscreen][addr] = pen; |
| 346 | | if (mask & 0x08) dynax_pixmap[layer+1][1^flipscreen][addr] = pen; |
| 347 | | if (mask & 0x04) dynax_pixmap[layer+1][0^flipscreen][addr] = pen; |
| 348 | | if (mask & 0x02) dynax_pixmap[layer+0][1^flipscreen][addr] = pen; |
| 349 | | if (mask & 0x01) dynax_pixmap[layer+0][0^flipscreen][addr] = pen; |
| 362 | if (BIT(mask, 5)) state->pixmap[layer + 2][1 ^ state->flipscreen][addr] = pen; |
| 363 | if (BIT(mask, 4)) state->pixmap[layer + 2][0 ^ state->flipscreen][addr] = pen; |
| 364 | if (BIT(mask, 3)) state->pixmap[layer + 1][1 ^ state->flipscreen][addr] = pen; |
| 365 | if (BIT(mask, 2)) state->pixmap[layer + 1][0 ^ state->flipscreen][addr] = pen; |
| 366 | if (BIT(mask, 1)) state->pixmap[layer + 0][1 ^ state->flipscreen][addr] = pen; |
| 367 | if (BIT(mask, 0)) state->pixmap[layer + 0][0 ^ state->flipscreen][addr] = pen; |
| 350 | 368 | break; |
| 351 | 369 | |
| 352 | 370 | case LAYOUT_MJDIALQ2: |
| 353 | | if (mask & 0x01) dynax_pixmap[layer+0][0][addr] = pen; |
| 354 | | if (mask & 0x02) dynax_pixmap[layer+1][0][addr] = pen; |
| 371 | if (BIT(mask, 0)) state->pixmap[layer + 0][0][addr] = pen; |
| 372 | if (BIT(mask, 1)) state->pixmap[layer + 1][0][addr] = pen; |
| 355 | 373 | break; |
| 356 | 374 | } |
| 357 | 375 | } |
| r7640 | r7641 | |
| 359 | 377 | |
| 360 | 378 | static int blitter_drawgfx( running_machine *machine, int layer, int mask, const char *gfx, int src, int pen, int x, int y, int wrap, int flags ) |
| 361 | 379 | { |
| 380 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 362 | 381 | UINT8 cmd; |
| 382 | UINT8 *ROM = memory_region(machine, gfx); |
| 383 | size_t ROM_size = memory_region_length(machine, gfx); |
| 363 | 384 | |
| 364 | | UINT8 *ROM = memory_region( machine, gfx ); |
| 365 | | size_t ROM_size = memory_region_length( machine, gfx ); |
| 366 | | |
| 367 | 385 | int sx; |
| 368 | 386 | |
| 369 | | if (layer_layout == LAYOUT_HNORIDUR) // e.g. yarunara |
| 370 | | pen = ((pen >> 4) & 0xf) | ( (mask & 0x10) ? ((pen & 0x08) << 1) : 0 ); |
| 387 | if (state->layer_layout == LAYOUT_HNORIDUR) // e.g. yarunara |
| 388 | pen = ((pen >> 4) & 0xf) | ((mask & 0x10) ? ((pen & 0x08) << 1) : 0); |
| 371 | 389 | else |
| 372 | 390 | pen = (pen >> 4) & 0xf; |
| 373 | 391 | |
| 374 | | if (flags & 0xf4) popmessage("flags %02x",flags); |
| 375 | | if ( flags & 1 ) |
| 392 | if (flags & 0xf4) |
| 393 | popmessage("flags %02x", flags); |
| 394 | |
| 395 | if (flags & 1) |
| 376 | 396 | { |
| 377 | | int start,len; |
| 397 | int start, len; |
| 378 | 398 | |
| 379 | 399 | /* Clear the buffer(s) starting from the given scanline and exit */ |
| 380 | 400 | |
| 381 | | int addr = x + (y<<8); |
| 401 | int addr = x + (y << 8); |
| 382 | 402 | |
| 383 | | if (flipscreen) |
| 403 | if (state->flipscreen) |
| 384 | 404 | start = 0; |
| 385 | 405 | else |
| 386 | 406 | start = addr; |
| 387 | 407 | |
| 388 | 408 | len = 0x10000 - addr; |
| 389 | 409 | |
| 390 | | switch (layer_layout) |
| 410 | switch (state->layer_layout) |
| 391 | 411 | { |
| 392 | 412 | case LAYOUT_HANAMAI: |
| 393 | | if (mask & 0x01) memset(&dynax_pixmap[layer+0][0][start],pen,len); |
| 394 | | if (mask & 0x01) memset(&dynax_pixmap[layer+0][1][start],pen,len); |
| 395 | | if (mask & 0x02) memset(&dynax_pixmap[layer+1][0][start],pen,len); |
| 396 | | if (mask & 0x02) memset(&dynax_pixmap[layer+1][1][start],pen,len); |
| 397 | | if (mask & 0x04) memset(&dynax_pixmap[layer+2][0][start],pen,len); |
| 398 | | if (mask & 0x04) memset(&dynax_pixmap[layer+2][1][start],pen,len); |
| 399 | | if (mask & 0x08) memset(&dynax_pixmap[layer+3][0][start],pen,len); |
| 400 | | if (mask & 0x08) memset(&dynax_pixmap[layer+3][1][start],pen,len); |
| 413 | if (BIT(mask, 0)) memset(&state->pixmap[layer + 0][0][start], pen, len); |
| 414 | if (BIT(mask, 0)) memset(&state->pixmap[layer + 0][1][start], pen, len); |
| 415 | if (BIT(mask, 1)) memset(&state->pixmap[layer + 1][0][start], pen, len); |
| 416 | if (BIT(mask, 1)) memset(&state->pixmap[layer + 1][1][start], pen, len); |
| 417 | if (BIT(mask, 2)) memset(&state->pixmap[layer + 2][0][start], pen, len); |
| 418 | if (BIT(mask, 2)) memset(&state->pixmap[layer + 2][1][start], pen, len); |
| 419 | if (BIT(mask, 3)) memset(&state->pixmap[layer + 3][0][start], pen, len); |
| 420 | if (BIT(mask, 3)) memset(&state->pixmap[layer + 3][1][start], pen, len); |
| 401 | 421 | break; |
| 402 | 422 | |
| 403 | 423 | case LAYOUT_HNORIDUR: |
| 404 | | if (mask & 0x01) memset(&dynax_pixmap[layer+0][hanamai_layer_half][start],pen,len); |
| 405 | | if (mask & 0x02) memset(&dynax_pixmap[layer+1][hanamai_layer_half][start],pen,len); |
| 406 | | if (mask & 0x04) memset(&dynax_pixmap[layer+2][hanamai_layer_half][start],pen,len); |
| 407 | | if (mask & 0x08) memset(&dynax_pixmap[layer+3][hanamai_layer_half][start],pen,len); |
| 408 | | if (!hnoridur_layer_half2) break; |
| 409 | | if (mask & 0x01) memset(&dynax_pixmap[layer+0][1-hanamai_layer_half][start],pen,len); |
| 410 | | if (mask & 0x02) memset(&dynax_pixmap[layer+1][1-hanamai_layer_half][start],pen,len); |
| 411 | | if (mask & 0x04) memset(&dynax_pixmap[layer+2][1-hanamai_layer_half][start],pen,len); |
| 412 | | if (mask & 0x08) memset(&dynax_pixmap[layer+3][1-hanamai_layer_half][start],pen,len); |
| 424 | if (BIT(mask, 0)) memset(&state->pixmap[layer + 0][state->hanamai_layer_half][start], pen, len); |
| 425 | if (BIT(mask, 1)) memset(&state->pixmap[layer + 1][state->hanamai_layer_half][start], pen, len); |
| 426 | if (BIT(mask, 2)) memset(&state->pixmap[layer + 2][state->hanamai_layer_half][start], pen, len); |
| 427 | if (BIT(mask, 3)) memset(&state->pixmap[layer + 3][state->hanamai_layer_half][start], pen, len); |
| 428 | if (!state->hnoridur_layer_half2) |
| 429 | break; |
| 430 | if (BIT(mask, 0)) memset(&state->pixmap[layer + 0][1 - state->hanamai_layer_half][start], pen, len); |
| 431 | if (BIT(mask, 1)) memset(&state->pixmap[layer + 1][1 - state->hanamai_layer_half][start], pen, len); |
| 432 | if (BIT(mask, 2)) memset(&state->pixmap[layer + 2][1 - state->hanamai_layer_half][start], pen, len); |
| 433 | if (BIT(mask, 3)) memset(&state->pixmap[layer + 3][1 - state->hanamai_layer_half][start], pen, len); |
| 413 | 434 | break; |
| 414 | 435 | |
| 415 | 436 | case LAYOUT_JANTOUKI: |
| 416 | | if (mask & 0x80) memset(&dynax_pixmap[layer+3][1][start],pen,len); |
| 417 | | if (mask & 0x40) memset(&dynax_pixmap[layer+3][0][start],pen,len); |
| 437 | if (BIT(mask, 7)) memset(&state->pixmap[layer + 3][1][start], pen, len); |
| 438 | if (BIT(mask, 6)) memset(&state->pixmap[layer + 3][0][start], pen, len); |
| 418 | 439 | case LAYOUT_DRGPUNCH: |
| 419 | | if (mask & 0x20) memset(&dynax_pixmap[layer+2][1][start],pen,len); |
| 420 | | if (mask & 0x10) memset(&dynax_pixmap[layer+2][0][start],pen,len); |
| 421 | | if (mask & 0x08) memset(&dynax_pixmap[layer+1][1][start],pen,len); |
| 422 | | if (mask & 0x04) memset(&dynax_pixmap[layer+1][0][start],pen,len); |
| 423 | | if (mask & 0x02) memset(&dynax_pixmap[layer+0][1][start],pen,len); |
| 424 | | if (mask & 0x01) memset(&dynax_pixmap[layer+0][0][start],pen,len); |
| 440 | if (BIT(mask, 5)) memset(&state->pixmap[layer + 2][1][start], pen, len); |
| 441 | if (BIT(mask, 4)) memset(&state->pixmap[layer + 2][0][start], pen, len); |
| 442 | if (BIT(mask, 3)) memset(&state->pixmap[layer + 1][1][start], pen, len); |
| 443 | if (BIT(mask, 2)) memset(&state->pixmap[layer + 1][0][start], pen, len); |
| 444 | if (BIT(mask, 1)) memset(&state->pixmap[layer + 0][1][start], pen, len); |
| 445 | if (BIT(mask, 0)) memset(&state->pixmap[layer + 0][0][start], pen, len); |
| 425 | 446 | break; |
| 426 | 447 | |
| 427 | 448 | case LAYOUT_MJDIALQ2: |
| 428 | | if (mask & 0x01) memset(&dynax_pixmap[layer+0][0][start],pen,len); |
| 429 | | if (mask & 0x02) memset(&dynax_pixmap[layer+1][0][start],pen,len); |
| 449 | if (BIT(mask, 0)) memset(&state->pixmap[layer + 0][0][start], pen, len); |
| 450 | if (BIT(mask, 1)) memset(&state->pixmap[layer + 1][0][start], pen, len); |
| 430 | 451 | break; |
| 431 | 452 | } |
| 432 | 453 | |
| r7640 | r7641 | |
| 441 | 462 | { |
| 442 | 463 | if (src >= ROM_size) |
| 443 | 464 | { |
| 444 | | popmessage("GFXROM OVER %08x",src); |
| 465 | popmessage("GFXROM OVER %08x",src); |
| 445 | 466 | return src; |
| 446 | 467 | } |
| 468 | |
| 447 | 469 | cmd = ROM[src++]; |
| 448 | 470 | src &= 0xfffff; |
| 449 | 471 | if (!(flags & 0x02)) // Ignore the pens specified in ROM, draw everything with the pen supplied as parameter |
| 450 | | pen = (pen & 0xf0) | ((cmd & 0xf0)>>4); |
| 472 | pen = (pen & 0xf0) | ((cmd & 0xf0) >> 4); |
| 451 | 473 | cmd = (cmd & 0x0f); |
| 452 | 474 | |
| 453 | 475 | switch (cmd) |
| r7640 | r7641 | |
| 462 | 484 | break; |
| 463 | 485 | |
| 464 | 486 | case 0xe: // unused ? was "change dest mask" in the "rev1" blitter |
| 465 | | popmessage("Blitter unknown command %06X: %02X\n", src-1, cmd); |
| 487 | popmessage("Blitter unknown command %06X: %02X\n", src - 1, cmd); |
| 466 | 488 | |
| 467 | 489 | case 0xd: // Skip X pixels |
| 468 | 490 | if (src >= ROM_size) |
| 469 | 491 | { |
| 470 | | popmessage("GFXROM OVER %08x",src); |
| 492 | popmessage("GFXROM OVER %08x",src); |
| 471 | 493 | return src; |
| 472 | 494 | } |
| 473 | 495 | x = sx + ROM[src++]; |
| r7640 | r7641 | |
| 477 | 499 | case 0xc: // Draw N pixels |
| 478 | 500 | if (src >= ROM_size) |
| 479 | 501 | { |
| 480 | | popmessage("GFXROM OVER %08x",src); |
| 502 | popmessage("GFXROM OVER %08x", src); |
| 481 | 503 | return src; |
| 482 | 504 | } |
| 483 | 505 | cmd = ROM[src++]; |
| r7640 | r7641 | |
| 496 | 518 | case 0x2: |
| 497 | 519 | case 0x1: // Draw N pixels |
| 498 | 520 | while (cmd--) |
| 499 | | blitter_plot_pixel(layer, mask, x++, y, pen, wrap, flags); |
| 521 | blitter_plot_pixel(machine, layer, mask, x++, y, pen, wrap, flags); |
| 500 | 522 | break; |
| 501 | 523 | |
| 502 | 524 | case 0x0: // Stop |
| r7640 | r7641 | |
| 507 | 529 | |
| 508 | 530 | |
| 509 | 531 | |
| 510 | | static void dynax_blitter_start(running_machine *machine, int flags) |
| 532 | static void dynax_blitter_start( running_machine *machine, int flags ) |
| 511 | 533 | { |
| 534 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 512 | 535 | int blit_newsrc; |
| 513 | 536 | |
| 514 | | LOG(("XY=%X,%X SRC=%X BLIT=%X\n",blit_x,blit_y,blit_src,flags)); |
| 537 | LOG(("XY=%X,%X SRC=%X BLIT=%X\n", state->blit_x, state->blit_y, state->blit_src, flags)); |
| 515 | 538 | |
| 516 | | blit_newsrc = |
| 517 | | blitter_drawgfx( |
| 539 | blit_newsrc = blitter_drawgfx( |
| 518 | 540 | machine, |
| 519 | 541 | 0, // layer |
| 520 | | dynax_blit_dest, // layer mask |
| 521 | | dynax_blit_romregion, // rom region |
| 522 | | blit_src, // rom address |
| 523 | | dynax_blit_pen, // pen |
| 524 | | blit_x, blit_y, // x,y |
| 525 | | dynax_blit_wrap_enable, // wrap around |
| 542 | state->blit_dest, // layer mask |
| 543 | gfxregions[state->blit_romregion], // rom region |
| 544 | state->blit_src, // rom address |
| 545 | state->blit_pen, // pen |
| 546 | state->blit_x, state->blit_y, // x,y |
| 547 | state->blit_wrap_enable, // wrap around |
| 526 | 548 | flags // flags |
| 527 | 549 | ); |
| 528 | 550 | |
| 529 | | blit_src = (blit_src & ~0x0fffff) | |
| 530 | | (blit_newsrc & 0x0fffff) ; |
| 551 | state->blit_src = (state->blit_src & ~0x0fffff) | (blit_newsrc & 0x0fffff); |
| 531 | 552 | |
| 532 | 553 | /* Generate an IRQ */ |
| 533 | | if (update_irq_func) |
| 554 | if (state->update_irq_func) |
| 534 | 555 | { |
| 535 | | dynax_blitter_irq = 1; |
| 536 | | update_irq_func(machine); |
| 556 | state->blitter_irq = 1; |
| 557 | state->update_irq_func(machine); |
| 537 | 558 | } |
| 538 | 559 | } |
| 539 | 560 | |
| 540 | | static void jantouki_blitter_start(running_machine *machine, int flags) |
| 561 | static void jantouki_blitter_start( running_machine *machine, int flags ) |
| 541 | 562 | { |
| 563 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 542 | 564 | int blit_newsrc; |
| 543 | 565 | |
| 544 | | LOG(("XY=%X,%X SRC=%X BLIT=%X\n",blit_x,blit_y,blit_src,flags)); |
| 566 | LOG(("XY=%X,%X SRC=%X BLIT=%X\n", state->blit_x, state->blit_y, state->blit_src, flags)); |
| 545 | 567 | |
| 546 | | blit_newsrc = |
| 547 | | blitter_drawgfx( |
| 568 | blit_newsrc = blitter_drawgfx( |
| 548 | 569 | machine, |
| 549 | 570 | 0, // layer |
| 550 | | dynax_blit_dest, // layer mask |
| 551 | | dynax_blit_romregion, // rom region |
| 552 | | blit_src, // rom address |
| 553 | | dynax_blit_pen, // pen |
| 554 | | blit_x, blit_y, // x,y |
| 555 | | dynax_blit_wrap_enable, // wrap around |
| 571 | state->blit_dest, // layer mask |
| 572 | gfxregions[state->blit_romregion], // rom region |
| 573 | state->blit_src, // rom address |
| 574 | state->blit_pen, // pen |
| 575 | state->blit_x, state->blit_y, // x,y |
| 576 | state->blit_wrap_enable, // wrap around |
| 556 | 577 | flags // flags |
| 557 | 578 | ); |
| 558 | 579 | |
| 559 | | blit_src = (blit_src & ~0x0fffff) | |
| 560 | | (blit_newsrc & 0x0fffff) ; |
| 580 | state->blit_src = (state->blit_src & ~0x0fffff) | (blit_newsrc & 0x0fffff); |
| 561 | 581 | |
| 562 | 582 | /* Generate an IRQ */ |
| 563 | | if (update_irq_func) |
| 583 | if (state->update_irq_func) |
| 564 | 584 | { |
| 565 | | dynax_blitter_irq = 1; |
| 566 | | update_irq_func(machine); |
| 585 | state->blitter_irq = 1; |
| 586 | state->update_irq_func(machine); |
| 567 | 587 | } |
| 568 | 588 | } |
| 569 | 589 | |
| 570 | | static void jantouki_blitter2_start(running_machine *machine, int flags) |
| 590 | static void jantouki_blitter2_start( running_machine *machine, int flags ) |
| 571 | 591 | { |
| 592 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 572 | 593 | int blit2_newsrc; |
| 573 | 594 | |
| 574 | | LOG(("XY'=%X,%X SRC'=%X BLIT'=%02X\n",blit2_x,blit2_y,blit2_src,flags)); |
| 595 | LOG(("XY'=%X,%X SRC'=%X BLIT'=%02X\n", state->blit2_x, state->blit2_y, state->blit2_src, flags)); |
| 575 | 596 | |
| 576 | | blit2_newsrc = |
| 577 | | blitter_drawgfx( |
| 597 | blit2_newsrc = blitter_drawgfx( |
| 578 | 598 | machine, |
| 579 | 599 | 4, // layer |
| 580 | | dynax_blit2_dest, // layer mask |
| 581 | | dynax_blit2_romregion, // rom region |
| 582 | | blit2_src, // rom address |
| 583 | | dynax_blit2_pen, // pen |
| 584 | | blit2_x, blit2_y, // x,y |
| 585 | | dynax_blit2_wrap_enable, // wrap around |
| 600 | state->blit2_dest, // layer mask |
| 601 | gfxregions[state->blit2_romregion], // rom region |
| 602 | state->blit2_src, // rom address |
| 603 | state->blit2_pen, // pen |
| 604 | state->blit2_x, state->blit2_y, // x,y |
| 605 | state->blit2_wrap_enable, // wrap around |
| 586 | 606 | flags // flags |
| 587 | 607 | ); |
| 588 | 608 | |
| 589 | | blit2_src = (blit2_src & ~0x0fffff) | |
| 590 | | (blit2_newsrc & 0x0fffff) ; |
| 609 | state->blit2_src = (state->blit2_src & ~0x0fffff) | (blit2_newsrc & 0x0fffff); |
| 591 | 610 | |
| 592 | 611 | /* Generate an IRQ */ |
| 593 | | if (update_irq_func) |
| 612 | if (state->update_irq_func) |
| 594 | 613 | { |
| 595 | | dynax_blitter2_irq = 1; |
| 596 | | update_irq_func(machine); |
| 614 | state->blitter2_irq = 1; |
| 615 | state->update_irq_func(machine); |
| 597 | 616 | } |
| 598 | 617 | } |
| 599 | 618 | |
| r7640 | r7641 | |
| 601 | 620 | |
| 602 | 621 | static WRITE8_HANDLER( dynax_blit_scroll_w ) |
| 603 | 622 | { |
| 604 | | switch( blit_src & 0xc00000 ) |
| 623 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 624 | |
| 625 | switch (state->blit_src & 0xc00000) |
| 605 | 626 | { |
| 606 | | case 0x000000: dynax_blit_scroll_x = data; |
| 607 | | LOG(("SX=%02X ",data)); |
| 627 | case 0x000000: state->blit_scroll_x = data; |
| 628 | LOG(("SX=%02X ", data)); |
| 608 | 629 | break; |
| 609 | | case 0x400000: dynax_blit_scroll_y = data; |
| 610 | | LOG(("SY=%02X ",data)); |
| 630 | case 0x400000: state->blit_scroll_y = data; |
| 631 | LOG(("SY=%02X ", data)); |
| 611 | 632 | break; |
| 612 | 633 | case 0x800000: |
| 613 | | case 0xc00000: dynax_blit_wrap_enable = data; |
| 614 | | LOG(("WE=%02X ",data)); |
| 634 | case 0xc00000: state->blit_wrap_enable = data; |
| 635 | LOG(("WE=%02X ", data)); |
| 615 | 636 | break; |
| 616 | 637 | } |
| 617 | 638 | } |
| r7640 | r7641 | |
| 619 | 640 | // inverted scroll values |
| 620 | 641 | static WRITE8_HANDLER( tenkai_blit_scroll_w ) |
| 621 | 642 | { |
| 622 | | switch( blit_src & 0xc00000 ) |
| 643 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 644 | |
| 645 | switch (state->blit_src & 0xc00000) |
| 623 | 646 | { |
| 624 | | case 0x000000: dynax_blit_scroll_x = ((data ^ 0xff) + 1) & 0xff; |
| 625 | | LOG(("SX=%02X ",data)); |
| 647 | case 0x000000: state->blit_scroll_x = ((data ^ 0xff) + 1) & 0xff; |
| 648 | LOG(("SX=%02X ", data)); |
| 626 | 649 | break; |
| 627 | | case 0x400000: dynax_blit_scroll_y = data ^ 0xff; |
| 628 | | LOG(("SY=%02X ",data)); |
| 650 | case 0x400000: state->blit_scroll_y = data ^ 0xff; |
| 651 | LOG(("SY=%02X ", data)); |
| 629 | 652 | break; |
| 630 | 653 | case 0x800000: |
| 631 | | case 0xc00000: dynax_blit_wrap_enable = data; |
| 632 | | LOG(("WE=%02X ",data)); |
| 654 | case 0xc00000: state->blit_wrap_enable = data; |
| 655 | LOG(("WE=%02X ", data)); |
| 633 | 656 | break; |
| 634 | 657 | } |
| 635 | 658 | } |
| 636 | 659 | |
| 637 | 660 | static WRITE8_HANDLER( dynax_blit2_scroll_w ) |
| 638 | 661 | { |
| 639 | | switch( blit2_src & 0xc00000 ) |
| 662 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 663 | |
| 664 | switch (state->blit2_src & 0xc00000) |
| 640 | 665 | { |
| 641 | | case 0x000000: dynax_blit2_scroll_x = data; |
| 642 | | LOG(("SX'=%02X ",data)); |
| 666 | case 0x000000: state->blit2_scroll_x = data; |
| 667 | LOG(("SX'=%02X ", data)); |
| 643 | 668 | break; |
| 644 | | case 0x400000: dynax_blit2_scroll_y = data; |
| 645 | | LOG(("SY'=%02X ",data)); |
| 669 | case 0x400000: state->blit2_scroll_y = data; |
| 670 | LOG(("SY'=%02X ", data)); |
| 646 | 671 | break; |
| 647 | 672 | case 0x800000: |
| 648 | | case 0xc00000: dynax_blit2_wrap_enable = data; |
| 649 | | LOG(("WE'=%02X ",data)); |
| 673 | case 0xc00000: state->blit2_wrap_enable = data; |
| 674 | LOG(("WE'=%02X ", data)); |
| 650 | 675 | break; |
| 651 | 676 | } |
| 652 | 677 | } |
| 653 | 678 | |
| 654 | | |
| 655 | | |
| 656 | 679 | WRITE8_HANDLER( dynax_blitter_rev2_w ) |
| 657 | 680 | { |
| 681 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 682 | |
| 658 | 683 | switch (offset) |
| 659 | 684 | { |
| 660 | | case 0: dynax_blitter_start(space->machine,data); break; |
| 661 | | case 1: blit_x = data; break; |
| 662 | | case 2: blit_y = data; break; |
| 663 | | case 3: blit_src = (blit_src & 0xffff00) | (data << 0); break; |
| 664 | | case 4: blit_src = (blit_src & 0xff00ff) | (data << 8); break; |
| 665 | | case 5: blit_src = (blit_src & 0x00ffff) | (data <<16); break; |
| 666 | | case 6: dynax_blit_scroll_w(space,0,data); break; |
| 685 | case 0: dynax_blitter_start(space->machine, data); break; |
| 686 | case 1: state->blit_x = data; break; |
| 687 | case 2: state->blit_y = data; break; |
| 688 | case 3: state->blit_src = (state->blit_src & 0xffff00) | (data << 0); break; |
| 689 | case 4: state->blit_src = (state->blit_src & 0xff00ff) | (data << 8); break; |
| 690 | case 5: state->blit_src = (state->blit_src & 0x00ffff) | (data << 16); break; |
| 691 | case 6: dynax_blit_scroll_w(space, 0, data); break; |
| 667 | 692 | } |
| 668 | 693 | } |
| 669 | 694 | |
| 670 | 695 | // different scroll_w |
| 671 | 696 | WRITE8_HANDLER( tenkai_blitter_rev2_w ) |
| 672 | 697 | { |
| 698 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 699 | |
| 673 | 700 | switch (offset) |
| 674 | 701 | { |
| 675 | | case 0: dynax_blitter_start(space->machine,data); break; |
| 676 | | case 1: blit_x = data; break; |
| 677 | | case 2: blit_y = data; break; |
| 678 | | case 3: blit_src = (blit_src & 0xffff00) | (data << 0); break; |
| 679 | | case 4: blit_src = (blit_src & 0xff00ff) | (data << 8); break; |
| 680 | | case 5: blit_src = (blit_src & 0x00ffff) | (data <<16); break; |
| 681 | | case 6: tenkai_blit_scroll_w(space,0,data); break; |
| 702 | case 0: dynax_blitter_start(space->machine, data); break; |
| 703 | case 1: state->blit_x = data; break; |
| 704 | case 2: state->blit_y = data; break; |
| 705 | case 3: state->blit_src = (state->blit_src & 0xffff00) | (data << 0); break; |
| 706 | case 4: state->blit_src = (state->blit_src & 0xff00ff) | (data << 8); break; |
| 707 | case 5: state->blit_src = (state->blit_src & 0x00ffff) | (data << 16); break; |
| 708 | case 6: tenkai_blit_scroll_w(space, 0, data); break; |
| 682 | 709 | } |
| 683 | 710 | } |
| 684 | 711 | |
| 685 | 712 | |
| 686 | 713 | WRITE8_HANDLER( jantouki_blitter_rev2_w ) |
| 687 | 714 | { |
| 715 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 716 | |
| 688 | 717 | switch (offset) |
| 689 | 718 | { |
| 690 | | case 0: jantouki_blitter_start(space->machine,data); break; |
| 691 | | case 1: blit_x = data; break; |
| 692 | | case 2: blit_y = data; break; |
| 693 | | case 3: blit_src = (blit_src & 0xffff00) | (data << 0); break; |
| 694 | | case 4: blit_src = (blit_src & 0xff00ff) | (data << 8); break; |
| 695 | | case 5: blit_src = (blit_src & 0x00ffff) | (data <<16); break; |
| 696 | | case 6: dynax_blit_scroll_w(space,0,data); break; |
| 719 | case 0: jantouki_blitter_start(space->machine, data); break; |
| 720 | case 1: state->blit_x = data; break; |
| 721 | case 2: state->blit_y = data; break; |
| 722 | case 3: state->blit_src = (state->blit_src & 0xffff00) | (data << 0); break; |
| 723 | case 4: state->blit_src = (state->blit_src & 0xff00ff) | (data << 8); break; |
| 724 | case 5: state->blit_src = (state->blit_src & 0x00ffff) | (data << 16); break; |
| 725 | case 6: dynax_blit_scroll_w(space, 0, data); break; |
| 697 | 726 | } |
| 698 | 727 | } |
| 699 | 728 | |
| 700 | 729 | WRITE8_HANDLER( jantouki_blitter2_rev2_w ) |
| 701 | 730 | { |
| 731 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 732 | |
| 702 | 733 | switch (offset) |
| 703 | 734 | { |
| 704 | 735 | case 0: jantouki_blitter2_start(space->machine,data); break; |
| 705 | | case 1: blit2_x = data; break; |
| 706 | | case 2: blit2_y = data; break; |
| 707 | | case 3: blit2_src = (blit2_src & 0xffff00) | (data << 0); break; |
| 708 | | case 4: blit2_src = (blit2_src & 0xff00ff) | (data << 8); break; |
| 709 | | case 5: blit2_src = (blit2_src & 0x00ffff) | (data <<16); break; |
| 710 | | case 6: dynax_blit2_scroll_w(space,0,data); break; |
| 736 | case 1: state->blit2_x = data; break; |
| 737 | case 2: state->blit2_y = data; break; |
| 738 | case 3: state->blit2_src = (state->blit2_src & 0xffff00) | (data << 0); break; |
| 739 | case 4: state->blit2_src = (state->blit2_src & 0xff00ff) | (data << 8); break; |
| 740 | case 5: state->blit2_src = (state->blit2_src & 0x00ffff) | (data << 16); break; |
| 741 | case 6: dynax_blit2_scroll_w(space, 0, data); break; |
| 711 | 742 | } |
| 712 | 743 | } |
| 713 | 744 | |
| r7640 | r7641 | |
| 720 | 751 | |
| 721 | 752 | ***************************************************************************/ |
| 722 | 753 | |
| 723 | | static const int *priority_table; |
| 724 | 754 | // 0 1 2 3 4 5 6 7 |
| 725 | 755 | static const int priority_hnoridur[8] = { 0x0231, 0x2103, 0x3102, 0x2031, 0x3021, 0x1302, 0x2310, 0x1023 }; |
| 726 | 756 | static const int priority_mcnpshnt[8] = { 0x3210, 0x2103, 0x3102, 0x2031, 0x3021, 0x1302, 0x2310, 0x1023 }; |
| 727 | 757 | static const int priority_mjelctrn[8] = { 0x0231, 0x0321, 0x2031, 0x2301, 0x3021, 0x3201 ,0x0000, 0x0000 }; // this game doesn't use (hasn't?) layer 1 |
| 728 | 758 | |
| 729 | | static void Video_Reset(void) |
| 759 | |
| 760 | static void dynax_common_reset( running_machine *machine ) |
| 730 | 761 | { |
| 731 | | dynax_blit_romregion = "gfx1"; dynax_blit2_romregion = "gfx1"; |
| 732 | | dynax_blit_dest = -1; dynax_blit2_dest = -1; |
| 733 | | dynax_blit_pen = 0x7; dynax_blit2_pen = 0x7; |
| 734 | | dynax_blit_palbank = 0; dynax_blit2_palbank = 0; |
| 735 | | dynax_blit_palettes = 0; dynax_blit2_palettes = 0; |
| 736 | | dynax_layer_enable = -1; |
| 737 | | dynax_blit_backpen = 0; |
| 762 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 738 | 763 | |
| 739 | | extra_scroll_x = 0; |
| 740 | | extra_scroll_y = 0; |
| 764 | state->blit_romregion = 0; |
| 765 | state->blit2_romregion = 0; |
| 766 | state->blit_dest = -1; |
| 767 | state->blit2_dest = -1; |
| 768 | state->blit_pen = 0x7; |
| 769 | state->blit2_pen = 0x7; |
| 770 | state->blit_palbank = 0; |
| 771 | state->blit2_palbank = 0; |
| 772 | state->blit_palettes = 0; |
| 773 | state->blit2_palettes = 0; |
| 774 | state->layer_enable = -1; |
| 775 | state->blit_backpen = 0; |
| 741 | 776 | |
| 742 | | hnoridur_layer_half2 = 0; |
| 777 | state->extra_scroll_x = 0; |
| 778 | state->extra_scroll_y = 0; |
| 743 | 779 | |
| 744 | | update_irq_func = sprtmtch_update_irq; |
| 780 | state->hnoridur_layer_half2 = 0; |
| 781 | |
| 782 | state->update_irq_func = sprtmtch_update_irq; |
| 783 | |
| 784 | state->blit_scroll_x = 0; |
| 785 | state->blit2_scroll_x = 0; |
| 786 | state->blit_scroll_y = 0; |
| 787 | state->blit2_scroll_y = 0; |
| 788 | state->blit_wrap_enable = 0; |
| 789 | state->blit2_wrap_enable = 0; |
| 790 | state->blit_x = 0; |
| 791 | state->blit_y = 0; |
| 792 | state->blit2_x = 0; |
| 793 | state->blit2_y = 0; |
| 794 | state->blit_src = 0; |
| 795 | state->blit2_src = 0; |
| 796 | state->hanamai_layer_half = 0; |
| 797 | state->flipscreen = 0; |
| 798 | state->hanamai_priority = 0; |
| 799 | |
| 800 | state_save_register_global(machine, state->blit_romregion); |
| 801 | state_save_register_global(machine, state->blit2_romregion); |
| 802 | state_save_register_global(machine, state->blit_dest); |
| 803 | state_save_register_global(machine, state->blit2_dest); |
| 804 | state_save_register_global(machine, state->blit_pen); |
| 805 | state_save_register_global(machine, state->blit2_pen); |
| 806 | state_save_register_global(machine, state->blit_palbank); |
| 807 | state_save_register_global(machine, state->blit2_palbank); |
| 808 | state_save_register_global(machine, state->blit_palettes); |
| 809 | state_save_register_global(machine, state->blit2_palettes); |
| 810 | state_save_register_global(machine, state->layer_enable); |
| 811 | state_save_register_global(machine, state->blit_backpen); |
| 812 | state_save_register_global(machine, state->extra_scroll_x); |
| 813 | state_save_register_global(machine, state->extra_scroll_y); |
| 814 | state_save_register_global(machine, state->hnoridur_layer_half2); |
| 815 | |
| 816 | state_save_register_global(machine, state->blit_scroll_x); |
| 817 | state_save_register_global(machine, state->blit2_scroll_x); |
| 818 | state_save_register_global(machine, state->blit_scroll_y); |
| 819 | state_save_register_global(machine, state->blit2_scroll_y); |
| 820 | state_save_register_global(machine, state->blit_wrap_enable); |
| 821 | state_save_register_global(machine, state->blit2_wrap_enable); |
| 822 | state_save_register_global(machine, state->blit_x); |
| 823 | state_save_register_global(machine, state->blit_y); |
| 824 | state_save_register_global(machine, state->blit2_x); |
| 825 | state_save_register_global(machine, state->blit2_y); |
| 826 | state_save_register_global(machine, state->blit_src); |
| 827 | state_save_register_global(machine, state->blit2_src); |
| 828 | state_save_register_global(machine, state->hanamai_layer_half); |
| 829 | state_save_register_global(machine, state->flipscreen); |
| 830 | state_save_register_global(machine, state->hanamai_priority); |
| 745 | 831 | } |
| 746 | 832 | |
| 747 | 833 | VIDEO_START( hanamai ) |
| 748 | 834 | { |
| 749 | | dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 750 | | dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 751 | | dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 752 | | dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 753 | | dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 754 | | dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 755 | | dynax_pixmap[3][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 756 | | dynax_pixmap[3][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 835 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 757 | 836 | |
| 758 | | Video_Reset(); |
| 759 | | layer_layout = LAYOUT_HANAMAI; |
| 837 | state->pixmap[0][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 838 | state->pixmap[0][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 839 | state->pixmap[1][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 840 | state->pixmap[1][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 841 | state->pixmap[2][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 842 | state->pixmap[2][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 843 | state->pixmap[3][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 844 | state->pixmap[3][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 845 | |
| 846 | dynax_common_reset(machine); |
| 847 | state->layer_layout = LAYOUT_HANAMAI; |
| 848 | |
| 849 | state_save_register_global_pointer(machine, state->pixmap[0][0], 256 * 256); |
| 850 | state_save_register_global_pointer(machine, state->pixmap[0][1], 256 * 256); |
| 851 | state_save_register_global_pointer(machine, state->pixmap[1][0], 256 * 256); |
| 852 | state_save_register_global_pointer(machine, state->pixmap[1][1], 256 * 256); |
| 853 | state_save_register_global_pointer(machine, state->pixmap[2][0], 256 * 256); |
| 854 | state_save_register_global_pointer(machine, state->pixmap[2][1], 256 * 256); |
| 855 | state_save_register_global_pointer(machine, state->pixmap[3][0], 256 * 256); |
| 856 | state_save_register_global_pointer(machine, state->pixmap[3][1], 256 * 256); |
| 760 | 857 | } |
| 761 | 858 | |
| 762 | 859 | VIDEO_START( hnoridur ) |
| 763 | 860 | { |
| 764 | | dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 765 | | dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 766 | | dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 767 | | dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 768 | | dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 769 | | dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 770 | | dynax_pixmap[3][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 771 | | dynax_pixmap[3][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 861 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 772 | 862 | |
| 773 | | Video_Reset(); |
| 774 | | layer_layout = LAYOUT_HNORIDUR; |
| 863 | state->pixmap[0][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 864 | state->pixmap[0][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 865 | state->pixmap[1][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 866 | state->pixmap[1][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 867 | state->pixmap[2][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 868 | state->pixmap[2][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 869 | state->pixmap[3][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 870 | state->pixmap[3][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 775 | 871 | |
| 776 | | priority_table = priority_hnoridur; |
| 872 | dynax_common_reset(machine); |
| 873 | state->layer_layout = LAYOUT_HNORIDUR; |
| 874 | |
| 875 | state->priority_table = priority_hnoridur; |
| 876 | |
| 877 | state_save_register_global_pointer(machine, state->pixmap[0][0], 256 * 256); |
| 878 | state_save_register_global_pointer(machine, state->pixmap[0][1], 256 * 256); |
| 879 | state_save_register_global_pointer(machine, state->pixmap[1][0], 256 * 256); |
| 880 | state_save_register_global_pointer(machine, state->pixmap[1][1], 256 * 256); |
| 881 | state_save_register_global_pointer(machine, state->pixmap[2][0], 256 * 256); |
| 882 | state_save_register_global_pointer(machine, state->pixmap[2][1], 256 * 256); |
| 883 | state_save_register_global_pointer(machine, state->pixmap[3][0], 256 * 256); |
| 884 | state_save_register_global_pointer(machine, state->pixmap[3][1], 256 * 256); |
| 777 | 885 | } |
| 778 | 886 | |
| 779 | 887 | VIDEO_START( mcnpshnt ) |
| 780 | 888 | { |
| 889 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 890 | |
| 781 | 891 | VIDEO_START_CALL(hnoridur); |
| 782 | | priority_table = priority_mcnpshnt; |
| 892 | state->priority_table = priority_mcnpshnt; |
| 783 | 893 | } |
| 784 | 894 | |
| 785 | 895 | VIDEO_START( sprtmtch ) |
| 786 | 896 | { |
| 787 | | dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 788 | | dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 789 | | dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 790 | | dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 791 | | dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 792 | | dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 897 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 793 | 898 | |
| 794 | | Video_Reset(); |
| 795 | | layer_layout = LAYOUT_DRGPUNCH; |
| 899 | state->pixmap[0][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 900 | state->pixmap[0][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 901 | state->pixmap[1][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 902 | state->pixmap[1][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 903 | state->pixmap[2][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 904 | state->pixmap[2][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 905 | |
| 906 | dynax_common_reset(machine); |
| 907 | state->layer_layout = LAYOUT_DRGPUNCH; |
| 908 | |
| 909 | state_save_register_global_pointer(machine, state->pixmap[0][0], 256 * 256); |
| 910 | state_save_register_global_pointer(machine, state->pixmap[0][1], 256 * 256); |
| 911 | state_save_register_global_pointer(machine, state->pixmap[1][0], 256 * 256); |
| 912 | state_save_register_global_pointer(machine, state->pixmap[1][1], 256 * 256); |
| 913 | state_save_register_global_pointer(machine, state->pixmap[2][0], 256 * 256); |
| 914 | state_save_register_global_pointer(machine, state->pixmap[2][1], 256 * 256); |
| 796 | 915 | } |
| 797 | 916 | |
| 798 | 917 | VIDEO_START( jantouki ) |
| 799 | 918 | { |
| 800 | | dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 801 | | dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 802 | | dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 803 | | dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 804 | | dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 805 | | dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 806 | | dynax_pixmap[3][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 807 | | dynax_pixmap[3][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 808 | | dynax_pixmap[4][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 809 | | dynax_pixmap[4][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 810 | | dynax_pixmap[5][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 811 | | dynax_pixmap[5][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 812 | | dynax_pixmap[6][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 813 | | dynax_pixmap[6][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 814 | | dynax_pixmap[7][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 815 | | dynax_pixmap[7][1] = auto_alloc_array(machine, UINT8, 256*256); |
| 919 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 816 | 920 | |
| 817 | | Video_Reset(); |
| 818 | | layer_layout = LAYOUT_JANTOUKI; |
| 921 | state->pixmap[0][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 922 | state->pixmap[0][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 923 | state->pixmap[1][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 924 | state->pixmap[1][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 925 | state->pixmap[2][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 926 | state->pixmap[2][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 927 | state->pixmap[3][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 928 | state->pixmap[3][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 929 | state->pixmap[4][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 930 | state->pixmap[4][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 931 | state->pixmap[5][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 932 | state->pixmap[5][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 933 | state->pixmap[6][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 934 | state->pixmap[6][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 935 | state->pixmap[7][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 936 | state->pixmap[7][1] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 819 | 937 | |
| 820 | | update_irq_func = jantouki_update_irq; |
| 938 | dynax_common_reset(machine); |
| 939 | state->layer_layout = LAYOUT_JANTOUKI; |
| 940 | state->update_irq_func = jantouki_update_irq; |
| 941 | |
| 942 | state_save_register_global_pointer(machine, state->pixmap[0][0], 256 * 256); |
| 943 | state_save_register_global_pointer(machine, state->pixmap[0][1], 256 * 256); |
| 944 | state_save_register_global_pointer(machine, state->pixmap[1][0], 256 * 256); |
| 945 | state_save_register_global_pointer(machine, state->pixmap[1][1], 256 * 256); |
| 946 | state_save_register_global_pointer(machine, state->pixmap[2][0], 256 * 256); |
| 947 | state_save_register_global_pointer(machine, state->pixmap[2][1], 256 * 256); |
| 948 | state_save_register_global_pointer(machine, state->pixmap[3][0], 256 * 256); |
| 949 | state_save_register_global_pointer(machine, state->pixmap[3][1], 256 * 256); |
| 950 | state_save_register_global_pointer(machine, state->pixmap[4][0], 256 * 256); |
| 951 | state_save_register_global_pointer(machine, state->pixmap[4][1], 256 * 256); |
| 952 | state_save_register_global_pointer(machine, state->pixmap[5][0], 256 * 256); |
| 953 | state_save_register_global_pointer(machine, state->pixmap[5][1], 256 * 256); |
| 954 | state_save_register_global_pointer(machine, state->pixmap[6][0], 256 * 256); |
| 955 | state_save_register_global_pointer(machine, state->pixmap[6][1], 256 * 256); |
| 956 | state_save_register_global_pointer(machine, state->pixmap[7][0], 256 * 256); |
| 957 | state_save_register_global_pointer(machine, state->pixmap[7][1], 256 * 256); |
| 821 | 958 | } |
| 822 | 959 | |
| 823 | 960 | VIDEO_START( mjdialq2 ) |
| 824 | 961 | { |
| 825 | | dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 826 | | dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256); |
| 962 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 827 | 963 | |
| 828 | | Video_Reset(); |
| 829 | | layer_layout = LAYOUT_MJDIALQ2; |
| 964 | state->pixmap[0][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 965 | state->pixmap[1][0] = auto_alloc_array(machine, UINT8, 256 * 256); |
| 830 | 966 | |
| 831 | | update_irq_func = 0; |
| 967 | dynax_common_reset(machine); |
| 968 | state->layer_layout = LAYOUT_MJDIALQ2; |
| 969 | state->update_irq_func = 0; |
| 970 | |
| 971 | state_save_register_global_pointer(machine, state->pixmap[0][0], 256 * 256); |
| 972 | state_save_register_global_pointer(machine, state->pixmap[1][0], 256 * 256); |
| 832 | 973 | } |
| 833 | 974 | |
| 834 | 975 | VIDEO_START( mjelctrn ) |
| 835 | 976 | { |
| 977 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 978 | |
| 836 | 979 | VIDEO_START_CALL(hnoridur); |
| 837 | 980 | |
| 838 | | priority_table = priority_mjelctrn; |
| 839 | | update_irq_func = mjelctrn_update_irq; |
| 981 | state->priority_table = priority_mjelctrn; |
| 982 | state->update_irq_func = mjelctrn_update_irq; |
| 840 | 983 | } |
| 841 | 984 | |
| 842 | 985 | VIDEO_START( neruton ) |
| 843 | 986 | { |
| 987 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 988 | |
| 844 | 989 | VIDEO_START_CALL(hnoridur); |
| 845 | 990 | |
| 846 | | // priority_table = priority_mjelctrn; |
| 847 | | update_irq_func = neruton_update_irq; |
| 991 | // state->priority_table = priority_mjelctrn; |
| 992 | state->update_irq_func = neruton_update_irq; |
| 848 | 993 | } |
| 849 | 994 | |
| 850 | 995 | /*************************************************************************** |
| r7640 | r7641 | |
| 855 | 1000 | |
| 856 | 1001 | ***************************************************************************/ |
| 857 | 1002 | |
| 858 | | static void hanamai_copylayer(bitmap_t *bitmap,const rectangle *cliprect,int i) |
| 1003 | static void hanamai_copylayer( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int i ) |
| 859 | 1004 | { |
| 1005 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 860 | 1006 | int color; |
| 861 | | int scrollx,scrolly; |
| 1007 | int scrollx, scrolly; |
| 862 | 1008 | |
| 863 | | switch ( i ) |
| 1009 | switch (i) |
| 864 | 1010 | { |
| 865 | | case 0: color = (dynax_blit_palettes >> 0) & 0xf; break; |
| 866 | | case 1: color = (dynax_blit_palettes >> 4) & 0xf; break; |
| 867 | | case 2: color = (dynax_blit_palettes >> 8) & 0xf; break; |
| 868 | | case 3: color = (dynax_blit_palettes >> 12) & 0xf; break; |
| 1011 | case 0: color = (state->blit_palettes >> 0) & 0x0f; break; |
| 1012 | case 1: color = (state->blit_palettes >> 4) & 0x0f; break; |
| 1013 | case 2: color = (state->blit_palettes >> 8) & 0x0f; break; |
| 1014 | case 3: color = (state->blit_palettes >> 12) & 0x0f; break; |
| 869 | 1015 | default: return; |
| 870 | 1016 | } |
| 871 | 1017 | |
| 872 | | color += (dynax_blit_palbank & 0x0f) * 16; |
| 1018 | color += (state->blit_palbank & 0x0f) * 16; |
| 873 | 1019 | |
| 874 | | scrollx = dynax_blit_scroll_x; |
| 875 | | scrolly = dynax_blit_scroll_y; |
| 1020 | scrollx = state->blit_scroll_x; |
| 1021 | scrolly = state->blit_scroll_y; |
| 876 | 1022 | |
| 877 | | if ( (layer_layout == LAYOUT_HANAMAI && i == 1) || |
| 878 | | (layer_layout == LAYOUT_HNORIDUR && i == 1) ) |
| 1023 | if (i == 1 && (state->layer_layout == LAYOUT_HANAMAI || state->layer_layout == LAYOUT_HNORIDUR)) |
| 879 | 1024 | { |
| 880 | | scrollx = extra_scroll_x; |
| 881 | | scrolly = extra_scroll_y; |
| 1025 | scrollx = state->extra_scroll_x; |
| 1026 | scrolly = state->extra_scroll_y; |
| 882 | 1027 | } |
| 883 | 1028 | |
| 884 | 1029 | { |
| 885 | | int dy,length,pen,offs; |
| 886 | | UINT8 *src1 = dynax_pixmap[i][1]; |
| 887 | | UINT8 *src2 = dynax_pixmap[i][0]; |
| 1030 | int dy, length, pen, offs; |
| 1031 | UINT8 *src1 = state->pixmap[i][1]; |
| 1032 | UINT8 *src2 = state->pixmap[i][0]; |
| 888 | 1033 | |
| 889 | | int palbase = 16*color; |
| 1034 | int palbase = 16 * color; |
| 890 | 1035 | offs = 0; |
| 891 | 1036 | |
| 892 | 1037 | for (dy = 0; dy < 256; dy++) |
| r7640 | r7641 | |
| 895 | 1040 | UINT16 *dstbase = BITMAP_ADDR16(bitmap, (dy - scrolly) & 0xff, 0); |
| 896 | 1041 | |
| 897 | 1042 | length = scrollx; |
| 898 | | dst = dstbase + 2*(256 - length); |
| 1043 | dst = dstbase + 2 * (256 - length); |
| 899 | 1044 | while (length--) |
| 900 | 1045 | { |
| 901 | 1046 | pen = *(src1++); |
| 902 | | if (pen) *dst = palbase + pen; |
| 1047 | if (pen) *dst = palbase + pen; |
| 903 | 1048 | pen = *(src2++); |
| 904 | | if (pen) *(dst+1) = palbase + pen; |
| 1049 | if (pen) *(dst + 1) = palbase + pen; |
| 905 | 1050 | dst += 2; |
| 906 | 1051 | } |
| 907 | 1052 | |
| r7640 | r7641 | |
| 910 | 1055 | while (length--) |
| 911 | 1056 | { |
| 912 | 1057 | pen = *(src1++); |
| 913 | | if (pen) *dst = palbase + pen; |
| 1058 | if (pen) *dst = palbase + pen; |
| 914 | 1059 | pen = *(src2++); |
| 915 | | if (pen) *(dst+1) = palbase + pen; |
| 1060 | if (pen) *(dst + 1) = palbase + pen; |
| 916 | 1061 | dst += 2; |
| 917 | 1062 | } |
| 918 | 1063 | } |
| r7640 | r7641 | |
| 920 | 1065 | } |
| 921 | 1066 | |
| 922 | 1067 | |
| 923 | | static void jantouki_copylayer(bitmap_t *bitmap,const rectangle *cliprect,int i, int y) |
| 1068 | static void jantouki_copylayer( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int i, int y ) |
| 924 | 1069 | { |
| 925 | | int color,scrollx,scrolly,palettes,palbank; |
| 1070 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 1071 | int color, scrollx, scrolly, palettes, palbank; |
| 926 | 1072 | |
| 927 | 1073 | if (i < 4) |
| 928 | 1074 | { |
| 929 | | scrollx = dynax_blit_scroll_x; |
| 930 | | scrolly = dynax_blit_scroll_y; |
| 931 | | palettes = dynax_blit_palettes; |
| 932 | | palbank = dynax_blit_palbank; |
| 1075 | scrollx = state->blit_scroll_x; |
| 1076 | scrolly = state->blit_scroll_y; |
| 1077 | palettes = state->blit_palettes; |
| 1078 | palbank = state->blit_palbank; |
| 933 | 1079 | } |
| 934 | 1080 | else |
| 935 | 1081 | { |
| 936 | | scrollx = dynax_blit2_scroll_x; |
| 937 | | scrolly = dynax_blit2_scroll_y; |
| 938 | | palettes = dynax_blit2_palettes; |
| 939 | | palbank = dynax_blit2_palbank; |
| 1082 | scrollx = state->blit2_scroll_x; |
| 1083 | scrolly = state->blit2_scroll_y; |
| 1084 | palettes = state->blit2_palettes; |
| 1085 | palbank = state->blit2_palbank; |
| 940 | 1086 | } |
| 941 | 1087 | |
| 942 | | switch ( i % 4 ) |
| 1088 | switch (i % 4) |
| 943 | 1089 | { |
| 944 | | case 0: color = ((palettes >> 12) & 0xf) + ((palbank & 1) << 4); break; |
| 945 | | case 1: color = ((palettes >> 8) & 0xf) + ((palbank & 1) << 4); break; |
| 946 | | case 2: color = ((palettes >> 4) & 0xf) + ((palbank & 1) << 4); break; |
| 947 | | case 3: color = ((palettes >> 0) & 0xf) + ((palbank & 1) << 4); break; |
| 1090 | case 0: color = ((palettes >> 12) & 0x0f) + ((palbank & 1) << 4); break; |
| 1091 | case 1: color = ((palettes >> 8) & 0x0f) + ((palbank & 1) << 4); break; |
| 1092 | case 2: color = ((palettes >> 4) & 0x0f) + ((palbank & 1) << 4); break; |
| 1093 | case 3: color = ((palettes >> 0) & 0x0f) + ((palbank & 1) << 4); break; |
| 948 | 1094 | default: return; |
| 949 | 1095 | } |
| 950 | 1096 | |
| 951 | 1097 | { |
| 952 | | int dy,length,pen,offs; |
| 953 | | UINT8 *src1 = dynax_pixmap[i][1]; |
| 954 | | UINT8 *src2 = dynax_pixmap[i][0]; |
| 1098 | int dy, length, pen, offs; |
| 1099 | UINT8 *src1 = state->pixmap[i][1]; |
| 1100 | UINT8 *src2 = state->pixmap[i][0]; |
| 955 | 1101 | |
| 956 | | int palbase = 16*color; |
| 1102 | int palbase = 16 * color; |
| 957 | 1103 | offs = 0; |
| 958 | 1104 | |
| 959 | 1105 | for (dy = 0; dy < 256; dy++) |
| r7640 | r7641 | |
| 964 | 1110 | |
| 965 | 1111 | if ((sy < cliprect->min_y) || (sy > cliprect->max_y)) |
| 966 | 1112 | { |
| 967 | | src1+=256; |
| 968 | | src2+=256; |
| 1113 | src1 += 256; |
| 1114 | src2 += 256; |
| 969 | 1115 | continue; |
| 970 | 1116 | } |
| 971 | 1117 | |
| 972 | 1118 | length = scrollx; |
| 973 | | dst = dstbase + 2*(256 - length); |
| 1119 | dst = dstbase + 2 * (256 - length); |
| 974 | 1120 | while (length--) |
| 975 | 1121 | { |
| 976 | 1122 | pen = *(src1++); |
| 977 | | if (pen) *dst = palbase + pen; |
| 1123 | if (pen) *dst = palbase + pen; |
| 978 | 1124 | pen = *(src2++); |
| 979 | | if (pen) *(dst+1) = palbase + pen; |
| 1125 | if (pen) *(dst + 1) = palbase + pen; |
| 980 | 1126 | dst += 2; |
| 981 | 1127 | } |
| 982 | 1128 | |
| r7640 | r7641 | |
| 985 | 1131 | while (length--) |
| 986 | 1132 | { |
| 987 | 1133 | pen = *(src1++); |
| 988 | | if (pen) *dst = palbase + pen; |
| 1134 | if (pen) *dst = palbase + pen; |
| 989 | 1135 | pen = *(src2++); |
| 990 | | if (pen) *(dst+1) = palbase + pen; |
| 1136 | if (pen) *(dst + 1) = palbase + pen; |
| 991 | 1137 | dst += 2; |
| 992 | 1138 | } |
| 993 | 1139 | } |
| r7640 | r7641 | |
| 995 | 1141 | } |
| 996 | 1142 | |
| 997 | 1143 | |
| 998 | | static void mjdialq2_copylayer(bitmap_t *bitmap,const rectangle *cliprect,int i) |
| 1144 | static void mjdialq2_copylayer( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int i ) |
| 999 | 1145 | { |
| 1146 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 1000 | 1147 | int color; |
| 1001 | | int scrollx,scrolly; |
| 1148 | int scrollx, scrolly; |
| 1002 | 1149 | |
| 1003 | | switch ( i ) |
| 1150 | switch (i) |
| 1004 | 1151 | { |
| 1005 | | case 0: color = (dynax_blit_palettes >> 4) & 0xf; break; |
| 1006 | | case 1: color = (dynax_blit_palettes >> 0) & 0xf; break; |
| 1152 | case 0: color = (state->blit_palettes >> 4) & 0x0f; break; |
| 1153 | case 1: color = (state->blit_palettes >> 0) & 0x0f; break; |
| 1007 | 1154 | default: return; |
| 1008 | 1155 | } |
| 1009 | 1156 | |
| 1010 | | color += (dynax_blit_palbank & 1) * 16; |
| 1157 | color += (state->blit_palbank & 1) * 16; |
| 1011 | 1158 | |
| 1012 | | scrollx = dynax_blit_scroll_x; |
| 1013 | | scrolly = dynax_blit_scroll_y; |
| 1159 | scrollx = state->blit_scroll_x; |
| 1160 | scrolly = state->blit_scroll_y; |
| 1014 | 1161 | |
| 1015 | 1162 | { |
| 1016 | | int dy,length,pen,offs; |
| 1017 | | UINT8 *src = dynax_pixmap[i][0]; |
| 1163 | int dy, length, pen, offs; |
| 1164 | UINT8 *src = state->pixmap[i][0]; |
| 1018 | 1165 | |
| 1019 | | int palbase = 16*color; |
| 1166 | int palbase = 16 * color; |
| 1020 | 1167 | offs = 0; |
| 1021 | 1168 | |
| 1022 | 1169 | for (dy = 0; dy < 256; dy++) |
| r7640 | r7641 | |
| 1045 | 1192 | } |
| 1046 | 1193 | } |
| 1047 | 1194 | |
| 1048 | | |
| 1049 | | |
| 1050 | | static int hanamai_priority; |
| 1051 | | |
| 1052 | 1195 | WRITE8_HANDLER( hanamai_priority_w ) |
| 1053 | 1196 | { |
| 1054 | | hanamai_priority = data; |
| 1197 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1198 | state->hanamai_priority = data; |
| 1055 | 1199 | } |
| 1056 | 1200 | |
| 1057 | 1201 | WRITE8_HANDLER( tenkai_priority_w ) |
| 1058 | 1202 | { |
| 1059 | | hanamai_priority = BITSWAP8(data, 3,2,1,0, 4,7,5,6); |
| 1203 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1204 | state->hanamai_priority = BITSWAP8(data, 3, 2, 1, 0, 4, 7, 5, 6); |
| 1060 | 1205 | } |
| 1061 | 1206 | |
| 1062 | | static int debug_mask(running_machine *machine) |
| 1207 | static int debug_mask( running_machine *machine ) |
| 1063 | 1208 | { |
| 1064 | 1209 | #ifdef MAME_DEBUG |
| 1065 | 1210 | int msk = 0; |
| r7640 | r7641 | |
| 1085 | 1230 | I,O - Change palette (-,+) |
| 1086 | 1231 | J,K & N,M - Change "tile" (-,+, slow & fast) |
| 1087 | 1232 | R - move "tile" to the next 1/8th of the gfx */ |
| 1088 | | static int debug_viewer(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) |
| 1233 | static int debug_viewer( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) |
| 1089 | 1234 | { |
| 1235 | |
| 1090 | 1236 | #ifdef MAME_DEBUG |
| 1091 | 1237 | static int toggle; |
| 1092 | | if (input_code_pressed_once(machine, KEYCODE_T)) toggle = 1-toggle; |
| 1093 | | if (toggle) { |
| 1094 | | UINT8 *RAM = memory_region( machine, "gfx1" ); |
| 1095 | | size_t size = memory_region_length( machine, "gfx1" ); |
| 1238 | if (input_code_pressed_once(machine, KEYCODE_T)) toggle = 1 - toggle; |
| 1239 | if (toggle) |
| 1240 | { |
| 1241 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 1242 | UINT8 *RAM = memory_region( machine, "gfx1" ); |
| 1243 | size_t size = memory_region_length( machine, "gfx1" ); |
| 1096 | 1244 | static int i = 0, c = 0, r = 0; |
| 1097 | 1245 | |
| 1098 | | if (input_code_pressed_once(machine, KEYCODE_I)) c = (c-1) & 0x1f; |
| 1099 | | if (input_code_pressed_once(machine, KEYCODE_O)) c = (c+1) & 0x1f; |
| 1100 | | if (input_code_pressed_once(machine, KEYCODE_R)) { r = (r+1) & 0x7; i = size/8 * r; } |
| 1246 | if (input_code_pressed_once(machine, KEYCODE_I)) c = (c - 1) & 0x1f; |
| 1247 | if (input_code_pressed_once(machine, KEYCODE_O)) c = (c + 1) & 0x1f; |
| 1248 | if (input_code_pressed_once(machine, KEYCODE_R)) { r = (r + 1) & 0x7; i = size / 8 * r; } |
| 1101 | 1249 | if (input_code_pressed(machine, KEYCODE_M) | input_code_pressed_once(machine, KEYCODE_K)) |
| 1102 | 1250 | { |
| 1103 | | while( i < size && RAM[i] ) i++; while( i < size && !RAM[i] ) i++; |
| 1251 | while (i < size && RAM[i]) i++; while (i < size && !RAM[i]) i++; |
| 1104 | 1252 | } |
| 1105 | 1253 | if (input_code_pressed(machine, KEYCODE_N) | input_code_pressed_once(machine, KEYCODE_J)) |
| 1106 | 1254 | { |
| 1107 | | if (i >= 2) i-=2; while( i > 0 && RAM[i] ) i--; i++; |
| 1255 | if (i >= 2) i -= 2; while (i > 0 && RAM[i]) i--; i++; |
| 1108 | 1256 | } |
| 1109 | 1257 | |
| 1110 | | dynax_blit_palettes = (c & 0xf) * 0x111; |
| 1111 | | dynax_blit_palbank = (c >> 4) & 1; |
| 1258 | state->blit_palettes = (c & 0xf) * 0x111; |
| 1259 | state->blit_palbank = (c >> 4) & 1; |
| 1112 | 1260 | |
| 1113 | | bitmap_fill(bitmap,cliprect,0); |
| 1114 | | memset(dynax_pixmap[0][0],0,sizeof(UINT8)*0x100*0x100); |
| 1115 | | if (layer_layout != LAYOUT_MJDIALQ2) |
| 1116 | | memset(dynax_pixmap[0][1],0,sizeof(UINT8)*0x100*0x100); |
| 1117 | | for (hanamai_layer_half = 0; hanamai_layer_half < 2; hanamai_layer_half++) |
| 1118 | | blitter_drawgfx(machine,0,1,"gfx1",i,0,cliprect->min_x,cliprect->min_y,3,0); |
| 1119 | | if (layer_layout != LAYOUT_MJDIALQ2) hanamai_copylayer(bitmap, cliprect, 0); |
| 1120 | | else mjdialq2_copylayer(bitmap,cliprect, 0); |
| 1121 | | popmessage("%06X C%02X",i,c); |
| 1261 | bitmap_fill(bitmap, cliprect, 0); |
| 1262 | memset(state->pixmap[0][0], 0, sizeof(UINT8) * 0x100 * 0x100); |
| 1122 | 1263 | |
| 1264 | if (state->layer_layout != LAYOUT_MJDIALQ2) |
| 1265 | memset(state->pixmap[0][1], 0, sizeof(UINT8) * 0x100 * 0x100); |
| 1266 | for (state->hanamai_layer_half = 0; state->hanamai_layer_half < 2; state->hanamai_layer_half++) |
| 1267 | blitter_drawgfx(machine, 0, 1, "gfx1", i, 0, cliprect->min_x, cliprect->min_y, 3, 0); |
| 1268 | |
| 1269 | if (state->layer_layout != LAYOUT_MJDIALQ2) |
| 1270 | hanamai_copylayer(machine, bitmap, cliprect, 0); |
| 1271 | else |
| 1272 | mjdialq2_copylayer(machine, bitmap, cliprect, 0); |
| 1273 | |
| 1274 | popmessage("%06X C%02X", i, c); |
| 1275 | |
| 1123 | 1276 | return 1; |
| 1124 | 1277 | } |
| 1125 | 1278 | #endif |
| r7640 | r7641 | |
| 1130 | 1283 | |
| 1131 | 1284 | VIDEO_UPDATE( hanamai ) |
| 1132 | 1285 | { |
| 1133 | | int layers_ctrl = ~dynax_layer_enable; |
| 1286 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1287 | int layers_ctrl = ~state->layer_enable; |
| 1134 | 1288 | int lay[4]; |
| 1135 | 1289 | |
| 1136 | | if (debug_viewer(screen->machine,bitmap,cliprect)) return 0; |
| 1290 | if (debug_viewer(screen->machine, bitmap, cliprect)) |
| 1291 | return 0; |
| 1292 | |
| 1137 | 1293 | layers_ctrl &= debug_mask(screen->machine); |
| 1138 | 1294 | |
| 1139 | | bitmap_fill(bitmap, cliprect, |
| 1140 | | (dynax_blit_backpen & 0xff) + (dynax_blit_palbank & 1) * 256); |
| 1295 | bitmap_fill(bitmap, cliprect, (state->blit_backpen & 0xff) + (state->blit_palbank & 1) * 256); |
| 1141 | 1296 | |
| 1142 | 1297 | /* bit 4 = display enable? */ |
| 1143 | | if (!(hanamai_priority & 0x10)) return 0; |
| 1298 | if (!(state->hanamai_priority & 0x10)) |
| 1299 | return 0; |
| 1144 | 1300 | |
| 1145 | | switch (hanamai_priority) |
| 1301 | switch (state->hanamai_priority) |
| 1146 | 1302 | { |
| 1147 | | default: popmessage("unknown priority %02x",hanamai_priority); |
| 1303 | default: popmessage("unknown priority %02x", state->hanamai_priority); |
| 1148 | 1304 | case 0x10: lay[0] = 0; lay[1] = 1; lay[2] = 2; lay[3] = 3; break; |
| 1149 | 1305 | case 0x11: lay[0] = 0; lay[1] = 3; lay[2] = 2; lay[3] = 1; break; |
| 1150 | 1306 | case 0x12: lay[0] = 0; lay[1] = 1; lay[2] = 3; lay[3] = 2; break; |
| r7640 | r7641 | |
| 1153 | 1309 | case 0x15: lay[0] = 0; lay[1] = 2; lay[2] = 3; lay[3] = 1; break; |
| 1154 | 1310 | } |
| 1155 | 1311 | |
| 1156 | | if (layers_ctrl & (1 << lay[0])) hanamai_copylayer( bitmap, cliprect, lay[0] ); |
| 1157 | | if (layers_ctrl & (1 << lay[1])) hanamai_copylayer( bitmap, cliprect, lay[1] ); |
| 1158 | | if (layers_ctrl & (1 << lay[2])) hanamai_copylayer( bitmap, cliprect, lay[2] ); |
| 1159 | | if (layers_ctrl & (1 << lay[3])) hanamai_copylayer( bitmap, cliprect, lay[3] ); |
| 1312 | if (BIT(layers_ctrl, lay[0])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[0]); |
| 1313 | if (BIT(layers_ctrl, lay[1])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[1]); |
| 1314 | if (BIT(layers_ctrl, lay[2])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[2]); |
| 1315 | if (BIT(layers_ctrl, lay[3])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[3]); |
| 1160 | 1316 | return 0; |
| 1161 | 1317 | } |
| 1162 | 1318 | |
| 1163 | 1319 | |
| 1164 | 1320 | VIDEO_UPDATE( hnoridur ) |
| 1165 | 1321 | { |
| 1166 | | int layers_ctrl = ~BITSWAP8(hanamai_priority, 7,6,5,4, 0,1,2,3); |
| 1322 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1323 | int layers_ctrl = ~BITSWAP8(state->hanamai_priority, 7, 6, 5, 4, 0, 1, 2, 3); |
| 1167 | 1324 | int lay[4]; |
| 1168 | 1325 | int pri; |
| 1169 | 1326 | |
| 1170 | | if (debug_viewer(screen->machine,bitmap,cliprect)) return 0; |
| 1327 | if (debug_viewer(screen->machine, bitmap, cliprect)) |
| 1328 | return 0; |
| 1329 | |
| 1171 | 1330 | layers_ctrl &= debug_mask(screen->machine); |
| 1172 | 1331 | |
| 1173 | | bitmap_fill(bitmap, cliprect, |
| 1174 | | (dynax_blit_backpen & 0xff) + (dynax_blit_palbank & 0x0f) * 256); |
| 1332 | bitmap_fill(bitmap, cliprect, (state->blit_backpen & 0xff) + (state->blit_palbank & 0x0f) * 256); |
| 1175 | 1333 | |
| 1176 | | pri = hanamai_priority >> 4; |
| 1334 | pri = state->hanamai_priority >> 4; |
| 1177 | 1335 | |
| 1178 | 1336 | if (pri > 7) |
| 1179 | 1337 | { |
| 1180 | | popmessage("unknown priority %02x",hanamai_priority); |
| 1338 | popmessage("unknown priority %02x", state->hanamai_priority); |
| 1181 | 1339 | pri = 0; |
| 1182 | 1340 | } |
| 1183 | 1341 | |
| 1184 | | pri = priority_table[pri]; |
| 1342 | pri = state->priority_table[pri]; |
| 1185 | 1343 | lay[0] = (pri >> 12) & 3; |
| 1186 | 1344 | lay[1] = (pri >> 8) & 3; |
| 1187 | 1345 | lay[2] = (pri >> 4) & 3; |
| 1188 | 1346 | lay[3] = (pri >> 0) & 3; |
| 1189 | 1347 | |
| 1190 | | if (layers_ctrl & (1 << lay[0])) hanamai_copylayer( bitmap, cliprect, lay[0] ); |
| 1191 | | if (layers_ctrl & (1 << lay[1])) hanamai_copylayer( bitmap, cliprect, lay[1] ); |
| 1192 | | if (layers_ctrl & (1 << lay[2])) hanamai_copylayer( bitmap, cliprect, lay[2] ); |
| 1193 | | if (layers_ctrl & (1 << lay[3])) hanamai_copylayer( bitmap, cliprect, lay[3] ); |
| 1348 | if (BIT(layers_ctrl, lay[0])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[0]); |
| 1349 | if (BIT(layers_ctrl, lay[1])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[1]); |
| 1350 | if (BIT(layers_ctrl, lay[2])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[2]); |
| 1351 | if (BIT(layers_ctrl, lay[3])) hanamai_copylayer(screen->machine, bitmap, cliprect, lay[3]); |
| 1194 | 1352 | |
| 1195 | 1353 | return 0; |
| 1196 | 1354 | } |
| r7640 | r7641 | |
| 1198 | 1356 | |
| 1199 | 1357 | VIDEO_UPDATE( sprtmtch ) |
| 1200 | 1358 | { |
| 1201 | | int layers_ctrl = ~dynax_layer_enable; |
| 1359 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1360 | int layers_ctrl = ~state->layer_enable; |
| 1202 | 1361 | |
| 1203 | | if (debug_viewer(screen->machine,bitmap,cliprect)) return 0; |
| 1362 | if (debug_viewer(screen->machine,bitmap,cliprect)) |
| 1363 | return 0; |
| 1364 | |
| 1204 | 1365 | layers_ctrl &= debug_mask(screen->machine); |
| 1205 | 1366 | |
| 1206 | | bitmap_fill(bitmap, cliprect, |
| 1207 | | (dynax_blit_backpen & 0xff) + (dynax_blit_palbank & 1) * 256); |
| 1367 | bitmap_fill(bitmap, cliprect, (state->blit_backpen & 0xff) + (state->blit_palbank & 1) * 256); |
| 1208 | 1368 | |
| 1209 | | if (layers_ctrl & 1) hanamai_copylayer( bitmap, cliprect, 0 ); |
| 1210 | | if (layers_ctrl & 2) hanamai_copylayer( bitmap, cliprect, 1 ); |
| 1211 | | if (layers_ctrl & 4) hanamai_copylayer( bitmap, cliprect, 2 ); |
| 1369 | if (BIT(layers_ctrl, 0)) hanamai_copylayer(screen->machine, bitmap, cliprect, 0); |
| 1370 | if (BIT(layers_ctrl, 1)) hanamai_copylayer(screen->machine, bitmap, cliprect, 1); |
| 1371 | if (BIT(layers_ctrl, 2)) hanamai_copylayer(screen->machine, bitmap, cliprect, 2); |
| 1212 | 1372 | return 0; |
| 1213 | 1373 | } |
| 1214 | 1374 | |
| 1215 | 1375 | VIDEO_UPDATE( jantouki ) |
| 1216 | 1376 | { |
| 1217 | | int layers_ctrl = dynax_layer_enable; |
| 1377 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1378 | int layers_ctrl = state->layer_enable; |
| 1218 | 1379 | |
| 1219 | | running_device *top_screen = devtag_get_device(screen->machine, "top"); |
| 1220 | | running_device *bottom_screen = devtag_get_device(screen->machine, "bottom"); |
| 1380 | if (debug_viewer(screen->machine, bitmap, cliprect)) |
| 1381 | return 0; |
| 1221 | 1382 | |
| 1222 | | if (debug_viewer(screen->machine,bitmap,cliprect)) return 0; |
| 1223 | 1383 | layers_ctrl &= debug_mask(screen->machine); |
| 1224 | 1384 | |
| 1225 | | bitmap_fill(bitmap, cliprect, |
| 1226 | | (dynax_blit_backpen & 0xff) + (dynax_blit_palbank & 1) * 256); |
| 1385 | bitmap_fill(bitmap, cliprect, (state->blit_backpen & 0xff) + (state->blit_palbank & 1) * 256); |
| 1227 | 1386 | |
| 1228 | | if (screen == top_screen) |
| 1387 | if (screen == state->top_scr) |
| 1229 | 1388 | { |
| 1230 | | // if (layers_ctrl & 0x01) jantouki_copylayer( bitmap, cliprect, 3, 0 ); |
| 1231 | | if (layers_ctrl & 0x02) jantouki_copylayer( bitmap, cliprect, 2, 0 ); |
| 1232 | | if (layers_ctrl & 0x04) jantouki_copylayer( bitmap, cliprect, 1, 0 ); |
| 1233 | | if (layers_ctrl & 0x08) jantouki_copylayer( bitmap, cliprect, 0, 0 ); |
| 1389 | // if (BIT(layers_ctrl, 0)) jantouki_copylayer(screen->machine, bitmap, cliprect, 3, 0); |
| 1390 | if (BIT(layers_ctrl, 1)) jantouki_copylayer(screen->machine, bitmap, cliprect, 2, 0); |
| 1391 | if (BIT(layers_ctrl, 2)) jantouki_copylayer(screen->machine, bitmap, cliprect, 1, 0); |
| 1392 | if (BIT(layers_ctrl, 3)) jantouki_copylayer(screen->machine, bitmap, cliprect, 0, 0); |
| 1234 | 1393 | } |
| 1235 | | else if (screen == bottom_screen) |
| 1394 | else if (screen == state->bot_scr) |
| 1236 | 1395 | { |
| 1237 | | if (layers_ctrl & 0x01) jantouki_copylayer( bitmap, cliprect, 3, 0 ); |
| 1238 | | if (layers_ctrl & 0x10) jantouki_copylayer( bitmap, cliprect, 7, 0 ); |
| 1239 | | if (layers_ctrl & 0x20) jantouki_copylayer( bitmap, cliprect, 6, 0 ); |
| 1240 | | if (layers_ctrl & 0x40) jantouki_copylayer( bitmap, cliprect, 5, 0 ); |
| 1241 | | if (layers_ctrl & 0x80) jantouki_copylayer( bitmap, cliprect, 4, 0 ); |
| 1396 | if (BIT(layers_ctrl, 0)) jantouki_copylayer(screen->machine, bitmap, cliprect, 3, 0); |
| 1397 | if (BIT(layers_ctrl, 4)) jantouki_copylayer(screen->machine, bitmap, cliprect, 7, 0); |
| 1398 | if (BIT(layers_ctrl, 5)) jantouki_copylayer(screen->machine, bitmap, cliprect, 6, 0); |
| 1399 | if (BIT(layers_ctrl, 6)) jantouki_copylayer(screen->machine, bitmap, cliprect, 5, 0); |
| 1400 | if (BIT(layers_ctrl, 7)) jantouki_copylayer(screen->machine, bitmap, cliprect, 4, 0); |
| 1242 | 1401 | } |
| 1243 | 1402 | return 0; |
| 1244 | 1403 | } |
| r7640 | r7641 | |
| 1246 | 1405 | |
| 1247 | 1406 | VIDEO_UPDATE( mjdialq2 ) |
| 1248 | 1407 | { |
| 1249 | | int layers_ctrl = ~dynax_layer_enable; |
| 1408 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1409 | int layers_ctrl = ~state->layer_enable; |
| 1250 | 1410 | |
| 1251 | | if (debug_viewer(screen->machine,bitmap,cliprect)) return 0; |
| 1411 | if (debug_viewer(screen->machine, bitmap, cliprect)) |
| 1412 | return 0; |
| 1413 | |
| 1252 | 1414 | layers_ctrl &= debug_mask(screen->machine); |
| 1253 | 1415 | |
| 1254 | | bitmap_fill(bitmap, cliprect, |
| 1255 | | (dynax_blit_backpen & 0xff) + (dynax_blit_palbank & 1) * 256); |
| 1416 | bitmap_fill(bitmap, cliprect, (state->blit_backpen & 0xff) + (state->blit_palbank & 1) * 256); |
| 1256 | 1417 | |
| 1257 | | if (layers_ctrl & 1) mjdialq2_copylayer( bitmap, cliprect, 0 ); |
| 1258 | | if (layers_ctrl & 2) mjdialq2_copylayer( bitmap, cliprect, 1 ); |
| 1418 | if (BIT(layers_ctrl, 0)) mjdialq2_copylayer(screen->machine, bitmap, cliprect, 0); |
| 1419 | if (BIT(layers_ctrl, 1)) mjdialq2_copylayer(screen->machine, bitmap, cliprect, 1); |
| 1259 | 1420 | return 0; |
| 1260 | 1421 | } |
| 1261 | 1422 | |
| r7640 | r7641 | |
| 1269 | 1430 | |
| 1270 | 1431 | VIDEO_UPDATE(htengoku) |
| 1271 | 1432 | { |
| 1272 | | int layer,x,y; |
| 1433 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1434 | int layer, x, y; |
| 1273 | 1435 | |
| 1274 | 1436 | // render the layers, one by one, "dynax.c" style. Then convert the pixmaps to "ddenlovr.c" |
| 1275 | 1437 | // format and let VIDEO_UPDATE(ddenlovr) do the final compositing (priorities + palettes) |
| 1276 | 1438 | for (layer = 0; layer < 4; layer++) |
| 1277 | 1439 | { |
| 1278 | | bitmap_fill(bitmap,cliprect,0); |
| 1279 | | hanamai_copylayer( bitmap, cliprect, layer ); |
| 1440 | bitmap_fill(bitmap, cliprect, 0); |
| 1441 | hanamai_copylayer(screen->machine, bitmap, cliprect, layer); |
| 1280 | 1442 | |
| 1281 | | for (y=0; y < 256; y++) |
| 1282 | | for (x=0; x < 512; x++) |
| 1283 | | ddenlovr_pixmap[3-layer][y*512+x] = (UINT8)(*BITMAP_ADDR16(bitmap, y,x)); |
| 1443 | for (y = 0; y < 256; y++) |
| 1444 | for (x = 0; x < 512; x++) |
| 1445 | state->ddenlovr_pixmap[3 - layer][y * 512 + x] = (UINT8)(*BITMAP_ADDR16(bitmap, y, x)); |
| 1284 | 1446 | } |
| 1447 | |
| 1285 | 1448 | return VIDEO_UPDATE_CALL(ddenlovr); |
| 1286 | 1449 | } |
src/mame/video/metro.c
| r7640 | r7641 | |
| 52 | 52 | ***************************************************************************/ |
| 53 | 53 | |
| 54 | 54 | #include "emu.h" |
| 55 | #include "includes/metro.h" |
| 55 | 56 | #include "video/konicdev.h" |
| 56 | 57 | |
| 57 | | /* Variables that driver has access to: */ |
| 58 | | |
| 59 | | UINT16 *metro_videoregs; |
| 60 | | UINT16 *metro_screenctrl; |
| 61 | | UINT16 *metro_scroll; |
| 62 | | UINT16 *metro_tiletable; |
| 63 | | size_t metro_tiletable_size; |
| 64 | | UINT16 *metro_vram_0,*metro_vram_1,*metro_vram_2; |
| 65 | | UINT16 *metro_window; |
| 66 | | |
| 67 | | static int support_8bpp,support_16x16; |
| 68 | | static int has_zoom; |
| 69 | | |
| 70 | | |
| 71 | | UINT16 *metro_K053936_ram; |
| 72 | | static tilemap_t *metro_K053936_tilemap; |
| 73 | | |
| 74 | | static UINT16 *metro_tiletable_old; |
| 75 | | static UINT8 *dirtyindex; |
| 76 | | |
| 77 | | |
| 78 | | static TILE_GET_INFO( metro_K053936_get_tile_info ) |
| 58 | static TILE_GET_INFO( metro_k053936_get_tile_info ) |
| 79 | 59 | { |
| 80 | | int code = metro_K053936_ram[tile_index]; |
| 60 | metro_state *state = (metro_state *)machine->driver_data; |
| 61 | int code = state->k053936_ram[tile_index]; |
| 81 | 62 | |
| 82 | 63 | SET_TILE_INFO( |
| 83 | 64 | 2, |
| r7640 | r7641 | |
| 86 | 67 | 0); |
| 87 | 68 | } |
| 88 | 69 | |
| 89 | | static TILE_GET_INFO( metro_K053936_gstrik2_get_tile_info ) |
| 70 | static TILE_GET_INFO( metro_k053936_gstrik2_get_tile_info ) |
| 90 | 71 | { |
| 91 | | int code = metro_K053936_ram[tile_index]; |
| 72 | metro_state *state = (metro_state *)machine->driver_data; |
| 73 | int code = state->k053936_ram[tile_index]; |
| 92 | 74 | |
| 93 | 75 | SET_TILE_INFO( |
| 94 | 76 | 2, |
| r7640 | r7641 | |
| 97 | 79 | 0); |
| 98 | 80 | } |
| 99 | 81 | |
| 100 | | WRITE16_HANDLER( metro_K053936_w ) |
| 82 | WRITE16_HANDLER( metro_k053936_w ) |
| 101 | 83 | { |
| 102 | | COMBINE_DATA(&metro_K053936_ram[offset]); |
| 103 | | tilemap_mark_tile_dirty(metro_K053936_tilemap,offset); |
| 84 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 85 | COMBINE_DATA(&state->k053936_ram[offset]); |
| 86 | tilemap_mark_tile_dirty(state->k053936_tilemap, offset); |
| 104 | 87 | } |
| 105 | 88 | |
| 106 | 89 | static TILEMAP_MAPPER( tilemap_scan_gstrik2 ) |
| r7640 | r7641 | |
| 108 | 91 | /* logical (col,row) -> memory offset */ |
| 109 | 92 | int val; |
| 110 | 93 | |
| 111 | | val = (row&0x3f)*(256*2) + (col*2); |
| 94 | val = (row & 0x3f) * (256 * 2) + (col * 2); |
| 112 | 95 | |
| 113 | | if (row&0x40) val+=1; |
| 114 | | if (row&0x80) val+=256; |
| 96 | if (row & 0x40) val += 1; |
| 97 | if (row & 0x80) val += 256; |
| 115 | 98 | |
| 116 | 99 | return val; |
| 117 | 100 | } |
| 118 | 101 | |
| 119 | 102 | |
| 120 | | /*************************************************************************** |
| 121 | 103 | |
| 122 | | |
| 123 | | Palette GGGGGRRRRRBBBBBx |
| 124 | | |
| 125 | | |
| 126 | | ***************************************************************************/ |
| 127 | | |
| 128 | | #ifdef UNUSED_FUNCTION |
| 129 | | WRITE16_HANDLER( metro_paletteram_w ) |
| 130 | | { |
| 131 | | data = COMBINE_DATA(&space->machine->generic.paletteram.u16[offset]); |
| 132 | | palette_set_color_rgb(space->machine,offset,pal5bit(data >> 6),pal5bit(data >> 11),pal5bit(data >> 1)); |
| 133 | | } |
| 134 | | #endif |
| 135 | | |
| 136 | | |
| 137 | 104 | /*************************************************************************** |
| 138 | 105 | |
| 139 | 106 | |
| r7640 | r7641 | |
| 163 | 130 | |
| 164 | 131 | ***************************************************************************/ |
| 165 | 132 | |
| 166 | | static tilemap_t *bg_tilemap[3]; |
| 167 | | static tilemap_t *tilemap_16x16[3]; |
| 168 | | static UINT8 *empty_tiles; |
| 169 | | |
| 170 | 133 | /* A 2048 x 2048 virtual tilemap */ |
| 171 | | |
| 172 | 134 | #define BIG_NX (0x100) |
| 173 | 135 | #define BIG_NY (0x100) |
| 174 | 136 | |
| r7640 | r7641 | |
| 176 | 138 | |
| 177 | 139 | #define WIN_NX (0x40) |
| 178 | 140 | #define WIN_NY (0x20) |
| 179 | | //#define WIN_NX (0x40+1) |
| 180 | | //#define WIN_NY (0x20+1) |
| 181 | 141 | |
| 182 | | |
| 183 | | /* 8x8x4 tiles only */ |
| 184 | | INLINE void get_tile_info(running_machine *machine,tile_data *tileinfo,int tile_index,int layer,UINT16 *vram) |
| 142 | // this looks up a single pixel in a tile, given the code |
| 143 | // the metro hardware has an indirection table, which is used here |
| 144 | // returns if to draw the pixel or not, pixel colour is placed in pix |
| 145 | INLINE UINT8 get_tile_pix( running_machine *machine, UINT16 code, UINT8 x, UINT8 y, int big, UINT16* pix ) |
| 185 | 146 | { |
| 186 | | UINT16 code; |
| 187 | | int table_index; |
| 188 | | UINT32 tile; |
| 147 | metro_state *state = (metro_state *)machine->driver_data; |
| 148 | int table_index; |
| 149 | UINT32 tile; |
| 189 | 150 | |
| 190 | | /* The actual tile index depends on the window */ |
| 191 | | tile_index = ((tile_index / WIN_NX + metro_window[layer * 2 + 0] / 8) % BIG_NY) * BIG_NX + |
| 192 | | ((tile_index % WIN_NX + metro_window[layer * 2 + 1] / 8) % BIG_NX); |
| 151 | /* Use code as an index into the tiles set table */ |
| 152 | table_index = ((code & 0x1ff0) >> 4) * 2; |
| 153 | tile = (state->tiletable[table_index + 0] << 16) + state->tiletable[table_index + 1]; |
| 193 | 154 | |
| 194 | | /* Fetch the code */ |
| 195 | | code = vram[ tile_index ]; |
| 196 | | |
| 197 | | /* Use it as an index into the tiles set table */ |
| 198 | | table_index = ( (code & 0x1ff0) >> 4 ) * 2; |
| 199 | | tile = (metro_tiletable[table_index + 0] << 16 ) + |
| 200 | | metro_tiletable[table_index + 1]; |
| 201 | | |
| 202 | 155 | if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */ |
| 203 | 156 | { |
| 204 | | int _code = code & 0x000f; |
| 205 | | tileinfo->pen_data = empty_tiles + _code*16*16; |
| 206 | | tileinfo->palette_base = ((code & 0x0ff0)) + 0x1000; |
| 207 | | tileinfo->flags = 0; |
| 208 | | tileinfo->group = 0; |
| 157 | *pix = (code & 0x0fff)+0x1000; |
| 158 | |
| 159 | if ((*pix & 0xf) != 0xf) |
| 160 | return 1; |
| 161 | else |
| 162 | return 0; |
| 163 | |
| 209 | 164 | } |
| 210 | | else |
| 165 | else if (((tile & 0x00f00000) == 0x00f00000) && (state->support_8bpp)) /* draw tile as 8bpp */ |
| 211 | 166 | { |
| 212 | | tileinfo->group = 0; |
| 213 | | SET_TILE_INFO( |
| 214 | | 0, |
| 215 | | (tile & 0xfffff) + (code & 0xf), |
| 216 | | (((tile & 0x0ff00000) >> 20)) + 0x100, |
| 217 | | TILE_FLIPXY((code & 0x6000) >> 13)); |
| 218 | | } |
| 219 | | } |
| 167 | const gfx_element *gfx1 = machine->gfx[big?3:1]; |
| 168 | UINT32 tile2 = big ? ((tile & 0xfffff) + 8*(code & 0xf)) : |
| 169 | ((tile & 0xfffff) + 2*(code & 0xf)); |
| 170 | const UINT8* data; |
| 171 | UINT8 flipxy = (code & 0x6000) >> 13; |
| 220 | 172 | |
| 173 | if (tile2 < gfx1->total_elements) |
| 174 | data = gfx_element_get_data(gfx1, tile2); |
| 175 | else |
| 176 | { |
| 177 | *pix |= 0; |
| 178 | return 0; |
| 179 | } |
| 221 | 180 | |
| 222 | | /* 8x8x4 or 8x8x8 tiles. It's the tile's color that decides: if its low 4 |
| 223 | | bits are high ($f,$1f,$2f etc) the tile is 8bpp, otherwise it's 4bpp */ |
| 224 | | INLINE void get_tile_info_8bit(running_machine *machine,tile_data *tileinfo,int tile_index,int layer,UINT16 *vram) |
| 225 | | { |
| 226 | | UINT16 code; |
| 227 | | int table_index; |
| 228 | | UINT32 tile; |
| 181 | switch (flipxy) |
| 182 | { |
| 183 | default: |
| 184 | case 0x0: *pix = data[(y * (big?16:8)) + x]; break; |
| 185 | case 0x1: *pix = data[(((big?15:7)-y) * (big?16:8)) + x]; break; |
| 186 | case 0x2: *pix = data[(y * (big?16:8)) + ((big?15:7)-x)]; break; |
| 187 | case 0x3: *pix = data[(((big?15:7)-y) * (big?16:8)) + ((big?15:7)-x)]; break; |
| 188 | } |
| 229 | 189 | |
| 230 | | /* The actual tile index depends on the window */ |
| 231 | | tile_index = ((tile_index / WIN_NX + metro_window[layer * 2 + 0] / 8) % BIG_NY) * BIG_NX + |
| 232 | | ((tile_index % WIN_NX + metro_window[layer * 2 + 1] / 8) % BIG_NX); |
| 190 | *pix |= ((((tile & 0x0f000000) >> 24) + 0x10)*0x100); |
| 233 | 191 | |
| 234 | | /* Fetch the code */ |
| 235 | | code = vram[ tile_index ]; |
| 192 | if ((*pix & 0xff) != 0xff) |
| 193 | return 1; |
| 194 | else |
| 195 | return 0; |
| 236 | 196 | |
| 237 | | /* Use it as an index into the tiles set table */ |
| 238 | | table_index = ( (code & 0x1ff0) >> 4 ) * 2; |
| 239 | | tile = (metro_tiletable[table_index + 0] << 16 ) + |
| 240 | | metro_tiletable[table_index + 1]; |
| 241 | | |
| 242 | | if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */ |
| 243 | | { |
| 244 | | int _code = code & 0x000f; |
| 245 | | tileinfo->pen_data = empty_tiles + _code*16*16; |
| 246 | | tileinfo->palette_base = ((code & 0x0ff0)) + 0x1000; |
| 247 | | tileinfo->flags = 0; |
| 248 | | tileinfo->group = 0; |
| 249 | 197 | } |
| 250 | | else if ((tile & 0x00f00000)==0x00f00000) /* draw tile as 8bpp */ |
| 251 | | { |
| 252 | | tileinfo->group = 1; |
| 253 | | SET_TILE_INFO( |
| 254 | | 1, |
| 255 | | (tile & 0xfffff) + 2*(code & 0xf), |
| 256 | | ((tile & 0x0f000000) >> 24) + 0x10, |
| 257 | | TILE_FLIPXY((code & 0x6000) >> 13)); |
| 258 | | } |
| 259 | 198 | else |
| 260 | 199 | { |
| 261 | | tileinfo->group = 0; |
| 262 | | SET_TILE_INFO( |
| 263 | | 0, |
| 264 | | (tile & 0xfffff) + (code & 0xf), |
| 265 | | (((tile & 0x0ff00000) >> 20)) + 0x100, |
| 266 | | TILE_FLIPXY((code & 0x6000) >> 13)); |
| 267 | | } |
| 268 | | } |
| 200 | const gfx_element *gfx1 = machine->gfx[big?2:0]; |
| 201 | UINT32 tile2 = big ? ((tile & 0xfffff) + 4*(code & 0xf)) : |
| 202 | ((tile & 0xfffff) + (code & 0xf)); |
| 203 | const UINT8* data; |
| 204 | UINT8 flipxy = (code & 0x6000) >> 13; |
| 269 | 205 | |
| 270 | | /* 16x16x4 or 16x16x8 tiles. It's the tile's color that decides: if its low 4 |
| 271 | | bits are high ($f,$1f,$2f etc) the tile is 8bpp, otherwise it's 4bpp */ |
| 272 | | INLINE void get_tile_info_16x16_8bit(running_machine *machine,tile_data *tileinfo,int tile_index,int layer,UINT16 *vram) |
| 273 | | { |
| 274 | | UINT16 code; |
| 275 | | int table_index; |
| 276 | | UINT32 tile; |
| 206 | if (tile2 < gfx1->total_elements) |
| 207 | data = gfx_element_get_data(gfx1, tile2); |
| 208 | else |
| 209 | { |
| 210 | *pix |= 0; |
| 211 | return 0; |
| 212 | } |
| 277 | 213 | |
| 278 | | /* The actual tile index depends on the window */ |
| 279 | | tile_index = ((tile_index / WIN_NX + metro_window[layer * 2 + 0] / 8) % BIG_NY) * BIG_NX + |
| 280 | | ((tile_index % WIN_NX + metro_window[layer * 2 + 1] / 8) % BIG_NX); |
| 281 | 214 | |
| 282 | | /* Fetch the code */ |
| 283 | | code = vram[ tile_index ]; |
| 215 | switch (flipxy) |
| 216 | { |
| 217 | default: |
| 218 | case 0x0: *pix = data[(y * (big?8:4)) + (x>>1)]; break; |
| 219 | case 0x1: *pix = data[(((big?15:7)-y) * (big?8:4)) + (x>>1)]; break; |
| 220 | case 0x2: *pix = data[(y * (big?8:4)) + ((big?7:3)-(x>>1))]; break; |
| 221 | case 0x3: *pix = data[(((big?15:7)-y) * (big?8:4)) + ((big?7:3)-(x>>1))]; break; |
| 222 | } |
| 284 | 223 | |
| 285 | | /* Use it as an index into the tiles set table */ |
| 286 | | table_index = ( (code & 0x1ff0) >> 4 ) * 2; |
| 287 | | tile = (metro_tiletable[table_index + 0] << 16 ) + |
| 288 | | metro_tiletable[table_index + 1]; |
| 224 | if (!(flipxy&2)) |
| 225 | { |
| 226 | if (x&1) *pix >>= 4; |
| 227 | else *pix &= 0xf; |
| 228 | } |
| 229 | else |
| 230 | { |
| 231 | if (x&1) *pix &= 0xf; |
| 232 | else *pix >>= 4; |
| 233 | } |
| 289 | 234 | |
| 290 | | if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */ |
| 291 | | { |
| 292 | | int _code = code & 0x000f; |
| 293 | | tileinfo->pen_data = empty_tiles + _code*16*16; |
| 294 | | tileinfo->palette_base = ((code & 0x0ff0)) + 0x1000; |
| 295 | | tileinfo->flags = 0; |
| 296 | | tileinfo->group = 0; |
| 297 | | } |
| 298 | | else if ((tile & 0x00f00000)==0x00f00000) /* draw tile as 8bpp */ |
| 299 | | { |
| 300 | | tileinfo->group = 1; |
| 301 | | SET_TILE_INFO( |
| 302 | | 3, |
| 303 | | (tile & 0xfffff) + 8*(code & 0xf), |
| 304 | | ((tile & 0x0f000000) >> 24) + 0x10, |
| 305 | | TILE_FLIPXY((code & 0x6000) >> 13)); |
| 306 | | } |
| 307 | | else |
| 308 | | { |
| 309 | | tileinfo->group = 0; |
| 310 | | SET_TILE_INFO( |
| 311 | | 2, |
| 312 | | (tile & 0xfffff) + 4*(code & 0xf), |
| 313 | | (((tile & 0x0ff00000) >> 20)) + 0x100, |
| 314 | | TILE_FLIPXY((code & 0x6000) >> 13)); |
| 235 | *pix |= (((((tile & 0x0ff00000) >> 20)) + 0x100)*0x10); |
| 315 | 236 | |
| 237 | if ((*pix & 0xf) != 0xf) |
| 238 | return 1; |
| 239 | else |
| 240 | return 0; |
| 316 | 241 | } |
| 242 | |
| 243 | // shouldn't get here.. |
| 244 | return 0; |
| 317 | 245 | } |
| 318 | 246 | |
| 319 | 247 | |
| 320 | | INLINE void metro_vram_w(offs_t offset,UINT16 data,UINT16 mem_mask,int layer,UINT16 *vram) |
| 248 | INLINE void metro_vram_w( running_machine *machine, offs_t offset, UINT16 data, UINT16 mem_mask, int layer, UINT16 *vram ) |
| 321 | 249 | { |
| 322 | 250 | COMBINE_DATA(&vram[offset]); |
| 323 | | { |
| 324 | | /* Account for the window */ |
| 325 | | int col = (offset % BIG_NX) - ((metro_window[layer * 2 + 1] / 8) % BIG_NX); |
| 326 | | int row = (offset / BIG_NX) - ((metro_window[layer * 2 + 0] / 8) % BIG_NY); |
| 327 | | if (col < -(BIG_NX-WIN_NX)) col += (BIG_NX-WIN_NX) + WIN_NX; |
| 328 | | if (row < -(BIG_NY-WIN_NY)) row += (BIG_NY-WIN_NY) + WIN_NY; |
| 329 | | if ( (col >= 0) && (col < WIN_NX) && |
| 330 | | (row >= 0) && (row < WIN_NY) ) |
| 331 | | { |
| 332 | | tilemap_mark_tile_dirty(bg_tilemap[layer], row * WIN_NX + col ); |
| 333 | | if (tilemap_16x16[layer]) |
| 334 | | tilemap_mark_tile_dirty(tilemap_16x16[layer], row * WIN_NX + col ); |
| 335 | | } |
| 336 | | } |
| 337 | 251 | } |
| 338 | 252 | |
| 253 | WRITE16_HANDLER( metro_vram_0_w ) { metro_state *state = (metro_state *)space->machine->driver_data; metro_vram_w(space->machine, offset, data, mem_mask, 0, state->vram_0); } |
| 254 | WRITE16_HANDLER( metro_vram_1_w ) { metro_state *state = (metro_state *)space->machine->driver_data; metro_vram_w(space->machine, offset, data, mem_mask, 1, state->vram_1); } |
| 255 | WRITE16_HANDLER( metro_vram_2_w ) { metro_state *state = (metro_state *)space->machine->driver_data; metro_vram_w(space->machine, offset, data, mem_mask, 2, state->vram_2); } |
| 339 | 256 | |
| 340 | 257 | |
| 341 | | static TILE_GET_INFO( get_tile_info_0 ) { get_tile_info(machine,tileinfo,tile_index,0,metro_vram_0); } |
| 342 | | static TILE_GET_INFO( get_tile_info_1 ) { get_tile_info(machine,tileinfo,tile_index,1,metro_vram_1); } |
| 343 | | static TILE_GET_INFO( get_tile_info_2 ) { get_tile_info(machine,tileinfo,tile_index,2,metro_vram_2); } |
| 344 | 258 | |
| 345 | | static TILE_GET_INFO( get_tile_info_0_8bit ) { get_tile_info_8bit(machine,tileinfo,tile_index,0,metro_vram_0); } |
| 346 | | static TILE_GET_INFO( get_tile_info_1_8bit ) { get_tile_info_8bit(machine,tileinfo,tile_index,1,metro_vram_1); } |
| 347 | | static TILE_GET_INFO( get_tile_info_2_8bit ) { get_tile_info_8bit(machine,tileinfo,tile_index,2,metro_vram_2); } |
| 348 | | |
| 349 | | static TILE_GET_INFO( get_tile_info_0_16x16_8bit ) { get_tile_info_16x16_8bit(machine,tileinfo,tile_index,0,metro_vram_0); } |
| 350 | | static TILE_GET_INFO( get_tile_info_1_16x16_8bit ) { get_tile_info_16x16_8bit(machine,tileinfo,tile_index,1,metro_vram_1); } |
| 351 | | static TILE_GET_INFO( get_tile_info_2_16x16_8bit ) { get_tile_info_16x16_8bit(machine,tileinfo,tile_index,2,metro_vram_2); } |
| 352 | | |
| 353 | | WRITE16_HANDLER( metro_vram_0_w ) { metro_vram_w(offset,data,mem_mask,0,metro_vram_0); } |
| 354 | | WRITE16_HANDLER( metro_vram_1_w ) { metro_vram_w(offset,data,mem_mask,1,metro_vram_1); } |
| 355 | | WRITE16_HANDLER( metro_vram_2_w ) { metro_vram_w(offset,data,mem_mask,2,metro_vram_2); } |
| 356 | | |
| 357 | | |
| 358 | | |
| 359 | 259 | /* Dirty the relevant tilemap when its window changes */ |
| 360 | 260 | WRITE16_HANDLER( metro_window_w ) |
| 361 | 261 | { |
| 362 | | UINT16 olddata = metro_window[offset]; |
| 363 | | UINT16 newdata = COMBINE_DATA( &metro_window[offset] ); |
| 364 | | if ( newdata != olddata ) |
| 365 | | { |
| 366 | | offset /= 2; |
| 367 | | tilemap_mark_all_tiles_dirty(bg_tilemap[offset]); |
| 368 | | if (tilemap_16x16[offset]) tilemap_mark_all_tiles_dirty(tilemap_16x16[offset]); |
| 369 | | } |
| 262 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 263 | COMBINE_DATA(&state->window[offset]); |
| 264 | |
| 370 | 265 | } |
| 371 | 266 | |
| 372 | 267 | |
| r7640 | r7641 | |
| 387 | 282 | the tile's sizes to be known at startup - which we don't! |
| 388 | 283 | */ |
| 389 | 284 | |
| 390 | | static int metro_sprite_xoffs, metro_sprite_yoffs; |
| 285 | /* Dirty tilemaps when the tiles set changes */ |
| 391 | 286 | |
| 392 | | |
| 393 | | static void alloc_empty_tiles(running_machine *machine) |
| 394 | | { |
| 395 | | int code,i; |
| 396 | | |
| 397 | | empty_tiles = auto_alloc_array(machine, UINT8, 16*16*16); |
| 398 | | |
| 399 | | for (code = 0;code < 0x10;code++) |
| 400 | | for (i = 0;i < 16*16;i++) |
| 401 | | empty_tiles[16*16*code + i] = code; |
| 402 | | } |
| 403 | | |
| 404 | 287 | VIDEO_START( metro_14100 ) |
| 405 | 288 | { |
| 406 | | support_8bpp = 0; |
| 407 | | support_16x16 = 0; |
| 408 | | has_zoom = 0; |
| 289 | metro_state *state = (metro_state *)machine->driver_data; |
| 409 | 290 | |
| 410 | | alloc_empty_tiles(machine); |
| 411 | | metro_tiletable_old = auto_alloc_array(machine, UINT16, metro_tiletable_size/2); |
| 412 | | dirtyindex = auto_alloc_array(machine, UINT8, metro_tiletable_size/4); |
| 291 | state->support_8bpp = 0; |
| 292 | state->support_16x16 = 0; |
| 293 | state->has_zoom = 0; |
| 413 | 294 | |
| 414 | | bg_tilemap[0] = tilemap_create(machine, get_tile_info_0,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 415 | | bg_tilemap[1] = tilemap_create(machine, get_tile_info_1,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 416 | | bg_tilemap[2] = tilemap_create(machine, get_tile_info_2,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 295 | state->bg_tilemap_enable[0] = 1; |
| 296 | state->bg_tilemap_enable[1] = 1; |
| 297 | state->bg_tilemap_enable[2] = 1; |
| 417 | 298 | |
| 418 | | tilemap_16x16[0] = NULL; |
| 419 | | tilemap_16x16[1] = NULL; |
| 420 | | tilemap_16x16[2] = NULL; |
| 299 | state->bg_tilemap_enable16[0] = 0; |
| 300 | state->bg_tilemap_enable16[1] = 0; |
| 301 | state->bg_tilemap_enable16[2] = 0; |
| 421 | 302 | |
| 422 | | tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 423 | | tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 424 | | |
| 425 | | tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 426 | | tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 427 | | |
| 428 | | tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 429 | | tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 430 | | |
| 303 | state->bg_tilemap_scrolldx[0] = 0; |
| 304 | state->bg_tilemap_scrolldx[1] = 0; |
| 305 | state->bg_tilemap_scrolldx[2] = 0; |
| 431 | 306 | } |
| 432 | 307 | |
| 433 | 308 | VIDEO_START( metro_14220 ) |
| 434 | 309 | { |
| 435 | | support_8bpp = 1; |
| 436 | | support_16x16 = 0; |
| 437 | | has_zoom = 0; |
| 310 | metro_state *state = (metro_state *)machine->driver_data; |
| 438 | 311 | |
| 439 | | alloc_empty_tiles(machine); |
| 440 | | metro_tiletable_old = auto_alloc_array(machine, UINT16, metro_tiletable_size/2); |
| 441 | | dirtyindex = auto_alloc_array(machine, UINT8, metro_tiletable_size/4); |
| 312 | state->support_8bpp = 1; |
| 313 | state->support_16x16 = 0; |
| 314 | state->has_zoom = 0; |
| 442 | 315 | |
| 443 | | bg_tilemap[0] = tilemap_create(machine, get_tile_info_0_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 444 | | bg_tilemap[1] = tilemap_create(machine, get_tile_info_1_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 445 | | bg_tilemap[2] = tilemap_create(machine, get_tile_info_2_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 316 | state->bg_tilemap_enable[0] = 1; |
| 317 | state->bg_tilemap_enable[1] = 1; |
| 318 | state->bg_tilemap_enable[2] = 1; |
| 446 | 319 | |
| 447 | | tilemap_16x16[0] = NULL; |
| 448 | | tilemap_16x16[1] = NULL; |
| 449 | | tilemap_16x16[2] = NULL; |
| 320 | state->bg_tilemap_enable16[0] = 0; |
| 321 | state->bg_tilemap_enable16[1] = 0; |
| 322 | state->bg_tilemap_enable16[2] = 0; |
| 450 | 323 | |
| 451 | | tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 452 | | tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 453 | | |
| 454 | | tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 455 | | tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 456 | | |
| 457 | | tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 458 | | tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 459 | | |
| 460 | | tilemap_set_scrolldx(bg_tilemap[0], -2, 2); |
| 461 | | tilemap_set_scrolldx(bg_tilemap[1], -2, 2); |
| 462 | | tilemap_set_scrolldx(bg_tilemap[2], -2, 2); |
| 324 | state->bg_tilemap_scrolldx[0] = -2; |
| 325 | state->bg_tilemap_scrolldx[1] = -2; |
| 326 | state->bg_tilemap_scrolldx[2] = -2; |
| 463 | 327 | } |
| 464 | 328 | |
| 465 | 329 | VIDEO_START( metro_14300 ) |
| 466 | 330 | { |
| 467 | | support_8bpp = 1; |
| 468 | | support_16x16 = 1; |
| 469 | | has_zoom = 0; |
| 331 | metro_state *state = (metro_state *)machine->driver_data; |
| 470 | 332 | |
| 471 | | alloc_empty_tiles(machine); |
| 472 | | metro_tiletable_old = auto_alloc_array(machine, UINT16, metro_tiletable_size/2); |
| 473 | | dirtyindex = auto_alloc_array(machine, UINT8, metro_tiletable_size/4); |
| 333 | state->support_8bpp = 1; |
| 334 | state->support_16x16 = 1; |
| 335 | state->has_zoom = 0; |
| 474 | 336 | |
| 475 | | bg_tilemap[0] = tilemap_create(machine, get_tile_info_0_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 476 | | bg_tilemap[1] = tilemap_create(machine, get_tile_info_1_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 477 | | bg_tilemap[2] = tilemap_create(machine, get_tile_info_2_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY); |
| 337 | state->bg_tilemap_enable[0] = 1; |
| 338 | state->bg_tilemap_enable[1] = 1; |
| 339 | state->bg_tilemap_enable[2] = 1; |
| 478 | 340 | |
| 479 | | tilemap_16x16[0] = tilemap_create(machine, get_tile_info_0_16x16_8bit,tilemap_scan_rows,16,16,WIN_NX,WIN_NY); |
| 480 | | tilemap_16x16[1] = tilemap_create(machine, get_tile_info_1_16x16_8bit,tilemap_scan_rows,16,16,WIN_NX,WIN_NY); |
| 481 | | tilemap_16x16[2] = tilemap_create(machine, get_tile_info_2_16x16_8bit,tilemap_scan_rows,16,16,WIN_NX,WIN_NY); |
| 341 | state->bg_tilemap_enable16[0] = 0; |
| 342 | state->bg_tilemap_enable16[1] = 0; |
| 343 | state->bg_tilemap_enable16[2] = 0; |
| 482 | 344 | |
| 483 | | tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 484 | | tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 485 | | |
| 486 | | tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 487 | | tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 488 | | |
| 489 | | tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 490 | | tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 491 | | |
| 492 | | |
| 493 | | tilemap_map_pen_to_layer(tilemap_16x16[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 494 | | tilemap_map_pen_to_layer(tilemap_16x16[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 495 | | |
| 496 | | tilemap_map_pen_to_layer(tilemap_16x16[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 497 | | tilemap_map_pen_to_layer(tilemap_16x16[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 498 | | |
| 499 | | tilemap_map_pen_to_layer(tilemap_16x16[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT); |
| 500 | | tilemap_map_pen_to_layer(tilemap_16x16[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT); |
| 501 | | |
| 345 | state->bg_tilemap_scrolldx[0] = 0; |
| 346 | state->bg_tilemap_scrolldx[1] = 0; |
| 347 | state->bg_tilemap_scrolldx[2] = 0; |
| 502 | 348 | } |
| 503 | 349 | |
| 504 | 350 | VIDEO_START( blzntrnd ) |
| 505 | 351 | { |
| 352 | metro_state *state = (metro_state *)machine->driver_data; |
| 353 | |
| 506 | 354 | VIDEO_START_CALL(metro_14220); |
| 507 | 355 | |
| 508 | | has_zoom = 1; |
| 356 | state->has_zoom = 1; |
| 509 | 357 | |
| 510 | | metro_K053936_tilemap = tilemap_create(machine, metro_K053936_get_tile_info, tilemap_scan_rows, 8,8, 256, 512 ); |
| 358 | state->k053936_tilemap = tilemap_create(machine, metro_k053936_get_tile_info, tilemap_scan_rows, 8, 8, 256, 512); |
| 511 | 359 | |
| 512 | | tilemap_set_scrolldx(bg_tilemap[0], 8, -8); |
| 513 | | tilemap_set_scrolldx(bg_tilemap[1], 8, -8); |
| 514 | | tilemap_set_scrolldx(bg_tilemap[2], 8, -8); |
| 360 | state->bg_tilemap_scrolldx[0] = 8; |
| 361 | state->bg_tilemap_scrolldx[1] = 8; |
| 362 | state->bg_tilemap_scrolldx[2] = 8; |
| 515 | 363 | } |
| 516 | 364 | |
| 517 | 365 | VIDEO_START( gstrik2 ) |
| 518 | 366 | { |
| 367 | metro_state *state = (metro_state *)machine->driver_data; |
| 368 | |
| 519 | 369 | VIDEO_START_CALL(metro_14220); |
| 520 | 370 | |
| 521 | | has_zoom = 1; |
| 371 | state->has_zoom = 1; |
| 522 | 372 | |
| 523 | | metro_K053936_tilemap = tilemap_create(machine, metro_K053936_gstrik2_get_tile_info, tilemap_scan_gstrik2, 16,16, 128, 256 ); |
| 373 | state->k053936_tilemap = tilemap_create(machine, metro_k053936_gstrik2_get_tile_info, tilemap_scan_gstrik2, 16, 16, 128, 256); |
| 524 | 374 | |
| 525 | | tilemap_set_scrolldx(bg_tilemap[0], 8, -8); |
| 526 | | tilemap_set_scrolldx(bg_tilemap[1], 0, 0); |
| 527 | | tilemap_set_scrolldx(bg_tilemap[2], 8, -8); |
| 375 | state->bg_tilemap_scrolldx[0] = 8; |
| 376 | state->bg_tilemap_scrolldx[1] = 0; |
| 377 | state->bg_tilemap_scrolldx[2] = 8; |
| 528 | 378 | } |
| 529 | 379 | |
| 530 | 380 | /*************************************************************************** |
| r7640 | r7641 | |
| 589 | 439 | |
| 590 | 440 | /* Draw sprites */ |
| 591 | 441 | |
| 592 | | void metro_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) |
| 442 | void metro_draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) |
| 593 | 443 | { |
| 594 | | UINT8 *base_gfx = memory_region(machine, "gfx1"); |
| 595 | | UINT8 *gfx_max = base_gfx + memory_region_length(machine, "gfx1"); |
| 444 | metro_state *state = (metro_state *)machine->driver_data; |
| 445 | UINT8 *base_gfx = memory_region(machine, "gfx1"); |
| 446 | UINT8 *gfx_max = base_gfx + memory_region_length(machine, "gfx1"); |
| 596 | 447 | |
| 597 | 448 | int max_x = video_screen_get_width(machine->primary_screen); |
| 598 | 449 | int max_y = video_screen_get_height(machine->primary_screen); |
| 599 | 450 | |
| 600 | | int max_sprites = machine->generic.spriteram_size / 8; |
| 601 | | int sprites = metro_videoregs[0x00/2] % max_sprites; |
| 451 | int max_sprites = state->spriteram_size / 8; |
| 452 | int sprites = state->videoregs[0x00/2] % max_sprites; |
| 602 | 453 | |
| 603 | | int color_start = ((metro_videoregs[0x08/2] & 0xf) << 4 ) + 0x100; |
| 454 | int color_start = ((state->videoregs[0x08/2] & 0x0f) << 4) + 0x100; |
| 604 | 455 | |
| 605 | 456 | int i, j, pri; |
| 606 | | static const int primask[4] = { 0x0000, 0xff00, 0xff00|0xf0f0, 0xff00|0xf0f0|0xcccc }; |
| 457 | static const int primask[4] = { 0x0000, 0xff00, 0xff00 | 0xf0f0, 0xff00 | 0xf0f0 | 0xcccc }; |
| 607 | 458 | |
| 608 | 459 | UINT16 *src; |
| 609 | 460 | int inc; |
| r7640 | r7641 | |
| 611 | 462 | if (sprites == 0) |
| 612 | 463 | return; |
| 613 | 464 | |
| 614 | | for (i=0; i<0x20; i++) |
| 465 | for (i = 0; i < 0x20; i++) |
| 615 | 466 | { |
| 616 | 467 | gfx_element gfx; |
| 617 | 468 | |
| 618 | | if (!(metro_videoregs[0x02/2] & 0x8000)) |
| 469 | if (!(state->videoregs[0x02/2] & 0x8000)) |
| 619 | 470 | { |
| 620 | | src = machine->generic.spriteram.u16 + (sprites - 1) * (8/2); |
| 621 | | inc = -(8/2); |
| 471 | src = state->spriteram + (sprites - 1) * (8 / 2); |
| 472 | inc = -(8 / 2); |
| 622 | 473 | } else { |
| 623 | | src = machine->generic.spriteram.u16; |
| 624 | | inc = (8/2); |
| 474 | src = state->spriteram; |
| 475 | inc = (8 / 2); |
| 625 | 476 | } |
| 626 | 477 | |
| 627 | | for (j=0; j<sprites; j++) |
| 478 | for (j = 0; j < sprites; j++) |
| 628 | 479 | { |
| 629 | | int x,y, attr,code,color,flipx,flipy, zoom, curr_pri,width,height; |
| 480 | int x, y, attr, code, color, flipx, flipy, zoom, curr_pri, width, height; |
| 630 | 481 | UINT8 *gfxdata; |
| 631 | 482 | |
| 632 | 483 | /* Exponential zoom table extracted from daitoride */ |
| r7640 | r7641 | |
| 640 | 491 | 0x0A0,0x09C,0x098,0x094,0x090,0x08C,0x088,0x080, |
| 641 | 492 | 0x078,0x070,0x068,0x060,0x058,0x050,0x048,0x040 }; |
| 642 | 493 | |
| 643 | | x = src[ 0 ]; |
| 644 | | curr_pri = (x & 0xf800) >> 11; |
| 494 | x = src[0]; |
| 495 | curr_pri = (x & 0xf800) >> 11; |
| 645 | 496 | |
| 646 | 497 | if ((curr_pri == 0x1f) || (curr_pri != i)) |
| 647 | 498 | { |
| r7640 | r7641 | |
| 649 | 500 | continue; |
| 650 | 501 | } |
| 651 | 502 | |
| 652 | | pri = (metro_videoregs[0x02/2] & 0x0300) >> 8; |
| 503 | pri = (state->videoregs[0x02/2] & 0x0300) >> 8; |
| 653 | 504 | |
| 654 | | if (!(metro_videoregs[0x02/2] & 0x8000)) |
| 505 | if (!(state->videoregs[0x02/2] & 0x8000)) |
| 655 | 506 | { |
| 656 | | if (curr_pri > (metro_videoregs[0x02/2] & 0x1f)) |
| 657 | | pri = (metro_videoregs[0x02/2] & 0x0c00) >> 10; |
| 507 | if (curr_pri > (state->videoregs[0x02/2] & 0x1f)) |
| 508 | pri = (state->videoregs[0x02/2] & 0x0c00) >> 10; |
| 658 | 509 | } |
| 659 | 510 | |
| 660 | | y = src[ 1 ]; |
| 661 | | attr = src[ 2 ]; |
| 662 | | code = src[ 3 ]; |
| 511 | y = src[1]; |
| 512 | attr = src[2]; |
| 513 | code = src[3]; |
| 663 | 514 | |
| 664 | | flipx = attr & 0x8000; |
| 665 | | flipy = attr & 0x4000; |
| 666 | | color = (attr & 0xf0) >> 4; |
| 515 | flipx = attr & 0x8000; |
| 516 | flipy = attr & 0x4000; |
| 517 | color = (attr & 0xf0) >> 4; |
| 667 | 518 | |
| 668 | | zoom = zoomtable[(y & 0xfc00) >> 10] << (16-8); |
| 519 | zoom = zoomtable[(y & 0xfc00) >> 10] << (16 - 8); |
| 669 | 520 | |
| 670 | | x = (x & 0x07ff) - metro_sprite_xoffs; |
| 671 | | y = (y & 0x03ff) - metro_sprite_yoffs; |
| 521 | x = (x & 0x07ff) - state->sprite_xoffs; |
| 522 | y = (y & 0x03ff) - state->sprite_yoffs; |
| 672 | 523 | |
| 673 | | width = (( (attr >> 11) & 0x7 ) + 1 ) * 8; |
| 674 | | height = (( (attr >> 8) & 0x7 ) + 1 ) * 8; |
| 524 | width = (((attr >> 11) & 0x7) + 1) * 8; |
| 525 | height = (((attr >> 8) & 0x7) + 1) * 8; |
| 675 | 526 | |
| 676 | | gfxdata = base_gfx + (8*8*4/8) * (((attr & 0x000f) << 16) + code); |
| 527 | gfxdata = base_gfx + (8 * 8 * 4 / 8) * (((attr & 0x000f) << 16) + code); |
| 677 | 528 | |
| 678 | | if (flip_screen_get(machine)) |
| 529 | if (state->flip_screen) |
| 679 | 530 | { |
| 680 | 531 | flipx = !flipx; x = max_x - x - width; |
| 681 | 532 | flipy = !flipy; y = max_y - y - height; |
| 682 | 533 | } |
| 683 | 534 | |
| 684 | | if (support_8bpp && color == 0xf) /* 8bpp */ |
| 535 | if (state->support_8bpp && color == 0xf) /* 8bpp */ |
| 685 | 536 | { |
| 686 | 537 | /* Bounds checking */ |
| 687 | | if ( (gfxdata + width * height - 1) >= gfx_max ) |
| 538 | if ((gfxdata + width * height - 1) >= gfx_max) |
| 688 | 539 | continue; |
| 689 | 540 | |
| 690 | 541 | gfx_element_build_temporary(&gfx, machine, gfxdata, width, height, width, 0, 256, 0); |
| r7640 | r7641 | |
| 700 | 551 | else |
| 701 | 552 | { |
| 702 | 553 | /* Bounds checking */ |
| 703 | | if ( (gfxdata + width/2 * height - 1) >= gfx_max ) |
| 554 | if ((gfxdata + width / 2 * height - 1) >= gfx_max) |
| 704 | 555 | continue; |
| 705 | 556 | |
| 706 | 557 | gfx_element_build_temporary(&gfx, machine, gfxdata, width, height, width/2, 0, 16, GFX_ELEMENT_PACKED); |
| r7640 | r7641 | |
| 716 | 567 | #if 0 |
| 717 | 568 | { /* Display priority + zoom on each sprite */ |
| 718 | 569 | char buf[80]; |
| 719 | | sprintf(buf, "%02X %02X",((src[ 0 ] & 0xf800) >> 11)^0x1f,((src[ 1 ] & 0xfc00) >> 10) ); |
| 570 | sprintf(buf, "%02X %02X", ((src[0] & 0xf800) >> 11) ^ 0x1f, ((src[1] & 0xfc00) >> 10)); |
| 720 | 571 | ui_draw_text(buf, x, y); |
| 721 | 572 | } |
| 722 | 573 | #endif |
| r7640 | r7641 | |
| 735 | 586 | |
| 736 | 587 | ***************************************************************************/ |
| 737 | 588 | |
| 738 | | static void draw_tilemap(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, tilemap_t *tmap, UINT32 flags, UINT32 priority, |
| 739 | | int sx, int sy, int wx, int wy) // scroll & window values |
| 589 | /* copy a 'window' from the large 2048x2048 (or 4096x4096 for 16x16 tiles) tilemap */ |
| 590 | |
| 591 | |
| 592 | static void draw_tilemap( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT32 flags, UINT32 pcode, |
| 593 | int sx, int sy, int wx, int wy, int big, UINT16* tilemapram, int layer ) |
| 740 | 594 | { |
| 741 | | #if 1 |
| 742 | | tilemap_set_scrollx(tmap, 0, sx - wx + (wx & 7)); |
| 743 | | tilemap_set_scrolly(tmap, 0, sy - wy + (wy & 7)); |
| 744 | | tilemap_draw(bitmap,cliprect,tmap, flags, priority); |
| 745 | | #else |
| 746 | | int x,y,i; |
| 747 | | const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen); |
| 595 | metro_state *state = (metro_state *)machine->driver_data; |
| 596 | int y; |
| 748 | 597 | |
| 749 | | /* sub tile placement */ |
| 750 | | // sx = sx - (wx & ~7) + (wx & 7); |
| 751 | | sx = sx - wx; |
| 752 | | sx = ( (sx & 0x7fff) - (sx & 0x8000) ) % ((WIN_NX-1)*8); |
| 598 | bitmap_t *priority_bitmap = machine->priority_bitmap; |
| 753 | 599 | |
| 754 | | // sy = sy - (wy & ~7) + (wy & 7); |
| 755 | | sy = sy - wy; |
| 756 | | sy = ( (sy & 0x7fff) - (sy & 0x8000) ) % ((WIN_NY-1)*8); |
| 600 | int width = big ? 4096 : 2048;//pixdata->width; |
| 601 | int height = big ? 4096 : 2048;//pixdata->height; |
| 757 | 602 | |
| 758 | | /* splitting point */ |
| 759 | | x = (WIN_NX-1)*8 - sx; |
| 603 | int scrwidth = bitmap->width; |
| 604 | int scrheight = bitmap->height; |
| 760 | 605 | |
| 761 | | y = (WIN_NY-1)*8 - sy; |
| 606 | int windowwidth = width >> 2; |
| 607 | int windowheight = height >> 3; |
| 762 | 608 | |
| 763 | | for ( i = 0; i < 4 ; i++ ) |
| 609 | if (!big) |
| 764 | 610 | { |
| 765 | | rectangle clip; |
| 611 | if (!state->bg_tilemap_enable[layer]) return; |
| 612 | } |
| 613 | else |
| 614 | { |
| 615 | if (!state->bg_tilemap_enable16[layer]) return; |
| 616 | } |
| 766 | 617 | |
| 767 | | tilemap_set_scrollx(tmap, 0, sx + ((i & 1) ? -x : 0)); |
| 768 | | tilemap_set_scrolly(tmap, 0, sy + ((i & 2) ? -y : 0)); |
| 769 | 618 | |
| 770 | | clip.min_x = x - ((i & 1) ? 0 : (WIN_NX-1)*8); |
| 771 | | clip.min_y = y - ((i & 2) ? 0 : (WIN_NY-1)*8); |
| 619 | if (!state->flip_screen) |
| 620 | { |
| 621 | sx -= state->bg_tilemap_scrolldx[layer]; |
| 622 | } |
| 623 | else |
| 624 | { |
| 625 | sx += state->bg_tilemap_scrolldx[layer]; |
| 626 | } |
| 772 | 627 | |
| 773 | | clip.max_x = clip.min_x + (WIN_NX-1)*8 - 1; |
| 774 | | clip.max_y = clip.min_y + (WIN_NY-1)*8 - 1; |
| 628 | for (y=0;y<scrheight;y++) |
| 629 | { |
| 630 | int scrolly = (sy+y-wy)&(windowheight-1); |
| 631 | int x; |
| 632 | UINT16* dst; |
| 633 | UINT8 *priority_baseaddr; |
| 634 | int srcline = (wy+scrolly)&(height-1); |
| 635 | int srctilerow = srcline >> (big ? 4 : 3); |
| 775 | 636 | |
| 776 | | if (clip.min_x > visarea->max_x) continue; |
| 777 | | if (clip.min_y > visarea->max_y) continue; |
| 637 | if (!state->flip_screen) |
| 638 | { |
| 639 | dst = BITMAP_ADDR16(bitmap, y, 0); |
| 640 | priority_baseaddr = BITMAP_ADDR8(priority_bitmap, y, 0); |
| 778 | 641 | |
| 779 | | if (clip.max_x < visarea->min_x) continue; |
| 780 | | if (clip.max_y < visarea->min_y) continue; |
| 642 | for (x=0;x<scrwidth;x++) |
| 643 | { |
| 644 | int scrollx = (sx+x-wx)&(windowwidth-1); |
| 645 | int srccol = (wx+scrollx)&(width-1); |
| 646 | int srctilecol = srccol >> (big ? 4 : 3); |
| 647 | int tileoffs = srctilecol + srctilerow * BIG_NX; |
| 781 | 648 | |
| 782 | | if (clip.min_x < visarea->min_x) clip.min_x = visarea->min_x; |
| 783 | | if (clip.max_x > visarea->max_x) clip.max_x = visarea->max_x; |
| 649 | UINT16 dat = 0; |
| 784 | 650 | |
| 785 | | if (clip.min_y < visarea->min_y) clip.min_y = visarea->min_y; |
| 786 | | if (clip.max_y > visarea->max_y) clip.max_y = visarea->max_y; |
| 651 | UINT16 tile = tilemapram[tileoffs]; |
| 652 | UINT8 draw = get_tile_pix(machine, tile, big ? (srccol&0xf) : (srccol&0x7), big ? (srcline&0xf) : (srcline&0x7), big, &dat); |
| 787 | 653 | |
| 788 | | /* The clip region's width must be a multiple of 8! |
| 789 | | This fact renderes the function useless, as far as |
| 790 | | we are concerned! */ |
| 791 | | tilemap_set_clip(tmap, &clip); |
| 792 | | tilemap_draw(bitmap,cliprect,tmap, flags, priority); |
| 654 | if (draw) |
| 655 | { |
| 656 | dst[x] = dat; |
| 657 | priority_baseaddr[x] = (priority_baseaddr[x] & (pcode >> 8)) | pcode; |
| 658 | } |
| 659 | } |
| 660 | } |
| 661 | else // flipped case |
| 662 | { |
| 663 | dst = BITMAP_ADDR16(bitmap, scrheight-y-1, 0); |
| 664 | priority_baseaddr = BITMAP_ADDR8(priority_bitmap, scrheight-y-1, 0); |
| 665 | |
| 666 | for (x=0;x<scrwidth;x++) |
| 667 | { |
| 668 | int scrollx = (sx+x-wx)&(windowwidth-1); |
| 669 | int srccol = (wx+scrollx)&(width-1); |
| 670 | int srctilecol = srccol >> (big ? 4 : 3); |
| 671 | int tileoffs = srctilecol + srctilerow * BIG_NX; |
| 672 | |
| 673 | UINT16 dat = 0; |
| 674 | |
| 675 | UINT16 tile = tilemapram[tileoffs]; |
| 676 | UINT8 draw = get_tile_pix(machine, tile, big ? (srccol&0xf) : (srccol&0x7), big ? (srcline&0xf) : (srcline&0x7), big, &dat); |
| 677 | |
| 678 | if (draw) |
| 679 | { |
| 680 | dst[scrwidth-x-1] = dat; |
| 681 | priority_baseaddr[scrwidth-x-1] = (priority_baseaddr[scrwidth-x-1] & (pcode >> 8)) | pcode; |
| 682 | } |
| 683 | } |
| 684 | } |
| 793 | 685 | } |
| 794 | | #endif |
| 795 | 686 | } |
| 796 | 687 | |
| 797 | | |
| 798 | 688 | /* Draw all the layers that match the given priority */ |
| 799 | | static void draw_layers(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri, int layers_ctrl) |
| 689 | static void draw_layers( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri, int layers_ctrl ) |
| 800 | 690 | { |
| 801 | | UINT16 layers_pri = metro_videoregs[0x10/2]; |
| 691 | metro_state *state = (metro_state *)machine->driver_data; |
| 692 | UINT16 layers_pri = state->videoregs[0x10 / 2]; |
| 802 | 693 | int layer; |
| 803 | 694 | |
| 804 | 695 | /* Draw all the layers with priority == pri */ |
| 805 | 696 | for (layer = 2; layer >= 0; layer--) // tilemap[2] below? |
| 806 | 697 | { |
| 807 | | if ( pri == ((layers_pri >> (layer*2)) & 3) ) |
| 698 | if (pri == ((layers_pri >> (layer * 2)) & 3)) |
| 808 | 699 | { |
| 809 | 700 | /* Scroll and Window values */ |
| 810 | | UINT16 sy = metro_scroll[layer * 2 + 0]; UINT16 sx = metro_scroll[layer * 2 + 1]; |
| 811 | | UINT16 wy = metro_window[layer * 2 + 0]; UINT16 wx = metro_window[layer * 2 + 1]; |
| 701 | UINT16 sy = state->scroll[layer * 2 + 0]; UINT16 sx = state->scroll[layer * 2 + 1]; |
| 702 | UINT16 wy = state->window[layer * 2 + 0]; UINT16 wx = state->window[layer * 2 + 1]; |
| 812 | 703 | |
| 813 | | if (layers_ctrl & (1<<layer)) // for debug |
| 704 | if (BIT(layers_ctrl, layer)) // for debug |
| 814 | 705 | { |
| 815 | | /* Only *one* of tilemap_16x16 & tilemap is enabled at any given time! */ |
| 816 | | draw_tilemap(machine, bitmap,cliprect,bg_tilemap[layer], 0, 1<<(3-pri), sx, sy, wx, wy); |
| 817 | | if (tilemap_16x16[layer]) draw_tilemap(machine, bitmap,cliprect,tilemap_16x16[layer], 0, 1<<(3-pri), sx, sy, wx, wy); |
| 818 | | } |
| 819 | | } |
| 820 | | } |
| 821 | | } |
| 706 | UINT16* tilemapram = 0; |
| 822 | 707 | |
| 708 | if (layer==0) tilemapram = state->vram_0; |
| 709 | else if (layer==1) tilemapram = state->vram_1; |
| 710 | else if (layer==2) tilemapram = state->vram_2; |
| 823 | 711 | |
| 712 | draw_tilemap(machine, bitmap, cliprect, 0, 1 << (3 - pri), sx, sy, wx, wy, 0, tilemapram, layer); |
| 824 | 713 | |
| 825 | | /* Dirty tilemaps when the tiles set changes */ |
| 826 | | static void dirty_tiles(int layer,UINT16 *vram) |
| 827 | | { |
| 828 | | int col,row; |
| 829 | | |
| 830 | | for (row = 0;row < WIN_NY;row++) |
| 831 | | { |
| 832 | | for (col = 0;col < WIN_NX;col++) |
| 833 | | { |
| 834 | | int offset = (col + metro_window[layer * 2 + 1] / 8) % BIG_NX + |
| 835 | | ((row + metro_window[layer * 2 + 0] / 8) % BIG_NY) * BIG_NX; |
| 836 | | UINT16 code = vram[offset]; |
| 837 | | |
| 838 | | if (!(code & 0x8000) && dirtyindex[(code & 0x1ff0) >> 4]) |
| 839 | | { |
| 840 | | tilemap_mark_tile_dirty(bg_tilemap[layer], row * WIN_NX + col ); |
| 841 | | if (tilemap_16x16[layer]) |
| 842 | | tilemap_mark_tile_dirty(tilemap_16x16[layer], row * WIN_NX + col ); |
| 714 | if (state->support_16x16) |
| 715 | draw_tilemap(machine, bitmap, cliprect, 0, 1 << (3 - pri), sx, sy, wx, wy, 1, tilemapram, layer); |
| 843 | 716 | } |
| 844 | 717 | } |
| 845 | 718 | } |
| 846 | 719 | } |
| 847 | 720 | |
| 848 | 721 | |
| 722 | |
| 849 | 723 | VIDEO_UPDATE( metro ) |
| 850 | 724 | { |
| 851 | | running_device *k053936 = devtag_get_device(screen->machine, "k053936"); |
| 852 | | int i,pri,layers_ctrl = -1; |
| 853 | | UINT16 screenctrl = *metro_screenctrl; |
| 725 | metro_state *state = (metro_state *)screen->machine->driver_data; |
| 726 | int pri, layers_ctrl = -1; |
| 727 | UINT16 screenctrl = *state->screenctrl; |
| 854 | 728 | |
| 855 | | { |
| 856 | | int dirty = 0; |
| 729 | state->sprite_xoffs = state->videoregs[0x06 / 2] - video_screen_get_width(screen) / 2; |
| 730 | state->sprite_yoffs = state->videoregs[0x04 / 2] - video_screen_get_height(screen) / 2; |
| 857 | 731 | |
| 858 | | memset(dirtyindex,0,metro_tiletable_size/4); |
| 859 | | for (i = 0;i < metro_tiletable_size/4;i++) |
| 860 | | { |
| 861 | | UINT32 tile_new = (metro_tiletable[2*i + 0] << 16 ) + metro_tiletable[2*i + 1]; |
| 862 | | UINT32 tile_old = (metro_tiletable_old[2*i + 0] << 16 ) + metro_tiletable_old[2*i + 1]; |
| 863 | | |
| 864 | | if ((tile_new ^ tile_old) & 0x0fffffff) |
| 865 | | { |
| 866 | | dirtyindex[i] = 1; |
| 867 | | dirty = 1; |
| 868 | | } |
| 869 | | } |
| 870 | | memcpy(metro_tiletable_old,metro_tiletable,metro_tiletable_size); |
| 871 | | |
| 872 | | if (dirty) |
| 873 | | { |
| 874 | | dirty_tiles(0,metro_vram_0); |
| 875 | | dirty_tiles(1,metro_vram_1); |
| 876 | | dirty_tiles(2,metro_vram_2); |
| 877 | | } |
| 878 | | } |
| 879 | | |
| 880 | | metro_sprite_xoffs = metro_videoregs[0x06/2] - video_screen_get_width(screen) / 2; |
| 881 | | metro_sprite_yoffs = metro_videoregs[0x04/2] - video_screen_get_height(screen) / 2; |
| 882 | | |
| 883 | 732 | /* The background color is selected by a register */ |
| 884 | | bitmap_fill(screen->machine->priority_bitmap,cliprect,0); |
| 885 | | bitmap_fill(bitmap,cliprect,((metro_videoregs[0x12/2] & 0x0fff)) + 0x1000); |
| 733 | bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); |
| 734 | bitmap_fill(bitmap, cliprect, ((state->videoregs[0x12/2] & 0x0fff)) + 0x1000); |
| 886 | 735 | |
| 887 | 736 | /* Screen Control Register: |
| 888 | 737 | |
| r7640 | r7641 | |
| 895 | 744 | ---- ---- ---4 32-- |
| 896 | 745 | ---- ---- ---- --1- ? Blank Screen |
| 897 | 746 | ---- ---- ---- ---0 Flip Screen */ |
| 898 | | if (screenctrl & 2) return 0; |
| 899 | | flip_screen_set(screen->machine, screenctrl & 1); |
| 747 | if (screenctrl & 2) |
| 748 | return 0; |
| 900 | 749 | |
| 750 | //flip_screen_set(screen->machine, screenctrl & 1); |
| 751 | state->flip_screen = screenctrl & 1; |
| 752 | |
| 901 | 753 | /* If the game supports 16x16 tiles, make sure that the |
| 902 | 754 | 16x16 and 8x8 tilemaps of a given layer are not simultaneously |
| 903 | 755 | enabled! */ |
| 904 | | if (support_16x16) |
| 756 | if (state->support_16x16) |
| 905 | 757 | { |
| 906 | 758 | int layer; |
| 907 | 759 | |
| 908 | | for (layer = 0;layer < 3;layer++) |
| 760 | for (layer = 0; layer < 3; layer++) |
| 909 | 761 | { |
| 910 | 762 | int big = screenctrl & (0x0020 << layer); |
| 911 | 763 | |
| 912 | | tilemap_set_enable(bg_tilemap[layer],!big); |
| 913 | | tilemap_set_enable(tilemap_16x16[layer],big); |
| 764 | state->bg_tilemap_enable[layer] = !big; |
| 765 | state->bg_tilemap_enable16[layer] = big; |
| 914 | 766 | } |
| 915 | 767 | } |
| 916 | 768 | |
| r7640 | r7641 | |
| 925 | 777 | if (input_code_pressed(screen->machine, KEYCODE_A)) msk |= 8; |
| 926 | 778 | if (msk != 0) |
| 927 | 779 | { |
| 928 | | bitmap_fill(bitmap,cliprect,0); |
| 780 | bitmap_fill(bitmap, cliprect, 0); |
| 929 | 781 | layers_ctrl &= msk; |
| 930 | 782 | } |
| 931 | 783 | |
| 932 | 784 | popmessage("l %x-%x-%x r %04x %04x %04x", |
| 933 | | (metro_videoregs[0x10/2]&0x30)>>4,(metro_videoregs[0x10/2]&0xc)>>2,metro_videoregs[0x10/2]&3, |
| 934 | | metro_videoregs[0x02/2], metro_videoregs[0x12/2], |
| 935 | | *metro_screenctrl); |
| 785 | (state->videoregs[0x10/2] & 0x30) >> 4, (state->videoregs[0x10/2] & 0xc) >> 2, state->videoregs[0x10/2] & 3, |
| 786 | state->videoregs[0x02/2], state->videoregs[0x12/2], |
| 787 | *state->screenctrl); |
| 936 | 788 | } |
| 937 | 789 | #endif |
| 938 | 790 | |
| 939 | | if (has_zoom) |
| 940 | | k053936_zoom_draw(k053936, bitmap, cliprect, metro_K053936_tilemap, 0, 0, 1); |
| 791 | if (state->has_zoom) |
| 792 | k053936_zoom_draw(state->k053936, bitmap, cliprect, state->k053936_tilemap, 0, 0, 1); |
| 941 | 793 | |
| 942 | 794 | for (pri = 3; pri >= 0; pri--) |
| 943 | | draw_layers(screen->machine, bitmap,cliprect,pri,layers_ctrl); |
| 795 | draw_layers(screen->machine, bitmap, cliprect, pri, layers_ctrl); |
| 944 | 796 | |
| 945 | 797 | if (layers_ctrl & 0x08) |
| 946 | | metro_draw_sprites(screen->machine, bitmap,cliprect); |
| 798 | metro_draw_sprites(screen->machine, bitmap, cliprect); |
| 947 | 799 | return 0; |
| 948 | 800 | } |
src/mame/drivers/ddenlovr.c
| r7640 | r7641 | |
| 105 | 105 | #include "includes/dynax.h" |
| 106 | 106 | |
| 107 | 107 | |
| 108 | | UINT8 *ddenlovr_pixmap[8]; |
| 109 | | static int extra_layers; |
| 110 | | |
| 111 | | |
| 112 | 108 | /*************************************************************************** |
| 113 | 109 | |
| 114 | 110 | Blitter Data Format |
| r7640 | r7641 | |
| 135 | 131 | |
| 136 | 132 | ***************************************************************************/ |
| 137 | 133 | |
| 138 | | static int ddenlovr_dest_layer; |
| 139 | | static int ddenlovr_blit_flip; |
| 140 | | static int ddenlovr_blit_x; |
| 141 | | static int ddenlovr_blit_y; |
| 142 | | static int ddenlovr_blit_address; |
| 143 | | static int ddenlovr_blit_pen,ddenlovr_blit_pen_mode; |
| 144 | | static int ddenlovr_blitter_irq_flag,ddenlovr_blitter_irq_enable; |
| 145 | | static int ddenlovr_rect_width, ddenlovr_rect_height; |
| 146 | | static int ddenlovr_clip_width, ddenlovr_clip_height; |
| 147 | | static int ddenlovr_line_length; |
| 148 | | static int ddenlovr_clip_ctrl,ddenlovr_clip_x,ddenlovr_clip_y; |
| 149 | | static int ddenlovr_scroll[8*2]; |
| 150 | | static int ddenlovr_priority, ddenlovr_priority2; |
| 151 | | static int ddenlovr_bgcolor, ddenlovr_bgcolor2; |
| 152 | | static int ddenlovr_layer_enable, ddenlovr_layer_enable2; |
| 153 | | static int ddenlovr_palette_base[8], ddenlovr_palette_mask[8]; |
| 154 | | static int ddenlovr_transparency_pen[8], ddenlovr_transparency_mask[8]; |
| 155 | | static int ddenlovr_blit_reg; |
| 156 | | static int ddenlovr_blit_pen_mask; // not implemented |
| 157 | | static int ddenlovr_blit_rom_bits; // usually 8, 16 in hanakanz |
| 158 | | static const int *ddenlovr_blit_commands; |
| 159 | | |
| 160 | 134 | enum { BLIT_NEXT = 0, BLIT_LINE, BLIT_COPY, BLIT_SKIP, BLIT_CHANGE_NUM, BLIT_CHANGE_PEN, BLIT_UNKNOWN, BLIT_STOP }; |
| 161 | 135 | // 0 1 2 3 4 5 6 7 |
| 162 | 136 | static const int ddenlovr_commands[8] = { BLIT_NEXT, BLIT_LINE, BLIT_COPY, BLIT_SKIP, BLIT_UNKNOWN, BLIT_CHANGE_NUM, BLIT_CHANGE_PEN, BLIT_STOP }; |
| 163 | 137 | static const int hanakanz_commands[8] = { BLIT_NEXT, BLIT_CHANGE_PEN, BLIT_CHANGE_NUM, BLIT_UNKNOWN, BLIT_SKIP, BLIT_COPY, BLIT_LINE, BLIT_STOP }; |
| 164 | 138 | static const int mjflove_commands[8] = { BLIT_STOP, BLIT_CHANGE_PEN, BLIT_CHANGE_NUM, BLIT_UNKNOWN, BLIT_SKIP, BLIT_COPY, BLIT_LINE, BLIT_NEXT }; |
| 165 | 139 | |
| 166 | | VIDEO_START(ddenlovr) |
| 140 | VIDEO_START( ddenlovr ) |
| 167 | 141 | { |
| 142 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 168 | 143 | int i; |
| 144 | |
| 169 | 145 | for (i = 0; i < 8; i++) |
| 170 | 146 | { |
| 171 | | ddenlovr_pixmap[i] = auto_alloc_array(machine, UINT8, 512*512); |
| 172 | | ddenlovr_scroll[i*2+0] = ddenlovr_scroll[i*2+1] = 0; |
| 147 | state->ddenlovr_pixmap[i] = auto_alloc_array(machine, UINT8, 512 * 512); |
| 148 | state->ddenlovr_scroll[i * 2 + 0] = state->ddenlovr_scroll[i * 2 + 1] = 0; |
| 173 | 149 | } |
| 174 | 150 | |
| 175 | | extra_layers = 0; |
| 151 | state->extra_layers = 0; |
| 176 | 152 | |
| 177 | | ddenlovr_clip_ctrl = 0x0f; |
| 178 | | ddenlovr_layer_enable = ddenlovr_layer_enable2 = 0x0f; |
| 179 | | ddenlovr_blit_pen_mask = 0xff; |
| 153 | state->ddenlovr_clip_ctrl = 0x0f; |
| 154 | state->ddenlovr_layer_enable = state->ddenlovr_layer_enable2 = 0x0f; |
| 155 | state->ddenlovr_blit_pen_mask = 0xff; |
| 180 | 156 | |
| 181 | 157 | // older games do not set these !? |
| 182 | | ddenlovr_clip_width = 0x400; |
| 183 | | ddenlovr_clip_height = 0x400; |
| 158 | state->ddenlovr_clip_width = 0x400; |
| 159 | state->ddenlovr_clip_height = 0x400; |
| 184 | 160 | |
| 185 | | ddenlovr_blit_rom_bits = 8; |
| 186 | | ddenlovr_blit_commands = ddenlovr_commands; |
| 161 | state->ddenlovr_blit_rom_bits = 8; |
| 162 | state->ddenlovr_blit_commands = ddenlovr_commands; |
| 163 | |
| 164 | /* init to 0 the remaining elements */ |
| 165 | state->ddenlovr_dest_layer = 0; |
| 166 | state->ddenlovr_blit_flip = 0; |
| 167 | state->ddenlovr_blit_x = 0; |
| 168 | state->ddenlovr_blit_y = 0; |
| 169 | state->ddenlovr_blit_address = 0; |
| 170 | state->ddenlovr_blit_pen = 0; |
| 171 | state->ddenlovr_blit_pen_mode = 0; |
| 172 | state->ddenlovr_blitter_irq_flag = 0; |
| 173 | state->ddenlovr_blitter_irq_enable = 0; |
| 174 | state->ddenlovr_rect_width = 0; |
| 175 | state->ddenlovr_rect_height = 0; |
| 176 | state->ddenlovr_line_length = 0; |
| 177 | state->ddenlovr_clip_x = 0; |
| 178 | state->ddenlovr_clip_y = 0; |
| 179 | state->ddenlovr_priority = 0; |
| 180 | state->ddenlovr_priority2 = 0; |
| 181 | state->ddenlovr_bgcolor = 0; |
| 182 | state->ddenlovr_bgcolor2 = 0; |
| 183 | state->ddenlovr_blit_latch = 0; |
| 184 | state->ddenlovr_blit_regs[0] = 0; |
| 185 | state->ddenlovr_blit_regs[1] = 0; |
| 186 | |
| 187 | for (i = 0; i < 8; i++) |
| 188 | { |
| 189 | state->ddenlovr_palette_base[i] = 0; |
| 190 | state->ddenlovr_palette_mask[i] = 0; |
| 191 | state->ddenlovr_transparency_pen[i] = 0; |
| 192 | state->ddenlovr_transparency_mask[i] = 0; |
| 193 | } |
| 194 | |
| 195 | /* register save states */ |
| 196 | state_save_register_global(machine, state->ddenlovr_dest_layer); |
| 197 | state_save_register_global(machine, state->ddenlovr_blit_flip); |
| 198 | state_save_register_global(machine, state->ddenlovr_blit_x); |
| 199 | state_save_register_global(machine, state->ddenlovr_blit_y); |
| 200 | state_save_register_global(machine, state->ddenlovr_blit_address); |
| 201 | state_save_register_global(machine, state->ddenlovr_blit_pen); |
| 202 | state_save_register_global(machine, state->ddenlovr_blit_pen_mode); |
| 203 | state_save_register_global(machine, state->ddenlovr_blitter_irq_flag); |
| 204 | state_save_register_global(machine, state->ddenlovr_blitter_irq_enable); |
| 205 | state_save_register_global(machine, state->ddenlovr_rect_width); |
| 206 | state_save_register_global(machine, state->ddenlovr_rect_height); |
| 207 | state_save_register_global(machine, state->ddenlovr_clip_width); |
| 208 | state_save_register_global(machine, state->ddenlovr_clip_height); |
| 209 | state_save_register_global(machine, state->ddenlovr_line_length); |
| 210 | state_save_register_global(machine, state->ddenlovr_clip_ctrl); |
| 211 | state_save_register_global(machine, state->ddenlovr_clip_x); |
| 212 | state_save_register_global(machine, state->ddenlovr_clip_y); |
| 213 | state_save_register_global_array(machine, state->ddenlovr_scroll); |
| 214 | state_save_register_global(machine, state->ddenlovr_priority); |
| 215 | state_save_register_global(machine, state->ddenlovr_priority2); |
| 216 | state_save_register_global(machine, state->ddenlovr_bgcolor); |
| 217 | state_save_register_global(machine, state->ddenlovr_bgcolor2); |
| 218 | state_save_register_global(machine, state->ddenlovr_layer_enable); |
| 219 | state_save_register_global(machine, state->ddenlovr_layer_enable2); |
| 220 | state_save_register_global_array(machine, state->ddenlovr_palette_base); |
| 221 | state_save_register_global_array(machine, state->ddenlovr_palette_mask); |
| 222 | state_save_register_global_array(machine, state->ddenlovr_transparency_pen); |
| 223 | state_save_register_global_array(machine, state->ddenlovr_transparency_mask); |
| 224 | state_save_register_global(machine, state->ddenlovr_blit_latch); |
| 225 | state_save_register_global(machine, state->ddenlovr_blit_pen_mask); |
| 226 | state_save_register_global_array(machine, state->ddenlovr_blit_regs); |
| 227 | |
| 228 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[0], 512 * 512); |
| 229 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[1], 512 * 512); |
| 230 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[2], 512 * 512); |
| 231 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[3], 512 * 512); |
| 232 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[4], 512 * 512); |
| 233 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[5], 512 * 512); |
| 234 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[6], 512 * 512); |
| 235 | state_save_register_global_pointer(machine, state->ddenlovr_pixmap[7], 512 * 512); |
| 187 | 236 | } |
| 188 | 237 | |
| 189 | | static VIDEO_START(mmpanic) |
| 238 | static VIDEO_START( mmpanic ) |
| 190 | 239 | { |
| 240 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 241 | |
| 191 | 242 | VIDEO_START_CALL(ddenlovr); |
| 192 | 243 | |
| 193 | | extra_layers = 1; |
| 244 | state->extra_layers = 1; |
| 194 | 245 | } |
| 195 | 246 | |
| 196 | | static VIDEO_START(hanakanz) |
| 247 | static VIDEO_START( hanakanz ) |
| 197 | 248 | { |
| 249 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 250 | |
| 198 | 251 | VIDEO_START_CALL(ddenlovr); |
| 199 | 252 | |
| 200 | | ddenlovr_blit_rom_bits = 16; |
| 201 | | ddenlovr_blit_commands = hanakanz_commands; |
| 253 | state->ddenlovr_blit_rom_bits = 16; |
| 254 | state->ddenlovr_blit_commands = hanakanz_commands; |
| 202 | 255 | } |
| 203 | 256 | |
| 204 | | static VIDEO_START(mjflove) |
| 257 | static VIDEO_START( mjflove ) |
| 205 | 258 | { |
| 259 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 260 | |
| 206 | 261 | VIDEO_START_CALL(ddenlovr); |
| 207 | 262 | |
| 208 | | ddenlovr_blit_commands = mjflove_commands; |
| 263 | state->ddenlovr_blit_commands = mjflove_commands; |
| 209 | 264 | } |
| 210 | 265 | |
| 211 | 266 | static void ddenlovr_flipscreen_w( UINT8 data ) |
| 212 | 267 | { |
| 213 | | logerror("flipscreen = %02x (%s)\n",data,(data&1)?"off":"on"); |
| 268 | logerror("flipscreen = %02x (%s)\n", data, (data & 1) ? "off" : "on"); |
| 214 | 269 | } |
| 215 | 270 | |
| 216 | | static void ddenlovr_blit_flip_w( UINT8 data ) |
| 271 | static void ddenlovr_blit_flip_w( running_machine *machine, UINT8 data ) |
| 217 | 272 | { |
| 218 | | if ((data ^ ddenlovr_blit_flip) & 0xec) |
| 273 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 274 | |
| 275 | if ((data ^ state->ddenlovr_blit_flip) & 0xec) |
| 219 | 276 | { |
| 220 | 277 | #ifdef MAME_DEBUG |
| 221 | | popmessage("warning ddenlovr_blit_flip = %02x",data); |
| 278 | popmessage("warning ddenlovr_blit_flip = %02x", data); |
| 222 | 279 | #endif |
| 223 | | logerror("warning ddenlovr_blit_flip = %02x\n",data); |
| 280 | logerror("warning ddenlovr_blit_flip = %02x\n", data); |
| 224 | 281 | } |
| 225 | 282 | |
| 226 | | ddenlovr_blit_flip = data; |
| 283 | state->ddenlovr_blit_flip = data; |
| 227 | 284 | } |
| 228 | 285 | |
| 229 | 286 | WRITE8_HANDLER( ddenlovr_bgcolor_w ) |
| 230 | 287 | { |
| 231 | | ddenlovr_bgcolor = data; |
| 288 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 289 | state->ddenlovr_bgcolor = data; |
| 232 | 290 | } |
| 233 | 291 | |
| 234 | 292 | static WRITE8_HANDLER( ddenlovr_bgcolor2_w ) |
| 235 | 293 | { |
| 236 | | ddenlovr_bgcolor2 = data; |
| 294 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 295 | state->ddenlovr_bgcolor2 = data; |
| 237 | 296 | } |
| 238 | 297 | |
| 239 | 298 | static WRITE16_HANDLER( ddenlovr16_bgcolor_w ) |
| 240 | 299 | { |
| 241 | 300 | if (ACCESSING_BITS_0_7) |
| 242 | | ddenlovr_bgcolor_w(space,offset,data); |
| 301 | ddenlovr_bgcolor_w(space, offset, data); |
| 243 | 302 | } |
| 244 | 303 | |
| 245 | 304 | |
| 246 | 305 | WRITE8_HANDLER( ddenlovr_priority_w ) |
| 247 | 306 | { |
| 248 | | ddenlovr_priority = data; |
| 307 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 308 | state->ddenlovr_priority = data; |
| 249 | 309 | } |
| 250 | 310 | |
| 251 | 311 | static WRITE8_HANDLER( ddenlovr_priority2_w ) |
| 252 | 312 | { |
| 253 | | ddenlovr_priority2 = data; |
| 313 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 314 | state->ddenlovr_priority2 = data; |
| 254 | 315 | } |
| 255 | 316 | |
| 256 | 317 | static WRITE16_HANDLER( ddenlovr16_priority_w ) |
| 257 | 318 | { |
| 258 | 319 | if (ACCESSING_BITS_0_7) |
| 259 | | ddenlovr_priority_w(space,offset,data); |
| 320 | ddenlovr_priority_w(space, offset, data); |
| 260 | 321 | } |
| 261 | 322 | |
| 262 | 323 | |
| 263 | 324 | WRITE8_HANDLER( ddenlovr_layer_enable_w ) |
| 264 | 325 | { |
| 265 | | ddenlovr_layer_enable = data; |
| 326 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 327 | state->ddenlovr_layer_enable = data; |
| 266 | 328 | } |
| 267 | 329 | |
| 268 | 330 | static WRITE8_HANDLER( ddenlovr_layer_enable2_w ) |
| 269 | 331 | { |
| 270 | | ddenlovr_layer_enable2 = data; |
| 332 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 333 | state->ddenlovr_layer_enable2 = data; |
| 271 | 334 | } |
| 272 | 335 | |
| 273 | 336 | |
| 274 | 337 | static WRITE16_HANDLER( ddenlovr16_layer_enable_w ) |
| 275 | 338 | { |
| 276 | 339 | if (ACCESSING_BITS_0_7) |
| 277 | | ddenlovr_layer_enable_w(space,offset,data); |
| 340 | ddenlovr_layer_enable_w(space, offset, data); |
| 278 | 341 | } |
| 279 | 342 | |
| 280 | 343 | |
| 281 | 344 | |
| 282 | | |
| 283 | | static void do_plot(int x,int y,int pen) |
| 345 | static void do_plot( running_machine *machine, int x, int y, int pen ) |
| 284 | 346 | { |
| 347 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 285 | 348 | int addr, temp; |
| 286 | 349 | int xclip, yclip; |
| 287 | 350 | |
| r7640 | r7641 | |
| 289 | 352 | x &= 0x1ff; |
| 290 | 353 | |
| 291 | 354 | // swap x & y (see hanakanz gal check) |
| 292 | | if (ddenlovr_blit_flip & 0x10) { temp = x; x = y; y = temp; } |
| 355 | if (state->ddenlovr_blit_flip & 0x10) { temp = x; x = y; y = temp; } |
| 293 | 356 | |
| 294 | 357 | // clipping rectangle (see hanakanz / hkagerou gal check) |
| 295 | 358 | #if 0 |
| 296 | | xclip = (x < ddenlovr_clip_x) || (x > ddenlovr_clip_x+ddenlovr_clip_width); |
| 297 | | yclip = (y < ddenlovr_clip_y) || (y > ddenlovr_clip_y+ddenlovr_clip_height); |
| 359 | xclip = (x < state->ddenlovr_clip_x) || (x > state->ddenlovr_clip_x + state->ddenlovr_clip_width); |
| 360 | yclip = (y < state->ddenlovr_clip_y) || (y > state->ddenlovr_clip_y + state->ddenlovr_clip_height); |
| 298 | 361 | #else |
| 299 | | xclip = (x < ddenlovr_clip_x) || (x > ddenlovr_clip_width); |
| 300 | | yclip = (y < ddenlovr_clip_y) || (y > ddenlovr_clip_height); |
| 362 | xclip = (x < state->ddenlovr_clip_x) || (x > state->ddenlovr_clip_width); |
| 363 | yclip = (y < state->ddenlovr_clip_y) || (y > state->ddenlovr_clip_height); |
| 301 | 364 | #endif |
| 302 | 365 | |
| 303 | | if (!(ddenlovr_clip_ctrl & 1) && xclip) return; |
| 304 | | if (!(ddenlovr_clip_ctrl & 2) && !xclip) return; |
| 305 | | if (!(ddenlovr_clip_ctrl & 4) && yclip) return; |
| 306 | | if (!(ddenlovr_clip_ctrl & 8) && !yclip) return; |
| 366 | if (!(state->ddenlovr_clip_ctrl & 1) && xclip) return; |
| 367 | if (!(state->ddenlovr_clip_ctrl & 2) && !xclip) return; |
| 368 | if (!(state->ddenlovr_clip_ctrl & 4) && yclip) return; |
| 369 | if (!(state->ddenlovr_clip_ctrl & 8) && !yclip) return; |
| 307 | 370 | |
| 308 | 371 | addr = 512 * y + x; |
| 309 | 372 | |
| 310 | | if (ddenlovr_dest_layer & 0x0001) ddenlovr_pixmap[0][addr] = pen; |
| 311 | | if (ddenlovr_dest_layer & 0x0002) ddenlovr_pixmap[1][addr] = pen; |
| 312 | | if (ddenlovr_dest_layer & 0x0004) ddenlovr_pixmap[2][addr] = pen; |
| 313 | | if (ddenlovr_dest_layer & 0x0008) ddenlovr_pixmap[3][addr] = pen; |
| 373 | if (state->ddenlovr_dest_layer & 0x0001) state->ddenlovr_pixmap[0][addr] = pen; |
| 374 | if (state->ddenlovr_dest_layer & 0x0002) state->ddenlovr_pixmap[1][addr] = pen; |
| 375 | if (state->ddenlovr_dest_layer & 0x0004) state->ddenlovr_pixmap[2][addr] = pen; |
| 376 | if (state->ddenlovr_dest_layer & 0x0008) state->ddenlovr_pixmap[3][addr] = pen; |
| 314 | 377 | |
| 315 | | if (!extra_layers) return; |
| 378 | if (!state->extra_layers) return; |
| 316 | 379 | |
| 317 | | if (ddenlovr_dest_layer & 0x0100) ddenlovr_pixmap[4][addr] = pen; |
| 318 | | if (ddenlovr_dest_layer & 0x0200) ddenlovr_pixmap[5][addr] = pen; |
| 319 | | if (ddenlovr_dest_layer & 0x0400) ddenlovr_pixmap[6][addr] = pen; |
| 320 | | if (ddenlovr_dest_layer & 0x0800) ddenlovr_pixmap[7][addr] = pen; |
| 380 | if (state->ddenlovr_dest_layer & 0x0100) state->ddenlovr_pixmap[4][addr] = pen; |
| 381 | if (state->ddenlovr_dest_layer & 0x0200) state->ddenlovr_pixmap[5][addr] = pen; |
| 382 | if (state->ddenlovr_dest_layer & 0x0400) state->ddenlovr_pixmap[6][addr] = pen; |
| 383 | if (state->ddenlovr_dest_layer & 0x0800) state->ddenlovr_pixmap[7][addr] = pen; |
| 321 | 384 | } |
| 322 | 385 | |
| 323 | 386 | |
| 324 | | INLINE int fetch_bit(UINT8 *src_data,int src_len,int *bit_addr) |
| 387 | INLINE int fetch_bit( UINT8 *src_data, int src_len, int *bit_addr ) |
| 325 | 388 | { |
| 326 | 389 | int baddr = *bit_addr; |
| 327 | 390 | |
| 328 | 391 | *bit_addr = ((*bit_addr) + 1) & 0x7ffffff; |
| 329 | 392 | |
| 330 | | if (baddr/8 >= src_len) |
| 393 | if (baddr / 8 >= src_len) |
| 331 | 394 | { |
| 332 | 395 | #ifdef MAME_DEBUG |
| 333 | | popmessage("GFX ROM OVER %06x",baddr/8); |
| 396 | popmessage("GFX ROM OVER %06x", baddr / 8); |
| 334 | 397 | #endif |
| 335 | 398 | return 1; |
| 336 | 399 | } |
| r7640 | r7641 | |
| 338 | 401 | return (src_data[baddr / 8] >> (7 - (baddr & 7))) & 1; |
| 339 | 402 | } |
| 340 | 403 | |
| 341 | | INLINE int fetch_word(UINT8 *src_data,int src_len,int *bit_addr,int word_len) |
| 404 | INLINE int fetch_word( UINT8 *src_data, int src_len, int *bit_addr, int word_len ) |
| 342 | 405 | { |
| 343 | 406 | int res = 0; |
| 344 | 407 | |
| 345 | 408 | while (word_len--) |
| 346 | 409 | { |
| 347 | | res = (res << 1) | fetch_bit(src_data,src_len,bit_addr); |
| 410 | res = (res << 1) | fetch_bit(src_data, src_len, bit_addr); |
| 348 | 411 | } |
| 349 | 412 | return res; |
| 350 | 413 | } |
| 351 | 414 | |
| 352 | 415 | |
| 353 | 416 | |
| 354 | | INLINE void log_draw_error(int src, int cmd) |
| 417 | INLINE void log_draw_error( int src, int cmd ) |
| 355 | 418 | { |
| 356 | 419 | #ifdef MAME_DEBUG |
| 357 | | popmessage("%06x: warning unknown pixel command %02x",src,cmd); |
| 420 | popmessage("%06x: warning unknown pixel command %02x", src, cmd); |
| 358 | 421 | #endif |
| 359 | | logerror("%06x: warning unknown pixel command %02x\n",src,cmd); |
| 422 | logerror("%06x: warning unknown pixel command %02x\n", src, cmd); |
| 360 | 423 | } |
| 361 | 424 | |
| 362 | 425 | /* Copy from ROM |
| r7640 | r7641 | |
| 370 | 433 | 06 blit_pen_mode (replace values stored in ROM) |
| 371 | 434 | */ |
| 372 | 435 | |
| 373 | | static int blit_draw(running_machine *machine, int src,int sx) |
| 436 | static int blit_draw( running_machine *machine, int src, int sx ) |
| 374 | 437 | { |
| 438 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 375 | 439 | UINT8 *src_data = memory_region(machine, "blitter"); |
| 376 | 440 | int src_len = memory_region_length(machine, "blitter"); |
| 377 | | int bit_addr = (src & 0xffffff) * ddenlovr_blit_rom_bits; /* convert to bit address */ |
| 441 | int bit_addr = (src & 0xffffff) * state->ddenlovr_blit_rom_bits; /* convert to bit address */ |
| 378 | 442 | int pen_size, arg_size, cmd; |
| 379 | 443 | int x; |
| 380 | | int xinc = (ddenlovr_blit_flip & 1) ? -1 : 1; |
| 381 | | int yinc = (ddenlovr_blit_flip & 2) ? -1 : 1; |
| 444 | int xinc = (state->ddenlovr_blit_flip & 1) ? -1 : 1; |
| 445 | int yinc = (state->ddenlovr_blit_flip & 2) ? -1 : 1; |
| 382 | 446 | |
| 383 | | pen_size = fetch_word(src_data,src_len,&bit_addr,4) + 1; |
| 384 | | arg_size = fetch_word(src_data,src_len,&bit_addr,4) + 1; |
| 447 | pen_size = fetch_word(src_data, src_len, &bit_addr, 4) + 1; |
| 448 | arg_size = fetch_word(src_data, src_len, &bit_addr, 4) + 1; |
| 385 | 449 | |
| 386 | 450 | #ifdef MAME_DEBUG |
| 387 | 451 | if (pen_size > 4 || arg_size > 8) |
| 388 | | popmessage("warning: pen_size %d arg_size %d",pen_size,arg_size); |
| 452 | popmessage("warning: pen_size %d arg_size %d", pen_size, arg_size); |
| 389 | 453 | #endif |
| 390 | 454 | |
| 391 | 455 | // sryudens game bug |
| r7640 | r7641 | |
| 396 | 460 | |
| 397 | 461 | for (;;) |
| 398 | 462 | { |
| 399 | | cmd = fetch_word(src_data,src_len,&bit_addr,3); |
| 400 | | switch ( ddenlovr_blit_commands[cmd] ) |
| 463 | cmd = fetch_word(src_data, src_len, &bit_addr, 3); |
| 464 | switch (state->ddenlovr_blit_commands[cmd]) |
| 401 | 465 | { |
| 402 | 466 | case BLIT_NEXT: |
| 403 | 467 | /* next line */ |
| 404 | | ddenlovr_blit_y += yinc; |
| 468 | state->ddenlovr_blit_y += yinc; |
| 405 | 469 | x = sx; |
| 406 | 470 | break; |
| 407 | 471 | |
| 408 | 472 | case BLIT_LINE: |
| 409 | 473 | { |
| 410 | | int length = fetch_word(src_data,src_len,&bit_addr,arg_size); |
| 411 | | int pen = fetch_word(src_data,src_len,&bit_addr,pen_size); |
| 412 | | if (ddenlovr_blit_pen_mode) pen = (ddenlovr_blit_pen & 0x0f); |
| 413 | | pen |= ddenlovr_blit_pen & 0xf0; |
| 474 | int length = fetch_word(src_data, src_len, &bit_addr, arg_size); |
| 475 | int pen = fetch_word(src_data, src_len, &bit_addr, pen_size); |
| 476 | |
| 477 | if (state->ddenlovr_blit_pen_mode) |
| 478 | pen = (state->ddenlovr_blit_pen & 0x0f); |
| 479 | pen |= state->ddenlovr_blit_pen & 0xf0; |
| 480 | |
| 414 | 481 | while (length-- >= 0) |
| 415 | 482 | { |
| 416 | | do_plot(x,ddenlovr_blit_y,pen); |
| 483 | do_plot(machine, x, state->ddenlovr_blit_y, pen); |
| 417 | 484 | x += xinc; |
| 418 | 485 | } |
| 419 | 486 | } |
| r7640 | r7641 | |
| 421 | 488 | |
| 422 | 489 | case BLIT_COPY: |
| 423 | 490 | { |
| 424 | | int length = fetch_word(src_data,src_len,&bit_addr,arg_size); |
| 491 | int length = fetch_word(src_data, src_len, &bit_addr, arg_size); |
| 492 | |
| 425 | 493 | while (length-- >= 0) |
| 426 | 494 | { |
| 427 | | int pen = fetch_word(src_data,src_len,&bit_addr,pen_size); |
| 428 | | if (ddenlovr_blit_pen_mode) pen = (ddenlovr_blit_pen & 0x0f); |
| 429 | | pen |= ddenlovr_blit_pen & 0xf0; |
| 430 | | do_plot(x,ddenlovr_blit_y,pen); |
| 495 | int pen = fetch_word(src_data, src_len, &bit_addr, pen_size); |
| 496 | if (state->ddenlovr_blit_pen_mode) |
| 497 | pen = (state->ddenlovr_blit_pen & 0x0f); |
| 498 | pen |= state->ddenlovr_blit_pen & 0xf0; |
| 499 | |
| 500 | do_plot(machine, x, state->ddenlovr_blit_y, pen); |
| 431 | 501 | x += xinc; |
| 432 | 502 | } |
| 433 | 503 | } |
| 434 | 504 | break; |
| 435 | 505 | |
| 436 | 506 | case BLIT_SKIP: |
| 437 | | x += xinc * fetch_word(src_data,src_len,&bit_addr,arg_size); |
| 507 | x += xinc * fetch_word(src_data, src_len, &bit_addr, arg_size); |
| 438 | 508 | break; |
| 439 | 509 | |
| 440 | 510 | case BLIT_CHANGE_NUM: |
| 441 | | arg_size = fetch_word(src_data,src_len,&bit_addr,4) + 1; |
| 511 | arg_size = fetch_word(src_data, src_len, &bit_addr, 4) + 1; |
| 442 | 512 | break; |
| 443 | 513 | |
| 444 | 514 | case BLIT_CHANGE_PEN: |
| 445 | | pen_size = fetch_word(src_data,src_len,&bit_addr,3) + 1; |
| 515 | pen_size = fetch_word(src_data, src_len, &bit_addr, 3) + 1; |
| 446 | 516 | break; |
| 447 | 517 | |
| 448 | 518 | default: |
| 449 | | log_draw_error(src,cmd); |
| 519 | log_draw_error(src, cmd); |
| 450 | 520 | // fall through |
| 451 | 521 | case BLIT_STOP: |
| 452 | | return ((bit_addr + ddenlovr_blit_rom_bits - 1) / ddenlovr_blit_rom_bits) & 0xffffff; |
| 522 | return ((bit_addr + state->ddenlovr_blit_rom_bits - 1) / state->ddenlovr_blit_rom_bits) & 0xffffff; |
| 453 | 523 | } |
| 454 | 524 | } |
| 455 | 525 | } |
| r7640 | r7641 | |
| 458 | 528 | |
| 459 | 529 | /* Draw a simple rectangle |
| 460 | 530 | */ |
| 461 | | static void blit_rect_xywh(void) |
| 531 | static void blit_rect_xywh( running_machine *machine ) |
| 462 | 532 | { |
| 463 | | int x,y; |
| 533 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 534 | int x, y; |
| 464 | 535 | |
| 465 | 536 | #ifdef MAME_DEBUG |
| 466 | | // if (ddenlovr_clip_ctrl != 0x0f) |
| 467 | | // popmessage("RECT clipx=%03x clipy=%03x ctrl=%x",ddenlovr_clip_x,ddenlovr_clip_y,ddenlovr_clip_ctrl); |
| 537 | // if (state->ddenlovr_clip_ctrl != 0x0f) |
| 538 | // popmessage("RECT clipx=%03x clipy=%03x ctrl=%x", state->ddenlovr_clip_x, state->ddenlovr_clip_y, state->ddenlovr_clip_ctrl); |
| 468 | 539 | #endif |
| 469 | 540 | |
| 470 | | for (y = 0; y <= ddenlovr_rect_height; y++) |
| 471 | | for (x = 0; x <= ddenlovr_rect_width; x++) |
| 472 | | do_plot( x + ddenlovr_blit_x, y + ddenlovr_blit_y, ddenlovr_blit_pen); |
| 541 | for (y = 0; y <= state->ddenlovr_rect_height; y++) |
| 542 | for (x = 0; x <= state->ddenlovr_rect_width; x++) |
| 543 | do_plot(machine, x + state->ddenlovr_blit_x, y + state->ddenlovr_blit_y, state->ddenlovr_blit_pen); |
| 473 | 544 | } |
| 474 | 545 | |
| 475 | 546 | |
| r7640 | r7641 | |
| 484 | 555 | 04 blit_pen |
| 485 | 556 | 0c line_length - always 0? |
| 486 | 557 | */ |
| 487 | | static void blit_rect_yh(void) |
| 558 | static void blit_rect_yh( running_machine *machine ) |
| 488 | 559 | { |
| 489 | | int start = 512 * ddenlovr_blit_y; |
| 490 | | int length = 512 * (ddenlovr_rect_height+1); |
| 560 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 561 | int start = 512 * state->ddenlovr_blit_y; |
| 562 | int length = 512 * (state->ddenlovr_rect_height + 1); |
| 491 | 563 | |
| 492 | 564 | #ifdef MAME_DEBUG |
| 493 | | // if (ddenlovr_clip_ctrl != 0x0f) |
| 494 | | // popmessage("UNK8C clipx=%03x clipy=%03x ctrl=%x",ddenlovr_clip_x,ddenlovr_clip_y,ddenlovr_clip_ctrl); |
| 565 | // if (state->ddenlovr_clip_ctrl != 0x0f) |
| 566 | // popmessage("UNK8C clipx=%03x clipy=%03x ctrl=%x", state->ddenlovr_clip_x, state->ddenlovr_clip_y, state->ddenlovr_clip_ctrl); |
| 495 | 567 | #endif |
| 496 | 568 | |
| 497 | | if (start < 512*512) |
| 569 | if (start < 512 * 512) |
| 498 | 570 | { |
| 499 | | if (start + length > 512*512) |
| 500 | | length = 512*512 - start; |
| 571 | if (start + length > 512 * 512) |
| 572 | length = 512 * 512 - start; |
| 501 | 573 | |
| 502 | | if (ddenlovr_dest_layer & 0x0001) memset(ddenlovr_pixmap[0] + start,ddenlovr_blit_pen,length); |
| 503 | | if (ddenlovr_dest_layer & 0x0002) memset(ddenlovr_pixmap[1] + start,ddenlovr_blit_pen,length); |
| 504 | | if (ddenlovr_dest_layer & 0x0004) memset(ddenlovr_pixmap[2] + start,ddenlovr_blit_pen,length); |
| 505 | | if (ddenlovr_dest_layer & 0x0008) memset(ddenlovr_pixmap[3] + start,ddenlovr_blit_pen,length); |
| 574 | if (state->ddenlovr_dest_layer & 0x0001) memset(state->ddenlovr_pixmap[0] + start, state->ddenlovr_blit_pen, length); |
| 575 | if (state->ddenlovr_dest_layer & 0x0002) memset(state->ddenlovr_pixmap[1] + start, state->ddenlovr_blit_pen, length); |
| 576 | if (state->ddenlovr_dest_layer & 0x0004) memset(state->ddenlovr_pixmap[2] + start, state->ddenlovr_blit_pen, length); |
| 577 | if (state->ddenlovr_dest_layer & 0x0008) memset(state->ddenlovr_pixmap[3] + start, state->ddenlovr_blit_pen, length); |
| 506 | 578 | |
| 507 | | if (!extra_layers) return; |
| 579 | if (!state->extra_layers) return; |
| 508 | 580 | |
| 509 | | if (ddenlovr_dest_layer & 0x0100) memset(ddenlovr_pixmap[4] + start,ddenlovr_blit_pen,length); |
| 510 | | if (ddenlovr_dest_layer & 0x0200) memset(ddenlovr_pixmap[5] + start,ddenlovr_blit_pen,length); |
| 511 | | if (ddenlovr_dest_layer & 0x0400) memset(ddenlovr_pixmap[6] + start,ddenlovr_blit_pen,length); |
| 512 | | if (ddenlovr_dest_layer & 0x0800) memset(ddenlovr_pixmap[7] + start,ddenlovr_blit_pen,length); |
| 581 | if (state->ddenlovr_dest_layer & 0x0100) memset(state->ddenlovr_pixmap[4] + start, state->ddenlovr_blit_pen, length); |
| 582 | if (state->ddenlovr_dest_layer & 0x0200) memset(state->ddenlovr_pixmap[5] + start, state->ddenlovr_blit_pen, length); |
| 583 | if (state->ddenlovr_dest_layer & 0x0400) memset(state->ddenlovr_pixmap[6] + start, state->ddenlovr_blit_pen, length); |
| 584 | if (state->ddenlovr_dest_layer & 0x0800) memset(state->ddenlovr_pixmap[7] + start, state->ddenlovr_blit_pen, length); |
| 513 | 585 | } |
| 514 | 586 | } |
| 515 | 587 | |
| r7640 | r7641 | |
| 523 | 595 | 02 Y |
| 524 | 596 | 04 blit_pen |
| 525 | 597 | */ |
| 526 | | static void blit_fill_xy(int x, int y) |
| 598 | static void blit_fill_xy( running_machine *machine, int x, int y ) |
| 527 | 599 | { |
| 600 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 528 | 601 | int start = 512 * y + x; |
| 529 | 602 | |
| 530 | 603 | #ifdef MAME_DEBUG |
| 531 | 604 | // if (x || y) |
| 532 | | // popmessage("FILL command X %03x Y %03x",x,y); |
| 605 | // popmessage("FILL command X %03x Y %03x", x, y); |
| 533 | 606 | #endif |
| 534 | 607 | |
| 535 | | if (ddenlovr_dest_layer & 0x0001) memset(ddenlovr_pixmap[0] + start,ddenlovr_blit_pen,512*512 - start); |
| 536 | | if (ddenlovr_dest_layer & 0x0002) memset(ddenlovr_pixmap[1] + start,ddenlovr_blit_pen,512*512 - start); |
| 537 | | if (ddenlovr_dest_layer & 0x0004) memset(ddenlovr_pixmap[2] + start,ddenlovr_blit_pen,512*512 - start); |
| 538 | | if (ddenlovr_dest_layer & 0x0008) memset(ddenlovr_pixmap[3] + start,ddenlovr_blit_pen,512*512 - start); |
| 608 | if (state->ddenlovr_dest_layer & 0x0001) memset(state->ddenlovr_pixmap[0] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 609 | if (state->ddenlovr_dest_layer & 0x0002) memset(state->ddenlovr_pixmap[1] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 610 | if (state->ddenlovr_dest_layer & 0x0004) memset(state->ddenlovr_pixmap[2] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 611 | if (state->ddenlovr_dest_layer & 0x0008) memset(state->ddenlovr_pixmap[3] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 539 | 612 | |
| 540 | | if (!extra_layers) return; |
| 613 | if (!state->extra_layers) return; |
| 541 | 614 | |
| 542 | | if (ddenlovr_dest_layer & 0x0100) memset(ddenlovr_pixmap[4] + start,ddenlovr_blit_pen,512*512 - start); |
| 543 | | if (ddenlovr_dest_layer & 0x0200) memset(ddenlovr_pixmap[5] + start,ddenlovr_blit_pen,512*512 - start); |
| 544 | | if (ddenlovr_dest_layer & 0x0400) memset(ddenlovr_pixmap[6] + start,ddenlovr_blit_pen,512*512 - start); |
| 545 | | if (ddenlovr_dest_layer & 0x0800) memset(ddenlovr_pixmap[7] + start,ddenlovr_blit_pen,512*512 - start); |
| 615 | if (state->ddenlovr_dest_layer & 0x0100) memset(state->ddenlovr_pixmap[4] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 616 | if (state->ddenlovr_dest_layer & 0x0200) memset(state->ddenlovr_pixmap[5] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 617 | if (state->ddenlovr_dest_layer & 0x0400) memset(state->ddenlovr_pixmap[6] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 618 | if (state->ddenlovr_dest_layer & 0x0800) memset(state->ddenlovr_pixmap[7] + start, state->ddenlovr_blit_pen, 512 * 512 - start); |
| 546 | 619 | } |
| 547 | 620 | |
| 548 | 621 | |
| r7640 | r7641 | |
| 557 | 630 | 04 blit_pen |
| 558 | 631 | ddenlovr_blit_x and ddenlovr_blit_y are left pointing to the last pixel at the end of the command |
| 559 | 632 | */ |
| 560 | | static void blit_horiz_line(void) |
| 633 | static void blit_horiz_line( running_machine *machine ) |
| 561 | 634 | { |
| 635 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 562 | 636 | int i; |
| 563 | 637 | |
| 564 | 638 | #ifdef MAME_DEBUG |
| 565 | 639 | popmessage("LINE X"); |
| 566 | 640 | |
| 567 | | if (ddenlovr_clip_ctrl != 0x0f) |
| 568 | | popmessage("LINE X clipx=%03x clipy=%03x ctrl=%x",ddenlovr_clip_x,ddenlovr_clip_y,ddenlovr_clip_ctrl); |
| 641 | if (state->ddenlovr_clip_ctrl != 0x0f) |
| 642 | popmessage("LINE X clipx=%03x clipy=%03x ctrl=%x", state->ddenlovr_clip_x, state->ddenlovr_clip_y, state->ddenlovr_clip_ctrl); |
| 569 | 643 | |
| 570 | | if (ddenlovr_blit_flip) |
| 571 | | popmessage("LINE X flip=%x",ddenlovr_blit_flip); |
| 644 | if (state->ddenlovr_blit_flip) |
| 645 | popmessage("LINE X flip=%x", state->ddenlovr_blit_flip); |
| 572 | 646 | #endif |
| 573 | 647 | |
| 574 | | for (i = 0; i <= ddenlovr_line_length; i++) |
| 575 | | do_plot(ddenlovr_blit_x++,ddenlovr_blit_y,ddenlovr_blit_pen); |
| 648 | for (i = 0; i <= state->ddenlovr_line_length; i++) |
| 649 | do_plot(machine, state->ddenlovr_blit_x++, state->ddenlovr_blit_y, state->ddenlovr_blit_pen); |
| 576 | 650 | } |
| 577 | 651 | |
| 578 | 652 | |
| r7640 | r7641 | |
| 587 | 661 | 04 blit_pen |
| 588 | 662 | ddenlovr_blit_x and ddenlovr_blit_y are left pointing to the last pixel at the end of the command |
| 589 | 663 | */ |
| 590 | | static void blit_vert_line(void) |
| 664 | static void blit_vert_line( running_machine *machine ) |
| 591 | 665 | { |
| 666 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 592 | 667 | int i; |
| 593 | 668 | |
| 594 | 669 | #ifdef MAME_DEBUG |
| 595 | 670 | popmessage("LINE Y"); |
| 596 | 671 | |
| 597 | | if (ddenlovr_clip_ctrl != 0x0f) |
| 598 | | popmessage("LINE Y clipx=%03x clipy=%03x ctrl=%x",ddenlovr_clip_x,ddenlovr_clip_y,ddenlovr_clip_ctrl); |
| 672 | if (state->ddenlovr_clip_ctrl != 0x0f) |
| 673 | popmessage("LINE Y clipx=%03x clipy=%03x ctrl=%x", state->ddenlovr_clip_x, state->ddenlovr_clip_y, state->ddenlovr_clip_ctrl); |
| 599 | 674 | #endif |
| 600 | 675 | |
| 601 | | for (i = 0; i <= ddenlovr_line_length; i++) |
| 602 | | do_plot(ddenlovr_blit_x,ddenlovr_blit_y++,ddenlovr_blit_pen); |
| 676 | for (i = 0; i <= state->ddenlovr_line_length; i++) |
| 677 | do_plot(machine, state->ddenlovr_blit_x, state->ddenlovr_blit_y++, state->ddenlovr_blit_pen); |
| 603 | 678 | } |
| 604 | 679 | |
| 605 | 680 | |
| 606 | 681 | |
| 607 | 682 | |
| 608 | | INLINE void log_blit(running_machine *machine, int data) |
| 683 | INLINE void log_blit( running_machine *machine, int data ) |
| 609 | 684 | { |
| 685 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 686 | |
| 610 | 687 | #if 1 |
| 611 | 688 | logerror("%s: blit src %06x x %03x y %03x flags %02x layer %02x pen %02x penmode %02x w %03x h %03x linelen %03x flip %02x clip: ctrl %x xy %03x %03x wh %03x %03x\n", |
| 612 | 689 | cpuexec_describe_context(machine), |
| 613 | | ddenlovr_blit_address,ddenlovr_blit_x,ddenlovr_blit_y,data, |
| 614 | | ddenlovr_dest_layer,ddenlovr_blit_pen,ddenlovr_blit_pen_mode,ddenlovr_rect_width,ddenlovr_rect_height,ddenlovr_line_length,ddenlovr_blit_flip, |
| 615 | | ddenlovr_clip_ctrl,ddenlovr_clip_x,ddenlovr_clip_y, ddenlovr_clip_width,ddenlovr_clip_height ); |
| 690 | state->ddenlovr_blit_address, state->ddenlovr_blit_x, state->ddenlovr_blit_y, data, |
| 691 | state->ddenlovr_dest_layer, state->ddenlovr_blit_pen, state->ddenlovr_blit_pen_mode, state->ddenlovr_rect_width, state->ddenlovr_rect_height, state->ddenlovr_line_length, state->ddenlovr_blit_flip, |
| 692 | state->ddenlovr_clip_ctrl, state->ddenlovr_clip_x, state->ddenlovr_clip_y, state->ddenlovr_clip_width, state->ddenlovr_clip_height); |
| 616 | 693 | #endif |
| 617 | 694 | } |
| 618 | 695 | |
| 619 | | static void blitter_w(const address_space *space, int blitter, offs_t offset,UINT8 data,int irq_vector) |
| 696 | static void blitter_w( const address_space *space, int blitter, offs_t offset, UINT8 data, int irq_vector ) |
| 620 | 697 | { |
| 621 | | static int ddenlovr_blit_reg[2]; |
| 698 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 622 | 699 | int hi_bits; |
| 623 | 700 | |
| 624 | 701 | profiler_mark_start(PROFILER_VIDEO); |
| 625 | 702 | |
| 626 | | switch(offset) |
| 703 | switch (offset) |
| 627 | 704 | { |
| 628 | 705 | case 0: |
| 629 | | ddenlovr_blit_reg[blitter] = data; |
| 706 | state->ddenlovr_blit_regs[blitter] = data; |
| 630 | 707 | break; |
| 631 | 708 | |
| 632 | 709 | case 1: |
| 633 | | hi_bits = (ddenlovr_blit_reg[blitter] & 0xc0) << 2; |
| 710 | hi_bits = (state->ddenlovr_blit_regs[blitter] & 0xc0) << 2; |
| 634 | 711 | |
| 635 | | switch(ddenlovr_blit_reg[blitter] & 0x3f) |
| 712 | switch (state->ddenlovr_blit_regs[blitter] & 0x3f) |
| 636 | 713 | { |
| 637 | 714 | case 0x00: |
| 638 | | if (blitter) ddenlovr_dest_layer = (ddenlovr_dest_layer & 0x00ff) | (data<<8); |
| 639 | | else ddenlovr_dest_layer = (ddenlovr_dest_layer & 0xff00) | (data<<0); |
| 715 | if (blitter) state->ddenlovr_dest_layer = (state->ddenlovr_dest_layer & 0x00ff) | (data << 8); |
| 716 | else state->ddenlovr_dest_layer = (state->ddenlovr_dest_layer & 0xff00) | (data << 0); |
| 640 | 717 | break; |
| 641 | 718 | |
| 642 | 719 | case 0x01: |
| r7640 | r7641 | |
| 644 | 721 | break; |
| 645 | 722 | |
| 646 | 723 | case 0x02: |
| 647 | | ddenlovr_blit_y = data | hi_bits; |
| 724 | state->ddenlovr_blit_y = data | hi_bits; |
| 648 | 725 | break; |
| 649 | 726 | |
| 650 | 727 | case 0x03: |
| 651 | | ddenlovr_blit_flip_w(data); |
| 728 | ddenlovr_blit_flip_w(space->machine, data); |
| 652 | 729 | break; |
| 653 | 730 | |
| 654 | 731 | case 0x04: |
| 655 | | ddenlovr_blit_pen = data; |
| 732 | state->ddenlovr_blit_pen = data; |
| 656 | 733 | break; |
| 657 | 734 | |
| 658 | 735 | case 0x05: |
| 659 | | ddenlovr_blit_pen_mask = data; |
| 736 | state->ddenlovr_blit_pen_mask = data; |
| 660 | 737 | break; |
| 661 | 738 | |
| 662 | 739 | case 0x06: |
| 663 | 740 | // related to pen, can be 0 or 1 for 0x10 blitter command |
| 664 | 741 | // 0 = only bits 7-4 of ddenlovr_blit_pen contain data |
| 665 | 742 | // 1 = bits 3-0 contain data as well |
| 666 | | ddenlovr_blit_pen_mode = data; |
| 743 | state->ddenlovr_blit_pen_mode = data; |
| 667 | 744 | break; |
| 668 | 745 | |
| 669 | 746 | case 0x0a: |
| 670 | | ddenlovr_rect_width = data | hi_bits; |
| 747 | state->ddenlovr_rect_width = data | hi_bits; |
| 671 | 748 | break; |
| 672 | 749 | |
| 673 | 750 | case 0x0b: |
| 674 | | ddenlovr_rect_height = data | hi_bits; |
| 751 | state->ddenlovr_rect_height = data | hi_bits; |
| 675 | 752 | break; |
| 676 | 753 | |
| 677 | 754 | case 0x0c: |
| 678 | | ddenlovr_line_length = data | hi_bits; |
| 755 | state->ddenlovr_line_length = data | hi_bits; |
| 679 | 756 | break; |
| 680 | 757 | |
| 681 | 758 | case 0x0d: |
| 682 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0xffff00) | (data <<0); |
| 759 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0xffff00) | (data <<0); |
| 683 | 760 | break; |
| 684 | 761 | case 0x0e: |
| 685 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0xff00ff) | (data <<8); |
| 762 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0xff00ff) | (data <<8); |
| 686 | 763 | break; |
| 687 | 764 | case 0x0f: |
| 688 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0x00ffff) | (data<<16); |
| 765 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0x00ffff) | (data<<16); |
| 689 | 766 | break; |
| 690 | 767 | |
| 691 | 768 | case 0x14: |
| 692 | | ddenlovr_blit_x = data | hi_bits; |
| 769 | state->ddenlovr_blit_x = data | hi_bits; |
| 693 | 770 | break; |
| 694 | 771 | |
| 695 | 772 | case 0x16: |
| 696 | | ddenlovr_clip_x = data | hi_bits; |
| 773 | state->ddenlovr_clip_x = data | hi_bits; |
| 697 | 774 | break; |
| 698 | 775 | |
| 699 | 776 | case 0x17: |
| 700 | | ddenlovr_clip_y = data | hi_bits; |
| 777 | state->ddenlovr_clip_y = data | hi_bits; |
| 701 | 778 | break; |
| 702 | 779 | |
| 703 | 780 | case 0x18: |
| r7640 | r7641 | |
| 708 | 785 | case 0x1d: |
| 709 | 786 | case 0x1e: |
| 710 | 787 | case 0x1f: |
| 711 | | ddenlovr_scroll[blitter*8 + (ddenlovr_blit_reg[blitter] & 7)] = data | hi_bits; |
| 788 | state->ddenlovr_scroll[blitter * 8 + (state->ddenlovr_blit_regs[blitter] & 7)] = data | hi_bits; |
| 712 | 789 | break; |
| 713 | 790 | |
| 714 | 791 | case 0x20: |
| 715 | | ddenlovr_clip_ctrl = data; |
| 792 | state->ddenlovr_clip_ctrl = data; |
| 716 | 793 | break; |
| 717 | 794 | |
| 718 | 795 | case 0x24: |
| r7640 | r7641 | |
| 721 | 798 | |
| 722 | 799 | switch (data) |
| 723 | 800 | { |
| 724 | | case 0x04: blit_fill_xy(0, 0); |
| 801 | case 0x04: blit_fill_xy(space->machine, 0, 0); |
| 725 | 802 | break; |
| 726 | | case 0x14: blit_fill_xy(ddenlovr_blit_x, ddenlovr_blit_y); |
| 803 | case 0x14: blit_fill_xy(space->machine, state->ddenlovr_blit_x, state->ddenlovr_blit_y); |
| 727 | 804 | break; |
| 728 | 805 | |
| 729 | | case 0x10: ddenlovr_blit_address = blit_draw(space->machine,ddenlovr_blit_address,ddenlovr_blit_x); |
| 806 | case 0x10: state->ddenlovr_blit_address = blit_draw(space->machine, state->ddenlovr_blit_address, state->ddenlovr_blit_x); |
| 730 | 807 | break; |
| 731 | 808 | |
| 732 | | case 0x13: blit_horiz_line(); |
| 809 | case 0x13: blit_horiz_line(space->machine); |
| 733 | 810 | break; |
| 734 | | case 0x1b: blit_vert_line(); |
| 811 | case 0x1b: blit_vert_line(space->machine); |
| 735 | 812 | break; |
| 736 | 813 | |
| 737 | | case 0x1c: blit_rect_xywh(); |
| 814 | case 0x1c: blit_rect_xywh(space->machine); |
| 738 | 815 | break; |
| 739 | 816 | |
| 740 | 817 | // These two are issued one after the other (43 then 8c) |
| 741 | 818 | // 8c is issued immediately after 43 has finished, without |
| 742 | 819 | // changing any argument |
| 743 | 820 | case 0x43: break; |
| 744 | | case 0x8c: blit_rect_yh(); |
| 821 | case 0x8c: blit_rect_yh(space->machine); |
| 745 | 822 | break; |
| 746 | 823 | |
| 747 | 824 | default: |
| 748 | 825 | ; |
| 749 | 826 | #ifdef MAME_DEBUG |
| 750 | | popmessage("unknown blitter command %02x",data); |
| 827 | popmessage("unknown blitter command %02x", data); |
| 751 | 828 | logerror("%06x: unknown blitter command %02x\n", cpu_get_pc(space->cpu), data); |
| 752 | 829 | #endif |
| 753 | 830 | } |
| r7640 | r7641 | |
| 758 | 835 | else |
| 759 | 836 | { |
| 760 | 837 | /* ddenlovr */ |
| 761 | | if (ddenlovr_blitter_irq_enable) |
| 838 | if (state->ddenlovr_blitter_irq_enable) |
| 762 | 839 | { |
| 763 | | ddenlovr_blitter_irq_flag = 1; |
| 764 | | cpu_set_input_line(space->cpu,1,HOLD_LINE); |
| 840 | state->ddenlovr_blitter_irq_flag = 1; |
| 841 | cpu_set_input_line(space->cpu, 1, HOLD_LINE); |
| 765 | 842 | } |
| 766 | 843 | } |
| 767 | 844 | break; |
| 768 | 845 | |
| 769 | 846 | default: |
| 770 | | logerror("%06x: Blitter %d reg %02x = %02x\n", cpu_get_pc(space->cpu), blitter, ddenlovr_blit_reg[blitter], data); |
| 847 | logerror("%06x: Blitter %d reg %02x = %02x\n", cpu_get_pc(space->cpu), blitter, state->ddenlovr_blit_regs[blitter], data); |
| 771 | 848 | break; |
| 772 | 849 | } |
| 773 | 850 | } |
| r7640 | r7641 | |
| 779 | 856 | |
| 780 | 857 | |
| 781 | 858 | // differences wrt blitter_data_w: slightly different blitter commands |
| 782 | | static void blitter_w_funkyfig(running_machine *machine, int blitter, offs_t offset,UINT8 data,int irq_vector) |
| 859 | static void blitter_w_funkyfig( running_machine *machine, int blitter, offs_t offset, UINT8 data, int irq_vector ) |
| 783 | 860 | { |
| 784 | | static int ddenlovr_blit_reg[2]; |
| 861 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 785 | 862 | int hi_bits; |
| 786 | 863 | |
| 787 | 864 | profiler_mark_start(PROFILER_VIDEO); |
| r7640 | r7641 | |
| 789 | 866 | switch(offset) |
| 790 | 867 | { |
| 791 | 868 | case 0: |
| 792 | | ddenlovr_blit_reg[blitter] = data; |
| 869 | state->ddenlovr_blit_regs[blitter] = data; |
| 793 | 870 | break; |
| 794 | 871 | |
| 795 | 872 | case 1: |
| 796 | | hi_bits = (ddenlovr_blit_reg[blitter] & 0xc0) << 2; |
| 873 | hi_bits = (state->ddenlovr_blit_regs[blitter] & 0xc0) << 2; |
| 797 | 874 | |
| 798 | | switch(ddenlovr_blit_reg[blitter] & 0x3f) |
| 875 | switch (state->ddenlovr_blit_regs[blitter] & 0x3f) |
| 799 | 876 | { |
| 800 | 877 | case 0x00: |
| 801 | | if (blitter) ddenlovr_dest_layer = (ddenlovr_dest_layer & 0x00ff) | (data<<8); |
| 802 | | else ddenlovr_dest_layer = (ddenlovr_dest_layer & 0xff00) | (data<<0); |
| 878 | if (blitter) state->ddenlovr_dest_layer = (state->ddenlovr_dest_layer & 0x00ff) | (data << 8); |
| 879 | else state->ddenlovr_dest_layer = (state->ddenlovr_dest_layer & 0xff00) | (data << 0); |
| 803 | 880 | break; |
| 804 | 881 | |
| 805 | 882 | case 0x01: |
| r7640 | r7641 | |
| 807 | 884 | break; |
| 808 | 885 | |
| 809 | 886 | case 0x02: |
| 810 | | ddenlovr_blit_y = data | hi_bits; |
| 887 | state->ddenlovr_blit_y = data | hi_bits; |
| 811 | 888 | break; |
| 812 | 889 | |
| 813 | 890 | case 0x03: |
| 814 | | ddenlovr_blit_flip_w(data); |
| 891 | ddenlovr_blit_flip_w(machine, data); |
| 815 | 892 | break; |
| 816 | 893 | |
| 817 | 894 | case 0x04: |
| 818 | | ddenlovr_blit_pen = data; |
| 895 | state->ddenlovr_blit_pen = data; |
| 819 | 896 | break; |
| 820 | 897 | |
| 821 | 898 | case 0x05: |
| 822 | | ddenlovr_blit_pen_mask = data; |
| 899 | state->ddenlovr_blit_pen_mask = data; |
| 823 | 900 | break; |
| 824 | 901 | |
| 825 | 902 | case 0x06: |
| 826 | 903 | // related to pen, can be 0 or 1 for 0x10 blitter command |
| 827 | 904 | // 0 = only bits 7-4 of ddenlovr_blit_pen contain data |
| 828 | 905 | // 1 = bits 3-0 contain data as well |
| 829 | | ddenlovr_blit_pen_mode = data; |
| 906 | state->ddenlovr_blit_pen_mode = data; |
| 830 | 907 | break; |
| 831 | 908 | |
| 832 | 909 | case 0x0a: |
| 833 | | ddenlovr_rect_width = data | hi_bits; |
| 910 | state->ddenlovr_rect_width = data | hi_bits; |
| 834 | 911 | break; |
| 835 | 912 | |
| 836 | 913 | case 0x0b: |
| 837 | | ddenlovr_rect_height = data | hi_bits; |
| 914 | state->ddenlovr_rect_height = data | hi_bits; |
| 838 | 915 | break; |
| 839 | 916 | |
| 840 | 917 | case 0x0c: |
| 841 | | ddenlovr_line_length = data | hi_bits; |
| 918 | state->ddenlovr_line_length = data | hi_bits; |
| 842 | 919 | break; |
| 843 | 920 | |
| 844 | 921 | case 0x0d: |
| 845 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0xffff00) | (data <<0); |
| 922 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0xffff00) | (data << 0); |
| 846 | 923 | break; |
| 847 | 924 | case 0x0e: |
| 848 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0xff00ff) | (data <<8); |
| 925 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0xff00ff) | (data << 8); |
| 849 | 926 | break; |
| 850 | 927 | case 0x0f: |
| 851 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0x00ffff) | (data<<16); |
| 928 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0x00ffff) | (data << 16); |
| 852 | 929 | break; |
| 853 | 930 | |
| 854 | 931 | case 0x14: |
| 855 | | ddenlovr_blit_x = data | hi_bits; |
| 932 | state->ddenlovr_blit_x = data | hi_bits; |
| 856 | 933 | break; |
| 857 | 934 | |
| 858 | 935 | case 0x16: |
| 859 | | ddenlovr_clip_x = data | hi_bits; |
| 936 | state->ddenlovr_clip_x = data | hi_bits; |
| 860 | 937 | break; |
| 861 | 938 | |
| 862 | 939 | case 0x17: |
| 863 | | ddenlovr_clip_y = data | hi_bits; |
| 940 | state->ddenlovr_clip_y = data | hi_bits; |
| 864 | 941 | break; |
| 865 | 942 | |
| 866 | 943 | case 0x18: |
| r7640 | r7641 | |
| 871 | 948 | case 0x1d: |
| 872 | 949 | case 0x1e: |
| 873 | 950 | case 0x1f: |
| 874 | | ddenlovr_scroll[blitter*8 + (ddenlovr_blit_reg[blitter] & 7)] = data | hi_bits; |
| 951 | state->ddenlovr_scroll[blitter * 8 + (state->ddenlovr_blit_regs[blitter] & 7)] = data | hi_bits; |
| 875 | 952 | break; |
| 876 | 953 | |
| 877 | 954 | case 0x20: |
| 878 | | ddenlovr_clip_ctrl = data; |
| 955 | state->ddenlovr_clip_ctrl = data; |
| 879 | 956 | break; |
| 880 | 957 | |
| 881 | 958 | case 0x24: |
| r7640 | r7641 | |
| 886 | 963 | { |
| 887 | 964 | |
| 888 | 965 | case 0x84: // same as 04? |
| 889 | | case 0x04: blit_fill_xy(0, 0); |
| 966 | case 0x04: blit_fill_xy(machine, 0, 0); |
| 890 | 967 | break; |
| 891 | 968 | |
| 892 | 969 | // unused? |
| 893 | | // case 0x14: blit_fill_xy(ddenlovr_blit_x, ddenlovr_blit_y); |
| 970 | // case 0x14: blit_fill_xy(machine, state->ddenlovr_blit_x, state->ddenlovr_blit_y); |
| 894 | 971 | // break; |
| 895 | 972 | |
| 896 | | case 0x00/*0x10*/: ddenlovr_blit_address = blit_draw(machine,ddenlovr_blit_address,ddenlovr_blit_x); |
| 973 | case 0x00/*0x10*/: state->ddenlovr_blit_address = blit_draw(machine, state->ddenlovr_blit_address, state->ddenlovr_blit_x); |
| 897 | 974 | break; |
| 898 | 975 | |
| 899 | 976 | case 0x0b: // same as 03? see the drawing of the R in "cRoss hatch" (key test) |
| 900 | | case 0x03/*0x13*/: blit_horiz_line(); |
| 977 | case 0x03/*0x13*/: blit_horiz_line(machine); |
| 901 | 978 | break; |
| 902 | 979 | // unused? |
| 903 | | // case 0x1b: blit_vert_line(); |
| 980 | // case 0x1b: blit_vert_line(machine); |
| 904 | 981 | // break; |
| 905 | 982 | |
| 906 | | case 0x0c/*0x1c*/: blit_rect_xywh(); |
| 983 | case 0x0c/*0x1c*/: blit_rect_xywh(machine); |
| 907 | 984 | break; |
| 908 | 985 | |
| 909 | 986 | // These two are issued one after the other (43 then 8c) |
| 910 | 987 | // 8c is issued immediately after 43 has finished, without |
| 911 | 988 | // changing any argument |
| 912 | 989 | case 0x43: break; |
| 913 | | case 0x8c: blit_rect_yh(); |
| 990 | case 0x8c: blit_rect_yh(machine); |
| 914 | 991 | break; |
| 915 | 992 | |
| 916 | 993 | default: |
| 917 | 994 | ; |
| 918 | 995 | #ifdef MAME_DEBUG |
| 919 | | popmessage("unknown blitter command %02x",data); |
| 996 | popmessage("unknown blitter command %02x", data); |
| 920 | 997 | logerror("%s: unknown blitter command %02x\n", cpuexec_describe_context(machine), data); |
| 921 | 998 | #endif |
| 922 | 999 | } |
| 923 | 1000 | |
| 924 | | cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, irq_vector); |
| 1001 | cpu_set_input_line_and_vector(state->maincpu, 0, HOLD_LINE, irq_vector); |
| 925 | 1002 | break; |
| 926 | 1003 | |
| 927 | 1004 | default: |
| 928 | | logerror("%s: Blitter %d reg %02x = %02x\n", cpuexec_describe_context(machine), blitter, ddenlovr_blit_reg[blitter], data); |
| 1005 | logerror("%s: Blitter %d reg %02x = %02x\n", cpuexec_describe_context(machine), blitter, state->ddenlovr_blit_regs[blitter], data); |
| 929 | 1006 | break; |
| 930 | 1007 | } |
| 931 | 1008 | } |
| r7640 | r7641 | |
| 938 | 1015 | |
| 939 | 1016 | static WRITE8_HANDLER( hanakanz_blitter_reg_w ) |
| 940 | 1017 | { |
| 941 | | ddenlovr_blit_reg = data; |
| 1018 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1019 | state->ddenlovr_blit_latch = data; |
| 942 | 1020 | } |
| 943 | 1021 | |
| 944 | 1022 | // differences wrt blitter_data_w: registers are shuffled around, hi_bits in the low bits, clip_w/h, includes layers registers |
| 945 | 1023 | static WRITE8_HANDLER( hanakanz_blitter_data_w ) |
| 946 | 1024 | { |
| 1025 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 947 | 1026 | int hi_bits; |
| 948 | 1027 | |
| 949 | 1028 | profiler_mark_start(PROFILER_VIDEO); |
| 950 | 1029 | |
| 951 | | hi_bits = (ddenlovr_blit_reg & 0x03) << 8; |
| 1030 | hi_bits = (state->ddenlovr_blit_latch & 0x03) << 8; |
| 952 | 1031 | |
| 953 | | switch(ddenlovr_blit_reg & 0xfe) |
| 1032 | switch (state->ddenlovr_blit_latch & 0xfe) |
| 954 | 1033 | { |
| 955 | 1034 | case 0x00: |
| 956 | | ddenlovr_dest_layer = data; |
| 1035 | state->ddenlovr_dest_layer = data; |
| 957 | 1036 | break; |
| 958 | 1037 | |
| 959 | 1038 | case 0x04: |
| r7640 | r7641 | |
| 961 | 1040 | break; |
| 962 | 1041 | |
| 963 | 1042 | case 0x08: |
| 964 | | ddenlovr_blit_y = data | hi_bits; |
| 1043 | state->ddenlovr_blit_y = data | hi_bits; |
| 965 | 1044 | break; |
| 966 | 1045 | |
| 967 | 1046 | case 0x0c: |
| 968 | | ddenlovr_blit_flip_w(data); |
| 1047 | ddenlovr_blit_flip_w(space->machine, data); |
| 969 | 1048 | break; |
| 970 | 1049 | |
| 971 | 1050 | case 0x10: |
| 972 | | ddenlovr_blit_pen = data; |
| 1051 | state->ddenlovr_blit_pen = data; |
| 973 | 1052 | break; |
| 974 | 1053 | |
| 975 | 1054 | case 0x14: |
| 976 | | ddenlovr_blit_pen_mask = data; |
| 1055 | state->ddenlovr_blit_pen_mask = data; |
| 977 | 1056 | break; |
| 978 | 1057 | |
| 979 | 1058 | case 0x18: |
| 980 | 1059 | // related to pen, can be 0 or 1 for 0x10 blitter command |
| 981 | 1060 | // 0 = only bits 7-4 of ddenlovr_blit_pen contain data |
| 982 | 1061 | // 1 = bits 3-0 contain data as well |
| 983 | | ddenlovr_blit_pen_mode = data; |
| 1062 | state->ddenlovr_blit_pen_mode = data; |
| 984 | 1063 | break; |
| 985 | 1064 | |
| 986 | 1065 | case 0x28: |
| 987 | | ddenlovr_rect_width = data | hi_bits; |
| 1066 | state->ddenlovr_rect_width = data | hi_bits; |
| 988 | 1067 | break; |
| 989 | 1068 | |
| 990 | 1069 | case 0x2c: |
| 991 | | ddenlovr_rect_height = data | hi_bits; |
| 1070 | state->ddenlovr_rect_height = data | hi_bits; |
| 992 | 1071 | break; |
| 993 | 1072 | |
| 994 | 1073 | case 0x30: |
| 995 | | ddenlovr_line_length = data | hi_bits; |
| 1074 | state->ddenlovr_line_length = data | hi_bits; |
| 996 | 1075 | break; |
| 997 | 1076 | |
| 998 | 1077 | case 0x34: |
| 999 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0xffff00) | (data <<0); |
| 1078 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0xffff00) | (data << 0); |
| 1000 | 1079 | break; |
| 1001 | 1080 | case 0x38: |
| 1002 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0xff00ff) | (data <<8); |
| 1081 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0xff00ff) | (data << 8); |
| 1003 | 1082 | break; |
| 1004 | 1083 | case 0x3c: |
| 1005 | | ddenlovr_blit_address = (ddenlovr_blit_address & 0x00ffff) | (data<<16); |
| 1084 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address & 0x00ffff) | (data << 16); |
| 1006 | 1085 | break; |
| 1007 | 1086 | |
| 1008 | 1087 | case 0x50: |
| 1009 | | ddenlovr_blit_x = data | hi_bits; |
| 1088 | state->ddenlovr_blit_x = data | hi_bits; |
| 1010 | 1089 | break; |
| 1011 | 1090 | |
| 1012 | 1091 | case 0x58: |
| 1013 | | ddenlovr_clip_x = data | hi_bits; |
| 1092 | state->ddenlovr_clip_x = data | hi_bits; |
| 1014 | 1093 | break; |
| 1015 | 1094 | |
| 1016 | 1095 | case 0x5c: |
| 1017 | | ddenlovr_clip_y = data | hi_bits; |
| 1096 | state->ddenlovr_clip_y = data | hi_bits; |
| 1018 | 1097 | break; |
| 1019 | 1098 | |
| 1020 | 1099 | case 0x60: |
| r7640 | r7641 | |
| 1025 | 1104 | case 0x74: |
| 1026 | 1105 | case 0x78: |
| 1027 | 1106 | case 0x7c: |
| 1028 | | ddenlovr_scroll[(ddenlovr_blit_reg & 0x1c) >> 2] = data | hi_bits; |
| 1107 | state->ddenlovr_scroll[(state->ddenlovr_blit_latch & 0x1c) >> 2] = data | hi_bits; |
| 1029 | 1108 | break; |
| 1030 | 1109 | |
| 1031 | 1110 | case 0x80: |
| 1032 | | ddenlovr_clip_ctrl = data; |
| 1111 | state->ddenlovr_clip_ctrl = data; |
| 1033 | 1112 | break; |
| 1034 | 1113 | |
| 1035 | 1114 | case 0x88: |
| 1036 | 1115 | case 0x8a: // can be 3ff |
| 1037 | | ddenlovr_clip_height = data | hi_bits; |
| 1116 | state->ddenlovr_clip_height = data | hi_bits; |
| 1038 | 1117 | break; |
| 1039 | 1118 | |
| 1040 | 1119 | case 0x8c: |
| 1041 | 1120 | case 0x8e: // can be 3ff |
| 1042 | | ddenlovr_clip_width = data | hi_bits; |
| 1121 | state->ddenlovr_clip_width = data | hi_bits; |
| 1043 | 1122 | break; |
| 1044 | 1123 | |
| 1045 | 1124 | case 0xc0: |
| 1046 | 1125 | case 0xc2: |
| 1047 | 1126 | case 0xc4: |
| 1048 | 1127 | case 0xc6: |
| 1049 | | ddenlovr_palette_base[(ddenlovr_blit_reg >> 1) & 3] = data | (hi_bits & 0x100); |
| 1128 | state->ddenlovr_palette_base[(state->ddenlovr_blit_latch >> 1) & 3] = data | (hi_bits & 0x100); |
| 1050 | 1129 | break; |
| 1051 | 1130 | |
| 1052 | 1131 | case 0xc8: |
| 1053 | 1132 | case 0xca: |
| 1054 | 1133 | case 0xcc: |
| 1055 | 1134 | case 0xce: |
| 1056 | | ddenlovr_palette_mask[(ddenlovr_blit_reg >> 1) & 3] = data; |
| 1135 | state->ddenlovr_palette_mask[(state->ddenlovr_blit_latch >> 1) & 3] = data; |
| 1057 | 1136 | break; |
| 1058 | 1137 | |
| 1059 | 1138 | case 0xd0: |
| 1060 | 1139 | case 0xd2: |
| 1061 | 1140 | case 0xd4: |
| 1062 | 1141 | case 0xd6: |
| 1063 | | ddenlovr_transparency_pen[(ddenlovr_blit_reg >> 1) & 3] = data; |
| 1142 | state->ddenlovr_transparency_pen[(state->ddenlovr_blit_latch >> 1) & 3] = data; |
| 1064 | 1143 | break; |
| 1065 | 1144 | |
| 1066 | 1145 | case 0xd8: |
| 1067 | 1146 | case 0xda: |
| 1068 | 1147 | case 0xdc: |
| 1069 | 1148 | case 0xde: |
| 1070 | | ddenlovr_transparency_mask[(ddenlovr_blit_reg >> 1) & 3] = data; |
| 1149 | state->ddenlovr_transparency_mask[(state->ddenlovr_blit_latch >> 1) & 3] = data; |
| 1071 | 1150 | break; |
| 1072 | 1151 | |
| 1073 | 1152 | case 0xe4: |
| 1074 | | ddenlovr_priority_w(space,0,data); |
| 1153 | ddenlovr_priority_w(space, 0, data); |
| 1075 | 1154 | break; |
| 1076 | 1155 | |
| 1077 | 1156 | case 0xe6: |
| 1078 | | ddenlovr_layer_enable_w(space,0,data); |
| 1157 | ddenlovr_layer_enable_w(space, 0, data); |
| 1079 | 1158 | break; |
| 1080 | 1159 | |
| 1081 | 1160 | case 0xe8: |
| 1082 | | ddenlovr_bgcolor = data | hi_bits; |
| 1161 | state->ddenlovr_bgcolor = data | hi_bits; |
| 1083 | 1162 | break; |
| 1084 | 1163 | |
| 1085 | 1164 | case 0x90: |
| r7640 | r7641 | |
| 1088 | 1167 | |
| 1089 | 1168 | switch (data) |
| 1090 | 1169 | { |
| 1091 | | case 0x04: blit_fill_xy(0, 0); |
| 1170 | case 0x04: blit_fill_xy(space->machine, 0, 0); |
| 1092 | 1171 | break; |
| 1093 | | case 0x14: blit_fill_xy(ddenlovr_blit_x, ddenlovr_blit_y); |
| 1172 | case 0x14: blit_fill_xy(space->machine, state->ddenlovr_blit_x, state->ddenlovr_blit_y); |
| 1094 | 1173 | break; |
| 1095 | 1174 | |
| 1096 | | case 0x10: ddenlovr_blit_address = blit_draw(space->machine,ddenlovr_blit_address,ddenlovr_blit_x); |
| 1175 | case 0x10: state->ddenlovr_blit_address = blit_draw(space->machine, state->ddenlovr_blit_address, state->ddenlovr_blit_x); |
| 1097 | 1176 | break; |
| 1098 | 1177 | |
| 1099 | | case 0x13: blit_horiz_line(); |
| 1178 | case 0x13: blit_horiz_line(space->machine); |
| 1100 | 1179 | break; |
| 1101 | | case 0x1b: blit_vert_line(); |
| 1180 | case 0x1b: blit_vert_line(space->machine); |
| 1102 | 1181 | break; |
| 1103 | 1182 | |
| 1104 | | case 0x1c: blit_rect_xywh(); |
| 1183 | case 0x1c: blit_rect_xywh(space->machine); |
| 1105 | 1184 | break; |
| 1106 | 1185 | |
| 1107 | 1186 | // These two are issued one after the other (43 then 8c) |
| 1108 | 1187 | // 8c is issued immediately after 43 has finished, without |
| 1109 | 1188 | // changing any argument |
| 1110 | 1189 | case 0x43: break; |
| 1111 | | case 0x8c: blit_rect_yh(); |
| 1190 | case 0x8c: blit_rect_yh(space->machine); |
| 1112 | 1191 | break; |
| 1113 | 1192 | |
| 1114 | 1193 | default: |
| 1115 | 1194 | ; |
| 1116 | 1195 | #ifdef MAME_DEBUG |
| 1117 | | popmessage("unknown blitter command %02x",data); |
| 1196 | popmessage("unknown blitter command %02x", data); |
| 1118 | 1197 | logerror("%06x: unknown blitter command %02x\n", cpu_get_pc(space->cpu), data); |
| 1119 | 1198 | #endif |
| 1120 | 1199 | } |
| r7640 | r7641 | |
| 1124 | 1203 | break; |
| 1125 | 1204 | |
| 1126 | 1205 | default: |
| 1127 | | logerror("%06x: Blitter 0 reg %02x = %02x\n", cpu_get_pc(space->cpu), ddenlovr_blit_reg, data); |
| 1206 | logerror("%06x: Blitter 0 reg %02x = %02x\n", cpu_get_pc(space->cpu), state->ddenlovr_blit_latch, data); |
| 1128 | 1207 | break; |
| 1129 | 1208 | } |
| 1130 | 1209 | |
| r7640 | r7641 | |
| 1134 | 1213 | |
| 1135 | 1214 | static WRITE8_HANDLER( rongrong_blitter_w ) |
| 1136 | 1215 | { |
| 1137 | | blitter_w(space, 0,offset,data,0xf8); |
| 1216 | blitter_w(space, 0, offset, data, 0xf8); |
| 1138 | 1217 | } |
| 1139 | 1218 | |
| 1140 | 1219 | static WRITE16_HANDLER( ddenlovr_blitter_w ) |
| 1141 | 1220 | { |
| 1142 | 1221 | if (ACCESSING_BITS_0_7) |
| 1143 | | blitter_w(space, 0,offset,data & 0xff,0); |
| 1222 | blitter_w(space, 0, offset, data & 0xff, 0); |
| 1144 | 1223 | } |
| 1145 | 1224 | |
| 1146 | 1225 | |
| 1147 | 1226 | static WRITE16_HANDLER( ddenlovr_blitter_irq_ack_w ) |
| 1148 | 1227 | { |
| 1228 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1229 | |
| 1149 | 1230 | if (ACCESSING_BITS_0_7) |
| 1150 | 1231 | { |
| 1151 | 1232 | if (data & 1) |
| 1152 | 1233 | { |
| 1153 | | ddenlovr_blitter_irq_enable = 1; |
| 1234 | state->ddenlovr_blitter_irq_enable = 1; |
| 1154 | 1235 | } |
| 1155 | 1236 | else |
| 1156 | 1237 | { |
| 1157 | | ddenlovr_blitter_irq_enable = 0; |
| 1158 | | ddenlovr_blitter_irq_flag = 0; |
| 1238 | state->ddenlovr_blitter_irq_enable = 0; |
| 1239 | state->ddenlovr_blitter_irq_flag = 0; |
| 1159 | 1240 | } |
| 1160 | 1241 | } |
| 1161 | 1242 | } |
| r7640 | r7641 | |
| 1163 | 1244 | |
| 1164 | 1245 | static READ8_HANDLER( rongrong_gfxrom_r ) |
| 1165 | 1246 | { |
| 1166 | | UINT8 *rom = memory_region( space->machine, "blitter" ); |
| 1167 | | size_t size = memory_region_length( space->machine, "blitter" ); |
| 1168 | | int address = ddenlovr_blit_address; |
| 1247 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1248 | UINT8 *rom = memory_region(space->machine, "blitter"); |
| 1249 | size_t size = memory_region_length(space->machine, "blitter"); |
| 1250 | int address = state->ddenlovr_blit_address; |
| 1169 | 1251 | |
| 1170 | 1252 | if (address >= size) |
| 1171 | 1253 | { |
| r7640 | r7641 | |
| 1173 | 1255 | address %= size; |
| 1174 | 1256 | } |
| 1175 | 1257 | |
| 1176 | | ddenlovr_blit_address = (ddenlovr_blit_address + 1) & 0xffffff; |
| 1258 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address + 1) & 0xffffff; |
| 1177 | 1259 | |
| 1178 | 1260 | return rom[address]; |
| 1179 | 1261 | } |
| r7640 | r7641 | |
| 1184 | 1266 | } |
| 1185 | 1267 | |
| 1186 | 1268 | |
| 1187 | | |
| 1188 | | static void copylayer(bitmap_t *bitmap,const rectangle *cliprect,int layer) |
| 1269 | static void copylayer(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int layer ) |
| 1189 | 1270 | { |
| 1271 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 1190 | 1272 | int x,y; |
| 1191 | | int scrollx = ddenlovr_scroll[layer/4*8 + (layer%4) + 0]; |
| 1192 | | int scrolly = ddenlovr_scroll[layer/4*8 + (layer%4) + 4]; |
| 1273 | int scrollx = state->ddenlovr_scroll[layer / 4 * 8 + (layer % 4) + 0]; |
| 1274 | int scrolly = state->ddenlovr_scroll[layer / 4 * 8 + (layer % 4) + 4]; |
| 1193 | 1275 | |
| 1194 | | int palbase = ddenlovr_palette_base[layer]; |
| 1195 | | int penmask = ddenlovr_palette_mask[layer]; |
| 1276 | int palbase = state->ddenlovr_palette_base[layer]; |
| 1277 | int penmask = state->ddenlovr_palette_mask[layer]; |
| 1196 | 1278 | |
| 1197 | | int transpen = ddenlovr_transparency_pen[layer]; |
| 1198 | | int transmask = ddenlovr_transparency_mask[layer]; |
| 1279 | int transpen = state->ddenlovr_transparency_pen[layer]; |
| 1280 | int transmask = state->ddenlovr_transparency_mask[layer]; |
| 1199 | 1281 | |
| 1200 | | palbase &= ~penmask; |
| 1201 | | transpen &= transmask; |
| 1282 | palbase &= ~penmask; |
| 1283 | transpen &= transmask; |
| 1202 | 1284 | |
| 1203 | | if (((ddenlovr_layer_enable2 << 4) | ddenlovr_layer_enable) & (1 << layer)) |
| 1285 | if (((state->ddenlovr_layer_enable2 << 4) | state->ddenlovr_layer_enable) & (1 << layer)) |
| 1204 | 1286 | { |
| 1205 | | for (y = cliprect->min_y;y <= cliprect->max_y;y++) |
| 1287 | for (y = cliprect->min_y; y <= cliprect->max_y; y++) |
| 1206 | 1288 | { |
| 1207 | | for (x = cliprect->min_x;x <= cliprect->max_x;x++) |
| 1289 | for (x = cliprect->min_x; x <= cliprect->max_x; x++) |
| 1208 | 1290 | { |
| 1209 | | int pen = ddenlovr_pixmap[layer][512 * ((y + scrolly) & 0x1ff) + ((x + scrollx) & 0x1ff)]; |
| 1210 | | if ( (pen & transmask) != transpen ) |
| 1291 | int pen = state->ddenlovr_pixmap[layer][512 * ((y + scrolly) & 0x1ff) + ((x + scrollx) & 0x1ff)]; |
| 1292 | if ((pen & transmask) != transpen) |
| 1211 | 1293 | { |
| 1212 | 1294 | pen &= penmask; |
| 1213 | 1295 | pen |= palbase; |
| r7640 | r7641 | |
| 1220 | 1302 | |
| 1221 | 1303 | VIDEO_UPDATE(ddenlovr) |
| 1222 | 1304 | { |
| 1305 | dynax_state *state = (dynax_state *)screen->machine->driver_data; |
| 1306 | |
| 1223 | 1307 | static const int order[24][4] = |
| 1224 | 1308 | { |
| 1225 | 1309 | { 3,2,1,0 }, { 2,3,1,0 }, { 3,1,2,0 }, { 1,3,2,0 }, { 2,1,3,0 }, { 1,2,3,0 }, |
| r7640 | r7641 | |
| 1230 | 1314 | |
| 1231 | 1315 | int pri; |
| 1232 | 1316 | |
| 1233 | | int enab = ddenlovr_layer_enable; |
| 1234 | | int enab2 = ddenlovr_layer_enable2; |
| 1317 | int enab = state->ddenlovr_layer_enable; |
| 1318 | int enab2 = state->ddenlovr_layer_enable2; |
| 1235 | 1319 | |
| 1236 | 1320 | #if 0 |
| 1237 | 1321 | static int base = 0x0; |
| 1238 | 1322 | const UINT8 *gfx = memory_region(screen->machine, "blitter"); |
| 1239 | 1323 | int next; |
| 1240 | | memset(ddenlovr_pixmap[0],0,512*512); |
| 1241 | | memset(ddenlovr_pixmap[1],0,512*512); |
| 1242 | | memset(ddenlovr_pixmap[2],0,512*512); |
| 1243 | | memset(ddenlovr_pixmap[3],0,512*512); |
| 1244 | | ddenlovr_dest_layer = 8; |
| 1245 | | ddenlovr_blit_pen = 0; |
| 1246 | | ddenlovr_blit_pen_mode = 0; |
| 1247 | | ddenlovr_blit_y = 5; |
| 1248 | | ddenlovr_clip_ctrl = 0x0f; |
| 1249 | | next = blit_draw(screen->machine,base,0); |
| 1250 | | popmessage("GFX %06x",base); |
| 1324 | memset(state->ddenlovr_pixmap[0], 0, 512 * 512); |
| 1325 | memset(state->ddenlovr_pixmap[1], 0, 512 * 512); |
| 1326 | memset(state->ddenlovr_pixmap[2], 0, 512 * 512); |
| 1327 | memset(state->ddenlovr_pixmap[3], 0, 512 * 512); |
| 1328 | state->ddenlovr_dest_layer = 8; |
| 1329 | state->ddenlovr_blit_pen = 0; |
| 1330 | state->ddenlovr_blit_pen_mode = 0; |
| 1331 | state->ddenlovr_blit_y = 5; |
| 1332 | state->ddenlovr_clip_ctrl = 0x0f; |
| 1333 | next = blit_draw(screen->machine, base, 0); |
| 1334 | popmessage("GFX %06x", base); |
| 1251 | 1335 | if (input_code_pressed(screen->machine, KEYCODE_S)) base = next; |
| 1252 | 1336 | if (input_code_pressed_once(screen->machine, KEYCODE_X)) base = next; |
| 1253 | 1337 | if (input_code_pressed(screen->machine, KEYCODE_C)) { base--; while ((gfx[base] & 0xf0) != 0x30) base--; } |
| r7640 | r7641 | |
| 1256 | 1340 | if (input_code_pressed_once(screen->machine, KEYCODE_F)) { base++; while ((gfx[base] & 0xf0) != 0x30) base++; } |
| 1257 | 1341 | #endif |
| 1258 | 1342 | |
| 1259 | | bitmap_fill(bitmap,cliprect,ddenlovr_bgcolor); |
| 1343 | bitmap_fill(bitmap, cliprect, state->ddenlovr_bgcolor); |
| 1260 | 1344 | |
| 1261 | 1345 | #ifdef MAME_DEBUG |
| 1262 | 1346 | if (input_code_pressed(screen->machine, KEYCODE_Z)) |
| 1263 | 1347 | { |
| 1264 | | int mask,mask2; |
| 1348 | int mask, mask2; |
| 1265 | 1349 | |
| 1266 | 1350 | mask = 0; |
| 1267 | 1351 | |
| r7640 | r7641 | |
| 1272 | 1356 | |
| 1273 | 1357 | mask2 = 0; |
| 1274 | 1358 | |
| 1275 | | if (extra_layers) |
| 1359 | if (state->extra_layers) |
| 1276 | 1360 | { |
| 1277 | 1361 | if (input_code_pressed(screen->machine, KEYCODE_A)) mask2 |= 1; |
| 1278 | 1362 | if (input_code_pressed(screen->machine, KEYCODE_S)) mask2 |= 2; |
| r7640 | r7641 | |
| 1282 | 1366 | |
| 1283 | 1367 | if (mask || mask2) |
| 1284 | 1368 | { |
| 1285 | | ddenlovr_layer_enable &= mask; |
| 1286 | | ddenlovr_layer_enable2 &= mask2; |
| 1369 | state->ddenlovr_layer_enable &= mask; |
| 1370 | state->ddenlovr_layer_enable2 &= mask2; |
| 1287 | 1371 | } |
| 1288 | 1372 | } |
| 1289 | 1373 | #endif |
| 1290 | 1374 | |
| 1291 | | pri = ddenlovr_priority; |
| 1375 | pri = state->ddenlovr_priority; |
| 1292 | 1376 | |
| 1293 | | if (pri >= 24) |
| 1294 | | { |
| 1295 | | popmessage("priority = %02x",pri); |
| 1296 | | pri = 0; |
| 1297 | | } |
| 1377 | if (pri >= 24) |
| 1378 | { |
| 1379 | popmessage("priority = %02x", pri); |
| 1380 | pri = 0; |
| 1381 | } |
| 1298 | 1382 | |
| 1299 | | copylayer(bitmap,cliprect,order[pri][0]); |
| 1300 | | copylayer(bitmap,cliprect,order[pri][1]); |
| 1301 | | copylayer(bitmap,cliprect,order[pri][2]); |
| 1302 | | copylayer(bitmap,cliprect,order[pri][3]); |
| 1383 | copylayer(screen->machine, bitmap, cliprect, order[pri][0]); |
| 1384 | copylayer(screen->machine, bitmap, cliprect, order[pri][1]); |
| 1385 | copylayer(screen->machine, bitmap, cliprect, order[pri][2]); |
| 1386 | copylayer(screen->machine, bitmap, cliprect, order[pri][3]); |
| 1303 | 1387 | |
| 1304 | | if (extra_layers) |
| 1388 | if (state->extra_layers) |
| 1305 | 1389 | { |
| 1306 | | pri = ddenlovr_priority2; |
| 1390 | pri = state->ddenlovr_priority2; |
| 1307 | 1391 | |
| 1308 | 1392 | if (pri >= 24) |
| 1309 | 1393 | { |
| 1310 | | popmessage("priority2 = %02x",pri); |
| 1394 | popmessage("priority2 = %02x", pri); |
| 1311 | 1395 | pri = 0; |
| 1312 | 1396 | } |
| 1313 | 1397 | |
| 1314 | | copylayer(bitmap,cliprect,order[pri][0]+4); |
| 1315 | | copylayer(bitmap,cliprect,order[pri][1]+4); |
| 1316 | | copylayer(bitmap,cliprect,order[pri][2]+4); |
| 1317 | | copylayer(bitmap,cliprect,order[pri][3]+4); |
| 1398 | copylayer(screen->machine, bitmap, cliprect, order[pri][0] + 4); |
| 1399 | copylayer(screen->machine, bitmap, cliprect, order[pri][1] + 4); |
| 1400 | copylayer(screen->machine, bitmap, cliprect, order[pri][2] + 4); |
| 1401 | copylayer(screen->machine, bitmap, cliprect, order[pri][3] + 4); |
| 1318 | 1402 | } |
| 1319 | 1403 | |
| 1320 | | ddenlovr_layer_enable = enab; |
| 1321 | | ddenlovr_layer_enable2 = enab2; |
| 1404 | state->ddenlovr_layer_enable = enab; |
| 1405 | state->ddenlovr_layer_enable2 = enab2; |
| 1322 | 1406 | |
| 1323 | 1407 | return 0; |
| 1324 | 1408 | } |
| 1325 | 1409 | |
| 1326 | 1410 | static CUSTOM_INPUT( ddenlovr_special_r ) |
| 1327 | 1411 | { |
| 1328 | | return ddenlovr_blitter_irq_flag; |
| 1412 | dynax_state *state = (dynax_state *)field->port->machine->driver_data; |
| 1413 | return state->ddenlovr_blitter_irq_flag; |
| 1329 | 1414 | } |
| 1330 | 1415 | |
| 1331 | 1416 | static WRITE16_HANDLER( ddenlovr_coincounter_0_w ) |
| r7640 | r7641 | |
| 1340 | 1425 | } |
| 1341 | 1426 | |
| 1342 | 1427 | |
| 1343 | | static UINT8 palram[0x200]; |
| 1344 | | |
| 1345 | 1428 | static WRITE8_HANDLER( rongrong_palette_w ) |
| 1346 | 1429 | { |
| 1347 | | int r,g,b,d1,d2,indx; |
| 1430 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1431 | int r, g, b, d1, d2, indx; |
| 1348 | 1432 | |
| 1349 | | palram[offset] = data; |
| 1433 | state->palram[offset] = data; |
| 1350 | 1434 | |
| 1351 | 1435 | indx = ((offset & 0x1e0) >> 1) | (offset & 0x00f); |
| 1352 | | d1 = palram[offset & ~0x10]; |
| 1353 | | d2 = palram[offset | 0x10]; |
| 1436 | d1 = state->palram[offset & ~0x10]; |
| 1437 | d2 = state->palram[offset | 0x10]; |
| 1354 | 1438 | |
| 1355 | 1439 | r = d1 & 0x1f; |
| 1356 | 1440 | g = d2 & 0x1f; |
| 1357 | 1441 | /* what were they smoking??? */ |
| 1358 | 1442 | b = ((d1 & 0xe0) >> 5) | (d2 & 0xc0) >> 3; |
| 1359 | 1443 | |
| 1360 | | palette_set_color_rgb(space->machine,indx,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 1444 | palette_set_color_rgb(space->machine, indx, pal5bit(r), pal5bit(g), pal5bit(b)); |
| 1361 | 1445 | } |
| 1362 | 1446 | |
| 1363 | 1447 | static WRITE16_HANDLER( ddenlovr_palette_w ) |
| 1364 | 1448 | { |
| 1365 | 1449 | if (ACCESSING_BITS_0_7) |
| 1366 | | rongrong_palette_w(space,offset,data & 0xff); |
| 1450 | rongrong_palette_w(space, offset, data & 0xff); |
| 1367 | 1451 | } |
| 1368 | 1452 | |
| 1369 | 1453 | |
| 1370 | 1454 | WRITE8_HANDLER( ddenlovr_palette_base_w ) |
| 1371 | 1455 | { |
| 1372 | | ddenlovr_palette_base[offset] = data; |
| 1456 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1457 | state->ddenlovr_palette_base[offset] = data; |
| 1373 | 1458 | } |
| 1459 | |
| 1374 | 1460 | static WRITE8_HANDLER( ddenlovr_palette_base2_w ) |
| 1375 | 1461 | { |
| 1376 | | ddenlovr_palette_base[offset+4] = data; |
| 1462 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1463 | state->ddenlovr_palette_base[offset + 4] = data; |
| 1377 | 1464 | } |
| 1378 | 1465 | |
| 1379 | 1466 | WRITE8_HANDLER( ddenlovr_palette_mask_w ) |
| 1380 | 1467 | { |
| 1381 | | ddenlovr_palette_mask[offset] = data; |
| 1468 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1469 | state->ddenlovr_palette_mask[offset] = data; |
| 1382 | 1470 | } |
| 1471 | |
| 1383 | 1472 | static WRITE8_HANDLER( ddenlovr_palette_mask2_w ) |
| 1384 | 1473 | { |
| 1385 | | ddenlovr_palette_mask[offset+4] = data; |
| 1474 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1475 | state->ddenlovr_palette_mask[offset + 4] = data; |
| 1386 | 1476 | } |
| 1387 | 1477 | |
| 1478 | |
| 1388 | 1479 | WRITE8_HANDLER( ddenlovr_transparency_pen_w ) |
| 1389 | 1480 | { |
| 1390 | | ddenlovr_transparency_pen[offset] = data; |
| 1481 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1482 | state->ddenlovr_transparency_pen[offset] = data; |
| 1391 | 1483 | } |
| 1484 | |
| 1392 | 1485 | static WRITE8_HANDLER( ddenlovr_transparency_pen2_w ) |
| 1393 | 1486 | { |
| 1394 | | ddenlovr_transparency_pen[offset+4] = data; |
| 1487 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1488 | state->ddenlovr_transparency_pen[offset + 4] = data; |
| 1395 | 1489 | } |
| 1396 | 1490 | |
| 1491 | |
| 1397 | 1492 | WRITE8_HANDLER( ddenlovr_transparency_mask_w ) |
| 1398 | 1493 | { |
| 1399 | | ddenlovr_transparency_mask[offset] = data; |
| 1494 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1495 | state->ddenlovr_transparency_mask[offset] = data; |
| 1400 | 1496 | } |
| 1497 | |
| 1401 | 1498 | static WRITE8_HANDLER( ddenlovr_transparency_mask2_w ) |
| 1402 | 1499 | { |
| 1403 | | ddenlovr_transparency_mask[offset+4] = data; |
| 1500 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1501 | state->ddenlovr_transparency_mask[offset + 4] = data; |
| 1404 | 1502 | } |
| 1405 | 1503 | |
| 1406 | 1504 | |
| 1407 | 1505 | static WRITE16_HANDLER( ddenlovr16_palette_base_w ) |
| 1408 | 1506 | { |
| 1507 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1508 | |
| 1409 | 1509 | if (ACCESSING_BITS_0_7) |
| 1410 | | ddenlovr_palette_base[offset] = data & 0xff; |
| 1510 | state->ddenlovr_palette_base[offset] = data & 0xff; |
| 1411 | 1511 | } |
| 1412 | 1512 | |
| 1413 | 1513 | static WRITE16_HANDLER( ddenlovr16_palette_mask_w ) |
| 1414 | 1514 | { |
| 1515 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1516 | |
| 1415 | 1517 | if (ACCESSING_BITS_0_7) |
| 1416 | | ddenlovr_palette_mask[offset] = data & 0xff; |
| 1518 | state->ddenlovr_palette_mask[offset] = data & 0xff; |
| 1417 | 1519 | } |
| 1418 | 1520 | |
| 1419 | 1521 | static WRITE16_HANDLER( ddenlovr16_transparency_pen_w ) |
| 1420 | 1522 | { |
| 1523 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1524 | |
| 1421 | 1525 | if (ACCESSING_BITS_0_7) |
| 1422 | | ddenlovr_transparency_pen[offset] = data & 0xff; |
| 1526 | state->ddenlovr_transparency_pen[offset] = data & 0xff; |
| 1423 | 1527 | } |
| 1424 | 1528 | |
| 1425 | 1529 | static WRITE16_HANDLER( ddenlovr16_transparency_mask_w ) |
| 1426 | 1530 | { |
| 1531 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1532 | |
| 1427 | 1533 | if (ACCESSING_BITS_0_7) |
| 1428 | | ddenlovr_transparency_mask[offset] = data & 0xff; |
| 1534 | state->ddenlovr_transparency_mask[offset] = data & 0xff; |
| 1429 | 1535 | } |
| 1430 | 1536 | |
| 1431 | 1537 | |
| r7640 | r7641 | |
| 1441 | 1547 | } |
| 1442 | 1548 | |
| 1443 | 1549 | |
| 1444 | | static int okibank; |
| 1445 | 1550 | |
| 1446 | 1551 | static WRITE16_DEVICE_HANDLER( quiz365_oki_bank1_w ) |
| 1447 | 1552 | { |
| 1553 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1554 | |
| 1448 | 1555 | if (ACCESSING_BITS_0_7) |
| 1449 | 1556 | { |
| 1450 | | okibank = (okibank & 2) | (data & 1); |
| 1451 | | okim6295_set_bank_base(device, okibank * 0x40000); |
| 1557 | state->okibank = (state->okibank & 2) | (data & 1); |
| 1558 | okim6295_set_bank_base(device, state->okibank * 0x40000); |
| 1452 | 1559 | } |
| 1453 | 1560 | } |
| 1454 | 1561 | |
| 1455 | 1562 | static WRITE16_DEVICE_HANDLER( quiz365_oki_bank2_w ) |
| 1456 | 1563 | { |
| 1564 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1565 | |
| 1457 | 1566 | if (ACCESSING_BITS_0_7) |
| 1458 | 1567 | { |
| 1459 | | okibank = (okibank & 1) | ((data & 1) << 1); |
| 1460 | | okim6295_set_bank_base(device, okibank * 0x40000); |
| 1568 | state->okibank = (state->okibank & 1) | ((data & 1) << 1); |
| 1569 | okim6295_set_bank_base(device, state->okibank * 0x40000); |
| 1461 | 1570 | } |
| 1462 | 1571 | } |
| 1463 | 1572 | |
| r7640 | r7641 | |
| 1470 | 1579 | |
| 1471 | 1580 | static READ16_HANDLER( unk16_r ) |
| 1472 | 1581 | { |
| 1473 | | return unk_r(space,offset); |
| 1582 | return unk_r(space, offset); |
| 1474 | 1583 | } |
| 1475 | 1584 | |
| 1476 | 1585 | |
| 1477 | | static UINT8 ddenlovr_select, ddenlovr_select2; |
| 1478 | | |
| 1479 | 1586 | static WRITE8_DEVICE_HANDLER( ddenlovr_select_w ) |
| 1480 | 1587 | { |
| 1481 | | ddenlovr_select = data; |
| 1588 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1589 | state->dsw_sel = data; |
| 1482 | 1590 | } |
| 1483 | 1591 | |
| 1484 | 1592 | static WRITE16_HANDLER( ddenlovr_select_16_w ) |
| 1485 | 1593 | { |
| 1594 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1595 | |
| 1486 | 1596 | if (ACCESSING_BITS_0_7) |
| 1487 | | ddenlovr_select = data; |
| 1597 | state->dsw_sel = data; |
| 1488 | 1598 | } |
| 1489 | 1599 | |
| 1490 | 1600 | static WRITE8_HANDLER( ddenlovr_select2_w ) |
| 1491 | 1601 | { |
| 1492 | | ddenlovr_select2 = data; |
| 1602 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1603 | state->input_sel = data; |
| 1493 | 1604 | } |
| 1494 | 1605 | |
| 1495 | 1606 | static WRITE16_HANDLER( ddenlovr_select2_16_w ) |
| 1496 | 1607 | { |
| 1608 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1609 | |
| 1497 | 1610 | if (ACCESSING_BITS_0_7) |
| 1498 | | ddenlovr_select2 = data; |
| 1611 | state->input_sel = data; |
| 1499 | 1612 | } |
| 1500 | 1613 | |
| 1501 | 1614 | static READ8_HANDLER( rongrong_input2_r ) |
| 1502 | 1615 | { |
| 1503 | | // logerror("%04x: input2_r offset %d select %x\n",cpu_get_pc(space->cpu),offset,ddenlovr_select2 ); |
| 1616 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1617 | |
| 1618 | // logerror("%04x: input2_r offset %d select %x\n", cpu_get_pc(space->cpu), offset, state->input_sel); |
| 1504 | 1619 | /* 0 and 1 are read from offset 1, 2 from offset 0... */ |
| 1505 | | switch( ddenlovr_select2 ) |
| 1620 | switch (state->input_sel) |
| 1506 | 1621 | { |
| 1507 | 1622 | case 0x00: return input_port_read(space->machine, "P1"); |
| 1508 | 1623 | case 0x01: return input_port_read(space->machine, "P2"); |
| r7640 | r7641 | |
| 1514 | 1629 | |
| 1515 | 1630 | static READ8_DEVICE_HANDLER( quiz365_input_r ) |
| 1516 | 1631 | { |
| 1517 | | if (!(ddenlovr_select & 0x01)) return input_port_read(device->machine, "DSW1"); |
| 1518 | | if (!(ddenlovr_select & 0x02)) return input_port_read(device->machine, "DSW2"); |
| 1519 | | if (!(ddenlovr_select & 0x04)) return input_port_read(device->machine, "DSW3"); |
| 1520 | | if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(device->machine); |
| 1521 | | if (!(ddenlovr_select & 0x10)) return 0xff;//mame_rand(device->machine); |
| 1632 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1633 | |
| 1634 | if (!BIT(state->dsw_sel, 0)) return input_port_read(device->machine, "DSW1"); |
| 1635 | if (!BIT(state->dsw_sel, 1)) return input_port_read(device->machine, "DSW2"); |
| 1636 | if (!BIT(state->dsw_sel, 2)) return input_port_read(device->machine, "DSW3"); |
| 1637 | if (!BIT(state->dsw_sel, 3)) return 0xff;//mame_rand(device->machine); |
| 1638 | if (!BIT(state->dsw_sel, 4)) return 0xff;//mame_rand(device->machine); |
| 1522 | 1639 | return 0xff; |
| 1523 | 1640 | } |
| 1524 | 1641 | |
| 1525 | 1642 | static READ16_HANDLER( quiz365_input2_r ) |
| 1526 | 1643 | { |
| 1527 | | // logerror("%04x: input2_r offset %d select %x\n",cpu_get_pc(space->cpu),offset,ddenlovr_select2 ); |
| 1644 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1645 | |
| 1646 | // logerror("%04x: input2_r offset %d select %x\n",cpu_get_pc(space->cpu), offset, state->input_sel); |
| 1528 | 1647 | /* 0 and 1 are read from offset 1, 2 from offset 0... */ |
| 1529 | | switch( ddenlovr_select2 ) |
| 1648 | switch (state->input_sel) |
| 1530 | 1649 | { |
| 1531 | 1650 | case 0x10: return input_port_read(space->machine, "P1"); |
| 1532 | 1651 | case 0x11: return input_port_read(space->machine, "P2"); |
| r7640 | r7641 | |
| 1535 | 1654 | return 0xff; |
| 1536 | 1655 | } |
| 1537 | 1656 | |
| 1538 | | static UINT8 rongrong_blitter_busy_select; |
| 1539 | 1657 | |
| 1540 | 1658 | static WRITE8_HANDLER( rongrong_blitter_busy_w ) |
| 1541 | 1659 | { |
| 1542 | | rongrong_blitter_busy_select = data; |
| 1660 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1661 | state->rongrong_blitter_busy_select = data; |
| 1662 | |
| 1543 | 1663 | if (data != 0x18) |
| 1544 | | logerror("%04x: rongrong_blitter_busy_w data = %02x\n",cpu_get_pc(space->cpu),data); |
| 1664 | logerror("%04x: rongrong_blitter_busy_w data = %02x\n", cpu_get_pc(space->cpu), data); |
| 1545 | 1665 | } |
| 1666 | |
| 1546 | 1667 | static READ8_HANDLER( rongrong_blitter_busy_r ) |
| 1547 | 1668 | { |
| 1548 | | switch( rongrong_blitter_busy_select ) |
| 1669 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1670 | |
| 1671 | switch (state->rongrong_blitter_busy_select) |
| 1549 | 1672 | { |
| 1550 | 1673 | case 0x18: return 0; // bit 5 = blitter busy |
| 1551 | 1674 | |
| 1552 | 1675 | default: |
| 1553 | | logerror("%04x: rongrong_blitter_busy_r with select = %02x\n",cpu_get_pc(space->cpu),rongrong_blitter_busy_select); |
| 1676 | logerror("%04x: rongrong_blitter_busy_r with select = %02x\n", cpu_get_pc(space->cpu), state->rongrong_blitter_busy_select); |
| 1554 | 1677 | } |
| 1555 | 1678 | return 0xff; |
| 1556 | 1679 | } |
| r7640 | r7641 | |
| 1558 | 1681 | |
| 1559 | 1682 | static WRITE16_HANDLER( quiz365_coincounter_w ) |
| 1560 | 1683 | { |
| 1684 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1685 | |
| 1561 | 1686 | if (ACCESSING_BITS_0_7) |
| 1562 | 1687 | { |
| 1563 | | if (ddenlovr_select2 == 0x1c) |
| 1688 | if (state->input_sel == 0x1c) |
| 1564 | 1689 | { |
| 1565 | 1690 | coin_counter_w(space->machine, 0, ~data & 1); |
| 1566 | 1691 | coin_counter_w(space->machine, 1, ~data & 4); |
| r7640 | r7641 | |
| 1572 | 1697 | 37,28,12 11 -> 88 |
| 1573 | 1698 | 67,4c,3a ?? -> 51 |
| 1574 | 1699 | */ |
| 1575 | | static UINT16 quiz365_protection[2]; |
| 1576 | 1700 | static READ16_HANDLER( quiz365_protection_r ) |
| 1577 | 1701 | { |
| 1578 | | switch(quiz365_protection[0]) |
| 1702 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1703 | |
| 1704 | switch (state->quiz365_protection[0]) |
| 1579 | 1705 | { |
| 1580 | 1706 | case 0x3a: |
| 1581 | 1707 | return 0x0051; |
| r7640 | r7641 | |
| 1583 | 1709 | return 0x0088; |
| 1584 | 1710 | } |
| 1585 | 1711 | } |
| 1712 | |
| 1586 | 1713 | static WRITE16_HANDLER( quiz365_protection_w ) |
| 1587 | 1714 | { |
| 1588 | | COMBINE_DATA(quiz365_protection + offset); |
| 1715 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1716 | COMBINE_DATA(state->quiz365_protection + offset); |
| 1589 | 1717 | } |
| 1590 | 1718 | |
| 1591 | 1719 | static ADDRESS_MAP_START( quiz365_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| r7640 | r7641 | |
| 1625 | 1753 | ADDRESS_MAP_END |
| 1626 | 1754 | |
| 1627 | 1755 | |
| 1628 | | static UINT16 *ddenlovj_dsw_sel; |
| 1629 | | |
| 1630 | 1756 | static READ16_HANDLER( ddenlovj_dsw_r ) |
| 1631 | 1757 | { |
| 1758 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1632 | 1759 | UINT16 dsw = 0; |
| 1633 | | if ((~*ddenlovj_dsw_sel) & 0x01) dsw |= input_port_read(space->machine, "DSW1"); |
| 1634 | | if ((~*ddenlovj_dsw_sel) & 0x02) dsw |= input_port_read(space->machine, "DSW2"); |
| 1635 | | if ((~*ddenlovj_dsw_sel) & 0x04) dsw |= input_port_read(space->machine, "DSW3"); |
| 1760 | if ((~*state->dsw_sel16) & 0x01) dsw |= input_port_read(space->machine, "DSW1"); |
| 1761 | if ((~*state->dsw_sel16) & 0x02) dsw |= input_port_read(space->machine, "DSW2"); |
| 1762 | if ((~*state->dsw_sel16) & 0x04) dsw |= input_port_read(space->machine, "DSW3"); |
| 1636 | 1763 | return dsw; |
| 1637 | 1764 | } |
| 1638 | 1765 | |
| r7640 | r7641 | |
| 1648 | 1775 | |
| 1649 | 1776 | static CUSTOM_INPUT( ddenlovj_blitter_r ) |
| 1650 | 1777 | { |
| 1651 | | return ddenlovr_blitter_irq_flag ? 0x03 : 0x00; // bit 4 = 1 -> blitter busy |
| 1778 | dynax_state *state = (dynax_state *)field->port->machine->driver_data; |
| 1779 | return state->ddenlovr_blitter_irq_flag ? 0x03 : 0x00; // bit 4 = 1 -> blitter busy |
| 1652 | 1780 | } |
| 1653 | 1781 | |
| 1654 | 1782 | static ADDRESS_MAP_START( ddenlovj_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| r7640 | r7641 | |
| 1675 | 1803 | AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") |
| 1676 | 1804 | AM_RANGE(0x300186, 0x300187) AM_READ(ddenlovj_dsw_r) // DSW |
| 1677 | 1805 | AM_RANGE(0x300188, 0x300189) AM_WRITE(ddenlovj_coincounter_w) // Coin Counters |
| 1678 | | AM_RANGE(0x30018a, 0x30018b) AM_WRITEONLY AM_BASE(&ddenlovj_dsw_sel) // DSW select |
| 1806 | AM_RANGE(0x30018a, 0x30018b) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, dsw_sel16) // DSW select |
| 1679 | 1807 | AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE("oki", ddenlovr_oki_bank_w) |
| 1680 | 1808 | AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge |
| 1681 | 1809 | AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)// Sound |
| r7640 | r7641 | |
| 1683 | 1811 | ADDRESS_MAP_END |
| 1684 | 1812 | |
| 1685 | 1813 | |
| 1686 | | static UINT16 *ddenlovrk_protection1, *ddenlovrk_protection2; |
| 1687 | 1814 | static READ16_HANDLER( ddenlovrk_protection1_r ) |
| 1688 | 1815 | { |
| 1689 | | switch(*ddenlovrk_protection1) |
| 1816 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1817 | switch (*state->protection1) |
| 1690 | 1818 | { |
| 1691 | 1819 | case 0x007e: return 0x00aa; |
| 1692 | 1820 | } |
| 1693 | | return *ddenlovrk_protection1; |
| 1821 | return *state->protection1; |
| 1694 | 1822 | } |
| 1695 | 1823 | |
| 1696 | 1824 | static READ16_HANDLER( ddenlovrk_protection2_r ) |
| 1697 | 1825 | { |
| 1698 | | switch(*ddenlovrk_protection1) |
| 1826 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1827 | switch (*state->protection1) |
| 1699 | 1828 | { |
| 1700 | | case 0x0000: return *ddenlovrk_protection2; |
| 1829 | case 0x0000: return *state->protection2; |
| 1701 | 1830 | } |
| 1702 | 1831 | return 0x80; |
| 1703 | 1832 | } |
| 1704 | 1833 | static WRITE16_HANDLER( ddenlovrk_protection2_w ) |
| 1705 | 1834 | { |
| 1706 | | COMBINE_DATA( ddenlovrk_protection2 ); |
| 1707 | | okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), ((*ddenlovrk_protection2)&0x7) * 0x40000); |
| 1835 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1836 | |
| 1837 | COMBINE_DATA(state->protection2); |
| 1838 | okim6295_set_bank_base(state->oki, ((*state->protection2) & 0x7) * 0x40000); |
| 1708 | 1839 | } |
| 1709 | 1840 | |
| 1710 | 1841 | static ADDRESS_MAP_START( ddenlovrk_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1711 | 1842 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1712 | 1843 | |
| 1713 | | AM_RANGE(0x100000, 0x100001) AM_RAM_READ(ddenlovrk_protection1_r) AM_BASE(&ddenlovrk_protection1) |
| 1714 | | AM_RANGE(0x200000, 0x200001) AM_READWRITE(ddenlovrk_protection2_r, ddenlovrk_protection2_w) AM_BASE(&ddenlovrk_protection2) |
| 1844 | AM_RANGE(0x100000, 0x100001) AM_RAM_READ(ddenlovrk_protection1_r) AM_BASE_MEMBER(dynax_state, protection1) |
| 1845 | AM_RANGE(0x200000, 0x200001) AM_READWRITE(ddenlovrk_protection2_r, ddenlovrk_protection2_w) AM_BASE_MEMBER(dynax_state, protection2) |
| 1715 | 1846 | |
| 1716 | 1847 | AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w) // Palette |
| 1717 | 1848 | // AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00 |
| r7640 | r7641 | |
| 1784 | 1915 | |
| 1785 | 1916 | static CUSTOM_INPUT( nettoqc_special_r ) |
| 1786 | 1917 | { |
| 1787 | | return ddenlovr_blitter_irq_flag ? 0x03 : 0x00; |
| 1918 | dynax_state *state = (dynax_state *)field->port->machine->driver_data; |
| 1919 | return state->ddenlovr_blitter_irq_flag ? 0x03 : 0x00; |
| 1788 | 1920 | } |
| 1789 | 1921 | |
| 1790 | 1922 | static READ16_HANDLER( nettoqc_input_r ) |
| 1791 | 1923 | { |
| 1792 | | if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW1"); |
| 1793 | | if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW2"); |
| 1794 | | if (!(ddenlovr_select & 0x04)) return input_port_read(space->machine, "DSW3"); |
| 1924 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1925 | |
| 1926 | if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1"); |
| 1927 | if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2"); |
| 1928 | if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW3"); |
| 1795 | 1929 | return 0xffff; |
| 1796 | 1930 | } |
| 1797 | 1931 | |
| r7640 | r7641 | |
| 1802 | 1936 | Writes 67 4c 3a to 200e0b then 19 to 200e0d. Expects to read 51 from 200c03 |
| 1803 | 1937 | */ |
| 1804 | 1938 | |
| 1805 | | static UINT16 *nettoqc_protection_val; |
| 1806 | | |
| 1807 | 1939 | static READ16_HANDLER( nettoqc_protection_r ) |
| 1808 | 1940 | { |
| 1809 | | switch( nettoqc_protection_val[0] & 0xff ) |
| 1941 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1942 | |
| 1943 | switch (state->protection1[0] & 0xff) |
| 1810 | 1944 | { |
| 1811 | 1945 | case 0x3a: return 0x0051; |
| 1812 | 1946 | default: return 0x0088; |
| r7640 | r7641 | |
| 1834 | 1968 | |
| 1835 | 1969 | AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette |
| 1836 | 1970 | AM_RANGE(0x200c02, 0x200c03) AM_READ(nettoqc_protection_r) // |
| 1837 | | AM_RANGE(0x200e0a, 0x200e0d) AM_WRITEONLY AM_BASE(&nettoqc_protection_val) // |
| 1971 | AM_RANGE(0x200e0a, 0x200e0d) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, protection1) // |
| 1838 | 1972 | AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ? |
| 1839 | 1973 | |
| 1840 | 1974 | AM_RANGE(0x300040, 0x300047) AM_WRITE(ddenlovr16_palette_base_w) |
| r7640 | r7641 | |
| 1869 | 2003 | |
| 1870 | 2004 | static READ8_HANDLER( rongrong_input_r ) |
| 1871 | 2005 | { |
| 1872 | | if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW1"); |
| 1873 | | if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW2"); |
| 1874 | | if (!(ddenlovr_select & 0x04)) return 0xff;//mame_rand(space->machine); |
| 1875 | | if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(space->machine); |
| 1876 | | if (!(ddenlovr_select & 0x10)) return input_port_read(space->machine, "DSW3"); |
| 2006 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2007 | |
| 2008 | if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1"); |
| 2009 | if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2"); |
| 2010 | if (!BIT(state->dsw_sel, 2)) return 0xff;//mame_rand(space->machine); |
| 2011 | if (!BIT(state->dsw_sel, 3)) return 0xff;//mame_rand(space->machine); |
| 2012 | if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW3"); |
| 1877 | 2013 | return 0xff; |
| 1878 | 2014 | } |
| 1879 | 2015 | |
| 1880 | 2016 | static WRITE8_HANDLER( rongrong_select_w ) |
| 1881 | 2017 | { |
| 1882 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2018 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1883 | 2019 | |
| 1884 | 2020 | //logerror("%04x: rongrong_select_w %02x\n",cpu_get_pc(space->cpu),data); |
| 2021 | |
| 1885 | 2022 | /* bits 0-4 = **both** ROM bank **AND** input select */ |
| 1886 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x1f)]); |
| 1887 | | ddenlovr_select = data; |
| 2023 | memory_set_bank(space->machine, "bank1", data & 0x1f); |
| 2024 | state->dsw_sel = data; |
| 1888 | 2025 | |
| 1889 | 2026 | /* bits 5-7 = RAM bank */ |
| 1890 | | memory_set_bankptr(space->machine, "bank2", &rom[0x110000 + 0x1000 * ((data & 0xe0) >> 5)]); |
| 2027 | memory_set_bank(space->machine, "bank2", ((data & 0xe0) >> 5)); |
| 1891 | 2028 | } |
| 1892 | 2029 | |
| 1893 | 2030 | |
| r7640 | r7641 | |
| 1898 | 2035 | AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(rongrong_palette_w) // ROM (Banked) |
| 1899 | 2036 | ADDRESS_MAP_END |
| 1900 | 2037 | |
| 1901 | | static ADDRESS_MAP_START( quizchq_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2038 | static ADDRESS_MAP_START( quizchq_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2039 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1902 | 2040 | AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) |
| 1903 | 2041 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 1904 | 2042 | AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w) |
| r7640 | r7641 | |
| 1934 | 2072 | AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(rongrong_palette_w) // ROM (Banked) |
| 1935 | 2073 | ADDRESS_MAP_END |
| 1936 | 2074 | |
| 1937 | | static ADDRESS_MAP_START( rongrong_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2075 | static ADDRESS_MAP_START( rongrong_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2076 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1938 | 2077 | AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) |
| 1939 | 2078 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 1940 | 2079 | AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w) |
| r7640 | r7641 | |
| 1979 | 2118 | |
| 1980 | 2119 | static WRITE8_HANDLER( mmpanic_rombank_w ) |
| 1981 | 2120 | { |
| 1982 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 1983 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x7)]); |
| 2121 | memory_set_bank(space->machine, "bank1", data & 0x7); |
| 1984 | 2122 | /* Bit 4? */ |
| 1985 | 2123 | } |
| 1986 | 2124 | |
| 1987 | 2125 | static WRITE8_HANDLER( mmpanic_soundlatch_w ) |
| 1988 | 2126 | { |
| 1989 | | soundlatch_w(space,0,data); |
| 1990 | | cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE); |
| 2127 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2128 | |
| 2129 | soundlatch_w(space, 0, data); |
| 2130 | cpu_set_input_line(state->soundcpu, INPUT_LINE_NMI, PULSE_LINE); |
| 1991 | 2131 | } |
| 1992 | 2132 | |
| 1993 | 2133 | static WRITE8_HANDLER( mmpanic_blitter_w ) |
| 1994 | 2134 | { |
| 1995 | | blitter_w(space, 0,offset,data,0xdf); // RST 18 |
| 2135 | blitter_w(space, 0, offset, data, 0xdf); // RST 18 |
| 1996 | 2136 | } |
| 1997 | 2137 | static WRITE8_HANDLER( mmpanic_blitter2_w ) |
| 1998 | 2138 | { |
| 1999 | | blitter_w(space, 1,offset,data,0xdf); // RST 18 |
| 2139 | blitter_w(space, 1, offset, data, 0xdf); // RST 18 |
| 2000 | 2140 | } |
| 2001 | 2141 | |
| 2002 | | /* A led for each of the 9 buttons */ |
| 2003 | | static UINT16 mmpanic_leds; |
| 2004 | | |
| 2005 | 2142 | static void mmpanic_update_leds(running_machine *machine) |
| 2006 | 2143 | { |
| 2007 | | set_led_status(machine, 0,mmpanic_leds); |
| 2144 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 2145 | set_led_status(machine, 0, state->mmpanic_leds); |
| 2008 | 2146 | } |
| 2009 | 2147 | |
| 2010 | 2148 | /* leds 1-8 */ |
| 2011 | 2149 | static WRITE8_HANDLER( mmpanic_leds_w ) |
| 2012 | 2150 | { |
| 2013 | | mmpanic_leds = (mmpanic_leds & 0xff00) | data; |
| 2151 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2152 | state->mmpanic_leds = (state->mmpanic_leds & 0xff00) | data; |
| 2014 | 2153 | mmpanic_update_leds(space->machine); |
| 2015 | 2154 | } |
| 2016 | 2155 | /* led 9 */ |
| 2017 | 2156 | static WRITE8_HANDLER( mmpanic_leds2_w ) |
| 2018 | 2157 | { |
| 2019 | | mmpanic_leds = (mmpanic_leds & 0xfeff) | (data ? 0x0100 : 0); |
| 2158 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2159 | state->mmpanic_leds = (state->mmpanic_leds & 0xfeff) | (data ? 0x0100 : 0); |
| 2020 | 2160 | mmpanic_update_leds(space->machine); |
| 2021 | 2161 | } |
| 2022 | 2162 | |
| 2023 | 2163 | |
| 2024 | 2164 | static WRITE8_HANDLER( mmpanic_lockout_w ) |
| 2025 | 2165 | { |
| 2026 | | if (ddenlovr_select == 0x0c) |
| 2166 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2167 | |
| 2168 | if (state->dsw_sel == 0x0c) |
| 2027 | 2169 | { |
| 2028 | | coin_counter_w(space->machine, 0,(~data) & 0x01); |
| 2029 | | coin_lockout_w(space->machine, 0,(~data) & 0x02); |
| 2030 | | set_led_status(space->machine, 1,(~data) & 0x04); |
| 2170 | coin_counter_w(space->machine, 0, (~data) & 0x01); |
| 2171 | coin_lockout_w(space->machine, 0, (~data) & 0x02); |
| 2172 | set_led_status(space->machine, 1, (~data) & 0x04); |
| 2031 | 2173 | } |
| 2032 | 2174 | } |
| 2033 | 2175 | |
| r7640 | r7641 | |
| 2095 | 2237 | AM_RANGE(0x8000, 0xffff) AM_ROM // ROM |
| 2096 | 2238 | ADDRESS_MAP_END |
| 2097 | 2239 | |
| 2098 | | static ADDRESS_MAP_START( mmpanic_sound_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2240 | static ADDRESS_MAP_START( mmpanic_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2241 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2099 | 2242 | AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r) |
| 2100 | 2243 | AM_RANGE(0x02, 0x02) AM_READNOP // read just before port 00 |
| 2101 | 2244 | AM_RANGE(0x04, 0x04) AM_NOP // read only once at the start |
| r7640 | r7641 | |
| 2132 | 2275 | |
| 2133 | 2276 | static WRITE8_HANDLER( funkyfig_blitter_w ) |
| 2134 | 2277 | { |
| 2135 | | blitter_w_funkyfig(space->machine, 0,offset,data,0xe0); |
| 2278 | blitter_w_funkyfig(space->machine, 0, offset, data, 0xe0); |
| 2136 | 2279 | } |
| 2137 | 2280 | |
| 2138 | 2281 | static WRITE8_HANDLER( funkyfig_rombank_w ) |
| 2139 | 2282 | { |
| 2140 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2283 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2141 | 2284 | |
| 2142 | | ddenlovr_select = data; |
| 2285 | state->dsw_sel = data; |
| 2143 | 2286 | |
| 2144 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x0f)]); |
| 2287 | memory_set_bank(space->machine, "bank1", data & 0x0f); |
| 2145 | 2288 | // bit 4 selects palette ram at 8000? |
| 2146 | | memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * ((data & 0xe0) >> 5)]); |
| 2289 | memory_set_bank(space->machine, "bank2", ((data & 0xe0) >> 5)); |
| 2147 | 2290 | } |
| 2148 | 2291 | |
| 2149 | 2292 | static READ8_HANDLER( funkyfig_dsw_r ) |
| 2150 | 2293 | { |
| 2151 | | if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW1"); |
| 2152 | | if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW2"); |
| 2153 | | if (!(ddenlovr_select & 0x04)) return input_port_read(space->machine, "DSW3"); |
| 2154 | | logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select); |
| 2294 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2295 | |
| 2296 | if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1"); |
| 2297 | if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2"); |
| 2298 | if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW3"); |
| 2299 | logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), state->dsw_sel); |
| 2155 | 2300 | return 0xff; |
| 2156 | 2301 | } |
| 2157 | 2302 | |
| 2158 | | static UINT8 funkyfig_lockout; |
| 2159 | | |
| 2160 | 2303 | static READ8_HANDLER( funkyfig_coin_r ) |
| 2161 | 2304 | { |
| 2162 | | switch( ddenlovr_select2 ) |
| 2305 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2306 | |
| 2307 | switch (state->input_sel) |
| 2163 | 2308 | { |
| 2164 | 2309 | case 0x22: return input_port_read(space->machine, "IN2"); |
| 2165 | | case 0x23: return funkyfig_lockout; |
| 2310 | case 0x23: return state->funkyfig_lockout; |
| 2166 | 2311 | } |
| 2167 | | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select2); |
| 2312 | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 2168 | 2313 | return 0xff; |
| 2169 | 2314 | } |
| 2170 | 2315 | |
| 2171 | 2316 | static READ8_HANDLER( funkyfig_key_r ) |
| 2172 | 2317 | { |
| 2173 | | switch( ddenlovr_select2 ) |
| 2318 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2319 | |
| 2320 | switch (state->input_sel) |
| 2174 | 2321 | { |
| 2175 | 2322 | case 0x20: return input_port_read(space->machine, "IN0"); |
| 2176 | 2323 | case 0x21: return input_port_read(space->machine, "IN1"); |
| 2177 | 2324 | } |
| 2178 | | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select2); |
| 2325 | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 2179 | 2326 | return 0xff; |
| 2180 | 2327 | } |
| 2181 | 2328 | |
| 2182 | 2329 | static WRITE8_HANDLER( funkyfig_lockout_w ) |
| 2183 | 2330 | { |
| 2184 | | switch( ddenlovr_select2 ) |
| 2331 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2332 | |
| 2333 | switch (state->input_sel) |
| 2185 | 2334 | { |
| 2186 | 2335 | case 0x2c: |
| 2187 | | funkyfig_lockout = data; |
| 2188 | | coin_counter_w(space->machine, 0, data & 0x01); |
| 2189 | | coin_lockout_w(space->machine, 0,(~data) & 0x02); |
| 2336 | state->funkyfig_lockout = data; |
| 2337 | coin_counter_w(space->machine, 0, data & 0x01); |
| 2338 | coin_lockout_w(space->machine, 0, (~data) & 0x02); |
| 2190 | 2339 | if (data & ~0x03) |
| 2191 | 2340 | logerror("%06x: warning, unknown bits written, lockout = %02x\n", cpu_get_pc(space->cpu), data); |
| 2192 | 2341 | break; |
| r7640 | r7641 | |
| 2194 | 2343 | // case 0xef: 16 bytes on startup |
| 2195 | 2344 | |
| 2196 | 2345 | default: |
| 2197 | | logerror("%06x: warning, unknown bits written, ddenlovr_select2 = %02x, data = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select2, data); |
| 2346 | logerror("%06x: warning, unknown bits written, ddenlovr_select2 = %02x, data = %02x\n", cpu_get_pc(space->cpu), state->input_sel, data); |
| 2198 | 2347 | } |
| 2199 | 2348 | } |
| 2200 | 2349 | |
| 2201 | | static ADDRESS_MAP_START( funkyfig_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2350 | static ADDRESS_MAP_START( funkyfig_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2351 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2202 | 2352 | AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) // Sound |
| 2203 | 2353 | AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w) // Leds |
| 2204 | 2354 | AM_RANGE(0x02, 0x02) AM_WRITE(mmpanic_soundlatch_w) // |
| r7640 | r7641 | |
| 2230 | 2380 | |
| 2231 | 2381 | /* Sound CPU */ |
| 2232 | 2382 | |
| 2233 | | static ADDRESS_MAP_START( funkyfig_sound_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2383 | static ADDRESS_MAP_START( funkyfig_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2384 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2234 | 2385 | AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r) |
| 2235 | 2386 | AM_RANGE(0x04, 0x04) AM_READNOP // read only once at the start |
| 2236 | 2387 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 2245 | 2396 | |
| 2246 | 2397 | static WRITE8_HANDLER( hanakanz_rombank_w ) |
| 2247 | 2398 | { |
| 2248 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2249 | | |
| 2250 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x0f)]); |
| 2251 | | |
| 2252 | | memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * ((data & 0xf0) >> 4)]); |
| 2399 | memory_set_bank(space->machine, "bank1", data & 0x0f); |
| 2400 | memory_set_bank(space->machine, "bank2", ((data & 0xf0) >> 4)); |
| 2253 | 2401 | } |
| 2254 | 2402 | |
| 2255 | 2403 | static ADDRESS_MAP_START( hanakanz_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r7640 | r7641 | |
| 2260 | 2408 | ADDRESS_MAP_END |
| 2261 | 2409 | |
| 2262 | 2410 | |
| 2263 | | static UINT8 keyb,dsw; |
| 2264 | 2411 | static WRITE8_HANDLER( hanakanz_keyb_w ) |
| 2265 | 2412 | { |
| 2266 | | keyb = data; |
| 2413 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2414 | state->keyb = data; |
| 2267 | 2415 | } |
| 2416 | |
| 2268 | 2417 | static WRITE8_HANDLER( hanakanz_dsw_w ) |
| 2269 | 2418 | { |
| 2270 | | dsw = data; |
| 2419 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2420 | state->dsw_sel = data; |
| 2271 | 2421 | } |
| 2272 | 2422 | |
| 2273 | 2423 | static READ8_HANDLER( hanakanz_keyb_r ) |
| 2274 | 2424 | { |
| 2425 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2426 | |
| 2275 | 2427 | UINT8 val = 0xff; |
| 2276 | 2428 | |
| 2277 | | if (!(keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 2278 | | else if (!(keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 2279 | | else if (!(keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 2280 | | else if (!(keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 2281 | | else if (!(keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 2429 | if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 2430 | else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 2431 | else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 2432 | else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 2433 | else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 2282 | 2434 | |
| 2283 | 2435 | val |= input_port_read(space->machine, offset ? "HOPPER" : "BET"); |
| 2284 | 2436 | return val; |
| r7640 | r7641 | |
| 2286 | 2438 | |
| 2287 | 2439 | static READ8_HANDLER( hanakanz_dsw_r ) |
| 2288 | 2440 | { |
| 2289 | | if (!(dsw & 0x01)) return input_port_read(space->machine, "DSW1"); |
| 2290 | | if (!(dsw & 0x02)) return input_port_read(space->machine, "DSW2"); |
| 2291 | | if (!(dsw & 0x04)) return input_port_read(space->machine, "DSW3"); |
| 2292 | | if (!(dsw & 0x08)) return input_port_read(space->machine, "DSW4"); |
| 2293 | | if (!(dsw & 0x10)) return input_port_read(space->machine, "DSW5"); |
| 2441 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2442 | |
| 2443 | if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1"); |
| 2444 | if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2"); |
| 2445 | if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW3"); |
| 2446 | if (!BIT(state->dsw_sel, 3)) return input_port_read(space->machine, "DSW4"); |
| 2447 | if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW5"); |
| 2294 | 2448 | return 0xff; |
| 2295 | 2449 | } |
| 2296 | 2450 | |
| r7640 | r7641 | |
| 2301 | 2455 | |
| 2302 | 2456 | static READ8_HANDLER( hanakanz_gfxrom_r ) |
| 2303 | 2457 | { |
| 2304 | | UINT8 *rom = memory_region( space->machine, "blitter" ); |
| 2305 | | size_t size = memory_region_length( space->machine, "blitter" ); |
| 2306 | | int address = (ddenlovr_blit_address & 0xffffff) * 2; |
| 2458 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2459 | UINT8 *rom = memory_region(space->machine, "blitter"); |
| 2460 | size_t size = memory_region_length(space->machine, "blitter"); |
| 2461 | int address = (state->ddenlovr_blit_address & 0xffffff) * 2; |
| 2307 | 2462 | |
| 2308 | | static UINT8 romdata[2]; |
| 2309 | | |
| 2310 | 2463 | if (address >= size) |
| 2311 | 2464 | { |
| 2312 | 2465 | logerror("CPU#0 PC %06X: Error, Blitter address %06X out of range\n", cpu_get_pc(space->cpu), address); |
| r7640 | r7641 | |
| 2315 | 2468 | |
| 2316 | 2469 | if (offset == 0) |
| 2317 | 2470 | { |
| 2318 | | romdata[0] = rom[address + 0]; |
| 2319 | | romdata[1] = rom[address + 1]; |
| 2471 | state->romdata[0] = rom[address + 0]; |
| 2472 | state->romdata[1] = rom[address + 1]; |
| 2320 | 2473 | |
| 2321 | | ddenlovr_blit_address = (ddenlovr_blit_address + 1) & 0xffffff; |
| 2474 | state->ddenlovr_blit_address = (state->ddenlovr_blit_address + 1) & 0xffffff; |
| 2322 | 2475 | |
| 2323 | | return romdata[0]; |
| 2476 | return state->romdata[0]; |
| 2324 | 2477 | } |
| 2325 | 2478 | else |
| 2326 | 2479 | { |
| 2327 | | return romdata[1]; |
| 2480 | return state->romdata[1]; |
| 2328 | 2481 | } |
| 2329 | 2482 | } |
| 2330 | 2483 | |
| r7640 | r7641 | |
| 2342 | 2495 | logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(space->cpu), data); |
| 2343 | 2496 | |
| 2344 | 2497 | #ifdef MAME_DEBUG |
| 2345 | | // popmessage("93 = %02x",data); |
| 2498 | // popmessage("93 = %02x", data); |
| 2346 | 2499 | #endif |
| 2347 | 2500 | } |
| 2348 | 2501 | |
| 2349 | 2502 | static WRITE8_HANDLER( hanakanz_palette_w ) |
| 2350 | 2503 | { |
| 2351 | | static int palette_index; |
| 2504 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2352 | 2505 | |
| 2353 | | if (ddenlovr_blit_reg & 0x80) |
| 2506 | if (state->ddenlovr_blit_latch & 0x80) |
| 2354 | 2507 | { |
| 2355 | | palette_index = data | ((ddenlovr_blit_reg & 1) << 8); |
| 2508 | state->palette_index = data | ((state->ddenlovr_blit_latch & 1) << 8); |
| 2356 | 2509 | } |
| 2357 | 2510 | else |
| 2358 | 2511 | { |
| 2359 | 2512 | // 0bbggggg bbbrrrrr |
| 2360 | 2513 | // 04343210 21043210 |
| 2361 | 2514 | |
| 2362 | | int g = ddenlovr_blit_reg & 0x1f; |
| 2515 | int g = state->ddenlovr_blit_latch & 0x1f; |
| 2363 | 2516 | int r = data & 0x1f; |
| 2364 | | int b = ((data & 0xe0) >> 5) | ((ddenlovr_blit_reg & 0x60) >> 2); |
| 2365 | | palette_set_color_rgb(space->machine,(palette_index++)&0x1ff,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 2517 | int b = ((data & 0xe0) >> 5) | ((state->ddenlovr_blit_latch & 0x60) >> 2); |
| 2518 | palette_set_color_rgb(space->machine, (state->palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b)); |
| 2366 | 2519 | } |
| 2367 | 2520 | } |
| 2368 | 2521 | |
| r7640 | r7641 | |
| 2376 | 2529 | return mame_rand(space->machine); |
| 2377 | 2530 | } |
| 2378 | 2531 | |
| 2379 | | static ADDRESS_MAP_START( hanakanz_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2532 | static ADDRESS_MAP_START( hanakanz_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2533 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2380 | 2534 | AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w) |
| 2381 | 2535 | AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) |
| 2382 | 2536 | AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) |
| r7640 | r7641 | |
| 2396 | 2550 | ADDRESS_MAP_END |
| 2397 | 2551 | |
| 2398 | 2552 | |
| 2399 | | static ADDRESS_MAP_START( hkagerou_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2553 | static ADDRESS_MAP_START( hkagerou_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2554 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2400 | 2555 | AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w) |
| 2401 | 2556 | AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) |
| 2402 | 2557 | AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) |
| r7640 | r7641 | |
| 2416 | 2571 | ADDRESS_MAP_END |
| 2417 | 2572 | |
| 2418 | 2573 | |
| 2419 | | static UINT8 mjreach1_protection_val; |
| 2420 | | |
| 2421 | 2574 | static WRITE8_HANDLER( mjreach1_protection_w ) |
| 2422 | 2575 | { |
| 2423 | | mjreach1_protection_val = data; |
| 2576 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2577 | state->prot_val = data; |
| 2424 | 2578 | } |
| 2425 | 2579 | |
| 2426 | 2580 | static READ8_HANDLER( mjreach1_protection_r ) |
| 2427 | 2581 | { |
| 2428 | | return mjreach1_protection_val; |
| 2582 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2583 | return state->prot_val; |
| 2429 | 2584 | } |
| 2430 | 2585 | |
| 2431 | | static ADDRESS_MAP_START( mjreach1_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2586 | static ADDRESS_MAP_START( mjreach1_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2587 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2432 | 2588 | AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w) |
| 2433 | 2589 | AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) |
| 2434 | 2590 | AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) |
| r7640 | r7641 | |
| 2455 | 2611 | |
| 2456 | 2612 | static READ8_HANDLER( mjchuuka_keyb_r ) |
| 2457 | 2613 | { |
| 2614 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2458 | 2615 | UINT8 val = 0xff; |
| 2459 | 2616 | |
| 2460 | | if (!(keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 2461 | | else if (!(keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 2462 | | else if (!(keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 2463 | | else if (!(keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 2464 | | else if (!(keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 2617 | if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 2618 | else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 2619 | else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 2620 | else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 2621 | else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 2465 | 2622 | |
| 2466 | 2623 | val |= input_port_read(space->machine, offset ? "HOPPER" : "BET"); |
| 2467 | | if (offset) val |= 0x80; // blitter busy |
| 2624 | |
| 2625 | if (offset) |
| 2626 | val |= 0x80; // blitter busy |
| 2627 | |
| 2468 | 2628 | return val; |
| 2469 | 2629 | } |
| 2470 | 2630 | |
| 2471 | 2631 | static WRITE8_HANDLER( mjchuuka_blitter_w ) |
| 2472 | 2632 | { |
| 2473 | | hanakanz_blitter_reg_w(space,0,offset >> 8); |
| 2474 | | hanakanz_blitter_data_w(space,0,data); |
| 2633 | hanakanz_blitter_reg_w(space, 0, offset >> 8); |
| 2634 | hanakanz_blitter_data_w(space, 0, data); |
| 2475 | 2635 | } |
| 2476 | 2636 | |
| 2477 | | static UINT8 mjchuuka_romdata[2]; |
| 2478 | | |
| 2479 | 2637 | static void mjchuuka_get_romdata(running_machine *machine) |
| 2480 | 2638 | { |
| 2481 | | UINT8 *rom = memory_region( machine, "blitter" ); |
| 2482 | | size_t size = memory_region_length( machine, "blitter" ); |
| 2483 | | int address = (ddenlovr_blit_address & 0xffffff) * 2; |
| 2639 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 2640 | UINT8 *rom = memory_region(machine, "blitter"); |
| 2641 | size_t size = memory_region_length(machine, "blitter"); |
| 2642 | int address = (state->ddenlovr_blit_address & 0xffffff) * 2; |
| 2484 | 2643 | |
| 2485 | 2644 | if (address >= size) |
| 2486 | 2645 | { |
| r7640 | r7641 | |
| 2488 | 2647 | address %= size; |
| 2489 | 2648 | } |
| 2490 | 2649 | |
| 2491 | | mjchuuka_romdata[0] = rom[address + 0]; |
| 2492 | | mjchuuka_romdata[1] = rom[address + 1]; |
| 2650 | state->romdata[0] = rom[address + 0]; |
| 2651 | state->romdata[1] = rom[address + 1]; |
| 2493 | 2652 | } |
| 2494 | 2653 | |
| 2495 | 2654 | static READ8_HANDLER( mjchuuka_gfxrom_0_r ) |
| 2496 | 2655 | { |
| 2656 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2497 | 2657 | mjchuuka_get_romdata(space->machine); |
| 2498 | | ddenlovr_blit_address++; |
| 2499 | | return mjchuuka_romdata[0]; |
| 2658 | state->ddenlovr_blit_address++; |
| 2659 | return state->romdata[0]; |
| 2500 | 2660 | } |
| 2661 | |
| 2501 | 2662 | static READ8_HANDLER( mjchuuka_gfxrom_1_r ) |
| 2502 | 2663 | { |
| 2503 | | return mjchuuka_romdata[1]; |
| 2664 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2665 | return state->romdata[1]; |
| 2504 | 2666 | } |
| 2505 | 2667 | |
| 2506 | 2668 | static WRITE8_HANDLER( mjchuuka_palette_w ) |
| 2507 | 2669 | { |
| 2508 | | static int palette_index; |
| 2670 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2509 | 2671 | UINT16 rgb = (offset & 0xff00) | data; |
| 2510 | 2672 | |
| 2511 | 2673 | if (rgb & 0x8000) |
| 2512 | 2674 | { |
| 2513 | | palette_index = rgb & 0x1ff; |
| 2675 | state->palette_index = rgb & 0x1ff; |
| 2514 | 2676 | } |
| 2515 | 2677 | else |
| 2516 | 2678 | { |
| r7640 | r7641 | |
| 2520 | 2682 | int r = (rgb >> 0) & 0x1f; |
| 2521 | 2683 | int g = (rgb >> 8) & 0x1f; |
| 2522 | 2684 | int b = ((rgb >> 5) & 0x07) | ((rgb & 0x6000) >> 10); |
| 2523 | | palette_set_color_rgb(space->machine,(palette_index++)&0x1ff,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 2685 | palette_set_color_rgb(space->machine, (state->palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b)); |
| 2524 | 2686 | } |
| 2525 | 2687 | } |
| 2526 | 2688 | |
| r7640 | r7641 | |
| 2531 | 2693 | // bit 3 = lockout |
| 2532 | 2694 | // bit 8? |
| 2533 | 2695 | |
| 2534 | | coin_counter_w(space->machine, 0, data & 0x01); |
| 2535 | | coin_lockout_w(space->machine, 0,(~data) & 0x08); |
| 2696 | coin_counter_w(space->machine, 0, data & 0x01); |
| 2697 | coin_lockout_w(space->machine, 0, (~data) & 0x08); |
| 2536 | 2698 | |
| 2537 | 2699 | if (data & 0x74) |
| 2538 | 2700 | logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(space->cpu), data); |
| r7640 | r7641 | |
| 2591 | 2753 | |
| 2592 | 2754 | static WRITE8_HANDLER( mjmyster_rambank_w ) |
| 2593 | 2755 | { |
| 2594 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2595 | | memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * (data & 0x07)]); |
| 2596 | | // logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data); |
| 2756 | memory_set_bank(space->machine, "bank2", data & 0x07); |
| 2757 | //logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data); |
| 2597 | 2758 | } |
| 2598 | 2759 | |
| 2599 | 2760 | static WRITE8_HANDLER( mjmyster_select2_w ) |
| 2600 | 2761 | { |
| 2601 | | ddenlovr_select2 = data; |
| 2762 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2763 | state->input_sel = data; |
| 2602 | 2764 | |
| 2603 | | if (data & 0x80) keyb = 1; |
| 2765 | if (data & 0x80) |
| 2766 | state->keyb = 1; |
| 2604 | 2767 | } |
| 2605 | 2768 | |
| 2606 | 2769 | static READ8_HANDLER( mjmyster_coins_r ) |
| 2607 | 2770 | { |
| 2608 | | switch( ddenlovr_select2 ) |
| 2771 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2772 | |
| 2773 | switch (state->input_sel) |
| 2609 | 2774 | { |
| 2610 | 2775 | case 0x00: return input_port_read(space->machine, "SYSTEM"); |
| 2611 | 2776 | case 0x01: return 0xff; |
| r7640 | r7641 | |
| 2613 | 2778 | case 0x03: return 0xff; |
| 2614 | 2779 | } |
| 2615 | 2780 | |
| 2616 | | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select2); |
| 2781 | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 2617 | 2782 | |
| 2618 | 2783 | return 0xff; |
| 2619 | 2784 | } |
| 2620 | 2785 | |
| 2621 | 2786 | static READ8_HANDLER( mjmyster_keyb_r ) |
| 2622 | 2787 | { |
| 2788 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2623 | 2789 | UINT8 ret = 0xff; |
| 2624 | 2790 | |
| 2625 | | if (keyb & 0x01) ret = input_port_read(space->machine, "KEY0"); |
| 2626 | | else if (keyb & 0x02) ret = input_port_read(space->machine, "KEY1"); |
| 2627 | | else if (keyb & 0x04) ret = input_port_read(space->machine, "KEY2"); |
| 2628 | | else if (keyb & 0x08) ret = input_port_read(space->machine, "KEY3"); |
| 2629 | | else if (keyb & 0x10) ret = input_port_read(space->machine, "KEY4"); |
| 2630 | | else logerror("%06x: warning, unknown bits read, keyb = %02x\n", cpu_get_pc(space->cpu), keyb); |
| 2791 | if (BIT(state->keyb, 0)) ret = input_port_read(space->machine, "KEY0"); |
| 2792 | else if (BIT(state->keyb, 1)) ret = input_port_read(space->machine, "KEY1"); |
| 2793 | else if (BIT(state->keyb, 2)) ret = input_port_read(space->machine, "KEY2"); |
| 2794 | else if (BIT(state->keyb, 3)) ret = input_port_read(space->machine, "KEY3"); |
| 2795 | else if (BIT(state->keyb, 4)) ret = input_port_read(space->machine, "KEY4"); |
| 2796 | else logerror("%06x: warning, unknown bits read, keyb = %02x\n", cpu_get_pc(space->cpu), state->keyb); |
| 2631 | 2797 | |
| 2632 | | keyb <<= 1; |
| 2798 | state->keyb <<= 1; |
| 2633 | 2799 | |
| 2634 | 2800 | return ret; |
| 2635 | 2801 | } |
| 2636 | 2802 | |
| 2637 | 2803 | static READ8_HANDLER( mjmyster_dsw_r ) |
| 2638 | 2804 | { |
| 2639 | | if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW4"); |
| 2640 | | if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW3"); |
| 2641 | | if (!(ddenlovr_select & 0x04)) return input_port_read(space->machine, "DSW2"); |
| 2642 | | if (!(ddenlovr_select & 0x08)) return input_port_read(space->machine, "DSW1"); |
| 2643 | | if (!(ddenlovr_select & 0x10)) return input_port_read(space->machine, "DSW5"); |
| 2644 | | logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select); |
| 2805 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2806 | |
| 2807 | if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW4"); |
| 2808 | if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW3"); |
| 2809 | if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW2"); |
| 2810 | if (!BIT(state->dsw_sel, 3)) return input_port_read(space->machine, "DSW1"); |
| 2811 | if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW5"); |
| 2812 | logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), state->dsw_sel); |
| 2645 | 2813 | return 0xff; |
| 2646 | 2814 | } |
| 2647 | 2815 | |
| 2648 | 2816 | static WRITE8_HANDLER( mjmyster_coincounter_w ) |
| 2649 | 2817 | { |
| 2650 | | switch( ddenlovr_select2 ) |
| 2818 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2819 | |
| 2820 | switch (state->input_sel) |
| 2651 | 2821 | { |
| 2652 | 2822 | case 0x0c: |
| 2653 | 2823 | coin_counter_w(space->machine, 0, (~data) & 0x01); // coin in |
| r7640 | r7641 | |
| 2659 | 2829 | break; |
| 2660 | 2830 | |
| 2661 | 2831 | default: |
| 2662 | | logerror("%06x: warning, unknown bits written, ddenlovr_select2 = %02x, data = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select2, data); |
| 2832 | logerror("%06x: warning, unknown bits written, ddenlovr_select2 = %02x, data = %02x\n", cpu_get_pc(space->cpu), state->input_sel, data); |
| 2663 | 2833 | } |
| 2664 | 2834 | } |
| 2665 | 2835 | |
| 2666 | 2836 | static WRITE8_HANDLER( mjmyster_blitter_w ) |
| 2667 | 2837 | { |
| 2668 | | blitter_w(space, 0,offset,data,0xfc); |
| 2838 | blitter_w(space, 0, offset, data, 0xfc); |
| 2669 | 2839 | } |
| 2670 | 2840 | |
| 2671 | | static ADDRESS_MAP_START( mjmyster_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2841 | static ADDRESS_MAP_START( mjmyster_portmap, ADDRESS_SPACE_IO, 8 ) |
| 2842 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2672 | 2843 | AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w) |
| 2673 | 2844 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 2674 | 2845 | AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w) |
| r7640 | r7641 | |
| 2699 | 2870 | Hanafuda Hana Ginga |
| 2700 | 2871 | ***************************************************************************/ |
| 2701 | 2872 | |
| 2702 | | static UINT8 hginga_rombank; |
| 2703 | 2873 | static WRITE8_HANDLER( hginga_rombank_w ) |
| 2704 | 2874 | { |
| 2705 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2706 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x7)]); |
| 2707 | | hginga_rombank = data; |
| 2875 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2876 | memory_set_bank(space->machine, "bank1", data & 0x7); |
| 2877 | state->hginga_rombank = data; |
| 2708 | 2878 | } |
| 2709 | 2879 | |
| 2710 | 2880 | // similar to rongrong |
| 2711 | 2881 | static READ8_HANDLER( hginga_protection_r ) |
| 2712 | 2882 | { |
| 2883 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2713 | 2884 | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2714 | | if (hginga_rombank & 0x10) |
| 2715 | | return hanakanz_rand_r(space,0); |
| 2716 | | return rom[0x10000 + 0x8000 * (hginga_rombank & 0x7) + 0xf601 - 0x8000]; |
| 2885 | |
| 2886 | if (state->hginga_rombank & 0x10) |
| 2887 | return hanakanz_rand_r(space, 0); |
| 2888 | return rom[0x10000 + 0x8000 * (state->hginga_rombank & 0x7) + 0xf601 - 0x8000]; |
| 2717 | 2889 | } |
| 2718 | 2890 | |
| 2719 | 2891 | static ADDRESS_MAP_START( hginga_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r7640 | r7641 | |
| 2728 | 2900 | |
| 2729 | 2901 | static READ8_DEVICE_HANDLER( hginga_dsw_r ) |
| 2730 | 2902 | { |
| 2731 | | if (!(ddenlovr_select & 0x01)) return input_port_read(device->machine, "DSW4"); |
| 2732 | | if (!(ddenlovr_select & 0x02)) return input_port_read(device->machine, "DSW3"); |
| 2733 | | if (!(ddenlovr_select & 0x04)) return input_port_read(device->machine, "DSW2"); |
| 2734 | | if (!(ddenlovr_select & 0x08)) return input_port_read(device->machine, "DSW1"); |
| 2735 | | if (!(ddenlovr_select & 0x10)) return input_port_read(device->machine, "DSW5"); |
| 2736 | | logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", cpuexec_describe_context(device->machine), ddenlovr_select); |
| 2903 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 2904 | |
| 2905 | if (!BIT(state->dsw_sel, 0)) return input_port_read(device->machine, "DSW4"); |
| 2906 | if (!BIT(state->dsw_sel, 1)) return input_port_read(device->machine, "DSW3"); |
| 2907 | if (!BIT(state->dsw_sel, 2)) return input_port_read(device->machine, "DSW2"); |
| 2908 | if (!BIT(state->dsw_sel, 3)) return input_port_read(device->machine, "DSW1"); |
| 2909 | if (!BIT(state->dsw_sel, 4)) return input_port_read(device->machine, "DSW5"); |
| 2910 | |
| 2911 | logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", cpuexec_describe_context(device->machine), state->dsw_sel); |
| 2737 | 2912 | return 0xff; |
| 2738 | 2913 | } |
| 2739 | 2914 | |
| 2740 | | static UINT8 hginga_select, hginga_ip, hginga_coins; |
| 2741 | | |
| 2742 | 2915 | static WRITE8_HANDLER( hginga_input_w ) |
| 2743 | 2916 | { |
| 2744 | | hginga_select = data; |
| 2745 | | hginga_ip = 0; |
| 2917 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2918 | state->input_sel = data; |
| 2919 | state->keyb = 0; |
| 2746 | 2920 | } |
| 2747 | 2921 | |
| 2748 | 2922 | static READ8_HANDLER( hginga_coins_r ) |
| 2749 | 2923 | { |
| 2750 | | switch( hginga_select ) |
| 2924 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2925 | |
| 2926 | switch (state->input_sel) |
| 2751 | 2927 | { |
| 2752 | 2928 | case 0x20: return input_port_read(space->machine, "SYSTEM"); |
| 2753 | 2929 | case 0x21: return input_port_read(space->machine, "BET"); |
| 2754 | 2930 | case 0x22: return 0x7f; // bit 7 = blitter busy, bit 6 = hopper |
| 2755 | | case 0x23: return hginga_coins; |
| 2931 | case 0x23: return state->coins; |
| 2756 | 2932 | } |
| 2757 | | logerror("%04x: coins_r with select = %02x\n", cpu_get_pc(space->cpu), hginga_select); |
| 2933 | logerror("%04x: coins_r with select = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 2758 | 2934 | return 0xff; |
| 2759 | 2935 | } |
| 2760 | 2936 | |
| 2761 | 2937 | static WRITE8_HANDLER( hginga_80_w ) |
| 2762 | 2938 | { |
| 2763 | | // popmessage("port 80 = %02x",data); |
| 2939 | // popmessage("port 80 = %02x", data); |
| 2764 | 2940 | } |
| 2765 | 2941 | |
| 2766 | 2942 | static WRITE8_HANDLER( hginga_coins_w ) |
| 2767 | 2943 | { |
| 2768 | | switch( hginga_select ) |
| 2944 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2945 | |
| 2946 | switch (state->input_sel) |
| 2769 | 2947 | { |
| 2770 | 2948 | case 0x2d: |
| 2771 | 2949 | break; |
| r7640 | r7641 | |
| 2777 | 2955 | // bit 7? |
| 2778 | 2956 | coin_counter_w(space->machine, 0, data & 1); |
| 2779 | 2957 | #ifdef MAME_DEBUG |
| 2780 | | // popmessage("COINS %02x",data); |
| 2958 | // popmessage("COINS %02x", data); |
| 2781 | 2959 | #endif |
| 2782 | | hginga_coins = data; |
| 2960 | state->coins = data; |
| 2783 | 2961 | break; |
| 2784 | 2962 | default: |
| 2785 | | logerror("%04x: coins_w with select = %02x, data = %02x\n", cpu_get_pc(space->cpu), hginga_select, data); |
| 2963 | logerror("%04x: coins_w with select = %02x, data = %02x\n", cpu_get_pc(space->cpu), state->input_sel, data); |
| 2786 | 2964 | } |
| 2787 | 2965 | } |
| 2788 | 2966 | |
| 2789 | 2967 | static READ8_HANDLER( hginga_input_r ) |
| 2790 | 2968 | { |
| 2969 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2791 | 2970 | static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }; |
| 2792 | 2971 | static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" }; |
| 2793 | 2972 | |
| 2794 | | switch( hginga_select ) |
| 2973 | switch (state->input_sel) |
| 2795 | 2974 | { |
| 2796 | 2975 | case 0x2d: |
| 2797 | 2976 | return 0xff; |
| 2798 | 2977 | |
| 2799 | 2978 | // player 1 |
| 2800 | 2979 | case 0xa1: |
| 2801 | | return input_port_read(space->machine, keynames0[hginga_ip++]); |
| 2980 | return input_port_read(space->machine, keynames0[state->keyb++]); |
| 2802 | 2981 | |
| 2803 | 2982 | // player 2 |
| 2804 | 2983 | case 0xa2: |
| 2805 | | return input_port_read(space->machine, keynames1[hginga_ip++]); |
| 2984 | return input_port_read(space->machine, keynames1[state->keyb++]); |
| 2806 | 2985 | } |
| 2807 | | logerror("%04x: input_r with select = %02x\n", cpu_get_pc(space->cpu), hginga_select); |
| 2986 | logerror("%04x: input_r with select = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 2808 | 2987 | return 0xff; |
| 2809 | 2988 | } |
| 2810 | 2989 | |
| 2811 | 2990 | static WRITE8_HANDLER( hginga_blitter_w ) |
| 2812 | 2991 | { |
| 2992 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2813 | 2993 | if (offset == 0) |
| 2814 | 2994 | { |
| 2815 | | ddenlovr_blit_reg = data; |
| 2995 | state->ddenlovr_blit_latch = data; |
| 2816 | 2996 | } |
| 2817 | 2997 | else |
| 2818 | 2998 | { |
| 2819 | | switch (ddenlovr_blit_reg & 0x3f) |
| 2999 | switch (state->ddenlovr_blit_latch & 0x3f) |
| 2820 | 3000 | { |
| 2821 | 3001 | case 0x00: |
| 2822 | 3002 | switch (data & 0xf) |
| r7640 | r7641 | |
| 2835 | 3015 | break; |
| 2836 | 3016 | } |
| 2837 | 3017 | } |
| 2838 | | blitter_w(space, 0,offset,data,0xfc); |
| 3018 | blitter_w(space, 0, offset, data, 0xfc); |
| 2839 | 3019 | } |
| 2840 | 3020 | |
| 2841 | | static ADDRESS_MAP_START( hginga_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3021 | static ADDRESS_MAP_START( hginga_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3022 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2842 | 3023 | AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w) |
| 2843 | 3024 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 2844 | 3025 | AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) |
| r7640 | r7641 | |
| 2868 | 3049 | Hanafuda Hana Gokou |
| 2869 | 3050 | ***************************************************************************/ |
| 2870 | 3051 | |
| 2871 | | static UINT8 hgokou_hopper; |
| 2872 | | |
| 2873 | | static UINT8 hgokou_player_r(const address_space *space, int player) |
| 3052 | static UINT8 hgokou_player_r( const address_space *space, int player ) |
| 2874 | 3053 | { |
| 2875 | | UINT8 hopper_bit = ((hgokou_hopper && !(video_screen_get_frame_number(space->machine->primary_screen)%10)) ? 0 : (1<<6)); |
| 3054 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3055 | UINT8 hopper_bit = ((state->hopper && !(video_screen_get_frame_number(space->machine->primary_screen) % 10)) ? 0 : (1 << 6)); |
| 2876 | 3056 | |
| 2877 | | if (!(ddenlovr_select2 & 0x01)) return input_port_read(space->machine, player ? "KEY5" : "KEY0") | hopper_bit; |
| 2878 | | if (!(ddenlovr_select2 & 0x02)) return input_port_read(space->machine, player ? "KEY6" : "KEY1") | hopper_bit; |
| 2879 | | if (!(ddenlovr_select2 & 0x04)) return input_port_read(space->machine, player ? "KEY7" : "KEY2") | hopper_bit; |
| 2880 | | if (!(ddenlovr_select2 & 0x08)) return input_port_read(space->machine, player ? "KEY8" : "KEY3") | hopper_bit; |
| 2881 | | if (!(ddenlovr_select2 & 0x10)) return input_port_read(space->machine, player ? "KEY9" : "KEY4") | hopper_bit; |
| 3057 | if (!BIT(state->input_sel, 0)) return input_port_read(space->machine, player ? "KEY5" : "KEY0") | hopper_bit; |
| 3058 | if (!BIT(state->input_sel, 1)) return input_port_read(space->machine, player ? "KEY6" : "KEY1") | hopper_bit; |
| 3059 | if (!BIT(state->input_sel, 2)) return input_port_read(space->machine, player ? "KEY7" : "KEY2") | hopper_bit; |
| 3060 | if (!BIT(state->input_sel, 3)) return input_port_read(space->machine, player ? "KEY8" : "KEY3") | hopper_bit; |
| 3061 | if (!BIT(state->input_sel, 4)) return input_port_read(space->machine, player ? "KEY9" : "KEY4") | hopper_bit; |
| 2882 | 3062 | |
| 2883 | 3063 | return 0x7f; // bit 7 = blitter busy, bit 6 = hopper |
| 2884 | 3064 | } |
| 2885 | 3065 | |
| 3066 | static WRITE8_HANDLER( hgokou_dsw_sel_w ) |
| 3067 | { |
| 3068 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3069 | state->dsw_sel = data; |
| 3070 | } |
| 3071 | |
| 2886 | 3072 | static READ8_HANDLER( hgokou_input_r ) |
| 2887 | 3073 | { |
| 2888 | | switch (hginga_select) |
| 3074 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3075 | |
| 3076 | switch (state->dsw_sel) |
| 2889 | 3077 | { |
| 2890 | 3078 | case 0x20: return input_port_read(space->machine, "SYSTEM"); |
| 2891 | 3079 | case 0x21: return hgokou_player_r(space, 1); |
| 2892 | 3080 | case 0x22: return hgokou_player_r(space, 0); |
| 2893 | | case 0x23: return hginga_coins; |
| 3081 | case 0x23: return state->coins; |
| 2894 | 3082 | } |
| 2895 | | logerror("%06x: warning, unknown bits read, hginga_select = %02x\n", cpu_get_pc(space->cpu), hginga_select); |
| 3083 | logerror("%06x: warning, unknown bits read, dsw_sel = %02x\n", cpu_get_pc(space->cpu), state->dsw_sel); |
| 2896 | 3084 | return 0xff; |
| 2897 | 3085 | } |
| 2898 | 3086 | |
| 2899 | 3087 | static WRITE8_HANDLER( hgokou_input_w ) |
| 2900 | 3088 | { |
| 2901 | | switch (hginga_select) |
| 3089 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3090 | |
| 3091 | switch (state->dsw_sel) |
| 2902 | 3092 | { |
| 2903 | 3093 | case 0x2c: |
| 2904 | 3094 | // bit 0 = coin counter |
| 2905 | 3095 | // bit 1 = out counter |
| 2906 | 3096 | // bit 2 = hopper |
| 2907 | 3097 | coin_counter_w(space->machine, 0, data & 1); |
| 2908 | | hgokou_hopper = data & 0x04; |
| 3098 | state->hopper = data & 0x04; |
| 2909 | 3099 | #ifdef MAME_DEBUG |
| 2910 | 3100 | // popmessage("COINS %02x",data); |
| 2911 | 3101 | #endif |
| 2912 | | hginga_coins = data; |
| 3102 | state->coins = data; |
| 2913 | 3103 | break; |
| 2914 | 3104 | |
| 2915 | | case 0x2d: ddenlovr_select2 = data; break; |
| 3105 | case 0x2d: state->input_sel = data; break; |
| 2916 | 3106 | |
| 2917 | 3107 | case 0x2f: break; // ? written with 2f |
| 2918 | 3108 | |
| 2919 | 3109 | default: |
| 2920 | | logerror("%04x: input_w with select = %02x, data = %02x\n",cpu_get_pc(space->cpu),hginga_select,data); |
| 3110 | logerror("%04x: input_w with select = %02x, data = %02x\n", cpu_get_pc(space->cpu), state->dsw_sel, data); |
| 2921 | 3111 | } |
| 2922 | 3112 | } |
| 2923 | 3113 | |
| 2924 | 3114 | // similar to rongrong |
| 2925 | 3115 | static READ8_HANDLER( hgokou_protection_r ) |
| 2926 | 3116 | { |
| 3117 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2927 | 3118 | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 2928 | | if (hginga_rombank == 0) |
| 2929 | | return hanakanz_rand_r(space,0); |
| 2930 | | return rom[0x10000 + 0x8000 * (hginga_rombank & 0x7) + 0xe601 - 0x8000]; |
| 3119 | |
| 3120 | if (state->hginga_rombank == 0) |
| 3121 | return hanakanz_rand_r(space, 0); |
| 3122 | return rom[0x10000 + 0x8000 * (state->hginga_rombank & 0x7) + 0xe601 - 0x8000]; |
| 2931 | 3123 | } |
| 2932 | 3124 | |
| 2933 | 3125 | static ADDRESS_MAP_START( hgokou_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r7640 | r7641 | |
| 2941 | 3133 | ADDRESS_MAP_END |
| 2942 | 3134 | |
| 2943 | 3135 | |
| 2944 | | static ADDRESS_MAP_START( hgokou_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3136 | static ADDRESS_MAP_START( hgokou_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3137 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 2945 | 3138 | AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w) |
| 2946 | 3139 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 2947 | 3140 | AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int |
| r7640 | r7641 | |
| 2955 | 3148 | AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority_w) |
| 2956 | 3149 | AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable_w) |
| 2957 | 3150 | AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup |
| 2958 | | AM_RANGE(0x60, 0x60) AM_WRITE(hginga_input_w) |
| 3151 | AM_RANGE(0x60, 0x60) AM_WRITE(hgokou_dsw_sel_w) |
| 2959 | 3152 | AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w) |
| 2960 | 3153 | AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r) |
| 2961 | 3154 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| r7640 | r7641 | |
| 2973 | 3166 | |
| 2974 | 3167 | static WRITE8_HANDLER( hparadis_select_w ) |
| 2975 | 3168 | { |
| 2976 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 3169 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2977 | 3170 | |
| 2978 | | ddenlovr_select = data; |
| 2979 | | hginga_ip = 0; |
| 3171 | state->dsw_sel = data; |
| 3172 | state->keyb = 0; |
| 2980 | 3173 | |
| 2981 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x07)]); |
| 2982 | | memory_set_bankptr(space->machine, "bank2", &rom[0x50000 + 0x1000 * ((data & 0xe0) >> 5)]); |
| 3174 | memory_set_bank(space->machine, "bank1", data & 0x07); |
| 3175 | memory_set_bank(space->machine, "bank2", ((data & 0xe0) >> 5)); |
| 2983 | 3176 | } |
| 2984 | 3177 | |
| 2985 | 3178 | |
| 2986 | 3179 | static READ8_HANDLER( hparadis_input_r ) |
| 2987 | 3180 | { |
| 3181 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 2988 | 3182 | static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }; |
| 2989 | 3183 | static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" }; |
| 2990 | 3184 | |
| 2991 | | switch (hginga_select) |
| 3185 | switch (state->input_sel) |
| 2992 | 3186 | { |
| 2993 | 3187 | case 0x00: return input_port_read(space->machine, "P1"); |
| 2994 | 3188 | case 0x01: return input_port_read(space->machine, "P2"); |
| 2995 | 3189 | case 0x02: return input_port_read(space->machine, "SYSTEM"); |
| 2996 | 3190 | case 0x0d: return 0x00; |
| 2997 | | case 0x80: return input_port_read(space->machine, keynames0[hginga_ip++]); // P1 (Keys) |
| 2998 | | case 0x81: return input_port_read(space->machine, keynames1[hginga_ip++]); // P2 (Keys) |
| 3191 | case 0x80: return input_port_read(space->machine, keynames0[state->keyb++]); // P1 (Keys) |
| 3192 | case 0x81: return input_port_read(space->machine, keynames1[state->keyb++]); // P2 (Keys) |
| 2999 | 3193 | } |
| 3000 | | logerror("%06x: warning, unknown bits read, hginga_select = %02x\n", cpu_get_pc(space->cpu), hginga_select); |
| 3194 | logerror("%06x: warning, unknown bits read, input_sel = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 3001 | 3195 | return 0xff; |
| 3002 | 3196 | } |
| 3003 | 3197 | |
| 3004 | 3198 | static READ8_HANDLER( hparadis_dsw_r ) |
| 3005 | 3199 | { |
| 3006 | | if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW1"); |
| 3007 | | if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW2"); |
| 3008 | | if (!(ddenlovr_select & 0x04)) return 0xff; |
| 3009 | | if (!(ddenlovr_select & 0x08)) return 0xff; |
| 3010 | | if (!(ddenlovr_select & 0x10)) return input_port_read(space->machine, "DSW3"); |
| 3200 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3201 | |
| 3202 | if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1"); |
| 3203 | if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2"); |
| 3204 | if (!BIT(state->dsw_sel, 2)) return 0xff; |
| 3205 | if (!BIT(state->dsw_sel, 3)) return 0xff; |
| 3206 | if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW3"); |
| 3011 | 3207 | return 0xff; |
| 3012 | 3208 | } |
| 3013 | 3209 | |
| 3014 | 3210 | static WRITE8_HANDLER( hparadis_coin_w ) |
| 3015 | 3211 | { |
| 3016 | | switch ( hginga_select ) |
| 3212 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3213 | |
| 3214 | switch (state->input_sel) |
| 3017 | 3215 | { |
| 3018 | 3216 | case 0x0c: coin_counter_w(space->machine, 0, data & 1); break; |
| 3019 | 3217 | case 0x0d: break; |
| 3020 | 3218 | default: |
| 3021 | | logerror("%04x: coins_w with select = %02x, data = %02x\n",cpu_get_pc(space->cpu),hginga_select,data); |
| 3219 | logerror("%04x: coins_w with select = %02x, data = %02x\n",cpu_get_pc(space->cpu), state->input_sel, data); |
| 3022 | 3220 | } |
| 3023 | 3221 | } |
| 3024 | 3222 | |
| r7640 | r7641 | |
| 3031 | 3229 | ADDRESS_MAP_END |
| 3032 | 3230 | |
| 3033 | 3231 | // the RTC seems unused |
| 3034 | | static ADDRESS_MAP_START( hparadis_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3232 | static ADDRESS_MAP_START( hparadis_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3233 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3035 | 3234 | AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) |
| 3036 | 3235 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 3037 | 3236 | AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w) |
| r7640 | r7641 | |
| 3060 | 3259 | |
| 3061 | 3260 | static READ8_HANDLER( mjmywrld_coins_r ) |
| 3062 | 3261 | { |
| 3063 | | switch( ddenlovr_select2 ) |
| 3262 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3263 | |
| 3264 | switch (state->input_sel) |
| 3064 | 3265 | { |
| 3065 | 3266 | case 0x80: return input_port_read(space->machine, "SYSTEM"); |
| 3066 | 3267 | case 0x81: return 0x00; |
| r7640 | r7641 | |
| 3068 | 3269 | case 0x83: return 0x00; |
| 3069 | 3270 | } |
| 3070 | 3271 | |
| 3071 | | logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select2); |
| 3272 | logerror("%06x: warning, unknown bits read, input_sel = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 3072 | 3273 | |
| 3073 | 3274 | return 0xff; |
| 3074 | 3275 | } |
| 3075 | 3276 | |
| 3076 | | static ADDRESS_MAP_START( mjmywrld_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3277 | static ADDRESS_MAP_START( mjmywrld_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3278 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3077 | 3279 | AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w) |
| 3078 | 3280 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 3079 | 3281 | AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w) |
| r7640 | r7641 | |
| 3105 | 3307 | Panel & Variety Akamaru Q Jousyou Dont-R |
| 3106 | 3308 | ***************************************************************************/ |
| 3107 | 3309 | |
| 3108 | | static UINT16 akamaru_protection1; |
| 3109 | 3310 | static READ16_HANDLER( akamaru_protection1_r ) |
| 3110 | 3311 | { |
| 3111 | | return (akamaru_protection1 & 0x0008) ? 0x0001 : 0x0000; |
| 3312 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3313 | return (state->prot_16 & 0x0008) ? 0x0001 : 0x0000; |
| 3112 | 3314 | } |
| 3315 | |
| 3113 | 3316 | static WRITE16_HANDLER( akamaru_protection1_w ) |
| 3114 | 3317 | { |
| 3318 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3115 | 3319 | int bank; |
| 3116 | | COMBINE_DATA( &akamaru_protection1 ); |
| 3320 | |
| 3321 | COMBINE_DATA(&state->prot_16); |
| 3117 | 3322 | // BCD number? |
| 3118 | | bank = (((akamaru_protection1>>4)&0xf)%10) * 10 + ((akamaru_protection1&0xf)%10); |
| 3119 | | okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), bank * 0x40000); |
| 3323 | bank = (((state->prot_16 >> 4) & 0x0f) % 10) * 10 + ((state->prot_16 & 0x0f) % 10); |
| 3324 | okim6295_set_bank_base(state->oki, bank * 0x40000); |
| 3120 | 3325 | |
| 3121 | | // popmessage("bank $%0x (%d)",akamaru_protection1, bank); |
| 3326 | // popmessage("bank $%0x (%d)", state->prot_16, bank); |
| 3122 | 3327 | } |
| 3123 | 3328 | |
| 3124 | | |
| 3125 | | static UINT16 *akamaru_protection2; |
| 3126 | 3329 | static READ16_HANDLER( akamaru_protection2_r ) |
| 3127 | 3330 | { |
| 3128 | 3331 | return 0x55; |
| 3129 | 3332 | } |
| 3130 | 3333 | |
| 3131 | | static UINT16 *akamaru_dsw_sel; |
| 3132 | 3334 | static READ16_HANDLER( akamaru_dsw_r ) |
| 3133 | 3335 | { |
| 3336 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3134 | 3337 | UINT16 dsw = 0; |
| 3135 | | if (akamaru_dsw_sel[1] == 0xff) dsw |= input_port_read(space->machine, "DSW1"); |
| 3136 | | if (akamaru_dsw_sel[0] == 0xff) dsw |= input_port_read(space->machine, "DSW2"); |
| 3338 | |
| 3339 | if (state->dsw_sel16[1] == 0xff) dsw |= input_port_read(space->machine, "DSW1"); |
| 3340 | if (state->dsw_sel16[0] == 0xff) dsw |= input_port_read(space->machine, "DSW2"); |
| 3137 | 3341 | return dsw; |
| 3138 | 3342 | } |
| 3139 | 3343 | |
| 3140 | 3344 | static READ16_HANDLER( akamaru_blitter_r ) |
| 3141 | 3345 | { |
| 3142 | | return ddenlovr_blitter_irq_flag << 6; // bit 7 = 1 -> blitter busy |
| 3346 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3347 | return state->ddenlovr_blitter_irq_flag << 6; // bit 7 = 1 -> blitter busy |
| 3143 | 3348 | } |
| 3144 | 3349 | |
| 3145 | 3350 | static READ16_HANDLER( akamaru_e0010d_r ) |
| r7640 | r7641 | |
| 3172 | 3377 | AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") |
| 3173 | 3378 | |
| 3174 | 3379 | AM_RANGE(0xe00106, 0xe00107) AM_READ(akamaru_protection2_r) |
| 3175 | | AM_RANGE(0xe00108, 0xe0010b) AM_WRITEONLY AM_BASE(&akamaru_protection2) |
| 3380 | AM_RANGE(0xe00108, 0xe0010b) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, protection2) |
| 3176 | 3381 | |
| 3177 | 3382 | AM_RANGE(0xe0010c, 0xe0010d) AM_READ(akamaru_e0010d_r) |
| 3178 | 3383 | AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r) // DSW |
| r7640 | r7641 | |
| 3180 | 3385 | AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r) // Blitter Busy & IRQ |
| 3181 | 3386 | AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge |
| 3182 | 3387 | |
| 3183 | | AM_RANGE(0xe00304, 0xe00307) AM_WRITEONLY AM_BASE( &akamaru_dsw_sel) // DSW select |
| 3388 | AM_RANGE(0xe00304, 0xe00307) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, dsw_sel16) // DSW select |
| 3184 | 3389 | AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters |
| 3185 | 3390 | AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // |
| 3186 | 3391 | |
| r7640 | r7641 | |
| 3199 | 3404 | |
| 3200 | 3405 | static WRITE8_HANDLER( mjflove_rombank_w ) |
| 3201 | 3406 | { |
| 3202 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 3203 | | memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0xf)]); |
| 3407 | memory_set_bank(space->machine, "bank1", data & 0xf); |
| 3204 | 3408 | } |
| 3205 | 3409 | |
| 3206 | 3410 | static WRITE8_DEVICE_HANDLER( mjflove_okibank_w ) |
| 3207 | 3411 | { |
| 3208 | 3412 | okim6295_set_bank_base(device, (data & 0x07) * 0x40000); |
| 3209 | | // popmessage("SOUND = %02x",data); |
| 3413 | //popmessage("SOUND = %02x", data); |
| 3210 | 3414 | } |
| 3211 | 3415 | |
| 3212 | 3416 | static READ8_HANDLER( mjflove_protection_r ) |
| r7640 | r7641 | |
| 3216 | 3420 | |
| 3217 | 3421 | static READ8_HANDLER( mjflove_keyb_r ) |
| 3218 | 3422 | { |
| 3423 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3219 | 3424 | UINT8 val = 0xff; |
| 3220 | 3425 | |
| 3221 | | if (!(keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 3222 | | else if (!(keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 3223 | | else if (!(keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 3224 | | else if (!(keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 3225 | | else if (!(keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 3426 | if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 3427 | else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 3428 | else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 3429 | else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 3430 | else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 3226 | 3431 | |
| 3227 | 3432 | return val; |
| 3228 | 3433 | } |
| 3229 | 3434 | |
| 3230 | | static UINT8 mjflove_irq_cause; |
| 3231 | | |
| 3232 | 3435 | static CUSTOM_INPUT( mjflove_blitter_r ) |
| 3233 | 3436 | { |
| 3437 | dynax_state *state = (dynax_state *)field->port->machine->driver_data; |
| 3438 | |
| 3234 | 3439 | // bit 7 = 1 -> blitter busy |
| 3235 | 3440 | // bit 6 = 0 -> VBLANK? |
| 3236 | 3441 | // bit 5 = 0 -> RTC? |
| 3237 | | return mjflove_irq_cause; |
| 3442 | return state->mjflove_irq_cause; |
| 3238 | 3443 | } |
| 3239 | 3444 | |
| 3240 | 3445 | static WRITE8_HANDLER( mjflove_blitter_w ) |
| 3241 | 3446 | { |
| 3242 | | blitter_w(space, 0,offset,data,0); |
| 3447 | blitter_w(space, 0, offset, data, 0); |
| 3243 | 3448 | } |
| 3244 | 3449 | |
| 3245 | 3450 | static WRITE8_HANDLER( mjflove_coincounter_w ) |
| 3246 | 3451 | { |
| 3247 | 3452 | // bit 0 = in counter |
| 3248 | | coin_counter_w(space->machine, 0, data & 0x01); |
| 3453 | coin_counter_w(space->machine, 0, data & 0x01); |
| 3249 | 3454 | |
| 3250 | 3455 | if (data & 0xfe) |
| 3251 | 3456 | { |
| 3252 | 3457 | logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(space->cpu), data); |
| 3253 | | // popmessage("COIN = %02x",data); |
| 3458 | // popmessage("COIN = %02x", data); |
| 3254 | 3459 | } |
| 3255 | 3460 | } |
| 3256 | 3461 | |
| r7640 | r7641 | |
| 3295 | 3500 | |
| 3296 | 3501 | static WRITE8_HANDLER( jongtei_dsw_keyb_w ) |
| 3297 | 3502 | { |
| 3298 | | dsw = data; |
| 3299 | | keyb = data; |
| 3503 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3504 | state->dsw_sel = data; |
| 3505 | state->keyb = data; |
| 3300 | 3506 | } |
| 3301 | 3507 | |
| 3302 | 3508 | static READ8_HANDLER( jongtei_busy_r ) |
| r7640 | r7641 | |
| 3304 | 3510 | return 0x04; // !bit 2 = blitter busy |
| 3305 | 3511 | } |
| 3306 | 3512 | |
| 3307 | | static ADDRESS_MAP_START( jongtei_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3513 | static ADDRESS_MAP_START( jongtei_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3514 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3308 | 3515 | AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE("oki", jongtei_okibank_w) |
| 3309 | 3516 | AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) |
| 3310 | 3517 | AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) |
| r7640 | r7641 | |
| 3337 | 3544 | |
| 3338 | 3545 | static READ8_HANDLER( sryudens_keyb_r ) |
| 3339 | 3546 | { |
| 3547 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3340 | 3548 | UINT8 val = 0x3f; |
| 3341 | 3549 | |
| 3342 | | if (!(keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 3343 | | else if (!(keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 3344 | | else if (!(keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 3345 | | else if (!(keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 3346 | | else if (!(keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 3550 | if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0"); |
| 3551 | else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1"); |
| 3552 | else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2"); |
| 3553 | else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3"); |
| 3554 | else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4"); |
| 3347 | 3555 | |
| 3348 | 3556 | val |= input_port_read(space->machine, offset ? "HOPPER" : "BET"); |
| 3349 | | if (offset) val &= 0x7f; // bit 7 = blitter busy |
| 3557 | if (offset) |
| 3558 | val &= 0x7f; // bit 7 = blitter busy |
| 3350 | 3559 | return val; |
| 3351 | 3560 | } |
| 3352 | 3561 | |
| r7640 | r7641 | |
| 3364 | 3573 | logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(space->cpu), data); |
| 3365 | 3574 | |
| 3366 | 3575 | #ifdef MAME_DEBUG |
| 3367 | | // popmessage("COIN = %02x",data); |
| 3576 | // popmessage("COIN = %02x", data); |
| 3368 | 3577 | #endif |
| 3369 | 3578 | } |
| 3370 | 3579 | |
| 3371 | 3580 | static WRITE8_HANDLER( sryudens_rambank_w ) |
| 3372 | 3581 | { |
| 3373 | | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 3374 | | memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * (data & 0x0f)]); |
| 3375 | | // logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data); |
| 3582 | memory_set_bank(space->machine, "bank2", data & 0x0f); |
| 3583 | //logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data); |
| 3376 | 3584 | } |
| 3377 | 3585 | |
| 3378 | | static ADDRESS_MAP_START( sryudens_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3586 | static ADDRESS_MAP_START( sryudens_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3587 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3379 | 3588 | AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 3380 | 3589 | AM_RANGE(0x02, 0x03) AM_DEVWRITE("ymsnd", ym2413_w) |
| 3381 | 3590 | AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_address_data_w) |
| r7640 | r7641 | |
| 3412 | 3621 | |
| 3413 | 3622 | static READ8_HANDLER( daimyojn_keyb1_r ) |
| 3414 | 3623 | { |
| 3624 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3415 | 3625 | UINT8 val = 0x3f; |
| 3416 | 3626 | |
| 3417 | | if (!(keyb & 0x01)) val = input_port_read(space->machine, "KEY0"); |
| 3418 | | else if (!(keyb & 0x02)) val = input_port_read(space->machine, "KEY1"); |
| 3419 | | else if (!(keyb & 0x04)) val = input_port_read(space->machine, "KEY2"); |
| 3420 | | else if (!(keyb & 0x08)) val = input_port_read(space->machine, "KEY3"); |
| 3421 | | else if (!(keyb & 0x10)) val = input_port_read(space->machine, "KEY4"); |
| 3627 | if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, "KEY0"); |
| 3628 | else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, "KEY1"); |
| 3629 | else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, "KEY2"); |
| 3630 | else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, "KEY3"); |
| 3631 | else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, "KEY4"); |
| 3422 | 3632 | |
| 3423 | 3633 | val |= input_port_read(space->machine, "BET"); |
| 3424 | 3634 | return val; |
| 3425 | 3635 | } |
| 3636 | |
| 3426 | 3637 | static READ8_HANDLER( daimyojn_keyb2_r ) |
| 3427 | 3638 | { |
| 3639 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3428 | 3640 | UINT8 val = 0x3f; |
| 3429 | 3641 | |
| 3430 | | if (!(keyb & 0x01)) val = input_port_read(space->machine, "KEY5"); |
| 3431 | | else if (!(keyb & 0x02)) val = input_port_read(space->machine, "KEY6"); |
| 3432 | | else if (!(keyb & 0x04)) val = input_port_read(space->machine, "KEY7"); |
| 3433 | | else if (!(keyb & 0x08)) val = input_port_read(space->machine, "KEY8"); |
| 3434 | | else if (!(keyb & 0x10)) val = input_port_read(space->machine, "KEY9"); |
| 3642 | if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, "KEY5"); |
| 3643 | else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, "KEY6"); |
| 3644 | else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, "KEY7"); |
| 3645 | else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, "KEY8"); |
| 3646 | else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, "KEY9"); |
| 3435 | 3647 | |
| 3436 | 3648 | val |= input_port_read(space->machine, "HOPPER"); |
| 3437 | 3649 | return val; |
| r7640 | r7641 | |
| 3439 | 3651 | |
| 3440 | 3652 | // 1B18: D4 ED 76 C9 CB |
| 3441 | 3653 | // 1B1D: 96 AF 34 8B 89 |
| 3442 | | static UINT8 daimyojn_protection_val; |
| 3443 | 3654 | |
| 3444 | 3655 | static WRITE8_HANDLER( daimyojn_protection_w ) |
| 3445 | 3656 | { |
| 3446 | | daimyojn_protection_val = data; |
| 3657 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3658 | state->prot_val = data; |
| 3447 | 3659 | } |
| 3448 | 3660 | |
| 3449 | 3661 | static READ8_HANDLER( daimyojn_protection_r ) |
| 3450 | 3662 | { |
| 3451 | | switch (daimyojn_protection_val) |
| 3663 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3664 | switch (state->prot_val) |
| 3452 | 3665 | { |
| 3453 | 3666 | case 0xd4: return 0x96; |
| 3454 | 3667 | case 0xed: return 0xaf; |
| r7640 | r7641 | |
| 3464 | 3677 | okim6295_set_bank_base(device, ((data >> 4) & 0x01) * 0x40000); |
| 3465 | 3678 | } |
| 3466 | 3679 | |
| 3467 | | static UINT8 daimyojn_palette_sel; |
| 3468 | 3680 | static WRITE8_HANDLER( daimyojn_palette_sel_w ) |
| 3469 | 3681 | { |
| 3470 | | daimyojn_palette_sel = data; |
| 3682 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3683 | state->daimyojn_palette_sel = data; |
| 3471 | 3684 | } |
| 3472 | 3685 | |
| 3473 | 3686 | static WRITE8_HANDLER( daimyojn_blitter_data_palette_w ) |
| 3474 | 3687 | { |
| 3475 | | if (daimyojn_palette_sel & 0x01) |
| 3688 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 3689 | |
| 3690 | if (state->daimyojn_palette_sel & 0x01) |
| 3476 | 3691 | hanakanz_palette_w(space, offset, data); |
| 3477 | 3692 | else |
| 3478 | 3693 | hanakanz_blitter_data_w(space, offset, data); |
| r7640 | r7641 | |
| 3484 | 3699 | return offset ? 1 : 0; // year = 0x10 (BCD) |
| 3485 | 3700 | } |
| 3486 | 3701 | |
| 3487 | | static ADDRESS_MAP_START( daimyojn_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3702 | static ADDRESS_MAP_START( daimyojn_portmap, ADDRESS_SPACE_IO, 8 ) |
| 3703 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3488 | 3704 | AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE("oki", daimyojn_okibank_w) |
| 3489 | 3705 | AM_RANGE(0x2e, 0x2e) AM_WRITE(daimyojn_palette_sel_w) |
| 3490 | 3706 | AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_blitter_reg_w) |
| r7640 | r7641 | |
| 7335 | 7551 | |
| 7336 | 7552 | |
| 7337 | 7553 | /*************************************************************************** |
| 7554 | |
| 7555 | |
| 7556 | Machine Drivers |
| 7557 | |
| 7558 | |
| 7559 | ***************************************************************************/ |
| 7560 | |
| 7561 | static MACHINE_START( ddenlovr ) |
| 7562 | { |
| 7563 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 7564 | |
| 7565 | state->maincpu = devtag_get_device(machine, "maincpu"); |
| 7566 | state->soundcpu = devtag_get_device(machine, "soundcpu"); |
| 7567 | state->oki = devtag_get_device(machine, "oki"); |
| 7568 | |
| 7569 | state_save_register_global(machine, state->input_sel); |
| 7570 | state_save_register_global(machine, state->dsw_sel); |
| 7571 | state_save_register_global(machine, state->keyb); |
| 7572 | state_save_register_global(machine, state->coins); |
| 7573 | state_save_register_global(machine, state->hopper); |
| 7574 | |
| 7575 | state_save_register_global(machine, state->okibank); |
| 7576 | state_save_register_global(machine, state->rongrong_blitter_busy_select); |
| 7577 | |
| 7578 | state_save_register_global(machine, state->prot_val); |
| 7579 | state_save_register_global(machine, state->prot_16); |
| 7580 | state_save_register_global_array(machine, state->quiz365_protection); |
| 7581 | |
| 7582 | state_save_register_global(machine, state->mmpanic_leds); |
| 7583 | state_save_register_global(machine, state->funkyfig_lockout); |
| 7584 | state_save_register_global_array(machine, state->romdata); |
| 7585 | state_save_register_global(machine, state->palette_index); |
| 7586 | state_save_register_global(machine, state->hginga_rombank); |
| 7587 | state_save_register_global(machine, state->mjflove_irq_cause); |
| 7588 | state_save_register_global(machine, state->daimyojn_palette_sel); |
| 7589 | state_save_register_global_array(machine, state->palram); |
| 7590 | |
| 7591 | state_save_register_global(machine, state->irq_count); |
| 7592 | } |
| 7593 | |
| 7594 | static MACHINE_RESET( ddenlovr ) |
| 7595 | { |
| 7596 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 7597 | |
| 7598 | state->input_sel = 0; |
| 7599 | state->dsw_sel = 0; |
| 7600 | state->keyb = 0; |
| 7601 | state->coins = 0; |
| 7602 | state->hopper = 0; |
| 7603 | |
| 7604 | state->okibank = 0; |
| 7605 | state->rongrong_blitter_busy_select = 0; |
| 7606 | state->prot_val = 0; |
| 7607 | state->prot_16 = 0; |
| 7608 | state->mmpanic_leds = 0; |
| 7609 | state->funkyfig_lockout = 0; |
| 7610 | state->palette_index = 0; |
| 7611 | state->hginga_rombank = 0; |
| 7612 | state->mjflove_irq_cause = 0; |
| 7613 | state->daimyojn_palette_sel = 0; |
| 7614 | state->irq_count = 0; |
| 7615 | |
| 7616 | state->quiz365_protection[0] = 0; |
| 7617 | state->quiz365_protection[1] = 0; |
| 7618 | state->romdata[0] = 0; |
| 7619 | state->romdata[1] = 0; |
| 7620 | |
| 7621 | memset(state->palram, 0, ARRAY_LENGTH(state->palram)); |
| 7622 | } |
| 7623 | |
| 7624 | static MACHINE_START( rongrong ) |
| 7625 | { |
| 7626 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7627 | memory_configure_bank(machine, "bank1", 0, 0x20, &ROM[0x010000], 0x8000); |
| 7628 | memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x110000], 0x1000); |
| 7629 | |
| 7630 | MACHINE_START_CALL(ddenlovr); |
| 7631 | } |
| 7632 | |
| 7633 | static MACHINE_START( mmpanic ) |
| 7634 | { |
| 7635 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7636 | memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000); |
| 7637 | |
| 7638 | MACHINE_START_CALL(ddenlovr); |
| 7639 | } |
| 7640 | |
| 7641 | static MACHINE_START( funkyfig ) |
| 7642 | { |
| 7643 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7644 | memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000); |
| 7645 | memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000); |
| 7646 | |
| 7647 | MACHINE_START_CALL(ddenlovr); |
| 7648 | } |
| 7649 | |
| 7650 | static MACHINE_START( hanakanz ) |
| 7651 | { |
| 7652 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7653 | memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000); |
| 7654 | memory_configure_bank(machine, "bank2", 0, 0x10, &ROM[0x90000], 0x1000); |
| 7655 | |
| 7656 | MACHINE_START_CALL(ddenlovr); |
| 7657 | } |
| 7658 | |
| 7659 | static MACHINE_START( mjmyster ) |
| 7660 | { |
| 7661 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7662 | memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000); |
| 7663 | memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000); |
| 7664 | |
| 7665 | MACHINE_START_CALL(ddenlovr); |
| 7666 | } |
| 7667 | |
| 7668 | static MACHINE_START( hparadis ) |
| 7669 | { |
| 7670 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7671 | memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000); |
| 7672 | memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x50000], 0x1000); |
| 7673 | |
| 7674 | MACHINE_START_CALL(ddenlovr); |
| 7675 | } |
| 7676 | |
| 7677 | static MACHINE_START( mjflove ) |
| 7678 | { |
| 7679 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7680 | memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000); |
| 7681 | memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000); |
| 7682 | |
| 7683 | MACHINE_START_CALL(ddenlovr); |
| 7684 | } |
| 7685 | |
| 7686 | static MACHINE_START( sryudens ) |
| 7687 | { |
| 7688 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 7689 | memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000); |
| 7690 | memory_configure_bank(machine, "bank2", 0, 0x10, &ROM[0x90000], 0x1000); |
| 7691 | |
| 7692 | MACHINE_START_CALL(ddenlovr); |
| 7693 | } |
| 7694 | |
| 7695 | /*************************************************************************** |
| 7338 | 7696 | Don Den Lover Vol.1 |
| 7339 | 7697 | ***************************************************************************/ |
| 7340 | 7698 | |
| 7341 | 7699 | static MACHINE_DRIVER_START( ddenlovr ) |
| 7342 | 7700 | |
| 7701 | /* driver data */ |
| 7702 | MDRV_DRIVER_DATA(dynax_state) |
| 7703 | |
| 7343 | 7704 | /* basic machine hardware */ |
| 7344 | 7705 | MDRV_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2) |
| 7345 | 7706 | MDRV_CPU_PROGRAM_MAP(ddenlovr_map) |
| 7346 | 7707 | MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) |
| 7347 | 7708 | |
| 7709 | MDRV_MACHINE_START(ddenlovr) |
| 7710 | MDRV_MACHINE_RESET(ddenlovr) |
| 7711 | |
| 7348 | 7712 | /* video hardware */ |
| 7349 | 7713 | MDRV_SCREEN_ADD("screen", RASTER) |
| 7350 | 7714 | MDRV_SCREEN_REFRESH_RATE(60) |
| r7640 | r7641 | |
| 7442 | 7806 | */ |
| 7443 | 7807 | static INTERRUPT_GEN( quizchq_irq ) |
| 7444 | 7808 | { |
| 7445 | | static int count; |
| 7809 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 7446 | 7810 | |
| 7447 | 7811 | /* I haven't found a irq ack register, so I need this kludge to |
| 7448 | 7812 | make sure I don't lose any interrupt generated by the blitter, |
| r7640 | r7641 | |
| 7450 | 7814 | if (device->get_runtime_int(CPUINFO_INT_INPUT_STATE + 0)) |
| 7451 | 7815 | return; |
| 7452 | 7816 | |
| 7453 | | if ((++count % 60) == 0) |
| 7817 | if ((++state->irq_count % 60) == 0) |
| 7454 | 7818 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfc); |
| 7455 | 7819 | else |
| 7456 | 7820 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee); |
| r7640 | r7641 | |
| 7465 | 7829 | |
| 7466 | 7830 | static MACHINE_DRIVER_START( quizchq ) |
| 7467 | 7831 | |
| 7832 | /* driver data */ |
| 7833 | MDRV_DRIVER_DATA(dynax_state) |
| 7834 | |
| 7468 | 7835 | /* basic machine hardware */ |
| 7469 | 7836 | MDRV_CPU_ADD("maincpu", Z80, 8000000) /* ? */ |
| 7470 | 7837 | MDRV_CPU_PROGRAM_MAP(quizchq_map) |
| 7471 | 7838 | MDRV_CPU_IO_MAP(quizchq_portmap) |
| 7472 | 7839 | MDRV_CPU_VBLANK_INT("screen", quizchq_irq) |
| 7473 | 7840 | |
| 7841 | MDRV_MACHINE_START(rongrong) |
| 7842 | MDRV_MACHINE_RESET(ddenlovr) |
| 7843 | |
| 7474 | 7844 | /* video hardware */ |
| 7475 | 7845 | MDRV_SCREEN_ADD("screen", RASTER) |
| 7476 | 7846 | MDRV_SCREEN_REFRESH_RATE(60) |
| r7640 | r7641 | |
| 7522 | 7892 | */ |
| 7523 | 7893 | static INTERRUPT_GEN( mmpanic_irq ) |
| 7524 | 7894 | { |
| 7525 | | static int count; |
| 7895 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 7526 | 7896 | |
| 7527 | 7897 | /* I haven't found a irq ack register, so I need this kludge to |
| 7528 | 7898 | make sure I don't lose any interrupt generated by the blitter, |
| r7640 | r7641 | |
| 7530 | 7900 | if (device->get_runtime_int(CPUINFO_INT_INPUT_STATE + 0)) |
| 7531 | 7901 | return; |
| 7532 | 7902 | |
| 7533 | | if ((++count % 60) == 0) |
| 7903 | if ((++state->irq_count % 60) == 0) |
| 7534 | 7904 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe7); // RST 20, clock |
| 7535 | 7905 | else |
| 7536 | 7906 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xcf); // RST 08, vblank |
| r7640 | r7641 | |
| 7538 | 7908 | |
| 7539 | 7909 | static MACHINE_DRIVER_START( mmpanic ) |
| 7540 | 7910 | |
| 7911 | /* driver data */ |
| 7912 | MDRV_DRIVER_DATA(dynax_state) |
| 7913 | |
| 7541 | 7914 | /* basic machine hardware */ |
| 7542 | 7915 | MDRV_CPU_ADD("maincpu", Z80, 8000000) |
| 7543 | 7916 | MDRV_CPU_PROGRAM_MAP(mmpanic_map) |
| r7640 | r7641 | |
| 7549 | 7922 | MDRV_CPU_IO_MAP(mmpanic_sound_portmap) |
| 7550 | 7923 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) // NMI by main cpu |
| 7551 | 7924 | |
| 7925 | MDRV_MACHINE_START(mmpanic) |
| 7926 | MDRV_MACHINE_RESET(ddenlovr) |
| 7927 | |
| 7552 | 7928 | /* video hardware */ |
| 7553 | 7929 | MDRV_SCREEN_ADD("screen", RASTER) |
| 7554 | 7930 | MDRV_SCREEN_REFRESH_RATE(60) |
| r7640 | r7641 | |
| 7594 | 7970 | */ |
| 7595 | 7971 | static INTERRUPT_GEN( hanakanz_irq ) |
| 7596 | 7972 | { |
| 7597 | | static int count; |
| 7973 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 7598 | 7974 | |
| 7599 | 7975 | /* I haven't found a irq ack register, so I need this kludge to |
| 7600 | 7976 | make sure I don't lose any interrupt generated by the blitter, |
| r7640 | r7641 | |
| 7602 | 7978 | if (device->get_runtime_int(CPUINFO_INT_INPUT_STATE + 0)) |
| 7603 | 7979 | return; |
| 7604 | 7980 | |
| 7605 | | if ((++count % 60) == 0) |
| 7981 | if ((++state->irq_count % 60) == 0) |
| 7606 | 7982 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe2); |
| 7607 | 7983 | else |
| 7608 | 7984 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe0); |
| r7640 | r7641 | |
| 7610 | 7986 | |
| 7611 | 7987 | static MACHINE_DRIVER_START( hanakanz ) |
| 7612 | 7988 | |
| 7989 | /* driver data */ |
| 7990 | MDRV_DRIVER_DATA(dynax_state) |
| 7991 | |
| 7613 | 7992 | /* basic machine hardware */ |
| 7614 | 7993 | MDRV_CPU_ADD("maincpu",Z80,8000000) // TMPZ84C015BF-8 |
| 7615 | 7994 | MDRV_CPU_PROGRAM_MAP(hanakanz_map) |
| 7616 | 7995 | MDRV_CPU_IO_MAP(hanakanz_portmap) |
| 7617 | 7996 | MDRV_CPU_VBLANK_INT("screen", hanakanz_irq) |
| 7618 | 7997 | |
| 7998 | MDRV_MACHINE_START(hanakanz) |
| 7999 | MDRV_MACHINE_RESET(ddenlovr) |
| 8000 | |
| 7619 | 8001 | /* video hardware */ |
| 7620 | 8002 | MDRV_SCREEN_ADD("screen", RASTER) |
| 7621 | 8003 | MDRV_SCREEN_REFRESH_RATE(60) |
| r7640 | r7641 | |
| 7670 | 8052 | */ |
| 7671 | 8053 | static INTERRUPT_GEN( mjchuuka_irq ) |
| 7672 | 8054 | { |
| 7673 | | static int count; |
| 8055 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 7674 | 8056 | |
| 7675 | 8057 | /* I haven't found a irq ack register, so I need this kludge to |
| 7676 | 8058 | make sure I don't lose any interrupt generated by the blitter, |
| r7640 | r7641 | |
| 7678 | 8060 | if (device->get_runtime_int(CPUINFO_INT_INPUT_STATE + 0)) |
| 7679 | 8061 | return; |
| 7680 | 8062 | |
| 7681 | | if ((++count % 60) == 0) |
| 8063 | if ((++state->irq_count % 60) == 0) |
| 7682 | 8064 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfa); |
| 7683 | 8065 | else |
| 7684 | 8066 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8); |
| r7640 | r7641 | |
| 7705 | 8087 | MDRV_CPU_IO_MAP(funkyfig_portmap) |
| 7706 | 8088 | MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq) |
| 7707 | 8089 | |
| 8090 | MDRV_MACHINE_START(funkyfig) |
| 8091 | |
| 7708 | 8092 | MDRV_CPU_MODIFY("soundcpu") |
| 7709 | 8093 | MDRV_CPU_IO_MAP(funkyfig_sound_portmap) |
| 7710 | 8094 | |
| r7640 | r7641 | |
| 7736 | 8120 | if (device->get_runtime_int(CPUINFO_INT_INPUT_STATE + 0)) |
| 7737 | 8121 | return; |
| 7738 | 8122 | |
| 7739 | | switch( cpu_getiloops(device) ) |
| 8123 | switch (cpu_getiloops(device)) |
| 7740 | 8124 | { |
| 7741 | 8125 | case 0: cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8); break; |
| 7742 | 8126 | case 1: cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfa); break; |
| r7640 | r7641 | |
| 7767 | 8151 | MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2) |
| 7768 | 8152 | MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1) |
| 7769 | 8153 | |
| 8154 | MDRV_MACHINE_START(mjmyster) |
| 8155 | |
| 7770 | 8156 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) |
| 7771 | 8157 | MDRV_SOUND_CONFIG(mjmyster_ay8910_interface) |
| 7772 | 8158 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| r7640 | r7641 | |
| 7784 | 8170 | */ |
| 7785 | 8171 | static INTERRUPT_GEN( hginga_irq ) |
| 7786 | 8172 | { |
| 7787 | | static int count; |
| 8173 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 7788 | 8174 | |
| 7789 | 8175 | /* I haven't found a irq ack register, so I need this kludge to |
| 7790 | 8176 | make sure I don't lose any interrupt generated by the blitter, |
| r7640 | r7641 | |
| 7792 | 8178 | if (device->get_runtime_int(CPUINFO_INT_INPUT_STATE + 0)) |
| 7793 | 8179 | return; |
| 7794 | 8180 | |
| 7795 | | if ((++count % 60) == 0) |
| 8181 | if ((++state->irq_count % 60) == 0) |
| 7796 | 8182 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee); |
| 7797 | 8183 | else |
| 7798 | 8184 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8); |
| r7640 | r7641 | |
| 7815 | 8201 | MDRV_CPU_IO_MAP(hginga_portmap) |
| 7816 | 8202 | MDRV_CPU_VBLANK_INT("screen", hginga_irq) |
| 7817 | 8203 | |
| 8204 | MDRV_MACHINE_START(mjmyster) |
| 8205 | |
| 7818 | 8206 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) |
| 7819 | 8207 | MDRV_SOUND_CONFIG(hginga_ay8910_interface) |
| 7820 | 8208 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| r7640 | r7641 | |
| 7828 | 8216 | MDRV_CPU_IO_MAP(hgokou_portmap) |
| 7829 | 8217 | MDRV_CPU_VBLANK_INT("screen", hginga_irq) |
| 7830 | 8218 | |
| 8219 | MDRV_MACHINE_START(mjmyster) |
| 8220 | |
| 7831 | 8221 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) |
| 7832 | 8222 | MDRV_SOUND_CONFIG(hginga_ay8910_interface) |
| 7833 | 8223 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| r7640 | r7641 | |
| 7850 | 8240 | MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2) |
| 7851 | 8241 | MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1) |
| 7852 | 8242 | |
| 8243 | MDRV_MACHINE_START(mjmyster) |
| 8244 | |
| 7853 | 8245 | MDRV_SOUND_ADD("aysnd", AY8910, 1789772) |
| 7854 | 8246 | MDRV_SOUND_CONFIG(mjmyster_ay8910_interface) |
| 7855 | 8247 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| r7640 | r7641 | |
| 7863 | 8255 | MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2) |
| 7864 | 8256 | MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1) |
| 7865 | 8257 | |
| 8258 | MDRV_MACHINE_START(mjmyster) |
| 8259 | |
| 7866 | 8260 | MDRV_SOUND_ADD("aysnd", AY8910, 1789772) |
| 7867 | 8261 | MDRV_SOUND_CONFIG(mjmyster_ay8910_interface) |
| 7868 | 8262 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| r7640 | r7641 | |
| 7870 | 8264 | |
| 7871 | 8265 | static INTERRUPT_GEN( mjflove_irq ) |
| 7872 | 8266 | { |
| 7873 | | mjflove_irq_cause = 1 | (1 << 1); |
| 8267 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 7874 | 8268 | |
| 8269 | state->mjflove_irq_cause = 1 | (1 << 1); |
| 8270 | |
| 7875 | 8271 | switch (cpu_getiloops(device)) |
| 7876 | 8272 | { |
| 7877 | 8273 | case 0: |
| 7878 | | mjflove_irq_cause &= 1; |
| 8274 | state->mjflove_irq_cause &= 1; |
| 7879 | 8275 | cpu_set_input_line(device, 0, HOLD_LINE); |
| 7880 | 8276 | break; |
| 7881 | 8277 | case 1: |
| 7882 | | mjflove_irq_cause &= 1 << 1; |
| 8278 | state->mjflove_irq_cause &= 1 << 1; |
| 7883 | 8279 | cpu_set_input_line(device, 0, HOLD_LINE); |
| 7884 | 8280 | break; |
| 7885 | 8281 | } |
| r7640 | r7641 | |
| 7893 | 8289 | MDRV_CPU_IO_MAP(mjflove_portmap) |
| 7894 | 8290 | MDRV_CPU_VBLANK_INT_HACK(mjflove_irq, 2) |
| 7895 | 8291 | |
| 8292 | MDRV_MACHINE_START(mjflove) |
| 8293 | |
| 7896 | 8294 | MDRV_VIDEO_START(mjflove) // blitter commands in the roms are shuffled around |
| 7897 | 8295 | |
| 7898 | 8296 | MDRV_SOUND_ADD("aysnd", AY8910, 28636363/8) |
| r7640 | r7641 | |
| 7913 | 8311 | MDRV_CPU_PROGRAM_MAP(hparadis_map) |
| 7914 | 8312 | MDRV_CPU_IO_MAP(hparadis_portmap) |
| 7915 | 8313 | MDRV_CPU_VBLANK_INT("screen", hparadis_irq) |
| 8314 | |
| 8315 | MDRV_MACHINE_START(hparadis) |
| 7916 | 8316 | MACHINE_DRIVER_END |
| 7917 | 8317 | |
| 7918 | 8318 | static MACHINE_DRIVER_START( jongtei ) |
| 7919 | 8319 | |
| 8320 | /* driver data */ |
| 8321 | MDRV_DRIVER_DATA(dynax_state) |
| 8322 | |
| 7920 | 8323 | /* basic machine hardware */ |
| 7921 | 8324 | MDRV_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // ? |
| 7922 | 8325 | MDRV_CPU_PROGRAM_MAP(hanakanz_map) |
| 7923 | 8326 | MDRV_CPU_IO_MAP(jongtei_portmap) |
| 7924 | 8327 | MDRV_CPU_VBLANK_INT("screen", hanakanz_irq) |
| 7925 | 8328 | |
| 8329 | MDRV_MACHINE_START(hanakanz) |
| 8330 | MDRV_MACHINE_RESET(ddenlovr) |
| 8331 | |
| 7926 | 8332 | /* video hardware */ |
| 7927 | 8333 | MDRV_SCREEN_ADD("screen", RASTER) |
| 7928 | 8334 | MDRV_SCREEN_REFRESH_RATE(60) |
| r7640 | r7641 | |
| 7957 | 8363 | |
| 7958 | 8364 | static MACHINE_DRIVER_START( sryudens ) |
| 7959 | 8365 | |
| 8366 | /* driver data */ |
| 8367 | MDRV_DRIVER_DATA(dynax_state) |
| 8368 | |
| 7960 | 8369 | /* basic machine hardware */ |
| 7961 | 8370 | MDRV_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) // ? |
| 7962 | 8371 | MDRV_CPU_PROGRAM_MAP(sryudens_map) |
| 7963 | 8372 | MDRV_CPU_IO_MAP(sryudens_portmap) |
| 7964 | 8373 | MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq) |
| 7965 | 8374 | |
| 8375 | MDRV_MACHINE_START(sryudens) |
| 8376 | MDRV_MACHINE_RESET(ddenlovr) |
| 8377 | |
| 7966 | 8378 | /* video hardware */ |
| 7967 | 8379 | MDRV_SCREEN_ADD("screen", RASTER) |
| 7968 | 8380 | MDRV_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz |
| r7640 | r7641 | |
| 8000 | 8412 | |
| 8001 | 8413 | static MACHINE_DRIVER_START( daimyojn ) |
| 8002 | 8414 | |
| 8415 | /* driver data */ |
| 8416 | MDRV_DRIVER_DATA(dynax_state) |
| 8417 | |
| 8003 | 8418 | /* basic machine hardware */ |
| 8004 | 8419 | MDRV_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) |
| 8005 | 8420 | MDRV_CPU_PROGRAM_MAP(hanakanz_map) |
| 8006 | 8421 | MDRV_CPU_IO_MAP(daimyojn_portmap) |
| 8007 | 8422 | MDRV_CPU_VBLANK_INT("screen", hanakanz_irq) |
| 8008 | 8423 | |
| 8424 | MDRV_MACHINE_START(mjflove) |
| 8425 | MDRV_MACHINE_RESET(ddenlovr) |
| 8426 | |
| 8009 | 8427 | /* video hardware */ |
| 8010 | 8428 | MDRV_SCREEN_ADD("screen", RASTER) |
| 8011 | 8429 | MDRV_SCREEN_REFRESH_RATE(59.7922) // HSync 15.4248kHz |
| r7640 | r7641 | |
| 9752 | 10170 | ROM_END |
| 9753 | 10171 | |
| 9754 | 10172 | |
| 9755 | | GAME( 1992, mmpanic, 0, mmpanic, mmpanic, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL ) |
| 9756 | | GAME( 1993, funkyfig, 0, funkyfig, funkyfig, 0, ROT0, "Nakanihon + East Technology (Taito license)", "The First Funky Fighter", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS ) // scrolling, priority? |
| 9757 | | GAME( 1993, quizchq, 0, quizchq, quizchq, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 9758 | | GAME( 1993, quizchql, quizchq, quizchq, quizchq, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 9759 | | GAME( 1993, animaljr, 0, mmpanic, animaljr, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Animalandia Jr.", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND ) |
| 9760 | | GAME( 1994, hginga, 0, hginga, hginga, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", GAME_NO_COCKTAIL ) |
| 9761 | | GAME( 1994, mjmyster, 0, mjmyster, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", GAME_NO_COCKTAIL ) |
| 9762 | | GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", GAME_NO_COCKTAIL ) |
| 9763 | | GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", GAME_NO_COCKTAIL ) |
| 9764 | | GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL ) |
| 9765 | | GAME( 1994, quiz365, 0, quiz365, quiz365, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION ) |
| 9766 | | GAME( 1994, quiz365t, quiz365, quiz365, quiz365, 0, ROT0, "Nakanihon + Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION ) |
| 9767 | | GAME( 1994, rongrong, 0, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS ) |
| 9768 | | GAME( 1994, rongrongj,rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS ) |
| 9769 | | GAME( 1994, rongrongg,rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS ) |
| 9770 | | GAME( 1994, hparadis, 0, hparadis, hparadis, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL ) |
| 9771 | | GAME( 1995, hgokou, 0, hgokou, hgokou, 0, ROT0, "Dynax (Alba licence)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL ) |
| 9772 | | GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, v. D111)", GAME_NO_COCKTAIL ) |
| 9773 | | GAME( 1995, nettoqc, 0, nettoqc, nettoqc, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS ) |
| 9774 | | GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", GAME_NO_COCKTAIL ) |
| 9775 | | GAME( 1995, ddenlovrk,ddenlovj, ddenlovrk,ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", GAME_NO_COCKTAIL ) |
| 9776 | | GAME( 1995, ddenlovrb,ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "[Dynax] (bootleg)", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", GAME_NO_COCKTAIL ) |
| 9777 | | GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", GAME_NO_COCKTAIL ) |
| 9778 | | GAME( 1996, hanakanz, 0, hanakanz, hanakanz, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", GAME_NO_COCKTAIL ) |
| 9779 | | GAME( 1996, akamaru, 0, akamaru, akamaru, 0, ROT0, "Dynax (Nakanihon licence)", "Panel & Variety Akamaru Q Jousyou Dont-R", GAME_NO_COCKTAIL ) |
| 9780 | | GAME( 1996, sryudens, 0, sryudens, sryudens, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS ) |
| 9781 | | GAME( 1996, mjflove, 0, mjflove, mjflove, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", GAME_NO_COCKTAIL ) |
| 9782 | | GAME( 1997, hkagerou, 0, hkagerou, hkagerou, 0, ROT0, "Nakanihon + Dynax", "Hana Kagerou [BET] (Japan)", GAME_NO_COCKTAIL ) |
| 9783 | | GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", GAME_NO_COCKTAIL ) |
| 9784 | | GAME( 1998, mjreach1, 0, mjreach1, mjreach1, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL ) |
| 9785 | | GAME( 1999, jongtei, 0, jongtei, jongtei, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL ) |
| 9786 | | GAME( 2002, daimyojn, 0, daimyojn, daimyojn, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL ) |
| 10173 | GAME( 1992, mmpanic, 0, mmpanic, mmpanic, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10174 | GAME( 1993, funkyfig, 0, funkyfig, funkyfig, 0, ROT0, "Nakanihon + East Technology (Taito license)", "The First Funky Fighter", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // scrolling, priority? |
| 10175 | GAME( 1993, quizchq, 0, quizchq, quizchq, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
| 10176 | GAME( 1993, quizchql, quizchq, quizchq, quizchq, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
| 10177 | GAME( 1993, animaljr, 0, mmpanic, animaljr, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Animalandia Jr.", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 10178 | GAME( 1994, hginga, 0, hginga, hginga, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10179 | GAME( 1994, mjmyster, 0, mjmyster, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10180 | GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10181 | GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10182 | GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10183 | GAME( 1994, quiz365, 0, quiz365, quiz365, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) |
| 10184 | GAME( 1994, quiz365t, quiz365, quiz365, quiz365, 0, ROT0, "Nakanihon + Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) |
| 10185 | GAME( 1994, rongrong, 0, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| 10186 | GAME( 1994, rongrongj, rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| 10187 | GAME( 1994, rongrongg, rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| 10188 | GAME( 1994, hparadis, 0, hparadis, hparadis, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10189 | GAME( 1995, hgokou, 0, hgokou, hgokou, 0, ROT0, "Dynax (Alba licence)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10190 | GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, v. D111)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10191 | GAME( 1995, nettoqc, 0, nettoqc, nettoqc, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| 10192 | GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10193 | GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10194 | GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "[Dynax] (bootleg)", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10195 | GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10196 | GAME( 1996, hanakanz, 0, hanakanz, hanakanz, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10197 | GAME( 1996, akamaru, 0, akamaru, akamaru, 0, ROT0, "Dynax (Nakanihon licence)", "Panel & Variety Akamaru Q Jousyou Dont-R", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10198 | GAME( 1996, sryudens, 0, sryudens, sryudens, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 10199 | GAME( 1996, mjflove, 0, mjflove, mjflove, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10200 | GAME( 1997, hkagerou, 0, hkagerou, hkagerou, 0, ROT0, "Nakanihon + Dynax", "Hana Kagerou [BET] (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10201 | GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10202 | GAME( 1998, mjreach1, 0, mjreach1, mjreach1, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10203 | GAME( 1999, jongtei, 0, jongtei, jongtei, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 10204 | GAME( 2002, daimyojn, 0, daimyojn, daimyojn, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
src/mame/drivers/metro.c
| r7640 | r7641 | |
| 34 | 34 | 94 Blazing Tornado ? 14220 Also has Konami 053936 gfx chip |
| 35 | 35 | 96 Grand Striker 2 HUM-003(A) 14220 Also has Konami 053936 gfx chip |
| 36 | 36 | 95 Daitoride MTR5260-A 14220 |
| 37 | 95 Mouse Shooter GoGo - 14220 No sound CPU |
| 37 | 38 | 95 Pururun MTR5260-A 14220 |
| 38 | 39 | 95 Puzzli MTR5260-A 14220 |
| 39 | 40 | 96 Sankokushi MTR5260-A 14220 |
| r7640 | r7641 | |
| 50 | 51 | |
| 51 | 52 | Not dumped yet: |
| 52 | 53 | 94 Toride II |
| 53 | | 94 Mouse Shooter GoGo (might be a prequel to Bang Bang Ball) |
| 54 | 54 | |
| 55 | 55 | To Do: |
| 56 | 56 | |
| 57 | | - 1 pixel granularity in the window's placement (8 pixels now, see daitorid title) |
| 58 | 57 | - Coin lockout |
| 59 | 58 | - Some gfx problems in ladykill, 3kokushi, puzzli, gakusai |
| 59 | - Seems related to how we handle windows and wrapping |
| 60 | 60 | - Are the 16x16 tiles used by Mouja a Imagetek 14300-only feature? |
| 61 | | - Flip screen doesn't work correctly in Mouja due to asymmetrical visible area |
| 61 | - Interrupt timing needs figuring out properly, having it incorrect |
| 62 | causes scrolling glitches in some games. Test cases Mouse Go Go |
| 63 | title screen, GunMaster title screen. Changing it can cause |
| 64 | excessive slowdown in said games however. |
| 65 | - Bang Bang Ball / Bubble Buster slow to a crawl when you press a |
| 66 | button between levels, on a real PCB it speeds up instead (related |
| 67 | to above?) |
| 62 | 68 | |
| 63 | 69 | Notes: |
| 64 | 70 | |
| r7640 | r7641 | |
| 87 | 93 | #include "cpu/m68000/m68000.h" |
| 88 | 94 | #include "cpu/h83002/h8.h" |
| 89 | 95 | #include "cpu/upd7810/upd7810.h" |
| 96 | #include "includes/metro.h" |
| 90 | 97 | #include "machine/eeprom.h" |
| 91 | | #include "video/konicdev.h" |
| 92 | 98 | #include "sound/2610intf.h" |
| 93 | 99 | #include "sound/2151intf.h" |
| 94 | 100 | #include "sound/2413intf.h" |
| 95 | 101 | #include "sound/okim6295.h" |
| 96 | 102 | #include "sound/ymf278b.h" |
| 103 | #include "video/konicdev.h" |
| 97 | 104 | |
| 98 | | /* Variables defined in video: */ |
| 99 | | |
| 100 | | extern UINT16 *metro_videoregs; |
| 101 | | extern UINT16 *metro_screenctrl; |
| 102 | | extern UINT16 *metro_scroll; |
| 103 | | extern UINT16 *metro_tiletable; |
| 104 | | extern size_t metro_tiletable_size; |
| 105 | | extern UINT16 *metro_vram_0, *metro_vram_1, *metro_vram_2; |
| 106 | | extern UINT16 *metro_window; |
| 107 | | extern UINT16 *metro_K053936_ram; |
| 108 | | WRITE16_HANDLER( metro_K053936_w ); |
| 109 | | |
| 110 | | |
| 111 | | /* Functions defined in video: */ |
| 112 | | |
| 113 | | WRITE16_HANDLER( metro_window_w ); |
| 114 | | |
| 115 | | WRITE16_HANDLER( metro_vram_0_w ); |
| 116 | | WRITE16_HANDLER( metro_vram_1_w ); |
| 117 | | WRITE16_HANDLER( metro_vram_2_w ); |
| 118 | | |
| 119 | | |
| 120 | | VIDEO_START( metro_14100 ); |
| 121 | | VIDEO_START( metro_14220 ); |
| 122 | | VIDEO_START( metro_14300 ); |
| 123 | | VIDEO_START( blzntrnd ); |
| 124 | | VIDEO_START( gstrik2 ); |
| 125 | | |
| 126 | | VIDEO_UPDATE( metro ); |
| 127 | | |
| 128 | | |
| 129 | 105 | /*************************************************************************** |
| 130 | 106 | |
| 131 | 107 | |
| r7640 | r7641 | |
| 134 | 110 | |
| 135 | 111 | ***************************************************************************/ |
| 136 | 112 | |
| 137 | | static int irq_line, blitter_bit; |
| 138 | | |
| 139 | | static UINT8 requested_int[8]; |
| 140 | | |
| 141 | | static UINT16 *metro_irq_levels, *metro_irq_vectors, *metro_irq_enable; |
| 142 | | |
| 143 | 113 | static READ16_HANDLER( metro_irq_cause_r ) |
| 144 | 114 | { |
| 145 | | return requested_int[0] * 0x01 + // vblank |
| 146 | | requested_int[1] * 0x02 + |
| 147 | | requested_int[2] * 0x04 + // blitter |
| 148 | | requested_int[3] * 0x08 + |
| 149 | | requested_int[4] * 0x10 + |
| 150 | | requested_int[5] * 0x20 + |
| 151 | | requested_int[6] * 0x40 + // unused |
| 152 | | requested_int[7] * 0x80 ; // unused |
| 115 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 116 | |
| 117 | return state->requested_int[0] * 0x01 + // vblank |
| 118 | state->requested_int[1] * 0x02 + |
| 119 | state->requested_int[2] * 0x04 + // blitter |
| 120 | state->requested_int[3] * 0x08 + |
| 121 | state->requested_int[4] * 0x10 + |
| 122 | state->requested_int[5] * 0x20 + |
| 123 | state->requested_int[6] * 0x40 + // unused |
| 124 | state->requested_int[7] * 0x80 ; // unused |
| 153 | 125 | } |
| 154 | 126 | |
| 155 | 127 | |
| 156 | 128 | /* Update the IRQ state based on all possible causes */ |
| 157 | | static void update_irq_state(running_machine *machine) |
| 129 | static void update_irq_state( running_machine *machine ) |
| 158 | 130 | { |
| 159 | | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 131 | metro_state *state = (metro_state *)machine->driver_data; |
| 132 | const address_space *space = cpu_get_address_space(state->maincpu, ADDRESS_SPACE_PROGRAM); |
| 160 | 133 | |
| 161 | | /* Get the pending IRQs (only the enabled ones, e.g. where |
| 162 | | irq_enable is *0*) */ |
| 163 | | UINT16 irq = metro_irq_cause_r(space, 0, 0xffff) & ~*metro_irq_enable; |
| 134 | /* Get the pending IRQs (only the enabled ones, e.g. where irq_enable is *0*) */ |
| 135 | UINT16 irq = metro_irq_cause_r(space, 0, 0xffff) & ~*state->irq_enable; |
| 164 | 136 | |
| 165 | | if (irq_line == -1) /* mouja, gakusai, gakusai2, dokyusei, dokyusp */ |
| 137 | if (state->irq_line == -1) /* mouja, gakusai, gakusai2, dokyusei, dokyusp */ |
| 166 | 138 | { |
| 167 | | /* This is for games that supply an *IRQ Vector* on the data bus |
| 168 | | together with an IRQ level for each possible IRQ source */ |
| 139 | /* This is for games that supply an *IRQ Vector* on the data bus together with an IRQ level for each possible IRQ source */ |
| 140 | UINT8 irq_level[8] = { 0 }; |
| 141 | int i; |
| 169 | 142 | |
| 170 | | UINT8 irq_level[8] = { 0 }; |
| 171 | | int i = 0; |
| 172 | 143 | for (i = 0; i < 8; i++) |
| 173 | | if (irq & (1 << i)) |
| 174 | | irq_level[metro_irq_levels[i] & 7] = 1; |
| 144 | if (BIT(irq, i)) |
| 145 | irq_level[state->irq_levels[i] & 7] = 1; |
| 146 | |
| 175 | 147 | for (i = 0; i < 8; i++) |
| 176 | | cputag_set_input_line(machine, "maincpu", i, irq_level[i] ? ASSERT_LINE : CLEAR_LINE); |
| 148 | cpu_set_input_line(state->maincpu, i, irq_level[i] ? ASSERT_LINE : CLEAR_LINE); |
| 177 | 149 | } |
| 178 | 150 | else |
| 179 | 151 | { |
| 180 | | /* This is for games where every IRQ source generates the same |
| 181 | | IRQ level. The interrupt service routine then reads the actual |
| 182 | | source by peeking a register (metro_irq_cause_r) */ |
| 152 | /* This is for games where every IRQ source generates the same IRQ level. The interrupt service routine |
| 153 | then reads the actual source by peeking a register (metro_irq_cause_r) */ |
| 183 | 154 | |
| 184 | | int state = (irq ? ASSERT_LINE : CLEAR_LINE); |
| 185 | | cputag_set_input_line(machine, "maincpu", irq_line, state); |
| 155 | int irq_state = (irq ? ASSERT_LINE : CLEAR_LINE); |
| 156 | cpu_set_input_line(state->maincpu, state->irq_line, irq_state); |
| 186 | 157 | } |
| 187 | 158 | } |
| 188 | 159 | |
| 189 | 160 | |
| 190 | 161 | /* For games that supply an *IRQ Vector* on the data bus */ |
| 191 | | static IRQ_CALLBACK(metro_irq_callback) |
| 162 | static IRQ_CALLBACK( metro_irq_callback ) |
| 192 | 163 | { |
| 193 | | // logerror("%s: irq callback returns %04X\n",cpuexec_describe_context(device->machine),metro_irq_vectors[int_level]); |
| 194 | | return metro_irq_vectors[irqline] & 0xff; |
| 195 | | } |
| 164 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 196 | 165 | |
| 197 | | static MACHINE_RESET( metro ) |
| 198 | | { |
| 199 | | if (irq_line == -1) |
| 200 | | cpu_set_irq_callback(devtag_get_device(machine, "maincpu"), metro_irq_callback); |
| 166 | // logerror("%s: irq callback returns %04X\n", cpuexec_describe_context(device->machine), state->irq_vectors[int_level]); |
| 167 | return state->irq_vectors[irqline] & 0xff; |
| 201 | 168 | } |
| 202 | 169 | |
| 203 | 170 | |
| 204 | 171 | static WRITE16_HANDLER( metro_irq_cause_w ) |
| 205 | 172 | { |
| 206 | | //if (data & ~0x15) logerror("CPU #0 PC %06X : unknown bits of irqcause written: %04X\n",cpu_get_pc(space->cpu),data); |
| 173 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 207 | 174 | |
| 175 | //if (data & ~0x15) logerror("CPU #0 PC %06X : unknown bits of irqcause written: %04X\n", cpu_get_pc(space->cpu), data); |
| 176 | |
| 208 | 177 | if (ACCESSING_BITS_0_7) |
| 209 | 178 | { |
| 210 | | data &= ~*metro_irq_enable; |
| 179 | data &= ~*state->irq_enable; |
| 211 | 180 | |
| 212 | | if (data & 0x01) requested_int[0] = 0; |
| 213 | | if (data & 0x02) requested_int[1] = 0; // DAITORIDE, BALCUBE, KARATOUR, MOUJA |
| 214 | | if (data & 0x04) requested_int[2] = 0; |
| 215 | | if (data & 0x08) requested_int[3] = 0; // KARATOUR |
| 216 | | if (data & 0x10) requested_int[4] = 0; |
| 217 | | if (data & 0x20) requested_int[5] = 0; // KARATOUR, BLZNTRND |
| 218 | | if (data & 0x40) requested_int[6] = 0; |
| 219 | | if (data & 0x80) requested_int[7] = 0; |
| 181 | if (BIT(data, 0)) state->requested_int[0] = 0; |
| 182 | if (BIT(data, 1)) state->requested_int[1] = 0; // DAITORIDE, BALCUBE, KARATOUR, MOUJA |
| 183 | if (BIT(data, 2)) state->requested_int[2] = 0; |
| 184 | if (BIT(data, 3)) state->requested_int[3] = 0; // KARATOUR |
| 185 | if (BIT(data, 4)) state->requested_int[4] = 0; |
| 186 | if (BIT(data, 5)) state->requested_int[5] = 0; // KARATOUR, BLZNTRND |
| 187 | if (BIT(data, 6)) state->requested_int[6] = 0; |
| 188 | if (BIT(data, 7)) state->requested_int[7] = 0; |
| 220 | 189 | } |
| 221 | 190 | |
| 222 | 191 | update_irq_state(space->machine); |
| r7640 | r7641 | |
| 225 | 194 | |
| 226 | 195 | static INTERRUPT_GEN( metro_interrupt ) |
| 227 | 196 | { |
| 228 | | switch ( cpu_getiloops(device) ) |
| 197 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 198 | |
| 199 | switch (cpu_getiloops(device)) |
| 229 | 200 | { |
| 230 | 201 | case 0: |
| 231 | | requested_int[0] = 1; |
| 202 | state->requested_int[0] = 1; |
| 232 | 203 | update_irq_state(device->machine); |
| 233 | 204 | break; |
| 234 | 205 | |
| 235 | 206 | default: |
| 236 | | requested_int[4] = 1; |
| 207 | state->requested_int[4] = 1; |
| 237 | 208 | update_irq_state(device->machine); |
| 238 | 209 | break; |
| 239 | 210 | } |
| r7640 | r7641 | |
| 242 | 213 | /* Lev 1. Lev 2 seems sound related */ |
| 243 | 214 | static INTERRUPT_GEN( bangball_interrupt ) |
| 244 | 215 | { |
| 245 | | requested_int[0] = 1; // set scroll regs if a flag is set |
| 246 | | requested_int[4] = 1; // clear that flag |
| 216 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 217 | |
| 218 | state->requested_int[0] = 1; // set scroll regs if a flag is set |
| 219 | state->requested_int[4] = 1; // clear that flag |
| 247 | 220 | update_irq_state(device->machine); |
| 248 | 221 | } |
| 249 | 222 | |
| 223 | static INTERRUPT_GEN( msgogo_interrupt ) |
| 224 | { |
| 225 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 250 | 226 | |
| 227 | switch (cpu_getiloops(device)) |
| 228 | { |
| 229 | case 10: |
| 230 | state->requested_int[0] = 1; |
| 231 | update_irq_state(device->machine); |
| 232 | break; |
| 233 | |
| 234 | case 224: |
| 235 | state->requested_int[4] = 1; |
| 236 | update_irq_state(device->machine); |
| 237 | break; |
| 238 | } |
| 239 | } |
| 240 | |
| 241 | |
| 251 | 242 | static TIMER_CALLBACK( vblank_end_callback ) |
| 252 | 243 | { |
| 253 | | requested_int[5] = param; |
| 244 | metro_state *state = (metro_state *)machine->driver_data; |
| 245 | state->requested_int[5] = param; |
| 254 | 246 | } |
| 255 | 247 | |
| 256 | 248 | /* lev 2-7 (lev 1 seems sound related) */ |
| 257 | 249 | static INTERRUPT_GEN( karatour_interrupt ) |
| 258 | 250 | { |
| 259 | | switch ( cpu_getiloops(device) ) |
| 251 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 252 | |
| 253 | switch (cpu_getiloops(device)) |
| 260 | 254 | { |
| 261 | 255 | case 0: |
| 262 | | requested_int[0] = 1; |
| 263 | | requested_int[5] = 1; // write the scroll registers |
| 256 | state->requested_int[0] = 1; |
| 257 | state->requested_int[5] = 1; // write the scroll registers |
| 264 | 258 | /* the duration is a guess */ |
| 265 | 259 | timer_set(device->machine, ATTOTIME_IN_USEC(2500), NULL, 0, vblank_end_callback); |
| 266 | 260 | update_irq_state(device->machine); |
| 267 | 261 | break; |
| 268 | 262 | |
| 269 | 263 | default: |
| 270 | | requested_int[4] = 1; |
| 264 | state->requested_int[4] = 1; |
| 271 | 265 | update_irq_state(device->machine); |
| 272 | 266 | break; |
| 273 | 267 | } |
| 274 | 268 | } |
| 275 | 269 | |
| 276 | | static emu_timer *mouja_irq_timer; |
| 277 | 270 | |
| 278 | 271 | static TIMER_CALLBACK( mouja_irq_callback ) |
| 279 | 272 | { |
| 280 | | requested_int[0] = 1; |
| 273 | metro_state *state = (metro_state *)machine->driver_data; |
| 274 | |
| 275 | state->requested_int[0] = 1; |
| 281 | 276 | update_irq_state(machine); |
| 282 | 277 | } |
| 283 | 278 | |
| 284 | 279 | static WRITE16_HANDLER( mouja_irq_timer_ctrl_w ) |
| 285 | 280 | { |
| 281 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 286 | 282 | double freq = 58.0 + (0xff - (data & 0xff)) / 2.2; /* 0xff=58Hz, 0x80=116Hz? */ |
| 287 | | timer_adjust_periodic(mouja_irq_timer, attotime_zero, 0, ATTOTIME_IN_HZ(freq)); |
| 283 | |
| 284 | timer_adjust_periodic(state->mouja_irq_timer, attotime_zero, 0, ATTOTIME_IN_HZ(freq)); |
| 288 | 285 | } |
| 289 | 286 | |
| 290 | 287 | static INTERRUPT_GEN( mouja_interrupt ) |
| 291 | 288 | { |
| 292 | | requested_int[1] = 1; |
| 289 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 290 | |
| 291 | state->requested_int[1] = 1; |
| 293 | 292 | update_irq_state(device->machine); |
| 294 | 293 | } |
| 295 | 294 | |
| 296 | 295 | |
| 297 | 296 | static INTERRUPT_GEN( gakusai_interrupt ) |
| 298 | 297 | { |
| 299 | | switch ( cpu_getiloops(device) ) |
| 298 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 299 | |
| 300 | switch (cpu_getiloops(device)) |
| 300 | 301 | { |
| 301 | 302 | case 0: |
| 302 | | requested_int[1] = 1; |
| 303 | state->requested_int[1] = 1; |
| 303 | 304 | update_irq_state(device->machine); |
| 304 | 305 | break; |
| 305 | 306 | } |
| r7640 | r7641 | |
| 307 | 308 | |
| 308 | 309 | static INTERRUPT_GEN( dokyusei_interrupt ) |
| 309 | 310 | { |
| 310 | | switch ( cpu_getiloops(device) ) |
| 311 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 312 | |
| 313 | switch (cpu_getiloops(device)) |
| 311 | 314 | { |
| 312 | 315 | case 0: |
| 313 | | requested_int[1] = 1; |
| 316 | state->requested_int[1] = 1; |
| 314 | 317 | update_irq_state(device->machine); |
| 315 | 318 | break; |
| 316 | 319 | case 1: // needed? |
| 317 | | requested_int[5] = 1; |
| 320 | state->requested_int[5] = 1; |
| 318 | 321 | update_irq_state(device->machine); |
| 319 | 322 | break; |
| 320 | 323 | } |
| 321 | 324 | } |
| 322 | 325 | |
| 323 | | static void ymf278b_interrupt(running_device *device, int active) |
| 326 | static void ymf278b_interrupt( running_device *device, int active ) |
| 324 | 327 | { |
| 325 | | cputag_set_input_line(device->machine, "maincpu", 2, active); |
| 328 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 329 | cpu_set_input_line(state->maincpu, 2, active); |
| 326 | 330 | } |
| 327 | 331 | |
| 328 | 332 | /*************************************************************************** |
| r7640 | r7641 | |
| 333 | 337 | |
| 334 | 338 | ***************************************************************************/ |
| 335 | 339 | |
| 336 | | static UINT16 metro_soundstatus; |
| 337 | | static int porta, portb, busy_sndcpu; |
| 338 | | |
| 339 | | static int metro_io_callback(running_device *device, int ioline, int state) |
| 340 | static int metro_io_callback( running_device *device, int ioline, int state ) |
| 340 | 341 | { |
| 341 | | const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 342 | | |
| 342 | metro_state *driver_state = (metro_state *)device->machine->driver_data; |
| 343 | const address_space *space = cpu_get_address_space(driver_state->maincpu, ADDRESS_SPACE_PROGRAM); |
| 343 | 344 | UINT8 data = 0; |
| 344 | 345 | |
| 345 | | switch ( ioline ) |
| 346 | switch (ioline) |
| 346 | 347 | { |
| 347 | 348 | case UPD7810_RXD: /* read the RxD line */ |
| 348 | | data = soundlatch_r(space,0); |
| 349 | data = soundlatch_r(space, 0); |
| 349 | 350 | state = data & 1; |
| 350 | 351 | soundlatch_w(space, 0, data >> 1); |
| 351 | 352 | break; |
| r7640 | r7641 | |
| 358 | 359 | |
| 359 | 360 | static WRITE16_HANDLER( metro_soundlatch_w ) |
| 360 | 361 | { |
| 362 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 363 | |
| 361 | 364 | if (ACCESSING_BITS_0_7) |
| 362 | 365 | { |
| 363 | | soundlatch_w(space,0,data & 0xff); |
| 364 | | cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE); |
| 366 | soundlatch_w(space, 0, data & 0xff); |
| 367 | cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE); |
| 365 | 368 | cpu_spinuntil_int(space->cpu); |
| 366 | | busy_sndcpu = 1; |
| 369 | state->busy_sndcpu = 1; |
| 367 | 370 | } |
| 368 | 371 | } |
| 369 | 372 | |
| 370 | 373 | |
| 371 | 374 | static READ16_HANDLER( metro_soundstatus_r ) |
| 372 | 375 | { |
| 373 | | return (busy_sndcpu ? 0x00 : 0x01); |
| 376 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 377 | return (state->busy_sndcpu ? 0x00 : 0x01); |
| 374 | 378 | } |
| 375 | 379 | |
| 376 | 380 | static CUSTOM_INPUT( custom_soundstatus_r ) |
| 377 | 381 | { |
| 378 | | return (busy_sndcpu ? 0x01 : 0x00); |
| 382 | metro_state *state = (metro_state *)field->port->machine->driver_data; |
| 383 | return (state->busy_sndcpu ? 0x01 : 0x00); |
| 379 | 384 | } |
| 380 | 385 | |
| 381 | 386 | static WRITE16_HANDLER( metro_soundstatus_w ) |
| 382 | 387 | { |
| 388 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 389 | |
| 383 | 390 | if (ACCESSING_BITS_0_7) |
| 384 | | metro_soundstatus = data & 0x01; |
| 391 | state->soundstatus = data & 0x01; |
| 385 | 392 | } |
| 386 | 393 | |
| 387 | 394 | |
| r7640 | r7641 | |
| 410 | 417 | |
| 411 | 418 | static READ8_HANDLER( metro_porta_r ) |
| 412 | 419 | { |
| 413 | | return porta; |
| 420 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 421 | return state->porta; |
| 414 | 422 | } |
| 415 | 423 | |
| 416 | 424 | static WRITE8_HANDLER( metro_porta_w ) |
| 417 | 425 | { |
| 418 | | porta = data; |
| 426 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 427 | state->porta = data; |
| 419 | 428 | } |
| 420 | 429 | |
| 421 | 430 | static WRITE8_HANDLER( metro_portb_w ) |
| r7640 | r7641 | |
| 431 | 440 | 0 |
| 432 | 441 | */ |
| 433 | 442 | |
| 434 | | if (BIT(portb,7) && !BIT(data,7)) /* clock 1->0 */ |
| 443 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 444 | |
| 445 | if (BIT(state->portb, 7) && !BIT(data, 7)) /* clock 1->0 */ |
| 435 | 446 | { |
| 436 | | busy_sndcpu = 0; |
| 437 | | portb = data; |
| 447 | state->busy_sndcpu = 0; |
| 448 | state->portb = data; |
| 438 | 449 | return; |
| 439 | 450 | } |
| 440 | 451 | |
| 441 | | if (BIT(portb,5) && !BIT(data,5)) /* clock 1->0 */ |
| 452 | if (BIT(state->portb, 5) && !BIT(data, 5)) /* clock 1->0 */ |
| 442 | 453 | { |
| 443 | | if (!BIT(data,2)) |
| 454 | if (!BIT(data, 2)) |
| 444 | 455 | { |
| 445 | | running_device *ym = devtag_get_device(space->machine, "ymsnd"); |
| 446 | | ym2413_w(ym,BIT(data,1),porta); |
| 456 | ym2413_w(state->ymsnd, BIT(data, 1), state->porta); |
| 447 | 457 | } |
| 448 | | portb = data; |
| 458 | state->portb = data; |
| 449 | 459 | return; |
| 450 | 460 | } |
| 451 | 461 | |
| 452 | | if (BIT(portb,2) && !BIT(data,2)) /* clock 1->0 */ |
| 462 | if (BIT(state->portb, 2) && !BIT(data, 2)) /* clock 1->0 */ |
| 453 | 463 | { |
| 454 | 464 | /* write */ |
| 455 | | if (!BIT(data,4)) |
| 456 | | okim6295_w(devtag_get_device(space->machine, "oki"),0,porta); |
| 465 | if (!BIT(data, 4)) |
| 466 | okim6295_w(state->oki, 0, state->porta); |
| 457 | 467 | } |
| 458 | | portb = data; |
| 468 | |
| 469 | state->portb = data; |
| 459 | 470 | } |
| 460 | 471 | |
| 461 | 472 | |
| r7640 | r7641 | |
| 471 | 482 | 1 select YM2151 register or data port |
| 472 | 483 | 0 |
| 473 | 484 | */ |
| 485 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 474 | 486 | |
| 475 | | if (BIT(portb,7) && !BIT(data,7)) /* clock 1->0 */ |
| 487 | if (BIT(state->portb, 7) && !BIT(data, 7)) /* clock 1->0 */ |
| 476 | 488 | { |
| 477 | | busy_sndcpu = 0; |
| 478 | | portb = data; |
| 489 | state->busy_sndcpu = 0; |
| 490 | state->portb = data; |
| 479 | 491 | return; |
| 480 | 492 | } |
| 481 | 493 | |
| 482 | | if (BIT(portb,6) && !BIT(data,6)) /* clock 1->0 */ |
| 494 | if (BIT(state->portb, 6) && !BIT(data, 6)) /* clock 1->0 */ |
| 483 | 495 | { |
| 484 | | running_device *ym = devtag_get_device(space->machine, "ymsnd"); |
| 485 | | if (!BIT(data,2)) |
| 496 | if (!BIT(data, 2)) |
| 486 | 497 | { |
| 487 | 498 | /* write */ |
| 488 | | ym2151_w(ym,BIT(data,1),porta); |
| 499 | ym2151_w(state->ymsnd, BIT(data, 1), state->porta); |
| 489 | 500 | } |
| 490 | | if (!BIT(data,3)) |
| 501 | |
| 502 | if (!BIT(data, 3)) |
| 491 | 503 | { |
| 492 | 504 | /* read */ |
| 493 | | porta = ym2151_r(ym,BIT(data,1)); |
| 505 | state->porta = ym2151_r(state->ymsnd, BIT(data, 1)); |
| 494 | 506 | } |
| 495 | | portb = data; |
| 507 | |
| 508 | state->portb = data; |
| 496 | 509 | return; |
| 497 | 510 | } |
| 498 | 511 | |
| 499 | | if (BIT(portb,2) && !BIT(data,2)) /* clock 1->0 */ |
| 512 | if (BIT(state->portb, 2) && !BIT(data, 2)) /* clock 1->0 */ |
| 500 | 513 | { |
| 501 | 514 | /* write */ |
| 502 | | if (!BIT(data,4)) |
| 503 | | okim6295_w(devtag_get_device(space->machine, "oki"),0,porta); |
| 515 | if (!BIT(data, 4)) |
| 516 | okim6295_w(state->oki, 0, state->porta); |
| 504 | 517 | } |
| 505 | | if (BIT(portb,3) && !BIT(data,3)) /* clock 1->0 */ |
| 518 | |
| 519 | if (BIT(state->portb, 3) && !BIT(data, 3)) /* clock 1->0 */ |
| 506 | 520 | { |
| 507 | 521 | /* read */ |
| 508 | | if (!BIT(data,4)) |
| 509 | | porta = okim6295_r(devtag_get_device(space->machine, "oki"),0); |
| 522 | if (!BIT(data, 4)) |
| 523 | state->porta = okim6295_r(state->oki, 0); |
| 510 | 524 | } |
| 511 | | portb = data; |
| 525 | |
| 526 | state->portb = data; |
| 512 | 527 | } |
| 513 | 528 | |
| 514 | | static void metro_sound_irq_handler(running_device *device, int state) |
| 529 | static void metro_sound_irq_handler( running_device *device, int state ) |
| 515 | 530 | { |
| 516 | | cputag_set_input_line(device->machine, "audiocpu", UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE); |
| 531 | metro_state *driver_state = (metro_state *)device->machine->driver_data; |
| 532 | cpu_set_input_line(driver_state->audiocpu, UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE); |
| 517 | 533 | } |
| 518 | 534 | |
| 519 | 535 | static const ym2151_interface ym2151_config = |
| r7640 | r7641 | |
| 545 | 561 | // coin_lockout_w(space->machine, 0, data & 1); |
| 546 | 562 | // coin_lockout_w(space->machine, 1, data & 2); |
| 547 | 563 | } |
| 548 | | if (data & ~3) logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n",cpu_get_pc(space->cpu),data); |
| 564 | if (data & ~3) logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n", cpu_get_pc(space->cpu), data); |
| 549 | 565 | } |
| 550 | 566 | |
| 551 | 567 | |
| 552 | 568 | static WRITE16_HANDLER( metro_coin_lockout_4words_w ) |
| 553 | 569 | { |
| 554 | | // coin_lockout_w( space->machine, (offset >> 1) & 1, offset & 1 ); |
| 555 | | if (data & ~1) logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n",cpu_get_pc(space->cpu),data); |
| 570 | // coin_lockout_w(space->machine, (offset >> 1) & 1, offset & 1); |
| 571 | if (data & ~1) logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n", cpu_get_pc(space->cpu), data); |
| 556 | 572 | } |
| 557 | 573 | |
| 558 | 574 | |
| r7640 | r7641 | |
| 574 | 590 | that the blitter can readily use (which is a form of compression) |
| 575 | 591 | */ |
| 576 | 592 | |
| 577 | | static UINT16 *metro_rombank; |
| 578 | | |
| 579 | 593 | static READ16_HANDLER( metro_bankedrom_r ) |
| 580 | 594 | { |
| 581 | | UINT8 *ROM = memory_region( space->machine, "gfx1" ); |
| 582 | | size_t len = memory_region_length( space->machine, "gfx1" ); |
| 595 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 596 | UINT8 *ROM = memory_region(space->machine, "gfx1"); |
| 597 | size_t len = memory_region_length(space->machine, "gfx1"); |
| 583 | 598 | |
| 584 | | offset = offset * 2 + 0x10000 * (*metro_rombank); |
| 599 | offset = offset * 2 + 0x10000 * (*state->rombank); |
| 585 | 600 | |
| 586 | | if ( offset < len ) return ((ROM[offset+0]<<8)+ROM[offset+1]); |
| 587 | | else return 0xffff; |
| 601 | if (offset < len) |
| 602 | return ((ROM[offset + 0] << 8) + ROM[offset + 1]); |
| 603 | else |
| 604 | return 0xffff; |
| 588 | 605 | } |
| 589 | 606 | |
| 590 | 607 | |
| r7640 | r7641 | |
| 636 | 653 | |
| 637 | 654 | ***************************************************************************/ |
| 638 | 655 | |
| 639 | | static UINT16 *metro_blitter_regs; |
| 640 | | |
| 641 | 656 | static TIMER_CALLBACK( metro_blit_done ) |
| 642 | 657 | { |
| 643 | | requested_int[blitter_bit] = 1; |
| 658 | metro_state *state = (metro_state *)machine->driver_data; |
| 659 | state->requested_int[state->blitter_bit] = 1; |
| 644 | 660 | update_irq_state(machine); |
| 645 | 661 | } |
| 646 | 662 | |
| 647 | | INLINE int blt_read(const UINT8 *ROM, const int offs) |
| 663 | INLINE int blt_read( const UINT8 *ROM, const int offs ) |
| 648 | 664 | { |
| 649 | 665 | return ROM[offs]; |
| 650 | 666 | } |
| 651 | 667 | |
| 652 | | INLINE void blt_write(const address_space *space, const int tmap, const offs_t offs, const UINT16 data, const UINT16 mask) |
| 668 | INLINE void blt_write( const address_space *space, const int tmap, const offs_t offs, const UINT16 data, const UINT16 mask ) |
| 653 | 669 | { |
| 654 | | switch( tmap ) |
| 670 | switch(tmap) |
| 655 | 671 | { |
| 656 | | case 1: metro_vram_0_w(space,offs,data,mask); break; |
| 657 | | case 2: metro_vram_1_w(space,offs,data,mask); break; |
| 658 | | case 3: metro_vram_2_w(space,offs,data,mask); break; |
| 672 | case 1: metro_vram_0_w(space, offs, data, mask); break; |
| 673 | case 2: metro_vram_1_w(space, offs, data, mask); break; |
| 674 | case 3: metro_vram_2_w(space, offs, data, mask); break; |
| 659 | 675 | } |
| 660 | | // logerror("%s : Blitter %X] %04X <- %04X & %04X\n",cpuexec_describe_context(space->machine),tmap,offs,data,mask); |
| 676 | // logerror("%s : Blitter %X] %04X <- %04X & %04X\n", cpuexec_describe_context(space->machine), tmap, offs, data, mask); |
| 661 | 677 | } |
| 662 | 678 | |
| 663 | 679 | |
| 664 | 680 | static WRITE16_HANDLER( metro_blitter_w ) |
| 665 | 681 | { |
| 666 | | COMBINE_DATA( &metro_blitter_regs[offset] ); |
| 682 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 683 | COMBINE_DATA(&state->blitter_regs[offset]); |
| 667 | 684 | |
| 668 | | if (offset == 0xC/2) |
| 685 | if (offset == 0x0c / 2) |
| 669 | 686 | { |
| 670 | | UINT8 *src = memory_region(space->machine, "gfx1"); |
| 671 | | size_t src_len = memory_region_length(space->machine, "gfx1"); |
| 687 | UINT8 *src = memory_region(space->machine, "gfx1"); |
| 688 | size_t src_len = memory_region_length(space->machine, "gfx1"); |
| 672 | 689 | |
| 673 | | UINT32 tmap = (metro_blitter_regs[ 0x00 / 2 ] << 16 ) + |
| 674 | | metro_blitter_regs[ 0x02 / 2 ]; |
| 675 | | UINT32 src_offs = (metro_blitter_regs[ 0x04 / 2 ] << 16 ) + |
| 676 | | metro_blitter_regs[ 0x06 / 2 ]; |
| 677 | | UINT32 dst_offs = (metro_blitter_regs[ 0x08 / 2 ] << 16 ) + |
| 678 | | metro_blitter_regs[ 0x0a / 2 ]; |
| 690 | UINT32 tmap = (state->blitter_regs[0x00 / 2] << 16) + state->blitter_regs[0x02 / 2]; |
| 691 | UINT32 src_offs = (state->blitter_regs[0x04 / 2] << 16) + state->blitter_regs[0x06 / 2]; |
| 692 | UINT32 dst_offs = (state->blitter_regs[0x08 / 2] << 16) + state->blitter_regs[0x0a / 2]; |
| 679 | 693 | |
| 680 | | int shift = (dst_offs & 0x80) ? 0 : 8; |
| 681 | | UINT16 mask = (dst_offs & 0x80) ? 0x00ff : 0xff00; |
| 694 | int shift = (dst_offs & 0x80) ? 0 : 8; |
| 695 | UINT16 mask = (dst_offs & 0x80) ? 0x00ff : 0xff00; |
| 682 | 696 | |
| 683 | | // logerror("CPU #0 PC %06X : Blitter regs %08X, %08X, %08X\n",cpu_get_pc(space->cpu),tmap,src_offs,dst_offs); |
| 697 | // logerror("CPU #0 PC %06X : Blitter regs %08X, %08X, %08X\n", cpu_get_pc(space->cpu), tmap, src_offs, dst_offs); |
| 684 | 698 | |
| 685 | | dst_offs >>= 7+1; |
| 686 | | switch( tmap ) |
| 699 | dst_offs >>= 7 + 1; |
| 700 | switch (tmap) |
| 687 | 701 | { |
| 688 | 702 | case 1: |
| 689 | 703 | case 2: |
| 690 | 704 | case 3: |
| 691 | 705 | break; |
| 692 | 706 | default: |
| 693 | | logerror("CPU #0 PC %06X : Blitter unknown destination: %08X\n",cpu_get_pc(space->cpu),tmap); |
| 707 | logerror("CPU #0 PC %06X : Blitter unknown destination: %08X\n", cpu_get_pc(space->cpu), tmap); |
| 694 | 708 | return; |
| 695 | 709 | } |
| 696 | 710 | |
| 697 | 711 | while (1) |
| 698 | 712 | { |
| 699 | | UINT16 b1,b2,count; |
| 713 | UINT16 b1, b2, count; |
| 700 | 714 | |
| 701 | 715 | src_offs %= src_len; |
| 702 | | b1 = blt_read(src,src_offs); |
| 703 | | // logerror("CPU #0 PC %06X : Blitter opcode %02X at %06X\n",cpu_get_pc(space->cpu),b1,src_offs); |
| 716 | b1 = blt_read(src, src_offs); |
| 717 | // logerror("CPU #0 PC %06X : Blitter opcode %02X at %06X\n", cpu_get_pc(space->cpu), b1, src_offs); |
| 704 | 718 | src_offs++; |
| 705 | 719 | |
| 706 | 720 | count = ((~b1) & 0x3f) + 1; |
| 707 | 721 | |
| 708 | | switch( (b1 & 0xc0) >> 6 ) |
| 722 | switch ((b1 & 0xc0) >> 6) |
| 709 | 723 | { |
| 710 | | case 0: |
| 711 | | |
| 712 | | /* Stop and Generate an IRQ. We can't generate it now |
| 724 | case 0: |
| 725 | /* Stop and Generate an IRQ. We can't generate it now |
| 713 | 726 | both because it's unlikely that the blitter is so |
| 714 | 727 | fast and because some games (e.g. lastfort) need to |
| 715 | 728 | complete the blitter irq service routine before doing |
| 716 | 729 | another blit. */ |
| 717 | | if (b1 == 0) |
| 718 | | { |
| 719 | | timer_set(space->machine, ATTOTIME_IN_USEC(500), NULL,0,metro_blit_done); |
| 720 | | return; |
| 721 | | } |
| 730 | if (b1 == 0) |
| 731 | { |
| 732 | timer_set(space->machine, ATTOTIME_IN_USEC(500), NULL, 0, metro_blit_done); |
| 733 | return; |
| 734 | } |
| 722 | 735 | |
| 723 | | /* Copy */ |
| 724 | | while (count--) |
| 725 | | { |
| 726 | | src_offs %= src_len; |
| 727 | | b2 = blt_read(src,src_offs) << shift; |
| 728 | | src_offs++; |
| 729 | | |
| 730 | | dst_offs &= 0xffff; |
| 731 | | blt_write(space,tmap,dst_offs,b2,mask); |
| 732 | | dst_offs = ((dst_offs+1) & (0x100-1)) | (dst_offs & (~(0x100-1))); |
| 733 | | } |
| 734 | | break; |
| 735 | | |
| 736 | | |
| 737 | | case 1: |
| 738 | | |
| 739 | | /* Fill with an increasing value */ |
| 736 | /* Copy */ |
| 737 | while (count--) |
| 738 | { |
| 740 | 739 | src_offs %= src_len; |
| 741 | | b2 = blt_read(src,src_offs); |
| 740 | b2 = blt_read(src, src_offs) << shift; |
| 742 | 741 | src_offs++; |
| 743 | 742 | |
| 744 | | while (count--) |
| 745 | | { |
| 746 | | dst_offs &= 0xffff; |
| 747 | | blt_write(space,tmap,dst_offs,b2<<shift,mask); |
| 748 | | dst_offs = ((dst_offs+1) & (0x100-1)) | (dst_offs & (~(0x100-1))); |
| 749 | | b2++; |
| 750 | | } |
| 751 | | break; |
| 743 | dst_offs &= 0xffff; |
| 744 | blt_write(space, tmap, dst_offs, b2, mask); |
| 745 | dst_offs = ((dst_offs + 1) & (0x100 - 1)) | (dst_offs & (~(0x100 - 1))); |
| 746 | } |
| 747 | break; |
| 752 | 748 | |
| 749 | case 1: |
| 750 | /* Fill with an increasing value */ |
| 751 | src_offs %= src_len; |
| 752 | b2 = blt_read(src, src_offs); |
| 753 | src_offs++; |
| 753 | 754 | |
| 754 | | case 2: |
| 755 | while (count--) |
| 756 | { |
| 757 | dst_offs &= 0xffff; |
| 758 | blt_write(space, tmap, dst_offs, b2 << shift, mask); |
| 759 | dst_offs = ((dst_offs + 1) & (0x100 - 1)) | (dst_offs & (~(0x100 - 1))); |
| 760 | b2++; |
| 761 | } |
| 762 | break; |
| 755 | 763 | |
| 756 | | /* Fill with a fixed value */ |
| 757 | | src_offs %= src_len; |
| 758 | | b2 = blt_read(src,src_offs) << shift; |
| 759 | | src_offs++; |
| 764 | case 2: |
| 765 | /* Fill with a fixed value */ |
| 766 | src_offs %= src_len; |
| 767 | b2 = blt_read(src, src_offs) << shift; |
| 768 | src_offs++; |
| 760 | 769 | |
| 761 | | while (count--) |
| 762 | | { |
| 763 | | dst_offs &= 0xffff; |
| 764 | | blt_write(space,tmap,dst_offs,b2,mask); |
| 765 | | dst_offs = ((dst_offs+1) & (0x100-1)) | (dst_offs & (~(0x100-1))); |
| 766 | | } |
| 767 | | break; |
| 770 | while (count--) |
| 771 | { |
| 772 | dst_offs &= 0xffff; |
| 773 | blt_write(space, tmap, dst_offs, b2, mask); |
| 774 | dst_offs = ((dst_offs + 1) & (0x100 - 1)) | (dst_offs & (~(0x100 - 1))); |
| 775 | } |
| 776 | break; |
| 768 | 777 | |
| 778 | case 3: |
| 779 | /* Skip to the next line ?? */ |
| 780 | if (b1 == 0xc0) |
| 781 | { |
| 782 | dst_offs += 0x100; |
| 783 | dst_offs &= ~(0x100 - 1); |
| 784 | dst_offs |= (0x100 - 1) & (state->blitter_regs[0x0a / 2] >> (7 + 1)); |
| 785 | } |
| 786 | else |
| 787 | { |
| 788 | dst_offs += count; |
| 789 | } |
| 790 | break; |
| 769 | 791 | |
| 770 | | case 3: |
| 771 | | |
| 772 | | /* Skip to the next line ?? */ |
| 773 | | if (b1 == 0xC0) |
| 774 | | { |
| 775 | | dst_offs += 0x100; |
| 776 | | dst_offs &= ~(0x100-1); |
| 777 | | dst_offs |= (0x100-1) & (metro_blitter_regs[ 0x0a / 2 ] >> (7+1)); |
| 778 | | } |
| 779 | | else |
| 780 | | { |
| 781 | | dst_offs += count; |
| 782 | | } |
| 783 | | break; |
| 784 | | |
| 785 | | |
| 786 | | default: |
| 787 | | logerror("CPU #0 PC %06X : Blitter unknown opcode %02X at %06X\n",cpu_get_pc(space->cpu),b1,src_offs-1); |
| 788 | | return; |
| 792 | default: |
| 793 | logerror("CPU #0 PC %06X : Blitter unknown opcode %02X at %06X\n",cpu_get_pc(space->cpu),b1,src_offs-1); |
| 794 | return; |
| 789 | 795 | } |
| 790 | 796 | |
| 791 | 797 | } |
| 792 | 798 | } |
| 793 | | |
| 794 | 799 | } |
| 795 | 800 | |
| 796 | 801 | |
| r7640 | r7641 | |
| 817 | 822 | ADDRESS_MAP_END |
| 818 | 823 | |
| 819 | 824 | static ADDRESS_MAP_START( metro_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 820 | | AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r,metro_porta_w) |
| 825 | AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r, metro_porta_w) |
| 821 | 826 | AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_WRITE(metro_portb_w) |
| 822 | 827 | AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_WRITE(metro_sound_rombank_w) |
| 823 | 828 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 826 | 831 | |
| 827 | 832 | |
| 828 | 833 | static ADDRESS_MAP_START( daitorid_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 829 | | AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r,metro_porta_w) |
| 834 | AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r, metro_porta_w) |
| 830 | 835 | AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_WRITE(daitorid_portb_w) |
| 831 | 836 | AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_WRITE(daitorid_sound_rombank_w) |
| 832 | 837 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 842 | 847 | UINT16 dsw2 = input_port_read(space->machine, "DSW0") >> 8; |
| 843 | 848 | UINT16 dsw3 = input_port_read(space->machine, "IN2"); |
| 844 | 849 | |
| 845 | | switch (offset*2) |
| 850 | switch (offset * 2) |
| 846 | 851 | { |
| 847 | | case 0x1FFFC: return ((dsw1 & 0x01) ? 0x40 : 0) | ((dsw3 & 0x01) ? 0x80 : 0); |
| 848 | | case 0x1FFFA: return ((dsw1 & 0x02) ? 0x40 : 0) | ((dsw3 & 0x02) ? 0x80 : 0); |
| 849 | | case 0x1FFF6: return ((dsw1 & 0x04) ? 0x40 : 0) | ((dsw3 & 0x04) ? 0x80 : 0); |
| 850 | | case 0x1FFEE: return ((dsw1 & 0x08) ? 0x40 : 0) | ((dsw3 & 0x08) ? 0x80 : 0); |
| 851 | | case 0x1FFDE: return ((dsw1 & 0x10) ? 0x40 : 0) | ((dsw3 & 0x10) ? 0x80 : 0); |
| 852 | | case 0x1FFBE: return ((dsw1 & 0x20) ? 0x40 : 0) | ((dsw3 & 0x20) ? 0x80 : 0); |
| 853 | | case 0x1FF7E: return ((dsw1 & 0x40) ? 0x40 : 0) | ((dsw3 & 0x40) ? 0x80 : 0); |
| 854 | | case 0x1FEFE: return ((dsw1 & 0x80) ? 0x40 : 0) | ((dsw3 & 0x80) ? 0x80 : 0); |
| 852 | case 0x1FFFC: return (BIT(dsw1, 0) ? 0x40 : 0) | (BIT(dsw3, 0) ? 0x80 : 0); |
| 853 | case 0x1FFFA: return (BIT(dsw1, 1) ? 0x40 : 0) | (BIT(dsw3, 1) ? 0x80 : 0); |
| 854 | case 0x1FFF6: return (BIT(dsw1, 2) ? 0x40 : 0) | (BIT(dsw3, 2) ? 0x80 : 0); |
| 855 | case 0x1FFEE: return (BIT(dsw1, 3) ? 0x40 : 0) | (BIT(dsw3, 3) ? 0x80 : 0); |
| 856 | case 0x1FFDE: return (BIT(dsw1, 4) ? 0x40 : 0) | (BIT(dsw3, 4) ? 0x80 : 0); |
| 857 | case 0x1FFBE: return (BIT(dsw1, 5) ? 0x40 : 0) | (BIT(dsw3, 5) ? 0x80 : 0); |
| 858 | case 0x1FF7E: return (BIT(dsw1, 6) ? 0x40 : 0) | (BIT(dsw3, 6) ? 0x80 : 0); |
| 859 | case 0x1FEFE: return (BIT(dsw1, 7) ? 0x40 : 0) | (BIT(dsw3, 7) ? 0x80 : 0); |
| 855 | 860 | |
| 856 | | case 0x1FDFE: return (dsw2 & 0x01) ? 0x40 : 0; |
| 857 | | case 0x1FBFE: return (dsw2 & 0x02) ? 0x40 : 0; |
| 858 | | case 0x1F7FE: return (dsw2 & 0x04) ? 0x40 : 0; |
| 859 | | case 0x1EFFE: return (dsw2 & 0x08) ? 0x40 : 0; |
| 860 | | case 0x1DFFE: return (dsw2 & 0x10) ? 0x40 : 0; |
| 861 | | case 0x1BFFE: return (dsw2 & 0x20) ? 0x40 : 0; |
| 862 | | case 0x17FFE: return (dsw2 & 0x40) ? 0x40 : 0; |
| 863 | | case 0x0FFFE: return (dsw2 & 0x80) ? 0x40 : 0; |
| 861 | case 0x1FDFE: return BIT(dsw2, 0) ? 0x40 : 0; |
| 862 | case 0x1FBFE: return BIT(dsw2, 1) ? 0x40 : 0; |
| 863 | case 0x1F7FE: return BIT(dsw2, 2) ? 0x40 : 0; |
| 864 | case 0x1EFFE: return BIT(dsw2, 3) ? 0x40 : 0; |
| 865 | case 0x1DFFE: return BIT(dsw2, 4) ? 0x40 : 0; |
| 866 | case 0x1BFFE: return BIT(dsw2, 5) ? 0x40 : 0; |
| 867 | case 0x17FFE: return BIT(dsw2, 6) ? 0x40 : 0; |
| 868 | case 0x0FFFE: return BIT(dsw2, 7) ? 0x40 : 0; |
| 864 | 869 | } |
| 865 | | logerror("CPU #0 PC %06X : unknown dsw address read: %04X\n",cpu_get_pc(space->cpu),offset); |
| 870 | logerror("CPU #0 PC %06X : unknown dsw address read: %04X\n", cpu_get_pc(space->cpu), offset); |
| 866 | 871 | return 0xffff; |
| 867 | 872 | } |
| 868 | 873 | |
| 869 | 874 | |
| 870 | 875 | static ADDRESS_MAP_START( balcube_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 871 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 872 | | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 876 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 877 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 873 | 878 | AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff) // Sound |
| 874 | 879 | AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff) // Sound |
| 875 | | AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r) // DSW x 3 |
| 876 | | AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs |
| 877 | | AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // |
| 878 | | AM_RANGE(0x500006, 0x500007) AM_READNOP // |
| 880 | AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r) // DSW x 3 |
| 881 | AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs |
| 882 | AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // |
| 883 | AM_RANGE(0x500006, 0x500007) AM_READNOP // |
| 879 | 884 | AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout |
| 880 | | AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 881 | | AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 882 | | AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 883 | | AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 885 | AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 886 | AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 887 | AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 888 | AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 884 | 889 | AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 885 | | AM_RANGE(0x674000, 0x674fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 886 | | AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 887 | | AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 888 | | AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 889 | | AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 890 | | AM_RANGE(0x678880, 0x678881) AM_WRITENOP // ? increasing |
| 891 | | AM_RANGE(0x678890, 0x678891) AM_WRITENOP // ? increasing |
| 892 | | AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 893 | | AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 894 | | AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 895 | | AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 896 | | AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 890 | AM_RANGE(0x674000, 0x674fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 891 | AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 892 | AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 893 | AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 894 | AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 895 | AM_RANGE(0x678880, 0x678881) AM_WRITENOP // ? increasing |
| 896 | AM_RANGE(0x678890, 0x678891) AM_WRITENOP // ? increasing |
| 897 | AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 898 | AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 899 | AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 900 | AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 901 | AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 897 | 902 | ADDRESS_MAP_END |
| 898 | 903 | |
| 899 | 904 | |
| r7640 | r7641 | |
| 903 | 908 | |
| 904 | 909 | |
| 905 | 910 | static ADDRESS_MAP_START( daitoa_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 906 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 907 | | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 911 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 912 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 908 | 913 | AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff) // Sound |
| 909 | 914 | AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff) // Sound |
| 910 | | AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3 |
| 911 | | AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0 ) // Layer 0 |
| 912 | | AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1 ) // Layer 1 |
| 913 | | AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2 ) // Layer 2 |
| 914 | | AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 915 | AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3 |
| 916 | AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 917 | AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 918 | AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 919 | AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 915 | 920 | AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 916 | | AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 917 | | AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 918 | | AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 919 | | AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 920 | | AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 921 | | AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing |
| 922 | | AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing |
| 923 | | AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 924 | | AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 925 | | AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 926 | | AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 927 | | AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 928 | | AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0") // Inputs |
| 929 | | AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1") // |
| 930 | | AM_RANGE(0x200006, 0x200007) AM_READNOP // |
| 921 | AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 922 | AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 923 | AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 924 | AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 925 | AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 926 | AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing |
| 927 | AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing |
| 928 | AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 929 | AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 930 | AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 931 | AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 932 | AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 933 | AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0") // Inputs |
| 934 | AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1") // |
| 935 | AM_RANGE(0x200006, 0x200007) AM_READNOP // |
| 931 | 936 | AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout |
| 932 | 937 | ADDRESS_MAP_END |
| 933 | 938 | |
| r7640 | r7641 | |
| 937 | 942 | ***************************************************************************/ |
| 938 | 943 | |
| 939 | 944 | static ADDRESS_MAP_START( bangball_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 940 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 941 | | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 942 | | AM_RANGE(0xf10000, 0xf10fff) AM_RAM // RAM (bug in the ram test routine) |
| 945 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 946 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 947 | AM_RANGE(0xf10000, 0xf10fff) AM_RAM // RAM (bug in the ram test routine) |
| 943 | 948 | AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff) // Sound |
| 944 | 949 | AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff) // Sound |
| 945 | | AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r) // DSW x 3 |
| 946 | | AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs |
| 947 | | AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // |
| 948 | | AM_RANGE(0xd00006, 0xd00007) AM_READNOP // |
| 950 | AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r) // DSW x 3 |
| 951 | AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs |
| 952 | AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // |
| 953 | AM_RANGE(0xd00006, 0xd00007) AM_READNOP // |
| 949 | 954 | AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout |
| 950 | | AM_RANGE(0xe00000, 0xe1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 951 | | AM_RANGE(0xe20000, 0xe3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 952 | | AM_RANGE(0xe40000, 0xe5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 953 | | AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 955 | AM_RANGE(0xe00000, 0xe1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 956 | AM_RANGE(0xe20000, 0xe3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 957 | AM_RANGE(0xe40000, 0xe5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 958 | AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 954 | 959 | AM_RANGE(0xe70000, 0xe73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 955 | | AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 956 | | AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 957 | | AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 958 | | AM_RANGE(0xe78860, 0xe7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 959 | | AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 960 | | AM_RANGE(0xe78880, 0xe78881) AM_WRITENOP // ? increasing |
| 961 | | AM_RANGE(0xe78890, 0xe78891) AM_WRITENOP // ? increasing |
| 962 | | AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 963 | | AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 964 | | AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 965 | | AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 966 | | AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 960 | AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 961 | AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 962 | AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 963 | AM_RANGE(0xe78860, 0xe7886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 964 | AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 965 | AM_RANGE(0xe78880, 0xe78881) AM_WRITENOP // ? increasing |
| 966 | AM_RANGE(0xe78890, 0xe78891) AM_WRITENOP // ? increasing |
| 967 | AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 968 | AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 969 | AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 970 | AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 971 | AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 967 | 972 | ADDRESS_MAP_END |
| 968 | 973 | |
| 969 | 974 | |
| r7640 | r7641 | |
| 972 | 977 | ***************************************************************************/ |
| 973 | 978 | |
| 974 | 979 | static ADDRESS_MAP_START( batlbubl_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 975 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 976 | | AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 977 | | AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 978 | | AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 979 | | AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 980 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 981 | AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 982 | AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 983 | AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 984 | AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 980 | 985 | AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 981 | | AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 982 | | AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 983 | | AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 984 | | AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 985 | | AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 986 | | AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing |
| 987 | | AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing |
| 988 | | AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 989 | | AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 990 | | AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 991 | | AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 992 | | AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 986 | AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 987 | AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 988 | AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 989 | AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 990 | AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 991 | AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing |
| 992 | AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing |
| 993 | AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 994 | AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 995 | AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 996 | AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 997 | AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 993 | 998 | AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") |
| 994 | 999 | AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0") |
| 995 | 1000 | AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0") |
| 996 | 1001 | AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2") |
| 997 | 1002 | AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout |
| 998 | | AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // read but ignored? |
| 999 | | AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("ymf", ymf278b_r,ymf278b_w, 0x00ff) // Sound |
| 1000 | | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 1001 | | AM_RANGE(0xf10000, 0xf10fff) AM_RAM // RAM (bug in the ram test routine) |
| 1003 | AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // read but ignored? |
| 1004 | AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff) // Sound |
| 1005 | AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff) // |
| 1006 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 1007 | AM_RANGE(0xf10000, 0xf10fff) AM_RAM // RAM (bug in the ram test routine) |
| 1002 | 1008 | ADDRESS_MAP_END |
| 1003 | 1009 | |
| 1004 | 1010 | |
| 1005 | 1011 | /*************************************************************************** |
| 1006 | | Dai Toride |
| 1012 | Mouse Shooter GoGo |
| 1007 | 1013 | ***************************************************************************/ |
| 1008 | 1014 | |
| 1015 | static ADDRESS_MAP_START( msgogo_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1016 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1017 | AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1018 | AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1019 | AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1020 | AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1021 | AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1022 | AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1023 | AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1024 | AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1025 | AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1026 | AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1027 | AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing |
| 1028 | AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing |
| 1029 | AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1030 | AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1031 | AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1032 | AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1033 | AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1034 | AM_RANGE(0x200000, 0x200001) AM_READ_PORT("COINS") // Inputs |
| 1035 | AM_RANGE(0x200002, 0x200003) AM_READ_PORT("JOYS") // |
| 1036 | AM_RANGE(0x200006, 0x200007) AM_READNOP // |
| 1037 | AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout |
| 1038 | AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // 3 x DSW |
| 1039 | AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff) // Sound |
| 1040 | AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff) // |
| 1041 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 1042 | ADDRESS_MAP_END |
| 1043 | |
| 1044 | /*************************************************************************** |
| 1045 | Daitoride |
| 1046 | ***************************************************************************/ |
| 1047 | |
| 1009 | 1048 | static ADDRESS_MAP_START( daitorid_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1010 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1011 | | AM_RANGE(0x800000, 0x80ffff) AM_RAM // RAM |
| 1012 | | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0 ) // Layer 0 |
| 1013 | | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1 ) // Layer 1 |
| 1014 | | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2 ) // Layer 2 |
| 1015 | | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1049 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1050 | AM_RANGE(0x800000, 0x80ffff) AM_RAM // RAM |
| 1051 | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1052 | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1053 | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1054 | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1016 | 1055 | AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1017 | | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1018 | | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1019 | | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1020 | | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1021 | | AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 1022 | | AM_RANGE(0x478880, 0x478881) AM_WRITENOP // ? increasing |
| 1023 | | AM_RANGE(0x478890, 0x478891) AM_WRITENOP // ? increasing |
| 1024 | | AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1025 | | AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1056 | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1057 | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1058 | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1059 | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1060 | AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1061 | AM_RANGE(0x478880, 0x478881) AM_WRITENOP // ? increasing |
| 1062 | AM_RANGE(0x478890, 0x478891) AM_WRITENOP // ? increasing |
| 1063 | AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1064 | AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1026 | 1065 | AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1027 | | AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1028 | | AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1029 | | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1030 | | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1066 | AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1067 | AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1068 | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1069 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1031 | 1070 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") |
| 1032 | 1071 | AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") |
| 1033 | 1072 | AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") |
| r7640 | r7641 | |
| 1040 | 1079 | ***************************************************************************/ |
| 1041 | 1080 | |
| 1042 | 1081 | static ADDRESS_MAP_START( dharma_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1043 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1044 | | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 1045 | | AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0 ) // Layer 0 |
| 1046 | | AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1 ) // Layer 1 |
| 1047 | | AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2 ) // Layer 2 |
| 1048 | | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1082 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1083 | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 1084 | AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1085 | AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1086 | AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1087 | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1049 | 1088 | AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1050 | | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1051 | | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size ) // Tiles Set |
| 1052 | | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1053 | | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window ) // Tilemap Window |
| 1054 | | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1055 | | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1056 | | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1057 | | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1089 | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1090 | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1091 | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1092 | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1093 | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1094 | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1095 | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1096 | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1058 | 1097 | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1059 | | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1060 | | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1061 | | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1062 | | AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1063 | | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1098 | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1099 | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1100 | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1101 | AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1102 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1064 | 1103 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") |
| 1065 | 1104 | AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") |
| 1066 | 1105 | AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") |
| r7640 | r7641 | |
| 1081 | 1120 | #define KARATOUR_VRAM( _n_ ) \ |
| 1082 | 1121 | static READ16_HANDLER( karatour_vram_##_n_##_r ) \ |
| 1083 | 1122 | { \ |
| 1084 | | return metro_vram_##_n_[KARATOUR_OFFS(offset)]; \ |
| 1123 | metro_state *state = (metro_state *)space->machine->driver_data; \ |
| 1124 | return state->vram_##_n_[KARATOUR_OFFS(offset)]; \ |
| 1085 | 1125 | } \ |
| 1086 | 1126 | static WRITE16_HANDLER( karatour_vram_##_n_##_w ) \ |
| 1087 | 1127 | { \ |
| 1088 | | metro_vram_##_n_##_w(space,KARATOUR_OFFS(offset),data,mem_mask); \ |
| 1128 | metro_vram_##_n_##_w(space, KARATOUR_OFFS(offset), data, mem_mask); \ |
| 1089 | 1129 | } |
| 1090 | 1130 | |
| 1091 | 1131 | KARATOUR_VRAM( 0 ) |
| r7640 | r7641 | |
| 1093 | 1133 | KARATOUR_VRAM( 2 ) |
| 1094 | 1134 | |
| 1095 | 1135 | static ADDRESS_MAP_START( karatour_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1096 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1097 | | AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM |
| 1098 | | AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From Sound CPU |
| 1099 | | AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs |
| 1100 | | AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1101 | | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // |
| 1102 | | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // |
| 1103 | | AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // |
| 1104 | | AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // |
| 1105 | | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1136 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1137 | AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM |
| 1138 | AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From Sound CPU |
| 1139 | AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs |
| 1140 | AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1141 | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // |
| 1142 | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // |
| 1143 | AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // |
| 1144 | AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // |
| 1145 | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1106 | 1146 | AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1107 | | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1108 | | AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r,karatour_vram_0_w) // Layer 0 (Part of) |
| 1109 | | AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r,karatour_vram_1_w) // Layer 1 (Part of) |
| 1110 | | AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r,karatour_vram_2_w) // Layer 2 (Part of) |
| 1111 | | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1112 | | AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1113 | | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1114 | | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1115 | | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 1116 | | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1117 | | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1118 | | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1119 | | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1147 | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1148 | AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of) |
| 1149 | AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of) |
| 1150 | AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of) |
| 1151 | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1152 | AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1153 | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1154 | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1155 | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1156 | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1157 | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1158 | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1159 | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1120 | 1160 | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1121 | | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1122 | | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1161 | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1162 | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1123 | 1163 | ADDRESS_MAP_END |
| 1124 | 1164 | |
| 1125 | 1165 | |
| r7640 | r7641 | |
| 1130 | 1170 | /* same limited tilemap access as karatour */ |
| 1131 | 1171 | |
| 1132 | 1172 | static ADDRESS_MAP_START( kokushi_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1133 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1134 | | AM_RANGE(0x7fc000, 0x7fffff) AM_RAM // RAM |
| 1135 | | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1173 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1174 | AM_RANGE(0x7fc000, 0x7fffff) AM_RAM // RAM |
| 1175 | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1136 | 1176 | AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1137 | | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1138 | | AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r,karatour_vram_0_w) // Layer 0 (Part of) |
| 1139 | | AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r,karatour_vram_1_w) // Layer 1 (Part of) |
| 1140 | | AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r,karatour_vram_2_w) // Layer 2 (Part of) |
| 1141 | | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1142 | | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1143 | | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1144 | | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs - WRONG |
| 1145 | | // AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1146 | | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1147 | | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1148 | | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1149 | | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1150 | | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1151 | | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1152 | | AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1177 | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1178 | AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of) |
| 1179 | AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of) |
| 1180 | AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of) |
| 1181 | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1182 | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1183 | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1184 | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs - WRONG |
| 1185 | // AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1186 | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1187 | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1188 | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1189 | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1190 | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1191 | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1192 | AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1153 | 1193 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1154 | | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs |
| 1194 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs |
| 1155 | 1195 | AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") |
| 1156 | 1196 | AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w ) // Coin Lockout |
| 1157 | 1197 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 1162 | 1202 | ***************************************************************************/ |
| 1163 | 1203 | |
| 1164 | 1204 | static ADDRESS_MAP_START( lastfort_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1165 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1166 | | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 1167 | | AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1168 | | AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1169 | | AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1170 | | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1205 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1206 | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 1207 | AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1208 | AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1209 | AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1210 | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1171 | 1211 | AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1172 | | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1173 | | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1174 | | AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1175 | | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1176 | | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1177 | | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 1178 | | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1179 | | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1180 | | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1181 | | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1212 | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1213 | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1214 | AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1215 | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1216 | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1217 | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1218 | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1219 | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1220 | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1221 | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1182 | 1222 | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1183 | | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1184 | | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1185 | | AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU |
| 1186 | | AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1187 | | AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0") // Inputs |
| 1188 | | AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1") // |
| 1189 | | AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2") // |
| 1190 | | AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW0") // |
| 1191 | | AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("DSW1") // |
| 1192 | | AM_RANGE(0xc0000e, 0xc0000f) AM_READ_PORT("IN3") // |
| 1223 | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1224 | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1225 | AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU |
| 1226 | AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1227 | AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0") // Inputs |
| 1228 | AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1") // |
| 1229 | AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2") // |
| 1230 | AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW0") // |
| 1231 | AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("DSW1") // |
| 1232 | AM_RANGE(0xc0000e, 0xc0000f) AM_READ_PORT("IN3") // |
| 1193 | 1233 | ADDRESS_MAP_END |
| 1194 | 1234 | |
| 1195 | 1235 | /* the German version is halfway between lastfort and ladykill (karatour) memory maps */ |
| 1196 | 1236 | |
| 1197 | 1237 | /* todo: clean up input reads etc. */ |
| 1198 | 1238 | static ADDRESS_MAP_START( lastforg_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1199 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1200 | | AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU |
| 1201 | | AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs |
| 1202 | | AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1203 | | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // |
| 1204 | | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // |
| 1205 | | AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // |
| 1206 | | AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // |
| 1207 | | AM_RANGE(0x880000, 0x89ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1208 | | AM_RANGE(0x8a0000, 0x8bffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1209 | | AM_RANGE(0x8c0000, 0x8dffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1210 | | AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1239 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1240 | AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU |
| 1241 | AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs |
| 1242 | AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1243 | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // |
| 1244 | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // |
| 1245 | AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // |
| 1246 | AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // |
| 1247 | AM_RANGE(0x880000, 0x89ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1248 | AM_RANGE(0x8a0000, 0x8bffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1249 | AM_RANGE(0x8c0000, 0x8dffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1250 | AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1211 | 1251 | AM_RANGE(0x8f0000, 0x8f3fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1212 | | AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1213 | | AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1214 | | AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1215 | | AM_RANGE(0x8f8840, 0x8f884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1216 | | AM_RANGE(0x8f8860, 0x8f886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1217 | | AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 1218 | | AM_RANGE(0x8f8880, 0x8f8881) AM_WRITENOP // ? increasing |
| 1219 | | AM_RANGE(0x8f8890, 0x8f8891) AM_WRITENOP // ? increasing |
| 1220 | | AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1221 | | AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1252 | AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1253 | AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1254 | AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1255 | AM_RANGE(0x8f8840, 0x8f884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1256 | AM_RANGE(0x8f8860, 0x8f886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1257 | AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1258 | AM_RANGE(0x8f8880, 0x8f8881) AM_WRITENOP // ? increasing |
| 1259 | AM_RANGE(0x8f8890, 0x8f8891) AM_WRITENOP // ? increasing |
| 1260 | AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1261 | AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1222 | 1262 | AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1223 | | AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1224 | | AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1225 | | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM |
| 1263 | AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1264 | AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1265 | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM |
| 1226 | 1266 | ADDRESS_MAP_END |
| 1227 | 1267 | |
| 1228 | 1268 | |
| r7640 | r7641 | |
| 1230 | 1270 | Mahjong Gakuensai |
| 1231 | 1271 | ***************************************************************************/ |
| 1232 | 1272 | |
| 1233 | | static int gakusai_oki_bank_lo, gakusai_oki_bank_hi; |
| 1234 | | |
| 1235 | 1273 | static void gakusai_oki_bank_set(running_device *device) |
| 1236 | 1274 | { |
| 1237 | | int bank = (gakusai_oki_bank_lo & 7) + (gakusai_oki_bank_hi & 1) * 8; |
| 1275 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 1276 | int bank = (state->gakusai_oki_bank_lo & 7) + (state->gakusai_oki_bank_hi & 1) * 8; |
| 1238 | 1277 | okim6295_set_bank_base(device, bank * 0x40000); |
| 1239 | 1278 | } |
| 1240 | 1279 | |
| 1241 | 1280 | static WRITE16_DEVICE_HANDLER( gakusai_oki_bank_hi_w ) |
| 1242 | 1281 | { |
| 1282 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 1283 | |
| 1243 | 1284 | if (ACCESSING_BITS_0_7) |
| 1244 | 1285 | { |
| 1245 | | gakusai_oki_bank_hi = data & 0xff; |
| 1286 | state->gakusai_oki_bank_hi = data & 0xff; |
| 1246 | 1287 | gakusai_oki_bank_set(device); |
| 1247 | 1288 | } |
| 1248 | 1289 | } |
| 1249 | 1290 | |
| 1250 | 1291 | static WRITE16_DEVICE_HANDLER( gakusai_oki_bank_lo_w ) |
| 1251 | 1292 | { |
| 1293 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 1294 | |
| 1252 | 1295 | if (ACCESSING_BITS_0_7) |
| 1253 | 1296 | { |
| 1254 | | gakusai_oki_bank_lo = data & 0xff; |
| 1297 | state->gakusai_oki_bank_lo = data & 0xff; |
| 1255 | 1298 | gakusai_oki_bank_set(device); |
| 1256 | 1299 | } |
| 1257 | 1300 | } |
| 1258 | 1301 | |
| 1259 | | static UINT16 *gakusai_input_sel; |
| 1260 | 1302 | |
| 1261 | 1303 | static READ16_HANDLER( gakusai_input_r ) |
| 1262 | 1304 | { |
| 1263 | | UINT16 input_sel = (*gakusai_input_sel) ^ 0x3e; |
| 1305 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 1306 | UINT16 input_sel = (*state->input_sel) ^ 0x3e; |
| 1264 | 1307 | // Bit 0 ?? |
| 1265 | 1308 | if (input_sel & 0x0002) return input_port_read(space->machine, "KEY0"); |
| 1266 | 1309 | if (input_sel & 0x0004) return input_port_read(space->machine, "KEY1"); |
| r7640 | r7641 | |
| 1280 | 1323 | if (ACCESSING_BITS_0_7) |
| 1281 | 1324 | { |
| 1282 | 1325 | // latch the bit |
| 1283 | | eeprom_write_bit(device, data & 0x01); |
| 1326 | eeprom_write_bit(device, BIT(data, 0)); |
| 1284 | 1327 | |
| 1285 | 1328 | // reset line asserted: reset. |
| 1286 | | eeprom_set_cs_line(device, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE ); |
| 1329 | eeprom_set_cs_line(device, BIT(data, 2) ? CLEAR_LINE : ASSERT_LINE ); |
| 1287 | 1330 | |
| 1288 | 1331 | // clock line asserted: write latch or select next bit to read |
| 1289 | | eeprom_set_clock_line(device, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); |
| 1332 | eeprom_set_clock_line(device, BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE ); |
| 1290 | 1333 | } |
| 1291 | 1334 | } |
| 1292 | 1335 | |
| 1293 | 1336 | static ADDRESS_MAP_START( gakusai_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1294 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1295 | | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1296 | | AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1297 | | AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1298 | | AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1299 | | AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1337 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1338 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1339 | AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1340 | AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1341 | AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1342 | AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1300 | 1343 | AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1301 | | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1302 | | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1303 | | AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_BASE(&metro_screenctrl) // Screen Control |
| 1304 | | AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_BASE(&metro_irq_levels) // IRQ Levels |
| 1305 | | AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors) // IRQ Vectors |
| 1306 | | AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1307 | | AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1344 | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1345 | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1346 | AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1347 | AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_levels) // IRQ Levels |
| 1348 | AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_vectors) // IRQ Vectors |
| 1349 | AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1350 | AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1308 | 1351 | AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs |
| 1309 | | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1352 | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1310 | 1353 | AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1311 | | AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1312 | | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1313 | | AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1314 | | AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1315 | | AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_BASE(&gakusai_input_sel) // Inputs |
| 1316 | | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1317 | | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1318 | | AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound |
| 1354 | AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1355 | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1356 | AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1357 | AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1358 | AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_BASE_MEMBER(metro_state, input_sel) // Inputs |
| 1359 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1360 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1361 | AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound |
| 1319 | 1362 | AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) |
| 1320 | | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1321 | | AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE("eeprom", gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM |
| 1363 | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1364 | AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE("eeprom", gakusai_eeprom_r, gakusai_eeprom_w) // EEPROM |
| 1322 | 1365 | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) |
| 1323 | 1366 | ADDRESS_MAP_END |
| 1324 | 1367 | |
| r7640 | r7641 | |
| 1328 | 1371 | ***************************************************************************/ |
| 1329 | 1372 | |
| 1330 | 1373 | static ADDRESS_MAP_START( gakusai2_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1331 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1332 | | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1333 | | AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1334 | | AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1335 | | AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1336 | | AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1374 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1375 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1376 | AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1377 | AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1378 | AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1379 | AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1337 | 1380 | AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1338 | | AM_RANGE(0x674000, 0x674fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1339 | | AM_RANGE(0x675000, 0x675fff) AM_RAM // Sprites? |
| 1340 | | AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1341 | | AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_BASE(&metro_screenctrl) // Screen Control |
| 1342 | | AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_BASE(&metro_irq_levels) // IRQ Levels |
| 1343 | | AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors) // IRQ Vectors |
| 1344 | | AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1345 | | AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1381 | AM_RANGE(0x674000, 0x674fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1382 | AM_RANGE(0x675000, 0x675fff) AM_RAM // Sprites? |
| 1383 | AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1384 | AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1385 | AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_levels) // IRQ Levels |
| 1386 | AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_vectors) // IRQ Vectors |
| 1387 | AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1388 | AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1346 | 1389 | AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1347 | | AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1348 | | AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1390 | AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1391 | AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1349 | 1392 | AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r) // Inputs |
| 1350 | | AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0") // |
| 1351 | | AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1352 | | AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1353 | | AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_BASE(&gakusai_input_sel) // Inputs |
| 1354 | | AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1355 | | AM_RANGE(0x800000, 0x800001) AM_WRITENOP // ? 5 |
| 1356 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound bank |
| 1393 | AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0") // |
| 1394 | AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1395 | AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1396 | AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_BASE_MEMBER(metro_state, input_sel) // Inputs |
| 1397 | AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1398 | AM_RANGE(0x800000, 0x800001) AM_WRITENOP // ? 5 |
| 1399 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound bank |
| 1357 | 1400 | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) |
| 1358 | | AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1401 | AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1359 | 1402 | AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) |
| 1360 | 1403 | AM_RANGE(0xe00000, 0xe00001) AM_DEVREADWRITE("eeprom", gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM |
| 1361 | 1404 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 1379 | 1422 | if (ACCESSING_BITS_0_7) |
| 1380 | 1423 | { |
| 1381 | 1424 | // latch the bit |
| 1382 | | eeprom_write_bit(device, data & 0x01); |
| 1425 | eeprom_write_bit(device, BIT(data, 0)); |
| 1383 | 1426 | |
| 1384 | 1427 | // clock line asserted: write latch or select next bit to read |
| 1385 | 1428 | eeprom_set_clock_line(device, CLEAR_LINE); |
| r7640 | r7641 | |
| 1392 | 1435 | if (ACCESSING_BITS_0_7) |
| 1393 | 1436 | { |
| 1394 | 1437 | // reset line asserted: reset. |
| 1395 | | eeprom_set_cs_line(device, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); |
| 1438 | eeprom_set_cs_line(device, BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE); |
| 1396 | 1439 | } |
| 1397 | 1440 | } |
| 1398 | 1441 | |
| 1399 | 1442 | static ADDRESS_MAP_START( dokyusp_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1400 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1401 | | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1402 | | AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1403 | | AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1404 | | AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1405 | | AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1443 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1444 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1445 | AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1446 | AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1447 | AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1448 | AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1406 | 1449 | AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1407 | | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1408 | | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1409 | | AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_BASE(&metro_irq_levels) // IRQ Levels |
| 1410 | | AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors) // IRQ Vectors |
| 1411 | | AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1412 | | AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1450 | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1451 | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1452 | AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_levels) // IRQ Levels |
| 1453 | AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_vectors) // IRQ Vectors |
| 1454 | AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1455 | AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1413 | 1456 | AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1414 | | AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1415 | | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1416 | | AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1417 | | AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1457 | AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1458 | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1459 | AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1460 | AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1418 | 1461 | AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs |
| 1419 | | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1420 | | AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_BASE(&gakusai_input_sel) // Inputs |
| 1421 | | AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_BASE(&metro_screenctrl) // Screen Control |
| 1422 | | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1423 | | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1424 | | AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound |
| 1462 | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1463 | AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_BASE_MEMBER(metro_state, input_sel) // Inputs |
| 1464 | AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1465 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1466 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1467 | AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound |
| 1425 | 1468 | AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) |
| 1426 | | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1427 | | AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE("eeprom", dokyusp_eeprom_reset_w) // EEPROM |
| 1428 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE("eeprom", dokyusp_eeprom_r,dokyusp_eeprom_bit_w) // EEPROM |
| 1469 | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) // Sound |
| 1470 | AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE("eeprom", dokyusp_eeprom_reset_w) // EEPROM |
| 1471 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE("eeprom", dokyusp_eeprom_r, dokyusp_eeprom_bit_w) // EEPROM |
| 1429 | 1472 | ADDRESS_MAP_END |
| 1430 | 1473 | |
| 1431 | 1474 | |
| r7640 | r7641 | |
| 1434 | 1477 | ***************************************************************************/ |
| 1435 | 1478 | |
| 1436 | 1479 | static ADDRESS_MAP_START( dokyusei_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1437 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1438 | | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1439 | | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1440 | | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1441 | | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1442 | | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1443 | | AM_RANGE(0x460000, 0x46ffff) AM_WRITENOP // DSW Selection |
| 1480 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1481 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1482 | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1483 | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1484 | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1485 | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1486 | AM_RANGE(0x460000, 0x46ffff) AM_WRITENOP // DSW Selection |
| 1444 | 1487 | AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1445 | | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1446 | | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1447 | | AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1448 | | AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_BASE(&metro_irq_levels) // IRQ Levels |
| 1449 | | AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors) // IRQ Vectors |
| 1450 | | AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1451 | | // AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r) // IRQ Cause |
| 1488 | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1489 | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1490 | AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1491 | AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_levels) // IRQ Levels |
| 1492 | AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_vectors) // IRQ Vectors |
| 1493 | AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1494 | // AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r) // IRQ Cause |
| 1452 | 1495 | AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w) // IRQ Acknowledge |
| 1453 | | AM_RANGE(0x478836, 0x478837) AM_WRITENOP // ? watchdog ? |
| 1454 | | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1455 | | AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1456 | | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1457 | | AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1458 | | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1459 | | AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_BASE(&gakusai_input_sel) // Inputs |
| 1496 | AM_RANGE(0x478836, 0x478837) AM_WRITENOP // ? watchdog ? |
| 1497 | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1498 | AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1499 | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1500 | AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1501 | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1502 | AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_BASE_MEMBER(metro_state, input_sel) // Inputs |
| 1460 | 1503 | AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r) // Inputs |
| 1461 | | AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0") // |
| 1462 | | AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // 2 x DSW |
| 1463 | | AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1") // |
| 1464 | | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) // Samples Bank? |
| 1465 | | AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4 |
| 1466 | | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Samples Bank |
| 1504 | AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0") // |
| 1505 | AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // 2 x DSW |
| 1506 | AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1") // |
| 1507 | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) // Samples Bank? |
| 1508 | AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4 |
| 1509 | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Samples Bank |
| 1467 | 1510 | AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) // |
| 1468 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1511 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) // Sound |
| 1469 | 1512 | ADDRESS_MAP_END |
| 1470 | 1513 | |
| 1471 | 1514 | |
| r7640 | r7641 | |
| 1474 | 1517 | ***************************************************************************/ |
| 1475 | 1518 | |
| 1476 | 1519 | static ADDRESS_MAP_START( pangpoms_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1477 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1478 | | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM |
| 1479 | | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1480 | | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1481 | | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1482 | | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1520 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1521 | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM |
| 1522 | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1523 | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1524 | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1525 | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1483 | 1526 | AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1484 | | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1485 | | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1486 | | AM_RANGE(0x478800, 0x478813) AM_RAM AM_BASE(&metro_videoregs) // Video Registers |
| 1487 | | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1488 | | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1489 | | AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1490 | | AM_RANGE(0x478880, 0x478881) AM_WRITENOP // ? increasing |
| 1491 | | AM_RANGE(0x478890, 0x478891) AM_WRITENOP // ? increasing |
| 1492 | | AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1493 | | AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1527 | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1528 | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1529 | AM_RANGE(0x478800, 0x478813) AM_RAM AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1530 | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1531 | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1532 | AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1533 | AM_RANGE(0x478880, 0x478881) AM_WRITENOP // ? increasing |
| 1534 | AM_RANGE(0x478890, 0x478891) AM_WRITENOP // ? increasing |
| 1535 | AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1536 | AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1494 | 1537 | AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1495 | | AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1496 | | AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1497 | | AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU |
| 1498 | | AM_RANGE(0x800002, 0x800003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1499 | | AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0") // Inputs |
| 1500 | | AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1") // |
| 1501 | | AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2") // |
| 1502 | | AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0") // |
| 1503 | | AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1") // |
| 1504 | | AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3") // |
| 1538 | AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1539 | AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1540 | AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU |
| 1541 | AM_RANGE(0x800002, 0x800003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1542 | AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0") // Inputs |
| 1543 | AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1") // |
| 1544 | AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2") // |
| 1545 | AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0") // |
| 1546 | AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1") // |
| 1547 | AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3") // |
| 1505 | 1548 | ADDRESS_MAP_END |
| 1506 | 1549 | |
| 1507 | 1550 | |
| r7640 | r7641 | |
| 1510 | 1553 | ***************************************************************************/ |
| 1511 | 1554 | |
| 1512 | 1555 | static ADDRESS_MAP_START( poitto_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1513 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1514 | | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 1515 | | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1516 | | AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1517 | | AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1518 | | AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1556 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1557 | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 1558 | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1559 | AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1560 | AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1561 | AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1519 | 1562 | AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1520 | | AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1521 | | AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1522 | | AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1523 | | AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1524 | | AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1525 | | AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1526 | | AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing |
| 1527 | | AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing |
| 1528 | | AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1529 | | AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1563 | AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1564 | AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1565 | AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1566 | AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1567 | AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1568 | AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1569 | AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing |
| 1570 | AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing |
| 1571 | AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1572 | AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1530 | 1573 | AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1531 | | AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1532 | | AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1533 | | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1574 | AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1575 | AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1576 | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1534 | 1577 | AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") |
| 1535 | 1578 | AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") |
| 1536 | 1579 | AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") |
| r7640 | r7641 | |
| 1543 | 1586 | ***************************************************************************/ |
| 1544 | 1587 | |
| 1545 | 1588 | static ADDRESS_MAP_START( skyalert_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1546 | | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1547 | | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM |
| 1548 | | AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1549 | | AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1550 | | AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1551 | | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1589 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 1590 | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM |
| 1591 | AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1592 | AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1593 | AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1594 | AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1552 | 1595 | AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1553 | | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1554 | | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1555 | | AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1556 | | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1557 | | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window ) // Tilemap Window |
| 1558 | | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 1559 | | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1560 | | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1561 | | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1562 | | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1596 | AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1597 | AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1598 | AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1599 | AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1600 | AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1601 | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1602 | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing |
| 1603 | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing |
| 1604 | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1605 | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1563 | 1606 | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1564 | | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1565 | | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1566 | | AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU |
| 1567 | | AM_RANGE(0x400002, 0x400003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1568 | | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0") // Inputs |
| 1569 | | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1") // |
| 1570 | | AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2") // |
| 1571 | | AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0") // |
| 1572 | | AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1") // |
| 1573 | | AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3") // |
| 1607 | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1608 | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1609 | AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU |
| 1610 | AM_RANGE(0x400002, 0x400003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout |
| 1611 | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0") // Inputs |
| 1612 | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1") // |
| 1613 | AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2") // |
| 1614 | AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0") // |
| 1615 | AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1") // |
| 1616 | AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3") // |
| 1574 | 1617 | ADDRESS_MAP_END |
| 1575 | 1618 | |
| 1576 | 1619 | |
| r7640 | r7641 | |
| 1579 | 1622 | ***************************************************************************/ |
| 1580 | 1623 | |
| 1581 | 1624 | static ADDRESS_MAP_START( pururun_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1582 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1583 | | AM_RANGE(0x800000, 0x80ffff) AM_RAM // RAM |
| 1584 | | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1585 | | AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1586 | | AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1587 | | AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1625 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1626 | AM_RANGE(0x800000, 0x80ffff) AM_RAM // RAM |
| 1627 | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1628 | AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1629 | AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1630 | AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1588 | 1631 | AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1589 | | AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1590 | | AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1591 | | AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1592 | | AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1593 | | AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1594 | | AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing |
| 1595 | | AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing |
| 1596 | | AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1597 | | AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1632 | AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1633 | AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1634 | AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1635 | AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1636 | AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1637 | AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing |
| 1638 | AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing |
| 1639 | AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1640 | AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1598 | 1641 | AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1599 | | AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1600 | | AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1601 | | AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1602 | | AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1642 | AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1643 | AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1644 | AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1645 | AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1603 | 1646 | AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") |
| 1604 | 1647 | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0") |
| 1605 | 1648 | AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2") |
| r7640 | r7641 | |
| 1612 | 1655 | ***************************************************************************/ |
| 1613 | 1656 | |
| 1614 | 1657 | static ADDRESS_MAP_START( toride2g_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1615 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1616 | | AM_RANGE(0x400000, 0x4cffff) AM_RAM // RAM (4xc000-4xffff mirrored?) |
| 1617 | | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1618 | | AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1619 | | AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1620 | | AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1658 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1659 | AM_RANGE(0x400000, 0x4cffff) AM_RAM // RAM (4xc000-4xffff mirrored?) |
| 1660 | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1661 | AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1662 | AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1663 | AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1621 | 1664 | AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1622 | | AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1623 | | AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1624 | | AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1625 | | AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1626 | | AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1627 | | AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing |
| 1628 | | AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing |
| 1629 | | AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1630 | | AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1665 | AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1666 | AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1667 | AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1668 | AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1669 | AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1670 | AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing |
| 1671 | AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing |
| 1672 | AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1673 | AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1631 | 1674 | AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 1632 | | AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1633 | | AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1634 | | AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1675 | AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1676 | AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1677 | AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1635 | 1678 | |
| 1636 | | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1679 | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 1637 | 1680 | AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") |
| 1638 | 1681 | AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") |
| 1639 | 1682 | AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") |
| r7640 | r7641 | |
| 1648 | 1691 | |
| 1649 | 1692 | static WRITE16_HANDLER( blzntrnd_sound_w ) |
| 1650 | 1693 | { |
| 1694 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 1695 | |
| 1651 | 1696 | soundlatch_w(space, offset, data >> 8); |
| 1652 | | cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE); |
| 1697 | cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE); |
| 1653 | 1698 | } |
| 1654 | 1699 | |
| 1655 | 1700 | static WRITE8_HANDLER( blzntrnd_sh_bankswitch_w ) |
| r7640 | r7641 | |
| 1663 | 1708 | |
| 1664 | 1709 | static void blzntrnd_irqhandler(running_device *device, int irq) |
| 1665 | 1710 | { |
| 1666 | | cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE); |
| 1711 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 1712 | cpu_set_input_line(state->audiocpu, 0, irq ? ASSERT_LINE : CLEAR_LINE); |
| 1667 | 1713 | } |
| 1668 | 1714 | |
| 1669 | 1715 | static const ym2610_interface blzntrnd_ym2610_interface = |
| r7640 | r7641 | |
| 1685 | 1731 | ADDRESS_MAP_END |
| 1686 | 1732 | |
| 1687 | 1733 | static ADDRESS_MAP_START( blzntrnd_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1688 | | AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM |
| 1689 | | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1734 | AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM |
| 1735 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1690 | 1736 | // AM_RANGE(0x300000, 0x300001) AM_READNOP // Sound |
| 1691 | | AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0) // Layer 0 |
| 1692 | | AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1) // Layer 1 |
| 1693 | | AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2) // Layer 2 |
| 1694 | | AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1695 | | AM_RANGE(0x260000, 0x26ffff) AM_WRITENOP // ?????? |
| 1737 | AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1738 | AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1739 | AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1740 | AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1741 | AM_RANGE(0x260000, 0x26ffff) AM_WRITENOP // ?????? |
| 1696 | 1742 | AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1697 | | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1698 | | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1699 | | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1700 | | AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll |
| 1701 | | AM_RANGE(0x278890, 0x278891) AM_WRITENOP // ? increasing |
| 1702 | | AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1703 | | AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1704 | | AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1705 | | AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1706 | | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1743 | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1744 | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1745 | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1746 | AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1747 | AM_RANGE(0x278890, 0x278891) AM_WRITENOP // ? increasing |
| 1748 | AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1749 | AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1750 | AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1751 | AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1752 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1707 | 1753 | |
| 1708 | | AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_K053936_w) AM_BASE(&metro_K053936_ram) // 053936 |
| 1709 | | AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE("k053936", k053936_linectrl_w) // 053936 line control |
| 1710 | | AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE("k053936", k053936_ctrl_w) // 053936 control |
| 1754 | AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_k053936_w) AM_BASE_MEMBER(metro_state, k053936_ram) // 053936 |
| 1755 | AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE("k053936", k053936_linectrl_w) // 053936 line control |
| 1756 | AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE("k053936", k053936_ctrl_w) // 053936 control |
| 1711 | 1757 | |
| 1712 | 1758 | AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP // Inputs |
| 1713 | | AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w) // |
| 1714 | | AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0") // |
| 1715 | | AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1") // |
| 1716 | | AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") // |
| 1759 | AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w) // |
| 1760 | AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0") // |
| 1761 | AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1") // |
| 1762 | AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") // |
| 1717 | 1763 | ADDRESS_MAP_END |
| 1718 | 1764 | |
| 1719 | 1765 | |
| r7640 | r7641 | |
| 1723 | 1769 | |
| 1724 | 1770 | static WRITE16_DEVICE_HANDLER( mouja_sound_rombank_w ) |
| 1725 | 1771 | { |
| 1772 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 1773 | |
| 1726 | 1774 | if (ACCESSING_BITS_0_7) |
| 1727 | | okim6295_set_bank_base(devtag_get_device(device->machine, "oki"), ((data >> 3) & 0x07) * 0x40000); |
| 1775 | okim6295_set_bank_base(state->oki, ((data >> 3) & 0x07) * 0x40000); |
| 1728 | 1776 | } |
| 1729 | 1777 | |
| 1730 | 1778 | static ADDRESS_MAP_START( mouja_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1731 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1732 | | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 1733 | | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0 ) // Layer 0 |
| 1734 | | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1 ) // Layer 1 |
| 1735 | | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2 ) // Layer 2 |
| 1779 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 1780 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM |
| 1781 | AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1782 | AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1783 | AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1736 | 1784 | AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1737 | | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites |
| 1738 | | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size) // Tiles Set |
| 1739 | | AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_BASE(&metro_screenctrl) // Screen Control |
| 1740 | | AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_BASE(&metro_irq_levels) // IRQ Levels |
| 1741 | | AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors) // IRQ Vectors |
| 1742 | | AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_BASE(&metro_irq_enable) // IRQ Enable |
| 1743 | | AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1785 | AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) // Sprites |
| 1786 | AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1787 | AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1788 | AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_levels) // IRQ Levels |
| 1789 | AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_vectors) // IRQ Vectors |
| 1790 | AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1791 | AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1744 | 1792 | AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w) // IRQ set timer count |
| 1745 | 1793 | AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1746 | | AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_BASE(&metro_scroll) // Scroll Regs |
| 1747 | | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window) // Tilemap Window |
| 1748 | | AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0") // Inputs |
| 1749 | | AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1") // |
| 1750 | | AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // |
| 1751 | | AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2") // |
| 1752 | | AM_RANGE(0x478888, 0x478889) AM_WRITENOP // ?? |
| 1753 | | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1794 | AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll Regs |
| 1795 | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1796 | AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0") // Inputs |
| 1797 | AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1") // |
| 1798 | AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // |
| 1799 | AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2") // |
| 1800 | AM_RANGE(0x478888, 0x478889) AM_WRITENOP // ?? |
| 1801 | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1754 | 1802 | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", mouja_sound_rombank_w) |
| 1755 | 1803 | AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) |
| 1756 | 1804 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0xffff) |
| 1757 | 1805 | #if 0 |
| 1758 | | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1759 | | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs) // Tiles Blitter |
| 1760 | | AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_BASE(&metro_rombank) // Rom Bank |
| 1806 | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1807 | AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1808 | AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1761 | 1809 | AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout |
| 1762 | 1810 | #endif |
| 1763 | 1811 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 1769 | 1817 | |
| 1770 | 1818 | static WRITE16_HANDLER( puzzlet_irq_enable_w ) |
| 1771 | 1819 | { |
| 1820 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 1821 | |
| 1772 | 1822 | if (ACCESSING_BITS_0_7) |
| 1773 | | *metro_irq_enable = data^0xffff; |
| 1823 | *state->irq_enable = data ^ 0xffff; |
| 1774 | 1824 | } |
| 1775 | 1825 | |
| 1826 | /* FIXME: algorythm not yet understood. */ |
| 1827 | static WRITE16_HANDLER( vram_0_clr_w ) |
| 1828 | { |
| 1829 | static int i; |
| 1830 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 1831 | |
| 1832 | // printf("0 %04x %04x\n",offset,data); |
| 1833 | for(i=0;i<0x20/2;i++) |
| 1834 | state->vram_0[(offset*0x10+i)/2] = 0xffff; |
| 1835 | } |
| 1836 | |
| 1837 | static WRITE16_HANDLER( vram_1_clr_w ) |
| 1838 | { |
| 1839 | static int i; |
| 1840 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 1841 | |
| 1842 | // printf("0 %04x %04x\n",offset,data); |
| 1843 | for(i=0;i<0x20/2;i++) |
| 1844 | state->vram_1[(offset*0x10+i)/2] = 0xffff; |
| 1845 | } |
| 1846 | |
| 1847 | static WRITE16_HANDLER( vram_2_clr_w ) |
| 1848 | { |
| 1849 | static int i; |
| 1850 | metro_state *state = (metro_state *)space->machine->driver_data; |
| 1851 | |
| 1852 | // printf("0 %04x %04x\n",offset,data); |
| 1853 | for(i=0;i<0x20/2;i++) |
| 1854 | state->vram_2[(offset*0x10+i)/2] = 0xffff; |
| 1855 | } |
| 1856 | |
| 1857 | |
| 1776 | 1858 | // H8/3007 CPU |
| 1777 | 1859 | static ADDRESS_MAP_START( puzzlet_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1778 | | AM_RANGE( 0x000000, 0x1fffff ) AM_ROM |
| 1779 | | AM_RANGE( 0x430000, 0x433fff ) AM_RAM |
| 1780 | | AM_RANGE( 0x470000, 0x47dfff ) AM_RAM |
| 1860 | AM_RANGE(0x000000, 0x1fffff) AM_ROM |
| 1861 | AM_RANGE(0x430000, 0x433fff) AM_RAM |
| 1862 | AM_RANGE(0x470000, 0x47dfff) AM_RAM |
| 1781 | 1863 | |
| 1782 | | AM_RANGE( 0x500000, 0x500001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0xff00 ) |
| 1783 | | AM_RANGE( 0x580000, 0x580003 ) AM_DEVWRITE8( "ymsnd", ym2413_w, 0xff00 ) |
| 1864 | AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0xff00) |
| 1865 | AM_RANGE(0x580000, 0x580003) AM_DEVWRITE8("ymsnd", ym2413_w, 0xff00) |
| 1784 | 1866 | |
| 1785 | | AM_RANGE( 0x700000, 0x71ffff ) AM_RAM_WRITE( metro_vram_0_w ) AM_BASE( &metro_vram_0 ) // Layer 0 |
| 1786 | | AM_RANGE( 0x720000, 0x73ffff ) AM_RAM_WRITE( metro_vram_1_w ) AM_BASE( &metro_vram_1 ) // Layer 1 |
| 1787 | | AM_RANGE( 0x740000, 0x75ffff ) AM_RAM_WRITE( metro_vram_2_w ) AM_BASE( &metro_vram_2 ) // Layer 2 |
| 1788 | | AM_RANGE( 0x774000, 0x774fff ) AM_RAM AM_BASE_SIZE_GENERIC( spriteram ) |
| 1867 | AM_RANGE(0x700000, 0x71ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE_MEMBER(metro_state, vram_0) // Layer 0 |
| 1868 | AM_RANGE(0x720000, 0x73ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE_MEMBER(metro_state, vram_1) // Layer 1 |
| 1869 | AM_RANGE(0x740000, 0x75ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE_MEMBER(metro_state, vram_2) // Layer 2 |
| 1870 | AM_RANGE(0x774000, 0x774fff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, spriteram, spriteram_size) |
| 1789 | 1871 | |
| 1790 | | AM_RANGE( 0x760000, 0x76ffff ) AM_READ( metro_bankedrom_r ) // Banked ROM |
| 1872 | AM_RANGE(0x760000, 0x76ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1791 | 1873 | |
| 1792 | | // AM_RANGE( 0x772000, 0x773fff ) AM_RAM |
| 1793 | | AM_RANGE( 0x770000, 0x773fff ) AM_RAM_WRITE( paletteram16_GGGGGRRRRRBBBBBx_word_w ) AM_BASE_GENERIC( paletteram ) // Palette |
| 1874 | // AM_RANGE(0x772000, 0x773fff) AM_RAM |
| 1875 | AM_RANGE(0x770000, 0x773fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE_GENERIC(paletteram) // Palette |
| 1794 | 1876 | |
| 1795 | | AM_RANGE( 0x775000, 0x777fff ) AM_RAM |
| 1877 | AM_RANGE(0x775000, 0x775fff) AM_RAM_WRITE(vram_0_clr_w) |
| 1878 | AM_RANGE(0x776000, 0x776fff) AM_RAM_WRITE(vram_1_clr_w) |
| 1879 | AM_RANGE(0x777000, 0x777fff) AM_RAM_WRITE(vram_2_clr_w) |
| 1796 | 1880 | |
| 1797 | | AM_RANGE( 0x778000, 0x7787ff ) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size ) // Tiles Set |
| 1798 | | AM_RANGE( 0x778800, 0x778813 ) AM_WRITEONLY AM_BASE( &metro_videoregs ) // Video Registers |
| 1799 | | AM_RANGE( 0x778840, 0x77884f ) AM_WRITE( metro_blitter_w ) AM_BASE( &metro_blitter_regs ) // Tiles Blitter |
| 1800 | | AM_RANGE( 0x778860, 0x77886b ) AM_WRITE( metro_window_w ) AM_BASE( &metro_window ) // Tilemap Window |
| 1801 | | AM_RANGE( 0x778870, 0x77887b ) AM_WRITEONLY AM_BASE( &metro_scroll ) // Scroll |
| 1802 | | AM_RANGE( 0x778890, 0x778891 ) AM_WRITENOP // ? increasing |
| 1803 | | AM_RANGE( 0x7788a2, 0x7788a3 ) AM_WRITE( metro_irq_cause_w ) // IRQ Cause |
| 1804 | | AM_RANGE( 0x7788a4, 0x7788a5 ) AM_WRITE( puzzlet_irq_enable_w ) AM_BASE( &metro_irq_enable ) // IRQ Enable |
| 1881 | AM_RANGE(0x778000, 0x7787ff) AM_RAM AM_BASE_SIZE_MEMBER(metro_state, tiletable, tiletable_size) // Tiles Set |
| 1882 | AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_BASE_MEMBER(metro_state, videoregs) // Video Registers |
| 1883 | AM_RANGE(0x778840, 0x77884f) AM_WRITE(metro_blitter_w) AM_BASE_MEMBER(metro_state, blitter_regs) // Tiles Blitter |
| 1884 | AM_RANGE(0x778860, 0x77886b) AM_WRITE(metro_window_w) AM_BASE_MEMBER(metro_state, window) // Tilemap Window |
| 1885 | AM_RANGE(0x778870, 0x77887b) AM_WRITEONLY AM_BASE_MEMBER(metro_state, scroll) // Scroll |
| 1886 | AM_RANGE(0x778890, 0x778891) AM_WRITENOP // ? increasing |
| 1887 | AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w) // IRQ Cause |
| 1888 | AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_BASE_MEMBER(metro_state, irq_enable) // IRQ Enable |
| 1805 | 1889 | |
| 1806 | | AM_RANGE( 0x7788aa, 0x7788ab ) AM_WRITEONLY AM_BASE( &metro_rombank ) // Rom Bank |
| 1807 | | AM_RANGE( 0x7788ac, 0x7788ad ) AM_WRITEONLY AM_BASE( &metro_screenctrl ) // Screen Control |
| 1890 | AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_BASE_MEMBER(metro_state, rombank) // Rom Bank |
| 1891 | AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_BASE_MEMBER(metro_state, screenctrl) // Screen Control |
| 1808 | 1892 | |
| 1809 | | AM_RANGE( 0x7f2000, 0x7f3fff ) AM_RAM |
| 1893 | AM_RANGE(0x7f2000, 0x7f3fff) AM_RAM |
| 1810 | 1894 | |
| 1811 | | AM_RANGE( 0x7f8880, 0x7f8881 ) AM_READ_PORT("IN1") |
| 1812 | | AM_RANGE( 0x7f8884, 0x7f8885 ) AM_READ_PORT("DSW0") |
| 1813 | | AM_RANGE( 0x7f8886, 0x7f8887 ) AM_READ_PORT("DSW0") |
| 1895 | AM_RANGE(0x7f8880, 0x7f8881) AM_READ_PORT("IN1") |
| 1896 | AM_RANGE(0x7f8884, 0x7f8885) AM_READ_PORT("DSW0") |
| 1897 | AM_RANGE(0x7f8886, 0x7f8887) AM_READ_PORT("DSW0") |
| 1814 | 1898 | |
| 1815 | | AM_RANGE( 0x7f88a2, 0x7f88a3 ) AM_READ( metro_irq_cause_r ) // IRQ Cause |
| 1899 | AM_RANGE(0x7f88a2, 0x7f88a3) AM_READ(metro_irq_cause_r) // IRQ Cause |
| 1816 | 1900 | ADDRESS_MAP_END |
| 1817 | 1901 | |
| 1818 | 1902 | |
| 1819 | 1903 | static WRITE8_HANDLER( puzzlet_portb_w ) |
| 1820 | 1904 | { |
| 1821 | | // popmessage("PORTB %02x",data); |
| 1905 | // popmessage("PORTB %02x", data); |
| 1822 | 1906 | } |
| 1823 | 1907 | |
| 1824 | 1908 | static ADDRESS_MAP_START( puzzlet_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1825 | | AM_RANGE( H8_PORT_7, H8_PORT_7 ) AM_READ_PORT("IN2") |
| 1826 | | AM_RANGE( H8_SERIAL_1, H8_SERIAL_1 ) AM_READ_PORT("IN0") // coin |
| 1827 | | AM_RANGE( H8_PORT_B, H8_PORT_B ) AM_READ_PORT("DSW0") AM_WRITE( puzzlet_portb_w ) |
| 1909 | AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ_PORT("IN2") |
| 1910 | AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READ_PORT("IN0") // coin |
| 1911 | AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READ_PORT("DSW0") AM_WRITE(puzzlet_portb_w) |
| 1828 | 1912 | ADDRESS_MAP_END |
| 1829 | 1913 | |
| 1830 | 1914 | |
| r7640 | r7641 | |
| 1999 | 2083 | JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN) |
| 2000 | 2084 | JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN) |
| 2001 | 2085 | |
| 2002 | | PORT_START("DSW0") // Strangely mapped in the 0xc00000-0xc1ffff range |
| 2086 | PORT_START("DSW0") // Strangely mapped in the 0x300000-0x31ffff range |
| 2003 | 2087 | PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) |
| 2004 | 2088 | PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) ) |
| 2005 | 2089 | PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) |
| r7640 | r7641 | |
| 2045 | 2129 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2046 | 2130 | PORT_SERVICE( 0x8000, IP_ACTIVE_LOW ) |
| 2047 | 2131 | |
| 2048 | | PORT_START("IN0") // $d0000 |
| 2132 | PORT_START("IN0") // $200004 |
| 2049 | 2133 | COINS |
| 2050 | 2134 | |
| 2051 | | PORT_START("IN2") // Strangely mapped in the 0xc00000-0xc1ffff range |
| 2135 | PORT_START("IN2") // Strangely mapped in the 0x300000-0x31ffff range |
| 2052 | 2136 | PORT_DIPNAME( 0x0001, 0x0001, "0" ) |
| 2053 | 2137 | PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) |
| 2054 | 2138 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| r7640 | r7641 | |
| 2100 | 2184 | INPUT_PORTS_END |
| 2101 | 2185 | |
| 2102 | 2186 | /*************************************************************************** |
| 2187 | Mouse Shooter GoGo |
| 2188 | ***************************************************************************/ |
| 2189 | |
| 2190 | static INPUT_PORTS_START( msgogo ) |
| 2191 | PORT_START("COINS") // $200000 |
| 2192 | COINS |
| 2193 | |
| 2194 | PORT_START("JOYS") // $200002 |
| 2195 | JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN) |
| 2196 | JOY_MSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN) |
| 2197 | |
| 2198 | PORT_START("DSW0") // Strangely mapped in the 0x300000-0x31ffff range |
| 2199 | COINAGE_DSW |
| 2200 | PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) |
| 2201 | PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) ) // 0 |
| 2202 | PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) ) // 1 |
| 2203 | PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) ) // 2 |
| 2204 | PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) // 3 |
| 2205 | PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) |
| 2206 | PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) |
| 2207 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2208 | PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) |
| 2209 | PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) |
| 2210 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2211 | PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) |
| 2212 | PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) |
| 2213 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2214 | PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Lives ) ) |
| 2215 | PORT_DIPSETTING( 0x2000, "2" ) |
| 2216 | PORT_DIPSETTING( 0x0000, "3" ) |
| 2217 | PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) ) |
| 2218 | PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) |
| 2219 | PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) |
| 2220 | PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Language ) ) |
| 2221 | PORT_DIPSETTING( 0x8000, DEF_STR( Japanese ) ) |
| 2222 | PORT_DIPSETTING( 0x0000, DEF_STR( English ) ) |
| 2223 | |
| 2224 | PORT_START("IN2") // Strangely mapped in the 0x300000-0x31ffff range |
| 2225 | // DSW3 is used for debug (it's not soldered on the PCB) |
| 2226 | PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) |
| 2227 | PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) |
| 2228 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2229 | PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) |
| 2230 | PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) |
| 2231 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2232 | PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) |
| 2233 | PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) |
| 2234 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2235 | PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) |
| 2236 | PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) |
| 2237 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2238 | PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) |
| 2239 | PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) |
| 2240 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2241 | PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) |
| 2242 | PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) |
| 2243 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2244 | PORT_DIPNAME( 0x0040, 0x0040, "Debug: Offset" ) |
| 2245 | PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) |
| 2246 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2247 | PORT_DIPNAME( 0x0080, 0x0080, "Debug: Menu" ) |
| 2248 | PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) |
| 2249 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2250 | INPUT_PORTS_END |
| 2251 | |
| 2252 | /*************************************************************************** |
| 2103 | 2253 | Blazing Tornado |
| 2104 | 2254 | ***************************************************************************/ |
| 2105 | 2255 | |
| r7640 | r7641 | |
| 2353 | 2503 | INPUT_PORTS_END |
| 2354 | 2504 | |
| 2355 | 2505 | /*************************************************************************** |
| 2356 | | Dai Toride |
| 2506 | Daitoride |
| 2357 | 2507 | ***************************************************************************/ |
| 2358 | 2508 | |
| 2359 | 2509 | /* If only ONE of the "Coinage" is set to "Free Play", it is in fact "5C_1C". |
| r7640 | r7641 | |
| 3425 | 3575 | |
| 3426 | 3576 | ***************************************************************************/ |
| 3427 | 3577 | |
| 3578 | static MACHINE_START( metro ) |
| 3579 | { |
| 3580 | metro_state *state = (metro_state *)machine->driver_data; |
| 3581 | |
| 3582 | state->maincpu = devtag_get_device(machine, "maincpu"); |
| 3583 | state->audiocpu = devtag_get_device(machine, "audiocpu"); |
| 3584 | state->oki = devtag_get_device(machine, "oki"); |
| 3585 | state->ymsnd = devtag_get_device(machine, "ymsnd"); |
| 3586 | state->k053936 = devtag_get_device(machine, "k053936"); |
| 3587 | |
| 3588 | state_save_register_global(machine, state->blitter_bit); |
| 3589 | state_save_register_global(machine, state->irq_line); |
| 3590 | state_save_register_global_array(machine, state->requested_int); |
| 3591 | state_save_register_global(machine, state->soundstatus); |
| 3592 | state_save_register_global(machine, state->porta); |
| 3593 | state_save_register_global(machine, state->portb); |
| 3594 | state_save_register_global(machine, state->busy_sndcpu); |
| 3595 | state_save_register_global(machine, state->gakusai_oki_bank_lo); |
| 3596 | state_save_register_global(machine, state->gakusai_oki_bank_hi); |
| 3597 | state_save_register_global(machine, state->sprite_xoffs); |
| 3598 | state_save_register_global(machine, state->sprite_yoffs); |
| 3599 | state_save_register_global_array(machine, state->bg_tilemap_enable); |
| 3600 | state_save_register_global_array(machine, state->bg_tilemap_enable16); |
| 3601 | } |
| 3602 | |
| 3603 | static MACHINE_RESET( metro ) |
| 3604 | { |
| 3605 | metro_state *state = (metro_state *)machine->driver_data; |
| 3606 | |
| 3607 | if (state->irq_line == -1) |
| 3608 | cpu_set_irq_callback(devtag_get_device(machine, "maincpu"), metro_irq_callback); |
| 3609 | } |
| 3610 | |
| 3611 | |
| 3428 | 3612 | static const UPD7810_CONFIG metro_cpu_config = |
| 3429 | 3613 | { |
| 3430 | | TYPE_7810, |
| 3431 | | metro_io_callback |
| 3614 | TYPE_7810, |
| 3615 | metro_io_callback |
| 3432 | 3616 | }; |
| 3433 | 3617 | |
| 3434 | 3618 | static MACHINE_DRIVER_START( balcube ) |
| 3435 | 3619 | |
| 3620 | /* driver data */ |
| 3621 | MDRV_DRIVER_DATA(metro_state) |
| 3622 | |
| 3436 | 3623 | /* basic machine hardware */ |
| 3437 | 3624 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3438 | 3625 | MDRV_CPU_PROGRAM_MAP(balcube_map) |
| 3439 | 3626 | MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10) /* ? */ |
| 3440 | 3627 | |
| 3628 | MDRV_MACHINE_START(metro) |
| 3441 | 3629 | MDRV_MACHINE_RESET(metro) |
| 3442 | 3630 | |
| 3443 | 3631 | /* video hardware */ |
| r7640 | r7641 | |
| 3466 | 3654 | |
| 3467 | 3655 | static MACHINE_DRIVER_START( daitoa ) |
| 3468 | 3656 | |
| 3657 | /* driver data */ |
| 3658 | MDRV_DRIVER_DATA(metro_state) |
| 3659 | |
| 3469 | 3660 | /* basic machine hardware */ |
| 3470 | 3661 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3471 | 3662 | MDRV_CPU_PROGRAM_MAP(daitoa_map) |
| 3472 | 3663 | MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10) /* ? */ |
| 3473 | 3664 | |
| 3665 | MDRV_MACHINE_START(metro) |
| 3474 | 3666 | MDRV_MACHINE_RESET(metro) |
| 3475 | 3667 | |
| 3476 | 3668 | /* video hardware */ |
| r7640 | r7641 | |
| 3496 | 3688 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3497 | 3689 | MACHINE_DRIVER_END |
| 3498 | 3690 | |
| 3691 | |
| 3692 | static MACHINE_DRIVER_START( msgogo ) |
| 3693 | |
| 3694 | /* driver data */ |
| 3695 | MDRV_DRIVER_DATA(metro_state) |
| 3696 | |
| 3697 | /* basic machine hardware */ |
| 3698 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3699 | MDRV_CPU_PROGRAM_MAP(msgogo_map) |
| 3700 | MDRV_CPU_VBLANK_INT_HACK(msgogo_interrupt,262) /* ? */ |
| 3701 | |
| 3702 | MDRV_MACHINE_START(metro) |
| 3703 | MDRV_MACHINE_RESET(metro) |
| 3704 | |
| 3705 | /* video hardware */ |
| 3706 | MDRV_SCREEN_ADD("screen", RASTER) |
| 3707 | MDRV_SCREEN_REFRESH_RATE(60) |
| 3708 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3709 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 3710 | MDRV_SCREEN_SIZE(320, 224) |
| 3711 | MDRV_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) |
| 3712 | |
| 3713 | MDRV_GFXDECODE(14220) |
| 3714 | MDRV_PALETTE_LENGTH(8192) |
| 3715 | |
| 3716 | MDRV_VIDEO_START(metro_14220) |
| 3717 | MDRV_VIDEO_UPDATE(metro) |
| 3718 | |
| 3719 | /* sound hardware */ |
| 3720 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3721 | |
| 3722 | MDRV_SOUND_ADD("ymf", YMF278B, YMF278B_STD_CLOCK) |
| 3723 | MDRV_SOUND_CONFIG(ymf278b_config) |
| 3724 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 3725 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3726 | MACHINE_DRIVER_END |
| 3727 | |
| 3728 | |
| 3499 | 3729 | static MACHINE_DRIVER_START( bangball ) |
| 3500 | 3730 | |
| 3731 | /* driver data */ |
| 3732 | MDRV_DRIVER_DATA(metro_state) |
| 3733 | |
| 3501 | 3734 | /* basic machine hardware */ |
| 3502 | 3735 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3503 | 3736 | MDRV_CPU_PROGRAM_MAP(bangball_map) |
| 3504 | 3737 | MDRV_CPU_VBLANK_INT("screen", bangball_interrupt) |
| 3505 | 3738 | |
| 3739 | MDRV_MACHINE_START(metro) |
| 3506 | 3740 | MDRV_MACHINE_RESET(metro) |
| 3507 | 3741 | |
| 3508 | 3742 | /* video hardware */ |
| r7640 | r7641 | |
| 3531 | 3765 | |
| 3532 | 3766 | static MACHINE_DRIVER_START( batlbubl ) |
| 3533 | 3767 | |
| 3768 | /* driver data */ |
| 3769 | MDRV_DRIVER_DATA(metro_state) |
| 3770 | |
| 3534 | 3771 | /* basic machine hardware */ |
| 3535 | 3772 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3536 | 3773 | MDRV_CPU_PROGRAM_MAP(batlbubl_map) |
| 3537 | 3774 | MDRV_CPU_VBLANK_INT("screen", bangball_interrupt) |
| 3538 | 3775 | |
| 3776 | MDRV_MACHINE_START(metro) |
| 3539 | 3777 | MDRV_MACHINE_RESET(metro) |
| 3540 | 3778 | |
| 3541 | 3779 | /* video hardware */ |
| r7640 | r7641 | |
| 3563 | 3801 | |
| 3564 | 3802 | static MACHINE_DRIVER_START( daitorid ) |
| 3565 | 3803 | |
| 3804 | /* driver data */ |
| 3805 | MDRV_DRIVER_DATA(metro_state) |
| 3806 | |
| 3566 | 3807 | /* basic machine hardware */ |
| 3567 | 3808 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3568 | 3809 | MDRV_CPU_PROGRAM_MAP(daitorid_map) |
| r7640 | r7641 | |
| 3573 | 3814 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3574 | 3815 | MDRV_CPU_IO_MAP(daitorid_sound_io_map) |
| 3575 | 3816 | |
| 3817 | MDRV_MACHINE_START(metro) |
| 3576 | 3818 | MDRV_MACHINE_RESET(metro) |
| 3577 | 3819 | |
| 3578 | 3820 | /* video hardware */ |
| r7640 | r7641 | |
| 3606 | 3848 | |
| 3607 | 3849 | static MACHINE_DRIVER_START( dharma ) |
| 3608 | 3850 | |
| 3851 | /* driver data */ |
| 3852 | MDRV_DRIVER_DATA(metro_state) |
| 3853 | |
| 3609 | 3854 | /* basic machine hardware */ |
| 3610 | 3855 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 3611 | 3856 | MDRV_CPU_PROGRAM_MAP(dharma_map) |
| r7640 | r7641 | |
| 3616 | 3861 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3617 | 3862 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 3618 | 3863 | |
| 3864 | MDRV_MACHINE_START(metro) |
| 3619 | 3865 | MDRV_MACHINE_RESET(metro) |
| 3620 | 3866 | |
| 3621 | 3867 | /* video hardware */ |
| r7640 | r7641 | |
| 3648 | 3894 | |
| 3649 | 3895 | static MACHINE_DRIVER_START( karatour ) |
| 3650 | 3896 | |
| 3897 | /* driver data */ |
| 3898 | MDRV_DRIVER_DATA(metro_state) |
| 3899 | |
| 3651 | 3900 | /* basic machine hardware */ |
| 3652 | 3901 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 3653 | 3902 | MDRV_CPU_PROGRAM_MAP(karatour_map) |
| r7640 | r7641 | |
| 3658 | 3907 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3659 | 3908 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 3660 | 3909 | |
| 3910 | MDRV_MACHINE_START(metro) |
| 3661 | 3911 | MDRV_MACHINE_RESET(metro) |
| 3662 | 3912 | |
| 3663 | 3913 | /* video hardware */ |
| r7640 | r7641 | |
| 3690 | 3940 | |
| 3691 | 3941 | static MACHINE_DRIVER_START( 3kokushi ) |
| 3692 | 3942 | |
| 3943 | /* driver data */ |
| 3944 | MDRV_DRIVER_DATA(metro_state) |
| 3945 | |
| 3693 | 3946 | /* basic machine hardware */ |
| 3694 | 3947 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 3695 | 3948 | MDRV_CPU_PROGRAM_MAP(kokushi_map) |
| r7640 | r7641 | |
| 3700 | 3953 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3701 | 3954 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 3702 | 3955 | |
| 3956 | MDRV_MACHINE_START(metro) |
| 3703 | 3957 | MDRV_MACHINE_RESET(metro) |
| 3704 | 3958 | |
| 3705 | 3959 | /* video hardware */ |
| r7640 | r7641 | |
| 3732 | 3986 | |
| 3733 | 3987 | static MACHINE_DRIVER_START( lastfort ) |
| 3734 | 3988 | |
| 3989 | /* driver data */ |
| 3990 | MDRV_DRIVER_DATA(metro_state) |
| 3991 | |
| 3735 | 3992 | /* basic machine hardware */ |
| 3736 | 3993 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 3737 | 3994 | MDRV_CPU_PROGRAM_MAP(lastfort_map) |
| r7640 | r7641 | |
| 3742 | 3999 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3743 | 4000 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 3744 | 4001 | |
| 4002 | MDRV_MACHINE_START(metro) |
| 3745 | 4003 | MDRV_MACHINE_RESET(metro) |
| 3746 | 4004 | |
| 3747 | 4005 | /* video hardware */ |
| r7640 | r7641 | |
| 3773 | 4031 | |
| 3774 | 4032 | static MACHINE_DRIVER_START( lastforg ) |
| 3775 | 4033 | |
| 4034 | /* driver data */ |
| 4035 | MDRV_DRIVER_DATA(metro_state) |
| 4036 | |
| 3776 | 4037 | /* basic machine hardware */ |
| 3777 | 4038 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 3778 | 4039 | MDRV_CPU_PROGRAM_MAP(lastforg_map) |
| r7640 | r7641 | |
| 3783 | 4044 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3784 | 4045 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 3785 | 4046 | |
| 4047 | MDRV_MACHINE_START(metro) |
| 3786 | 4048 | MDRV_MACHINE_RESET(metro) |
| 3787 | 4049 | |
| 3788 | 4050 | /* video hardware */ |
| r7640 | r7641 | |
| 3814 | 4076 | |
| 3815 | 4077 | static MACHINE_DRIVER_START( dokyusei ) |
| 3816 | 4078 | |
| 4079 | /* driver data */ |
| 4080 | MDRV_DRIVER_DATA(metro_state) |
| 4081 | |
| 3817 | 4082 | /* basic machine hardware */ |
| 3818 | 4083 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3819 | 4084 | MDRV_CPU_PROGRAM_MAP(dokyusei_map) |
| 3820 | 4085 | MDRV_CPU_VBLANK_INT_HACK(dokyusei_interrupt,2) /* ? */ |
| 3821 | 4086 | |
| 4087 | MDRV_MACHINE_START(metro) |
| 3822 | 4088 | MDRV_MACHINE_RESET(metro) |
| 3823 | 4089 | |
| 3824 | 4090 | /* video hardware */ |
| r7640 | r7641 | |
| 3850 | 4116 | |
| 3851 | 4117 | static MACHINE_DRIVER_START( dokyusp ) |
| 3852 | 4118 | |
| 4119 | /* driver data */ |
| 4120 | MDRV_DRIVER_DATA(metro_state) |
| 4121 | |
| 3853 | 4122 | /* basic machine hardware */ |
| 3854 | 4123 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3855 | 4124 | MDRV_CPU_PROGRAM_MAP(dokyusp_map) |
| 3856 | 4125 | MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt) |
| 3857 | 4126 | |
| 4127 | MDRV_MACHINE_START(metro) |
| 3858 | 4128 | MDRV_MACHINE_RESET(metro) |
| 3859 | 4129 | MDRV_EEPROM_93C46_ADD("eeprom") |
| 3860 | 4130 | |
| r7640 | r7641 | |
| 3888 | 4158 | |
| 3889 | 4159 | static MACHINE_DRIVER_START( gakusai ) |
| 3890 | 4160 | |
| 4161 | /* driver data */ |
| 4162 | MDRV_DRIVER_DATA(metro_state) |
| 4163 | |
| 3891 | 4164 | /* basic machine hardware */ |
| 3892 | 4165 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3893 | 4166 | MDRV_CPU_PROGRAM_MAP(gakusai_map) |
| 3894 | 4167 | MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt) |
| 3895 | 4168 | |
| 4169 | MDRV_MACHINE_START(metro) |
| 3896 | 4170 | MDRV_MACHINE_RESET(metro) |
| 3897 | 4171 | MDRV_EEPROM_93C46_ADD("eeprom") |
| 3898 | 4172 | |
| r7640 | r7641 | |
| 3926 | 4200 | |
| 3927 | 4201 | static MACHINE_DRIVER_START( gakusai2 ) |
| 3928 | 4202 | |
| 4203 | /* driver data */ |
| 4204 | MDRV_DRIVER_DATA(metro_state) |
| 4205 | |
| 3929 | 4206 | /* basic machine hardware */ |
| 3930 | 4207 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 3931 | 4208 | MDRV_CPU_PROGRAM_MAP(gakusai2_map) |
| 3932 | 4209 | MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt) |
| 3933 | 4210 | |
| 4211 | MDRV_MACHINE_START(metro) |
| 3934 | 4212 | MDRV_MACHINE_RESET(metro) |
| 3935 | 4213 | MDRV_EEPROM_93C46_ADD("eeprom") |
| 3936 | 4214 | |
| r7640 | r7641 | |
| 3964 | 4242 | |
| 3965 | 4243 | static MACHINE_DRIVER_START( pangpoms ) |
| 3966 | 4244 | |
| 4245 | /* driver data */ |
| 4246 | MDRV_DRIVER_DATA(metro_state) |
| 4247 | |
| 3967 | 4248 | /* basic machine hardware */ |
| 3968 | 4249 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 3969 | 4250 | MDRV_CPU_PROGRAM_MAP(pangpoms_map) |
| r7640 | r7641 | |
| 3974 | 4255 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 3975 | 4256 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 3976 | 4257 | |
| 4258 | MDRV_MACHINE_START(metro) |
| 3977 | 4259 | MDRV_MACHINE_RESET(metro) |
| 3978 | 4260 | |
| 3979 | 4261 | /* video hardware */ |
| r7640 | r7641 | |
| 4006 | 4288 | |
| 4007 | 4289 | static MACHINE_DRIVER_START( poitto ) |
| 4008 | 4290 | |
| 4291 | /* driver data */ |
| 4292 | MDRV_DRIVER_DATA(metro_state) |
| 4293 | |
| 4009 | 4294 | /* basic machine hardware */ |
| 4010 | 4295 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 4011 | 4296 | MDRV_CPU_PROGRAM_MAP(poitto_map) |
| r7640 | r7641 | |
| 4016 | 4301 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 4017 | 4302 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 4018 | 4303 | |
| 4304 | MDRV_MACHINE_START(metro) |
| 4019 | 4305 | MDRV_MACHINE_RESET(metro) |
| 4020 | 4306 | |
| 4021 | 4307 | /* video hardware */ |
| r7640 | r7641 | |
| 4048 | 4334 | |
| 4049 | 4335 | static MACHINE_DRIVER_START( pururun ) |
| 4050 | 4336 | |
| 4337 | /* driver data */ |
| 4338 | MDRV_DRIVER_DATA(metro_state) |
| 4339 | |
| 4051 | 4340 | /* basic machine hardware */ |
| 4052 | 4341 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 4053 | 4342 | MDRV_CPU_PROGRAM_MAP(pururun_map) |
| 4054 | | MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10) /* ? */ |
| 4343 | //MDRV_CPU_VBLANK_INT_HACK(msgogo_interrupt,262) /* fixes the title screen scroll in GunMaster, but makes the game painfully slow */ |
| 4344 | MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10) /* ? */ |
| 4055 | 4345 | |
| 4056 | 4346 | MDRV_CPU_ADD("audiocpu", UPD7810, 12000000) |
| 4057 | 4347 | MDRV_CPU_CONFIG(metro_cpu_config) |
| 4058 | 4348 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 4059 | 4349 | MDRV_CPU_IO_MAP(daitorid_sound_io_map) |
| 4060 | 4350 | |
| 4351 | MDRV_MACHINE_START(metro) |
| 4061 | 4352 | MDRV_MACHINE_RESET(metro) |
| 4062 | 4353 | |
| 4063 | 4354 | /* video hardware */ |
| r7640 | r7641 | |
| 4091 | 4382 | |
| 4092 | 4383 | static MACHINE_DRIVER_START( skyalert ) |
| 4093 | 4384 | |
| 4385 | /* driver data */ |
| 4386 | MDRV_DRIVER_DATA(metro_state) |
| 4387 | |
| 4094 | 4388 | /* basic machine hardware */ |
| 4095 | 4389 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 4096 | 4390 | MDRV_CPU_PROGRAM_MAP(skyalert_map) |
| r7640 | r7641 | |
| 4101 | 4395 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 4102 | 4396 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 4103 | 4397 | |
| 4398 | MDRV_MACHINE_START(metro) |
| 4104 | 4399 | MDRV_MACHINE_RESET(metro) |
| 4105 | 4400 | |
| 4106 | 4401 | /* video hardware */ |
| r7640 | r7641 | |
| 4133 | 4428 | |
| 4134 | 4429 | static MACHINE_DRIVER_START( toride2g ) |
| 4135 | 4430 | |
| 4431 | /* driver data */ |
| 4432 | MDRV_DRIVER_DATA(metro_state) |
| 4433 | |
| 4136 | 4434 | /* basic machine hardware */ |
| 4137 | 4435 | MDRV_CPU_ADD("maincpu", M68000, 12000000) |
| 4138 | 4436 | MDRV_CPU_PROGRAM_MAP(toride2g_map) |
| r7640 | r7641 | |
| 4143 | 4441 | MDRV_CPU_PROGRAM_MAP(metro_sound_map) |
| 4144 | 4442 | MDRV_CPU_IO_MAP(metro_sound_io_map) |
| 4145 | 4443 | |
| 4444 | MDRV_MACHINE_START(metro) |
| 4146 | 4445 | MDRV_MACHINE_RESET(metro) |
| 4147 | 4446 | |
| 4148 | 4447 | /* video hardware */ |
| r7640 | r7641 | |
| 4175 | 4474 | |
| 4176 | 4475 | static MACHINE_DRIVER_START( mouja ) |
| 4177 | 4476 | |
| 4477 | /* driver data */ |
| 4478 | MDRV_DRIVER_DATA(metro_state) |
| 4479 | |
| 4178 | 4480 | /* basic machine hardware */ |
| 4179 | 4481 | MDRV_CPU_ADD("maincpu", M68000, 12000000) /* ??? */ |
| 4180 | 4482 | MDRV_CPU_PROGRAM_MAP(mouja_map) |
| 4181 | 4483 | MDRV_CPU_VBLANK_INT("screen", mouja_interrupt) |
| 4182 | 4484 | |
| 4485 | MDRV_MACHINE_START(metro) |
| 4183 | 4486 | MDRV_MACHINE_RESET(metro) |
| 4184 | 4487 | |
| 4185 | 4488 | /* video hardware */ |
| r7640 | r7641 | |
| 4216 | 4519 | |
| 4217 | 4520 | static MACHINE_DRIVER_START( blzntrnd ) |
| 4218 | 4521 | |
| 4522 | /* driver data */ |
| 4523 | MDRV_DRIVER_DATA(metro_state) |
| 4524 | |
| 4219 | 4525 | /* basic machine hardware */ |
| 4220 | 4526 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 4221 | 4527 | MDRV_CPU_PROGRAM_MAP(blzntrnd_map) |
| r7640 | r7641 | |
| 4225 | 4531 | MDRV_CPU_PROGRAM_MAP(blzntrnd_sound_map) |
| 4226 | 4532 | MDRV_CPU_IO_MAP(blzntrnd_sound_io_map) |
| 4227 | 4533 | |
| 4534 | MDRV_MACHINE_START(metro) |
| 4228 | 4535 | MDRV_MACHINE_RESET(metro) |
| 4229 | 4536 | |
| 4230 | 4537 | /* video hardware */ |
| r7640 | r7641 | |
| 4263 | 4570 | |
| 4264 | 4571 | static MACHINE_DRIVER_START( gstrik2 ) |
| 4265 | 4572 | |
| 4573 | /* driver data */ |
| 4574 | MDRV_DRIVER_DATA(metro_state) |
| 4575 | |
| 4266 | 4576 | /* basic machine hardware */ |
| 4267 | 4577 | MDRV_CPU_ADD("maincpu", M68000, 16000000) |
| 4268 | 4578 | MDRV_CPU_PROGRAM_MAP(blzntrnd_map) |
| r7640 | r7641 | |
| 4272 | 4582 | MDRV_CPU_PROGRAM_MAP(blzntrnd_sound_map) |
| 4273 | 4583 | MDRV_CPU_IO_MAP(blzntrnd_sound_io_map) |
| 4274 | 4584 | |
| 4585 | MDRV_MACHINE_START(metro) |
| 4275 | 4586 | MDRV_MACHINE_RESET(metro) |
| 4276 | 4587 | |
| 4277 | 4588 | /* video hardware */ |
| r7640 | r7641 | |
| 4304 | 4615 | |
| 4305 | 4616 | static INTERRUPT_GEN( puzzlet_interrupt ) |
| 4306 | 4617 | { |
| 4307 | | switch ( cpu_getiloops(device) ) |
| 4618 | metro_state *state = (metro_state *)device->machine->driver_data; |
| 4619 | |
| 4620 | switch (cpu_getiloops(device)) |
| 4308 | 4621 | { |
| 4309 | 4622 | case 0: |
| 4310 | | requested_int[1] = 1; |
| 4623 | state->requested_int[1] = 1; |
| 4311 | 4624 | update_irq_state(device->machine); |
| 4312 | 4625 | break; |
| 4313 | 4626 | |
| 4314 | 4627 | case 1: |
| 4315 | | requested_int[3] = 1; |
| 4628 | state->requested_int[3] = 1; |
| 4316 | 4629 | update_irq_state(device->machine); |
| 4317 | 4630 | break; |
| 4318 | 4631 | |
| 4319 | 4632 | case 2: |
| 4320 | | requested_int[5] = 1; |
| 4633 | state->requested_int[5] = 1; |
| 4321 | 4634 | update_irq_state(device->machine); |
| 4322 | 4635 | break; |
| 4323 | 4636 | |
| 4324 | 4637 | case 3: |
| 4325 | | requested_int[2] = 1; |
| 4638 | state->requested_int[2] = 1; |
| 4326 | 4639 | update_irq_state(device->machine); |
| 4327 | 4640 | break; |
| 4328 | 4641 | |
| 4329 | 4642 | default: |
| 4330 | 4643 | // timer |
| 4331 | | cputag_set_input_line(device->machine, "maincpu", H8_METRO_TIMER_HACK, HOLD_LINE); |
| 4644 | cpu_set_input_line(state->maincpu, H8_METRO_TIMER_HACK, HOLD_LINE); |
| 4332 | 4645 | break; |
| 4333 | 4646 | } |
| 4334 | 4647 | } |
| 4648 | |
| 4335 | 4649 | static MACHINE_DRIVER_START( puzzlet ) |
| 4336 | 4650 | |
| 4651 | /* driver data */ |
| 4652 | MDRV_DRIVER_DATA(metro_state) |
| 4653 | |
| 4337 | 4654 | /* basic machine hardware */ |
| 4338 | 4655 | MDRV_CPU_ADD("maincpu", H83007, XTAL_20MHz) // H8/3007 - Hitachi HD6413007F20 CPU. Clock 20MHz |
| 4339 | 4656 | MDRV_CPU_PROGRAM_MAP(puzzlet_map) |
| 4340 | 4657 | MDRV_CPU_IO_MAP(puzzlet_io_map) |
| 4341 | 4658 | MDRV_CPU_VBLANK_INT_HACK(puzzlet_interrupt, 5) |
| 4342 | 4659 | |
| 4660 | MDRV_MACHINE_START(metro) |
| 4343 | 4661 | MDRV_MACHINE_RESET(metro) |
| 4344 | 4662 | |
| 4345 | 4663 | /* video hardware */ |
| r7640 | r7641 | |
| 4378 | 4696 | |
| 4379 | 4697 | ***************************************************************************/ |
| 4380 | 4698 | |
| 4381 | | static void metro_common(void) |
| 4382 | | { |
| 4383 | | requested_int[0] = 0; |
| 4384 | | requested_int[1] = 0; |
| 4385 | | requested_int[2] = 0; |
| 4386 | | requested_int[3] = 0; |
| 4387 | | requested_int[4] = 0; |
| 4388 | | requested_int[5] = 0; |
| 4389 | | requested_int[6] = 0; |
| 4390 | | requested_int[7] = 0; |
| 4391 | | |
| 4392 | | irq_line = 2; |
| 4393 | | |
| 4394 | | blitter_bit = 2; |
| 4395 | | |
| 4396 | | *metro_irq_enable = 0; |
| 4397 | | } |
| 4398 | | |
| 4399 | | |
| 4400 | | static DRIVER_INIT( metro ) |
| 4401 | | { |
| 4402 | | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 4403 | | |
| 4404 | | metro_common(); |
| 4405 | | |
| 4406 | | porta = 0x00; |
| 4407 | | portb = 0x00; |
| 4408 | | busy_sndcpu = 0; |
| 4409 | | metro_sound_rombank_w(space, 0, 0x00); |
| 4410 | | } |
| 4411 | | |
| 4412 | | static DRIVER_INIT( karatour ) |
| 4413 | | { |
| 4414 | | UINT16 *RAM = auto_alloc_array(machine, UINT16, 0x20000*3/2); |
| 4415 | | int i; |
| 4416 | | metro_vram_0 = RAM + (0x20000/2) * 0; |
| 4417 | | metro_vram_1 = RAM + (0x20000/2) * 1; |
| 4418 | | metro_vram_2 = RAM + (0x20000/2) * 2; |
| 4419 | | for (i = 0;i < (0x20000*3)/2;i++) |
| 4420 | | RAM[i] = mame_rand(machine); |
| 4421 | | |
| 4422 | | DRIVER_INIT_CALL(metro); |
| 4423 | | } |
| 4424 | | |
| 4425 | | static DRIVER_INIT( daitorid ) |
| 4426 | | { |
| 4427 | | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 4428 | | |
| 4429 | | metro_common(); |
| 4430 | | |
| 4431 | | porta = 0x00; |
| 4432 | | portb = 0x00; |
| 4433 | | busy_sndcpu = 0; |
| 4434 | | daitorid_sound_rombank_w(space, 0, 0x00); |
| 4435 | | } |
| 4436 | | |
| 4437 | | |
| 4438 | | /* Unscramble the GFX ROMs */ |
| 4439 | | static DRIVER_INIT( balcube ) |
| 4440 | | { |
| 4441 | | const size_t len = memory_region_length(machine, "gfx1"); |
| 4442 | | UINT8 *src = memory_region(machine, "gfx1"); |
| 4443 | | UINT8 *end = src + len; |
| 4444 | | |
| 4445 | | while(src < end) |
| 4446 | | { |
| 4447 | | static const UINT8 scramble[16] = |
| 4448 | | { 0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf }; |
| 4449 | | |
| 4450 | | UINT8 data; |
| 4451 | | |
| 4452 | | data = *src; |
| 4453 | | *src = (scramble[data & 0xF] << 4) | scramble[data >> 4]; |
| 4454 | | src += 2; |
| 4455 | | } |
| 4456 | | |
| 4457 | | metro_common(); |
| 4458 | | irq_line = 1; |
| 4459 | | } |
| 4460 | | |
| 4461 | | |
| 4462 | | static DRIVER_INIT( dharmak ) |
| 4463 | | { |
| 4464 | | UINT8 *src = memory_region( machine, "gfx1" ); |
| 4465 | | int i; |
| 4466 | | for (i=0;i<0x200000;i+=4) |
| 4467 | | { |
| 4468 | | UINT8 dat; |
| 4469 | | dat = src[i+1]; |
| 4470 | | dat = BITSWAP8(dat, 7,3,2,4, 5,6,1,0); |
| 4471 | | src[i+1] = dat; |
| 4472 | | |
| 4473 | | dat = src[i+3]; |
| 4474 | | dat = BITSWAP8(dat, 7,2,5,4, 3,6,1,0); |
| 4475 | | src[i+3] = dat; |
| 4476 | | } |
| 4477 | | |
| 4478 | | DRIVER_INIT_CALL(metro); |
| 4479 | | } |
| 4480 | | |
| 4481 | | static DRIVER_INIT( blzntrnd ) |
| 4482 | | { |
| 4483 | | metro_common(); |
| 4484 | | irq_line = 1; |
| 4485 | | } |
| 4486 | | |
| 4487 | | static DRIVER_INIT( mouja ) |
| 4488 | | { |
| 4489 | | metro_common(); |
| 4490 | | irq_line = -1; /* split interrupt handlers */ |
| 4491 | | mouja_irq_timer = timer_alloc(machine, mouja_irq_callback, NULL); |
| 4492 | | } |
| 4493 | | |
| 4494 | | static DRIVER_INIT( gakusai ) |
| 4495 | | { |
| 4496 | | metro_common(); |
| 4497 | | irq_line = -1; |
| 4498 | | blitter_bit = 3; |
| 4499 | | } |
| 4500 | | |
| 4501 | | static DRIVER_INIT( puzzlet ) |
| 4502 | | { |
| 4503 | | metro_common(); |
| 4504 | | irq_line = 0; |
| 4505 | | blitter_bit = 0; |
| 4506 | | } |
| 4507 | | |
| 4508 | 4699 | /*************************************************************************** |
| 4509 | 4700 | |
| 4510 | 4701 | Bal Cube |
| r7640 | r7641 | |
| 4558 | 4749 | ROMX_LOAD( "dt_ja-3.3", 0x000006, 0x080000, CRC(32353e04) SHA1(16ac82de9e6e43eabef3adab2d3a006bb50100fb) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4559 | 4750 | |
| 4560 | 4751 | ROM_REGION( 0x280000, "ymf", 0 ) |
| 4561 | | ROM_LOAD( "yrw801-m", 0x000000, 0x200000, CRC(2a9d8d43) SHA1(32760893ce06dbe3930627755ba065cc3d8ec6ca) ) // Yamaha YRW801 2MB ROM with samples for the OPL4. |
| 4562 | | ROM_LOAD( "dt_ja-7.7", 0x200000, 0x080000, CRC(7a2d3222) SHA1(1a16bf483a5a086ad48029dd23dd16ad47c3740e) ) // PCM 16 Bit (Signed) |
| 4752 | ROM_LOAD( "yrw801-m", 0x000000, 0x200000, CRC(2a9d8d43) SHA1(32760893ce06dbe3930627755ba065cc3d8ec6ca) ) // Yamaha YRW801 2MB ROM with samples for the OPL4. |
| 4753 | ROM_LOAD( "dt_ja-7.7", 0x200000, 0x080000, CRC(7a2d3222) SHA1(1a16bf483a5a086ad48029dd23dd16ad47c3740e) ) // PCM 16 Bit (Signed) |
| 4563 | 4754 | ROM_END |
| 4564 | 4755 | |
| 4565 | 4756 | |
| r7640 | r7641 | |
| 4743 | 4934 | |
| 4744 | 4935 | */ |
| 4745 | 4936 | |
| 4937 | |
| 4938 | /* The MASK roms weren't dumped from this set, but it's safe to assume they're the same in this case */ |
| 4746 | 4939 | ROM_START( gstrik2 ) |
| 4747 | 4940 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 */ |
| 4748 | | ROM_LOAD16_BYTE( "prg0.107", 0x000000, 0x80000, CRC(e60a8c19) SHA1(19be6cfcb60ede6fd4eb2e14914b174107c4b52d) ) |
| 4749 | | ROM_LOAD16_BYTE( "prg1.108", 0x000001, 0x80000, CRC(853f6f7c) SHA1(8fb9d7cd0390f620560a1669bb13f2033eed7c81) ) |
| 4941 | ROM_LOAD16_BYTE( "hum_003_g2f.rom1.u107", 0x000000, 0x80000, CRC(2712d9ca) SHA1(efa967de931728534a663fa1529e92003afbb3e9) ) |
| 4942 | ROM_LOAD16_BYTE( "hum_003_g2f.rom2.u108", 0x000001, 0x80000, CRC(86785c64) SHA1(ef172d6e859a68eb80f7c127b61883d50eefb0fe) ) |
| 4750 | 4943 | ROM_LOAD16_BYTE( "prg2.109", 0x100000, 0x80000, CRC(ead86919) SHA1(eb9b68dff4e08d90ac90043c7f3021914caa007d) ) |
| 4751 | 4944 | ROM_LOAD16_BYTE( "prg3.110", 0x100001, 0x80000, CRC(e0b026e3) SHA1(05f75c0432efda3dec0372199382e310bb268fba) ) |
| 4752 | 4945 | |
| r7640 | r7641 | |
| 4783 | 4976 | /* ROM7.27 not populated? */ |
| 4784 | 4977 | ROM_END |
| 4785 | 4978 | |
| 4786 | | ROM_START( gstrik2e ) |
| 4979 | ROM_START( gstrik2j ) |
| 4787 | 4980 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 */ |
| 4788 | | ROM_LOAD16_BYTE( "hum_003_g2f.rom1.u107", 0x000000, 0x80000, CRC(2712d9ca) SHA1(efa967de931728534a663fa1529e92003afbb3e9) ) |
| 4789 | | ROM_LOAD16_BYTE( "hum_003_g2f.rom2.u108", 0x000001, 0x80000, CRC(86785c64) SHA1(ef172d6e859a68eb80f7c127b61883d50eefb0fe) ) |
| 4790 | | ROM_LOAD16_BYTE( "prg2.109", 0x100000, 0x80000, BAD_DUMP CRC(ead86919) SHA1(eb9b68dff4e08d90ac90043c7f3021914caa007d) ) |
| 4791 | | ROM_LOAD16_BYTE( "prg3.110", 0x100001, 0x80000, BAD_DUMP CRC(e0b026e3) SHA1(05f75c0432efda3dec0372199382e310bb268fba) ) |
| 4981 | ROM_LOAD16_BYTE( "prg0.107", 0x000000, 0x80000, CRC(e60a8c19) SHA1(19be6cfcb60ede6fd4eb2e14914b174107c4b52d) ) |
| 4982 | ROM_LOAD16_BYTE( "prg1.108", 0x000001, 0x80000, CRC(853f6f7c) SHA1(8fb9d7cd0390f620560a1669bb13f2033eed7c81) ) |
| 4983 | ROM_LOAD16_BYTE( "prg2.109", 0x100000, 0x80000, CRC(ead86919) SHA1(eb9b68dff4e08d90ac90043c7f3021914caa007d) ) |
| 4984 | ROM_LOAD16_BYTE( "prg3.110", 0x100001, 0x80000, CRC(e0b026e3) SHA1(05f75c0432efda3dec0372199382e310bb268fba) ) |
| 4792 | 4985 | |
| 4793 | 4986 | ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 */ |
| 4794 | | ROM_LOAD( "sprg.30", 0x0000, 0x20000, BAD_DUMP CRC(aeef6045) SHA1(61b8c89ca495d3aac79e53413a85dd203db816f3) ) |
| 4987 | ROM_LOAD( "sprg.30", 0x0000, 0x20000, CRC(aeef6045) SHA1(61b8c89ca495d3aac79e53413a85dd203db816f3) ) |
| 4795 | 4988 | |
| 4796 | 4989 | ROM_REGION( 0x1000000, "gfx1", 0 ) /* Gfx + Data (Addressable by CPU & Blitter) */ |
| 4797 | | ROMX_LOAD( "chr0.80", 0x0000000, 0x200000, BAD_DUMP CRC(f63a52a9) SHA1(1ad52bb3a051eaffe8fb6ba49d4fc1d0b6144156) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4798 | | ROMX_LOAD( "chr1.79", 0x0000002, 0x200000, BAD_DUMP CRC(4110c184) SHA1(90ccb3d50eff7a655336cfa9c072f7213589e64c) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4799 | | ROMX_LOAD( "chr2.78", 0x0000004, 0x200000, BAD_DUMP CRC(ddb4b9ee) SHA1(0e2c151c3690b9c3d298dda8842e283660d37386) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4800 | | ROMX_LOAD( "chr3.77", 0x0000006, 0x200000, BAD_DUMP CRC(5ab367db) SHA1(adf8749451f4583f8e9e00ab61f3408d804a7265) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4801 | | ROMX_LOAD( "chr4.84", 0x0800000, 0x200000, BAD_DUMP CRC(77d7ef99) SHA1(8f5cf72f5919fe9363e7549e0bb1b3ee633cec3b) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4802 | | ROMX_LOAD( "chr5.83", 0x0800002, 0x200000, BAD_DUMP CRC(a4d49e95) SHA1(9789bacba7876100e0f0293f54c81def545ed068) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4803 | | ROMX_LOAD( "chr6.82", 0x0800004, 0x200000, BAD_DUMP CRC(32eb33b0) SHA1(2ea06484ca326b44a35ee470343147a9d91d5626) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4804 | | ROMX_LOAD( "chr7.81", 0x0800006, 0x200000, BAD_DUMP CRC(2d30a21e) SHA1(749e86b7935ef71556eaee4caf6f954634e9bcbf) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4990 | ROMX_LOAD( "chr0.80", 0x0000000, 0x200000, CRC(f63a52a9) SHA1(1ad52bb3a051eaffe8fb6ba49d4fc1d0b6144156) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4991 | ROMX_LOAD( "chr1.79", 0x0000002, 0x200000, CRC(4110c184) SHA1(90ccb3d50eff7a655336cfa9c072f7213589e64c) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4992 | ROMX_LOAD( "chr2.78", 0x0000004, 0x200000, CRC(ddb4b9ee) SHA1(0e2c151c3690b9c3d298dda8842e283660d37386) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4993 | ROMX_LOAD( "chr3.77", 0x0000006, 0x200000, CRC(5ab367db) SHA1(adf8749451f4583f8e9e00ab61f3408d804a7265) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4994 | ROMX_LOAD( "chr4.84", 0x0800000, 0x200000, CRC(77d7ef99) SHA1(8f5cf72f5919fe9363e7549e0bb1b3ee633cec3b) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4995 | ROMX_LOAD( "chr5.83", 0x0800002, 0x200000, CRC(a4d49e95) SHA1(9789bacba7876100e0f0293f54c81def545ed068) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4996 | ROMX_LOAD( "chr6.82", 0x0800004, 0x200000, CRC(32eb33b0) SHA1(2ea06484ca326b44a35ee470343147a9d91d5626) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4997 | ROMX_LOAD( "chr7.81", 0x0800006, 0x200000, CRC(2d30a21e) SHA1(749e86b7935ef71556eaee4caf6f954634e9bcbf) , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4805 | 4998 | /* not populated */ |
| 4806 | 4999 | // ROMX_LOAD( "chr8.88", 0x1000000, 0x200000, CRC() SHA1() , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4807 | 5000 | // ROMX_LOAD( "chr9.87", 0x1000002, 0x200000, CRC() SHA1() , ROM_GROUPWORD | ROM_SKIP(6)) |
| r7640 | r7641 | |
| 4813 | 5006 | // ROMX_LOAD( "chr15.89", 0x1800006, 0x200000, CRC() SHA1() , ROM_GROUPWORD | ROM_SKIP(6)) |
| 4814 | 5007 | |
| 4815 | 5008 | ROM_REGION( 0x200000, "gfx3", 0 ) /* 053936 gfx data */ |
| 4816 | | ROM_LOAD( "psacrom.60", 0x000000, 0x200000, BAD_DUMP CRC(73f1f279) SHA1(1135b2b1eb4c52249bc12ee178340bbb202a94c8) ) |
| 5009 | ROM_LOAD( "psacrom.60", 0x000000, 0x200000, CRC(73f1f279) SHA1(1135b2b1eb4c52249bc12ee178340bbb202a94c8) ) |
| 4817 | 5010 | |
| 4818 | 5011 | ROM_REGION( 0x200000, "ymsnd.deltat", 0 ) /* Samples */ |
| 4819 | | ROM_LOAD( "sndpcm-b.22", 0x000000, 0x200000, BAD_DUMP CRC(a5d844d2) SHA1(18d644545f0844e66aa53775b67b0a29c7b7c31b) ) |
| 5012 | ROM_LOAD( "sndpcm-b.22", 0x000000, 0x200000, CRC(a5d844d2) SHA1(18d644545f0844e66aa53775b67b0a29c7b7c31b) ) |
| 4820 | 5013 | |
| 4821 | 5014 | ROM_REGION( 0x400000, "ymsnd", 0 ) /* ? YRW801-M ? */ |
| 4822 | | ROM_LOAD( "sndpcm-a.23", 0x000000, 0x200000, BAD_DUMP CRC(e6d32373) SHA1(8a79d4ea8b27d785fffd80e38d5ae73b7cea7304) ) |
| 5015 | ROM_LOAD( "sndpcm-a.23", 0x000000, 0x200000, CRC(e6d32373) SHA1(8a79d4ea8b27d785fffd80e38d5ae73b7cea7304) ) |
| 4823 | 5016 | /* ROM7.27 not populated? */ |
| 4824 | 5017 | ROM_END |
| 4825 | 5018 | |
| 5019 | |
| 4826 | 5020 | /*************************************************************************** |
| 4827 | 5021 | |
| 4828 | 5022 | Daitoride |
| r7640 | r7641 | |
| 5449 | 5643 | |
| 5450 | 5644 | /*************************************************************************** |
| 5451 | 5645 | |
| 5646 | Mouse Shooter GoGO, Metro, 1995 |
| 5647 | |
| 5648 | ms_ja-1.1 tms27c240 |
| 5649 | ms_wa-2.2 tms27c240 |
| 5650 | ms_wa-3.3 tms27c240 |
| 5651 | ms_wa-4.4 tms27c240 |
| 5652 | ms_wa-5.5 tms27c020 |
| 5653 | ms_wa-6.6 tms27c020 |
| 5654 | ms_wa-7.7 hn27c4001g |
| 5655 | |
| 5656 | Stefan Lindberg |
| 5657 | |
| 5658 | ***************************************************************************/ |
| 5659 | |
| 5660 | ROM_START( msgogo ) |
| 5661 | ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */ |
| 5662 | ROM_LOAD16_BYTE( "ms_wa-6.6", 0x000000, 0x040000, CRC(986acac8) SHA1(97c24f5b730aa811951db4c7e9c894c0701c58fd) ) |
| 5663 | ROM_LOAD16_BYTE( "ms_wa-5.5", 0x000001, 0x040000, CRC(746d9f99) SHA1(6e3e34dfb67fecc93213fe040465eccd88575822) ) |
| 5664 | |
| 5665 | ROM_REGION( 0x200000, "gfx1", 0 ) /* Gfx + Data (Addressable by CPU & Blitter) */ |
| 5666 | ROMX_LOAD( "ms_wa-2.2", 0x000000, 0x080000, CRC(0d36c2b9) SHA1(3fd6631ad657c73e7e6bfdff9d9caf5ab044bdeb), ROM_GROUPWORD | ROM_SKIP(6)) |
| 5667 | ROMX_LOAD( "ms_wa-4.4", 0x000002, 0x080000, CRC(fd387126) SHA1(a2f82a66b098a97d8f245e3c2f96c31c63642fec), ROM_GROUPWORD | ROM_SKIP(6)) |
| 5668 | ROMX_LOAD( "ms_ja-1.1", 0x000004, 0x080000, CRC(8ec4e81d) SHA1(46947ad2941af154f91e47acee281302a12e3aa5), ROM_GROUPWORD | ROM_SKIP(6)) |
| 5669 | ROMX_LOAD( "ms_wa-3.3", 0x000006, 0x080000, CRC(06cb6807) SHA1(d7303b4047983117cd33e057b1f4b98ed3f7dd32), ROM_GROUPWORD | ROM_SKIP(6)) |
| 5670 | |
| 5671 | ROM_REGION( 0x280000, "ymf", 0 ) |
| 5672 | ROM_LOAD( "yrw801-m", 0x000000, 0x200000, CRC(2a9d8d43) SHA1(32760893ce06dbe3930627755ba065cc3d8ec6ca) ) |
| 5673 | ROM_LOAD( "ms_wa-7.7", 0x200000, 0x080000, CRC(e19941cb) SHA1(93777c9cd22ddd33d9584b6edad33b95c1e28bde) ) |
| 5674 | ROM_END |
| 5675 | |
| 5676 | |
| 5677 | /*************************************************************************** |
| 5678 | |
| 5452 | 5679 | Pang Pom's (c) 1992 Metro |
| 5453 | 5680 | |
| 5454 | 5681 | Pcb code: VG420 (Same as Toride) |
| r7640 | r7641 | |
| 5864 | 6091 | ROM_LOAD( "pcm.3g", 0x000000, 0x020000, CRC(6ee32315) SHA1(ef4d59576929deab0aa459a67be21d97c2803dea) ) |
| 5865 | 6092 | ROM_END |
| 5866 | 6093 | |
| 6094 | |
| 5867 | 6095 | /*************************************************************************** |
| 5868 | 6096 | |
| 5869 | 6097 | |
| 6098 | Driver Inits |
| 6099 | |
| 6100 | |
| 6101 | ***************************************************************************/ |
| 6102 | |
| 6103 | static void metro_common( running_machine *machine ) |
| 6104 | { |
| 6105 | metro_state *state = (metro_state *)machine->driver_data; |
| 6106 | |
| 6107 | memset(state->requested_int, 0, ARRAY_LENGTH(state->requested_int)); |
| 6108 | state->irq_line = 2; |
| 6109 | state->blitter_bit = 2; |
| 6110 | |
| 6111 | *state->irq_enable = 0; |
| 6112 | } |
| 6113 | |
| 6114 | |
| 6115 | static DRIVER_INIT( metro ) |
| 6116 | { |
| 6117 | metro_state *state = (metro_state *)machine->driver_data; |
| 6118 | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 6119 | |
| 6120 | metro_common(machine); |
| 6121 | |
| 6122 | state->porta = 0x00; |
| 6123 | state->portb = 0x00; |
| 6124 | state->busy_sndcpu = 0; |
| 6125 | metro_sound_rombank_w(space, 0, 0x00); |
| 6126 | } |
| 6127 | |
| 6128 | static DRIVER_INIT( karatour ) |
| 6129 | { |
| 6130 | metro_state *state = (metro_state *)machine->driver_data; |
| 6131 | UINT16 *RAM = auto_alloc_array(machine, UINT16, 0x20000*3/2); |
| 6132 | int i; |
| 6133 | |
| 6134 | state->vram_0 = RAM + (0x20000/2) * 0; |
| 6135 | state->vram_1 = RAM + (0x20000/2) * 1; |
| 6136 | state->vram_2 = RAM + (0x20000/2) * 2; |
| 6137 | |
| 6138 | for (i = 0; i < (0x20000 * 3) / 2; i++) |
| 6139 | RAM[i] = mame_rand(machine); |
| 6140 | |
| 6141 | DRIVER_INIT_CALL(metro); |
| 6142 | |
| 6143 | state_save_register_global_pointer(machine, state->vram_0, 0x20000/2); |
| 6144 | state_save_register_global_pointer(machine, state->vram_1, 0x20000/2); |
| 6145 | state_save_register_global_pointer(machine, state->vram_2, 0x20000/2); |
| 6146 | } |
| 6147 | |
| 6148 | static DRIVER_INIT( daitorid ) |
| 6149 | { |
| 6150 | metro_state *state = (metro_state *)machine->driver_data; |
| 6151 | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 6152 | |
| 6153 | metro_common(machine); |
| 6154 | |
| 6155 | state->porta = 0x00; |
| 6156 | state->portb = 0x00; |
| 6157 | state->busy_sndcpu = 0; |
| 6158 | daitorid_sound_rombank_w(space, 0, 0x00); |
| 6159 | } |
| 6160 | |
| 6161 | |
| 6162 | /* Unscramble the GFX ROMs */ |
| 6163 | static DRIVER_INIT( balcube ) |
| 6164 | { |
| 6165 | metro_state *state = (metro_state *)machine->driver_data; |
| 6166 | |
| 6167 | const size_t len = memory_region_length(machine, "gfx1"); |
| 6168 | UINT8 *src = memory_region(machine, "gfx1"); |
| 6169 | UINT8 *end = src + len; |
| 6170 | |
| 6171 | while (src < end) |
| 6172 | { |
| 6173 | static const UINT8 scramble[16] = { 0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf }; |
| 6174 | UINT8 data; |
| 6175 | |
| 6176 | data = *src; |
| 6177 | *src = (scramble[data & 0x0f] << 4) | scramble[data >> 4]; |
| 6178 | src += 2; |
| 6179 | } |
| 6180 | |
| 6181 | metro_common(machine); |
| 6182 | state->irq_line = 1; |
| 6183 | } |
| 6184 | |
| 6185 | |
| 6186 | static DRIVER_INIT( dharmak ) |
| 6187 | { |
| 6188 | UINT8 *src = memory_region( machine, "gfx1" ); |
| 6189 | int i; |
| 6190 | |
| 6191 | for (i = 0; i < 0x200000; i += 4) |
| 6192 | { |
| 6193 | UINT8 dat; |
| 6194 | dat = src[i + 1]; |
| 6195 | dat = BITSWAP8(dat, 7,3,2,4, 5,6,1,0); |
| 6196 | src[i + 1] = dat; |
| 6197 | |
| 6198 | dat = src[i + 3]; |
| 6199 | dat = BITSWAP8(dat, 7,2,5,4, 3,6,1,0); |
| 6200 | src[i + 3] = dat; |
| 6201 | } |
| 6202 | |
| 6203 | DRIVER_INIT_CALL(metro); |
| 6204 | } |
| 6205 | |
| 6206 | static DRIVER_INIT( blzntrnd ) |
| 6207 | { |
| 6208 | metro_state *state = (metro_state *)machine->driver_data; |
| 6209 | metro_common(machine); |
| 6210 | state->irq_line = 1; |
| 6211 | } |
| 6212 | |
| 6213 | static DRIVER_INIT( mouja ) |
| 6214 | { |
| 6215 | metro_state *state = (metro_state *)machine->driver_data; |
| 6216 | metro_common(machine); |
| 6217 | state->irq_line = -1; /* split interrupt handlers */ |
| 6218 | state->mouja_irq_timer = timer_alloc(machine, mouja_irq_callback, NULL); |
| 6219 | } |
| 6220 | |
| 6221 | static DRIVER_INIT( gakusai ) |
| 6222 | { |
| 6223 | metro_state *state = (metro_state *)machine->driver_data; |
| 6224 | metro_common(machine); |
| 6225 | state->irq_line = -1; |
| 6226 | state->blitter_bit = 3; |
| 6227 | } |
| 6228 | |
| 6229 | static DRIVER_INIT( puzzlet ) |
| 6230 | { |
| 6231 | metro_state *state = (metro_state *)machine->driver_data; |
| 6232 | metro_common(machine); |
| 6233 | state->irq_line = 0; |
| 6234 | state->blitter_bit = 0; |
| 6235 | } |
| 6236 | |
| 6237 | /*************************************************************************** |
| 6238 | |
| 6239 | |
| 5870 | 6240 | Game Drivers |
| 5871 | 6241 | |
| 5872 | 6242 | |
| 5873 | 6243 | ***************************************************************************/ |
| 5874 | 6244 | |
| 5875 | | GAME( 1992, karatour, 0, karatour, karatour, karatour, ROT0, "Mitchell", "The Karate Tournament", GAME_IMPERFECT_GRAPHICS ) |
| 5876 | | GAME( 1992, pangpoms, 0, pangpoms, pangpoms, metro, ROT0, "Metro", "Pang Pom's", 0 ) |
| 5877 | | GAME( 1992, pangpomsm,pangpoms, pangpoms, pangpoms, metro, ROT0, "Metro (Mitchell license)", "Pang Pom's (Mitchell)", 0 ) |
| 5878 | | GAME( 1992, skyalert, 0, skyalert, skyalert, metro, ROT270, "Metro", "Sky Alert", 0 ) |
| 5879 | | GAME( 1993, ladykill, 0, karatour, ladykill, karatour, ROT90, "Yanyaka (Mitchell license)", "Lady Killer", GAME_IMPERFECT_GRAPHICS ) |
| 5880 | | GAME( 1993, moegonta, ladykill, karatour, moegonta, karatour, ROT90, "Yanyaka", "Moeyo Gonta!! (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 5881 | | GAME( 1993, poitto, 0, poitto, poitto, metro, ROT0, "Metro / Able Corp.", "Poitto!", 0 ) |
| 5882 | | GAME( 1994, blzntrnd, 0, blzntrnd, blzntrnd, blzntrnd, ROT0, "Human Amusement", "Blazing Tornado", GAME_IMPERFECT_GRAPHICS ) |
| 5883 | | GAME( 1994, dharma, 0, dharma, dharma, metro, ROT0, "Metro", "Dharma Doujou", 0 ) |
| 5884 | | GAME( 1994, dharmak, dharma, dharma, dharma, dharmak, ROT0, "Metro", "Dharma Doujou (Korea)", 0 ) |
| 5885 | | GAME( 1994, lastfort, 0, lastfort, lastfort, metro, ROT0, "Metro", "Last Fortress - Toride", 0 ) |
| 5886 | | GAME( 1994, lastforte,lastfort, lastfort, lastfero, metro, ROT0, "Metro", "Last Fortress - Toride (Erotic)", 0 ) |
| 5887 | | GAME( 1994, lastfortk,lastfort, lastfort, lastfero, metro, ROT0, "Metro", "Last Fortress - Toride (Korea)", 0 ) |
| 5888 | | GAME( 1994, lastfortg,lastfort, lastforg, ladykill, metro, ROT0, "Metro", "Last Fortress - Toride (German)", 0 ) |
| 5889 | | GAME( 1994, toride2g, 0, toride2g, toride2g, metro, ROT0, "Metro", "Toride II Adauchi Gaiden", GAME_IMPERFECT_GRAPHICS ) |
| 5890 | | GAME( 1994, toride2gg,toride2g, toride2g, toride2g, metro, ROT0, "Metro", "Toride II Adauchi Gaiden (German)", GAME_IMPERFECT_GRAPHICS ) |
| 5891 | | GAME( 1994, toride2j, toride2g, toride2g, toride2g, metro, ROT0, "Metro", "Toride II (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 5892 | | GAME( 1994, gunmast, 0, pururun, gunmast, daitorid, ROT0, "Metro", "Gun Master", 0 ) |
| 5893 | | GAME( 1995, daitorid, 0, daitorid, daitorid, daitorid, ROT0, "Metro", "Daitoride", GAME_IMPERFECT_GRAPHICS ) |
| 5894 | | GAME( 1996, daitoa, daitorid, daitoa, daitorid, balcube, ROT0, "Metro", "Daitoride (YMF278B version)", 0 ) |
| 5895 | | GAME( 1995, dokyusei, 0, dokyusei, dokyusei, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei", 0 ) |
| 5896 | | GAME( 1995, dokyusp, 0, dokyusp, gakusai, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei Special", 0 ) |
| 5897 | | GAME( 1995, pururun, 0, pururun, pururun, daitorid, ROT0, "Metro / Banpresto", "Pururun", 0 ) |
| 5898 | | GAME( 1995, puzzli, 0, daitorid, puzzli, daitorid, ROT0, "Metro / Banpresto", "Puzzli", GAME_IMPERFECT_GRAPHICS ) |
| 5899 | | GAME( 1996, 3kokushi, 0, 3kokushi, 3kokushi, karatour, ROT0, "Mitchell", "Sankokushi (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 5900 | | GAME( 1996, balcube, 0, balcube, balcube, balcube, ROT0, "Metro", "Bal Cube", 0 ) |
| 5901 | | GAME( 1996, bangball, 0, bangball, bangball, balcube, ROT0, "Banpresto / Kunihiko Tashiro+Goodhouse", "Bang Bang Ball (v1.05)", 0 ) |
| 5902 | | GAME( 1996, gstrik2, 0, gstrik2, gstrik2, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Japan)", GAME_IMPERFECT_GRAPHICS ) // priority between rounds |
| 5903 | | GAME( 1996, gstrik2e, gstrik2, gstrik2, gstrik2, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS ) |
| 5904 | | GAME( 1999, batlbubl, bangball, batlbubl, batlbubl, balcube, ROT0, "Limenko", "Battle Bubble (v2.00)", 0 ) |
| 5905 | | GAME( 1996, mouja, 0, mouja, mouja, mouja, ROT0, "Etona", "Mouja (Japan)", GAME_NO_COCKTAIL ) |
| 5906 | | GAME( 1997, gakusai, 0, gakusai, gakusai, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 5907 | | GAME( 1998, gakusai2, 0, gakusai2, gakusai, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai 2 (Japan)", 0 ) |
| 5908 | | GAME( 2000, puzzlet, 0, puzzlet, puzzlet, puzzlet, ROT0, "Unies Corporation", "Puzzlet (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND ) |
| 6245 | GAME( 1992, karatour, 0, karatour, karatour, karatour, ROT0, "Mitchell", "The Karate Tournament", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6246 | GAME( 1992, pangpoms, 0, pangpoms, pangpoms, metro, ROT0, "Metro", "Pang Pom's", GAME_SUPPORTS_SAVE ) |
| 6247 | GAME( 1992, pangpomsm, pangpoms, pangpoms, pangpoms, metro, ROT0, "Metro (Mitchell license)", "Pang Pom's (Mitchell)", GAME_SUPPORTS_SAVE ) |
| 6248 | GAME( 1992, skyalert, 0, skyalert, skyalert, metro, ROT270, "Metro", "Sky Alert", GAME_SUPPORTS_SAVE ) |
| 6249 | GAME( 1993, ladykill, 0, karatour, ladykill, karatour, ROT90, "Yanyaka (Mitchell license)", "Lady Killer", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6250 | GAME( 1993, moegonta, ladykill, karatour, moegonta, karatour, ROT90, "Yanyaka", "Moeyo Gonta!! (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6251 | GAME( 1993, poitto, 0, poitto, poitto, metro, ROT0, "Metro / Able Corp.", "Poitto!", GAME_SUPPORTS_SAVE ) |
| 6252 | GAME( 1994, blzntrnd, 0, blzntrnd, blzntrnd, blzntrnd, ROT0, "Human Amusement", "Blazing Tornado", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6253 | GAME( 1994, dharma, 0, dharma, dharma, metro, ROT0, "Metro", "Dharma Doujou", GAME_SUPPORTS_SAVE ) |
| 6254 | GAME( 1994, dharmak, dharma, dharma, dharma, dharmak, ROT0, "Metro", "Dharma Doujou (Korea)", GAME_SUPPORTS_SAVE ) |
| 6255 | GAME( 1994, lastfort, 0, lastfort, lastfort, metro, ROT0, "Metro", "Last Fortress - Toride", GAME_SUPPORTS_SAVE ) |
| 6256 | GAME( 1994, lastforte, lastfort, lastfort, lastfero, metro, ROT0, "Metro", "Last Fortress - Toride (Erotic)", GAME_SUPPORTS_SAVE ) |
| 6257 | GAME( 1994, lastfortk, lastfort, lastfort, lastfero, metro, ROT0, "Metro", "Last Fortress - Toride (Korea)", GAME_SUPPORTS_SAVE ) |
| 6258 | GAME( 1994, lastfortg, lastfort, lastforg, ladykill, metro, ROT0, "Metro", "Last Fortress - Toride (German)", GAME_SUPPORTS_SAVE ) |
| 6259 | GAME( 1994, toride2g, 0, toride2g, toride2g, metro, ROT0, "Metro", "Toride II Adauchi Gaiden", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6260 | GAME( 1994, toride2gg, toride2g, toride2g, toride2g, metro, ROT0, "Metro", "Toride II Adauchi Gaiden (German)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6261 | GAME( 1994, toride2j, toride2g, toride2g, toride2g, metro, ROT0, "Metro", "Toride II (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6262 | GAME( 1994, gunmast, 0, pururun, gunmast, daitorid, ROT0, "Metro", "Gun Master", GAME_SUPPORTS_SAVE ) |
| 6263 | GAME( 1995, daitorid, 0, daitorid, daitorid, daitorid, ROT0, "Metro", "Daitoride", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6264 | GAME( 1996, daitoa, daitorid, daitoa, daitorid, balcube, ROT0, "Metro", "Daitoride (YMF278B version)", GAME_SUPPORTS_SAVE ) |
| 6265 | GAME( 1995, dokyusei, 0, dokyusei, dokyusei, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei", GAME_SUPPORTS_SAVE ) |
| 6266 | GAME( 1995, dokyusp, 0, dokyusp, gakusai, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei Special", GAME_SUPPORTS_SAVE ) |
| 6267 | GAME( 1995, msgogo, 0, msgogo, msgogo, balcube, ROT0, "Metro", "Mouse Shooter GoGo", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6268 | GAME( 1995, pururun, 0, pururun, pururun, daitorid, ROT0, "Metro / Banpresto", "Pururun", GAME_SUPPORTS_SAVE ) |
| 6269 | GAME( 1995, puzzli, 0, daitorid, puzzli, daitorid, ROT0, "Metro / Banpresto", "Puzzli", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6270 | GAME( 1996, 3kokushi, 0, 3kokushi, 3kokushi, karatour, ROT0, "Mitchell", "Sankokushi (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6271 | GAME( 1996, balcube, 0, balcube, balcube, balcube, ROT0, "Metro", "Bal Cube", GAME_SUPPORTS_SAVE ) |
| 6272 | GAME( 1996, bangball, 0, bangball, bangball, balcube, ROT0, "Banpresto / Kunihiko Tashiro+Goodhouse", "Bang Bang Ball (v1.05)", GAME_SUPPORTS_SAVE ) |
| 6273 | GAME( 1996, gstrik2, 0, gstrik2, gstrik2, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6274 | GAME( 1996, gstrik2j, gstrik2, gstrik2, gstrik2, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds |
| 6275 | GAME( 1999, batlbubl, bangball, batlbubl, batlbubl, balcube, ROT0, "Limenko", "Battle Bubble (v2.00)", GAME_SUPPORTS_SAVE ) |
| 6276 | GAME( 1996, mouja, 0, mouja, mouja, mouja, ROT0, "Etona", "Mouja (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 6277 | GAME( 1997, gakusai, 0, gakusai, gakusai, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6278 | GAME( 1998, gakusai2, 0, gakusai2, gakusai, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai 2 (Japan)", GAME_SUPPORTS_SAVE ) |
| 6279 | GAME( 2000, puzzlet, 0, puzzlet, puzzlet, puzzlet, ROT0, "Unies Corporation", "Puzzlet (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
src/mame/drivers/namcos23.c
| r7640 | r7641 | |
| 111 | 111 | *Angler King Namco, 1999 System 23 |
| 112 | 112 | Gunmen Wars Namco, 1998 Super System 23 |
| 113 | 113 | *Race On! Namco, 1998 Super System 23 |
| 114 | | 500 GP Namco, 1999 Super System 23 |
| 114 | 500 GP Namco, 1998 Super System 23 |
| 115 | 115 | Final Furlong 2 Namco, 1999 Super System 23 |
| 116 | 116 | *Guitar Jam Namco, 1999 Super System 23 |
| 117 | 117 | Crisis Zone Namco, 2000 System 23 Evolution 2 |
| r7640 | r7641 | |
| 1204 | 1204 | static INT16 s23_c422_regs[0x10]; |
| 1205 | 1205 | static int s23_subcpu_running; |
| 1206 | 1206 | |
| 1207 | static UINT32 p3d_address, p3d_size; |
| 1208 | |
| 1207 | 1209 | static UINT16 nthword( const UINT32 *pSource, int offs ) |
| 1208 | 1210 | { |
| 1209 | 1211 | pSource += offs/2; |
| r7640 | r7641 | |
| 1241 | 1243 | bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine)); |
| 1242 | 1244 | bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); |
| 1243 | 1245 | |
| 1246 | gfx_element *gfx = screen->machine->gfx[0]; |
| 1247 | memset(gfx->dirty, 1, gfx->total_elements); |
| 1248 | |
| 1244 | 1249 | tilemap_draw( bitmap, cliprect, bgtilemap, 0/*flags*/, 0/*priority*/ ); /* opaque */ |
| 1245 | 1250 | return 0; |
| 1246 | 1251 | } |
| r7640 | r7641 | |
| 1283 | 1288 | static READ16_HANDLER(s23_c417_r) |
| 1284 | 1289 | { |
| 1285 | 1290 | switch(offset) { |
| 1286 | | case 0: return 0x8e | (video_screen_get_vblank(space->machine->primary_screen) ? 0x8000 : 0); |
| 1291 | case 0: return 0x8e | (video_screen_get_vblank(space->machine->primary_screen) ? 0x0000 : 0x8000); |
| 1287 | 1292 | case 1: return c417_adr; |
| 1288 | 1293 | case 4: |
| 1289 | 1294 | // logerror("c417_r %04x = %04x (%08x, %08x)\n", c417_adr, c417_ram[c417_adr], cpu_get_pc(space->cpu), (unsigned int)cpu_get_reg(space->cpu, MIPS3_R31)); |
| r7640 | r7641 | |
| 1580 | 1585 | } |
| 1581 | 1586 | } |
| 1582 | 1587 | |
| 1583 | | static READ32_HANDLER( gorgon_magic_r ) |
| 1584 | | { |
| 1585 | | return 0xffffffff; // must be non-zero (rapidrvr @ 8000229C) |
| 1586 | | } |
| 1587 | | |
| 1588 | 1588 | /* |
| 1589 | 1589 | Final Furlong has a bug: it forgets to halt the H8/3002 before it zeros out the shared RAM |
| 1590 | 1590 | which contains the H8's stack and other working set. This crashes MAME due to the PC going |
| r7640 | r7641 | |
| 1614 | 1614 | return 0x00020002; |
| 1615 | 1615 | } |
| 1616 | 1616 | |
| 1617 | static void p3d_packet(const address_space *space, UINT32 adr, UINT32 size) |
| 1618 | { |
| 1619 | logerror("p3d dma %08x %08x [%08x]\n", adr, size, (unsigned int)cpu_get_reg(space->cpu, MIPS3_R31)); |
| 1620 | } |
| 1621 | |
| 1622 | static READ32_HANDLER( p3d_r ) |
| 1623 | { |
| 1624 | switch(offset) { |
| 1625 | case 0xa: return 1; // Busy flag |
| 1626 | } |
| 1627 | |
| 1628 | logerror("p3d_r %02x @ %08x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(space->cpu), (unsigned int)cpu_get_reg(space->cpu, MIPS3_R31)); |
| 1629 | return 0; |
| 1630 | } |
| 1631 | |
| 1632 | static WRITE32_HANDLER( p3d_w) |
| 1633 | { |
| 1634 | switch(offset) { |
| 1635 | case 0x7: COMBINE_DATA(&p3d_address); return; |
| 1636 | case 0x8: COMBINE_DATA(&p3d_size); return; |
| 1637 | case 0x9: |
| 1638 | if(data & 1) |
| 1639 | p3d_packet(space, p3d_address, p3d_size); |
| 1640 | return; |
| 1641 | case 0x17: return; |
| 1642 | } |
| 1643 | logerror("p3d_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(space->cpu), (unsigned int)cpu_get_reg(space->cpu, MIPS3_R31)); |
| 1644 | } |
| 1645 | |
| 1617 | 1646 | static ADDRESS_MAP_START( gorgon_map, ADDRESS_SPACE_PROGRAM, 32 ) |
| 1618 | 1647 | AM_RANGE(0x00000000, 0x003fffff) AM_RAM |
| 1619 | | AM_RANGE(0x01000000, 0x010000ff) AM_READ( gorgon_magic_r ) |
| 1648 | AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE( p3d_r, p3d_w ) |
| 1620 | 1649 | AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16( s23_c417_r, s23_c417_w, 0xffffffff ) |
| 1621 | 1650 | AM_RANGE(0x04400000, 0x0440ffff) AM_READWRITE( gorgon_sharedram_r, gorgon_sharedram_w ) AM_BASE(&namcos23_shared_ram) |
| 1622 | 1651 | |
| 1623 | 1652 | AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE( s23_mcuen_w ) |
| 1624 | | AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM // 3d FIFO |
| 1653 | AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM |
| 1625 | 1654 | |
| 1626 | 1655 | AM_RANGE(0x06080000, 0x06081fff) AM_RAM |
| 1627 | 1656 | |
| r7640 | r7641 | |
| 1647 | 1676 | |
| 1648 | 1677 | static ADDRESS_MAP_START( ss23_map, ADDRESS_SPACE_PROGRAM, 32 ) |
| 1649 | 1678 | AM_RANGE(0x00000000, 0x003fffff) AM_RAM |
| 1650 | | AM_RANGE(0x01000000, 0x010000ff) AM_READ( gorgon_magic_r ) |
| 1679 | AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE( p3d_r, p3d_w ) |
| 1651 | 1680 | AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16( s23_c417_r, s23_c417_w, 0xffffffff ) |
| 1652 | 1681 | AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_BASE(&namcos23_shared_ram) |
| 1653 | 1682 | AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE( s23_mcuen_w ) |
| 1654 | | AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM // 3d FIFO |
| 1683 | AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM |
| 1655 | 1684 | AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // Backup |
| 1656 | 1685 | AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422 |
| 1657 | 1686 | AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16( s23_c422_r, s23_c422_w, 0xffffffff ) // C422 registers |
| r7640 | r7641 | |
| 1659 | 1688 | AM_RANGE(0x06804000, 0x0681dfff) AM_RAM |
| 1660 | 1689 | AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE( namcos23_textram_w ) AM_BASE(&namcos23_textram) |
| 1661 | 1690 | AM_RANGE(0x06820000, 0x0682000f) AM_READWRITE16( s23_c361_r, s23_c361_w, 0xffffffff ) // C361 |
| 1662 | | AM_RANGE(0x06a08000, 0x06a0ffff) AM_RAM // GAMMA (C404) |
| 1691 | AM_RANGE(0x06a08000, 0x06a081ff) AM_RAM // Blending control (C404 too?) |
| 1692 | AM_RANGE(0x06a08200, 0x06a087ff) AM_RAM // GAMMA (C404) |
| 1663 | 1693 | AM_RANGE(0x06a10000, 0x06a3ffff) AM_RAM_WRITE( namcos23_paletteram_w ) AM_BASE_GENERIC(paletteram) |
| 1664 | 1694 | AM_RANGE(0x08000000, 0x08ffffff) AM_ROM AM_REGION("data", 0x0000000) AM_MIRROR(0x01000000) // data ROMs |
| 1665 | 1695 | AM_RANGE(0x0a000000, 0x0affffff) AM_ROM AM_REGION("data", 0x1000000) AM_MIRROR(0x01000000) |
| r7640 | r7641 | |
| 2016 | 2046 | PORT_START("H8PORT") |
| 2017 | 2047 | |
| 2018 | 2048 | // No idea if start is actually there, but we need buttons to pass error screens |
| 2049 | // You can go to the pcb test mode by pressing start, but it crashes... |
| 2019 | 2050 | PORT_START("P1") |
| 2020 | | PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_START1 ) |
| 2021 | | PORT_BIT( 0xffe, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2051 | PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_START1 ) |
| 2052 | PORT_BIT( 0xff7, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2022 | 2053 | |
| 2023 | 2054 | PORT_START("P2") |
| 2024 | | PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_START2 ) |
| 2025 | | PORT_BIT( 0xffe, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2055 | PORT_BIT( 0xfff, IP_ACTIVE_LOW, IPT_START2 ) |
| 2026 | 2056 | |
| 2027 | 2057 | PORT_START("TC2P0") |
| 2028 | 2058 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| r7640 | r7641 | |
| 2207 | 2237 | if ((!strcmp(machine->gamedrv->name, "motoxgo")) || |
| 2208 | 2238 | (!strcmp(machine->gamedrv->name, "panicprk")) || |
| 2209 | 2239 | (!strcmp(machine->gamedrv->name, "rapidrvr")) || |
| 2240 | (!strcmp(machine->gamedrv->name, "rapidrvr2")) || |
| 2210 | 2241 | (!strcmp(machine->gamedrv->name, "finlflng")) || |
| 2211 | 2242 | (!strcmp(machine->gamedrv->name, "gunwars")) || |
| 2243 | (!strcmp(machine->gamedrv->name, "downhill")) || |
| 2212 | 2244 | (!strcmp(machine->gamedrv->name, "finfurl2")) || |
| 2213 | 2245 | (!strcmp(machine->gamedrv->name, "finfurl2j")) || |
| 2246 | (!strcmp(machine->gamedrv->name, "crszone")) || |
| 2214 | 2247 | (!strcmp(machine->gamedrv->name, "timecrs2b")) || |
| 2215 | 2248 | (!strcmp(machine->gamedrv->name, "timecrs2"))) |
| 2216 | 2249 | { |
| r7640 | r7641 | |
| 2386 | 2419 | MDRV_CPU_IO_MAP( s23iobrdiomap ) |
| 2387 | 2420 | MACHINE_DRIVER_END |
| 2388 | 2421 | |
| 2422 | static MACHINE_DRIVER_START( ss23e2 ) |
| 2423 | MDRV_IMPORT_FROM( ss23 ) |
| 2424 | |
| 2425 | MDRV_CPU_REPLACE("maincpu", R4650BE, S23_BUSCLOCK*6) |
| 2426 | |
| 2427 | MDRV_CPU_MODIFY("audiocpu") |
| 2428 | MDRV_CPU_IO_MAP( s23h8iomap ) |
| 2429 | |
| 2430 | MDRV_CPU_ADD("ioboard", H83334, 14745600 ) |
| 2431 | MDRV_CPU_PROGRAM_MAP( s23iobrdmap ) |
| 2432 | MDRV_CPU_IO_MAP( s23iobrdiomap ) |
| 2433 | MACHINE_DRIVER_END |
| 2434 | |
| 2389 | 2435 | static MACHINE_DRIVER_START( gmen ) |
| 2390 | 2436 | MDRV_IMPORT_FROM( s23 ) |
| 2391 | 2437 | |
| r7640 | r7641 | |
| 2400 | 2446 | |
| 2401 | 2447 | ROM_START( rapidrvr ) |
| 2402 | 2448 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2403 | | ROM_LOAD16_BYTE( "rd3verc.ic2", 0x000000, 0x200000, CRC(c15c0f30) SHA1(9f529232818f3e184f81f62408a5cad615b05613) ) |
| 2404 | | ROM_LOAD16_BYTE( "rd3verc.ic1", 0x000001, 0x200000, CRC(9d7f4411) SHA1(d049efaa539d36ed0f73ca3f50a8f7112e67f865) ) |
| 2449 | ROM_LOAD16_BYTE( "rd3verc.ic2", 0x000000, 0x200000, CRC(c15c0f30) SHA1(9f529232818f3e184f81f62408a5cad615b05613) ) |
| 2450 | ROM_LOAD16_BYTE( "rd3verc.ic1", 0x000001, 0x200000, CRC(9d7f4411) SHA1(d049efaa539d36ed0f73ca3f50a8f7112e67f865) ) |
| 2405 | 2451 | |
| 2406 | 2452 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2407 | 2453 | ROM_LOAD16_WORD_SWAP( "rd3verc.ic3", 0x000000, 0x080000, CRC(6e26fbaf) SHA1(4ab6637d22f0d26f7e1d10e9c80059c56f64303d) ) |
| 2408 | 2454 | |
| 2409 | 2455 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2410 | | ROM_LOAD( "asca1_io-a.ic2", 0x000000, 0x040000, CRC(77cdf69a) SHA1(497af1059f85c07bea2dd0d303481623f6019dcf) ) |
| 2456 | ROM_LOAD( "asca1_io-a.ic2", 0x000000, 0x040000, CRC(77cdf69a) SHA1(497af1059f85c07bea2dd0d303481623f6019dcf) ) |
| 2411 | 2457 | |
| 2412 | 2458 | ROM_REGION32_BE( 0x800000, "data", 0 ) /* data */ |
| 2413 | | ROM_LOAD16_BYTE( "rd1mtah.3j", 0x000000, 0x400000, CRC(d8fa0f3d) SHA1(0d5bdb3a2e7be1dffe11b74baa2c10bfe011ae92) ) |
| 2414 | | ROM_LOAD16_BYTE( "rd1mtal.1j", 0x000001, 0x400000, CRC(8f0efa86) SHA1(9953461c258f2a96be275a7b18d6518ddfac3860) ) |
| 2459 | ROM_LOAD16_BYTE( "rd1mtah.3j", 0x000000, 0x400000, CRC(d8fa0f3d) SHA1(0d5bdb3a2e7be1dffe11b74baa2c10bfe011ae92) ) |
| 2460 | ROM_LOAD16_BYTE( "rd1mtal.1j", 0x000001, 0x400000, CRC(8f0efa86) SHA1(9953461c258f2a96be275a7b18d6518ddfac3860) ) |
| 2415 | 2461 | |
| 2416 | 2462 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2417 | | ROM_LOAD( "rd1cguu.5b", 0x0000000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) ) |
| 2418 | | ROM_LOAD( "rd1cgum.6b", 0x0800000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) ) |
| 2419 | | ROM_LOAD( "rd1cgll.8b", 0x1000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) ) |
| 2420 | | ROM_LOAD( "rd1cglm.7b", 0x1800000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) ) |
| 2463 | ROM_LOAD( "rd1cgll.8b", 0x0000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) ) |
| 2464 | ROM_LOAD( "rd1cglm.7b", 0x0800000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) ) |
| 2465 | ROM_LOAD( "rd1cgum.6b", 0x1000000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) ) |
| 2466 | ROM_LOAD( "rd1cguu.5b", 0x1800000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) ) |
| 2421 | 2467 | |
| 2422 | | ROM_REGION( 0x2000000, "textile2", 0 ) /* texture tiles bank 2? */ |
| 2423 | | ROM_LOAD( "rd1spruu.9p", 0x0000000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) ) |
| 2424 | | ROM_LOAD( "rd1sprum.10p", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) ) |
| 2425 | | ROM_LOAD( "rd1sprll.12t", 0x1000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) ) |
| 2426 | | ROM_LOAD( "rd1sprlm.11p", 0x1800000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) ) |
| 2468 | ROM_REGION( 0x1000000, "sprites", 0 ) /* sprites tiles */ |
| 2469 | ROM_LOAD( "rd1sprll.12t", 0x0000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) ) |
| 2470 | ROM_LOAD( "rd1sprlm.11p", 0x0400000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) ) |
| 2471 | ROM_LOAD( "rd1sprum.10p", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) ) |
| 2472 | ROM_LOAD( "rd1spruu.9p", 0x0c00000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) ) |
| 2427 | 2473 | |
| 2428 | | ROM_REGION( 0x2000000, "textiledup", 0 ) /* duplicate bank of texture tiles */ |
| 2429 | | ROM_LOAD( "rd1cguu.5f", 0x0800000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) ) |
| 2430 | | ROM_LOAD( "rd1cgum.6f", 0x1800000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) ) |
| 2431 | | ROM_LOAD( "rd1cgll.8f", 0x1000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) ) |
| 2432 | | ROM_LOAD( "rd1cglm.7f", 0x0000000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) ) |
| 2474 | ROM_REGION16_LE( 0x200000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2475 | ROM_LOAD( "rd1ccrl.11a", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) ) |
| 2433 | 2476 | |
| 2434 | | ROM_REGION( 0x2000000, "textile2d", 0 ) /* duplicate of texture tiles bank 2? */ |
| 2435 | | ROM_LOAD( "rd1spruu.9t", 0x0000000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) ) |
| 2436 | | ROM_LOAD( "rd1sprum.10t", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) ) |
| 2437 | | ROM_LOAD( "rd1sprll.12p", 0x1000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) ) |
| 2438 | | ROM_LOAD( "rd1sprlm.11t", 0x1800000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) ) |
| 2477 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2478 | ROM_LOAD( "rd1ccrh.11b", 0x000000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) ) |
| 2439 | 2479 | |
| 2440 | | ROM_REGION( 0x400000, "textilemap", 0 ) /* texture tilemap */ |
| 2441 | | ROM_LOAD( "rd1ccrl.11a", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) ) |
| 2442 | | ROM_LOAD( "rd1ccrh.11b", 0x200000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) ) |
| 2480 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2481 | ROM_LOAD32_WORD_SWAP( "rd1pt0h.9l", 0x0000000, 0x400000, CRC(6f280eff) SHA1(9dd8c8903581d7a412146e50f4009e1d2b743f06) ) |
| 2482 | ROM_LOAD32_WORD_SWAP( "rd1pt0l.9j", 0x0000002, 0x400000, CRC(47b1c5a5) SHA1(021d4ca7b8674d8ed5daa701bf41b4a7164d992a) ) |
| 2483 | ROM_LOAD32_WORD_SWAP( "rd1pt1h.10l", 0x0800000, 0x400000, CRC(37bd9bdf) SHA1(b26c284024ea4ad4c67b2eefbfdd5ebb35a0118e) ) |
| 2484 | ROM_LOAD32_WORD_SWAP( "rd1pt1l.10j", 0x0800002, 0x400000, CRC(91131cb3) SHA1(e42c5e190c719f1cf2d6e91444062ab901be0e73) ) |
| 2485 | ROM_LOAD32_WORD_SWAP( "rd1pt2h.11l", 0x1000000, 0x400000, CRC(fa601e83) SHA1(45c420538910f566e75d668306735f54c901669f) ) |
| 2486 | ROM_LOAD32_WORD_SWAP( "rd1pt2l.11j", 0x1000002, 0x400000, CRC(3423ff9f) SHA1(73823c179c866cbb601a23417acbbf5b3dc97213) ) |
| 2487 | ROM_LOAD32_WORD_SWAP( "rd1pt3h.12l", 0x1800000, 0x400000, CRC(e82ff66a) SHA1(9e2c951136b26d969d2c9d030b7e0bad8bbbe3fb) ) |
| 2488 | ROM_LOAD32_WORD_SWAP( "rd1pt3l.12j", 0x1800002, 0x400000, CRC(7216d63e) SHA1(77088ff05c2630996f4bdc87fe466f9b97611467) ) |
| 2443 | 2489 | |
| 2444 | | ROM_REGION( 0x400000, "textilemp2", 0 ) /* duplicate texture tilemap */ |
| 2445 | | ROM_LOAD( "rd1ccrl.11e", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) ) |
| 2446 | | ROM_LOAD( "rd1ccrh.11f", 0x200000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) ) |
| 2490 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2491 | ROM_LOAD( "rd1wavel.2s", 0x000000, 0x800000, CRC(bf52c08c) SHA1(6745062e078e520484390fad1f723124aa4076d0) ) |
| 2492 | ROM_LOAD( "rd1waveh.3s", 0x800000, 0x800000, CRC(ef0136b5) SHA1(a6d923ededca168fe555e0b86a72f53bec5424cc) ) |
| 2447 | 2493 | |
| 2448 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2449 | | ROM_LOAD32_WORD( "rd1pt0l.9j", 0x0000000, 0x400000, CRC(47b1c5a5) SHA1(021d4ca7b8674d8ed5daa701bf41b4a7164d992a) ) |
| 2450 | | ROM_LOAD32_WORD( "rd1pt0h.9l", 0x0000002, 0x400000, CRC(6f280eff) SHA1(9dd8c8903581d7a412146e50f4009e1d2b743f06) ) |
| 2451 | | ROM_LOAD32_WORD( "rd1pt1l.10j", 0x0800000, 0x400000, CRC(91131cb3) SHA1(e42c5e190c719f1cf2d6e91444062ab901be0e73) ) |
| 2452 | | ROM_LOAD32_WORD( "rd1pt1h.10l", 0x0800002, 0x400000, CRC(37bd9bdf) SHA1(b26c284024ea4ad4c67b2eefbfdd5ebb35a0118e) ) |
| 2453 | | ROM_LOAD32_WORD( "rd1pt2l.11j", 0x1000000, 0x400000, CRC(3423ff9f) SHA1(73823c179c866cbb601a23417acbbf5b3dc97213) ) |
| 2454 | | ROM_LOAD32_WORD( "rd1pt2h.11l", 0x1000002, 0x400000, CRC(fa601e83) SHA1(45c420538910f566e75d668306735f54c901669f) ) |
| 2455 | | ROM_LOAD32_WORD( "rd1pt3l.12j", 0x1800000, 0x400000, CRC(7216d63e) SHA1(77088ff05c2630996f4bdc87fe466f9b97611467) ) |
| 2456 | | ROM_LOAD32_WORD( "rd1pt3h.12l", 0x1800002, 0x400000, CRC(e82ff66a) SHA1(9e2c951136b26d969d2c9d030b7e0bad8bbbe3fb) ) |
| 2494 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 2495 | ROM_LOAD( "rd1cgll.8f", 0x000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) ) |
| 2496 | ROM_LOAD( "rd1cglm.7f", 0x000000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) ) |
| 2497 | ROM_LOAD( "rd1cgum.6f", 0x000000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) ) |
| 2498 | ROM_LOAD( "rd1cguu.5f", 0x000000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) ) |
| 2499 | ROM_LOAD( "rd1sprll.12p", 0x000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) ) |
| 2500 | ROM_LOAD( "rd1sprlm.11t", 0x000000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) ) |
| 2501 | ROM_LOAD( "rd1sprum.10t", 0x000000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) ) |
| 2502 | ROM_LOAD( "rd1spruu.9t", 0x000000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) ) |
| 2503 | ROM_LOAD( "rd1ccrl.11e", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) ) |
| 2504 | ROM_LOAD( "rd1ccrh.11f", 0x000000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) ) |
| 2505 | ROM_END |
| 2457 | 2506 | |
| 2507 | ROM_START( rapidrvr2 ) |
| 2508 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2509 | ROM_LOAD16_BYTE( "rd2verc.ic2", 0x000000, 0x200000, CRC(234fc2f4) SHA1(64374f4de19855f1980d8e088049b0c112107f43) ) |
| 2510 | ROM_LOAD16_BYTE( "rd2verc.ic1", 0x000001, 0x200000, CRC(651c5da4) SHA1(0e73e2cfafda626597d2ce08bf07458509fb79de) ) |
| 2511 | |
| 2512 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2513 | ROM_LOAD16_WORD_SWAP( "rd2verc.ic3", 0x000000, 0x080000, CRC(6e26fbaf) SHA1(4ab6637d22f0d26f7e1d10e9c80059c56f64303d) ) |
| 2514 | |
| 2515 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2516 | ROM_LOAD( "asca1_io-a.ic2", 0x000000, 0x040000, CRC(77cdf69a) SHA1(497af1059f85c07bea2dd0d303481623f6019dcf) ) |
| 2517 | |
| 2518 | ROM_REGION32_BE( 0x800000, "data", 0 ) /* data */ |
| 2519 | ROM_LOAD16_BYTE( "rd1mtah.3j", 0x000000, 0x400000, CRC(d8fa0f3d) SHA1(0d5bdb3a2e7be1dffe11b74baa2c10bfe011ae92) ) |
| 2520 | ROM_LOAD16_BYTE( "rd1mtal.1j", 0x000001, 0x400000, CRC(8f0efa86) SHA1(9953461c258f2a96be275a7b18d6518ddfac3860) ) |
| 2521 | |
| 2522 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2523 | ROM_LOAD( "rd1cgll.8b", 0x0000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) ) |
| 2524 | ROM_LOAD( "rd1cglm.7b", 0x0800000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) ) |
| 2525 | ROM_LOAD( "rd1cgum.6b", 0x1000000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) ) |
| 2526 | ROM_LOAD( "rd1cguu.5b", 0x1800000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) ) |
| 2527 | |
| 2528 | ROM_REGION( 0x1000000, "sprites", 0 ) /* sprites tiles */ |
| 2529 | ROM_LOAD( "rd1sprll.12t", 0x0000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) ) |
| 2530 | ROM_LOAD( "rd1sprlm.11p", 0x0400000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) ) |
| 2531 | ROM_LOAD( "rd1sprum.10p", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) ) |
| 2532 | ROM_LOAD( "rd1spruu.9p", 0x0c00000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) ) |
| 2533 | |
| 2534 | ROM_REGION16_LE( 0x200000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2535 | ROM_LOAD( "rd1ccrl.11a", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) ) |
| 2536 | |
| 2537 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2538 | ROM_LOAD( "rd1ccrh.11b", 0x000000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) ) |
| 2539 | |
| 2540 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2541 | ROM_LOAD32_WORD_SWAP( "rd1pt0h.9l", 0x0000000, 0x400000, CRC(6f280eff) SHA1(9dd8c8903581d7a412146e50f4009e1d2b743f06) ) |
| 2542 | ROM_LOAD32_WORD_SWAP( "rd1pt0l.9j", 0x0000002, 0x400000, CRC(47b1c5a5) SHA1(021d4ca7b8674d8ed5daa701bf41b4a7164d992a) ) |
| 2543 | ROM_LOAD32_WORD_SWAP( "rd1pt1h.10l", 0x0800000, 0x400000, CRC(37bd9bdf) SHA1(b26c284024ea4ad4c67b2eefbfdd5ebb35a0118e) ) |
| 2544 | ROM_LOAD32_WORD_SWAP( "rd1pt1l.10j", 0x0800002, 0x400000, CRC(91131cb3) SHA1(e42c5e190c719f1cf2d6e91444062ab901be0e73) ) |
| 2545 | ROM_LOAD32_WORD_SWAP( "rd1pt2h.11l", 0x1000000, 0x400000, CRC(fa601e83) SHA1(45c420538910f566e75d668306735f54c901669f) ) |
| 2546 | ROM_LOAD32_WORD_SWAP( "rd1pt2l.11j", 0x1000002, 0x400000, CRC(3423ff9f) SHA1(73823c179c866cbb601a23417acbbf5b3dc97213) ) |
| 2547 | ROM_LOAD32_WORD_SWAP( "rd1pt3h.12l", 0x1800000, 0x400000, CRC(e82ff66a) SHA1(9e2c951136b26d969d2c9d030b7e0bad8bbbe3fb) ) |
| 2548 | ROM_LOAD32_WORD_SWAP( "rd1pt3l.12j", 0x1800002, 0x400000, CRC(7216d63e) SHA1(77088ff05c2630996f4bdc87fe466f9b97611467) ) |
| 2549 | |
| 2458 | 2550 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2459 | | ROM_LOAD( "rd1wavel.2s", 0x000000, 0x800000, CRC(bf52c08c) SHA1(6745062e078e520484390fad1f723124aa4076d0) ) |
| 2460 | | ROM_LOAD( "rd1waveh.3s", 0x800000, 0x800000, CRC(ef0136b5) SHA1(a6d923ededca168fe555e0b86a72f53bec5424cc) ) |
| 2551 | ROM_LOAD( "rd1wavel.2s", 0x000000, 0x800000, CRC(bf52c08c) SHA1(6745062e078e520484390fad1f723124aa4076d0) ) |
| 2552 | ROM_LOAD( "rd1waveh.3s", 0x800000, 0x800000, CRC(ef0136b5) SHA1(a6d923ededca168fe555e0b86a72f53bec5424cc) ) |
| 2553 | |
| 2554 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 2555 | ROM_LOAD( "rd1cgll.8f", 0x000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) ) |
| 2556 | ROM_LOAD( "rd1cglm.7f", 0x000000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) ) |
| 2557 | ROM_LOAD( "rd1cgum.6f", 0x000000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) ) |
| 2558 | ROM_LOAD( "rd1cguu.5f", 0x000000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) ) |
| 2559 | ROM_LOAD( "rd1sprll.12p", 0x000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) ) |
| 2560 | ROM_LOAD( "rd1sprlm.11t", 0x000000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) ) |
| 2561 | ROM_LOAD( "rd1sprum.10t", 0x000000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) ) |
| 2562 | ROM_LOAD( "rd1spruu.9t", 0x000000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) ) |
| 2563 | ROM_LOAD( "rd1ccrl.11e", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) ) |
| 2564 | ROM_LOAD( "rd1ccrh.11f", 0x000000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) ) |
| 2461 | 2565 | ROM_END |
| 2462 | 2566 | |
| 2463 | 2567 | ROM_START( finlflng ) |
| 2464 | 2568 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2465 | | ROM_LOAD16_BYTE( "ff2vera.ic2", 0x000000, 0x200000, CRC(e10f9dfa) SHA1(6f6989cd722fec5e3ed3ad1bb4866c5831041ae1) ) |
| 2466 | | ROM_LOAD16_BYTE( "ff2vera.ic1", 0x000001, 0x200000, CRC(5a90ffbf) SHA1(e22dc0ae2d3c3b3a521369fe3f63412ae2ae0a12) ) |
| 2569 | ROM_LOAD16_BYTE( "ff2vera.ic2", 0x000000, 0x200000, CRC(e10f9dfa) SHA1(6f6989cd722fec5e3ed3ad1bb4866c5831041ae1) ) |
| 2570 | ROM_LOAD16_BYTE( "ff2vera.ic1", 0x000001, 0x200000, CRC(5a90ffbf) SHA1(e22dc0ae2d3c3b3a521369fe3f63412ae2ae0a12) ) |
| 2467 | 2571 | |
| 2468 | 2572 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2469 | | ROM_LOAD16_WORD_SWAP( "ff2vera.ic3", 0x000000, 0x080000, CRC(ab681078) SHA1(ec8367404458a54893ab6bea29c8a2ba3272b816) ) |
| 2573 | ROM_LOAD16_WORD_SWAP( "ff2vera.ic3", 0x000000, 0x080000, CRC(ab681078) SHA1(ec8367404458a54893ab6bea29c8a2ba3272b816) ) |
| 2470 | 2574 | |
| 2471 | 2575 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2472 | | ROM_LOAD( "asca1_io-a.ic2", 0x000000, 0x040000, CRC(77cdf69a) SHA1(497af1059f85c07bea2dd0d303481623f6019dcf) ) |
| 2576 | ROM_LOAD( "asca1_io-a.ic2", 0x000000, 0x040000, CRC(77cdf69a) SHA1(497af1059f85c07bea2dd0d303481623f6019dcf) ) |
| 2473 | 2577 | |
| 2474 | 2578 | ROM_REGION32_BE( 0x800000, "data", 0 ) /* data */ |
| 2475 | | ROM_LOAD16_BYTE( "ff2mtah.3j", 0x000000, 0x400000, CRC(161003cd) SHA1(04409333a4776b17700fc6d1aa06a39560132e03) ) |
| 2476 | | ROM_LOAD16_BYTE( "ff2mtal.1j", 0x000001, 0x400000, CRC(ed1a5bf2) SHA1(bd05388a125a0201a41af95fb2aa5fe1c8b0f270) ) |
| 2579 | ROM_LOAD16_BYTE( "ff2mtah.3j", 0x000000, 0x400000, CRC(161003cd) SHA1(04409333a4776b17700fc6d1aa06a39560132e03) ) |
| 2580 | ROM_LOAD16_BYTE( "ff2mtal.1j", 0x000001, 0x400000, CRC(ed1a5bf2) SHA1(bd05388a125a0201a41af95fb2aa5fe1c8b0f270) ) |
| 2477 | 2581 | |
| 2478 | | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2479 | | ROM_LOAD( "ff2cguu.5b", 0x0000000, 0x400000, CRC(595deee4) SHA1(b29ff9c6ba17737f1f87c05b2d899d80b0b72dbb) ) |
| 2480 | | ROM_LOAD( "ff2cgum.6b", 0x0800000, 0x400000, CRC(b808be59) SHA1(906bfbb5d34feef9697da545a93930fe6e56685c) ) |
| 2481 | | ROM_LOAD( "ff2cgll.8b", 0x1000000, 0x400000, CRC(8e6c34eb) SHA1(795631c8019011246ed1e5546de4433dc22dd9e7) ) |
| 2482 | | ROM_LOAD( "ff2cglm.7b", 0x1800000, 0x400000, CRC(406f321b) SHA1(41a2b0229d5370f141b9d6a4e1801e2f9973f660) ) |
| 2582 | ROM_REGION( 0x1000000, "textile", 0 ) /* texture tiles */ |
| 2583 | ROM_LOAD( "ff2cgll.8b", 0x0000000, 0x400000, CRC(8e6c34eb) SHA1(795631c8019011246ed1e5546de4433dc22dd9e7) ) |
| 2584 | ROM_LOAD( "ff2cglm.7b", 0x0400000, 0x400000, CRC(406f321b) SHA1(41a2b0229d5370f141b9d6a4e1801e2f9973f660) ) |
| 2585 | ROM_LOAD( "ff2cgum.6b", 0x0800000, 0x400000, CRC(b808be59) SHA1(906bfbb5d34feef9697da545a93930fe6e56685c) ) |
| 2586 | ROM_LOAD( "ff2cguu.5b", 0x0c00000, 0x400000, CRC(595deee4) SHA1(b29ff9c6ba17737f1f87c05b2d899d80b0b72dbb) ) |
| 2483 | 2587 | |
| 2484 | | ROM_REGION( 0x2000000, "textiledup", 0 ) /* duplicate bank of texture tiles */ |
| 2485 | | ROM_LOAD( "ff2cguu.5f", 0x0000000, 0x400000, CRC(595deee4) SHA1(b29ff9c6ba17737f1f87c05b2d899d80b0b72dbb) ) |
| 2486 | | ROM_LOAD( "ff2cgum.6f", 0x0800000, 0x400000, CRC(b808be59) SHA1(906bfbb5d34feef9697da545a93930fe6e56685c) ) |
| 2487 | | ROM_LOAD( "ff2cgll.8f", 0x1000000, 0x400000, CRC(8e6c34eb) SHA1(795631c8019011246ed1e5546de4433dc22dd9e7) ) |
| 2488 | | ROM_LOAD( "ff2cglm.7f", 0x1800000, 0x400000, CRC(406f321b) SHA1(41a2b0229d5370f141b9d6a4e1801e2f9973f660) ) |
| 2588 | ROM_REGION( 0x1000000, "sprites", 0 ) /* texture tiles bank 2? */ |
| 2589 | ROM_LOAD( "ff2sprll.12t", 0x0000000, 0x400000, CRC(1b305a13) SHA1(3d213a77b7a019fe4511097e7a27aa0688a3a586) ) |
| 2590 | ROM_LOAD( "ff2sprlm.11p", 0x0400000, 0x400000, CRC(421a8fbf) SHA1(8bd6f3e1ac9c7b0ac9d25dfbce35f5b7a5d5bcc7) ) |
| 2591 | ROM_LOAD( "ff2sprum.10p", 0x0800000, 0x400000, CRC(cb53c03e) SHA1(c39a44cad240c5b77c235c07ea700f9847ab9482) ) |
| 2592 | ROM_LOAD( "ff2spruu.9p", 0x0c00000, 0x400000, CRC(c134b0de) SHA1(cea9d9f4ce2f45a93c797ed467d8458521db9b3d) ) |
| 2489 | 2593 | |
| 2490 | | ROM_REGION( 0x4000000, "textile2", 0 ) /* texture tiles bank 2? */ |
| 2491 | | ROM_LOAD( "ff2spruu.9p", 0x0000000, 0x400000, CRC(c134b0de) SHA1(cea9d9f4ce2f45a93c797ed467d8458521db9b3d) ) |
| 2492 | | ROM_LOAD( "ff2sprum.10p", 0x0800000, 0x400000, CRC(cb53c03e) SHA1(c39a44cad240c5b77c235c07ea700f9847ab9482) ) |
| 2493 | | ROM_LOAD( "ff2sprll.12t", 0x1000000, 0x400000, CRC(1b305a13) SHA1(3d213a77b7a019fe4511097e7a27aa0688a3a586) ) |
| 2494 | | ROM_LOAD( "ff2sprlm.11p", 0x1800000, 0x400000, CRC(421a8fbf) SHA1(8bd6f3e1ac9c7b0ac9d25dfbce35f5b7a5d5bcc7) ) |
| 2594 | ROM_REGION16_LE( 0x200000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2595 | ROM_LOAD( "ff2ccrl.11a", 0x000000, 0x200000, CRC(f1f9e77c) SHA1(adf659a4671ea066817e6620b7d7d5f60f6e01e5) ) |
| 2495 | 2596 | |
| 2496 | | ROM_REGION( 0x2000000, "textile2d", 0 ) /* duplicate of texture tiles bank 2? */ |
| 2497 | | ROM_LOAD( "ff2spruu.9t", 0x0000000, 0x400000, CRC(c134b0de) SHA1(cea9d9f4ce2f45a93c797ed467d8458521db9b3d) ) |
| 2498 | | ROM_LOAD( "ff2sprum.10t", 0x0800000, 0x400000, CRC(cb53c03e) SHA1(c39a44cad240c5b77c235c07ea700f9847ab9482) ) |
| 2499 | | ROM_LOAD( "ff2sprll.12p", 0x1000000, 0x400000, CRC(1b305a13) SHA1(3d213a77b7a019fe4511097e7a27aa0688a3a586) ) |
| 2500 | | ROM_LOAD( "ff2sprlm.11t", 0x1800000, 0x400000, CRC(421a8fbf) SHA1(8bd6f3e1ac9c7b0ac9d25dfbce35f5b7a5d5bcc7) ) |
| 2597 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2598 | ROM_LOAD( "ff2ccrh.11b", 0x000000, 0x200000, CRC(71228c61) SHA1(b39d0b51f36c0d00a6144ae20613bebee3ed22bc) ) |
| 2501 | 2599 | |
| 2502 | | ROM_REGION( 0x400000, "textilemap", 0 ) /* texture tilemap */ |
| 2503 | | ROM_LOAD( "ff2ccrl.11a", 0x000000, 0x200000, CRC(f1f9e77c) SHA1(adf659a4671ea066817e6620b7d7d5f60f6e01e5) ) |
| 2504 | | ROM_LOAD( "ff2ccrh.11b", 0x200000, 0x200000, CRC(71228c61) SHA1(b39d0b51f36c0d00a6144ae20613bebee3ed22bc) ) |
| 2600 | ROM_REGION32_BE( 0x800000, "pointrom", 0 ) /* 3D model data */ |
| 2601 | ROM_LOAD32_WORD_SWAP( "ff2pt0h.9l", 0x000000, 0x400000, CRC(344ce7a5) SHA1(79d2c4495b47592be4dee6e39294dd3194eb1d5f) ) |
| 2602 | ROM_LOAD32_WORD_SWAP( "ff2pt0l.9j", 0x000002, 0x400000, CRC(7eeda441) SHA1(78648559abec5e1f04622cd1cfd5d94bddda7dbf) ) |
| 2505 | 2603 | |
| 2506 | | ROM_REGION( 0x400000, "textilemp2", 0 ) /* duplicate texture tilemap */ |
| 2507 | | ROM_LOAD( "ff2ccrl.11e", 0x000000, 0x200000, CRC(f1f9e77c) SHA1(adf659a4671ea066817e6620b7d7d5f60f6e01e5) ) |
| 2508 | | ROM_LOAD( "ff2ccrh.11f", 0x000000, 0x200000, CRC(71228c61) SHA1(b39d0b51f36c0d00a6144ae20613bebee3ed22bc) ) |
| 2604 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2605 | ROM_LOAD( "ff2wavel.2s", 0x000000, 0x800000, CRC(6235c605) SHA1(521eaee80ac17c0936877d49394e5390fa0ff8a0) ) |
| 2606 | ROM_LOAD( "ff2waveh.3s", 0x800000, 0x800000, CRC(2a59492a) SHA1(886ec0a4a71048d65f93c52df96416e74d23b3ec) ) |
| 2509 | 2607 | |
| 2510 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2511 | | ROM_LOAD32_WORD( "ff2pt0l.9j", 0x000000, 0x400000, CRC(7eeda441) SHA1(78648559abec5e1f04622cd1cfd5d94bddda7dbf) ) |
| 2512 | | ROM_LOAD32_WORD( "ff2pt0h.9l", 0x000002, 0x400000, CRC(344ce7a5) SHA1(79d2c4495b47592be4dee6e39294dd3194eb1d5f) ) |
| 2513 | | |
| 2514 | | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2515 | | ROM_LOAD( "ff2wavel.2s", 0x000000, 0x800000, CRC(6235c605) SHA1(521eaee80ac17c0936877d49394e5390fa0ff8a0) ) |
| 2516 | | ROM_LOAD( "ff2waveh.3s", 0x800000, 0x800000, CRC(2a59492a) SHA1(886ec0a4a71048d65f93c52df96416e74d23b3ec) ) |
| 2608 | ROM_REGION( 0x400000, "dups", 0 ) /* duplicate roms */ |
| 2609 | ROM_LOAD( "ff2cguu.5f", 0x000000, 0x400000, CRC(595deee4) SHA1(b29ff9c6ba17737f1f87c05b2d899d80b0b72dbb) ) |
| 2610 | ROM_LOAD( "ff2cgum.6f", 0x000000, 0x400000, CRC(b808be59) SHA1(906bfbb5d34feef9697da545a93930fe6e56685c) ) |
| 2611 | ROM_LOAD( "ff2cgll.8f", 0x000000, 0x400000, CRC(8e6c34eb) SHA1(795631c8019011246ed1e5546de4433dc22dd9e7) ) |
| 2612 | ROM_LOAD( "ff2cglm.7f", 0x000000, 0x400000, CRC(406f321b) SHA1(41a2b0229d5370f141b9d6a4e1801e2f9973f660) ) |
| 2613 | ROM_LOAD( "ff2spruu.9t", 0x000000, 0x400000, CRC(c134b0de) SHA1(cea9d9f4ce2f45a93c797ed467d8458521db9b3d) ) |
| 2614 | ROM_LOAD( "ff2sprum.10t", 0x000000, 0x400000, CRC(cb53c03e) SHA1(c39a44cad240c5b77c235c07ea700f9847ab9482) ) |
| 2615 | ROM_LOAD( "ff2sprll.12p", 0x000000, 0x400000, CRC(1b305a13) SHA1(3d213a77b7a019fe4511097e7a27aa0688a3a586) ) |
| 2616 | ROM_LOAD( "ff2sprlm.11t", 0x000000, 0x400000, CRC(421a8fbf) SHA1(8bd6f3e1ac9c7b0ac9d25dfbce35f5b7a5d5bcc7) ) |
| 2617 | ROM_LOAD( "ff2ccrl.11e", 0x000000, 0x200000, CRC(f1f9e77c) SHA1(adf659a4671ea066817e6620b7d7d5f60f6e01e5) ) |
| 2618 | ROM_LOAD( "ff2ccrh.11f", 0x000000, 0x200000, CRC(71228c61) SHA1(b39d0b51f36c0d00a6144ae20613bebee3ed22bc) ) |
| 2517 | 2619 | ROM_END |
| 2518 | 2620 | |
| 2519 | 2621 | ROM_START( motoxgo ) |
| 2520 | 2622 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2521 | | ROM_LOAD16_BYTE( "mg3vera.ic2", 0x000000, 0x200000, CRC(1bf06f00) SHA1(e9d04e9f19bff7a58cb280dd1d5db12801b68ba0) ) |
| 2522 | | ROM_LOAD16_BYTE( "mg3vera.ic1", 0x000001, 0x200000, CRC(f5e6e25b) SHA1(1de30e8e831be66987112645a9db3a3001b89fe6) ) |
| 2623 | ROM_LOAD16_BYTE( "mg3vera.ic2", 0x000000, 0x200000, CRC(1bf06f00) SHA1(e9d04e9f19bff7a58cb280dd1d5db12801b68ba0) ) |
| 2624 | ROM_LOAD16_BYTE( "mg3vera.ic1", 0x000001, 0x200000, CRC(f5e6e25b) SHA1(1de30e8e831be66987112645a9db3a3001b89fe6) ) |
| 2523 | 2625 | |
| 2524 | 2626 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2525 | | ROM_LOAD16_WORD_SWAP( "mg3vera.ic3", 0x000000, 0x080000, CRC(9e3d46a8) SHA1(9ffa5b91ea51cc0fb97def25ce47efa3441f3c6f) ) |
| 2627 | ROM_LOAD16_WORD_SWAP( "mg3vera.ic3", 0x000000, 0x080000, CRC(9e3d46a8) SHA1(9ffa5b91ea51cc0fb97def25ce47efa3441f3c6f) ) |
| 2526 | 2628 | |
| 2527 | 2629 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2528 | | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2630 | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2529 | 2631 | |
| 2530 | 2632 | ROM_REGION( 0x20000, "exioboard", 0 ) /* "extra" I/O board (uses Fujitsu MB90611A MCU) */ |
| 2531 | | ROM_LOAD( "mg1prog0a.3a", 0x000000, 0x020000, CRC(b2b5be8f) SHA1(803652b7b8fde2196b7fb742ba8b9843e4fcd2de) ) |
| 2633 | ROM_LOAD( "mg1prog0a.3a", 0x000000, 0x020000, CRC(b2b5be8f) SHA1(803652b7b8fde2196b7fb742ba8b9843e4fcd2de) ) |
| 2532 | 2634 | |
| 2533 | 2635 | ROM_REGION32_BE( 0x2000000, "data", ROMREGION_ERASEFF ) /* data roms */ |
| 2534 | | ROM_LOAD16_BYTE( "mg1mtah.2j", 0x000000, 0x800000, CRC(845f4768) SHA1(9c03b1f6dcd9d1f43c2958d855221be7f9415c47) ) |
| 2535 | | ROM_LOAD16_BYTE( "mg1mtal.2h", 0x000001, 0x800000, CRC(fdad0f0a) SHA1(420d50f012af40f80b196d3aae320376e6c32367) ) |
| 2636 | ROM_LOAD16_BYTE( "mg1mtah.2j", 0x000000, 0x800000, CRC(845f4768) SHA1(9c03b1f6dcd9d1f43c2958d855221be7f9415c47) ) |
| 2637 | ROM_LOAD16_BYTE( "mg1mtal.2h", 0x000001, 0x800000, CRC(fdad0f0a) SHA1(420d50f012af40f80b196d3aae320376e6c32367) ) |
| 2536 | 2638 | |
| 2537 | 2639 | ROM_REGION( 0x2000000, "textile", ROMREGION_ERASEFF ) /* texture tiles */ |
| 2538 | | ROM_LOAD( "mg1cgum.4j", 0x000000, 0x800000, CRC(46a77d73) SHA1(132ce2452ee68ba374e98b59032ac0a1a277078d) ) |
| 2539 | | ROM_LOAD( "mg1cgll.4m", 0x000000, 0x800000, CRC(175dfe34) SHA1(66ae35b0084159aea1afeb1a6486fffa635992b5) ) |
| 2540 | | ROM_LOAD( "mg1cglm.4k", 0x000000, 0x800000, CRC(b3e648e7) SHA1(98018ae2276f905a7f74e1dab540a44247524436) ) |
| 2640 | ROM_LOAD( "mg1cgll.4m", 0x0000000, 0x800000, CRC(175dfe34) SHA1(66ae35b0084159aea1afeb1a6486fffa635992b5) ) |
| 2641 | ROM_LOAD( "mg1cglm.4k", 0x0800000, 0x800000, CRC(b3e648e7) SHA1(98018ae2276f905a7f74e1dab540a44247524436) ) |
| 2642 | ROM_LOAD( "mg1cgum.4j", 0x1000000, 0x800000, CRC(46a77d73) SHA1(132ce2452ee68ba374e98b59032ac0a1a277078d) ) |
| 2541 | 2643 | |
| 2542 | | ROM_REGION( 0x2000000, "textile2", ROMREGION_ERASEFF ) /* second copy of texture tiles */ |
| 2543 | | ROM_LOAD( "mg1cgum.5j", 0x000000, 0x800000, CRC(46a77d73) SHA1(132ce2452ee68ba374e98b59032ac0a1a277078d) ) |
| 2544 | | ROM_LOAD( "mg1cgll.5m", 0x000000, 0x800000, CRC(175dfe34) SHA1(66ae35b0084159aea1afeb1a6486fffa635992b5) ) |
| 2545 | | ROM_LOAD( "mg1cglm.5k", 0x000000, 0x800000, CRC(b3e648e7) SHA1(98018ae2276f905a7f74e1dab540a44247524436) ) |
| 2644 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2645 | ROM_LOAD( "mg1ccrl.7f", 0x000000, 0x400000, CRC(5372e300) SHA1(63a49782289ed93a321ca7d193241fb83ca97e6b) ) |
| 2546 | 2646 | |
| 2547 | | ROM_REGION( 0x600000, "textilemap", ROMREGION_ERASEFF ) /* texture tilemap */ |
| 2548 | | ROM_LOAD( "mg1ccrl.7f", 0x000000, 0x400000, CRC(5372e300) SHA1(63a49782289ed93a321ca7d193241fb83ca97e6b) ) |
| 2549 | | ROM_LOAD( "mg1ccrh.7e", 0x400000, 0x200000, CRC(2e77597d) SHA1(58dd83c1b0c08115e728c5e7dea5e62135b821ba) ) |
| 2647 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2648 | ROM_LOAD( "mg1ccrh.7e", 0x000000, 0x200000, CRC(2e77597d) SHA1(58dd83c1b0c08115e728c5e7dea5e62135b821ba) ) |
| 2550 | 2649 | |
| 2551 | | ROM_REGION( 0x600000, "textilemap2", ROMREGION_ERASEFF) /* second copy of texture tilemap */ |
| 2552 | | ROM_LOAD( "mg1ccrl.7m", 0x000000, 0x400000, CRC(5372e300) SHA1(63a49782289ed93a321ca7d193241fb83ca97e6b) ) |
| 2553 | | ROM_LOAD( "mg1ccrh.7k", 0x400000, 0x200000, CRC(2e77597d) SHA1(58dd83c1b0c08115e728c5e7dea5e62135b821ba) ) |
| 2650 | ROM_REGION32_BE( 0x1000000, "pointrom", ROMREGION_ERASEFF ) /* 3D model data */ |
| 2651 | ROM_LOAD32_WORD( "mg1pt0h.7a", 0x000000, 0x400000, CRC(c9ba1b47) SHA1(42ec0638edb4c502ff0a340c4cf590bdd767cfe2) ) |
| 2652 | ROM_LOAD32_WORD( "mg1pt0l.7c", 0x000002, 0x400000, CRC(3b9e95d3) SHA1(d7823ed6c590669ccd4098ed439599a3eb814ed1) ) |
| 2653 | ROM_LOAD32_WORD( "mg1pt1l.5c", 0x800000, 0x400000, CRC(0dd2f358) SHA1(3537e6be3fec9fec8d5a8dd02d9cf67b3805f8f0) ) |
| 2654 | ROM_LOAD32_WORD( "mg1pt1h.5a", 0x800002, 0x400000, CRC(8d4f7097) SHA1(004e9ed0b5d6ce83ffadb9bd429fa7560abdb598) ) |
| 2554 | 2655 | |
| 2555 | | ROM_REGION32_LE( 0x2000000, "pointrom", ROMREGION_ERASEFF ) /* 3D model data */ |
| 2556 | | ROM_LOAD32_WORD( "mg1pt0l.7c", 0x000000, 0x400000, CRC(3b9e95d3) SHA1(d7823ed6c590669ccd4098ed439599a3eb814ed1) ) |
| 2557 | | ROM_LOAD32_WORD( "mg1pt0h.7a", 0x000002, 0x400000, CRC(c9ba1b47) SHA1(42ec0638edb4c502ff0a340c4cf590bdd767cfe2) ) |
| 2558 | | ROM_LOAD32_WORD( "mg1pt1h.5a", 0x800000, 0x400000, CRC(8d4f7097) SHA1(004e9ed0b5d6ce83ffadb9bd429fa7560abdb598) ) |
| 2559 | | ROM_LOAD32_WORD( "mg1pt1l.5c", 0x800002, 0x400000, CRC(0dd2f358) SHA1(3537e6be3fec9fec8d5a8dd02d9cf67b3805f8f0) ) |
| 2656 | ROM_REGION( 0x1000000, "c352", ROMREGION_ERASEFF ) /* C352 PCM samples */ |
| 2657 | ROM_LOAD( "mg1wavel.2c", 0x000000, 0x800000, CRC(f78b1b4d) SHA1(47cd654ec0a69de0dc81b8d83692eebf5611228b) ) |
| 2658 | ROM_LOAD( "mg1waveh.2a", 0x800000, 0x800000, CRC(8cb73877) SHA1(2e2b170c7ff889770c13b4ab7ac316b386ada153) ) |
| 2560 | 2659 | |
| 2561 | | ROM_REGION( 0x1000000, "c352", ROMREGION_ERASEFF ) /* C352 PCM samples */ |
| 2562 | | ROM_LOAD( "mg1wavel.2c", 0x000000, 0x800000, CRC(f78b1b4d) SHA1(47cd654ec0a69de0dc81b8d83692eebf5611228b) ) |
| 2563 | | ROM_LOAD( "mg1waveh.2a", 0x800000, 0x800000, CRC(8cb73877) SHA1(2e2b170c7ff889770c13b4ab7ac316b386ada153) ) |
| 2660 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 2661 | ROM_LOAD( "mg1cgll.5m", 0x000000, 0x800000, CRC(175dfe34) SHA1(66ae35b0084159aea1afeb1a6486fffa635992b5) ) |
| 2662 | ROM_LOAD( "mg1cglm.5k", 0x000000, 0x800000, CRC(b3e648e7) SHA1(98018ae2276f905a7f74e1dab540a44247524436) ) |
| 2663 | ROM_LOAD( "mg1cgum.5j", 0x000000, 0x800000, CRC(46a77d73) SHA1(132ce2452ee68ba374e98b59032ac0a1a277078d) ) |
| 2664 | ROM_LOAD( "mg1ccrl.7m", 0x000000, 0x400000, CRC(5372e300) SHA1(63a49782289ed93a321ca7d193241fb83ca97e6b) ) |
| 2665 | ROM_LOAD( "mg1ccrh.7k", 0x400000, 0x200000, CRC(2e77597d) SHA1(58dd83c1b0c08115e728c5e7dea5e62135b821ba) ) |
| 2564 | 2666 | ROM_END |
| 2565 | 2667 | |
| 2566 | 2668 | ROM_START( timecrs2 ) |
| 2567 | 2669 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2568 | | ROM_LOAD16_BYTE( "tss3verb.2", 0x000000, 0x200000, CRC(c7be691f) SHA1(5e2e7a0db3d8ce6dfeb6c0d99e9fe6a9f9cab467) ) |
| 2569 | | ROM_LOAD16_BYTE( "tss3verb.1", 0x000001, 0x200000, CRC(6e3f232b) SHA1(8007d8f31a605a5df89938d7c9f9d3d209c934be) ) |
| 2670 | ROM_LOAD16_BYTE( "tss3verb.2", 0x000000, 0x200000, CRC(c7be691f) SHA1(5e2e7a0db3d8ce6dfeb6c0d99e9fe6a9f9cab467) ) |
| 2671 | ROM_LOAD16_BYTE( "tss3verb.1", 0x000001, 0x200000, CRC(6e3f232b) SHA1(8007d8f31a605a5df89938d7c9f9d3d209c934be) ) |
| 2570 | 2672 | |
| 2571 | 2673 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2572 | | ROM_LOAD16_WORD_SWAP( "tss3verb.3", 0x000000, 0x080000, CRC(41e41994) SHA1(eabc1a307c329070bfc6486cb68169c94ff8a162) ) |
| 2674 | ROM_LOAD16_WORD_SWAP( "tss3verb.3", 0x000000, 0x080000, CRC(41e41994) SHA1(eabc1a307c329070bfc6486cb68169c94ff8a162) ) |
| 2573 | 2675 | |
| 2574 | 2676 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2575 | 2677 | ROM_LOAD( "tssioprog.ic3", 0x000000, 0x040000, CRC(edad4538) SHA1(1330189184a636328d956c0e435f8d9ad2e96a80) ) |
| 2576 | 2678 | |
| 2577 | 2679 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2578 | | ROM_LOAD16_BYTE( "tss1mtah.2j", 0x0000000, 0x800000, CRC(697c26ed) SHA1(72f6f69e89496ba0c6183b35c3bde71f5a3c721f) ) |
| 2579 | | ROM_LOAD16_BYTE( "tss1mtal.2h", 0x0000001, 0x800000, CRC(bfc79190) SHA1(04bda00c4cc5660d27af4f3b0ee3550dea8d3805) ) |
| 2580 | | ROM_LOAD16_BYTE( "tss1mtbh.2m", 0x1000000, 0x800000, CRC(82582776) SHA1(7c790d09bac660ea1c62da3ffb21ab43f2461594) ) |
| 2581 | | ROM_LOAD16_BYTE( "tss1mtbl.2f", 0x1000001, 0x800000, CRC(e648bea4) SHA1(3803d03e72b25fbcc124d5b25066d25629b76b94) ) |
| 2680 | ROM_LOAD16_BYTE( "tss1mtah.2j", 0x0000000, 0x800000, CRC(697c26ed) SHA1(72f6f69e89496ba0c6183b35c3bde71f5a3c721f) ) |
| 2681 | ROM_LOAD16_BYTE( "tss1mtal.2h", 0x0000001, 0x800000, CRC(bfc79190) SHA1(04bda00c4cc5660d27af4f3b0ee3550dea8d3805) ) |
| 2682 | ROM_LOAD16_BYTE( "tss1mtbh.2m", 0x1000000, 0x800000, CRC(82582776) SHA1(7c790d09bac660ea1c62da3ffb21ab43f2461594) ) |
| 2683 | ROM_LOAD16_BYTE( "tss1mtbl.2f", 0x1000001, 0x800000, CRC(e648bea4) SHA1(3803d03e72b25fbcc124d5b25066d25629b76b94) ) |
| 2582 | 2684 | |
| 2583 | 2685 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2584 | | ROM_LOAD( "tss1cguu.4f", 0x0000000, 0x800000, CRC(76924e04) SHA1(751065d6ce658cbbcd88f854f6937ebd2204ec68) ) |
| 2585 | | ROM_LOAD( "tss1cgum.4j", 0x0800000, 0x800000, CRC(c22739e1) SHA1(8671ee047bb248033656c50befd1c35e5e478e1a) ) |
| 2586 | | ROM_LOAD( "tss1cgll.4m", 0x1000000, 0x800000, CRC(18433aaa) SHA1(08539beb2e66ec4e41062621fc098b121c669546) ) |
| 2587 | | ROM_LOAD( "tss1cglm.4k", 0x1800000, 0x800000, CRC(669974c2) SHA1(cfebe199631e38f547b38fcd35f1645b74e8dd0a) ) |
| 2686 | ROM_LOAD( "tss1cgll.4m", 0x0000000, 0x800000, CRC(18433aaa) SHA1(08539beb2e66ec4e41062621fc098b121c669546) ) |
| 2687 | ROM_LOAD( "tss1cglm.4k", 0x0800000, 0x800000, CRC(669974c2) SHA1(cfebe199631e38f547b38fcd35f1645b74e8dd0a) ) |
| 2688 | ROM_LOAD( "tss1cgum.4j", 0x1000000, 0x800000, CRC(c22739e1) SHA1(8671ee047bb248033656c50befd1c35e5e478e1a) ) |
| 2689 | ROM_LOAD( "tss1cguu.4f", 0x1800000, 0x800000, CRC(76924e04) SHA1(751065d6ce658cbbcd88f854f6937ebd2204ec68) ) |
| 2588 | 2690 | |
| 2589 | | ROM_REGION( 0x600000, "textilemap", 0 ) /* texture tilemap */ |
| 2590 | | ROM_LOAD( "tss1ccrl.7f", 0x000000, 0x400000, CRC(3a325fe7) SHA1(882735dce7aeb36f9e88a983498360f5de901e9d) ) |
| 2591 | | ROM_LOAD( "tss1ccrh.7e", 0x400000, 0x200000, CRC(f998de1a) SHA1(371f540f505608297c5ffcfb623b983ca8310afb) ) |
| 2691 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2692 | ROM_LOAD( "tss1ccrl.7f", 0x000000, 0x400000, CRC(3a325fe7) SHA1(882735dce7aeb36f9e88a983498360f5de901e9d) ) |
| 2592 | 2693 | |
| 2593 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2594 | | ROM_LOAD32_WORD( "tss1pt0l.7c", 0x0000000, 0x400000, CRC(896f0fb4) SHA1(bdfa99eb21ce4fc8021f9d95a5558a34f9942c57) ) |
| 2595 | | ROM_LOAD32_WORD( "tss1pt0h.7a", 0x0000002, 0x400000, CRC(cdbe0ba8) SHA1(f8c6da31654c0a2a8024888ffb7fc1c783b2d629) ) |
| 2596 | | ROM_LOAD32_WORD( "tss1pt1l.5c", 0x0800000, 0x400000, CRC(5a09921f) SHA1(c23885708c7adf0b81c2c9346e21b869634a5b35) ) |
| 2597 | | ROM_LOAD32_WORD( "tss1pt1h.5a", 0x0800002, 0x400000, CRC(63647596) SHA1(833412be8f61686bd7e06c2738df740e0e585d0f) ) |
| 2598 | | ROM_LOAD32_WORD( "tss1pt2l.4c", 0x1000000, 0x400000, CRC(4b230d79) SHA1(794cee0a19993e90913f58507c53224f361e9663) ) |
| 2599 | | ROM_LOAD32_WORD( "tss1pt2h.4a", 0x1000002, 0x400000, CRC(9b06e22d) SHA1(cff5ed098112a4f0a2bc8937e226f50066e605b1) ) |
| 2694 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2695 | ROM_LOAD( "tss1ccrh.7e", 0x000000, 0x200000, CRC(f998de1a) SHA1(371f540f505608297c5ffcfb623b983ca8310afb) ) |
| 2600 | 2696 | |
| 2697 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2698 | ROM_LOAD32_WORD_SWAP( "tss1pt0h.7a", 0x0000000, 0x400000, CRC(cdbe0ba8) SHA1(f8c6da31654c0a2a8024888ffb7fc1c783b2d629) ) |
| 2699 | ROM_LOAD32_WORD_SWAP( "tss1pt0l.7c", 0x0000002, 0x400000, CRC(896f0fb4) SHA1(bdfa99eb21ce4fc8021f9d95a5558a34f9942c57) ) |
| 2700 | ROM_LOAD32_WORD_SWAP( "tss1pt1h.5a", 0x0800000, 0x400000, CRC(63647596) SHA1(833412be8f61686bd7e06c2738df740e0e585d0f) ) |
| 2701 | ROM_LOAD32_WORD_SWAP( "tss1pt1l.5c", 0x0800002, 0x400000, CRC(5a09921f) SHA1(c23885708c7adf0b81c2c9346e21b869634a5b35) ) |
| 2702 | ROM_LOAD32_WORD_SWAP( "tss1pt2h.4a", 0x1000000, 0x400000, CRC(9b06e22d) SHA1(cff5ed098112a4f0a2bc8937e226f50066e605b1) ) |
| 2703 | ROM_LOAD32_WORD_SWAP( "tss1pt2l.4c", 0x1000002, 0x400000, CRC(4b230d79) SHA1(794cee0a19993e90913f58507c53224f361e9663) ) |
| 2704 | |
| 2601 | 2705 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2602 | | ROM_LOAD( "tss1wavel.2c", 0x000000, 0x800000, CRC(deaead26) SHA1(72dac0c3f41d4c3c290f9eb1b50236ae3040a472) ) |
| 2603 | | ROM_LOAD( "tss1waveh.2a", 0x800000, 0x800000, CRC(5c8758b4) SHA1(b85c8f6869900224ef83a2340b17f5bbb2801af9) ) |
| 2706 | ROM_LOAD( "tss1wavel.2c", 0x000000, 0x800000, CRC(deaead26) SHA1(72dac0c3f41d4c3c290f9eb1b50236ae3040a472) ) |
| 2707 | ROM_LOAD( "tss1waveh.2a", 0x800000, 0x800000, CRC(5c8758b4) SHA1(b85c8f6869900224ef83a2340b17f5bbb2801af9) ) |
| 2604 | 2708 | ROM_END |
| 2605 | 2709 | |
| 2606 | 2710 | ROM_START( timecrs2b ) |
| 2607 | 2711 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2608 | | ROM_LOAD16_BYTE( "tss2verb.ic2", 0x000000, 0x200000, CRC(9f56a4df) SHA1(5ecb3cd93726ab6be02762853fd6a45266d6c0bc) ) |
| 2609 | | ROM_LOAD16_BYTE( "tss2verb.ic1", 0x000001, 0x200000, CRC(aa147f71) SHA1(e00267d1a8286942c83dc35289ad65bd3cb6d8db) ) |
| 2712 | ROM_LOAD16_BYTE( "tss2verb.ic2", 0x000000, 0x200000, CRC(9f56a4df) SHA1(5ecb3cd93726ab6be02762853fd6a45266d6c0bc) ) |
| 2713 | ROM_LOAD16_BYTE( "tss2verb.ic1", 0x000001, 0x200000, CRC(aa147f71) SHA1(e00267d1a8286942c83dc35289ad65bd3cb6d8db) ) |
| 2610 | 2714 | |
| 2611 | 2715 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2612 | | ROM_LOAD16_WORD_SWAP( "tss3verb.3", 0x000000, 0x080000, CRC(41e41994) SHA1(eabc1a307c329070bfc6486cb68169c94ff8a162) ) |
| 2716 | ROM_LOAD16_WORD_SWAP( "tss3verb.3", 0x000000, 0x080000, CRC(41e41994) SHA1(eabc1a307c329070bfc6486cb68169c94ff8a162) ) |
| 2613 | 2717 | |
| 2614 | 2718 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2615 | 2719 | ROM_LOAD( "tssioprog.ic3", 0x000000, 0x040000, CRC(edad4538) SHA1(1330189184a636328d956c0e435f8d9ad2e96a80) ) |
| 2616 | 2720 | |
| 2617 | 2721 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2618 | | ROM_LOAD16_BYTE( "tss1mtah.2j", 0x0000000, 0x800000, CRC(697c26ed) SHA1(72f6f69e89496ba0c6183b35c3bde71f5a3c721f) ) |
| 2619 | | ROM_LOAD16_BYTE( "tss1mtal.2h", 0x0000001, 0x800000, CRC(bfc79190) SHA1(04bda00c4cc5660d27af4f3b0ee3550dea8d3805) ) |
| 2620 | | ROM_LOAD16_BYTE( "tss1mtbh.2m", 0x1000000, 0x800000, CRC(82582776) SHA1(7c790d09bac660ea1c62da3ffb21ab43f2461594) ) |
| 2621 | | ROM_LOAD16_BYTE( "tss1mtbl.2f", 0x1000001, 0x800000, CRC(e648bea4) SHA1(3803d03e72b25fbcc124d5b25066d25629b76b94) ) |
| 2722 | ROM_LOAD16_BYTE( "tss1mtah.2j", 0x0000000, 0x800000, CRC(697c26ed) SHA1(72f6f69e89496ba0c6183b35c3bde71f5a3c721f) ) |
| 2723 | ROM_LOAD16_BYTE( "tss1mtal.2h", 0x0000001, 0x800000, CRC(bfc79190) SHA1(04bda00c4cc5660d27af4f3b0ee3550dea8d3805) ) |
| 2724 | ROM_LOAD16_BYTE( "tss1mtbh.2m", 0x1000000, 0x800000, CRC(82582776) SHA1(7c790d09bac660ea1c62da3ffb21ab43f2461594) ) |
| 2725 | ROM_LOAD16_BYTE( "tss1mtbl.2f", 0x1000001, 0x800000, CRC(e648bea4) SHA1(3803d03e72b25fbcc124d5b25066d25629b76b94) ) |
| 2622 | 2726 | |
| 2623 | 2727 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2624 | | ROM_LOAD( "tss1cguu.4f", 0x0000000, 0x800000, CRC(76924e04) SHA1(751065d6ce658cbbcd88f854f6937ebd2204ec68) ) |
| 2625 | | ROM_LOAD( "tss1cgum.4j", 0x0800000, 0x800000, CRC(c22739e1) SHA1(8671ee047bb248033656c50befd1c35e5e478e1a) ) |
| 2626 | | ROM_LOAD( "tss1cgll.4m", 0x1000000, 0x800000, CRC(18433aaa) SHA1(08539beb2e66ec4e41062621fc098b121c669546) ) |
| 2627 | | ROM_LOAD( "tss1cglm.4k", 0x1800000, 0x800000, CRC(669974c2) SHA1(cfebe199631e38f547b38fcd35f1645b74e8dd0a) ) |
| 2728 | ROM_LOAD( "tss1cgll.4m", 0x0000000, 0x800000, CRC(18433aaa) SHA1(08539beb2e66ec4e41062621fc098b121c669546) ) |
| 2729 | ROM_LOAD( "tss1cglm.4k", 0x0800000, 0x800000, CRC(669974c2) SHA1(cfebe199631e38f547b38fcd35f1645b74e8dd0a) ) |
| 2730 | ROM_LOAD( "tss1cgum.4j", 0x1000000, 0x800000, CRC(c22739e1) SHA1(8671ee047bb248033656c50befd1c35e5e478e1a) ) |
| 2731 | ROM_LOAD( "tss1cguu.4f", 0x1800000, 0x800000, CRC(76924e04) SHA1(751065d6ce658cbbcd88f854f6937ebd2204ec68) ) |
| 2628 | 2732 | |
| 2629 | | ROM_REGION( 0x600000, "textilemap", 0 ) /* texture tilemap */ |
| 2630 | | ROM_LOAD( "tss1ccrl.7f", 0x000000, 0x400000, CRC(3a325fe7) SHA1(882735dce7aeb36f9e88a983498360f5de901e9d) ) |
| 2631 | | ROM_LOAD( "tss1ccrh.7e", 0x400000, 0x200000, CRC(f998de1a) SHA1(371f540f505608297c5ffcfb623b983ca8310afb) ) |
| 2733 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2734 | ROM_LOAD( "tss1ccrl.7f", 0x000000, 0x400000, CRC(3a325fe7) SHA1(882735dce7aeb36f9e88a983498360f5de901e9d) ) |
| 2632 | 2735 | |
| 2633 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2634 | | ROM_LOAD32_WORD( "tss1pt0l.7c", 0x0000000, 0x400000, CRC(896f0fb4) SHA1(bdfa99eb21ce4fc8021f9d95a5558a34f9942c57) ) |
| 2635 | | ROM_LOAD32_WORD( "tss1pt0h.7a", 0x0000002, 0x400000, CRC(cdbe0ba8) SHA1(f8c6da31654c0a2a8024888ffb7fc1c783b2d629) ) |
| 2636 | | ROM_LOAD32_WORD( "tss1pt1l.5c", 0x0800000, 0x400000, CRC(5a09921f) SHA1(c23885708c7adf0b81c2c9346e21b869634a5b35) ) |
| 2637 | | ROM_LOAD32_WORD( "tss1pt1h.5a", 0x0800002, 0x400000, CRC(63647596) SHA1(833412be8f61686bd7e06c2738df740e0e585d0f) ) |
| 2638 | | ROM_LOAD32_WORD( "tss1pt2l.4c", 0x1000000, 0x400000, CRC(4b230d79) SHA1(794cee0a19993e90913f58507c53224f361e9663) ) |
| 2639 | | ROM_LOAD32_WORD( "tss1pt2h.4a", 0x1000002, 0x400000, CRC(9b06e22d) SHA1(cff5ed098112a4f0a2bc8937e226f50066e605b1) ) |
| 2736 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2737 | ROM_LOAD( "tss1ccrh.7e", 0x000000, 0x200000, CRC(f998de1a) SHA1(371f540f505608297c5ffcfb623b983ca8310afb) ) |
| 2640 | 2738 | |
| 2739 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2740 | ROM_LOAD32_WORD_SWAP( "tss1pt0h.7a", 0x0000000, 0x400000, CRC(cdbe0ba8) SHA1(f8c6da31654c0a2a8024888ffb7fc1c783b2d629) ) |
| 2741 | ROM_LOAD32_WORD_SWAP( "tss1pt0l.7c", 0x0000002, 0x400000, CRC(896f0fb4) SHA1(bdfa99eb21ce4fc8021f9d95a5558a34f9942c57) ) |
| 2742 | ROM_LOAD32_WORD_SWAP( "tss1pt1h.5a", 0x0800000, 0x400000, CRC(63647596) SHA1(833412be8f61686bd7e06c2738df740e0e585d0f) ) |
| 2743 | ROM_LOAD32_WORD_SWAP( "tss1pt1l.5c", 0x0800002, 0x400000, CRC(5a09921f) SHA1(c23885708c7adf0b81c2c9346e21b869634a5b35) ) |
| 2744 | ROM_LOAD32_WORD_SWAP( "tss1pt2h.4a", 0x1000000, 0x400000, CRC(9b06e22d) SHA1(cff5ed098112a4f0a2bc8937e226f50066e605b1) ) |
| 2745 | ROM_LOAD32_WORD_SWAP( "tss1pt2l.4c", 0x1000002, 0x400000, CRC(4b230d79) SHA1(794cee0a19993e90913f58507c53224f361e9663) ) |
| 2746 | |
| 2641 | 2747 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2642 | | ROM_LOAD( "tss1wavel.2c", 0x000000, 0x800000, CRC(deaead26) SHA1(72dac0c3f41d4c3c290f9eb1b50236ae3040a472) ) |
| 2643 | | ROM_LOAD( "tss1waveh.2a", 0x800000, 0x800000, CRC(5c8758b4) SHA1(b85c8f6869900224ef83a2340b17f5bbb2801af9) ) |
| 2748 | ROM_LOAD( "tss1wavel.2c", 0x000000, 0x800000, CRC(deaead26) SHA1(72dac0c3f41d4c3c290f9eb1b50236ae3040a472) ) |
| 2749 | ROM_LOAD( "tss1waveh.2a", 0x800000, 0x800000, CRC(5c8758b4) SHA1(b85c8f6869900224ef83a2340b17f5bbb2801af9) ) |
| 2644 | 2750 | ROM_END |
| 2645 | 2751 | |
| 2646 | 2752 | ROM_START( timecrs2c ) |
| 2647 | 2753 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2648 | | ROM_LOAD16_BYTE( "tss4vera.2", 0x000000, 0x200000, CRC(c84edd3b) SHA1(0b577a8ef6e74afa991dd81c2db19041787724da) ) |
| 2649 | | ROM_LOAD16_BYTE( "tss4vera.1", 0x000001, 0x200000, CRC(26f57c83) SHA1(c8983c26b7524a35257a242b66a9413eb354ca0d) ) |
| 2754 | ROM_LOAD16_BYTE( "tss4vera.2", 0x000000, 0x200000, CRC(c84edd3b) SHA1(0b577a8ef6e74afa991dd81c2db19041787724da) ) |
| 2755 | ROM_LOAD16_BYTE( "tss4vera.1", 0x000001, 0x200000, CRC(26f57c83) SHA1(c8983c26b7524a35257a242b66a9413eb354ca0d) ) |
| 2650 | 2756 | |
| 2651 | 2757 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2652 | | ROM_LOAD16_WORD_SWAP( "tss4vera.3", 0x000000, 0x080000, CRC(41e41994) SHA1(eabc1a307c329070bfc6486cb68169c94ff8a162) ) |
| 2758 | ROM_LOAD16_WORD_SWAP( "tss4vera.3", 0x000000, 0x080000, CRC(41e41994) SHA1(eabc1a307c329070bfc6486cb68169c94ff8a162) ) |
| 2653 | 2759 | |
| 2654 | 2760 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2655 | 2761 | ROM_LOAD( "tssioprog.ic3", 0x000000, 0x040000, CRC(edad4538) SHA1(1330189184a636328d956c0e435f8d9ad2e96a80) ) |
| 2656 | 2762 | |
| 2657 | 2763 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2658 | | ROM_LOAD16_BYTE( "tss1mtah.2j", 0x0000000, 0x800000, CRC(697c26ed) SHA1(72f6f69e89496ba0c6183b35c3bde71f5a3c721f) ) |
| 2659 | | ROM_LOAD16_BYTE( "tss1mtal.2h", 0x0000001, 0x800000, CRC(bfc79190) SHA1(04bda00c4cc5660d27af4f3b0ee3550dea8d3805) ) |
| 2660 | | ROM_LOAD16_BYTE( "tss1mtbh.2m", 0x1000000, 0x800000, CRC(82582776) SHA1(7c790d09bac660ea1c62da3ffb21ab43f2461594) ) |
| 2661 | | ROM_LOAD16_BYTE( "tss1mtbl.2f", 0x1000001, 0x800000, CRC(e648bea4) SHA1(3803d03e72b25fbcc124d5b25066d25629b76b94) ) |
| 2764 | ROM_LOAD16_BYTE( "tss1mtah.2j", 0x0000000, 0x800000, CRC(697c26ed) SHA1(72f6f69e89496ba0c6183b35c3bde71f5a3c721f) ) |
| 2765 | ROM_LOAD16_BYTE( "tss1mtal.2h", 0x0000001, 0x800000, CRC(bfc79190) SHA1(04bda00c4cc5660d27af4f3b0ee3550dea8d3805) ) |
| 2766 | ROM_LOAD16_BYTE( "tss1mtbh.2m", 0x1000000, 0x800000, CRC(82582776) SHA1(7c790d09bac660ea1c62da3ffb21ab43f2461594) ) |
| 2767 | ROM_LOAD16_BYTE( "tss1mtbl.2f", 0x1000001, 0x800000, CRC(e648bea4) SHA1(3803d03e72b25fbcc124d5b25066d25629b76b94) ) |
| 2662 | 2768 | |
| 2663 | 2769 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2664 | | ROM_LOAD( "tss1cguu.4f", 0x0000000, 0x800000, CRC(76924e04) SHA1(751065d6ce658cbbcd88f854f6937ebd2204ec68) ) |
| 2665 | | ROM_LOAD( "tss1cgum.4j", 0x0800000, 0x800000, CRC(c22739e1) SHA1(8671ee047bb248033656c50befd1c35e5e478e1a) ) |
| 2666 | | ROM_LOAD( "tss1cgll.4m", 0x1000000, 0x800000, CRC(18433aaa) SHA1(08539beb2e66ec4e41062621fc098b121c669546) ) |
| 2667 | | ROM_LOAD( "tss1cglm.4k", 0x1800000, 0x800000, CRC(669974c2) SHA1(cfebe199631e38f547b38fcd35f1645b74e8dd0a) ) |
| 2770 | ROM_LOAD( "tss1cgll.4m", 0x0000000, 0x800000, CRC(18433aaa) SHA1(08539beb2e66ec4e41062621fc098b121c669546) ) |
| 2771 | ROM_LOAD( "tss1cglm.4k", 0x0800000, 0x800000, CRC(669974c2) SHA1(cfebe199631e38f547b38fcd35f1645b74e8dd0a) ) |
| 2772 | ROM_LOAD( "tss1cgum.4j", 0x1000000, 0x800000, CRC(c22739e1) SHA1(8671ee047bb248033656c50befd1c35e5e478e1a) ) |
| 2773 | ROM_LOAD( "tss1cguu.4f", 0x1800000, 0x800000, CRC(76924e04) SHA1(751065d6ce658cbbcd88f854f6937ebd2204ec68) ) |
| 2668 | 2774 | |
| 2669 | | ROM_REGION( 0x600000, "textilemap", 0 ) /* texture tilemap */ |
| 2670 | | ROM_LOAD( "tss1ccrl.7f", 0x000000, 0x400000, CRC(3a325fe7) SHA1(882735dce7aeb36f9e88a983498360f5de901e9d) ) |
| 2671 | | ROM_LOAD( "tss1ccrh.7e", 0x400000, 0x200000, CRC(f998de1a) SHA1(371f540f505608297c5ffcfb623b983ca8310afb) ) |
| 2775 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2776 | ROM_LOAD( "tss1ccrl.7f", 0x000000, 0x400000, CRC(3a325fe7) SHA1(882735dce7aeb36f9e88a983498360f5de901e9d) ) |
| 2672 | 2777 | |
| 2673 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2674 | | ROM_LOAD32_WORD( "tss1pt0l.7c", 0x0000000, 0x400000, CRC(896f0fb4) SHA1(bdfa99eb21ce4fc8021f9d95a5558a34f9942c57) ) |
| 2675 | | ROM_LOAD32_WORD( "tss1pt0h.7a", 0x0000002, 0x400000, CRC(cdbe0ba8) SHA1(f8c6da31654c0a2a8024888ffb7fc1c783b2d629) ) |
| 2676 | | ROM_LOAD32_WORD( "tss1pt1l.5c", 0x0800000, 0x400000, CRC(5a09921f) SHA1(c23885708c7adf0b81c2c9346e21b869634a5b35) ) |
| 2677 | | ROM_LOAD32_WORD( "tss1pt1h.5a", 0x0800002, 0x400000, CRC(63647596) SHA1(833412be8f61686bd7e06c2738df740e0e585d0f) ) |
| 2678 | | ROM_LOAD32_WORD( "tss1pt2l.4c", 0x1000000, 0x400000, CRC(4b230d79) SHA1(794cee0a19993e90913f58507c53224f361e9663) ) |
| 2679 | | ROM_LOAD32_WORD( "tss1pt2h.4a", 0x1000002, 0x400000, CRC(9b06e22d) SHA1(cff5ed098112a4f0a2bc8937e226f50066e605b1) ) |
| 2778 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2779 | ROM_LOAD( "tss1ccrh.7e", 0x000000, 0x200000, CRC(f998de1a) SHA1(371f540f505608297c5ffcfb623b983ca8310afb) ) |
| 2680 | 2780 | |
| 2781 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2782 | ROM_LOAD32_WORD_SWAP( "tss1pt0h.7a", 0x0000000, 0x400000, CRC(cdbe0ba8) SHA1(f8c6da31654c0a2a8024888ffb7fc1c783b2d629) ) |
| 2783 | ROM_LOAD32_WORD_SWAP( "tss1pt0l.7c", 0x0000002, 0x400000, CRC(896f0fb4) SHA1(bdfa99eb21ce4fc8021f9d95a5558a34f9942c57) ) |
| 2784 | ROM_LOAD32_WORD_SWAP( "tss1pt1h.5a", 0x0800000, 0x400000, CRC(63647596) SHA1(833412be8f61686bd7e06c2738df740e0e585d0f) ) |
| 2785 | ROM_LOAD32_WORD_SWAP( "tss1pt1l.5c", 0x0800002, 0x400000, CRC(5a09921f) SHA1(c23885708c7adf0b81c2c9346e21b869634a5b35) ) |
| 2786 | ROM_LOAD32_WORD_SWAP( "tss1pt2h.4a", 0x1000000, 0x400000, CRC(9b06e22d) SHA1(cff5ed098112a4f0a2bc8937e226f50066e605b1) ) |
| 2787 | ROM_LOAD32_WORD_SWAP( "tss1pt2l.4c", 0x1000002, 0x400000, CRC(4b230d79) SHA1(794cee0a19993e90913f58507c53224f361e9663) ) |
| 2788 | |
| 2681 | 2789 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2682 | | ROM_LOAD( "tss1wavel.2c", 0x000000, 0x800000, CRC(deaead26) SHA1(72dac0c3f41d4c3c290f9eb1b50236ae3040a472) ) |
| 2683 | | ROM_LOAD( "tss1waveh.2a", 0x800000, 0x800000, CRC(5c8758b4) SHA1(b85c8f6869900224ef83a2340b17f5bbb2801af9) ) |
| 2790 | ROM_LOAD( "tss1wavel.2c", 0x000000, 0x800000, CRC(deaead26) SHA1(72dac0c3f41d4c3c290f9eb1b50236ae3040a472) ) |
| 2791 | ROM_LOAD( "tss1waveh.2a", 0x800000, 0x800000, CRC(5c8758b4) SHA1(b85c8f6869900224ef83a2340b17f5bbb2801af9) ) |
| 2684 | 2792 | ROM_END |
| 2685 | 2793 | |
| 2686 | 2794 | ROM_START( 500gp ) |
| 2687 | 2795 | /* r4650-generic-xrom-generic: NMON 1.0.8-sys23-19990105 P for SYSTEM23 P1 */ |
| 2688 | 2796 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2689 | | ROM_LOAD16_BYTE( "5gp3verc.2", 0x000000, 0x200000, CRC(e2d43468) SHA1(5e861dd223c7fa177febed9803ac353cba18e19d) ) |
| 2690 | | ROM_LOAD16_BYTE( "5gp3verc.1", 0x000001, 0x200000, CRC(f6efc94a) SHA1(785eee2bec5080d4e8ef836f28d446328c942b0e) ) |
| 2797 | ROM_LOAD16_BYTE( "5gp3verc.2", 0x000000, 0x200000, CRC(e2d43468) SHA1(5e861dd223c7fa177febed9803ac353cba18e19d) ) |
| 2798 | ROM_LOAD16_BYTE( "5gp3verc.1", 0x000001, 0x200000, CRC(f6efc94a) SHA1(785eee2bec5080d4e8ef836f28d446328c942b0e) ) |
| 2691 | 2799 | |
| 2692 | 2800 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2693 | | ROM_LOAD16_WORD_SWAP( "5gp3verc.3", 0x000000, 0x080000, CRC(b323abdf) SHA1(8962e39b48a7074a2d492afb5db3f5f3e5ae2389) ) |
| 2801 | ROM_LOAD16_WORD_SWAP( "5gp3verc.3", 0x000000, 0x080000, CRC(b323abdf) SHA1(8962e39b48a7074a2d492afb5db3f5f3e5ae2389) ) |
| 2694 | 2802 | |
| 2695 | 2803 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2696 | | ROM_LOAD16_BYTE( "5gp1mtah.2j", 0x0000000, 0x800000, CRC(246e4b7a) SHA1(75743294b8f48bffb84f062febfbc02230d49ce9) ) |
| 2804 | ROM_LOAD16_BYTE( "5gp1mtah.2j", 0x0000000, 0x800000, CRC(246e4b7a) SHA1(75743294b8f48bffb84f062febfbc02230d49ce9) ) |
| 2697 | 2805 | ROM_LOAD16_BYTE( "5gp1mtal.2h", 0x0000001, 0x800000, CRC(1bb00c7b) SHA1(922be45d57330c31853b2dc1642c589952b09188) ) |
| 2698 | 2806 | |
| 2699 | 2807 | /* COMMON FUJII YASUI WAKAO KURE INOUE |
| 2700 | 2808 | * 0x000000..0x57ffff: all 0xff |
| 2701 | 2809 | */ |
| 2702 | | ROM_LOAD16_BYTE( "5gp1mtbl.2f", 0x1000000, 0x800000, CRC(66640606) SHA1(c69a0219748241c49315d7464f8156f8068e9cf5) ) |
| 2703 | | ROM_LOAD16_BYTE( "5gp1mtbh.2m", 0x1000001, 0x800000, CRC(352360e8) SHA1(d621dfac3385059c52d215f6623901589a8658a3) ) |
| 2810 | ROM_LOAD16_BYTE( "5gp1mtbl.2f", 0x1000000, 0x800000, CRC(66640606) SHA1(c69a0219748241c49315d7464f8156f8068e9cf5) ) |
| 2811 | ROM_LOAD16_BYTE( "5gp1mtbh.2m", 0x1000001, 0x800000, CRC(352360e8) SHA1(d621dfac3385059c52d215f6623901589a8658a3) ) |
| 2704 | 2812 | |
| 2705 | 2813 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2706 | | ROM_LOAD( "5gp1cguu.4f", 0x0000000, 0x800000, CRC(c411163b) SHA1(ae644d62357b8b806b160774043e41908fba5d05) ) |
| 2707 | | ROM_LOAD( "5gp1cgum.4j", 0x0800000, 0x800000, CRC(0265b701) SHA1(497a4c33311d3bb315100a78400cf2fa726f1483) ) |
| 2708 | | ROM_LOAD( "5gp1cgll.4m", 0x1000000, 0x800000, CRC(0cc5bf35) SHA1(b75510a94fa6b6d2ed43566e6e84c7ae62f68194) ) |
| 2709 | | ROM_LOAD( "5gp1cglm.4k", 0x1800000, 0x800000, CRC(31557d48) SHA1(b85c3db20b101ba6bdd77487af67c3324bea29d5) ) |
| 2814 | ROM_LOAD( "5gp1cgll.4m", 0x0000000, 0x800000, CRC(0cc5bf35) SHA1(b75510a94fa6b6d2ed43566e6e84c7ae62f68194) ) |
| 2815 | ROM_LOAD( "5gp1cglm.4k", 0x0800000, 0x800000, CRC(31557d48) SHA1(b85c3db20b101ba6bdd77487af67c3324bea29d5) ) |
| 2816 | ROM_LOAD( "5gp1cgum.4j", 0x1000000, 0x800000, CRC(0265b701) SHA1(497a4c33311d3bb315100a78400cf2fa726f1483) ) |
| 2817 | ROM_LOAD( "5gp1cguu.4f", 0x1800000, 0x800000, CRC(c411163b) SHA1(ae644d62357b8b806b160774043e41908fba5d05) ) |
| 2710 | 2818 | |
| 2711 | | ROM_REGION( 0x600000, "textilemap", 0 ) /* texture tilemap */ |
| 2712 | | ROM_LOAD( "5gp1ccrl.7f", 0x000000, 0x400000, CRC(e7c77e1f) SHA1(0231ddbe2afb880099dfe2657c41236c74c730bb) ) |
| 2713 | | ROM_LOAD( "5gp1ccrh.7e", 0x400000, 0x200000, CRC(b2eba764) SHA1(5e09d1171f0afdeb9ed7337df1dbc924f23d3a0b) ) |
| 2819 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2820 | ROM_LOAD( "5gp1ccrl.7f", 0x000000, 0x400000, CRC(e7c77e1f) SHA1(0231ddbe2afb880099dfe2657c41236c74c730bb) ) |
| 2714 | 2821 | |
| 2715 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2716 | | ROM_LOAD32_WORD( "5gp1pt0l.7c", 0x0000000, 0x400000, CRC(a0ece0a1) SHA1(b7aab2d78e1525f865214c7de387ccd585de5d34) ) |
| 2717 | | ROM_LOAD32_WORD( "5gp1pt0h.7a", 0x0000002, 0x400000, CRC(5746a8cd) SHA1(e70fc596ab9360f474f716c73d76cb9851370c76) ) |
| 2718 | | ROM_LOAD32_WORD( "5gp1pt1l.5c", 0x0800000, 0x400000, CRC(80b25ad2) SHA1(e9a03fe5bb4ce925f7218ab426ed2a1ca1a26a62) ) |
| 2719 | | ROM_LOAD32_WORD( "5gp1pt1h.5a", 0x0800002, 0x400000, CRC(b1feb5df) SHA1(45db259215511ac3e472895956f70204d4575482) ) |
| 2720 | | ROM_LOAD32_WORD( "5gp1pt2l.4c", 0x1000000, 0x400000, CRC(9289dbeb) SHA1(ec546ad3b1c90609591e599c760c70049ba3b581) ) |
| 2721 | | ROM_LOAD32_WORD( "5gp1pt2h.4a", 0x1000002, 0x400000, CRC(9a693771) SHA1(c988e04cd91c3b7e75b91376fd73be4a7da543e7) ) |
| 2722 | | ROM_LOAD32_WORD( "5gp1pt3l.3c", 0x1800000, 0x400000, CRC(480b120d) SHA1(6c703550faa412095d9633cf508050614e15fbae) ) |
| 2723 | | ROM_LOAD32_WORD( "5gp1pt3h.3a", 0x1800002, 0x400000, CRC(26eaa400) SHA1(0157b76fffe81b40eb970e84c98398807ced92c4) ) |
| 2822 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2823 | ROM_LOAD( "5gp1ccrh.7e", 0x000000, 0x200000, CRC(b2eba764) SHA1(5e09d1171f0afdeb9ed7337df1dbc924f23d3a0b) ) |
| 2724 | 2824 | |
| 2825 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2826 | ROM_LOAD32_WORD_SWAP( "5gp1pt0h.7a", 0x0000000, 0x400000, CRC(5746a8cd) SHA1(e70fc596ab9360f474f716c73d76cb9851370c76) ) |
| 2827 | ROM_LOAD32_WORD_SWAP( "5gp1pt0l.7c", 0x0000002, 0x400000, CRC(a0ece0a1) SHA1(b7aab2d78e1525f865214c7de387ccd585de5d34) ) |
| 2828 | ROM_LOAD32_WORD_SWAP( "5gp1pt1h.5a", 0x0800000, 0x400000, CRC(b1feb5df) SHA1(45db259215511ac3e472895956f70204d4575482) ) |
| 2829 | ROM_LOAD32_WORD_SWAP( "5gp1pt1l.5c", 0x0800002, 0x400000, CRC(80b25ad2) SHA1(e9a03fe5bb4ce925f7218ab426ed2a1ca1a26a62) ) |
| 2830 | ROM_LOAD32_WORD_SWAP( "5gp1pt2h.4a", 0x1000000, 0x400000, CRC(9a693771) SHA1(c988e04cd91c3b7e75b91376fd73be4a7da543e7) ) |
| 2831 | ROM_LOAD32_WORD_SWAP( "5gp1pt2l.4c", 0x1000002, 0x400000, CRC(9289dbeb) SHA1(ec546ad3b1c90609591e599c760c70049ba3b581) ) |
| 2832 | ROM_LOAD32_WORD_SWAP( "5gp1pt3h.3a", 0x1800000, 0x400000, CRC(26eaa400) SHA1(0157b76fffe81b40eb970e84c98398807ced92c4) ) |
| 2833 | ROM_LOAD32_WORD_SWAP( "5gp1pt3l.3c", 0x1800002, 0x400000, CRC(480b120d) SHA1(6c703550faa412095d9633cf508050614e15fbae) ) |
| 2834 | |
| 2725 | 2835 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2726 | | ROM_LOAD( "5gp1wavel.2c", 0x000000, 0x800000, CRC(aa634cc2) SHA1(e96f5c682039bc6ef22bf90e98f4da78486bd2b1) ) |
| 2727 | | ROM_LOAD( "5gp1waveh.2a", 0x800000, 0x800000, CRC(1e3523e8) SHA1(cb3d0d389fcbfb728fad29cfc36ef654d28d553a) ) |
| 2836 | ROM_LOAD( "5gp1wavel.2c", 0x000000, 0x800000, CRC(aa634cc2) SHA1(e96f5c682039bc6ef22bf90e98f4da78486bd2b1) ) |
| 2837 | ROM_LOAD( "5gp1waveh.2a", 0x800000, 0x800000, CRC(1e3523e8) SHA1(cb3d0d389fcbfb728fad29cfc36ef654d28d553a) ) |
| 2728 | 2838 | ROM_END |
| 2729 | 2839 | |
| 2730 | 2840 | ROM_START( finfurl2 ) |
| 2731 | 2841 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2732 | | ROM_LOAD16_BYTE( "29f016.ic2", 0x000000, 0x200000, CRC(13cbc545) SHA1(3e67a7bfbb1c1374e8e3996a0c09e4861b0dca14) ) |
| 2733 | | ROM_LOAD16_BYTE( "29f016.ic1", 0x000001, 0x200000, CRC(5b04e4f2) SHA1(8099fc3deab9ed14a2484a774666fbd928330de8) ) |
| 2842 | ROM_LOAD16_BYTE( "29f016.ic2", 0x000000, 0x200000, CRC(13cbc545) SHA1(3e67a7bfbb1c1374e8e3996a0c09e4861b0dca14) ) |
| 2843 | ROM_LOAD16_BYTE( "29f016.ic1", 0x000001, 0x200000, CRC(5b04e4f2) SHA1(8099fc3deab9ed14a2484a774666fbd928330de8) ) |
| 2734 | 2844 | |
| 2735 | 2845 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2736 | | ROM_LOAD16_WORD_SWAP( "m29f400.ic3", 0x000000, 0x080000, CRC(9fd69bbd) SHA1(53a9bf505de70495dcccc43fdc722b3381aad97c) ) |
| 2846 | ROM_LOAD16_WORD_SWAP( "m29f400.ic3", 0x000000, 0x080000, CRC(9fd69bbd) SHA1(53a9bf505de70495dcccc43fdc722b3381aad97c) ) |
| 2737 | 2847 | |
| 2738 | 2848 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2739 | | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2849 | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2740 | 2850 | |
| 2741 | 2851 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2742 | | ROM_LOAD16_BYTE( "ffs1mtah.2j", 0x0000000, 0x800000, CRC(f336d81d) SHA1(a9177091e1412dea1b6ea6c53530ae31361b32d0) ) |
| 2743 | | ROM_LOAD16_BYTE( "ffs1mtal.2h", 0x0000001, 0x800000, CRC(98730ad5) SHA1(9ba276ad88ec8730edbacab80cdacc34a99593e4) ) |
| 2744 | | ROM_LOAD16_BYTE( "ffs1mtbh.2m", 0x1000000, 0x800000, CRC(0f42c93b) SHA1(26b313fc5c33afb0a1ee42243486e38f052c95c2) ) |
| 2745 | | ROM_LOAD16_BYTE( "ffs1mtbl.2f", 0x1000001, 0x800000, CRC(0abc9e50) SHA1(be5e5e2b637811c59804ef9442c6da5a5a1315e2) ) |
| 2852 | ROM_LOAD16_BYTE( "ffs1mtah.2j", 0x0000000, 0x800000, CRC(f336d81d) SHA1(a9177091e1412dea1b6ea6c53530ae31361b32d0) ) |
| 2853 | ROM_LOAD16_BYTE( "ffs1mtal.2h", 0x0000001, 0x800000, CRC(98730ad5) SHA1(9ba276ad88ec8730edbacab80cdacc34a99593e4) ) |
| 2854 | ROM_LOAD16_BYTE( "ffs1mtbh.2m", 0x1000000, 0x800000, CRC(0f42c93b) SHA1(26b313fc5c33afb0a1ee42243486e38f052c95c2) ) |
| 2855 | ROM_LOAD16_BYTE( "ffs1mtbl.2f", 0x1000001, 0x800000, CRC(0abc9e50) SHA1(be5e5e2b637811c59804ef9442c6da5a5a1315e2) ) |
| 2746 | 2856 | |
| 2747 | 2857 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2748 | | ROM_LOAD( "ffs1cguu.4f", 0x0000000, 0x800000, CRC(52c0a19f) SHA1(e6b4b90ff88da09cb2e653e450e7ae66942a719e) ) |
| 2749 | | ROM_LOAD( "ffs1cgum.4j", 0x0800000, 0x800000, CRC(77447199) SHA1(1eeae30b3dd1ac467bdbbdfe4be36ca0f0816496) ) |
| 2750 | | ROM_LOAD( "ffs1cgll.4m", 0x1000000, 0x800000, CRC(171bba76) SHA1(4a63a1f34de8f341a0ef9b499a21e8fec758e1cd) ) |
| 2751 | | ROM_LOAD( "ffs1cglm.4k", 0x1800000, 0x800000, CRC(48acf207) SHA1(ea902efdd94aba34dadb20762219d2d25441d199) ) |
| 2858 | ROM_LOAD( "ffs1cgll.4m", 0x0000000, 0x800000, CRC(171bba76) SHA1(4a63a1f34de8f341a0ef9b499a21e8fec758e1cd) ) |
| 2859 | ROM_LOAD( "ffs1cglm.4k", 0x0800000, 0x800000, CRC(48acf207) SHA1(ea902efdd94aba34dadb20762219d2d25441d199) ) |
| 2860 | ROM_LOAD( "ffs1cgum.4j", 0x1000000, 0x800000, CRC(77447199) SHA1(1eeae30b3dd1ac467bdbbdfe4be36ca0f0816496) ) |
| 2861 | ROM_LOAD( "ffs1cguu.4f", 0x1800000, 0x800000, CRC(52c0a19f) SHA1(e6b4b90ff88da09cb2e653e450e7ae66942a719e) ) |
| 2752 | 2862 | |
| 2753 | | ROM_REGION( 0x400000, "textilemap", 0 ) /* texture tilemap */ |
| 2754 | | ROM_LOAD( "ffs1ccrl.7f", 0x000000, 0x200000, CRC(ffbcfec1) SHA1(9ab25f1543da4b72784eec93985abaa2e1dafc83) ) |
| 2755 | | ROM_LOAD( "ffs1ccrh.7e", 0x200000, 0x200000, CRC(8be4aeb4) SHA1(ec344f6fba42092083e737e436451f5d7be12c15) ) |
| 2863 | ROM_REGION16_LE( 0x200000, "textilemapl", 0 ) /* texture tilemap 0-15*/ |
| 2864 | ROM_LOAD( "ffs1ccrl.7f", 0x000000, 0x200000, CRC(ffbcfec1) SHA1(9ab25f1543da4b72784eec93985abaa2e1dafc83) ) |
| 2756 | 2865 | |
| 2866 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2867 | ROM_LOAD( "ffs1ccrh.7e", 0x000000, 0x200000, CRC(8be4aeb4) SHA1(ec344f6fba42092083e737e436451f5d7be12c15) ) |
| 2868 | |
| 2757 | 2869 | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2758 | | ROM_LOAD32_WORD( "ffs1pt0l.7c", 0x0000000, 0x400000, CRC(383cbfba) SHA1(0784ac2d709bee6653c95f80fedf7f98ca79357f) ) |
| 2759 | | ROM_LOAD32_WORD( "ffs1pt0h.7a", 0x0000002, 0x400000, CRC(79b9b019) SHA1(ca2bbabd949fec91001a30b63f7343520028cde0) ) |
| 2760 | | ROM_LOAD32_WORD( "ffs1pt1l.5c", 0x0800000, 0x400000, CRC(ba0fff5b) SHA1(d5a6db4de60657d46228e85ed09ed7f0ecbc7975) ) |
| 2761 | | ROM_LOAD32_WORD( "ffs1pt1h.5a", 0x0800002, 0x400000, CRC(2dba59d0) SHA1(34d4c415b5635338511ff3578eb3c00e2b6cd7d4) ) |
| 2762 | | ROM_LOAD32_WORD( "ffs1pt2l.4c", 0x1000000, 0x400000, CRC(c5199c1b) SHA1(8f1a70c8edb2791a099b4911353af6250a5d0e8a) ) |
| 2763 | | ROM_LOAD32_WORD( "ffs1pt2h.4a", 0x1000002, 0x400000, CRC(26ea01e8) SHA1(9af096c99e6835e21b1b78dfce07040f50f8c922) ) |
| 2764 | | ROM_LOAD32_WORD( "ffs1pt3l.3c", 0x1800000, 0x400000, CRC(2381611a) SHA1(a3d948bf910dcfd9f47c65c56b9920f58c42fed5) ) |
| 2765 | | ROM_LOAD32_WORD( "ffs1pt3h.3a", 0x1800002, 0x400000, CRC(48226e9f) SHA1(f099b2929d49903a33b4dab80972c3ce0ddb6ca2) ) |
| 2870 | ROM_LOAD32_WORD_SWAP( "ffs1pt0h.7a", 0x0000000, 0x400000, CRC(79b9b019) SHA1(ca2bbabd949fec91001a30b63f7343520028cde0) ) |
| 2871 | ROM_LOAD32_WORD_SWAP( "ffs1pt0l.7c", 0x0000002, 0x400000, CRC(383cbfba) SHA1(0784ac2d709bee6653c95f80fedf7f98ca79357f) ) |
| 2872 | ROM_LOAD32_WORD_SWAP( "ffs1pt1h.5a", 0x0800000, 0x400000, CRC(2dba59d0) SHA1(34d4c415b5635338511ff3578eb3c00e2b6cd7d4) ) |
| 2873 | ROM_LOAD32_WORD_SWAP( "ffs1pt1l.5c", 0x0800002, 0x400000, CRC(ba0fff5b) SHA1(d5a6db4de60657d46228e85ed09ed7f0ecbc7975) ) |
| 2874 | ROM_LOAD32_WORD_SWAP( "ffs1pt2h.4a", 0x1000000, 0x400000, CRC(26ea01e8) SHA1(9af096c99e6835e21b1b78dfce07040f50f8c922) ) |
| 2875 | ROM_LOAD32_WORD_SWAP( "ffs1pt2l.4c", 0x1000002, 0x400000, CRC(c5199c1b) SHA1(8f1a70c8edb2791a099b4911353af6250a5d0e8a) ) |
| 2876 | ROM_LOAD32_WORD_SWAP( "ffs1pt3h.3a", 0x1800000, 0x400000, CRC(48226e9f) SHA1(f099b2929d49903a33b4dab80972c3ce0ddb6ca2) ) |
| 2877 | ROM_LOAD32_WORD_SWAP( "ffs1pt3l.3c", 0x1800002, 0x400000, CRC(2381611a) SHA1(a3d948bf910dcfd9f47c65c56b9920f58c42fed5) ) |
| 2766 | 2878 | |
| 2767 | 2879 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2768 | | ROM_LOAD( "ffs1wavel.2c", 0x000000, 0x800000, CRC(67ba16cf) SHA1(00b38617c2185b9a3bf279962ad0c21a7287256f) ) |
| 2769 | | ROM_LOAD( "ffs1waveh.2a", 0x800000, 0x800000, CRC(178e8bd3) SHA1(8ab1a97003914f70b09e96c5924f3a839fe634c7) ) |
| 2880 | ROM_LOAD( "ffs1wavel.2c", 0x000000, 0x800000, CRC(67ba16cf) SHA1(00b38617c2185b9a3bf279962ad0c21a7287256f) ) |
| 2881 | ROM_LOAD( "ffs1waveh.2a", 0x800000, 0x800000, CRC(178e8bd3) SHA1(8ab1a97003914f70b09e96c5924f3a839fe634c7) ) |
| 2770 | 2882 | ROM_END |
| 2771 | 2883 | |
| 2772 | 2884 | ROM_START( finfurl2j ) |
| 2773 | 2885 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2774 | | ROM_LOAD16_BYTE( "29f016_jap1.ic2", 0x000000, 0x200000, CRC(0215125d) SHA1(a99f601441c152b0b00f4811e5752c71897b1ed4) ) |
| 2775 | | ROM_LOAD16_BYTE( "29f016_jap1.ic1", 0x000001, 0x200000, CRC(38c9ae96) SHA1(b50afc7276662267ff6460f82d0e5e8b00b341ea) ) |
| 2886 | ROM_LOAD16_BYTE( "29f016_jap1.ic2", 0x000000, 0x200000, CRC(0215125d) SHA1(a99f601441c152b0b00f4811e5752c71897b1ed4) ) |
| 2887 | ROM_LOAD16_BYTE( "29f016_jap1.ic1", 0x000001, 0x200000, CRC(38c9ae96) SHA1(b50afc7276662267ff6460f82d0e5e8b00b341ea) ) |
| 2776 | 2888 | |
| 2777 | 2889 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2778 | | ROM_LOAD16_WORD_SWAP( "m29f400.ic3", 0x000000, 0x080000, CRC(9fd69bbd) SHA1(53a9bf505de70495dcccc43fdc722b3381aad97c) ) |
| 2890 | ROM_LOAD16_WORD_SWAP( "m29f400.ic3", 0x000000, 0x080000, CRC(9fd69bbd) SHA1(53a9bf505de70495dcccc43fdc722b3381aad97c) ) |
| 2779 | 2891 | |
| 2780 | 2892 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2781 | | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2893 | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2782 | 2894 | |
| 2783 | 2895 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2784 | | ROM_LOAD16_BYTE( "ffs1mtah.2j", 0x0000000, 0x800000, CRC(f336d81d) SHA1(a9177091e1412dea1b6ea6c53530ae31361b32d0) ) |
| 2785 | | ROM_LOAD16_BYTE( "ffs1mtal.2h", 0x0000001, 0x800000, CRC(98730ad5) SHA1(9ba276ad88ec8730edbacab80cdacc34a99593e4) ) |
| 2786 | | ROM_LOAD16_BYTE( "ffs1mtbh.2m", 0x1000000, 0x800000, CRC(0f42c93b) SHA1(26b313fc5c33afb0a1ee42243486e38f052c95c2) ) |
| 2787 | | ROM_LOAD16_BYTE( "ffs1mtbl.2f", 0x1000001, 0x800000, CRC(0abc9e50) SHA1(be5e5e2b637811c59804ef9442c6da5a5a1315e2) ) |
| 2896 | ROM_LOAD16_BYTE( "ffs1mtah.2j", 0x0000000, 0x800000, CRC(f336d81d) SHA1(a9177091e1412dea1b6ea6c53530ae31361b32d0) ) |
| 2897 | ROM_LOAD16_BYTE( "ffs1mtal.2h", 0x0000001, 0x800000, CRC(98730ad5) SHA1(9ba276ad88ec8730edbacab80cdacc34a99593e4) ) |
| 2898 | ROM_LOAD16_BYTE( "ffs1mtbh.2m", 0x1000000, 0x800000, CRC(0f42c93b) SHA1(26b313fc5c33afb0a1ee42243486e38f052c95c2) ) |
| 2899 | ROM_LOAD16_BYTE( "ffs1mtbl.2f", 0x1000001, 0x800000, CRC(0abc9e50) SHA1(be5e5e2b637811c59804ef9442c6da5a5a1315e2) ) |
| 2788 | 2900 | |
| 2789 | 2901 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2790 | | ROM_LOAD( "ffs1cguu.4f", 0x0000000, 0x800000, CRC(52c0a19f) SHA1(e6b4b90ff88da09cb2e653e450e7ae66942a719e) ) |
| 2791 | | ROM_LOAD( "ffs1cgum.4j", 0x0800000, 0x800000, CRC(77447199) SHA1(1eeae30b3dd1ac467bdbbdfe4be36ca0f0816496) ) |
| 2792 | | ROM_LOAD( "ffs1cgll.4m", 0x1000000, 0x800000, CRC(171bba76) SHA1(4a63a1f34de8f341a0ef9b499a21e8fec758e1cd) ) |
| 2793 | | ROM_LOAD( "ffs1cglm.4k", 0x1800000, 0x800000, CRC(48acf207) SHA1(ea902efdd94aba34dadb20762219d2d25441d199) ) |
| 2902 | ROM_LOAD( "ffs1cgll.4m", 0x0000000, 0x800000, CRC(171bba76) SHA1(4a63a1f34de8f341a0ef9b499a21e8fec758e1cd) ) |
| 2903 | ROM_LOAD( "ffs1cglm.4k", 0x0800000, 0x800000, CRC(48acf207) SHA1(ea902efdd94aba34dadb20762219d2d25441d199) ) |
| 2904 | ROM_LOAD( "ffs1cgum.4j", 0x1000000, 0x800000, CRC(77447199) SHA1(1eeae30b3dd1ac467bdbbdfe4be36ca0f0816496) ) |
| 2905 | ROM_LOAD( "ffs1cguu.4f", 0x1800000, 0x800000, CRC(52c0a19f) SHA1(e6b4b90ff88da09cb2e653e450e7ae66942a719e) ) |
| 2794 | 2906 | |
| 2795 | | ROM_REGION( 0x400000, "textilemap", 0 ) /* texture tilemap */ |
| 2796 | | ROM_LOAD( "ffs1ccrl.7f", 0x000000, 0x200000, CRC(ffbcfec1) SHA1(9ab25f1543da4b72784eec93985abaa2e1dafc83) ) |
| 2797 | | ROM_LOAD( "ffs1ccrh.7e", 0x200000, 0x200000, CRC(8be4aeb4) SHA1(ec344f6fba42092083e737e436451f5d7be12c15) ) |
| 2907 | ROM_REGION16_LE( 0x200000, "textilemapl", 0 ) /* texture tilemap 0-15*/ |
| 2908 | ROM_LOAD( "ffs1ccrl.7f", 0x000000, 0x200000, CRC(ffbcfec1) SHA1(9ab25f1543da4b72784eec93985abaa2e1dafc83) ) |
| 2798 | 2909 | |
| 2910 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2911 | ROM_LOAD( "ffs1ccrh.7e", 0x000000, 0x200000, CRC(8be4aeb4) SHA1(ec344f6fba42092083e737e436451f5d7be12c15) ) |
| 2912 | |
| 2799 | 2913 | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2800 | | ROM_LOAD32_WORD( "ffs1pt0l.7c", 0x0000000, 0x400000, CRC(383cbfba) SHA1(0784ac2d709bee6653c95f80fedf7f98ca79357f) ) |
| 2801 | | ROM_LOAD32_WORD( "ffs1pt0h.7a", 0x0000002, 0x400000, CRC(79b9b019) SHA1(ca2bbabd949fec91001a30b63f7343520028cde0) ) |
| 2802 | | ROM_LOAD32_WORD( "ffs1pt1l.5c", 0x0800000, 0x400000, CRC(ba0fff5b) SHA1(d5a6db4de60657d46228e85ed09ed7f0ecbc7975) ) |
| 2803 | | ROM_LOAD32_WORD( "ffs1pt1h.5a", 0x0800002, 0x400000, CRC(2dba59d0) SHA1(34d4c415b5635338511ff3578eb3c00e2b6cd7d4) ) |
| 2804 | | ROM_LOAD32_WORD( "ffs1pt2l.4c", 0x1000000, 0x400000, CRC(c5199c1b) SHA1(8f1a70c8edb2791a099b4911353af6250a5d0e8a) ) |
| 2805 | | ROM_LOAD32_WORD( "ffs1pt2h.4a", 0x1000002, 0x400000, CRC(26ea01e8) SHA1(9af096c99e6835e21b1b78dfce07040f50f8c922) ) |
| 2806 | | ROM_LOAD32_WORD( "ffs1pt3l.3c", 0x1800000, 0x400000, CRC(2381611a) SHA1(a3d948bf910dcfd9f47c65c56b9920f58c42fed5) ) |
| 2807 | | ROM_LOAD32_WORD( "ffs1pt3h.3a", 0x1800002, 0x400000, CRC(48226e9f) SHA1(f099b2929d49903a33b4dab80972c3ce0ddb6ca2) ) |
| 2808 | | |
| 2914 | ROM_LOAD32_WORD_SWAP( "ffs1pt0h.7a", 0x0000000, 0x400000, CRC(79b9b019) SHA1(ca2bbabd949fec91001a30b63f7343520028cde0) ) |
| 2915 | ROM_LOAD32_WORD_SWAP( "ffs1pt0l.7c", 0x0000002, 0x400000, CRC(383cbfba) SHA1(0784ac2d709bee6653c95f80fedf7f98ca79357f) ) |
| 2916 | ROM_LOAD32_WORD_SWAP( "ffs1pt1h.5a", 0x0800000, 0x400000, CRC(2dba59d0) SHA1(34d4c415b5635338511ff3578eb3c00e2b6cd7d4) ) |
| 2917 | ROM_LOAD32_WORD_SWAP( "ffs1pt1l.5c", 0x0800002, 0x400000, CRC(ba0fff5b) SHA1(d5a6db4de60657d46228e85ed09ed7f0ecbc7975) ) |
| 2918 | ROM_LOAD32_WORD_SWAP( "ffs1pt2h.4a", 0x1000000, 0x400000, CRC(26ea01e8) SHA1(9af096c99e6835e21b1b78dfce07040f50f8c922) ) |
| 2919 | ROM_LOAD32_WORD_SWAP( "ffs1pt2l.4c", 0x1000002, 0x400000, CRC(c5199c1b) SHA1(8f1a70c8edb2791a099b4911353af6250a5d0e8a) ) |
| 2920 | ROM_LOAD32_WORD_SWAP( "ffs1pt3h.3a", 0x1800000, 0x400000, CRC(48226e9f) SHA1(f099b2929d49903a33b4dab80972c3ce0ddb6ca2) ) |
| 2921 | ROM_LOAD32_WORD_SWAP( "ffs1pt3l.3c", 0x1800002, 0x400000, CRC(2381611a) SHA1(a3d948bf910dcfd9f47c65c56b9920f58c42fed5) ) |
| 2809 | 2922 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2810 | | ROM_LOAD( "ffs1wavel.2c", 0x000000, 0x800000, CRC(67ba16cf) SHA1(00b38617c2185b9a3bf279962ad0c21a7287256f) ) |
| 2811 | | ROM_LOAD( "ffs1waveh.2a", 0x800000, 0x800000, CRC(178e8bd3) SHA1(8ab1a97003914f70b09e96c5924f3a839fe634c7) ) |
| 2923 | ROM_LOAD( "ffs1wavel.2c", 0x000000, 0x800000, CRC(67ba16cf) SHA1(00b38617c2185b9a3bf279962ad0c21a7287256f) ) |
| 2924 | ROM_LOAD( "ffs1waveh.2a", 0x800000, 0x800000, CRC(178e8bd3) SHA1(8ab1a97003914f70b09e96c5924f3a839fe634c7) ) |
| 2812 | 2925 | ROM_END |
| 2813 | 2926 | |
| 2814 | 2927 | ROM_START( panicprk ) |
| 2815 | 2928 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 2816 | | ROM_LOAD16_BYTE( "pnp2ver-a.ic2", 0x000000, 0x200000, CRC(cd528597) SHA1(cf390e78228eb10d5f50ff7e7e37063a2d87f469) ) |
| 2817 | | ROM_LOAD16_BYTE( "pnp2ver-a.ic1", 0x000001, 0x200000, CRC(80fea853) SHA1(b18003bde060ebb3c892a6d7fa4abf868cadc777) ) |
| 2929 | ROM_LOAD16_BYTE( "pnp2ver-a.ic2", 0x000000, 0x200000, CRC(cd528597) SHA1(cf390e78228eb10d5f50ff7e7e37063a2d87f469) ) |
| 2930 | ROM_LOAD16_BYTE( "pnp2ver-a.ic1", 0x000001, 0x200000, CRC(80fea853) SHA1(b18003bde060ebb3c892a6d7fa4abf868cadc777) ) |
| 2818 | 2931 | |
| 2819 | 2932 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 2820 | | ROM_LOAD16_WORD_SWAP( "pnp2ver-a.ic3", 0x000000, 0x080000, CRC(fe4bc6f4) SHA1(2114dc4bc63d589e6c3b26a73dbc60924f3b1765) ) |
| 2933 | ROM_LOAD16_WORD_SWAP( "pnp2ver-a.ic3", 0x000000, 0x080000, CRC(fe4bc6f4) SHA1(2114dc4bc63d589e6c3b26a73dbc60924f3b1765) ) |
| 2821 | 2934 | |
| 2822 | 2935 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code */ |
| 2823 | 2936 | ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) ) |
| 2824 | 2937 | |
| 2825 | 2938 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2826 | | ROM_LOAD16_BYTE( "pnp1mtah.2j", 0x000000, 0x800000, CRC(37addddd) SHA1(3032989653304417df80606bc3fde6e9425d8cbb) ) |
| 2827 | | ROM_LOAD16_BYTE( "pnp1mtal.2h", 0x000001, 0x800000, CRC(6490faaa) SHA1(03443746009b434e5d4074ea6314910418907360) ) |
| 2939 | ROM_LOAD16_BYTE( "pnp1mtah.2j", 0x000000, 0x800000, CRC(37addddd) SHA1(3032989653304417df80606bc3fde6e9425d8cbb) ) |
| 2940 | ROM_LOAD16_BYTE( "pnp1mtal.2h", 0x000001, 0x800000, CRC(6490faaa) SHA1(03443746009b434e5d4074ea6314910418907360) ) |
| 2828 | 2941 | |
| 2829 | | ROM_REGION( 0x4000000, "textile", 0 ) /* texture tiles */ |
| 2830 | | ROM_LOAD( "pnp1cguu.5f", 0x0000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) ) |
| 2831 | | ROM_LOAD( "pnp1cgum.4j", 0x0800000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) ) |
| 2832 | | ROM_LOAD( "pnp1cgll.4m", 0x1000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) ) |
| 2833 | | ROM_LOAD( "pnp1cglm.5k", 0x1800000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) ) |
| 2834 | | ROM_LOAD( "pnp1cguu.4f", 0x2000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) ) |
| 2835 | | ROM_LOAD( "pnp1cgum.5j", 0x2800000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) ) |
| 2836 | | ROM_LOAD( "pnp1cgll.5m", 0x3000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) ) |
| 2837 | | ROM_LOAD( "pnp1cglm.4k", 0x3800000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) ) |
| 2942 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2943 | ROM_LOAD( "pnp1cgll.4m", 0x0000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) ) |
| 2944 | ROM_LOAD( "pnp1cglm.5k", 0x0800000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) ) |
| 2945 | ROM_LOAD( "pnp1cgum.4j", 0x1000000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) ) |
| 2946 | ROM_LOAD( "pnp1cguu.5f", 0x1800000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) ) |
| 2838 | 2947 | |
| 2839 | | ROM_REGION( 0x800000, "textilemap", 0 ) /* texture tilemap */ |
| 2840 | | ROM_LOAD( "pnp1ccrl.7f", 0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) ) |
| 2841 | | ROM_LOAD( "pnp1ccrh.7e", 0x200000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) ) |
| 2842 | | ROM_LOAD( "pnp1ccrl.7m", 0x400000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) ) |
| 2843 | | ROM_LOAD( "pnp1ccrh.7k", 0x600000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) ) |
| 2948 | ROM_REGION16_LE( 0x200000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2949 | ROM_LOAD( "pnp1ccrl.7f", 0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) ) |
| 2844 | 2950 | |
| 2845 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2846 | | ROM_LOAD32_WORD( "pnp1pt0l.7c", 0x000000, 0x400000, CRC(26af5fa1) SHA1(12fcf98c2a59643e0fdfdd7186f9f16baf54a9cf) ) |
| 2847 | | ROM_LOAD32_WORD( "pnp1pt0h.7a", 0x000002, 0x400000, CRC(43fc2246) SHA1(301d321cd4a01ebd7ccfa6f295d6c3daf0a19efe) ) |
| 2848 | | ROM_LOAD32_WORD( "pnp1pt1l.5c", 0x800000, 0x400000, CRC(15c6f236) SHA1(e8c393359a91cdce6e9110a48c0a80708f8fc132) ) |
| 2849 | | ROM_LOAD32_WORD( "pnp1pt1h.5a", 0x800002, 0x400000, CRC(1ff470c0) SHA1(ca8fad90743589744939d681b0ce94f368337b3f) ) |
| 2951 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2952 | ROM_LOAD( "pnp1ccrh.7e", 0x000000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) ) |
| 2850 | 2953 | |
| 2954 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2955 | ROM_LOAD32_WORD_SWAP( "pnp1pt0h.7a", 0x000000, 0x400000, CRC(43fc2246) SHA1(301d321cd4a01ebd7ccfa6f295d6c3daf0a19efe) ) |
| 2956 | ROM_LOAD32_WORD_SWAP( "pnp1pt0l.7c", 0x000002, 0x400000, CRC(26af5fa1) SHA1(12fcf98c2a59643e0fdfdd7186f9f16baf54a9cf) ) |
| 2957 | ROM_LOAD32_WORD_SWAP( "pnp1pt1h.5a", 0x800000, 0x400000, CRC(1ff470c0) SHA1(ca8fad90743589744939d681b0ce94f368337b3f) ) |
| 2958 | ROM_LOAD32_WORD_SWAP( "pnp1pt1l.5c", 0x800002, 0x400000, CRC(15c6f236) SHA1(e8c393359a91cdce6e9110a48c0a80708f8fc132) ) |
| 2959 | |
| 2851 | 2960 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 2852 | | ROM_LOAD( "pnp1wavel.2c", 0x000000, 0x800000, CRC(35c6a9bd) SHA1(4b56fdc37525c15e57d93091e6609d6a6905fc5c) ) |
| 2853 | | ROM_LOAD( "pnp1waveh.2a", 0x800000, 0x800000, CRC(6fa1826a) SHA1(20a5af49e65ae2bc57c016b5cd9bafa5a5220d35) ) |
| 2961 | ROM_LOAD( "pnp1wavel.2c", 0x000000, 0x800000, CRC(35c6a9bd) SHA1(4b56fdc37525c15e57d93091e6609d6a6905fc5c) ) |
| 2962 | ROM_LOAD( "pnp1waveh.2a", 0x800000, 0x800000, CRC(6fa1826a) SHA1(20a5af49e65ae2bc57c016b5cd9bafa5a5220d35) ) |
| 2963 | |
| 2964 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 2965 | ROM_LOAD( "pnp1cguu.4f", 0x000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) ) |
| 2966 | ROM_LOAD( "pnp1cgum.5j", 0x000000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) ) |
| 2967 | ROM_LOAD( "pnp1cgll.5m", 0x000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) ) |
| 2968 | ROM_LOAD( "pnp1cglm.4k", 0x000000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) ) |
| 2969 | ROM_LOAD( "pnp1ccrl.7m", 0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) ) |
| 2970 | ROM_LOAD( "pnp1ccrh.7k", 0x000000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) ) |
| 2854 | 2971 | ROM_END |
| 2855 | 2972 | |
| 2856 | 2973 | ROM_START( gunwars ) |
| r7640 | r7641 | |
| 2865 | 2982 | ROM_LOAD( "asc5_io-a.ic14", 0x000000, 0x020000, CRC(5964767f) SHA1(320db5e78ae23c5f94e368432d51573b409995db) ) |
| 2866 | 2983 | |
| 2867 | 2984 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 2868 | | ROM_LOAD16_BYTE( "gm1mtah.2j", 0x000000, 0x800000, CRC(3cea9094) SHA1(497395425e409de47e1114de9aeeaf05e4f6a9a1) ) |
| 2869 | | ROM_LOAD16_BYTE( "gm1mtal.2h", 0x000001, 0x800000, CRC(d531dfcd) SHA1(9f7cbe9a03c1f7649bf05a7a30d47511573b50ba) ) |
| 2985 | ROM_LOAD16_BYTE( "gm1mtah.2j", 0x000000, 0x800000, CRC(3cea9094) SHA1(497395425e409de47e1114de9aeeaf05e4f6a9a1) ) |
| 2986 | ROM_LOAD16_BYTE( "gm1mtal.2h", 0x000001, 0x800000, CRC(d531dfcd) SHA1(9f7cbe9a03c1f7649bf05a7a30d47511573b50ba) ) |
| 2870 | 2987 | |
| 2871 | | ROM_REGION( 0x4000000, "textile", 0 ) /* texture tiles */ |
| 2872 | | ROM_LOAD( "gm1cguu.5f", 0x0000000, 0x800000, CRC(26a74698) SHA1(3f07d273abb3f2552dc6a29300f5dc2f2744c852) ) |
| 2873 | | ROM_LOAD( "gm1cgum.4j", 0x0800000, 0x800000, CRC(a7728944) SHA1(c187c6d66128554fcecc96e81d4f5396197e8280) ) |
| 2874 | | ROM_LOAD( "gm1cgll.4m", 0x1000000, 0x800000, CRC(936c0079) SHA1(3aec8caada35b7ed790bb3a8bcf6e01cad068fcd) ) |
| 2875 | | ROM_LOAD( "gm1cglm.4k", 0x1800000, 0x800000, CRC(e2ee5493) SHA1(1ffd74646796ad554d7967ba9fc18deab4fedadf) ) |
| 2988 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 2989 | ROM_LOAD( "gm1cgll.4m", 0x0000000, 0x800000, CRC(936c0079) SHA1(3aec8caada35b7ed790bb3a8bcf6e01cad068fcd) ) |
| 2990 | ROM_LOAD( "gm1cglm.4k", 0x0800000, 0x800000, CRC(e2ee5493) SHA1(1ffd74646796ad554d7967ba9fc18deab4fedadf) ) |
| 2991 | ROM_LOAD( "gm1cgum.4j", 0x1000000, 0x800000, CRC(a7728944) SHA1(c187c6d66128554fcecc96e81d4f5396197e8280) ) |
| 2992 | ROM_LOAD( "gm1cguu.5f", 0x1800000, 0x800000, CRC(26a74698) SHA1(3f07d273abb3f2552dc6a29300f5dc2f2744c852) ) |
| 2876 | 2993 | |
| 2877 | | ROM_REGION( 0x4000000, "textile2", 0 ) /* second copy of texture tiles */ |
| 2878 | | ROM_LOAD( "gm1cguu.4f", 0x0000000, 0x800000, CRC(26a74698) SHA1(3f07d273abb3f2552dc6a29300f5dc2f2744c852) ) |
| 2879 | | ROM_LOAD( "gm1cgum.5j", 0x0800000, 0x800000, CRC(a7728944) SHA1(c187c6d66128554fcecc96e81d4f5396197e8280) ) |
| 2880 | | ROM_LOAD( "gm1cgll.5m", 0x1000000, 0x800000, CRC(936c0079) SHA1(3aec8caada35b7ed790bb3a8bcf6e01cad068fcd) ) |
| 2881 | | ROM_LOAD( "gm1cglm.5k", 0x1800000, 0x800000, CRC(e2ee5493) SHA1(1ffd74646796ad554d7967ba9fc18deab4fedadf) ) |
| 2994 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 2995 | ROM_LOAD( "gm1ccrl.7f", 0x000000, 0x400000, CRC(2c54c182) SHA1(538dfb04653f8d86f976e702456bf4da97e3fda9) ) |
| 2882 | 2996 | |
| 2883 | | ROM_REGION( 0x800000, "textilemap", 0 ) /* texture tilemap */ |
| 2884 | | ROM_LOAD( "gm1ccrl.7f", 0x000000, 0x400000, CRC(2c54c182) SHA1(538dfb04653f8d86f976e702456bf4da97e3fda9) ) |
| 2885 | | ROM_LOAD( "gm1ccrh.7e", 0x400000, 0x200000, CRC(8563ef01) SHA1(59f09a08008a71a4bb12bd43a1b5dbe633d3061d) ) |
| 2997 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 2998 | ROM_LOAD( "gm1ccrh.7e", 0x000000, 0x200000, CRC(8563ef01) SHA1(59f09a08008a71a4bb12bd43a1b5dbe633d3061d) ) |
| 2886 | 2999 | |
| 2887 | | ROM_REGION( 0x800000, "textilemap2", 0 ) /* second copy of texture tilemap */ |
| 2888 | | ROM_LOAD( "gm1ccrl.7m", 0x000000, 0x400000, CRC(2c54c182) SHA1(538dfb04653f8d86f976e702456bf4da97e3fda9) ) |
| 2889 | | ROM_LOAD( "gm1ccrh.7k", 0x400000, 0x200000, CRC(8563ef01) SHA1(59f09a08008a71a4bb12bd43a1b5dbe633d3061d) ) |
| 3000 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 3001 | ROM_LOAD32_WORD_SWAP( "gm1pt0h.7a", 0x000000, 0x400000, CRC(5ebd658c) SHA1(9e7b89a726b11b6da3327d72ec6adcc30fbb384d) ) |
| 3002 | ROM_LOAD32_WORD_SWAP( "gm1pt0l.7c", 0x000002, 0x400000, CRC(62e9bedb) SHA1(7043c5e6f26139c9e6e18d4f35fac6a16d4dabd1) ) |
| 3003 | ROM_LOAD32_WORD_SWAP( "gm1pt1h.5a", 0x800000, 0x400000, CRC(5f6cebab) SHA1(95bd30d30ea25509b66a107fb255d0af1e6a357e) ) |
| 3004 | ROM_LOAD32_WORD_SWAP( "gm1pt1l.5c", 0x800002, 0x400000, CRC(f44c149f) SHA1(9f995de02ea6ac35ccbabbba5bb473a10e1ec667) ) |
| 2890 | 3005 | |
| 2891 | | ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 2892 | | ROM_LOAD32_WORD( "gm1pt0l.7c", 0x000000, 0x400000, CRC(62e9bedb) SHA1(7043c5e6f26139c9e6e18d4f35fac6a16d4dabd1) ) |
| 2893 | | ROM_LOAD32_WORD( "gm1pt0h.7a", 0x000002, 0x400000, CRC(5ebd658c) SHA1(9e7b89a726b11b6da3327d72ec6adcc30fbb384d) ) |
| 2894 | | ROM_LOAD32_WORD( "gm1pt1l.5c", 0x800000, 0x400000, CRC(f44c149f) SHA1(9f995de02ea6ac35ccbabbba5bb473a10e1ec667) ) |
| 2895 | | ROM_LOAD32_WORD( "gm1pt1h.5a", 0x800002, 0x400000, CRC(5f6cebab) SHA1(95bd30d30ea25509b66a107fb255d0af1e6a357e) ) |
| 3006 | ROM_REGION( 0x800000, "c352", 0 ) /* C352 PCM samples */ |
| 3007 | ROM_LOAD( "gm1wave.2c", 0x000000, 0x800000, CRC(7d5c79a4) SHA1(b800a46bcca10cb0d0d9e0acfa68af63ae64dcaf) ) |
| 2896 | 3008 | |
| 2897 | | ROM_REGION( 0x800000, "c352", 0 ) /* C352 PCM samples */ |
| 2898 | | ROM_LOAD( "gm1wave.2c", 0x000000, 0x800000, CRC(7d5c79a4) SHA1(b800a46bcca10cb0d0d9e0acfa68af63ae64dcaf) ) |
| 3009 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 3010 | ROM_LOAD( "gm1cguu.4f", 0x000000, 0x800000, CRC(26a74698) SHA1(3f07d273abb3f2552dc6a29300f5dc2f2744c852) ) |
| 3011 | ROM_LOAD( "gm1cgum.5j", 0x000000, 0x800000, CRC(a7728944) SHA1(c187c6d66128554fcecc96e81d4f5396197e8280) ) |
| 3012 | ROM_LOAD( "gm1cgll.5m", 0x000000, 0x800000, CRC(936c0079) SHA1(3aec8caada35b7ed790bb3a8bcf6e01cad068fcd) ) |
| 3013 | ROM_LOAD( "gm1cglm.5k", 0x000000, 0x800000, CRC(e2ee5493) SHA1(1ffd74646796ad554d7967ba9fc18deab4fedadf) ) |
| 3014 | ROM_LOAD( "gm1ccrl.7m", 0x000000, 0x400000, CRC(2c54c182) SHA1(538dfb04653f8d86f976e702456bf4da97e3fda9) ) |
| 3015 | ROM_LOAD( "gm1ccrh.7k", 0x000000, 0x200000, CRC(8563ef01) SHA1(59f09a08008a71a4bb12bd43a1b5dbe633d3061d) ) |
| 2899 | 3016 | ROM_END |
| 2900 | 3017 | |
| 3018 | ROM_START( downhill ) |
| 3019 | ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 3020 | ROM_LOAD16_BYTE( "dh3vera.ic2", 0x000000, 0x200000, CRC(5d9952e9) SHA1(d38422330bd708c247b9968429fbff36fe706598) ) |
| 3021 | ROM_LOAD16_BYTE( "dh3vera.ic1", 0x000001, 0x200000, CRC(64a236f3) SHA1(aac59e0db5cfefc4b442e6c3a5189a8418742201) ) |
| 3022 | |
| 3023 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 3024 | ROM_LOAD16_WORD_SWAP( "dh3vera.ic3", 0x000000, 0x080000, CRC(98f9fc8b) SHA1(5152b9e11773033a26da11d1f3774a261e61a2c5) ) |
| 3025 | |
| 3026 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code. "ASCA-3;Ver 2.04;JPN,Multipurpose + Rotary Encoder" */ |
| 3027 | ROM_LOAD( "asc3_io-c.ic14", 0x000000, 0x020000, CRC(2f272a7b) SHA1(9d7ebe274c0d26f5f38747224d42d0375e2ed14c) ) |
| 3028 | |
| 3029 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 3030 | ROM_LOAD16_BYTE( "dh1mtah.2j", 0x000000, 0x800000, CRC(3b56faa7) SHA1(861db7f549bedbb2b837516fcc966ad5890007ce) ) |
| 3031 | ROM_LOAD16_BYTE( "dh1mtal.2h", 0x000001, 0x800000, CRC(9fa07bfe) SHA1(a6b847ff7d5eadbf60b434a0d905051ea4227113) ) |
| 3032 | |
| 3033 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 3034 | ROM_LOAD( "dh1cgll.4m", 0x0000000, 0x800000, CRC(c0d5ad87) SHA1(bc1992516c63aebdae0322def77f082d799a327a) ) |
| 3035 | ROM_LOAD( "dh1cglm.4k", 0x0800000, 0x800000, CRC(5d9a5e35) SHA1(d746abb45f04aa4eb9d43d9c79051e71bf024e38) ) |
| 3036 | ROM_LOAD( "dh1cgum.4j", 0x1000000, 0x800000, CRC(1044d0a0) SHA1(e0bf843616e166495fcdc76f076eb53a28287d30) ) |
| 3037 | ROM_LOAD( "dh1cguu.5f", 0x1800000, 0x800000, CRC(66cb0dd7) SHA1(1f67320f150f1b55c97eae4b9fe4890fabc8dc7e) ) |
| 3038 | |
| 3039 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 3040 | ROM_LOAD( "dh1ccrl.7f", 0x000000, 0x400000, CRC(65c857df) SHA1(5d67b17cf272f042b4264d9871d6e4088c20b788) ) |
| 3041 | |
| 3042 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 3043 | ROM_LOAD( "dh1ccrh.7e", 0x000000, 0x200000, CRC(f21c482d) SHA1(bfcead2ff3d10f996ac0bf81470d050bd6374156) ) |
| 3044 | |
| 3045 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 3046 | ROM_LOAD32_WORD_SWAP( "dh1pt0h.7a", 0x0000000, 0x400000, CRC(0e84a5d8) SHA1(28559f978b86d88bb18c3e58e28a97ecfb5f7fa9) ) |
| 3047 | ROM_LOAD32_WORD_SWAP( "dh1pt0l.7c", 0x0000002, 0x400000, CRC(d120eee5) SHA1(fa1269d891f4e0510491aa70c4abd5f36852e691) ) |
| 3048 | ROM_LOAD32_WORD_SWAP( "dh1pt1h.5a", 0x0800000, 0x400000, CRC(88cd4c90) SHA1(94016c72a9da983e55c74cbdd3691b596ea50c31) ) |
| 3049 | ROM_LOAD32_WORD_SWAP( "dh1pt1l.5c", 0x0800002, 0x400000, CRC(dee2f2bf) SHA1(258f9a6e324502550d27b8feaf36244766fa19da) ) |
| 3050 | ROM_LOAD32_WORD_SWAP( "dh1pt2h.4a", 0x1000000, 0x400000, CRC(7e167c65) SHA1(018bf6aea4c1640ef728cf7b8e491f11742ede0d) ) |
| 3051 | ROM_LOAD32_WORD_SWAP( "dh1pt2l.4c", 0x1000002, 0x400000, CRC(714e3090) SHA1(39827f645dacbb57c7c40193f3f58e879899a4f3) ) |
| 3052 | |
| 3053 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 3054 | ROM_LOAD( "dh1wavel.2c", 0x000000, 0x800000, CRC(10954726) SHA1(50ee0346c46194dada7b5c0d8b1efe9a7f211b90) ) |
| 3055 | ROM_LOAD( "dh1waveh.2a", 0x800000, 0x800000, CRC(2adfa312) SHA1(d01a46af2c95d1ea64e9778979ae147298d921e3) ) |
| 3056 | |
| 3057 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 3058 | ROM_LOAD( "dh1cguu.4f", 0x000000, 0x800000, CRC(66cb0dd7) SHA1(1f67320f150f1b55c97eae4b9fe4890fabc8dc7e) ) |
| 3059 | ROM_LOAD( "dh1cgum.5j", 0x000000, 0x800000, CRC(1044d0a0) SHA1(e0bf843616e166495fcdc76f076eb53a28287d30) ) |
| 3060 | ROM_LOAD( "dh1cgll.5m", 0x000000, 0x800000, CRC(c0d5ad87) SHA1(bc1992516c63aebdae0322def77f082d799a327a) ) |
| 3061 | ROM_LOAD( "dh1cglm.5k", 0x000000, 0x800000, CRC(5d9a5e35) SHA1(d746abb45f04aa4eb9d43d9c79051e71bf024e38) ) |
| 3062 | ROM_LOAD( "dh1ccrl.7m", 0x000000, 0x400000, CRC(65c857df) SHA1(5d67b17cf272f042b4264d9871d6e4088c20b788) ) |
| 3063 | ROM_LOAD( "dh1ccrh.7k", 0x000000, 0x200000, CRC(f21c482d) SHA1(bfcead2ff3d10f996ac0bf81470d050bd6374156) ) |
| 3064 | ROM_END |
| 3065 | |
| 3066 | // bfe4b800 |
| 3067 | ROM_START( crszone ) |
| 3068 | ROM_REGION32_BE( 0x800000, "user1", 0 ) /* 4 megs for main R4650 code */ |
| 3069 | ROM_LOAD16_WORD_SWAP( "cszo3verb.ic4", 0x400000, 0x400000, CRC(4cb26465) SHA1(078dfd0d8c920707df14e9a26658fa63421fcb0b)) |
| 3070 | ROM_CONTINUE( 0x000000, 0x400000 ) |
| 3071 | |
| 3072 | ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ |
| 3073 | ROM_LOAD16_WORD_SWAP( "cszo3verb.ic1", 0x000000, 0x080000, CRC(c790743b) SHA1(5fa7b83a7a1b1105a3aa0870b782cf2741b7d11c) ) |
| 3074 | |
| 3075 | ROM_REGION( 0x40000, "ioboard", 0 ) /* I/O board HD643334 H8/3334 MCU code. "MIU-I/O;Ver2.05;JPN,GUN-EXTENTION" */ |
| 3076 | ROM_LOAD( "csz1prg0a.8f", 0x000000, 0x020000, CRC(8edc36b3) SHA1(b5df211988d856572fcc313480e693c8561784e4) ) |
| 3077 | |
| 3078 | ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data roms */ |
| 3079 | ROM_LOAD16_BYTE( "csz1mtah.2j", 0x0000000, 0x800000, CRC(66b076ad) SHA1(edd32e0b380f01a9626d32f5eec860f841c8be8a) ) |
| 3080 | ROM_LOAD16_BYTE( "csz1mtal.2h", 0x0000001, 0x800000, CRC(38dc639a) SHA1(aa9b5b35174c1b007a57a4bd7a53bc3f479b5b71) ) |
| 3081 | ROM_LOAD16_BYTE( "csz1mtbh.2m", 0x1000000, 0x800000, CRC(bdec4188) SHA1(a098651fbd8a69a0afc17f4b6c93350926cacd6b) ) |
| 3082 | ROM_LOAD16_BYTE( "csz1mtbl.2f", 0x1000001, 0x800000, CRC(9c8f8d7a) SHA1(f61bcc9763df15428c82931a605ee40334d5ad98) ) |
| 3083 | |
| 3084 | ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ |
| 3085 | ROM_LOAD( "csz1cgll.4m", 0x0000000, 0x800000, CRC(0bcd41f2) SHA1(80b74f9398e8bd074f79a14490d06cfeb875c874) ) |
| 3086 | ROM_LOAD( "csz1cglm.4k", 0x0800000, 0x800000, CRC(d4af93d1) SHA1(0df37b793ce8da02d14f714722382786ae5d3ce2) ) |
| 3087 | ROM_LOAD( "csz1cgum.4j", 0x1000000, 0x800000, CRC(913c98b5) SHA1(b952dbc19053796077d4f33e8da836893e933b12) ) |
| 3088 | ROM_LOAD( "csz1cguu.5f", 0x1800000, 0x800000, CRC(e1d1bf24) SHA1(daf2c68e2d9a8f313d262d221cc990c93dfdf22f) ) |
| 3089 | |
| 3090 | ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ |
| 3091 | ROM_LOAD( "csz1ccrl.7f", 0x000000, 0x400000, CRC(1c20768d) SHA1(6cf4280e26f3625d6f750837bf344163e7e93c3d) ) |
| 3092 | |
| 3093 | ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ |
| 3094 | ROM_LOAD( "csz1ccrh.7e", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) ) |
| 3095 | |
| 3096 | ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ |
| 3097 | ROM_LOAD32_WORD_SWAP( "csz1pt0h.7a", 0x0000000, 0x400000, CRC(e82f1abb) SHA1(b1c57152cc27835e06e429fd1659fe0973638142) ) |
| 3098 | ROM_LOAD32_WORD_SWAP( "csz1pt0l.7c", 0x0000002, 0x400000, CRC(b0d66afe) SHA1(7cda4eebf1bb1191d17e4b5e616be2fbe4ae9328) ) |
| 3099 | ROM_LOAD32_WORD_SWAP( "csz1pt1h.5a", 0x0800000, 0x400000, CRC(e54f80ad) SHA1(3b3fbb3001e630d800b02ec8e653d74878ac5116) ) |
| 3100 | ROM_LOAD32_WORD_SWAP( "csz1pt1l.5c", 0x0800002, 0x400000, CRC(527171c8) SHA1(0b2ce3858f40bdedf1543309a6bc28d780415250) ) |
| 3101 | ROM_LOAD32_WORD_SWAP( "csz1pt2h.4a", 0x1000000, 0x400000, CRC(e295137a) SHA1(37b18af1b3d9f0e69b45135f89b49a1ceec79127) ) |
| 3102 | ROM_LOAD32_WORD_SWAP( "csz1pt2l.4c", 0x1000002, 0x400000, CRC(c87d6dbd) SHA1(686f39073c521d6b21ef8bc1161b41b680697c63) ) |
| 3103 | ROM_LOAD32_WORD_SWAP( "csz1pt3h.3a", 0x1800000, 0x400000, CRC(05f65bdf) SHA1(0c349fe5381fe7aeb81f9365a2b44a212f6bd33e) ) |
| 3104 | ROM_LOAD32_WORD_SWAP( "csz1pt3l.3c", 0x1800002, 0x400000, CRC(5d077c0f) SHA1(a4fd0167d89bf9417766405726e0334e7c7eaec3) ) |
| 3105 | |
| 3106 | ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ |
| 3107 | ROM_LOAD( "csz1wavel.2c", 0x000000, 0x800000, CRC(d0d74132) SHA1(a293d93bca8e12e388a088a592cfa7bcb9a976f7) ) |
| 3108 | ROM_LOAD( "csz1waveh.2a", 0x800000, 0x800000, CRC(de9d14a8) SHA1(e5006861928bb1d29bf80c7304f1a6d044b094fd) ) |
| 3109 | |
| 3110 | ROM_REGION( 0x800000, "dups", 0 ) /* duplicate roms */ |
| 3111 | ROM_LOAD( "csz1cguu.4f", 0x000000, 0x800000, CRC(e1d1bf24) SHA1(daf2c68e2d9a8f313d262d221cc990c93dfdf22f) ) |
| 3112 | ROM_LOAD( "csz1cgum.5j", 0x000000, 0x800000, CRC(913c98b5) SHA1(b952dbc19053796077d4f33e8da836893e933b12) ) |
| 3113 | ROM_LOAD( "csz1cgll.5m", 0x000000, 0x800000, CRC(0bcd41f2) SHA1(80b74f9398e8bd074f79a14490d06cfeb875c874) ) |
| 3114 | ROM_LOAD( "csz1cglm.5k", 0x000000, 0x800000, CRC(d4af93d1) SHA1(0df37b793ce8da02d14f714722382786ae5d3ce2) ) |
| 3115 | ROM_LOAD( "csz1ccrl.7m", 0x000000, 0x400000, CRC(1c20768d) SHA1(6cf4280e26f3625d6f750837bf344163e7e93c3d) ) |
| 3116 | ROM_LOAD( "csz1ccrh.7k", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) ) |
| 3117 | ROM_END |
| 3118 | |
| 2901 | 3119 | /* Games */ |
| 2902 | 3120 | GAME( 1997, rapidrvr, 0, gorgon, gorgon, ss23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 3121 | GAME( 1997, rapidrvr2,rapidrvr,gorgon,gorgon, ss23, ROT0, "Namco", "Rapid River (RD2 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2903 | 3122 | GAME( 1997, finlflng, 0, gorgon, gorgon, ss23, ROT0, "Namco", "Final Furlong (FF2 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 3123 | GAME( 1997, downhill, 0, s23, s23, ss23, ROT0, "Namco", "Downhill Bikers (DH3 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2904 | 3124 | GAME( 1997, motoxgo, 0, s23, s23, ss23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2905 | 3125 | GAME( 1997, timecrs2, 0, s23, s23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS3 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2906 | 3126 | GAME( 1997, timecrs2b,timecrs2, s23, s23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS2 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2907 | 3127 | GAME( 1997, timecrs2c,timecrs2, ss23io, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS4 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2908 | 3128 | GAME( 1998, panicprk, 0, s23, s23, ss23, ROT0, "Namco", "Panic Park (PNP2 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2909 | 3129 | GAME( 1998, gunwars, 0, gmen, ss23, ss23, ROT0, "Namco", "Gunmen Wars (GM1 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2910 | | GAME( 1999, 500gp, 0, ss23, ss23, ss23, ROT0, "Namco", "500GP", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 3130 | GAME( 1998, 500gp, 0, ss23, ss23, ss23, ROT0, "Namco", "500 GP (5GP3 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2911 | 3131 | GAME( 1999, finfurl2, 0, gmen, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (World)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 2912 | 3132 | GAME( 1999, finfurl2j,finfurl2, gmen, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
| 3133 | GAME( 2000, crszone, 0, ss23e2, ss23, ss23, ROT0, "Namco", "Crisis Zone (CSZO3 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND ) |
src/mame/drivers/dynax.c
| r7640 | r7641 | |
| 96 | 96 | Sports Match |
| 97 | 97 | ***************************************************************************/ |
| 98 | 98 | |
| 99 | | UINT8 dynax_blitter_irq; |
| 100 | | static UINT8 dynax_sound_irq; |
| 101 | | static UINT8 dynax_vblank_irq; |
| 102 | 99 | |
| 103 | 100 | /* It runs in IM 0, thus needs an opcode on the data bus */ |
| 104 | | void sprtmtch_update_irq(running_machine *machine) |
| 101 | void sprtmtch_update_irq( running_machine *machine ) |
| 105 | 102 | { |
| 106 | | int irq = ((dynax_sound_irq) ? 0x08 : 0) | |
| 107 | | ((dynax_vblank_irq) ? 0x10 : 0) | |
| 108 | | ((dynax_blitter_irq) ? 0x20 : 0) ; |
| 109 | | cputag_set_input_line_and_vector(machine, "maincpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */ |
| 103 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 104 | int irq = (state->sound_irq ? 0x08 : 0) | ((state->vblank_irq) ? 0x10 : 0) | ((state->blitter_irq) ? 0x20 : 0) ; |
| 105 | cpu_set_input_line_and_vector(state->maincpu, 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */ |
| 110 | 106 | } |
| 111 | 107 | |
| 112 | 108 | static WRITE8_HANDLER( dynax_vblank_ack_w ) |
| 113 | 109 | { |
| 114 | | dynax_vblank_irq = 0; |
| 110 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 111 | state->vblank_irq = 0; |
| 115 | 112 | sprtmtch_update_irq(space->machine); |
| 116 | 113 | } |
| 117 | 114 | |
| 118 | 115 | static WRITE8_HANDLER( dynax_blitter_ack_w ) |
| 119 | 116 | { |
| 120 | | dynax_blitter_irq = 0; |
| 117 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 118 | state->blitter_irq = 0; |
| 121 | 119 | sprtmtch_update_irq(space->machine); |
| 122 | 120 | } |
| 123 | 121 | |
| 124 | 122 | static INTERRUPT_GEN( sprtmtch_vblank_interrupt ) |
| 125 | 123 | { |
| 126 | | dynax_vblank_irq = 1; |
| 124 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 125 | state->vblank_irq = 1; |
| 127 | 126 | sprtmtch_update_irq(device->machine); |
| 128 | 127 | } |
| 129 | 128 | |
| 130 | | static void sprtmtch_sound_callback(running_device *device, int state) |
| 129 | static void sprtmtch_sound_callback( running_device *device, int state ) |
| 131 | 130 | { |
| 132 | | dynax_sound_irq = state; |
| 131 | dynax_state *driver_state = (dynax_state *)device->machine->driver_data; |
| 132 | driver_state->sound_irq = state; |
| 133 | 133 | sprtmtch_update_irq(device->machine); |
| 134 | 134 | } |
| 135 | 135 | |
| r7640 | r7641 | |
| 138 | 138 | Jantouki - Main CPU |
| 139 | 139 | ***************************************************************************/ |
| 140 | 140 | |
| 141 | | UINT8 dynax_blitter2_irq; |
| 142 | | |
| 143 | 141 | /* It runs in IM 0, thus needs an opcode on the data bus */ |
| 144 | 142 | void jantouki_update_irq(running_machine *machine) |
| 145 | 143 | { |
| 146 | | int irq = ((dynax_blitter_irq) ? 0x08 : 0) | |
| 147 | | ((dynax_blitter2_irq) ? 0x10 : 0) | |
| 148 | | ((dynax_vblank_irq) ? 0x20 : 0) ; |
| 149 | | cputag_set_input_line_and_vector(machine, "maincpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */ |
| 144 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 145 | int irq = ((state->blitter_irq) ? 0x08 : 0) | ((state->blitter2_irq) ? 0x10 : 0) | ((state->vblank_irq) ? 0x20 : 0) ; |
| 146 | cpu_set_input_line_and_vector(state->maincpu, 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */ |
| 150 | 147 | } |
| 151 | 148 | |
| 152 | 149 | static WRITE8_HANDLER( jantouki_vblank_ack_w ) |
| 153 | 150 | { |
| 154 | | dynax_vblank_irq = 0; |
| 151 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 152 | state->vblank_irq = 0; |
| 155 | 153 | jantouki_update_irq(space->machine); |
| 156 | 154 | } |
| 157 | 155 | |
| 158 | 156 | static WRITE8_HANDLER( jantouki_blitter_ack_w ) |
| 159 | 157 | { |
| 160 | | dynax_blitter_irq = data; |
| 158 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 159 | state->blitter_irq = data; |
| 161 | 160 | jantouki_update_irq(space->machine); |
| 162 | 161 | } |
| 163 | 162 | |
| 164 | 163 | static WRITE8_HANDLER( jantouki_blitter2_ack_w ) |
| 165 | 164 | { |
| 166 | | dynax_blitter2_irq = data; |
| 165 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 166 | state->blitter2_irq = data; |
| 167 | 167 | jantouki_update_irq(space->machine); |
| 168 | 168 | } |
| 169 | 169 | |
| 170 | 170 | static INTERRUPT_GEN( jantouki_vblank_interrupt ) |
| 171 | 171 | { |
| 172 | | dynax_vblank_irq = 1; |
| 172 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 173 | state->vblank_irq = 1; |
| 173 | 174 | jantouki_update_irq(device->machine); |
| 174 | 175 | } |
| 175 | 176 | |
| r7640 | r7641 | |
| 178 | 179 | Jantouki - Sound CPU |
| 179 | 180 | ***************************************************************************/ |
| 180 | 181 | |
| 181 | | static UINT8 dynax_soundlatch_irq; |
| 182 | | static UINT8 dynax_sound_vblank_irq; |
| 183 | | |
| 184 | 182 | static void jantouki_sound_update_irq(running_machine *machine) |
| 185 | 183 | { |
| 186 | | int irq = ((dynax_sound_irq) ? 0x08 : 0) | |
| 187 | | ((dynax_soundlatch_irq) ? 0x10 : 0) | |
| 188 | | ((dynax_sound_vblank_irq) ? 0x20 : 0) ; |
| 189 | | cputag_set_input_line_and_vector(machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */ |
| 184 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 185 | int irq = ((state->sound_irq) ? 0x08 : 0) | ((state->soundlatch_irq) ? 0x10 : 0) | ((state->sound_vblank_irq) ? 0x20 : 0) ; |
| 186 | cpu_set_input_line_and_vector(state->soundcpu, 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */ |
| 190 | 187 | } |
| 191 | 188 | |
| 192 | 189 | static INTERRUPT_GEN( jantouki_sound_vblank_interrupt ) |
| 193 | 190 | { |
| 194 | | dynax_sound_vblank_irq = 1; |
| 191 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 192 | state->sound_vblank_irq = 1; |
| 195 | 193 | jantouki_sound_update_irq(device->machine); |
| 196 | 194 | } |
| 197 | 195 | |
| 198 | 196 | static WRITE8_HANDLER( jantouki_sound_vblank_ack_w ) |
| 199 | 197 | { |
| 200 | | dynax_sound_vblank_irq = 0; |
| 198 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 199 | state->sound_vblank_irq = 0; |
| 201 | 200 | jantouki_sound_update_irq(space->machine); |
| 202 | 201 | } |
| 203 | 202 | |
| 204 | 203 | static void jantouki_sound_callback(running_device *device, int state) |
| 205 | 204 | { |
| 206 | | dynax_sound_irq = state; |
| 205 | dynax_state *driver_state = (dynax_state *)device->machine->driver_data; |
| 206 | driver_state->sound_irq = state; |
| 207 | 207 | jantouki_sound_update_irq(device->machine); |
| 208 | 208 | } |
| 209 | 209 | |
| r7640 | r7641 | |
| 224 | 224 | { |
| 225 | 225 | coin_counter_w(space->machine, 0, data); |
| 226 | 226 | } |
| 227 | |
| 227 | 228 | static WRITE8_HANDLER( dynax_coincounter_1_w ) |
| 228 | 229 | { |
| 229 | 230 | coin_counter_w(space->machine, 1, data); |
| 230 | 231 | } |
| 231 | 232 | |
| 232 | | static READ8_HANDLER( ret_ff ) { return 0xff; } |
| 233 | static READ8_HANDLER( ret_ff ) |
| 234 | { |
| 235 | return 0xff; |
| 236 | } |
| 233 | 237 | |
| 234 | 238 | |
| 235 | | static int keyb; |
| 236 | | |
| 237 | 239 | static READ8_HANDLER( hanamai_keyboard_0_r ) |
| 238 | 240 | { |
| 241 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 239 | 242 | int res = 0x3f; |
| 240 | 243 | |
| 241 | 244 | /* the game reads all rows at once (keyb = 0) to check if a key is pressed */ |
| 242 | | if (~keyb & 0x01) res &= input_port_read(space->machine, "KEY0"); |
| 243 | | if (~keyb & 0x02) res &= input_port_read(space->machine, "KEY1"); |
| 244 | | if (~keyb & 0x04) res &= input_port_read(space->machine, "KEY2"); |
| 245 | | if (~keyb & 0x08) res &= input_port_read(space->machine, "KEY3"); |
| 246 | | if (~keyb & 0x10) res &= input_port_read(space->machine, "KEY4"); |
| 245 | if (!BIT(state->keyb, 0)) res &= input_port_read(space->machine, "KEY0"); |
| 246 | if (!BIT(state->keyb, 1)) res &= input_port_read(space->machine, "KEY1"); |
| 247 | if (!BIT(state->keyb, 2)) res &= input_port_read(space->machine, "KEY2"); |
| 248 | if (!BIT(state->keyb, 3)) res &= input_port_read(space->machine, "KEY3"); |
| 249 | if (!BIT(state->keyb, 4)) res &= input_port_read(space->machine, "KEY4"); |
| 247 | 250 | |
| 248 | 251 | return res; |
| 249 | 252 | } |
| 250 | 253 | |
| 251 | 254 | static READ8_HANDLER( hanamai_keyboard_1_r ) |
| 252 | 255 | { |
| 256 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 253 | 257 | int res = 0x3f; |
| 254 | 258 | |
| 255 | 259 | /* the game reads all rows at once (keyb = 0) to check if a key is pressed */ |
| 256 | | if (~keyb & 0x01) res &= input_port_read(space->machine, "KEY5"); |
| 257 | | if (~keyb & 0x02) res &= input_port_read(space->machine, "KEY6"); |
| 258 | | if (~keyb & 0x04) res &= input_port_read(space->machine, "KEY7"); |
| 259 | | if (~keyb & 0x08) res &= input_port_read(space->machine, "KEY8"); |
| 260 | | if (~keyb & 0x10) res &= input_port_read(space->machine, "KEY9"); |
| 260 | if (!BIT(state->keyb, 0)) res &= input_port_read(space->machine, "KEY5"); |
| 261 | if (!BIT(state->keyb, 1)) res &= input_port_read(space->machine, "KEY6"); |
| 262 | if (!BIT(state->keyb, 2)) res &= input_port_read(space->machine, "KEY7"); |
| 263 | if (!BIT(state->keyb, 3)) res &= input_port_read(space->machine, "KEY8"); |
| 264 | if (!BIT(state->keyb, 4)) res &= input_port_read(space->machine, "KEY9"); |
| 261 | 265 | |
| 262 | 266 | return res; |
| 263 | 267 | } |
| 264 | 268 | |
| 265 | 269 | static WRITE8_HANDLER( hanamai_keyboard_w ) |
| 266 | 270 | { |
| 267 | | keyb = data; |
| 271 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 272 | state->keyb = data; |
| 268 | 273 | } |
| 269 | 274 | |
| 270 | 275 | |
| 271 | 276 | static WRITE8_HANDLER( dynax_rombank_w ) |
| 272 | 277 | { |
| 273 | | UINT8 *ROM = memory_region(space->machine, "maincpu"); |
| 274 | | memory_set_bankptr(space->machine, "bank1",&ROM[0x08000+0x8000*(data & 0x0f)]); |
| 278 | memory_set_bank(space->machine, "bank1", data & 0x0f); |
| 275 | 279 | } |
| 276 | 280 | |
| 277 | 281 | static WRITE8_HANDLER( jantouki_sound_rombank_w ) |
| 278 | 282 | { |
| 279 | | UINT8 *ROM = memory_region(space->machine, "soundcpu"); |
| 280 | | memory_set_bankptr(space->machine, "bank2",&ROM[0x08000+0x8000*data]); |
| 283 | memory_set_bank(space->machine, "bank2", data); |
| 281 | 284 | } |
| 282 | 285 | |
| 283 | 286 | |
| 284 | | static int hnoridur_bank; |
| 285 | | |
| 286 | 287 | static WRITE8_HANDLER( hnoridur_rombank_w ) |
| 287 | 288 | { |
| 288 | | UINT8 *ROM = memory_region(space->machine, "maincpu") + 0x10000 + 0x8000*data; |
| 289 | | //logerror("%04x: rom bank = %02x\n",cpu_get_pc(space->cpu),data); |
| 290 | | memory_set_bankptr(space->machine, "bank1",ROM); |
| 291 | | hnoridur_bank = data; |
| 289 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 290 | int bank_n = (memory_region_length(space->machine, "maincpu") - 0x10000) / 0x8000; |
| 291 | |
| 292 | //logerror("%04x: rom bank = %02x\n", cpu_get_pc(space->cpu), data); |
| 293 | if (data < bank_n) |
| 294 | memory_set_bank(space->machine, "bank1", data); |
| 295 | else |
| 296 | logerror("rom_bank = %02x (larger than the maximum bank %02x)\n", data, bank_n); |
| 297 | state->hnoridur_bank = data; |
| 292 | 298 | } |
| 293 | 299 | |
| 294 | | static UINT8 palette_ram[16*256*2]; |
| 295 | | static int palbank; |
| 296 | 300 | |
| 297 | 301 | static WRITE8_HANDLER( hnoridur_palbank_w ) |
| 298 | 302 | { |
| 299 | | palbank = data & 0x0f; |
| 300 | | dynax_blit_palbank_w(space,0,data); |
| 303 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 304 | state->palbank = data & 0x0f; |
| 305 | dynax_blit_palbank_w(space, 0, data); |
| 301 | 306 | } |
| 302 | 307 | |
| 303 | 308 | static WRITE8_HANDLER( hnoridur_palette_w ) |
| 304 | 309 | { |
| 305 | | switch (hnoridur_bank) |
| 310 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 311 | |
| 312 | switch (state->hnoridur_bank) |
| 306 | 313 | { |
| 307 | 314 | case 0x10: |
| 308 | | if (offset >= 0x100) return; |
| 309 | | palette_ram[256*palbank + offset + 16*256] = data; |
| 315 | if (offset >= 0x100) |
| 316 | return; |
| 317 | state->palette_ram[256 * state->palbank + offset + 16 * 256] = data; |
| 310 | 318 | break; |
| 311 | 319 | |
| 312 | 320 | case 0x14: |
| 313 | | if (offset >= 0x100) return; |
| 314 | | palette_ram[256*palbank + offset] = data; |
| 321 | if (offset >= 0x100) |
| 322 | return; |
| 323 | state->palette_ram[256 * state->palbank + offset] = data; |
| 315 | 324 | break; |
| 316 | 325 | |
| 317 | 326 | // hnoridur: R/W RAM |
| 318 | 327 | case 0x18: |
| 319 | 328 | { |
| 320 | | UINT8 *RAM = memory_region(space->machine, "maincpu") + 0x10000 + hnoridur_bank * 0x8000; |
| 329 | UINT8 *RAM = memory_region(space->machine, "maincpu") + 0x10000 + state->hnoridur_bank * 0x8000; |
| 321 | 330 | RAM[offset] = data; |
| 322 | 331 | return; |
| 323 | 332 | } |
| 324 | 333 | |
| 325 | 334 | default: |
| 326 | | popmessage("palette_w with bank = %02x",hnoridur_bank); |
| 335 | popmessage("palette_w with bank = %02x", state->hnoridur_bank); |
| 327 | 336 | break; |
| 328 | 337 | } |
| 329 | 338 | |
| 330 | 339 | { |
| 331 | | int x = (palette_ram[256*palbank + offset]<<8) + palette_ram[256*palbank + offset + 16*256]; |
| 340 | int x = (state->palette_ram[256 * state->palbank + offset] << 8) + state->palette_ram[256 * state->palbank + offset + 16 * 256]; |
| 332 | 341 | /* The bits are in reverse order! */ |
| 333 | | int r = BITSWAP8((x >> 0) & 0x1f, 7,6,5, 0,1,2,3,4 ); |
| 334 | | int g = BITSWAP8((x >> 5) & 0x1f, 7,6,5, 0,1,2,3,4 ); |
| 335 | | int b = BITSWAP8((x >> 10) & 0x1f, 7,6,5, 0,1,2,3,4 ); |
| 336 | | palette_set_color_rgb(space->machine,256*palbank + offset,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 342 | int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); |
| 343 | int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); |
| 344 | int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); |
| 345 | palette_set_color_rgb(space->machine, 256 * state->palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b)); |
| 337 | 346 | } |
| 338 | 347 | } |
| 339 | 348 | |
| 340 | 349 | static WRITE8_HANDLER( yarunara_palette_w ) |
| 341 | 350 | { |
| 342 | | int addr = 512*palbank + offset; |
| 343 | | switch (hnoridur_bank) |
| 351 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 352 | int addr = 512 * state->palbank + offset; |
| 353 | |
| 354 | switch (state->hnoridur_bank) |
| 344 | 355 | { |
| 345 | 356 | case 0x10: |
| 346 | | palette_ram[addr] = data; |
| 357 | state->palette_ram[addr] = data; |
| 347 | 358 | break; |
| 348 | 359 | |
| 349 | 360 | case 0x1c: // RTC |
| 350 | 361 | { |
| 351 | | running_device *rtc = devtag_get_device(space->machine, "rtc"); |
| 352 | | msm6242_w(rtc, offset, data); |
| 362 | msm6242_w(state->rtc, offset, data); |
| 353 | 363 | } |
| 354 | 364 | return; |
| 355 | 365 | |
| 356 | 366 | default: |
| 357 | | popmessage("palette_w with bank = %02x",hnoridur_bank); |
| 367 | popmessage("palette_w with bank = %02x", state->hnoridur_bank); |
| 358 | 368 | return; |
| 359 | 369 | } |
| 360 | 370 | |
| 361 | 371 | { |
| 362 | | int br = palette_ram[addr & ~0x10]; // bbbrrrrr |
| 363 | | int bg = palette_ram[addr | 0x10]; // bb0ggggg |
| 372 | int br = state->palette_ram[addr & ~0x10]; // bbbrrrrr |
| 373 | int bg = state->palette_ram[addr | 0x10]; // bb0ggggg |
| 364 | 374 | int r = br & 0x1f; |
| 365 | 375 | int g = bg & 0x1f; |
| 366 | | int b = ((bg & 0xc0)>>3) | ((br & 0xe0)>>5); |
| 367 | | palette_set_color_rgb(space->machine, 256*palbank + ((offset&0xf)|((offset&0x1e0)>>1)) ,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 376 | int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5); |
| 377 | palette_set_color_rgb(space->machine, 256 * state->palbank + ((offset & 0x0f) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b)); |
| 368 | 378 | } |
| 369 | 379 | } |
| 370 | 380 | |
| 371 | 381 | static WRITE8_HANDLER( nanajign_palette_w ) |
| 372 | 382 | { |
| 373 | | switch (hnoridur_bank) |
| 383 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 384 | |
| 385 | switch (state->hnoridur_bank) |
| 374 | 386 | { |
| 375 | 387 | case 0x10: |
| 376 | | palette_ram[256*palbank + offset + 16*256] = data; |
| 388 | state->palette_ram[256 * state->palbank + offset + 16 * 256] = data; |
| 377 | 389 | break; |
| 378 | 390 | |
| 379 | 391 | case 0x14: |
| 380 | | palette_ram[256*palbank + offset] = data; |
| 392 | state->palette_ram[256 * state->palbank + offset] = data; |
| 381 | 393 | break; |
| 382 | 394 | |
| 383 | 395 | default: |
| 384 | | popmessage("palette_w with bank = %02x",hnoridur_bank); |
| 396 | popmessage("palette_w with bank = %02x", state->hnoridur_bank); |
| 385 | 397 | break; |
| 386 | 398 | } |
| 387 | 399 | |
| 388 | 400 | { |
| 389 | | int bg = palette_ram[256*palbank + offset]; |
| 390 | | int br = palette_ram[256*palbank + offset + 16*256]; |
| 401 | int bg = state->palette_ram[256 * state->palbank + offset]; |
| 402 | int br = state->palette_ram[256 * state->palbank + offset + 16 * 256]; |
| 391 | 403 | int r = br & 0x1f; |
| 392 | 404 | int g = bg & 0x1f; |
| 393 | | int b = ((bg & 0xc0)>>3) | ((br & 0xe0)>>5); |
| 394 | | palette_set_color_rgb(space->machine,256*palbank + offset,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 405 | int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5); |
| 406 | palette_set_color_rgb(space->machine, 256 * state->palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b)); |
| 395 | 407 | } |
| 396 | 408 | } |
| 397 | 409 | |
| 398 | | static int msm5205next; |
| 399 | | static int resetkludge; |
| 400 | 410 | |
| 401 | | static void adpcm_int(running_device *device) |
| 411 | static void adpcm_int( running_device *device ) |
| 402 | 412 | { |
| 403 | | static int toggle; |
| 413 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 414 | msm5205_data_w(device, state->msm5205next >> 4); |
| 415 | state->msm5205next <<= 4; |
| 404 | 416 | |
| 405 | | msm5205_data_w(device,msm5205next >> 4); |
| 406 | | msm5205next<<=4; |
| 417 | state->toggle = 1 - state->toggle; |
| 407 | 418 | |
| 408 | | toggle = 1 - toggle; |
| 409 | | if (toggle) |
| 419 | if (state->toggle) |
| 410 | 420 | { |
| 411 | | if (resetkludge) // don't know what's wrong, but NMIs when the 5205 is reset make the game crash |
| 412 | | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE); |
| 421 | if (state->resetkludge) // don't know what's wrong, but NMIs when the 5205 is reset make the game crash |
| 422 | cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, PULSE_LINE); |
| 413 | 423 | } |
| 414 | 424 | } |
| 415 | | static void adpcm_int_cpu1(running_device *device) |
| 425 | |
| 426 | static void adpcm_int_cpu1( running_device *device ) |
| 416 | 427 | { |
| 417 | | static int toggle; |
| 428 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 429 | msm5205_data_w(device, state->msm5205next >> 4); |
| 430 | state->msm5205next <<= 4; |
| 418 | 431 | |
| 419 | | msm5205_data_w(device,msm5205next >> 4); |
| 420 | | msm5205next<<=4; |
| 421 | | |
| 422 | | toggle = 1 - toggle; |
| 423 | | if (toggle) |
| 432 | state->toggle_cpu1 = 1 - state->toggle_cpu1; |
| 433 | if (state->toggle_cpu1) |
| 424 | 434 | { |
| 425 | | if (resetkludge) // don't know what's wrong, but NMIs when the 5205 is reset make the game crash |
| 426 | | cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE); // cpu1 |
| 435 | if (state->resetkludge) // don't know what's wrong, but NMIs when the 5205 is reset make the game crash |
| 436 | cpu_set_input_line(state->soundcpu, INPUT_LINE_NMI, PULSE_LINE); // cpu1 |
| 427 | 437 | } |
| 428 | 438 | } |
| 429 | 439 | |
| 430 | 440 | |
| 431 | 441 | static WRITE8_HANDLER( adpcm_data_w ) |
| 432 | 442 | { |
| 433 | | msm5205next = data; |
| 443 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 444 | state->msm5205next = data; |
| 434 | 445 | } |
| 435 | 446 | |
| 436 | 447 | static WRITE8_DEVICE_HANDLER( adpcm_reset_w ) |
| 437 | 448 | { |
| 438 | | resetkludge = data & 1; |
| 439 | | msm5205_reset_w(device,~data & 1); |
| 449 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 450 | state->resetkludge = data & 1; |
| 451 | msm5205_reset_w(device, ~data & 1); |
| 440 | 452 | } |
| 441 | 453 | |
| 442 | 454 | static MACHINE_RESET( adpcm ) |
| 443 | 455 | { |
| 456 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 444 | 457 | /* start with the MSM5205 reset */ |
| 445 | | resetkludge = 0; |
| 446 | | msm5205_reset_w(devtag_get_device(machine, "msm"),1); |
| 458 | state->resetkludge = 0; |
| 459 | msm5205_reset_w(devtag_get_device(machine, "msm"), 1); |
| 447 | 460 | } |
| 448 | 461 | |
| 449 | 462 | static WRITE8_HANDLER( yarunara_layer_half_w ) |
| 450 | 463 | { |
| 451 | | hanamai_layer_half_w(space,0,data >> 1); |
| 464 | hanamai_layer_half_w(space, 0, data >> 1); |
| 452 | 465 | } |
| 466 | |
| 453 | 467 | static WRITE8_HANDLER( yarunara_layer_half2_w ) |
| 454 | 468 | { |
| 455 | | hnoridur_layer_half2_w(space,0,data >> 1); |
| 469 | hnoridur_layer_half2_w(space, 0, data >> 1); |
| 456 | 470 | } |
| 457 | 471 | |
| 458 | 472 | static ADDRESS_MAP_START( sprtmtch_mem_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r7640 | r7641 | |
| 478 | 492 | AM_RANGE( 0x0000, 0x5fff ) AM_ROM |
| 479 | 493 | AM_RANGE( 0x6000, 0x6fff ) AM_RAM |
| 480 | 494 | AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 481 | | AM_RANGE( 0x8000, 0x80ff ) AM_WRITE(nanajign_palette_w ) |
| 495 | AM_RANGE( 0x8000, 0x80ff ) AM_WRITE(nanajign_palette_w) |
| 482 | 496 | AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") |
| 483 | 497 | ADDRESS_MAP_END |
| 484 | 498 | |
| r7640 | r7641 | |
| 494 | 508 | AM_RANGE( 0x6000, 0x6fff ) AM_RAM |
| 495 | 509 | AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 496 | 510 | AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") |
| 497 | | AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w ) // Palette or RTC |
| 511 | AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC |
| 498 | 512 | ADDRESS_MAP_END |
| 499 | 513 | |
| 500 | 514 | static ADDRESS_MAP_START( jantouki_mem_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r7640 | r7641 | |
| 514 | 528 | |
| 515 | 529 | static ADDRESS_MAP_START( hanamai_io_map, ADDRESS_SPACE_IO, 8 ) |
| 516 | 530 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 517 | | AM_RANGE( 0x00, 0x00 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 518 | | AM_RANGE( 0x20, 0x20 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 519 | | AM_RANGE( 0x41, 0x47 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 520 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( dynax_rombank_w ) // BANK ROM Select hnkochou only |
| 521 | | AM_RANGE( 0x60, 0x60 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 522 | | AM_RANGE( 0x61, 0x61 ) AM_READ ( hanamai_keyboard_1_r ) // P2 |
| 523 | | AM_RANGE( 0x62, 0x62 ) AM_READ_PORT ( "COINS" ) // Coins |
| 524 | | AM_RANGE( 0x63, 0x63 ) AM_READ ( ret_ff ) // ? |
| 525 | | AM_RANGE( 0x64, 0x64 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 526 | | AM_RANGE( 0x65, 0x65 ) AM_WRITE ( dynax_rombank_w ) // BANK ROM Select hanamai only |
| 527 | | AM_RANGE( 0x66, 0x66 ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 528 | | AM_RANGE( 0x67, 0x67 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 529 | | AM_RANGE( 0x68, 0x68 ) AM_WRITE ( dynax_layer_enable_w ) // Layers Enable |
| 530 | | AM_RANGE( 0x69, 0x69 ) AM_WRITE ( hanamai_priority_w ) // layer priority |
| 531 | | AM_RANGE( 0x6a, 0x6a ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 532 | | AM_RANGE( 0x6b, 0x6b ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 533 | | AM_RANGE( 0x6c, 0x6c ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes (Low Bits) |
| 534 | | AM_RANGE( 0x6d, 0x6d ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 535 | | AM_RANGE( 0x6e, 0x6e ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 536 | | AM_RANGE( 0x70, 0x70 ) AM_DEVWRITE ( "msm", adpcm_reset_w) // MSM5205 reset |
| 537 | | AM_RANGE( 0x71, 0x71 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 538 | | AM_RANGE( 0x72, 0x72 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 539 | | AM_RANGE( 0x73, 0x73 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 540 | | AM_RANGE( 0x74, 0x74 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 541 | | AM_RANGE( 0x76, 0x76 ) AM_WRITE ( dynax_blit_palbank_w ) // Layers Palettes (High Bit) |
| 542 | | AM_RANGE( 0x77, 0x77 ) AM_WRITE ( hanamai_layer_half_w ) // half of the interleaved layer to write to |
| 543 | | AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w ) // 2 x DSW |
| 544 | | AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE ( "aysnd", ay8910_address_data_w ) // AY8910 |
| 531 | AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 532 | AM_RANGE( 0x20, 0x20 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 533 | AM_RANGE( 0x41, 0x47 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 534 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select hnkochou only |
| 535 | AM_RANGE( 0x60, 0x60 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 536 | AM_RANGE( 0x61, 0x61 ) AM_READ(hanamai_keyboard_1_r) // P2 |
| 537 | AM_RANGE( 0x62, 0x62 ) AM_READ_PORT("COINS") // Coins |
| 538 | AM_RANGE( 0x63, 0x63 ) AM_READ(ret_ff) // ? |
| 539 | AM_RANGE( 0x64, 0x64 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 540 | AM_RANGE( 0x65, 0x65 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select hanamai only |
| 541 | AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 542 | AM_RANGE( 0x67, 0x67 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 543 | AM_RANGE( 0x68, 0x68 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable |
| 544 | AM_RANGE( 0x69, 0x69 ) AM_WRITE(hanamai_priority_w) // layer priority |
| 545 | AM_RANGE( 0x6a, 0x6a ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 546 | AM_RANGE( 0x6b, 0x6b ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 547 | AM_RANGE( 0x6c, 0x6c ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) |
| 548 | AM_RANGE( 0x6d, 0x6d ) AM_WRITE(dynax_blit_palette23_w) // |
| 549 | AM_RANGE( 0x6e, 0x6e ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 550 | AM_RANGE( 0x70, 0x70 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 551 | AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 552 | AM_RANGE( 0x72, 0x72 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 553 | AM_RANGE( 0x73, 0x73 ) AM_WRITE(dynax_coincounter_1_w) // |
| 554 | AM_RANGE( 0x74, 0x74 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 555 | AM_RANGE( 0x76, 0x76 ) AM_WRITE(dynax_blit_palbank_w) // Layers Palettes (High Bit) |
| 556 | AM_RANGE( 0x77, 0x77 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to |
| 557 | AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // 2 x DSW |
| 558 | AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE("aysnd", ay8910_address_data_w) // AY8910 |
| 545 | 559 | // AM_RANGE( 0x7c, 0x7c ) AM_WRITENOP // CRT Controller |
| 546 | 560 | // AM_RANGE( 0x7d, 0x7d ) AM_WRITENOP // |
| 547 | | AM_RANGE( 0x7e, 0x7e ) AM_WRITE ( dynax_blit_romregion_w ) // Blitter ROM bank |
| 561 | AM_RANGE( 0x7e, 0x7e ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank |
| 548 | 562 | ADDRESS_MAP_END |
| 549 | 563 | |
| 550 | 564 | |
| 551 | 565 | static ADDRESS_MAP_START( hnoridur_io_map, ADDRESS_SPACE_IO, 8 ) |
| 552 | 566 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 553 | | AM_RANGE( 0x01, 0x07 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 567 | AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 554 | 568 | // AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller |
| 555 | 569 | // AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller |
| 556 | | AM_RANGE( 0x20, 0x20 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 557 | | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT ( "COINS" ) // Coins |
| 558 | | AM_RANGE( 0x22, 0x22 ) AM_READ ( hanamai_keyboard_1_r ) // P2 |
| 559 | | AM_RANGE( 0x23, 0x23 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 560 | | AM_RANGE( 0x24, 0x24 ) AM_READ_PORT ( "DSW1" ) // DSW2 |
| 561 | | AM_RANGE( 0x25, 0x25 ) AM_READ_PORT ( "DSW3" ) // DSW4 |
| 562 | | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT ( "DSW2" ) // DSW3 |
| 563 | | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 564 | | AM_RANGE( 0x32, 0x32 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 565 | | AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 566 | | AM_RANGE( 0x36, 0x36 ) AM_DEVREAD ( "aysnd", ay8910_r ) // AY8910, DSW1 |
| 567 | | AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE ( "aysnd", ay8910_data_w ) // AY8910 |
| 568 | | AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE ( "aysnd", ay8910_address_w ) // |
| 569 | | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 570 | | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 571 | | AM_RANGE( 0x42, 0x42 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| 572 | | AM_RANGE( 0x43, 0x43 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 573 | | AM_RANGE( 0x44, 0x44 ) AM_WRITE ( hanamai_priority_w ) // layer priority and enable |
| 574 | | AM_RANGE( 0x45, 0x45 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 575 | | AM_RANGE( 0x46, 0x46 ) AM_WRITE ( dynax_blit_romregion_w ) // Blitter ROM bank |
| 576 | | AM_RANGE( 0x47, 0x47 ) AM_WRITE ( hnoridur_palbank_w ) |
| 577 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 578 | | AM_RANGE( 0x51, 0x51 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 579 | | AM_RANGE( 0x54, 0x54 ) AM_WRITE ( hnoridur_rombank_w ) // BANK ROM Select |
| 580 | | AM_RANGE( 0x55, 0x55 ) AM_WRITENOP // ? VBlank IRQ Ack |
| 581 | | AM_RANGE( 0x56, 0x56 ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 582 | | AM_RANGE( 0x57, 0x57 ) AM_READ ( ret_ff ) // ? |
| 583 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 584 | | AM_RANGE( 0x61, 0x61 ) AM_WRITE ( hanamai_layer_half_w ) // half of the interleaved layer to write to |
| 585 | | AM_RANGE( 0x62, 0x62 ) AM_WRITE ( hnoridur_layer_half2_w ) // |
| 586 | | AM_RANGE( 0x67, 0x67 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 587 | | AM_RANGE( 0x70, 0x70 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 588 | | AM_RANGE( 0x71, 0x71 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 570 | AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 571 | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins |
| 572 | AM_RANGE( 0x22, 0x22 ) AM_READ(hanamai_keyboard_1_r) // P2 |
| 573 | AM_RANGE( 0x23, 0x23 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 574 | AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW1") // DSW2 |
| 575 | AM_RANGE( 0x25, 0x25 ) AM_READ_PORT("DSW3") // DSW4 |
| 576 | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW2") // DSW3 |
| 577 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 578 | AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 579 | AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 580 | AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8910_r) // AY8910, DSW1 |
| 581 | AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8910_data_w) // AY8910 |
| 582 | AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 583 | AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 584 | AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 585 | AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes |
| 586 | AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) // |
| 587 | AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable |
| 588 | AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 589 | AM_RANGE( 0x46, 0x46 ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank |
| 590 | AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w) |
| 591 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 592 | AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 593 | AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select |
| 594 | AM_RANGE( 0x55, 0x55 ) AM_WRITENOP // ? VBlank IRQ Ack |
| 595 | AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 596 | AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // ? |
| 597 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 598 | AM_RANGE( 0x61, 0x61 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to |
| 599 | AM_RANGE( 0x62, 0x62 ) AM_WRITE(hnoridur_layer_half2_w) // |
| 600 | AM_RANGE( 0x67, 0x67 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 601 | AM_RANGE( 0x70, 0x70 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 602 | AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_coincounter_1_w) // |
| 589 | 603 | ADDRESS_MAP_END |
| 590 | 604 | |
| 591 | 605 | /*************************************************************************** |
| r7640 | r7641 | |
| 594 | 608 | |
| 595 | 609 | static WRITE8_HANDLER( hjingi_bank_w ) |
| 596 | 610 | { |
| 597 | | hnoridur_bank = data; |
| 611 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 612 | state->hnoridur_bank = data; |
| 598 | 613 | } |
| 599 | 614 | |
| 600 | 615 | static WRITE8_HANDLER( hjingi_lockout_w ) |
| r7640 | r7641 | |
| 602 | 617 | coin_lockout_w(space->machine, 0, (~data) & 0x01); |
| 603 | 618 | } |
| 604 | 619 | |
| 605 | | static UINT8 hjingi_hopper; |
| 606 | 620 | static WRITE8_HANDLER( hjingi_hopper_w ) |
| 607 | 621 | { |
| 608 | | hjingi_hopper = data & 0x01; |
| 622 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 623 | state->hopper = data & 0x01; |
| 609 | 624 | } |
| 610 | 625 | |
| 611 | | static UINT8 hjingi_hopper_bit(running_machine *machine) |
| 626 | static UINT8 hjingi_hopper_bit( running_machine *machine ) |
| 612 | 627 | { |
| 613 | | return (hjingi_hopper && !(video_screen_get_frame_number(machine->primary_screen)%10)) ? 0 : (1<<6); |
| 628 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 629 | return (state->hopper && !(video_screen_get_frame_number(machine->primary_screen) % 10)) ? 0 : (1 << 6); |
| 614 | 630 | } |
| 615 | 631 | |
| 616 | 632 | static READ8_HANDLER( hjingi_keyboard_0_r ) |
| 617 | 633 | { |
| 618 | | return hanamai_keyboard_0_r(space,0) | hjingi_hopper_bit(space->machine); |
| 634 | return hanamai_keyboard_0_r(space, 0) | hjingi_hopper_bit(space->machine); |
| 619 | 635 | } |
| 636 | |
| 620 | 637 | static READ8_HANDLER( hjingi_keyboard_1_r ) |
| 621 | 638 | { |
| 622 | | return hanamai_keyboard_1_r(space,0) | input_port_read(space->machine, "BET"); |
| 639 | return hanamai_keyboard_1_r(space, 0) | input_port_read(space->machine, "BET"); |
| 623 | 640 | } |
| 624 | 641 | |
| 625 | 642 | static ADDRESS_MAP_START( hjingi_mem_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r7640 | r7641 | |
| 630 | 647 | ADDRESS_MAP_END |
| 631 | 648 | |
| 632 | 649 | static ADDRESS_MAP_START( hjingi_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 633 | | AM_RANGE( 0x01, 0x07 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 650 | AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 634 | 651 | |
| 635 | 652 | // AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller |
| 636 | 653 | // AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller |
| 637 | 654 | |
| 638 | | AM_RANGE( 0x20, 0x20 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 639 | | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT ( "COINS" ) // Coins |
| 640 | | AM_RANGE( 0x22, 0x22 ) AM_READ ( hjingi_keyboard_1_r ) // P2 + Hopper |
| 641 | | AM_RANGE( 0x23, 0x23 ) AM_READ ( hjingi_keyboard_0_r ) // P1 + Hopper |
| 642 | | AM_RANGE( 0x24, 0x24 ) AM_READ_PORT ( "DSW1" ) // DSW1 |
| 643 | | AM_RANGE( 0x25, 0x25 ) AM_READ_PORT ( "DSW3" ) // DSW3 |
| 644 | | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT ( "DSW2" ) // DSW2 |
| 655 | AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 656 | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins |
| 657 | AM_RANGE( 0x22, 0x22 ) AM_READ(hjingi_keyboard_1_r) // P2 + Hopper |
| 658 | AM_RANGE( 0x23, 0x23 ) AM_READ(hjingi_keyboard_0_r) // P1 + Hopper |
| 659 | AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW1") // DSW1 |
| 660 | AM_RANGE( 0x25, 0x25 ) AM_READ_PORT("DSW3") // DSW3 |
| 661 | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW2") // DSW2 |
| 645 | 662 | |
| 646 | | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 647 | | AM_RANGE( 0x32, 0x32 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 648 | | AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 663 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 664 | AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 665 | AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 649 | 666 | |
| 650 | | AM_RANGE( 0x36, 0x36 ) AM_DEVREAD ( "aysnd", ay8910_r ) // AY8910, DSW1 |
| 651 | | AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE ( "aysnd", ay8910_data_w ) // AY8910 |
| 652 | | AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE ( "aysnd", ay8910_address_w) // |
| 667 | AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8910_r) // AY8910, DSW1 |
| 668 | AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8910_data_w) // AY8910 |
| 669 | AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 653 | 670 | |
| 654 | | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 655 | | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 656 | | AM_RANGE( 0x42, 0x42 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| 657 | | AM_RANGE( 0x43, 0x43 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 658 | | AM_RANGE( 0x44, 0x44 ) AM_WRITE ( hanamai_priority_w ) // layer priority and enable |
| 659 | | AM_RANGE( 0x45, 0x45 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 660 | | AM_RANGE( 0x46, 0x46 ) AM_WRITE ( dynax_blit_romregion_w ) // Blitter ROM bank |
| 661 | | AM_RANGE( 0x47, 0x47 ) AM_WRITE ( hnoridur_palbank_w ) |
| 671 | AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 672 | AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 673 | AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes |
| 674 | AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) // |
| 675 | AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable |
| 676 | AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 677 | AM_RANGE( 0x46, 0x46 ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank |
| 678 | AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w) |
| 662 | 679 | |
| 663 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 664 | | AM_RANGE( 0x51, 0x51 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 680 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 681 | AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 665 | 682 | |
| 666 | | AM_RANGE( 0x54, 0x54 ) AM_WRITE ( hjingi_bank_w ) // |
| 683 | AM_RANGE( 0x54, 0x54 ) AM_WRITE(hjingi_bank_w) // |
| 667 | 684 | |
| 668 | | AM_RANGE( 0x56, 0x56 ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 669 | | AM_RANGE( 0x57, 0x57 ) AM_READ ( ret_ff ) // Blitter Busy |
| 670 | | AM_RANGE( 0x67, 0x67 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 685 | AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 686 | AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // Blitter Busy |
| 687 | AM_RANGE( 0x67, 0x67 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 671 | 688 | |
| 672 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 673 | | AM_RANGE( 0x61, 0x61 ) AM_WRITE ( hanamai_layer_half_w ) // half of the interleaved layer to write to |
| 674 | | AM_RANGE( 0x62, 0x62 ) AM_WRITE ( hnoridur_layer_half2_w ) // |
| 689 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 690 | AM_RANGE( 0x61, 0x61 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to |
| 691 | AM_RANGE( 0x62, 0x62 ) AM_WRITE(hnoridur_layer_half2_w) // |
| 675 | 692 | |
| 676 | | AM_RANGE( 0x70, 0x70 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 677 | | AM_RANGE( 0x71, 0x71 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 678 | | AM_RANGE( 0x72, 0x72 ) AM_WRITE ( hjingi_hopper_w ) // Hopper |
| 679 | | AM_RANGE( 0x73, 0x73 ) AM_WRITE ( hjingi_lockout_w ) // Coin Lockout |
| 693 | AM_RANGE( 0x70, 0x70 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 694 | AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_coincounter_1_w) // |
| 695 | AM_RANGE( 0x72, 0x72 ) AM_WRITE(hjingi_hopper_w) // Hopper |
| 696 | AM_RANGE( 0x73, 0x73 ) AM_WRITE(hjingi_lockout_w) // Coin Lockout |
| 680 | 697 | |
| 681 | | AM_RANGE( 0x80, 0x80 ) AM_WRITE ( hnoridur_rombank_w ) // BANK ROM Select |
| 698 | AM_RANGE( 0x80, 0x80 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select |
| 682 | 699 | ADDRESS_MAP_END |
| 683 | 700 | |
| 684 | 701 | |
| r7640 | r7641 | |
| 686 | 703 | Yarunara / Quiz TV Q&Q / Mahjong Angels |
| 687 | 704 | ***************************************************************************/ |
| 688 | 705 | |
| 689 | | static UINT8 yarunara_select, yarunara_ip; |
| 690 | 706 | static WRITE8_HANDLER( yarunara_input_w ) |
| 691 | 707 | { |
| 708 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 709 | |
| 692 | 710 | switch (offset) |
| 693 | 711 | { |
| 694 | | case 0: yarunara_select = data; |
| 695 | | yarunara_ip = 0; |
| 712 | case 0: state->input_sel = data; |
| 713 | state->keyb = 0; |
| 696 | 714 | break; |
| 697 | 715 | |
| 698 | 716 | case 1: break; |
| r7640 | r7641 | |
| 702 | 720 | |
| 703 | 721 | static READ8_HANDLER( yarunara_input_r ) |
| 704 | 722 | { |
| 723 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 705 | 724 | static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }; |
| 706 | 725 | static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" }; |
| 707 | 726 | |
| r7640 | r7641 | |
| 709 | 728 | { |
| 710 | 729 | case 0: |
| 711 | 730 | { |
| 712 | | switch( yarunara_select ) |
| 731 | switch (state->input_sel) |
| 713 | 732 | { |
| 714 | | case 0x00: |
| 715 | | return input_port_read(space->machine, "COINS"); // coins |
| 733 | case 0x00: |
| 734 | return input_port_read(space->machine, "COINS"); // coins |
| 716 | 735 | |
| 717 | | case 0x02: |
| 718 | | return 0xff; // bit 7 must be 1. Bit 2? |
| 736 | case 0x02: |
| 737 | return 0xff; // bit 7 must be 1. Bit 2? |
| 719 | 738 | |
| 720 | | default: |
| 721 | | return 0xff; |
| 739 | default: |
| 740 | return 0xff; |
| 722 | 741 | } |
| 723 | 742 | } |
| 724 | 743 | |
| 725 | 744 | case 1: |
| 726 | 745 | { |
| 727 | | switch( yarunara_select ) |
| 746 | switch (state->input_sel) |
| 728 | 747 | { |
| 729 | | // player 2 |
| 730 | | case 0x01: //quiztvqq |
| 731 | | case 0x81: |
| 732 | | return input_port_read(space->machine, keynames1[yarunara_ip++]); |
| 748 | // player 2 |
| 749 | case 0x01: //quiztvqq |
| 750 | case 0x81: |
| 751 | return input_port_read(space->machine, keynames1[state->keyb++]); |
| 733 | 752 | |
| 734 | | // player 1 |
| 735 | | case 0x02: //quiztvqq |
| 736 | | case 0x82: |
| 737 | | return input_port_read(space->machine, keynames0[yarunara_ip++]); |
| 753 | // player 1 |
| 754 | case 0x02: //quiztvqq |
| 755 | case 0x82: |
| 756 | return input_port_read(space->machine, keynames0[state->keyb++]); |
| 738 | 757 | |
| 739 | | default: |
| 740 | | return 0xff; |
| 758 | default: |
| 759 | return 0xff; |
| 741 | 760 | } |
| 742 | 761 | } |
| 743 | 762 | } |
| r7640 | r7641 | |
| 746 | 765 | |
| 747 | 766 | static WRITE8_HANDLER( yarunara_rombank_w ) |
| 748 | 767 | { |
| 749 | | UINT8 *rom = memory_region(space->machine, "maincpu") + 0x10000 + 0x8000 * data; |
| 750 | | memory_set_bankptr(space->machine, "bank1", rom); |
| 768 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 769 | memory_set_bank(space->machine, "bank1", data); |
| 751 | 770 | |
| 752 | | hnoridur_bank = data; |
| 771 | state->hnoridur_bank = data; |
| 753 | 772 | } |
| 754 | 773 | |
| 755 | 774 | static WRITE8_HANDLER( yarunara_flipscreen_w ) |
| 756 | 775 | { |
| 757 | | dynax_flipscreen_w(space,0,(data&2)?1:0); |
| 776 | dynax_flipscreen_w(space, 0, BIT(data, 1)); |
| 758 | 777 | } |
| 778 | |
| 759 | 779 | static WRITE8_HANDLER( yarunara_flipscreen_inv_w ) |
| 760 | 780 | { |
| 761 | | dynax_flipscreen_w(space,0,(data&2)?0:1); |
| 781 | dynax_flipscreen_w(space, 0, !BIT(data, 1)); |
| 762 | 782 | } |
| 763 | 783 | |
| 764 | 784 | static WRITE8_HANDLER( yarunara_blit_romregion_w ) |
| 765 | 785 | { |
| 766 | 786 | switch(data) |
| 767 | 787 | { |
| 768 | | case 0x00: dynax_blit_romregion_w(space,0,0); return; |
| 769 | | case 0x01: dynax_blit_romregion_w(space,0,1); return; |
| 770 | | case 0x80: dynax_blit_romregion_w(space,0,2); return; |
| 771 | | case 0x81: dynax_blit_romregion_w(space,0,3); return; |
| 772 | | case 0x82: dynax_blit_romregion_w(space,0,4); return; // mjcomv1 |
| 788 | case 0x00: dynax_blit_romregion_w(space, 0, 0); return; |
| 789 | case 0x01: dynax_blit_romregion_w(space, 0, 1); return; |
| 790 | case 0x80: dynax_blit_romregion_w(space, 0, 2); return; |
| 791 | case 0x81: dynax_blit_romregion_w(space, 0, 3); return; |
| 792 | case 0x82: dynax_blit_romregion_w(space, 0, 4); return; // mjcomv1 |
| 773 | 793 | } |
| 774 | | logerror("%04x: unmapped romregion=%02X\n",cpu_get_pc(space->cpu),data); |
| 794 | logerror("%04x: unmapped romregion=%02X\n", cpu_get_pc(space->cpu), data); |
| 775 | 795 | } |
| 776 | 796 | |
| 777 | 797 | static ADDRESS_MAP_START( yarunara_io_map, ADDRESS_SPACE_IO, 8 ) |
| 778 | 798 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 779 | | AM_RANGE( 0x00, 0x01 ) AM_WRITE ( yarunara_input_w ) // Controls |
| 780 | | AM_RANGE( 0x02, 0x03 ) AM_READ ( yarunara_input_r ) // |
| 781 | | AM_RANGE( 0x11, 0x17 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 782 | | AM_RANGE( 0x20, 0x20 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 783 | | AM_RANGE( 0x22, 0x22 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 784 | | AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 785 | | AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE ( "aysnd", ay8910_data_w ) // AY8910 |
| 786 | | AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE ( "aysnd", ay8910_address_w ) // |
| 787 | | AM_RANGE( 0x48, 0x48 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 788 | | AM_RANGE( 0x49, 0x49 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 789 | | AM_RANGE( 0x4a, 0x4a ) AM_WRITE ( yarunara_rombank_w ) // BANK ROM Select |
| 790 | | AM_RANGE( 0x4b, 0x4b ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 791 | | AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT ( "DSW0" ) // DSW 1 |
| 792 | | AM_RANGE( 0x4f, 0x4f ) AM_READ_PORT ( "DSW1" ) // DSW 2 |
| 793 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( yarunara_flipscreen_w ) |
| 794 | | AM_RANGE( 0x51, 0x51 ) AM_WRITE ( yarunara_layer_half_w ) // half of the interleaved layer to write to |
| 795 | | AM_RANGE( 0x52, 0x52 ) AM_WRITE ( yarunara_layer_half2_w ) // |
| 799 | AM_RANGE( 0x00, 0x01 ) AM_WRITE(yarunara_input_w) // Controls |
| 800 | AM_RANGE( 0x02, 0x03 ) AM_READ(yarunara_input_r) // |
| 801 | AM_RANGE( 0x11, 0x17 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 802 | AM_RANGE( 0x20, 0x20 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 803 | AM_RANGE( 0x22, 0x22 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 804 | AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 805 | AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE("aysnd", ay8910_data_w) // AY8910 |
| 806 | AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 807 | AM_RANGE( 0x48, 0x48 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 808 | AM_RANGE( 0x49, 0x49 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 809 | AM_RANGE( 0x4a, 0x4a ) AM_WRITE(yarunara_rombank_w) // BANK ROM Select |
| 810 | AM_RANGE( 0x4b, 0x4b ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 811 | AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT("DSW0") // DSW 1 |
| 812 | AM_RANGE( 0x4f, 0x4f ) AM_READ_PORT("DSW1") // DSW 2 |
| 813 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(yarunara_flipscreen_w) |
| 814 | AM_RANGE( 0x51, 0x51 ) AM_WRITE(yarunara_layer_half_w) // half of the interleaved layer to write to |
| 815 | AM_RANGE( 0x52, 0x52 ) AM_WRITE(yarunara_layer_half2_w) // |
| 796 | 816 | // 53 ? |
| 797 | 817 | // 54 ? |
| 798 | | AM_RANGE( 0x57, 0x57 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 799 | | AM_RANGE( 0x68, 0x68 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 800 | | AM_RANGE( 0x69, 0x69 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 801 | | AM_RANGE( 0x6a, 0x6a ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| 802 | | AM_RANGE( 0x6b, 0x6b ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 803 | | AM_RANGE( 0x6c, 0x6c ) AM_WRITE ( hanamai_priority_w ) // layer priority and enable |
| 804 | | AM_RANGE( 0x6d, 0x6d ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 805 | | AM_RANGE( 0x6e, 0x6e ) AM_WRITE ( yarunara_blit_romregion_w ) // Blitter ROM bank |
| 818 | AM_RANGE( 0x57, 0x57 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 819 | AM_RANGE( 0x68, 0x68 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 820 | AM_RANGE( 0x69, 0x69 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 821 | AM_RANGE( 0x6a, 0x6a ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes |
| 822 | AM_RANGE( 0x6b, 0x6b ) AM_WRITE(dynax_blit_palette23_w) // |
| 823 | AM_RANGE( 0x6c, 0x6c ) AM_WRITE(hanamai_priority_w) // layer priority and enable |
| 824 | AM_RANGE( 0x6d, 0x6d ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 825 | AM_RANGE( 0x6e, 0x6e ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank |
| 806 | 826 | ADDRESS_MAP_END |
| 807 | 827 | |
| 808 | 828 | |
| 809 | 829 | // Almost identical to hnoridur |
| 810 | 830 | static ADDRESS_MAP_START( mcnpshnt_io_map, ADDRESS_SPACE_IO, 8 ) |
| 811 | 831 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 812 | | AM_RANGE( 0x01, 0x07 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 832 | AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 813 | 833 | // AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller |
| 814 | 834 | // AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller |
| 815 | | AM_RANGE( 0x20, 0x20 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 816 | | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT ( "COINS" ) // Coins |
| 817 | | AM_RANGE( 0x22, 0x22 ) AM_READ ( hanamai_keyboard_1_r ) // P2 |
| 818 | | AM_RANGE( 0x23, 0x23 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 819 | | AM_RANGE( 0x24, 0x24 ) AM_READ_PORT ( "DSW0" ) // DSW2 |
| 820 | | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT ( "DSW1" ) // DSW3 |
| 821 | | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 822 | | AM_RANGE( 0x32, 0x32 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 823 | | AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 824 | | AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE ( "aysnd", ay8910_data_w ) // AY8910 |
| 825 | | AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE ( "aysnd", ay8910_address_w ) // |
| 826 | | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 827 | | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 828 | | AM_RANGE( 0x42, 0x42 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| 829 | | AM_RANGE( 0x43, 0x43 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 830 | | AM_RANGE( 0x44, 0x44 ) AM_WRITE ( hanamai_priority_w ) // layer priority and enable |
| 831 | | AM_RANGE( 0x45, 0x45 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 832 | | AM_RANGE( 0x46, 0x46 ) AM_WRITE ( yarunara_blit_romregion_w ) // Blitter ROM bank |
| 833 | | AM_RANGE( 0x47, 0x47 ) AM_WRITE ( hnoridur_palbank_w ) |
| 834 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 835 | | AM_RANGE( 0x51, 0x51 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 836 | | AM_RANGE( 0x54, 0x54 ) AM_WRITE ( hnoridur_rombank_w ) // BANK ROM Select |
| 837 | | AM_RANGE( 0x56, 0x56 ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 838 | | AM_RANGE( 0x57, 0x57 ) AM_READ ( ret_ff ) // ? |
| 839 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 840 | | AM_RANGE( 0x61, 0x61 ) AM_WRITE ( hanamai_layer_half_w ) // half of the interleaved layer to write to |
| 841 | | AM_RANGE( 0x62, 0x62 ) AM_WRITE ( hnoridur_layer_half2_w ) // |
| 842 | | AM_RANGE( 0x67, 0x67 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 843 | | AM_RANGE( 0x70, 0x70 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 844 | | AM_RANGE( 0x71, 0x71 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 835 | AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 836 | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins |
| 837 | AM_RANGE( 0x22, 0x22 ) AM_READ(hanamai_keyboard_1_r) // P2 |
| 838 | AM_RANGE( 0x23, 0x23 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 839 | AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW0") // DSW2 |
| 840 | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW1") // DSW3 |
| 841 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 842 | AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 843 | AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 844 | AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8910_data_w) // AY8910 |
| 845 | AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 846 | AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 847 | AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 848 | AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes |
| 849 | AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) // |
| 850 | AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable |
| 851 | AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 852 | AM_RANGE( 0x46, 0x46 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank |
| 853 | AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w) |
| 854 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 855 | AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 856 | AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select |
| 857 | AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 858 | AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // ? |
| 859 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 860 | AM_RANGE( 0x61, 0x61 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to |
| 861 | AM_RANGE( 0x62, 0x62 ) AM_WRITE(hnoridur_layer_half2_w) // |
| 862 | AM_RANGE( 0x67, 0x67 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 863 | AM_RANGE( 0x70, 0x70 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 864 | AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_coincounter_1_w) // |
| 845 | 865 | ADDRESS_MAP_END |
| 846 | 866 | |
| 847 | 867 | |
| 848 | 868 | static ADDRESS_MAP_START( sprtmtch_io_map, ADDRESS_SPACE_IO, 8 ) |
| 849 | 869 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 850 | | AM_RANGE( 0x01, 0x07 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 851 | | AM_RANGE( 0x10, 0x11 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w ) // 2 x DSW |
| 870 | AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 871 | AM_RANGE( 0x10, 0x11 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // 2 x DSW |
| 852 | 872 | // AM_RANGE( 0x12, 0x12 ) AM_WRITENOP // CRT Controller |
| 853 | 873 | // AM_RANGE( 0x13, 0x13 ) AM_WRITENOP // CRT Controller |
| 854 | | AM_RANGE( 0x20, 0x20 ) AM_READ_PORT ( "P1" ) // P1 |
| 855 | | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT ( "P2" ) // P2 |
| 856 | | AM_RANGE( 0x22, 0x22 ) AM_READ_PORT ( "COINS" ) // Coins |
| 857 | | AM_RANGE( 0x23, 0x23 ) AM_READ ( ret_ff ) // ? |
| 858 | | AM_RANGE( 0x30, 0x30 ) AM_WRITE ( dynax_layer_enable_w ) // Layers Enable |
| 859 | | AM_RANGE( 0x31, 0x31 ) AM_WRITE ( dynax_rombank_w ) // BANK ROM Select |
| 860 | | AM_RANGE( 0x32, 0x32 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 861 | | AM_RANGE( 0x33, 0x33 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 862 | | AM_RANGE( 0x34, 0x34 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes (Low Bits) |
| 863 | | AM_RANGE( 0x35, 0x35 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 864 | | AM_RANGE( 0x36, 0x36 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 865 | | AM_RANGE( 0x37, 0x37 ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 866 | | // AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 867 | | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 868 | | AM_RANGE( 0x42, 0x42 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 869 | | AM_RANGE( 0x43, 0x43 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 870 | | AM_RANGE( 0x44, 0x44 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 871 | | AM_RANGE( 0x45, 0x45 ) AM_WRITE ( dynax_blit_palbank_w ) // Layers Palettes (High Bit) |
| 874 | AM_RANGE( 0x20, 0x20 ) AM_READ_PORT("P1") // P1 |
| 875 | AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("P2") // P2 |
| 876 | AM_RANGE( 0x22, 0x22 ) AM_READ_PORT("COINS") // Coins |
| 877 | AM_RANGE( 0x23, 0x23 ) AM_READ(ret_ff) // ? |
| 878 | AM_RANGE( 0x30, 0x30 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable |
| 879 | AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select |
| 880 | AM_RANGE( 0x32, 0x32 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 881 | AM_RANGE( 0x33, 0x33 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 882 | AM_RANGE( 0x34, 0x34 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) |
| 883 | AM_RANGE( 0x35, 0x35 ) AM_WRITE(dynax_blit_palette23_w) // |
| 884 | AM_RANGE( 0x36, 0x36 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 885 | AM_RANGE( 0x37, 0x37 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 886 | // AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 887 | AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 888 | AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 889 | AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_coincounter_1_w) // |
| 890 | AM_RANGE( 0x44, 0x44 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 891 | AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_palbank_w) // Layers Palettes (High Bit) |
| 872 | 892 | ADDRESS_MAP_END |
| 873 | 893 | |
| 874 | 894 | |
| 875 | 895 | |
| 876 | 896 | static ADDRESS_MAP_START( mjfriday_io_map, ADDRESS_SPACE_IO, 8 ) |
| 877 | 897 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 878 | | AM_RANGE( 0x00, 0x00 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 879 | | AM_RANGE( 0x01, 0x01 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes (Low Bits) |
| 880 | | AM_RANGE( 0x02, 0x02 ) AM_WRITE ( dynax_rombank_w ) // BANK ROM Select |
| 881 | | AM_RANGE( 0x03, 0x03 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 882 | | AM_RANGE( 0x10, 0x11 ) AM_WRITE ( mjdialq2_blit_dest_w ) // Destination Layer |
| 883 | | AM_RANGE( 0x12, 0x12 ) AM_WRITE ( dynax_blit_palbank_w ) // Layers Palettes (High Bit) |
| 884 | | AM_RANGE( 0x13, 0x13 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 885 | | AM_RANGE( 0x14, 0x14 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 886 | | AM_RANGE( 0x15, 0x15 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 887 | | AM_RANGE( 0x16, 0x17 ) AM_WRITE ( mjdialq2_layer_enable_w ) // Layers Enable |
| 888 | | AM_RANGE( 0x41, 0x47 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 898 | AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 899 | AM_RANGE( 0x01, 0x01 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) |
| 900 | AM_RANGE( 0x02, 0x02 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select |
| 901 | AM_RANGE( 0x03, 0x03 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 902 | AM_RANGE( 0x10, 0x11 ) AM_WRITE(mjdialq2_blit_dest_w) // Destination Layer |
| 903 | AM_RANGE( 0x12, 0x12 ) AM_WRITE(dynax_blit_palbank_w) // Layers Palettes (High Bit) |
| 904 | AM_RANGE( 0x13, 0x13 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 905 | AM_RANGE( 0x14, 0x14 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 906 | AM_RANGE( 0x15, 0x15 ) AM_WRITE(dynax_coincounter_1_w) // |
| 907 | AM_RANGE( 0x16, 0x17 ) AM_WRITE(mjdialq2_layer_enable_w) // Layers Enable |
| 908 | AM_RANGE( 0x41, 0x47 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 889 | 909 | // AM_RANGE( 0x50, 0x50 ) AM_WRITENOP // CRT Controller |
| 890 | 910 | // AM_RANGE( 0x51, 0x51 ) AM_WRITENOP // CRT Controller |
| 891 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 892 | | AM_RANGE( 0x61, 0x61 ) AM_READ_PORT ( "COINS" ) // Coins |
| 893 | | AM_RANGE( 0x62, 0x62 ) AM_READ ( hanamai_keyboard_1_r ) // P2 |
| 894 | | AM_RANGE( 0x63, 0x63 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 895 | | AM_RANGE( 0x64, 0x64 ) AM_READ_PORT ( "DSW0" ) // DSW |
| 896 | | AM_RANGE( 0x67, 0x67 ) AM_READ_PORT ( "DSW1" ) // DSW |
| 897 | | AM_RANGE( 0x70, 0x71 ) AM_DEVWRITE ( "ymsnd", ym2413_w ) // |
| 911 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 912 | AM_RANGE( 0x61, 0x61 ) AM_READ_PORT("COINS") // Coins |
| 913 | AM_RANGE( 0x62, 0x62 ) AM_READ(hanamai_keyboard_1_r) // P2 |
| 914 | AM_RANGE( 0x63, 0x63 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 915 | AM_RANGE( 0x64, 0x64 ) AM_READ_PORT("DSW0") // DSW |
| 916 | AM_RANGE( 0x67, 0x67 ) AM_READ_PORT("DSW1") // DSW |
| 917 | AM_RANGE( 0x70, 0x71 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 898 | 918 | // AM_RANGE( 0x80, 0x80 ) AM_WRITENOP // IRQ ack? |
| 899 | 919 | ADDRESS_MAP_END |
| 900 | 920 | |
| 901 | 921 | |
| 902 | 922 | static ADDRESS_MAP_START( nanajign_io_map, ADDRESS_SPACE_IO, 8 ) |
| 903 | 923 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 904 | | AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 905 | | AM_RANGE( 0x02, 0x02 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 906 | | AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 907 | | AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE ( "aysnd", ay8910_data_w ) // AY8910 |
| 908 | | AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE ( "aysnd", ay8910_address_w ) // |
| 909 | | AM_RANGE( 0x10, 0x10 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 910 | | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT ( "COINS" ) // Coins |
| 911 | | AM_RANGE( 0x12, 0x12 ) AM_READ ( hanamai_keyboard_1_r ) // P2 |
| 912 | | AM_RANGE( 0x13, 0x13 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 913 | | AM_RANGE( 0x14, 0x14 ) AM_READ_PORT ( "DSW0" ) // DSW1 |
| 914 | | AM_RANGE( 0x15, 0x15 ) AM_READ_PORT ( "DSW1" ) // DSW2 |
| 915 | | AM_RANGE( 0x16, 0x16 ) AM_READ_PORT ( "DSW2" ) // DSW3 |
| 924 | AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 925 | AM_RANGE( 0x02, 0x02 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 926 | AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 927 | AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8910_data_w) // AY8910 |
| 928 | AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 929 | AM_RANGE( 0x10, 0x10 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 930 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("COINS") // Coins |
| 931 | AM_RANGE( 0x12, 0x12 ) AM_READ(hanamai_keyboard_1_r) // P2 |
| 932 | AM_RANGE( 0x13, 0x13 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 933 | AM_RANGE( 0x14, 0x14 ) AM_READ_PORT("DSW0") // DSW1 |
| 934 | AM_RANGE( 0x15, 0x15 ) AM_READ_PORT("DSW1") // DSW2 |
| 935 | AM_RANGE( 0x16, 0x16 ) AM_READ_PORT("DSW2") // DSW3 |
| 916 | 936 | // AM_RANGE( 0x20, 0x21 ) AM_WRITENOP // CRT Controller |
| 917 | | AM_RANGE( 0x31, 0x37 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 918 | | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counter |
| 919 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 920 | | AM_RANGE( 0x51, 0x51 ) AM_WRITE ( hanamai_layer_half_w ) // half of the interleaved layer to write to |
| 921 | | AM_RANGE( 0x52, 0x52 ) AM_WRITE ( hnoridur_layer_half2_w ) // |
| 922 | | AM_RANGE( 0x57, 0x57 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 923 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 924 | | AM_RANGE( 0x62, 0x62 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 925 | | AM_RANGE( 0x6a, 0x6a ) AM_WRITE ( hnoridur_rombank_w ) // BANK ROM Select |
| 926 | | AM_RANGE( 0x6c, 0x6c ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 927 | | AM_RANGE( 0x70, 0x70 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 928 | | AM_RANGE( 0x71, 0x71 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 929 | | AM_RANGE( 0x72, 0x72 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| 930 | | AM_RANGE( 0x73, 0x73 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 931 | | AM_RANGE( 0x74, 0x74 ) AM_WRITE ( hanamai_priority_w ) // layer priority and enable |
| 932 | | AM_RANGE( 0x75, 0x75 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 933 | | AM_RANGE( 0x76, 0x76 ) AM_WRITE ( yarunara_blit_romregion_w ) // Blitter ROM bank |
| 934 | | AM_RANGE( 0x77, 0x77 ) AM_WRITE ( hnoridur_palbank_w ) |
| 937 | AM_RANGE( 0x31, 0x37 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 938 | AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counter |
| 939 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 940 | AM_RANGE( 0x51, 0x51 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to |
| 941 | AM_RANGE( 0x52, 0x52 ) AM_WRITE(hnoridur_layer_half2_w) // |
| 942 | AM_RANGE( 0x57, 0x57 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 943 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 944 | AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 945 | AM_RANGE( 0x6a, 0x6a ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select |
| 946 | AM_RANGE( 0x6c, 0x6c ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 947 | AM_RANGE( 0x70, 0x70 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 948 | AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 949 | AM_RANGE( 0x72, 0x72 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes |
| 950 | AM_RANGE( 0x73, 0x73 ) AM_WRITE(dynax_blit_palette23_w) // |
| 951 | AM_RANGE( 0x74, 0x74 ) AM_WRITE(hanamai_priority_w) // layer priority and enable |
| 952 | AM_RANGE( 0x75, 0x75 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 953 | AM_RANGE( 0x76, 0x76 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank |
| 954 | AM_RANGE( 0x77, 0x77 ) AM_WRITE(hnoridur_palbank_w) |
| 935 | 955 | ADDRESS_MAP_END |
| 936 | 956 | |
| 937 | 957 | |
| 938 | | |
| 939 | | |
| 940 | | |
| 941 | 958 | /*************************************************************************** |
| 942 | 959 | Jantouki - Main CPU |
| 943 | 960 | ***************************************************************************/ |
| 944 | 961 | |
| 945 | | static UINT8 dynax_soundlatch_ack; |
| 946 | | static UINT8 dynax_soundlatch_full; |
| 947 | | static UINT8 latch; |
| 948 | | |
| 949 | 962 | static READ8_HANDLER( jantouki_soundlatch_ack_r ) |
| 950 | 963 | { |
| 951 | | return (dynax_soundlatch_ack) ? 0x80 : 0; |
| 964 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 965 | return (state->soundlatch_ack) ? 0x80 : 0; |
| 952 | 966 | } |
| 953 | 967 | |
| 954 | 968 | static WRITE8_HANDLER( jantouki_soundlatch_w ) |
| 955 | 969 | { |
| 956 | | dynax_soundlatch_ack = 1; |
| 957 | | dynax_soundlatch_full = 1; |
| 958 | | dynax_soundlatch_irq = 1; |
| 959 | | latch = data; |
| 970 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 971 | |
| 972 | state->soundlatch_ack = 1; |
| 973 | state->soundlatch_full = 1; |
| 974 | state->soundlatch_irq = 1; |
| 975 | state->latch = data; |
| 960 | 976 | jantouki_sound_update_irq(space->machine); |
| 961 | 977 | } |
| 962 | 978 | |
| r7640 | r7641 | |
| 967 | 983 | |
| 968 | 984 | static WRITE8_HANDLER( jantouki_rombank_w ) |
| 969 | 985 | { |
| 970 | | UINT8 *ROM = memory_region(space->machine, "maincpu"); |
| 971 | | memory_set_bankptr(space->machine, "bank1",&ROM[0x8000 + 0x8000*(data&0x0f)]); |
| 972 | | set_led_status(space->machine, 0,data & 0x10); // maybe |
| 986 | memory_set_bank(space->machine, "bank1", data & 0x0f); |
| 987 | set_led_status(space->machine, 0, data & 0x10); // maybe |
| 973 | 988 | } |
| 974 | 989 | |
| 975 | 990 | static ADDRESS_MAP_START( jantouki_io_map, ADDRESS_SPACE_IO, 8 ) |
| 976 | 991 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 977 | 992 | // AM_RANGE( 0x40, 0x41 ) AM_WRITENOP // CRT Controller |
| 978 | | AM_RANGE( 0x48, 0x48 ) AM_WRITE ( jantouki_rombank_w ) // BANK ROM Select |
| 979 | | AM_RANGE( 0x49, 0x49 ) AM_WRITE ( jantouki_soundlatch_w ) // To Sound CPU |
| 980 | | AM_RANGE( 0x4a, 0x4a ) AM_READ ( jantouki_soundlatch_ack_r ) // Soundlatch status |
| 981 | | AM_RANGE( 0x4b, 0x4b ) AM_WRITE ( dynax_blit2_dest_w ) // Destination Layer 2 |
| 982 | | AM_RANGE( 0x4d, 0x4d ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 983 | | AM_RANGE( 0x4f, 0x4f ) AM_WRITE ( dynax_blit2_romregion_w ) // Blitter 2 ROM bank |
| 984 | | AM_RANGE( 0x50, 0x50 ) AM_WRITE ( jantouki_vblank_ack_w ) // VBlank IRQ Ack |
| 985 | | AM_RANGE( 0x51, 0x51 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 986 | | AM_RANGE( 0x52, 0x52 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 987 | | AM_RANGE( 0x54, 0x54 ) AM_READ_PORT ( "COINS" ) // Coins |
| 988 | | AM_RANGE( 0x55, 0x55 ) AM_READ_PORT ( "DSW0" ) // DSW1 |
| 989 | | AM_RANGE( 0x56, 0x56 ) AM_READ_PORT ( "DSW1" ) // DSW2 |
| 990 | | AM_RANGE( 0x58, 0x58 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counter |
| 991 | | AM_RANGE( 0x5b, 0x5b ) AM_WRITE ( dynax_blit2_palbank_w ) // Layers Palettes (High Bit) |
| 992 | | AM_RANGE( 0x5d, 0x5d ) AM_WRITE ( dynax_blit_palbank_w ) // |
| 993 | | AM_RANGE( 0x5e, 0x5e ) AM_WRITE ( jantouki_blitter_ack_w ) // Blitter IRQ Ack |
| 994 | | AM_RANGE( 0x5f, 0x5f ) AM_WRITE ( jantouki_blitter2_ack_w ) // Blitter 2 IRQ Ack |
| 995 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( dynax_blit_palette67_w ) // Layers Palettes (Low Bits) |
| 996 | | AM_RANGE( 0x61, 0x61 ) AM_WRITE ( dynax_blit_palette45_w ) // |
| 997 | | AM_RANGE( 0x62, 0x62 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 998 | | AM_RANGE( 0x63, 0x63 ) AM_WRITE ( dynax_blit_palette01_w ) // |
| 999 | | AM_RANGE( 0x64, 0x64 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 1000 | | AM_RANGE( 0x65, 0x65 ) AM_WRITE ( dynax_blit2_pen_w ) // Destination Pen 2 |
| 1001 | | AM_RANGE( 0x66, 0x66 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 1002 | | AM_RANGE( 0x67, 0x67 ) AM_READ ( jantouki_blitter_busy_r ) // |
| 1003 | | AM_RANGE( 0x69, 0x6f ) AM_WRITE ( jantouki_blitter2_rev2_w ) // Blitter 2 |
| 1004 | | AM_RANGE( 0x71, 0x77 ) AM_WRITE ( jantouki_blitter_rev2_w ) // Blitter |
| 1005 | | AM_RANGE( 0x78, 0x7e ) AM_WRITE ( jantouki_layer_enable_w ) // Layers Enable |
| 993 | AM_RANGE( 0x48, 0x48 ) AM_WRITE(jantouki_rombank_w) // BANK ROM Select |
| 994 | AM_RANGE( 0x49, 0x49 ) AM_WRITE(jantouki_soundlatch_w) // To Sound CPU |
| 995 | AM_RANGE( 0x4a, 0x4a ) AM_READ(jantouki_soundlatch_ack_r) // Soundlatch status |
| 996 | AM_RANGE( 0x4b, 0x4b ) AM_WRITE(dynax_blit2_dest_w) // Destination Layer 2 |
| 997 | AM_RANGE( 0x4d, 0x4d ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 998 | AM_RANGE( 0x4f, 0x4f ) AM_WRITE(dynax_blit2_romregion_w) // Blitter 2 ROM bank |
| 999 | AM_RANGE( 0x50, 0x50 ) AM_WRITE(jantouki_vblank_ack_w) // VBlank IRQ Ack |
| 1000 | AM_RANGE( 0x51, 0x51 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 1001 | AM_RANGE( 0x52, 0x52 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 1002 | AM_RANGE( 0x54, 0x54 ) AM_READ_PORT("COINS") // Coins |
| 1003 | AM_RANGE( 0x55, 0x55 ) AM_READ_PORT("DSW0") // DSW1 |
| 1004 | AM_RANGE( 0x56, 0x56 ) AM_READ_PORT("DSW1") // DSW2 |
| 1005 | AM_RANGE( 0x58, 0x58 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counter |
| 1006 | AM_RANGE( 0x5b, 0x5b ) AM_WRITE(dynax_blit2_palbank_w) // Layers Palettes (High Bit) |
| 1007 | AM_RANGE( 0x5d, 0x5d ) AM_WRITE(dynax_blit_palbank_w) // |
| 1008 | AM_RANGE( 0x5e, 0x5e ) AM_WRITE(jantouki_blitter_ack_w) // Blitter IRQ Ack |
| 1009 | AM_RANGE( 0x5f, 0x5f ) AM_WRITE(jantouki_blitter2_ack_w) // Blitter 2 IRQ Ack |
| 1010 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_blit_palette67_w) // Layers Palettes (Low Bits) |
| 1011 | AM_RANGE( 0x61, 0x61 ) AM_WRITE(dynax_blit_palette45_w) // |
| 1012 | AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_blit_palette23_w) // |
| 1013 | AM_RANGE( 0x63, 0x63 ) AM_WRITE(dynax_blit_palette01_w) // |
| 1014 | AM_RANGE( 0x64, 0x64 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 1015 | AM_RANGE( 0x65, 0x65 ) AM_WRITE(dynax_blit2_pen_w) // Destination Pen 2 |
| 1016 | AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 1017 | AM_RANGE( 0x67, 0x67 ) AM_READ(jantouki_blitter_busy_r) // |
| 1018 | AM_RANGE( 0x69, 0x6f ) AM_WRITE(jantouki_blitter2_rev2_w) // Blitter 2 |
| 1019 | AM_RANGE( 0x71, 0x77 ) AM_WRITE(jantouki_blitter_rev2_w) // Blitter |
| 1020 | AM_RANGE( 0x78, 0x7e ) AM_WRITE(jantouki_layer_enable_w) // Layers Enable |
| 1006 | 1021 | ADDRESS_MAP_END |
| 1007 | 1022 | |
| 1008 | 1023 | /*************************************************************************** |
| r7640 | r7641 | |
| 1011 | 1026 | |
| 1012 | 1027 | static WRITE8_HANDLER( jantouki_soundlatch_ack_w ) |
| 1013 | 1028 | { |
| 1014 | | dynax_soundlatch_ack = data; |
| 1015 | | dynax_soundlatch_irq = 0; |
| 1029 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1030 | state->soundlatch_ack = data; |
| 1031 | state->soundlatch_irq = 0; |
| 1016 | 1032 | jantouki_sound_update_irq(space->machine); |
| 1017 | 1033 | } |
| 1018 | 1034 | |
| 1019 | 1035 | static READ8_HANDLER( jantouki_soundlatch_r ) |
| 1020 | 1036 | { |
| 1021 | | dynax_soundlatch_full = 0; |
| 1022 | | return latch; |
| 1037 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1038 | state->soundlatch_full = 0; |
| 1039 | return state->latch; |
| 1023 | 1040 | } |
| 1024 | 1041 | |
| 1025 | 1042 | static READ8_HANDLER( jantouki_soundlatch_status_r ) |
| 1026 | 1043 | { |
| 1027 | | return (dynax_soundlatch_full) ? 0 : 0x80; |
| 1044 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1045 | return (state->soundlatch_full) ? 0 : 0x80; |
| 1028 | 1046 | } |
| 1029 | 1047 | |
| 1030 | 1048 | static ADDRESS_MAP_START( jantouki_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1031 | 1049 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1032 | | AM_RANGE( 0x00, 0x00 ) AM_WRITE ( jantouki_sound_rombank_w ) // BANK ROM Select |
| 1033 | | AM_RANGE( 0x10, 0x10 ) AM_WRITE ( jantouki_sound_vblank_ack_w ) // VBlank IRQ Ack |
| 1034 | | AM_RANGE( 0x21, 0x21 ) AM_DEVREAD ( "aysnd", ay8910_r ) // AY8910 |
| 1035 | | AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE ( "aysnd", ay8910_data_address_w ) // |
| 1050 | AM_RANGE( 0x00, 0x00 ) AM_WRITE(jantouki_sound_rombank_w) // BANK ROM Select |
| 1051 | AM_RANGE( 0x10, 0x10 ) AM_WRITE(jantouki_sound_vblank_ack_w) // VBlank IRQ Ack |
| 1052 | AM_RANGE( 0x21, 0x21 ) AM_DEVREAD("aysnd", ay8910_r) // AY8910 |
| 1053 | AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE("aysnd", ay8910_data_address_w) // |
| 1036 | 1054 | AM_RANGE( 0x28, 0x29 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // |
| 1037 | | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 1038 | | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 1039 | | AM_RANGE( 0x50, 0x50 ) AM_READ ( jantouki_soundlatch_status_r ) // Soundlatch status |
| 1040 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( jantouki_soundlatch_ack_w ) // Soundlatch status |
| 1041 | | AM_RANGE( 0x70, 0x70 ) AM_READ ( jantouki_soundlatch_r ) // From Main CPU |
| 1055 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 1056 | AM_RANGE( 0x40, 0x40 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 1057 | AM_RANGE( 0x50, 0x50 ) AM_READ(jantouki_soundlatch_status_r) // Soundlatch status |
| 1058 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(jantouki_soundlatch_ack_w) // Soundlatch status |
| 1059 | AM_RANGE( 0x70, 0x70 ) AM_READ(jantouki_soundlatch_r) // From Main CPU |
| 1042 | 1060 | ADDRESS_MAP_END |
| 1043 | 1061 | |
| 1044 | 1062 | |
| r7640 | r7641 | |
| 1054 | 1072 | |
| 1055 | 1073 | static READ8_HANDLER( mjelctrn_dsw_r ) |
| 1056 | 1074 | { |
| 1057 | | int dsw = (keyb & 0xc0) >> 6; |
| 1075 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1076 | int dsw = (state->keyb & 0xc0) >> 6; |
| 1058 | 1077 | static const char *const dswnames[] = { "DSW0", "DSW1", "DSW3", "DSW4" }; |
| 1059 | 1078 | |
| 1060 | 1079 | return input_port_read(space->machine, dswnames[dsw]); |
| r7640 | r7641 | |
| 1062 | 1081 | |
| 1063 | 1082 | static WRITE8_HANDLER( mjelctrn_blitter_ack_w ) |
| 1064 | 1083 | { |
| 1065 | | dynax_blitter_irq = 0; |
| 1084 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1085 | state->blitter_irq = 0; |
| 1066 | 1086 | } |
| 1067 | 1087 | |
| 1068 | 1088 | static ADDRESS_MAP_START( mjelctrn_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1069 | 1089 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1070 | | AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 1071 | | AM_RANGE( 0x02, 0x02 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 1072 | | AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 1073 | | AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE( "aysnd", ay8910_data_w ) // AY8910 |
| 1074 | | AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE( "aysnd", ay8910_address_w ) // |
| 1075 | | AM_RANGE( 0x11, 0x12 ) AM_WRITE ( mjelctrn_blitter_ack_w ) //? |
| 1090 | AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE("msm", adpcm_reset_w) // MSM5205 reset |
| 1091 | AM_RANGE( 0x02, 0x02 ) AM_WRITE(adpcm_data_w) // MSM5205 data |
| 1092 | AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 1093 | AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8910_data_w) // AY8910 |
| 1094 | AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 1095 | AM_RANGE( 0x11, 0x12 ) AM_WRITE(mjelctrn_blitter_ack_w) //? |
| 1076 | 1096 | // AM_RANGE( 0x20, 0x20 ) AM_WRITENOP // CRT Controller |
| 1077 | 1097 | // AM_RANGE( 0x21, 0x21 ) AM_WRITENOP // CRT Controller |
| 1078 | | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_coincounter_0_w ) // Coin Counters |
| 1079 | | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_coincounter_1_w ) // |
| 1080 | | AM_RANGE( 0x60, 0x60 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 1081 | | AM_RANGE( 0x62, 0x62 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 1082 | | // AM_RANGE( 0x64, 0x64 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 1083 | | // AM_RANGE( 0x66, 0x66 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 1084 | | AM_RANGE( 0x6a, 0x6a ) AM_WRITE ( hnoridur_rombank_w ) // BANK ROM Select |
| 1085 | | AM_RANGE( 0x80, 0x80 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 1086 | | AM_RANGE( 0x81, 0x81 ) AM_READ_PORT ( "COINS" ) // Coins |
| 1087 | | AM_RANGE( 0x82, 0x82 ) AM_READ ( mjelctrn_keyboard_1_r ) // P2 |
| 1088 | | AM_RANGE( 0x83, 0x83 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 1089 | | AM_RANGE( 0x84, 0x84 ) AM_READ ( mjelctrn_dsw_r ) // DSW x 4 |
| 1090 | | AM_RANGE( 0x85, 0x85 ) AM_READ ( ret_ff ) // ? |
| 1091 | | AM_RANGE( 0xa1, 0xa7 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 1092 | | AM_RANGE( 0xc0, 0xc0 ) AM_WRITE ( dynax_flipscreen_w ) // Flip Screen |
| 1093 | | AM_RANGE( 0xc1, 0xc1 ) AM_WRITE ( hanamai_layer_half_w ) // half of the interleaved layer to write to |
| 1094 | | AM_RANGE( 0xc2, 0xc2 ) AM_WRITE ( hnoridur_layer_half2_w ) // |
| 1098 | AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_coincounter_0_w) // Coin Counters |
| 1099 | AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_coincounter_1_w) // |
| 1100 | AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 1101 | AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 1102 | // AM_RANGE( 0x64, 0x64 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 1103 | // AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 1104 | AM_RANGE( 0x6a, 0x6a ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select |
| 1105 | AM_RANGE( 0x80, 0x80 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select |
| 1106 | AM_RANGE( 0x81, 0x81 ) AM_READ_PORT("COINS") // Coins |
| 1107 | AM_RANGE( 0x82, 0x82 ) AM_READ(mjelctrn_keyboard_1_r) // P2 |
| 1108 | AM_RANGE( 0x83, 0x83 ) AM_READ(hanamai_keyboard_0_r) // P1 |
| 1109 | AM_RANGE( 0x84, 0x84 ) AM_READ(mjelctrn_dsw_r) // DSW x 4 |
| 1110 | AM_RANGE( 0x85, 0x85 ) AM_READ(ret_ff) // ? |
| 1111 | AM_RANGE( 0xa1, 0xa7 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 1112 | AM_RANGE( 0xc0, 0xc0 ) AM_WRITE(dynax_flipscreen_w) // Flip Screen |
| 1113 | AM_RANGE( 0xc1, 0xc1 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to |
| 1114 | AM_RANGE( 0xc2, 0xc2 ) AM_WRITE(hnoridur_layer_half2_w) // |
| 1095 | 1115 | // c3,c4 seem to be related to wrap around enable |
| 1096 | | AM_RANGE( 0xe0, 0xe0 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 1097 | | AM_RANGE( 0xe1, 0xe1 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 1098 | | AM_RANGE( 0xe2, 0xe2 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| 1099 | | AM_RANGE( 0xe3, 0xe3 ) AM_WRITE ( dynax_blit_palette23_w ) // |
| 1100 | | AM_RANGE( 0xe4, 0xe4 ) AM_WRITE ( hanamai_priority_w ) // layer priority and enable |
| 1101 | | AM_RANGE( 0xe5, 0xe5 ) AM_WRITE ( dynax_blit_backpen_w ) // Background Color |
| 1102 | | AM_RANGE( 0xe6, 0xe6 ) AM_WRITE ( yarunara_blit_romregion_w ) // Blitter ROM bank |
| 1103 | | AM_RANGE( 0xe7, 0xe7 ) AM_WRITE ( hnoridur_palbank_w ) |
| 1116 | AM_RANGE( 0xe0, 0xe0 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 1117 | AM_RANGE( 0xe1, 0xe1 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 1118 | AM_RANGE( 0xe2, 0xe2 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes |
| 1119 | AM_RANGE( 0xe3, 0xe3 ) AM_WRITE(dynax_blit_palette23_w) // |
| 1120 | AM_RANGE( 0xe4, 0xe4 ) AM_WRITE(hanamai_priority_w) // layer priority and enable |
| 1121 | AM_RANGE( 0xe5, 0xe5 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 1122 | AM_RANGE( 0xe6, 0xe6 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank |
| 1123 | AM_RANGE( 0xe7, 0xe7 ) AM_WRITE(hnoridur_palbank_w) |
| 1104 | 1124 | ADDRESS_MAP_END |
| 1105 | 1125 | |
| 1106 | 1126 | |
| r7640 | r7641 | |
| 1108 | 1128 | Hanafuda Hana Tengoku |
| 1109 | 1129 | ***************************************************************************/ |
| 1110 | 1130 | |
| 1111 | | static UINT8 htengoku_select, htengoku_dsw, htengoku_ip, htengoku_coins, htengoku_hopper; |
| 1112 | 1131 | static WRITE8_HANDLER( htengoku_select_w ) |
| 1113 | 1132 | { |
| 1114 | | htengoku_select = data; |
| 1115 | | htengoku_ip = 0; |
| 1133 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1134 | state->input_sel = data; |
| 1135 | state->keyb = 0; |
| 1116 | 1136 | } |
| 1117 | 1137 | |
| 1118 | 1138 | static WRITE8_DEVICE_HANDLER( htengoku_dsw_w ) |
| 1119 | 1139 | { |
| 1120 | | htengoku_dsw = data; |
| 1140 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1141 | state->dsw_sel = data; |
| 1121 | 1142 | } |
| 1143 | |
| 1122 | 1144 | static READ8_DEVICE_HANDLER( htengoku_dsw_r ) |
| 1123 | 1145 | { |
| 1124 | | if (!(htengoku_dsw & 0x01)) return input_port_read(device->machine, "DSW0"); |
| 1125 | | if (!(htengoku_dsw & 0x02)) return input_port_read(device->machine, "DSW1"); |
| 1126 | | if (!(htengoku_dsw & 0x04)) return input_port_read(device->machine, "DSW2"); |
| 1127 | | if (!(htengoku_dsw & 0x08)) return input_port_read(device->machine, "DSW3"); |
| 1128 | | if (!(htengoku_dsw & 0x10)) return input_port_read(device->machine, "DSW4"); |
| 1129 | | logerror("%s: warning, unknown bits read, htengoku_dsw = %02x\n", cpuexec_describe_context(device->machine), htengoku_dsw); |
| 1146 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1147 | if (!BIT(state->dsw_sel, 0)) return input_port_read(device->machine, "DSW0"); |
| 1148 | if (!BIT(state->dsw_sel, 1)) return input_port_read(device->machine, "DSW1"); |
| 1149 | if (!BIT(state->dsw_sel, 2)) return input_port_read(device->machine, "DSW2"); |
| 1150 | if (!BIT(state->dsw_sel, 3)) return input_port_read(device->machine, "DSW3"); |
| 1151 | if (!BIT(state->dsw_sel, 4)) return input_port_read(device->machine, "DSW4"); |
| 1152 | logerror("%s: warning, unknown bits read, dsw_sel = %02x\n", cpuexec_describe_context(device->machine), state->dsw_sel); |
| 1130 | 1153 | |
| 1131 | 1154 | return 0xff; |
| 1132 | 1155 | } |
| 1133 | 1156 | |
| 1134 | 1157 | static WRITE8_HANDLER( htengoku_coin_w ) |
| 1135 | 1158 | { |
| 1136 | | switch ( htengoku_select ) |
| 1159 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1160 | |
| 1161 | switch (state->input_sel) |
| 1137 | 1162 | { |
| 1138 | 1163 | case 0x0c: |
| 1139 | 1164 | // bit 0 = coin counter |
| 1140 | 1165 | // bit 1 = out counter |
| 1141 | 1166 | // bit 2 = hopper |
| 1142 | 1167 | coin_counter_w(space->machine, 0, data & 1); |
| 1143 | | htengoku_hopper = data & 0x04; |
| 1168 | state->hopper = data & 0x04; |
| 1144 | 1169 | #ifdef MAME_DEBUG |
| 1145 | 1170 | // popmessage("COINS %02x",data); |
| 1146 | 1171 | #endif |
| 1147 | | htengoku_coins = data; |
| 1172 | state->coins = data; |
| 1148 | 1173 | |
| 1149 | 1174 | case 0x0d: break; // ff resets input port sequence? |
| 1150 | 1175 | |
| 1151 | 1176 | case 0xff: break; // CRT controller? |
| 1152 | 1177 | default: |
| 1153 | | logerror("%04x: coins_w with select = %02x, data = %02x\n", cpu_get_pc(space->cpu), htengoku_select,data); |
| 1178 | logerror("%04x: coins_w with select = %02x, data = %02x\n", cpu_get_pc(space->cpu), state->input_sel, data); |
| 1154 | 1179 | } |
| 1155 | 1180 | } |
| 1156 | 1181 | |
| 1157 | 1182 | static READ8_HANDLER( htengoku_input_r ) |
| 1158 | 1183 | { |
| 1184 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1159 | 1185 | static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }; |
| 1160 | 1186 | static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" }; |
| 1161 | 1187 | |
| 1162 | | switch( htengoku_select ) |
| 1188 | switch (state->input_sel) |
| 1163 | 1189 | { |
| 1164 | | case 0x81: return input_port_read(space->machine, keynames1[htengoku_ip++]); |
| 1165 | | case 0x82: return input_port_read(space->machine, keynames0[htengoku_ip++]); |
| 1190 | case 0x81: return input_port_read(space->machine, keynames1[state->keyb++]); |
| 1191 | case 0x82: return input_port_read(space->machine, keynames0[state->keyb++]); |
| 1166 | 1192 | case 0x0d: return 0xff; // unused |
| 1167 | 1193 | } |
| 1168 | | logerror("%04x: input_r with select = %02x\n", cpu_get_pc(space->cpu), htengoku_select); |
| 1194 | logerror("%04x: input_r with select = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 1169 | 1195 | return 0xff; |
| 1170 | 1196 | } |
| 1171 | 1197 | |
| 1172 | 1198 | static READ8_HANDLER( htengoku_coin_r ) |
| 1173 | 1199 | { |
| 1174 | | switch( htengoku_select ) |
| 1200 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1201 | |
| 1202 | switch (state->input_sel) |
| 1175 | 1203 | { |
| 1176 | 1204 | case 0x00: return input_port_read(space->machine, "COINS"); |
| 1177 | 1205 | case 0x01: return 0xff; //? |
| 1178 | | case 0x02: return 0xbf | ((htengoku_hopper && !(video_screen_get_frame_number(space->machine->primary_screen)%10)) ? 0 : (1<<6)); // bit 7 = blitter busy, bit 6 = hopper |
| 1179 | | case 0x03: return htengoku_coins; |
| 1206 | case 0x02: return 0xbf | ((state->hopper && !(video_screen_get_frame_number(space->machine->primary_screen) % 10)) ? 0 : (1 << 6)); // bit 7 = blitter busy, bit 6 = hopper |
| 1207 | case 0x03: return state->coins; |
| 1180 | 1208 | } |
| 1181 | | logerror("%04x: coin_r with select = %02x\n", cpu_get_pc(space->cpu), htengoku_select); |
| 1209 | logerror("%04x: coin_r with select = %02x\n", cpu_get_pc(space->cpu), state->input_sel); |
| 1182 | 1210 | return 0xff; |
| 1183 | 1211 | } |
| 1184 | 1212 | |
| 1185 | 1213 | static WRITE8_HANDLER( htengoku_rombank_w ) |
| 1186 | 1214 | { |
| 1187 | | UINT8 *rom = memory_region(space->machine, "maincpu") + 0x10000 + 0x8000 * (data & 0x7); |
| 1188 | | memory_set_bankptr(space->machine, "bank1", rom); |
| 1215 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1189 | 1216 | |
| 1190 | | hnoridur_bank = data; |
| 1217 | memory_set_bank(space->machine, "bank1", data & 0x07); |
| 1218 | state->hnoridur_bank = data; |
| 1191 | 1219 | } |
| 1192 | 1220 | |
| 1193 | 1221 | static WRITE8_HANDLER( htengoku_blit_romregion_w ) |
| 1194 | 1222 | { |
| 1195 | | switch(data) |
| 1223 | switch (data) |
| 1196 | 1224 | { |
| 1197 | | case 0x80: dynax_blit_romregion_w(space,0,0); return; |
| 1198 | | case 0x81: dynax_blit_romregion_w(space,0,1); return; |
| 1199 | | case 0x00: dynax_blit_romregion_w(space,0,2); return; |
| 1225 | case 0x80: dynax_blit_romregion_w(space, 0, 0); return; |
| 1226 | case 0x81: dynax_blit_romregion_w(space, 0, 1); return; |
| 1227 | case 0x00: dynax_blit_romregion_w(space, 0, 2); return; |
| 1200 | 1228 | } |
| 1201 | | logerror("%04x: unmapped romregion=%02X\n",cpu_get_pc(space->cpu),data); |
| 1229 | logerror("%04x: unmapped romregion=%02X\n", cpu_get_pc(space->cpu), data); |
| 1202 | 1230 | } |
| 1203 | 1231 | |
| 1204 | 1232 | static READ8_HANDLER( unk_r ) |
| r7640 | r7641 | |
| 1208 | 1236 | |
| 1209 | 1237 | static ADDRESS_MAP_START( htengoku_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1210 | 1238 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1211 | | AM_RANGE( 0x01, 0x07 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 1212 | | AM_RANGE( 0x20, 0x20 ) AM_WRITE ( htengoku_select_w ) // Controls |
| 1213 | | AM_RANGE( 0x21, 0x21 ) AM_WRITE ( htengoku_coin_w ) // |
| 1214 | | AM_RANGE( 0x22, 0x22 ) AM_READ ( htengoku_coin_r ) // |
| 1215 | | AM_RANGE( 0x23, 0x23 ) AM_READ ( htengoku_input_r ) // |
| 1216 | | AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE ( "aysnd", ay8910_address_w ) // AY8910 |
| 1217 | | AM_RANGE( 0x42, 0x42 ) AM_DEVREAD ( "aysnd", ay8910_r ) // |
| 1218 | | AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE ( "aysnd", ay8910_data_w) // |
| 1219 | | AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE( "ymsnd", ym2413_w ) // |
| 1239 | AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter |
| 1240 | AM_RANGE( 0x20, 0x20 ) AM_WRITE(htengoku_select_w) // Controls |
| 1241 | AM_RANGE( 0x21, 0x21 ) AM_WRITE(htengoku_coin_w) // |
| 1242 | AM_RANGE( 0x22, 0x22 ) AM_READ(htengoku_coin_r) // |
| 1243 | AM_RANGE( 0x23, 0x23 ) AM_READ(htengoku_input_r) // |
| 1244 | AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE("aysnd", ay8910_address_w) // AY8910 |
| 1245 | AM_RANGE( 0x42, 0x42 ) AM_DEVREAD("aysnd", ay8910_r) // |
| 1246 | AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE("aysnd", ay8910_data_w) // |
| 1247 | AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 1220 | 1248 | AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 1221 | | AM_RANGE( 0xa0, 0xa3 ) AM_WRITE ( ddenlovr_palette_base_w ) // ddenlovr mixer chip |
| 1222 | | AM_RANGE( 0xa4, 0xa7 ) AM_WRITE ( ddenlovr_palette_mask_w ) |
| 1223 | | AM_RANGE( 0xa8, 0xab ) AM_WRITE ( ddenlovr_transparency_pen_w ) |
| 1224 | | AM_RANGE( 0xac, 0xaf ) AM_WRITE ( ddenlovr_transparency_mask_w ) |
| 1249 | AM_RANGE( 0xa0, 0xa3 ) AM_WRITE(ddenlovr_palette_base_w) // ddenlovr mixer chip |
| 1250 | AM_RANGE( 0xa4, 0xa7 ) AM_WRITE(ddenlovr_palette_mask_w) |
| 1251 | AM_RANGE( 0xa8, 0xab ) AM_WRITE(ddenlovr_transparency_pen_w) |
| 1252 | AM_RANGE( 0xac, 0xaf ) AM_WRITE(ddenlovr_transparency_mask_w) |
| 1225 | 1253 | // b0-b3 ? |
| 1226 | | AM_RANGE( 0xb4, 0xb4 ) AM_WRITE ( ddenlovr_bgcolor_w ) |
| 1227 | | AM_RANGE( 0xb5, 0xb5 ) AM_WRITE ( ddenlovr_priority_w ) |
| 1228 | | AM_RANGE( 0xb6, 0xb6 ) AM_WRITE ( ddenlovr_layer_enable_w ) |
| 1229 | | AM_RANGE( 0xb8, 0xb8 ) AM_READ ( unk_r ) // ? must be 78 on startup |
| 1230 | | AM_RANGE( 0xc2, 0xc2 ) AM_WRITE ( htengoku_rombank_w ) // BANK ROM Select |
| 1231 | | AM_RANGE( 0xc0, 0xc0 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 1232 | | AM_RANGE( 0xc1, 0xc1 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 1233 | | AM_RANGE( 0xc3, 0xc3 ) AM_WRITE ( dynax_vblank_ack_w ) // VBlank IRQ Ack |
| 1234 | | AM_RANGE( 0xc4, 0xc4 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 1235 | | AM_RANGE( 0xc5, 0xc5 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 1236 | | AM_RANGE( 0xc6, 0xc6 ) AM_WRITE ( htengoku_blit_romregion_w ) // Blitter ROM bank |
| 1237 | | AM_RANGE( 0xe0, 0xe0 ) AM_WRITE ( yarunara_flipscreen_w ) |
| 1238 | | AM_RANGE( 0xe1, 0xe1 ) AM_WRITE ( yarunara_layer_half_w ) // half of the interleaved layer to write to |
| 1239 | | AM_RANGE( 0xe2, 0xe2 ) AM_WRITE ( yarunara_layer_half2_w ) // |
| 1240 | | AM_RANGE( 0xe5, 0xe5 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 1254 | AM_RANGE( 0xb4, 0xb4 ) AM_WRITE(ddenlovr_bgcolor_w) |
| 1255 | AM_RANGE( 0xb5, 0xb5 ) AM_WRITE(ddenlovr_priority_w) |
| 1256 | AM_RANGE( 0xb6, 0xb6 ) AM_WRITE(ddenlovr_layer_enable_w) |
| 1257 | AM_RANGE( 0xb8, 0xb8 ) AM_READ(unk_r) // ? must be 78 on startup |
| 1258 | AM_RANGE( 0xc2, 0xc2 ) AM_WRITE(htengoku_rombank_w) // BANK ROM Select |
| 1259 | AM_RANGE( 0xc0, 0xc0 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X |
| 1260 | AM_RANGE( 0xc1, 0xc1 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y |
| 1261 | AM_RANGE( 0xc3, 0xc3 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack |
| 1262 | AM_RANGE( 0xc4, 0xc4 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 1263 | AM_RANGE( 0xc5, 0xc5 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer |
| 1264 | AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(htengoku_blit_romregion_w) // Blitter ROM bank |
| 1265 | AM_RANGE( 0xe0, 0xe0 ) AM_WRITE(yarunara_flipscreen_w) |
| 1266 | AM_RANGE( 0xe1, 0xe1 ) AM_WRITE(yarunara_layer_half_w) // half of the interleaved layer to write to |
| 1267 | AM_RANGE( 0xe2, 0xe2 ) AM_WRITE(yarunara_layer_half2_w) // |
| 1268 | AM_RANGE( 0xe5, 0xe5 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack |
| 1241 | 1269 | ADDRESS_MAP_END |
| 1242 | 1270 | |
| 1243 | 1271 | |
| r7640 | r7641 | |
| 1245 | 1273 | Mahjong Tenkaigen |
| 1246 | 1274 | ***************************************************************************/ |
| 1247 | 1275 | |
| 1248 | | static int rombank; |
| 1249 | | static UINT8 *romptr; |
| 1250 | | static int tenkai_dswsel, tenkai_ipsel, tenkai_ip; |
| 1251 | | static UINT8 tenkai_p5_val; |
| 1252 | | |
| 1253 | 1276 | static WRITE8_HANDLER( tenkai_ipsel_w ) |
| 1254 | 1277 | { |
| 1278 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1255 | 1279 | switch (offset) |
| 1256 | 1280 | { |
| 1257 | | case 0: tenkai_ipsel = data; |
| 1258 | | tenkai_ip = 0; |
| 1259 | | break; |
| 1281 | case 0: state->input_sel = data; |
| 1282 | state->keyb = 0; |
| 1283 | break; |
| 1260 | 1284 | |
| 1261 | | case 1: break; |
| 1285 | case 1: break; |
| 1262 | 1286 | } |
| 1263 | 1287 | |
| 1264 | 1288 | } |
| 1265 | 1289 | |
| 1266 | 1290 | static WRITE8_HANDLER( tenkai_ip_w ) |
| 1267 | 1291 | { |
| 1268 | | switch( tenkai_ipsel ) |
| 1292 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1293 | |
| 1294 | switch (state->input_sel) |
| 1269 | 1295 | { |
| 1270 | | case 0x0c: |
| 1271 | | coin_counter_w(space->machine, 0, data & 0x01); |
| 1272 | | coin_counter_w(space->machine, 1, data & 0x02); |
| 1273 | | // bit 2? |
| 1274 | | // bit 3? |
| 1275 | | // popmessage("%02x",data); |
| 1276 | | return; |
| 1296 | case 0x0c: |
| 1297 | coin_counter_w(space->machine, 0, data & 0x01); |
| 1298 | coin_counter_w(space->machine, 1, data & 0x02); |
| 1299 | // bit 2? |
| 1300 | // bit 3? |
| 1301 | // popmessage("%02x", data); |
| 1302 | return; |
| 1277 | 1303 | |
| 1278 | | case 0x0d: |
| 1279 | | if (data != 0xff) |
| 1280 | | break; |
| 1281 | | return; |
| 1304 | case 0x0d: |
| 1305 | if (data != 0xff) |
| 1306 | break; |
| 1307 | return; |
| 1282 | 1308 | } |
| 1283 | | logerror("%04x: unmapped ip_sel=%02x written with %02x\n", cpu_get_pc(space->cpu), tenkai_ipsel,data); |
| 1309 | logerror("%04x: unmapped ip_sel=%02x written with %02x\n", cpu_get_pc(space->cpu), state->input_sel, data); |
| 1284 | 1310 | } |
| 1285 | 1311 | |
| 1286 | 1312 | static READ8_HANDLER( tenkai_ip_r ) |
| 1287 | 1313 | { |
| 1314 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1288 | 1315 | static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }; |
| 1289 | 1316 | //static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" }; |
| 1290 | 1317 | |
| r7640 | r7641 | |
| 1292 | 1319 | { |
| 1293 | 1320 | case 0: |
| 1294 | 1321 | { |
| 1295 | | switch( tenkai_ipsel ) |
| 1322 | switch (state->input_sel) |
| 1296 | 1323 | { |
| 1297 | 1324 | case 0x00: |
| 1298 | 1325 | return input_port_read(space->machine, "COINS"); // coins |
| 1299 | 1326 | |
| 1300 | 1327 | default: |
| 1301 | | logerror("%04x: unmapped ip_sel=%02x read from offs %x\n", cpu_get_pc(space->cpu), tenkai_ipsel, offset); |
| 1328 | logerror("%04x: unmapped ip_sel=%02x read from offs %x\n", cpu_get_pc(space->cpu), state->input_sel, offset); |
| 1302 | 1329 | return 0xff; |
| 1303 | 1330 | } |
| 1304 | 1331 | } |
| 1305 | 1332 | |
| 1306 | 1333 | case 1: |
| 1307 | 1334 | { |
| 1308 | | switch( tenkai_ipsel ) |
| 1335 | switch (state->input_sel) |
| 1309 | 1336 | { |
| 1310 | 1337 | case 0x0d: |
| 1311 | 1338 | return 0xff; |
| 1312 | 1339 | |
| 1313 | 1340 | // player 2 |
| 1314 | 1341 | case 0x81: |
| 1315 | | if (tenkai_ip >= 5) |
| 1316 | | logerror("%04x: unmapped tenkai_ip=%02x read\n", cpu_get_pc(space->cpu), tenkai_ip); |
| 1317 | | return 0xff;//input_port_read(space->machine, keynames1[tenkai_ip++]); |
| 1342 | if (state->keyb >= 5) |
| 1343 | logerror("%04x: unmapped keyb=%02x read\n", cpu_get_pc(space->cpu), state->keyb); |
| 1344 | return 0xff;//input_port_read(space->machine, keynames1[state->keyb++]); |
| 1318 | 1345 | |
| 1319 | 1346 | // player 1 |
| 1320 | 1347 | case 0x82: |
| 1321 | | if (tenkai_ip >= 5) |
| 1322 | | logerror("%04x: unmapped tenkai_ip=%02x read\n", cpu_get_pc(space->cpu), tenkai_ip); |
| 1323 | | return input_port_read(space->machine, keynames0[tenkai_ip++]); |
| 1348 | if (state->keyb >= 5) |
| 1349 | logerror("%04x: unmapped keyb=%02x read\n", cpu_get_pc(space->cpu), state->keyb); |
| 1350 | return input_port_read(space->machine, keynames0[state->keyb++]); |
| 1324 | 1351 | |
| 1325 | 1352 | default: |
| 1326 | | logerror("%04x: unmapped ip_sel=%02x read from offs %x\n", cpu_get_pc(space->cpu), tenkai_ipsel, offset); |
| 1353 | logerror("%04x: unmapped ip_sel=%02x read from offs %x\n", cpu_get_pc(space->cpu), state->input_sel, offset); |
| 1327 | 1354 | return 0xff; |
| 1328 | 1355 | } |
| 1329 | 1356 | } |
| r7640 | r7641 | |
| 1334 | 1361 | |
| 1335 | 1362 | static WRITE8_DEVICE_HANDLER( tenkai_dswsel_w ) |
| 1336 | 1363 | { |
| 1337 | | tenkai_dswsel = data; |
| 1364 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1365 | state->dsw_sel = data; |
| 1338 | 1366 | } |
| 1367 | |
| 1339 | 1368 | static READ8_DEVICE_HANDLER( tenkai_dsw_r ) |
| 1340 | 1369 | { |
| 1341 | | if (~tenkai_dswsel & 0x01) return input_port_read(device->machine, "DSW0"); |
| 1342 | | if (~tenkai_dswsel & 0x02) return input_port_read(device->machine, "DSW1"); |
| 1343 | | if (~tenkai_dswsel & 0x04) return input_port_read(device->machine, "DSW2"); |
| 1344 | | if (~tenkai_dswsel & 0x08) return input_port_read(device->machine, "DSW3"); |
| 1345 | | if (~tenkai_dswsel & 0x10) return input_port_read(device->machine, "DSW4"); |
| 1346 | | logerror("%s: unmapped dsw %02x read\n",cpuexec_describe_context(device->machine),tenkai_dswsel); |
| 1370 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 1371 | |
| 1372 | if (!BIT(state->dsw_sel, 0)) return input_port_read(device->machine, "DSW0"); |
| 1373 | if (!BIT(state->dsw_sel, 1)) return input_port_read(device->machine, "DSW1"); |
| 1374 | if (!BIT(state->dsw_sel, 2)) return input_port_read(device->machine, "DSW2"); |
| 1375 | if (!BIT(state->dsw_sel, 3)) return input_port_read(device->machine, "DSW3"); |
| 1376 | if (!BIT(state->dsw_sel, 4)) return input_port_read(device->machine, "DSW4"); |
| 1377 | logerror("%s: unmapped dsw %02x read\n", cpuexec_describe_context(device->machine), state->dsw_sel); |
| 1378 | |
| 1347 | 1379 | return 0xff; |
| 1348 | 1380 | } |
| 1349 | 1381 | |
| 1350 | 1382 | static READ8_HANDLER( tenkai_palette_r ) |
| 1351 | 1383 | { |
| 1352 | | return palette_ram[ 512*palbank + offset ]; |
| 1384 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1385 | return state->palette_ram[512 * state->palbank + offset]; |
| 1353 | 1386 | } |
| 1354 | 1387 | |
| 1355 | 1388 | static WRITE8_HANDLER( tenkai_palette_w ) |
| 1356 | 1389 | { |
| 1357 | | int addr = 512*palbank + offset; |
| 1358 | | palette_ram[addr] = data; |
| 1390 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1391 | int addr = 512 * state->palbank + offset; |
| 1392 | state->palette_ram[addr] = data; |
| 1393 | |
| 1359 | 1394 | { |
| 1360 | | int br = palette_ram[addr & ~0x10]; // bbbrrrrr |
| 1361 | | int bg = palette_ram[addr | 0x10]; // bb0ggggg |
| 1395 | int br = state->palette_ram[addr & ~0x10]; // bbbrrrrr |
| 1396 | int bg = state->palette_ram[addr | 0x10]; // bb0ggggg |
| 1362 | 1397 | int r = br & 0x1f; |
| 1363 | 1398 | int g = bg & 0x1f; |
| 1364 | | int b = ((bg & 0xc0)>>3) | ((br & 0xe0)>>5); |
| 1365 | | palette_set_color_rgb(space->machine, 256*palbank + ((offset&0xf)|((offset&0x1e0)>>1)) ,pal5bit(r),pal5bit(g),pal5bit(b)); |
| 1399 | int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5); |
| 1400 | palette_set_color_rgb(space->machine, 256 * state->palbank + ((offset & 0xf) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b)); |
| 1366 | 1401 | } |
| 1367 | 1402 | } |
| 1368 | 1403 | |
| 1369 | | static void tenkai_update_rombank(running_machine *machine) |
| 1404 | static void tenkai_update_rombank( running_machine *machine ) |
| 1370 | 1405 | { |
| 1371 | | romptr = memory_region(machine, "maincpu") + 0x10000 + 0x8000 * rombank; |
| 1372 | | // logerror("rombank = %02x\n",rombank); |
| 1406 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 1407 | state->romptr = memory_region(machine, "maincpu") + 0x10000 + 0x8000 * state->rombank; |
| 1408 | // logerror("rombank = %02x\n", state->rombank); |
| 1373 | 1409 | } |
| 1374 | 1410 | |
| 1375 | 1411 | static READ8_HANDLER( tenkai_p3_r ) |
| 1376 | 1412 | { |
| 1377 | 1413 | return 0x00; |
| 1378 | 1414 | } |
| 1415 | |
| 1379 | 1416 | static WRITE8_HANDLER( tenkai_p3_w ) |
| 1380 | 1417 | { |
| 1381 | | rombank = ((data & 0x04) << 1) | (rombank & 0x07); |
| 1418 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1419 | state->rombank = ((data & 0x04) << 1) | (state->rombank & 0x07); |
| 1382 | 1420 | tenkai_update_rombank(space->machine); |
| 1383 | 1421 | } |
| 1384 | 1422 | static WRITE8_HANDLER( tenkai_p4_w ) |
| 1385 | 1423 | { |
| 1386 | | rombank = (rombank & 0x08) | ((data & 0x0e) >> 1); |
| 1424 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1425 | state->rombank = (state->rombank & 0x08) | ((data & 0x0e) >> 1); |
| 1387 | 1426 | tenkai_update_rombank(space->machine); |
| 1388 | 1427 | } |
| 1389 | | // Added by Whistler - START |
| 1428 | |
| 1390 | 1429 | static READ8_HANDLER( tenkai_p5_r ) |
| 1391 | 1430 | { |
| 1392 | | return tenkai_p5_val; |
| 1431 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1432 | return state->tenkai_p5_val; |
| 1393 | 1433 | } |
| 1434 | |
| 1394 | 1435 | static WRITE8_HANDLER( tenkai_p6_w ) |
| 1395 | 1436 | { |
| 1396 | | tenkai_p5_val &= 0x0f; |
| 1437 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1438 | state->tenkai_p5_val &= 0x0f; |
| 1439 | |
| 1397 | 1440 | if (data & 0x0f) |
| 1398 | | { |
| 1399 | | tenkai_p5_val |= (1 << 4); |
| 1400 | | } |
| 1441 | state->tenkai_p5_val |= (1 << 4); |
| 1401 | 1442 | } |
| 1443 | |
| 1402 | 1444 | static WRITE8_HANDLER( tenkai_p7_w ) |
| 1403 | 1445 | { |
| 1404 | | tenkai_p5_val &= 0xf0; |
| 1446 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1447 | state->tenkai_p5_val &= 0xf0; |
| 1448 | |
| 1405 | 1449 | if (data & 0x03) |
| 1406 | | { |
| 1407 | | tenkai_p5_val |= (1 << 3); |
| 1408 | | } |
| 1450 | state->tenkai_p5_val |= (1 << 3); |
| 1409 | 1451 | } |
| 1410 | | // Added by Whistler - END |
| 1452 | |
| 1411 | 1453 | static WRITE8_HANDLER( tenkai_p8_w ) |
| 1412 | 1454 | { |
| 1413 | | rombank = ((data & 0x08) << 1) | (rombank & 0x0f); |
| 1455 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1456 | state->rombank = ((data & 0x08) << 1) | (state->rombank & 0x0f); |
| 1414 | 1457 | tenkai_update_rombank(space->machine); |
| 1415 | 1458 | } |
| 1459 | |
| 1416 | 1460 | static READ8_HANDLER( tenkai_p8_r ) |
| 1417 | 1461 | { |
| 1418 | 1462 | return 0x00; |
| r7640 | r7641 | |
| 1420 | 1464 | |
| 1421 | 1465 | static READ8_HANDLER( tenkai_8000_r ) |
| 1422 | 1466 | { |
| 1423 | | if (rombank < 0x10) |
| 1424 | | { |
| 1425 | | return romptr[offset]; |
| 1426 | | } |
| 1427 | | else if ( (rombank == 0x10) && (offset < 0x10) ) |
| 1428 | | { |
| 1429 | | running_device *rtc = devtag_get_device(space->machine, "rtc"); |
| 1430 | | return msm6242_r(rtc, offset); |
| 1431 | | } |
| 1432 | | else if (rombank == 0x12) |
| 1433 | | { |
| 1434 | | return tenkai_palette_r(space,offset); |
| 1435 | | } |
| 1467 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1436 | 1468 | |
| 1437 | | logerror("%04x: unmapped offset %04X read with rombank=%02X\n",cpu_get_pc(space->cpu),offset,rombank); |
| 1469 | if (state->rombank < 0x10) |
| 1470 | return state->romptr[offset]; |
| 1471 | else if ((state->rombank == 0x10) && (offset < 0x10)) |
| 1472 | return msm6242_r(state->rtc, offset); |
| 1473 | else if (state->rombank == 0x12) |
| 1474 | return tenkai_palette_r(space, offset); |
| 1475 | |
| 1476 | logerror("%04x: unmapped offset %04X read with rombank=%02X\n", cpu_get_pc(space->cpu), offset, state->rombank); |
| 1438 | 1477 | return 0x00; |
| 1439 | 1478 | } |
| 1440 | 1479 | |
| 1441 | 1480 | static WRITE8_HANDLER( tenkai_8000_w ) |
| 1442 | 1481 | { |
| 1443 | | if ( (rombank == 0x10) && (offset < 0x10) ) |
| 1482 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1483 | |
| 1484 | if ((state->rombank == 0x10) && (offset < 0x10)) |
| 1444 | 1485 | { |
| 1445 | | running_device *rtc = devtag_get_device(space->machine, "rtc"); |
| 1446 | | msm6242_w(rtc, offset, data); |
| 1486 | msm6242_w(state->rtc, offset, data); |
| 1447 | 1487 | return; |
| 1448 | 1488 | } |
| 1449 | | else if (rombank == 0x12) |
| 1489 | else if (state->rombank == 0x12) |
| 1450 | 1490 | { |
| 1451 | | tenkai_palette_w(space,offset,data); |
| 1491 | tenkai_palette_w(space, offset, data); |
| 1452 | 1492 | return; |
| 1453 | 1493 | } |
| 1454 | 1494 | |
| 1455 | | logerror("%04x: unmapped offset %04X=%02X written with rombank=%02X\n",cpu_get_pc(space->cpu),offset,data,rombank); |
| 1495 | logerror("%04x: unmapped offset %04X=%02X written with rombank=%02X\n", cpu_get_pc(space->cpu), offset, data, state->rombank); |
| 1456 | 1496 | } |
| 1457 | 1497 | |
| 1458 | | static int tenkai_6c, tenkai_70; |
| 1459 | | static void tenkai_show_6c(void) |
| 1498 | static void tenkai_show_6c( running_machine *machine ) |
| 1460 | 1499 | { |
| 1461 | | // popmessage("%02x %02x",tenkai_6c,tenkai_70); |
| 1500 | // dynax_state *state = (dynax_state *)machine->driver_data; |
| 1501 | // popmessage("%02x %02x", state->tenkai_6c, state->tenkai_70); |
| 1462 | 1502 | } |
| 1503 | |
| 1463 | 1504 | static WRITE8_HANDLER( tenkai_6c_w ) |
| 1464 | 1505 | { |
| 1465 | | tenkai_6c = data; |
| 1466 | | tenkai_show_6c(); |
| 1506 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1507 | state->tenkai_6c = data; |
| 1508 | tenkai_show_6c(space->machine); |
| 1467 | 1509 | } |
| 1510 | |
| 1468 | 1511 | static WRITE8_HANDLER( tenkai_70_w ) |
| 1469 | 1512 | { |
| 1470 | | tenkai_70 = data; |
| 1471 | | tenkai_show_6c(); |
| 1513 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1514 | state->tenkai_70 = data; |
| 1515 | tenkai_show_6c(space->machine); |
| 1472 | 1516 | } |
| 1473 | 1517 | |
| 1474 | 1518 | static WRITE8_HANDLER( tenkai_blit_romregion_w ) |
| 1475 | 1519 | { |
| 1476 | | switch(data) |
| 1520 | switch (data) |
| 1477 | 1521 | { |
| 1478 | | case 0x00: dynax_blit_romregion_w(space,0,0); return; |
| 1479 | | case 0x83: dynax_blit_romregion_w(space,0,1); return; |
| 1480 | | case 0x80: dynax_blit_romregion_w(space,0,2); return; |
| 1522 | case 0x00: dynax_blit_romregion_w(space, 0, 0); return; |
| 1523 | case 0x83: dynax_blit_romregion_w(space, 0, 1); return; |
| 1524 | case 0x80: dynax_blit_romregion_w(space, 0, 2); return; |
| 1481 | 1525 | } |
| 1482 | | logerror("%04x: unmapped romregion=%02X\n",cpu_get_pc(space->cpu),data); |
| 1526 | logerror("%04x: unmapped romregion=%02X\n", cpu_get_pc(space->cpu), data); |
| 1483 | 1527 | } |
| 1484 | 1528 | |
| 1485 | 1529 | static ADDRESS_MAP_START( tenkai_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1486 | 1530 | AM_RANGE( 0x0000, 0x5fff ) AM_ROM |
| 1487 | 1531 | AM_RANGE( 0x6000, 0x6fff ) AM_RAM |
| 1488 | 1532 | AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 1489 | | AM_RANGE( 0x8000, 0xffff ) AM_READWRITE( tenkai_8000_r, tenkai_8000_w ) |
| 1490 | | AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD ( "aysnd", ay8910_r ) // AY8910 |
| 1491 | | AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE( "aysnd", ay8910_data_w ) // |
| 1492 | | AM_RANGE( 0x10010, 0x10010 ) AM_DEVWRITE( "aysnd", ay8910_address_w ) // |
| 1493 | | AM_RANGE( 0x10020, 0x10021 ) AM_DEVWRITE("ymsnd", ym2413_w ) // |
| 1494 | | AM_RANGE( 0x10040, 0x10040 ) AM_WRITE( dynax_blit_pen_w ) // Destination Pen |
| 1495 | | AM_RANGE( 0x10044, 0x10044 ) AM_WRITE( tenkai_blit_dest_w ) // Destination Layer |
| 1496 | | AM_RANGE( 0x10048, 0x10048 ) AM_WRITE( tenkai_blit_palette23_w ) // Layers Palettes |
| 1497 | | AM_RANGE( 0x1004c, 0x1004c ) AM_WRITE( tenkai_blit_palette01_w ) // |
| 1498 | | AM_RANGE( 0x10050, 0x10050 ) AM_WRITE( tenkai_priority_w ) // layer priority and enable |
| 1499 | | AM_RANGE( 0x10054, 0x10054 ) AM_WRITE( dynax_blit_backpen_w ) // Background Color |
| 1500 | | AM_RANGE( 0x10058, 0x10058 ) AM_WRITE( tenkai_blit_romregion_w ) // Blitter ROM bank |
| 1501 | | AM_RANGE( 0x10060, 0x10060 ) AM_WRITE( yarunara_flipscreen_inv_w) // Flip Screen |
| 1502 | | AM_RANGE( 0x10064, 0x10064 ) AM_WRITE( yarunara_layer_half_w ) // half of the interleaved layer to write to |
| 1503 | | AM_RANGE( 0x10068, 0x10068 ) AM_WRITE( yarunara_layer_half2_w ) // |
| 1504 | | AM_RANGE( 0x1006c, 0x1006c ) AM_WRITE( tenkai_6c_w ) // ? |
| 1505 | | AM_RANGE( 0x10070, 0x10070 ) AM_WRITE( tenkai_70_w ) // ? |
| 1533 | AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(tenkai_8000_r, tenkai_8000_w) |
| 1534 | AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD("aysnd", ay8910_r) // AY8910 |
| 1535 | AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE("aysnd", ay8910_data_w) // |
| 1536 | AM_RANGE( 0x10010, 0x10010 ) AM_DEVWRITE("aysnd", ay8910_address_w) // |
| 1537 | AM_RANGE( 0x10020, 0x10021 ) AM_DEVWRITE("ymsnd", ym2413_w) // |
| 1538 | AM_RANGE( 0x10040, 0x10040 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen |
| 1539 | AM_RANGE( 0x10044, 0x10044 ) AM_WRITE(tenkai_blit_dest_w) // Destination Layer |
| 1540 | AM_RANGE( 0x10048, 0x10048 ) AM_WRITE(tenkai_blit_palette23_w) // Layers Palettes |
| 1541 | AM_RANGE( 0x1004c, 0x1004c ) AM_WRITE(tenkai_blit_palette01_w) // |
| 1542 | AM_RANGE( 0x10050, 0x10050 ) AM_WRITE(tenkai_priority_w) // layer priority and enable |
| 1543 | AM_RANGE( 0x10054, 0x10054 ) AM_WRITE(dynax_blit_backpen_w) // Background Color |
| 1544 | AM_RANGE( 0x10058, 0x10058 ) AM_WRITE(tenkai_blit_romregion_w) // Blitter ROM bank |
| 1545 | AM_RANGE( 0x10060, 0x10060 ) AM_WRITE(yarunara_flipscreen_inv_w) // Flip Screen |
| 1546 | AM_RANGE( 0x10064, 0x10064 ) AM_WRITE(yarunara_layer_half_w) // half of the interleaved layer to write to |
| 1547 | AM_RANGE( 0x10068, 0x10068 ) AM_WRITE(yarunara_layer_half2_w) // |
| 1548 | AM_RANGE( 0x1006c, 0x1006c ) AM_WRITE(tenkai_6c_w) // ? |
| 1549 | AM_RANGE( 0x10070, 0x10070 ) AM_WRITE(tenkai_70_w) // ? |
| 1506 | 1550 | AM_RANGE( 0x1007c, 0x1007c ) AM_WRITENOP // IRQ Ack? (0,2) |
| 1507 | | AM_RANGE( 0x100c0, 0x100c0 ) AM_WRITE( tenkai_ipsel_w ) |
| 1508 | | AM_RANGE( 0x100c1, 0x100c1 ) AM_WRITE( tenkai_ip_w ) |
| 1509 | | AM_RANGE( 0x100c2, 0x100c3 ) AM_READ ( tenkai_ip_r ) |
| 1510 | | AM_RANGE( 0x100e1, 0x100e7 ) AM_WRITE( tenkai_blitter_rev2_w ) // Blitter (inverted scroll values) |
| 1551 | AM_RANGE( 0x100c0, 0x100c0 ) AM_WRITE(tenkai_ipsel_w) |
| 1552 | AM_RANGE( 0x100c1, 0x100c1 ) AM_WRITE(tenkai_ip_w) |
| 1553 | AM_RANGE( 0x100c2, 0x100c3 ) AM_READ(tenkai_ip_r) |
| 1554 | AM_RANGE( 0x100e1, 0x100e7 ) AM_WRITE(tenkai_blitter_rev2_w) // Blitter (inverted scroll values) |
| 1511 | 1555 | ADDRESS_MAP_END |
| 1512 | 1556 | |
| 1513 | 1557 | static ADDRESS_MAP_START( tenkai_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1514 | | AM_RANGE( T90_P3, T90_P3 ) AM_READWRITE( tenkai_p3_r , tenkai_p3_w ) |
| 1515 | | AM_RANGE( T90_P4, T90_P4 ) AM_WRITE( tenkai_p4_w ) |
| 1516 | | AM_RANGE( T90_P5, T90_P5 ) AM_READ( tenkai_p5_r ) |
| 1517 | | AM_RANGE( T90_P6, T90_P6 ) AM_WRITE( tenkai_p6_w ) |
| 1518 | | AM_RANGE( T90_P7, T90_P7 ) AM_WRITE( tenkai_p7_w ) |
| 1519 | | AM_RANGE( T90_P8, T90_P8 ) AM_READWRITE( tenkai_p8_r, tenkai_p8_w ) |
| 1558 | AM_RANGE( T90_P3, T90_P3 ) AM_READWRITE(tenkai_p3_r, tenkai_p3_w) |
| 1559 | AM_RANGE( T90_P4, T90_P4 ) AM_WRITE(tenkai_p4_w) |
| 1560 | AM_RANGE( T90_P5, T90_P5 ) AM_READ(tenkai_p5_r) |
| 1561 | AM_RANGE( T90_P6, T90_P6 ) AM_WRITE(tenkai_p6_w) |
| 1562 | AM_RANGE( T90_P7, T90_P7 ) AM_WRITE(tenkai_p7_w) |
| 1563 | AM_RANGE( T90_P8, T90_P8 ) AM_READWRITE(tenkai_p8_r, tenkai_p8_w) |
| 1520 | 1564 | ADDRESS_MAP_END |
| 1521 | 1565 | |
| 1522 | 1566 | /*************************************************************************** |
| r7640 | r7641 | |
| 1525 | 1569 | |
| 1526 | 1570 | static READ8_HANDLER( gekisha_keyboard_0_r ) |
| 1527 | 1571 | { |
| 1572 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1528 | 1573 | int res = 0x3f; |
| 1529 | 1574 | |
| 1530 | | if (~keyb & 0x01) res &= input_port_read(space->machine, "KEY0"); |
| 1531 | | if (~keyb & 0x02) res &= input_port_read(space->machine, "KEY1"); |
| 1532 | | if (~keyb & 0x04) res &= input_port_read(space->machine, "KEY2"); |
| 1533 | | if (~keyb & 0x08) res &= input_port_read(space->machine, "KEY3"); |
| 1534 | | if (~keyb & 0x10) res &= input_port_read(space->machine, "KEY4"); |
| 1575 | if (!BIT(state->keyb, 0)) res &= input_port_read(space->machine, "KEY0"); |
| 1576 | if (!BIT(state->keyb, 1)) res &= input_port_read(space->machine, "KEY1"); |
| 1577 | if (!BIT(state->keyb, 2)) res &= input_port_read(space->machine, "KEY2"); |
| 1578 | if (!BIT(state->keyb, 3)) res &= input_port_read(space->machine, "KEY3"); |
| 1579 | if (!BIT(state->keyb, 4)) res &= input_port_read(space->machine, "KEY4"); |
| 1535 | 1580 | |
| 1536 | 1581 | return res; |
| 1537 | 1582 | } |
| 1538 | 1583 | static READ8_HANDLER( gekisha_keyboard_1_r ) |
| 1539 | 1584 | { |
| 1585 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1540 | 1586 | int res = 0x3f; |
| 1541 | 1587 | |
| 1542 | | if (~keyb & 0x01) res &= input_port_read(space->machine, "KEY5"); |
| 1543 | | if (~keyb & 0x02) res &= input_port_read(space->machine, "KEY6"); |
| 1544 | | if (~keyb & 0x04) res &= input_port_read(space->machine, "KEY7"); |
| 1545 | | if (~keyb & 0x08) res &= input_port_read(space->machine, "KEY8"); |
| 1546 | | if (~keyb & 0x10) res &= input_port_read(space->machine, "KEY9"); |
| 1588 | if (!BIT(state->keyb, 0)) res &= input_port_read(space->machine, "KEY5"); |
| 1589 | if (!BIT(state->keyb, 1)) res &= input_port_read(space->machine, "KEY6"); |
| 1590 | if (!BIT(state->keyb, 2)) res &= input_port_read(space->machine, "KEY7"); |
| 1591 | if (!BIT(state->keyb, 3)) res &= input_port_read(space->machine, "KEY8"); |
| 1592 | if (!BIT(state->keyb, 4)) res &= input_port_read(space->machine, "KEY9"); |
| 1547 | 1593 | |
| 1548 | 1594 | // bit 6 |
| 1549 | 1595 | res |= input_port_read(space->machine, "BET"); |
| r7640 | r7641 | |
| 1555 | 1601 | |
| 1556 | 1602 | static WRITE8_HANDLER( gekisha_hopper_w ) |
| 1557 | 1603 | { |
| 1558 | | static UINT8 val[2]; |
| 1559 | | val[offset] = data; |
| 1560 | | // popmessage("%02x %02x",val[0],val[1]); |
| 1604 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1605 | state->gekisha_val[offset] = data; |
| 1606 | // popmessage("%02x %02x", gekisha_val[0], gekisha_val[1]); |
| 1561 | 1607 | } |
| 1562 | 1608 | |
| 1563 | | |
| 1564 | | static UINT8 gekisha_rom_enable; |
| 1565 | | static UINT8 *gekisha_rom; |
| 1566 | | static void gekisha_set_rombank(running_machine *machine, UINT8 data) |
| 1609 | static void gekisha_set_rombank( running_machine *machine, UINT8 data ) |
| 1567 | 1610 | { |
| 1568 | | rombank = data; |
| 1569 | | gekisha_rom = memory_region(machine, "maincpu") + 0x8000 + rombank * 0x8000; |
| 1611 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 1612 | state->rombank = data; |
| 1613 | state->romptr = memory_region(machine, "maincpu") + 0x8000 + state->rombank * 0x8000; |
| 1570 | 1614 | } |
| 1571 | 1615 | |
| 1572 | 1616 | static WRITE8_HANDLER( gekisha_p4_w ) |
| 1573 | 1617 | { |
| 1574 | | gekisha_rom_enable = !(data & 0x08); |
| 1575 | | gekisha_set_rombank(space->machine, (data & 0x04) >> 2); |
| 1618 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1619 | state->gekisha_rom_enable = !BIT(data, 3); |
| 1620 | gekisha_set_rombank(space->machine, BIT(data, 2)); |
| 1576 | 1621 | } |
| 1577 | 1622 | |
| 1578 | 1623 | static READ8_HANDLER( gekisha_8000_r ) |
| 1579 | 1624 | { |
| 1580 | | if (gekisha_rom_enable) |
| 1581 | | return gekisha_rom[offset]; |
| 1625 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1582 | 1626 | |
| 1627 | if (state->gekisha_rom_enable) |
| 1628 | return state->romptr[offset]; |
| 1629 | |
| 1583 | 1630 | switch (offset + 0x8000) |
| 1584 | 1631 | { |
| 1585 | | case 0x8061: return input_port_read(space->machine, "COINS" ); |
| 1632 | case 0x8061: return input_port_read(space->machine, "COINS"); |
| 1586 | 1633 | case 0x8062: return gekisha_keyboard_1_r(space, 0); |
| 1587 | 1634 | case 0x8063: return gekisha_keyboard_0_r(space, 0); |
| 1588 | | case 0x8064: return input_port_read(space->machine, "DSW1" ); |
| 1589 | | case 0x8065: return input_port_read(space->machine, "DSW3" ); |
| 1590 | | case 0x8066: return input_port_read(space->machine, "DSW4" ); |
| 1591 | | case 0x8067: return input_port_read(space->machine, "DSW2" ); |
| 1635 | case 0x8064: return input_port_read(space->machine, "DSW1"); |
| 1636 | case 0x8065: return input_port_read(space->machine, "DSW3"); |
| 1637 | case 0x8066: return input_port_read(space->machine, "DSW4"); |
| 1638 | case 0x8067: return input_port_read(space->machine, "DSW2"); |
| 1592 | 1639 | } |
| 1593 | 1640 | |
| 1594 | | logerror("%04x: unmapped offset %04X read with rombank=%02X\n",cpu_get_pc(space->cpu),offset,rombank); |
| 1641 | logerror("%04x: unmapped offset %04X read with rombank=%02X\n",cpu_get_pc(space->cpu), offset, state->rombank); |
| 1595 | 1642 | return 0x00; |
| 1596 | 1643 | } |
| 1597 | 1644 | |
| 1598 | 1645 | static WRITE8_HANDLER( gekisha_8000_w ) |
| 1599 | 1646 | { |
| 1600 | | if (!gekisha_rom_enable) |
| 1647 | dynax_state *state = (dynax_state *)space->machine->driver_data; |
| 1648 | |
| 1649 | if (!state->gekisha_rom_enable) |
| 1601 | 1650 | { |
| 1602 | 1651 | switch (offset + 0x8000) |
| 1603 | 1652 | { |
| r7640 | r7641 | |
| 1636 | 1685 | case 0x8050: // CRT controller |
| 1637 | 1686 | case 0x8051: return; |
| 1638 | 1687 | |
| 1639 | | case 0x8070: ym2413_register_port_w(devtag_get_device(space->machine, "ymsnd"), 0, data); return; |
| 1640 | | case 0x8071: ym2413_data_port_w (devtag_get_device(space->machine, "ymsnd"), 0, data); return; |
| 1688 | case 0x8070: ym2413_register_port_w(state->ymsnd, 0, data); return; |
| 1689 | case 0x8071: ym2413_data_port_w(state->ymsnd, 0, data); return; |
| 1641 | 1690 | |
| 1642 | | case 0x8060: keyb = data; return; |
| 1691 | case 0x8060: state->keyb = data; return; |
| 1643 | 1692 | |
| 1644 | 1693 | // case 0x8080: // ? 0,1,6 (bit 0 = screen disable?) |
| 1645 | 1694 | // popmessage("80 = %02x", data); |
| 1646 | 1695 | // break; |
| 1647 | 1696 | } |
| 1648 | 1697 | } |
| 1649 | | logerror("%04x: unmapped offset %04X=%02X written with rombank=%02X\n",cpu_get_pc(space->cpu),offset,data,rombank); |
| 1698 | logerror("%04x: unmapped offset %04X=%02X written with rombank=%02X\n", cpu_get_pc(space->cpu), offset, data, state->rombank); |
| 1650 | 1699 | } |
| 1651 | 1700 | |
| 1652 | 1701 | |
| 1653 | 1702 | static ADDRESS_MAP_START( gekisha_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1654 | 1703 | AM_RANGE( 0x0000, 0x6fff ) AM_ROM |
| 1655 | 1704 | AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 1656 | | AM_RANGE( 0x8000, 0xffff ) AM_READWRITE( gekisha_8000_r, gekisha_8000_w ) |
| 1705 | AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(gekisha_8000_r, gekisha_8000_w) |
| 1657 | 1706 | ADDRESS_MAP_END |
| 1658 | 1707 | |
| 1659 | 1708 | static ADDRESS_MAP_START( gekisha_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1660 | | AM_RANGE( T90_P4, T90_P4 ) AM_WRITE( gekisha_p4_w ) |
| 1709 | AM_RANGE( T90_P4, T90_P4 ) AM_WRITE(gekisha_p4_w) |
| 1661 | 1710 | ADDRESS_MAP_END |
| 1662 | 1711 | |
| 1663 | 1712 | |
| r7640 | r7641 | |
| 1670 | 1719 | ***************************************************************************/ |
| 1671 | 1720 | |
| 1672 | 1721 | static INPUT_PORTS_START( MAHJONG_KEYS ) |
| 1673 | | /* Keyboard 1 */ |
| 1674 | 1722 | PORT_START("KEY0") |
| 1675 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1) |
| 1676 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(1) |
| 1677 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(1) |
| 1678 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1) |
| 1679 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1) |
| 1680 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) |
| 1723 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1) |
| 1724 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(1) |
| 1725 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(1) |
| 1726 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1) |
| 1727 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1) |
| 1728 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) |
| 1681 | 1729 | |
| 1682 | 1730 | PORT_START("KEY1") |
| 1683 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(1) |
| 1684 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(1) |
| 1685 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(1) |
| 1686 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1) |
| 1687 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1) |
| 1688 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1731 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(1) |
| 1732 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(1) |
| 1733 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(1) |
| 1734 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1) |
| 1735 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1) |
| 1736 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1689 | 1737 | |
| 1690 | 1738 | PORT_START("KEY2") |
| 1691 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(1) |
| 1692 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(1) |
| 1693 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(1) |
| 1694 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1) |
| 1695 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1) |
| 1696 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1739 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(1) |
| 1740 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(1) |
| 1741 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(1) |
| 1742 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1) |
| 1743 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1) |
| 1744 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1697 | 1745 | |
| 1698 | 1746 | PORT_START("KEY3") |
| 1699 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(1) |
| 1700 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(1) |
| 1701 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(1) |
| 1702 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1) |
| 1703 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1704 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1747 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(1) |
| 1748 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(1) |
| 1749 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(1) |
| 1750 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1) |
| 1751 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1752 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1705 | 1753 | |
| 1706 | 1754 | PORT_START("KEY4") |
| 1707 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(1) // "l" |
| 1708 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1709 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1710 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(1) // "f" |
| 1711 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1712 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1755 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(1) // "l" |
| 1756 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1757 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1758 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(1) // "f" |
| 1759 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1760 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1713 | 1761 | |
| 1714 | | /* Keyboard 2 */ |
| 1715 | 1762 | PORT_START("KEY5") |
| 1716 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) |
| 1717 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) |
| 1718 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) |
| 1719 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) |
| 1720 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) |
| 1721 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1763 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) |
| 1764 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) |
| 1765 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) |
| 1766 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) |
| 1767 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) |
| 1768 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1722 | 1769 | |
| 1723 | 1770 | PORT_START("KEY6") |
| 1724 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) |
| 1725 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) |
| 1726 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) |
| 1727 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) |
| 1728 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) |
| 1729 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1771 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) |
| 1772 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) |
| 1773 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) |
| 1774 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) |
| 1775 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) |
| 1776 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1730 | 1777 | |
| 1731 | 1778 | PORT_START("KEY7") |
| 1732 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) |
| 1733 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) |
| 1734 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) |
| 1735 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) |
| 1736 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) |
| 1737 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1779 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) |
| 1780 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) |
| 1781 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) |
| 1782 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) |
| 1783 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) |
| 1784 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1738 | 1785 | |
| 1739 | 1786 | PORT_START("KEY8") |
| 1740 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) |
| 1741 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) |
| 1742 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) |
| 1743 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) |
| 1744 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1745 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1787 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) |
| 1788 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) |
| 1789 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) |
| 1790 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) |
| 1791 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1792 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1746 | 1793 | |
| 1747 | 1794 | PORT_START("KEY9") |
| 1748 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l" |
| 1749 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1750 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1751 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // "f" |
| 1752 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1753 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1795 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l" |
| 1796 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1797 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1798 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // "f" |
| 1799 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1800 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1754 | 1801 | INPUT_PORTS_END |
| 1755 | 1802 | |
| 1756 | 1803 | static INPUT_PORTS_START( MAHJONG_KEYS_BET ) |
| 1757 | | /* Keyboard 1 */ |
| 1758 | 1804 | PORT_START("KEY0") |
| 1759 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1) |
| 1760 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(1) |
| 1761 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(1) |
| 1762 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1) |
| 1763 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1) |
| 1764 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) |
| 1805 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1) |
| 1806 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(1) |
| 1807 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(1) |
| 1808 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1) |
| 1809 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1) |
| 1810 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) |
| 1765 | 1811 | |
| 1766 | 1812 | PORT_START("KEY1") |
| 1767 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(1) |
| 1768 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(1) |
| 1769 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(1) |
| 1770 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1) |
| 1771 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1) |
| 1772 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(1) |
| 1813 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(1) |
| 1814 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(1) |
| 1815 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(1) |
| 1816 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1) |
| 1817 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1) |
| 1818 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(1) |
| 1773 | 1819 | |
| 1774 | 1820 | PORT_START("KEY2") |
| 1775 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(1) |
| 1776 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(1) |
| 1777 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(1) |
| 1778 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1) |
| 1779 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1) |
| 1780 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1821 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(1) |
| 1822 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(1) |
| 1823 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(1) |
| 1824 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1) |
| 1825 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1) |
| 1826 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1781 | 1827 | |
| 1782 | 1828 | PORT_START("KEY3") |
| 1783 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(1) |
| 1784 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(1) |
| 1785 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(1) |
| 1786 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1) |
| 1787 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1788 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1829 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(1) |
| 1830 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(1) |
| 1831 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(1) |
| 1832 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1) |
| 1833 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1834 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1789 | 1835 | |
| 1790 | 1836 | PORT_START("KEY4") |
| 1791 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(1) // "l" |
| 1792 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(1) // "t" |
| 1793 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(1) // "w" |
| 1794 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(1) // "f" |
| 1795 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(1) // "b" |
| 1796 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(1) // "s" |
| 1837 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(1) // "l" |
| 1838 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(1) // "t" |
| 1839 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(1) // "w" |
| 1840 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(1) // "f" |
| 1841 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(1) // "b" |
| 1842 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(1) // "s" |
| 1797 | 1843 | |
| 1798 | | /* Keyboard 2 */ |
| 1799 | 1844 | PORT_START("KEY5") |
| 1800 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) |
| 1801 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) |
| 1802 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) |
| 1803 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) |
| 1804 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) |
| 1805 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1845 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) |
| 1846 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) |
| 1847 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) |
| 1848 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) |
| 1849 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) |
| 1850 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1806 | 1851 | |
| 1807 | 1852 | PORT_START("KEY6") |
| 1808 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) |
| 1809 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) |
| 1810 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) |
| 1811 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) |
| 1812 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) |
| 1813 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) |
| 1853 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) |
| 1854 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) |
| 1855 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) |
| 1856 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) |
| 1857 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) |
| 1858 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) |
| 1814 | 1859 | |
| 1815 | 1860 | PORT_START("KEY7") |
| 1816 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) |
| 1817 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) |
| 1818 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) |
| 1819 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) |
| 1820 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) |
| 1821 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1861 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) |
| 1862 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) |
| 1863 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) |
| 1864 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) |
| 1865 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) |
| 1866 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1822 | 1867 | |
| 1823 | 1868 | PORT_START("KEY8") |
| 1824 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) |
| 1825 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) |
| 1826 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) |
| 1827 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) |
| 1828 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1829 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1869 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) |
| 1870 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) |
| 1871 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) |
| 1872 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) |
| 1873 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1874 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1830 | 1875 | |
| 1831 | 1876 | PORT_START("KEY9") |
| 1832 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l" |
| 1833 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t" |
| 1834 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w" |
| 1835 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // "f" |
| 1836 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b" |
| 1837 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s" |
| 1877 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l" |
| 1878 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t" |
| 1879 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w" |
| 1880 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // "f" |
| 1881 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b" |
| 1882 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s" |
| 1838 | 1883 | INPUT_PORTS_END |
| 1839 | 1884 | |
| 1840 | 1885 | static INPUT_PORTS_START( HANAFUDA_KEYS ) |
| 1841 | | /* Keyboard 1 */ |
| 1842 | 1886 | PORT_START("KEY0") |
| 1843 | 1887 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(1) |
| 1844 | 1888 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(1) |
| r7640 | r7641 | |
| 1879 | 1923 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1880 | 1924 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1881 | 1925 | |
| 1882 | | /* Keyboard 2 */ |
| 1883 | 1926 | PORT_START("KEY5") |
| 1884 | 1927 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2) |
| 1885 | 1928 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2) |
| r7640 | r7641 | |
| 1922 | 1965 | INPUT_PORTS_END |
| 1923 | 1966 | |
| 1924 | 1967 | static INPUT_PORTS_START( HANAFUDA_KEYS_BET ) |
| 1925 | | /* Keyboard 1 */ |
| 1926 | 1968 | PORT_START("KEY0") |
| 1927 | 1969 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(1) |
| 1928 | 1970 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(1) |
| r7640 | r7641 | |
| 1963 | 2005 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b" |
| 1964 | 2006 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s" |
| 1965 | 2007 | |
| 1966 | | /* Keyboard 2 */ |
| 1967 | 2008 | PORT_START("KEY5") |
| 1968 | 2009 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2) |
| 1969 | 2010 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2) |
| r7640 | r7641 | |
| 2006 | 2047 | INPUT_PORTS_END |
| 2007 | 2048 | |
| 2008 | 2049 | static INPUT_PORTS_START( HANAFUDA_KEYS_BET_ALT ) |
| 2009 | | /* Keyboard 1 */ |
| 2010 | 2050 | PORT_START("KEY0") |
| 2011 | 2051 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(1) |
| 2012 | 2052 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(1) |
| r7640 | r7641 | |
| 2049 | 2089 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2050 | 2090 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2051 | 2091 | |
| 2052 | | /* Keyboard 2 */ |
| 2053 | 2092 | PORT_START("KEY5") |
| 2054 | 2093 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2) |
| 2055 | 2094 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2) |
| r7640 | r7641 | |
| 2146 | 2185 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2147 | 2186 | |
| 2148 | 2187 | PORT_START("COINS") |
| 2149 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2150 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2151 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 2152 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 2153 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 2154 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2155 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2156 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 2188 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2189 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2190 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 2191 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 2192 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 2193 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2194 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2195 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 2157 | 2196 | |
| 2158 | 2197 | PORT_INCLUDE( HANAFUDA_KEYS ) |
| 2159 | 2198 | INPUT_PORTS_END |
| r7640 | r7641 | |
| 2275 | 2314 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2276 | 2315 | |
| 2277 | 2316 | PORT_START("COINS") |
| 2278 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2279 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2280 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 2281 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 2282 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 2283 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2284 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2285 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 2317 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2318 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2319 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 2320 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 2321 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 2322 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2323 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2324 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) |
| 2286 | 2325 | |
| 2287 | 2326 | PORT_INCLUDE( HANAFUDA_KEYS ) |
| 2288 | 2327 | |
| 2289 | | PORT_START("DSW2") /* IN13 */ |
| 2328 | PORT_START("DSW2") |
| 2290 | 2329 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) |
| 2291 | 2330 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 2292 | 2331 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r7640 | r7641 | |
| 2312 | 2351 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 2313 | 2352 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2314 | 2353 | |
| 2315 | | PORT_START("DSW3") /* IN14 */ |
| 2354 | PORT_START("DSW3") |
| 2316 | 2355 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) |
| 2317 | 2356 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 2318 | 2357 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r7640 | r7641 | |
| 2441 | 2480 | |
| 2442 | 2481 | PORT_START("COINS") |
| 2443 | 2482 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // Pay |
| 2444 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE4 ) // 18B |
| 2445 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 2446 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 2447 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 2483 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE4 ) // 18B |
| 2484 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 2485 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 2486 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 2448 | 2487 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // Key In |
| 2449 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2450 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) // 18A |
| 2488 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2489 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) // 18A |
| 2451 | 2490 | |
| 2452 | 2491 | PORT_INCLUDE( HANAFUDA_KEYS_BET ) |
| 2453 | 2492 | // PORT_INCLUDE( HANAFUDA_KEYS_BET_ALT ) |
| r7640 | r7641 | |
| 2843 | 2882 | PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) |
| 2844 | 2883 | |
| 2845 | 2884 | PORT_START("COINS") |
| 2846 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2847 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2848 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test, during boot |
| 2849 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2850 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2851 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 2852 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2853 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2885 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2886 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2887 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test, during boot |
| 2888 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2889 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2890 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 2891 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 2892 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2854 | 2893 | |
| 2855 | | /* Keyboard 1 */ |
| 2856 | 2894 | PORT_START("KEY0") |
| 2857 | 2895 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 2858 | 2896 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) |
| r7640 | r7641 | |
| 2870 | 2908 | PORT_START("KEY4") |
| 2871 | 2909 | PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 2872 | 2910 | |
| 2873 | | /* Keyboard 2 */ |
| 2874 | 2911 | PORT_START("KEY5") |
| 2875 | 2912 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 2876 | 2913 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) |
| r7640 | r7641 | |
| 3578 | 3615 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3579 | 3616 | |
| 3580 | 3617 | PORT_START("COINS") |
| 3581 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 17B |
| 3582 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 18B |
| 3583 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test |
| 3584 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 3585 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 3586 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 06B |
| 3587 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // Coin |
| 3588 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 18A |
| 3618 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 17B |
| 3619 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 18B |
| 3620 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test |
| 3621 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Analyzer |
| 3622 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Memory Reset |
| 3623 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 06B |
| 3624 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // Coin |
| 3625 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 18A |
| 3589 | 3626 | |
| 3590 | 3627 | PORT_INCLUDE( MAHJONG_KEYS ) |
| 3591 | 3628 | |
| r7640 | r7641 | |
| 3888 | 3925 | |
| 3889 | 3926 | static INPUT_PORTS_START( htengoku ) |
| 3890 | 3927 | PORT_START("COINS") |
| 3891 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE4 ) // medal out |
| 3892 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 3928 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE4 ) // medal out |
| 3929 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 3893 | 3930 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) |
| 3894 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // analyzer |
| 3895 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // data clear |
| 3896 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note |
| 3897 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 3898 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 3931 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // analyzer |
| 3932 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // data clear |
| 3933 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note |
| 3934 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 3935 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 3899 | 3936 | |
| 3900 | 3937 | PORT_INCLUDE( HANAFUDA_KEYS_BET ) |
| 3901 | 3938 | |
| r7640 | r7641 | |
| 4154 | 4191 | |
| 4155 | 4192 | ***************************************************************************/ |
| 4156 | 4193 | |
| 4194 | static MACHINE_START( dynax ) |
| 4195 | { |
| 4196 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 4197 | |
| 4198 | state->maincpu = devtag_get_device(machine, "maincpu"); |
| 4199 | state->soundcpu = devtag_get_device(machine, "soundcpu"); |
| 4200 | state->rtc = devtag_get_device(machine, "rtc"); |
| 4201 | state->ymsnd = devtag_get_device(machine, "ymsnd"); |
| 4202 | |
| 4203 | state_save_register_global(machine, state->sound_irq); |
| 4204 | state_save_register_global(machine, state->vblank_irq); |
| 4205 | state_save_register_global(machine, state->blitter_irq); |
| 4206 | state_save_register_global(machine, state->blitter2_irq); |
| 4207 | state_save_register_global(machine, state->soundlatch_irq); |
| 4208 | state_save_register_global(machine, state->sound_vblank_irq); |
| 4209 | |
| 4210 | state_save_register_global(machine, state->input_sel); |
| 4211 | state_save_register_global(machine, state->dsw_sel); |
| 4212 | state_save_register_global(machine, state->keyb); |
| 4213 | state_save_register_global(machine, state->coins); |
| 4214 | state_save_register_global(machine, state->hopper); |
| 4215 | state_save_register_global(machine, state->hnoridur_bank); |
| 4216 | state_save_register_global(machine, state->palbank); |
| 4217 | state_save_register_global(machine, state->msm5205next); |
| 4218 | state_save_register_global(machine, state->resetkludge); |
| 4219 | state_save_register_global(machine, state->toggle); |
| 4220 | state_save_register_global(machine, state->toggle_cpu1); |
| 4221 | state_save_register_global(machine, state->yarunara_clk_toggle); |
| 4222 | state_save_register_global(machine, state->soundlatch_ack); |
| 4223 | state_save_register_global(machine, state->soundlatch_full); |
| 4224 | state_save_register_global(machine, state->latch); |
| 4225 | state_save_register_global(machine, state->rombank); |
| 4226 | state_save_register_global(machine, state->tenkai_p5_val); |
| 4227 | state_save_register_global(machine, state->tenkai_6c); |
| 4228 | state_save_register_global(machine, state->tenkai_70); |
| 4229 | state_save_register_global_array(machine, state->gekisha_val); |
| 4230 | state_save_register_global_array(machine, state->palette_ram); |
| 4231 | state_save_register_global(machine, state->gekisha_rom_enable); |
| 4232 | } |
| 4233 | |
| 4234 | static MACHINE_RESET( dynax ) |
| 4235 | { |
| 4236 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 4237 | |
| 4238 | if (devtag_get_device(machine, "msm") != NULL) |
| 4239 | MACHINE_RESET_CALL(adpcm); |
| 4240 | |
| 4241 | state->sound_irq = 0; |
| 4242 | state->vblank_irq = 0; |
| 4243 | state->blitter_irq = 0; |
| 4244 | state->blitter2_irq = 0; |
| 4245 | state->soundlatch_irq = 0; |
| 4246 | state->sound_vblank_irq = 0; |
| 4247 | |
| 4248 | state->input_sel = 0; |
| 4249 | state->dsw_sel = 0; |
| 4250 | state->keyb = 0; |
| 4251 | state->coins = 0; |
| 4252 | state->hopper = 0; |
| 4253 | state->hnoridur_bank = 0; |
| 4254 | state->palbank = 0; |
| 4255 | state->msm5205next = 0; |
| 4256 | state->resetkludge = 0; |
| 4257 | state->toggle = 0; |
| 4258 | state->toggle_cpu1 = 0; |
| 4259 | state->yarunara_clk_toggle = 0; |
| 4260 | state->soundlatch_ack = 0; |
| 4261 | state->soundlatch_full = 0; |
| 4262 | state->latch = 0; |
| 4263 | state->rombank = 0; |
| 4264 | state->tenkai_p5_val = 0; |
| 4265 | state->tenkai_6c = 0; |
| 4266 | state->tenkai_70 = 0; |
| 4267 | state->gekisha_val[0] = 0; |
| 4268 | state->gekisha_val[1] = 0; |
| 4269 | state->gekisha_rom_enable = 0; |
| 4270 | |
| 4271 | memset(state->palette_ram, 0, ARRAY_LENGTH(state->palette_ram)); |
| 4272 | } |
| 4273 | |
| 4274 | static MACHINE_START( hanamai ) |
| 4275 | { |
| 4276 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 4277 | memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x8000], 0x8000); |
| 4278 | |
| 4279 | MACHINE_START_CALL(dynax); |
| 4280 | } |
| 4281 | |
| 4282 | static MACHINE_START( hnoridur ) |
| 4283 | { |
| 4284 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 4285 | int bank_n = (memory_region_length(machine, "maincpu") - 0x10000) / 0x8000; |
| 4286 | |
| 4287 | memory_configure_bank(machine, "bank1", 0, bank_n, &ROM[0x10000], 0x8000); |
| 4288 | |
| 4289 | MACHINE_START_CALL(dynax); |
| 4290 | } |
| 4291 | |
| 4292 | static MACHINE_START( htengoku ) |
| 4293 | { |
| 4294 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 4295 | |
| 4296 | memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000); |
| 4297 | |
| 4298 | MACHINE_START_CALL(dynax); |
| 4299 | } |
| 4300 | |
| 4157 | 4301 | /*************************************************************************** |
| 4158 | 4302 | Hana no Mai |
| 4159 | 4303 | ***************************************************************************/ |
| r7640 | r7641 | |
| 4181 | 4325 | |
| 4182 | 4326 | static MACHINE_DRIVER_START( hanamai ) |
| 4183 | 4327 | |
| 4328 | /* driver data */ |
| 4329 | MDRV_DRIVER_DATA(dynax_state) |
| 4330 | |
| 4184 | 4331 | /* basic machine hardware */ |
| 4185 | 4332 | MDRV_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ |
| 4186 | 4333 | MDRV_CPU_PROGRAM_MAP(sprtmtch_mem_map) |
| 4187 | 4334 | MDRV_CPU_IO_MAP(hanamai_io_map) |
| 4188 | 4335 | MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ |
| 4189 | 4336 | |
| 4190 | | MDRV_MACHINE_RESET(adpcm) |
| 4337 | MDRV_MACHINE_START(hanamai) |
| 4338 | MDRV_MACHINE_RESET(dynax) |
| 4191 | 4339 | |
| 4192 | 4340 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4193 | 4341 | |
| r7640 | r7641 | |
| 4238 | 4386 | |
| 4239 | 4387 | static MACHINE_DRIVER_START( hnoridur ) |
| 4240 | 4388 | |
| 4389 | /* driver data */ |
| 4390 | MDRV_DRIVER_DATA(dynax_state) |
| 4391 | |
| 4241 | 4392 | /* basic machine hardware */ |
| 4242 | 4393 | MDRV_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ |
| 4243 | 4394 | MDRV_CPU_PROGRAM_MAP(hnoridur_mem_map) |
| 4244 | 4395 | MDRV_CPU_IO_MAP(hnoridur_io_map) |
| 4245 | 4396 | MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ |
| 4246 | 4397 | |
| 4247 | | MDRV_MACHINE_RESET(adpcm) |
| 4398 | MDRV_MACHINE_START(hnoridur) |
| 4399 | MDRV_MACHINE_RESET(dynax) |
| 4248 | 4400 | |
| 4249 | 4401 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4250 | 4402 | |
| r7640 | r7641 | |
| 4283 | 4435 | |
| 4284 | 4436 | static MACHINE_DRIVER_START( hjingi ) |
| 4285 | 4437 | |
| 4438 | /* driver data */ |
| 4439 | MDRV_DRIVER_DATA(dynax_state) |
| 4440 | |
| 4286 | 4441 | /* basic machine hardware */ |
| 4287 | 4442 | MDRV_CPU_ADD("maincpu",Z80, XTAL_22MHz / 4) |
| 4288 | 4443 | MDRV_CPU_PROGRAM_MAP(hjingi_mem_map) |
| 4289 | 4444 | MDRV_CPU_IO_MAP(hjingi_io_map) |
| 4290 | 4445 | MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ |
| 4291 | 4446 | |
| 4292 | | MDRV_MACHINE_RESET(adpcm) |
| 4447 | MDRV_MACHINE_START(hnoridur) |
| 4448 | MDRV_MACHINE_RESET(dynax) |
| 4293 | 4449 | |
| 4294 | 4450 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4295 | 4451 | |
| r7640 | r7641 | |
| 4341 | 4497 | |
| 4342 | 4498 | static MACHINE_DRIVER_START( sprtmtch ) |
| 4343 | 4499 | |
| 4500 | /* driver data */ |
| 4501 | MDRV_DRIVER_DATA(dynax_state) |
| 4502 | |
| 4344 | 4503 | /* basic machine hardware */ |
| 4345 | 4504 | MDRV_CPU_ADD("maincpu", Z80,22000000 / 4) /* 5.5MHz */ |
| 4346 | 4505 | MDRV_CPU_PROGRAM_MAP(sprtmtch_mem_map) |
| 4347 | 4506 | MDRV_CPU_IO_MAP(sprtmtch_io_map) |
| 4348 | 4507 | MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ |
| 4349 | 4508 | |
| 4509 | MDRV_MACHINE_START(hanamai) |
| 4510 | MDRV_MACHINE_RESET(dynax) |
| 4511 | |
| 4350 | 4512 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4351 | 4513 | |
| 4352 | 4514 | /* video hardware */ |
| r7640 | r7641 | |
| 4381 | 4543 | |
| 4382 | 4544 | static MACHINE_DRIVER_START( mjfriday ) |
| 4383 | 4545 | |
| 4546 | /* driver data */ |
| 4547 | MDRV_DRIVER_DATA(dynax_state) |
| 4548 | |
| 4384 | 4549 | /* basic machine hardware */ |
| 4385 | 4550 | MDRV_CPU_ADD("maincpu",Z80,24000000/4) /* 6 MHz? */ |
| 4386 | 4551 | MDRV_CPU_PROGRAM_MAP(sprtmtch_mem_map) |
| 4387 | 4552 | MDRV_CPU_IO_MAP(mjfriday_io_map) |
| 4388 | 4553 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 4389 | 4554 | |
| 4555 | MDRV_MACHINE_START(hanamai) |
| 4556 | MDRV_MACHINE_RESET(dynax) |
| 4557 | |
| 4390 | 4558 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4391 | 4559 | |
| 4392 | 4560 | /* video hardware */ |
| r7640 | r7641 | |
| 4434 | 4602 | |
| 4435 | 4603 | static INTERRUPT_GEN( yarunara_clock_interrupt ) |
| 4436 | 4604 | { |
| 4437 | | static int i=0; |
| 4438 | | i^=1; |
| 4605 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 4606 | state->yarunara_clk_toggle ^= 1; |
| 4439 | 4607 | |
| 4440 | | if (i==1) |
| 4441 | | { |
| 4442 | | dynax_sound_irq = 0; |
| 4443 | | } |
| 4608 | if (state->yarunara_clk_toggle == 1) |
| 4609 | state->sound_irq = 0; |
| 4444 | 4610 | else |
| 4445 | | { |
| 4446 | | dynax_sound_irq = 1; |
| 4447 | | } |
| 4611 | state->sound_irq = 1; |
| 4448 | 4612 | |
| 4449 | 4613 | sprtmtch_update_irq(device->machine); |
| 4450 | 4614 | } |
| r7640 | r7641 | |
| 4519 | 4683 | MSM5205_S48_4B /* 8 KHz, 4 Bits */ |
| 4520 | 4684 | }; |
| 4521 | 4685 | |
| 4686 | static MACHINE_START( jantouki ) |
| 4687 | { |
| 4688 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 4689 | UINT8 *MAIN = memory_region(machine, "maincpu"); |
| 4690 | UINT8 *SOUND = memory_region(machine, "soundcpu"); |
| 4691 | |
| 4692 | memory_configure_bank(machine, "bank1", 0, 0x10, &MAIN[0x8000], 0x8000); |
| 4693 | memory_configure_bank(machine, "bank2", 0, 12, &SOUND[0x8000], 0x8000); |
| 4694 | |
| 4695 | state->top_scr = devtag_get_device(machine, "top"); |
| 4696 | state->bot_scr = devtag_get_device(machine, "bottom"); |
| 4697 | |
| 4698 | MACHINE_START_CALL(dynax); |
| 4699 | } |
| 4700 | |
| 4522 | 4701 | static MACHINE_DRIVER_START( jantouki ) |
| 4523 | 4702 | |
| 4703 | /* driver data */ |
| 4704 | MDRV_DRIVER_DATA(dynax_state) |
| 4705 | |
| 4524 | 4706 | /* basic machine hardware */ |
| 4525 | 4707 | MDRV_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ |
| 4526 | 4708 | MDRV_CPU_PROGRAM_MAP(jantouki_mem_map) |
| r7640 | r7641 | |
| 4532 | 4714 | MDRV_CPU_IO_MAP(jantouki_sound_io_map) |
| 4533 | 4715 | MDRV_CPU_VBLANK_INT("top", jantouki_sound_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ |
| 4534 | 4716 | |
| 4535 | | MDRV_MACHINE_RESET(adpcm) |
| 4717 | MDRV_MACHINE_START(jantouki) |
| 4718 | MDRV_MACHINE_RESET(dynax) |
| 4536 | 4719 | |
| 4537 | 4720 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4538 | 4721 | |
| r7640 | r7641 | |
| 4587 | 4770 | /* It runs in IM 2, thus needs a vector on the data bus: |
| 4588 | 4771 | 0xfa and 0xfc are very similar, they should be triggered by the blitter |
| 4589 | 4772 | 0xf8 is vblank */ |
| 4590 | | void mjelctrn_update_irq(running_machine *machine) |
| 4773 | void mjelctrn_update_irq( running_machine *machine ) |
| 4591 | 4774 | { |
| 4592 | | dynax_blitter_irq = 1; |
| 4593 | | cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0xfa); |
| 4775 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 4776 | state->blitter_irq = 1; |
| 4777 | cpu_set_input_line_and_vector(state->maincpu, 0, HOLD_LINE, 0xfa); |
| 4594 | 4778 | } |
| 4595 | 4779 | |
| 4596 | 4780 | static INTERRUPT_GEN( mjelctrn_vblank_interrupt ) |
| 4597 | 4781 | { |
| 4782 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 4783 | |
| 4598 | 4784 | // This is a kludge to avoid losing blitter interrupts |
| 4599 | 4785 | // there should be a vblank ack mechanism |
| 4600 | | if (!dynax_blitter_irq) |
| 4786 | if (!state->blitter_irq) |
| 4601 | 4787 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8); |
| 4602 | 4788 | } |
| 4603 | 4789 | |
| r7640 | r7641 | |
| 4621 | 4807 | 0x42 and 0x44 are very similar, they should be triggered by the blitter |
| 4622 | 4808 | 0x40 is vblank |
| 4623 | 4809 | 0x46 is a periodic irq? */ |
| 4624 | | void neruton_update_irq(running_machine *machine) |
| 4810 | void neruton_update_irq( running_machine *machine ) |
| 4625 | 4811 | { |
| 4626 | | dynax_blitter_irq = 1; |
| 4627 | | cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0x42); |
| 4812 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 4813 | state->blitter_irq = 1; |
| 4814 | cpu_set_input_line_and_vector(state->maincpu, 0, HOLD_LINE, 0x42); |
| 4628 | 4815 | } |
| 4629 | 4816 | |
| 4630 | 4817 | static INTERRUPT_GEN( neruton_vblank_interrupt ) |
| 4631 | 4818 | { |
| 4819 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 4820 | |
| 4632 | 4821 | // This is a kludge to avoid losing blitter interrupts |
| 4633 | 4822 | // there should be a vblank ack mechanism |
| 4634 | | if (dynax_blitter_irq) return; |
| 4823 | if (state->blitter_irq) return; |
| 4635 | 4824 | |
| 4636 | | switch(cpu_getiloops(device)) |
| 4825 | switch (cpu_getiloops(device)) |
| 4637 | 4826 | { |
| 4638 | | case 0: cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x40); break; |
| 4639 | | default: cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x46); |
| 4827 | case 0: cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x40); break; |
| 4828 | default: cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x46); break; |
| 4640 | 4829 | } |
| 4641 | 4830 | } |
| 4642 | 4831 | |
| r7640 | r7641 | |
| 4658 | 4847 | 0x40 is vblank */ |
| 4659 | 4848 | static INTERRUPT_GEN( majxtal7_vblank_interrupt ) |
| 4660 | 4849 | { |
| 4850 | dynax_state *state = (dynax_state *)device->machine->driver_data; |
| 4851 | |
| 4661 | 4852 | // This is a kludge to avoid losing blitter interrupts |
| 4662 | 4853 | // there should be a vblank ack mechanism |
| 4663 | | if (dynax_blitter_irq) return; |
| 4854 | if (state->blitter_irq) return; |
| 4664 | 4855 | |
| 4665 | 4856 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x40); |
| 4666 | 4857 | } |
| r7640 | r7641 | |
| 4689 | 4880 | |
| 4690 | 4881 | static MACHINE_DRIVER_START( htengoku ) |
| 4691 | 4882 | |
| 4883 | /* driver data */ |
| 4884 | MDRV_DRIVER_DATA(dynax_state) |
| 4885 | |
| 4692 | 4886 | /* basic machine hardware */ |
| 4693 | 4887 | MDRV_CPU_ADD("maincpu",Z80,20000000 / 4) |
| 4694 | 4888 | MDRV_CPU_PROGRAM_MAP(yarunara_mem_map) |
| r7640 | r7641 | |
| 4696 | 4890 | MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ |
| 4697 | 4891 | MDRV_CPU_PERIODIC_INT(yarunara_clock_interrupt, 60) // RTC |
| 4698 | 4892 | |
| 4893 | MDRV_MACHINE_START(htengoku) |
| 4894 | MDRV_MACHINE_RESET(dynax) |
| 4895 | |
| 4699 | 4896 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4700 | 4897 | |
| 4701 | 4898 | /* video hardware */ |
| r7640 | r7641 | |
| 4733 | 4930 | |
| 4734 | 4931 | static INTERRUPT_GEN( tenkai_interrupt ) |
| 4735 | 4932 | { |
| 4736 | | switch(cpu_getiloops(device)) |
| 4933 | switch (cpu_getiloops(device)) |
| 4737 | 4934 | { |
| 4738 | | case 0: cpu_set_input_line(device, INPUT_LINE_IRQ0, HOLD_LINE); break; |
| 4739 | | case 1: cpu_set_input_line(device, INPUT_LINE_IRQ1, HOLD_LINE); break; |
| 4740 | | case 2: cpu_set_input_line(device, INPUT_LINE_IRQ2, HOLD_LINE); break; |
| 4935 | case 0: cpu_set_input_line(device, INPUT_LINE_IRQ0, HOLD_LINE); break; |
| 4936 | case 1: cpu_set_input_line(device, INPUT_LINE_IRQ1, HOLD_LINE); break; |
| 4937 | case 2: cpu_set_input_line(device, INPUT_LINE_IRQ2, HOLD_LINE); break; |
| 4741 | 4938 | } |
| 4742 | 4939 | } |
| 4743 | 4940 | |
| r7640 | r7641 | |
| 4750 | 4947 | DEVCB_NULL, DEVCB_HANDLER(tenkai_dswsel_w) // Write |
| 4751 | 4948 | }; |
| 4752 | 4949 | |
| 4950 | static STATE_POSTLOAD( tenkai_bank_postload ) |
| 4951 | { |
| 4952 | tenkai_update_rombank(machine); |
| 4953 | } |
| 4954 | |
| 4955 | static MACHINE_START( tenkai ) |
| 4956 | { |
| 4957 | MACHINE_START_CALL(dynax); |
| 4958 | |
| 4959 | state_save_register_postload(machine, tenkai_bank_postload, NULL); |
| 4960 | } |
| 4961 | |
| 4753 | 4962 | static MACHINE_DRIVER_START( tenkai ) |
| 4754 | 4963 | |
| 4964 | /* driver data */ |
| 4965 | MDRV_DRIVER_DATA(dynax_state) |
| 4966 | |
| 4755 | 4967 | /* basic machine hardware */ |
| 4756 | 4968 | MDRV_CPU_ADD("maincpu",TMP91640, 21472700 / 2) |
| 4757 | 4969 | MDRV_CPU_PROGRAM_MAP(tenkai_map) |
| 4758 | 4970 | MDRV_CPU_IO_MAP(tenkai_io_map) |
| 4759 | 4971 | MDRV_CPU_VBLANK_INT_HACK(tenkai_interrupt,3) |
| 4760 | 4972 | |
| 4973 | MDRV_MACHINE_START(tenkai) |
| 4974 | MDRV_MACHINE_RESET(dynax) |
| 4975 | |
| 4761 | 4976 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 4762 | 4977 | |
| 4763 | 4978 | /* video hardware */ |
| r7640 | r7641 | |
| 4797 | 5012 | Mahjong Gekisha |
| 4798 | 5013 | ***************************************************************************/ |
| 4799 | 5014 | |
| 5015 | static STATE_POSTLOAD( gekisha_bank_postload ) |
| 5016 | { |
| 5017 | dynax_state *state = (dynax_state *)machine->driver_data; |
| 5018 | |
| 5019 | gekisha_set_rombank(machine, state->rombank); |
| 5020 | } |
| 5021 | |
| 5022 | static MACHINE_START( gekisha ) |
| 5023 | { |
| 5024 | MACHINE_START_CALL(dynax); |
| 5025 | |
| 5026 | state_save_register_postload(machine, gekisha_bank_postload, NULL); |
| 5027 | } |
| 5028 | |
| 4800 | 5029 | static MACHINE_RESET( gekisha ) |
| 4801 | 5030 | { |
| 5031 | MACHINE_RESET_CALL(dynax); |
| 5032 | |
| 4802 | 5033 | gekisha_set_rombank(machine, 0); |
| 4803 | 5034 | } |
| 4804 | 5035 | |
| 4805 | 5036 | static MACHINE_DRIVER_START( gekisha ) |
| 4806 | 5037 | |
| 5038 | /* driver data */ |
| 5039 | MDRV_DRIVER_DATA(dynax_state) |
| 5040 | |
| 4807 | 5041 | /* basic machine hardware */ |
| 4808 | 5042 | MDRV_CPU_ADD("maincpu",TMP90841, XTAL_10MHz ) // ? |
| 4809 | 5043 | MDRV_CPU_PROGRAM_MAP(gekisha_map) |
| 4810 | 5044 | MDRV_CPU_IO_MAP(gekisha_io_map) |
| 4811 | 5045 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 4812 | 5046 | |
| 5047 | MDRV_MACHINE_START(gekisha) |
| 4813 | 5048 | MDRV_MACHINE_RESET(gekisha) |
| 4814 | 5049 | |
| 4815 | 5050 | MDRV_NVRAM_HANDLER(generic_0fill) |
| r7640 | r7641 | |
| 5183 | 5418 | UINT8 *src = (UINT8 *)memory_region(machine, "maincpu"); |
| 5184 | 5419 | int i; |
| 5185 | 5420 | |
| 5186 | | for (i=0;i<0x90000;i++) |
| 5421 | for (i = 0; i < 0x90000; i++) |
| 5187 | 5422 | { |
| 5188 | | src[i] = BITSWAP8(src[i],7,6,5,3,4,2,1,0); |
| 5423 | src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0); |
| 5189 | 5424 | |
| 5190 | 5425 | } |
| 5191 | 5426 | |
| 5192 | 5427 | src = (UINT8 *)memory_region(machine, "gfx1"); |
| 5193 | 5428 | |
| 5194 | | for (i=0;i<0xc0000;i++) |
| 5429 | for (i = 0; i < 0xc0000; i++) |
| 5195 | 5430 | { |
| 5196 | | src[i] = BITSWAP8(src[i],7,6,5,3,4,2,1,0); |
| 5431 | src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0); |
| 5197 | 5432 | |
| 5198 | 5433 | } |
| 5199 | 5434 | } |
| r7640 | r7641 | |
| 5203 | 5438 | /* Address lines scrambling on 1 z80 rom */ |
| 5204 | 5439 | int i; |
| 5205 | 5440 | UINT8 *gfx = (UINT8 *)memory_region(machine, "gfx1"); |
| 5206 | | UINT8 *rom = memory_region(machine, "maincpu") + 0x28000, |
| 5207 | | *end = rom + 0x10000; |
| 5208 | | for (;rom < end; rom+=8) |
| 5441 | UINT8 *rom = memory_region(machine, "maincpu") + 0x28000, *end = rom + 0x10000; |
| 5442 | for ( ; rom < end; rom += 8) |
| 5209 | 5443 | { |
| 5210 | 5444 | UINT8 temp[8]; |
| 5211 | 5445 | temp[0] = rom[0]; temp[1] = rom[1]; temp[2] = rom[2]; temp[3] = rom[3]; |
| r7640 | r7641 | |
| 5925 | 6159 | size_t size = memory_region_length(machine, "maincpu"); |
| 5926 | 6160 | UINT8 *rom1 = auto_alloc_array(machine, UINT8, size); |
| 5927 | 6161 | |
| 5928 | | memcpy(rom1,rom,size); |
| 6162 | memcpy(rom1, rom, size); |
| 5929 | 6163 | for (i = 0; i < size; i++) |
| 5930 | 6164 | rom[i] = BITSWAP8(rom1[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8, 1,6,5,4,3,2,7, 0)], 7,6, 1,4,3,2,5,0); |
| 5931 | 6165 | auto_free(machine, rom1); |
| r7640 | r7641 | |
| 5933 | 6167 | |
| 5934 | 6168 | static DRIVER_INIT( mjelct3a ) |
| 5935 | 6169 | { |
| 5936 | | int i,j; |
| 6170 | int i, j; |
| 5937 | 6171 | UINT8 *rom = memory_region(machine, "maincpu"); |
| 5938 | 6172 | size_t size = memory_region_length(machine, "maincpu"); |
| 5939 | 6173 | UINT8 *rom1 = auto_alloc_array(machine, UINT8, size); |
| 5940 | 6174 | |
| 5941 | | memcpy(rom1,rom,size); |
| 6175 | memcpy(rom1, rom, size); |
| 5942 | 6176 | for (i = 0; i < size; i++) |
| 5943 | 6177 | { |
| 5944 | 6178 | j = i & ~0x7e00; |
| r7640 | r7641 | |
| 6971 | 7205 | |
| 6972 | 7206 | ***************************************************************************/ |
| 6973 | 7207 | |
| 6974 | | GAME( 1989, hnkochou, 0, hanamai, hnkochou, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", 0 ) |
| 6975 | | GAME( 1988, hanamai, hnkochou, hanamai, hanamai, 0, ROT180, "Dynax", "Hana no Mai (Japan)", 0 ) |
| 6976 | | GAME( 1990, hjingi, 0, hjingi, hjingi, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", 0 ) |
| 6977 | | GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", 0 ) |
| 6978 | | GAME( 1989, drgpunch, 0, sprtmtch, sprtmtch, 0, ROT0, "Dynax", "Dragon Punch (Japan)", 0 ) |
| 6979 | | GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", 0 ) |
| 7208 | GAME( 1989, hnkochou, 0, hanamai, hnkochou, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", GAME_SUPPORTS_SAVE ) |
| 7209 | GAME( 1988, hanamai, hnkochou, hanamai, hanamai, 0, ROT180, "Dynax", "Hana no Mai (Japan)", GAME_SUPPORTS_SAVE ) |
| 7210 | GAME( 1990, hjingi, 0, hjingi, hjingi, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", GAME_SUPPORTS_SAVE ) |
| 7211 | GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", GAME_SUPPORTS_SAVE ) |
| 7212 | GAME( 1989, drgpunch, 0, sprtmtch, sprtmtch, 0, ROT0, "Dynax", "Dragon Punch (Japan)", GAME_SUPPORTS_SAVE ) |
| 7213 | GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", GAME_SUPPORTS_SAVE ) |
| 6980 | 7214 | /* these 4 are Korean hacks / bootlegs of Dragon Punch / Sports Match */ |
| 6981 | | GAME( 1994, maya, 0, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 1)", 0 ) // this set has backgrounds blacked out in attract |
| 6982 | | GAME( 1994, mayaa, maya, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 2)", 0 ) |
| 6983 | | GAME( 199?, inca, 0, sprtmtch, sprtmtch, maya, ROT0, "<unknown>", "Inca", 0 ) |
| 6984 | | GAME( 199?, blktouch, 0, sprtmtch, sprtmtch, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", 0 ) |
| 7215 | GAME( 1994, maya, 0, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 1)", GAME_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract |
| 7216 | GAME( 1994, mayaa, maya, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 2)", GAME_SUPPORTS_SAVE ) |
| 7217 | GAME( 199?, inca, 0, sprtmtch, sprtmtch, maya, ROT0, "<unknown>", "Inca", GAME_SUPPORTS_SAVE ) |
| 7218 | GAME( 199?, blktouch, 0, sprtmtch, sprtmtch, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", GAME_SUPPORTS_SAVE ) |
| 6985 | 7219 | |
| 6986 | | GAME( 1989, mjfriday, 0, mjfriday, mjfriday, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", 0 ) |
| 6987 | | GAME( 1989, gekisha, 0, gekisha, gekisha, 0, ROT180, "Dynax", "Mahjong Gekisha", 0 ) |
| 6988 | | GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", 0 ) |
| 6989 | | GAME( 1990, 7jigen, 0, nanajign, nanajign, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 6990 | | GAME( 1990, jantouki, 0, jantouki, jantouki, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", 0 ) |
| 6991 | | GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", 0 ) |
| 6992 | | GAME( 1991, yarunara, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", 0 ) |
| 6993 | | GAME( 1991, mjangels, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", 0 ) |
| 6994 | | GAME( 1992, quiztvqq, 0, yarunara, quiztvqq, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", 0 ) |
| 6995 | | GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", 0 ) |
| 6996 | | GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", 0 ) |
| 6997 | | GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", 0 ) |
| 6998 | | GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan, BOOTLEG)", 0 ) |
| 6999 | | GAME( 1990, majxtal7, 0, majxtal7, majxtal7, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)",GAME_IMPERFECT_GRAPHICS ) |
| 7000 | | GAME( 1990, neruton, 0, neruton, neruton, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 7001 | | GAME( 1991, hanayara, 0, yarunara, hanayara, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", 0 ) |
| 7002 | | GAME( 1991, mjcomv1, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", 0 ) |
| 7003 | | GAME( 1991, tenkai, 0, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen", 0 ) |
| 7004 | | GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen Part 2 (bootleg)", GAME_NOT_WORKING ) |
| 7005 | | GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg b)", 0 ) |
| 7006 | | GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg c)", 0 ) |
| 7007 | | GAME( 1991, tenkaid, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 1)", GAME_NOT_WORKING ) |
| 7008 | | GAME( 1991, tenkaie, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", 0 ) |
| 7009 | | GAME( 1992, htengoku, 0, htengoku, htengoku, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", 0 ) |
| 7010 | | GAME( 1994, mjreach, 0, tenkai, mjreach, mjreach, ROT0, "Dynax", "Mahjong Reach (bootleg)", 0 ) |
| 7011 | | GAME( 1995, shpeng, 0, sprtmtch, sprtmtch, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", GAME_WRONG_COLORS ) // not a dynax board. proms? |
| 7012 | | GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", GAME_NOT_WORKING ) |
| 7220 | GAME( 1989, mjfriday, 0, mjfriday, mjfriday, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", GAME_SUPPORTS_SAVE ) |
| 7221 | GAME( 1989, gekisha, 0, gekisha, gekisha, 0, ROT180, "Dynax", "Mahjong Gekisha", GAME_SUPPORTS_SAVE ) |
| 7222 | GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", GAME_SUPPORTS_SAVE ) |
| 7223 | GAME( 1990, 7jigen, 0, nanajign, nanajign, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 7224 | GAME( 1990, jantouki, 0, jantouki, jantouki, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", GAME_SUPPORTS_SAVE ) |
| 7225 | GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", GAME_SUPPORTS_SAVE ) |
| 7226 | GAME( 1991, yarunara, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", GAME_SUPPORTS_SAVE ) |
| 7227 | GAME( 1991, mjangels, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", GAME_SUPPORTS_SAVE ) |
| 7228 | GAME( 1992, quiztvqq, 0, yarunara, quiztvqq, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", GAME_SUPPORTS_SAVE ) |
| 7229 | GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", GAME_SUPPORTS_SAVE ) |
| 7230 | GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", GAME_SUPPORTS_SAVE ) |
| 7231 | GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", GAME_SUPPORTS_SAVE ) |
| 7232 | GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan, BOOTLEG)", GAME_SUPPORTS_SAVE ) |
| 7233 | GAME( 1990, majxtal7, 0, majxtal7, majxtal7, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 7234 | GAME( 1990, neruton, 0, neruton, neruton, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 7235 | GAME( 1991, hanayara, 0, yarunara, hanayara, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", GAME_SUPPORTS_SAVE ) |
| 7236 | GAME( 1991, mjcomv1, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", GAME_SUPPORTS_SAVE ) |
| 7237 | GAME( 1991, tenkai, 0, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen", GAME_SUPPORTS_SAVE ) |
| 7238 | GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen Part 2 (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
| 7239 | GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg b)", GAME_SUPPORTS_SAVE ) |
| 7240 | GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg c)", GAME_SUPPORTS_SAVE ) |
| 7241 | GAME( 1991, tenkaid, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 1)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
| 7242 | GAME( 1991, tenkaie, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", GAME_SUPPORTS_SAVE ) |
| 7243 | GAME( 1992, htengoku, 0, htengoku, htengoku, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", GAME_SUPPORTS_SAVE ) |
| 7244 | GAME( 1994, mjreach, 0, tenkai, mjreach, mjreach, ROT0, "Dynax", "Mahjong Reach (bootleg)", GAME_SUPPORTS_SAVE ) |
| 7245 | GAME( 1995, shpeng, 0, sprtmtch, sprtmtch, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) // not a dynax board. proms? |
| 7246 | GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
src/mame/drivers/funworld.c
| r7640 | r7641 | |
| 11 | 11 | |
| 12 | 12 | * Jolly Card (austrian), TAB-Austria, 1985. |
| 13 | 13 | * Jolly Card (3x3 deal), TAB-Austria, 1985. |
| 14 | | * Jolly Card Professional 2.0, Spale-Soft, 2000. |
| 14 | * Jolly Card Professional 2.0 (MZS Tech), MZS Tech, 1993. |
| 15 | * Jolly Card Professional 2.0 (Spale Soft), Spale Soft, 2000. |
| 15 | 16 | * Jolly Card (Evona Electronic), Evona Electronic 1998. |
| 16 | 17 | * Jolly Card (croatian, set 1), TAB-Austria, 1985. |
| 17 | 18 | * Jolly Card (croatian, set 2), Soft Design, 1993. |
| r7640 | r7641 | |
| 45 | 46 | * Royal Vegas Joker Card (slow deal), Funworld, 1993. |
| 46 | 47 | * Royal Vegas Joker Card (fast deal), Soft Design, 1993. |
| 47 | 48 | * Royal Vegas Joker Card (fast deal, english gfx), Soft Design, 1993. |
| 49 | * Royal Vegas Joker Card (fast deal, Mile), Mile, 1993. |
| 48 | 50 | * Jolly Joker (98bet, set 1). Impera, 198?. |
| 49 | 51 | * Jolly Joker (98bet, set 2). Impera, 198?. |
| 50 | 52 | * Jolly Joker (40bet, croatian hack), Impera, 198?. |
| 53 | * Multi Win (Ver.0167, encrypted), Funworld, 1992. |
| 51 | 54 | * Joker Card (Ver.A267BC, encrypted), Vesely Svet, 1993. |
| 52 | 55 | * Mongolfier New (italian), bootleg, 199?. |
| 53 | 56 | * Soccer New (italian), bootleg, 199?. |
| 54 | 57 | * Saloon (french, encrypted), unknown, 199?. |
| 58 | * Fun World Quiz (austrian), Funworld, 198?. |
| 55 | 59 | |
| 56 | 60 | |
| 57 | 61 | *********************************************************************************** |
| r7640 | r7641 | |
| 206 | 210 | Going through the code, there's not any NVRAM initialization routine through service 1 & 2. |
| 207 | 211 | |
| 208 | 212 | |
| 209 | | * Jolly Card Professional 2.0 (Spale-Soft) |
| 213 | * Jolly Card Professional 2.0 (MZS Tech & Spale Soft) |
| 210 | 214 | |
| 211 | 215 | Each 1st boot, this game show a generated code. You must enter this code in a DOS program to |
| 212 | 216 | get the input codes necessary to allow boot the game. |
| r7640 | r7641 | |
| 214 | 218 | This set is one of the most wanted for customers because is a real SCAM. |
| 215 | 219 | The program has 2 hidden menues that allow change parameters without knowledge of the players. |
| 216 | 220 | |
| 221 | See more at ROM_LOAD section... |
| 217 | 222 | |
| 223 | |
| 218 | 224 | * Jolly Card (Evona Electronic) |
| 219 | 225 | |
| 220 | 226 | This set has some hidden features. |
| r7640 | r7641 | |
| 264 | 270 | "sta ($ZP)" instead of Y indexed. (like instruction 0x92 in stock 65c02's). |
| 265 | 271 | |
| 266 | 272 | |
| 267 | | * Jolly Joker (Impera, 50bet) |
| 273 | * Jolly Joker (Impera) |
| 268 | 274 | |
| 269 | 275 | To boot this game for 1st time, DSW should be in the following position: |
| 270 | 276 | 1=ON 2=OFF 3=ON 4=OFF 5=OFF 6=ON 7=ON 8=OFF |
| r7640 | r7641 | |
| 273 | 279 | When numbers start to fill the screen, press RESET (key F3) again to start the game. |
| 274 | 280 | |
| 275 | 281 | |
| 282 | * (multi) Joker Card (Vesely). |
| 283 | * Multi Win (Funworld) |
| 284 | |
| 285 | These sets seems to run in the same modified hardware. |
| 286 | They are encrypted, and have a second program rom with unknown code/purposes. |
| 287 | |
| 288 | |
| 276 | 289 | * Mongolfier New |
| 277 | 290 | * Soccer New |
| 278 | 291 | |
| r7640 | r7641 | |
| 298 | 311 | This game should be moved to a new driver in a near future, as soon as we know a bit more about it. |
| 299 | 312 | |
| 300 | 313 | |
| 314 | * Fun World Quiz |
| 301 | 315 | |
| 316 | Beschreibung / Description |
| 317 | -------------------------- |
| 318 | |
| 319 | F?r OES 5,-- Einwurf werden 3 Kredite gegeben. F?r einen Kredit bekommt der Spieler |
| 320 | 500 Spielpunkte. Bei jeder Frage kann der Spieler 100, 500 oder alle Punkte einsetzen. |
| 321 | Wird die Frage richtig beantwortet, wird der Einsatz aufaddiert. Erreicht der Spieler |
| 322 | nach 5 Fragen mehr als 2500 Punkte, bekommt er Bonusfragen. Das Spiel endet bei einer |
| 323 | falschen Beantwortung der Frage. |
| 324 | |
| 325 | Insertion of ATS 5,- (Austrian Schilling coin) yields 5 credits. For 1 credit a player |
| 326 | receives 500 points. At each question a player can bet 100, 500 or all points. If a |
| 327 | question is answered correctly, the bet is added to the points. If a player reaches |
| 328 | more than 2500 points after 5 questions, he gets bonus questions. The game is over |
| 329 | after an incorrect answer. |
| 330 | |
| 331 | Besides notes.... |
| 332 | |
| 333 | This machine is meant to work as "amusement", with high scores like another regular arcade. |
| 334 | You can set it as "bet mode", allowing to choose the amount of points to play, but can't be |
| 335 | turned to gambling mode (no payout, keyout, etc) for pubs, etc... |
| 336 | |
| 337 | In bookkeeping mode (DIP switch #1): |
| 338 | |
| 339 | Keep joystick left to clear bookkeeping. |
| 340 | Keep joystick up to clear high scores. |
| 341 | Keep joystick down to clear credits. |
| 342 | Keep joystick right to exit bookkeeping. |
| 343 | |
| 344 | If the game has credits loaded, the bookkeeping mode will start |
| 345 | as soon as the current game ends. |
| 346 | |
| 347 | |
| 348 | |
| 302 | 349 | *********************************************************************************** |
| 303 | 350 | |
| 304 | 351 | |
| r7640 | r7641 | |
| 372 | 419 | - Cleaned up and renamed all sets. Made parent-clone relationship. |
| 373 | 420 | |
| 374 | 421 | [2005/12/15] |
| 375 | | - Corrected CPU freq (2 MHz) in cuoreuno and elephfam (both have R65c02P2). |
| 422 | - Corrected CPU freq (2 MHz) in cuoreuno and elephfam (both have R65C02P2). |
| 376 | 423 | (I suspect more games must have their CPU running at 2 MHz). |
| 377 | 424 | - Corrected videoram and colorram offsets in cuoreuno and elephfam. |
| 378 | 425 | - To initialize the NVRAM in cuoreuno and elephfam: |
| r7640 | r7641 | |
| 405 | 452 | - Splitted the driver to driver/video. |
| 406 | 453 | |
| 407 | 454 | - Corrected the screen size and visible area to magiccrd based on mc6845 registers. |
| 408 | | - Added the remaining 2 GFX planes to magiccrd, but GFX are imperfect (bad decode or bad dump?). Color PROM need to be dumped. |
| 455 | - Added the remaining 2 GFX planes to magiccrd, but GFX are imperfect (bad decode or bad dump?). |
| 456 | Color PROM need to be dumped. |
| 409 | 457 | - Royalcrd: Added all inputs and DIP switches. |
| 410 | 458 | Fixed memory map, gfx decode |
| 411 | 459 | Corrected screen size and visible area based on mc6845 registers. |
| r7640 | r7641 | |
| 420 | 468 | - Fixed CPU clock to 2MHz. in all remaining games. |
| 421 | 469 | - Fixed ay8910 frequency based on elephfam audio. |
| 422 | 470 | - Fixed ay8910 volume in all games to avoid clipping. |
| 423 | | - Reworked jolycdcr inputs: The game was designed to work only with remote credits. After nvram init, set the payout dip to "manual". |
| 424 | | - Reworked jolycdit inputs: After nvram init, set the payout dip to "manual" to allow work the remote mode. |
| 425 | | - Set jolycdat as bigdeal clone. The game has the same layout/behaviour instead of the normal jolly card games, even when are sharing gfx roms. |
| 471 | - Reworked jolycdcr inputs: The game was designed to work only with remote credits. |
| 472 | After nvram init, set the payout dip to "manual". |
| 473 | - Reworked jolycdit inputs: After nvram init, set the payout dip |
| 474 | to "manual" to allow work the remote mode. |
| 475 | - Set jolycdat as bigdeal clone. The game has the same layout/behaviour instead of the normal |
| 476 | jolly card games, even when they are sharing gfx roms. |
| 426 | 477 | - Added the bipolar PROM and GAL to jolycdit. Confirmed the GFX ROMs as good dumps. |
| 427 | | - Added an alternate set of Elephant Family. This one lacks of test mode and doesn't allow to switch between min-max bets through stop1. |
| 428 | | - Added color PROMs to cuoreuno and elephfam sets but still no routed. Also added PLDs (protected, bad dumps). |
| 478 | - Added an alternate set of Elephant Family. This one lacks of test mode and doesn't allow |
| 479 | to switch between min-max bets through stop1. |
| 480 | - Added color PROMs to cuoreuno and elephfam sets but still no routed. |
| 481 | Also added PLDs (protected, bad dumps). |
| 429 | 482 | - Corrected jollycrd screen size and visible area based on mc6845 registers. |
| 430 | | - Hooked, wired and decoded the color prom in jollycrd sets based on jolycdit redump. Now colors are perfect. |
| 431 | | - Wired and decoded the color prom in cuoreuno and elephfam sets. Now colors are perfect. |
| 483 | - Hooked, wired and decoded the color prom in jollycrd sets based on jolycdit redump. |
| 484 | Now colors are perfect. |
| 485 | - Wired and decoded the color prom in cuoreuno and elephfam sets. |
| 486 | Now colors are perfect. |
| 432 | 487 | - Wired and decoded the color prom in royalcrd. Now colors are perfect. |
| 433 | 488 | - Hooked, wired and decoded the color prom in bigdeal sets based on jolycdat (jollycrd palette). |
| 434 | | Colors seems to be correct, but need to check against the real thing. Flagged as IMPERFECT_COLORS till a color PROM dump appear. |
| 489 | Colors seems to be correct, but need to check against the real thing. |
| 490 | Flagged as IMPERFECT_COLORS till a color PROM dump appear. |
| 435 | 491 | - Decrypted jolycdit gfx roms. |
| 436 | 492 | - Added set Jolly Card (Austria, encrypted). |
| 437 | 493 | - Decrypted jolycdae and managed the planes to show correct colors. The set is working properly. |
| r7640 | r7641 | |
| 543 | 599 | [2008/12/01] |
| 544 | 600 | - Decripted saloon's program, graphics and color PROM. |
| 545 | 601 | - Created a new memory map and machine driver for saloon. |
| 546 | | - Removed set jolycdae (it's not coming from a real board). |
| 602 | - Removed set jolycdae (not coming from a real board). |
| 547 | 603 | - Renamed the sets magiccrd, magiccda and magiccdb, to magicrd2, magicd2a and magicd2b. |
| 548 | 604 | - Updated technical notes. |
| 549 | 605 | |
| r7640 | r7641 | |
| 588 | 644 | - Changed default settings for some games, now that NVRAM is |
| 589 | 645 | loaded externally. |
| 590 | 646 | |
| 647 | [2010/03/15] |
| 648 | - Removed all hacks in the rom load section. Now the involved sets |
| 649 | are properly loaded in the same way the hardware does. |
| 650 | - Replaced hardcoded values on graphics decode routines with proper |
| 651 | RGN_FRAC calculations. |
| 652 | - Fixed graphics bitplanes to involved games. |
| 653 | - Added more hardware/technical info. |
| 654 | - Modify the mongolnw machine driver. Now can see it starts. |
| 655 | - Added Multi Win, from Funworld. The set is encrypted and use a |
| 656 | custom CPU. Seems similar hardware than (multi) Joker Card. |
| 657 | - Added Fun World Quiz. Needs proper banking, and both graphics and |
| 658 | bipolar PROM redumps. |
| 659 | - Added Fun World Quiz description, and hardware notes. |
| 591 | 660 | |
| 661 | - Improved inputs for Fun World Quiz. |
| 662 | - Proper handlers and banking for Fun World Quiz questions. |
| 663 | - Partial decryption for royalcdc and multiwin. |
| 664 | - Complete Fun World Quiz DIP switches with dip locations. |
| 665 | - Promoted Fun World Quiz to working state. |
| 666 | - Added Fun World Quiz bookkeeping instructions notes. |
| 667 | - Turned lamps off as default state for all supported game. |
| 668 | - Changed default button-lamps layout to selective per game, |
| 669 | since some games need different one, and some games lack |
| 670 | of lamps at all. |
| 671 | |
| 672 | - Reworked button-lamps layouts per game. Cleaned-up the code. |
| 673 | - Added specific button-lamps layout for bigdeal games. |
| 674 | - Added specific button-lamps layout for royalcrd & jolycdit, |
| 675 | but there is a bug in the d-up select code that lights the |
| 676 | wrong lamp. This is a leftover from jollycrd routines. |
| 677 | - Flagged vegasfte as GAME_NOT_WORKING, since is not receiving |
| 678 | any coins or remote credits anymore. |
| 679 | |
| 680 | [2010/03/21] |
| 681 | - Added dual-state palette (addressable through PLDs). |
| 682 | This allow to choose which half of the palette will be addressed. |
| 683 | - Splitted the main machine driver to cover both palette states. |
| 684 | - Reworked inputs / DIP switches for vegasslw, vagasfst and vegasfte. |
| 685 | - Created new default NVRAM for Royal Vegas Joker Card sets. |
| 686 | These need to be configurated to be valid ones. Now vegasfte can |
| 687 | receive remote credits, and all three in the family have valid |
| 688 | min-max bet value and payout. |
| 689 | - Removed the not working flag from vegasfte. |
| 690 | - Improved colors for Big Deal sets. |
| 691 | - Correct colors for Royal Vegas Joker Card sets. |
| 692 | |
| 693 | - Added a second set of Jolly Card Professional. |
| 694 | Documented the code differences. |
| 695 | - Added another Royal Vegas Joker Card set, from Mile. |
| 696 | These sets aren't intended to work with coins. Only remote credits |
| 697 | are allowed. There are external modules that can manage up to 4 |
| 698 | machines simultaneously, adding/removing/watching credits. |
| 699 | - Added default NVRAM to the above sets. |
| 700 | - Added proper inputs and DIP switches to vegasmil. |
| 701 | - Replaced the jolyc980 default NVRAM with one totally clean. |
| 702 | Temporal and total meters are cleared to zero. |
| 703 | |
| 704 | |
| 705 | |
| 592 | 706 | *** TO DO *** |
| 593 | 707 | |
| 594 | | - Figure out the royalcdc & jokercrd encryption. |
| 708 | - Figure out the royalcdc, jokercrd and multiwin encryption. |
| 595 | 709 | - Figure out the remaining PIA connections for almost all games. |
| 596 | 710 | - Fix Saloon and move it to its own driver. |
| 597 | 711 | - Fix the imperfect sound in Magic Card II. |
| r7640 | r7641 | |
| 599 | 713 | and Royal Card Professional 2.0 to get the proper codes to boot. |
| 600 | 714 | - Analyze the unknown writes to $2000/$4000 in some games. |
| 601 | 715 | - Check for the reads to the ay8910 output ports in some games. |
| 602 | | - Figure out the MCU in monglfir and soccernw. |
| 603 | | - Correct the ROM_REGION in some games to allow the use of RGN_FRAC |
| 716 | - Implement the MCU in monglfir and soccernw. |
| 604 | 717 | |
| 605 | 718 | |
| 606 | 719 | ***********************************************************************************/ |
| r7640 | r7641 | |
| 613 | 726 | #include "video/mc6845.h" |
| 614 | 727 | #include "machine/6821pia.h" |
| 615 | 728 | #include "sound/ay8910.h" |
| 616 | | #include "funworld.lh" |
| 729 | #include "jollycrd.lh" |
| 730 | #include "bigdeal.lh" |
| 731 | #include "royalcrd.lh" |
| 617 | 732 | |
| 618 | 733 | /* from video */ |
| 619 | 734 | extern UINT8* funworld_videoram; |
| r7640 | r7641 | |
| 633 | 748 | |
| 634 | 749 | static WRITE8_DEVICE_HANDLER(funworld_lamp_a_w) |
| 635 | 750 | { |
| 636 | | coin_counter_w(device->machine, 0, data & 0x01); /* credit in counter */ |
| 637 | 751 | |
| 638 | 752 | output_set_lamp_value(0, 1-((data >> 1) & 1)); /* button hold1 and */ |
| 639 | 753 | output_set_lamp_value(2, 1-((data >> 1) & 1)); /* hold3 (see pinouts) */ |
| 640 | 754 | |
| 641 | | coin_counter_w(device->machine, 7, data & 0x04); /* credit out counter, mapped as coin 8 */ |
| 642 | | |
| 643 | 755 | output_set_lamp_value(1, 1-((data >> 3) & 1)); /* button hold2/low */ |
| 756 | output_set_lamp_value(3, (data >> 7) & 1); /* button hold4/high */ |
| 644 | 757 | output_set_lamp_value(5, 1-((data >> 5) & 1)); /* button 6 (collect/cancel) */ |
| 645 | | output_set_lamp_value(3, (data >> 7) & 1); /* button hold4/high */ |
| 758 | |
| 759 | coin_counter_w(device->machine, 0, data & 0x01); /* credit in counter */ |
| 760 | coin_counter_w(device->machine, 7, data & 0x04); /* credit out counter, mapped as coin 8 */ |
| 761 | |
| 762 | // popmessage("Lamps A: %02X", data); |
| 646 | 763 | } |
| 647 | 764 | |
| 648 | 765 | static WRITE8_DEVICE_HANDLER(funworld_lamp_b_w) |
| 649 | 766 | { |
| 650 | 767 | output_set_lamp_value(4, (data >> 0) & 1); /* button hold5/bet */ |
| 651 | 768 | output_set_lamp_value(6, (data >> 1) & 1); /* button 7 (start/play) */ |
| 769 | |
| 770 | // popmessage("Lamps B: %02X", data); |
| 652 | 771 | } |
| 653 | 772 | |
| 654 | 773 | static WRITE8_DEVICE_HANDLER(pia1_ca2_w) |
| r7640 | r7641 | |
| 679 | 798 | AM_RANGE(0xc000, 0xffff) AM_ROM |
| 680 | 799 | ADDRESS_MAP_END |
| 681 | 800 | |
| 801 | static UINT8 funquiz_question_bank = 0x80; |
| 802 | |
| 803 | static READ8_HANDLER( questions_r ) |
| 804 | { |
| 805 | UINT8* quiz = memory_region(space->machine,"questions"); |
| 806 | int extraoffset = ((funquiz_question_bank & 0x1f) * 0x8000); |
| 807 | |
| 808 | // if 0x80 is set, read the 2nd half of the question rom (contains header info) |
| 809 | if (funquiz_question_bank & 0x80) extraoffset += 0x4000; |
| 810 | |
| 811 | return quiz[offset + extraoffset]; |
| 812 | } |
| 813 | |
| 814 | static WRITE8_HANDLER( question_bank_w ) |
| 815 | { |
| 816 | // printf("question bank write %02x\n", data); |
| 817 | funquiz_question_bank = data; |
| 818 | } |
| 819 | |
| 820 | static ADDRESS_MAP_START( funquiz_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 821 | AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 822 | AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) |
| 823 | AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w) |
| 824 | AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_r) |
| 825 | AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_address_data_w) |
| 826 | AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_address_w) |
| 827 | AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w) |
| 828 | |
| 829 | AM_RANGE(0x1800, 0x1800) AM_WRITE(question_bank_w) |
| 830 | |
| 831 | AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_BASE(&funworld_videoram) |
| 832 | AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_BASE(&funworld_colorram) |
| 833 | AM_RANGE(0x4000, 0x7fff) AM_READ(questions_r) |
| 834 | |
| 835 | AM_RANGE(0xc000, 0xffff) AM_ROM |
| 836 | ADDRESS_MAP_END |
| 837 | |
| 682 | 838 | static ADDRESS_MAP_START( magicrd2_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 683 | 839 | AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 684 | 840 | AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) |
| r7640 | r7641 | |
| 710 | 866 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 711 | 867 | ADDRESS_MAP_END |
| 712 | 868 | |
| 713 | | static ADDRESS_MAP_START( royalmcu_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 714 | | AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 715 | | AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) |
| 716 | | AM_RANGE(0x2a00, 0x2a03) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w) |
| 717 | | AM_RANGE(0x2c00, 0x2c00) AM_DEVREAD("ay8910", ay8910_r) |
| 718 | | AM_RANGE(0x2c00, 0x2c01) AM_DEVWRITE("ay8910", ay8910_address_data_w) |
| 719 | | AM_RANGE(0x2e00, 0x2e00) AM_DEVWRITE("crtc", mc6845_address_w) |
| 720 | | AM_RANGE(0x2e01, 0x2e01) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w) |
| 721 | | AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_BASE(&funworld_videoram) |
| 722 | | AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_BASE(&funworld_colorram) |
| 723 | | AM_RANGE(0x6000, 0xffff) AM_ROM |
| 724 | | ADDRESS_MAP_END |
| 725 | | |
| 726 | 869 | static ADDRESS_MAP_START( saloon_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 727 | 870 | AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) |
| 728 | 871 | AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") |
| r7640 | r7641 | |
| 1422 | 1565 | PORT_DIPSETTING( 0x80, "Manual Payout SW" ) |
| 1423 | 1566 | INPUT_PORTS_END |
| 1424 | 1567 | |
| 1568 | static INPUT_PORTS_START( vegasslw ) |
| 1569 | PORT_START("IN0") |
| 1570 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Remote") |
| 1571 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1") |
| 1572 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Kasiraj (Take)") |
| 1573 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Kockaj (Double)") |
| 1574 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Ulog (Bet)") |
| 1575 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Buch (Service1)") |
| 1576 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Einstellen (Service2)") |
| 1577 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Velika (High)") |
| 1578 | |
| 1579 | PORT_START("IN1") |
| 1580 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Mala (Low)") |
| 1581 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3") |
| 1582 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Auszahlen") PORT_CODE(KEYCODE_E) |
| 1583 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1584 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Switch") PORT_CODE(KEYCODE_H) |
| 1585 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 1586 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1587 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Abschreiben (Payout)") |
| 1588 | |
| 1589 | PORT_START("IN2") |
| 1590 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1591 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1592 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1593 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1594 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1595 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1596 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1597 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1598 | |
| 1599 | PORT_START("DSW") |
| 1600 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8") |
| 1601 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 1602 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1603 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7") |
| 1604 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 1605 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1606 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6") |
| 1607 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1608 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1609 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") |
| 1610 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1611 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1612 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") |
| 1613 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 1614 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1615 | PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3") |
| 1616 | PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */ |
| 1617 | PORT_DIPSETTING( 0x20, "Without Joker" ) |
| 1618 | PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2") |
| 1619 | PORT_DIPSETTING( 0x00, "Auto Hold" ) |
| 1620 | PORT_DIPSETTING( 0x40, "No Auto Hold" ) |
| 1621 | |
| 1622 | /* after nvram init, set the following one to 'manual' |
| 1623 | to allow the remote credits mode to work */ |
| 1624 | PORT_DIPNAME( 0x80, 0x00, "Payout" ) PORT_DIPLOCATION("SW1:1") |
| 1625 | PORT_DIPSETTING( 0x00, "Hopper" ) |
| 1626 | PORT_DIPSETTING( 0x80, "Manual Payout SW" ) |
| 1627 | INPUT_PORTS_END |
| 1628 | |
| 1629 | static INPUT_PORTS_START( vegasfst ) |
| 1630 | PORT_START("IN0") |
| 1631 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Remote") |
| 1632 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1") |
| 1633 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Prihoduj (Take)") |
| 1634 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Dupliraj (Double)") |
| 1635 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Ulog (Bet)") |
| 1636 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Buch (Service1)") |
| 1637 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Einstellen (Service2)") |
| 1638 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Velika (High)") |
| 1639 | |
| 1640 | PORT_START("IN1") |
| 1641 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Mala (Low)") |
| 1642 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3") |
| 1643 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Auszahlen") PORT_CODE(KEYCODE_E) |
| 1644 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1645 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Switch") PORT_CODE(KEYCODE_H) |
| 1646 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 1647 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1648 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Abschreiben (Payout)") |
| 1649 | |
| 1650 | PORT_START("IN2") |
| 1651 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1652 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1653 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1654 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1655 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1656 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1657 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1658 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1659 | |
| 1660 | PORT_START("DSW") |
| 1661 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8") |
| 1662 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 1663 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1664 | PORT_DIPNAME( 0x02, 0x02, "Remote" ) PORT_DIPLOCATION("SW1:7") |
| 1665 | PORT_DIPSETTING( 0x00, "100 Points/Pulse" ) |
| 1666 | PORT_DIPSETTING( 0x02, "1000 Points/Pulse" ) |
| 1667 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6") |
| 1668 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1669 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1670 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") |
| 1671 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1672 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1673 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") |
| 1674 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 1675 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1676 | PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3") |
| 1677 | PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */ |
| 1678 | PORT_DIPSETTING( 0x20, "Without Joker" ) |
| 1679 | PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2") |
| 1680 | PORT_DIPSETTING( 0x00, "Auto Hold" ) |
| 1681 | PORT_DIPSETTING( 0x40, "No Auto Hold" ) |
| 1682 | |
| 1683 | /* after nvram init, set the following one to 'manual' |
| 1684 | to allow the remote credits mode to work */ |
| 1685 | PORT_DIPNAME( 0x80, 0x80, "Payout" ) PORT_DIPLOCATION("SW1:1") |
| 1686 | PORT_DIPSETTING( 0x00, "Hopper" ) |
| 1687 | PORT_DIPSETTING( 0x80, "Manual Payout SW" ) |
| 1688 | INPUT_PORTS_END |
| 1689 | |
| 1690 | static INPUT_PORTS_START( vegasfte ) |
| 1691 | PORT_START("IN0") |
| 1692 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Remote") |
| 1693 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1") |
| 1694 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Kasiraj (Take)") |
| 1695 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Kockaj (Double)") |
| 1696 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / +Ulog (Add Bet)") |
| 1697 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Buch (Service1)") |
| 1698 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Einstellen (Service2)") |
| 1699 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Velika (High) / -Ulog (Remove Bet)") |
| 1700 | |
| 1701 | PORT_START("IN1") |
| 1702 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Mala (Low)") |
| 1703 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3") |
| 1704 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Auszahlen") PORT_CODE(KEYCODE_E) |
| 1705 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1706 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Switch") PORT_CODE(KEYCODE_H) |
| 1707 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 1708 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1709 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Abschreiben (Payout)") |
| 1710 | |
| 1711 | PORT_START("IN2") |
| 1712 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1713 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1714 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1715 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1716 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1717 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1718 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1719 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1720 | |
| 1721 | PORT_START("DSW") |
| 1722 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8") |
| 1723 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 1724 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1725 | PORT_DIPNAME( 0x02, 0x02, "Remote" ) PORT_DIPLOCATION("SW1:7") |
| 1726 | PORT_DIPSETTING( 0x00, "100 Points/Pulse" ) |
| 1727 | PORT_DIPSETTING( 0x02, "1000 Points/Pulse" ) |
| 1728 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6") |
| 1729 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1730 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1731 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") |
| 1732 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1733 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1734 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") |
| 1735 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 1736 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1737 | PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3") |
| 1738 | PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */ |
| 1739 | PORT_DIPSETTING( 0x20, "Without Joker" ) |
| 1740 | PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2") |
| 1741 | PORT_DIPSETTING( 0x00, "Auto Hold" ) |
| 1742 | PORT_DIPSETTING( 0x40, "No Auto Hold" ) |
| 1743 | |
| 1744 | /* after nvram init, set the following one to 'manual' |
| 1745 | to allow the remote credits mode to work */ |
| 1746 | PORT_DIPNAME( 0x80, 0x80, "Payout" ) PORT_DIPLOCATION("SW1:1") |
| 1747 | PORT_DIPSETTING( 0x00, "Hopper" ) |
| 1748 | PORT_DIPSETTING( 0x80, "Manual Payout SW" ) |
| 1749 | INPUT_PORTS_END |
| 1750 | |
| 1751 | static INPUT_PORTS_START( vegasmil ) |
| 1752 | PORT_START("IN0") |
| 1753 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Remote") |
| 1754 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1") |
| 1755 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Prihoduj (Take)") |
| 1756 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Dupliraj (Double)") |
| 1757 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Ulog (Bet)") |
| 1758 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Buch (Service1)") |
| 1759 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Einstellen (Service2)") |
| 1760 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Velika (High)") |
| 1761 | |
| 1762 | PORT_START("IN1") |
| 1763 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Mala (Low)") |
| 1764 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3") |
| 1765 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Auszahlen") PORT_CODE(KEYCODE_E) |
| 1766 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1767 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Switch") PORT_CODE(KEYCODE_H) |
| 1768 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 1769 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1770 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Abschreiben (Payout)") |
| 1771 | |
| 1772 | PORT_START("IN2") |
| 1773 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1774 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1775 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1776 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1777 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1778 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1779 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1780 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1781 | |
| 1782 | PORT_START("DSW") |
| 1783 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8") |
| 1784 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 1785 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1786 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7") |
| 1787 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 1788 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1789 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6") |
| 1790 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1791 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1792 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") |
| 1793 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1794 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1795 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") |
| 1796 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 1797 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1798 | PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3") |
| 1799 | PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */ |
| 1800 | PORT_DIPSETTING( 0x20, "Without Joker" ) |
| 1801 | PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2") |
| 1802 | PORT_DIPSETTING( 0x00, "Auto Hold" ) |
| 1803 | PORT_DIPSETTING( 0x40, "No Auto Hold" ) |
| 1804 | |
| 1805 | /* after nvram init, set the following one to 'manual' |
| 1806 | to allow the remote credits mode to work */ |
| 1807 | PORT_DIPNAME( 0x80, 0x00, "Payout" ) PORT_DIPLOCATION("SW1:1") |
| 1808 | PORT_DIPSETTING( 0x00, "Hopper" ) |
| 1809 | PORT_DIPSETTING( 0x80, "Manual Payout SW" ) |
| 1810 | INPUT_PORTS_END |
| 1811 | |
| 1812 | |
| 1425 | 1813 | static INPUT_PORTS_START( saloon ) |
| 1426 | 1814 | PORT_START("IN0") |
| 1427 | 1815 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-1") PORT_CODE(KEYCODE_1) |
| r7640 | r7641 | |
| 1490 | 1878 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1491 | 1879 | INPUT_PORTS_END |
| 1492 | 1880 | |
| 1881 | static INPUT_PORTS_START( funquiz ) |
| 1882 | PORT_START("IN0") |
| 1883 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-1") PORT_CODE(KEYCODE_Q) |
| 1884 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) // start? |
| 1885 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) // start? |
| 1886 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START3 ) // start? |
| 1887 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START4 ) // start or clear? |
| 1888 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-6") PORT_CODE(KEYCODE_W) |
| 1889 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-7") PORT_CODE(KEYCODE_E) |
| 1890 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY // joystick right, enter & exit bookkeeping??? |
| 1493 | 1891 | |
| 1892 | PORT_START("IN1") |
| 1893 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY // joystick left |
| 1894 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY // joystick up |
| 1895 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY // joystick down |
| 1896 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-4") PORT_CODE(KEYCODE_R) |
| 1897 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-5") PORT_CODE(KEYCODE_T) |
| 1898 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // coin 2 |
| 1899 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-7") PORT_CODE(KEYCODE_Y) |
| 1900 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-8") PORT_CODE(KEYCODE_U) |
| 1901 | |
| 1902 | PORT_START("IN2") |
| 1903 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // coin 1 |
| 1904 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-2") PORT_CODE(KEYCODE_A) |
| 1905 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-3") PORT_CODE(KEYCODE_S) |
| 1906 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-4") PORT_CODE(KEYCODE_D) |
| 1907 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-5") PORT_CODE(KEYCODE_F) |
| 1908 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-6") PORT_CODE(KEYCODE_G) |
| 1909 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-7") PORT_CODE(KEYCODE_H) |
| 1910 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-8") PORT_CODE(KEYCODE_J) |
| 1911 | |
| 1912 | PORT_START("DSW") |
| 1913 | /* |
| 1914 | 1 | Buchhaltung / Bookkeeping. |
| 1915 | 2 | Nicht verwendet / Not used. |
| 1916 | 3 | Ohne Zahlen (Wien) / No numbers (Vienna). |
| 1917 | 4 | Nicht verwendet / Not used. |
| 1918 | 5 | Nicht verwendet / Not used. |
| 1919 | 6 | Richtige Antwort wird angezeigt / Right answer is shown. |
| 1920 | 7 | Frage wird bei Einsatz angezeigt / Question is shown when bet is made. |
| 1921 | 8 | Spiel mit Einsatzwahl / Game with betting. |
| 1922 | */ |
| 1923 | PORT_DIPNAME( 0x01, 0x00, "Game with betting" ) PORT_DIPLOCATION("SW1:8") |
| 1924 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 1925 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1926 | PORT_DIPNAME( 0x02, 0x02, "Show question in bet stage" ) PORT_DIPLOCATION("SW1:7") |
| 1927 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 1928 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1929 | PORT_DIPNAME( 0x04, 0x04, "Right answer is shown" ) PORT_DIPLOCATION("SW1:6") |
| 1930 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1931 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1932 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:5") |
| 1933 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1934 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1935 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:4") |
| 1936 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 1937 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1938 | PORT_DIPNAME( 0x20, 0x20, "No numbers (Vienna)" ) PORT_DIPLOCATION("SW1:3") |
| 1939 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 1940 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1941 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:2") |
| 1942 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 1943 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1944 | PORT_DIPNAME( 0x80, 0x80, "Bookkeeping" ) PORT_DIPLOCATION("SW1:1") |
| 1945 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 1946 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1947 | INPUT_PORTS_END |
| 1948 | |
| 1949 | |
| 1494 | 1950 | /************************* |
| 1495 | 1951 | * Graphics Layouts * |
| 1496 | 1952 | *************************/ |
| r7640 | r7641 | |
| 1498 | 1954 | static const gfx_layout charlayout = |
| 1499 | 1955 | { |
| 1500 | 1956 | 4,8, |
| 1501 | | 0x1000, |
| 1502 | | // RGN_FRAC(1,2), |
| 1957 | RGN_FRAC(1,2), |
| 1503 | 1958 | 4, |
| 1504 | | { 0, 4, 0x8000*8, 0x8000*8+4 }, |
| 1505 | | // { RGN_FRAC(0,2), RGN_FRAC(0,2) + 4, RGN_FRAC(1,2), RGN_FRAC(1,2) + 4 }, |
| 1959 | { RGN_FRAC(0,2), RGN_FRAC(0,2) + 4, RGN_FRAC(1,2), RGN_FRAC(1,2) + 4 }, |
| 1506 | 1960 | { 3, 2, 1, 0 }, |
| 1507 | 1961 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 1508 | 1962 | 8*4*2 |
| r7640 | r7641 | |
| 1513 | 1967 | * Graphics Decode Information * |
| 1514 | 1968 | ******************************/ |
| 1515 | 1969 | |
| 1516 | | static GFXDECODE_START( funworld ) |
| 1517 | | GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 16 ) |
| 1970 | static GFXDECODE_START( fw1stpal ) |
| 1971 | GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) |
| 1518 | 1972 | GFXDECODE_END |
| 1519 | 1973 | |
| 1974 | static GFXDECODE_START( fw2ndpal ) |
| 1975 | GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x100, 16 ) |
| 1976 | GFXDECODE_END |
| 1520 | 1977 | |
| 1978 | |
| 1521 | 1979 | /*********************** |
| 1522 | 1980 | * PIA Interfaces * |
| 1523 | 1981 | ***********************/ |
| r7640 | r7641 | |
| 1583 | 2041 | DEVCB_NULL /* IRQB */ |
| 1584 | 2042 | }; |
| 1585 | 2043 | |
| 2044 | /* these ports are set to output anyway, but this quietens the log */ |
| 2045 | static READ8_DEVICE_HANDLER( funquiz_ay8910_a_r ) |
| 2046 | { |
| 2047 | return 0x00; |
| 2048 | } |
| 1586 | 2049 | |
| 2050 | static READ8_DEVICE_HANDLER( funquiz_ay8910_b_r ) |
| 2051 | { |
| 2052 | return 0x00; |
| 2053 | } |
| 2054 | |
| 1587 | 2055 | /************************ |
| 1588 | 2056 | * Sound Interface * |
| 1589 | 2057 | ************************/ |
| r7640 | r7641 | |
| 1598 | 2066 | DEVCB_HANDLER(funworld_lamp_b_w) /* portB out */ |
| 1599 | 2067 | }; |
| 1600 | 2068 | |
| 2069 | static const ay8910_interface funquiz_ay8910_intf = |
| 2070 | { |
| 2071 | AY8910_LEGACY_OUTPUT, |
| 2072 | AY8910_DEFAULT_LOADS, |
| 2073 | DEVCB_HANDLER(funquiz_ay8910_a_r), /* portA in */ |
| 2074 | DEVCB_HANDLER(funquiz_ay8910_b_r), /* portB in */ |
| 2075 | DEVCB_HANDLER(funworld_lamp_a_w), /* portA out */ |
| 2076 | DEVCB_HANDLER(funworld_lamp_b_w) /* portB out */ |
| 2077 | }; |
| 1601 | 2078 | |
| 1602 | 2079 | /************************ |
| 1603 | 2080 | * CRTC Interface * |
| r7640 | r7641 | |
| 1622 | 2099 | * Machine Drivers * |
| 1623 | 2100 | **************************/ |
| 1624 | 2101 | |
| 1625 | | static MACHINE_DRIVER_START( funworld ) |
| 2102 | static MACHINE_DRIVER_START( fw1stpal ) |
| 1626 | 2103 | /* basic machine hardware */ |
| 1627 | 2104 | MDRV_CPU_ADD("maincpu", M65SC02, MASTER_CLOCK/8) /* 2MHz */ |
| 1628 | 2105 | MDRV_CPU_PROGRAM_MAP(funworld_map) |
| r7640 | r7641 | |
| 1642 | 2119 | MDRV_SCREEN_SIZE((124+1)*4, (30+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */ |
| 1643 | 2120 | MDRV_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06 */ |
| 1644 | 2121 | |
| 1645 | | MDRV_GFXDECODE(funworld) |
| 2122 | MDRV_GFXDECODE(fw1stpal) |
| 1646 | 2123 | |
| 1647 | | MDRV_DEFAULT_LAYOUT(layout_funworld) |
| 1648 | | |
| 1649 | 2124 | MDRV_PALETTE_LENGTH(0x200) |
| 1650 | 2125 | MDRV_PALETTE_INIT(funworld) |
| 1651 | 2126 | MDRV_VIDEO_START(funworld) |
| r7640 | r7641 | |
| 1661 | 2136 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.5) /* analyzed to avoid clips */ |
| 1662 | 2137 | MACHINE_DRIVER_END |
| 1663 | 2138 | |
| 2139 | static MACHINE_DRIVER_START( fw2ndpal ) |
| 2140 | MDRV_IMPORT_FROM(fw1stpal) |
| 2141 | |
| 2142 | MDRV_CPU_REPLACE("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz */ |
| 2143 | |
| 2144 | MDRV_GFXDECODE(fw2ndpal) |
| 2145 | MACHINE_DRIVER_END |
| 2146 | |
| 2147 | |
| 2148 | |
| 2149 | static MACHINE_DRIVER_START( funquiz ) |
| 2150 | MDRV_IMPORT_FROM(fw1stpal) |
| 2151 | |
| 2152 | MDRV_CPU_REPLACE("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz */ |
| 2153 | MDRV_CPU_PROGRAM_MAP(funquiz_map) |
| 2154 | |
| 2155 | MDRV_SOUND_REPLACE("ay8910", AY8910, MASTER_CLOCK/8) /* 2MHz */ |
| 2156 | MDRV_SOUND_CONFIG(funquiz_ay8910_intf) |
| 2157 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.5) |
| 2158 | MACHINE_DRIVER_END |
| 2159 | |
| 2160 | |
| 1664 | 2161 | static MACHINE_DRIVER_START( magicrd2 ) |
| 1665 | | MDRV_IMPORT_FROM(funworld) |
| 2162 | MDRV_IMPORT_FROM(fw1stpal) |
| 1666 | 2163 | |
| 1667 | 2164 | MDRV_CPU_REPLACE("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz */ |
| 1668 | 2165 | MDRV_CPU_PROGRAM_MAP(magicrd2_map) |
| 1669 | 2166 | |
| 1670 | | MDRV_GFXDECODE(funworld) |
| 1671 | 2167 | MDRV_VIDEO_START(magicrd2) |
| 1672 | 2168 | |
| 1673 | 2169 | MDRV_SOUND_REPLACE("ay8910", AY8910, MASTER_CLOCK/8) /* 2MHz */ |
| r7640 | r7641 | |
| 1676 | 2172 | MACHINE_DRIVER_END |
| 1677 | 2173 | |
| 1678 | 2174 | static MACHINE_DRIVER_START( royalcrd ) |
| 1679 | | MDRV_IMPORT_FROM(funworld) |
| 2175 | MDRV_IMPORT_FROM(fw1stpal) |
| 1680 | 2176 | |
| 1681 | 2177 | MDRV_CPU_REPLACE("maincpu", M65C02, MASTER_CLOCK/8) /* (G65SC02P in pro version) 2MHz */ |
| 1682 | 2178 | MDRV_CPU_PROGRAM_MAP(magicrd2_map) |
| 1683 | 2179 | MACHINE_DRIVER_END |
| 1684 | 2180 | |
| 1685 | 2181 | static MACHINE_DRIVER_START( cuoreuno ) |
| 1686 | | MDRV_IMPORT_FROM(funworld) |
| 2182 | MDRV_IMPORT_FROM(fw1stpal) |
| 1687 | 2183 | |
| 1688 | 2184 | MDRV_CPU_REPLACE("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz */ |
| 1689 | 2185 | MDRV_CPU_PROGRAM_MAP(cuoreuno_map) |
| 1690 | 2186 | MACHINE_DRIVER_END |
| 1691 | 2187 | |
| 1692 | | static MACHINE_DRIVER_START( royalmcu ) |
| 1693 | | MDRV_IMPORT_FROM(funworld) |
| 1694 | | |
| 1695 | | MDRV_CPU_REPLACE("maincpu", M65SC02, MASTER_CLOCK/8) /* 2MHz */ |
| 1696 | | MDRV_CPU_PROGRAM_MAP(royalmcu_map) |
| 1697 | | MACHINE_DRIVER_END |
| 1698 | | |
| 1699 | 2188 | static MACHINE_DRIVER_START( saloon ) |
| 1700 | | MDRV_IMPORT_FROM(funworld) |
| 2189 | MDRV_IMPORT_FROM(fw1stpal) |
| 1701 | 2190 | |
| 1702 | 2191 | MDRV_CPU_REPLACE("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz */ |
| 1703 | 2192 | MDRV_CPU_PROGRAM_MAP(saloon_map) |
| r7640 | r7641 | |
| 1784 | 2273 | ROM_LOAD( "jolycard.ch1", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 1785 | 2274 | |
| 1786 | 2275 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1787 | | ROM_LOAD( "jollycrd_nvram.bin", 0x0000, 0x0800, CRC(8f0a86c9) SHA1(467bd4f601ac6aa818c036f1269c2d43d27854f6) ) |
| 2276 | ROM_LOAD( "jollycrd_nvram.bin", 0x0000, 0x0800, CRC(8f0a86c9) SHA1(467bd4f601ac6aa818c036f1269c2d43d27854f6) ) |
| 1788 | 2277 | |
| 1789 | 2278 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1790 | 2279 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1800 | 2289 | ROM_LOAD( "jolycard.ch1", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 1801 | 2290 | |
| 1802 | 2291 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1803 | | ROM_LOAD( "jolyc3x3_nvram.bin", 0x0000, 0x0800, CRC(727c70cf) SHA1(3639b0891514064e21ebdb280791cc9c8f5ba481) ) |
| 2292 | ROM_LOAD( "jolyc3x3_nvram.bin", 0x0000, 0x0800, CRC(727c70cf) SHA1(3639b0891514064e21ebdb280791cc9c8f5ba481) ) |
| 1804 | 2293 | |
| 1805 | 2294 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1806 | 2295 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1808 | 2297 | |
| 1809 | 2298 | |
| 1810 | 2299 | /* |
| 1811 | | Jolly Card Professional 2.0 |
| 1812 | 2300 | |
| 1813 | | Special version with maximum bet up to 98 credits. |
| 1814 | | This game has an annoying password system through a DOS program. |
| 2301 | Jolly Card Professional 2.0 |
| 2302 | --------------------------- |
| 2303 | |
| 2304 | Special version with maximum bet up to 98/980 credits. |
| 2305 | This game has an annoying password system through a DOS program. |
| 2306 | |
| 2307 | |
| 2308 | differences: |
| 2309 | ---------------------------------------------------------- |
| 2310 | |
| 2311 | MZS Soft: |
| 2312 | |
| 2313 | - All manufacturer strings, phones and dates. |
| 2314 | - Doesn't allow to clean partial IN/OUT meters. |
| 2315 | |
| 2316 | $9FFF LDX #$EA ; Just clean 24 bytes from memory. |
| 2317 | $A001 LDA #$00 |
| 2318 | $A003 STA $0300,X |
| 2319 | $A006 INX |
| 2320 | $A007 BNE $A003 |
| 2321 | $A009 RTS |
| 2322 | |
| 2323 | - The following unknown bytes... |
| 2324 | |
| 2325 | $47EB - $47FF: 05 05 01 04 04 ; Unknown. |
| 2326 | |
| 2327 | ---------------------------------------------------------- |
| 2328 | |
| 2329 | Spale Soft: |
| 2330 | |
| 2331 | - All manufacturer strings, phones and dates. |
| 2332 | |
| 2333 | - Allow to clean partial IN/OUT meters. |
| 2334 | |
| 2335 | $9FFF LDX #$00 ; Just clean 255 bytes from memory. |
| 2336 | $A001 LDA #$00 |
| 2337 | $A003 STA $0300,X |
| 2338 | $A006 INX |
| 2339 | $A007 BNE $A003 |
| 2340 | $A009 RTS |
| 2341 | |
| 2342 | - The following unknown bytes... |
| 2343 | |
| 2344 | $47EB - $47FF: 00 00 00 00 00 ; Unknown. |
| 2345 | |
| 2346 | ---------------------------------------------------------- |
| 2347 | |
| 2348 | 034E-034F: Partial IN. |
| 2349 | 0360-0361: Partial OUT. |
| 2350 | 044E-044F: Total IN. |
| 2351 | 0460-0461: Total OUT. |
| 2352 | |
| 1815 | 2353 | */ |
| 1816 | 2354 | |
| 2355 | ROM_START( jolycmzs ) |
| 2356 | ROM_REGION( 0x10000, "maincpu", 0 ) /* MZS Tech */ |
| 2357 | ROM_LOAD( "mzstech.bin", 0x8000, 0x8000, CRC(cebd1e56) SHA1(24d88b3383cecf3829556d75460053663aab4ef1) ) |
| 2358 | |
| 2359 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 2360 | ROM_LOAD( "jolycard.ch2", 0x0000, 0x8000, CRC(c512b103) SHA1(1f4e78e97855afaf0332fb75e1b5571aafd01c29) ) |
| 2361 | ROM_LOAD( "jolycard.ch1", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 2362 | |
| 2363 | /* Load a default eeprom, otherwise an annoying password system should be inserted with |
| 2364 | inputs correlated to a code that pops up on the screen. |
| 2365 | This code should be inserted into a PC-DOS program, that program is nowhere to be found right now. |
| 2366 | */ |
| 2367 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2368 | ROM_LOAD( "jolycmzs_nvram.bin", 0x0000, 0x0800, CRC(828ffeef) SHA1(6a52282231f1944ba79049f267a9c1941373aea2) ) |
| 2369 | |
| 2370 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2371 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 2372 | ROM_END |
| 2373 | |
| 1817 | 2374 | ROM_START( jolyc980 ) |
| 1818 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 2375 | ROM_REGION( 0x10000, "maincpu", 0 ) /* Spale Soft */ |
| 1819 | 2376 | ROM_LOAD( "j980.bin", 0x8000, 0x8000, CRC(48249fff) SHA1(390cd0eb3399446a66363dc6760458170e1970fd) ) |
| 1820 | 2377 | |
| 1821 | 2378 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| r7640 | r7641 | |
| 1827 | 2384 | This code should be inserted into a PC-DOS program, that program is nowhere to be found right now. |
| 1828 | 2385 | */ |
| 1829 | 2386 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1830 | | ROM_LOAD( "jolyc980_nvram.bin", 0x0000, 0x0800, CRC(c917f071) SHA1(fdcd974d3acd4acf2e0ff5fca820cfc65fe18867) ) |
| 2387 | ROM_LOAD( "jolyc980_nvram.bin", 0x0000, 0x0800, CRC(ef2c89c7) SHA1(a286001e205dcd16d914e07ba2b7c820335ab9c2) ) |
| 1831 | 2388 | |
| 1832 | 2389 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1833 | 2390 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1843 | 2400 | ROM_LOAD( "jollya.bin", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 1844 | 2401 | |
| 1845 | 2402 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1846 | | ROM_LOAD( "jolycdev_nvram.bin", 0x0000, 0x0800, CRC(ae2c2fb8) SHA1(912d673ea8e26ff62520a7b86e702e5260cff4c0) ) |
| 2403 | ROM_LOAD( "jolycdev_nvram.bin", 0x0000, 0x0800, CRC(ae2c2fb8) SHA1(912d673ea8e26ff62520a7b86e702e5260cff4c0) ) |
| 1847 | 2404 | |
| 1848 | 2405 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1849 | 2406 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1866 | 2423 | - 1x KM6264AL-10 |
| 1867 | 2424 | |
| 1868 | 2425 | - 1x Crystal : 16.000 MHz |
| 2426 | |
| 2427 | These croatian sets are not meant to work with coins... |
| 2428 | Only remote credits, as can be seen in test mode. |
| 1869 | 2429 | */ |
| 1870 | 2430 | |
| 1871 | 2431 | ROM_START( jolyccra ) /* Jolly Card (croatian, set 1) */ |
| r7640 | r7641 | |
| 1877 | 2437 | ROM_LOAD( "jollya.bin", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 1878 | 2438 | |
| 1879 | 2439 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1880 | | ROM_LOAD( "jolyccra_nvram.bin", 0x0000, 0x0800, CRC(478ab0a9) SHA1(8c5160d2ac8d4a9db0ae1e478d3bb1513a04544f) ) |
| 2440 | ROM_LOAD( "jolyccra_nvram.bin", 0x0000, 0x0800, CRC(478ab0a9) SHA1(8c5160d2ac8d4a9db0ae1e478d3bb1513a04544f) ) |
| 1881 | 2441 | |
| 1882 | 2442 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1883 | 2443 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1893 | 2453 | ROM_LOAD( "jolycard.ch1", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 1894 | 2454 | |
| 1895 | 2455 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1896 | | ROM_LOAD( "jolyccrb_nvram.bin", 0x0000, 0x0800, CRC(c1d49c88) SHA1(27ffdedfc7f09ff11c3b2537db3681473b776074) ) |
| 2456 | ROM_LOAD( "jolyccrb_nvram.bin", 0x0000, 0x0800, CRC(c1d49c88) SHA1(27ffdedfc7f09ff11c3b2537db3681473b776074) ) |
| 1897 | 2457 | |
| 1898 | 2458 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1899 | 2459 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1931 | 2491 | ROM_LOAD( "1.bin", 0x8000, 0x8000, CRC(43bcb2df) SHA1(5022bc3a0b852a7cd433e25c3c90a720e6328261) ) |
| 1932 | 2492 | |
| 1933 | 2493 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1934 | | ROM_LOAD( "jolycdit_nvram.bin", 0x0000, 0x0800, CRC(c55c6706) SHA1(a38ae926f057fb47e48ca841b2d097fc4fd06416) ) |
| 2494 | ROM_LOAD( "jolycdit_nvram.bin", 0x0000, 0x0800, CRC(c55c6706) SHA1(a38ae926f057fb47e48ca841b2d097fc4fd06416) ) |
| 1935 | 2495 | |
| 1936 | 2496 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1937 | 2497 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1967 | 2527 | |
| 1968 | 2528 | jolycdib program seems to be the original for blue TAB PCB. |
| 1969 | 2529 | jolycdit has some code patches and redirected parts to suspicious offsets (as d500, d000, etc) |
| 2530 | |
| 2531 | This sets is not meant to work with coins... |
| 2532 | Only remote credits, as can be seen in test mode. |
| 1970 | 2533 | */ |
| 1971 | 2534 | |
| 1972 | 2535 | ROM_START( jolycdib ) /* bootleg PCB, encrypted graphics */ |
| r7640 | r7641 | |
| 1978 | 2541 | ROM_LOAD( "1.bin", 0x8000, 0x8000, CRC(43bcb2df) SHA1(5022bc3a0b852a7cd433e25c3c90a720e6328261) ) |
| 1979 | 2542 | |
| 1980 | 2543 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 1981 | | ROM_LOAD( "jolycdib_nvram.bin", 0x0000, 0x0800, CRC(038a71fe) SHA1(99d3befbee8f9f86ce7f074de7f16fb25053c077) ) |
| 2544 | ROM_LOAD( "jolycdib_nvram.bin", 0x0000, 0x0800, CRC(038a71fe) SHA1(99d3befbee8f9f86ce7f074de7f16fb25053c077) ) |
| 1982 | 2545 | |
| 1983 | 2546 | ROM_REGION( 0x0200, "proms", 0 ) |
| 1984 | 2547 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 1997 | 2560 | ROM_LOAD( "sj1.bin", 0x8000, 0x8000, CRC(82741749) SHA1(d0bf3073dff9ba1c4913fd754f965951e9cb5b03) ) |
| 1998 | 2561 | |
| 1999 | 2562 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2000 | | ROM_LOAD( "sjcd2kx3_nvram.bin", 0x0000, 0x0800, CRC(1141368b) SHA1(b4af2d59b5e8115440e1219a621cfd2fb8c2c978) ) |
| 2563 | ROM_LOAD( "sjcd2kx3_nvram.bin", 0x0000, 0x0800, CRC(1141368b) SHA1(b4af2d59b5e8115440e1219a621cfd2fb8c2c978) ) |
| 2001 | 2564 | |
| 2002 | 2565 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2003 | 2566 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| r7640 | r7641 | |
| 2039 | 2602 | ROM_LOAD( "poker4.003", 0x0000, 0x8000, CRC(8c33a15f) SHA1(a1c8451c99a23eeffaedb21d1a1b69f54629f8ab) ) |
| 2040 | 2603 | ROM_LOAD( "poker4.002", 0x8000, 0x8000, CRC(5f4e12d8) SHA1(014b2364879faaf4922cdb82ee07692389f20c2d) ) |
| 2041 | 2604 | |
| 2042 | | ROM_REGION( 0x0200, "proms", 0 ) /* using jollycrd palette till a correct dump appear */ |
| 2043 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 2605 | ROM_REGION( 0x0200, "proms", 0 ) /* using joker card palette till a correct dump appear */ |
| 2606 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, BAD_DUMP CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2044 | 2607 | ROM_END |
| 2045 | 2608 | |
| 2046 | 2609 | |
| r7640 | r7641 | |
| 2052 | 2615 | ROM_LOAD( "poker4.003", 0x0000, 0x8000, CRC(8c33a15f) SHA1(a1c8451c99a23eeffaedb21d1a1b69f54629f8ab) ) |
| 2053 | 2616 | ROM_LOAD( "poker4.002", 0x8000, 0x8000, CRC(5f4e12d8) SHA1(014b2364879faaf4922cdb82ee07692389f20c2d) ) |
| 2054 | 2617 | |
| 2055 | | ROM_REGION( 0x0200, "proms", 0 ) /* using jollycrd palette till a correct dump appear */ |
| 2056 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 2618 | ROM_REGION( 0x0200, "proms", 0 ) /* using joker card palette till a correct dump appear */ |
| 2619 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, BAD_DUMP CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2057 | 2620 | ROM_END |
| 2058 | 2621 | |
| 2059 | 2622 | |
| r7640 | r7641 | |
| 2070 | 2633 | - 1x KM6264AL-10 |
| 2071 | 2634 | |
| 2072 | 2635 | - 1x Crystal : 16.000 MHz |
| 2636 | |
| 2637 | This set behaves like Big Deal & Bonus Card. |
| 2073 | 2638 | */ |
| 2074 | 2639 | |
| 2075 | 2640 | ROM_START( jolycdat ) /* there are unused pieces of code that compare or jumps within $4000-$5000 range */ |
| r7640 | r7641 | |
| 2081 | 2646 | ROM_LOAD( "jolycard.ch2", 0x0000, 0x8000, CRC(c512b103) SHA1(1f4e78e97855afaf0332fb75e1b5571aafd01c29) ) |
| 2082 | 2647 | ROM_LOAD( "jolycard.ch1", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) ) |
| 2083 | 2648 | |
| 2084 | | ROM_REGION( 0x0200, "proms", 0 ) /* using jollycrd palette till a correct dump appear */ |
| 2085 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 2649 | ROM_REGION( 0x0200, "proms", 0 ) /* using joker card palette till a correct dump appear */ |
| 2650 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, BAD_DUMP CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2086 | 2651 | ROM_END |
| 2087 | 2652 | |
| 2088 | 2653 | |
| r7640 | r7641 | |
| 2115 | 2680 | ROM_LOAD( "cuore1c.u22", 0x8000, 0x8000, CRC(253fac84) SHA1(1ad104ab8e8d73df6397a840a4b26565b245d7a3) ) |
| 2116 | 2681 | |
| 2117 | 2682 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2118 | | ROM_LOAD( "cuoreuno_nvram.bin", 0x0000, 0x0800, CRC(b5a1bf25) SHA1(c2996a28c080debf10ab7a7dc47c305aed172a83) ) |
| 2683 | ROM_LOAD( "cuoreuno_nvram.bin", 0x0000, 0x0800, CRC(b5a1bf25) SHA1(c2996a28c080debf10ab7a7dc47c305aed172a83) ) |
| 2119 | 2684 | |
| 2120 | 2685 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2121 | 2686 | ROM_LOAD( "am27s29_cu.bin", 0x0000, 0x0200, CRC(7ea61749) SHA1(3167acd79f9bda2078c2af3e049ad6abf160aeae) ) |
| r7640 | r7641 | |
| 2145 | 2710 | - 1x trimmer (volume) |
| 2146 | 2711 | - 1x 8 DIP switches |
| 2147 | 2712 | - 1x battery |
| 2713 | |
| 2714 | u2.bin 1ST AND 2ND HALF IDENTICAL |
| 2715 | u20.bin 1ST AND 2ND HALF IDENTICAL |
| 2716 | u21.bin 1ST AND 2ND HALF IDENTICAL |
| 2148 | 2717 | */ |
| 2149 | 2718 | |
| 2150 | 2719 | ROM_START( elephfam ) |
| 2151 | | ROM_REGION( 0x18000, "maincpu", 0 ) |
| 2152 | | ROM_LOAD( "eleph_a.u2", 0x8000, 0x10000, CRC(8392b842) SHA1(74c850c734ca8174167b2f826b9b1ac902669392) ) |
| 2720 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 2721 | ROM_LOAD( "eleph_a.u2", 0x8000, 0x8000, CRC(8392b842) SHA1(74c850c734ca8174167b2f826b9b1ac902669392) ) |
| 2722 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2153 | 2723 | |
| 2154 | | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 2155 | | ROM_LOAD( "eleph_c.u22", 0x00000, 0x10000, CRC(4b909bf3) SHA1(a822b12126bc58af6d3f999ab2117370015a039b) ) |
| 2156 | | ROM_LOAD( "eleph_b.u21", 0x10000, 0x10000, CRC(e3612670) SHA1(beb65f7d2bd6d7bc68cfd876af51910cf6417bd0) ) |
| 2157 | | ROM_COPY( "gfx1", 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */ |
| 2724 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 2725 | ROM_LOAD( "eleph_b.u21", 0x0000, 0x8000, CRC(e3612670) SHA1(beb65f7d2bd6d7bc68cfd876af51910cf6417bd0) ) |
| 2726 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2727 | ROM_LOAD( "eleph_c.u22", 0x8000, 0x8000, CRC(4b909bf3) SHA1(a822b12126bc58af6d3f999ab2117370015a039b) ) |
| 2728 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2158 | 2729 | |
| 2159 | 2730 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2160 | | ROM_LOAD( "elephfam_nvram.bin", 0x0000, 0x0800, CRC(fb9b1100) SHA1(cf15ce55042f1c4399fec480c2f862622905a8b5) ) |
| 2731 | ROM_LOAD( "elephfam_nvram.bin", 0x0000, 0x0800, CRC(fb9b1100) SHA1(cf15ce55042f1c4399fec480c2f862622905a8b5) ) |
| 2161 | 2732 | |
| 2162 | 2733 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2163 | 2734 | ROM_LOAD( "am27s29_ef.u25", 0x0000, 0x0200, CRC(bca8b82a) SHA1(4aa19f5ecd9953bf8792dceb075a746f77c01cfc) ) |
| r7640 | r7641 | |
| 2178 | 2749 | ROM_LOAD( "elephc.u20", 0x8000, 0x8000, CRC(448ba955) SHA1(2785cbc8cd42a7dda85bd8b81d5fbec01a1ba0bd) ) |
| 2179 | 2750 | |
| 2180 | 2751 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2181 | | ROM_LOAD( "elephfmb_nvram.bin", 0x0000, 0x0800, CRC(13a0cfea) SHA1(9c8ce509ef1076e88ea853347b64c5591bc2e18c) ) |
| 2752 | ROM_LOAD( "elephfmb_nvram.bin", 0x0000, 0x0800, CRC(13a0cfea) SHA1(9c8ce509ef1076e88ea853347b64c5591bc2e18c) ) |
| 2182 | 2753 | |
| 2183 | 2754 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2184 | 2755 | ROM_LOAD( "am27s29_ef.u25", 0x0000, 0x0200, CRC(bca8b82a) SHA1(4aa19f5ecd9953bf8792dceb075a746f77c01cfc) ) |
| r7640 | r7641 | |
| 2300 | 2871 | ROM_LOAD( "pool10_nvram.bin", 0x0000, 0x0800, CRC(2f2fab43) SHA1(f815b70c171bad99fa6a60c256e4fdc85dd6b290) ) |
| 2301 | 2872 | |
| 2302 | 2873 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2303 | | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2874 | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2304 | 2875 | |
| 2305 | 2876 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2306 | 2877 | ROM_LOAD( "palce16v8h_p10.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2309 | 2880 | ROM_END |
| 2310 | 2881 | |
| 2311 | 2882 | |
| 2312 | | ROM_START( pool10b ) /* this set should be the parent */ |
| 2313 | | ROM_REGION( 0x18000, "maincpu", 0 ) |
| 2314 | | ROM_LOAD( "u2.bin", 0x8000, 0x10000, CRC(64fee38e) SHA1(8a624a0b6eb4a3ba09e5b396dc5a01994dfdf294) ) |
| 2883 | /* |
| 2884 | - pool10b - |
| 2315 | 2885 | |
| 2886 | u2.bin 1ST AND 2ND HALF IDENTICAL |
| 2887 | u20.bin 1ST AND 2ND HALF IDENTICAL |
| 2888 | u21.bin 1ST AND 2ND HALF IDENTICAL |
| 2889 | */ |
| 2890 | ROM_START( pool10b ) /* this set should be the parent */ |
| 2891 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 2892 | ROM_LOAD( "u2.bin", 0x8000, 0x8000, CRC(64fee38e) SHA1(8a624a0b6eb4a3ba09e5b396dc5a01994dfdf294) ) |
| 2893 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2894 | |
| 2316 | 2895 | /* GFX ROMs are the same of pool10, but double sized with identical halves. */ |
| 2317 | | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 2318 | | ROM_LOAD( "u20.bin", 0x00000, 0x10000, CRC(3bdf1106) SHA1(fa21cbd49bb27ea4a784cf4e4b3fbd52650a285b) ) |
| 2319 | | ROM_LOAD( "u21.bin", 0x10000, 0x10000, CRC(581c4878) SHA1(5ae61af090feea1745e22f46b33b2c01e6013fbe) ) |
| 2320 | | ROM_COPY( "gfx1", 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */ |
| 2896 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 2897 | ROM_LOAD( "u21.bin", 0x0000, 0x8000, CRC(581c4878) SHA1(5ae61af090feea1745e22f46b33b2c01e6013fbe) ) |
| 2898 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2899 | ROM_LOAD( "u20.bin", 0x8000, 0x8000, CRC(3bdf1106) SHA1(fa21cbd49bb27ea4a784cf4e4b3fbd52650a285b) ) |
| 2900 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2321 | 2901 | |
| 2322 | 2902 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2323 | | ROM_LOAD( "pool10b_nvram.bin", 0x0000, 0x0800, CRC(d9f35299) SHA1(2c3608bc9c322a9cc86f74d8fa2f660804a8cf3c) ) |
| 2903 | ROM_LOAD( "pool10b_nvram.bin", 0x0000, 0x0800, CRC(d9f35299) SHA1(2c3608bc9c322a9cc86f74d8fa2f660804a8cf3c) ) |
| 2324 | 2904 | |
| 2325 | 2905 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2326 | | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2906 | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2327 | 2907 | |
| 2328 | 2908 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2329 | 2909 | ROM_LOAD( "palce16v8h_p10b.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2341 | 2921 | ROM_LOAD( "c.u20", 0x8000, 0x8000, CRC(9abedd0c) SHA1(f184a82e8ec2387069d631bcb77e890acd44b3f5) ) |
| 2342 | 2922 | |
| 2343 | 2923 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2344 | | ROM_LOAD( "pool10c_nvram.bin", 0x0000, 0x0800, CRC(396aefed) SHA1(066b87ff054dfb37f733a812ad0dc1b1bd2478e6) ) |
| 2924 | ROM_LOAD( "pool10c_nvram.bin", 0x0000, 0x0800, CRC(396aefed) SHA1(066b87ff054dfb37f733a812ad0dc1b1bd2478e6) ) |
| 2345 | 2925 | |
| 2346 | 2926 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2347 | | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2927 | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2348 | 2928 | |
| 2349 | 2929 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2350 | 2930 | ROM_LOAD( "palce16v8h_p10.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2353 | 2933 | ROM_END |
| 2354 | 2934 | |
| 2355 | 2935 | |
| 2356 | | ROM_START( pool10d ) |
| 2357 | | ROM_REGION( 0x18000, "maincpu", 0 ) |
| 2358 | | ROM_LOAD( "3.50.u2", 0x8000, 0x10000, CRC(4c68e1f4) SHA1(bbab63a18e0c041ce519daa32e12dd1b6a672dce) ) |
| 2936 | /* |
| 2937 | - pool10d - |
| 2359 | 2938 | |
| 2939 | 3.50.u2 1ST AND 2ND HALF IDENTICAL |
| 2940 | */ |
| 2941 | ROM_START( pool10d ) |
| 2942 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 2943 | ROM_LOAD( "3.50.u2", 0x8000, 0x8000, CRC(4c68e1f4) SHA1(bbab63a18e0c041ce519daa32e12dd1b6a672dce) ) |
| 2944 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2945 | |
| 2360 | 2946 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 2361 | 2947 | ROM_LOAD( "2.u21", 0x0000, 0x8000, CRC(99c8c074) SHA1(f8082b08e895cbcd028a2b7cd961a7a2c8b2762c) ) |
| 2362 | 2948 | ROM_LOAD( "1.u20", 0x8000, 0x8000, CRC(9abedd0c) SHA1(f184a82e8ec2387069d631bcb77e890acd44b3f5) ) |
| 2363 | 2949 | |
| 2364 | 2950 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2365 | | ROM_LOAD( "pool10d_nvram.bin", 0x0000, 0x0800, CRC(6b5984a0) SHA1(156a94e74e33b1a15222cffff9b62e65f6f5f2f5) ) |
| 2951 | ROM_LOAD( "pool10d_nvram.bin", 0x0000, 0x0800, CRC(6b5984a0) SHA1(156a94e74e33b1a15222cffff9b62e65f6f5f2f5) ) |
| 2366 | 2952 | |
| 2367 | 2953 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2368 | | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2954 | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2369 | 2955 | |
| 2370 | 2956 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2371 | 2957 | ROM_LOAD( "palce16v8h_p10.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2404 | 2990 | ROM_LOAD( "tortu.c.u20", 0x8000, 0x8000, CRC(3cda6f73) SHA1(b4f3d2d3c652ebf6973358ae33b7808de5939acd) ) |
| 2405 | 2991 | |
| 2406 | 2992 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2407 | | ROM_LOAD( "tortufam_nvram.bin", 0x0000, 0x0800, CRC(e5a08b1b) SHA1(6575ed3ec66ef0e42129225fe1679519e5e1c946) ) |
| 2993 | ROM_LOAD( "tortufam_nvram.bin", 0x0000, 0x0800, CRC(e5a08b1b) SHA1(6575ed3ec66ef0e42129225fe1679519e5e1c946) ) |
| 2408 | 2994 | |
| 2409 | 2995 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2410 | | ROM_LOAD( "am27s29pc_tf.u25", 0x0000, 0x0200, CRC(c6d433fb) SHA1(065de832bbe8765eb0aacc2029e587a4f5362f8a) ) |
| 2996 | ROM_LOAD( "am27s29pc_tf.u25", 0x0000, 0x0200, CRC(c6d433fb) SHA1(065de832bbe8765eb0aacc2029e587a4f5362f8a) ) |
| 2411 | 2997 | |
| 2412 | 2998 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2413 | 2999 | ROM_LOAD( "palce20v8h_tf.u5", 0x0000, 0x0157, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2446 | 3032 | ROM_LOAD( "boat_1.bin", 0x8000, 0x8000, CRC(61fd8c19) SHA1(eb8fd8bd7de38a6c8a435e9e36daf699162138a5) ) |
| 2447 | 3033 | |
| 2448 | 3034 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2449 | | ROM_LOAD( "bottle10_nvram.bin", 0x0000, 0x0800, CRC(82927c53) SHA1(8cde91588cb53fefc84f0b14fc5c0b26a3a445eb) ) |
| 3035 | ROM_LOAD( "bottle10_nvram.bin", 0x0000, 0x0800, CRC(82927c53) SHA1(8cde91588cb53fefc84f0b14fc5c0b26a3a445eb) ) |
| 2450 | 3036 | |
| 2451 | 3037 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2452 | | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 3038 | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2453 | 3039 | |
| 2454 | 3040 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2455 | 3041 | ROM_LOAD( "palce16v8h_p10.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2467 | 3053 | ROM_LOAD( "1.u20", 0x8000, 0x8000, CRC(61fd8c19) SHA1(eb8fd8bd7de38a6c8a435e9e36daf699162138a5) ) |
| 2468 | 3054 | |
| 2469 | 3055 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2470 | | ROM_LOAD( "bottl10b_nvram.bin", 0x0000, 0x0800, CRC(59976182) SHA1(f8d26169e86444607bc5a6649f41e7f5c05ddbb4) ) |
| 3056 | ROM_LOAD( "bottl10b_nvram.bin", 0x0000, 0x0800, CRC(59976182) SHA1(f8d26169e86444607bc5a6649f41e7f5c05ddbb4) ) |
| 2471 | 3057 | |
| 2472 | 3058 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2473 | | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 3059 | ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) ) |
| 2474 | 3060 | |
| 2475 | 3061 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2476 | 3062 | ROM_LOAD( "palce16v8h_p10.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| r7640 | r7641 | |
| 2513 | 3099 | ROM_LOAD( "1.bin", 0x8000, 0x8000, CRC(41f7a0b3) SHA1(9aff2b8832d2a4f868daa9849a0bfe5e44f88fc0) ) |
| 2514 | 3100 | |
| 2515 | 3101 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2516 | | ROM_LOAD( "royalcrd_nvram.bin", 0x0000, 0x0800, CRC(335bfa5a) SHA1(7e9cbb502f450c515ea03ffcf4b7fbae60af4e73) ) |
| 3102 | ROM_LOAD( "royalcrd_nvram.bin", 0x0000, 0x0800, CRC(335bfa5a) SHA1(7e9cbb502f450c515ea03ffcf4b7fbae60af4e73) ) |
| 2517 | 3103 | |
| 2518 | 3104 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2519 | | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 3105 | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 2520 | 3106 | |
| 2521 | 3107 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2522 | | ROM_LOAD( "palce16v8h-4.bin", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 2523 | | ROM_LOAD( "1-peel18cv8.bin", 0x0200, 0x0155, NO_DUMP ) /* PEEL is read protected */ |
| 2524 | | ROM_LOAD( "2-peel18cv8.bin", 0x0400, 0x0155, CRC(8fdafd55) SHA1(fbb187ba682111648ea1586f400990cb81a3077a) ) |
| 3108 | ROM_LOAD( "palce16v8h-4.bin", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 3109 | ROM_LOAD( "1-peel18cv8.bin", 0x0200, 0x0155, NO_DUMP ) /* PEEL is read protected */ |
| 3110 | ROM_LOAD( "2-peel18cv8.bin", 0x0400, 0x0155, CRC(8fdafd55) SHA1(fbb187ba682111648ea1586f400990cb81a3077a) ) |
| 2525 | 3111 | ROM_END |
| 2526 | 3112 | |
| 2527 | 3113 | |
| r7640 | r7641 | |
| 2545 | 3131 | */ |
| 2546 | 3132 | |
| 2547 | 3133 | ROM_START( royalcdb ) /* both halves have different programs. we're using the 2nd one */ |
| 2548 | | ROM_REGION( 0x20000, "maincpu", 0 ) /* 1st half prg is testing RAM in offset $8600-$BF00...?? */ |
| 2549 | | ROM_LOAD( "rc.bin", 0x10000, 0x10000, CRC(8a9a6dd6) SHA1(04c3f9f17d5404ac1414c51ef8f930df54530e72) ) |
| 2550 | | ROM_COPY( "maincpu", 0x18000, 0x8000, 0x8000 ) |
| 3134 | ROM_REGION( 0x10000, "maincpu", 0 ) /* 1st half prg is testing RAM in offset $8600-$BF00...?? */ |
| 3135 | ROM_LOAD( "rc.bin", 0x0000, 0x10000, CRC(8a9a6dd6) SHA1(04c3f9f17d5404ac1414c51ef8f930df54530e72) ) |
| 2551 | 3136 | |
| 2552 | | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 2553 | | ROM_LOAD( "1a.bin", 0x0000, 0x10000, CRC(8a66f22c) SHA1(67d6e8f8f5a0fd979dc498ba2cc67cf707ccdf95) ) |
| 2554 | | ROM_LOAD( "2a.bin", 0x10000, 0x10000, CRC(3af71cf8) SHA1(3a0ce0d0abebf386573c5936545dada1d3558e55) ) |
| 2555 | | ROM_COPY( "gfx1", 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */ |
| 3137 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3138 | ROM_LOAD( "2a.bin", 0x0000, 0x8000, CRC(3af71cf8) SHA1(3a0ce0d0abebf386573c5936545dada1d3558e55) ) |
| 3139 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 3140 | ROM_LOAD( "1a.bin", 0x8000, 0x8000, CRC(8a66f22c) SHA1(67d6e8f8f5a0fd979dc498ba2cc67cf707ccdf95) ) |
| 3141 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2556 | 3142 | |
| 2557 | 3143 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2558 | | ROM_LOAD( "royalcdb_nvram.bin", 0x0000, 0x0800, CRC(3b03440f) SHA1(49e51b8c9e1404d39c479a2d0619aab43f1a6529) ) |
| 3144 | ROM_LOAD( "royalcdb_nvram.bin", 0x0000, 0x0800, CRC(3b03440f) SHA1(49e51b8c9e1404d39c479a2d0619aab43f1a6529) ) |
| 2559 | 3145 | |
| 2560 | 3146 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2561 | | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 3147 | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 2562 | 3148 | |
| 2563 | 3149 | ROM_REGION( 0x0200, "plds", 0 ) |
| 2564 | | ROM_LOAD( "palce16v8h-4.bin", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 3150 | ROM_LOAD( "palce16v8h-4.bin", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 2565 | 3151 | ROM_END |
| 2566 | 3152 | |
| 2567 | 3153 | |
| r7640 | r7641 | |
| 2589 | 3175 | */ |
| 2590 | 3176 | |
| 2591 | 3177 | ROM_START( royalcdc ) /* encrypted program rom */ |
| 2592 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3178 | ROM_REGION( 0x10000*2, "maincpu", 0 ) // *2 for decrypted opcodes (see init) |
| 2593 | 3179 | ROM_LOAD( "rc_1.bin", 0x8000, 0x8000, CRC(8cdcc978) SHA1(489b58760a7c8646399c8cdfb86ec4341823e7dd) ) |
| 2594 | 3180 | |
| 2595 | 3181 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| r7640 | r7641 | |
| 2597 | 3183 | ROM_LOAD( "rc_2.bin", 0x8000, 0x8000, CRC(7f934488) SHA1(c537a09ef7e88a81ee9c2e1d971b3caf9d3dba0e) ) |
| 2598 | 3184 | |
| 2599 | 3185 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2600 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(44dbf086) SHA1(43a2d615c00605db75a4fd4d57d9e056c0356f10) ) |
| 3186 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(44dbf086) SHA1(43a2d615c00605db75a4fd4d57d9e056c0356f10) ) |
| 2601 | 3187 | |
| 2602 | 3188 | ROM_REGION( 0x0600, "plds", 0 ) |
| 2603 | | ROM_LOAD( "palce16v8.bin", 0x0000, 0x0117, NO_DUMP ) /* not present in the set */ |
| 2604 | | ROM_LOAD( "1-peel18cv8p.bin", 0x0200, 0x0155, NO_DUMP ) /* not present in the set */ |
| 2605 | | ROM_LOAD( "2-peel18cv8p.bin", 0x0400, 0x0155, NO_DUMP ) /* not present in the set */ |
| 3189 | ROM_LOAD( "palce16v8.bin", 0x0000, 0x0117, NO_DUMP ) /* not present in the set */ |
| 3190 | ROM_LOAD( "1-peel18cv8p.bin", 0x0200, 0x0155, NO_DUMP ) /* not present in the set */ |
| 3191 | ROM_LOAD( "2-peel18cv8p.bin", 0x0400, 0x0155, NO_DUMP ) /* not present in the set */ |
| 2606 | 3192 | ROM_END |
| 2607 | 3193 | |
| 2608 | 3194 | |
| r7640 | r7641 | |
| 2631 | 3217 | ROM_LOAD( "l1.bin", 0x8000, 0x8000, CRC(beadc35c) SHA1(8a6a5954a827def8c4c3b904d8ee58a4bde53d85) ) |
| 2632 | 3218 | |
| 2633 | 3219 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2634 | | ROM_LOAD( "lluck3x3_nvram.bin", 0x0000, 0x0800, CRC(2fe79cff) SHA1(7839c04336b7702c7bdcd2b6917a353f4376f824) ) |
| 3220 | ROM_LOAD( "lluck3x3_nvram.bin", 0x0000, 0x0800, CRC(2fe79cff) SHA1(7839c04336b7702c7bdcd2b6917a353f4376f824) ) |
| 2635 | 3221 | |
| 2636 | 3222 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2637 | | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 3223 | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 2638 | 3224 | ROM_END |
| 2639 | 3225 | |
| 2640 | 3226 | |
| r7640 | r7641 | |
| 2647 | 3233 | ROM_LOAD( "l1.bin", 0x8000, 0x8000, CRC(beadc35c) SHA1(8a6a5954a827def8c4c3b904d8ee58a4bde53d85) ) |
| 2648 | 3234 | |
| 2649 | 3235 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2650 | | ROM_LOAD( "lluck4x1_nvram.bin", 0x0000, 0x0800, CRC(05d2d7b8) SHA1(1188b2b4835cadd95b1e9160c2948a2e3457afd2) ) |
| 3236 | ROM_LOAD( "lluck4x1_nvram.bin", 0x0000, 0x0800, CRC(05d2d7b8) SHA1(1188b2b4835cadd95b1e9160c2948a2e3457afd2) ) |
| 2651 | 3237 | |
| 2652 | 3238 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2653 | | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 3239 | ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) ) |
| 2654 | 3240 | ROM_END |
| 2655 | 3241 | |
| 2656 | 3242 | |
| r7640 | r7641 | |
| 2667 | 3253 | |
| 2668 | 3254 | Some versions have Mexican Rockwell R65c02. |
| 2669 | 3255 | The game doesn't work with a regular 65c02 CPU. |
| 3256 | |
| 3257 | There are different programs that carry the same |
| 3258 | graphics set for green TAB / Impera boards. |
| 3259 | |
| 3260 | TAB blue boards can run the same programs, but needs |
| 3261 | the encrypted graphics set. |
| 2670 | 3262 | */ |
| 2671 | 3263 | |
| 2672 | 3264 | ROM_START( magicrd2 ) /* Impera */ |
| 2673 | | ROM_REGION( 0x18000, "maincpu", 0 ) |
| 2674 | | ROM_LOAD( "magicard.004", 0x0000, 0x8000, CRC(f6e948b8) SHA1(7d5983015a508ab135ccbf69b7f3c526c229e3ef) ) /* only last 16kbyte visible? */ |
| 2675 | | ROM_LOAD( "magicard.01", 0x8000, 0x10000, CRC(c94767d4) SHA1(171ac946bdf2575f9e4a31e534a8e641597af519) ) /* 1st and 2nd half identical */ |
| 3265 | ROM_REGION( 0x10000, "maincpu", 0 ) /* magicard.004 has extra code, and 2 different NVRAM contents harcoded */ |
| 3266 | ROM_LOAD( "magicard.004", 0x0000, 0x8000, CRC(f6e948b8) SHA1(7d5983015a508ab135ccbf69b7f3c526c229e3ef) ) |
| 3267 | ROM_LOAD( "magicard.01", 0x8000, 0x8000, CRC(c94767d4) SHA1(171ac946bdf2575f9e4a31e534a8e641597af519) ) /* 1st and 2nd half identical */ |
| 3268 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2676 | 3269 | |
| 2677 | 3270 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 2678 | 3271 | ROM_LOAD( "mc2gr2.bin", 0x0000, 0x8000, CRC(733da697) SHA1(45122c64d5a371ec91cecc67b7faf179078e714d) ) |
| 2679 | 3272 | ROM_LOAD( "mc2gr1.bin", 0x8000, 0x8000, CRC(2406b8d2) SHA1(e9d7a25562fd5adee351d7ef6ba02fff6aab021a) ) |
| 2680 | 3273 | |
| 2681 | 3274 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2682 | | ROM_LOAD( "magicrd2_nvram.bin", 0x0000, 0x0800, CRC(343b3162) SHA1(1524959dbbc0c6d7c5c3a4a6b20976382cfbe88f) ) |
| 3275 | ROM_LOAD( "magicrd2_nvram.bin", 0x0000, 0x0800, CRC(343b3162) SHA1(1524959dbbc0c6d7c5c3a4a6b20976382cfbe88f) ) |
| 2683 | 3276 | |
| 2684 | 3277 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2685 | 3278 | ROM_LOAD( "mc2-82s147.bin", 0x0000, 0x0200, CRC(aa91cc35) SHA1(79f9a755441500e618c4183f524f969fffd44100) ) |
| r7640 | r7641 | |
| 2732 | 3325 | ROM_LOAD( "v1.bin", 0x8000, 0x8000, CRC(23e0d1c6) SHA1(98967b14d3264c444a1dfbd15c57cde70f41f09d) ) |
| 2733 | 3326 | |
| 2734 | 3327 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2735 | | ROM_LOAD( "vegasslw_nvram.bin", 0x0000, 0x0800, CRC(59b84075) SHA1(964531320d29adc42c3d8f0a28df395354a51d9b) ) |
| 3328 | ROM_LOAD( "vegasslw_nvram.bin", 0x0000, 0x0800, CRC(1aa043e3) SHA1(c93d071effb2f2fe95e9dc751174c2c765595f74) ) |
| 2736 | 3329 | |
| 2737 | | ROM_REGION( 0x0200, "proms", 0 ) |
| 2738 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 3330 | ROM_REGION( 0x0200, "proms", 0 ) /* PLD address the 2nd half */ |
| 3331 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2739 | 3332 | ROM_END |
| 2740 | 3333 | |
| 2741 | 3334 | |
| r7640 | r7641 | |
| 2748 | 3341 | ROM_LOAD( "v1.bin", 0x8000, 0x8000, CRC(23e0d1c6) SHA1(98967b14d3264c444a1dfbd15c57cde70f41f09d) ) |
| 2749 | 3342 | |
| 2750 | 3343 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2751 | | ROM_LOAD( "vegasfst_nvram.bin", 0x0000, 0x0800, CRC(627d13d7) SHA1(03ac605c589c645b672c57b0695dcb90240068e1) ) |
| 3344 | ROM_LOAD( "vegasfst_nvram.bin", 0x0000, 0x0800, CRC(5034de7a) SHA1(ab2077a49d94676531c73ad8d8ce9548bbfa2b81) ) |
| 2752 | 3345 | |
| 2753 | | ROM_REGION( 0x0200, "proms", 0 ) |
| 2754 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 3346 | ROM_REGION( 0x0200, "proms", 0 ) /* PLD address the 2nd half */ |
| 3347 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2755 | 3348 | ROM_END |
| 2756 | 3349 | |
| 2757 | 3350 | |
| r7640 | r7641 | |
| 2764 | 3357 | ROM_LOAD( "ch1.bin", 0x8000, 0x8000, CRC(0a3679c0) SHA1(ce8a067e1a2eccf9fabb16733ef3a14e0e8129e5) ) /* X & Y in txt layer */ |
| 2765 | 3358 | |
| 2766 | 3359 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2767 | | ROM_LOAD( "vegasfte_nvram.bin", 0x0000, 0x0800, CRC(c09e49a2) SHA1(e95f444f1bfda0a2f2af6045f6079e16f13d244d) ) |
| 3360 | ROM_LOAD( "vegasfte_nvram.bin", 0x0000, 0x0800, CRC(166c6055) SHA1(db2143a2a3adc92578bd3707391d2f5030cc6a6f) ) |
| 2768 | 3361 | |
| 3362 | ROM_REGION( 0x0200, "proms", 0 ) /* PLD address the 2nd half */ |
| 3363 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 3364 | ROM_END |
| 3365 | |
| 3366 | |
| 3367 | ROM_START( vegasmil ) |
| 3368 | ROM_REGION( 0x10000, "maincpu", 0 ) /* Mile */ |
| 3369 | ROM_LOAD( "mile.bin", 0x8000, 0x8000, CRC(ef7e02e2) SHA1(7432b0e723dc528901c422ab1d7d01fd1bc1eb20) ) |
| 3370 | |
| 3371 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3372 | ROM_LOAD( "v2.bin", 0x0000, 0x8000, CRC(af7ab460) SHA1(01ea400424152c09c10eb83a1bd569019969ccb7) ) |
| 3373 | ROM_LOAD( "v1.bin", 0x8000, 0x8000, CRC(23e0d1c6) SHA1(98967b14d3264c444a1dfbd15c57cde70f41f09d) ) |
| 3374 | |
| 3375 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 3376 | ROM_LOAD( "vegasmil_nvram.bin", 0x0000, 0x0800, CRC(d2608e5f) SHA1(ac936df71dbc0bfb811a3ba3c91444a2a3e7b036) ) |
| 3377 | |
| 2769 | 3378 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2770 | | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 3379 | ROM_LOAD( "jokercrd_prom.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2771 | 3380 | ROM_END |
| 2772 | 3381 | |
| 2773 | | |
| 2774 | 3382 | /* |
| 2775 | 3383 | |
| 2776 | 3384 | Impera - Jolly Joker |
| r7640 | r7641 | |
| 2862 | 3470 | ROM_LOAD( "impera1.bin", 0x8000, 0x8000, CRC(c3ab44dd) SHA1(e46c0fd94da561f57033647f1703fa135777ece5) ) |
| 2863 | 3471 | |
| 2864 | 3472 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2865 | | ROM_LOAD( "jolyjokr_nvram.bin", 0x0000, 0x0800, CRC(f33e66ed) SHA1(7a4b9a1b2f976d5d26f54915a213d5ac5eca0a42) ) |
| 3473 | ROM_LOAD( "jolyjokr_nvram.bin", 0x0000, 0x0800, CRC(f33e66ed) SHA1(7a4b9a1b2f976d5d26f54915a213d5ac5eca0a42) ) |
| 2866 | 3474 | |
| 2867 | 3475 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2868 | 3476 | ROM_LOAD( "am27s29.bin", 0x0000, 0x0200, CRC(0b671bba) SHA1(92d512e02b50f98b7bc5a60deee4fee722656c4f) ) |
| r7640 | r7641 | |
| 2878 | 3486 | ROM_LOAD( "impera1.bin", 0x8000, 0x8000, CRC(c3ab44dd) SHA1(e46c0fd94da561f57033647f1703fa135777ece5) ) |
| 2879 | 3487 | |
| 2880 | 3488 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2881 | | ROM_LOAD( "jolyjokra_nvram.bin", 0x0000, 0x0800, CRC(ed43693c) SHA1(d4aa4e539ab12c97bc9b9b1077997195a11d782b) ) |
| 3489 | ROM_LOAD( "jolyjokra_nvram.bin", 0x0000, 0x0800, CRC(ed43693c) SHA1(d4aa4e539ab12c97bc9b9b1077997195a11d782b) ) |
| 2882 | 3490 | |
| 2883 | 3491 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2884 | 3492 | ROM_LOAD( "am27s29.bin", 0x0000, 0x0200, CRC(0b671bba) SHA1(92d512e02b50f98b7bc5a60deee4fee722656c4f) ) |
| r7640 | r7641 | |
| 2888 | 3496 | /* |
| 2889 | 3497 | Jolly Joker (40bet, croatian hack) |
| 2890 | 3498 | |
| 2891 | | am27s29_ic40.bin 1ST AND 2ND HALF IDENTICAL |
| 2892 | | ic25.bin 1ST AND 2ND HALF IDENTICAL |
| 2893 | | ic26.bin 1ST AND 2ND HALF IDENTICAL |
| 3499 | am27s29_ic40.bin 1ST AND 2ND HALF IDENTICAL |
| 3500 | ic25.bin 1ST AND 2ND HALF IDENTICAL |
| 3501 | ic26.bin 1ST AND 2ND HALF IDENTICAL |
| 2894 | 3502 | |
| 2895 | | These graphics ROMs have enough data to fix the bitrotten graphics from the other Jolly Joker sets. |
| 2896 | | impera1.bin ---> bits 7 & 6 |
| 2897 | | impera2.bin ---> bits 7 & 0 |
| 3503 | These graphics ROMs have enough data to fix the bitrotten graphics from the other Jolly Joker sets. |
| 3504 | impera1.bin ---> bits 7 & 6 |
| 3505 | impera2.bin ---> bits 7 & 0 |
| 2898 | 3506 | |
| 2899 | | Two slightly different programs. One in each half. |
| 2900 | | Both have Min Bet (5), Max Bet (40). |
| 2901 | | Surely selectable through a PLD. |
| 3507 | Two slightly different programs. One in each half. |
| 3508 | Both have Min Bet (5), Max Bet (40). |
| 3509 | Surely selectable through a PLD. |
| 2902 | 3510 | |
| 2903 | 3511 | */ |
| 2904 | 3512 | ROM_START( jolyjokrb ) |
| 2905 | | ROM_REGION( 0x18000, "maincpu", 0 ) /* Two slightly different programs. Using the 1st one...*/ |
| 2906 | | ROM_LOAD( "unbekannt.bin", 0x8000, 0x10000, CRC(327fa3d7) SHA1(2435aada2377b2f8f01d059a7aba9bc7a8993537) ) /* 1st prg */ |
| 3513 | ROM_REGION( 0x10000, "maincpu", 0 ) /* Two slightly different programs. Using the 1st one...*/ |
| 3514 | ROM_LOAD( "unbekannt.bin", 0x8000, 0x8000, CRC(327fa3d7) SHA1(2435aada2377b2f8f01d059a7aba9bc7a8993537) ) /* 1st prg */ |
| 3515 | ROM_IGNORE( 0x8000 ) /* Using the 1st program. Discarding 2nd half */ |
| 2907 | 3516 | // ROM_LOAD( "unbekannt.bin", 0x0000, 0x10000, CRC(327fa3d7) SHA1(2435aada2377b2f8f01d059a7aba9bc7a8993537) ) /* 2nd prg */ |
| 2908 | 3517 | |
| 2909 | | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 2910 | | ROM_LOAD( "ic25.bin", 0x00000, 0x10000, CRC(1bd067af) SHA1(9436fe085ba63c00a12ea80903470a84535e3dc1) ) |
| 2911 | | ROM_LOAD( "ic26.bin", 0x10000, 0x10000, CRC(3e45dfc6) SHA1(8fd0b0cc00cdd96244ae7e7a91f6613b1c144ee0) ) |
| 2912 | | ROM_COPY( "gfx1", 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */ |
| 3518 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3519 | ROM_LOAD( "ic26.bin", 0x0000, 0x8000, CRC(3e45dfc6) SHA1(8fd0b0cc00cdd96244ae7e7a91f6613b1c144ee0) ) |
| 3520 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 3521 | ROM_LOAD( "ic25.bin", 0x8000, 0x8000, CRC(1bd067af) SHA1(9436fe085ba63c00a12ea80903470a84535e3dc1) ) |
| 3522 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2913 | 3523 | |
| 2914 | 3524 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ |
| 2915 | | ROM_LOAD( "jolyjokrb_nvram.bin", 0x0000, 0x0800, CRC(17007bb5) SHA1(72e08096293ce4fbde205a63b5ecd9641dbee017) ) |
| 3525 | ROM_LOAD( "jolyjokrb_nvram.bin", 0x0000, 0x0800, CRC(17007bb5) SHA1(72e08096293ce4fbde205a63b5ecd9641dbee017) ) |
| 2916 | 3526 | |
| 2917 | 3527 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2918 | | ROM_LOAD( "am27s29_ic40.bin", 0x0000, 0x0200, CRC(0b671bba) SHA1(92d512e02b50f98b7bc5a60deee4fee722656c4f) ) |
| 3528 | ROM_LOAD( "am27s29_ic40.bin", 0x0000, 0x0200, CRC(0b671bba) SHA1(92d512e02b50f98b7bc5a60deee4fee722656c4f) ) |
| 2919 | 3529 | ROM_END |
| 2920 | 3530 | |
| 2921 | 3531 | |
| 2922 | | ROM_START( jokercrd ) |
| 3532 | /* |
| 3533 | Title: MULTI WIN |
| 3534 | Company: FUN WORLD |
| 3535 | Version: 0167 |
| 3536 | Date: 1992-11-11 |
| 3537 | |
| 3538 | Unknown or encrypted CPU. |
| 3539 | */ |
| 3540 | ROM_START( multiwin ) |
| 3541 | ROM_REGION( 0x10000*2, "maincpu", 0 ) // *2 for decrypted opcodes (see init) |
| 3542 | ROM_LOAD( "multiwin3.bin", 0x8000, 0x8000, CRC(995ca34d) SHA1(4d6ec10810ece493447a01af149ad8387d5f3c2f) ) /* just the 2nd half */ |
| 3543 | ROM_LOAD( "multiwin4.bin", 0x4000, 0x8000, CRC(f062125c) SHA1(93c9aa518810798f3449a28e851eb6433ba7bbf8) ) /* just the 2nd half */ |
| 3544 | |
| 3545 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3546 | ROM_LOAD( "multiwin1.bin", 0x0000, 0x8000, CRC(97589aa6) SHA1(2486116637bd906cb3b32acd86fc861c48a0475e) ) |
| 3547 | ROM_LOAD( "multiwin2.bin", 0x8000, 0x8000, CRC(580b3239) SHA1(362aa85c57ad0bce1d7d15a93b9998daba4d306a) ) |
| 3548 | |
| 3549 | ROM_REGION( 0x0200, "proms", 0 ) |
| 3550 | ROM_LOAD( "multi_prom.bin", 0x0000, 0x0200, BAD_DUMP CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) /* using the joker card one */ |
| 3551 | ROM_END |
| 3552 | |
| 3553 | |
| 2923 | 3554 | /* (Multi) Joker Card from Vesely Svet (Sprightly World). Czech poker game. |
| 2924 | | Program roms seems encrypted. Custom Funworld CPU based on 6502 family. |
| 2925 | | Seems to be a Big Deal clone. |
| 3555 | Program roms seems encrypted. Seems to be a Big Deal clone, running in |
| 3556 | Funworld Multi Win hardware. |
| 3557 | |
| 3558 | 1x Custom Funworld CPU, based on 6502 family. Silkscreened "Fun World Elektronik". |
| 3559 | 1x Maxim MAX690CPA - Microprocessor Supervisory IC (DIP 8). |
| 3560 | |
| 3561 | 2x MC68B21P PIAs. |
| 3562 | 1x GM68B45S CRT Controller. |
| 3563 | |
| 3564 | 1x AY-3-8910. |
| 3565 | 1x TDA2003 Audio amplifier. |
| 3566 | |
| 3567 | 4x ROM 27C256. |
| 3568 | 1x RAM GM76C28A. |
| 3569 | 1x RAM KM6264BL. |
| 3570 | 1x PROM N82S147AN. |
| 3571 | |
| 3572 | 1x PAL 16L8ACN |
| 3573 | |
| 3574 | 1x 8 DIP switches bank. |
| 3575 | 1x Push button (SW2). (reset?) |
| 3576 | 1x Variable Resistor (VR1). |
| 3577 | 1x 16 MHz. Crystal. |
| 3578 | 1x CR2025 (3V) battery. |
| 3579 | |
| 3580 | 1x 2x17 pin male connector. |
| 3581 | 1x 2x22 Edge connector. |
| 3582 | 1x 2x8 Edge connector. |
| 3583 | |
| 3584 | ------------------------------------------------------------------------ |
| 3585 | |
| 3586 | IC41.bin seems from another game. You can see the following strings: |
| 3587 | |
| 3588 | AMATIC TRADING GMBH AUSTRIA |
| 3589 | |
| 3590 | JEDE UNERLAUBTEVERAENDERUNG |
| 3591 | BZWKOPIE WIRD DENZORN DER |
| 3592 | GOETTERAUF SICH ZIEHEN |
| 3593 | |
| 3594 | VERSION A267BC 200/300 KARTE |
| 3595 | 1993-11-29 |
| 3596 | |
| 3597 | ------------------------------------------------------------------------ |
| 3598 | |
| 3599 | ic41.bin 1ST AND 2ND HALF IDENTICAL |
| 3600 | ic37.bin 1ST AND 2ND HALF IDENTICAL |
| 3601 | ic10.bin BADADDR xxxxxx-xxxxxxxx |
| 2926 | 3602 | */ |
| 2927 | | ROM_REGION( 0x18000, "maincpu", 0 ) |
| 2928 | | ROM_LOAD( "ic41.bin", 0x8000, 0x8000, CRC(d36188b3) SHA1(3fb848fabbbde9fbb70875b3dfef62bfb3a8cbcb) ) /* only last 16kbyte visible? */ |
| 2929 | | ROM_LOAD( "ic37.bin", 0x10000, 0x8000, CRC(8e0d70c4) SHA1(018f92631acbe98e5826a41698f0e07b4b46cd71) ) /* 1st and 2nd half identical */ |
| 2930 | | ROM_COPY( "maincpu", 0x10000, 0xc000, 0x4000 ) /* rgn, srcoffset, offset, length */ |
| 2931 | 3603 | |
| 3604 | ROM_START( jokercrd ) |
| 3605 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3606 | ROM_LOAD( "ic41.bin", 0x8000, 0x4000, CRC(d36188b3) SHA1(3fb848fabbbde9fbb70875b3dfef62bfb3a8cbcb) ) |
| 3607 | ROM_IGNORE( 0x4000 ) /* Identical halves. Discarding 2nd half */ |
| 3608 | ROM_LOAD( "ic37.bin", 0xc000, 0x4000, CRC(8e0d70c4) SHA1(018f92631acbe98e5826a41698f0e07b4b46cd71) ) |
| 3609 | ROM_IGNORE( 0x4000 ) /* Identical halves. Discarding 2nd half */ |
| 3610 | |
| 2932 | 3611 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 2933 | | ROM_LOAD( "ic10.bin", 0x0000, 0x8000, CRC(2bbd27ad) SHA1(37d37899398d95beac5f3cbffc4277c97aca1a23) ) |
| 2934 | | ROM_LOAD( "ic11.bin", 0x8000, 0x8000, CRC(21d05a57) SHA1(156c18ec31b08e4c4af6f73b49cb5d5c68d1670f) ) /* bad dump?, or sprite plane */ |
| 3612 | ROM_LOAD( "vesely_zg_1.ic10", 0x0000, 0x8000, CRC(2bbd27ad) SHA1(37d37899398d95beac5f3cbffc4277c97aca1a23) ) |
| 3613 | ROM_LOAD( "vesely_zg_2.ic11", 0x8000, 0x8000, CRC(21d05a57) SHA1(156c18ec31b08e4c4af6f73b49cb5d5c68d1670f) ) /* bad dump, or sprite plane bug? */ |
| 2935 | 3614 | |
| 2936 | 3615 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2937 | | ROM_LOAD( "ic13.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 3616 | ROM_LOAD( "ic13.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) ) |
| 2938 | 3617 | ROM_END |
| 2939 | 3618 | |
| 2940 | 3619 | |
| r7640 | r7641 | |
| 2963 | 3642 | */ |
| 2964 | 3643 | |
| 2965 | 3644 | ROM_START( mongolnw ) |
| 2966 | | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 2967 | | ROM_LOAD( "prgteov.2.3m.u16", 0x10000, 0x10000, CRC(996b851a) SHA1(ef4e3d036ca10b33c83749024d04c4d4c09feeb7) ) |
| 2968 | | ROM_COPY( "maincpu", 0x18000, 0x8000, 0x8000 ) |
| 3645 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3646 | ROM_LOAD( "prgteov.2.3m.u16", 0x8000, 0x8000, CRC(996b851a) SHA1(ef4e3d036ca10b33c83749024d04c4d4c09feeb7) ) |
| 3647 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2969 | 3648 | |
| 2970 | 3649 | ROM_REGION( 0x10000, "cpu1", 0 ) /* TSC87C52-16CB MCU Code */ |
| 2971 | | ROM_LOAD( "tsc87c52-mf.u40", 0x00000, 0x02000 , CRC(ae22e778) SHA1(0897e05967d68d7f23489e98717663e3a3176070) ) |
| 3650 | ROM_LOAD( "tsc87c52-mf.u40", 0x0000, 0x02000 , CRC(ae22e778) SHA1(0897e05967d68d7f23489e98717663e3a3176070) ) |
| 2972 | 3651 | |
| 2973 | | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 2974 | | ROM_LOAD( "mong.rc.b2.u3", 0x00000, 0x10000, CRC(5e019b73) SHA1(63a544dccb9589e5a6b938e604c09d4d8fc060fc) ) |
| 2975 | | ROM_LOAD( "mong.rc.c1.u2", 0x10000, 0x10000, CRC(e3fc24c4) SHA1(ea4e67ace63b55a76365f7e11a67c7d420a52dd7) ) |
| 2976 | | ROM_COPY( "gfx1", 0x10000, 0x8000, 0x8000 ) /* rgn, srcoffset, offset, length */ |
| 3652 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3653 | ROM_LOAD( "mong.rc.b2.u3", 0x0000, 0x8000, CRC(5e019b73) SHA1(63a544dccb9589e5a6b938e604c09d4d8fc060fc) ) |
| 3654 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 3655 | ROM_LOAD( "mong.rc.c1.u2", 0x8000, 0x8000, CRC(e3fc24c4) SHA1(ea4e67ace63b55a76365f7e11a67c7d420a52dd7) ) |
| 3656 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 2977 | 3657 | |
| 2978 | 3658 | ROM_REGION( 0x0200, "proms", 0 ) |
| 2979 | | ROM_LOAD( "am27s29pc_mf.u24", 0x0000, 0x0200, CRC(da9181af) SHA1(1b30d992f3b2a4b3bd81e3f99632311988e2e8d1) ) |
| 3659 | ROM_LOAD( "am27s29pc_mf.u24", 0x0000, 0x0200, CRC(da9181af) SHA1(1b30d992f3b2a4b3bd81e3f99632311988e2e8d1) ) |
| 2980 | 3660 | |
| 2981 | 3661 | ROM_REGION( 0x0200, "plds", 0 ) |
| 2982 | | ROM_LOAD( "palce16v8h_mf.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 3662 | ROM_LOAD( "palce16v8h_mf.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 2983 | 3663 | ROM_END |
| 2984 | 3664 | |
| 2985 | 3665 | |
| r7640 | r7641 | |
| 3006 | 3686 | - 2x 8 DIP switches |
| 3007 | 3687 | - 1x 4 DIP switches |
| 3008 | 3688 | - 1x green led |
| 3689 | |
| 3690 | am27s29pc_sn.u24 1ST AND 2ND HALF IDENTICAL |
| 3691 | prgteo2gv2.3.u16 1ST AND 2ND HALF IDENTICAL |
| 3692 | soccer1.u2 1ST AND 2ND HALF IDENTICAL |
| 3693 | soccer2.u3 1ST AND 2ND HALF IDENTICAL |
| 3694 | tsc87c52-sn.u40 1xxxxxxxxxxxx = 0xFF |
| 3009 | 3695 | */ |
| 3010 | 3696 | |
| 3011 | 3697 | ROM_START( soccernw ) |
| 3012 | | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 3013 | | ROM_LOAD( "prgteo2gv2.3.u16", 0x10000, 0x10000, CRC(c61d1937) SHA1(c516f13a108da60b7ccee338b63a025009ef9099) ) |
| 3014 | | ROM_COPY( "maincpu", 0x18000, 0x8000, 0x8000 ) |
| 3698 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3699 | ROM_LOAD( "prgteo2gv2.3.u16", 0x8000, 0x8000, CRC(c61d1937) SHA1(c516f13a108da60b7ccee338b63a025009ef9099) ) |
| 3700 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 3015 | 3701 | |
| 3016 | 3702 | ROM_REGION( 0x10000, "cpu1", 0 ) /* TSC87C52-16CB MCU Code */ |
| 3017 | | ROM_LOAD( "tsc87c52-sn.u40", 0x00000, 0x02000 , CRC(af0bd35b) SHA1(c6613a7bcdec2fd6060d6dcf639654568de87e75) ) |
| 3703 | ROM_LOAD( "tsc87c52-sn.u40", 0x0000, 0x02000 , CRC(af0bd35b) SHA1(c6613a7bcdec2fd6060d6dcf639654568de87e75) ) |
| 3018 | 3704 | |
| 3019 | | ROM_REGION( 0x20000, "gfx1", 0 ) |
| 3020 | | ROM_LOAD( "soccer2.u3", 0x00000, 0x10000, CRC(db09b5bb) SHA1(a12bf2938f5482ea5ebc0db6fd6594e1beb97017) ) |
| 3021 | | ROM_LOAD( "soccer1.u2", 0x10000, 0x10000, CRC(564cc467) SHA1(8f90c4bacd97484623666b25dae77e628908e243) ) |
| 3022 | | ROM_COPY( "gfx1", 0x10000, 0x8000, 0x8000 ) /* rgn, srcoffset, offset, length */ |
| 3705 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3706 | ROM_LOAD( "soccer2.u3", 0x0000, 0x8000, CRC(db09b5bb) SHA1(a12bf2938f5482ea5ebc0db6fd6594e1beb97017) ) |
| 3707 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 3708 | ROM_LOAD( "soccer1.u2", 0x8000, 0x8000, CRC(564cc467) SHA1(8f90c4bacd97484623666b25dae77e628908e243) ) |
| 3709 | ROM_IGNORE( 0x8000 ) /* Identical halves. Discarding 2nd half */ |
| 3023 | 3710 | |
| 3024 | 3711 | ROM_REGION( 0x0200, "proms", 0 ) |
| 3025 | | ROM_LOAD( "am27s29pc_sn.u24", 0x0000, 0x0200, CRC(d02894fc) SHA1(adcdc912cc0b7a7f67b122fa94fca921c957b282) ) |
| 3712 | ROM_LOAD( "am27s29pc_sn.u24", 0x0000, 0x0200, CRC(d02894fc) SHA1(adcdc912cc0b7a7f67b122fa94fca921c957b282) ) |
| 3026 | 3713 | |
| 3027 | 3714 | ROM_REGION( 0x0200, "plds", 0 ) |
| 3028 | | ROM_LOAD( "palce16v8h_sn.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 3715 | ROM_LOAD( "palce16v8h_sn.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */ |
| 3029 | 3716 | ROM_END |
| 3030 | 3717 | |
| 3031 | 3718 | |
| r7640 | r7641 | |
| 3073 | 3760 | ROM_END |
| 3074 | 3761 | |
| 3075 | 3762 | |
| 3763 | /**** Fun World Quiz **** |
| 3076 | 3764 | |
| 3765 | Fun World Quiz |
| 3766 | ?hlinger Ges.m.b.H. |
| 3767 | |
| 3768 | Horizontal Display |
| 3769 | Currents |
| 3770 | +5V 2A |
| 3771 | +12V 0.5A |
| 3772 | -5V - |
| 3773 | |
| 3774 | 4 way joystick. |
| 3775 | 1 action button. |
| 3776 | |
| 3777 | |
| 3778 | Pinouts |
| 3779 | --------------+--+--+-------------- |
| 3780 | GND |A |01| GND |
| 3781 | GND |B |02| GND |
| 3782 | GND |C |03| GND |
| 3783 | +5V |D |04| +5V |
| 3784 | +12V |E |05| +12V |
| 3785 | |F |06| |
| 3786 | |H |07| |
| 3787 | ... |J |08| ... Empty (*) |
| 3788 | Credits |K |09| ... |
| 3789 | ... |L |10| ... |
| 3790 | ... |M |11| 1P Start |
| 3791 | ... |N |12| 2P Start |
| 3792 | 1P Action 1 |P |13| 1P Action 2 |
| 3793 | 2P Action 1 |R |14| 2P Action 2 |
| 3794 | 1P Left |S |15| 1P Right |
| 3795 | 1P Down |T |16| 1P Up |
| 3796 | 2P Left |U |17| 2P Right |
| 3797 | 2P Down |V |18| 2P Up |
| 3798 | Video Green |W |19| Video Red |
| 3799 | Video Sync |X |20| Video Blue |
| 3800 | Speaker |Y |21| Video GND |
| 3801 | ... |Z |22| Speaker |
| 3802 | |
| 3803 | Some pinout letters are missing. |
| 3804 | This was a decision made by engineers |
| 3805 | to avoid mix-ups. |
| 3806 | |
| 3807 | (*) Normally used in System Austria pinout. |
| 3808 | |
| 3809 | |
| 3810 | DIP Switches (simple on/off) |
| 3811 | --+----------------------------------------------------------------------- |
| 3812 | 1 | Buchhaltung / Bookkeeping. |
| 3813 | 2 | Nicht verwendet / Not used. |
| 3814 | 3 | Ohne Zahlen (Wien) / No numbers (Vienna). |
| 3815 | 4 | Nicht verwendet / Not used. |
| 3816 | 5 | Nicht verwendet / Not used. |
| 3817 | 6 | Richtige Antwort wird angezeigt / Right answer is shown. |
| 3818 | 7 | Frage wird bei Einsatz angezeigt / Question is shown when bet is made. |
| 3819 | 8 | Spiel mit Einsatzwahl / Game with betting. |
| 3820 | --+----------------------------------------------------------------------- |
| 3821 | |
| 3822 | */ |
| 3823 | ROM_START( funquiz ) /* Fun World Quiz */ |
| 3824 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3825 | ROM_LOAD( "kqu_6.bin", 0xc000, 0x4000, CRC(50f0e586) SHA1(85ce5b95283113e2ac94fd882c57ce1b26135ed0) ) |
| 3826 | |
| 3827 | ROM_REGION( 0x10000, "gfx1", 0 ) |
| 3828 | ROM_FILL( 0x0000, 0x4000, 0xff) |
| 3829 | ROM_LOAD( "q_3.bin", 0x4000, 0x4000, CRC(0dafa07a) SHA1(5d6fa842c617f92fad14a597396249d5a4d28c9a) ) |
| 3830 | ROM_FILL( 0x8000, 0x4000, 0xff) |
| 3831 | // ROM_LOAD( "q_2_nec.bin", 0xc000, 0x4000, BAD_DUMP CRC(8e3bfcc7) SHA1(81b35e786fab088a439a4423becf08a78a0b2df0) ) |
| 3832 | |
| 3833 | ROM_REGION( 0x10000, "badgfx", 0 ) /* just a temporal container */ |
| 3834 | ROM_LOAD( "q_2_nec.bin", 0xc000, 0x4000, BAD_DUMP CRC(8e3bfcc7) SHA1(81b35e786fab088a439a4423becf08a78a0b2df0) ) |
| 3835 | |
| 3836 | /* One unpopulated questions socket... Maybe sport_1 is missing */ |
| 3837 | ROM_REGION( 0x100000, "questions", ROMREGION_ERASEFF ) |
| 3838 | |
| 3839 | /* 01 - Allgemein */ |
| 3840 | ROM_LOAD( "allg_1.bin", 0x00000, 0x8000, CRC(1351cf56) SHA1(50e89c3e6d256bcf7f1d3c0dbef935e4e8561096) ) |
| 3841 | ROM_LOAD( "allg_2.bin", 0x08000, 0x8000, CRC(021492a4) SHA1(b59e1303f17c9e5af05a808118ae729205690bb2) ) |
| 3842 | ROM_LOAD( "allg_3.bin", 0x10000, 0x8000, CRC(de8e055f) SHA1(593fce143ee5994087bbac8b51ac7e2d02e8701c) ) |
| 3843 | ROM_LOAD( "allg_4.bin", 0x18000, 0x8000, CRC(5c87177a) SHA1(a8a8318165008cb3295e25d4b4d38146f44a32fc) ) // this one has the category in the rom in ALL caps, is it official? |
| 3844 | ROM_LOAD( "allg_5.bin", 0x20000, 0x8000, CRC(83056686) SHA1(00f14ded371751d54a391bf583d940b32ddeae58) ) |
| 3845 | |
| 3846 | /* 02 - Geschichte */ |
| 3847 | ROM_LOAD( "gesch_1.bin", 0x28000, 0x8000, CRC(6f785938) SHA1(1e3df7c262d8cb7d7981c9d424d4c1361fe55b50) ) |
| 3848 | ROM_LOAD( "gesch_2.bin", 0x30000, 0x8000, CRC(3363c0ba) SHA1(f1a2a86e6abc73dd9312fa744b6929fae138e219) ) |
| 3849 | |
| 3850 | /* 03 - Geographie */ |
| 3851 | ROM_LOAD( "geo_1.bin", 0x38000, 0x8000, CRC(504da831) SHA1(4bef7bed4d300400c094cb30e9af55d3c6f47c29) ) |
| 3852 | ROM_LOAD( "geo_2.bin", 0x40000, 0x8000, CRC(7c563119) SHA1(9f3ae3ba3e4f60d9ea4b5c95aa5aaada8bb446a3) ) |
| 3853 | |
| 3854 | /* 04 - Technik */ |
| 3855 | ROM_LOAD( "tech_1.bin", 0x48000, 0x8000, CRC(cf5b9edc) SHA1(f1085c9915d21c4da581d06c9568d2bb47d467ed) ) |
| 3856 | |
| 3857 | /* 05 - Sport */ |
| 3858 | ROM_LOAD( "sport_2.bin", 0x50000, 0x8000, CRC(7accde63) SHA1(75ec3a02368d3a07d48ef9a9ff4ca7f8cf7798e2) ) |
| 3859 | |
| 3860 | /* 07 - Pop */ |
| 3861 | ROM_LOAD( "pop_1.bin", 0x58000, 0x8000, CRC(5c74781e) SHA1(0a50a706fd397bb220e31f1a7adaa4204b242888) ) |
| 3862 | ROM_LOAD( "pop_2.bin", 0x60000, 0x8000, CRC(10103648) SHA1(6fdc1aa4dcc8919e46def1c19adc2b9686c0f72d) ) |
| 3863 | |
| 3864 | ROM_REGION( 0x0200, "proms", 0 ) |
| 3865 | ROM_LOAD( "82s147.bin", 0x0000, 0x0200, BAD_DUMP CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) |
| 3866 | ROM_END |
| 3867 | |
| 3868 | |
| 3869 | |
| 3077 | 3870 | /************************** |
| 3078 | 3871 | * Driver Initialization * |
| 3079 | 3872 | **************************/ |
| r7640 | r7641 | |
| 3280 | 4073 | |
| 3281 | 4074 | } |
| 3282 | 4075 | |
| 4076 | static DRIVER_INIT( multiwin ) |
| 4077 | /***************************************************** |
| 3283 | 4078 | |
| 4079 | This only decrypt the text strings. |
| 4080 | Need more work to get the opcodes properly decrypted |
| 4081 | |
| 4082 | ******************************************************/ |
| 4083 | { |
| 4084 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 4085 | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 4086 | |
| 4087 | int x; |
| 4088 | |
| 4089 | for (x=0x8000; x < 0x10000; x++) |
| 4090 | { |
| 4091 | ROM[x] = ROM[x] ^ 0x91; |
| 4092 | UINT8 code; |
| 4093 | |
| 4094 | ROM[x] = BITSWAP8(ROM[x],5,6,7,2,3,0,1,4); |
| 4095 | |
| 4096 | code = ROM[x]; |
| 4097 | |
| 4098 | /* decrypt code here */ |
| 4099 | |
| 4100 | ROM[x+0x10000] = code; |
| 4101 | } |
| 4102 | |
| 4103 | memory_set_decrypted_region(space, 0x8000, 0xffff, memory_region(machine, "maincpu") + 0x18000); |
| 4104 | } |
| 4105 | |
| 4106 | static DRIVER_INIT( royalcdc ) |
| 4107 | { |
| 4108 | /***************************************************** |
| 4109 | |
| 4110 | This only decrypt the text strings. |
| 4111 | The opcode encryption seems to be conditional, and |
| 4112 | bits of the XOR (and bitswap?) can be turned on and |
| 4113 | off, possibly depending on the address |
| 4114 | |
| 4115 | ******************************************************/ |
| 4116 | |
| 4117 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 4118 | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 4119 | |
| 4120 | int x; |
| 4121 | |
| 4122 | for (x=0x8000; x < 0x10000; x++) |
| 4123 | { |
| 4124 | ROM[x] = ROM[x] ^ 0x22; |
| 4125 | UINT8 code; |
| 4126 | |
| 4127 | // this seems correct for the data, plaintext decrypts fine |
| 4128 | ROM[x] = BITSWAP8(ROM[x],2,6,7,4,3,1,5,0); |
| 4129 | |
| 4130 | // the code uses different encryption, there are conflicts here |
| 4131 | // so it's probably address based |
| 4132 | code = ROM[x]; |
| 4133 | if (code==0x12) code = 0x10; // ^0x02 |
| 4134 | else if (code==0x1a) code = 0x18; // ^0x02 |
| 4135 | else if (code==0x20) code = 0xa2; // ^0x82 |
| 4136 | else if (code==0x26) code = 0xa2; // ^0x84 |
| 4137 | else if (code==0x39) code = 0xbd; // ^0x84 |
| 4138 | else if (code==0x5a) code = 0x58; // ^0x02 |
| 4139 | else if (code==0x5c) code = 0xd8; // ^0x84 |
| 4140 | else if (code==0x84) code = 0xa2; // ^0x26 |
| 4141 | else if (code==0x8f) code = 0xa9; // ^0x26 |
| 4142 | else if (code==0xaf) code = 0xa9; // ^0x06 |
| 4143 | else if (code==0xa2) code = 0x80; // ^0x22 |
| 4144 | else if (code==0xa3) code = 0x85; // ^0x26 |
| 4145 | else if (code==0xa8) code = 0x8e; // ^0x26 |
| 4146 | else if (code==0xa9) code = 0x8d; // ^0x24 |
| 4147 | else if (code==0xbb) code = 0xbd; // ^0x06 |
| 4148 | else if (code==0xc8) code = 0xca; // ^0x02 |
| 4149 | else if (code==0xc6) code = 0xe0; // ^0x26 |
| 4150 | else if (code==0xce) code = 0xe8; // ^0x26 |
| 4151 | else if (code==0xf4) code = 0xd0; // ^0x24 |
| 4152 | |
| 4153 | ROM[x+0x10000] = code; |
| 4154 | } |
| 4155 | |
| 4156 | memory_set_decrypted_region(space, 0x6000, 0xffff, memory_region(machine, "maincpu") + 0x16000); |
| 4157 | } |
| 4158 | |
| 4159 | |
| 3284 | 4160 | /************************* |
| 3285 | 4161 | * Game Drivers * |
| 3286 | 4162 | *************************/ |
| 3287 | 4163 | |
| 3288 | | /* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ |
| 3289 | | GAME( 1985, jollycrd, 0, funworld, funworld, 0, ROT0, "TAB-Austria", "Jolly Card (austrian)", 0 ) |
| 3290 | | GAME( 1985, jolyc3x3, jollycrd, funworld, funworld, 0, ROT0, "TAB-Austria", "Jolly Card (3x3 deal)", 0 ) |
| 3291 | | GAME( 2000, jolyc980, jollycrd, cuoreuno, jolyc980, 0, ROT0, "Spale-Soft", "Jolly Card Professional 2.0", 0 ) |
| 3292 | | GAME( 1998, jolycdev, jollycrd, funworld, funworld, 0, ROT0, "TAB/Evona", "Jolly Card (Evona Electronic)", 0 ) |
| 3293 | | GAME( 1985, jolyccra, jollycrd, cuoreuno, jolycdcr, 0, ROT0, "TAB-Austria", "Jolly Card (croatian, set 1)", 0 ) |
| 3294 | | GAME( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, 0, ROT0, "Soft Design", "Jolly Card (croatian, set 2)", 0 ) |
| 3295 | | GAME( 199?, jolycdit, jollycrd, cuoreuno, jolycdit, tabblue, ROT0, "bootleg", "Jolly Card (italian, blue TAB board, encrypted)", 0 ) |
| 3296 | | GAME( 1990, jolycdib, jollycrd, cuoreuno, jolycdib, tabblue, ROT0, "bootleg", "Jolly Card (italian, encrypted bootleg)", 0 ) /* not a real TAB blue PCB */ |
| 3297 | | GAME( 1985, sjcd2kx3, jollycrd, funworld, funworld, 0, ROT0, "M.P.", "Super Joly 2000 - 3x", 0 ) |
| 3298 | | GAME( 1986, jolycdab, jollycrd, funworld, funworld, 0, ROT0, "Inter Games", "Jolly Card (austrian, Funworld, bootleg)", GAME_NOT_WORKING ) |
| 3299 | | GAME( 1986, bigdeal, 0, funworld, bigdeal, 0, ROT0, "Funworld", "Big Deal (hungarian, set 1)", GAME_IMPERFECT_COLORS ) |
| 3300 | | GAME( 1986, bigdealb, bigdeal, funworld, bigdeal, 0, ROT0, "Funworld", "Big Deal (hungarian, set 2)", GAME_IMPERFECT_COLORS ) |
| 3301 | | GAME( 1986, jolycdat, bigdeal, funworld, bigdeal, 0, ROT0, "Funworld", "Jolly Card (austrian, Funworld)", GAME_IMPERFECT_COLORS ) |
| 3302 | | GAME( 1996, cuoreuno, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Cuore 1 (italian)", 0 ) |
| 3303 | | GAME( 1997, elephfam, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Elephant Family (italian, new)", 0 ) |
| 3304 | | GAME( 1996, elephfmb, elephfam, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Elephant Family (italian, old)", 0 ) |
| 3305 | | GAME( 1996, pool10, 0, cuoreuno, pool10, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 1)", 0 ) |
| 3306 | | GAME( 1996, pool10b, pool10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 2)", 0 ) |
| 3307 | | GAME( 1996, pool10c, pool10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 3)", 0 ) |
| 3308 | | GAME( 1997, pool10d, pool10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 4)", 0 ) |
| 3309 | | GAME( 1997, tortufam, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Tortuga Family (italian)", 0 ) |
| 3310 | | GAME( 1996, potgame, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pot Game (italian)", 0 ) |
| 3311 | | GAME( 1996, bottle10, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Bottle 10 (italian, set 1)", 0 ) |
| 3312 | | GAME( 1996, bottl10b, bottle10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Bottle 10 (italian, set 2)", 0 ) |
| 3313 | | GAME( 1991, royalcrd, 0, royalcrd, royalcrd, 0, ROT0, "TAB-Austria", "Royal Card (austrian, set 1)", 0 ) |
| 3314 | | GAME( 1991, royalcdb, royalcrd, royalcrd, royalcrd, 0, ROT0, "TAB-Austria", "Royal Card (austrian, set 2)", 0 ) |
| 3315 | | GAME( 1991, royalcdc, royalcrd, royalcrd, royalcrd, 0, ROT0, "Evona Electronic","Royal Card (slovak, encrypted)", GAME_WRONG_COLORS | GAME_NOT_WORKING ) |
| 3316 | | GAME( 1993, royalcdp, royalcrd, cuoreuno, royalcrd, 0, ROT0, "Digital Dreams", "Royal Card v2.0 Professional", GAME_NOT_WORKING ) |
| 3317 | | GAME( 1991, lluck3x3, royalcrd, cuoreuno, royalcrd, 0, ROT0, "TAB-Austria", "Lucky Lady (3x3 deal)", 0 ) |
| 3318 | | GAME( 1991, lluck4x1, royalcrd, royalcrd, royalcrd, 0, ROT0, "TAB-Austria", "Lucky Lady (4x1 aces)", 0 ) |
| 3319 | | GAME( 1996, magicrd2, 0, magicrd2, magicrd2, 0, ROT0, "Impera", "Magic Card II (bulgarian)", GAME_IMPERFECT_SOUND ) |
| 3320 | | GAME( 1996, magicd2a, magicrd2, magicrd2, magicrd2, magicd2a, ROT0, "Impera", "Magic Card II (green TAB or Impera board)", GAME_NOT_WORKING ) |
| 3321 | | GAME( 1996, magicd2b, magicrd2, magicrd2, magicrd2, magicd2b, ROT0, "Impera", "Magic Card II (blue TAB board, encrypted)", GAME_NOT_WORKING ) |
| 3322 | | GAME( 1993, vegasslw, 0, funworld, funworld, 0, ROT0, "Funworld", "Royal Vegas Joker Card (slow deal)", 0 ) |
| 3323 | | GAME( 1993, vegasfst, vegasslw, funworld, funworld, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal)", 0 ) |
| 3324 | | GAME( 1993, vegasfte, vegasslw, funworld, funworld, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal, english gfx)", 0 ) |
| 3325 | | GAME( 198?, jolyjokr, 0, funworld, funworld, 0, ROT0, "Impera", "Jolly Joker (98bet, set 1)", 0 ) |
| 3326 | | GAME( 198?, jolyjokra, jolyjokr, funworld, jolyjokra, 0, ROT0, "Impera", "Jolly Joker (98bet, set 2)", 0 ) |
| 3327 | | GAME( 198?, jolyjokrb, jolyjokr, funworld, funworld, 0, ROT0, "Impera", "Jolly Joker (40bet, croatian hack)", 0 ) |
| 3328 | | GAME( 1993, jokercrd, 0, funworld, funworld, 0, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", GAME_WRONG_COLORS | GAME_NOT_WORKING ) |
| 3329 | | GAME( 199?, mongolnw, 0, royalmcu, royalcrd, 0, ROT0, "bootleg", "Mongolfier New (italian)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 3330 | | GAME( 199?, soccernw, 0, royalcrd, royalcrd, soccernw, ROT0, "bootleg", "Soccer New (italian)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 3331 | | GAME( 198?, saloon, 0, saloon, saloon, saloon, ROT0, "<unknown>", "Saloon (french, encrypted)", GAME_NO_SOUND | GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 4164 | /* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ |
| 4165 | GAMEL( 1985, jollycrd, 0, fw1stpal, funworld, 0, ROT0, "TAB-Austria", "Jolly Card (austrian)", 0, layout_jollycrd ) |
| 4166 | GAMEL( 1985, jolyc3x3, jollycrd, fw1stpal, funworld, 0, ROT0, "TAB-Austria", "Jolly Card (3x3 deal)", 0, layout_jollycrd ) |
| 4167 | GAMEL( 1993, jolycmzs, jollycrd, cuoreuno, jolyc980, 0, ROT0, "MZS Tech", "Jolly Card Professional 2.0 (MZS Tech)", 0, layout_jollycrd ) |
| 4168 | GAMEL( 2000, jolyc980, jollycrd, cuoreuno, jolyc980, 0, ROT0, "Spale-Soft", "Jolly Card Professional 2.0 (Spale Soft)", 0, layout_jollycrd ) |
| 4169 | GAMEL( 1998, jolycdev, jollycrd, fw1stpal, funworld, 0, ROT0, "TAB/Evona", "Jolly Card (Evona Electronic)", 0, layout_jollycrd ) |
| 4170 | GAMEL( 1985, jolyccra, jollycrd, cuoreuno, jolycdcr, 0, ROT0, "TAB-Austria", "Jolly Card (croatian, set 1)", 0, layout_jollycrd ) |
| 4171 | GAMEL( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, 0, ROT0, "Soft Design", "Jolly Card (croatian, set 2)", 0, layout_jollycrd ) |
| 4172 | GAMEL( 199?, jolycdit, jollycrd, cuoreuno, jolycdit, tabblue, ROT0, "bootleg", "Jolly Card (italian, blue TAB board, encrypted)", 0, layout_royalcrd ) |
| 4173 | GAMEL( 1990, jolycdib, jollycrd, cuoreuno, jolycdib, tabblue, ROT0, "bootleg", "Jolly Card (italian, encrypted bootleg)", 0, layout_jollycrd ) /* not a real TAB blue PCB */ |
| 4174 | GAMEL( 1985, sjcd2kx3, jollycrd, fw1stpal, funworld, 0, ROT0, "M.P.", "Super Joly 2000 - 3x", 0, layout_jollycrd ) |
| 4175 | GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, 0, ROT0, "Inter Games", "Jolly Card (austrian, Funworld, bootleg)", GAME_NOT_WORKING ) |
| 4176 | GAMEL( 1986, bigdeal, 0, fw2ndpal, bigdeal, 0, ROT0, "Funworld", "Big Deal (hungarian, set 1)", GAME_IMPERFECT_COLORS, layout_bigdeal ) |
| 4177 | GAMEL( 1986, bigdealb, bigdeal, fw2ndpal, bigdeal, 0, ROT0, "Funworld", "Big Deal (hungarian, set 2)", GAME_IMPERFECT_COLORS, layout_bigdeal ) |
| 4178 | GAMEL( 1986, jolycdat, bigdeal, fw2ndpal, bigdeal, 0, ROT0, "Funworld", "Jolly Card (austrian, Funworld)", GAME_IMPERFECT_COLORS, layout_bigdeal ) |
| 4179 | GAMEL( 1996, cuoreuno, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Cuore 1 (italian)", 0, layout_jollycrd ) |
| 4180 | GAMEL( 1997, elephfam, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Elephant Family (italian, new)", 0, layout_jollycrd ) |
| 4181 | GAMEL( 1996, elephfmb, elephfam, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Elephant Family (italian, old)", 0, layout_jollycrd ) |
| 4182 | GAMEL( 1996, pool10, 0, cuoreuno, pool10, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 1)", 0, layout_jollycrd ) |
| 4183 | GAMEL( 1996, pool10b, pool10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 2)", 0, layout_jollycrd ) |
| 4184 | GAMEL( 1996, pool10c, pool10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 3)", 0, layout_jollycrd ) |
| 4185 | GAMEL( 1997, pool10d, pool10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pool 10 (italian, set 4)", 0, layout_jollycrd ) |
| 4186 | GAMEL( 1997, tortufam, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Tortuga Family (italian)", 0, layout_jollycrd ) |
| 4187 | GAMEL( 1996, potgame, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Pot Game (italian)", 0, layout_jollycrd ) |
| 4188 | GAMEL( 1996, bottle10, 0, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Bottle 10 (italian, set 1)", 0, layout_jollycrd ) |
| 4189 | GAMEL( 1996, bottl10b, bottle10, cuoreuno, cuoreuno, 0, ROT0, "C.M.C.", "Bottle 10 (italian, set 2)", 0, layout_jollycrd ) |
| 4190 | GAMEL( 1991, royalcrd, 0, royalcrd, royalcrd, 0, ROT0, "TAB-Austria", "Royal Card (austrian, set 1)", 0, layout_royalcrd ) |
| 4191 | GAMEL( 1991, royalcdb, royalcrd, royalcrd, royalcrd, 0, ROT0, "TAB-Austria", "Royal Card (austrian, set 2)", 0, layout_jollycrd ) |
| 4192 | GAME( 1991, royalcdc, royalcrd, royalcrd, royalcrd, royalcdc, ROT0, "Evona Electronic","Royal Card (slovak, encrypted)", GAME_WRONG_COLORS | GAME_NOT_WORKING ) |
| 4193 | GAME( 1993, royalcdp, royalcrd, cuoreuno, royalcrd, 0, ROT0, "Digital Dreams", "Royal Card v2.0 Professional", GAME_NOT_WORKING ) |
| 4194 | GAMEL( 1991, lluck3x3, royalcrd, cuoreuno, royalcrd, 0, ROT0, "TAB-Austria", "Lucky Lady (3x3 deal)", 0, layout_jollycrd ) |
| 4195 | GAMEL( 1991, lluck4x1, royalcrd, royalcrd, royalcrd, 0, ROT0, "TAB-Austria", "Lucky Lady (4x1 aces)", 0, layout_jollycrd ) |
| 4196 | GAMEL( 1996, magicrd2, 0, magicrd2, magicrd2, 0, ROT0, "Impera", "Magic Card II (bulgarian)", GAME_IMPERFECT_SOUND, layout_jollycrd ) |
| 4197 | GAME( 1996, magicd2a, magicrd2, magicrd2, magicrd2, magicd2a, ROT0, "Impera", "Magic Card II (green TAB or Impera board)", GAME_NOT_WORKING ) |
| 4198 | GAME( 1996, magicd2b, magicrd2, magicrd2, magicrd2, magicd2b, ROT0, "Impera", "Magic Card II (blue TAB board, encrypted)", GAME_NOT_WORKING ) |
| 4199 | GAMEL( 1993, vegasslw, 0, fw2ndpal, vegasslw, 0, ROT0, "Funworld", "Royal Vegas Joker Card (slow deal)", 0, layout_jollycrd ) |
| 4200 | GAMEL( 1993, vegasfst, vegasslw, fw2ndpal, vegasfst, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal)", 0, layout_jollycrd ) |
| 4201 | GAMEL( 1993, vegasfte, vegasslw, fw2ndpal, vegasfte, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal, english gfx)", 0, layout_jollycrd ) |
| 4202 | GAMEL( 1993, vegasmil, vegasslw, fw2ndpal, vegasmil, 0, ROT0, "Mile", "Royal Vegas Joker Card (fast deal, Mile)", 0, layout_jollycrd ) |
| 4203 | GAMEL( 198?, jolyjokr, 0, fw1stpal, funworld, 0, ROT0, "Impera", "Jolly Joker (98bet, set 1)", 0, layout_jollycrd ) |
| 4204 | GAMEL( 198?, jolyjokra, jolyjokr, fw1stpal, jolyjokra, 0, ROT0, "Impera", "Jolly Joker (98bet, set 2)", 0, layout_jollycrd ) |
| 4205 | GAMEL( 198?, jolyjokrb, jolyjokr, fw1stpal, funworld, 0, ROT0, "Impera", "Jolly Joker (40bet, croatian hack)", 0, layout_jollycrd ) |
| 4206 | GAME( 1992, multiwin, 0, fw1stpal, funworld, multiwin, ROT0, "Funworld", "Multi Win (Ver.0167, encrypted)", GAME_WRONG_COLORS | GAME_NOT_WORKING ) |
| 4207 | GAME( 1993, jokercrd, 0, fw2ndpal, funworld, 0, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", GAME_WRONG_COLORS | GAME_NOT_WORKING ) |
| 4208 | GAME( 199?, mongolnw, 0, royalcrd, royalcrd, 0, ROT0, "bootleg", "Mongolfier New (italian)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 4209 | GAME( 199?, soccernw, 0, royalcrd, royalcrd, soccernw, ROT0, "bootleg", "Soccer New (italian)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 4210 | GAME( 198?, saloon, 0, saloon, saloon, saloon, ROT0, "<unknown>", "Saloon (french, encrypted)", GAME_NO_SOUND | GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 4211 | GAME( 198?, funquiz, 0, funquiz, funquiz, 0, ROT0, "Funworld", "Fun World Quiz (austrian)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS ) |
| 3332 | 4212 | |
src/mame/drivers/cave.c
| r7640 | r7641 | |
| 16 | 16 | |
| 17 | 17 | |
| 18 | 18 | ----------------------------------------------------------------------------------------- |
| 19 | | Year + Game License PCB Tilemaps Sprites Other |
| 19 | Year + Game License PCB Tilemaps Sprites Other |
| 20 | 20 | ----------------------------------------------------------------------------------------- |
| 21 | | 94 Mazinger Z Banpresto ? 038 9335EX706 013 9341E7009 Z80 |
| 22 | | 94 PowerInstinct 2 Atlus ATG02? 038 9429WX709 013 Z80 NMK 112 |
| 23 | | 95 P.I. Legends Atlus AT047G2-B 038 9429WX709 013 9341E7009 Z80 NMK 112 |
| 24 | | 95 Metamoqester Banpresto BP947A 038 9437WX711 013 9346E7002 Z80 |
| 25 | | 95 Sailor Moon Banpresto BP945A 038 9437WX711 013 9346E7002 Z80 |
| 26 | | 95 Donpachi Atlus AT-C01DP-2 038 9429WX727 013 8647-01 NMK 112 |
| 27 | | 96 Air Gallet Banpresto BP962A 038 9437WX711 013 9346E7002 Z80 |
| 28 | | 96 Hotdog Storm Marble ASTC9501 038 9341EX702 Z80 |
| 29 | | 97 Dodonpachi Atlus ATC03D2 ? |
| 30 | | 98 Dangun Feveron Nihon System CV01 038 9808WX003 013 9807EX004 |
| 31 | | 98 ESP Ra.De. Atlus ATC04 ? |
| 32 | | 98 Uo Poko Jaleco CV02 038 9749WX001 013 9749EX004 |
| 33 | | 99 Guwange Atlus ATC05 ? |
| 34 | | 99 Gaia Crusaders Noise Factory ? 038 9838WX003 013 9918EX008 |
| 35 | | 99 Koro Koro Quest Takumi TUG-01B 038 9838WX004 013 9838EX004 |
| 36 | | 01 Thunder Heroes Primetek ? 038 9838WX003 013 9918EX008 |
| 21 | 94 Mazinger Z Banpresto ? 038 9335EX706 013 9341E7009 Z80 |
| 22 | 94 PowerInstinct 2 Atlus ATG02? 038 9429WX709 013 Z80 NMK 112 |
| 23 | 95 P.I. Legends Atlus AT047G2-B 038 9429WX709 013 9341E7009 Z80 NMK 112 |
| 24 | 95 Metamoqester Banpresto BP947A 038 9437WX711 013 9346E7002 Z80 |
| 25 | 95 Sailor Moon Banpresto BP945A 038 9437WX711 013 9346E7002 Z80 |
| 26 | 95 Donpachi Atlus AT-C01DP-2 038 9429WX727 013 8647-01 NMK 112 |
| 27 | 96 Air Gallet Banpresto BP962A 038 9437WX711 013 9346E7002 Z80 |
| 28 | 96 Hotdog Storm Marble ASTC9501 038 9341EX702 Z80 |
| 29 | 97 Dodonpachi Atlus ATC03D2 ? |
| 30 | 98 Dangun Feveron Nihon System CV01 038 9808WX003 013 9807EX004 |
| 31 | 98 ESP Ra.De. Atlus ATC04 ? |
| 32 | 98 Uo Poko Jaleco CV02 038 9749WX001 013 9749EX004 |
| 33 | 99 Guwange Atlus ATC05 ? |
| 34 | 99 Gaia Crusaders Noise Factory ? 038 9838WX003 013 9918EX008 |
| 35 | 99 Koro Koro Quest Takumi TUG-01B 038 9838WX004 013 9838EX004 |
| 36 | 99 Crusher Makochan Takumi TUG-01B "" "" |
| 37 | 99 Tobikose! Jumpman Namco TJ0476 038 9919WX007 013 9934WX002 |
| 38 | 01 Thunder Heroes Primetek ? 038 9838WX003 013 9918EX008 |
| 37 | 39 | ----------------------------------------------------------------------------------------- |
| 38 | 40 | |
| 39 | 41 | To Do: |
| r7640 | r7641 | |
| 418 | 420 | ***************************************************************************/ |
| 419 | 421 | |
| 420 | 422 | static ADDRESS_MAP_START( dfeveron_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 421 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 422 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 423 | | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 424 | | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 423 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 424 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 425 | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 426 | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 425 | 427 | /**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 426 | | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 427 | | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 428 | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 429 | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 428 | 430 | /**/AM_RANGE(0x708000, 0x708fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 429 | | /**/AM_RANGE(0x710000, 0x710bff) AM_READONLY // ? |
| 430 | | AM_RANGE(0x710c00, 0x710fff) AM_RAM // ? |
| 431 | | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 431 | /**/AM_RANGE(0x710000, 0x710bff) AM_READONLY // ? |
| 432 | AM_RANGE(0x710c00, 0x710fff) AM_RAM // ? |
| 433 | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 432 | 434 | AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 433 | | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 434 | | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 435 | | AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0") // Inputs |
| 436 | | AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 437 | | AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 435 | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 436 | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 437 | AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0") // Inputs |
| 438 | AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 439 | AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 438 | 440 | ADDRESS_MAP_END |
| 439 | 441 | |
| 440 | 442 | |
| r7640 | r7641 | |
| 443 | 445 | ***************************************************************************/ |
| 444 | 446 | |
| 445 | 447 | static ADDRESS_MAP_START( ddonpach_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 446 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 447 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 448 | | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 449 | | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 448 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 449 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 450 | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 451 | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 450 | 452 | /**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 451 | | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 452 | | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 453 | | /**/AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(cave_vram_2_8x8_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 454 | | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 453 | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 454 | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 455 | /**/AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(cave_vram_2_8x8_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 456 | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 455 | 457 | AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 456 | | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 457 | | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 458 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 458 | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 459 | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 460 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 459 | 461 | /**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 460 | | AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs |
| 461 | | AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 462 | | AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 462 | AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs |
| 463 | AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 464 | AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 463 | 465 | ADDRESS_MAP_END |
| 464 | 466 | |
| 465 | 467 | |
| r7640 | r7641 | |
| 494 | 496 | #endif |
| 495 | 497 | |
| 496 | 498 | static ADDRESS_MAP_START( donpachi_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 497 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 498 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 499 | | AM_RANGE(0x200000, 0x207fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 500 | | AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 501 | | AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(cave_vram_2_8x8_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 502 | | AM_RANGE(0x500000, 0x507fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 503 | | AM_RANGE(0x508000, 0x50ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 504 | | /**/AM_RANGE(0x600000, 0x600005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 505 | | /**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 506 | | /**/AM_RANGE(0x800000, 0x800005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 507 | | AM_RANGE(0x900000, 0x90007f) AM_RAM_READ(donpachi_videoregs_r) AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 499 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 500 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 501 | AM_RANGE(0x200000, 0x207fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 502 | AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 503 | AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(cave_vram_2_8x8_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 504 | AM_RANGE(0x500000, 0x507fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 505 | AM_RANGE(0x508000, 0x50ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 506 | /**/AM_RANGE(0x600000, 0x600005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 507 | /**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 508 | /**/AM_RANGE(0x800000, 0x800005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 509 | AM_RANGE(0x900000, 0x90007f) AM_RAM_READ(donpachi_videoregs_r) AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 508 | 510 | /**/AM_RANGE(0xa08000, 0xa08fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 509 | | AM_RANGE(0xb00000, 0xb00003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) // M6295 |
| 510 | | AM_RANGE(0xb00010, 0xb00013) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff) // |
| 511 | | AM_RANGE(0xb00020, 0xb0002f) AM_DEVWRITE("nmk112", nmk112_okibank_lsb_w) // |
| 512 | | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // Inputs |
| 513 | | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 514 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 511 | AM_RANGE(0xb00000, 0xb00003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) // M6295 |
| 512 | AM_RANGE(0xb00010, 0xb00013) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff) // |
| 513 | AM_RANGE(0xb00020, 0xb0002f) AM_DEVWRITE("nmk112", nmk112_okibank_lsb_w) // |
| 514 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // Inputs |
| 515 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 516 | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 515 | 517 | ADDRESS_MAP_END |
| 516 | 518 | |
| 517 | 519 | |
| r7640 | r7641 | |
| 520 | 522 | ***************************************************************************/ |
| 521 | 523 | |
| 522 | 524 | static ADDRESS_MAP_START( esprade_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 523 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 524 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 525 | | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 526 | | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 525 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 526 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 527 | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 528 | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 527 | 529 | /**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 528 | | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 529 | | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 530 | | /**/AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 531 | | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 530 | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 531 | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 532 | /**/AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 533 | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 532 | 534 | AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 533 | | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 534 | | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 535 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 535 | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 536 | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 537 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 536 | 538 | /**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 537 | | AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0" ) // Inputs |
| 538 | | AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1" ) // Inputs + EEPROM |
| 539 | | AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 539 | AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0" ) // Inputs |
| 540 | AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1" ) // Inputs + EEPROM |
| 541 | AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 540 | 542 | ADDRESS_MAP_END |
| 541 | 543 | |
| 542 | 544 | |
| r7640 | r7641 | |
| 545 | 547 | ***************************************************************************/ |
| 546 | 548 | |
| 547 | 549 | static ADDRESS_MAP_START( gaia_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 548 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 549 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 550 | | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 551 | | AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprite bank 1 |
| 550 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 551 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 552 | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 553 | AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprite bank 1 |
| 552 | 554 | AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprite bank 2 |
| 553 | | AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 554 | | AM_RANGE(0x508000, 0x50ffff) AM_RAM // More Layer 0, Tested but not used? |
| 555 | | AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 556 | | AM_RANGE(0x608000, 0x60ffff) AM_RAM // More Layer 1, Tested but not used? |
| 557 | | AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 558 | | AM_RANGE(0x708000, 0x70ffff) AM_RAM // More Layer 2, Tested but not used? |
| 559 | | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 555 | AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 556 | AM_RANGE(0x508000, 0x50ffff) AM_RAM // More Layer 0, Tested but not used? |
| 557 | AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 558 | AM_RANGE(0x608000, 0x60ffff) AM_RAM // More Layer 1, Tested but not used? |
| 559 | AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 560 | AM_RANGE(0x708000, 0x70ffff) AM_RAM // More Layer 2, Tested but not used? |
| 561 | AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 560 | 562 | AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 561 | | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 562 | | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 563 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 563 | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 564 | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 565 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 564 | 566 | AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 565 | | AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs |
| 566 | | AM_RANGE(0xd00010, 0xd00011) AM_WRITE(gaia_coin_lsb_w) // Coin counter only |
| 567 | | AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs |
| 568 | | AM_RANGE(0xd00014, 0xd00015) AM_READ_PORT("DSW") // Dips |
| 569 | | AM_RANGE(0xd00014, 0xd00015) AM_WRITE(watchdog_reset16_w) // Watchdog? |
| 567 | AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs |
| 568 | AM_RANGE(0xd00010, 0xd00011) AM_WRITE(gaia_coin_lsb_w) // Coin counter only |
| 569 | AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs |
| 570 | AM_RANGE(0xd00014, 0xd00015) AM_READ_PORT("DSW") // Dips |
| 571 | AM_RANGE(0xd00014, 0xd00015) AM_WRITE(watchdog_reset16_w) // Watchdog? |
| 570 | 572 | ADDRESS_MAP_END |
| 571 | 573 | |
| 572 | 574 | |
| r7640 | r7641 | |
| 575 | 577 | ***************************************************************************/ |
| 576 | 578 | |
| 577 | 579 | static ADDRESS_MAP_START( guwange_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 578 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 579 | | AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM |
| 580 | | AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 580 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 581 | AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM |
| 582 | AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 581 | 583 | AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 582 | | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 584 | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 583 | 585 | /**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 584 | | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 585 | | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 586 | | /**/AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 587 | | AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 588 | | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 589 | | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 590 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 586 | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 587 | /**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 588 | /**/AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 589 | AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 590 | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 591 | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 592 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 591 | 593 | /**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 592 | | AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs |
| 593 | | AM_RANGE(0xd00010, 0xd00011) AM_DEVWRITE("eeprom", cave_eeprom_lsb_w) // EEPROM |
| 594 | | AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 595 | | // AM_RANGE(0xd00012, 0xd00013) AM_WRITENOP // ? |
| 596 | | // AM_RANGE(0xd00014, 0xd00015) AM_WRITENOP // ? $800068 in dfeveron ? probably Watchdog |
| 594 | AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs |
| 595 | AM_RANGE(0xd00010, 0xd00011) AM_DEVWRITE("eeprom", cave_eeprom_lsb_w) // EEPROM |
| 596 | AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 597 | // AM_RANGE(0xd00012, 0xd00013) AM_WRITENOP // ? |
| 598 | // AM_RANGE(0xd00014, 0xd00015) AM_WRITENOP // ? $800068 in dfeveron ? probably Watchdog |
| 597 | 599 | ADDRESS_MAP_END |
| 598 | 600 | |
| 599 | 601 | |
| r7640 | r7641 | |
| 602 | 604 | ***************************************************************************/ |
| 603 | 605 | |
| 604 | 606 | static ADDRESS_MAP_START( hotdogst_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 605 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 606 | | AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM |
| 607 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 608 | AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM |
| 607 | 609 | /**/AM_RANGE(0x408000, 0x408fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 608 | | /**/AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 609 | | /**/AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 610 | | /**/AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 611 | | AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 612 | | // AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r) // From Sound CPU |
| 613 | | AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w) // To Sound CPU |
| 610 | /**/AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 611 | /**/AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 612 | /**/AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 613 | AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 614 | // AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r) // From Sound CPU |
| 615 | AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w) // To Sound CPU |
| 614 | 616 | AM_RANGE(0xa80000, 0xa8007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 615 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 616 | | /**/AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 617 | | /**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 618 | | AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs |
| 619 | | AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 620 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", hotdogst_eeprom_msb_w) // EEPROM |
| 621 | | AM_RANGE(0xd00002, 0xd00003) AM_WRITENOP // ??? |
| 622 | | /**/AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 617 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 618 | /**/AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 619 | /**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 620 | AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs |
| 621 | AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 622 | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", hotdogst_eeprom_msb_w) // EEPROM |
| 623 | AM_RANGE(0xd00002, 0xd00003) AM_WRITENOP // ??? |
| 624 | /**/AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 623 | 625 | /**/AM_RANGE(0xf08000, 0xf0ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 624 | 626 | ADDRESS_MAP_END |
| 625 | 627 | |
| r7640 | r7641 | |
| 692 | 694 | return state->hopper ? 1 : 0; |
| 693 | 695 | } |
| 694 | 696 | |
| 697 | |
| 695 | 698 | static ADDRESS_MAP_START( korokoro_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 696 | 699 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 697 | | // AM_RANGE(0x100000, 0x107fff) AM_READONLY // Layer 0 |
| 698 | | AM_RANGE(0x100000, 0x107fff) AM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 699 | | // AM_RANGE(0x140000, 0x140005) AM_READONLY // Layer 0 Control |
| 700 | | AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 701 | | // AM_RANGE(0x180000, 0x187fff) AM_READONLY // Sprites |
| 702 | | AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 700 | AM_RANGE(0x100000, 0x107fff) AM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 701 | AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 702 | AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 703 | 703 | AM_RANGE(0x1c0000, 0x1c0007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 704 | | AM_RANGE(0x1c0000, 0x1c007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 705 | | // AM_RANGE(0x200000, 0x207fff) AM_READONLY // Palette |
| 704 | AM_RANGE(0x1c0000, 0x1c007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 706 | 705 | AM_RANGE(0x200000, 0x207fff) AM_WRITEONLY AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 707 | 706 | // AM_RANGE(0x240000, 0x240003) AM_DEVREAD8( "ymz", ymz280b_r, 0x00ff) // YMZ280 |
| 708 | 707 | AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8( "ymz", ymz280b_w, 0x00ff) // YMZ280 |
| 709 | 708 | AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ??? |
| 710 | 709 | AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 711 | | AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) |
| 710 | AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) // Leds |
| 712 | 711 | AM_RANGE(0x28000a, 0x28000b) AM_DEVWRITE("eeprom", korokoro_eeprom_msb_w) // EEPROM |
| 713 | | AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?) |
| 712 | AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?) |
| 714 | 713 | AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM |
| 715 | 714 | ADDRESS_MAP_END |
| 716 | 715 | |
| 716 | static ADDRESS_MAP_START( crusherm_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 717 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 718 | AM_RANGE(0x100000, 0x107fff) AM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 719 | AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 720 | AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 721 | AM_RANGE(0x200000, 0x207fff) AM_WRITEONLY AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 722 | AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8( "ymz", ymz280b_w, 0x00ff) // YMZ280 |
| 723 | AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ??? |
| 724 | AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 725 | AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) // Leds |
| 726 | AM_RANGE(0x28000a, 0x28000b) AM_DEVWRITE("eeprom", korokoro_eeprom_msb_w) // EEPROM |
| 727 | AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?) |
| 728 | AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 729 | AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 730 | AM_RANGE(0x340000, 0x34ffff) AM_RAM // RAM |
| 731 | ADDRESS_MAP_END |
| 717 | 732 | |
| 718 | 733 | /*************************************************************************** |
| 719 | 734 | Mazinger Z |
| 720 | 735 | ***************************************************************************/ |
| 721 | 736 | |
| 722 | 737 | static ADDRESS_MAP_START( mazinger_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 723 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 724 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 725 | | /**/AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 738 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 739 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 740 | /**/AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 726 | 741 | /**/AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 727 | | AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 728 | | AM_RANGE(0x300068, 0x300069) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 729 | | AM_RANGE(0x30006e, 0x30006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU |
| 742 | AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 743 | AM_RANGE(0x300068, 0x300069) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 744 | AM_RANGE(0x30006e, 0x30006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU |
| 730 | 745 | AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 731 | | AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(cave_vram_1_8x8_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 732 | | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_8x8_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 733 | | /**/AM_RANGE(0x600000, 0x600005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 734 | | /**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 735 | | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") // Inputs |
| 736 | | AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 737 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 746 | AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(cave_vram_1_8x8_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 747 | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_8x8_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 748 | /**/AM_RANGE(0x600000, 0x600005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 749 | /**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 750 | AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") // Inputs |
| 751 | AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 752 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 738 | 753 | /**/AM_RANGE(0xc08000, 0xc0ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 739 | 754 | AM_RANGE(0xd00000, 0xd7ffff) AM_ROMBANK("bank1") // ROM |
| 740 | 755 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 745 | 760 | ***************************************************************************/ |
| 746 | 761 | |
| 747 | 762 | static ADDRESS_MAP_START( metmqstr_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 748 | | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 749 | | AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM |
| 750 | | AM_RANGE(0x200000, 0x27ffff) AM_ROM // ROM |
| 763 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 764 | AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM |
| 765 | AM_RANGE(0x200000, 0x27ffff) AM_ROM // ROM |
| 751 | 766 | AM_RANGE(0x408000, 0x408fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 752 | | AM_RANGE(0x600000, 0x600001) AM_READ(watchdog_reset16_r) // Watchdog? |
| 753 | | AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 754 | | AM_RANGE(0x888000, 0x88ffff) AM_RAM // |
| 755 | | AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 756 | | AM_RANGE(0x908000, 0x90ffff) AM_RAM // |
| 757 | | AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 758 | | AM_RANGE(0x988000, 0x98ffff) AM_RAM // |
| 759 | | AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 760 | | AM_RANGE(0xa80068, 0xa80069) AM_WRITE(watchdog_reset16_w) // Watchdog? |
| 761 | | AM_RANGE(0xa8006c, 0xa8006d) AM_READ(soundflags_ack_r) AM_WRITENOP // Communication |
| 762 | | AM_RANGE(0xa8006e, 0xa8006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU |
| 767 | AM_RANGE(0x600000, 0x600001) AM_READ(watchdog_reset16_r) // Watchdog? |
| 768 | AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 769 | AM_RANGE(0x888000, 0x88ffff) AM_RAM // |
| 770 | AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 771 | AM_RANGE(0x908000, 0x90ffff) AM_RAM // |
| 772 | AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 773 | AM_RANGE(0x988000, 0x98ffff) AM_RAM // |
| 774 | AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 775 | AM_RANGE(0xa80068, 0xa80069) AM_WRITE(watchdog_reset16_w) // Watchdog? |
| 776 | AM_RANGE(0xa8006c, 0xa8006d) AM_READ(soundflags_ack_r) AM_WRITENOP // Communication |
| 777 | AM_RANGE(0xa8006e, 0xa8006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU |
| 763 | 778 | AM_RANGE(0xa80000, 0xa8007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 764 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 765 | | /**/AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 766 | | /**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 767 | | AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs |
| 768 | | AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 769 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", metmqstr_eeprom_msb_w) // EEPROM |
| 770 | | AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 779 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 780 | /**/AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 781 | /**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 782 | AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs |
| 783 | AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 784 | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", metmqstr_eeprom_msb_w) // EEPROM |
| 785 | AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 771 | 786 | AM_RANGE(0xf08000, 0xf0ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // RAM |
| 772 | 787 | ADDRESS_MAP_END |
| 773 | 788 | |
| r7640 | r7641 | |
| 802 | 817 | static WRITE16_HANDLER( pwrinst2_vctrl_3_w ) { cave_state *state = (cave_state *)space->machine->driver_data; vctrl_w(state->vctrl_3, offset, data, mem_mask); } |
| 803 | 818 | |
| 804 | 819 | static ADDRESS_MAP_START( pwrinst2_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 805 | | AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM |
| 806 | | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 807 | | AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs |
| 808 | | AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // |
| 809 | | AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("user1", 0) // extra data ROM space |
| 810 | | AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 811 | | AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 812 | | AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 813 | | AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 814 | | AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_3_8x8_w) AM_BASE_MEMBER(cave_state, vram_3) // Layer 3 |
| 815 | | AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 816 | | AM_RANGE(0xa08000, 0xa0ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 817 | | AM_RANGE(0xa10000, 0xa1ffff) AM_RAM // Sprites? |
| 818 | | AM_RANGE(0xa80000, 0xa8007f) AM_RAM_READ(donpachi_videoregs_r) AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 819 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM_WRITE(pwrinst2_vctrl_2_w) AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 820 | | /**/AM_RANGE(0xb80000, 0xb80005) AM_RAM_WRITE(pwrinst2_vctrl_0_w) AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 821 | | /**/AM_RANGE(0xc00000, 0xc00005) AM_RAM_WRITE(pwrinst2_vctrl_1_w) AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 822 | | /**/AM_RANGE(0xc80000, 0xc80005) AM_RAM_WRITE(pwrinst2_vctrl_3_w) AM_BASE_MEMBER(cave_state, vctrl_3) // Layer 3 Control |
| 823 | | AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r) // ? From Sound CPU |
| 824 | | AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w) // To Sound CPU |
| 825 | | AM_RANGE(0xe80000, 0xe80001) AM_DEVREAD("eeprom", pwrinst2_eeprom_r) // EEPROM |
| 826 | | AM_RANGE(0xf00000, 0xf04fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 820 | AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM |
| 821 | AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM |
| 822 | AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs |
| 823 | AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // |
| 824 | AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("user1", 0) // extra data ROM space |
| 825 | AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 826 | AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 827 | AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 828 | AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 829 | AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_3_8x8_w) AM_BASE_MEMBER(cave_state, vram_3) // Layer 3 |
| 830 | AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 831 | AM_RANGE(0xa08000, 0xa0ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 832 | AM_RANGE(0xa10000, 0xa1ffff) AM_RAM // Sprites? |
| 833 | AM_RANGE(0xa80000, 0xa8007f) AM_RAM_READ(donpachi_videoregs_r) AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 834 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM_WRITE(pwrinst2_vctrl_2_w) AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 835 | /**/AM_RANGE(0xb80000, 0xb80005) AM_RAM_WRITE(pwrinst2_vctrl_0_w) AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 836 | /**/AM_RANGE(0xc00000, 0xc00005) AM_RAM_WRITE(pwrinst2_vctrl_1_w) AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 837 | /**/AM_RANGE(0xc80000, 0xc80005) AM_RAM_WRITE(pwrinst2_vctrl_3_w) AM_BASE_MEMBER(cave_state, vctrl_3) // Layer 3 Control |
| 838 | AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r) // ? From Sound CPU |
| 839 | AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w) // To Sound CPU |
| 840 | AM_RANGE(0xe80000, 0xe80001) AM_DEVREAD("eeprom", pwrinst2_eeprom_r) // EEPROM |
| 841 | AM_RANGE(0xf00000, 0xf04fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 827 | 842 | ADDRESS_MAP_END |
| 828 | 843 | |
| 829 | 844 | |
| r7640 | r7641 | |
| 837 | 852 | return input_port_read(space->machine, "IN0"); |
| 838 | 853 | } |
| 839 | 854 | |
| 840 | | static READ16_HANDLER( agallet_irq_cause_r ) |
| 841 | | { |
| 842 | | UINT16 irq_cause = cave_irq_cause_r(space, offset, mem_mask); |
| 843 | | |
| 844 | | if (offset == 0) |
| 845 | | { |
| 846 | | // Speed hack for agallet |
| 847 | | if ((cpu_get_pc(space->cpu) == 0xcdca) && (irq_cause & 4)) |
| 848 | | cpu_spinuntil_int(space->cpu); |
| 849 | | } |
| 850 | | |
| 851 | | return irq_cause; |
| 852 | | } |
| 853 | | |
| 854 | 855 | static ADDRESS_MAP_START( sailormn_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 855 | 856 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 856 | 857 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 857 | 858 | AM_RANGE(0x110000, 0x110001) AM_RAM // (agallet) |
| 858 | 859 | AM_RANGE(0x200000, 0x3fffff) AM_ROM // ROM |
| 859 | 860 | AM_RANGE(0x400000, 0x407fff) AM_RAM // (agallet) |
| 860 | | AM_RANGE(0x408000, 0x40bfff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 861 | AM_RANGE(0x408000, 0x40bfff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 861 | 862 | AM_RANGE(0x40c000, 0x40ffff) AM_RAM // (agallet) |
| 862 | 863 | AM_RANGE(0x410000, 0x410001) AM_RAM // (agallet) |
| 863 | | AM_RANGE(0x500000, 0x507fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 864 | | AM_RANGE(0x508000, 0x50ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 864 | AM_RANGE(0x500000, 0x507fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 865 | AM_RANGE(0x508000, 0x50ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 865 | 866 | AM_RANGE(0x510000, 0x510001) AM_RAM // (agallet) |
| 866 | 867 | AM_RANGE(0x600000, 0x600001) AM_READ(sailormn_input0_r) // Inputs + Watchdog! |
| 867 | 868 | AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 868 | 869 | AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("eeprom", sailormn_eeprom_msb_w) // EEPROM |
| 869 | | AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 870 | | AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 871 | | AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 870 | AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 871 | AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE_MEMBER(cave_state, vram_1) // Layer 1 |
| 872 | AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE_MEMBER(cave_state, vram_2) // Layer 2 |
| 872 | 873 | AM_RANGE(0x908000, 0x908001) AM_RAM // (agallet) |
| 873 | | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 874 | | /**/AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 875 | | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 874 | /**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 875 | /**/AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_1) // Layer 1 Control |
| 876 | /**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_2) // Layer 2 Control |
| 876 | 877 | AM_RANGE(0xb80000, 0xb80007) AM_READ(cave_irq_cause_r) // IRQ Cause (bit 2 tested!) |
| 877 | 878 | AM_RANGE(0xb8006c, 0xb8006d) AM_READ(soundflags_ack_r) // Communication |
| 878 | 879 | AM_RANGE(0xb8006e, 0xb8006f) AM_READ(soundlatch_ack_r) // From Sound CPU |
| 879 | 880 | AM_RANGE(0xb8006e, 0xb8006f) AM_WRITE(sound_cmd_w) // To Sound CPU |
| 880 | | AM_RANGE(0xb80000, 0xb8007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 881 | AM_RANGE(0xb80000, 0xb8007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 881 | 882 | ADDRESS_MAP_END |
| 882 | 883 | |
| 883 | 884 | |
| 884 | 885 | /*************************************************************************** |
| 886 | Tobikose! Jumpman |
| 887 | ***************************************************************************/ |
| 888 | |
| 889 | static WRITE16_DEVICE_HANDLER( tjumpman_eeprom_lsb_w ) |
| 890 | { |
| 891 | if (data & ~0x0038) |
| 892 | logerror("%s: Unknown EEPROM bit written %04X\n",cpuexec_describe_context(device->machine),data); |
| 893 | |
| 894 | if (ACCESSING_BITS_0_7) // odd address |
| 895 | { |
| 896 | // latch the bit |
| 897 | eeprom_write_bit(device, data & 0x0020); |
| 898 | |
| 899 | // reset line asserted: reset. |
| 900 | eeprom_set_cs_line(device, (data & 0x0008) ? CLEAR_LINE : ASSERT_LINE); |
| 901 | |
| 902 | // clock line asserted: write latch or select next bit to read |
| 903 | eeprom_set_clock_line(device, (data & 0x0010) ? ASSERT_LINE : CLEAR_LINE); |
| 904 | } |
| 905 | } |
| 906 | |
| 907 | static WRITE16_HANDLER( tjumpman_leds_w ) |
| 908 | { |
| 909 | cave_state *state = (cave_state *)space->machine->driver_data; |
| 910 | if (ACCESSING_BITS_0_7) |
| 911 | { |
| 912 | set_led_status(space->machine, 0, data & 0x0001); // suru |
| 913 | set_led_status(space->machine, 1, data & 0x0002); // shinai |
| 914 | set_led_status(space->machine, 2, data & 0x0004); // payout |
| 915 | set_led_status(space->machine, 3, data & 0x0008); // go |
| 916 | set_led_status(space->machine, 4, data & 0x0010); // 1 bet |
| 917 | set_led_status(space->machine, 5, data & 0x0020); // medal |
| 918 | state->hopper = data & 0x0040; // hopper |
| 919 | set_led_status(space->machine, 6, data & 0x0080); // 3 bet |
| 920 | } |
| 921 | |
| 922 | // popmessage("led %04X", data); |
| 923 | } |
| 924 | |
| 925 | static CUSTOM_INPUT( tjumpman_hopper_r ) |
| 926 | { |
| 927 | cave_state *state = (cave_state *)field->port->machine->driver_data; |
| 928 | return (state->hopper && !(video_screen_get_frame_number(field->port->machine->primary_screen) % 10)) ? 0 : 1; |
| 929 | } |
| 930 | |
| 931 | static ADDRESS_MAP_START( tjumpman_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 932 | AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM |
| 933 | AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE_SIZE_GENERIC( nvram ) // RAM |
| 934 | AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 935 | AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprite bank 2 |
| 936 | AM_RANGE(0x304000, 0x307fff) AM_WRITE(cave_vram_0_w) // Layer 0 - 16x16 tiles mapped here |
| 937 | AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 938 | AM_RANGE(0x400000, 0x400005) AM_WRITEONLY AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 939 | AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 940 | AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper |
| 941 | AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs |
| 942 | AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 943 | AM_RANGE(0x700068, 0x700069) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 944 | AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 945 | AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) // M6295 |
| 946 | AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper |
| 947 | AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", tjumpman_eeprom_lsb_w) // EEPROM |
| 948 | ADDRESS_MAP_END |
| 949 | |
| 950 | |
| 951 | /*************************************************************************** |
| 885 | 952 | Uo Poko |
| 886 | 953 | ***************************************************************************/ |
| 887 | 954 | |
| 888 | 955 | static ADDRESS_MAP_START( uopoko_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 889 | | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 890 | | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 891 | | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 892 | | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 956 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 957 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM |
| 958 | AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff) // YMZ280 |
| 959 | /**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites |
| 893 | 960 | /**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprites? |
| 894 | | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 895 | | AM_RANGE(0x600000, 0x600007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 961 | /**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 |
| 962 | AM_RANGE(0x600000, 0x600007) AM_READ(cave_irq_cause_r) // IRQ Cause |
| 896 | 963 | AM_RANGE(0x600000, 0x60007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs |
| 897 | | /**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 964 | /**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control |
| 898 | 965 | /**/AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette |
| 899 | | AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0") // Inputs |
| 900 | | AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 901 | | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 966 | AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0") // Inputs |
| 967 | AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1") // Inputs + EEPROM |
| 968 | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM |
| 902 | 969 | ADDRESS_MAP_END |
| 903 | 970 | |
| 904 | 971 | |
| r7640 | r7641 | |
| 933 | 1000 | } |
| 934 | 1001 | |
| 935 | 1002 | static ADDRESS_MAP_START( hotdogst_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 936 | | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 937 | | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") // ROM (Banked) |
| 938 | | AM_RANGE(0xe000, 0xffff) AM_RAM // RAM |
| 1003 | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 1004 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") // ROM (Banked) |
| 1005 | AM_RANGE(0xe000, 0xffff) AM_RAM // RAM |
| 939 | 1006 | ADDRESS_MAP_END |
| 940 | 1007 | |
| 941 | 1008 | static ADDRESS_MAP_START( hotdogst_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| r7640 | r7641 | |
| 943 | 1010 | AM_RANGE(0x00, 0x00) AM_WRITE(hotdogst_rombank_w) // ROM bank |
| 944 | 1011 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 945 | 1012 | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // |
| 946 | | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // |
| 1013 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // |
| 947 | 1014 | AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) // M6295 |
| 948 | 1015 | AM_RANGE(0x70, 0x70) AM_WRITE(hotdogst_okibank_w) // Samples bank |
| 949 | 1016 | ADDRESS_MAP_END |
| r7640 | r7641 | |
| 962 | 1029 | } |
| 963 | 1030 | |
| 964 | 1031 | static ADDRESS_MAP_START( mazinger_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 965 | | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 966 | | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") // ROM (Banked) |
| 967 | | AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM |
| 968 | | AM_RANGE(0xf800, 0xffff) AM_RAM // RAM |
| 1032 | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 1033 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") // ROM (Banked) |
| 1034 | AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM |
| 1035 | AM_RANGE(0xf800, 0xffff) AM_RAM // RAM |
| 969 | 1036 | ADDRESS_MAP_END |
| 970 | 1037 | |
| 971 | 1038 | static ADDRESS_MAP_START( mazinger_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 972 | 1039 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 973 | | AM_RANGE(0x00, 0x00) AM_WRITE(mazinger_rombank_w) // ROM bank |
| 974 | | AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU |
| 975 | | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 976 | | AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym2203_w) // YM2203 |
| 977 | | AM_RANGE(0x52, 0x53) AM_DEVREAD("ymsnd", ym2203_r) // YM2203 |
| 978 | | AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", okim6295_w) // M6295 |
| 979 | | AM_RANGE(0x74, 0x74) AM_WRITE(hotdogst_okibank_w) // Samples bank |
| 1040 | AM_RANGE(0x00, 0x00) AM_WRITE(mazinger_rombank_w) // ROM bank |
| 1041 | AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU |
| 1042 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1043 | AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym2203_w) // YM2203 |
| 1044 | AM_RANGE(0x52, 0x53) AM_DEVREAD("ymsnd", ym2203_r) // YM2203 |
| 1045 | AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", okim6295_w) // M6295 |
| 1046 | AM_RANGE(0x74, 0x74) AM_WRITE(hotdogst_okibank_w) // Samples bank |
| 980 | 1047 | ADDRESS_MAP_END |
| 981 | 1048 | |
| 982 | 1049 | |
| r7640 | r7641 | |
| 1011 | 1078 | } |
| 1012 | 1079 | |
| 1013 | 1080 | static ADDRESS_MAP_START( metmqstr_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1014 | | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 1015 | | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") // ROM (Banked) |
| 1016 | | AM_RANGE(0xe000, 0xffff) AM_RAM // RAM |
| 1081 | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 1082 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") // ROM (Banked) |
| 1083 | AM_RANGE(0xe000, 0xffff) AM_RAM // RAM |
| 1017 | 1084 | ADDRESS_MAP_END |
| 1018 | 1085 | |
| 1019 | 1086 | static ADDRESS_MAP_START( metmqstr_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1020 | 1087 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1021 | | AM_RANGE(0x00, 0x00) AM_WRITE(metmqstr_rombank_w) // Rom Bank |
| 1022 | | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1023 | | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1024 | | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // |
| 1088 | AM_RANGE(0x00, 0x00) AM_WRITE(metmqstr_rombank_w) // Rom Bank |
| 1089 | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1090 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1091 | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // |
| 1025 | 1092 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w) // YM2151 |
| 1026 | | AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w) // M6295 #0 |
| 1027 | | AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w) // Samples Bank #0 |
| 1028 | | AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w) // M6295 #1 |
| 1029 | | AM_RANGE(0x90, 0x90) AM_WRITE(metmqstr_okibank1_w) // Samples Bank #1 |
| 1093 | AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w) // M6295 #0 |
| 1094 | AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w) // Samples Bank #0 |
| 1095 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w) // M6295 #1 |
| 1096 | AM_RANGE(0x90, 0x90) AM_WRITE(metmqstr_okibank1_w) // Samples Bank #1 |
| 1030 | 1097 | ADDRESS_MAP_END |
| 1031 | 1098 | |
| 1032 | 1099 | |
| r7640 | r7641 | |
| 1043 | 1110 | } |
| 1044 | 1111 | |
| 1045 | 1112 | static ADDRESS_MAP_START( pwrinst2_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1046 | | AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM |
| 1047 | | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // ROM (Banked) |
| 1048 | | AM_RANGE(0xe000, 0xffff) AM_RAM // RAM |
| 1113 | AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM |
| 1114 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // ROM (Banked) |
| 1115 | AM_RANGE(0xe000, 0xffff) AM_RAM // RAM |
| 1049 | 1116 | ADDRESS_MAP_END |
| 1050 | 1117 | |
| 1051 | 1118 | static ADDRESS_MAP_START( pwrinst2_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1052 | 1119 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1053 | 1120 | AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) // M6295 |
| 1054 | 1121 | AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) // |
| 1055 | | AM_RANGE(0x10, 0x17) AM_DEVWRITE("nmk112", nmk112_okibank_w) // Samples bank |
| 1056 | | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // |
| 1122 | AM_RANGE(0x10, 0x17) AM_DEVWRITE("nmk112", nmk112_okibank_w) // Samples bank |
| 1123 | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) // |
| 1057 | 1124 | AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w) // To Main CPU |
| 1058 | | // AM_RANGE(0x51, 0x51) AM_WRITENOP // ?? volume |
| 1125 | // AM_RANGE(0x51, 0x51) AM_WRITENOP // ?? volume |
| 1059 | 1126 | AM_RANGE(0x80, 0x80) AM_WRITE(pwrinst2_rombank_w) // ROM bank |
| 1060 | 1127 | AM_RANGE(0x60, 0x60) AM_READ(soundlatch_hi_r) // From Main CPU |
| 1061 | 1128 | AM_RANGE(0x70, 0x70) AM_READ(soundlatch_lo_r) // |
| r7640 | r7641 | |
| 1105 | 1172 | } |
| 1106 | 1173 | |
| 1107 | 1174 | static ADDRESS_MAP_START( sailormn_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1108 | | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 1109 | | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") // ROM (Banked) |
| 1175 | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 1176 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") // ROM (Banked) |
| 1110 | 1177 | AM_RANGE(0xc000, 0xdfff) AM_READWRITE(mirror_ram_r, mirror_ram_w) AM_BASE_MEMBER(cave_state, mirror_ram) // RAM |
| 1111 | | AM_RANGE(0xe000, 0xffff) AM_READWRITE(mirror_ram_r, mirror_ram_w) // Mirrored RAM (agallet) |
| 1178 | AM_RANGE(0xe000, 0xffff) AM_READWRITE(mirror_ram_r, mirror_ram_w) // Mirrored RAM (agallet) |
| 1112 | 1179 | ADDRESS_MAP_END |
| 1113 | 1180 | |
| 1114 | 1181 | static ADDRESS_MAP_START( sailormn_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| r7640 | r7641 | |
| 1118 | 1185 | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1119 | 1186 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1120 | 1187 | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // |
| 1121 | | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w) // YM2151 |
| 1188 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w) // YM2151 |
| 1122 | 1189 | AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) // M6295 #0 |
| 1123 | 1190 | AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w) // Samples Bank #0 |
| 1124 | 1191 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) // M6295 #1 |
| r7640 | r7641 | |
| 1286 | 1353 | PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) |
| 1287 | 1354 | INPUT_PORTS_END |
| 1288 | 1355 | |
| 1289 | | /* Mazinger Z (has region stored in Eeprom) */ |
| 1290 | | static INPUT_PORTS_START( mazinger ) |
| 1291 | | PORT_INCLUDE( cave ) |
| 1292 | 1356 | |
| 1293 | | PORT_START("EEPROM") // Eeprom Region |
| 1294 | | PORT_DIPNAME( 0xff, 0x31, DEF_STR( Region ) ) |
| 1295 | | PORT_DIPSETTING( 0x30, DEF_STR( Japan ) ) |
| 1296 | | PORT_DIPSETTING( 0x31, DEF_STR( World ) ) |
| 1297 | | INPUT_PORTS_END |
| 1298 | | |
| 1299 | | /* Sailor Moon / Air Gallet (has region stored in Eeprom) */ |
| 1300 | | static INPUT_PORTS_START( sailormn ) |
| 1301 | | PORT_INCLUDE( cave ) |
| 1302 | | |
| 1303 | | PORT_START("EEPROM") // Eeprom Region |
| 1304 | | PORT_DIPNAME( 0xff, 0x02, DEF_STR( Region ) ) |
| 1305 | | PORT_DIPSETTING( 0x00, DEF_STR( Japan ) ) |
| 1306 | | PORT_DIPSETTING( 0x01, DEF_STR( USA ) ) |
| 1307 | | PORT_DIPSETTING( 0x02, DEF_STR( Europe ) ) |
| 1308 | | PORT_DIPSETTING( 0x03, "Hong Kong" ) |
| 1309 | | PORT_DIPSETTING( 0x04, "Taiwan" ) |
| 1310 | | PORT_DIPSETTING( 0x05, "Korea" ) |
| 1311 | | INPUT_PORTS_END |
| 1312 | | |
| 1313 | 1357 | /* Normal layout but with 4 buttons */ |
| 1314 | 1358 | static INPUT_PORTS_START( metmqstr ) |
| 1315 | 1359 | PORT_INCLUDE( cave ) |
| r7640 | r7641 | |
| 1399 | 1443 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1400 | 1444 | INPUT_PORTS_END |
| 1401 | 1445 | |
| 1446 | static INPUT_PORTS_START( tjumpman ) |
| 1447 | PORT_START("IN0") |
| 1448 | PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) |
| 1449 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1450 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1451 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eeprom_read_bit) |
| 1452 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y) // suru ("do") |
| 1453 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) |
| 1454 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "1 Bet" ) |
| 1455 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(tjumpman_hopper_r, NULL) |
| 1402 | 1456 | |
| 1457 | PORT_START("IN1") |
| 1458 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1459 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1460 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1461 | PORT_CONFNAME( 0x08, 0x08, "Self Test" ) |
| 1462 | PORT_CONFSETTING( 0x08, DEF_STR( Off ) ) |
| 1463 | PORT_CONFSETTING( 0x00, DEF_STR( On ) ) |
| 1464 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( DEF_STR( No ) ) PORT_CODE(KEYCODE_N) // shinai ("not") |
| 1465 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Go" ) |
| 1466 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // medal |
| 1467 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "3 Bet" ) |
| 1468 | INPUT_PORTS_END |
| 1469 | |
| 1470 | |
| 1403 | 1471 | /*************************************************************************** |
| 1404 | 1472 | |
| 1405 | 1473 | |
| r7640 | r7641 | |
| 1457 | 1525 | 8*8*8 |
| 1458 | 1526 | }; |
| 1459 | 1527 | |
| 1528 | /* 8x8x8 tiles, split in two roms (low / high nibble) */ |
| 1529 | static const gfx_layout layout_8x8x8_split = |
| 1530 | { |
| 1531 | 8,8, |
| 1532 | RGN_FRAC(1,2), |
| 1533 | 8, |
| 1534 | {STEP4(RGN_FRAC(1,2),1), STEP4(0,1)}, |
| 1535 | {STEP8(0,4)}, |
| 1536 | {STEP8(0,4*8)}, |
| 1537 | 8*8*4 |
| 1538 | }; |
| 1539 | |
| 1460 | 1540 | #if 0 |
| 1461 | 1541 | /* 16x16x8 Zooming Sprites - No need to decode them */ |
| 1462 | 1542 | static const gfx_layout layout_sprites = |
| r7640 | r7641 | |
| 1481 | 1561 | for consistency with games having $8000 real colors. |
| 1482 | 1562 | A PALETTE_INIT function is thus needed for sprites */ |
| 1483 | 1563 | |
| 1484 | | // "gfx1" // Sprites |
| 1485 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1486 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 0x4400, 0x40 ) // [1] Layer 1 |
| 1564 | // "sprites" |
| 1565 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1566 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x4400, 0x40 ) // [1] Layer 1 |
| 1487 | 1567 | GFXDECODE_END |
| 1488 | 1568 | |
| 1489 | 1569 | /*************************************************************************** |
| r7640 | r7641 | |
| 1497 | 1577 | in the color table). Layer 2 uses the whole 256 for any given |
| 1498 | 1578 | color code and the 4000-7fff range in the color table. */ |
| 1499 | 1579 | |
| 1500 | | // "gfx1" // Sprites |
| 1501 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x8000, 0x40 ) // [0] Layer 0 |
| 1502 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 0x8000, 0x40 ) // [1] Layer 1 |
| 1503 | | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x4000, 0x40 ) // [2] Layer 2 |
| 1580 | // "sprites" |
| 1581 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x8000, 0x40 ) // [0] Layer 0 |
| 1582 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x8000, 0x40 ) // [1] Layer 1 |
| 1583 | GFXDECODE_ENTRY( "layer2", 0, layout_8x8x8, 0x4000, 0x40 ) // [2] Layer 2 |
| 1504 | 1584 | GFXDECODE_END |
| 1505 | 1585 | |
| 1506 | 1586 | /*************************************************************************** |
| r7640 | r7641 | |
| 1513 | 1593 | for consistency with games having $8000 real colors. |
| 1514 | 1594 | A PALETTE_INIT function is thus needed for sprites */ |
| 1515 | 1595 | |
| 1516 | | // "gfx1" // Sprites |
| 1517 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1518 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 0x4400, 0x40 ) // [1] Layer 1 |
| 1519 | | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x4, 0x4400, 0x40 ) // [2] Layer 2 |
| 1596 | // "sprites" |
| 1597 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1598 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x4400, 0x40 ) // [1] Layer 1 |
| 1599 | GFXDECODE_ENTRY( "layer2", 0, layout_8x8x4, 0x4400, 0x40 ) // [2] Layer 2 |
| 1520 | 1600 | GFXDECODE_END |
| 1521 | 1601 | |
| 1522 | 1602 | /*************************************************************************** |
| r7640 | r7641 | |
| 1524 | 1604 | ***************************************************************************/ |
| 1525 | 1605 | |
| 1526 | 1606 | static GFXDECODE_START( esprade ) |
| 1527 | | // "gfx1" // Sprites |
| 1528 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x8, 0x4000, 0x40 ) // [0] Layer 0 |
| 1529 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x4000, 0x40 ) // [1] Layer 1 |
| 1530 | | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x4000, 0x40 ) // [2] Layer 2 |
| 1607 | // "sprites" |
| 1608 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x8, 0x4000, 0x40 ) // [0] Layer 0 |
| 1609 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x8, 0x4000, 0x40 ) // [1] Layer 1 |
| 1610 | GFXDECODE_ENTRY( "layer2", 0, layout_8x8x8, 0x4000, 0x40 ) // [2] Layer 2 |
| 1531 | 1611 | GFXDECODE_END |
| 1532 | 1612 | |
| 1533 | 1613 | /*************************************************************************** |
| r7640 | r7641 | |
| 1540 | 1620 | for consistency with games having $8000 real colors. |
| 1541 | 1621 | A PALETTE_INIT function is needed for sprites */ |
| 1542 | 1622 | |
| 1543 | | // "gfx1" // Sprites |
| 1544 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x4000, 0x40 ) // [0] Layer 0 |
| 1545 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 0x4000, 0x40 ) // [1] Layer 1 |
| 1546 | | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x4, 0x4000, 0x40 ) // [2] Layer 2 |
| 1623 | // "sprites" |
| 1624 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4000, 0x40 ) // [0] Layer 0 |
| 1625 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x4000, 0x40 ) // [1] Layer 1 |
| 1626 | GFXDECODE_ENTRY( "layer2", 0, layout_8x8x4, 0x4000, 0x40 ) // [2] Layer 2 |
| 1547 | 1627 | GFXDECODE_END |
| 1548 | 1628 | |
| 1549 | 1629 | /*************************************************************************** |
| r7640 | r7641 | |
| 1551 | 1631 | ***************************************************************************/ |
| 1552 | 1632 | |
| 1553 | 1633 | static GFXDECODE_START( korokoro ) |
| 1554 | | // "gfx1" // Sprites |
| 1555 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1634 | // "sprites" |
| 1635 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1556 | 1636 | GFXDECODE_END |
| 1557 | 1637 | |
| 1558 | 1638 | /*************************************************************************** |
| r7640 | r7641 | |
| 1568 | 1648 | $40 color codes, only $400 colors are addressable. |
| 1569 | 1649 | A PALETTE_INIT function is thus needed for sprites and layer 0. */ |
| 1570 | 1650 | |
| 1571 | | // "gfx1" // Sprites |
| 1572 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x4000, 0x40 ) // [0] Layer 0 |
| 1573 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x6, 0x4400, 0x40 ) // [1] Layer 1 |
| 1651 | // "sprites" |
| 1652 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4000, 0x40 ) // [0] Layer 0 |
| 1653 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x6, 0x4400, 0x40 ) // [1] Layer 1 |
| 1574 | 1654 | GFXDECODE_END |
| 1575 | 1655 | |
| 1576 | 1656 | |
| r7640 | r7641 | |
| 1579 | 1659 | ***************************************************************************/ |
| 1580 | 1660 | |
| 1581 | 1661 | static GFXDECODE_START( pwrinst2 ) |
| 1582 | | // "gfx1" // Sprites |
| 1583 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x0800+0x8000, 0x40 ) // [0] Layer 0 |
| 1584 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 0x1000+0x8000, 0x40 ) // [1] Layer 1 |
| 1585 | | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x4, 0x1800+0x8000, 0x40 ) // [2] Layer 2 |
| 1586 | | GFXDECODE_ENTRY( "gfx5", 0, layout_8x8x4, 0x2000+0x8000, 0x40 ) // [3] Layer 3 |
| 1662 | // "sprites" |
| 1663 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x0800+0x8000, 0x40 ) // [0] Layer 0 |
| 1664 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x1000+0x8000, 0x40 ) // [1] Layer 1 |
| 1665 | GFXDECODE_ENTRY( "layer2", 0, layout_8x8x4, 0x1800+0x8000, 0x40 ) // [2] Layer 2 |
| 1666 | GFXDECODE_ENTRY( "layer3", 0, layout_8x8x4, 0x2000+0x8000, 0x40 ) // [3] Layer 3 |
| 1587 | 1667 | GFXDECODE_END |
| 1588 | 1668 | |
| 1589 | 1669 | |
| r7640 | r7641 | |
| 1593 | 1673 | |
| 1594 | 1674 | static GFXDECODE_START( sailormn ) |
| 1595 | 1675 | /* 4 bit sprites ? */ |
| 1596 | | // "gfx1" // Sprites |
| 1597 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1598 | | GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 0x4800, 0x40 ) // [1] Layer 1 |
| 1599 | | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x6_2, 0x4c00, 0x40 ) // [2] Layer 2 |
| 1676 | // "sprites" |
| 1677 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x4, 0x4400, 0x40 ) // [0] Layer 0 |
| 1678 | GFXDECODE_ENTRY( "layer1", 0, layout_8x8x4, 0x4800, 0x40 ) // [1] Layer 1 |
| 1679 | GFXDECODE_ENTRY( "layer2", 0, layout_8x8x6_2, 0x4c00, 0x40 ) // [2] Layer 2 |
| 1600 | 1680 | GFXDECODE_END |
| 1601 | 1681 | |
| 1602 | 1682 | |
| 1603 | 1683 | /*************************************************************************** |
| 1684 | Tobikose! Jumpman |
| 1685 | ***************************************************************************/ |
| 1686 | |
| 1687 | static GFXDECODE_START( tjumpman ) |
| 1688 | // "sprites" |
| 1689 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x8_split, 0x4000, 0x40 ) // [0] Layer 0 |
| 1690 | GFXDECODE_END |
| 1691 | |
| 1692 | |
| 1693 | /*************************************************************************** |
| 1604 | 1694 | Uo Poko |
| 1605 | 1695 | ***************************************************************************/ |
| 1606 | 1696 | |
| 1607 | 1697 | static GFXDECODE_START( uopoko ) |
| 1608 | | // "gfx1" // Sprites |
| 1609 | | GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x8, 0x4000, 0x40 ) // [0] Layer 0 |
| 1698 | // "sprites" |
| 1699 | GFXDECODE_ENTRY( "layer0", 0, layout_8x8x8, 0x4000, 0x40 ) // [0] Layer 0 |
| 1610 | 1700 | GFXDECODE_END |
| 1611 | 1701 | |
| 1612 | 1702 | |
| r7640 | r7641 | |
| 1641 | 1731 | memset(state->soundbuf_data, 0, 32); |
| 1642 | 1732 | state->soundbuf_len = 0; |
| 1643 | 1733 | |
| 1644 | | /* modify the eeprom on a reset with the desired region for the games that have the region factory set in eeprom */ |
| 1645 | | if (state->region_byte >= 0) |
| 1646 | | memory_write_byte(cputag_get_address_space(machine, "eeprom", ADDRESS_SPACE_0), state->region_byte, input_port_read(machine, "EEPROM")); |
| 1647 | | |
| 1648 | 1734 | state->vblank_irq = 0; |
| 1649 | 1735 | state->sound_irq = 0; |
| 1650 | 1736 | state->unknown_irq = 0; |
| r7640 | r7641 | |
| 1704 | 1790 | |
| 1705 | 1791 | MDRV_GFXDECODE(dfeveron) |
| 1706 | 1792 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 1793 | MDRV_PALETTE_INIT(dfeveron) |
| 1707 | 1794 | |
| 1708 | | MDRV_PALETTE_INIT(dfeveron) |
| 1709 | 1795 | MDRV_VIDEO_START(cave_2_layers) |
| 1710 | 1796 | MDRV_VIDEO_UPDATE(cave) |
| 1711 | 1797 | |
| r7640 | r7641 | |
| 1748 | 1834 | |
| 1749 | 1835 | MDRV_GFXDECODE(ddonpach) |
| 1750 | 1836 | MDRV_PALETTE_LENGTH(0x8000 + 0x40*16) // $400 extra entries for layers 1&2 |
| 1837 | MDRV_PALETTE_INIT(ddonpach) |
| 1751 | 1838 | |
| 1752 | | MDRV_PALETTE_INIT(ddonpach) |
| 1753 | 1839 | MDRV_VIDEO_START(cave_3_layers) |
| 1754 | 1840 | MDRV_VIDEO_UPDATE(cave) |
| 1755 | 1841 | |
| r7640 | r7641 | |
| 1796 | 1882 | |
| 1797 | 1883 | MDRV_GFXDECODE(donpachi) |
| 1798 | 1884 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 1885 | MDRV_PALETTE_INIT(dfeveron) |
| 1799 | 1886 | |
| 1800 | | MDRV_PALETTE_INIT(dfeveron) |
| 1801 | 1887 | MDRV_VIDEO_START(cave_3_layers) |
| 1802 | 1888 | MDRV_VIDEO_UPDATE(cave) |
| 1803 | 1889 | |
| r7640 | r7641 | |
| 1846 | 1932 | |
| 1847 | 1933 | MDRV_GFXDECODE(esprade) |
| 1848 | 1934 | MDRV_PALETTE_LENGTH(0x8000) |
| 1935 | MDRV_PALETTE_INIT(cave) |
| 1849 | 1936 | |
| 1850 | | MDRV_PALETTE_INIT(cave) |
| 1851 | 1937 | MDRV_VIDEO_START(cave_3_layers) |
| 1852 | 1938 | MDRV_VIDEO_UPDATE(cave) |
| 1853 | 1939 | |
| r7640 | r7641 | |
| 1888 | 1974 | |
| 1889 | 1975 | MDRV_GFXDECODE(esprade) |
| 1890 | 1976 | MDRV_PALETTE_LENGTH(0x8000) |
| 1977 | MDRV_PALETTE_INIT(cave) |
| 1891 | 1978 | |
| 1892 | | MDRV_PALETTE_INIT(cave) |
| 1893 | 1979 | MDRV_VIDEO_START(cave_3_layers) |
| 1894 | 1980 | MDRV_VIDEO_UPDATE(cave) |
| 1895 | 1981 | |
| r7640 | r7641 | |
| 1931 | 2017 | |
| 1932 | 2018 | MDRV_GFXDECODE(esprade) |
| 1933 | 2019 | MDRV_PALETTE_LENGTH(0x8000) |
| 2020 | MDRV_PALETTE_INIT(cave) |
| 1934 | 2021 | |
| 1935 | | MDRV_PALETTE_INIT(cave) |
| 1936 | 2022 | MDRV_VIDEO_START(cave_3_layers) |
| 1937 | 2023 | MDRV_VIDEO_UPDATE(cave) |
| 1938 | 2024 | |
| r7640 | r7641 | |
| 1977 | 2063 | |
| 1978 | 2064 | MDRV_GFXDECODE(hotdogst) |
| 1979 | 2065 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 2066 | MDRV_PALETTE_INIT(dfeveron) |
| 1980 | 2067 | |
| 1981 | | MDRV_PALETTE_INIT(dfeveron) |
| 1982 | 2068 | MDRV_VIDEO_START(cave_3_layers) |
| 1983 | 2069 | MDRV_VIDEO_UPDATE(cave) |
| 1984 | 2070 | |
| r7640 | r7641 | |
| 2031 | 2117 | |
| 2032 | 2118 | MDRV_GFXDECODE(korokoro) |
| 2033 | 2119 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 2120 | MDRV_PALETTE_INIT(korokoro) |
| 2034 | 2121 | |
| 2035 | | MDRV_PALETTE_INIT(korokoro) |
| 2036 | 2122 | MDRV_VIDEO_START(cave_1_layer) |
| 2037 | 2123 | MDRV_VIDEO_UPDATE(cave) |
| 2038 | 2124 | |
| r7640 | r7641 | |
| 2045 | 2131 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2046 | 2132 | MACHINE_DRIVER_END |
| 2047 | 2133 | |
| 2134 | static MACHINE_DRIVER_START( crusherm ) |
| 2048 | 2135 | |
| 2136 | /* driver data */ |
| 2137 | MDRV_IMPORT_FROM( korokoro ) |
| 2138 | |
| 2139 | /* basic machine hardware */ |
| 2140 | MDRV_CPU_MODIFY("maincpu") |
| 2141 | MDRV_CPU_PROGRAM_MAP(crusherm_map) |
| 2142 | MACHINE_DRIVER_END |
| 2143 | |
| 2144 | |
| 2049 | 2145 | /*************************************************************************** |
| 2050 | 2146 | Mazinger Z |
| 2051 | 2147 | ***************************************************************************/ |
| r7640 | r7641 | |
| 2080 | 2176 | |
| 2081 | 2177 | MDRV_GFXDECODE(mazinger) |
| 2082 | 2178 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 2179 | MDRV_PALETTE_INIT(mazinger) |
| 2083 | 2180 | |
| 2084 | | MDRV_PALETTE_INIT(mazinger) |
| 2085 | 2181 | MDRV_VIDEO_START(cave_2_layers) |
| 2086 | 2182 | MDRV_VIDEO_UPDATE(cave) |
| 2087 | 2183 | |
| r7640 | r7641 | |
| 2140 | 2236 | |
| 2141 | 2237 | MDRV_GFXDECODE(donpachi) |
| 2142 | 2238 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 2239 | MDRV_PALETTE_INIT(dfeveron) |
| 2143 | 2240 | |
| 2144 | | MDRV_PALETTE_INIT(dfeveron) |
| 2145 | 2241 | MDRV_VIDEO_START(cave_3_layers) |
| 2146 | 2242 | MDRV_VIDEO_UPDATE(cave) |
| 2147 | 2243 | |
| r7640 | r7641 | |
| 2204 | 2300 | |
| 2205 | 2301 | MDRV_GFXDECODE(pwrinst2) |
| 2206 | 2302 | MDRV_PALETTE_LENGTH(0x8000+0x2800) |
| 2303 | MDRV_PALETTE_INIT(pwrinst2) |
| 2207 | 2304 | |
| 2208 | | MDRV_PALETTE_INIT(pwrinst2) |
| 2209 | 2305 | MDRV_VIDEO_START(cave_4_layers) |
| 2210 | 2306 | MDRV_VIDEO_UPDATE(cave) |
| 2211 | 2307 | |
| r7640 | r7641 | |
| 2271 | 2367 | |
| 2272 | 2368 | MDRV_GFXDECODE(sailormn) |
| 2273 | 2369 | MDRV_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */ |
| 2370 | MDRV_PALETTE_INIT(sailormn) // 4 bit sprites, 6 bit tiles |
| 2274 | 2371 | |
| 2275 | | MDRV_PALETTE_INIT(sailormn) // 4 bit sprites, 6 bit tiles |
| 2276 | 2372 | MDRV_VIDEO_START(sailormn_3_layers) /* Layer 2 has 1 banked ROM */ |
| 2277 | 2373 | MDRV_VIDEO_UPDATE(cave) |
| 2278 | 2374 | |
| r7640 | r7641 | |
| 2296 | 2392 | |
| 2297 | 2393 | |
| 2298 | 2394 | /*************************************************************************** |
| 2395 | Tobikose! Jumpman |
| 2396 | ***************************************************************************/ |
| 2397 | |
| 2398 | static MACHINE_DRIVER_START( tjumpman ) |
| 2399 | |
| 2400 | /* driver data */ |
| 2401 | MDRV_DRIVER_DATA(cave_state) |
| 2402 | |
| 2403 | MDRV_NVRAM_HANDLER(generic_0fill) |
| 2404 | |
| 2405 | /* basic machine hardware */ |
| 2406 | MDRV_CPU_ADD("maincpu", M68000, XTAL_28MHz / 2) |
| 2407 | MDRV_CPU_PROGRAM_MAP(tjumpman_map) |
| 2408 | MDRV_CPU_VBLANK_INT("screen", cave_interrupt) |
| 2409 | |
| 2410 | MDRV_WATCHDOG_TIME_INIT(SEC(3)) /* a guess, and certainly wrong */ |
| 2411 | |
| 2412 | MDRV_MACHINE_START(cave) |
| 2413 | MDRV_MACHINE_RESET(cave) |
| 2414 | MDRV_EEPROM_93C46_ADD("eeprom") |
| 2415 | |
| 2416 | /* video hardware */ |
| 2417 | MDRV_SCREEN_ADD("screen", RASTER) |
| 2418 | MDRV_SCREEN_REFRESH_RATE(15625/271.5) |
| 2419 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 2420 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 2421 | MDRV_SCREEN_SIZE(0x200, 240) |
| 2422 | MDRV_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1) |
| 2423 | |
| 2424 | MDRV_GFXDECODE(tjumpman) |
| 2425 | MDRV_PALETTE_LENGTH(0x8000) |
| 2426 | MDRV_PALETTE_INIT(cave) |
| 2427 | |
| 2428 | MDRV_VIDEO_START(cave_1_layer) |
| 2429 | MDRV_VIDEO_UPDATE(cave) |
| 2430 | |
| 2431 | /* sound hardware */ |
| 2432 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2433 | |
| 2434 | MDRV_SOUND_ADD("oki1", OKIM6295, XTAL_28MHz / 28) |
| 2435 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified |
| 2436 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 2437 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 2438 | |
| 2439 | // oki2 spot is unpopulated |
| 2440 | MACHINE_DRIVER_END |
| 2441 | |
| 2442 | |
| 2443 | /*************************************************************************** |
| 2299 | 2444 | Uo Poko |
| 2300 | 2445 | ***************************************************************************/ |
| 2301 | 2446 | |
| r7640 | r7641 | |
| 2348 | 2493 | /* 4 bits -> 8 bits. Even and odd pixels are swapped */ |
| 2349 | 2494 | static void unpack_sprites(running_machine *machine) |
| 2350 | 2495 | { |
| 2351 | | const UINT32 len = memory_region_length(machine, "gfx1"); |
| 2352 | | UINT8 *rgn = memory_region(machine, "gfx1"); |
| 2353 | | UINT8 *src = rgn + len / 2 - 1; |
| 2354 | | UINT8 *dst = rgn + len - 1; |
| 2496 | const UINT32 len = memory_region_length(machine, "sprites"); |
| 2497 | UINT8 *rgn = memory_region (machine, "sprites"); |
| 2498 | UINT8 *src = rgn + len / 2 - 1; |
| 2499 | UINT8 *dst = rgn + len - 1; |
| 2355 | 2500 | |
| 2356 | 2501 | while(dst > src) |
| 2357 | 2502 | { |
| r7640 | r7641 | |
| 2365 | 2510 | /* 4 bits -> 8 bits. Even and odd pixels and even and odd words, are swapped */ |
| 2366 | 2511 | static void ddonpach_unpack_sprites(running_machine *machine) |
| 2367 | 2512 | { |
| 2368 | | const UINT32 len = memory_region_length(machine, "gfx1"); |
| 2369 | | UINT8 *rgn = memory_region(machine, "gfx1"); |
| 2370 | | UINT8 *src = rgn + len / 2 - 1; |
| 2371 | | UINT8 *dst = rgn + len - 1; |
| 2513 | const UINT32 len = memory_region_length(machine, "sprites"); |
| 2514 | UINT8 *rgn = memory_region (machine, "sprites"); |
| 2515 | UINT8 *src = rgn + len / 2 - 1; |
| 2516 | UINT8 *dst = rgn + len - 1; |
| 2372 | 2517 | |
| 2373 | 2518 | while(dst > src) |
| 2374 | 2519 | { |
| r7640 | r7641 | |
| 2389 | 2534 | /* 2 pages of 4 bits -> 8 bits */ |
| 2390 | 2535 | static void esprade_unpack_sprites(running_machine *machine) |
| 2391 | 2536 | { |
| 2392 | | UINT8 *src = memory_region(machine, "gfx1"); |
| 2393 | | UINT8 *dst = src + memory_region_length(machine, "gfx1"); |
| 2537 | UINT8 *src = memory_region(machine, "sprites"); |
| 2538 | UINT8 *dst = src + memory_region_length(machine, "sprites"); |
| 2394 | 2539 | |
| 2395 | 2540 | while(src < dst) |
| 2396 | 2541 | { |
| r7640 | r7641 | |
| 2446 | 2591 | |
| 2447 | 2592 | ***************************************************************************/ |
| 2448 | 2593 | |
| 2449 | | ROM_START( agallet ) /* PCB showed "Taiwan Only" on the copyright notice screen. Region byte in EEPROM */ |
| 2450 | | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 2451 | | ROM_LOAD16_WORD_SWAP( "bp962a.u45", 0x000000, 0x080000, CRC(24815046) SHA1(f5eeae60b923ae850b335e7898a2760407631d8b) ) |
| 2452 | | //empty |
| 2453 | 2594 | |
| 2454 | | ROM_REGION( 0x88000, "audiocpu", 0 ) /* Z80 code */ |
| 2455 | | ROM_LOAD( "bp962a.u9", 0x00000, 0x08000, CRC(06caddbe) SHA1(6a3cc50558ba19a31b21b7f3ec6c6e2846244ff1) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF |
| 2456 | | ROM_CONTINUE( 0x10000, 0x78000 ) |
| 2457 | 2595 | |
| 2458 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 2459 | | ROM_LOAD( "bp962a.u76", 0x000000, 0x200000, CRC(858da439) SHA1(33a3d2a3ec3fa3364b00e1e43b405e5030a5b2a3) ) |
| 2460 | | ROM_LOAD( "bp962a.u77", 0x200000, 0x200000, CRC(ea2ba35e) SHA1(72487f21d44fe7be9a98068ce7f57a43c132945f) ) |
| 2596 | #define ROMS_AGALLET \ |
| 2597 | ROM_REGION( 0x400000, "maincpu", 0 ) \ |
| 2598 | ROM_LOAD16_WORD_SWAP( "bp962a.u45", 0x000000, 0x080000, CRC(24815046) SHA1(f5eeae60b923ae850b335e7898a2760407631d8b) ) \ |
| 2599 | \ |
| 2600 | ROM_REGION( 0x88000, "audiocpu", 0 ) \ |
| 2601 | ROM_LOAD( "bp962a.u9", 0x00000, 0x08000, CRC(06caddbe) SHA1(6a3cc50558ba19a31b21b7f3ec6c6e2846244ff1) ) \ |
| 2602 | ROM_CONTINUE( 0x10000, 0x78000 ) \ |
| 2603 | \ |
| 2604 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) \ |
| 2605 | ROM_LOAD( "bp962a.u76", 0x000000, 0x200000, CRC(858da439) SHA1(33a3d2a3ec3fa3364b00e1e43b405e5030a5b2a3) ) \ |
| 2606 | ROM_LOAD( "bp962a.u77", 0x200000, 0x200000, CRC(ea2ba35e) SHA1(72487f21d44fe7be9a98068ce7f57a43c132945f) ) \ |
| 2607 | \ |
| 2608 | ROM_REGION( 0x100000, "layer0", 0 ) \ |
| 2609 | ROM_LOAD( "bp962a.u53", 0x000000, 0x100000, CRC(fcd9a107) SHA1(169b94db8389e7d47d4d77f36907a62c30fea727) ) \ |
| 2610 | ROM_CONTINUE( 0x000000, 0x100000 ) \ |
| 2611 | \ |
| 2612 | ROM_REGION( 0x200000, "layer1", 0 ) \ |
| 2613 | ROM_LOAD( "bp962a.u54", 0x000000, 0x200000, CRC(0cfa3409) SHA1(17107e26762ef7e3b902fb29a6d7bc534a4d09aa) ) \ |
| 2614 | \ |
| 2615 | ROM_REGION( (1*0x200000)*2, "layer2", 0 ) \ |
| 2616 | \ |
| 2617 | ROM_LOAD( "bp962a.u57", 0x000000, 0x200000, CRC(6d608957) SHA1(15f6e8346f5f95eb229505b1b4666dabeb810ee8) ) \ |
| 2618 | \ |
| 2619 | ROM_LOAD( "bp962a.u65", 0x200000, 0x100000, CRC(135fcf9a) SHA1(2e8c89c2627bbdef160d96724d07883fb2fa1a57) ) \ |
| 2620 | ROM_CONTINUE( 0x200000, 0x100000 ) \ |
| 2621 | \ |
| 2622 | ROM_REGION( 0x240000, "oki1", 0 ) \ |
| 2623 | ROM_LOAD( "bp962a.u48", 0x040000, 0x200000, CRC(ae00a1ce) SHA1(5e8c74df0ac77efb3080406870856f958be14f79) ) \ |
| 2624 | \ |
| 2625 | ROM_REGION( 0x240000, "oki2", 0 ) \ |
| 2626 | ROM_LOAD( "bp962a.u47", 0x040000, 0x200000, CRC(6d4e9737) SHA1(81c7ecdfc2d38d0b35e26745866f6672f566f936) ) \ |
| 2461 | 2627 | |
| 2462 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 2463 | | ROM_LOAD( "bp962a.u53", 0x000000, 0x100000, CRC(fcd9a107) SHA1(169b94db8389e7d47d4d77f36907a62c30fea727) ) // FIRST AND SECOND HALF IDENTICAL |
| 2464 | | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 2628 | /* the regions differ only in the EEPROM, hence the macro above - all EEPROMs are Factory Defaulted */ |
| 2629 | ROM_START( agallet ) |
| 2630 | ROMS_AGALLET |
| 2465 | 2631 | |
| 2466 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 2467 | | ROM_LOAD( "bp962a.u54", 0x000000, 0x200000, CRC(0cfa3409) SHA1(17107e26762ef7e3b902fb29a6d7bc534a4d09aa) ) |
| 2632 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 2633 | ROM_LOAD16_WORD( "agallet_europe.nv", 0x0000, 0x0080, CRC(ec38bf65) SHA1(cb8d9eacc0cf55a0c6b187e6673e3354554314b5) ) |
| 2634 | ROM_END |
| 2468 | 2635 | |
| 2469 | | ROM_REGION( (1*0x200000)*2, "gfx4", 0 ) /* Layer 2 */ |
| 2470 | | /* 4 bit part */ |
| 2471 | | ROM_LOAD( "bp962a.u57", 0x000000, 0x200000, CRC(6d608957) SHA1(15f6e8346f5f95eb229505b1b4666dabeb810ee8) ) |
| 2472 | | /* 2 bit part */ |
| 2473 | | ROM_LOAD( "bp962a.u65", 0x200000, 0x100000, CRC(135fcf9a) SHA1(2e8c89c2627bbdef160d96724d07883fb2fa1a57) ) // FIRST AND SECOND HALF IDENTICAL |
| 2474 | | ROM_CONTINUE( 0x200000, 0x100000 ) |
| 2636 | ROM_START( agalletu ) |
| 2637 | ROMS_AGALLET |
| 2475 | 2638 | |
| 2476 | | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #0 Samples */ |
| 2477 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 2478 | | ROM_LOAD( "bp962a.u48", 0x040000, 0x200000, CRC(ae00a1ce) SHA1(5e8c74df0ac77efb3080406870856f958be14f79) ) // 16 x $20000, FIRST AND SECOND HALF IDENTICAL |
| 2639 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 2640 | ROM_LOAD16_WORD( "agallet_usa.nv", 0x0000, 0x0080, CRC(72e65056) SHA1(abf1a86df01064d9d5d8c418e8367817319ec335) ) |
| 2641 | ROM_END |
| 2479 | 2642 | |
| 2480 | | ROM_REGION( 0x240000, "oki2", 0 ) /* OKIM6295 #1 Samples */ |
| 2481 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 2482 | | ROM_LOAD( "bp962a.u47", 0x040000, 0x200000, CRC(6d4e9737) SHA1(81c7ecdfc2d38d0b35e26745866f6672f566f936) ) // 16 x $20000, FIRST AND SECOND HALF IDENTICAL |
| 2643 | ROM_START( agalletj ) |
| 2644 | ROMS_AGALLET |
| 2483 | 2645 | |
| 2484 | 2646 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 2485 | | ROM_LOAD16_WORD( "eeprom-agallet.bin", 0x0000, 0x0080, CRC(ec38bf65) SHA1(cb8d9eacc0cf55a0c6b187e6673e3354554314b5) ) |
| 2647 | ROM_LOAD16_WORD( "agallet_japan.nv", 0x0000, 0x0080, CRC(0753f547) SHA1(aabb987470406b8729894108bc4d050f7200917d) ) |
| 2486 | 2648 | ROM_END |
| 2487 | 2649 | |
| 2650 | ROM_START( agalletk ) |
| 2651 | ROMS_AGALLET |
| 2488 | 2652 | |
| 2653 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 2654 | ROM_LOAD16_WORD( "agallet_korea.nv", 0x0000, 0x0080, CRC(7f41c253) SHA1(50793d4da0ad6eb590941d26a729a1cf4b3c25c2) ) |
| 2655 | ROM_END |
| 2656 | |
| 2657 | ROM_START( agallett ) // the dumped board was this region |
| 2658 | ROMS_AGALLET |
| 2659 | |
| 2660 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 2661 | ROM_LOAD16_WORD( "agallet_taiwan.nv", 0x0000, 0x0080, CRC(0af46742) SHA1(37b704c4c573b2aabd6f016e9e8dd458f95148f7) ) |
| 2662 | ROM_END |
| 2663 | |
| 2664 | ROM_START( agalleth ) |
| 2665 | ROMS_AGALLET |
| 2666 | |
| 2667 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 2668 | ROM_LOAD16_WORD( "agallet_hongkong.nv", 0x0000, 0x0080, CRC(998d1a74) SHA1(13e7e27a18417949d49e97d521781fc0feeef792) ) |
| 2669 | ROM_END |
| 2670 | |
| 2489 | 2671 | /*************************************************************************** |
| 2490 | 2672 | |
| 2491 | 2673 | Fever SOS (International) / Dangun Feveron (Japan) |
| r7640 | r7641 | |
| 2500 | 2682 | ROM_LOAD16_BYTE( "cv01-u34.bin", 0x000000, 0x080000, CRC(be87f19d) SHA1(595239245df3835cdf5a99a6c62480465558d8d3) ) |
| 2501 | 2683 | ROM_LOAD16_BYTE( "cv01-u33.bin", 0x000001, 0x080000, CRC(e53a7db3) SHA1(ddced29f78dc3cc89038757b6577ba2ba0d8b041) ) |
| 2502 | 2684 | |
| 2503 | | ROM_REGION( 0x800000 * 2, "gfx1", 0 ) /* Sprites: * 2 , do not dispose */ |
| 2685 | ROM_REGION( 0x800000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 2504 | 2686 | ROM_LOAD( "cv01-u25.bin", 0x000000, 0x400000, CRC(a6f6a95d) SHA1(e1eb45cb5d0e6163edfd9d830633b913fb53c6ca) ) |
| 2505 | 2687 | ROM_LOAD( "cv01-u26.bin", 0x400000, 0x400000, CRC(32edb62a) SHA1(3def74e1316b80cc25a8c3ac162cd7bcb8cc807c) ) |
| 2506 | 2688 | |
| 2507 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 2689 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 2508 | 2690 | ROM_LOAD( "cv01-u50.bin", 0x000000, 0x200000, CRC(7a344417) SHA1(828bd8f95d2fcc34407e17629ccafc904a4ea12d) ) |
| 2509 | 2691 | |
| 2510 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 2692 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ |
| 2511 | 2693 | ROM_LOAD( "cv01-u49.bin", 0x000000, 0x200000, CRC(d21cdda7) SHA1(cace4650de580c3c4a037f1f5c32bfc1846b383c) ) |
| 2512 | 2694 | |
| 2513 | 2695 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2606 | 2788 | ROM_LOAD16_BYTE( "cv01-u34.sos", 0x000000, 0x080000, CRC(24ef3ce6) SHA1(42799eebbb2686a837b8972aec684143deadca59) ) |
| 2607 | 2789 | ROM_LOAD16_BYTE( "cv01-u33.sos", 0x000001, 0x080000, CRC(64ff73fd) SHA1(7fc3a8469cec2361d373a4dac4a547c13ca5f709) ) |
| 2608 | 2790 | |
| 2609 | | ROM_REGION( 0x800000 * 2, "gfx1", 0 ) /* Sprites: * 2 , do not dispose */ |
| 2791 | ROM_REGION( 0x800000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 2610 | 2792 | ROM_LOAD( "cv01-u25.bin", 0x000000, 0x400000, CRC(a6f6a95d) SHA1(e1eb45cb5d0e6163edfd9d830633b913fb53c6ca) ) |
| 2611 | 2793 | ROM_LOAD( "cv01-u26.bin", 0x400000, 0x400000, CRC(32edb62a) SHA1(3def74e1316b80cc25a8c3ac162cd7bcb8cc807c) ) |
| 2612 | 2794 | |
| 2613 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 2795 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 2614 | 2796 | ROM_LOAD( "cv01-u50.bin", 0x000000, 0x200000, CRC(7a344417) SHA1(828bd8f95d2fcc34407e17629ccafc904a4ea12d) ) |
| 2615 | 2797 | |
| 2616 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 2798 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ |
| 2617 | 2799 | ROM_LOAD( "cv01-u49.bin", 0x000000, 0x200000, CRC(d21cdda7) SHA1(cace4650de580c3c4a037f1f5c32bfc1846b383c) ) |
| 2618 | 2800 | |
| 2619 | 2801 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2641 | 2823 | ROM_LOAD16_BYTE( "b1.u27", 0x000000, 0x080000, CRC(b5cdc8d3) SHA1(58757b50e21a27e500a82c03f62cf02a85389926) ) |
| 2642 | 2824 | ROM_LOAD16_BYTE( "b2.u26", 0x000001, 0x080000, CRC(6bbb063a) SHA1(e5de64b9c3efc0a38a2e0e16b78ee393bff63558) ) |
| 2643 | 2825 | |
| 2644 | | ROM_REGION( 0x800000 * 2, "gfx1", 0 ) /* Sprites: * 2, do not dispose */ |
| 2826 | ROM_REGION( 0x800000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 2645 | 2827 | ROM_LOAD( "u50.bin", 0x000000, 0x200000, CRC(14b260ec) SHA1(33bda210302428d5500115d0c7a839cdfcb67d17) ) |
| 2646 | 2828 | ROM_LOAD( "u51.bin", 0x200000, 0x200000, CRC(e7ba8cce) SHA1(ad74a6b7d53760b19587c4a6dbea937daa7e87ce) ) |
| 2647 | 2829 | ROM_LOAD( "u52.bin", 0x400000, 0x200000, CRC(02492ee0) SHA1(64d9cc64a4ad189a8b03cf6a749ddb732b4a0014) ) |
| 2648 | 2830 | ROM_LOAD( "u53.bin", 0x600000, 0x200000, CRC(cb4c10f0) SHA1(a622e8bd0c938b5d38b392b247400b744d8be288) ) |
| 2649 | 2831 | |
| 2650 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 2832 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 2651 | 2833 | ROM_LOAD( "u60.bin", 0x000000, 0x200000, CRC(903096a7) SHA1(a243e903fef7c4a7b71383263e82e42acd869261) ) |
| 2652 | 2834 | |
| 2653 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 2835 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ |
| 2654 | 2836 | ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(d89b7631) SHA1(a66bb4955ca58fab8973ca37a0f971e9a67ce017) ) |
| 2655 | 2837 | |
| 2656 | | ROM_REGION( 0x200000, "gfx4", 0 ) /* Layer 2 */ |
| 2838 | ROM_REGION( 0x200000, "layer2", 0 ) /* Layer 2 */ |
| 2657 | 2839 | ROM_LOAD( "u62.bin", 0x000000, 0x200000, CRC(292bfb6b) SHA1(11b385991ee990eb5ef36e136b988802b5f90fa4) ) |
| 2658 | 2840 | |
| 2659 | 2841 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2670 | 2852 | ROM_LOAD16_BYTE( "u27.bin", 0x000000, 0x080000, CRC(2432ff9b) SHA1(fbc826c30553f6553ead40b312b73c049e8f4bf6) ) |
| 2671 | 2853 | ROM_LOAD16_BYTE( "u26.bin", 0x000001, 0x080000, CRC(4f3a914a) SHA1(ae98eba049f1462aa1145f6959b9f9a32c97278f) ) |
| 2672 | 2854 | |
| 2673 | | ROM_REGION( 0x800000 * 2, "gfx1", 0 ) /* Sprites: * 2, do not dispose */ |
| 2855 | ROM_REGION( 0x800000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 2674 | 2856 | ROM_LOAD( "u50.bin", 0x000000, 0x200000, CRC(14b260ec) SHA1(33bda210302428d5500115d0c7a839cdfcb67d17) ) |
| 2675 | 2857 | ROM_LOAD( "u51.bin", 0x200000, 0x200000, CRC(e7ba8cce) SHA1(ad74a6b7d53760b19587c4a6dbea937daa7e87ce) ) |
| 2676 | 2858 | ROM_LOAD( "u52.bin", 0x400000, 0x200000, CRC(02492ee0) SHA1(64d9cc64a4ad189a8b03cf6a749ddb732b4a0014) ) |
| 2677 | 2859 | ROM_LOAD( "u53.bin", 0x600000, 0x200000, CRC(cb4c10f0) SHA1(a622e8bd0c938b5d38b392b247400b744d8be288) ) |
| 2678 | 2860 | |
| 2679 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 2861 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 2680 | 2862 | ROM_LOAD( "u60.bin", 0x000000, 0x200000, CRC(903096a7) SHA1(a243e903fef7c4a7b71383263e82e42acd869261) ) |
| 2681 | 2863 | |
| 2682 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 2864 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ |
| 2683 | 2865 | ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(d89b7631) SHA1(a66bb4955ca58fab8973ca37a0f971e9a67ce017) ) |
| 2684 | 2866 | |
| 2685 | | ROM_REGION( 0x200000, "gfx4", 0 ) /* Layer 2 */ |
| 2867 | ROM_REGION( 0x200000, "layer2", 0 ) /* Layer 2 */ |
| 2686 | 2868 | ROM_LOAD( "u62.bin", 0x000000, 0x200000, CRC(292bfb6b) SHA1(11b385991ee990eb5ef36e136b988802b5f90fa4) ) |
| 2687 | 2869 | |
| 2688 | 2870 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2737 | 2919 | ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */ |
| 2738 | 2920 | ROM_LOAD16_WORD_SWAP( "prgu.u29", 0x00000, 0x80000, CRC(89c36802) SHA1(7857c726cecca5a4fce282e0d2b873774d2c1b1d) ) |
| 2739 | 2921 | |
| 2740 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 2922 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites */ |
| 2741 | 2923 | ROM_LOAD( "atdp.u44", 0x000000, 0x200000, CRC(7189e953) SHA1(53adbe6ea5e01ecb48575e9db82cc3d0dc8a3726) ) |
| 2742 | 2924 | ROM_LOAD( "atdp.u45", 0x200000, 0x200000, CRC(6984173f) SHA1(625dd6674adeb206815855b8b6a1fba79ed5c4cd) ) |
| 2743 | 2925 | |
| 2744 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 2926 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 2745 | 2927 | ROM_LOAD( "atdp.u54", 0x000000, 0x100000, CRC(6bda6b66) SHA1(6472e6706505bac17484fb8bf4e8922ced4adf63) ) |
| 2746 | 2928 | |
| 2747 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 2929 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 2748 | 2930 | ROM_LOAD( "atdp.u57", 0x000000, 0x100000, CRC(0a0e72b9) SHA1(997e8253777e7acca5a1c0c4026e78eecc122d5d) ) |
| 2749 | 2931 | |
| 2750 | | ROM_REGION( 0x040000, "gfx4", 0 ) /* Text / Character Layer */ |
| 2932 | ROM_REGION( 0x040000, "layer2", 0 ) /* Text / Character Layer */ |
| 2751 | 2933 | ROM_LOAD( "text.u58", 0x000000, 0x040000, CRC(5dba06e7) SHA1(f9dab7f6c732a683fddb4cae090a875b3962332b) ) |
| 2752 | 2934 | |
| 2753 | 2935 | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 2767 | 2949 | ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */ |
| 2768 | 2950 | ROM_LOAD16_WORD_SWAP( "prg.u29", 0x00000, 0x80000, CRC(6be14af6) SHA1(5b1158071f160efeded816ae4c4edca1d00d6e05) ) |
| 2769 | 2951 | |
| 2770 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 2952 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites */ |
| 2771 | 2953 | ROM_LOAD( "atdp.u44", 0x000000, 0x200000, CRC(7189e953) SHA1(53adbe6ea5e01ecb48575e9db82cc3d0dc8a3726) ) |
| 2772 | 2954 | ROM_LOAD( "atdp.u45", 0x200000, 0x200000, CRC(6984173f) SHA1(625dd6674adeb206815855b8b6a1fba79ed5c4cd) ) |
| 2773 | 2955 | |
| 2774 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 2956 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 2775 | 2957 | ROM_LOAD( "atdp.u54", 0x000000, 0x100000, CRC(6bda6b66) SHA1(6472e6706505bac17484fb8bf4e8922ced4adf63) ) |
| 2776 | 2958 | |
| 2777 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 2959 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 2778 | 2960 | ROM_LOAD( "atdp.u57", 0x000000, 0x100000, CRC(0a0e72b9) SHA1(997e8253777e7acca5a1c0c4026e78eecc122d5d) ) |
| 2779 | 2961 | |
| 2780 | | ROM_REGION( 0x040000, "gfx4", 0 ) /* Text / Character Layer */ |
| 2962 | ROM_REGION( 0x040000, "layer2", 0 ) /* Text / Character Layer */ |
| 2781 | 2963 | ROM_LOAD( "u58.bin", 0x000000, 0x040000, CRC(285379ff) SHA1(b9552edcec29ddf4b552800b145c398b94117ab0) ) |
| 2782 | 2964 | |
| 2783 | 2965 | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 2797 | 2979 | ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */ |
| 2798 | 2980 | ROM_LOAD16_WORD_SWAP( "prgk.u26", 0x00000, 0x80000, CRC(bbaf4c8b) SHA1(0f9d42c8c4c5b69e3d39bf768bc4b663f66b4f36) ) |
| 2799 | 2981 | |
| 2800 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 2982 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites */ |
| 2801 | 2983 | ROM_LOAD( "atdp.u44", 0x000000, 0x200000, CRC(7189e953) SHA1(53adbe6ea5e01ecb48575e9db82cc3d0dc8a3726) ) |
| 2802 | 2984 | ROM_LOAD( "atdp.u45", 0x200000, 0x200000, CRC(6984173f) SHA1(625dd6674adeb206815855b8b6a1fba79ed5c4cd) ) |
| 2803 | 2985 | |
| 2804 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 2986 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 2805 | 2987 | ROM_LOAD( "atdp.u54", 0x000000, 0x100000, CRC(6bda6b66) SHA1(6472e6706505bac17484fb8bf4e8922ced4adf63) ) |
| 2806 | 2988 | |
| 2807 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 2989 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 2808 | 2990 | ROM_LOAD( "atdp.u57", 0x000000, 0x100000, CRC(0a0e72b9) SHA1(997e8253777e7acca5a1c0c4026e78eecc122d5d) ) |
| 2809 | 2991 | |
| 2810 | | ROM_REGION( 0x040000, "gfx4", 0 ) /* Text / Character Layer */ |
| 2992 | ROM_REGION( 0x040000, "layer2", 0 ) /* Text / Character Layer */ |
| 2811 | 2993 | ROM_LOAD( "u58.bin", 0x000000, 0x040000, CRC(285379ff) SHA1(b9552edcec29ddf4b552800b145c398b94117ab0) ) |
| 2812 | 2994 | |
| 2813 | 2995 | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 2827 | 3009 | ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */ |
| 2828 | 3010 | ROM_LOAD16_WORD_SWAP( "37.u29", 0x00000, 0x80000, CRC(71f39f30) SHA1(08a028208f21c073d450a29061604f27775786a8) ) |
| 2829 | 3011 | |
| 2830 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3012 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites */ |
| 2831 | 3013 | ROM_LOAD( "atdp.u44", 0x000000, 0x200000, CRC(7189e953) SHA1(53adbe6ea5e01ecb48575e9db82cc3d0dc8a3726) ) |
| 2832 | 3014 | ROM_LOAD( "atdp.u45", 0x200000, 0x200000, CRC(6984173f) SHA1(625dd6674adeb206815855b8b6a1fba79ed5c4cd) ) |
| 2833 | 3015 | |
| 2834 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 3016 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 2835 | 3017 | ROM_LOAD( "atdp.u54", 0x000000, 0x100000, CRC(6bda6b66) SHA1(6472e6706505bac17484fb8bf4e8922ced4adf63) ) |
| 2836 | 3018 | |
| 2837 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 3019 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 2838 | 3020 | ROM_LOAD( "atdp.u57", 0x000000, 0x100000, CRC(0a0e72b9) SHA1(997e8253777e7acca5a1c0c4026e78eecc122d5d) ) |
| 2839 | 3021 | |
| 2840 | | ROM_REGION( 0x040000, "gfx4", 0 ) /* Text / Character Layer */ |
| 3022 | ROM_REGION( 0x040000, "layer2", 0 ) /* Text / Character Layer */ |
| 2841 | 3023 | ROM_LOAD( "u58.bin", 0x000000, 0x040000, CRC(285379ff) SHA1(b9552edcec29ddf4b552800b145c398b94117ab0) ) |
| 2842 | 3024 | |
| 2843 | 3025 | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 2868 | 3050 | ROM_LOAD16_BYTE( "u42.int", 0x000000, 0x080000, CRC(3b510a73) SHA1(ab1666eb826cb4a71588d86831dd18a2ef1c2a33) ) |
| 2869 | 3051 | ROM_LOAD16_BYTE( "u41.int", 0x000001, 0x080000, CRC(97c1b649) SHA1(37a56b7b9662219a356aee3f4b5cbb774ac4950e) ) |
| 2870 | 3052 | |
| 2871 | | ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3053 | ROM_REGION( 0x1000000, "sprites", 0 ) /* Sprites */ |
| 2872 | 3054 | ROM_LOAD16_BYTE( "u63.bin", 0x000000, 0x400000, CRC(2f2fe92c) SHA1(9519e365248bcec8419786eabb16fe4aae299af5) ) |
| 2873 | 3055 | ROM_LOAD16_BYTE( "u64.bin", 0x000001, 0x400000, CRC(491a3da4) SHA1(53549a2bd3edc7b5e73fb46e1421b156bb0c190f) ) |
| 2874 | 3056 | ROM_LOAD16_BYTE( "u65.bin", 0x800000, 0x400000, CRC(06563efe) SHA1(94e72da1f542b4e0525b4b43994242816b43dbdc) ) |
| 2875 | 3057 | ROM_LOAD16_BYTE( "u66.bin", 0x800001, 0x400000, CRC(7bbe4cfc) SHA1(e77d0ed7a11b5abca1df8a0eb20ac9360cf79e76) ) |
| 2876 | 3058 | |
| 2877 | | ROM_REGION( 0x800000, "gfx2", 0 ) /* Layer 0 */ |
| 3059 | ROM_REGION( 0x800000, "layer0", 0 ) /* Layer 0 */ |
| 2878 | 3060 | ROM_LOAD( "u54.bin", 0x000000, 0x400000, CRC(e7ca6936) SHA1(b7f5ab67071a1d9dd3d2c1cd2304d9cdad68850c) ) |
| 2879 | 3061 | ROM_LOAD( "u55.bin", 0x400000, 0x400000, CRC(f53bd94f) SHA1(d0a74fb3d36fe522ef075e5ae44a9980da8abe2f) ) |
| 2880 | 3062 | |
| 2881 | | ROM_REGION( 0x800000, "gfx3", 0 ) /* Layer 1 */ |
| 3063 | ROM_REGION( 0x800000, "layer1", 0 ) /* Layer 1 */ |
| 2882 | 3064 | ROM_LOAD( "u52.bin", 0x000000, 0x400000, CRC(e7abe7b4) SHA1(e98da45497e1aaf0d6ab352ec3e43c7438ed792a) ) |
| 2883 | 3065 | ROM_LOAD( "u53.bin", 0x400000, 0x400000, CRC(51a0f391) SHA1(8b7355cbad119f4e1add14e5cd5e343ec6706104) ) |
| 2884 | 3066 | |
| 2885 | | ROM_REGION( 0x400000, "gfx4", 0 ) /* Layer 2 */ |
| 3067 | ROM_REGION( 0x400000, "layer2", 0 ) /* Layer 2 */ |
| 2886 | 3068 | ROM_LOAD( "u51.bin", 0x000000, 0x400000, CRC(0b9b875c) SHA1(ef05447cd8565ae24bb71db42342724622ad1e3e) ) |
| 2887 | 3069 | |
| 2888 | 3070 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2897 | 3079 | ROM_LOAD16_BYTE( "u42.bin", 0x000000, 0x080000, CRC(75d03c42) SHA1(1c176185b6f1531752b633a97f705ffa0cfeb5ad) ) |
| 2898 | 3080 | ROM_LOAD16_BYTE( "u41.bin", 0x000001, 0x080000, CRC(734b3ef0) SHA1(f584227b85c347d62d5f179445011ce0f607bcfd) ) |
| 2899 | 3081 | |
| 2900 | | ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3082 | ROM_REGION( 0x1000000, "sprites", 0 ) /* Sprites */ |
| 2901 | 3083 | ROM_LOAD16_BYTE( "u63.bin", 0x000000, 0x400000, CRC(2f2fe92c) SHA1(9519e365248bcec8419786eabb16fe4aae299af5) ) |
| 2902 | 3084 | ROM_LOAD16_BYTE( "u64.bin", 0x000001, 0x400000, CRC(491a3da4) SHA1(53549a2bd3edc7b5e73fb46e1421b156bb0c190f) ) |
| 2903 | 3085 | ROM_LOAD16_BYTE( "u65.bin", 0x800000, 0x400000, CRC(06563efe) SHA1(94e72da1f542b4e0525b4b43994242816b43dbdc) ) |
| 2904 | 3086 | ROM_LOAD16_BYTE( "u66.bin", 0x800001, 0x400000, CRC(7bbe4cfc) SHA1(e77d0ed7a11b5abca1df8a0eb20ac9360cf79e76) ) |
| 2905 | 3087 | |
| 2906 | | ROM_REGION( 0x800000, "gfx2", 0 ) /* Layer 0 */ |
| 3088 | ROM_REGION( 0x800000, "layer0", 0 ) /* Layer 0 */ |
| 2907 | 3089 | ROM_LOAD( "u54.bin", 0x000000, 0x400000, CRC(e7ca6936) SHA1(b7f5ab67071a1d9dd3d2c1cd2304d9cdad68850c) ) |
| 2908 | 3090 | ROM_LOAD( "u55.bin", 0x400000, 0x400000, CRC(f53bd94f) SHA1(d0a74fb3d36fe522ef075e5ae44a9980da8abe2f) ) |
| 2909 | 3091 | |
| 2910 | | ROM_REGION( 0x800000, "gfx3", 0 ) /* Layer 1 */ |
| 3092 | ROM_REGION( 0x800000, "layer1", 0 ) /* Layer 1 */ |
| 2911 | 3093 | ROM_LOAD( "u52.bin", 0x000000, 0x400000, CRC(e7abe7b4) SHA1(e98da45497e1aaf0d6ab352ec3e43c7438ed792a) ) |
| 2912 | 3094 | ROM_LOAD( "u53.bin", 0x400000, 0x400000, CRC(51a0f391) SHA1(8b7355cbad119f4e1add14e5cd5e343ec6706104) ) |
| 2913 | 3095 | |
| 2914 | | ROM_REGION( 0x400000, "gfx4", 0 ) /* Layer 2 */ |
| 3096 | ROM_REGION( 0x400000, "layer2", 0 ) /* Layer 2 */ |
| 2915 | 3097 | ROM_LOAD( "u51.bin", 0x000000, 0x400000, CRC(0b9b875c) SHA1(ef05447cd8565ae24bb71db42342724622ad1e3e) ) |
| 2916 | 3098 | |
| 2917 | 3099 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2926 | 3108 | ROM_LOAD16_BYTE( "u42.old", 0x000000, 0x080000, CRC(0718c7e5) SHA1(c7d1f30bd2ef363cad15b6918f9980312a15809a) ) |
| 2927 | 3109 | ROM_LOAD16_BYTE( "u41.old", 0x000001, 0x080000, CRC(def30539) SHA1(957ad0b06f06689ae71393572592f6b8f818603a) ) |
| 2928 | 3110 | |
| 2929 | | ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3111 | ROM_REGION( 0x1000000, "sprites", 0 ) /* Sprites */ |
| 2930 | 3112 | ROM_LOAD16_BYTE( "u63.bin", 0x000000, 0x400000, CRC(2f2fe92c) SHA1(9519e365248bcec8419786eabb16fe4aae299af5) ) |
| 2931 | 3113 | ROM_LOAD16_BYTE( "u64.bin", 0x000001, 0x400000, CRC(491a3da4) SHA1(53549a2bd3edc7b5e73fb46e1421b156bb0c190f) ) |
| 2932 | 3114 | ROM_LOAD16_BYTE( "u65.bin", 0x800000, 0x400000, CRC(06563efe) SHA1(94e72da1f542b4e0525b4b43994242816b43dbdc) ) |
| 2933 | 3115 | ROM_LOAD16_BYTE( "u66.bin", 0x800001, 0x400000, CRC(7bbe4cfc) SHA1(e77d0ed7a11b5abca1df8a0eb20ac9360cf79e76) ) |
| 2934 | 3116 | |
| 2935 | | ROM_REGION( 0x800000, "gfx2", 0 ) /* Layer 0 */ |
| 3117 | ROM_REGION( 0x800000, "layer0", 0 ) /* Layer 0 */ |
| 2936 | 3118 | ROM_LOAD( "u54.bin", 0x000000, 0x400000, CRC(e7ca6936) SHA1(b7f5ab67071a1d9dd3d2c1cd2304d9cdad68850c) ) |
| 2937 | 3119 | ROM_LOAD( "u55.bin", 0x400000, 0x400000, CRC(f53bd94f) SHA1(d0a74fb3d36fe522ef075e5ae44a9980da8abe2f) ) |
| 2938 | 3120 | |
| 2939 | | ROM_REGION( 0x800000, "gfx3", 0 ) /* Layer 1 */ |
| 3121 | ROM_REGION( 0x800000, "layer1", 0 ) /* Layer 1 */ |
| 2940 | 3122 | ROM_LOAD( "u52.bin", 0x000000, 0x400000, CRC(e7abe7b4) SHA1(e98da45497e1aaf0d6ab352ec3e43c7438ed792a) ) |
| 2941 | 3123 | ROM_LOAD( "u53.bin", 0x400000, 0x400000, CRC(51a0f391) SHA1(8b7355cbad119f4e1add14e5cd5e343ec6706104) ) |
| 2942 | 3124 | |
| 2943 | | ROM_REGION( 0x400000, "gfx4", 0 ) /* Layer 2 */ |
| 3125 | ROM_REGION( 0x400000, "layer2", 0 ) /* Layer 2 */ |
| 2944 | 3126 | ROM_LOAD( "u51.bin", 0x000000, 0x400000, CRC(0b9b875c) SHA1(ef05447cd8565ae24bb71db42342724622ad1e3e) ) |
| 2945 | 3127 | |
| 2946 | 3128 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 2996 | 3178 | ROM_LOAD16_BYTE( "prg1.127", 0x000000, 0x080000, CRC(47b904b2) SHA1(58b9b55f59cf00f70b690a0371096e86f4d723c2) ) |
| 2997 | 3179 | ROM_LOAD16_BYTE( "prg2.128", 0x000001, 0x080000, CRC(469b7794) SHA1(502f855c51005a866900b19c3a0a170d9ea02392) ) |
| 2998 | 3180 | |
| 2999 | | ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3181 | ROM_REGION( 0x1000000, "sprites", 0 ) /* Sprites */ |
| 3000 | 3182 | ROM_LOAD( "obj1.736", 0x000000, 0x400000, CRC(f4f84e5d) SHA1(8f445dd7a5c8a996939c211e5aec5742121a6e7e) ) |
| 3001 | 3183 | ROM_LOAD( "obj2.738", 0x400000, 0x400000, CRC(15c2a9ce) SHA1(631eb2968395be86ef2403733e7d4ec769a013b9) ) |
| 3002 | 3184 | |
| 3003 | | ROM_REGION( 0x400000, "gfx2", 0 ) /* Layer 0 */ |
| 3185 | ROM_REGION( 0x400000, "layer0", 0 ) /* Layer 0 */ |
| 3004 | 3186 | ROM_LOAD( "bg1.989", 0x000000, 0x400000, CRC(013a693d) SHA1(2cc5be6f47c13febed942e1c3167946efedc5f9b) ) |
| 3005 | 3187 | |
| 3006 | | ROM_REGION( 0x400000, "gfx3", 0 ) /* Layer 1 */ |
| 3188 | ROM_REGION( 0x400000, "layer1", 0 ) /* Layer 1 */ |
| 3007 | 3189 | ROM_LOAD( "bg2.995", 0x000000, 0x400000, CRC(783cc62f) SHA1(8b6e4212688b53be5ecc29ff2d41fd43e7d0a420) ) |
| 3008 | 3190 | |
| 3009 | | ROM_REGION( 0x400000, "gfx4", 0 ) /* Layer 2 */ |
| 3191 | ROM_REGION( 0x400000, "layer2", 0 ) /* Layer 2 */ |
| 3010 | 3192 | ROM_LOAD( "bg3.998", 0x000000, 0x400000, CRC(bcd61d1c) SHA1(660a3b02a8c39e1117b00d0ad06f73221fef4ce8) ) |
| 3011 | 3193 | |
| 3012 | 3194 | ROM_REGION( 0xc00000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 3058 | 3240 | ROM_LOAD16_BYTE( "t-hero-epm1.u0127", 0x000000, 0x080000, CRC(09db7195) SHA1(6aa5aa80e3b74e405ed8f1b9b801ce4367756986) ) |
| 3059 | 3241 | ROM_LOAD16_BYTE( "t-hero-epm0.u0129", 0x000001, 0x080000, CRC(2d4e3310) SHA1(7c3284a2adc7943db50933a209d037422f87f80b) ) |
| 3060 | 3242 | |
| 3061 | | ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3243 | ROM_REGION( 0x1000000, "sprites", 0 ) /* Sprites */ |
| 3062 | 3244 | ROM_LOAD( "t-hero-obj1.u0736", 0x000000, 0x400000, CRC(35090f7c) SHA1(035e6c12a87d9c7241eea34fc7e2170bec842acc) ) |
| 3063 | 3245 | ROM_LOAD( "t-hero-obj2.u0738", 0x400000, 0x400000, CRC(71605108) SHA1(6070c26d8f22fafc81d97cacfef96ae652e355d0) ) |
| 3064 | 3246 | |
| 3065 | | ROM_REGION( 0x400000, "gfx2", 0 ) /* Layer 0 */ |
| 3247 | ROM_REGION( 0x400000, "layer0", 0 ) /* Layer 0 */ |
| 3066 | 3248 | ROM_LOAD( "t-hero-bg1.u0999", 0x000000, 0x400000, CRC(47b0fb40) SHA1(a7217b3d805b4255c589821cdadd9b190cada525) ) |
| 3067 | 3249 | |
| 3068 | | ROM_REGION( 0x400000, "gfx3", 0 ) /* Layer 1 */ |
| 3250 | ROM_REGION( 0x400000, "layer1", 0 ) /* Layer 1 */ |
| 3069 | 3251 | ROM_LOAD( "t-hero-bg2.u0995", 0x000000, 0x400000, CRC(b16237a1) SHA1(66aed2c5036492a17d20de90333e172a6f117851) ) |
| 3070 | 3252 | |
| 3071 | | ROM_REGION( 0x400000, "gfx4", 0 ) /* Layer 2 */ |
| 3253 | ROM_REGION( 0x400000, "layer2", 0 ) /* Layer 2 */ |
| 3072 | 3254 | ROM_LOAD( "t-hero-bg3.u0998", 0x000000, 0x400000, CRC(08eb5604) SHA1(3d32966708c73198272c40e6ddc680bf4c7919eb) ) |
| 3073 | 3255 | |
| 3074 | 3256 | ROM_REGION( 0xc00000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 3096 | 3278 | ROM_LOAD16_BYTE( "gu-u0127.bin", 0x000000, 0x080000, CRC(f86b5293) SHA1(f8b1cd77cc25328d5010889850e4b86c27d9e396) ) |
| 3097 | 3279 | ROM_LOAD16_BYTE( "gu-u0129.bin", 0x000001, 0x080000, CRC(6c0e3b93) SHA1(aaad6569b9a7b6f9a315062f9fedfc95851c1bc6) ) |
| 3098 | 3280 | |
| 3099 | | ROM_REGION( 0x2000000, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3281 | ROM_REGION( 0x2000000, "sprites", 0 ) /* Sprites */ |
| 3100 | 3282 | ROM_LOAD16_BYTE( "u083.bin", 0x0000000, 0x800000, CRC(adc4b9c4) SHA1(3f9fb004e19187bbfa87ddfe8cfc69740656a1bd) ) |
| 3101 | 3283 | ROM_LOAD16_BYTE( "u082.bin", 0x0000001, 0x800000, CRC(3d75876c) SHA1(705b8c2dbdc31e9516f429969f87988beec796d7) ) |
| 3102 | 3284 | ROM_LOAD16_BYTE( "u086.bin", 0x1000000, 0x400000, CRC(188e4f81) SHA1(626074d81782a6de0b52406331b4b8561d3e36f5) ) |
| r7640 | r7641 | |
| 3106 | 3288 | //sprite bug fix? |
| 3107 | 3289 | // ROM_FILL( 0x1800000, 0x800000, 0xff ) |
| 3108 | 3290 | |
| 3109 | | ROM_REGION( 0x800000, "gfx2", 0 ) /* Layer 0 */ |
| 3291 | ROM_REGION( 0x800000, "layer0", 0 ) /* Layer 0 */ |
| 3110 | 3292 | ROM_LOAD( "u101.bin", 0x000000, 0x800000, CRC(0369491f) SHA1(ca6b1345506f13a17c9bace01637d1f61a278644) ) |
| 3111 | 3293 | |
| 3112 | | ROM_REGION( 0x400000, "gfx3", 0 ) /* Layer 1 */ |
| 3294 | ROM_REGION( 0x400000, "layer1", 0 ) /* Layer 1 */ |
| 3113 | 3295 | ROM_LOAD( "u10102.bin", 0x000000, 0x400000, CRC(e28d6855) SHA1(7001a6e298c6a1fcceb79586bf5f4bf0f30027f6) ) |
| 3114 | 3296 | |
| 3115 | | ROM_REGION( 0x400000, "gfx4", 0 ) /* Layer 2 */ |
| 3297 | ROM_REGION( 0x400000, "layer2", 0 ) /* Layer 2 */ |
| 3116 | 3298 | ROM_LOAD( "u10103.bin", 0x000000, 0x400000, CRC(0fe91b8e) SHA1(8b71ebeef5e4d2b00fdaaab97776d74e1c96dc59) ) |
| 3117 | 3299 | |
| 3118 | 3300 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 3159 | 3341 | ROM_LOAD( "mp2u19", 0x00000, 0x08000, CRC(ff979ebe) SHA1(4cb80086cfdc69a321c7f75455cef89e20488b76) ) // FIRST AND SECOND HALF IDENTICAL |
| 3160 | 3342 | ROM_CONTINUE( 0x10000, 0x38000 ) |
| 3161 | 3343 | |
| 3162 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites: * 2 , do not dispose */ |
| 3344 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 3163 | 3345 | ROM_LOAD( "mp9u55", 0x000000, 0x200000, CRC(258d49ec) SHA1(f39e30c82d8f680f248e1eb59d7c5acb479fa277) ) |
| 3164 | 3346 | ROM_LOAD( "mp8u54", 0x200000, 0x200000, CRC(bdb4d7b8) SHA1(0dd490988aa84b0e9a21ade5fd606b03eca13f6c) ) |
| 3165 | 3347 | |
| 3166 | | ROM_REGION( 0x80000, "gfx2", 0 ) /* Layer 0 */ |
| 3348 | ROM_REGION( 0x80000, "layer0", 0 ) /* Layer 0 */ |
| 3167 | 3349 | ROM_LOAD( "mp7u56", 0x00000, 0x80000, CRC(87c21c50) SHA1(fc0eea79abdd96edb4fa2c7047aaa728ef838234) ) |
| 3168 | 3350 | |
| 3169 | | ROM_REGION( 0x80000, "gfx3", 0 ) /* Layer 1 */ |
| 3351 | ROM_REGION( 0x80000, "layer1", 0 ) /* Layer 1 */ |
| 3170 | 3352 | ROM_LOAD( "mp6u61", 0x00000, 0x80000, CRC(4dafb288) SHA1(4756259adfe49ba42cde25e7902655b0f0731a6c) ) |
| 3171 | 3353 | |
| 3172 | | ROM_REGION( 0x80000, "gfx4", 0 ) /* Layer 2 */ |
| 3354 | ROM_REGION( 0x80000, "layer2", 0 ) /* Layer 2 */ |
| 3173 | 3355 | ROM_LOAD( "mp5u64", 0x00000, 0x80000, CRC(9b26458c) SHA1(acef62422fa3f92e6ca1eba0ee6fb914cd1ee190) ) |
| 3174 | 3356 | |
| 3175 | 3357 | ROM_REGION( 0xc0000, "oki", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 3231 | 3413 | ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ |
| 3232 | 3414 | ROM_LOAD16_WORD_SWAP( "mp-001_ver07.u0130", 0x000000, 0x080000, CRC(86c7241f) SHA1(c9f0ab63c4fe36df1300445e9bb0d5c6a1bb733f) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF |
| 3233 | 3415 | |
| 3234 | | ROM_REGION( 0x180000 * 2, "gfx1", 0 ) /* Sprites: * 2 , do not dispose */ |
| 3416 | ROM_REGION( 0x180000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 3235 | 3417 | ROM_LOAD( "mp-001_ver01.u1066", 0x000000, 0x100000, CRC(c5c6af7e) SHA1(13ac26fd703672a01d629be4e5efe9fb8720a4fb) ) |
| 3236 | 3418 | ROM_LOAD( "mp-001_ver01.u1051", 0x100000, 0x080000, CRC(fe5e28e8) SHA1(44da1a7d813b149f9bae351bbcbd0bc2d4c70e10) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF |
| 3237 | 3419 | |
| 3238 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 3420 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 3239 | 3421 | ROM_LOAD( "mp-001_ver01.u1060", 0x000000, 0x100000, CRC(ec9cf9d8) SHA1(32fa7120e30c14e484de3b3a9c93efe3654d43c8) ) |
| 3240 | 3422 | |
| 3241 | 3423 | ROM_REGION( 0x100000, "ymz", 0 ) /* Samples */ |
| 3242 | 3424 | ROM_LOAD( "mp-001_ver01.u1186", 0x000000, 0x100000, CRC(d16e7c5d) SHA1(1f825ace3ed2e23c8d3212320c4645d3d52214c7) ) |
| 3243 | 3425 | ROM_END |
| 3244 | 3426 | |
| 3427 | ROM_START( crusherm ) |
| 3428 | ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ |
| 3429 | ROM_LOAD16_WORD_SWAP( "mp-003ver01.u0130", 0x000000, 0x080000, CRC(a4f56e6b) SHA1(1d3af7602c48a6b6c76c376dbc8ad3823b56868a) ) |
| 3245 | 3430 | |
| 3431 | ROM_REGION( 0x200000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 3432 | ROM_LOAD( "mp-003ver01.u1067", 0x000000, 0x100000, CRC(268a4921) SHA1(8bb818466616051af01680b381af53b8b6a18428) ) |
| 3433 | ROM_LOAD( "mp-003ver01.u1066", 0x100000, 0x100000, CRC(79e77a6e) SHA1(9d03dd083769851d628ba6b3d77cfde9603e74f4) ) |
| 3434 | |
| 3435 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 3436 | ROM_LOAD( "mp-003ver01.u1060", 0x000000, 0x100000, CRC(7661893e) SHA1(d51645c96247b039214393ba5eae7357144dfd65) ) |
| 3437 | |
| 3438 | ROM_REGION( 0x200000, "ymz", 0 ) /* Samples */ |
| 3439 | ROM_LOAD( "mp-003ver01.u1186", 0x000000, 0x100000, CRC(c3aeb745) SHA1(1bb8ab0512a9a9b0d3ce15f90b49cda431fb14eb) ) |
| 3440 | ROM_LOAD( "mp-003ver01.u1187", 0x100000, 0x100000, CRC(d9312497) SHA1(a349cfdbcad96701a74f06394e87f0e0614e115d) ) |
| 3441 | ROM_END |
| 3442 | |
| 3246 | 3443 | /*************************************************************************** |
| 3247 | 3444 | |
| 3248 | 3445 | Mazinger Z |
| r7640 | r7641 | |
| 3268 | 3465 | |
| 3269 | 3466 | ***************************************************************************/ |
| 3270 | 3467 | |
| 3271 | | ROM_START( mazinger ) |
| 3272 | | ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ |
| 3273 | | ROM_LOAD16_WORD_SWAP( "mzp-0.u24", 0x00000, 0x80000, CRC(43a4279f) SHA1(2c17eb31040bb7f1554bc1c9a968eec5e72af097) ) |
| 3274 | 3468 | |
| 3275 | | ROM_REGION16_BE( 0x80000, "user1", 0 ) /* 68000 code (mapped at d00000) */ |
| 3276 | | ROM_LOAD16_WORD_SWAP( "mzp-1.924", 0x00000, 0x80000, CRC(db40acba) SHA1(797a3046b6ab33773c5c4d6bb6d045ea60c1eb45) ) |
| 3277 | 3469 | |
| 3278 | | ROM_REGION( 0x28000, "audiocpu", 0 ) /* Z80 code */ |
| 3279 | | ROM_LOAD( "mzs.u21", 0x00000, 0x08000, CRC(c5b4f7ed) SHA1(01f3cd1dd4045029260544e0e1c15dd08817012e) ) |
| 3280 | | ROM_CONTINUE( 0x10000, 0x18000 ) |
| 3470 | #define ROMS_MAZINGER \ |
| 3471 | ROM_REGION( 0x80000, "maincpu", 0 ) \ |
| 3472 | ROM_LOAD16_WORD_SWAP( "mzp-0.u24", 0x00000, 0x80000, CRC(43a4279f) SHA1(2c17eb31040bb7f1554bc1c9a968eec5e72af097) ) \ |
| 3473 | \ |
| 3474 | ROM_REGION16_BE( 0x80000, "user1", 0 ) \ |
| 3475 | ROM_LOAD16_WORD_SWAP( "mzp-1.924", 0x00000, 0x80000, CRC(db40acba) SHA1(797a3046b6ab33773c5c4d6bb6d045ea60c1eb45) ) \ |
| 3476 | \ |
| 3477 | ROM_REGION( 0x28000, "audiocpu", 0 ) \ |
| 3478 | ROM_LOAD( "mzs.u21", 0x00000, 0x08000, CRC(c5b4f7ed) SHA1(01f3cd1dd4045029260544e0e1c15dd08817012e) ) \ |
| 3479 | ROM_CONTINUE( 0x10000, 0x18000 ) \ |
| 3480 | \ |
| 3481 | ROM_REGION( 0x400000 * 2, "sprites", ROMREGION_ERASEFF ) \ |
| 3482 | ROM_LOAD( "bp943a-2.u56", 0x000000, 0x200000, CRC(97e13959) SHA1(c30b1093aacebafefcae701af767dd36fc55fac7) ) \ |
| 3483 | ROM_LOAD( "bp943a-3.u55", 0x200000, 0x080000, CRC(9c4957dd) SHA1(e775605a01b6cadc318855ac046dad03c4fc5bb4) ) \ |
| 3484 | \ |
| 3485 | ROM_REGION( 0x200000, "layer0", 0 ) \ |
| 3486 | ROM_LOAD( "bp943a-1.u60", 0x000000, 0x200000, CRC(46327415) SHA1(679d26caefa975569198fac550105c370e2be00d) ) \ |
| 3487 | \ |
| 3488 | ROM_REGION( 0x200000, "layer1", 0 ) \ |
| 3489 | ROM_LOAD( "bp943a-0.u63", 0x000000, 0x200000, CRC(c1fed98a) SHA1(c276505f80a49b129862966a19db507f97153e45) ) \ |
| 3490 | \ |
| 3491 | ROM_REGION( 0x0c0000, "oki", 0 ) \ |
| 3492 | ROM_LOAD( "bp943a-4.u64", 0x040000, 0x080000, CRC(3fc7f29a) SHA1(feb21b918243c0a03dfa4a80cc80b86be4f62680) ) \ |
| 3281 | 3493 | |
| 3282 | | ROM_REGION( 0x400000 * 2, "gfx1", ROMREGION_ERASEFF ) /* Sprites: * 2 , do not dispose */ |
| 3283 | | ROM_LOAD( "bp943a-2.u56", 0x000000, 0x200000, CRC(97e13959) SHA1(c30b1093aacebafefcae701af767dd36fc55fac7) ) |
| 3284 | | ROM_LOAD( "bp943a-3.u55", 0x200000, 0x080000, CRC(9c4957dd) SHA1(e775605a01b6cadc318855ac046dad03c4fc5bb4) ) |
| 3494 | /* the regions differ only in the EEPROM, hence the macro above - all EEPROMs are Factory Defaulted */ |
| 3495 | ROM_START( mazinger ) |
| 3496 | ROMS_MAZINGER |
| 3285 | 3497 | |
| 3286 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3287 | | ROM_LOAD( "bp943a-1.u60", 0x000000, 0x200000, CRC(46327415) SHA1(679d26caefa975569198fac550105c370e2be00d) ) |
| 3498 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 3499 | ROM_LOAD16_WORD( "mazinger_world.nv", 0x0000, 0x0080, CRC(4f6225c6) SHA1(ed8e1c3ca9b961778cd317deb0dd8a0143eaab4f) ) |
| 3500 | ROM_END |
| 3288 | 3501 | |
| 3289 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 3290 | | ROM_LOAD( "bp943a-0.u63", 0x000000, 0x200000, CRC(c1fed98a) SHA1(c276505f80a49b129862966a19db507f97153e45) ) // FIXED BITS (xxxxxxxx00000000) |
| 3502 | ROM_START( mazingerj ) |
| 3503 | ROMS_MAZINGER |
| 3291 | 3504 | |
| 3292 | | ROM_REGION( 0x0c0000, "oki", 0 ) /* Samples */ |
| 3293 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 3294 | | ROM_LOAD( "bp943a-4.u64", 0x040000, 0x080000, CRC(3fc7f29a) SHA1(feb21b918243c0a03dfa4a80cc80b86be4f62680) ) // 4 x $20000 |
| 3295 | | |
| 3296 | 3505 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 3297 | | ROM_LOAD16_WORD( "eeprom-mazinger.bin", 0x0000, 0x0080, CRC(4f6225c6) SHA1(ed8e1c3ca9b961778cd317deb0dd8a0143eaab4f) ) |
| 3506 | ROM_LOAD16_WORD( "mazinger_japan.nv", 0x0000, 0x0080, CRC(f84a2a45) SHA1(2e8ad10994bba9a3952889ed0ec3bcaca9b41d03) ) |
| 3298 | 3507 | ROM_END |
| 3299 | 3508 | |
| 3300 | | |
| 3301 | 3509 | /*************************************************************************** |
| 3302 | 3510 | |
| 3303 | 3511 | Metamoqester (World) / Oni - The Ninja Master (Japan) |
| r7640 | r7641 | |
| 3354 | 3562 | ROM_LOAD( "bp947a.u20", 0x00000, 0x08000, CRC(a4a36170) SHA1(ae55094518bd968ea0d04613a133c1421e412012) ) |
| 3355 | 3563 | ROM_CONTINUE( 0x10000, 0x38000 ) |
| 3356 | 3564 | |
| 3357 | | ROM_REGION( 0x800000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3565 | ROM_REGION( 0x800000 * 2, "sprites", 0 ) /* Sprites */ |
| 3358 | 3566 | ROM_LOAD( "bp947a.u49", 0x000000, 0x200000, CRC(09749531) SHA1(6deeed2712241611ec3202c49a66beed28698af8) ) |
| 3359 | 3567 | ROM_LOAD( "bp947a.u50", 0x200000, 0x200000, CRC(19cea8b2) SHA1(87fb29458074f0e4852237e0184b8b3b44b0eb29) ) |
| 3360 | 3568 | ROM_LOAD( "bp947a.u51", 0x400000, 0x200000, CRC(c19bed67) SHA1(ac664a15512c0e8c8b701833aede95f53cd46a45) ) |
| 3361 | 3569 | ROM_LOAD( "bp947a.u52", 0x600000, 0x200000, CRC(70c64875) SHA1(1c20ab100ccfdf42c97a25e4deb9041b83f5ca8d) ) |
| 3362 | 3570 | |
| 3363 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 3571 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 3364 | 3572 | ROM_LOAD( "bp947a.u48", 0x000000, 0x100000, CRC(04ff6a3d) SHA1(7187db436f7a2ab59a3f5c6ab297b3d740e20f1d) ) // FIRST AND SECOND HALF IDENTICAL |
| 3365 | 3573 | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 3366 | 3574 | |
| 3367 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 3575 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 3368 | 3576 | ROM_LOAD( "bp947a.u47", 0x000000, 0x100000, CRC(0de42827) SHA1(05d452ca11a31f941cb8a9b0cbb0b59c6b0cbdcb) ) // FIRST AND SECOND HALF IDENTICAL |
| 3369 | 3577 | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 3370 | 3578 | |
| 3371 | | ROM_REGION( 0x100000, "gfx4", 0 ) /* Layer 2 */ |
| 3579 | ROM_REGION( 0x100000, "layer2", 0 ) /* Layer 2 */ |
| 3372 | 3580 | ROM_LOAD( "bp947a.u46", 0x000000, 0x100000, CRC(0f9c906e) SHA1(03872e8be28637df66373bddb04ed91de4f9db75) ) // FIRST AND SECOND HALF IDENTICAL |
| 3373 | 3581 | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 3374 | 3582 | |
| r7640 | r7641 | |
| 3393 | 3601 | ROM_LOAD( "bp947a.u20", 0x00000, 0x08000, CRC(a4a36170) SHA1(ae55094518bd968ea0d04613a133c1421e412012) ) |
| 3394 | 3602 | ROM_CONTINUE( 0x10000, 0x38000 ) |
| 3395 | 3603 | |
| 3396 | | ROM_REGION( 0x800000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3604 | ROM_REGION( 0x800000 * 2, "sprites", 0 ) /* Sprites */ |
| 3397 | 3605 | ROM_LOAD( "bp947a.u49", 0x000000, 0x200000, CRC(09749531) SHA1(6deeed2712241611ec3202c49a66beed28698af8) ) |
| 3398 | 3606 | ROM_LOAD( "bp947a.u50", 0x200000, 0x200000, CRC(19cea8b2) SHA1(87fb29458074f0e4852237e0184b8b3b44b0eb29) ) |
| 3399 | 3607 | ROM_LOAD( "bp947a.u51", 0x400000, 0x200000, CRC(c19bed67) SHA1(ac664a15512c0e8c8b701833aede95f53cd46a45) ) |
| 3400 | 3608 | ROM_LOAD( "bp947a.u52", 0x600000, 0x200000, CRC(70c64875) SHA1(1c20ab100ccfdf42c97a25e4deb9041b83f5ca8d) ) |
| 3401 | 3609 | |
| 3402 | | ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 0 */ |
| 3610 | ROM_REGION( 0x100000, "layer0", 0 ) /* Layer 0 */ |
| 3403 | 3611 | ROM_LOAD( "bp947a.u48", 0x000000, 0x100000, CRC(04ff6a3d) SHA1(7187db436f7a2ab59a3f5c6ab297b3d740e20f1d) ) // FIRST AND SECOND HALF IDENTICAL |
| 3404 | 3612 | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 3405 | 3613 | |
| 3406 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 3614 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 3407 | 3615 | ROM_LOAD( "bp947a.u47", 0x000000, 0x100000, CRC(0de42827) SHA1(05d452ca11a31f941cb8a9b0cbb0b59c6b0cbdcb) ) // FIRST AND SECOND HALF IDENTICAL |
| 3408 | 3616 | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 3409 | 3617 | |
| 3410 | | ROM_REGION( 0x100000, "gfx4", 0 ) /* Layer 2 */ |
| 3618 | ROM_REGION( 0x100000, "layer2", 0 ) /* Layer 2 */ |
| 3411 | 3619 | ROM_LOAD( "bp947a.u46", 0x000000, 0x100000, CRC(0f9c906e) SHA1(03872e8be28637df66373bddb04ed91de4f9db75) ) // FIRST AND SECOND HALF IDENTICAL |
| 3412 | 3620 | ROM_CONTINUE( 0x000000, 0x100000 ) |
| 3413 | 3621 | |
| r7640 | r7641 | |
| 3451 | 3659 | ROM_LOAD( "g02.u3a", 0x00000, 0x0c000, CRC(ebea5e1e) SHA1(4d3af9e5f29d0c1b26563f51250039c9e8bd3735) ) |
| 3452 | 3660 | ROM_CONTINUE( 0x10000, 0x14000 ) |
| 3453 | 3661 | |
| 3454 | | ROM_REGION( 0xe00000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3662 | ROM_REGION( 0xe00000 * 2, "sprites", 0 ) /* Sprites */ |
| 3455 | 3663 | ROM_LOAD( "g02.u61", 0x000000, 0x200000, CRC(91e30398) SHA1(2b59a5e40bed2a988382054fe30d92808dad3348) ) |
| 3456 | 3664 | ROM_LOAD( "g02.u62", 0x200000, 0x200000, CRC(d9455dd7) SHA1(afa69fe9a540cd78b8cfecf09cffa1401c01141a) ) |
| 3457 | 3665 | ROM_LOAD( "g02.u63", 0x400000, 0x200000, CRC(4d20560b) SHA1(ceaee8cf0b69cc366b95ddcb689a5594d79e5114) ) |
| r7640 | r7641 | |
| 3460 | 3668 | ROM_LOAD( "g02.u66", 0xa00000, 0x200000, CRC(becf2a36) SHA1(f8b386d0292b1dc745b7253a3df51d1aa8d5e9db) ) |
| 3461 | 3669 | ROM_LOAD( "g02.u67", 0xc00000, 0x200000, CRC(52fe2b8b) SHA1(dd50aa62f7db995e28f47de9b3fb749aeeaaa5b0) ) |
| 3462 | 3670 | |
| 3463 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3671 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 3464 | 3672 | ROM_LOAD( "g02.u78", 0x000000, 0x200000, CRC(1eca63d2) SHA1(538942b43301f950e3d5139461331c54dc90129d) ) |
| 3465 | 3673 | |
| 3466 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 3674 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 3467 | 3675 | ROM_LOAD( "g02.u81", 0x000000, 0x100000, CRC(8a3ff685) SHA1(4a59ec50ec4470453374fe10f76d3e894494b49f) ) |
| 3468 | 3676 | |
| 3469 | | ROM_REGION( 0x100000, "gfx4", 0 ) /* Layer 2 */ |
| 3677 | ROM_REGION( 0x100000, "layer2", 0 ) /* Layer 2 */ |
| 3470 | 3678 | ROM_LOAD( "g02.u89", 0x000000, 0x100000, CRC(373e1f73) SHA1(ec1ae9fab37eee41be8e1bc6dad03809b62fdbce) ) |
| 3471 | 3679 | |
| 3472 | | ROM_REGION( 0x080000, "gfx5", 0 ) /* Layer 3 */ |
| 3680 | ROM_REGION( 0x080000, "layer3", 0 ) /* Layer 3 */ |
| 3473 | 3681 | ROM_LOAD( "g02.82a", 0x000000, 0x080000, CRC(4b3567d6) SHA1(d3e14783b312d2bea9722a8e3c22bcec81e26166) ) |
| 3474 | 3682 | |
| 3475 | 3683 | ROM_REGION( 0x440000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 3497 | 3705 | ROM_LOAD( "g02j.u3a", 0x00000, 0x0c000, CRC(eead01f1) SHA1(0ced6755e471e0303fe397b3d54a5c799762ebd8) ) |
| 3498 | 3706 | ROM_CONTINUE( 0x10000, 0x14000 ) |
| 3499 | 3707 | |
| 3500 | | ROM_REGION( 0xe00000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3708 | ROM_REGION( 0xe00000 * 2, "sprites", 0 ) /* Sprites */ |
| 3501 | 3709 | ROM_LOAD( "g02.u61", 0x000000, 0x200000, CRC(91e30398) SHA1(2b59a5e40bed2a988382054fe30d92808dad3348) ) |
| 3502 | 3710 | ROM_LOAD( "g02.u62", 0x200000, 0x200000, CRC(d9455dd7) SHA1(afa69fe9a540cd78b8cfecf09cffa1401c01141a) ) |
| 3503 | 3711 | ROM_LOAD( "g02.u63", 0x400000, 0x200000, CRC(4d20560b) SHA1(ceaee8cf0b69cc366b95ddcb689a5594d79e5114) ) |
| r7640 | r7641 | |
| 3506 | 3714 | ROM_LOAD( "g02.u66", 0xa00000, 0x200000, CRC(becf2a36) SHA1(f8b386d0292b1dc745b7253a3df51d1aa8d5e9db) ) |
| 3507 | 3715 | ROM_LOAD( "g02.u67", 0xc00000, 0x200000, CRC(52fe2b8b) SHA1(dd50aa62f7db995e28f47de9b3fb749aeeaaa5b0) ) |
| 3508 | 3716 | |
| 3509 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3717 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 3510 | 3718 | ROM_LOAD( "g02.u78", 0x000000, 0x200000, CRC(1eca63d2) SHA1(538942b43301f950e3d5139461331c54dc90129d) ) |
| 3511 | 3719 | |
| 3512 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 1 */ |
| 3720 | ROM_REGION( 0x100000, "layer1", 0 ) /* Layer 1 */ |
| 3513 | 3721 | ROM_LOAD( "g02.u81", 0x000000, 0x100000, CRC(8a3ff685) SHA1(4a59ec50ec4470453374fe10f76d3e894494b49f) ) |
| 3514 | 3722 | |
| 3515 | | ROM_REGION( 0x100000, "gfx4", 0 ) /* Layer 2 */ |
| 3723 | ROM_REGION( 0x100000, "layer2", 0 ) /* Layer 2 */ |
| 3516 | 3724 | ROM_LOAD( "g02.u89", 0x000000, 0x100000, CRC(373e1f73) SHA1(ec1ae9fab37eee41be8e1bc6dad03809b62fdbce) ) |
| 3517 | 3725 | |
| 3518 | | ROM_REGION( 0x080000, "gfx5", 0 ) /* Layer 3 */ |
| 3726 | ROM_REGION( 0x080000, "layer3", 0 ) /* Layer 3 */ |
| 3519 | 3727 | ROM_LOAD( "g02j.82a", 0x000000, 0x080000, CRC(3be86fe1) SHA1(313bfe5fb8dc5fee4462db259738e079759f9390) ) |
| 3520 | 3728 | |
| 3521 | 3729 | ROM_REGION( 0x440000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 3597 | 3805 | ROM_LOAD( "d19.u3", 0x00000, 0x0c000, CRC(47598459) SHA1(4e9dcfebfbd160230768965e8c6e5ed446c1aa7b) ) /* Same as sound.u3 below, but twice the size? */ |
| 3598 | 3806 | ROM_CONTINUE( 0x10000, 0x34000 ) |
| 3599 | 3807 | |
| 3600 | | ROM_REGION( 0x1000000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3808 | ROM_REGION( 0x1000000 * 2, "sprites", 0 ) /* Sprites */ |
| 3601 | 3809 | ROM_LOAD( "g02.u61", 0x000000, 0x200000, CRC(91e30398) SHA1(2b59a5e40bed2a988382054fe30d92808dad3348) ) |
| 3602 | 3810 | ROM_LOAD( "g02.u62", 0x200000, 0x200000, CRC(d9455dd7) SHA1(afa69fe9a540cd78b8cfecf09cffa1401c01141a) ) |
| 3603 | 3811 | ROM_LOAD( "g02.u63", 0x400000, 0x200000, CRC(4d20560b) SHA1(ceaee8cf0b69cc366b95ddcb689a5594d79e5114) ) |
| r7640 | r7641 | |
| 3607 | 3815 | ROM_LOAD( "atgs.u1", 0xc00000, 0x200000, CRC(aa6f34a9) SHA1(00de85de1b413bd2c46931c13365f8556b50b634) ) /* US version's rom labeled "sp6_u67-1" */ |
| 3608 | 3816 | ROM_LOAD( "atgs.u2", 0xe00000, 0x200000, CRC(553eda27) SHA1(5b9126f966f0c64b3ac7c06526064d71e4df60c5) ) /* US version's rom labeled "sp6_u67-2" */ |
| 3609 | 3817 | |
| 3610 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3818 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 3611 | 3819 | ROM_LOAD( "atgs.u78", 0x000000, 0x200000, CRC(16710ecb) SHA1(6277f7f6095457df649932550b04242e5853ec5e) ) /* US version's rom labeled "bg0_u78" */ |
| 3612 | 3820 | |
| 3613 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 3821 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ |
| 3614 | 3822 | ROM_LOAD( "atgs.u81", 0x000000, 0x200000, CRC(cb2aca91) SHA1(869f0f2db35c45ec90b74d33d521cbb598e60a3f) ) /* US version's rom labeled "bg1_u81" */ |
| 3615 | 3823 | |
| 3616 | | ROM_REGION( 0x200000, "gfx4", 0 ) /* Layer 2 */ |
| 3824 | ROM_REGION( 0x200000, "layer2", 0 ) /* Layer 2 */ |
| 3617 | 3825 | ROM_LOAD( "atgs.u89", 0x000000, 0x200000, CRC(65f45a0f) SHA1(b7f4b56308dcdc144100d0a92d91255459a320a4) ) /* US version's rom labeled "bg2_u89" */ |
| 3618 | 3826 | |
| 3619 | | ROM_REGION( 0x080000, "gfx5", 0 ) /* Layer 3 */ |
| 3827 | ROM_REGION( 0x080000, "layer3", 0 ) /* Layer 3 */ |
| 3620 | 3828 | ROM_LOAD( "text.u82", 0x000000, 0x080000, CRC(f57333ea) SHA1(409d8005ffcf91943e4a743b2434ce425f5bdc36) ) /* US version's rom labeled "d20" */ |
| 3621 | 3829 | |
| 3622 | 3830 | ROM_REGION( 0x440000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 3645 | 3853 | ROM_LOAD( "sound.u3", 0x00000, 0x0c000, CRC(36f71520) SHA1(11d0a059ddba3e1aa4c54ccdde7b3f5c7bde482f) ) |
| 3646 | 3854 | ROM_CONTINUE( 0x10000, 0x14000 ) |
| 3647 | 3855 | |
| 3648 | | ROM_REGION( 0x1000000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3856 | ROM_REGION( 0x1000000 * 2, "sprites", 0 ) /* Sprites */ |
| 3649 | 3857 | ROM_LOAD( "g02.u61", 0x000000, 0x200000, CRC(91e30398) SHA1(2b59a5e40bed2a988382054fe30d92808dad3348) ) |
| 3650 | 3858 | ROM_LOAD( "g02.u62", 0x200000, 0x200000, CRC(d9455dd7) SHA1(afa69fe9a540cd78b8cfecf09cffa1401c01141a) ) |
| 3651 | 3859 | ROM_LOAD( "g02.u63", 0x400000, 0x200000, CRC(4d20560b) SHA1(ceaee8cf0b69cc366b95ddcb689a5594d79e5114) ) |
| r7640 | r7641 | |
| 3655 | 3863 | ROM_LOAD( "atgs.u1", 0xc00000, 0x200000, CRC(aa6f34a9) SHA1(00de85de1b413bd2c46931c13365f8556b50b634) ) /* US version's rom labeled "sp6_u67-1" */ |
| 3656 | 3864 | ROM_LOAD( "atgs.u2", 0xe00000, 0x200000, CRC(553eda27) SHA1(5b9126f966f0c64b3ac7c06526064d71e4df60c5) ) /* US version's rom labeled "sp6_u67-2" */ |
| 3657 | 3865 | |
| 3658 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3866 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ |
| 3659 | 3867 | ROM_LOAD( "atgs.u78", 0x000000, 0x200000, CRC(16710ecb) SHA1(6277f7f6095457df649932550b04242e5853ec5e) ) /* US version's rom labeled "bg0_u78" */ |
| 3660 | 3868 | |
| 3661 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 3869 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ |
| 3662 | 3870 | ROM_LOAD( "atgs.u81", 0x000000, 0x200000, CRC(cb2aca91) SHA1(869f0f2db35c45ec90b74d33d521cbb598e60a3f) ) /* US version's rom labeled "bg1_u81" */ |
| 3663 | 3871 | |
| 3664 | | ROM_REGION( 0x200000, "gfx4", 0 ) /* Layer 2 */ |
| 3872 | ROM_REGION( 0x200000, "layer2", 0 ) /* Layer 2 */ |
| 3665 | 3873 | ROM_LOAD( "atgs.u89", 0x000000, 0x200000, CRC(65f45a0f) SHA1(b7f4b56308dcdc144100d0a92d91255459a320a4) ) /* US version's rom labeled "bg2_u89" */ |
| 3666 | 3874 | |
| 3667 | | ROM_REGION( 0x080000, "gfx5", 0 ) /* Layer 3 */ |
| 3875 | ROM_REGION( 0x080000, "layer3", 0 ) /* Layer 3 */ |
| 3668 | 3876 | ROM_LOAD( "text.u82", 0x000000, 0x080000, CRC(f57333ea) SHA1(409d8005ffcf91943e4a743b2434ce425f5bdc36) ) /* US version's rom labeled "d20" */ |
| 3669 | 3877 | |
| 3670 | 3878 | ROM_REGION( 0x440000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| r7640 | r7641 | |
| 3727 | 3935 | |
| 3728 | 3936 | ***************************************************************************/ |
| 3729 | 3937 | |
| 3938 | |
| 3939 | |
| 3940 | #define ROMS_SAILORMN \ |
| 3941 | ROM_REGION( 0x400000, "maincpu", 0 ) \ |
| 3942 | ROM_LOAD16_WORD_SWAP( "bpsm945a.u45", 0x000000, 0x080000, CRC(898c9515) SHA1(0fe8d7f13f5cfe2f6e79a0a21b2e8e7e70e65c4b) ) \ |
| 3943 | ROM_LOAD16_WORD_SWAP( "bpsm.u46", 0x200000, 0x200000, CRC(32084e80) SHA1(0ac503190d95009620b5ad7e7e0e63324f6fa4eb) ) \ |
| 3944 | \ |
| 3945 | ROM_REGION( 0x88000, "audiocpu", 0 ) \ |
| 3946 | ROM_LOAD( "bpsm945a.u9", 0x00000, 0x08000, CRC(438de548) SHA1(81a0ca1cd662e2017aa980da162d39cfd0a19f14) ) \ |
| 3947 | ROM_CONTINUE( 0x10000, 0x78000 ) \ |
| 3948 | \ |
| 3949 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) \ |
| 3950 | ROM_LOAD( "bpsm.u76", 0x000000, 0x200000, CRC(a243a5ba) SHA1(3a32d685e53e0b75977f7acb187cf414a50c7f8b) ) \ |
| 3951 | ROM_LOAD( "bpsm.u77", 0x200000, 0x200000, CRC(5179a4ac) SHA1(ceb8d3d889aae885debb2c9cf2263f60be3f1212) ) \ |
| 3952 | \ |
| 3953 | ROM_REGION( 0x200000, "layer0", 0 ) \ |
| 3954 | ROM_LOAD( "bpsm.u53", 0x000000, 0x200000, CRC(b9b15f83) SHA1(8c574c97d38fb9e2889648c8d677b171e80a4229) ) \ |
| 3955 | \ |
| 3956 | ROM_REGION( 0x200000, "layer1", 0 ) \ |
| 3957 | ROM_LOAD( "bpsm.u54", 0x000000, 0x200000, CRC(8f00679d) SHA1(4ea412f8ecdb9fd46f2d1378809919d1a62fcc2b) ) \ |
| 3958 | \ |
| 3959 | ROM_REGION( (5*0x200000)*2, "layer2", 0 ) \ |
| 3960 | \ |
| 3961 | ROM_LOAD( "bpsm.u57", 0x000000, 0x200000, CRC(86be7b63) SHA1(6b7d3d41fb1e4045c765b3cc98304464d91e6e3d) ) \ |
| 3962 | ROM_LOAD( "bpsm.u58", 0x200000, 0x200000, CRC(e0bba83b) SHA1(9e1434814efd9321b2e5210b995d2fe66cca37dd) ) \ |
| 3963 | ROM_LOAD( "bpsm.u62", 0x400000, 0x200000, CRC(a1e3bfac) SHA1(4528887d57e519df8dd60b2392db4c175c57b239) ) \ |
| 3964 | ROM_LOAD( "bpsm.u61", 0x600000, 0x200000, CRC(6a014b52) SHA1(107c687479b59c455fc514cd61d290853c95ad9a) ) \ |
| 3965 | ROM_LOAD( "bpsm.u60", 0x800000, 0x200000, CRC(992468c0) SHA1(3c66cc08313a9a326badc44f53a98cdfe0643da4) ) \ |
| 3966 | \ |
| 3967 | ROM_LOAD( "bpsm.u65", 0xa00000, 0x200000, CRC(f60fb7b5) SHA1(72cb8908cd687a330e14657664cd35037a52c39e) ) \ |
| 3968 | ROM_LOAD( "bpsm.u64", 0xc00000, 0x200000, CRC(6559d31c) SHA1(bf688123a4beff625652cc1844bf0dc192f5c90f) ) \ |
| 3969 | ROM_LOAD( "bpsm.u63", 0xe00000, 0x100000, CRC(d57a56b4) SHA1(e039b336887b66eba4e0630a3cb04cbd8fe14073) ) \ |
| 3970 | ROM_CONTINUE( 0xe00000, 0x100000 ) \ |
| 3971 | \ |
| 3972 | ROM_REGION( 0x240000, "oki1", 0 ) \ |
| 3973 | ROM_LOAD( "bpsm.u48", 0x040000, 0x200000, CRC(498e4ed1) SHA1(28d45a41702d9e5af4e214c1800b2e513ec84d51) ) \ |
| 3974 | \ |
| 3975 | ROM_REGION( 0x240000, "oki2", 0 ) \ |
| 3976 | ROM_LOAD( "bpsm.u47", 0x040000, 0x080000, CRC(0f2901b9) SHA1(ebd3e9e39e8d2bc91688dac19b99548a28b4733c) ) \ |
| 3977 | ROM_RELOAD( 0x0c0000, 0x080000 ) \ |
| 3978 | ROM_RELOAD( 0x140000, 0x080000 ) \ |
| 3979 | ROM_RELOAD( 0x1c0000, 0x080000 ) \ |
| 3980 | |
| 3981 | /* the regions differ only in the EEPROM, hence the macro above - all EEPROMs are Factory Defaulted */ |
| 3730 | 3982 | ROM_START( sailormn ) |
| 3731 | | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 3732 | | ROM_LOAD16_WORD_SWAP( "bpsm945a.u45", 0x000000, 0x080000, CRC(898c9515) SHA1(0fe8d7f13f5cfe2f6e79a0a21b2e8e7e70e65c4b) ) |
| 3733 | | ROM_LOAD16_WORD_SWAP( "bpsm.u46", 0x200000, 0x200000, CRC(32084e80) SHA1(0ac503190d95009620b5ad7e7e0e63324f6fa4eb) ) |
| 3983 | ROMS_SAILORMN |
| 3734 | 3984 | |
| 3735 | | ROM_REGION( 0x88000, "audiocpu", 0 ) /* Z80 code */ |
| 3736 | | ROM_LOAD( "bpsm945a.u9", 0x00000, 0x08000, CRC(438de548) SHA1(81a0ca1cd662e2017aa980da162d39cfd0a19f14) ) |
| 3737 | | ROM_CONTINUE( 0x10000, 0x78000 ) |
| 3985 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 3986 | ROM_LOAD16_WORD( "sailormn_europe.nv", 0x0000, 0x0080, CRC(59a7dc50) SHA1(6b116bdfbde42192b01678cb0b9bab0f2e56fd28) ) |
| 3987 | ROM_END |
| 3738 | 3988 | |
| 3739 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3740 | | ROM_LOAD( "bpsm.u76", 0x000000, 0x200000, CRC(a243a5ba) SHA1(3a32d685e53e0b75977f7acb187cf414a50c7f8b) ) |
| 3741 | | ROM_LOAD( "bpsm.u77", 0x200000, 0x200000, CRC(5179a4ac) SHA1(ceb8d3d889aae885debb2c9cf2263f60be3f1212) ) |
| 3989 | ROM_START( sailormnu ) |
| 3990 | ROMS_SAILORMN |
| 3742 | 3991 | |
| 3743 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3744 | | ROM_LOAD( "bpsm.u53", 0x000000, 0x200000, CRC(b9b15f83) SHA1(8c574c97d38fb9e2889648c8d677b171e80a4229) ) |
| 3992 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 3993 | ROM_LOAD16_WORD( "sailormn_usa.nv", 0x0000, 0x0080, CRC(3915abe3) SHA1(1b8d3b8c65cf2298939c27607ec52630c017c7ea) ) |
| 3994 | ROM_END |
| 3745 | 3995 | |
| 3746 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 3747 | | ROM_LOAD( "bpsm.u54", 0x000000, 0x200000, CRC(8f00679d) SHA1(4ea412f8ecdb9fd46f2d1378809919d1a62fcc2b) ) |
| 3996 | ROM_START( sailormnj ) |
| 3997 | ROMS_SAILORMN |
| 3748 | 3998 | |
| 3749 | | ROM_REGION( (5*0x200000)*2, "gfx4", 0 ) /* Layer 2 */ |
| 3750 | | /* 4 bit part */ |
| 3751 | | ROM_LOAD( "bpsm.u57", 0x000000, 0x200000, CRC(86be7b63) SHA1(6b7d3d41fb1e4045c765b3cc98304464d91e6e3d) ) |
| 3752 | | ROM_LOAD( "bpsm.u58", 0x200000, 0x200000, CRC(e0bba83b) SHA1(9e1434814efd9321b2e5210b995d2fe66cca37dd) ) |
| 3753 | | ROM_LOAD( "bpsm.u62", 0x400000, 0x200000, CRC(a1e3bfac) SHA1(4528887d57e519df8dd60b2392db4c175c57b239) ) |
| 3754 | | ROM_LOAD( "bpsm.u61", 0x600000, 0x200000, CRC(6a014b52) SHA1(107c687479b59c455fc514cd61d290853c95ad9a) ) |
| 3755 | | ROM_LOAD( "bpsm.u60", 0x800000, 0x200000, CRC(992468c0) SHA1(3c66cc08313a9a326badc44f53a98cdfe0643da4) ) |
| 3756 | | /* 2 bit part */ |
| 3757 | | ROM_LOAD( "bpsm.u65", 0xa00000, 0x200000, CRC(f60fb7b5) SHA1(72cb8908cd687a330e14657664cd35037a52c39e) ) |
| 3758 | | ROM_LOAD( "bpsm.u64", 0xc00000, 0x200000, CRC(6559d31c) SHA1(bf688123a4beff625652cc1844bf0dc192f5c90f) ) |
| 3759 | | ROM_LOAD( "bpsm.u63", 0xe00000, 0x100000, CRC(d57a56b4) SHA1(e039b336887b66eba4e0630a3cb04cbd8fe14073) ) // FIRST AND SECOND HALF IDENTICAL |
| 3760 | | ROM_CONTINUE( 0xe00000, 0x100000 ) |
| 3999 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4000 | ROM_LOAD16_WORD( "sailormn_japan.nv", 0x0000, 0x0080, CRC(ea03c30a) SHA1(2afc71f932674e34fc4491db0e2027e0371569fc) ) |
| 4001 | ROM_END |
| 3761 | 4002 | |
| 3762 | | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #0 Samples */ |
| 3763 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 3764 | | ROM_LOAD( "bpsm.u48", 0x040000, 0x200000, CRC(498e4ed1) SHA1(28d45a41702d9e5af4e214c1800b2e513ec84d51) ) // 16 x $20000 |
| 4003 | ROM_START( sailormnk ) |
| 4004 | ROMS_SAILORMN |
| 3765 | 4005 | |
| 3766 | | ROM_REGION( 0x240000, "oki2", 0 ) /* OKIM6295 #1 Samples */ |
| 3767 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 3768 | | ROM_LOAD( "bpsm.u47", 0x040000, 0x080000, CRC(0f2901b9) SHA1(ebd3e9e39e8d2bc91688dac19b99548a28b4733c) ) // 4 x $20000 |
| 3769 | | ROM_RELOAD( 0x0c0000, 0x080000 ) |
| 3770 | | ROM_RELOAD( 0x140000, 0x080000 ) |
| 3771 | | ROM_RELOAD( 0x1c0000, 0x080000 ) |
| 4006 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4007 | ROM_LOAD16_WORD( "sailormn_korea.nv", 0x0000, 0x0080, CRC(0e7de398) SHA1(b495bf43d8596a0dc9843c74fc04fd21499bd115) ) |
| 4008 | ROM_END |
| 3772 | 4009 | |
| 4010 | ROM_START( sailormnt ) |
| 4011 | ROMS_SAILORMN |
| 4012 | |
| 3773 | 4013 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 3774 | | ROM_LOAD16_WORD( "eeprom-sailormn.bin", 0x0000, 0x0080, CRC(59a7dc50) SHA1(6b116bdfbde42192b01678cb0b9bab0f2e56fd28) ) |
| 4014 | ROM_LOAD16_WORD( "sailormn_taiwan.nv", 0x0000, 0x0080, CRC(6c7e8c2a) SHA1(68ef4e6593e4c12e6488a20dcc6dda920b01de67) ) |
| 3775 | 4015 | ROM_END |
| 3776 | 4016 | |
| 4017 | ROM_START( sailormnh ) |
| 4018 | ROMS_SAILORMN |
| 4019 | |
| 4020 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4021 | ROM_LOAD16_WORD( "sailormn_hongkong.nv", 0x0000, 0x0080, CRC(4d24c874) SHA1(93b87ef18cff98e4f6a60234692e7a9a9c8e7552) ) |
| 4022 | ROM_END |
| 4023 | |
| 4024 | |
| 4025 | #define ROMS_SAILORMNO \ |
| 4026 | ROM_REGION( 0x400000, "maincpu", 0 ) \ |
| 4027 | ROM_LOAD16_WORD_SWAP( "smprg.u45", 0x000000, 0x080000, CRC(234f1152) SHA1(8fc6d4a8995d550862d328011d3357c09334f0fa) ) \ |
| 4028 | ROM_LOAD16_WORD_SWAP( "bpsm.u46", 0x200000, 0x200000, CRC(32084e80) SHA1(0ac503190d95009620b5ad7e7e0e63324f6fa4eb) ) \ |
| 4029 | \ |
| 4030 | ROM_REGION( 0x88000, "audiocpu", 0 ) \ |
| 4031 | ROM_LOAD( "bpsm945a.u9", 0x00000, 0x08000, CRC(438de548) SHA1(81a0ca1cd662e2017aa980da162d39cfd0a19f14) ) \ |
| 4032 | ROM_CONTINUE( 0x10000, 0x78000 ) \ |
| 4033 | \ |
| 4034 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) \ |
| 4035 | ROM_LOAD( "bpsm.u76", 0x000000, 0x200000, CRC(a243a5ba) SHA1(3a32d685e53e0b75977f7acb187cf414a50c7f8b) ) \ |
| 4036 | ROM_LOAD( "bpsm.u77", 0x200000, 0x200000, CRC(5179a4ac) SHA1(ceb8d3d889aae885debb2c9cf2263f60be3f1212) ) \ |
| 4037 | \ |
| 4038 | ROM_REGION( 0x200000, "layer0", 0 ) \ |
| 4039 | ROM_LOAD( "bpsm.u53", 0x000000, 0x200000, CRC(b9b15f83) SHA1(8c574c97d38fb9e2889648c8d677b171e80a4229) ) \ |
| 4040 | \ |
| 4041 | ROM_REGION( 0x200000, "layer1", 0 ) \ |
| 4042 | ROM_LOAD( "bpsm.u54", 0x000000, 0x200000, CRC(8f00679d) SHA1(4ea412f8ecdb9fd46f2d1378809919d1a62fcc2b) ) \ |
| 4043 | \ |
| 4044 | ROM_REGION( (5*0x200000)*2, "layer2", 0 ) \ |
| 4045 | \ |
| 4046 | ROM_LOAD( "bpsm.u57", 0x000000, 0x200000, CRC(86be7b63) SHA1(6b7d3d41fb1e4045c765b3cc98304464d91e6e3d) ) \ |
| 4047 | ROM_LOAD( "bpsm.u58", 0x200000, 0x200000, CRC(e0bba83b) SHA1(9e1434814efd9321b2e5210b995d2fe66cca37dd) ) \ |
| 4048 | ROM_LOAD( "bpsm.u62", 0x400000, 0x200000, CRC(a1e3bfac) SHA1(4528887d57e519df8dd60b2392db4c175c57b239) ) \ |
| 4049 | ROM_LOAD( "bpsm.u61", 0x600000, 0x200000, CRC(6a014b52) SHA1(107c687479b59c455fc514cd61d290853c95ad9a) ) \ |
| 4050 | ROM_LOAD( "bpsm.u60", 0x800000, 0x200000, CRC(992468c0) SHA1(3c66cc08313a9a326badc44f53a98cdfe0643da4) ) \ |
| 4051 | \ |
| 4052 | ROM_LOAD( "bpsm.u65", 0xa00000, 0x200000, CRC(f60fb7b5) SHA1(72cb8908cd687a330e14657664cd35037a52c39e) ) \ |
| 4053 | ROM_LOAD( "bpsm.u64", 0xc00000, 0x200000, CRC(6559d31c) SHA1(bf688123a4beff625652cc1844bf0dc192f5c90f) ) \ |
| 4054 | ROM_LOAD( "bpsm.u63", 0xe00000, 0x100000, CRC(d57a56b4) SHA1(e039b336887b66eba4e0630a3cb04cbd8fe14073) ) \ |
| 4055 | ROM_CONTINUE( 0xe00000, 0x100000 ) \ |
| 4056 | \ |
| 4057 | ROM_REGION( 0x240000, "oki1", 0 ) \ |
| 4058 | ROM_LOAD( "bpsm.u48", 0x040000, 0x200000, CRC(498e4ed1) SHA1(28d45a41702d9e5af4e214c1800b2e513ec84d51) ) \ |
| 4059 | \ |
| 4060 | ROM_REGION( 0x240000, "oki2", 0 ) \ |
| 4061 | ROM_LOAD( "bpsm.u47", 0x040000, 0x080000, CRC(0f2901b9) SHA1(ebd3e9e39e8d2bc91688dac19b99548a28b4733c) ) \ |
| 4062 | ROM_RELOAD( 0x0c0000, 0x080000 ) \ |
| 4063 | ROM_RELOAD( 0x140000, 0x080000 ) \ |
| 4064 | ROM_RELOAD( 0x1c0000, 0x080000 ) \ |
| 4065 | |
| 4066 | /* the regions differ only in the EEPROM, hence the macro above - all EEPROMs are Factory Defaulted */ |
| 3777 | 4067 | ROM_START( sailormno ) |
| 3778 | | ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ |
| 3779 | | ROM_LOAD16_WORD_SWAP( "smprg.u45", 0x000000, 0x080000, CRC(234f1152) SHA1(8fc6d4a8995d550862d328011d3357c09334f0fa) ) |
| 3780 | | ROM_LOAD16_WORD_SWAP( "bpsm.u46", 0x200000, 0x200000, CRC(32084e80) SHA1(0ac503190d95009620b5ad7e7e0e63324f6fa4eb) ) |
| 4068 | ROMS_SAILORMNO |
| 3781 | 4069 | |
| 3782 | | ROM_REGION( 0x88000, "audiocpu", 0 ) /* Z80 code */ |
| 3783 | | ROM_LOAD( "bpsm945a.u9", 0x00000, 0x08000, CRC(438de548) SHA1(81a0ca1cd662e2017aa980da162d39cfd0a19f14) ) |
| 3784 | | ROM_CONTINUE( 0x10000, 0x78000 ) |
| 4070 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4071 | ROM_LOAD16_WORD( "sailormn_europe.nv", 0x0000, 0x0080, CRC(59a7dc50) SHA1(6b116bdfbde42192b01678cb0b9bab0f2e56fd28) ) |
| 4072 | ROM_END |
| 3785 | 4073 | |
| 3786 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites (do not dispose) */ |
| 3787 | | ROM_LOAD( "bpsm.u76", 0x000000, 0x200000, CRC(a243a5ba) SHA1(3a32d685e53e0b75977f7acb187cf414a50c7f8b) ) |
| 3788 | | ROM_LOAD( "bpsm.u77", 0x200000, 0x200000, CRC(5179a4ac) SHA1(ceb8d3d889aae885debb2c9cf2263f60be3f1212) ) |
| 4074 | ROM_START( sailormnou ) |
| 4075 | ROMS_SAILORMNO |
| 3789 | 4076 | |
| 3790 | | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 */ |
| 3791 | | ROM_LOAD( "bpsm.u53", 0x000000, 0x200000, CRC(b9b15f83) SHA1(8c574c97d38fb9e2889648c8d677b171e80a4229) ) |
| 4077 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4078 | ROM_LOAD16_WORD( "sailormn_usa.nv", 0x0000, 0x0080, CRC(3915abe3) SHA1(1b8d3b8c65cf2298939c27607ec52630c017c7ea) ) |
| 4079 | ROM_END |
| 3792 | 4080 | |
| 3793 | | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 1 */ |
| 3794 | | ROM_LOAD( "bpsm.u54", 0x000000, 0x200000, CRC(8f00679d) SHA1(4ea412f8ecdb9fd46f2d1378809919d1a62fcc2b) ) |
| 4081 | ROM_START( sailormnoj ) |
| 4082 | ROMS_SAILORMNO |
| 3795 | 4083 | |
| 3796 | | ROM_REGION( (5*0x200000)*2, "gfx4", 0 ) /* Layer 2 */ |
| 3797 | | /* 4 bit part */ |
| 3798 | | ROM_LOAD( "bpsm.u57", 0x000000, 0x200000, CRC(86be7b63) SHA1(6b7d3d41fb1e4045c765b3cc98304464d91e6e3d) ) |
| 3799 | | ROM_LOAD( "bpsm.u58", 0x200000, 0x200000, CRC(e0bba83b) SHA1(9e1434814efd9321b2e5210b995d2fe66cca37dd) ) |
| 3800 | | ROM_LOAD( "bpsm.u62", 0x400000, 0x200000, CRC(a1e3bfac) SHA1(4528887d57e519df8dd60b2392db4c175c57b239) ) |
| 3801 | | ROM_LOAD( "bpsm.u61", 0x600000, 0x200000, CRC(6a014b52) SHA1(107c687479b59c455fc514cd61d290853c95ad9a) ) |
| 3802 | | ROM_LOAD( "bpsm.u60", 0x800000, 0x200000, CRC(992468c0) SHA1(3c66cc08313a9a326badc44f53a98cdfe0643da4) ) |
| 3803 | | /* 2 bit part */ |
| 3804 | | ROM_LOAD( "bpsm.u65", 0xa00000, 0x200000, CRC(f60fb7b5) SHA1(72cb8908cd687a330e14657664cd35037a52c39e) ) |
| 3805 | | ROM_LOAD( "bpsm.u64", 0xc00000, 0x200000, CRC(6559d31c) SHA1(bf688123a4beff625652cc1844bf0dc192f5c90f) ) |
| 3806 | | ROM_LOAD( "bpsm.u63", 0xe00000, 0x100000, CRC(d57a56b4) SHA1(e039b336887b66eba4e0630a3cb04cbd8fe14073) ) // FIRST AND SECOND HALF IDENTICAL |
| 3807 | | ROM_CONTINUE( 0xe00000, 0x100000 ) |
| 4084 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4085 | ROM_LOAD16_WORD( "sailormn_japan.nv", 0x0000, 0x0080, CRC(ea03c30a) SHA1(2afc71f932674e34fc4491db0e2027e0371569fc) ) |
| 4086 | ROM_END |
| 3808 | 4087 | |
| 3809 | | ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 #0 Samples */ |
| 3810 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 3811 | | ROM_LOAD( "bpsm.u48", 0x040000, 0x200000, CRC(498e4ed1) SHA1(28d45a41702d9e5af4e214c1800b2e513ec84d51) ) // 16 x $20000 |
| 4088 | ROM_START( sailormnok ) |
| 4089 | ROMS_SAILORMNO |
| 3812 | 4090 | |
| 3813 | | ROM_REGION( 0x240000, "oki2", 0 ) /* OKIM6295 #1 Samples */ |
| 3814 | | /* Leave the 0x40000 bytes addressable by the chip empty */ |
| 3815 | | ROM_LOAD( "bpsm.u47", 0x040000, 0x080000, CRC(0f2901b9) SHA1(ebd3e9e39e8d2bc91688dac19b99548a28b4733c) ) // 4 x $20000 |
| 3816 | | ROM_RELOAD( 0x0c0000, 0x080000 ) |
| 3817 | | ROM_RELOAD( 0x140000, 0x080000 ) |
| 3818 | | ROM_RELOAD( 0x1c0000, 0x080000 ) |
| 4091 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4092 | ROM_LOAD16_WORD( "sailormn_korea.nv", 0x0000, 0x0080, CRC(0e7de398) SHA1(b495bf43d8596a0dc9843c74fc04fd21499bd115) ) |
| 4093 | ROM_END |
| 3819 | 4094 | |
| 4095 | ROM_START( sailormnot ) |
| 4096 | ROMS_SAILORMNO |
| 4097 | |
| 3820 | 4098 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 3821 | | ROM_LOAD16_WORD( "eeprom-sailormn.bin", 0x0000, 0x0080, CRC(59a7dc50) SHA1(6b116bdfbde42192b01678cb0b9bab0f2e56fd28) ) |
| 4099 | ROM_LOAD16_WORD( "sailormn_taiwan.nv", 0x0000, 0x0080, CRC(6c7e8c2a) SHA1(68ef4e6593e4c12e6488a20dcc6dda920b01de67) ) |
| 3822 | 4100 | ROM_END |
| 3823 | 4101 | |
| 4102 | ROM_START( sailormnoh ) |
| 4103 | ROMS_SAILORMNO |
| 3824 | 4104 | |
| 4105 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) |
| 4106 | ROM_LOAD16_WORD( "sailormn_hongkong.nv", 0x0000, 0x0080, CRC(4d24c874) SHA1(93b87ef18cff98e4f6a60234692e7a9a9c8e7552) ) |
| 4107 | ROM_END |
| 4108 | |
| 4109 | |
| 3825 | 4110 | /*************************************************************************** |
| 3826 | 4111 | |
| 4112 | Tobikose! Jumpman by Namco, 1999 |
| 4113 | PCB TJ0476 |
| 4114 | |
| 4115 | TMP 68HC000P-16 |
| 4116 | |
| 4117 | 013 9934WX002 |
| 4118 | 038 9919WX007 |
| 4119 | |
| 4120 | OKI M6295 |
| 4121 | |
| 4122 | Battery |
| 4123 | EEPROM? |
| 4124 | |
| 4125 | 28MHz XTAL |
| 4126 | |
| 4127 | ***************************************************************************/ |
| 4128 | |
| 4129 | ROM_START( tjumpman ) |
| 4130 | ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */ |
| 4131 | ROM_LOAD16_WORD_SWAP( "tj1_mpr-0c.u41", 0x00000, 0x80000, CRC(de3030b8) SHA1(5f2165ea039c34cab605ebddc0b61eadc47b1532) ) |
| 4132 | |
| 4133 | ROM_REGION( 0x100000 * 2, "sprites", 0 ) /* Sprites */ |
| 4134 | ROM_LOAD16_BYTE( "tj1_obj-0a.u52", 0x00000, 0x80000, CRC(b42cf8e8) SHA1(9ed7fb3574ed163a81f34a0d8cfa7a4661439932) ) |
| 4135 | ROM_LOAD16_BYTE( "tj1_obj-1a.u53", 0x00001, 0x80000, CRC(5f0124d7) SHA1(4d9cfa464159998c176a178c668273d128dedff8) ) |
| 4136 | |
| 4137 | ROM_REGION( 0x80000, "layer0", 0 ) /* Layer 0 */ |
| 4138 | ROM_LOAD( "tj1_cha-0a.u60", 0x00000, 0x40000, CRC(8aa08a38) SHA1(92b4df72fb8a833bb686ea478811243c5b868470) ) |
| 4139 | ROM_LOAD( "tj1_cha-1a.u61", 0x40000, 0x40000, CRC(50072c82) SHA1(f8823e5a865afb8824cafd3b6483e2b6250ee77f) ) |
| 4140 | |
| 4141 | ROM_REGION( 0x40000, "oki1", 0 ) /* OKIM6295 #1 Samples */ |
| 4142 | ROM_LOAD( "tj1_voi-0a.u27", 0x00000, 0x40000, CRC(b5693aae) SHA1(8887ae98030cb5d184e3d57d2b4e48bf1e76a232) ) |
| 4143 | |
| 4144 | ROM_REGION( 0x0002, "plds", 0 ) |
| 4145 | ROM_LOAD( "tj1_gal.uxx", 0x0000, 0x0001, NO_DUMP ) // GAL16V8D-15LP |
| 4146 | ROM_LOAD( "tj1_gal.uyy", 0x0000, 0x0001, NO_DUMP ) // GAL16V8D-15LP |
| 4147 | ROM_END |
| 4148 | |
| 4149 | |
| 4150 | /*************************************************************************** |
| 4151 | |
| 3827 | 4152 | Puzzle Uo Poko |
| 3828 | 4153 | Board: CV02 |
| 3829 | 4154 | OSC: 28.0, 16.0, 16.9 MHz |
| r7640 | r7641 | |
| 3835 | 4160 | ROM_LOAD16_BYTE( "u26.int", 0x000000, 0x080000, CRC(b445c9ac) SHA1(4dda1c6e19de629ea4d9061560c32a9f0deabd53) ) |
| 3836 | 4161 | ROM_LOAD16_BYTE( "u25.int", 0x000001, 0x080000, CRC(a1258482) SHA1(7f4adc4a6d069032aaf3d93eb60fde16b59483f8) ) |
| 3837 | 4162 | |
| 3838 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites: * 2 , do not dispose */ |
| 4163 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 3839 | 4164 | ROM_LOAD( "u33.bin", 0x000000, 0x400000, CRC(5d142ad2) SHA1(f26abcf7a625a322b83df44fbd6e852bfb03663c) ) |
| 3840 | 4165 | |
| 3841 | | ROM_REGION( 0x400000, "gfx2", 0 ) /* Layer 0 */ |
| 4166 | ROM_REGION( 0x400000, "layer0", 0 ) /* Layer 0 */ |
| 3842 | 4167 | ROM_LOAD( "u49.bin", 0x000000, 0x400000, CRC(12fb11bb) SHA1(953df1b16b5c9a6c3eb2fdebec4669a879270e73) ) |
| 3843 | 4168 | |
| 3844 | 4169 | ROM_REGION( 0x200000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 3853 | 4178 | ROM_LOAD16_BYTE( "u26.bin", 0x000000, 0x080000, CRC(e7eec050) SHA1(cf3a77741029f96dbbec5ca7217a1723e4233cff) ) |
| 3854 | 4179 | ROM_LOAD16_BYTE( "u25.bin", 0x000001, 0x080000, CRC(68cb6211) SHA1(a6db0bc2e3e54b6992a44b7d52395917e66db49b) ) |
| 3855 | 4180 | |
| 3856 | | ROM_REGION( 0x400000 * 2, "gfx1", 0 ) /* Sprites: * 2 , do not dispose */ |
| 4181 | ROM_REGION( 0x400000 * 2, "sprites", 0 ) /* Sprites: * 2 */ |
| 3857 | 4182 | ROM_LOAD( "u33.bin", 0x000000, 0x400000, CRC(5d142ad2) SHA1(f26abcf7a625a322b83df44fbd6e852bfb03663c) ) |
| 3858 | 4183 | |
| 3859 | | ROM_REGION( 0x400000, "gfx2", 0 ) /* Layer 0 */ |
| 4184 | ROM_REGION( 0x400000, "layer0", 0 ) /* Layer 0 */ |
| 3860 | 4185 | ROM_LOAD( "u49.bin", 0x000000, 0x400000, CRC(12fb11bb) SHA1(953df1b16b5c9a6c3eb2fdebec4669a879270e73) ) |
| 3861 | 4186 | |
| 3862 | 4187 | ROM_REGION( 0x200000, "ymz", 0 ) /* Samples */ |
| r7640 | r7641 | |
| 3903 | 4228 | static void init_cave(running_machine *machine) |
| 3904 | 4229 | { |
| 3905 | 4230 | cave_state *state = (cave_state *)machine->driver_data; |
| 3906 | | state->region_byte = -1; |
| 3907 | 4231 | |
| 3908 | 4232 | state->spritetype[0] = 0; // Normal sprites |
| 3909 | 4233 | state->kludge = 0; |
| r7640 | r7641 | |
| 3915 | 4239 | |
| 3916 | 4240 | static DRIVER_INIT( agallet ) |
| 3917 | 4241 | { |
| 3918 | | cave_state *state = (cave_state *)machine->driver_data; |
| 3919 | 4242 | UINT8 *ROM = memory_region(machine, "audiocpu"); |
| 3920 | 4243 | init_cave(machine); |
| 3921 | 4244 | |
| 3922 | 4245 | memory_configure_bank(machine, "bank1", 0, 0x02, &ROM[0x00000], 0x4000); |
| 3923 | 4246 | memory_configure_bank(machine, "bank1", 2, 0x1e, &ROM[0x10000], 0x4000); |
| 3924 | 4247 | |
| 3925 | | sailormn_unpack_tiles(machine, "gfx4"); |
| 4248 | sailormn_unpack_tiles(machine, "layer2"); |
| 3926 | 4249 | |
| 3927 | | state->region_byte = 0x1f; |
| 3928 | | |
| 3929 | 4250 | unpack_sprites(machine); |
| 3930 | | |
| 3931 | | // Speed Hack |
| 3932 | | memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb80000, 0xb80001, 0, 0, agallet_irq_cause_r); |
| 3933 | 4251 | } |
| 3934 | 4252 | |
| 3935 | 4253 | static DRIVER_INIT( dfeveron ) |
| r7640 | r7641 | |
| 3937 | 4255 | cave_state *state = (cave_state *)machine->driver_data; |
| 3938 | 4256 | init_cave(machine); |
| 3939 | 4257 | |
| 3940 | | state->region_byte = -1; |
| 3941 | | |
| 3942 | 4258 | unpack_sprites(machine); |
| 3943 | 4259 | state->kludge = 2; |
| 3944 | 4260 | } |
| r7640 | r7641 | |
| 3948 | 4264 | cave_state *state = (cave_state *)machine->driver_data; |
| 3949 | 4265 | init_cave(machine); |
| 3950 | 4266 | |
| 3951 | | state->region_byte = -1; |
| 3952 | | |
| 3953 | 4267 | unpack_sprites(machine); |
| 3954 | 4268 | state->kludge = 2; |
| 3955 | 4269 | } |
| r7640 | r7641 | |
| 3959 | 4273 | cave_state *state = (cave_state *)machine->driver_data; |
| 3960 | 4274 | init_cave(machine); |
| 3961 | 4275 | |
| 3962 | | state->region_byte = -1; |
| 3963 | | |
| 3964 | 4276 | ddonpach_unpack_sprites(machine); |
| 3965 | 4277 | state->spritetype[0] = 1; // "different" sprites (no zooming?) |
| 3966 | 4278 | state->time_vblank_irq = 90; |
| r7640 | r7641 | |
| 3971 | 4283 | cave_state *state = (cave_state *)machine->driver_data; |
| 3972 | 4284 | init_cave(machine); |
| 3973 | 4285 | |
| 3974 | | state->region_byte = -1; |
| 3975 | | |
| 3976 | 4286 | ddonpach_unpack_sprites(machine); |
| 3977 | 4287 | state->spritetype[0] = 1; // "different" sprites (no zooming?) |
| 3978 | 4288 | state->time_vblank_irq = 90; |
| r7640 | r7641 | |
| 3984 | 4294 | cave_state *state = (cave_state *)machine->driver_data; |
| 3985 | 4295 | init_cave(machine); |
| 3986 | 4296 | |
| 3987 | | state->region_byte = -1; |
| 3988 | | |
| 3989 | 4297 | esprade_unpack_sprites(machine); |
| 3990 | 4298 | state->time_vblank_irq = 2000; /**/ |
| 3991 | 4299 | |
| r7640 | r7641 | |
| 4014 | 4322 | cave_state *state = (cave_state *)machine->driver_data; |
| 4015 | 4323 | init_cave(machine); |
| 4016 | 4324 | |
| 4017 | | state->region_byte = -1; |
| 4018 | | |
| 4019 | 4325 | esprade_unpack_sprites(machine); |
| 4020 | 4326 | state->time_vblank_irq = 2000; /**/ |
| 4021 | 4327 | } |
| r7640 | r7641 | |
| 4030 | 4336 | memory_configure_bank(machine, "bank2", 0, 0x2, &ROM[0x00000], 0x4000); |
| 4031 | 4337 | memory_configure_bank(machine, "bank2", 2, 0xe, &ROM[0x10000], 0x4000); |
| 4032 | 4338 | |
| 4033 | | state->region_byte = -1; |
| 4034 | | |
| 4035 | 4339 | unpack_sprites(machine); |
| 4036 | 4340 | state->spritetype[0] = 2; // Normal sprites with different position handling |
| 4037 | 4341 | state->time_vblank_irq = 2000; /**/ |
| r7640 | r7641 | |
| 4042 | 4346 | cave_state *state = (cave_state *)machine->driver_data; |
| 4043 | 4347 | UINT8 *ROM = memory_region(machine, "audiocpu"); |
| 4044 | 4348 | UINT8 *buffer; |
| 4045 | | UINT8 *src = memory_region(machine, "gfx1"); |
| 4046 | | int len = memory_region_length(machine, "gfx1"); |
| 4349 | UINT8 *src = memory_region(machine, "sprites"); |
| 4350 | int len = memory_region_length(machine, "sprites"); |
| 4047 | 4351 | |
| 4048 | 4352 | init_cave(machine); |
| 4049 | 4353 | |
| r7640 | r7641 | |
| 4060 | 4364 | auto_free(machine, buffer); |
| 4061 | 4365 | } |
| 4062 | 4366 | |
| 4063 | | state->region_byte = 0x05; |
| 4064 | | |
| 4065 | 4367 | unpack_sprites(machine); |
| 4066 | 4368 | state->spritetype[0] = 2; // Normal sprites with different position handling |
| 4067 | 4369 | state->kludge = 3; |
| r7640 | r7641 | |
| 4094 | 4396 | cave_state *state = (cave_state *)machine->driver_data; |
| 4095 | 4397 | UINT8 *ROM = memory_region(machine, "audiocpu"); |
| 4096 | 4398 | UINT8 *buffer; |
| 4097 | | UINT8 *src = memory_region(machine, "gfx1"); |
| 4098 | | int len = memory_region_length(machine, "gfx1"); |
| 4399 | UINT8 *src = memory_region(machine, "sprites"); |
| 4400 | int len = memory_region_length(machine, "sprites"); |
| 4099 | 4401 | int i, j; |
| 4100 | 4402 | |
| 4101 | 4403 | init_cave(machine); |
| r7640 | r7641 | |
| 4138 | 4440 | |
| 4139 | 4441 | } |
| 4140 | 4442 | |
| 4141 | | |
| 4142 | 4443 | static DRIVER_INIT( sailormn ) |
| 4143 | 4444 | { |
| 4144 | 4445 | cave_state *state = (cave_state *)machine->driver_data; |
| 4145 | 4446 | UINT8 *ROM = memory_region(machine, "audiocpu"); |
| 4146 | 4447 | UINT8 *buffer; |
| 4147 | | UINT8 *src = memory_region(machine, "gfx1"); |
| 4148 | | int len = memory_region_length(machine, "gfx1"); |
| 4448 | UINT8 *src = memory_region(machine, "sprites"); |
| 4449 | int len = memory_region_length(machine, "sprites"); |
| 4149 | 4450 | |
| 4150 | 4451 | init_cave(machine); |
| 4151 | 4452 | |
| r7640 | r7641 | |
| 4162 | 4463 | auto_free(machine, buffer); |
| 4163 | 4464 | } |
| 4164 | 4465 | |
| 4165 | | sailormn_unpack_tiles( machine, "gfx4" ); |
| 4466 | sailormn_unpack_tiles( machine, "layer2" ); |
| 4166 | 4467 | |
| 4167 | | state->region_byte = 0x11; |
| 4168 | | |
| 4169 | 4468 | unpack_sprites(machine); |
| 4170 | 4469 | state->spritetype[0] = 2; // Normal sprites with different position handling |
| 4171 | 4470 | state->kludge = 1; |
| r7640 | r7641 | |
| 4175 | 4474 | state_save_register_global(machine, state->sailormn_tilebank); |
| 4176 | 4475 | } |
| 4177 | 4476 | |
| 4477 | static DRIVER_INIT( tjumpman ) |
| 4478 | { |
| 4479 | cave_state *state = (cave_state *)machine->driver_data; |
| 4480 | init_cave(machine); |
| 4481 | |
| 4482 | unpack_sprites(machine); |
| 4483 | state->spritetype[0] = 2; // Normal sprites with different position handling |
| 4484 | state->kludge = 3; |
| 4485 | state->time_vblank_irq = 17376; |
| 4486 | |
| 4487 | state->hopper = 0; |
| 4488 | state_save_register_global(machine, state->hopper); |
| 4489 | } |
| 4490 | |
| 4178 | 4491 | static DRIVER_INIT( uopoko ) |
| 4179 | 4492 | { |
| 4180 | 4493 | cave_state *state = (cave_state *)machine->driver_data; |
| 4181 | 4494 | init_cave(machine); |
| 4182 | 4495 | |
| 4183 | | state->region_byte = -1; |
| 4184 | | |
| 4185 | 4496 | unpack_sprites(machine); |
| 4186 | 4497 | state->kludge = 2; |
| 4187 | 4498 | state->time_vblank_irq = 2000; /**/ |
| r7640 | r7641 | |
| 4212 | 4523 | |
| 4213 | 4524 | ***************************************************************************/ |
| 4214 | 4525 | |
| 4215 | | GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, pwrinst2, ROT0, "Atlus/Cave", "Power Instinct 2 (US, Ver. 94/04/08)" , 0 ) |
| 4216 | | GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, pwrinst2j,ROT0, "Atlus/Cave", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)" , 0 ) |
| 4217 | | GAME( 1994, mazinger, 0, mazinger, mazinger, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z (International/Japan)" , 0 ) // region in eeprom |
| 4218 | | GAME( 1995, donpachi, 0, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (US)" , 0 ) |
| 4219 | | GAME( 1995, donpachij, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Japan)" , 0 ) |
| 4220 | | GAME( 1995, donpachikr, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Korea)" , 0 ) |
| 4221 | | GAME( 1995, donpachihk, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Hong Kong)" , 0 ) |
| 4222 | | GAME( 1995, metmqstr, 0, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Metamoqester (International)" , 0 ) |
| 4223 | | GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Oni - The Ninja Master (Japan)" , 0 ) |
| 4224 | | GAME( 1995, plegends, 0, pwrinst2, metmqstr, pwrinst2j,ROT0, "Atlus/Cave", "Power Instinct Legends (US, Ver. 95/06/20)" , 0 ) |
| 4526 | GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, pwrinst2, ROT0, "Atlus/Cave", "Power Instinct 2 (US, Ver. 94/04/08)", 0 ) |
| 4527 | GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, pwrinst2j,ROT0, "Atlus/Cave", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)", 0 ) |
| 4528 | |
| 4529 | // The EEPROM determines the region, program roms are the same between sets |
| 4530 | GAME( 1994, mazinger, 0, mazinger, cave, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z (World)", 0 ) |
| 4531 | GAME( 1994, mazingerj, mazinger, mazinger, cave, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z (Japan)", 0 ) |
| 4532 | |
| 4533 | GAME( 1995, donpachi, 0, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (US)", 0 ) |
| 4534 | GAME( 1995, donpachij, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Japan)", 0 ) |
| 4535 | GAME( 1995, donpachikr, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Korea)", 0 ) |
| 4536 | GAME( 1995, donpachihk, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Hong Kong)", 0 ) |
| 4537 | |
| 4538 | GAME( 1995, metmqstr, 0, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Metamoqester (International)", 0 ) |
| 4539 | GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Oni - The Ninja Master (Japan)", 0 ) |
| 4540 | |
| 4541 | GAME( 1995, plegends, 0, pwrinst2, metmqstr, pwrinst2j,ROT0, "Atlus/Cave", "Power Instinct Legends (US, Ver. 95/06/20)", 0 ) |
| 4225 | 4542 | GAME( 1995, plegendsj, plegends, pwrinst2, metmqstr, pwrinst2j,ROT0, "Atlus/Cave", "Gouketsuji Ichizoku Saikyou Densetsu (Japan, Ver. 95/06/20)", 0 ) |
| 4226 | | GAME( 1995, sailormn, 0, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22B)" , 0 ) // region in eeprom |
| 4227 | | GAME( 1995, sailormno, sailormn, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22)" , 0 ) // region in eeprom |
| 4228 | | GAME( 1996, agallet, 0, sailormn, sailormn, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (JUEHTK)" , 0 ) // board was taiwan, region in eeprom |
| 4229 | | GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm (International)" , 0 ) |
| 4230 | | GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (International, Master Ver. 97/02/05)" , 0 ) |
| 4231 | | GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (Japan, Master Ver. 97/02/05)" , 0 ) |
| 4232 | | GAME( 1998, dfeveron, feversos, dfeveron, cave, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)" , 0 ) |
| 4233 | | GAME( 1998, feversos, 0, dfeveron, cave, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)" , 0 ) |
| 4234 | | GAME( 1998, esprade, 0, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (International, Ver. 98/04/22)" , 0 ) |
| 4235 | | GAME( 1998, espradej, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/21)" , 0 ) |
| 4236 | | GAME( 1998, espradejo, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/14)" , 0 ) |
| 4237 | | GAME( 1998, uopoko, 0, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)" , 0 ) |
| 4238 | | GAME( 1998, uopokoj, uopoko, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)" , 0 ) |
| 4239 | | GAME( 1999, guwange, 0, guwange, guwange, guwange, ROT270, "Atlus/Cave", "Guwange (Japan, Master Ver. 99/06/24)" , 0 ) |
| 4240 | | GAME( 1999, gaia, 0, gaia, gaia, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_IMPERFECT_SOUND ) // cuts out occasionally |
| 4241 | | GAME( 2001, theroes, 0, gaia, theroes, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_IMPERFECT_SOUND ) // cuts out occasionally |
| 4242 | 4543 | |
| 4243 | | GAME( 1999, korokoro, 0, korokoro, korokoro, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)" , 0 ) |
| 4544 | // The EEPROM determines the region, program roms are the same between sets |
| 4545 | GAME( 1995, sailormn, 0, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Europe)", 0 ) |
| 4546 | GAME( 1995, sailormnu, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, USA)", 0 ) |
| 4547 | GAME( 1995, sailormnj, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Japan)", 0 ) |
| 4548 | GAME( 1995, sailormnk, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Korea)", 0 ) |
| 4549 | GAME( 1995, sailormnt, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Taiwan)", 0 ) |
| 4550 | GAME( 1995, sailormnh, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Hong Kong)", 0 ) |
| 4551 | GAME( 1995, sailormno, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Europe)", 0 ) |
| 4552 | GAME( 1995, sailormnou, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22, USA)", 0 ) |
| 4553 | GAME( 1995, sailormnoj, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Japan)", 0 ) |
| 4554 | GAME( 1995, sailormnok, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Korea)", 0 ) |
| 4555 | GAME( 1995, sailormnot, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Taiwan)", 0 ) |
| 4556 | GAME( 1995, sailormnoh, sailormn, sailormn, cave, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Hong Kong)" , 0 ) |
| 4557 | |
| 4558 | // The EEPROM determines the region, program roms are the same between sets |
| 4559 | GAME( 1996, agallet, 0, sailormn, cave, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (Europe)", 0 ) |
| 4560 | GAME( 1996, agalletu, agallet, sailormn, cave, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (USA)", 0 ) |
| 4561 | GAME( 1996, agalletj, agallet, sailormn, cave, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (Japan)", 0 ) |
| 4562 | GAME( 1996, agalletk, agallet, sailormn, cave, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (Korea)", 0 ) |
| 4563 | GAME( 1996, agallett, agallet, sailormn, cave, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (Taiwan)", 0 ) |
| 4564 | GAME( 1996, agalleth, agallet, sailormn, cave, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (Hong Kong)", 0 ) |
| 4565 | |
| 4566 | GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm (International)", 0 ) |
| 4567 | |
| 4568 | GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (International, Master Ver. 97/02/05)", 0 ) |
| 4569 | GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (Japan, Master Ver. 97/02/05)", 0 ) |
| 4570 | |
| 4571 | GAME( 1998, dfeveron, feversos, dfeveron, cave, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", 0 ) |
| 4572 | GAME( 1998, feversos, 0, dfeveron, cave, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", 0 ) |
| 4573 | |
| 4574 | GAME( 1998, esprade, 0, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (International, Ver. 98/04/22)", 0 ) |
| 4575 | GAME( 1998, espradej, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/21)", 0 ) |
| 4576 | GAME( 1998, espradejo, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/14)", 0 ) |
| 4577 | |
| 4578 | GAME( 1998, uopoko, 0, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)", 0 ) |
| 4579 | GAME( 1998, uopokoj, uopoko, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)", 0 ) |
| 4580 | |
| 4581 | GAME( 1999, guwange, 0, guwange, guwange, guwange, ROT270, "Atlus/Cave", "Guwange (Japan, Master Ver. 99/06/24)", 0 ) |
| 4582 | |
| 4583 | GAME( 1999, gaia, 0, gaia, gaia, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_IMPERFECT_SOUND ) // cuts out occasionally |
| 4584 | |
| 4585 | GAME( 2001, theroes, 0, gaia, theroes, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_IMPERFECT_SOUND ) // cuts out occasionally |
| 4586 | |
| 4587 | GAME( 1999, korokoro, 0, korokoro, korokoro, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)", 0 ) |
| 4588 | |
| 4589 | GAME( 1999, crusherm, 0, crusherm, korokoro, korokoro, ROT0, "Takumi", "Crusher Makochan (Japan)", 0 ) |
| 4590 | |
| 4591 | GAME( 1999, tjumpman, 0, tjumpman, tjumpman, tjumpman, ROT0, "Namco", "Tobikose! Jumpman", 0 ) |