mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-07 13:39:55 +00:00
decodeDepth required DB_Z_WRITE_BASE to equal DB_Z_READ_BASE whenever the depth plane was not read-only, also for draws that never write it. PPSA31327 01.015.000 stops there on a stencil-only draw: DB_DEPTH_CONTROL 0x00000701 (Z_ENABLE and Z_WRITE_ENABLE clear), DB_RENDER_CONTROL 0, DB_DEPTH_VIEW 0, Z read base 0xed11340000 and Z write base 0, with equal stencil read and write bases. The bases are now compared only when the depth plane can be written: a depth clear, a draw with both Z_ENABLE and Z_WRITE_ENABLE (the condition that sets depthWrite), or an expand pass with DEPTH_COMPRESS_DISABLE or STENCIL_COMPRESS_DISABLE in DB_RENDER_CONTROL, which still throws. The surface keeps the read base. The stencil check is unchanged. DepthStencilTests accepts a stencil-only draw, Z_WRITE_ENABLE without Z_ENABLE and a depth test without writes at another write base, and still rejects a written plane, a depth clear and the compress-disable bits there.