Opened 8 months ago

Last modified 5 months ago

#12585 new defect

PSP: Pixel Format RGBA8888@4 is not supported

Reported by: lolbot-iichan Owned by:
Priority: normal Component: Port: PSP
Version: Keywords:
Cc: Game: Wintermute

Description

NOTE:
RGBA8888@4 is Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0)
It's explicitly used at various engines: Full Pipe, Gnap (little endian), Griffon, Groovie 2, SCI32 (HQ videos), Sludge, Sword25, Ultima 8, Wintermute

TESTCASE 1:

  1. Download nightly build (e.g. https://buildbot.scummvm.org/snapshots/master/psp-master-01e08d5c.tar.xz)
  2. Unpack it to ms0:/PSP/GAME/ folder
  3. Download a Wintermute game (e.g. Chivalry is Not Dead, http://games.squinky.me/downloads/chivalry/chivalry.zip)
  4. Add this game and start it

EXPECTED RESULT:
Game starts

ACTUAL RESULT:
PSP becomes unresponsible and crashes

LOGS:
ms0:/PSP/GAME/psp-master-01e08d5c/SCUMMTRACE.TXT file is created with several lines:

Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): Unknown Scummvm pixel format.
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): 	rLoss[0], gLoss[0], bLoss[0], aLoss[0]
 	rShift[24], gShift[16], bShift[8], aShift[0]
Error in void Buffer::setPixelFormat(PSPPixelFormat::Type, bool): Unhandled buffer format[7]
Error in void PSPPixelFormat::set(PSPPixelFormat::Type, bool): Unhandled value of pixel type[7]
Error in void Palette::setPixelFormats(PSPPixelFormat::Type, PSPPixelFormat::Type, bool): Unhandled bufferType[7]
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): Unknown Scummvm pixel format.
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): 	rLoss[0], gLoss[0], bLoss[0], aLoss[0]
 	rShift[24], gShift[16], bShift[8], aShift[0]
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): Unknown Scummvm pixel format.
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): 	rLoss[0], gLoss[0], bLoss[0], aLoss[0]
 	rShift[24], gShift[16], bShift[8], aShift[0]
Error in void Buffer::setPixelFormat(PSPPixelFormat::Type, bool): Unhandled buffer format[7]
Error in void PSPPixelFormat::set(PSPPixelFormat::Type, bool): Unhandled value of pixel type[7]
Error in void Palette::setPixelFormats(PSPPixelFormat::Type, PSPPixelFormat::Type, bool): Unhandled bufferType[7]
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): Unknown Scummvm pixel format.
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): 	rLoss[0], gLoss[0], bLoss[0], aLoss[0]
	rShift[24], gShift[16], bShift[8], aShift[0]

TESTCASE 2:

  1. Download nightly build (e.g. https://buildbot.scummvm.org/snapshots/master/psp-master-01e08d5c.tar.xz)
  2. Unpack it to ms0:/PSP/GAME/ folder
  3. Download the Testbed files (scummvm/dists/engine-data/testbed-audiocd-files/ folder)
  4. Add Testbed as a game and start it
  5. Customize the testsuite list to run "Graphics Subsystem" tests
  6. Run all the tests

EXPECTED RESULT:
All the tests runs correctly

ACTUAL RESULT:
There are 2 tests dedicated to Pixel Formats.
First one shows Pixel Formats provided by backend. They are all fine.
Second one shows Pixel Formats explicitly requested for some engines. This test fails for "RGBA8888@4" format.
ScummVM displays garbade and becomes unusable.
However, it does not hangs which may be more useful (or less useful) for debugging.

LOGS:
ms0:/PSP/GAME/psp-master-01e08d5c/SCUMMTRACE.TXT file is created with several lines:

Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): Unknown Scummvm pixel format.
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): 	rLoss[0], gLoss[0], bLoss[0], aLoss[0]
	rShift[24], gShift[16], bShift[8], aShift[0]
Error in void Buffer::setPixelFormat(PSPPixelFormat::Type, bool): Unhandled buffer format[7]
Error in void PSPPixelFormat::set(PSPPixelFormat::Type, bool): Unhandled value of pixel type[7]
Error in void Palette::setPixelFormats(PSPPixelFormat::Type, PSPPixelFormat::Type, bool): Unhandled bufferType[7]
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): Unknown Scummvm pixel format.
Error in static void PSPPixelFormat::convertFromScummvmPixelFormat(const Graphics::PixelFormat*, PSPPixelFormat::Type&, PSPPixelFormat::Type&, bool&): 	rLoss[0], gLoss[0], bLoss[0], aLoss[0]
	rShift[24], gShift[16], bShift[8], aShift[0]
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping
Error in uint32 PSPPixelFormat::swapRedBlue32(uint32) const: invalid format[7] for swapping

Change History (2)

comment:1 by lolbot-iichan, 8 months ago

I wonder if it should be fixed at the port or at the engines...
Maybe it's fine to switch some of them (all of them) to supported ABGR8888@4 format?

comment:2 by sev-, 5 months ago

Priority: highnormal
Note: See TracTickets for help on using tickets.