Fixed Nushi Zuri 64: fb background doesn't work anymore #1115
Problem: The game normally uses color and depth buffers.
When it needs to show rectangle with text, CPU copies current color buffer
by depth buffer address. This buffer rendered as background, text rendered over.
Plugin detects buffer usage and tries to use depth buffer as background texture.
That buffer in video memory has no color information, because data copied by CPU and contained in RDRAM.
Solution: check that found frame buffer is valid.
In this case validity check will fail because RDRAM content modified by CPU,
and background will be read from RDRAM.
When N64 game needs to apply frame buffer texture to a polygon, it
copies part of frame buffer data to texture memory. The plugin
does not copy frame buffer texture, since frame buffer texture already in video memory
and thus can be used directly.
However, sometimes polygons with frame buffer texture use texture coordinates wrap.
Wrap can't be done correct when whole frame buffer texture is used.
Thus, frame buffer subimage copy is implemented. Part of texture copied to
a new texture, which can be correctly wrapped.
Fixed PD cloacking effect, #839
The game copies current frame buffer to the area, which initially allocated for depth buffer.
Game read camera data from that area, not from normal frame buffer.
That's why 'copy color buffer to RDRAM' option does not help there.
Special code needed to process that. Looks ugly, but works.