AiGeneric TV Text Driver
Invent-O-Doc
Posts: 768
I've been playing around with various tv text drivers and really like AiGeneric.
One problem I have is that my current project uses a 3.5" 4:3 ratio LCD TV that shows all the overscan areas so the display is a bit small from the prop. I also like a text driver that lets me do things in color and changing the background is also a plus.
Questions:
- is there a way to have such a tv driver use more of the horizontal NTSC area (usually reserved for overscan) without upsetting pixel/color timing?
- Does AiGeneric support changing the screen or character background color or do I have to switch to potatohead's driver for that?
(I think potatoheads multicolor text driver uses a lot of cogs or something though - even so, I still want to get to use more of my display width) Thoughts?
Thanks!
One problem I have is that my current project uses a 3.5" 4:3 ratio LCD TV that shows all the overscan areas so the display is a bit small from the prop. I also like a text driver that lets me do things in color and changing the background is also a plus.
Questions:
- is there a way to have such a tv driver use more of the horizontal NTSC area (usually reserved for overscan) without upsetting pixel/color timing?
- Does AiGeneric support changing the screen or character background color or do I have to switch to potatohead's driver for that?
(I think potatoheads multicolor text driver uses a lot of cogs or something though - even so, I still want to get to use more of my display width) Thoughts?
Thanks!
Comments
Potatotext 2 does support full attributes, and I think it can also be extended into the overscan, though I've not tried that. It's a two COG driver, with S-video capability, which is recommended for screen displays over 40 columns, if one wants to really use all the color combinations. Composite devices vary in their ability to deal with 64 and 80 column color text.
Extending into the overscan will take driver tweaks. For AiGeneric, I think these are fairly simple. For Potatotext, they are a bit more involved, due to buffer sizing and such.
Does your display have an aspect setting of some kind? On those that do, there is often a "full" or "zoom" setting that will better align the safe zone to the display limits. Suppose it's time now to start ignoring that safe zone, or provide an option as so many displays will render nearly a full frame.
Edit, I'll take a look today. I think I've got a little time. Just came back from a week in the woods! I assume you are pulling AiGeneric from the OBEX? I've not used it in a long time and lost track of where the final or release version was.
The other difference between the two is character style. Potatotext uses IBM style color attributes. That means one word per character, with one byte the character value, the other byte upper nibble foreground, lower nibble background. Not a big deal, but it does require a tweak to your character out code to deal with words, not bytes for string output to the screen.
Do you care about odd number of characters per line? Like 47 or 69, etc...? That's the easiest change, keeping character / pixel timing consistent, just changing buffer and loop constants.
I bought one of those 3.5" LCDs that handles a composite signal perfectly and doesn't even artifact. I don't care specifically about the # of characters per line, odd is fine, but this display has a huge amount of overscan space on the horizontal axis (and it is 4:3, there is no zoom). I can fill up the vertical by going to 26 text lines.
Any advice on using the overscan space is appreciated. I think I can use either driver. At first, I thought I'd only have one cog free, but looking at how the current project has progressed, there is probably room for a 2 COG driver. I'm checking my design spreadsheet and it budgets for 2 video cogs and I've still got one free.
(I love your potatotext with the colored atari fonts - doing 20-32 columns looks just like good old graphics mode 3!)
FYI - I'm building an expansion for an Altair 8800 (either a real one or a briel kit like the one I'm using) that features a small monitor and an 8 digit 7-segment display. The TV monitor can switch between altair terminal output or a diagnostic mode that allows you to see address/data/switch info and provides ASSEMBLY code info based on data switch settings. The 7-seg display will show address/data in hex or switch positions in octal to help with machine programming. Control is through the 7-seg display and a rotary encoder. There will also be a speech synthesizer. The biggest things completed so far have been an SX-based project to demultiplex all the signals on the altair front panel and stream them serially courtesy of a SX chip. Also, I've completed a robust and full feature animating 7-seg driver that will be posted to obex fairly soon.
Thanks!
Yeah, Graphics 3. Indeed. Me too. Spent a lot of time reading that font, and it's a good TV font, well designed to cut down on artifacts.
I'm home now, getting things setup. I will take a look and post up here later in the evening.
I didn't do much with the text support routines. They might need a tweak or two, if they've not been written for variable columns. I tested the TV output at 32, 40 and 44 columns, and at 26-29 rows. Got stable picture on capture card. YMMV
Actually, I'm outta time for the moment. I've attached a mod to Potatotext 2 that allow for variable rows. Tested at 16, 25 and 27. I've also changed it's defaults to 80Mhz Demoboard, composite output instead of the 100Mhz, S-video configuration. I've also set it to not interlace. With interlace turned on (in the start program), the rows are doubled, yielding up to 54 lines of text!
That all can be reversed with a small edit or two, if it's not what you want.
Out of time for the moment. I'll think about columns shortly. As per the last posting, it's a raw driver with no text handling code. There is a lot of that out there, and maybe when I do columns I can modify some of the basics for AiGeneric / TV Text type output.
Jeff
I'll check these out. I wasn't too concerned about # of columns (potatotext does that readily), but more about using the overscan space to improve legibility on such a small screen. I really appreciate your mods on these and will check 'em out tonight!
I'm looking into just adding over scan anyway, but that will take a bit. Think I'm gonna add it and some text support routines so it can go into the obey proper. Your query got me thinking about it again.
The AIgeneric you sent me now uses C64 fonts, in the interest of keeping the old atari font, I used your changes to reverse engineer my obex version to function at 44 columns and use overscan. It works great and I learned a thing or two in the process! I'll probably use this driver for the project because it is working really well. (only caveat is background always black, couldn't figure our how to make background another color)
The potatotext really didn't work. It displayed a few monochrome/grey screens at various column widths but didn't use overscan. This is a great object with a potentially even greater future. (I think the ability to cheaply add video is a primary competitive advantage of the propeller.) I have used the obex versions of this to good effect as far as fiddling.
Thanks for taking a look at these again.
I am puzzled by your grey screen though. It shouldn't do that. Can you share your video circuit and perhaps a link to the display? I would really like to sort that out.
I like the Atari font too. Good news is they map over really easy. OBC has a soft spot for the C64, and dropped that font in when AiGeneric was packaged up.
The use of overscan and up to 64 columns might be increasingly more important because many of the screens out there are 16:9 and they tend to have a lot of overscan overhang (does that make sense?).
Adding columns will restore the square appearance of the text, the overscan will help with the screen.
I think I know what I want to do in order to widen Potatotext 2. I've a test or two I need to run, then I'll know. Can I get one more test out of you on the next pass? Really curious about that grey screen...
PS Check out my post "Seven Segments of Fun Driver Posted" - no replies but it's the first object I've ever posted.