Merge pull request #12694 from Tilka/zelda4

DSPHLE/Zelda: set COMBINED_CMD_0D flag appropriately
This commit is contained in:
Tilka 2024-05-05 14:43:06 +01:00 committed by GitHub
commit 98529a9d2e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -91,30 +91,28 @@ static const std::map<u32, u32> UCODE_FLAGS = {
{0x56D36052, SYNC_PER_FRAME | NO_CMD_0D}, {0x56D36052, SYNC_PER_FRAME | NO_CMD_0D},
// The Legend of Zelda: The Wind Waker. // The Legend of Zelda: The Wind Waker.
{0x86840740, 0}, {0x86840740, 0},
// The Legend of Zelda: Collector's Edition (except Wind Waker).
// The Legend of Zelda: Four Swords Adventures. // The Legend of Zelda: Four Swords Adventures.
// Mario Kart: Double Dash. // Mario Kart: Double Dash.
// Pikmin 2 GC NTSC. // Pikmin 2 GC NTSC.
{0x2FCDF1EC, MAKE_DOLBY_LOUDER}, {0x2FCDF1EC, MAKE_DOLBY_LOUDER},
// The Legend of Zelda: Twilight Princess / GC. // The Legend of Zelda: Twilight Princess / GC.
// Donkey Kong Jungle Beat. // Donkey Kong Jungle Beat GC.
// //
// TODO: These do additional filtering at frame rendering time. We don't // TODO: These do additional filtering at frame rendering time. We don't
// implement this yet. // implement this yet.
{0x6CA33A6D, MAKE_DOLBY_LOUDER}, {0x6CA33A6D, MAKE_DOLBY_LOUDER | COMBINED_CMD_0D},
// The Legend of Zelda: Twilight Princess / Wii. // The Legend of Zelda: Twilight Princess / Wii.
{0x6C3F6F94, NO_ARAM | MAKE_DOLBY_LOUDER}, // Link's Crossbow Training.
{0x6C3F6F94, NO_ARAM | MAKE_DOLBY_LOUDER | COMBINED_CMD_0D},
// Super Mario Galaxy. // Super Mario Galaxy.
// Super Mario Galaxy 2. // Super Mario Galaxy 2.
{0xD643001F, NO_ARAM | MAKE_DOLBY_LOUDER}, // Donkey Kong Jungle Beat Wii.
{0xD643001F, NO_ARAM | MAKE_DOLBY_LOUDER | COMBINED_CMD_0D},
// Pikmin 1 New Play Control. // Pikmin 1 New Play Control.
{0xB7EB9A9C, NO_ARAM | MAKE_DOLBY_LOUDER | COMBINED_CMD_0D}, {0xB7EB9A9C, NO_ARAM | MAKE_DOLBY_LOUDER | COMBINED_CMD_0D},
// Pikmin 2 New Play Control. // Pikmin 2 New Play Control.
{0xEAEB38CC, NO_ARAM | MAKE_DOLBY_LOUDER}, {0xEAEB38CC, NO_ARAM | MAKE_DOLBY_LOUDER | COMBINED_CMD_0D},
// TODO: Other games that use this UCode (exhaustive list):
// * Link's Crossbow Training
// * The Legend of Zelda: Collector's Edition
// * The Legend of Zelda: Twilight Princess / Wii (type ????, CRC ????)
}; };
ZeldaUCode::ZeldaUCode(DSPHLE* dsphle, u32 crc) ZeldaUCode::ZeldaUCode(DSPHLE* dsphle, u32 crc)
@ -518,6 +516,7 @@ void ZeldaUCode::RunPendingCommands()
{ {
// Ignore the two values which are equivalent to arguments passed to // Ignore the two values which are equivalent to arguments passed to
// command 0D. // command 0D.
// Used by Pikmin 1 Wii.
Read32(); Read32();
Read32(); Read32();
} }
@ -559,6 +558,7 @@ void ZeldaUCode::RunPendingCommands()
break; break;
// Command 0D: TODO: find a name and implement. // Command 0D: TODO: find a name and implement.
// Used by Wind Waker.
case 0x0D: case 0x0D:
if (m_flags & NO_CMD_0D) if (m_flags & NO_CMD_0D)
{ {