- use RiceVideo method for texture size calculation.
RiceVideo uses the same method for texture dumping.
- rewrite texture mapping.
Texture Clamp-Wrap-Mirror implemented in shaders.
Problem explanation:
https://github.com/gonetz/GLideN64/issues/1885#issuecomment-485136358
Fixed various glitches with HD textures, #1885
Code of RdpUpdate::update is based on angrylion's rdp_update().
Main visible difference: VI cuts several pixels on left and right of original image.
Cite from angrylion's commit message:
"rdp: new tests revealed the shocking truth:
the VI aggresssively and regardlessly of any data alignment specificities
cuts off either 7 or 8 pixels closest to h_start and h_end, so that nothing
ever appears on the screen unless (h_end - h_start) is 16 pixels or greater
(this removes marginal garbage graphics on the far right in Mario Tennis,
Turok 2 Seeds of Evil intro and probably other games)"
The game uses very unique way to allocate frame buffers.
It uses double buffering, but both buffers share the same address space (sic!)
The game uses interlaced display mode, and lines in RDP buffers are interlaced too.
Plugin's fb and VI emulation code can't handle it properly, so I just added a hack.
Fixed Lode Runner 3-D: No video output if framebuffer is enabled #1937
Rat attack uses color buffer with width 640, but depth buffer width is only 639.
goodDepthBufferTexture check failed because of it, and game run without depth compare.
Fixed Rat attack missing geometry #600
It seems that when vi_width <= 320 output uses progressive mode
even if interlaced bit is set in VI_STATUS.
Fixed Bass Rush - ECOGEAR PowerWorm Championship - shakes #1957
Previously renderBuffer() did nothing in that case and last rendered frame remained on screen.
Fixed Perfect Dark (Missing Transition Animation at end of Title Intro Screen - PD Logo Doesn't Disappear) #1715
Remove Crop feature.
Change settings save-load when "per game settings" enabled:
* When config dialog opens, show custom settings for the running game. If no game run yet, show main settings.
* When user press OK button, save settings to the custom ini file and to the main ini file.
Fixed Mario Tennis - missing bottom half of scoreboard #1564
Problem:
Top Gear Hyper Bike has overlapping frame buffers.
That is start address of a buffer points on last line in previous buffer.
When new buffer intersects with prevois one, plugin removes old buffer.
That causes black screen in case of Top Gear Hyper Bike.
FrameBuffer::updateEndAddress() was modified in commit 17eb8696ea to fix it.
It sets buffer end address using buffer height - 1.
This fix causes issue with Mario Tennis scoreboard #1564
HW buffer is not detected because end address is wrong.
Solution:
Add another test for intersecting buffers.
It checks that the buffers are not just arbitrary intersected ones,
but it is sequence of two slighly overlapping buffers.
In that case buffer is not removed, but its end address is corrected,
because buffers address space must not intersect.