Jump to content
mytek

RGB2VGA: customizing a GBS-8200 for a cleaner low-lag image

Recommended Posts

Although this was originally discussed in the 1088XLD topic, I felt this needed a topic of its own in order to not derail the XLD discussion more than I already have. So I decided to branch this off into its own topic.

 

Let's talk about a GBS-8200 (HD 9800) XLD carrier board for high quality almost zero lag RGB to VGA output conversion, with RGB sourced from either a Sophia or VBXE. In fact I'll be calling this board RGB2VGA-XLD from this point forward to keep things simple. To obtain optimum results from the GBS-8200 which is a Chinese produced off the shelf Arcade Video Conversion board, it'll need to have the original firmware in the TV5725 video scaler chip replaced with custom presets (video parameters). Luckily the GBS-8200 pretty much comes ready to do this right out of the box, only requiring the addition of a 4-pin header (P5) and a jumper (P8), and some sort of external processor to poke in the new presets.

 

Edit: my intentions are to create this in a carrier/mounting board version for the XLD, as well as a small I2C plug-in only version to just modify the GBS-8200 presets,  thus keeping the target system this is aimed at more generic (i.e., XE, XL). There are some very nice 3D print designs that can be used to house a GBS for external use.

 

GBS-8200_board_image.jpg.91cc9d6e7bec26c9e3247f0a83fd58f5.jpg

 

The first attempt at creating custom presets for the GBS-8200 that I am aware of, was done by a guy with the alias of dooklink over at the schmups forum. His project revolved around the use of a Raspberry Pi to reprogram the presets via a bit-banged I2C interface. Later a guy by the name of Bruce Abbot at bhabbot.net.nz figured out how to get this working on a ATTiny681 chip, which is what I ran my initial tests with. However recently I decided that I wanted to transition this over to a different embedded processor chip called the PIC, which would allow for re-flashing via a JOY2PIC, just like all the other PICs currently being used on the 1088XLD. However my endeavours to do this have not faired well, and I have hit a wall which I have yet to climb over. Basically I think my scaler preset tables are correct and my I2C routines seem to be working properly when checked on a scope, but thus far no dice on getting a proper image to appear from the VGA output. My PIC code is being written in Great Cow Basic which is a free code development package, thus allowing it to work for either an AVR or PIC chip, while being done in an easy to understand syntax allows modifications to be easily made by others that chose to do so. Well assuming I can get this work in the first place ;) .

 

Here's my code...

Initially I only have it targeting a PAL display, but once I get this working it'll be a simple matter to add a switch to change to NTSC mode. I also I plan to migrate this into a PIC12F1572 8-pin PIC, which sells for around $0.71 a piece.

  #chip 16F1847

;Define I2C settings

  #define I2C_MODE Master
  #define I2C_DATA PORTA.0
  #define I2C_CLOCK PORTA.1
;  #define I2C_BIT_DELAY 200 us
;  #define I2C_CLOCK_DELAY 20 us
;  #define I2C_END_DELAY 20 us

  #define I2C_ADDRESS 0x2E      ;address of the slave device

;Define Switch and LED ports

  #define LED PORTA.2


;====================================================
; Main Program Loop
;====================================================

 Dir LED Out
  LED=0                           ;turn ON LED

  wait 500 ms

  for segment = 0 to 5
    I2CStart
    I2CSend I2C_ADDRESS
    I2CSend 0xF0              ;access Bank Register
    I2CSend segment        ;set to New Bank  (point to segment)
    I2CStop

    I2CStart
    I2CSend I2C_ADDRESS

    if segment=0 then
      I2CSend 0x40          ;register start address for Segment 0
    else
      I2CSend 0x00          ;register start address for Segment 1-5
    end If

    index = segment+1
    readtable Slen, index, Nbytes   ;retrieve segment length

    ;send the presets

    for register = 1 to Nbytes
      Select Case segment
        Case 0
        readtable P0, register, data
        Case 1
        readtable P1, register, data
        Case 2
        readtable P2, register, data
        Case 3
        readtable P3, register, data
        Case 4
        readtable P4, register, data
        Case 5
        readtable P5, register, data
      End Select
      I2CSend data
    next register
    I2CStop
  next segment

