From a684e122830ac78fafdae6e8ac9283416f5bec7d Mon Sep 17 00:00:00 2001 From: Stuart Longland Date: Fri, 22 Nov 2024 09:41:31 +1000 Subject: [PATCH 1/2] modespec: Correct video timings for Robot72 mode Robot72 is a simpler mode than Robot36 with a scan line that basically is unchanged in format for each row: - 1200 Hz for 9ms - 1500 Hz for 3ms - Y scan for 138ms - 1500 Hz for 4.5ms - 1900 Hz for 1.5ms - U scan for 69ms - 2300 Hz for 4.5ms - 1900 Hz for 1.5ms - V scan for 69ms This is in contrast to R24 and R36 which alternate between sending U and V on even and odd rows. --- modespec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modespec.c b/modespec.c index ff9d7b4..238db79 100644 --- a/modespec.c +++ b/modespec.c @@ -131,9 +131,9 @@ _ModeSpec ModeSpec[] = { .Name = "Robot 72", .ShortName = "R72", .SyncTime = 9e-3, - .PorchTime = 3e-3, - .SeptrTime = 4.7e-3, - .PixelTime = 0.2875e-3, + .PorchTime = 3.0e-3, + .SeptrTime = 4.5e-3 + 1.5e-3, + .PixelTime = 0.215625e-3, .LineTime = 300e-3, .ImgWidth = 320, .NumLines = 240, From d26690750996df4243f6049845c70ba24f97e7f0 Mon Sep 17 00:00:00 2001 From: Stuart Longland Date: Fri, 22 Nov 2024 09:45:26 +1000 Subject: [PATCH 2/2] video: Calculate channel positions for Robot72 Y channel starts at 12ms (9ms SYNC + 3ms PORCH) U starts at 156ms (after Y scan + 6ms of separation pulses) V starts at 231ms (after U scan + 6ms of separation pulses) --- video.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/video.c b/video.c index 389751f..82ed40e 100644 --- a/video.c +++ b/video.c @@ -60,6 +60,14 @@ gboolean GetVideo(guchar Mode, double Rate, int Skip, gboolean Redraw) { // Starting times of video channels on every line, counted from beginning of line switch (Mode) { + case R72: + ChanLen[0] = ModeSpec[Mode].PixelTime * ModeSpec[Mode].ImgWidth * 2; + ChanLen[1] = ChanLen[2] = ModeSpec[Mode].PixelTime * ModeSpec[Mode].ImgWidth; + ChanStart[0] = ModeSpec[Mode].SyncTime + ModeSpec[Mode].PorchTime; + ChanStart[1] = ChanStart[0] + ChanLen[0] + ModeSpec[Mode].SeptrTime; + ChanStart[2] = ChanStart[1] + ChanLen[1] + ModeSpec[Mode].SeptrTime; + break; + case R36: case R24: ChanLen[0] = ModeSpec[Mode].PixelTime * ModeSpec[Mode].ImgWidth * 2;