ramapcsx2 / gbs-control

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

RGsB (Sync on Green) from PS2 --> No Signal detected #341

Open nor2101 opened 2 years ago

nor2101 commented 2 years ago

Hi,

I've recently modded the GBS8200 with the gbs-control and it has been relatively smooth sailing.

In my brief testing so far all the inputs work fine (YPbPr, RGBHV, RGBs) except for the RGsB one (connected to the d-sub 15 port where you connect rgbhv vga input).

I'm testing the console with a secondary RGsB compatible VGA monitor and I'm sending the signal using the ps2 component cables + a simple passive 3 RCA to D-sub 15 adapter, and when I set the console in VGA 640x480 mode I get a picture just fine.

Sadly with the same setup but using the gbs-control I get no picture (no blue LED active at all). When I set the console to regular RGBs using the same passive adapter and I also connect the yellow wire of the ps2 component cables to sync (tip to sync and sleeve to gnd of course) I get a signal from the GBS8200 just fine.

Somehow the GBS can't find the sync signal on the green line.

I tried both with and without a 100Ohm resistor between sync (csync) and gnd: same result.

Now, I have a few doubts:

Thank you for your help and patience.

ramapcsx2 commented 2 years ago

I think the problem is that the RGBHV / RGBS input channel is not programmed to look for RGsB. Doing so had several problems, iirc. It should work if you use the 3 input port.

nor2101 commented 2 years ago

I think the problem is that the RGBHV / RGBS input channel is not programmed to look for RGsB. Doing so had several problems, iirc. It should work if you use the 3 input port.

Thanks! I tried with the 3 input component port but I get a strong red tint. The GBS sees the sync on the Y wire but still thinks it is component video and tries to process it like YPbPr.

I experimented and tried to connect the green line to C33 with a jumper --> I get a picture with RGsB on rgbs input! But it has a slight red colour cast. I removed the jumper immediately because I don't know if it could cause damage to the GBS.

ramapcsx2 commented 2 years ago

Yep, the Component input is meant for Component, not RGsB. The difference is in the color mixing.

You would not damage the GBS, I think, but yea, you found the "issues", or one of it :)

ramapcsx2 commented 2 years ago

But I think I have a special mode for the PS2, that allows the console in RGBHV mode to run higher resolutions over the Component cables. I really don't remember well though..

nor2101 commented 2 years ago

Yep, the Component input is meant for Component, not RGsB. The difference is in the color mixing.

You would not damage the GBS, I think, but yea, you found the "issues", or one of it :)

Ok, thank you for the explanation. Do you think that the reason for the slight red colour cast when bridging green to C33 is because somehow by doing so it's lowering the voltage of the green line? I know that if you split a video source without amplification you get a darker or no image at all (and in some cases you risk damaging the video source), but perhaps this is a different issue altogether.

But I think I have a special mode for the PS2, that allows the console in RGBHV mode to run higher resolutions over the Component cables. I really don't remember well though..

It's ok. I'm building an RGB Scart breakout board anyway, might as well throw an LM1881 in there to extract sync from green, even thought I'm not really using it that much (it was curiosity more than anything, ahahah).

Thank you again for the answers (and for this incredible project!)

ramapcsx2 commented 2 years ago

You're welcome :) Color balance problems come from the design differences between Component Video and RGsB. They have different electrical properties, and the decoding hardware and software has to be adapted to which it is. The idea of bridging sync into the channel somehow won't work, I think.

But look into that special PS2 mode more. There should be a mode that allows you to run high RGB resolutions with correct color, and without special circuits.

nor2101 commented 2 years ago

You're welcome :) Color balance problems come from the design differences between Component Video and RGsB. They have different electrical properties, and the decoding hardware and software has to be adapted to which it is. The idea of bridging sync into the channel somehow won't work, I think.

What I find curious is the difference between connecting RGsB to YPbPr input and bridging green to C33. In one case you get a strongly pink tinted image, which of course is the result of the GBS trying to decode sync on green as YPbPr. You get a strong green tint if you try to do the opposite on a sync on green monitor (same reason but backwards).

In the other case you get a mostly correct image with a slight red colour cast, almost as if the green level is being lowered when split between the RGB input and C33 input. Of course it's not correct to do so anyway, it's just the result of me poking around :D

But look into that special PS2 mode more. There should be a mode that allows you to run high RGB resolutions with correct color, and without special circuits.

I tried that: I can output DTV resolutions (480p, 720 and 1080i) from ps2 component video, but any VESA mode (640x480, 800x600, 1024x768) forces sync on green, even if you set YPbPr in the system configuration.

AFAIK there is no way to get RGBs 480p or higher on PS2 through software, only vesa 480p sync on green or DTV 480p component.

I know it's possible to hardware mod the ps2 to disable SoG and always force csync in RGB mode, but I couldn't find more info about it and I'm not comfortable poking around on the ps2 mobo without guidance.

ramapcsx2 commented 2 years ago

I think the special mode is that kind of PS2 sync on green still over Component. It should give you a picture that is correct, for the VESA modes. https://github.com/ramapcsx2/gbs-control/blob/master/gbs-control.ino#L5052

nor2101 commented 2 years ago

I think the special mode is that kind of PS2 sync on green still over Component. It should give you a picture that is correct, for the VESA modes. https://github.com/ramapcsx2/gbs-control/blob/master/gbs-control.ino#L5052

Ok, I tried the other vga vesa modes though component and: they work!

The ONLY one that gives the pink tint is VESA 640x480@60Hz. Is it because it's hard for the firmware to tell apart from DTV 480p 60hz ypbpr?

All the others are decoded properly, as you can see: IMG_20220625_125646 IMG_20220625_125711 IMG_20220625_125925 IMG_20220625_125949

ramapcsx2 commented 2 years ago

Right, that's a cool hack that kind of works okay. Find a good mode for OPL and you can even run games with this :)

nor2101 commented 2 years ago

Right, that's a cool hack that kind of works okay. Find a good mode for OPL and you can even run games with this :)

Yeah, it's pretty cool! Too bad for vesa 480 60Hz, but I guess it's not worth the hassle to make the software detect it differently from 480p component

ramapcsx2 commented 2 years ago

That's the main issue of this project, that causes most of the unreadable code: Too many possible variations, and they only have little differences to detect them. This meets too many possible operation modes, and it all became a mess :p

invaderlex commented 1 year ago

That's the main issue of this project, that causes most of the unreadable code: Too many possible variations, and they only have little differences to detect them. This meets too many possible operation modes, and it all became a mess :p

Is there is a way to change it manually instead of auto detect? A button or something?