16 Colour Games on a CGA Card!
HTML-код
- Опубликовано: 8 сен 2024
- We look at how to get 16 colour composite video working with an IBM CGA card on a European monitor!
We also take a look at a bunch of games that used this little known 16 colour mode. Наука
The advantage of these non-color monitors and cards is their incredibly sharp text, especially Hercules. It's 9 dots per character. CGA/EGA/VGA are all 8 dots per character, or 640 dots per line, while Hercules is 720 dots per line. They are just incredibly sharp. If you have ever had to spend 8 hours in front of monitor, you quickly come to realize that the extra resolution makes a big difference. They also tend to have more persistent glow and so flicker is cut way down.
4:34 That looks damn good for standard CGA. Also at 5:21 These are just good examples of CGA. Most CGA games not using composite look absolutely terrible and are an assault on the eyes.
I learned relatively late in life that intentional and constructive use of color artifacting was a thing at all. It's still kind of amazing that it works, let alone how well it works. It may be the closest one can come to a free lunch, although maybe it's more of a consolation prize for those forced to make do with the poor bandwidth of composite. :-)
Did you see "8088 MPH" demo? =)
12:48: There's one small inaccuracy: The claim that "then they just double the number of pixels again" is wrong. The composite 16-colour mode actually ends up being _about_ 160x200, with nearly double-wide pixels. It may not be exactly 160 horizontal pixels due to the nature of NTSC artifact color effects, but that's what's achievable on average. The composite patches for Commander Keen 4 and 5 make 160x200 look like 320x200 though. (The artist who did them really knew what he was doing.)
Thanks for the correct. Yes, that is what I meant. The number of pixels is not doubled, obviously.
@@PCRetroTech Thank you. :-) Do you have any more details on these converters? A more commercially-minded person might have posted paid referral links in the description. ;-) But anyway, I wonder if it's only a recent thing that such converter boxes are possible? Would those also have been possible or did they even exist back in the day? Or did essentially no Europeans ever get to experience composite CGA in colour?
@@ropersonline I think such converters are fairly recent things. There were boxes starting to appear that did conversions between various video formats by about 2005 at least, and I'm sure you could purchase things much earlier still. But they would have been rarer and probably more expensive.
As for commercial links, my channel is a hobby channel not a business at present. As such, I have to be extremely careful about appearing to endorse any products due to the law where I live, which is extremely strict (and enforced) on this point.
@@PCRetroTech Link-wise, that's actually decent of you, b/c let's be honest, YT is at the very least encouraging and turning a blind eye to a lot of shystering and deceptive marketing practices, and often young and naive small fry RUclipsrs get to do the dirty work of big money-makers who have plausible deniability.
On converters, so if realistically none were available at the time, were any NTSC-compatible displays or dual-standard PAL+NTSC TV sets available in Europe back then or did literally nobody get to see CGA composite in colour?
@@ropersonline That I don't know. It would be interesting to investigate.
This CGA card from 1981 is about the size of an entire C64 board (without connectors and TV modulator) which hit the market 1982 and only needed a single chip to produce way better color graphics. It was only lacking at high resolution text.
It's a different world though. Commodore and Atari both made custom chips and were trying to make good mass market gaming machines. The IBM PC was basically a skunkworks project that had to be built from TTL chips, a 6845 and a 8088. Also IBM, being IBM, didn't really care about cost optimizing stuff, particularly something like the PC XT which they didn't really expect to sell in volume. They didn't care about gaming performance at all and CGA was probably just to check the marketing box "It can do color(with a new graphics card and monitor)". PCs were supposed to be way to run spreadsheets and word processors. Basically a CPM like machine except the address space limit was 640K instead of 64K.
In fact even when I got my first PC there were still loads of people saving ~10% of the purchase price and getting a mono VGA monitor because they only wanted to do office stuff.
@@user-qf6yt3id3w Interestingly, early MDA cards can actually do coloured text. Going by the schematics in the 1981 technical manual, it seems the attribute bits gets passed through to the same pins on the monitor connector that CGA uses for the RGB signals. The monochrome monitor only connects to the Intensity and Video pins, and CGA doesn't connect to the Video pin, just RGBI. Makes you wonder if MDA and CGA started out as one big, complicated card that got split up because it would be too expensive on its own.
I had a Tandy 1000 ex connected to an RGB monitor and my TV. So with CGA, Composite CGA, and TGA, I was always experimenting which mode produced the best image.
Unfortunately my Tandy monitor is way inferior to my IBM CGA monitor, so there's no choice there. But if you want lots of colour, the composite output is going to be really interesting.
I live in America therefore using the NTSC format. Anyways I owned an Atari 800XL in the 1980s and it had a Graphics 8 mode that only had one color, but on an NTSC composite monitor it could artifact and make the illusion of multiple colors. Ultima III and IV for the Atari 8-bit was programmed in that mode (it was also the mode that displayed the biggest resolution of course) and those living in countries that don't use NTSC end up with that same black and white graphics that your Commodore monitor was displaying playing Jungle Hunt before using the PAL-NTSC converter. Apple II had a similar graphics mode that did artifacting and the Ultima games too took advantage of it.
That DB9 connector was also used for EGA, though it used a different signaling standard, and needed an EGA monitor.
It's a DE-9 connector. DB9 isn't technically correct, though it was common to call it that, see Wikipedia. Anyway, that DE-9 connector was also used on some early VGA cards, because things like I2C DDC monitor detection, etc. weren't initially part of the standard, and if you go without you can make do with even fewer than 9 pins. You can also find pinouts for old VGA cables with DE-9 on one end and DE-15 at the other. Those were needed when the 15-pin VGA connector started getting adopted. The use of the same DE-9 connector for MDA, CGA/EGA, and VGA was actually dangerous due to the potential for confusion, because some of those do not like being plugged into each other, and that could result in hardware damage. CGA and EGA are mostly compatible, perhaps requiring the setting of dip switches, but other than that, never assume electrical compatibility just because a plug is mechanically compatible. Also, don't plug any of the former into DE-9 serial ports either. Finally, the original IBM PC also had two non-DE-9 (DIN) connectors for the keyboard and cassette player that were mechanically identical but electrically distinct. You really had to know what you were doing back then, and on top of that, things weren't even colour-coded either.
Haha.. unlike today, where... well, you still kind of have to know what you're doing. A port can be the same shape and electrically compatible, but may or may not offer the protocol you intended to use it for. (Like mini DP, Thunderbolt, USB...)
Seeing the red, white, black, and blue palette in that racing game makes me wonder why so many CGA games used cyan, magenta, white, and black, or red, yellow, green, and black. While not great, the palette in that game looks way better than either of those other palettes.
To be honest, I was never very impressed with early DOS graphics. the CGA palettes used in 99% of games looked horrible, and even EGA wasn't that great. It had the capability to look really nice, but since the vast majority of games were limited to the default 16 colors, which were chosen to keep compatibility with existing monitors, most all the games had a really garish look. Not to mention that they used red for flesh color, since the actual flesh color was higher up in the palette and therefore, not used.
Of course, most 1084S displays can also do RGBi (4 bit only), analog RGB, and 'luma chroma' aka s-video, 🙂 This makes it very nice for CGA, as you can have both composite and RGBi connected, and switch between the 2. But for CGA you'd want the NTSC version of the 1084S.
I've always found CGA to be artificially limited in its capabilities.
Sure, you can't make 4bpp at anything beyond 160x200 fit in 16k, but you totally can fit something like 640x180 or 600x200 with '8x8 attribute cells' fit in that, giving you 2 colors per 8x8 cell, but those can be selected from the 'full' 16 color palette, somewhat similar to how text mode works. Not supporting such modes for graphics in the light of an early 1980s graphics subsystem is odd, as this approach was very common at the time for reducing the amount of ram needed for graphics modes.
Unfortunately my 1084S doesn't have an RGB input, so it's perhaps a bit odd in that regard. And of course it is PAL.
I think the reason CGA is the way it is is because IBM was just thinking about business. From their perspective if it could do text in 16 colours and draw simple graphs that was enough. Space was also at a premium. They wanted to make it from off-the-shelf components and without custom video chips they could only fit so much functionality on a full length board.
@@PCRetroTech There are 1084s which don't do rgbi at least, those seem to be from a later time.
For IBM, multicolor text mode was indeed important for CGA. The CGA choices were very much driven by the desire to emulate 5250 and 3270 color terminals, which require text mode only. Graphics seems to have been more of a marketing 'bullet point' than anything, and one which the business market cared surprisingly little about at the time.
I'm myself quite familiar with the somewhat similar 8568 video controller by CSG/Commodore, which for as far as text modes go is highly similar to CGA, but its graphics modes are based on (configurable) character cells for attributes. This was a veru common approach for graphics on 8 bit machines, but it is also quite easy to implement in hardware, because it is very closely related to character mode, but instead of using 'screen codes' as index to the char generator rom to obtain pixel data, they are directly used for pixel data.
Anyway, given the time during which CGA was developed, not picking that approach as a cheap and easy way to get multicolor graphics is imo somewhat odd.
Btw, I spent the late 80s and all of the 1990s working for IBM.
Try Paku-Paku. It's a 16 color CGA Pac-Man clone.
It is using undocumented 160x100 resolution, but the good thing you dont need composite for that. You will get 16 colors in RGB.
@@spearPYN ye bu toy will suffering from a "snow effect" in this mode, but in 40 colom tex mode you will not :) like in MagiDuck
www.indiedb.com/games/magiduck
Paku-Paku was written for and looks best on colour RGBI displays, not on the colour composite monitor setup demonstrated here.
PAL actually isn't "completely different" from NTSC, the difference is _relatively_ small, and mostly or entirely revolves around the polarity of the color info or some such thing: on NTSC, the "polarity" remains the same every time the signal is transmitted, whereas on PAL the polarity occasionally swaps (I think it's every-other scanline). This allows PAL to use "self stabilizing" color information, but is more complex electrically than NTSC, which is somewhat appropriate, since PAL was created several years _after_ NTSC.
For reference, both schemes use the same style of monochrome signal, which is why NTSC and PAL signals sometimes can be displayed on the "wrong" monitor type as a monochrome signal.
I believe the color subcarrier is a different frequency as well, so rather than having alternating lines of wrong colors, the monitor will often be unable to lock on to the carrier at all.
@@nickwallette6201 If you don't implement all of the decoding properly, you will actually get alternating lines of wrong colours (called Hanover Bars). The simplest correct decoding will give alternating light and dark lines in coloured areas. The intent behind that was that they'd be blurred together optically from you watching TV from across the room. The delay line used in most PAL decoders does a similar job electrically, except operating on the colour signal.
I remember my old 286 DOS PC which had a CGA card, but I remember some games (Space Quest being one of them) running in 16 colour and 160x200, but NOT though a composite output, just using the standard monitor output, how did it do that? CGA has always been something of an enigma to me.
This was done via "bit banging registers." Games would support RGB mode or Color composite mode. IIRC Space Quest only supported 16 colors via composite mode. Typical resolution were:
160x100 at 16 colors
320x200 at 4 colors
640x200 at 2 colors
It's slightly mindbending trying to work out how artifact color works in a 4 color more. On the Atari 8 bit and Apple you have a 2 color mode and you're effectively bit banging NTSC so 00=backround 11=foreground and 01 and 10 are colors but I can't wrap my head around what happens when you're already generating a color signal but switching so fast the luma ends up as chroma.
Also like you I grew up in a PAL country where all this artifacting stuff just doesn't work as well as NTSC and people just used 320x200x1bpp as a text mode with a font that cunningly avoided artifacts by making sure all vertical lines were at least two pixels wide.
The 1084s was NOT a popular monitor with C64 users. You are thinking of the 1702. The 1084s was popular with Amiga users and it was like twice the money of a 1702.
how are the palettes changed? a program chooses which one to use? is it possible for a program to change palettes from scene to scene (like lets say in adventure games)? is it possible for a user/programmer to make custom pallete?
For CGA palette is changed by writing to a register at a port address in the CGA card. This can certainly be done by games at any time. But you can't select palettes other than those offered by the hardware.
Wouldn't the card shown in the beginning have trouble fitting in many computers? I mean, wouldn't the lower left part hit some components on the motherboard? Or was that a normal design back then, and motherboards had some space left free of components in the end of one or two slots? All the cards I have seen have been newer, and they have been shaped differently, in a way that they'd leave at least some space for the components on the motherboard.
These are full length cards, which were needed in the early days of the IBM PC because there simply wasn't the space to fit all the components otherwise. Things got smaller later. But yeah, they can be a pain if they run into other components. The PC had enough space though, obviously.
I think he meant how many of those early IBM PC era cards would have a notch removed from the PCB on either side of the card edge connector, but the business end of the card would still extend down the same length as the gold fingers of the edge connector. On later ISA motherboards, those could interfere with the CPU socket or other tall components on the board. On the early PCs, it was just a landscape of DIP chips, so it just had to clear those.
Then, there are some modern demos made for the original CGA board that push this trick even further :
m.ruclips.net/video/yHXx3orN35Y/видео.html
Indeed I've shown this on the channel numerous times. There will be some news on that front in the not very distant future.
hi my friend, ty very much for this info and video, pls, can you tell me where can i find a guide to assembler programming for cga composite d.o.s. real mode? i have found boot sector games programming but cannot find a straight guite to cga composite, ty in advace.
I taught myself, but there is this very famous and detailed book here: www.jagregory.com/abrash-zen-of-asm/
I also have these books, and find them useful:
archive.org/details/indispensablepch00mess
PC Architecture and Assembly Language
by Barry Kauler
openlibrary.org/works/OL5556074W/The_8086_book