mirror of
https://github.com/holub/mame
synced 2025-06-29 15:38:53 +03:00
hng64 improvements
documented + hooked up 4bpp/8bpp select on layers.
This commit is contained in:
parent
a8583531fd
commit
c25178dfe6
@ -950,6 +950,7 @@ static void draw3d(running_machine *machine, bitmap_t *bitmap, const rectangle *
|
|||||||
/* 8x8x4bpp layer */
|
/* 8x8x4bpp layer */
|
||||||
static TILE_GET_INFO( get_hng64_tile0_info )
|
static TILE_GET_INFO( get_hng64_tile0_info )
|
||||||
{
|
{
|
||||||
|
UINT16 tilemapinfo = (hng64_videoregs[0x02]&0xffff0000)>>16;
|
||||||
int tileno,pal;
|
int tileno,pal;
|
||||||
tileno = hng64_videoram[tile_index];
|
tileno = hng64_videoram[tile_index];
|
||||||
pal = hng64_videoram[tile_index]>>24;
|
pal = hng64_videoram[tile_index]>>24;
|
||||||
@ -961,15 +962,20 @@ static TILE_GET_INFO( get_hng64_tile0_info )
|
|||||||
|
|
||||||
tileno &= 0x1fffff;
|
tileno &= 0x1fffff;
|
||||||
|
|
||||||
|
if (tilemapinfo&0x400)
|
||||||
|
{
|
||||||
|
SET_TILE_INFO(1,tileno>>1,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
SET_TILE_INFO(0,tileno, pal,TILE_FLIPYX((tileno&0xc00000)>>22));
|
SET_TILE_INFO(0,tileno, pal,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
// beast busters requires this (8x8x8)
|
|
||||||
// SET_TILE_INFO(1,(tileno&0x3fffff)>>1,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 16x16 tiles, 8bpp layer */
|
/* 16x16 tiles, 8bpp layer */
|
||||||
static TILE_GET_INFO( get_hng64_tile1_info )
|
static TILE_GET_INFO( get_hng64_tile1_info )
|
||||||
{
|
{
|
||||||
|
UINT16 tilemapinfo = (hng64_videoregs[0x02]&0x0000ffff)>>0;
|
||||||
int tileno,pal;
|
int tileno,pal;
|
||||||
tileno = hng64_videoram[tile_index+(0x10000/4)];
|
tileno = hng64_videoram[tile_index+(0x10000/4)];
|
||||||
pal = hng64_videoram[tile_index+(0x10000/4)]>>24;
|
pal = hng64_videoram[tile_index+(0x10000/4)]>>24;
|
||||||
@ -981,15 +987,20 @@ static TILE_GET_INFO( get_hng64_tile1_info )
|
|||||||
|
|
||||||
tileno &= 0x1fffff;
|
tileno &= 0x1fffff;
|
||||||
|
|
||||||
SET_TILE_INFO(3,tileno>>3,pal>>4, TILE_FLIPYX((tileno&0xc00000)>>22) );
|
if (tilemapinfo&0x400)
|
||||||
|
{
|
||||||
// samurai shodown 64 requires this (16x16x4)
|
SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
//SET_TILE_INFO(2,(tileno&0x3fffff)>>2,pal, TILE_FLIPYX((tileno&0xc00000)>>22) );
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SET_TILE_INFO(2,tileno>>2, pal,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 16x16 tiles, 8bpp layer */
|
/* 16x16 tiles, 8bpp layer */
|
||||||
static TILE_GET_INFO( get_hng64_tile2_info )
|
static TILE_GET_INFO( get_hng64_tile2_info )
|
||||||
{
|
{
|
||||||
|
UINT16 tilemapinfo = (hng64_videoregs[0x03]&0xffff0000)>>16;
|
||||||
int tileno,pal;
|
int tileno,pal;
|
||||||
tileno = hng64_videoram[tile_index+(0x20000/4)];
|
tileno = hng64_videoram[tile_index+(0x20000/4)];
|
||||||
pal = hng64_videoram[tile_index+(0x20000/4)]>>24;
|
pal = hng64_videoram[tile_index+(0x20000/4)]>>24;
|
||||||
@ -1001,15 +1012,21 @@ static TILE_GET_INFO( get_hng64_tile2_info )
|
|||||||
|
|
||||||
tileno &= 0x1fffff;
|
tileno &= 0x1fffff;
|
||||||
|
|
||||||
|
if (tilemapinfo&0x400)
|
||||||
|
{
|
||||||
SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
// samurai shodown 64 2 japan warning reuqires this (16x16x4)
|
else
|
||||||
//SET_TILE_INFO(2,(tileno&0x3fffff)>>2,pal, TILE_FLIPYX((tileno&0xc00000)>>22) );
|
{
|
||||||
|
SET_TILE_INFO(2,tileno>>2, pal,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 16x16 tiles, 8bpp layer */
|
/* 16x16 tiles, 8bpp layer */
|
||||||
static TILE_GET_INFO( get_hng64_tile3_info )
|
static TILE_GET_INFO( get_hng64_tile3_info )
|
||||||
{
|
{
|
||||||
|
UINT16 tilemapinfo = (hng64_videoregs[0x03]&0x0000ffff)>>0;
|
||||||
|
|
||||||
int tileno,pal;
|
int tileno,pal;
|
||||||
tileno = hng64_videoram[tile_index+(0x30000/4)];
|
tileno = hng64_videoram[tile_index+(0x30000/4)];
|
||||||
pal = hng64_videoram[tile_index+(0x30000/4)]>>24;
|
pal = hng64_videoram[tile_index+(0x30000/4)]>>24;
|
||||||
@ -1021,7 +1038,14 @@ static TILE_GET_INFO( get_hng64_tile3_info )
|
|||||||
|
|
||||||
tileno &= 0x1fffff;
|
tileno &= 0x1fffff;
|
||||||
|
|
||||||
|
if (tilemapinfo&0x400)
|
||||||
|
{
|
||||||
SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SET_TILE_INFO(2,tileno>>2, pal,TILE_FLIPYX((tileno&0xc00000)>>22));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1063,8 +1087,10 @@ static void hng64_drawtilemap( bitmap_t *bitmap, const rectangle *cliprect, int
|
|||||||
* 0 | oooooooo | unknown - always seems to be 04060000 (fatfurwa) and 00060000 (buriki)
|
* 0 | oooooooo | unknown - always seems to be 04060000 (fatfurwa) and 00060000 (buriki)
|
||||||
* 1 | xxxx---- | looks like it's 0001 most (all) of the time - turns off in buriki intro
|
* 1 | xxxx---- | looks like it's 0001 most (all) of the time - turns off in buriki intro
|
||||||
* 1 | ----oooo | unknown - always seems to be 0000 (fatfurwa)
|
* 1 | ----oooo | unknown - always seems to be 0000 (fatfurwa)
|
||||||
* 2 | oooooooo | unknown - likes to change sometimes though... (looks like bit-flags)
|
* 2 | xxxx---- | tilemap0 per layer flags
|
||||||
* 3 | oooooooo | unknown - change a lot - maybe mixer flags?
|
* 2 | ----xxxx | tilemap1 per layer flags
|
||||||
|
* 3 | xxxx---- | tilemap2 per layer flags
|
||||||
|
* 3 | ----xxxx | tilemap3 per layer flags
|
||||||
* 4 | xxxx---- | tilemap0 offset into tilemap RAM?
|
* 4 | xxxx---- | tilemap0 offset into tilemap RAM?
|
||||||
* 4 | ----xxxx | tilemap1 offset into tilemap RAM
|
* 4 | ----xxxx | tilemap1 offset into tilemap RAM
|
||||||
* 5 | xxxx---- | tilemap3 offset into tilemap RAM
|
* 5 | xxxx---- | tilemap3 offset into tilemap RAM
|
||||||
@ -1105,6 +1131,7 @@ VIDEO_UPDATE( hng64 )
|
|||||||
|
|
||||||
transition_control(bitmap, cliprect) ;
|
transition_control(bitmap, cliprect) ;
|
||||||
|
|
||||||
|
/*
|
||||||
popmessage("%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x",
|
popmessage("%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x",
|
||||||
hng64_videoregs[0x00],
|
hng64_videoregs[0x00],
|
||||||
hng64_videoregs[0x01],
|
hng64_videoregs[0x01],
|
||||||
@ -1121,6 +1148,26 @@ VIDEO_UPDATE( hng64 )
|
|||||||
hng64_videoregs[0x0c],
|
hng64_videoregs[0x0c],
|
||||||
hng64_videoregs[0x0d],
|
hng64_videoregs[0x0d],
|
||||||
hng64_videoregs[0x0e]);
|
hng64_videoregs[0x0e]);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// tilemap0 per layer flags
|
||||||
|
// 0840 - startup tests, 8x8x4 layer
|
||||||
|
// 0cc0 - beast busters 2, 8x8x8 layer
|
||||||
|
// 0860 - fatal fury wa
|
||||||
|
// 08e0 - fatal fury wa during transitions
|
||||||
|
// 0940 - samurai shodown 64
|
||||||
|
// 0880 - buriki
|
||||||
|
|
||||||
|
// ---l rb?? ???? ????
|
||||||
|
// l = floor effects / linescroll enable (buriki on tilemap1, fatal fury on tilemap3)
|
||||||
|
// r = tile size?
|
||||||
|
// b = 4bpp/8bpp ? (beast busters, samsh64, sasm64 2 switch it for some screens)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
popmessage("0: %04x 1: %04x 2: %04x 3: %04x\n", (hng64_videoregs[0x02]&0xffff0000)>>16, (hng64_videoregs[0x02]&0x0000ffff)>>0, (hng64_videoregs[0x03]&0xffff0000)>>16, (hng64_videoregs[0x03]&0x0000ffff)>>0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// mame_printf_debug("FRAME DONE %d\n", frameCount) ;
|
// mame_printf_debug("FRAME DONE %d\n", frameCount) ;
|
||||||
|
Loading…
Reference in New Issue
Block a user