-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ATV Offroad Fury Pro , a green flash right after boot up #8399
Comments
I don't see it in PSP and jpcsp. in PPSSPP OpenGL D3D9 software rendering all display that frame. |
Well, the draw you have is a clear. That's just it blanking the screen out, so the flash is something before that - probably whatever is put there before the clear? The PSP's LCD is kinda sluggish, so maybe it happens and just isn't noticeable... It's not supposed to show any video or anything there right? It's also possible that it runs some savedata thing that's supposed to render in some way, I suppose. -[Unknown] |
That should be nothing there,right after that is Memcpy fbo upload
|
Yeah, the Memcpy fbo upload is probably a bit unclear in the log. We always upload whatever is in memory to newly created framebuffers. -[Unknown] |
Also happen in the demo |
In 088DBD24, it's copying the value passed in a1 (0xDEADBEEF) to the screen. Obviously, 0xDEADBEEF is suspicious. That value is read at 0891503C, from 08C38E50. It's just a little DEADBEEF sitting there in memory. It seems like that value is even being loaded from the ELF. The ELF occupies The game never writes to that address, at least not in PPSSPP.
Basically it does this:
It could be something related to this. I also think I've seen validation stuff happen on the PSP with setting the framebuf - maybe this initial call is supposed to fail? I tried setting the display params to 0 initially, but this didn't help. It seems to ignore these values anyway. If the first sceDisplaySetFramebuf were to fail, this would fix it. Should test on a PSP to get the validation right... a JpcspTrace might show it too. -[Unknown] |
The checks were added in #8743, but didn't help. It could be that the logic of sceDisplaySetFramebuf is still a bit off. There's IMMEDIATE and NEXTFRAME... but realistically, it seems like "immediate" would happen at next vblank (since the screen won't refresh until then.) It does fix this to delay all operations until the next vblank start, essentially: if (framebufIsPending) {
gpu->SetDisplayFramebuffer(framebuf.topaddr, framebuf.stride, framebuf.fmt);
}
if (framebufIsLatched) {
DEBUG_LOG(SCEDISPLAY, "Setting latched framebuffer %08x (prev: %08x)", latchedFramebuf.topaddr, framebuf.topaddr);
framebuf = latchedFramebuf;
framebufIsLatched = false;
framebufIsPending = true;
} It's kinda hard to test this, but it makes sense. Also, worth noting, the -[Unknown] |
Actually, if you're willing to accept some frame tearing, switching framebuffers mid-frame is not such a strange concept. Seems IMMEDIATE would be made for that. Though how you'd best emulate that I'm not sure, checking which line we're on and making sure at the end of the frame to blit from the old framebuffer from the top until that line and the new framebuffer down from there? |
Hmm, well, then how do we explain the flash of green here? It happens in the demo, but shouldn't happen. -[Unknown] |
Since PPSSPPWindows64v0.9.5-860-g3983144 ,even it does display in screen in PPSSPPWindows64v0.9.5-859-gd1f054e ,still can see that texture in GE debugger
The video (rename jpg to mp4)

GE debugger

https://gist.github.com/daniel229/ffc8b196817734433970
The text was updated successfully, but these errors were encountered: