cleanup: double-line functions, some comments
This commit is contained in:
parent
57212c3957
commit
d4dcfe0a01
@ -1160,12 +1160,11 @@
|
|||||||
/**
|
/**
|
||||||
* helper function used to read a byte from a chunk of 32 bit memory
|
* helper function used to read a byte from a chunk of 32 bit memory
|
||||||
*/
|
*/
|
||||||
static UINT8
|
static UINT8 nthbyte( const UINT32 *pSource, int offs )
|
||||||
nthbyte( const UINT32 *pSource, int offs )
|
|
||||||
{
|
{
|
||||||
pSource += offs/4;
|
pSource += offs/4;
|
||||||
return (pSource[0]<<((offs&3)*8))>>24;
|
return (pSource[0]<<((offs&3)*8))>>24;
|
||||||
} /* nthbyte */
|
}
|
||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
@ -1179,8 +1178,7 @@ nthbyte( const UINT32 *pSource, int offs )
|
|||||||
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_NAME("Steering Wheel")
|
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_NAME("Steering Wheel")
|
||||||
|
|
||||||
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
||||||
static void
|
static void ReadAnalogDrivingPorts( running_machine &machine, UINT16 *gas, UINT16 *brake, UINT16 *steer )
|
||||||
ReadAnalogDrivingPorts( running_machine &machine, UINT16 *gas, UINT16 *brake, UINT16 *steer )
|
|
||||||
{
|
{
|
||||||
*gas = machine.root_device().ioport("GAS")->read();
|
*gas = machine.root_device().ioport("GAS")->read();
|
||||||
*brake = machine.root_device().ioport("BRAKE")->read();
|
*brake = machine.root_device().ioport("BRAKE")->read();
|
||||||
@ -1188,8 +1186,7 @@ ReadAnalogDrivingPorts( running_machine &machine, UINT16 *gas, UINT16 *brake, UI
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
||||||
static UINT16
|
static UINT16 AnalogAsDigital( running_machine &machine )
|
||||||
AnalogAsDigital( running_machine &machine )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
UINT16 inputs = state->ioport("INPUTS")->read_safe(0);
|
UINT16 inputs = state->ioport("INPUTS")->read_safe(0);
|
||||||
@ -1224,11 +1221,13 @@ AnalogAsDigital( running_machine &machine )
|
|||||||
}
|
}
|
||||||
inputs &= 3;
|
inputs &= 3;
|
||||||
if( inputs == 1 )
|
if( inputs == 1 )
|
||||||
{ /* Stick Shift Up */
|
{
|
||||||
|
/* Stick Shift Up */
|
||||||
result ^= 0x0040; /* PREV */
|
result ^= 0x0040; /* PREV */
|
||||||
}
|
}
|
||||||
else if( inputs == 2 )
|
else if( inputs == 2 )
|
||||||
{ /* Stick Shift Down */
|
{
|
||||||
|
/* Stick Shift Down */
|
||||||
result ^= 0x0080; /* NEXT */
|
result ^= 0x0080; /* NEXT */
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -1237,11 +1236,10 @@ AnalogAsDigital( running_machine &machine )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} /* AnalogAsDigital */
|
}
|
||||||
|
|
||||||
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
||||||
static void
|
static void HandleCoinage(running_machine &machine, int slots, int address_is_odd)
|
||||||
HandleCoinage(running_machine &machine, int slots, int address_is_odd)
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
UINT16 *share16 = (UINT16 *)state->m_shareram.target();
|
UINT16 *share16 = (UINT16 *)state->m_shareram.target();
|
||||||
@ -1267,11 +1265,10 @@ HandleCoinage(running_machine &machine, int slots, int address_is_odd)
|
|||||||
{
|
{
|
||||||
share16[BYTE_XOR_LE(0x3e/2)] = state->m_credits2 << (address_is_odd*8);
|
share16[BYTE_XOR_LE(0x3e/2)] = state->m_credits2 << (address_is_odd*8);
|
||||||
}
|
}
|
||||||
} /* HandleCoinage */
|
}
|
||||||
|
|
||||||
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
||||||
static void
|
static void HandleDrivingIO( running_machine &machine )
|
||||||
HandleDrivingIO( running_machine &machine )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
if( nthbyte(state->m_system_controller, 0x18) != 0 )
|
if( nthbyte(state->m_system_controller, 0x18) != 0 )
|
||||||
@ -1325,11 +1322,10 @@ HandleDrivingIO( running_machine &machine )
|
|||||||
state->m_shareram[0x030/4] = (flags<<16)|steer;
|
state->m_shareram[0x030/4] = (flags<<16)|steer;
|
||||||
state->m_shareram[0x034/4] = (gas<<16)|brake;
|
state->m_shareram[0x034/4] = (gas<<16)|brake;
|
||||||
}
|
}
|
||||||
} /* HandleDrivingIO */
|
}
|
||||||
|
|
||||||
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
|
||||||
static void
|
static void HandleCyberCommandoIO( running_machine &machine )
|
||||||
HandleCyberCommandoIO( running_machine &machine )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
if( nthbyte(state->m_system_controller, 0x18) != 0 )
|
if( nthbyte(state->m_system_controller, 0x18) != 0 )
|
||||||
@ -1347,23 +1343,22 @@ HandleCyberCommandoIO( running_machine &machine )
|
|||||||
|
|
||||||
HandleCoinage(machine, 1, 0);
|
HandleCoinage(machine, 1, 0);
|
||||||
}
|
}
|
||||||
} /* HandleCyberCommandoIO */
|
}
|
||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
static void
|
static void InitDSP( running_machine &machine )
|
||||||
InitDSP( running_machine &machine )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
state->m_master->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* master DSP */
|
state->m_master->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
state->m_slave->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* slave DSP */
|
state->m_slave->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
state->m_mcu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* MCU */
|
state->m_mcu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
} /* InitDSP */
|
}
|
||||||
|
|
||||||
READ16_MEMBER(namcos22_state::pdp_status_r)
|
READ16_MEMBER(namcos22_state::pdp_status_r)
|
||||||
{
|
{
|
||||||
return m_MasterBIOZ;
|
return m_MasterBIOZ;
|
||||||
} /* pdp_status_r */
|
}
|
||||||
|
|
||||||
void namcos22_state::WriteToPointRAM(offs_t offs, UINT32 data )
|
void namcos22_state::WriteToPointRAM(offs_t offs, UINT32 data )
|
||||||
{
|
{
|
||||||
@ -1378,18 +1373,18 @@ void namcos22_state::WriteToPointRAM(offs_t offs, UINT32 data )
|
|||||||
if( offs>=0xf00000 && offs<=0xf1ffff )
|
if( offs>=0xf00000 && offs<=0xf1ffff )
|
||||||
m_pPointRAM[offs-0xf00000] = data & 0x00ffffff;
|
m_pPointRAM[offs-0xf00000] = data & 0x00ffffff;
|
||||||
}
|
}
|
||||||
} /* WriteToPointRAM */
|
}
|
||||||
|
|
||||||
UINT32 namcos22_state::ReadFromCommRAM(offs_t offs )
|
UINT32 namcos22_state::ReadFromCommRAM(offs_t offs )
|
||||||
{
|
{
|
||||||
return m_polygonram[offs&0x7fff];
|
return m_polygonram[offs&0x7fff];
|
||||||
} /* ReadFromCommRAM */
|
}
|
||||||
|
|
||||||
void namcos22_state::WriteToCommRAM(offs_t offs, UINT32 data )
|
void namcos22_state::WriteToCommRAM(offs_t offs, UINT32 data )
|
||||||
{
|
{
|
||||||
if (data & 0x00800000) m_polygonram[offs&0x7fff] = data | 0xff000000;
|
if (data & 0x00800000) m_polygonram[offs&0x7fff] = data | 0xff000000;
|
||||||
else m_polygonram[offs&0x7fff] = data & 0x00ffffff;
|
else m_polygonram[offs&0x7fff] = data & 0x00ffffff;
|
||||||
} /* WriteToCommRAM */
|
}
|
||||||
|
|
||||||
READ16_MEMBER(namcos22_state::pdp_begin_r)
|
READ16_MEMBER(namcos22_state::pdp_begin_r)
|
||||||
{
|
{
|
||||||
@ -1494,10 +1489,10 @@ READ16_MEMBER(namcos22_state::pdp_begin_r)
|
|||||||
logerror( "unknown PDP cmd = 0x%04x!\n", cmd );
|
logerror( "unknown PDP cmd = 0x%04x!\n", cmd );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} /* for(;;) */
|
}
|
||||||
} /* m_bSuperSystem22 */
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} /* pdp_begin_r */
|
}
|
||||||
|
|
||||||
READ16_MEMBER(namcos22_state::slave_external_ram_r)
|
READ16_MEMBER(namcos22_state::slave_external_ram_r)
|
||||||
{
|
{
|
||||||
@ -1524,16 +1519,19 @@ static void EnableSlaveDSP( running_machine &machine )
|
|||||||
}
|
}
|
||||||
|
|
||||||
READ16_MEMBER(namcos22_state::dsp_HOLD_signal_r)
|
READ16_MEMBER(namcos22_state::dsp_HOLD_signal_r)
|
||||||
{ /* STUB */
|
{
|
||||||
|
/* STUB */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(namcos22_state::dsp_HOLD_ACK_w)
|
WRITE16_MEMBER(namcos22_state::dsp_HOLD_ACK_w)
|
||||||
{ /* STUB */
|
{
|
||||||
|
/* STUB */
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(namcos22_state::dsp_XF_output_w)
|
WRITE16_MEMBER(namcos22_state::dsp_XF_output_w)
|
||||||
{ /* STUB */
|
{
|
||||||
|
/* STUB */
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
@ -1810,7 +1808,8 @@ static ADDRESS_MAP_START( master_dsp_io, AS_IO, 16, namcos22_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
READ16_MEMBER(namcos22_state::dsp_BIOZ_r)
|
READ16_MEMBER(namcos22_state::dsp_BIOZ_r)
|
||||||
{ /* STUB */
|
{
|
||||||
|
/* STUB */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1997,7 +1996,7 @@ static const gfx_layout namcos22_cg_layout =
|
|||||||
XOR(8)*4, XOR(9)*4, XOR(10)*4, XOR(11)*4, XOR(12)*4, XOR(13)*4, XOR(14)*4, XOR(15)*4 },
|
XOR(8)*4, XOR(9)*4, XOR(10)*4, XOR(11)*4, XOR(12)*4, XOR(13)*4, XOR(14)*4, XOR(15)*4 },
|
||||||
{ 64*0,64*1,64*2,64*3,64*4,64*5,64*6,64*7,64*8,64*9,64*10,64*11,64*12,64*13,64*14,64*15 },
|
{ 64*0,64*1,64*2,64*3,64*4,64*5,64*6,64*7,64*8,64*9,64*10,64*11,64*12,64*13,64*14,64*15 },
|
||||||
64*16
|
64*16
|
||||||
}; /* cg_layout */
|
};
|
||||||
|
|
||||||
static GFXDECODE_START( namcos22 )
|
static GFXDECODE_START( namcos22 )
|
||||||
GFXDECODE_ENTRY( NULL, 0, namcos22_cg_layout, 0, 0x800 )
|
GFXDECODE_ENTRY( NULL, 0, namcos22_cg_layout, 0, 0x800 )
|
||||||
@ -2015,8 +2014,10 @@ READ32_MEMBER(namcos22_state::namcos22_C139_SCI_r)
|
|||||||
{
|
{
|
||||||
switch( offset )
|
switch( offset )
|
||||||
{
|
{
|
||||||
case 0x0/4: return 0x0004<<16;
|
case 0x0/4:
|
||||||
default: return 0;
|
return 0x0004<<16;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2164,7 +2165,7 @@ WRITE32_MEMBER(namcos22_state::namcos22s_system_controller_w)
|
|||||||
|
|
||||||
COMBINE_DATA( &m_system_controller[offset] );
|
COMBINE_DATA( &m_system_controller[offset] );
|
||||||
|
|
||||||
} /* namcos22s_system_controller_w */
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
000064: 0000 8C9A (1)
|
000064: 0000 8C9A (1)
|
||||||
@ -2292,7 +2293,7 @@ WRITE32_MEMBER(namcos22_state::namcos22_system_controller_w)
|
|||||||
|
|
||||||
COMBINE_DATA( &m_system_controller[offset] );
|
COMBINE_DATA( &m_system_controller[offset] );
|
||||||
|
|
||||||
} /* namcos22_system_controller_w */
|
}
|
||||||
|
|
||||||
/* namcos22_interrupt
|
/* namcos22_interrupt
|
||||||
Ridge Racer:
|
Ridge Racer:
|
||||||
@ -2463,7 +2464,7 @@ WRITE32_MEMBER(namcos22_state::namcos22_cpuleds_w)
|
|||||||
READ32_MEMBER(namcos22_state::alpinesa_prot_r)
|
READ32_MEMBER(namcos22_state::alpinesa_prot_r)
|
||||||
{
|
{
|
||||||
return m_AlpineSurferProtData;
|
return m_AlpineSurferProtData;
|
||||||
} /* alpinesa_prot_r */
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(namcos22_state::alpinesa_prot_w)
|
WRITE32_MEMBER(namcos22_state::alpinesa_prot_w)
|
||||||
{
|
{
|
||||||
@ -2481,7 +2482,7 @@ WRITE32_MEMBER(namcos22_state::alpinesa_prot_w)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} /* alpinesa_prot_w */
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(namcos22_state::namcos22s_nvmem_w)
|
WRITE32_MEMBER(namcos22_state::namcos22s_nvmem_w)
|
||||||
{
|
{
|
||||||
|
@ -83,22 +83,19 @@ static void Dump( address_space &space, FILE *f, unsigned addr1, unsigned addr2,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static UINT8
|
static UINT8 nthbyte( const UINT32 *pSource, int offs )
|
||||||
nthbyte( const UINT32 *pSource, int offs )
|
|
||||||
{
|
{
|
||||||
pSource += offs/4;
|
pSource += offs/4;
|
||||||
return (pSource[0]<<((offs&3)*8))>>24;
|
return (pSource[0]<<((offs&3)*8))>>24;
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT16
|
static UINT16 nthword( const UINT32 *pSource, int offs )
|
||||||
nthword( const UINT32 *pSource, int offs )
|
|
||||||
{
|
{
|
||||||
pSource += offs/2;
|
pSource += offs/2;
|
||||||
return (pSource[0]<<((offs&1)*16))>>16;
|
return (pSource[0]<<((offs&1)*16))>>16;
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE UINT8
|
INLINE UINT8 Clamp256( int v )
|
||||||
Clamp256( int v )
|
|
||||||
{
|
{
|
||||||
if( v<0 )
|
if( v<0 )
|
||||||
{
|
{
|
||||||
@ -109,7 +106,7 @@ Clamp256( int v )
|
|||||||
v = 255;
|
v = 255;
|
||||||
}
|
}
|
||||||
return v;
|
return v;
|
||||||
} /* Clamp256 */
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct
|
static struct
|
||||||
@ -135,8 +132,7 @@ static struct
|
|||||||
int palBase;
|
int palBase;
|
||||||
} mixer;
|
} mixer;
|
||||||
|
|
||||||
static void
|
static void UpdateVideoMixer( running_machine &machine )
|
||||||
UpdateVideoMixer( running_machine &machine )
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
@ -284,8 +280,7 @@ static struct
|
|||||||
rectangle scissor;
|
rectangle scissor;
|
||||||
} mClip;
|
} mClip;
|
||||||
|
|
||||||
static void
|
static void poly3d_Clip( float vx, float vy, float vw, float vh )
|
||||||
poly3d_Clip( float vx, float vy, float vw, float vh )
|
|
||||||
{
|
{
|
||||||
int cx = 320+vx;
|
int cx = 320+vx;
|
||||||
int cy = 240+vy;
|
int cy = 240+vy;
|
||||||
@ -298,8 +293,7 @@ poly3d_Clip( float vx, float vy, float vw, float vh )
|
|||||||
if( mClip.scissor.max_y>479 ) mClip.scissor.max_y = 479;
|
if( mClip.scissor.max_y>479 ) mClip.scissor.max_y = 479;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void sprite_Clip( int min_x, int max_x, int min_y, int max_y )
|
||||||
sprite_Clip( int min_x, int max_x, int min_y, int max_y )
|
|
||||||
{
|
{
|
||||||
// cx/cy not used
|
// cx/cy not used
|
||||||
mClip.scissor.set(min_x, max_x, min_y, max_y);
|
mClip.scissor.set(min_x, max_x, min_y, max_y);
|
||||||
@ -309,8 +303,7 @@ sprite_Clip( int min_x, int max_x, int min_y, int max_y )
|
|||||||
if( mClip.scissor.max_y>479 ) mClip.scissor.max_y = 479;
|
if( mClip.scissor.max_y>479 ) mClip.scissor.max_y = 479;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void poly3d_NoClip( void )
|
||||||
poly3d_NoClip( void )
|
|
||||||
{
|
{
|
||||||
mClip.cx = 320;
|
mClip.cx = 320;
|
||||||
mClip.cy = 240;
|
mClip.cy = 240;
|
||||||
@ -332,7 +325,7 @@ INLINE unsigned texel( namcos22_state *state, unsigned x, unsigned y )
|
|||||||
unsigned offs = ((y&0xfff0)<<4)|((x&0xff0)>>4);
|
unsigned offs = ((y&0xfff0)<<4)|((x&0xff0)>>4);
|
||||||
unsigned tile = state->m_pTextureTileMap16[offs];
|
unsigned tile = state->m_pTextureTileMap16[offs];
|
||||||
return state->m_pTextureTileData[(tile<<8)|state->m_XYAttrToPixel[state->m_pTextureTileMapAttr[offs]][x&0xf][y&0xf]];
|
return state->m_pTextureTileData[(tile<<8)|state->m_XYAttrToPixel[state->m_pTextureTileMapAttr[offs]][x&0xf][y&0xf]];
|
||||||
} /* texel */
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -508,7 +501,7 @@ static void renderscanline_uvi_full(void *destbase, INT32 scanline, const poly_e
|
|||||||
z += dz;
|
z += dz;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* renderscanline_uvi_full */
|
}
|
||||||
|
|
||||||
static void poly3d_DrawQuad(running_machine &machine, bitmap_rgb32 &bitmap, int textureBank, int color, Poly3dVertex pv[4], int flags, int cz_adjust, int direct, int cmode )
|
static void poly3d_DrawQuad(running_machine &machine, bitmap_rgb32 &bitmap, int textureBank, int color, Poly3dVertex pv[4], int flags, int cz_adjust, int direct, int cmode )
|
||||||
{
|
{
|
||||||
@ -765,11 +758,7 @@ static void renderscanline_sprite(void *destbase, INT32 scanline, const poly_ext
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void poly3d_DrawSprite(bitmap_rgb32 &dest_bmp, gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, int cz_factor, int prioverchar, int alpha)
|
||||||
poly3d_DrawSprite(
|
|
||||||
bitmap_rgb32 &dest_bmp, gfx_element *gfx, UINT32 code,
|
|
||||||
UINT32 color, int flipx, int flipy, int sx, int sy,
|
|
||||||
int scalex, int scaley, int cz_factor, int prioverchar, int alpha )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = gfx->machine().driver_data<namcos22_state>();
|
namcos22_state *state = gfx->machine().driver_data<namcos22_state>();
|
||||||
int sprite_screen_height = (scaley*gfx->height()+0x8000)>>16;
|
int sprite_screen_height = (scaley*gfx->height()+0x8000)>>16;
|
||||||
@ -833,15 +822,15 @@ poly3d_DrawSprite(
|
|||||||
|
|
||||||
poly_render_triangle_fan(state->m_poly, &dest_bmp, mClip.scissor, renderscanline_sprite, 2, 4, vert);
|
poly_render_triangle_fan(state->m_poly, &dest_bmp, mClip.scissor, renderscanline_sprite, 2, 4, vert);
|
||||||
}
|
}
|
||||||
} /* poly3d_DrawSprite */
|
}
|
||||||
|
|
||||||
static void
|
static void ApplyGamma( running_machine &machine, bitmap_rgb32 &bitmap )
|
||||||
ApplyGamma( running_machine &machine, bitmap_rgb32 &bitmap )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
int x,y;
|
int x,y;
|
||||||
if( state->m_bSuperSystem22 )
|
if( state->m_bSuperSystem22 )
|
||||||
{ /* super system 22 */
|
{
|
||||||
|
/* super system 22 */
|
||||||
const UINT8 *rlut = (const UINT8 *)&state->m_gamma[0x100/4];
|
const UINT8 *rlut = (const UINT8 *)&state->m_gamma[0x100/4];
|
||||||
const UINT8 *glut = (const UINT8 *)&state->m_gamma[0x200/4];
|
const UINT8 *glut = (const UINT8 *)&state->m_gamma[0x200/4];
|
||||||
const UINT8 *blut = (const UINT8 *)&state->m_gamma[0x300/4];
|
const UINT8 *blut = (const UINT8 *)&state->m_gamma[0x300/4];
|
||||||
@ -859,7 +848,8 @@ ApplyGamma( running_machine &machine, bitmap_rgb32 &bitmap )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /* system 22 */
|
{
|
||||||
|
/* system 22 */
|
||||||
const UINT8 *rlut = 0x000+(const UINT8 *)machine.root_device().memregion("gamma_proms")->base();
|
const UINT8 *rlut = 0x000+(const UINT8 *)machine.root_device().memregion("gamma_proms")->base();
|
||||||
const UINT8 *glut = 0x100+rlut;
|
const UINT8 *glut = 0x100+rlut;
|
||||||
const UINT8 *blut = 0x200+rlut;
|
const UINT8 *blut = 0x200+rlut;
|
||||||
@ -876,7 +866,7 @@ ApplyGamma( running_machine &machine, bitmap_rgb32 &bitmap )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* ApplyGamma */
|
}
|
||||||
|
|
||||||
|
|
||||||
#define DSP_FIXED_TO_FLOAT( X ) (((INT16)(X))/(float)0x7fff)
|
#define DSP_FIXED_TO_FLOAT( X ) (((INT16)(X))/(float)0x7fff)
|
||||||
@ -885,8 +875,7 @@ ApplyGamma( running_machine &machine, bitmap_rgb32 &bitmap )
|
|||||||
#define NUM_CG_CHARS ((CGRAM_SIZE*8)/(64*16)) /* 0x3c0 */
|
#define NUM_CG_CHARS ((CGRAM_SIZE*8)/(64*16)) /* 0x3c0 */
|
||||||
|
|
||||||
/* modal rendering properties */
|
/* modal rendering properties */
|
||||||
static void
|
static void matrix3d_Multiply( float A[4][4], float B[4][4] )
|
||||||
matrix3d_Multiply( float A[4][4], float B[4][4] )
|
|
||||||
{
|
{
|
||||||
float temp[4][4];
|
float temp[4][4];
|
||||||
int row,col;
|
int row,col;
|
||||||
@ -905,10 +894,9 @@ matrix3d_Multiply( float A[4][4], float B[4][4] )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
memcpy( A, temp, sizeof(temp) );
|
memcpy( A, temp, sizeof(temp) );
|
||||||
} /* matrix3d_Multiply */
|
}
|
||||||
|
|
||||||
static void
|
static void matrix3d_Identity( float M[4][4] )
|
||||||
matrix3d_Identity( float M[4][4] )
|
|
||||||
{
|
{
|
||||||
int r,c;
|
int r,c;
|
||||||
|
|
||||||
@ -919,10 +907,9 @@ matrix3d_Identity( float M[4][4] )
|
|||||||
M[r][c] = (r==c)?1.0:0.0;
|
M[r][c] = (r==c)?1.0:0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* matrix3d_Identity */
|
}
|
||||||
|
|
||||||
static void
|
static void TransformPoint( float *vx, float *vy, float *vz, float m[4][4] )
|
||||||
TransformPoint( float *vx, float *vy, float *vz, float m[4][4] )
|
|
||||||
{
|
{
|
||||||
float x = *vx;
|
float x = *vx;
|
||||||
float y = *vy;
|
float y = *vy;
|
||||||
@ -932,8 +919,7 @@ TransformPoint( float *vx, float *vy, float *vz, float m[4][4] )
|
|||||||
*vz = m[0][2]*x + m[1][2]*y + m[2][2]*z + m[3][2];
|
*vz = m[0][2]*x + m[1][2]*y + m[2][2]*z + m[3][2];
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void TransformNormal( float *nx, float *ny, float *nz, float m[4][4] )
|
||||||
TransformNormal( float *nx, float *ny, float *nz, float m[4][4] )
|
|
||||||
{
|
{
|
||||||
float x = *nx;
|
float x = *nx;
|
||||||
float y = *ny;
|
float y = *ny;
|
||||||
@ -1005,19 +991,18 @@ struct SceneNode
|
|||||||
static struct SceneNode mSceneRoot;
|
static struct SceneNode mSceneRoot;
|
||||||
static struct SceneNode *mpFreeSceneNode;
|
static struct SceneNode *mpFreeSceneNode;
|
||||||
|
|
||||||
static void
|
static void FreeSceneNode( struct SceneNode *node )
|
||||||
FreeSceneNode( struct SceneNode *node )
|
|
||||||
{
|
{
|
||||||
node->nextInBucket = mpFreeSceneNode;
|
node->nextInBucket = mpFreeSceneNode;
|
||||||
mpFreeSceneNode = node;
|
mpFreeSceneNode = node;
|
||||||
} /* FreeSceneNode */
|
}
|
||||||
|
|
||||||
static struct SceneNode *
|
static struct SceneNode *MallocSceneNode( running_machine &machine )
|
||||||
MallocSceneNode( running_machine &machine )
|
|
||||||
{
|
{
|
||||||
struct SceneNode *node = mpFreeSceneNode;
|
struct SceneNode *node = mpFreeSceneNode;
|
||||||
if( node )
|
if( node )
|
||||||
{ /* use free pool */
|
{
|
||||||
|
/* use free pool */
|
||||||
mpFreeSceneNode = node->nextInBucket;
|
mpFreeSceneNode = node->nextInBucket;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1026,10 +1011,9 @@ MallocSceneNode( running_machine &machine )
|
|||||||
}
|
}
|
||||||
memset( node, 0, sizeof(*node) );
|
memset( node, 0, sizeof(*node) );
|
||||||
return node;
|
return node;
|
||||||
} /* MallocSceneNode */
|
}
|
||||||
|
|
||||||
static struct SceneNode *
|
static struct SceneNode *NewSceneNode( running_machine &machine, UINT32 zsortvalue24, SceneNodeType type )
|
||||||
NewSceneNode( running_machine &machine, UINT32 zsortvalue24, SceneNodeType type )
|
|
||||||
{
|
{
|
||||||
struct SceneNode *node = &mSceneRoot;
|
struct SceneNode *node = &mSceneRoot;
|
||||||
struct SceneNode *prev = NULL;
|
struct SceneNode *prev = NULL;
|
||||||
@ -1039,7 +1023,8 @@ NewSceneNode( running_machine &machine, UINT32 zsortvalue24, SceneNodeType type
|
|||||||
hash = (zsortvalue24>>20)&RADIX_MASK;
|
hash = (zsortvalue24>>20)&RADIX_MASK;
|
||||||
struct SceneNode *next = node->data.nonleaf.next[hash];
|
struct SceneNode *next = node->data.nonleaf.next[hash];
|
||||||
if( !next )
|
if( !next )
|
||||||
{ /* lazily allocate tree node for this radix */
|
{
|
||||||
|
/* lazily allocate tree node for this radix */
|
||||||
next = MallocSceneNode(machine);
|
next = MallocSceneNode(machine);
|
||||||
next->type = eSCENENODE_NONLEAF;
|
next->type = eSCENENODE_NONLEAF;
|
||||||
node->data.nonleaf.next[hash] = next;
|
node->data.nonleaf.next[hash] = next;
|
||||||
@ -1050,7 +1035,8 @@ NewSceneNode( running_machine &machine, UINT32 zsortvalue24, SceneNodeType type
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( node->type == eSCENENODE_NONLEAF )
|
if( node->type == eSCENENODE_NONLEAF )
|
||||||
{ /* first leaf allocation on this branch */
|
{
|
||||||
|
/* first leaf allocation on this branch */
|
||||||
node->type = type;
|
node->type = type;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
@ -1062,7 +1048,7 @@ NewSceneNode( running_machine &machine, UINT32 zsortvalue24, SceneNodeType type
|
|||||||
prev->data.nonleaf.next[hash] = leaf;
|
prev->data.nonleaf.next[hash] = leaf;
|
||||||
return leaf;
|
return leaf;
|
||||||
}
|
}
|
||||||
} /* NewSceneNode */
|
}
|
||||||
|
|
||||||
|
|
||||||
static void RenderSprite(running_machine &machine, bitmap_rgb32 &bitmap, struct SceneNode *node )
|
static void RenderSprite(running_machine &machine, bitmap_rgb32 &bitmap, struct SceneNode *node )
|
||||||
@ -1097,9 +1083,9 @@ static void RenderSprite(running_machine &machine, bitmap_rgb32 &bitmap, struct
|
|||||||
0xff - node->data.sprite.translucency
|
0xff - node->data.sprite.translucency
|
||||||
);
|
);
|
||||||
i++;
|
i++;
|
||||||
} /* next col */
|
}
|
||||||
} /* next row */
|
}
|
||||||
} /* RenderSprite */
|
}
|
||||||
|
|
||||||
static void RenderSceneHelper(running_machine &machine, bitmap_rgb32 &bitmap, struct SceneNode *node )
|
static void RenderSceneHelper(running_machine &machine, bitmap_rgb32 &bitmap, struct SceneNode *node )
|
||||||
{
|
{
|
||||||
@ -1160,7 +1146,7 @@ static void RenderSceneHelper(running_machine &machine, bitmap_rgb32 &bitmap, st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* RenderSceneHelper */
|
}
|
||||||
|
|
||||||
static void RenderScene(running_machine &machine, bitmap_rgb32 &bitmap )
|
static void RenderScene(running_machine &machine, bitmap_rgb32 &bitmap )
|
||||||
{
|
{
|
||||||
@ -1174,10 +1160,9 @@ static void RenderScene(running_machine &machine, bitmap_rgb32 &bitmap )
|
|||||||
}
|
}
|
||||||
poly3d_NoClip();
|
poly3d_NoClip();
|
||||||
poly_wait(state->m_poly, "DrawPolygons");
|
poly_wait(state->m_poly, "DrawPolygons");
|
||||||
} /* RenderScene */
|
}
|
||||||
|
|
||||||
static float
|
static float DspFloatToNativeFloat( UINT32 iVal )
|
||||||
DspFloatToNativeFloat( UINT32 iVal )
|
|
||||||
{
|
{
|
||||||
INT16 mantissa = (INT16)iVal;
|
INT16 mantissa = (INT16)iVal;
|
||||||
float result = mantissa;//?((float)mantissa):((float)0x10000);
|
float result = mantissa;//?((float)mantissa):((float)0x10000);
|
||||||
@ -1188,10 +1173,9 @@ DspFloatToNativeFloat( UINT32 iVal )
|
|||||||
exponent++;
|
exponent++;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} /* DspFloatToNativeFloat */
|
}
|
||||||
|
|
||||||
static INT32
|
static INT32 GetPolyData( namcos22_state *state, INT32 addr )
|
||||||
GetPolyData( namcos22_state *state, INT32 addr )
|
|
||||||
{
|
{
|
||||||
UINT32 result;
|
UINT32 result;
|
||||||
if( addr<0 || addr>=state->m_PtRomSize )
|
if( addr<0 || addr>=state->m_PtRomSize )
|
||||||
@ -1217,10 +1201,9 @@ GetPolyData( namcos22_state *state, INT32 addr )
|
|||||||
if( result&0x00800000 )
|
if( result&0x00800000 )
|
||||||
result |= 0xff000000; /* sign extend */
|
result |= 0xff000000; /* sign extend */
|
||||||
return result;
|
return result;
|
||||||
} /* GetPolyData */
|
}
|
||||||
|
|
||||||
UINT32
|
UINT32 namcos22_point_rom_r( running_machine &machine, offs_t offs )
|
||||||
namcos22_point_rom_r( running_machine &machine, offs_t offs )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
return GetPolyData(state, offs & 0x00ffffff);
|
return GetPolyData(state, offs & 0x00ffffff);
|
||||||
@ -1314,8 +1297,7 @@ static void namcos22s_recalc_czram( running_machine &machine )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void InitXYAttrToPixel( namcos22_state *state )
|
||||||
InitXYAttrToPixel( namcos22_state *state )
|
|
||||||
{
|
{
|
||||||
unsigned attr,x,y,ix,iy,temp;
|
unsigned attr,x,y,ix,iy,temp;
|
||||||
for( attr=0; attr<16; attr++ )
|
for( attr=0; attr<16; attr++ )
|
||||||
@ -1332,10 +1314,9 @@ InitXYAttrToPixel( namcos22_state *state )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* InitXYAttrToPixel */
|
}
|
||||||
|
|
||||||
static void
|
static void PatchTexture( namcos22_state *state )
|
||||||
PatchTexture( namcos22_state *state )
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
switch( state->m_gametype )
|
switch( state->m_gametype )
|
||||||
@ -1359,10 +1340,9 @@ PatchTexture( namcos22_state *state )
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} /* PatchTexture */
|
}
|
||||||
|
|
||||||
void
|
void namcos22_draw_direct_poly( running_machine &machine, const UINT16 *pSource )
|
||||||
namcos22_draw_direct_poly( running_machine &machine, const UINT16 *pSource )
|
|
||||||
{
|
{
|
||||||
if (machine.video().skip_this_frame()) return;
|
if (machine.video().skip_this_frame()) return;
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
@ -1462,15 +1442,15 @@ namcos22_draw_direct_poly( running_machine &machine, const UINT16 *pSource )
|
|||||||
node->data.quad3d.vy = 0;
|
node->data.quad3d.vy = 0;
|
||||||
node->data.quad3d.vw = -320;
|
node->data.quad3d.vw = -320;
|
||||||
node->data.quad3d.vh = -240;
|
node->data.quad3d.vh = -240;
|
||||||
} /* namcos22_draw_direct_poly */
|
}
|
||||||
|
|
||||||
static void
|
static void Prepare3dTexture( running_machine &machine, void *pTilemapROM, const void *pTextureROM )
|
||||||
Prepare3dTexture( running_machine &machine, void *pTilemapROM, const void *pTextureROM )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
int i;
|
int i;
|
||||||
assert( pTilemapROM && pTextureROM );
|
assert( pTilemapROM && pTextureROM );
|
||||||
{ /* following setup is Namco System 22 specific */
|
{
|
||||||
|
/* following setup is Namco System 22 specific */
|
||||||
const UINT8 *pPackedTileAttr = 0x200000 + (UINT8 *)pTilemapROM;
|
const UINT8 *pPackedTileAttr = 0x200000 + (UINT8 *)pTilemapROM;
|
||||||
UINT8 *pUnpackedTileAttr = auto_alloc_array(machine, UINT8, 0x080000*2);
|
UINT8 *pUnpackedTileAttr = auto_alloc_array(machine, UINT8, 0x080000*2);
|
||||||
{
|
{
|
||||||
@ -1487,20 +1467,9 @@ Prepare3dTexture( running_machine &machine, void *pTilemapROM, const void *pText
|
|||||||
PatchTexture(state);
|
PatchTexture(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* Prepare3dTexture */
|
}
|
||||||
|
|
||||||
static void
|
static void DrawSpritesHelper(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT32 *pBase, const UINT32 *pSource, const UINT32 *pPal, int num_sprites, int deltax, int deltay, int y_lowres)
|
||||||
DrawSpritesHelper(
|
|
||||||
running_machine &machine,
|
|
||||||
bitmap_rgb32 &bitmap,
|
|
||||||
const rectangle &cliprect,
|
|
||||||
UINT32 *pBase,
|
|
||||||
const UINT32 *pSource,
|
|
||||||
const UINT32 *pPal,
|
|
||||||
int num_sprites,
|
|
||||||
int deltax,
|
|
||||||
int deltay,
|
|
||||||
int y_lowres )
|
|
||||||
{
|
{
|
||||||
for( int i=0; i<num_sprites; i++ )
|
for( int i=0; i<num_sprites; i++ )
|
||||||
{
|
{
|
||||||
@ -1624,10 +1593,9 @@ DrawSpritesHelper(
|
|||||||
pSource += 4;
|
pSource += 4;
|
||||||
pPal += 2;
|
pPal += 2;
|
||||||
}
|
}
|
||||||
} /* DrawSpritesHelper */
|
}
|
||||||
|
|
||||||
static void
|
static void DrawSprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect )
|
||||||
DrawSprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
UINT32 *spriteram32 = state->m_spriteram;
|
UINT32 *spriteram32 = state->m_spriteram;
|
||||||
@ -1738,7 +1706,7 @@ DrawSprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cl
|
|||||||
pPal = &state->m_vics_data[(state->m_vics_control[0x78/4]&0xffff)/4];
|
pPal = &state->m_vics_data[(state->m_vics_control[0x78/4]&0xffff)/4];
|
||||||
DrawSpritesHelper( machine, bitmap, cliprect, spriteram32, pSource, pPal, num_sprites, deltax, deltay, y_lowres );
|
DrawSpritesHelper( machine, bitmap, cliprect, spriteram32, pSource, pPal, num_sprites, deltax, deltay, y_lowres );
|
||||||
}
|
}
|
||||||
} /* DrawSprites */
|
}
|
||||||
|
|
||||||
READ32_MEMBER(namcos22_state::namcos22s_vics_control_r)
|
READ32_MEMBER(namcos22_state::namcos22s_vics_control_r)
|
||||||
{
|
{
|
||||||
@ -1789,7 +1757,7 @@ static void UpdatePalette(running_machine &machine)
|
|||||||
state->m_dirtypal[i] = 0;
|
state->m_dirtypal[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* UpdatePalette */
|
}
|
||||||
|
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(namcos22_state::TextTilemapGetInfo)
|
TILE_GET_INFO_MEMBER(namcos22_state::TextTilemapGetInfo)
|
||||||
@ -2100,12 +2068,12 @@ static void DrawCharacterLayer(running_machine &machine, bitmap_rgb32 &bitmap, c
|
|||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
static INT32
|
static INT32 Signed18( UINT32 value )
|
||||||
Signed18( UINT32 value )
|
|
||||||
{
|
{
|
||||||
INT32 offset = value&0x03ffff;
|
INT32 offset = value&0x03ffff;
|
||||||
if( offset&0x20000 )
|
if( offset&0x20000 )
|
||||||
{ /* sign extend */
|
{
|
||||||
|
/* sign extend */
|
||||||
offset |= ~0x03ffff;
|
offset |= ~0x03ffff;
|
||||||
}
|
}
|
||||||
return offset;
|
return offset;
|
||||||
@ -2144,16 +2112,7 @@ Signed18( UINT32 value )
|
|||||||
* 0x07350 - guardrail
|
* 0x07350 - guardrail
|
||||||
* 0x061a8 - red car
|
* 0x061a8 - red car
|
||||||
*/
|
*/
|
||||||
static void
|
static void BlitQuadHelper(running_machine &machine, bitmap_rgb32 &bitmap, unsigned color, unsigned addr, float m[4][4], INT32 polygonShiftValue22, int flags, int packetFormat)
|
||||||
BlitQuadHelper(
|
|
||||||
running_machine &machine,
|
|
||||||
bitmap_rgb32 &bitmap,
|
|
||||||
unsigned color,
|
|
||||||
unsigned addr,
|
|
||||||
float m[4][4],
|
|
||||||
INT32 polygonShiftValue22, /* 22 bits */
|
|
||||||
int flags,
|
|
||||||
int packetFormat )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
int absolutePriority = state->m_AbsolutePriority;
|
int absolutePriority = state->m_AbsolutePriority;
|
||||||
@ -2292,10 +2251,9 @@ BlitQuadHelper(
|
|||||||
node->data.quad3d.vy = mCamera.vy;
|
node->data.quad3d.vy = mCamera.vy;
|
||||||
node->data.quad3d.vw = mCamera.vw;
|
node->data.quad3d.vw = mCamera.vw;
|
||||||
node->data.quad3d.vh = mCamera.vh;
|
node->data.quad3d.vh = mCamera.vh;
|
||||||
} /* BlitQuadHelper */
|
}
|
||||||
|
|
||||||
static void
|
static void RegisterNormals( namcos22_state *state, INT32 addr, float m[4][4] )
|
||||||
RegisterNormals( namcos22_state *state, INT32 addr, float m[4][4] )
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for( i=0; i<4; i++ )
|
for( i=0; i<4; i++ )
|
||||||
@ -2312,10 +2270,9 @@ RegisterNormals( namcos22_state *state, INT32 addr, float m[4][4] )
|
|||||||
dotproduct = 0.0f;
|
dotproduct = 0.0f;
|
||||||
state->m_LitSurfaceInfo[state->m_LitSurfaceCount++] = mCamera.ambient + mCamera.power*dotproduct;
|
state->m_LitSurfaceInfo[state->m_LitSurfaceCount++] = mCamera.ambient + mCamera.power*dotproduct;
|
||||||
}
|
}
|
||||||
} /* RegisterNormals */
|
}
|
||||||
|
|
||||||
static void
|
static void BlitQuads( running_machine &machine, bitmap_rgb32 &bitmap, INT32 addr, float m[4][4], INT32 base )
|
||||||
BlitQuads( running_machine &machine, bitmap_rgb32 &bitmap, INT32 addr, float m[4][4], INT32 base )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
// int numAdditionalNormals = 0;
|
// int numAdditionalNormals = 0;
|
||||||
@ -2403,10 +2360,9 @@ BlitQuads( running_machine &machine, bitmap_rgb32 &bitmap, INT32 addr, float m[4
|
|||||||
}
|
}
|
||||||
addr += packetLength;
|
addr += packetLength;
|
||||||
}
|
}
|
||||||
} /* BlitQuads */
|
}
|
||||||
|
|
||||||
static void
|
static void BlitPolyObject( running_machine &machine, bitmap_rgb32 &bitmap, int code, float M[4][4] )
|
||||||
BlitPolyObject( running_machine &machine, bitmap_rgb32 &bitmap, int code, float M[4][4] )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
unsigned addr1 = GetPolyData(state, code);
|
unsigned addr1 = GetPolyData(state, code);
|
||||||
@ -2419,7 +2375,7 @@ BlitPolyObject( running_machine &machine, bitmap_rgb32 &bitmap, int code, float
|
|||||||
break;
|
break;
|
||||||
BlitQuads( machine, bitmap, addr2, M, code );
|
BlitQuads( machine, bitmap, addr2, M, code );
|
||||||
}
|
}
|
||||||
} /* BlitPolyObject */
|
}
|
||||||
|
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
|
|
||||||
@ -2484,8 +2440,7 @@ WRITE32_MEMBER(namcos22_state::namcos22_dspram_w)
|
|||||||
* 0x5: transform
|
* 0x5: transform
|
||||||
* >=0x45: draw primitive
|
* >=0x45: draw primitive
|
||||||
*/
|
*/
|
||||||
static void
|
static void HandleBB0003( namcos22_state *state, const INT32 *pSource )
|
||||||
HandleBB0003( namcos22_state *state, const INT32 *pSource )
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
bb0003 or 3b0003
|
bb0003 or 3b0003
|
||||||
@ -2532,10 +2487,9 @@ HandleBB0003( namcos22_state *state, const INT32 *pSource )
|
|||||||
state->m_ViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[0x14]);
|
state->m_ViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[0x14]);
|
||||||
|
|
||||||
TransformNormal( &mCamera.lx, &mCamera.ly, &mCamera.lz, state->m_ViewMatrix );
|
TransformNormal( &mCamera.lx, &mCamera.ly, &mCamera.lz, state->m_ViewMatrix );
|
||||||
} /* HandleBB0003 */
|
}
|
||||||
|
|
||||||
static void
|
static void Handle200002( running_machine &machine, bitmap_rgb32 &bitmap, const INT32 *pSource )
|
||||||
Handle200002( running_machine &machine, bitmap_rgb32 &bitmap, const INT32 *pSource )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
if( state->m_PrimitiveID>=0x45 )
|
if( state->m_PrimitiveID>=0x45 )
|
||||||
@ -2568,10 +2522,9 @@ Handle200002( running_machine &machine, bitmap_rgb32 &bitmap, const INT32 *pSour
|
|||||||
logerror( "Handle200002:unk code=0x%x\n", state->m_PrimitiveID );
|
logerror( "Handle200002:unk code=0x%x\n", state->m_PrimitiveID );
|
||||||
// ridgerac title screen waving flag: 0x5
|
// ridgerac title screen waving flag: 0x5
|
||||||
}
|
}
|
||||||
} /* Handle200002 */
|
}
|
||||||
|
|
||||||
static void
|
static void Handle300000( namcos22_state *state, const INT32 *pSource )
|
||||||
Handle300000( namcos22_state *state, const INT32 *pSource )
|
|
||||||
{
|
{
|
||||||
state->m_ViewMatrix[0][0] = DSP_FIXED_TO_FLOAT(pSource[1]);
|
state->m_ViewMatrix[0][0] = DSP_FIXED_TO_FLOAT(pSource[1]);
|
||||||
state->m_ViewMatrix[1][0] = DSP_FIXED_TO_FLOAT(pSource[2]);
|
state->m_ViewMatrix[1][0] = DSP_FIXED_TO_FLOAT(pSource[2]);
|
||||||
@ -2586,8 +2539,7 @@ Handle300000( namcos22_state *state, const INT32 *pSource )
|
|||||||
state->m_ViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[9]);
|
state->m_ViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[9]);
|
||||||
} /* Handle300000 */
|
} /* Handle300000 */
|
||||||
|
|
||||||
static void
|
static void Handle233002( namcos22_state *state, const INT32 *pSource )
|
||||||
Handle233002( namcos22_state *state, const INT32 *pSource )
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
00233002
|
00233002
|
||||||
@ -2601,10 +2553,9 @@ Handle233002( namcos22_state *state, const INT32 *pSource )
|
|||||||
*/
|
*/
|
||||||
state->m_cz_adjust = (pSource[1] & 0x00800000) ? pSource[1] | 0xff000000 : pSource[1] & 0x00ffffff;
|
state->m_cz_adjust = (pSource[1] & 0x00800000) ? pSource[1] | 0xff000000 : pSource[1] & 0x00ffffff;
|
||||||
state->m_ObjectShiftValue22 = pSource[2];
|
state->m_ObjectShiftValue22 = pSource[2];
|
||||||
} /* Handle233002 */
|
}
|
||||||
|
|
||||||
static void
|
static void SimulateSlaveDSP( running_machine &machine, bitmap_rgb32 &bitmap )
|
||||||
SimulateSlaveDSP( running_machine &machine, bitmap_rgb32 &bitmap )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
const INT32 *pSource = 0x300 + (INT32 *)state->m_polygonram.target();
|
const INT32 *pSource = 0x300 + (INT32 *)state->m_polygonram.target();
|
||||||
@ -2663,14 +2614,14 @@ SimulateSlaveDSP( running_machine &machine, bitmap_rgb32 &bitmap )
|
|||||||
pSource++; /* always 0xffff */
|
pSource++; /* always 0xffff */
|
||||||
next = (INT16)*pSource++; /* link to next command */
|
next = (INT16)*pSource++; /* link to next command */
|
||||||
if( (next&0x7fff) != (pSource - (INT32 *)state->m_polygonram.target()) )
|
if( (next&0x7fff) != (pSource - (INT32 *)state->m_polygonram.target()) )
|
||||||
{ /* end of list */
|
{
|
||||||
|
/* end of list */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} /* for(;;) */
|
}
|
||||||
} /* SimulateSlaveDSP */
|
}
|
||||||
|
|
||||||
static void
|
static void DrawPolygons( running_machine &machine, bitmap_rgb32 &bitmap )
|
||||||
DrawPolygons( running_machine &machine, bitmap_rgb32 &bitmap )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
if( state->m_bDSPisActive )
|
if( state->m_bDSPisActive )
|
||||||
@ -2678,10 +2629,9 @@ DrawPolygons( running_machine &machine, bitmap_rgb32 &bitmap )
|
|||||||
SimulateSlaveDSP( machine, bitmap );
|
SimulateSlaveDSP( machine, bitmap );
|
||||||
poly_wait(state->m_poly, "DrawPolygons");
|
poly_wait(state->m_poly, "DrawPolygons");
|
||||||
}
|
}
|
||||||
} /* DrawPolygons */
|
}
|
||||||
|
|
||||||
void
|
void namcos22_enable_slave_simulation( running_machine &machine, int enable )
|
||||||
namcos22_enable_slave_simulation( running_machine &machine, int enable )
|
|
||||||
{
|
{
|
||||||
namcos22_state *state = machine.driver_data<namcos22_state>();
|
namcos22_state *state = machine.driver_data<namcos22_state>();
|
||||||
state->m_bDSPisActive = enable;
|
state->m_bDSPisActive = enable;
|
||||||
@ -2921,7 +2871,7 @@ READ16_MEMBER(namcos22_state::namcos22_dspram16_r)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return (UINT16)value;
|
return (UINT16)value;
|
||||||
} /* namcos22_dspram16_r */
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(namcos22_state::namcos22_dspram16_w)
|
WRITE16_MEMBER(namcos22_state::namcos22_dspram16_w)
|
||||||
{
|
{
|
||||||
@ -2947,4 +2897,4 @@ WRITE16_MEMBER(namcos22_state::namcos22_dspram16_w)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m_polygonram[offset] = (hi<<16)|lo;
|
m_polygonram[offset] = (hi<<16)|lo;
|
||||||
} /* namcos22_dspram16_w */
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user