Project

General

Profile

Actions

Emulator Issues #6752

closed

MVP Baseball 2004 and 2005 looks like a rave party whenever 2D is shown.

Added by JMC4789 over 10 years ago. Updated over 3 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
Category:
GFX
% 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:
5.0-12656

Description

Game: MVP Baseball 2005 - GV4E69

What went wrong?

Whenever 2D is on the screen, it rips, tears and flickers very horribly.

What did you expect to happen instead?

Honestly, I expected the generic sports title to work fine since it's just a generic sports title.

What steps will reproduce the problem?
[Don't assume we have played the game and know its level names. Be as
detailed as possible.]
1.Start the game
2.Go to menus
3.Enjoy the show

Dolphin 3.5 and Dolphin 3.5-367 are old versions of Dolphin that have
known issues and bugs. Have you tested with the latest version from
http://dolphin-emu.org/download ?

Obviously tested on 3.5-367. Just kidding, tested on Dolphin 4.0-235. This issue goes back to 3.5, though, and likely beyond.

What are your PC specifications (example: Operating System, CPU and GPU)?

Core i5 3570K with a GTX 760 and 8GB of ram running Windows 7 x64

Basically, most of the best glitches in the menus are whited out during fifo-logs, so I'll reserve those to screenshots. With the fifo-log, the menu box should be wildly flickering. I tried every setting I could find to affect this, but nothing seemed to do it. Even Software Renderer gets destroyed by this game.

http://www.mediafire.com/download/r6evrodzd7rre1d/MVPBaseball2005Attempt2.7z

These images show the full display of awesome that is this game.

http://i.imgur.com/pMvtqSh.png


Files

mvp_baseball_good.png (3.16 MB) mvp_baseball_good.png flacs, 08/24/2019 03:12 PM
Actions #1

Updated by kostamarino over 10 years ago

It's an issue even with interpreter and software rendering and there are many ea games with this issue (Fifa street has also messed up textures). I have a feeling that whatever might fix ea games broken videos might fix this one as well. Those also are not fixable by any setting (even interpreter and software rendering and is prevalent with ea games).

Actions #2

Updated by JMC4789 about 10 years ago

  • Status changed from New to Accepted

EA's broken videos was fixed and this was not. A SWING AND A MISS!

Baseball puns, yay! Also, marking as accepted because I'm sure this is an issue.

Actions #3

Updated by JMC4789 almost 10 years ago

MVP Baseball 2004 is just as messed up, if not more hilariously so.

Actions #4

Updated by JMC4789 over 9 years ago

It looks like this is a vertex loader issue; it's very like an issue I ran into with GPU determinism when the vertex loader malfunctioned.

Actions #5

Updated by flacs over 4 years ago

This is what the main menu is supposed to look like.

Actions #6

Updated by Wobbix over 4 years ago

Going to use this bug as my way of learning the dolphin codebase, going to try to crack it. Beyond MVP baseball 2004/2005, a list of titles that this also affects would be very helpful. I have NOT found the issue in the later madden titles (07 onwards).

Initially I'll be working on the OpenGL renderer. Hopefully whatever fix can apply to the others. If anyone knows of a game that only has this occur on some menus, but not others, or in some renderers with some render settings, it would similarly be helpful. Finally, any screenshots from the original game running properly will work wonders. I do have the old game, but no hardware on which to play it. Some things, like the scoreboard, are obvious right/wrong, but I can't rely on memories from yesteryear for everything.

Regardless, I'll see what I can do. Seems to me there are 4 components to the glitchyness

  1. Sprites appearing in the wrong place on screen (most noticeable with lefthanded pitchers throwing UI in 2005)
  2. Sprites being pulled from the wrong place on a spritesheet (most noticeable with the MVP baseball 2005 home run contest minigame. The right screen will show "strike" over the text when 2x moneyball appears)
  3. Sprites appearing in the wrong draw order (hence the blacked out bit)... I suspect something that creates draw order has all the sprites flattened to appear at the same level
  4. The tendency of some sprites to "stretch" and cover large parts of the screen for a frame or two as black polygons.

Other notes:

a. This appears to happen only to 2d sprites attached to the camera (namely UI/Hud elements). Things such as textures, or the crowd sprites that are not camera attached seem to be unaffected

b. Loading screens/ loading bar are unaffected

