mirror of
https://github.com/holub/mame
synced 2025-06-01 18:41:47 +03:00
fix non-super22 cmode/bn for direct_poly (eg. raveracw minimap and attractmode hiscore table)
This commit is contained in:
parent
4f3fbef885
commit
628f6efc95
@ -2559,7 +2559,7 @@ static ADDRESS_MAP_START( namcos22s_am, AS_PROGRAM, 32 )
|
||||
AM_RANGE(0x820000, 0x8202ff) AM_RAM /* unknown (air combat) */
|
||||
AM_RANGE(0x824000, 0x8243ff) AM_READWRITE(namcos22_gamma_r, namcos22_gamma_w) AM_BASE_MEMBER(namcos22_state, m_gamma)
|
||||
AM_RANGE(0x828000, 0x83ffff) AM_READWRITE(namcos22_paletteram_r, namcos22_paletteram_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x860000, 0x860007) AM_READ(spotram_r) AM_WRITE(spotram_w)
|
||||
AM_RANGE(0x860000, 0x860007) AM_READWRITE(spotram_r, spotram_w)
|
||||
AM_RANGE(0x880000, 0x89dfff) AM_READWRITE(namcos22_cgram_r, namcos22_cgram_w) AM_BASE_MEMBER(namcos22_state, m_cgram)
|
||||
AM_RANGE(0x89e000, 0x89ffff) AM_READWRITE(namcos22_textram_r, namcos22_textram_w) AM_BASE_MEMBER(namcos22_state, m_textram)
|
||||
AM_RANGE(0x8a0000, 0x8a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_BASE_MEMBER(namcos22_state, m_tilemapattr)
|
||||
@ -3001,6 +3001,7 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
|
||||
MCFG_CPU_VBLANK_INT_HACK(mcu_interrupt, 3)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||
// MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
// MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
||||
|
||||
MCFG_NVRAM_HANDLER(namcos22)
|
||||
|
@ -1159,51 +1159,57 @@ namcos22_draw_direct_poly( running_machine &machine, const UINT16 *pSource )
|
||||
struct SceneNode *node = NewSceneNode(machine, zsortvalue24,eSCENENODE_QUAD3D);
|
||||
int i;
|
||||
node->data.quad3d.flags = ((pSource[3]&0x7f00)*2)|(pSource[3]&3);
|
||||
node->data.quad3d.cmode = (pSource[2]&0x00f0)>>4;
|
||||
node->data.quad3d.textureBank = pSource[2]&0xf;
|
||||
node->data.quad3d.color = (pSource[2]&0xff00)>>8;
|
||||
if( state->m_mbSuperSystem22 )
|
||||
{
|
||||
node->data.quad3d.cmode = (pSource[2]&0x00f0)>>4;
|
||||
node->data.quad3d.textureBank = (pSource[2]&0x000f);
|
||||
}
|
||||
else
|
||||
{
|
||||
node->data.quad3d.cmode = (pSource[0+4]&0xf000)>>12;
|
||||
node->data.quad3d.textureBank = (pSource[1+4]&0xf000)>>12;
|
||||
}
|
||||
pSource += 4;
|
||||
for( i=0; i<4; i++ )
|
||||
{
|
||||
Poly3dVertex *p = &node->data.quad3d.v[i];
|
||||
|
||||
p->u = pSource[0];
|
||||
p->v = pSource[1];
|
||||
if( state->m_mbSuperSystem22 )
|
||||
{
|
||||
p->u >>= 4;
|
||||
p->v >>= 4;
|
||||
p->u = pSource[0] >> 4;
|
||||
p->v = pSource[1] >> 4;
|
||||
}
|
||||
p->u &= 0xfff;
|
||||
p->v &= 0xfff;
|
||||
|
||||
else
|
||||
{
|
||||
int mantissa = (INT16)pSource[5];
|
||||
float zf = (float)mantissa;
|
||||
int exponent = (pSource[4])&0xff;
|
||||
if( mantissa )
|
||||
p->u = pSource[0] & 0x0fff;
|
||||
p->v = pSource[1] & 0x0fff;
|
||||
}
|
||||
|
||||
int mantissa = (INT16)pSource[5];
|
||||
float zf = (float)mantissa;
|
||||
int exponent = (pSource[4])&0xff;
|
||||
if( mantissa )
|
||||
{
|
||||
while( exponent<0x2e )
|
||||
{
|
||||
while( exponent<0x2e )
|
||||
{
|
||||
zf /= 2.0;
|
||||
exponent++;
|
||||
}
|
||||
if( state->m_mbSuperSystem22 )
|
||||
p->z = zf;
|
||||
else
|
||||
p->z = 1.0f/zf;
|
||||
zf /= 2.0;
|
||||
exponent++;
|
||||
}
|
||||
if( state->m_mbSuperSystem22 )
|
||||
p->z = zf;
|
||||
else
|
||||
{
|
||||
zf = (float)0x10000;
|
||||
exponent = 0x40-exponent;
|
||||
while( exponent<0x2e )
|
||||
{
|
||||
zf /= 2.0;
|
||||
exponent++;
|
||||
}
|
||||
p->z = 1.0f/zf;
|
||||
}
|
||||
else
|
||||
{
|
||||
zf = (float)0x10000;
|
||||
exponent = 0x40-exponent;
|
||||
while( exponent<0x2e )
|
||||
{
|
||||
zf /= 2.0;
|
||||
exponent++;
|
||||
}
|
||||
p->z = 1.0f/zf;
|
||||
}
|
||||
|
||||
p->x = ((INT16)pSource[2]);
|
||||
@ -1324,9 +1330,6 @@ DrawSpritesHelper(
|
||||
{
|
||||
struct SceneNode *node = NewSceneNode(machine, zcoord, eSCENENODE_SPRITE);
|
||||
|
||||
//printf("[%02d]: tile %x pri %x color %x flipX %d flipY %d cols %d rows %d link %d X %d Y %d sX %d sY %d trans %d cz %d\n",
|
||||
//i, tile, cz&0x80, color&0x7f, flipx, flipy, numcols, numrows, linkType, xpos, ypos, sizex, sizey, translucency, cz);
|
||||
|
||||
node->data.sprite.tile = tile;
|
||||
node->data.sprite.flipx = flipx;
|
||||
node->data.sprite.flipy = flipy;
|
||||
@ -1660,7 +1663,7 @@ static void namcos22_mix_textlayer( running_machine &machine, bitmap_t *bitmap,
|
||||
pri = BITMAP_ADDR8(machine.priority_bitmap, y, 0);
|
||||
for (x=0;x<640;x++)
|
||||
{
|
||||
// skip if transparent or under poly/sprite
|
||||
// skip if transparent or under poly
|
||||
if (pri[x] == 2)
|
||||
{
|
||||
// apply shadow
|
||||
|
Loading…
Reference in New Issue
Block a user