The host reported a ZCull storage size of 0. Unity 2017.4 allocates each depth
target's ZCull save area from its NVN pool allocator, which gives a zero-size
request the offset of a live block; its map of allocations then lost that block,
and freeing it later released a garbage-sized range. Buffers allocated after that
overlapped live ones, copies read staging bytes other copies had overwritten, and
in about half the runs sprites broke into slivers or went missing, flickering
every fourth frame on the iPhone. The size now grows with the texture
(hle_nvn.c zcull_size). Mac: 20 of 20 scripted Forest Follies runs clean (about
half broken before); confirmed on the iPhone.
Also:
- copy encoder: a copy writing bytes an earlier copy of the encoder reads gets a
barrier (NVN runs copies in order); a copy with overlapping source and
destination is reported red
- paused-thread context for the garbage collector: the guest's x18 from its
thread slot, and sp 32 bytes lower to cover the rewriter's scratch below sp
- docs: the Cuphead notes, the bring-up catalogue and the glitch recipe