Fix a typo in BPFunctions causing a PanicAlert in SW:RS2.

Really minor bugfix in DX9.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7285 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
sl1nk3.s
2011-03-04 23:14:21 +00:00
parent c569b33829
commit e8a1c04abf
3 changed files with 38 additions and 15 deletions

View File

@ -140,6 +140,15 @@ void ClearScreen(const BPCmd &bp, const EFBRectangle &rc)
void OnPixelFormatChange(const BPCmd &bp)
{
int convtype = -1;
u32 current_format = Renderer::GetPrevPixelFormat();
u32 new_format = bpmem.zcontrol.pixel_format;
u32 old_format = current_format & 0x3;
// Check for Z compression format change
// When using 16bit Z, the game may enable a special compression format which we need to handle
// If we don't, Z values will be completely screwed up, currently only Star Wars:RS2 uses that.
//if (new_format == PIXELFMT_RGB565_Z16 && bpmem.zcontrol.zformat != (current_format >> 2))
// VertexShaderManager::SetZformatChanged();
/*
* When changing the EFB format, the pixel data won't get converted to the new format but stays the same.
@ -150,14 +159,12 @@ void OnPixelFormatChange(const BPCmd &bp)
!g_ActiveConfig.backend_info.bSupportsFormatReinterpretation)
return;
unsigned int new_format = bpmem.zcontrol.pixel_format;
unsigned int old_format = Renderer::GetPrevPixelFormat();
// no need to reinterpret pixel data in these cases
// no need to reinterpret pixel data in that cases
if (new_format == old_format || old_format == (unsigned int)-1)
goto skip;
switch (old_format)
// Check for pixel format changes
switch (old_format & 0x3)
{
case PIXELFMT_RGB8_Z24:
case PIXELFMT_Z24:
@ -183,21 +190,26 @@ void OnPixelFormatChange(const BPCmd &bp)
if (new_format == PIXELFMT_RGB8_Z24 ||
new_format == PIXELFMT_Z24)
convtype = 4;
else if (new_format == PIXELFMT_RGB565_Z16)
else if (new_format == PIXELFMT_RGBA6_Z24)
convtype = 5;
break;
default:
break;
}
if (convtype == -1)
{
PanicAlert("Unhandled EFB format change: %d to %d\n", old_format, new_format);
ERROR_LOG(VIDEO, "Unhandled EFB format change: %d to %d\n", old_format & 0x3, new_format);
goto skip;
}
g_renderer->ReinterpretPixelData(convtype);
skip:
Renderer::StorePixelFormat(new_format);
DEBUG_LOG(VIDEO, "pixelfmt: pixel=%d, zc=%d", new_format, bpmem.zcontrol.zformat);
Renderer::StorePixelFormat(new_format | (bpmem.zcontrol.zformat << 2));
}
bool GetConfig(const int &type)