mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-27 23:06:34 +02:00
Let sceMpeg LLE override the ForceHLEPsmf compat flag
Our psmf and psmfPlayer HLE plays video by calling our sceMpeg HLE, so it has nothing to talk to when the real mpeg.prx is running. The flag now gives way when sceMpeg is LLE. Moved below the force-enable and unavailable masks so it tests what sceMpeg actually ended up as rather than what was asked for. Also remove a bad assert. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
094d28d451
commit
19bac4894c
+11
-4
@@ -257,13 +257,20 @@ static DisableHLEFlags ComputeDisableHLEFlags() {
|
||||
if (PSP_CoreParameter().compat.flags().DisableHLESceFont) {
|
||||
flags |= DisableHLEFlags::sceFont;
|
||||
}
|
||||
if (PSP_CoreParameter().compat.flags().ForceHLEPsmf) {
|
||||
flags &= ~(DisableHLEFlags::scePsmf | DisableHLEFlags::scePsmfPlayer);
|
||||
}
|
||||
|
||||
flags &= ~(DisableHLEFlags)g_Config.iForceEnableHLE;
|
||||
// Anything whose firmware module isn't actually present stays HLE'd.
|
||||
flags &= ~g_unavailableDisableFlags;
|
||||
|
||||
// Our psmf and psmfPlayer HLE plays video by calling our sceMpeg HLE, so it has nothing to talk
|
||||
// to when the real mpeg.prx is running: the player sits in "not yet playing" forever and no
|
||||
// frame ever comes out. The two have to be on the same side, and since sceMpeg is the one we
|
||||
// now run for real by default, this compat flag gives way to it.
|
||||
//
|
||||
// Last, so it sees what sceMpeg actually ended up as rather than what was asked for - without a
|
||||
// module to run, sceMpeg is back on HLE and the flag means what it always did.
|
||||
if (PSP_CoreParameter().compat.flags().ForceHLEPsmf && !(flags & DisableHLEFlags::sceMpeg)) {
|
||||
flags &= ~(DisableHLEFlags::scePsmf | DisableHLEFlags::scePsmfPlayer);
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
@@ -527,7 +527,6 @@ TextureApplyResult TextureCacheCommon::ApplyTexture(bool doBind) {
|
||||
level = std::max(0, gstate.getTexLevelOffset16() / 16);
|
||||
}
|
||||
const u32 texaddr = gstate.getTextureAddress(level);
|
||||
_dbg_assert_(texaddr != 0);
|
||||
if (!Memory::IsValidTextureAddress(texaddr)) {
|
||||
// Bind a null texture and return.
|
||||
Unbind();
|
||||
|
||||
Reference in New Issue
Block a user