Jump to content
IGNORED

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


mytek

Recommended Posts

1 hour ago, Mr Robot said:

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

So based on what you said, I have made the mode switch more generic in it's description, and I've eliminated some additional components that really weren't necessary.

 

GBS_reprogram_schema.thumb.png.ecc56d846fc15624d1ba9737a4caec61.png

 

So if you are doing firmware development, a PICKIT2 or 3 can be plugged into the ICSP header while the circuit is live. However if you are using a JOY2PIC programmer, you can either pull the PIC and program it separately, or use the ICSP connection with the board detached from the GBS, and not live (the JOY2PIC will provide the programming voltage).

 

The mode select header is now simply marked 'A' and 'B'. So if using the NTSC/PAL firmware, A = NTSC and B = PAL. For any other firmware variants you will need to define A and B to suit your application.

 

The GCB source code (HERE) has been modified for a weak pull-up on RA2. And the full schematic has been updated (HERE).

 

Note: When this gets a bit more fleshed out, I'll have to put up a webpage on my site and think about accepting and providing alternative firmware versions for download. Although another possibility I think I like even better, would be to perhaps add another config bit via RA3, so that there are 4 possible modes. All it would take is a resistor and a different config header. Presently I've only used about 60% of the available program space in the PIC, so there is room for more alternative presets. Could do a 240P/480P for either PAL or NTSC. So essentially a Sophia and VBXE customization ability would be present without changing firmware.

 

 

Edited by mytek
Added note
  • Like 4
Link to comment
Share on other sites

Yet another update...

GBS_PicProg2.thumb.png.3641478b6cb2d8c42b7200ece1f67f2f.png

 

 

Dip switch will now provide for 4 different preset groups (video modes) to be selected. So we can have 2 resolutions available for both PAL and NTSC. That should do it :) .

 

On the source code... it would be a great help if Mr Robot has already created the presets for 480P 60Hz, and would be kind enough to share those with me. From that I can make changes for 50Hz as well, and then update the firmware.

 

  • Like 1
Link to comment
Share on other sites

Here's 480i60, I was wrong about 480p.

VBXE also does 160x240p, I'm not sure if that will be dealt with by the 240p setting

 

; 480i_60Hz_1280x1024 RGB Preset Tables === Start Here ===

; Input Formatter, HD-Bypass, Mode detect
Table V1
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, 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 V2
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 V3
2, 244, 164, 194, 176, 164, 6, 23, 124, 194, 150, 0, 0, 6, 8, 128
226, 164, 15, 16, 172, 128, 152, 66, 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

; Memory, Capture/Playback, FIFO
Table V4
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, 1, 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 V5
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
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

 

  • Thanks 1
Link to comment
Share on other sites

Thanks :) . I'll compare this to 480i preset tables on rama's project, now that I see it's not 480p.

 

Most likely I'll find that some sections don't change between 50 and 60Hz modes in this resolution, so I will only pick the segments with changes to swap-in, dependent upon the config switch setting.

 

Edit: I'll concentrate on making the stand-alone board design first so that some VBXE testing can be done... if you're willing???

 

 

Link to comment
Share on other sites

Just thought of something.

 

If the VBXE can have it's resolution changed via software control (external to the hardware). Perhaps I should arrange the config switches so that one changes resolution, and the other changes between 50 and 60Hz. Then add 2 more pins to the RGB/CSYNC header for an external resolution switch?

 

Edit: And for the stand-alone board, I can add a separate 2 pin header for the rez switch.

 

 

Link to comment
Share on other sites

Here is the GBS-PGM stand alone board that simply plugs into the GBS-8200/8220 I2C port. This is pretty much as small as I can make it based on thru-hole components. I did a price check at OSH Park and it came in at $4.25 $4.00 for 3 boards. After I verify a few things, I'll setup a link on OSH Park for purchase (need to check the LED resistor divider R2/R3 is the correct drive for the Bi-Color LED I'll be using). When both switches on the dipswitch are OFF, the default = 50Hz Low Resolution (288P). If the external resolution switch is to be used, then be sure the 'A' side of the dipswitch is OFF. When flashing the PIC chip via the ICSP, expect the LED to flash. In normal operation when first powered on, you should momentarily see a red indication, and shortly thereafter a steady flashing green. If the PIC hasn't been flashed properly, you'll see no color. Also when changing the dipswitch setting under power... it will mimic the power-up state, thereby resetting the PIC for the new selection.

 

Top Side (FINAL)

GBS-PGM_top.png.143a678ace9ace7f7660a1f71d9775ec.png

 

Bottom Side (FINAL)

GBS-PGM_bot.png.e1df6a02564ff70c0c4bf3d6c13719c5.png

 

Schematic (FINAL)

 

GBS-PGM_schema.thumb.png.4c07b36a7557f625c3b675e4ef4888b4.png

 

Edited by mytek
Updated PCB Schematic (changed resistor values)
  • Like 3
Link to comment
Share on other sites

41 minutes ago, Mr Robot said:

