ramapcsx2 / gbs-control

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

How I can deactivate SyncWatch permanently? #321

Open NeoRame opened 2 years ago

NeoRame commented 2 years ago

Since a few days I own a GBSC and try to use it with my NeoGeo MV1FZ

I found out that it works for me when I deactivate the SyncWatch BUT I can't save the change. After a reboot, sadly SyncWatch is activated again. Is there a way to deactivate SW permanently?

Sereosh commented 2 years ago

Issues with MVS slots have been known for a while now. I tried disabling SyncWatch and indeed it appears to fix the jittery and freezing image! Hopefully a more definitive solution can be found in the future. A user on AP reported an older version doesn't have this issue but I'd rather upgrade that go back to a version from 2019.

Here's a little capture I made that shows the changes that happen when toggling SyncWatcher on and off.

antaenc commented 2 years ago

@NeoRame @Sereosh I too needed this, see: https://github.com/ramapcsx2/gbs-control/issues/320#issuecomment-1137196156

Snocksman commented 1 year ago

I have the same Issue with SyncWatch on my Amstrad CPC 464. If SyncWatch is enabled, the Picture jumps from time to time and in special Display resolutions it only scolls diagonal over the screen for a while until the picture breaks down entirely. If SyncWatch is disabled, all is fine. It would be really nice if I could disable SyncWatch permanently.

I checked what @antaenc mentioned in #320 , but it seems that completely disabling the SyncWatcher does not help in my case (the Picture keeps flickering around even more). I have to enable SyncWatcher for a second and then disable it, then the picture is perfect. It would be good, if there is a possibility, to run SyncWatch until it has "found a picture" once and then disable it...

Snocksman commented 1 year ago

I found a sollution which is working for me. I disable the Syncwatcher, after GBS Control has found and tuned to a stable picture once.

if (ignoreLength != GBS::SP_H_PULSE_IGNOR::read()) { GBS::SP_H_PULSE_IGNOR::write(ignoreLength); rto->coastPositionIsSet = 0; // mustn't be skipped, needed when input changes dotclock / Hz SerialM.print(F(" (debug) ign. length: 0x")); SerialM.println(ignoreLength, HEX); rto->syncWatcherEnabled = false; // Disable SyncWatcher, after it has done it´s work... SerialM.println(F("disabled syncwatcher")); }

crabfest commented 1 year ago

I found a sollution which is working for me. I disable the Syncwatcher, after GBS Control has found and tuned to a stable picture once.

if (ignoreLength != GBS::SP_H_PULSE_IGNOR::read()) { GBS::SP_H_PULSE_IGNOR::write(ignoreLength); rto->coastPositionIsSet = 0; // mustn't be skipped, needed when input changes dotclock / Hz SerialM.print(F(" (debug) ign. length: 0x")); SerialM.println(ignoreLength, HEX); rto->syncWatcherEnabled = false; // Disable SyncWatcher, after it has done it´s work... SerialM.println(F("disabled syncwatcher")); }

Does anyone know how to apply this? I built 2 gbs, all components bought from different stores and both of them have issues, there's some weird pinkish noise that scrolls vertically in games that switch resolutions, they go away once syncwatcher is disabled.

Snocksman commented 1 year ago

Applying this to your GBS Control is very simple.

Open the Code in Arduino IDE and search for the Code "block" mentioned in the post (searching for "if (ignoreLength !=" should be enough to find the right Part of the code. Then simply compare the code you see in the IDE with the one you see in the post and add the missing piece of Code (in the IDE). Then compile and Upload. What I changed is the following: When you Power up your GBS Control, Syncwatcher starts and runs until it finds a Signal and synced to it. After that Syncwatcher is disabled until next start of GBS Control.