mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
Adjusted alternate palette handling weights to more accurately match real hardware - text anti-aliasing is much more noticable.
Adjustment to roz layer priority - prevents roz layer from incorrectly being displayed over backgrounds in some games (i.e. numanathj) Added a mask when processing the roz tilemap to avoid defects in emeraldj
This commit is contained in:
parent
271ac2a7a2
commit
c8e3dcfc5e
@ -91,11 +91,11 @@ static TILE_GET_INFO( roz_get_info )
|
|||||||
{
|
{
|
||||||
/* each logical tile is constructed from 4*4 normal tiles */
|
/* each logical tile is constructed from 4*4 normal tiles */
|
||||||
int tilemap_color = roz_palette;
|
int tilemap_color = roz_palette;
|
||||||
int use_4bpp_gfx = namcona1_vreg[0xbc/2]&16;
|
int use_4bpp_gfx = namcona1_vreg[0xbc/2]&16; /* ? */
|
||||||
int c = tile_index%0x40;
|
int c = tile_index%0x40;
|
||||||
int r = tile_index/0x40;
|
int r = tile_index/0x40;
|
||||||
int data = videoram16[0x8000/2+(r/4)*0x40+c/4]+(c%4)+(r%4)*0x40;
|
int data = videoram16[0x8000/2+(r/4)*0x40+c/4]&0xfbf; /* mask out bit 0x40 - patch for Emeraldia Japan */
|
||||||
int tile = data&0xfff;
|
int tile = (data+(c%4)+(r%4)*0x40)&0xfff;
|
||||||
int gfx = use_4bpp_gfx;
|
int gfx = use_4bpp_gfx;
|
||||||
if( use_4bpp_gfx )
|
if( use_4bpp_gfx )
|
||||||
{
|
{
|
||||||
@ -153,20 +153,19 @@ READ16_HANDLER( namcona1_videoram_r )
|
|||||||
static void
|
static void
|
||||||
UpdatePalette(running_machine *machine, int offset )
|
UpdatePalette(running_machine *machine, int offset )
|
||||||
{
|
{
|
||||||
int r,g,b;
|
|
||||||
UINT16 data = paletteram16[offset]; /* -RRRRRGG GGGBBBBB */
|
UINT16 data = paletteram16[offset]; /* -RRRRRGG GGGBBBBB */
|
||||||
palette_set_color_rgb( machine, offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sprites can be configured to use an alternate interpretation of palette ram
|
* sprites can be configured to use an alternate interpretation of palette ram
|
||||||
* (used in-game in Emeraldia)
|
* (used in-game in Emeraldia)
|
||||||
*
|
*
|
||||||
* RRRGGGBB RRRGGGBB
|
* RRRGGGBB RRRGGGBB
|
||||||
*/
|
*/
|
||||||
r = ((data&0x00e0)>>5)|((data&0xe000)>>(13-3));
|
int r = (((data&0x00e0)>>5)+((data&0xe000)>>13)*2)*0xff/(0x7*3);
|
||||||
g = ((data&0x001c)>>2)|((data&0x1c00)>>(10-3));
|
int g = (((data&0x001c)>>2)+((data&0x1c00)>>10)*2)*0xff/(0x7*3);
|
||||||
b = ((data&0x0003)>>0)|((data&0x0300)>>(8-2));
|
int b = (((data&0x0003)>>0)+((data&0x0300)>>8)*2)*0xff/(0x3*3);
|
||||||
palette_set_color_rgb( machine, offset+0x1000, pal6bit(r), pal6bit(g), pal4bit(b) );
|
palette_set_color_rgb( machine, offset+0x1000, r, g, b);
|
||||||
|
|
||||||
|
palette_set_color_rgb( machine, offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
|
||||||
} /* namcona1_paletteram_w */
|
} /* namcona1_paletteram_w */
|
||||||
|
|
||||||
READ16_HANDLER( namcona1_paletteram_r )
|
READ16_HANDLER( namcona1_paletteram_r )
|
||||||
@ -178,8 +177,7 @@ WRITE16_HANDLER( namcona1_paletteram_w )
|
|||||||
{
|
{
|
||||||
COMBINE_DATA( &paletteram16[offset] );
|
COMBINE_DATA( &paletteram16[offset] );
|
||||||
if( namcona1_vreg[0x8e/2] )
|
if( namcona1_vreg[0x8e/2] )
|
||||||
{
|
{ /* graphics enabled; update palette immediately */
|
||||||
/* graphics enabled; update palette immediately */
|
|
||||||
UpdatePalette(machine, offset );
|
UpdatePalette(machine, offset );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -735,7 +733,15 @@ VIDEO_UPDATE( namcona1 )
|
|||||||
{
|
{
|
||||||
for( which=4; which>=0; which-- )
|
for( which=4; which>=0; which-- )
|
||||||
{
|
{
|
||||||
int pri = namcona1_vreg[0xa0/2+which]&0x7;
|
int pri;
|
||||||
|
if( which==4 )
|
||||||
|
{
|
||||||
|
pri = namcona1_vreg[0xa0/2+5]&0x7;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pri = namcona1_vreg[0xa0/2+which]&0x7;
|
||||||
|
}
|
||||||
if( pri == priority )
|
if( pri == priority )
|
||||||
{
|
{
|
||||||
draw_background(screen->machine,bitmap,cliprect,which,priority);
|
draw_background(screen->machine,bitmap,cliprect,which,priority);
|
||||||
@ -749,6 +755,8 @@ VIDEO_UPDATE( namcona1 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
roz bad in emeraldaj - blit param?
|
||||||
|
|
||||||
$efff20: sprite control: 0x3a,0x3e,0x3f
|
$efff20: sprite control: 0x3a,0x3e,0x3f
|
||||||
bit 0x01 selects spriteram bank
|
bit 0x01 selects spriteram bank
|
||||||
|
|
||||||
@ -756,10 +764,18 @@ $efff20: sprite control: 0x3a,0x3e,0x3f
|
|||||||
$efff00: src0 src1 src2 dst0 dst1 dst2 BANK [src
|
$efff00: src0 src1 src2 dst0 dst1 dst2 BANK [src
|
||||||
$efff10: src] [dst dst] #BYT BLIT eINT 001f 0001
|
$efff10: src] [dst dst] #BYT BLIT eINT 001f 0001
|
||||||
$efff20: 003f 003f IACK ---- ---- ---- ---- ----
|
$efff20: 003f 003f IACK ---- ---- ---- ---- ----
|
||||||
$efff80: 0050 0170 0020 0100 0000 POSI 0000 GFXE POSI: scanline for POSIRQ
|
...
|
||||||
|
$efff80: 0050 0170 0020 0100 0170 POS? 0000 GFXE
|
||||||
$efff90: 0000 0001 0002 0003 FLIP ---- ---- ----
|
$efff90: 0000 0001 0002 0003 FLIP ---- ---- ----
|
||||||
$efffa0: PRI PRI PRI PRI ---- PRI? --?? ---- priority (0..7)
|
$efffa0: PRI PRI PRI PRI ???? PRI 00c0 ---- priority (0..7)
|
||||||
$efffb0: CLR CLR CLR CLR 0001 CLR? BPP ---- color (0..f), bpp flag per layer
|
$efffb0: CLR CLR CLR CLR 0001 CLR BPP ---- color (0..f), bpp flag per layer
|
||||||
$efffc0: RZXX RZXY RZYX RZYY RZX0 RZY0 ???? ---- ROZ
|
$efffc0: RZXX RZXY RZYX RZYY RZX0 RZY0 0044 ---- ROZ
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
Emeralda: 0048 0177 0020 0100 0000 00f0 0000 0001 in-game
|
||||||
|
0050 0170 0020 0100 0000 00f0 0000 0001 self test
|
||||||
|
|
||||||
|
NumanAth: 0050 0170 0020 0100 0170 00d8 0000 0001 in-game
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user