irixxxx / picodrive

Fast MegaDrive/MegaCD/32X emulator
Other
52 stars 24 forks source link

[Miyoo & Master System] Improper vertical scaling #59

Closed freq-mod closed 2 years ago

freq-mod commented 2 years ago

"If you try to scale the image in MasterSystem games to fullscreen with "scalling" options, you will get black bars top/bottom due to insufficient vertical scalling (it stretch only to small extend). The same problem can be seen with GameGear emulation when you turn off option 'Emulate Game Gear LCD', which then ( I assume ) runs GG games in expanded MS resolution thus reproducing similar bad scaling on vertical axis."

At least this is what I have been told. Miyoo's screen resolution is 320x240, if this information is of any help.

irixxxx commented 2 years ago

This is intentional. SMS games usually had a resolution of 256x192 on a 262 line ntsc screen, so it originally had black bars on an NTSC tv as well. I replicate this to mimic the original aspect ratio as close as possible.

Apaczer commented 2 years ago

Hi @irixxxx, The image is being stretched exactly to 320x204 utylizating scaling by software on both axis. Below original and croped image from the device. system-20 system-20_v1

Would it be possible to scale it fully on Vertical axis for 4:3 Miyoo's devices (thus replicating original aspect r.)?

irixxxx commented 2 years ago

That's exactly as expected. SMS outputs the 256x192 image as a 256x224 with 16px black bars on top and bottom, which produces the Bars on the NTSC screen. Scaling from 224 to the 240 lines of the miyoo screen makes for 204 lines of visible output. IMO this keeps the exact aspect ratio of the NTSC screen.

irixxxx commented 2 years ago

In this thread the real screen aspect ratio is said to be 1.5211 for NTSC. I have now 320/204=1.5686, but 320/240 would be 1.4285.

That is, while my version isn't perfectly good, it's closer to the real thing than upscaling to 320x240. The best would be 320/1.5211=210, but OTOH this would also require blowing up 256x224 to 320x245 for correct aspect ratio. Ugh, no thanks ;-)

It's not correct for PAL games, though. The thread says it should come out at 320/1.803=177 vertically to have the correct aspect ratio. Not sure if I'm going to change that, since only a handful really needs this.

Apaczer commented 2 years ago

For someone that did not have original hardware, I assumed that 4:3=1.3333 was the desired aspect for correct displaying (hence my above statement, coming from exp. with others emulators). Considering what you have said and putting side by side two images 224x192 and 256x192, I see now that the later one outputs sprites looking a bit stretched on V axis (below comparison). horz_comp Thanks for clarification and a means to play those games in their true form. For anyone insisting to play with full 4:3 aspect I redirect to libretro fork.

irixxxx commented 2 years ago

Here's a video showing emulation with the full overscan. It can get quite ugly (see Sonic from 2:00), which is why I don't fill the non-active display area with the background color ;-)

Apaczer commented 2 years ago

From some testing, I see now that even GG games are reproduced correctly with added bars, thus giving desired proportion from 4:3 aspect for all objects (below exampel). system-32-horz GG in SMS mode (from 1.11?); GG in SMS (from 4:3) ; GG original LCD (4:3).

irixxxx commented 2 years ago

The GG screen has exactly 4:3 resolution format and has 160x144 pixels. Upscaling produces 320x240 pixels, which is in 4:3 as well, so that should be an exact fit. The GG VDP actually has the same resolution as the SMS screen, namely 256x192. On the LCD only the center 160x144 pixels are displayed. The "Non-LCD mode" in picodrive isn't exactly an SMS mode, it just shows the full resolution the VDP is delivering. It was more a fun thing since some games actually show something in this normally invisible area.