diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c index deb36e4bab7..a208be2dd7c 100644 --- a/src/mame/drivers/konamigx.c +++ b/src/mame/drivers/konamigx.c @@ -1513,7 +1513,9 @@ static MACHINE_DRIVER_START( gxtype3 ) MDRV_PALETTE_LENGTH(16384) MDRV_SCREEN_MODIFY("screen") MDRV_SCREEN_SIZE(128*8, 32*8) - MDRV_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1) +// MDRV_SCREEN_VISIBLE_AREA(0, 128*8-1, 0, 32*8-1) + MDRV_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16) + MDRV_GFXDECODE(type34) MACHINE_DRIVER_END diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c index 79e8c80bfe4..9ea4834e993 100644 --- a/src/mame/video/konamigx.c +++ b/src/mame/video/konamigx.c @@ -15,6 +15,7 @@ static int gx_tilemode, gx_rozenable, psac_colorbase, last_psac_colorbase; static int gx_specialrozenable; // type 1 roz, with voxel height-map, rendered from 2 source tilemaps (which include height data) to temp bitmap for further processing static tilemap *gx_psac_tilemap, *gx_psac_tilemap2; extern UINT32 *gx_psacram, *gx_subpaletteram32; +static bitmap_t* type3_roz_temp_bitmap; /* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data the 'voxel' effect to give the pixels height is a post-process operation on the @@ -328,8 +329,11 @@ VIDEO_START(konamigx_6bpp) VIDEO_START(konamigx_type3) { - K056832_vh_start(machine, "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 0); - K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -53, -23, konamigx_type2_sprite_callback); + int width = video_screen_get_width(machine->primary_screen); + int height = video_screen_get_height(machine->primary_screen); + + K056832_vh_start(machine, "gfx1", K056832_BPP_6, 1, NULL, konamigx_type2_tile_callback, 0); + K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -132, -24, konamigx_type2_sprite_callback); _gxcommoninitnosprites(machine); @@ -338,10 +342,19 @@ VIDEO_START(konamigx_type3) gx_specialrozenable = 2; + /* set up tile layers */ + type3_roz_temp_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16); + + //tilemap_set_flip(gx_psac_tilemap, TILEMAP_FLIPX| TILEMAP_FLIPY); K053936_wraparound_enable(0, 1); K053936GP_set_offset(0, 0, 0); + + K056832_set_LayerOffset(0, -48, 0); + K056832_set_LayerOffset(1, -48, 0); + K056832_set_LayerOffset(2, -48, 0); + K056832_set_LayerOffset(3, -48, 0); } VIDEO_START(konamigx_type4) @@ -526,10 +539,33 @@ VIDEO_UPDATE(konamigx) // todo: fix so that it works with the mixer without crashing(!) if (gx_specialrozenable == 2) { - if ( input_code_pressed(screen->machine, KEYCODE_W) ) + int xx,yy; + int width = video_screen_get_width(screen); + int height = video_screen_get_height(screen); + const pen_t *paldata = screen->machine->pens; + + //if ( input_code_pressed(screen->machine, KEYCODE_W) ) + // flicker between game and roz tilemap - warning, may hurt eyes + if(video_screen_get_frame_number(screen->machine->primary_screen) & 1) { - K053936_0_zoom_draw(bitmap, cliprect,gx_psac_tilemap, 0,0,0); // soccerss playfield + K053936_0_zoom_draw(type3_roz_temp_bitmap, cliprect,gx_psac_tilemap, 0,0,0); // soccerss playfield + + // the output size of the roz layer has to be doubled horizontally + // so that it aligns with the sprites and normal tilemaps. This appears + // to be done as a post-processing / mixing step effect + for (yy=0;yy