ramapcsx2 / gbs-control

GNU General Public License v3.0
788 stars 110 forks source link

Laced resolution mouse cursor ghosting on Amiga (Video attached) #287

Open lovrenco opened 2 years ago

lovrenco commented 2 years ago

Hello, If this can be solved than GBS-8200 with GBS-Control would be really the best Scandoubler/Flickerfixer for the Amiga computers. Basically, if we use a) PAL High Res 640256 (non interlaced mode) picture is rock solid, no ghosting, everything perfect. But if we use: b) PAL High res laced 640512 (interlaced mode) there are disturbances when you move mouse cursor around.

I have GBS setu up with latest gbs-control and clock mod installed. I am adding photo of setting I use, and video where you can see disturbance I am talking about. follow the space around mouse cursor. I am recording with mobile phone to VGA monitor, they are not synced so you can see other disturbances, but that is not visible to eye. However, mouse ghosting is visible.

I do not know if this can be fixed with control software or this is scaler hardware issue. ButI know this. If this is solvable it would be most affordable and best scaler in the Amiga community that we know of.

https://user-images.githubusercontent.com/5626489/138609900-11d84161-ff61-47ee-86c5-a93bddf311d4.mp4

Setting

ramapcsx2 commented 2 years ago

The video doesn't work for me, but what you describe is the typical motion adaptive deinterlacing artefact. This deinterlacing method combines bob with weave, detecting motion areas in the picture versus static content. Depending on the detected content, one of the 2 deinterlacing methods are applied in the area. It leaves artefacts around the edges of the motion area, which are highly visible with this kind of content.

lovrenco commented 2 years ago

@ramapcsx2 I think you can download video? Anyway, I made shorter version, with h264 codec, I think it should show now.

About bob/weave deinterlacing method, is that hardware thing or can be done in software at some point?

Nice explanation about Amiga flickerfixer in this thread: http://eab.abime.net/showthread.php?t=78832

Quote:

Actually this is not correct. There is no difference in frequencies between scandoublers and flickerfixers. A normal flickerfixer has the same problems with flat screens as scandoublers.

Let's imagine that the Amiga outputs an image of 640x256 at 50Hz. The scandoubler reads each line from the Amiga and outputs it to the monitor twice at double speed. Thus you get an image of 640x512 at 50Hz on the monitor.

Now let's look at an interlaced screenmode. The Amiga still outputs 640x256 at 50Hz, but it alternates two frames. The first frame contains all the odd lines and the second frame the even lines. If you connect this to a TV without a scandoubler, the TV first outputs the odd lines and then the even lines and the image looks like 640x512 at 25Hz with litte or next to no flicker.

But if you send this through a Scandoubler to a monitor, the information about odd and even gets lost and you get two alternating 640x512 images at 50 Hz. This flickers like hell.

What the flickerfixer does over the scandoubler is, it remembers two 640x256 frames, combines odd and even lines in its buffer and then sends the entire 640x512 image twice to the monitor at double speed. This gives a completely stable image at 50Hz at the cost of a little input lag.

The Indivision AGA/ECS OTOH is much more than a flickerfixer. It does not only combine frames and output it with double speed, it can also change the output frequency and even the resolution. Items like this are usually called up-scalers.

https://user-images.githubusercontent.com/5626489/138744351-22d9b682-c389-4037-ae46-00482509373a.mp4

lovrenco commented 2 years ago

Also, here is project that started some time ago, Open Source Flickerfixer for the Amiga, I do not know if anything from code can help in this case:

https://github.com/niklasekstrom/flickerfixer

ramapcsx2 commented 2 years ago

Software can configure parameters for the hardware. I configured it to strike a balance between deinterlacing into a good static image and yet still dynamic enough to pick up motion. The artefact shown in your video is an excellent result for a motion adaptive deinterlace (that also uses just 1 previous field, for lag reasons) :)

lovrenco commented 2 years ago

@ramapcsx2 Well, I used external amiga MV1200 scandoubler/flickerfixer several years ago, it did not have such artefacts, that is why I am comparing. But it did not have all great advanced features and tweakd your software has, so I cannot say it was better. It was more expensive - that is for sure. :)

BTW, I just tried to switch to "BOB" instead of "MOTION ADAPTIVE", artifacting is not visible if BOB is used, but flickering is too noticeable in this mode.

When "MOTION ADAPTIVE" is used and "GAIN" is on maximum, you can see some blinking pixels on white background. Reducing GAIN solves that problem.

As you said, still image is almost rock solis, as in non-interlaced mode. If just somehow this motion artifacting/shadowing could be stabilized, this would be 100% fantastic. Now it is 99% fantastic. ;)

ramapcsx2 commented 2 years ago

Older flicker fixers probably didn't use motion adaptive, as that was only developed sometimes in the 90s (afaik). So maybe they lined doubled, and maybe they knew to offset each field by one line (not sure). If there was an offset, then the image should be flicker free + stable + no artefacts. (Note: I couldn't get that idea working in gbscontrol, but I tried once :p )

lovrenco commented 2 years ago

I know that SCART input on LCD Toshiba TV does great job deinterlacing laced resolutions using the same machine, still image and cursor, without ghosting, so I suppose there is some trick there. Which one - that is beyond my knowledge.

ramapcsx2 commented 2 years ago

TVs and many bad scalers use many more past fields to help calculate the best result. They look great, until you try to move the mouse and experience 100ms of lag :)

GrumpyModeler commented 2 years ago

I have the same issue. I mostly use the progressive mode since I use it for gaming but it would be nice to have perfect "productivity modes" too. I don't know what the best solution is but I thought I'd chime in too.

lovrenco commented 2 years ago

@GrumpyModeler Many people in Amiga community use gbs-control modified GBS8200 as a "best bang for buck" solution, although rgb2hdmi (RPI zero) is popular as well, for HDMI screens (but i think it does not process higher resolution modes)

gbs-control is really great in native mode, but if you need to do some productivity in laced resolution ghosting is distracting.

I am sure many would appreciate deinterlacing fix if something like that is possible to do eventually, some day....

GrumpyModeler commented 2 years ago

I have developed an adapter to turn the GBS into an internal video card for the Amiga 2000. GBS Control is amazing for Amigas:

Home made CNC -milled ptorotype A2000-Videocard13

Probably final version from PCBWay: A2000-Videocard23

With case: A2000-Videocard16

lovrenco commented 2 years ago

Very nice setup!

I have developed an adapter to turn the GBS into an internal video card for the Amiga 2000. GBS Control is amazing for Amigas:

Home made CNC -milled ptorotype A2000-Videocard13

Probably final version from PCBWay: A2000-Videocard23

With case: A2000-Videocard16