chriz2600 / DreamcastHDMI

Dreamcast HDMI
MIT License
154 stars 21 forks source link

31KHz 480p output has display area shifted left #4

Closed rdaviesuk closed 5 years ago

rdaviesuk commented 5 years ago

Firmware version: v2.3.4

Using the following video modes, when the Dreamcast is producing 31KHz 480p output:

DC_VIDEO_CONFIG_1080P DC_VIDEO_CONFIG_960P DC_VIDEO_CONFIG_VGA

the visible display area is cut off by four pixels on the left-hand side, for the majority of commercial Dreamcast software.

There are some rare exceptions, like MSR, which is instead comparatively shifted eight pixels to the right (although MSR has its own built in display position config, so it is not a big problem).

Some homebrew software, such as GDmenu, is comparatively shifted four pixels to the right, and appears centred correctly.

The same discrepancies between software can be seen when using the OSSC configured for 640x480 video sampling, with the Dreamcast in 31KHz 480p output.

This area is not missing in 480p HDMI mode, when the Dreamcast is set to 31KHz 480p output:

DC_VIDEO_CONFIG_480P

I think this is because the full 720 horizonal pixels are displayed (although it is still possible the image is not centred correctly).

An easy test for this is to run Rez, which during gameplay frequently writes text partly across the display area that gets cut off on the left-hand side (in Rez the HUD elements are drawn closer to the left and right edges of the screen when the game is in 31KHz 480p output).

This area is also not cut off when the Dreamcast output is 240p, 480i, or 576i, with these video modes:

DC_VIDEO_CONFIG_576P DC_VIDEO_CONFIG_240P_1080P DC_VIDEO_CONFIG_240P_960P DC_VIDEO_CONFIG_240P_480P DC_VIDEO_CONFIG_240P_VGA DC_VIDEO_CONFIG_480I DC_VIDEO_CONFIG_576I

I'm happy to help further with this, thanks for taking a look.

chriz2600 commented 5 years ago

Thank you for your report, this is very interesting! I aligned the visible area using 240p test suite in 31KHz mode. Your observation that some homebrew is shifted 4 pixels to the right compared to e.g. Rez explains, why this is happening. I will definitely fix this in the next firmware version. I think it should be possible to auto-detect the correct screen position in most cases (by tracking, where non-black pixels are), but I will also add a setting to set the horizontal position manually.

rdaviesuk commented 5 years ago

Great, thanks!

chriz2600 commented 5 years ago

Fixed in upcoming v4.0, which is in testing right now. For a complete list of changes, see: Firmware v4.0

chriz2600 commented 5 years ago

v4.0 was released today.