;all done - flash LED

  Do Forever:
    wait 500 ms
  LED=1
    wait 500 ms
  LED=0
  Loop

;====================================================
; Preset Tables
;====================================================

;Define Segment Lengths

Table Slen
32
144
64
128
96
112
End Table

;288p 50Hz 1280x1024 Preset Tables Start Here

; Bank 0 ---------------------------------------------------------------------
Table P0
; 40-5F: misc. data
7,   0,   0,   0,  0,   0,  174,   223,   4,   5,   195,   163,   26, 1,   97,  0
144,   12,   62,   0,   0,   100,   2,   179,   6,   123,   0,   56,   1,  0,   0,   0
End Table

; Bank 1 ---------------------------------------------------------------------
Table P1
; 00-2F: input format
96, 224, 100, 255, 255, 255, 255, 255, 255, 255, 255,  79, 134,   5,  89, 203
18,   0,  71,   0,  44,   3,  92,   0,  87,   3, 135,   0, 111,   2,   16,   0
56,   0, 146,   3, 155,   6, 159,   6,   4,   0,   0,   0,   0,   0,   0,   0

; 30-5F: HD bypass
202,   0, 128,   0,  63,   0, 128,  44, 204,   0,   0,   0,   0,   1, 192,   0
0,   1, 192,   0,   0,   1, 192,   0,   0,   1, 192,   0,   0,   1, 192,   0
0,   1, 192,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0

; 60-8F: Mode detect
208,  34,  32,  39,  65,  62, 178, 154,  78, 214, 177, 142, 124,  99, 139, 118
112,  98, 133, 105,  83,  72,  93, 148, 178,  70, 198, 238, 140,  98, 118, 156
 0,   0,  53,   0,   0,  12, 202,   0,   0,   0,   0,   0,   0,   0,   0,   0
End Table

; Bank 2 ---------------------------------------------------------------------
Table P2
; 00-3F: deinterlace
255,   3, 204,   0,   0,   0,   5,   5,   7,   0,  76,   4, 204, 152, 255,  73
33, 136, 142,   0,   0,   0, 124,  35, 214, 208,   0,  16,   0,   0,   0,  16
81,   2,   4,  15,   0,   0,  76,  12,   0,   0,   0,   0,   0,   0,   0,   0
0,   0,  52,   0, 136,  71,   3,  11,   4, 100,  11,   4, 143,   0,   0,   0
End Table

; Bank 3 ---------------------------------------------------------------------
Table P3
; 00-6F: Video processor
244, 164, 194, 176, 164,   6,  23, 124, 194, 150,   0,   0,   6,   8, 128, 226
164,  15,  16, 172, 128, 152, 194,  35,   2,   0,   0,   0,   0,   0,   0,   0
0,   0,   0,  96,   3,   0, 207,  38,  32, 220,  17, 224,  47,  32, 240,  64
26,   0,   0,   0, 125,  31,  44,   0,   0,   0,   0,   0,   0, 144,   0,   2
3,   0,   0, 248,  31, 248,  31, 248,  30, 208,  32, 248,  10, 142,  30,  48
0,  56,   8,  36,  10,  11, 234,  26,   0,   0,  26,   0, 196,  63,  4,   4
155, 128,   9, 233, 239, 127,  64, 210,  13, 216, 223,  63,   0,   0,   0,   0

; 70-7F: PIP
8,   0, 180,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
End Table

; Bank 4 ---------------------------------------------------------------------
Table P4
; 00-1F: memory
130,  48,   0,   0,  48,  17,  66,  48,   1, 148,  17, 127,   0, 116,   0,   6
0, 146,   1,   1, 150,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0

; 20-5F: capture/playback + FIFOs
0,  43,   3,  31, 255, 255, 207, 255, 255,  31,   0, 164,  30,   0, 128,   0
0,   0,   0,   8,   0,   0,  16, 180, 204, 179,   0,   2,   0,   4,   3,   0
4,   0, 105,   0, 255, 255,   7, 255, 255,   7,   0,  68,   0, 224,  40,  62
192,   0,   0,   0, 104,   1, 192, 180, 204,  90, 204,  76,   0,   0,   0,   0
End Table

