The main issue with the previous code: constexpr uint32_t tiles = (640 / 32) * (320 / 32); Should have been: constexpr uint32_t tiles = (640 / 32) * (480 / 32); The consequence of this is some OPBs were being overwritten by TA_NEXT_OPB, causing corruption (missing triangles, incomplete drawings) in some tiles.