cleanup: double-line functions, some comments

This commit is contained in:
Michaël Banaan Ananas 2013-01-25 20:30:59 +00:00
parent 57212c3957
commit d4dcfe0a01
2 changed files with 133 additions and 182 deletions

View File

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

View File

@ -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 */ }