; Bank 5 ---------------------------------------------------------------------
Table P5
; 00-1F: ADC
216,   0,  87, 241,   0,   0,  63,  63,  63, 127, 127, 127,   0,   0,   0,   0
0, 144, 179, 198,   0,   0,  32, 206, 133, 130,   0,   0,   0,   0, 128,   4

; 20-6F: Sync processor
208,  32,  15,   0,  64,   0,   5,   0,   0,   0,  15,   0,   0,   4,   0,   4
 0,  47,   0,  40,   3,  21,   0,   4,   4,  15,  10,   0,   0,   0, 192,   3
11,  39,   6, 126,   6,   0, 192,   5, 192,   4, 192,  52, 192, 103, 192, 103
192,   0, 192,   5, 192, 192,  33, 192,   5, 192,   1, 200,   6,   0,   0,   0
0,   0,   0,  15,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
End Table

Here's the register map for the TV5725 video scaler chip on the GBS-8200: TV5725 Register Map.pdf

The full document describing the registers: TV5725 Registers Definition v1.1.pdf

And the programming Guide: TV5725 Programming Guide.pdf

 

The TV5725 is one very capable chip, but as such, it is also very complicated. So I wasn't about to write the new preset tables from scratch, and instead copied this over from the original ATTiny681 project, although for test purposes I divided it up into the different segment (bank) assignments and functions.

 

The following describes the I2C communication for updating the TV5725's internal registers. With an I2C read being done by using a slave address of 0xAE, and a write uses a slave address of 0x2E. To set a base address (also called a segment), 0xF0 is sent following the 'write' slave address, with the next byte sent equal to segment 0-5 which sets the register bank you'll be talking to. Finally the register address within the segment is sent, then followed by the new preset data.

10.2 I2C writing
When writing to 5725, the slave address is AE/2E H . A control sequence as following:
•
Write to One Control Register
Start Signal
Slave Address Byte (R/W Bit = Low)
Base Address Byte
Data Byte to Base Address
Stop Signal
•
Write to Consecutive Control Registers
Start Signal
Slave Address Byte (R/W Bit = Low)
Base Address Byte
Data Byte to Base Address
Data Byte to (Base Address + 1)
Data Byte to (Base Address + 2)
Data Byte to (Base Address + 3)
..................
Stop Signal

If any of you coders see where I'm going wrong please feel free to point it out :) .

 

The original ATTiny681 code: GBS_Control-ATTINY681.tar.gz

 

  • Like 6

Share this post


Link to post
Share on other sites

From the source:

 

#define GBS_I2C_ADDRESS 0x17 // 0x2E

 

why's that?

 

Edit: Oh I see, the I2C bitbanger does this:

 

(slaveAddr << 1) | I2CBB_SEND

 

0x2e is 0x17 * 2

 

Edited by ivop
  • Like 1

Share this post


Link to post
Share on other sites

Any idea if this will work with the 8220? (Dual-VGA output). I accidentally bought that version a few months back and would like to eventually put it into use. 

Share this post


Link to post
Share on other sites
10 hours ago, mytek said:

index = segment+1

readtable Slen, index, Nbytes ;retrieve segment length

You sure this is correct? Is this an Arrays Start At One language?

 

Edit: and could you explain what exactly is not working?  Can you read back the values you wrote and compare?

 

Edited by ivop

Share this post


Link to post
Share on other sites
1 hour ago, DrVenkman said:

Any idea if this will work with the 8220? (Dual-VGA output). I accidentally bought that version a few months back and would like to eventually put it into use. 

Besides the added redundant VGA connector , I believe there is a difference in the board size. They both use the same TV5725 chip, and will respond the same to the preset change. However the RGB2VGA-XLD is going to be planned around the GBS-8200 and not the 8220, so I can't guarantee that the 8220 will mount up properly. For a non-XLD application either board will work without problems.

 

26 minutes ago, ivop said:

You sure this is correct? Is this an Arrays Start At One language?

If I recall correctly,  arrays and tables are treated differently in GCB regarding index '0'. However In tables the '0' index holds the length of the table, thus the reason to start at an index of '1' to retrieve the first data value. So theoretically I could have eliminated the length table and done something like this instead, with the x in Px being a value between 0-5.

