Compare commits

..
Author SHA1 Message Date
ZiemasandTy ca03806a4c EE/IOP: Fix loading elf's through relative path 2026-08-13 14:52:05 -04:00
5 changed files with 8 additions and 20 deletions
-5
View File
@@ -25662,7 +25662,6 @@ SLES-54138:
preloadFrameData: 1 # Fixes menu graphics.
autoFlush: 1 # Fixes motion blur.
minimumBlendingLevel: 2 # Improves post effects.
limit24BitDepth: 2 # Fixes icon brightness.
SLES-54139:
name: "Earache - Extreme Metal Racing"
region: "PAL-E"
@@ -26319,7 +26318,6 @@ SLES-54335:
preloadFrameData: 1 # Fixes menu graphics.
autoFlush: 1 # Fixes motion blur.
minimumBlendingLevel: 2 # Improves post effects.
limit24BitDepth: 2 # Fixes icon brightness.
SLES-54336:
name: "Lumines Plus"
region: "PAL-M5"
@@ -71847,7 +71845,6 @@ SLUS-21344:
preloadFrameData: 1 # Fixes menu graphics.
autoFlush: 1 # Fixes motion blur.
minimumBlendingLevel: 2 # Improves post effects.
limit24BitDepth: 2 # Fixes icon brightness.
SLUS-21345:
name: "Grandia III [Disc 2 of 2]"
region: "NTSC-U"
@@ -75406,7 +75403,6 @@ SLUS-28061:
preloadFrameData: 1 # Fixes menu graphics.
autoFlush: 1 # Fixes motion blur.
minimumBlendingLevel: 2 # Improves post effects.
limit24BitDepth: 2 # Fixes icon brightness.
SLUS-28062:
name: "Dance Factory [Trade Demo]"
region: "NTSC-U"
@@ -76193,7 +76189,6 @@ SLUS-29188:
preloadFrameData: 1 # Fixes menu graphics.
autoFlush: 1 # Fixes motion blur.
minimumBlendingLevel: 2 # Improves post effects.
limit24BitDepth: 2 # Fixes icon brightness.
SLUS-29189:
name: "FIFA World Cup - Germany 2006 [Demo]"
region: "NTSC-U"
+1 -2
View File
@@ -3939,8 +3939,7 @@ void GSRendererHW::Draw()
if (next_ctx.FRAME.Block() == FRAME_TEX0.TBP0 && next_ctx.FRAME.PSM != FRAME_TEX0.PSM)
FRAME_TEX0.PSM = next_ctx.FRAME.PSM;
// Be careful of the next draw being a channel shuffle!
else if (next_ctx.TEX0.TBP0 == FRAME_TEX0.TBP0 && next_ctx.TEX0.PSM != FRAME_TEX0.PSM && GSLocalMemory::m_psm[next_ctx.TEX0.PSM].trbpp >= 16)
else if (next_ctx.TEX0.TBP0 == FRAME_TEX0.TBP0 && next_ctx.TEX0.PSM != FRAME_TEX0.PSM)
FRAME_TEX0.PSM = next_ctx.TEX0.PSM;
else
FRAME_TEX0.PSM = PSMCT32; // Guess full color if no upcoming hint, it'll fix itself later.
+1 -10
View File
@@ -2580,21 +2580,12 @@ GSTextureCache::Target* GSTextureCache::LookupDrawTarget(GIFRegTEX0 TEX0, const
{
// Some games misuse the scissor so it ends up valid 1 pixel over, which causes hell for us. So check if it still overlaps without the extra pixel.
const GSVector4i adjusted_valid = GSVector4i(t->m_valid.x, t->m_valid.y, std::min(t->m_valid.z, static_cast<int>(t->m_TEX0.TBW) * 64), t->m_valid.w - 1);
u32 adjusted_endblock = GSLocalMemory::GetUnwrappedEndBlockAddress(t->m_TEX0.TBP0, t->m_TEX0.TBW, t->m_TEX0.PSM, adjusted_valid);
const u32 adjusted_endblock = GSLocalMemory::GetEndBlockAddress(t->m_TEX0.TBP0, t->m_TEX0.TBW, t->m_TEX0.PSM, adjusted_valid);
if (adjusted_endblock <= bp)
{
i++;
continue;
}
const GSVector4i adjusted_rect = GSVector4i(min_rect.x, min_rect.y, std::min(min_rect.z, static_cast<int>(t->m_TEX0.TBW) * 64), min_rect.w - 1);
// Also check the offset from the bp to the current request to see if it overlaps the begining of the selected target.
adjusted_endblock = GSLocalMemory::GetUnwrappedEndBlockAddress(TEX0.TBP0, TEX0.TBW, TEX0.PSM, adjusted_rect);
if (adjusted_endblock <= t->m_TEX0.TBP0)
{
i++;
continue;
}
const GSLocalMemory::psm_t& s_psm = GSLocalMemory::m_psm[TEX0.PSM];
const u32 widthpage_offset = (std::abs(static_cast<int>(bp - t->m_TEX0.TBP0)) >> 5) % std::max(t->m_TEX0.TBW, 1U);
const bool is_aligned_ok = widthpage_offset == 0 || ((min_rect.width() <= static_cast<int>((t->m_TEX0.TBW - widthpage_offset) * 64) && (t->m_TEX0.TBW == TEX0.TBW || TEX0.TBW == 1)) && bp >= t->m_TEX0.TBP0);
+3 -2
View File
@@ -83,8 +83,9 @@ static std::string hostRoot;
void Hle_SetHostRoot(const char* bootFilename)
{
hostRoot = Path::ToNativePath(Path::GetDirectory(bootFilename));
Console.WriteLn("HLE Host: Set 'host:' root path to: %s\n", hostRoot.c_str());
std::string path = Path::RealPath(bootFilename);
hostRoot = Path::ToNativePath(Path::GetDirectory(path));
Console.WriteLn("HLE Host: Set 'host:' root path to: %s", hostRoot.c_str());
}
void Hle_ClearHostRoot()
+3 -1
View File
@@ -3,6 +3,7 @@
#include "Common.h"
#include "common/Path.h"
#include "common/StringUtil.h"
#include "ps2/BiosTools.h"
#include "R5900.h"
@@ -671,7 +672,8 @@ void eeloadHook()
const std::string& elf_override = VMManager::Internal::GetELFOverride();
if (!elf_override.empty())
{
elfname = fmt::format("host:{}", elf_override);
// The host: root should be directory containg the elf, so get only the filename part
elfname = fmt::format("host:{}", Path::GetFileName(elf_override));
}
else
{