c. Before the main menu finishes loading, the background image is unaffected (taking B and C together, seems any static, fullscreen images are fine. Not sure why the loading bar works fine, but other bars in the game are not. (edit, I think static images might be drawn one pixel too far right and down. But I see that kind of thing with dolphin quite a bit. Possibly unrelated).

d. Static TEXT seems to be drawn fine, but other things may be drawn over it

e. picture in picture replays (missed swing replays) seem to function fine. Not sure if the border is supposed to be solid black, though

f. Pitcher readiness in bullpen bar is functional. The bar representing pitch types is not.

g. Button prompts seem like the only things consistently out of position in the same place. Most obvious is the "random team" button on game setup, all the prompts except B for back are shifted over by 1 to the left, with the first two (back "b" and random team "Y" on top of one another)

Actions #7

Updated by Wobbix over 4 years ago

I found the bad value that is responsible for the UI clipping. I need now to figure out what it's supposed to be, and figure out how to alter the calculations that generate it to work in MVP baseball 2004 and 5 without breaking other titles. If my various theories pan out, I'd estimate that I can put in a PR with the patch for this within a week or so.

Actions #8

Updated by connorwalks over 4 years ago

Wobbix wrote:

I found the bad value that is responsible for the UI clipping. I need now to figure out what it's supposed to be, and figure out how to alter the calculations that generate it to work in MVP baseball 2004 and 5 without breaking other titles. If my various theories pan out, I'd estimate that I can put in a PR with the patch for this within a week or so.

I have little to no experience in coding so I can't help you with this, but I just wanted to thank you. Those are two of my favorite games of all time and given how unpopular sports video games seem to be (especially among people who like to emulate games) I figured it would never be solved. I'd appreciate it if you could give us an update here when you're able to fix the value. I know it's not much, but if you fix this you will have made at least one person very grateful!

Actions #9

Updated by hthh over 3 years ago

I'm pretty sure this is a data cache issue. The relevant code in MVP Baseball 2004 seems to be:

void __fastcall render2d_draw_803C8CA8(Render2D *a1)
{
  // ...

  // hex-rays output for loop from around 0x803C8E04
  for ( i = quad->dword88; i <= limit; curent_texture = quad->texture )
  {
    if ( v13 > 0 )
    {
      while ( i <= limit && curent_texture == quad->texture )
      {
        v21 = quad->dword94;
        if ( v21 )
        {
          sub_803C0988((int)v8);
          sub_803D75A8(v21);
          sub_803C0948(v8);
        }
        else
        {
          write_to_vertex_buffers_803C8FFC(render2d, (int)quad);
          ++render2d->vertex_buffer_index;
        }
        ++quad;
        if ( --v13 <= 0 )
          break;
        i = quad->dword88;
      }
    }
    if ( render2d->vertex_buffer_index )
    {
      render2d_draw_with_texture_803C926C(render2d, curent_texture);
      render2d->vertex_buffer_index = 0;
    }
    if ( v13 <= 0 )
      break;
    i = quad->dword88;
  }

  // ...
}

void render2d_draw_with_texture_803C926C(Render2D *render2d, int texture)
{
  DrawThingy *draw_context; // r30

  draw_context = &render2d->draw_context;
  draw_done_804546A4(&render2d->draw_context);
  draw_array_set_var_80454540(draw_context, "Texture", (void *)texture, 88, -1);
  flush_data_cache_and_vertex_cache_804546DC(draw_context);
  do_draw_80454790(draw_context, 6 * render2d->vertex_buffer_index);
}

As I understand it, effectively for each quad, it'll write the vertex data to the data cache, flush the gpu fifo and wait for draw completion, flush the data cache, and then send the draw commands to the gpu, without flushing them. So the next iteration through, the any pending GPU commands will be flushed and actually get drawn, but only after the vertex buffer has been overwritten. This would work on hardware, because the new vertex values are only in the data cache and haven't been flushed to main memory.

I think it's possible to work around this issue with a patch that calls "GXDrawDone" after the call to "do_draw_80454790" (but before the next iteration updates the index buffer). This is done by patching the "blr" at the end of "render2d_draw_with_texture_803C926C" to be a "b GXDrawDone".

GV4E69.ini:

# MVP Baseball 2005
[OnFrame]
$fix
0x80319214:dword:0x48113250
[OnFrame_Enabled]
$fix

GVPE69.ini:

# MVP Baseball 2004
[OnFrame]
$fix
0x803C92D4:dword:0x480DA8E4
[OnFrame_Enabled]
$fix

This could use a bit more testing, but I think there's precedence for shipping patches to fix data cache issues, so that might be an option.

Actions #10

Updated by JMC4789 over 3 years ago

Thank you for the work! We'll be shipping these patches in the next major batch of INI changes.

Actions #11

Updated by timmodonuts over 3 years ago

Very glad to see this has been recently updated from 6 years ago. Got a dusty MVP 2005 on the shelf that Windows 10 can't play and was hoping the ROM of this would work. It works, but it's a nightmare to navigate and view with the screen popping all over the place.

JMC4789 wrote:

We'll be shipping these patches in the next major batch of INI changes.

What does this part mean, and how can we get a hold of the good stuff? Thanks!!

Actions #12

Updated by JosJuice over 3 years ago

hthh posted two patches at the end of their last comment. If you want to use them right away, you can put them in the game INIs for these two games. Otherwise, please wait for us to release a Dolphin update that puts them into the default game INIs. This issue will be updated when that happens.

Actions #13

Updated by wolfsauz over 3 years ago

has this been updated? when I tried downloading the most recent BETA it didn't work. thanks!

Actions #14

Updated by JosJuice over 3 years ago

No. Like I said in my previous comment, this issue will be updated when that happens.

Actions #15

Updated by wolfsauz over 3 years ago

Thanks! I'm a novice (using that term very loosely) coder. Would it be difficult to update the file using the info above?

Actions #16

Updated by JosJuice over 3 years ago

No, it's actually very easy. You essentially just have to create the file and paste in the contents. But we usually push this type of change in batches.

Actions #17

Updated by wolfsauz over 3 years ago

Been doing some research on this. How would I add in this patch on OSCatalina?

Actions #18

Updated by JosJuice over 3 years ago

  • Status changed from Accepted to Fixed
  • Fixed in set to 5.0-12656
Actions

Also available in: Atom PDF