readtable Px, 0, Nbytes   ;retrieve segment length

To really be effective and keep the code simple and short, I would need to do something more like this.

readtable P(segment), 0, Nbytes   ;retrieve segment length

That way only one readtable statement is required to cover all instances. But I don't know if the name of the table can be modified in this way, or if it can, what the syntax really needs to look like.

 

More info

 

Quote

Edit: and could you explain what exactly is not working?  Can you read back the values you wrote and compare?

 

With this latest code all I see is a black screen. To be honest I haven't tried doing a read after the write to see if the data actually got stored. I guess that should be my next move ;) .

 

Share this post


Link to post
Share on other sites

I did do a verification that the slave address being sent is being accepted by the TV5725 chip using a scope. After all the bits of the address are sent from the Master to the Slave a low ACK bit response from the Slave means it was accepted. I did see such a response when sending 0x2E, but saw the opposite for anything else

 

51ae0000ce395f645d000000.png

Diagram from: https://learn.sparkfun.com/tutorials/i2c/all

 

Share this post


Link to post
Share on other sites

I got this far with my reprogrammer and just haven't had time to work on it since. It is still in my active projects list so I will be watching this thread with interest. 

 

IMG_1837.jpeg

  • Like 1

Share this post


Link to post
Share on other sites

Yes imagine how much smaller that board can be made with an 8 pin chip (PIC12F1572) :) .

 

Share this post


Link to post
Share on other sites

The crowd at VCFMW sure loved the 1088XLD.  I spoke to as many people as 8-but-guy did for his something or other Commodore conversion.  We have no Youtube presence.  I lost my voice by mid-day Saturday.  What a crowd!

 

BTW - Claus B sure likes the 1088 stuff.  What a pleasure and an honour talking to him earlier this morning.

  • Like 3

Share this post


Link to post
Share on other sites

Stephen I know you said there was no YouTube presence, but will there be video and/or photos posted at some point down the road?

 

Glad to see that people were interested 👍 .

 

Share this post


Link to post
Share on other sites
31 minutes ago, mytek said:

Stephen I know you said there was no YouTube presence, but will there be video and/or photos posted at some point down the road?

 

Glad to see that people were interested 👍 .

 

Videos - I am sorry, I couldn't.  I did not even get to look at, nor take pictures of any other areas because I was literally sat at my booth and talking to people the entire 2 days.  This is all I can offer:

VCFMW 14

 

Here's a link from Gozar - showing me talking to Claus B:
molar-2019-09-15-800x.jpeg

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites
11 hours ago, Stephen said:

Videos - I am sorry, I couldn't.  I did not even get to look at, nor take pictures of any other areas because I was literally sat at my booth and talking to people the entire 2 days.  This is all I can offer:

VCFMW 14

Your setup looked nice, simple, and to the point this year. Pretty cool that you got a couple pics with Ben Heck and David Murray next to you. Couldn't ask for better company, or celebrity status. Also very cool that you got to spend time with Claus.

 

Its still soon after the festival, likely a few more days passing will bring out more photos and perhaps some video taken at the show.

 

Share this post


Link to post
Share on other sites
14 hours ago, Stephen said:

Videos - I am sorry, I couldn't.  I did not even get to look at, nor take pictures of any other areas because I was literally sat at my booth and talking to people the entire 2 days.  This is all I can offer:

VCFMW 14

 

Here's a link from Gozar - showing me talking to Claus B:
molar-2019-09-15-800x.jpeg

Oh WoOoW!

 

Well, I am also a "silent" fan of Claus, and what a nice occasion it should have been to share some time with him, while interacting with the "boss" (800).

 

I do wonder if he ever saw the 800/Incognito before this meeting... I also wonder what was on his mind, at that very moment...

 

THANKS for sharing!

 

;-)

 

  • Thanks 1

Share this post


Link to post
Share on other sites
1 hour ago, Faicuai said:

Oh WoOoW!

 

Well, I am also a "silent" fan of Claus, and what a nice occasion it should have been to share some time with him, while interacting with the "boss" (800).

 

