You are not logged in.

Read the FAQ and Knowledge Base before posting.
WiFi not emulated and not supported!!
We won't make a 3DS/2DS emulator.



#1 2017-08-13 13:43:00

mgitkun
Member
Registered: 2017-06-06
Posts: 38

Flickering in 358/2 Days when rendering on both screens

I tested this on build 9a5e52a7 with these settings. I also tried other renderers, other display methods, and disabling game hacks, all of which had no notable impact.

In Kingdom Hearts 358/2 Days it seems that during scenes where the game is rendering 3D objects on both displays the top display will flicker.
The top display flickers during these scenes only when using 24 bit color depth (when using either 15 or 18 bit color there's no flickering) or when GPU scaling is greater than 1x.
I'm not sure that rendering on both screens is the reason for the flickering but I've yet to see this happen under any other conditions. 


I thought it was a little weird that the top screen continued to flicker even after the scene which was using the bottom display ended and the bottom screen no longer had anything on it, I tried hiding the Sub Layers to see if it did anything about the flickering. It didn't. Hiding Main BG 0 on the other hand showed that while the scene on the bottom screen was hidden it may not have ended, as far as I can tell it was still being rendered.....not sure if that's related or if it's supposed to remain, I just found it a bit strange so I thought I should include it here. It's entirely possible I misunderstood what was happening.


Recording of this scene with 18 bit, 24 bit, and 24 bit with main BG 0 disabled.       


Here's a savestate and save file for the US release of Days (NTR-YKGE-USA) so that you can reproduce the issue if needed.

Last edited by mgitkun (2017-08-13 16:08:16)


i5 2500K - CPU | GTX 480 - GPU | 8GB - RAM | TX650 - PSU | Windows 7 x64 - OS

Offline

#2 2017-08-14 06:21:09

rogerman
Member
Registered: 2011-06-04
Posts: 351

Re: Flickering in 358/2 Days when rendering on both screens

Ugh... I knew that this issue was going to catch up with me sooner or later. I just didn't think it would happen so soon. sad

The problem is this: When a display captured framebuffer is drawn through the OBJ layer, there is an assumption made at line 0 about where the OBJ layer should start reading from custom VRAM. Unfortunately, this game proves that the assumption cannot be made in all cases.

So the solution is to eliminate the assumption being made with the custom VRAM read address. This will be my excuse to rework OBJ layer compositing, which still suffers from a number of issues. Fixing this bug will be the first step in resolving the performance, readability and code organization issues that are still present.

Offline

#3 2017-08-14 23:46:05

rogerman
Member
Registered: 2011-06-04
Posts: 351

Re: Flickering in 358/2 Days when rendering on both screens

Fixed in commit 7487bf2.

Offline

#4 2017-08-15 09:38:03

mgitkun
Member
Registered: 2017-06-06
Posts: 38

Re: Flickering in 358/2 Days when rendering on both screens

rogerman wrote:

Fixed in commit 7487bf2.

Wow, that was fast...I guess when you said it would be the first step you meant it literally haha.
Thanks for the fix, I checked and it works as it should now.

Oh and thanks for the explanation on what was causing it, always appreciate some insight into what was actually going wrong.

Last edited by mgitkun (2017-08-15 09:42:43)


i5 2500K - CPU | GTX 480 - GPU | 8GB - RAM | TX650 - PSU | Windows 7 x64 - OS

Offline

Board footer

Powered by FluxBB