Project

General

Profile

Actions

Emulator Issues #257

closed

XFB broken in OGL (SC, Wii)

Added by Anonymous over 15 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. Configure OpenGL plugin to use XFB.
  2. Boot a game of your choice.

What is the expected output? What do you see instead?
Expected is nice xfb-ified output. Instead, dolphin crashes.

Happens to me on vista x64 with x64 dolphin r997, federelli also reported
it.
Just making this issue as a reminder note :)

Actions #1

Updated by prismsub7 over 15 years ago

Never worked for me, even before the alignment fix. (Ati user)

Gives me the following error log:

Unhandled Exception
Code: 0xC0000005
Call stack info:
DolphinWx!0x00000000 : ?
0x03A0E661 : ?
0x0F00187D : ?

Actions #2

Updated by Anonymous over 15 years ago

F|RES: it is a problem with the timing
F|RES: the VI tries to flush the XFB while booting
F|RES: but the video plugin isnt able to render the xfb and it crashes
F|RES: if you have a fast system that boots before VI wants to flush the first time it works

Actions #3

Updated by memberTwo.mb2 over 15 years ago

there's also a problem of XFB max buffer size for PAL games.
xfb.cpp:
XFB_HEIGHT = 480, // 528 is max height.
XFB_BUF_HEIGHT = 538, //480,
// TODO: figure out what to do with PAL

eg: can't remember how much but ZTP PAL require more for one of those values.

Actions #4

Updated by eyecreate over 15 years ago

XFB crashes for me too. I get this backtrace log.

#0 0x0000000000000000 in ?? ()
#1 0x00007fdf69bb8c00 in TextureConverter::DecodeToTexture ()
from Plugins/libPlugin_VideoOGL.so
#2 0x00007fdf69bb91aa in XFB_Draw () from Plugins/libPlugin_VideoOGL.so
#3 0x000000000047e13d in VideoInterface::Update ()
#4 0x000000000047d8e8 in SystemTimers::VICallback ()
#5 0x0000000000464614 in CoreTiming::Advance ()
#6 0x000000000049a3d2 in Interpreter::SingleStep ()
#7 0x0000000000470075 in CBoot::EmulatedBIOS ()
#8 0x000000000046fe01 in CBoot::BootUp ()
#9 0x0000000000463bb2 in Core::EmuThread ()
#10 0x00007fdf780da3ea in start_thread () from /lib/libpthread.so.0
#11 0x00007fdf77281c6d in clone () from /lib/libc.so.6
#12 0x0000000000000000 in ?? ()

Actions #5

Updated by XTra.KrazzY over 15 years ago

eyecreate: We know why it crashes. Nobody bothers fixing the bootup so XFB will work...

Actions #6

Updated by slink_3_ over 15 years ago

woot, i just saw there was an issue on this !

actually you can do a quick fix there, as that's r981 wich broke XFB.

in XFB.cpp line 70
just add back this (which was removed in r981 and broke the XFB) ->

void XFB_Draw(u8 *xfb_in_ram, u32 width, u32 height, s32 yOffset)
{

if(width == 0 || height == 0)
    return;

(...)
}

and it should work like before

Actions #7

Updated by Anonymous about 15 years ago

that change doesn't seem to fix it

Actions #8

Updated by slink_3_ about 15 years ago

OGL plugin has been changed since Dec 21, and is maybe a bit more broken than it was
before :/

btw, it's not a proper fix, that's how it was before r981 (you know, when it was
working ;) )

adding this (back) should prevent the emu from crashing when the renderer is not yet
ready. at least it was working with older revs, i even have some screens on emuforums

Actions #9

Updated by XTra.KrazzY about 15 years ago

Seriously, what does XFB do? How is it better than the current one? Is it faster?
More accurate? Shows stuff we can't see?

I simply don't know... :)

Actions #10

Updated by Anonymous about 15 years ago

it basically allows for proper stretching of the final frame to the tv resolution. If
you see games with black borders on the right or bottom side, it's because xfb isn't
implemented. It's slow(er), as it is just another time you need to copy the whole fb.

Actions #11

Updated by Anonymous about 15 years ago

also some homebrew uses it, but i'm not really sure what for. maybe it writes
directly to it? (ew)

Actions #12

Updated by XTra.KrazzY about 15 years ago

XFB is needed in the DX9 plugin..

Thanks shuffle! I had no idea on what it meant.

How about re-implementing it somewhere else in the code? Somewhere like finalizing
frames (the switching of the buffer after the frame is done)... The existing
framebuffer objects can be utilized to have the exact same functionality.

Actions #13

Updated by Anonymous about 15 years ago

as of r1893 xfb in ogl works again in single core

Actions #14

Updated by XTra.KrazzY about 15 years ago

Dual core is still an issue

Actions #15

Updated by memberTwo.mb2 about 15 years ago

  • Status changed from New to Work started
Actions #16

Updated by memberTwo.mb2 about 15 years ago

r2001 should fix this.

Actions #17

Updated by XTra.KrazzY about 15 years ago

OK, works with DC but has yellow and magenta flickers once in a while.

Actions #18

Updated by Anonymous about 15 years ago

I haven't seen any flickers in homebrew, haven't tested on any games though...can you
name a game that triggers flickers a lot?

Actions #19

Updated by XTra.KrazzY about 15 years ago

Turns out it was a passing DC bug. Good work

Actions #20

Updated by omegadox about 15 years ago

XFB for Wii only works with DC enabled else black screen.

Actions #21

Updated by XTra.KrazzY about 15 years ago

When can we finally close this? :P

Actions #22

Updated by XTra.KrazzY almost 15 years ago

  • Status changed from Work started to Fixed

Fixed in some recent revision

Actions

Also available in: Atom PDF