TMS9918A Retro Video Chip Reimplemented In FPGA, With VGA Out
acadiel writes "Matthew H from the AtariAge.com TI-99/4A forum has finalized a design of a TMS 9918A replacement (with VGA out) for classic computer systems such as the ColecoVision, TI-99/4A, SpectraVision, MSX1, SpectraVision 128, and Tomy Tutor Home computers. This hardware project replaces the native video controller on these classic systems and enables them to have VGA output for the first time." (It's just under $100 to order one.)
For viewing things. VGA is somewhat nicer than the composite video out that most machines of the age shipped with.
Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
there's actually quite a community for these old systems, and a lot of people who don't enjoy playing on emulators, or who want to recapture the original experience.
it's pretty cool that they've managed to do this, though I might prefer a different connection type... my current TV does have a VGA input, but I doubt my next one will.
he'd better do an HDMI version quick as VGA seems to be on the way out as a connector :-P
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
Of all the chips that one on the Commodore 128/128D is a pain to convert to anything modern as it uses the old CGA/RGBI interface. All the CGA adapters ive found dont handle the intensity signal, they are more RGBA compatible.
"Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
Except that you're still upconverting a signal from 240p to 480p. By going directly to VGA you're at least getting a crisp 480p image (ie: 640x480). And no, doing this after the signal has been produced at the composite outputs is not going to be as pretty.
classic computer systems such as the ColecoVision
This word, "computer," I do not think it means what you think it means...
/former Adam owner
And no, doing this after the signal has been produced at the composite outputs is not going to be as pretty.
Unless you're using a program that relies on the artifacts in a particular video chip's composite output. The NES PPU's architecture was heavily inspired by the TMS9918, and I know a lot of NES games rely on interactions between luma and chroma to give the backgrounds more texture.
Better, perhaps, to ask "for whom?"
Please consider that just thirty-odd years ago, one could own a computer that wasn't the university's or corporation's. Whether one came fresh to it or from mainframe milieu, there was an immediacy, a power, a whole new realm of discovery. One no longer had to submit their deck of cards to an acolyte to the high priests of a Burroughs or CDC Behemoth only to get back a core dump due to an errant comma. Some, even now, for reasons of nostalgia or fun, continue their interest and enthusiasm - vibrant 8-bit micro communities are but a search away.
The TI-99/4A offered, amongst other things, 16 sprites with built-in collision detection. At the time this was nigh magical. Sprites were effectively independent of screen - they were a 'floating' layer above it and allowed for some interesting game and simulation possibilities. SCREEN itself was a defined device; one could PEEK and POKE 'most anywhere, and PUT and GET to any device. An entire screen could be represented with a string in memory, its contents readily changed on the fly. One could read data for a string from a DATA statement in program code or from (eventually) floppy; with several strings screen-swapping, almost animation, could be done. Graphics could accompany text adventures. Add sprites? Oh, my. And now with VGA?
You may have to ask "what for?" - others will not.
I loved my TI99/4A ... I still have it somewhere. I didn't realize there was an active group for it, but its still an awfully advanced system for its era.
- Michael T. Babcock (Yes, I blog)
You're completely, absolutely, out of you mind deluded. Sorry. At work I use some test instruments, made by Tektronix and HP, where the date codes on chips are all in the 70s. They work beautifully, and I regularly "hack" on them. They are anywhere between 30 to 40 years old at this point. There's nothing fussy and temperamental about those systems, and some of them are so complex that a consumer-grade microcomputer or game console holds no candle to them. I'd say that all of the consumer systems that this chip replacement would go into are comparably simple. If you would really have a problem with them, then it's your problem, not a general one. If you want complex, take any modern PC and try replacing a BGA chip in it. I'd take a 30 year old piece of gear any day, I probably could do chip swaps in those blindfolded.
A successful API design takes a mixture of software design and pedagogy.
Probably the biggest problem is going to be all the old school electrolytic capacitors. I know my TI-99/4A is a bit flaky, and I suspect that's why. The VDP was running at the edge of process technology in those days (5.37MHz!) and it wants nice, clean clocks and nice clean supply rails. The rest of the machine runs a fair bit slower, with possible exception of the 256 byte SRAM that the TMS9900 CPU stores its "registers" in.
Thankfully, those big old electrolytic cans are easy to spot and easy to solder in replacements for.
Program Intellivision!
That was my first home computer and so it'll always have that special place in my memories, but that thing wasn't very useful when it was still current. I can't imagine trying to do anything useful with it now.
You must not have had a PEB... With the Peripheral Expansion Box the 99/4A was capable of similar performance to the early PCs.
Even more surprising than that: There's an active TI-99/4A group? Really?
Yes, there are those of us still active in various old computer projects, building IDE disk interfaces, etc. to allow easy use of these fun old boxen.... I've built my own CROM/GROM emulator for the TI (someone else designed an IDE interface but I haven't built one for myself yet) and I'm currently designing and building an IDE disk interface for the old WANG 2200 minicomputer line...
Actually, it was 32 sprites, with a limit of 4 to a line. It had collision detection but it was rarely useful. It had a single bit to tell you that any sprite hit any other sprite. To figure out what hit what, you'd have to walk the descriptor list and do the actual computation yourself. (Or, in the case of TI Extended BASIC, the interpreter had to do it for you.)
On the TI-99/4A, that meant actually accessing VDP memory, since there wasn't much other RAM in the system. That itself was pretty slow, because it wasn't memory mapped for the CPU. You have to write to the VDP's address register, and then do repeated reads after it fetched the byte. Depending on the display mode, that could be as long as 8us during active display (Graphics II mode -- everybody's favorite "bitmap" mode.). Fortunately, the address pointer auto-incremented, so if you were accessing a contiguous structure like the sprite descriptor list, at least you didn't have to keep reloading the address.
Not that TI Extended BASIC was necessarily able to do that, of course. (Read up on the abomination that was GPL. Not the license, but the interpreted language that much TI software was written in, including TI BASIC.) But if you wrote your own assembly code, you could make that optimization, which is probably how Parsec was able to do its soft-scrolling in the time allotted.
(Actually, VDP RAM isn't memory mapped on any platform that I know of. But other systems have CPU-addressable memory that you could store a shadow copy of data in at least. The paltry 256 bytes on the TI-99/4A, though, are far from enough in many cases.)
Program Intellivision!
It's not really RGB output, but rather Y, Y - R and Y - B luma/color difference signals -- actually frightfully close to S-video. But I'm pretty sure they had an app note back in the day that showed how to sum those to get RGB almost trivially.
The reason they went with the 9928A (and later 9128A) was to avoid the "rainbow effect" that was is prominent on the 9918A. See, the 9918A didn't flip the chroma carrier field-to-field, which leads to reinforcing chroma errors. That's also why you couldn't use the EXT VIDEO input on the 9918A to mix with arbitrary video sources (say, for a video overlay), but you could use it to daisy-chain VDPs to get more sprites and such.
Program Intellivision!
Did you disable the wait states for the extra 32K RAM? I seem to recall that it did an address decode, and if the access was to the 8-bit bus and not to the VDP, it threw in a ton of wait states.
Program Intellivision!
Yes. I regularly "hack" my old stuff.
Fer cryin' out loud, they even gave me schematics!
I guess in those days they figured if you were knowledgeable enough to buy their thing, by golly you probably had the skills to fix it too.
It was TEST equipment, meaning you were connecting it to God knows what, where only God knew what malfunctions were in it. This is a sure-fire recipe for an occasional fireworks display on the bench.
Those were the days. I am glad I didn't miss them.
I learned more from fixing my test equipment than I ever learned from books and exams. And I got to learn from the best... Tektronix and Hewlett-Packard.
Like you pointed out, the BGA ( even those surface-mount IC's ) did it in for me. I could not get test prods on them, much less remove/replace them, even if I could get my hands on what soon became custom ASIC's.
The new stuff is either factory-support or downright disposables.
Those were the days. Thanks for another trip down memory lane.
"Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]
I'm sorry you apparently fail at reading comprehension so allow me to break it down. What you have was NOT consumer crap, what you have was designed for business and engineering which had waaaaay better quality parts. the caps and chips used in CONSUMER grade crap was then as now simply not up to the quality of professional instruments which is why we have workstations and desktops with the desktops having significantly lower quality caps, PSUs,fans etc.
We're talking about stuff built for kids in the early 80s and you are talking about HP back when they were THE scientific brand, I'm sorry pal but you couldn't be any more off base if you actually tried and those that marked you interesting obviously don't know how big a quality difference there was between HP and brands like Coleco whose other claim to fame was fricking cabbage patch dolls.
ACs don't waste your time replying, your posts are never seen by me.
I have an Atari 400 made in 1980, an Atari 600XL made in '83 and a 130XE made in '85. Along with a desktop DEC MicroVAX of mid-80's vintage. All still work just fine with no flakiness. Clean the cartridge ports and take care of them they'll outlive you. The 8-bits may have been low cost but they were QUITE well engineered. At least the Atari machines and Commodores were great. Not sure about TI or Coleco.
They made much higher quality caps then and used lead solder and much thicker PCB's with more copper. Later 80's 8-bits took a quality nosedive but they still weren't that bad, just had cheaper keyboards and thinner case plastics. The Amiga and ST were the major contenders by then.
Now if you want to see shitty caps, look at late 90's, early 2000's PC motherboards. I don't know too many 600mhz-1GHz Pentium III and Athlon desktop boards still running.
In general I find older 80's hardware much more tolerant of being repaired when necessary and with only 16 address and 8 data lines, hand soldering in modifications is relatively simple and lots of well documented hacks exist complete with code and schematics. I've added 512K, dual OS ROMs, S-Video and an IDE interface to my 600XL and it took about 45 minutes with a cheap radioshack iron and manual desoldering iron/pump. Try that on a microscopic ARM with 200 pins crammed into a BGA the size of your pinky nail attached to a 6-layer board.
http://spiflash.org/block/15.html
The VBXE video board for Atari 8-bit XL and XE machines. Will do 15khz RGB and VGA out and coexists with and extends the original video coprocessor chips (ANTIC and GTIA) providing a blitter and extending the color palette. Enhanced sprites too and more stuff. The Atari graphics chipset was much more programmable and flexible than this thing though every machine deserves to still have modern video output options. The Atari 8-bit is kinda like a baby Amiga in ways.
uh if you have ever used one of these shitty chi-co video samplers you would find the video quality was worse than plugging the composite signal into the antenna input of a 1977 black and white portable
Actually, VDP RAM isn't memory mapped on any platform that I know of. But other systems have CPU-addressable memory that you could store a shadow copy of data in at least. The paltry 256 bytes on the TI-99/4A, though, are far from enough in many cases.
On the contrary, many 8-bits had memory mapped video. Commodore (VIC/64/Amiga), Sinclair (Spectrum, zx81, zx80, dist by Timex in the US) Atari, VT100 ... etc etc. Not that there weren't machines with distinct video RAM, the Commodore PET had specific video memory, though it was still mapped into the address space like a modern PC video card. Having the video RAM in a inaccessible (I/O bus) location was rare.
The reason was simple, at that point in time only a relatively small amount of RAM was needed for the machines and it ended up being faster than the CPU. So much so that you could assign 50% of the RAM bandwidth to the video subsystem without impacting the speed of the processor at all.
The ZX81, however, was a bit of a foreshadowing of things to come. It was built really, really, cheaply and they used really cheap DRAM. This cheap RAM wasn't fast enough to feed both the CPU and the video at the same time so the CPU was basically turned off when the video was being displayed (In fact it was physically used as a counter chip by the ultra cheap video controller).
Nowadays people want astronomical quantities of RAM so it basically has to be the cheapest design possible; this type of RAM can't keep up with just one CPU, let alone multiple CPUs and a video controller. So the video controller has to reduce the performance of the main CPUs by stealing cycles, or it gets it's own RAM.
Note: There are several Intel video controllers for PC clones that use main memory as the video RAM, they get added as a cheap motherboard video controller. Because of the fact that they're using slow RAM and stealing cycles from the CPU these are rightfully seen as very low performance.
On the other side, a common mistake for designs with distinct video RAM is that the CPU only ever needs to write to this RAM, unfortunately the problem is frequently only recognised in production.
Narishma already said it here, but I was referring specifically to machines that used the TMS9918/28/29(A) VDP, often just referred to as "the VDP." So far as I know no system that uses the VDP was able to memory map and dynamically multiplex CPU and VDP access to the 4K or 16K of DRAM connected to it. And, that walled off access to the DRAM was a particular drawback for machines that used the VDP, which is why I pointed it out.
Program Intellivision!