I do wonder if he ever saw the 800/Incognito before this meeting... I also wonder what was on his mind, at that very moment...

 

THANKS for sharing!

 

;-)

 

I am not sure if he saw the Incognito before, but I made very sure to demo the features of it and U1MB, and also let him know of @flashjazzcat amazing work on the loader, his GUI, and Last Word.  Everyone that saw the GUI was well impressed.

 

@ClausB did mention that he had not seen Rasta converted images on real hardware, and we discussed his pre-production serial number 26 800.  I was glad to get to demo this stuff, that's for sure.

  • Like 1

Share this post


Link to post
Share on other sites

It was a pleasure to see Stephen again and to play with the cool new stuff he had on display. He had the best explanations and his enthusiasm was inspiring.

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

Making progress...

 

 

GBS-8200 I2C reprogramming now being done by a PIC12F1572 and completely rewritten in Great Cow Basic.

Now that's it's been ported over to a PIC chip, it can be flashed with a JOY2PIC, same as all the other custom MCU's on the 1088XLD.

 

Here's the code where it stands thus far...

; Default to 8 Mhz internal factory calibrated oscillator

  #chip 12F1572, 8

; Enabling Weak Pull-Ups

  OPTION_REG.7 = 0    ;enabling Port A pull-ups in general.
  Set WPUA2 = 1       ;Port A input 2 (switch) pulled up

; Define I2C settings

  #define I2C_MODE Master
  #define I2C_DATA PORTA.5      ;SDA Port
  #define I2C_CLOCK PORTA.4     ;SCL Port
  #define I2C_ADDRESS 0x2E      ;address of the GBS slave device

; Define Switch and LED ports

  #define GRN PORTA.0   ;Green LED = NTSC
  Dir GRN Out
  #define RED PORTA.1   ;RED LED = PAL
  Dir RED Out
  #define SW PORTA.2    ;Mode select switch (PAL or NTSC)
  Dir SW In
  Dim SW_old as Bit     ;stores switch state for comparision

; I2C Sub Routine to Set which Bank (segment) will be active
;   Calling Parameters: 1
;   Bank: 0-5 (specifies 1 of 6 possible TV5725 segments)

  Sub SetBank (In Bank)
     Repeat 3
        I2CStart
        I2CSend I2C_ADDRESS
        I2CSend 0xF0
        I2CSend Bank
     End Repeat
     I2CStop
  End Sub

; I2C Sub Routine to 'Write One Byte' to specified register
;   Calling Parameters: 3
;   Bank: 0-5 (specifies 1 of 6 possible TV5725 segments)
;   Reg: 0-159 (specifies a specific register within the segment)
;   Value: 0-255 (specifies a byte value to write into the register)

  Sub WriteByte (In Bank, In Reg, In Value)
    GoSub SetBank (Bank)
      I2CStart
      I2CSend I2C_ADDRESS
      I2CSend Reg
      I2CSend Value
      I2CStop
  End Sub


;====================================================
; Main Program Loop
;====================================================

 GRN=1      ;Turn on both LEDs initially to indicate I2C transfer
 RED=1

  wait 100 ms     ;small pause to allow GBS to fully power-up

; Set segment bank address, and then punch in the presets for that segment

  For segment = 0 to 5

   GoSub SetBank (segment)   ;Set Bank Address = Segment

    I2CStart
    I2CSend I2C_ADDRESS
    If segment=0 Then
      I2CSend 0x40           ;register start address for Segment 0
    Else
      I2CSend 0x00           ;register start address for Segment 1-5
    End If

    readtable Slen, segment+1, length   ;retrieve segment length

    ; Send the Presets
    For register = 1 to length
      Select Case segment
        Case 0
        readtable P0, register, data
        Case 1
        If SW Then
        readtable N1, register, data    ; use NTSC Presets
        Else
        readtable P1, register, data    ; use PAL Presets
        End If
        Case 2
        readtable P2, register, data
        Case 3
        If SW Then
        readtable N3, register, data    ; use NTSC Presets
        Else
        readtable P3, register, data    ; use PAL Presets
        End If
        Case 4
        readtable P4, register, data
        Case 5
        readtable P5, register, data
      End Select
    I2CSend data
    Next register
    I2CStop
  Next segment

