I'm working on a homebrew computer using tms9929 VDP. I choose this one because it has yuv output for a better image quality. I also own a C128, and an Amiga 500. C128 80 columns output and amiga 500 have rgb output, so the picture is as crispy as vga using scart connector. For the 40 columns output of the c128, I changed the rf modulator for a svideo module, and the picture is far better, although not as good as rgb
Color blend artifacs is not about bad desing of the v99x8, it is about the limitations of NTSC and PALs color encoding, the U V color angle that is pointing can't turn abruply too quickly because the TV NORM is out of bandwidth, so, when you try to use a opposite color pixel next to a 180º oppose color, it starts doing glytches, the color oscilates , if you draw a vertical line of just 1 pixel, plus another vertical line of a 180º color side by side, the two vertical lines blend about COLOR, not about LUMINANCE, NTSC and PAL is perfectly able to do full pixel resolution luminance without glytches. TV NORMs were made for image photographs , real life filming, not for computer graphics. This is a complete different issue not related to the tile systems which as it lacks of RAM and lacks of accesses SLOTs it can't do bitmap at 256x192, it has just few slots per scanlines to read the pattern number, the and the pattern graphics line, and the color graphics for that line, that is 3 slots access of VRAM (3 bytes per 8 pixels in the screen) in high resolution graphics. Computers with z80 a 3.5mhz clock has to insert two NOP commands before reading or writing the VRAM, between the ADDRESS PRESET procedure and the actual READ/WRITE, the reason there is not enough SLOT of vram free for pumping graphics data to/from the VRAM through the TMS. The evolution, the v9938 and v9958 works with faster RAM, and the NOP was not necessary anymore, but a single NOP is inserted before trying to read the first byte, but not for writing, that most of the cases writing is the 99% of the accesses. Sadly, the first generation doesn't has RGB output, what was the designer thinking, don't know, maybe to give a ALL IN CHIP solution for cheapness. But, the seconds third and fourth generation really has RGB output and is expected to be convert to VIDEO OUT on the PCB.
I was looking at the TMS9918 for my homebrew 6502, but went with the MC6847 using dual port SRAM. Color is not great, there’s no sprites, and it’s limited to 32 text columns, but I rather like it.
I also tried with an USB frame grabber, and it looks also terrible. I think that these chips were designed to look great on CRT TVs. Unfortunately I don't have a color CRT TV to test.
You should check out the Yamaha V9938. It was a successor to the 9918/9929 and is software compatible, but offers so much more, including 256 * 424 in 256 colours, and 512 * 424 in 16 colours, but with a palette of 19200 colours. Each pixel can also have a unique colour
The 9918 was incredibly powerful for its time. But I think you may have mis-characterized Graphics I. On most home computers that used this chip, Graphics I was the "text" mode and the way the colour set was done was merely an oddity but no less useful. Just different. Colourful displays and games were abundant using this mode.
There is a chip named MB8118 that operates on 5V only and it is a 16K*1bit DRAM chip (which I presume will work witht the TMS9918). There is also the Intel 2118, but I cannot find any available. The TMS9118 can still be bought for few dollars in China, but strangely not the TMS9128 and the TMS9129.
These may be an alternativ to the 4118. But as they are way more expensive on Ebay, and we still need 8 of these, I´d rather go for the workaround with the SRAM and the D-latches.
I’ve got a couple of experimental systems with TMS9118 video chips. They’re the successor of the TMS9918 and don’t rely on the 8 RAM chips. One uses 2 - TMS4464 Dynamic RAM chips for 16K of video ram. The other uses 2 - Toshiba D41464 D RAM chips for 16K video RAM. I had a TI99 4/A back in the early 80’s and these video chips bring back that vibe.
Great video. Thanks for sharing. I built the same circuit as you and text mode works fine, but in any graphics mode I have an issue: lines are duplicated in alternated lines. For example I print "HELLO" and I have HELLO in first and third line. Then I print "WORLD" and I have WORLD in second and fourth line. Same when I use imgserial. Lines appear repeated in pairs in alternated lines. What could be the cause? Thanks a lot in advance.
@@DoctorVolt Thanks a lot for the quick reply. I thought the same, but I checked at least 3 times and my PCB schematic has the same connections as yours. I made a small code to show me the contents of the VRAM after vdp_print and I see all is where is supposed to be, and not duplicated. So there must be something that makes the VDP reading twice, but I'm clueless.
@@DoctorVolt Finally found the problem. It was a power supply problem 😲 Reading the VDP manual I noticed that the indicated current supply need is 200-250mA. I was connecting my circuit to the +5 GND of the Arduino. So I connected it instead to a bench power supply and voila, it works!!! And indeed my circuit consumes 190 mA. Thanks a lot again for sharing your circuit.
@@DoctorVolt If two such TMS9918 chips are used cascaded please describe how and answer can they share Video RAM? Candidate SRAM chips could be TMS4416 or TMS4116 or TMS4164 or TMS4464 _(depending on the breadboard's population of glue logic, nor gates, and so on)._ Thank you.
You can feed the video output of a VDP into Pin 35 of another one. It is however not possible to share the same RAM. Every VDP must have its own RAM. And the maximum is 16KB.
@@DoctorVolt A TMS9918 can be connected on a breadboard so that it has no RAM and so the CPU drives the RAM for it. It is slower however, maybe that would be a (tantamount) way for two TMS9918 chips to "sort-of-share" RAM? It wouldn't quite be VRAM. Thanks for the info about the Pin 35. Is it possible, by some other mechanism, to have two TMS9918 chips produce two video outputs "stitched ogether" (instead of an overlay) so as to effectively increase screen resolution? So for example, instead of one chip having an image of 288x192 pixels, a TV could show that image directly above another chip's image so as to have 288x384?
I think that you might run into some severe timing issues if two TMS9918 share the same RAM, if the one tries to write and the other tries to read at the same time. I also cannot see a way how the two images can be stacked on the screen to get the double number of lines. I´d rather go for a more advanced chip like the V9938
It's a shame it can't do 80 columns. Would it be possible to make a board that used this chip instead? en.wikipedia.org/wiki/Motorola_6845 Not sure about its availability but it looks interesting.
I'm working on a homebrew computer using tms9929 VDP. I choose this one because it has yuv output for a better image quality. I also own a C128, and an Amiga 500. C128 80 columns output and amiga 500 have rgb output, so the picture is as crispy as vga using scart connector. For the 40 columns output of the c128, I changed the rf modulator for a svideo module, and the picture is far better, although not as good as rgb
Color blend artifacs is not about bad desing of the v99x8, it is about the limitations of NTSC and PALs color encoding, the U V color angle that is pointing can't turn abruply too quickly because the TV NORM is out of bandwidth, so, when you try to use a opposite color pixel next to a 180º oppose color, it starts doing glytches, the color oscilates , if you draw a vertical line of just 1 pixel, plus another vertical line of a 180º color side by side, the two vertical lines blend about COLOR, not about LUMINANCE, NTSC and PAL is perfectly able to do full pixel resolution luminance without glytches. TV NORMs were made for image photographs , real life filming, not for computer graphics. This is a complete different issue not related to the tile systems which as it lacks of RAM and lacks of accesses SLOTs it can't do bitmap at 256x192, it has just few slots per scanlines to read the pattern number, the and the pattern graphics line, and the color graphics for that line, that is 3 slots access of VRAM (3 bytes per 8 pixels in the screen) in high resolution graphics. Computers with z80 a 3.5mhz clock has to insert two NOP commands before reading or writing the VRAM, between the ADDRESS PRESET procedure and the actual READ/WRITE, the reason there is not enough SLOT of vram free for pumping graphics data to/from the VRAM through the TMS. The evolution, the v9938 and v9958 works with faster RAM, and the NOP was not necessary anymore, but a single NOP is inserted before trying to read the first byte, but not for writing, that most of the cases writing is the 99% of the accesses. Sadly, the first generation doesn't has RGB output, what was the designer thinking, don't know, maybe to give a ALL IN CHIP solution for cheapness. But, the seconds third and fourth generation really has RGB output and is expected to be convert to VIDEO OUT on the PCB.
Thank you for this very detailed explanation
I was looking at the TMS9918 for my homebrew 6502, but went with the MC6847 using dual port SRAM. Color is not great, there’s no sprites, and it’s limited to 32 text columns, but I rather like it.
And having the inbuilt character ROM is a plus. I like the 6847 for its simplicity.
@@senorverde09 True, though I went with custom character ROM. Unfortunately, it makes semi-graphics mode worthless.
I tried many modern LCDs, and I always had issues. I found a CRT TV, and it looks great. I think I'll try a scan converter like the retrotink.
I also tried with an USB frame grabber, and it looks also terrible. I think that these chips were designed to look great on CRT TVs. Unfortunately I don't have a color CRT TV to test.
@@DoctorVolt I was fortunate to have found one at a thrift store .
You should check out the Yamaha V9938. It was a successor to the 9918/9929 and is software compatible, but offers so much more, including 256 * 424 in 256 colours, and 512 * 424 in 16 colours, but with a palette of 19200 colours. Each pixel can also have a unique colour
My MSX with a V9938 (compatible with TMS9918) works fine on on a Salora TV (PAL mode)
Cool!
The 9918 was incredibly powerful for its time. But I think you may have mis-characterized Graphics I. On most home computers that used this chip, Graphics I was the "text" mode and the way the colour set was done was merely an oddity but no less useful. Just different. Colourful displays and games were abundant using this mode.
There is a chip named MB8118 that operates on 5V only and it is a 16K*1bit DRAM chip (which I presume will work witht the TMS9918). There is also the Intel 2118, but I cannot find any available.
The TMS9118 can still be bought for few dollars in China, but strangely not the TMS9128 and the TMS9129.
These may be an alternativ to the 4118. But as they are way more expensive on Ebay, and we still need 8 of these, I´d rather go for the workaround with the SRAM and the D-latches.
I’ve got a couple of experimental systems with TMS9118 video chips. They’re the successor of the TMS9918 and don’t rely on the 8 RAM chips. One uses 2 - TMS4464 Dynamic RAM chips for 16K of video ram. The other uses 2 - Toshiba D41464 D RAM chips for 16K video RAM. I had a TI99 4/A back in the early 80’s and these video chips bring back that vibe.
@@andrewwasson6153 Yes, I know about those 9118 chips.
I got a chip for you to check out, the NS405-b18N. It's a all-in-one terminal on a chip from the 80's. Would probably work well with your Z80 build.
That chip wold be perfect, but it is hard to find. So I am trying this with the TMS9918 now.
@@DoctorVolt check your email
Would it be possible to make a C64 VIC-II replacement with this chip?
No, because these chips are completely different in their capabilities.
Great video. Thanks for sharing. I built the same circuit as you and text mode works fine, but in any graphics mode I have an issue: lines are duplicated in alternated lines. For example I print "HELLO" and I have HELLO in first and third line. Then I print "WORLD" and I have WORLD in second and fourth line. Same when I use imgserial. Lines appear repeated in pairs in alternated lines. What could be the cause? Thanks a lot in advance.
I assume there is in error in the wiring of the RAM or the RAM itself, so the TMS reads the same content from multiple addresses.
@@DoctorVolt Thanks a lot for the quick reply. I thought the same, but I checked at least 3 times and my PCB schematic has the same connections as yours. I made a small code to show me the contents of the VRAM after vdp_print and I see all is where is supposed to be, and not duplicated. So there must be something that makes the VDP reading twice, but I'm clueless.
@@DoctorVolt Finally found the problem. It was a power supply problem 😲 Reading the VDP manual I noticed that the indicated current supply need is 200-250mA. I was connecting my circuit to the +5 GND of the Arduino. So I connected it instead to a bench power supply and voila, it works!!! And indeed my circuit consumes 190 mA. Thanks a lot again for sharing your circuit.
Yes, these old chips always do weird things when the voltage is too low.
How about two of the TMS9918 and with more Video RAM?
Multiple TMS9918 can be cascaded so that one overlays the output of the previous
@@DoctorVolt If two such TMS9918 chips are used cascaded please describe how and answer can they share Video RAM? Candidate SRAM chips could be TMS4416 or TMS4116 or TMS4164 or TMS4464 _(depending on the breadboard's population of glue logic, nor gates, and so on)._ Thank you.
You can feed the video output of a VDP into Pin 35 of another one. It is however not possible to share the same RAM. Every VDP must have its own RAM. And the maximum is 16KB.
@@DoctorVolt A TMS9918 can be connected on a breadboard so that it has no RAM and so the CPU drives the RAM for it. It is slower however, maybe that would be a (tantamount) way for two TMS9918 chips to "sort-of-share" RAM? It wouldn't quite be VRAM.
Thanks for the info about the Pin 35. Is it possible, by some other mechanism, to have two TMS9918 chips produce two video outputs "stitched ogether" (instead of an overlay) so as to effectively increase screen resolution? So for example, instead of one chip having an image of 288x192 pixels, a TV could show that image directly above another chip's image so as to have 288x384?
I think that you might run into some severe timing issues if two TMS9918 share the same RAM, if the one tries to write and the other tries to read at the same time. I also cannot see a way how the two images can be stacked on the screen to get the double number of lines. I´d rather go for a more advanced chip like the V9938
youtube algorithm hi
Hola, me gustaría colaborar.
It's a shame it can't do 80 columns. Would it be possible to make a board that used this chip instead? en.wikipedia.org/wiki/Motorola_6845
Not sure about its availability but it looks interesting.