Also aligned plain tilemaps too, apparently there are some huge clip issues as well...

-----Messaggio originale-----
Da: David Haywood [mailto:neohaze@nildram.co.uk]
Inviato: lunedì 9 novembre 2009 19.06
A: Angelo Salese
Oggetto: Further improvements

note, eyes may hurt, but it proves the roz / sprites work.

check in please.
This commit is contained in:
Angelo Salese 2009-11-09 18:56:45 +00:00
parent 63c78cd01c
commit c4ad0d37e3
2 changed files with 43 additions and 5 deletions

View File

@ -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

View File

@ -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<height;yy++)
{
UINT16* src = BITMAP_ADDR16(type3_roz_temp_bitmap,yy,0);
UINT32* dst = BITMAP_ADDR32(bitmap,yy,0);
int shiftpos = 30;
for (xx=0;xx<width;xx+=2)
{
dst[xx] = paldata[src[(((xx/2)+shiftpos))%width]];
dst[xx+1] = paldata[src[(((xx/2)+shiftpos))%width]];
}
}
}
}