; Activate !!!
  GoSub WriteByte (0, 0x46, 0x00)   ;Soft Reset
  GoSub WriteByte (0, 0x46, 0xFF)
  GoSub WriteByte (0, 0x47, 0x00)   ;Soft Reset
  GoSub WriteByte (0, 0x47, 0xFF)
  GoSub WriteByte (5, 0x11, 0x12)   ;Latching PLLAD for Pixel Clock
  GoSub WriteByte (5, 0x11, 0x92)

  SW_old=SW   ;store switch state

; All Done - Loop while flashing LED w/color based on switch setting

  Do Forever:
    wait 1 s
    If SW<>SW_old Then RESET    ;Soft Reset if switch state changes
    If SW Then
    GRN=1         ; NTSC Mode Selected
    Else
    RED=1         ; PAL Mode Selected
    End If
    wait 1 s
    If SW<>SW_old Then RESET    ;Soft Reset if switch state changes
    RED=0
    GRN=0
  Loop

;====================================================
; Preset Tables
;====================================================

; Define Segment Lengths

Table Slen
32
144
64
128
96
112
End Table

; 288p_50Hz_1280x1024 PAL Preset Tables === Start Here ===

; Misc
Table P0
124, 164, 0, 0, 37, 1, 95, 7, 63, 0, 0, 0, 0, 42, 0, 48
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
End Table

; Input Formatter, HD-Bypass, Mode detect
Table P1
96, 224, 100, 255, 255, 255, 255, 255, 255, 255, 255, 79, 134, 5, 89, 203
18, 0, 71, 0, 44, 3, 92, 0, 87, 3, 135, 0, 111, 2, 16, 0
56, 0, 146, 3, 155, 6, 159, 6, 4, 0, 0, 0, 0, 0, 0, 0
202, 0, 128, 0, 63, 0, 128, 44, 204, 0, 0, 0, 0, 1, 192, 0
0, 1, 192, 0, 0, 1, 192, 0, 0, 1, 192, 0, 0, 1, 192, 0
0, 1, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
208, 34, 32, 39, 65, 62, 178, 154, 78, 214, 177, 142, 124, 99, 139, 118
112, 98, 133, 105, 83, 72, 93, 148, 178, 70, 198, 238, 140, 98, 118, 156
0, 0, 53, 0, 0, 12, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0
End Table

; De-Interlace
Table P2
255, 3, 204, 0, 0, 0, 5, 5, 7, 0, 76, 4, 204, 152, 255, 73
33, 136, 142, 0, 0, 0, 124, 35, 214, 208, 0, 16, 0, 0, 0, 16
81, 2, 4, 15, 0, 0, 76, 12, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 52, 0, 136, 71, 3, 11, 4, 100, 11, 4, 143, 0, 0, 0
End Table

; Video Processor, PIP
Table P3
2, 244, 164, 194, 176, 164, 6, 23, 124, 194, 150, 0, 0, 6, 8, 128
226, 164, 15, 16, 172, 128, 152, 194, 32, 2, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 96, 3, 0, 207, 38, 32, 220, 17, 224, 47, 32, 240
64, 26, 0, 0, 0, 125, 31, 44, 0, 0, 0, 0, 0, 0, 144, 0
2, 3, 0, 0, 248, 31, 248, 31, 248, 30, 208, 32, 248, 10, 142, 30
48, 0, 56, 8, 36, 10, 11, 234, 26, 0, 0, 26, 0, 196, 63, 4
4, 155, 128, 9, 233, 239, 127, 64, 210, 13, 216, 223, 63, 0, 0, 0
0, 8, 0, 180, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
End Table

; Memory, Capture/Playback, FIFO
Table P4
130, 48, 0, 0, 48, 17, 66, 48, 1, 148, 17, 127, 0, 116, 0, 6
0, 146, 1, 1, 150, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 43, 3, 31, 255, 255, 207, 255, 255, 31, 0, 164, 30, 0, 128, 0
0, 0, 0, 8, 0, 0, 16, 180, 204, 179, 0, 2, 0, 4, 3, 0
4, 0, 105, 0, 255, 255, 7, 255, 255, 7, 0, 68, 0, 224, 40, 62
192, 0, 0, 0, 104, 1, 192, 180, 204, 90, 204, 76, 0, 0, 0, 0
End Table

