Fixed Yoshi's Story black screen in some levels if frame buffer is enabled #1143
Problem:
The game draws background with BG command.
Background texture is 8bit CI.
For some reason the game set 8bit CI at the address of the
background texture, but renders nothing to it.
Plugin uses empty frame buffer texture instead of background texture.
Solution: Do not use 8bit CI frame buffer as BG textures.
Note: probably the game rendres something to the BG texture at some point
of the game. This can't be emulated in hardware anyway.
The hack removes weird texrect, which appears only in HLE mode.
Fixed The famous winback square bug #63
Fixed operation winback: sky doesn't move (regression) #578
OpenGL has limitation on line thickness. N64 can use really thick lines.
Fixed Flygin dragon: wrong gfx bands and then crash under mupenplus (but not emu related bug?) #171
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.
GCC replaces (value << 8) | (value >> 8) with __builtin_bswap16 if -Os,
-O1 or higher is used. __builtin_bswap16 is as fast as the assembler
declaration.
Still hackish.
Fixed Star Wars Episode One Racer Flicker and Black Screen with Frame Buffer Emulation #1119
Fixed Top Gear Overdrive black screen #1122
Problem: Some games have strange glitch, which looks like vertical line of
pixels outside of right bound of the image. Examples: JFG title screen,
both Zelda games when new game started. Software plugin has the same issue,
but when image passes VI stage, the problem disappears. Most likely
VI filters somehow eat the rightmost pixels. I suspect that it is result of
divots elimination. Thus, the fix works like this:
when divot flag is set the rightmost column of pixels is not shown.