Shop OBEX P1 Docs P2 Docs Learn Events
VGA Shinanigans — Parallax Forums

VGA Shinanigans

GolahGolah Posts: 4
edited 2009-06-18 08:00 in Propeller 1
Hello all,
I've been lurking here for a while now reading as much as I can, but can't seem to find an answer here or on the net.
Here's my problem....
I wrote a program using the 512x384 bitmap object, created an RLE compressed image on my pc, wrote an RLE decoder for the prop, and wired it up per the demo schematic.
So, I plugged the prop into my LCD monitor, and poof, perfect image. Then, I took my prop to my DLP tv and plugged it into the RGB port. No Signal. Hmmm.
Then I set my laptop to 1024x768 (the same as the bitmap object signals at) plugged it into my tv, and poof, perfect image.
This is a real head scratcher, unless there is something missing from the bitmap object that the LCD doesn't need, but the TV does. But I can't image what that would be.
Any ideas/confirmation would be greatly appreciated.
Regards.

Comments

  • RaymanRayman Posts: 14,839
    edited 2009-06-17 01:06
    I would guess that the refresh rate is out of spec for the DLP, but the LCD monitor is more forgiving... Some monitors tell you what the input refresh rate is when you hit the "menu" button... I recall that some of the driver sync at strange rates...

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    My Prop Info&Apps: ·http://www.rayslogic.com/propeller/propeller.htm
  • GolahGolah Posts: 4
    edited 2009-06-17 02:51
    You were correct about the timings. The bitmap driver runs at 67Hz, whereas the standard is 60Hz. So I found what the actual pixel timings should be for that resolution, and low and behold, I have an image on the DLP at 60Hz. However, the image is shifted about 1/8 the screen right and about 10 pixels down, so I will need to do some fine tuning to the timings to see if I can get a better picture.
    Thanks for your help, it would have taken me a while to sort that one out....
  • RaymanRayman Posts: 14,839
    edited 2009-06-17 13:28
    Is that a real-time RLE decoder you have? I mean, does it decompress the image during every VGA frame?
    That would be a neat trick... Could allow fast animations with simple graphics...

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    My Prop Info&Apps: ·http://www.rayslogic.com/propeller/propeller.htm
  • ericballericball Posts: 774
    edited 2009-06-17 14:08
    In general, TVs have a very narrow range of horizontal & vertical refresh rates (i.e. close to a normal TV signal). Monitors (unless they are early EGA/VGA ones) will work with a much wider range. The VGA connector also includes the Display Data Channel on pins 12 & 15 which the adapter can use to determine the capabilities of the display (and thereby adapt to the TV's refresh rates). The Prop doesn't use this channel and just starts kicking out the signal, leaving it up to the display to adapt.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Composite NTSC sprite driver: http://forums.parallax.com/showthread.php?p=800114
    NTSC color bars (template): http://forums.parallax.com/showthread.php?p=803904
  • BaggersBaggers Posts: 3,019
    edited 2009-06-17 15:54
    Rayman, that Oxygene stream player I did was compressed images as each image was 240x160 8bit and I had two images in hub-ram at once, including FSRW.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

    ·
  • RaymanRayman Posts: 14,839
    edited 2009-06-17 16:15
    Hey Baggers! I remember your player. That approach is good for photos. But, RLE could be better for simple, computer generated graphics, where there are long stretches of the exact same pixel color... That could make for higher resolution (like VGA) in even smaller memory...

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    My Prop Info&Apps: ·http://www.rayslogic.com/propeller/propeller.htm
  • BaggersBaggers Posts: 3,019
    edited 2009-06-17 19:08
    Hi Rayman, I think you're getting the Oxygene demo confused with the PropGFX 15bit Colour, which had DXT1 decompression real time, no the Oxygene demo was RLE decompressed realtime ( for long stretches of exact same pixel colour ) [noparse]:D[/noparse] which is why I could have two * 240x160 8bit images in HUB-RAM at once.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

    ·
  • RaymanRayman Posts: 14,839
    edited 2009-06-17 19:10
    Oh, maybe I missed that one! I'll have to look it up...

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    My Prop Info&Apps: ·http://www.rayslogic.com/propeller/propeller.htm
  • GolahGolah Posts: 4
    edited 2009-06-17 21:21
    My RLE is not real time but was necessary in order to get a few full frame pics onto the top half of a 64k EEPROM. However, after reading about your real time implementation, it had my cogs turning all afternoon(pun intended). I think that it is doable and I may need to do it since I am already almost out of Hub ram and could use the extra space.
    Uncompressed, the bitmap uses 24+ kram, my one image uses about 4500 bytes the other uses about 12k. So both together use about 2/3 the ram of a single uncompressed image.
  • BaggersBaggers Posts: 3,019
    edited 2009-06-18 08:00
    Rayman, my oxygene demo is here http://propgfx.co.uk/forum/Blah.pl?m-1193244360/·source is there too.

    Golah, Go for it, you just need to have a couple of scanline buffers for your render cogs, and fill each one while the screen is being displayed, looping around the buffer. Depending on your resolution, will depend how many cogs you need to throw at it. with having·two/three cogs decompressing the image, I had an scanline offset list which I just indexed depending on the scanline, and used that offset from the start of the RLE for that scanline, it saved having to skip/decompress incase a like was intricate thus keeping the speed to get the first byte in the scanline optimised and constant.

    Good luck.
    Jim.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

    ·
Sign In or Register to comment.