; ADC, Sync Processor
Table P5
216, 0, 87, 241, 0, 0, 63, 63, 63, 52, 52, 52, 0, 0, 0, 0
0, 144, 179, 198, 0, 0, 32, 206, 133, 130, 0, 0, 0, 0, 128, 4
208, 32, 15, 0, 64, 0, 5, 0, 0, 0, 15, 0, 0, 4, 0, 4
0, 47, 0, 40, 3, 21, 0, 4, 4, 15, 10, 0, 0, 0, 192, 3
11, 39, 6, 126, 6, 0, 192, 5, 192, 4, 192, 52, 192, 103, 192, 103
192, 0, 192, 5, 192, 192, 33, 192, 5, 192, 1, 200, 6, 0, 0, 0
0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
End Table

; 240p_60Hz_1280x1024 NTSC Preset Tables === Start Here ===

; Input Formatter, HD-Bypass, Mode detect
Table N1
96, 224, 100, 255, 255, 255, 255, 255, 255, 255, 255, 79, 134, 5, 89, 203
18, 0, 71, 0, 44, 3, 92, 0, 87, 3, 135, 0, 0, 2, 4, 0
56, 0, 146, 3, 155, 6, 159, 6, 4, 0, 0, 0, 0, 0, 0, 0
202, 0, 128, 0, 63, 0, 128, 44, 204, 0, 0, 0, 0, 1, 192, 0
0, 1, 192, 0, 0, 1, 192, 0, 0, 1, 192, 0, 0, 1, 192, 0
0, 1, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
208, 34, 32, 39, 65, 62, 178, 154, 78, 214, 177, 142, 124, 99, 139, 118
112, 98, 133, 105, 83, 72, 93, 148, 178, 70, 198, 238, 140, 98, 118, 156
0, 0, 53, 0, 0, 12, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0
End Table

; Video Processor, PIP
Table N3
2, 244, 164, 194, 176, 164, 6, 22, 108, 194, 150, 0, 0, 6, 8, 128
226, 164, 15, 16, 172, 128, 152, 18, 30, 2, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 96, 3, 0, 207, 38, 32, 220, 17, 224, 47, 32, 240
64, 26, 0, 0, 0, 125, 31, 44, 0, 0, 0, 0, 0, 0, 144, 0
2, 3, 0, 0, 248, 31, 248, 31, 248, 30, 208, 32, 248, 10, 142, 30
48, 0, 56, 8, 36, 10, 11, 234, 26, 0, 0, 26, 0, 196, 63, 4
4, 155, 128, 9, 233, 239, 127, 64, 210, 13, 216, 223, 63, 0, 0, 0
0, 8, 0, 180, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
End Table

 

Edited by mytek
Modified GCB Source Code enabling weak pull-up
  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites

Updated schematic (PRELIMINARY)...

click on image to enlarge

RGB2VGA-XLD_schema.thumb.png.b02bd872ba28a1f99978d8865703c6a2.png

 

Edited by mytek
Simplifed PIC circuit in schematic and added notes

Share this post


Link to post
Share on other sites

BTW, I plan to also make a very small I2C plug-in board to simply reprogram the GBS for non-XLD applications. Well that is, unless someone beats me to it ;) .

 

Share this post


Link to post
Share on other sites
36 minutes ago, mytek said:

unless someone beats me to it

I've already decided to wait for you to do it :D

  • Thanks 1
  • Haha 2

Share this post


Link to post
Share on other sites
39 minutes ago, Mr Robot said:

I've already decided to wait for you to do it :D

So you guessed who I was talking about :) ,

 

It won't take me long, since it uses very few parts. The final design will eliminate yet another resistor. Just need to enable the internal pull-ups in the PIC for the mode switch input. And of course there will be no need for the RGB switching or the 12V power filtering circuit.

 

Share this post


Link to post
Share on other sites

Need to mod the code for 240p/480p to switch between VBXE modes, I won't ever want to switch NTSC/PAL.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...