Try to get more info out of the crash.

This commit is contained in:
Henrik Rydgård committed 2025-06-24 16:08:37 +02:00
1 parent 62ff5ca81d
commit 14b593cdfc
2 files changed
+13 -3

No files matched your search

+1 -1
View File
@@ -149,7 +149,7 @@ RegCache::Reg PixelJitCache::GetColorOff(const PixelFuncID &id) {
// Now add the pointer for the color buffer.
if (loadDepthOff) {
_assert_(Accessible(&fb.data, &depthbuf.data));
_assert_msg_(Accessible(&fb.data, &depthbuf.data), "fb.data and depthbuf.data too far apart: %p %p (fb=%08x d=%08x)", fb.data, depthbuf.data, gstate.getFrameBufAddress(), gstate.getDepthBufAddress());
depthTemp = regCache_.Alloc(RegCache::GEN_DEPTH_OFF);
if (RipAccessible(&fb.data) && RipAccessible(&depthbuf.data)) {
MOV(PTRBITS, R(argYReg), M(&fb.data));
+12 -2
View File
@@ -1028,7 +1028,12 @@ void SoftGPU::Execute_FramebufPtr(u32 op, u32 diff) {
// We assume fb.data won't change while we're drawing.
if (diff) {
drawEngine_->transformUnit.Flush(this, "framebuf");
fb.data = Memory::GetPointerWrite(gstate.getFrameBufAddress());
if (gstate.getFrameBufAddress() != 0) {
_dbg_assert_msg_(Memory::IsValidAddress(gstate.getFrameBufAddress()), "Invalid framebuffer address %08x", gstate.getFrameBufAddress());
fb.data = Memory::GetPointerWriteUnchecked(gstate.getFrameBufAddress());
} else {
fb.data = nullptr;
}
}
}
@@ -1049,7 +1054,12 @@ void SoftGPU::Execute_ZbufPtr(u32 op, u32 diff) {
drawEngine_->transformUnit.Flush(this, "depthbuf");
// For the pointer, ignore memory mirrors. This also gives some buffer for draws that go outside.
// TODO: Confirm how wrapping is handled in drawing. Adjust if we ever handle VRAM mirrors more accurately.
depthbuf.data = Memory::GetPointerWrite(gstate.getDepthBufAddress() & 0x041FFFF0);
if (gstate.getDepthBufAddress() != 0) {
_dbg_assert_msg_(Memory::IsValidAddress(gstate.getDepthBufAddress()), "Invalid depthbuffer address %08x", gstate.getDepthBufAddress());
depthbuf.data = Memory::GetPointerWriteUnchecked(gstate.getDepthBufAddress() & 0x041FFFF0);
} else {
depthbuf.data = nullptr;
}
}
}