mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-15 15:30:29 +02:00
Preseve offsetAddr on stall, instead of reset to 0.
Only for new lists is it reset to 0, afaict.
This commit is contained in:
1 parent
881cefbc83
commit
2e2fa53201
2 files changed
+5
-4
No files matched your search
+4
-4
@@ -263,6 +263,7 @@ u32 GPUCommon::EnqueueList(u32 listpc, u32 stall, int subIntrBase, PSPPointer<Ps
|
||||
dl.waitTicks = (u64)-1;
|
||||
dl.interruptsEnabled = interruptsEnabled_;
|
||||
dl.started = false;
|
||||
dl.offsetAddr = 0;
|
||||
if (args.IsValid() && args->context.IsValid())
|
||||
dl.context = args->context;
|
||||
else
|
||||
@@ -467,10 +468,7 @@ bool GPUCommon::InterpretList(DisplayList &list) {
|
||||
}
|
||||
list.started = true;
|
||||
|
||||
// I don't know if this is the correct place to zero this, but something
|
||||
// need to do it. See Sol Trigger title screen.
|
||||
// TODO: Maybe this is per list? Should a stalled list remember the old value?
|
||||
gstate_c.offsetAddr = 0;
|
||||
gstate_c.offsetAddr = list.offsetAddr;
|
||||
|
||||
if (!Memory::IsValidAddress(list.pc)) {
|
||||
ERROR_LOG_REPORT(G3D, "DL PC = %08x WTF!!!!", list.pc);
|
||||
@@ -525,6 +523,8 @@ bool GPUCommon::InterpretList(DisplayList &list) {
|
||||
UpdatePC(list.pc - 4, list.pc);
|
||||
}
|
||||
|
||||
list.offsetAddr = gstate_c.offsetAddr;
|
||||
|
||||
if (g_Config.bShowDebugStats) {
|
||||
time_update();
|
||||
gpuStats.msProcessingDisplayLists += time_now_d() - start;
|
||||
|
||||
@@ -134,6 +134,7 @@ struct DisplayList
|
||||
bool pendingInterrupt;
|
||||
bool started;
|
||||
u32_le *context;
|
||||
u32 offsetAddr;
|
||||
};
|
||||
|
||||
enum GPUInvalidationType {
|
||||
|
||||
Reference in new issue
Block a user