flyinghead / flycast

Flycast is a multiplatform Sega Dreamcast, Naomi, Naomi 2 and Atomiswave emulator
GNU General Public License v2.0
1.34k stars 168 forks source link

Wacky Races - Missing WarnerBros, Softdec logos and loading screens #1028

Open kihato opened 1 year ago

kihato commented 1 year ago

Platform / OS / Hardware: Windows11 / i7-10700F / GTX 1660 SUPER

Github hash: 187674d

Nothing after the INFOGRAMES logo is displayed. Since the loading is long, if the black screen continues, it seems to be misunderstood that it has blacked out.

It should look like the video below.

https://user-images.githubusercontent.com/14366233/233999307-ab27c62c-e76d-4ad7-8ae0-0bca66796c40.mp4

flyinghead commented 1 year ago

It looks like the origin is another game bug: the game draws 2 quads, one for the texture (WB or Sofdec) then one for the background (white or black). It uses depth values of 1 and 0.5 respectively with the default Greater or equal depth function. However the library function used (njDrawPolygon2D) expects a negative depth (actually < -1) and thus ignores the passed depth value and set the depth to 1 for both quads. So the background quad covers the texture quad.

Unfortunately I have no idea why this doesn't happen on real hardware. No float calculation is done on the depth value, ruling out a float precision issue. Emulating the SH4 data and instruction caches doesn't help either. The same issue happens on all other emulators so it's probably not trivial.