OK let me know when I can order it, post a bom as well so I can get the parts in.

So now you want a BOM, well that might take a bit longer ;) . I'll let you know when I have that and an order link for the board. Might be a day or two.

 

29 minutes ago, Stephen said:

I am also willing to order one of these - I have a VBXE in a PAL (not that it should matter for RGB) machine.

I was looking at some of the preset tables online for 480i mode, and it does indeed look like there is a 50 and 60Hz version. So it might make a difference after-all. I know for the lower rez mode it does, and I have presets for both a 240P 60Hz mode as well as a 288P 50Hz mode for NTSC and PAL.

 

Link to comment
Share on other sites

35 minutes ago, Stephen said:

I am also willing to order one of these - I have a VBXE in a PAL (not that it should matter for RGB) machine.

I'll order three from OSHpark and make them all, I can send you a complete one to test with. No sense us both ordering three if we only need two between us

 

Link to comment
Share on other sites

1 hour ago, Mr Robot said:

I'll order three from OSHpark and make them all, I can send you a complete one to test with. No sense us both ordering three if we only need two between us

Nice offer, but at $4.25 which includes shipping, it's gonna be pretty close to the same if you ship one to me. I already have all the parts, so no advantage there either. OSH Park rules when the board size is tiny.

 

Link to comment
Share on other sites

Some VBXE questions relating to my project (since I don't currently have a VBXE to work with).

 

In the VBXE how is the switch from 240p 60Hz to 480i 60Hz accomplished?

Is this a register manipulation, or does it require changing the core firmware?

 

On the Sophia I use either 240p 60Hz (NTSC) or 288p 50Hz (PAL) presets which appears to work quite well.

I am assuming the relationship in the VBXE when instituting the higher resolution modes would look like this: 480i 60Hz (NTSC) or 576i 50Hz (PAL).

Is this true, and can the VBXE work in both of these modes?

 

An interesting article pertaining to these video standards (LINK).

 

Link to comment
Share on other sites

Have a look at page 12-13 of this manual fx1.26-en.pdf resolution is set in software, no need to change cores. There is a jumper on the VBXE board for NTSC/PAL but I've not had to change that since I installed it, I think it's for telling the VBXE what signal to expect in.

 

As I understand it (and if I'm totally wrong saying it aloud will at least make people who know better pop up to correct me) The VBXE is outputting RGB not PAL/NTSC so 240p/50 is 240 scanlines @50Hz and 240p/60 is 240 scanlines @60hz.

Link to comment
Share on other sites

29 minutes ago, Mr Robot said:

Have a look at page 12-13 of this manual fx1.26-en.pdf resolution is set in software, no need to change cores. There is a jumper on the VBXE board for NTSC/PAL but I've not had to change that since I installed it, I think it's for telling the VBXE what signal to expect in.

Aww I see it... XDLC_HR and XDLC_LR set the resolution to be used. This confirms that it would be highly desirable to be able to change the resolution preset for the GBS-PGM board via an external switch as is now supported in the hardware (still need to do so in the firmware).

 

29 minutes ago, Mr Robot said:

As I understand it (and if I'm totally wrong saying it aloud will at least make people who know better pop up to correct me) The VBXE is outputting RGB not PAL/NTSC so 240p/50 is 240 scanlines @50Hz and 240p/60 is 240 scanlines @60hz.

Understandably the VBXE will not use all of the possible scan lines for screen data in a given mode (NTSC or PAL --- this relates to oscillator in use), but in order to display properly on a PAL monitor I would lean towards it having to be outputting either 288p or 576i when the PAL oscillator is in play, with the actual resolution dependent upon the register setting in the VBXE. So for the time being I'll go with this presumption and support these two resolutions along with the 240p and 480i.

Link to comment
Share on other sites

1 hour ago, Mr Robot said:

There is a jumper on the VBXE board for NTSC/PAL but I've not had to change that since I installed it, I think it's for telling the VBXE what signal to expect in.

The jumper selects which system clock crystal to use, since said crystal is hosted on the VBXE itself (the main crystal on the motherboard having been removed during installation).

 

  • Thanks 1
Link to comment
Share on other sites

Just now, Mr Robot said:

Not on my 1088XEL it hasn't 

No, not on the 1088XEL since provision was made (with VBXE in mind) to bypass the crystal on the motherboard via a jumper. My 1088XEL also has the main crystal on the board but I am quite sure it is not used since VBXE is providing the clock signal. :)

  • Like 1
Link to comment
Share on other sites

14 minutes ago, flashjazzcat said:

No, not on the 1088XEL since provision was made (with VBXE in mind) to bypass the crystal on the motherboard via a jumper. My 1088XEL also has the main crystal on the board but I am quite sure it is not used since VBXE is providing the clock signal. :)

Correct. The VBXE takes over the task of providing the appropriate oscillator based on one of it's own crystals, thus making the ones on either the XEL or XLD redundant. And as Jon pointed out on these custom machines no desoldering of crystals is required. Simply leave out the OSC jumper when using a VBXE.

 

  • Like 1
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...