212
212
---- --1- Coin #1 Counter
213
213
---- ---0 Coin #0 Counter */
215
void seta_coin_lockout_w(running_machine *machine, int data)
215
void seta_coin_lockout_w(running_machine &machine, int data)
217
seta_state *state = machine->driver_data<seta_state>();
217
seta_state *state = machine.driver_data<seta_state>();
218
218
static const char *const seta_nolockout[8] = { "blandia", "gundhara", "kamenrid", "zingzip", "eightfrc", "extdwnhl", "sokonuke", "zombraid"};
220
220
/* Only compute seta_coin_lockout when confronted with a new gamedrv */
221
if (state->driver != machine->gamedrv)
221
if (!state->m_coin_lockout_initialized)
223
state->m_coin_lockout_initialized = true;
224
state->driver = machine->gamedrv;
226
state->coin_lockout = 1;
226
state->m_coin_lockout = 1;
227
227
for (i=0; i<ARRAY_LENGTH(seta_nolockout); i++)
229
if (strcmp(state->driver->name, seta_nolockout[i]) == 0 ||
230
strcmp(state->driver->parent, seta_nolockout[i]) == 0)
229
if (strcmp(machine.system().name, seta_nolockout[i]) == 0 ||
230
strcmp(machine.system().parent, seta_nolockout[i]) == 0)
232
state->coin_lockout = 0;
232
state->m_coin_lockout = 0;
375
375
static TILE_GET_INFO( twineagl_get_tile_info_1 ) { twineagl_tile_info( machine, tileinfo, tile_index, 0x1000 ); }
378
INLINE void get_tile_info( running_machine *machine, tile_data *tileinfo, int tile_index, int layer, int offset )
378
INLINE void get_tile_info( running_machine &machine, tile_data *tileinfo, int tile_index, int layer, int offset )
380
seta_state *state = machine->driver_data<seta_state>();
380
seta_state *state = machine.driver_data<seta_state>();
381
381
int gfx = 1 + layer;
382
UINT16 *vram = (layer == 0) ? state->vram_0 + offset : state->vram_2 + offset;
383
UINT16 *vctrl = (layer == 0) ? state->vctrl_0 : state->vctrl_2;
382
UINT16 *vram = (layer == 0) ? state->m_vram_0 + offset : state->m_vram_2 + offset;
383
UINT16 *vctrl = (layer == 0) ? state->m_vctrl_0 : state->m_vctrl_2;
384
384
UINT16 code = vram[ tile_index ];
385
385
UINT16 attr = vram[ tile_index + 0x800 ];
387
if(machine->gfx[gfx + ((vctrl[ 4/2 ] & 0x10) >> state->color_mode_shift)] != NULL)
387
if(machine.gfx[gfx + ((vctrl[ 4/2 ] & 0x10) >> state->m_color_mode_shift)] != NULL)
389
gfx += (vctrl[ 4/2 ] & 0x10) >> state->color_mode_shift;
389
gfx += (vctrl[ 4/2 ] & 0x10) >> state->m_color_mode_shift;
393
393
popmessage("Missing Color Mode = 1 for Layer = %d. Contact MAMETesters.",layer);
396
SET_TILE_INFO( gfx, state->tiles_offset + (code & 0x3fff), attr & 0x1f, TILE_FLIPXY((code & 0xc000) >> 14) );
396
SET_TILE_INFO( gfx, state->m_tiles_offset + (code & 0x3fff), attr & 0x1f, TILE_FLIPXY((code & 0xc000) >> 14) );
399
399
static TILE_GET_INFO( get_tile_info_0 ) { get_tile_info( machine, tileinfo, tile_index, 0, 0x0000 ); }
405
405
WRITE16_HANDLER( seta_vram_0_w )
407
seta_state *state = space->machine->driver_data<seta_state>();
407
seta_state *state = space->machine().driver_data<seta_state>();
409
COMBINE_DATA(&state->vram_0[offset]);
409
COMBINE_DATA(&state->m_vram_0[offset]);
410
410
if (offset & 0x1000)
411
tilemap_mark_tile_dirty(state->tilemap_1, offset & 0x7ff);
411
tilemap_mark_tile_dirty(state->m_tilemap_1, offset & 0x7ff);
413
tilemap_mark_tile_dirty(state->tilemap_0, offset & 0x7ff);
413
tilemap_mark_tile_dirty(state->m_tilemap_0, offset & 0x7ff);
416
416
WRITE16_HANDLER( seta_vram_2_w )
418
seta_state *state = space->machine->driver_data<seta_state>();
418
seta_state *state = space->machine().driver_data<seta_state>();
420
COMBINE_DATA(&state->vram_2[offset]);
420
COMBINE_DATA(&state->m_vram_2[offset]);
421
421
if (offset & 0x1000)
422
tilemap_mark_tile_dirty(state->tilemap_3, offset & 0x7ff);
422
tilemap_mark_tile_dirty(state->m_tilemap_3, offset & 0x7ff);
424
tilemap_mark_tile_dirty(state->tilemap_2, offset & 0x7ff);
424
tilemap_mark_tile_dirty(state->m_tilemap_2, offset & 0x7ff);
427
427
WRITE16_HANDLER( twineagl_tilebank_w )
429
429
if (ACCESSING_BITS_0_7)
431
seta_state *state = space->machine->driver_data<seta_state>();
431
seta_state *state = space->machine().driver_data<seta_state>();
433
if (state->twineagl_tilebank[offset] != data)
433
if (state->m_twineagl_tilebank[offset] != data)
435
state->twineagl_tilebank[offset] = data;
436
tilemap_mark_all_tiles_dirty_all(space->machine);
435
state->m_twineagl_tilebank[offset] = data;
436
tilemap_mark_all_tiles_dirty_all(space->machine());
451
451
at any given time */
454
state->tilemap_0 = tilemap_create( machine, get_tile_info_0, tilemap_scan_rows,
454
state->m_tilemap_0 = tilemap_create( machine, get_tile_info_0, tilemap_scan_rows,
457
state->tilemap_1 = tilemap_create( machine, get_tile_info_1, tilemap_scan_rows,
457
state->m_tilemap_1 = tilemap_create( machine, get_tile_info_1, tilemap_scan_rows,
462
state->tilemap_2 = tilemap_create( machine, get_tile_info_2, tilemap_scan_rows,
465
state->tilemap_3 = tilemap_create( machine, get_tile_info_3, tilemap_scan_rows,
468
state->tilemaps_flip = 0;
469
state->color_mode_shift = 3;
471
tilemap_set_transparent_pen(state->tilemap_0, 0);
472
tilemap_set_transparent_pen(state->tilemap_1, 0);
473
tilemap_set_transparent_pen(state->tilemap_2, 0);
474
tilemap_set_transparent_pen(state->tilemap_3, 0);
462
state->m_tilemap_2 = tilemap_create( machine, get_tile_info_2, tilemap_scan_rows,
465
state->m_tilemap_3 = tilemap_create( machine, get_tile_info_3, tilemap_scan_rows,
468
state->m_tilemaps_flip = 0;
469
state->m_color_mode_shift = 3;
471
tilemap_set_transparent_pen(state->m_tilemap_0, 0);
472
tilemap_set_transparent_pen(state->m_tilemap_1, 0);
473
tilemap_set_transparent_pen(state->m_tilemap_2, 0);
474
tilemap_set_transparent_pen(state->m_tilemap_3, 0);
479
479
VIDEO_START( seta_1_layer )
481
seta_state *state = machine->driver_data<seta_state>();
481
seta_state *state = machine.driver_data<seta_state>();
483
483
VIDEO_START_CALL( seta_no_layers );
508
508
at any given time */
511
state->tilemap_0 = tilemap_create( machine, twineagl_get_tile_info_0, tilemap_scan_rows,
514
state->tilemap_1 = tilemap_create( machine, twineagl_get_tile_info_1, tilemap_scan_rows,
517
tilemap_set_transparent_pen(state->tilemap_0, 0);
518
tilemap_set_transparent_pen(state->tilemap_1, 0);
511
state->m_tilemap_0 = tilemap_create( machine, twineagl_get_tile_info_0, tilemap_scan_rows,
514
state->m_tilemap_1 = tilemap_create( machine, twineagl_get_tile_info_1, tilemap_scan_rows,
517
tilemap_set_transparent_pen(state->m_tilemap_0, 0);
518
tilemap_set_transparent_pen(state->m_tilemap_1, 0);
522
522
/* NO layers, only sprites */
523
523
VIDEO_START( seta_no_layers )
525
seta_state *state = machine->driver_data<seta_state>();
527
state->tilemap_0 = 0;
528
state->tilemap_1 = 0;
529
state->tilemap_2 = 0;
530
state->tilemap_3 = 0;
532
state->tilemaps_flip = 0;
534
state->global_offsets = game_offsets;
535
while (state->global_offsets->gamename && strcmp(machine->gamedrv->name, state->global_offsets->gamename))
536
state->global_offsets++;
537
state->samples_bank = -1; // set the samples bank to an out of range value at start-up
525
seta_state *state = machine.driver_data<seta_state>();
527
state->m_tilemap_0 = 0;
528
state->m_tilemap_1 = 0;
529
state->m_tilemap_2 = 0;
530
state->m_tilemap_3 = 0;
532
state->m_tilemaps_flip = 0;
534
state->m_global_offsets = game_offsets;
535
while (state->m_global_offsets->gamename && strcmp(machine.system().name, state->m_global_offsets->gamename))
536
state->m_global_offsets++;
537
state->m_samples_bank = -1; // set the samples bank to an out of range value at start-up
540
540
VIDEO_START( oisipuzl_2_layers )
542
seta_state *state = machine->driver_data<seta_state>();
542
seta_state *state = machine.driver_data<seta_state>();
544
544
VIDEO_START_CALL(seta_2_layers);
545
state->tilemaps_flip = 1;
545
state->m_tilemaps_flip = 1;
567
567
/* allocate the colortable */
568
machine->colortable = colortable_alloc(machine, 0x600);
568
machine.colortable = colortable_alloc(machine, 0x600*2);
570
570
for (color = 0; color < 0x20; color++)
571
572
for (pen = 0; pen < 0x40; pen++)
574
colortable_entry_set_value(machine->colortable, 0x0200 + ((color << 6) | pen), 0x200 + ((color << 4) | (pen & 0x0f)));
575
colortable_entry_set_value(machine->colortable, 0x1200 + ((color << 6) | pen), 0x200 + pen);
575
colortable_entry_set_value(machine.colortable, 0x0200 + ((color << 6) | pen), 0x200 + ((color << 4) | (pen & 0x0f)));
576
colortable_entry_set_value(machine.colortable, 0x1200 + ((color << 6) | pen), 0x200 + pen);
578
colortable_entry_set_value(machine->colortable, 0x0a00 + ((color << 6) | pen), 0x400 + ((color << 4) | (pen & 0x0f)));
579
colortable_entry_set_value(machine->colortable, 0x1a00 + ((color << 6) | pen), 0x400 + pen);
579
colortable_entry_set_value(machine.colortable, 0x0a00 + ((color << 6) | pen), 0x400 + ((color << 4) | (pen & 0x0f)));
580
colortable_entry_set_value(machine.colortable, 0x1a00 + ((color << 6) | pen), 0x400 + pen);
584
// setup the colortable for the effect palette.
585
// what are used for palette from 0x800 to 0xBFF?
586
for(int i = 0; i < 0x2200; i++)
588
colortable_entry_set_value(machine.colortable, 0x2200 + i, 0x600 + (i & 0x1ff));
591
600
/* allocate the colortable */
592
machine->colortable = colortable_alloc(machine, 0x600);
601
machine.colortable = colortable_alloc(machine, 0x600);
594
603
for (color = 0; color < 0x20; color++)
595
604
for (pen = 0; pen < 0x40; pen++)
597
colortable_entry_set_value(machine->colortable, 0x0200 + ((color << 6) | pen), 0x400 + pen); // untested
598
colortable_entry_set_value(machine->colortable, 0x1200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
606
colortable_entry_set_value(machine.colortable, 0x0200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
607
colortable_entry_set_value(machine.colortable, 0x1200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
600
colortable_entry_set_value(machine->colortable, 0x0a00 + ((color << 6) | pen), 0x200 + pen); // untested
601
colortable_entry_set_value(machine->colortable, 0x1a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
609
colortable_entry_set_value(machine.colortable, 0x0a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
610
colortable_entry_set_value(machine.colortable, 0x1a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
612
621
/* allocate the colortable */
613
machine->colortable = colortable_alloc(machine, 0x600);
622
machine.colortable = colortable_alloc(machine, 0x600);
615
624
for (color = 0; color < 0x20; color++)
616
625
for (pen = 0; pen < 0x40; pen++)
618
colortable_entry_set_value(machine->colortable, 0x0200 + ((color << 6) | pen), 0x400 + pen); // untested
619
colortable_entry_set_value(machine->colortable, 0x1200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
627
colortable_entry_set_value(machine.colortable, 0x0200 + ((color << 6) | pen), 0x400 + (((color << 4) + pen) & 0x1ff)); // used by madshark
628
colortable_entry_set_value(machine.colortable, 0x1200 + ((color << 6) | pen), 0x400 + (((color << 4) + pen) & 0x1ff));
621
colortable_entry_set_value(machine->colortable, 0x0a00 + ((color << 6) | pen), 0x200 + pen); // untested
622
colortable_entry_set_value(machine->colortable, 0x1a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
630
colortable_entry_set_value(machine.colortable, 0x0a00 + ((color << 6) | pen), 0x200 + (((color << 4) + pen) & 0x1ff)); // used by madshark
631
colortable_entry_set_value(machine.colortable, 0x1a00 + ((color << 6) | pen), 0x200 + (((color << 4) + pen) & 0x1ff));
675
684
rgb_t color = MAKE_RGB(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
678
colortable_palette_set_color(machine->colortable, x + 0x000, color);
687
colortable_palette_set_color(machine.colortable, x + 0x000, color);
680
colortable_palette_set_color(machine->colortable, x + 0x300, color);
689
colortable_palette_set_color(machine.colortable, x + 0x300, color);
683
692
for (color = 0; color < 0x20; color++)
684
693
for (pen = 0; pen < 0x40; pen++)
686
colortable_entry_set_value(machine->colortable, 0x200 + ((color << 6) | pen), 0x200 + pen); // untested
687
colortable_entry_set_value(machine->colortable, 0xa00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
695
colortable_entry_set_value(machine.colortable, 0x200 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
696
colortable_entry_set_value(machine.colortable, 0xa00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
692
static void set_pens(running_machine *machine)
701
static void set_pens(running_machine &machine)
694
seta_state *state = machine->driver_data<seta_state>();
703
seta_state *state = machine.driver_data<seta_state>();
697
for (i = 0; i < state->paletteram_size / 2; i++)
706
for (i = 0; i < state->m_paletteram_size / 2; i++)
699
UINT16 data = state->paletteram[i];
708
UINT16 data = state->m_paletteram[i];
701
710
rgb_t color = MAKE_RGB(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
703
if (machine->colortable != NULL)
704
colortable_palette_set_color(machine->colortable, i, color);
712
if (machine.colortable != NULL)
713
colortable_palette_set_color(machine.colortable, i, color);
706
715
palette_set_color(machine, i, color);
718
if(state->m_paletteram2 != NULL)
720
for (i = 0; i < state->m_paletteram2_size / 2; i++)
722
UINT16 data = state->m_paletteram2[i];
724
rgb_t color = MAKE_RGB(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
726
if (machine.colortable != NULL)
727
colortable_palette_set_color(machine.colortable, i + state->m_paletteram_size / 2, color);
729
palette_set_color(machine, i + state->m_paletteram_size / 2, color);
711
static void usclssic_set_pens(running_machine *machine)
735
static void usclssic_set_pens(running_machine &machine)
713
seta_state *state = machine->driver_data<seta_state>();
737
seta_state *state = machine.driver_data<seta_state>();
716
740
for (i = 0; i < 0x200; i++)
718
UINT16 data = state->paletteram[i];
742
UINT16 data = state->m_paletteram[i];
720
744
rgb_t color = MAKE_RGB(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
723
colortable_palette_set_color(machine->colortable, i - 0x100, color);
747
colortable_palette_set_color(machine.colortable, i - 0x100, color);
725
colortable_palette_set_color(machine->colortable, i + 0x200, color);
749
colortable_palette_set_color(machine.colortable, i + 0x200, color);
928
static void draw_tilemap_palette_effect(running_machine &machine, bitmap_t *bitmap, const rectangle *cliprect, tilemap_t *tilemap, int scrollx, int scrolly, int gfxnum, int flipscreen)
931
const gfx_element *gfx_tilemap = machine.gfx[gfxnum];
932
const bitmap_t *src_bitmap = tilemap_get_pixmap(tilemap);
933
int width_mask, height_mask;
934
int opaque_mask = gfx_tilemap->color_granularity - 1;
935
int pixel_effect_mask = gfx_tilemap->color_base + (gfx_tilemap->total_colors - 1) * gfx_tilemap->color_granularity;
938
width_mask = src_bitmap->width - 1;
939
height_mask = src_bitmap->height - 1;
941
for (y = cliprect->min_y; y <= cliprect->max_y; y++)
943
UINT16 *dest = BITMAP_ADDR16(bitmap, y, 0);
946
for (x = cliprect->min_x; x <= cliprect->max_x; x++)
950
p = *BITMAP_ADDR16(src_bitmap, (y + scrolly) & height_mask, (x + scrollx) & width_mask);
954
p = *BITMAP_ADDR16(src_bitmap, (y - scrolly - 256) & height_mask, (x - scrollx - 512) & width_mask);
957
// draw not transparent pixels
960
// pixels with the last color are not drawn and the 2nd palette is added to the current bitmap color
961
if((p & pixel_effect_mask) == pixel_effect_mask)
963
dest[x] = machine.total_colors() / 2 + dest[x];
967
dest[x] = machine.pens[p];
914
982
***************************************************************************/
916
984
/* For games without tilemaps */
917
VIDEO_UPDATE( seta_no_layers )
985
SCREEN_UPDATE( seta_no_layers )
919
set_pens(screen->machine);
987
set_pens(screen->machine());
920
988
bitmap_fill(bitmap,cliprect,0x1f0);
921
draw_sprites(screen->machine,bitmap,cliprect);
989
draw_sprites(screen->machine(),bitmap,cliprect);
926
994
/* For games with 1 or 2 tilemaps */
927
static VIDEO_UPDATE( seta_layers )
995
static SCREEN_UPDATE( seta_layers )
929
seta_state *state = screen->machine->driver_data<seta_state>();
997
seta_state *state = screen->machine().driver_data<seta_state>();
930
998
int layers_ctrl = -1;
931
int enab_0, enab_1, x_0, x_1, y_0, y_1;
999
int enab_0, enab_1, x_0, x_1=0, y_0, y_1=0;
934
int flip = (state->spriteram[ 0x600/2 ] & 0x40) >> 6;
1002
int flip = (state->m_spriteram[ 0x600/2 ] & 0x40) >> 6;
936
1004
const rectangle &visarea = screen->visible_area();
937
1005
int vis_dimy = visarea.max_y - visarea.min_y + 1;
940
1007
// check tilemaps color modes
942
if(state->current_tilemap_mode[0] != (state->vctrl_0[ 4/2 ] & 0x10))
1009
if(state->m_current_tilemap_mode[0] != (state->m_vctrl_0[ 4/2 ] & 0x10))
944
state->current_tilemap_mode[0] = state->vctrl_0[ 4/2 ] & 0x10;
945
tilemap_mark_all_tiles_dirty(state->tilemap_0);
946
tilemap_mark_all_tiles_dirty(state->tilemap_1);
1011
state->m_current_tilemap_mode[0] = state->m_vctrl_0[ 4/2 ] & 0x10;
1012
tilemap_mark_all_tiles_dirty(state->m_tilemap_0);
1013
tilemap_mark_all_tiles_dirty(state->m_tilemap_1);
949
if(state->tilemap_2 != NULL && state->tilemap_3 != NULL)
1016
if(state->m_tilemap_2 != NULL && state->m_tilemap_3 != NULL)
951
if(state->current_tilemap_mode[1] != (state->vctrl_2[ 4/2 ] & 0x10))
1018
if(state->m_current_tilemap_mode[1] != (state->m_vctrl_2[ 4/2 ] & 0x10))
953
state->current_tilemap_mode[1] = state->vctrl_2[ 4/2 ] & 0x10;
954
tilemap_mark_all_tiles_dirty(state->tilemap_2);
955
tilemap_mark_all_tiles_dirty(state->tilemap_3);
1020
state->m_current_tilemap_mode[1] = state->m_vctrl_2[ 4/2 ] & 0x10;
1021
tilemap_mark_all_tiles_dirty(state->m_tilemap_2);
1022
tilemap_mark_all_tiles_dirty(state->m_tilemap_3);
959
flip ^= state->tilemaps_flip;
961
tilemap_set_flip_all(screen->machine, flip ? (TILEMAP_FLIPX|TILEMAP_FLIPY) : 0 );
963
x_0 = state->vctrl_0[ 0/2 ];
964
y_0 = state->vctrl_0[ 2/2 ];
965
enab_0 = state->vctrl_0[ 4/2 ];
1026
flip ^= state->m_tilemaps_flip;
1028
tilemap_set_flip_all(screen->machine(), flip ? (TILEMAP_FLIPX|TILEMAP_FLIPY) : 0 );
1030
x_0 = state->m_vctrl_0[ 0/2 ];
1031
y_0 = state->m_vctrl_0[ 2/2 ];
1032
enab_0 = state->m_vctrl_0[ 4/2 ];
967
1034
/* Only one tilemap per layer is enabled! */
968
tilemap_set_enable(state->tilemap_0, (!(enab_0 & 0x0008)) /*&& (enab_0 & 0x0001)*/ );
969
tilemap_set_enable(state->tilemap_1, ( (enab_0 & 0x0008)) /*&& (enab_0 & 0x0001)*/ );
1035
tilemap_set_enable(state->m_tilemap_0, (!(enab_0 & 0x0008)) /*&& (enab_0 & 0x0001)*/ );
1036
tilemap_set_enable(state->m_tilemap_1, ( (enab_0 & 0x0008)) /*&& (enab_0 & 0x0001)*/ );
971
1038
/* the hardware wants different scroll values when flipped */
984
1051
y_0 = y_0 - vis_dimy;
987
tilemap_set_scrollx(state->tilemap_0, 0, x_0);
988
tilemap_set_scrollx(state->tilemap_1, 0, x_0);
989
tilemap_set_scrolly(state->tilemap_0, 0, y_0);
990
tilemap_set_scrolly(state->tilemap_1, 0, y_0);
1054
tilemap_set_scrollx(state->m_tilemap_0, 0, x_0);
1055
tilemap_set_scrollx(state->m_tilemap_1, 0, x_0);
1056
tilemap_set_scrolly(state->m_tilemap_0, 0, y_0);
1057
tilemap_set_scrolly(state->m_tilemap_1, 0, y_0);
992
if (state->tilemap_2)
1059
if (state->m_tilemap_2)
994
x_1 = state->vctrl_2[ 0/2 ];
995
y_1 = state->vctrl_2[ 2/2 ];
996
enab_1 = state->vctrl_2[ 4/2 ];
998
tilemap_set_enable(state->tilemap_2, (!(enab_1 & 0x0008)) /*&& (enab_1 & 0x0001)*/ );
999
tilemap_set_enable(state->tilemap_3, ( (enab_1 & 0x0008)) /*&& (enab_1 & 0x0001)*/ );
1001
x_1 += 0x10 - state->global_offsets->tilemap_offs[flip ? 1 : 0];
1061
x_1 = state->m_vctrl_2[ 0/2 ];
1062
y_1 = state->m_vctrl_2[ 2/2 ];
1063
enab_1 = state->m_vctrl_2[ 4/2 ];
1065
tilemap_set_enable(state->m_tilemap_2, (!(enab_1 & 0x0008)) /*&& (enab_1 & 0x0001)*/ );
1066
tilemap_set_enable(state->m_tilemap_3, ( (enab_1 & 0x0008)) /*&& (enab_1 & 0x0001)*/ );
1068
x_1 += 0x10 - state->m_global_offsets->tilemap_offs[flip ? 1 : 0];
1002
1069
y_1 -= (256 - vis_dimy)/2;
1006
1073
y_1 = y_1 - vis_dimy;
1009
tilemap_set_scrollx(state->tilemap_2, 0, x_1);
1010
tilemap_set_scrollx(state->tilemap_3, 0, x_1);
1011
tilemap_set_scrolly(state->tilemap_2, 0, y_1);
1012
tilemap_set_scrolly(state->tilemap_3, 0, y_1);
1076
tilemap_set_scrollx(state->m_tilemap_2, 0, x_1);
1077
tilemap_set_scrollx(state->m_tilemap_3, 0, x_1);
1078
tilemap_set_scrolly(state->m_tilemap_2, 0, y_1);
1079
tilemap_set_scrolly(state->m_tilemap_3, 0, y_1);
1014
order = state->vregs[ 2/2 ];
1081
order = state->m_vregs[ 2/2 ];
1018
1085
#ifdef MAME_DEBUG
1019
if (input_code_pressed(screen->machine, KEYCODE_Z))
1086
if (input_code_pressed(screen->machine(), KEYCODE_Z))
1021
if (input_code_pressed(screen->machine, KEYCODE_Q)) msk |= 1;
1022
if (input_code_pressed(screen->machine, KEYCODE_W)) msk |= 2;
1023
if (input_code_pressed(screen->machine, KEYCODE_A)) msk |= 8;
1088
if (input_code_pressed(screen->machine(), KEYCODE_Q)) msk |= 1;
1089
if (input_code_pressed(screen->machine(), KEYCODE_W)) msk |= 2;
1090
if (input_code_pressed(screen->machine(), KEYCODE_A)) msk |= 8;
1024
1091
if (msk != 0) layers_ctrl &= msk;
1026
if (state->tilemap_2)
1093
if (state->m_tilemap_2)
1027
1094
popmessage("VR:%04X-%04X-%04X L0:%04X L1:%04X",
1028
state->vregs[0], state->vregs[1], state->vregs[2], state->vctrl_0[4/2], state->vctrl_2[4/2]);
1029
else if (state->tilemap_0) popmessage("L0:%04X", state->vctrl_0[4/2]);
1095
state->m_vregs[0], state->m_vregs[1], state->m_vregs[2], state->m_vctrl_0[4/2], state->m_vctrl_2[4/2]);
1096
else if (state->m_tilemap_0) popmessage("L0:%04X", state->m_vctrl_0[4/2]);
1035
1102
if (order & 1) // swap the layers?
1037
if (state->tilemap_2)
1104
if (state->m_tilemap_2)
1039
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->tilemap_2, TILEMAP_DRAW_OPAQUE, 0);
1040
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->tilemap_3, TILEMAP_DRAW_OPAQUE, 0);
1106
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_2, TILEMAP_DRAW_OPAQUE, 0);
1107
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_3, TILEMAP_DRAW_OPAQUE, 0);
1043
1110
if (order & 2) // layer-sprite priority?
1045
if (layers_ctrl & 8) draw_sprites(screen->machine,bitmap,cliprect);
1046
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->tilemap_0, 0, 0);
1047
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->tilemap_1, 0, 0);
1112
if (layers_ctrl & 8) draw_sprites(screen->machine(),bitmap,cliprect);
1116
popmessage("Missing palette effect. Contact MAMETesters.");
1119
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_0, 0, 0);
1120
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_1, 0, 0);
1051
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->tilemap_0, 0, 0);
1052
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->tilemap_1, 0, 0);
1053
if (layers_ctrl & 8) draw_sprites(screen->machine, bitmap,cliprect);
1126
popmessage("Missing palette effect. Contact MAMETesters.");
1129
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_0, 0, 0);
1130
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_1, 0, 0);
1132
if (layers_ctrl & 8) draw_sprites(screen->machine(), bitmap,cliprect);
1058
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->tilemap_0, TILEMAP_DRAW_OPAQUE, 0);
1059
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->tilemap_1, TILEMAP_DRAW_OPAQUE, 0);
1137
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_0, TILEMAP_DRAW_OPAQUE, 0);
1138
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_1, TILEMAP_DRAW_OPAQUE, 0);
1061
1140
if (order & 2) // layer-sprite priority?
1063
if (layers_ctrl & 8) draw_sprites(screen->machine, bitmap,cliprect);
1065
if (state->tilemap_2)
1067
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->tilemap_2, 0, 0);
1068
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->tilemap_3, 0, 0);
1142
if (layers_ctrl & 8) draw_sprites(screen->machine(), bitmap,cliprect);
1144
if((order & 4) && state->m_paletteram2 != NULL)
1146
if(tilemap_get_enable(state->m_tilemap_2))
1148
draw_tilemap_palette_effect(screen->machine(), bitmap, cliprect, state->m_tilemap_2, x_1, y_1, 2 + ((state->m_vctrl_2[ 4/2 ] & 0x10) >> state->m_color_mode_shift), flip);
1152
draw_tilemap_palette_effect(screen->machine(), bitmap, cliprect, state->m_tilemap_3, x_1, y_1, 2 + ((state->m_vctrl_2[ 4/2 ] & 0x10) >> state->m_color_mode_shift), flip);
1159
popmessage("Missing palette effect. Contact MAMETesters.");
1162
if (state->m_tilemap_2)
1164
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_2, 0, 0);
1165
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_3, 0, 0);
1073
if (state->tilemap_2)
1075
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->tilemap_2, 0, 0);
1076
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->tilemap_3, 0, 0);
1079
if (layers_ctrl & 8) draw_sprites(screen->machine, bitmap,cliprect);
1171
if((order & 4) && state->m_paletteram2 != NULL)
1173
if(tilemap_get_enable(state->m_tilemap_2))
1175
draw_tilemap_palette_effect(screen->machine(), bitmap, cliprect, state->m_tilemap_2, x_1, y_1, 2 + ((state->m_vctrl_2[ 4/2 ] & 0x10) >> state->m_color_mode_shift), flip);
1179
draw_tilemap_palette_effect(screen->machine(), bitmap, cliprect, state->m_tilemap_3, x_1, y_1, 2 + ((state->m_vctrl_2[ 4/2 ] & 0x10) >> state->m_color_mode_shift), flip);
1186
popmessage("Missing palette effect. Contact MAMETesters.");
1189
if (state->m_tilemap_2)
1191
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_2, 0, 0);
1192
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_3, 0, 0);
1196
if (layers_ctrl & 8) draw_sprites(screen->machine(), bitmap,cliprect);
1086
VIDEO_UPDATE( seta )
1088
set_pens(screen->machine);
1089
return VIDEO_UPDATE_CALL(seta_layers);
1093
VIDEO_UPDATE( usclssic )
1095
usclssic_set_pens(screen->machine);
1096
return VIDEO_UPDATE_CALL(seta_layers);
1100
VIDEO_UPDATE( inttoote )
1203
SCREEN_UPDATE( seta )
1205
set_pens(screen->machine());
1206
return SCREEN_UPDATE_CALL(seta_layers);
1210
SCREEN_UPDATE( usclssic )
1212
usclssic_set_pens(screen->machine());
1213
return SCREEN_UPDATE_CALL(seta_layers);
1217
SCREEN_UPDATE( inttoote )
1102
1219
/* no palette to set */
1103
return VIDEO_UPDATE_CALL(seta_layers);
1220
return SCREEN_UPDATE_CALL(seta_layers);