Compare commits

...

4 Commits

Author SHA1 Message Date
Ziemas
d373cb602d IOP Debug: allow reading ROM 2025-03-22 11:42:26 -04:00
lightningterror
58f195fc04 GS/HW: Adjust AA1 draw behavior.
Make sure we use coverage alpha on aa1 draw when there's no blending.

Make sure we set coverage alpha to 128 in vertex trace alpha min max.

Some const and cast cleanup.
2025-03-20 20:44:31 +01:00
refractionpcsx2
f6675808fc GS/Runner: Set the screenshot compression low to stop slow dump times 2025-03-20 14:19:47 +00:00
PCSX2 Bot
aa64712354 [ci skip] Qt: Update Base Translation. 2025-03-20 11:14:07 +01:00
5 changed files with 60 additions and 43 deletions

View File

@@ -113,6 +113,10 @@ bool GSRunner::InitializeConfig()
si.SetBoolValue("EmuCore/GS", "FrameLimitEnable", false);
si.SetIntValue("EmuCore/GS", "VsyncEnable", false);
// Force screenshot quality settings to something more performant, overriding any defaults good for users.
si.SetIntValue("EmuCore/GS", "ScreenshotFormat", static_cast<int>(GSScreenshotFormat::PNG));
si.SetIntValue("EmuCore/GS", "ScreenshotQuality", 10);
// ensure all input sources are disabled, we're not using them
si.SetBoolValue("InputSources", "SDL", false);
si.SetBoolValue("InputSources", "XInput", false);

View File

@@ -5110,7 +5110,7 @@ Do you want to overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DebuggerWindow.cpp" line="330"/>
<location filename="../Debugger/DebuggerWindow.cpp" line="337"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
@@ -5123,160 +5123,160 @@ Do you want to overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="645"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="647"/>
<source>Copy Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="648"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="650"/>
<source>Copy Instruction Hex</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="673"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="675"/>
<source>NOP Instruction(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="678"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="680"/>
<source>Run to Cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="689"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="691"/>
<source>Follow Branch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="712"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="714"/>
<source>Add Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="275"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="715"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="277"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="717"/>
<source>Rename Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="718"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="720"/>
<source>Remove Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="111"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="130"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="113"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="132"/>
<source>Assemble Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="111"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="113"/>
<source>Unable to change assembly while core is running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="118"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="120"/>
<source>Assemble Instruction</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="275"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="277"/>
<source>Function name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="268"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="281"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="270"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="283"/>
<source>Rename Function Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="281"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="283"/>
<source>Function name cannot be nothing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="268"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="270"/>
<source>No function / symbol is currently selected.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="211"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="213"/>
<source>Go To In Disassembly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="221"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="223"/>
<source>Cannot Go To</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="325"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="327"/>
<source>Restore Function Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="325"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="327"/>
<source>Unable to stub selected address.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="651"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="653"/>
<source>&amp;Copy Instruction Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="657"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="659"/>
<source>Copy Function Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="665"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="667"/>
<source>Restore Instruction(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="669"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="671"/>
<source>Asse&amp;mble new Instruction(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="681"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="683"/>
<source>&amp;Jump to Cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="685"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="687"/>
<source>Toggle &amp;Breakpoint</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="694"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="696"/>
<source>&amp;Go to Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="704"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="706"/>
<source>Go to PC on Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="724"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="726"/>
<source>Restore Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="729"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="731"/>
<source>Stub (NOP) Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="735"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="737"/>
<source>Show &amp;Instruction Bytes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="749"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="751"/>
<source>%1 NOT VALID ADDRESS</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -1029,6 +1029,11 @@ bool R3000DebugInterface::isValidAddress(u32 addr)
return true;
}
if (addr >= 0x1FC00000 && addr < 0x20000000)
{
return true;
}
if (addr < 0x200000)
{
return true;

View File

@@ -20,10 +20,10 @@ void GSVertexTrace::Update(const void* vertex, const u16* index, int v_count, in
m_primclass = primclass;
u32 iip = m_state->PRIM->IIP;
u32 tme = m_state->PRIM->TME;
u32 fst = m_state->PRIM->FST;
u32 color = !(m_state->PRIM->TME && m_state->m_context->TEX0.TFX == TFX_DECAL && m_state->m_context->TEX0.TCC);
const u32 iip = m_state->PRIM->IIP;
const u32 tme = m_state->PRIM->TME;
const u32 fst = m_state->PRIM->FST;
const u32 color = !(m_state->PRIM->TME && m_state->m_context->TEX0.TFX == TFX_DECAL && m_state->m_context->TEX0.TCC);
m_fmm[color][fst][tme][iip][primclass](*this, vertex, index, i_count);
@@ -36,6 +36,13 @@ void GSVertexTrace::Update(const void* vertex, const u16* index, int v_count, in
m_accurate_stq = true;
}
// AA1: Set alpha min max to coverage 128 when there is no alpha blending.
if (!m_state->PRIM->ABE && m_state->PRIM->AA1 && (m_primclass == GS_LINE_CLASS || m_primclass == GS_TRIANGLE_CLASS))
{
m_min.c.a = 128;
m_max.c.a = 128;
}
m_eq.value = (m_min.c == m_max.c).mask() | ((m_min.p == m_max.p).mask() << 16) | ((m_min.t == m_max.t).mask() << 20);
m_alpha.valid = false;
@@ -46,7 +53,7 @@ void GSVertexTrace::Update(const void* vertex, const u16* index, int v_count, in
CorrectDepthTrace(vertex, v_count);
}
if (m_state->PRIM->TME)
if (tme)
{
const GIFRegTEX1& TEX1 = m_state->m_context->TEX1;
@@ -59,17 +66,17 @@ void GSVertexTrace::Update(const void* vertex, const u16* index, int v_count, in
}
else
{
float K = (float)TEX1.K / 16;
const float K = static_cast<float>(TEX1.K) / 16;
if (TEX1.LCM == 0 && m_state->PRIM->FST == 0) // FST == 1 => Q is not interpolated
{
// LOD = log2(1/|Q|) * (1 << L) + K
GSVector4::storel(&m_lod, m_max.t.uph(m_min.t).log2(3).neg() * (float)(1 << TEX1.L) + K);
GSVector4::storel(&m_lod, m_max.t.uph(m_min.t).log2(3).neg() * static_cast<float>(1 << TEX1.L) + K);
if (m_lod.x > m_lod.y)
{
float tmp = m_lod.x;
const float tmp = m_lod.x;
m_lod.x = m_lod.y;
m_lod.y = tmp;
}

View File

@@ -6177,6 +6177,7 @@ __ri void GSRendererHW::DrawPrims(GSTextureCache::Target* rt, GSTextureCache::Ta
{
m_conf.blend = {}; // No blending please
m_conf.ps.no_color1 = true;
m_conf.ps.fixed_one_a = IsCoverageAlpha();
if (can_scale_rt_alpha && !new_scale_rt_alpha && m_conf.colormask.wa)
{