Project

General

Profile

Actions

Emulator Issues #1654

closed

New Super Mario Bross Wii only shows backgrounds textures if "disabled fog" setting is enabled

Added by fjavier2k over 14 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

What steps will reproduce the problem?

  1. New Super Mario Bross wii is not showing background textures.

What is the expected output? What do you see instead?
I expected to see background textures. I can't see background textures with
default settings. Same issue with directx and opengl plugin.

What version of the product are you using? On what operating system?
I'm using Dolphin x64 r4532 on windows 7 64.
Amd Athlon 64 x2 4200+, Radeon HD4850 512 MB, 4 GB ram.

Please provide any additional information below.
Enabling "disable fog" in opengl settings background textures will appear.

Here are some screenshots:
Directx 9 (no background):
http://i600.photobucket.com/albums/tt88/fjavier2k/mariobros_dx9.jpg

OpenGl (no background):
http://i600.photobucket.com/albums/tt88/fjavier2k/mariobros_ogl.jpg

OpenGL + Disable fog (background appears):
http://i600.photobucket.com/albums/tt88/fjavier2k/mariosbros_ogl_fogdisable
d.jpg

Actions #1

Updated by Anonymous over 14 years ago

reminds me of the issues that were in SMG, until an initialized variable in the shaders
was set to 0....

Actions #2

Updated by Autoran1 over 14 years ago

BTW on old revs it also shows background if SMG hack is enabled

Actions #3

Updated by masterkillua123 over 14 years ago

if you select disable fog in the world menu, you only can see the map but "white".
So, need be fix more.

Actions #4

Updated by XTra.KrazzY over 14 years ago

  • Status changed from New to Invalid

Disable fog is a hack, and as such any weird effects caused by enabling it is your
responsibility.

Actions #5

Updated by sl1nk3.s over 14 years ago

  • Status changed from Invalid to Questionable

I don't think this is Invalid, graphics appear ONLY when fog is disabled, so there's
something wrong here for sure !

Actions #6

Updated by ChaosCode over 14 years ago

Tino/rodo was saying it looked like an unsupported fog type. Doesn't matter, game is
unplayable till the hle plugin is fixed.

Actions #7

Updated by ChaosCode over 14 years ago

  • Status changed from Questionable to Accepted
Actions #8

Updated by bbxc65 over 14 years ago

someone in the forum wrote it does work with the LLE sound plugin enabled. but it's
too slow for me to test

Actions #9

Updated by luisr142004 over 14 years ago

if you disable the dual-core option it'll be fullspeed :)

Actions #10

Updated by bbxc65 over 14 years ago

i'm single core user, so it's standard turned off

Actions #12

Updated by fgfemperor over 14 years ago

Ok, so this is my first attempt to mess with Dolphin's code...
Since I'm no expert at that, after a while messing with it, I figured out the following:
At PixelShaderManager.cpp, line 209, on NSMB, the value for bpmem.fog.a.GetA() is too high (around 6) while on other games (SSB
and Mario Kart Wii) it's way below 1...
I tried to understand why it was happening, but got a little confused on that GetA() method... It doesn't seem to be the problem
though...
So, my hack (and a pretty ugly one, I might add) is that I changed:

SetPSConstant4f(C_FOG + 1, a, b, bpmem.fog.c_proj_fsel.GetC(), 0);

to:

if(a < 2)
    SetPSConstant4f(C_FOG + 1, a, b, bpmem.fog.c_proj_fsel.GetC(), 0);
else
    SetPSConstant4f(C_FOG + 1, 0.0, 1.0, 1.0, 0);

And it worked... Still got the fog on games like SSB and the background is showing on NSMB...
But I know we should have fog on NSMB, so the problem is that somehow, bpmem.fog.a.GetA() is returning the wrong value...
Just hope I pointed someone in the right direction... Sorry I couldn't do more than that though...

Actions #13

Updated by BhaaL over 14 years ago

Without looking at the surrounding code (and probably not knowing what it actually
does): a value of 6 in places where a float is wanted? Maybe that value should be
clamped into 0.0 to 1.0 range, by /10.f (or even /100.f)?

Actions #14

Updated by fgfemperor over 14 years ago

I got it... The problem wasn't on GetA after all...

PixelShaderManager.cpp line 209

from:

float a = bpmem.fog.a.GetA() * ((float)(1 << bpmem.fog.b_shift));

to:

float a = bpmem.fog.a.GetA() * ((float)(1 << (bpmem.fog.b_shift - 1)));

If you guys want, I can create a patch...
So now we got fog on SSBB, NSMB and all the other games, while still having the
background showing on NSMB \o/

btw: I don't just guessed it... I got it from BPMemory.h:679 that says:
u32 b_shift; // b's exp + 1?

Actions #16

Updated by fjavier2k over 14 years ago

I see that in first screenshot you are getting 53 fps, but with the new hack you're
getting only 29 fps (second screenshot). Seems a big performance drop. If you could
take a look at the performance drop would be perfect.

Anyway, any patch to solve this issue will be welcome :) Thanks fgfemperor.

Actions #17

Updated by fgfemperor over 14 years ago

Hmm actually I was using a lot of CPU with other programs open when I took the second
screenshot... After I closed it all I noticed no performance drop whatsoever!
Also, it's just a subtraction, it shouldn't affect performance at all!
Anyway here's the patch! =)

Actions #18

Updated by death2droid over 14 years ago

Interesting......
Which games have you tested this with.

Actions #19

Updated by death2droid over 14 years ago

Also does it fix it in the OpenGL plugin as well.

Actions #20

Updated by fjavier2k over 14 years ago

Great! I've tried the fogfix.patch and now I can finally see the fog in NSMB!
Someone should add the fix patch in the next svn.

Actions #21

Updated by death2droid over 14 years ago

Just need to make sure this doesn't break any games.

Actions #22

Updated by fgfemperor over 14 years ago

Well I've tested this on Mario Kart Wii, Super Smash Bros. Brawl, Paper Mario, Mario
Galaxy and, of course, New Super Mario Bros. Wii... Also this works for both OpenGL and
Direct3D.
Also, I think it shouldn't break any games... From my point of view, thw worst that
could happen is a game losing its fog...

Actions #23

Updated by bztdlinux over 14 years ago

  • Status changed from Accepted to Accepted
  • Issue type set to Bug
  • Operating system N/A added

This is not a GameIssue, rather a bug in Dolphin.

Actions #25

Updated by hrydgard over 14 years ago

Patch looks good, go ahead and submit. You got access, fgfemperor.

Actions #26

Updated by fgfemperor over 14 years ago

  • Status changed from Accepted to Fixed

Wow, thanks! Just committed it... Guess I can close this now, right?

Actions

Also available in: Atom PDF