Soul Edge, fixed MT#03563 Li Long background colours [smf]

This commit is contained in:
smf- 2018-02-09 14:21:26 +00:00
parent 714b2af478
commit 264a9d7a4f
2 changed files with 14 additions and 9 deletions

View File

@ -120,8 +120,8 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c
void psxgpu_device::DebugMeshInit() void psxgpu_device::DebugMeshInit()
{ {
int width = screen().width(); int width = m_screen->width();
int height = screen().height(); int height = m_screen->height();
m_debug.b_mesh = 0; m_debug.b_mesh = 0;
m_debug.b_texture = 0; m_debug.b_texture = 0;
@ -136,8 +136,8 @@ void psxgpu_device::DebugMesh( int n_coordx, int n_coordy )
{ {
int n_coord; int n_coord;
int n_colour; int n_colour;
int width = screen().width(); int width = m_screen->width();
int height = screen().height(); int height = m_screen->height();
n_coordx += m_n_displaystartx; n_coordx += m_n_displaystartx;
n_coordy += n_displaystarty; n_coordy += n_displaystarty;
@ -334,8 +334,8 @@ int psxgpu_device::DebugTextureDisplay( bitmap_ind16 &bitmap )
if( m_debug.b_texture ) if( m_debug.b_texture )
{ {
int width = screen().width(); int width = m_screen->width();
int height = screen().height(); int height = m_screen->height();
for( n_y = 0; n_y < height; n_y++ ) for( n_y = 0; n_y < height; n_y++ )
{ {
@ -363,7 +363,7 @@ int psxgpu_device::DebugTextureDisplay( bitmap_ind16 &bitmap )
} }
p_n_interleave[ n_x ] = p_p_vram[ n_yi ][ n_xi ]; p_n_interleave[ n_x ] = p_p_vram[ n_yi ][ n_xi ];
} }
draw_scanline16( bitmap, 0, n_y, width, p_n_interleave, screen().palette().pens() ); draw_scanline16( bitmap, 0, n_y, width, p_n_interleave, m_screen->palette().pens() );
} }
} }
return m_debug.b_texture; return m_debug.b_texture;

View File

@ -76,9 +76,14 @@ keycus_c409_device::keycus_c409_device(const machine_config &mconfig, const char
READ16_MEMBER(keycus_c409_device::read) READ16_MEMBER(keycus_c409_device::read)
{ {
if( offset == 7 && m_p1 == 0x0006 && m_p2 == 0x0000 && m_p3 == 0x0013 ) if( offset == 7 )
{ {
return 0x000f; int a2 = (m_p1 - 0x01) & 0x1f;
int a3 = (0x20 - m_p1) & 0x1f;
int r = (((m_p2 & 0x1f) * a2) + ((m_p3 & 0x1f) * a3)) / 0x1f;
int g = ((((m_p2 >> 5) & 0x1f) * a2) + (((m_p3 >> 5) & 0x1f) * a3)) / 0x1f;
int b = ((((m_p2 >> 10) & 0x1f) * a2) + (((m_p3 >> 10) & 0x1f) * a3)) / 0x1f;
return r | (g << 5) | (b << 10);
} }
logerror( "keycus_c409_device::read unexpected offset=%d m_p1=%04x m_p2=%04x m_p3=%04x\n", offset, m_p1, m_p2, m_p3 ); logerror( "keycus_c409_device::read unexpected offset=%d m_p1=%04x m_p2=%04x m_p3=%04x\n", offset, m_p1, m_p2, m_p3 );