Some old GPU has only 16bit video output; Correct this, Add notes

This commit is contained in:
cam900 2018-07-21 18:59:07 +09:00
parent a471d0d3c0
commit 6b99567a17
2 changed files with 27 additions and 5 deletions

View File

@ -44,10 +44,19 @@ void psxgpu_device::device_start()
if (type() == CXD8538Q) if (type() == CXD8538Q)
{ {
m_15bit = true; // VRAM, 16bit Video ouptut
psx_gpu_init( 1 ); psx_gpu_init( 1 );
} }
else else
{ {
if (type() == CXD8514Q)
{
m_15bit = true; // VRAM, 16bit Video ouptut
}
else
{
m_15bit = false; // SGRAM, 24bit Video output
}
psx_gpu_init( 2 ); psx_gpu_init( 2 );
} }
} }
@ -541,11 +550,22 @@ void psxgpu_device::psx_gpu_init( int n_gputype )
p_n_greenb1[ n_level ] = ( ( n_level >> 5 ) & ( MAX_LEVEL - 1 ) ) * MAX_LEVEL; p_n_greenb1[ n_level ] = ( ( n_level >> 5 ) & ( MAX_LEVEL - 1 ) ) * MAX_LEVEL;
p_n_blueb1[ n_level ] = ( ( n_level >> 10 ) & ( MAX_LEVEL - 1 ) ) * MAX_LEVEL; p_n_blueb1[ n_level ] = ( ( n_level >> 10 ) & ( MAX_LEVEL - 1 ) ) * MAX_LEVEL;
/* 24bit to 15 bit conversion */ if (m_15bit)
p_n_g0r0[ n_level ] = ( ( ( n_level >> 8 ) & 0xff ) << 8 ) | ( ( ( n_level >> 0 ) & 0xff ) << 16 ); {
p_n_b0[ n_level ] = ( ( n_level >> 0 ) & 0xff ) << 0; /* 24bit to 15 bit conversion */
p_n_r1[ n_level ] = ( ( n_level >> 8 ) & 0xff ) << 16; p_n_g0r0[ n_level ] = ( pal5bit( n_level >> 11 ) << 8 ) | ( pal5bit( n_level >> 3 ) << 16 );
p_n_b1g1[ n_level ] = ( ( ( n_level >> 8 ) & 0xff ) << 0 ) | ( ( ( n_level >> 0 ) & 0xff ) << 8 ); p_n_b0[ n_level ] = pal5bit( n_level >> 3 ) << 0;
p_n_r1[ n_level ] = pal5bit( n_level >> 11 ) << 16;
p_n_b1g1[ n_level ] = ( pal5bit( n_level >> 11 ) << 0 ) | ( pal5bit( n_level >> 3 ) << 8 );
}
else
{
/* 24bit color output */
p_n_g0r0[ n_level ] = ( ( ( n_level >> 8 ) & 0xff ) << 8 ) | ( ( ( n_level >> 0 ) & 0xff ) << 16 );
p_n_b0[ n_level ] = ( ( n_level >> 0 ) & 0xff ) << 0;
p_n_r1[ n_level ] = ( ( n_level >> 8 ) & 0xff ) << 16;
p_n_b1g1[ n_level ] = ( ( ( n_level >> 8 ) & 0xff ) << 0 ) | ( ( ( n_level >> 0 ) & 0xff ) << 8 );
}
} }
for( n_level = 0; n_level < MAX_LEVEL; n_level++ ) for( n_level = 0; n_level < MAX_LEVEL; n_level++ )

View File

@ -233,6 +233,8 @@ private:
void gpu_read( uint32_t *p_ram, int32_t n_size ); void gpu_read( uint32_t *p_ram, int32_t n_size );
void gpu_write( uint32_t *p_ram, int32_t n_size ); void gpu_write( uint32_t *p_ram, int32_t n_size );
bool m_15bit;
int32_t m_n_tx; int32_t m_n_tx;
int32_t m_n_ty; int32_t m_n_ty;
int32_t n_abr; int32_t n_abr;