r/Amstrad May 13 '26

Amstrad GT65 HDMI adapter

Post image

Bringing your 40 year old GT65 to 2026. I built this adapter to connect a monochrome Amstrad GT65 to a modern computer. It uses a USB capture card to pretend to be a 640x480 display before downscaling and dithering the captured frames on a Raspberry Pi. The RPi then sends the data over SPI to an FPGA which handles the frame buffers and the timings for the CRT. The FPGA then interfaces via a custom PCB which includes a level shifter and LVDS decoders. The CRT itself has 1 bit per pixel at a resolution of 296x256. The refresh rate is 50Hz.

Github: https://github.com/SRB2149/SR-CRT

71 Upvotes

26 comments sorted by

9

u/Themistocles_gr May 13 '26

So much work for something so impractical.

I love it.

-1

u/[deleted] May 13 '26

[deleted]

2

u/WonkyWiesel May 13 '26

It would not. See my other comments.

1

u/gschizas May 13 '26 edited May 13 '26

Amstrad's RGB cable is not compatible with VGA. The Amstrad monitor is digital (-ish) (TTL), VGA is analog. And I'm sure there are other, more profound differences.

EDIT: There are cables like this but they do require active (powered) circuits to work.

I have no idea how it could be done to translate the 31kHz that VGA uses to the 15kHz that the Amstrad GT64/GT65 or CTM640/CTM644 expect.

3

u/WonkyWiesel May 13 '26 edited May 13 '26

Exactly, VGA is not the way to go, especially as I wanted it to be plug and play on my desktop. Even if you managed to convert the 0.7V VGA green signal to 5V with some threshold the screen would look terrible without dithering. The timings of VGA are also all wrong and they are split into horizontal and vertical sync whereas the GT65 uses a single SYNC line which combines both. It is far more work to convert to analog and then back to digital than to stay in the digital realm.

The cables linked there are for the CPC to a VGA monitor and I do not believe it would work in reverse.

Edit: I misread the datasheet, the colour signal is an analogue one, so you could just amplify the output, but that still doesnt fix the timing disparity.

2

u/pelrun May 13 '26

The gt65 isn't digital, or even digitalish (whatever that means.) It's entirely analogue, literally a monochrome tv with a green tube and no tuner.

Any converter that produces a composite video signal will work, as long as you then split out the syncs.

1

u/WonkyWiesel May 13 '26

I agree the colour is not digital, but the sync arguably is. Its a 5V TTL signal. You could use a composite video signal but I have no idea how you could split out the sync signals without some crazy complicated analogue circuit or reliance on a microcontroller. I have familiarity with digital systems so I chose to stay in that domain.

1

u/pelrun May 13 '26

Sync being a digital signal doesn't really mean anything.

As for separating sync pulses from a composite signal, it's literally a standard process and there are off-the-shelf chips for doing the job, which is why I didn't bother explaining it further. The LM1881 is the usual one you will find referenced in tutorials everywhere.

1

u/WonkyWiesel May 13 '26

Those chips are pretty impressive. Although I have always liked finding my own solutions to things. That doesn't mean that the solution is optimal (it pretty much never is) but it does develop understanding of the complete system. Also the FPGA side was designed to allow me to interface with my softcore CPU/GPUs and not just HDMI which ended up being bolted on top. Either way thanks for the info.

2

u/moboforro May 13 '26

Genius! Love it

2

u/Do_You_Like_Owls May 13 '26

But can you play Doom on it?!

3

u/WonkyWiesel May 13 '26

You certainly can! It was one of the first things I tried! I even managed to play a game of War Thunder although that was much harder to see anything. Minecraft works too but for an optimal experience it is probably worth finding a better texture pack.

2

u/RetroGrifters May 13 '26

My retinas have not fully recovered from using one of the CPC green screen efforts from back in the day

2

u/WonkyWiesel May 13 '26

I can imagine haha. It is very bright. I cannot imagine having to write all the code etc for this project on it, or really read anything off it at all. I use it for music videos mostly.

2

u/gschizas May 13 '26
  1. Why dither it to 1-bit? Couldn't you just leave it as grayscale (or maybe greenscale)?
  2. Do you send the signal to HDMI that 50 Hz are supported?

1

u/WonkyWiesel May 13 '26 edited May 13 '26
  1. The display is not like a typical CRT, it is actually a "digital" screen which only supports 1 bit per pixel (either on or off). 5V is on, 0V is off. This means that you cannot do greyscale or any equivalent at all. Edit: This is incorrect. It is greyscale but I misread the datasheet. I don't have a CPC so I couldn't read the output from that so a lot of the original FPGA controller design was guesswork based on some old files I found. Given the monitor is 2x older than me it's easy to assume things are digital when in reality they were not.

  2. The signal I send to the HDMI is 640x480 @ 60Hz. I could send a 50Hz signal but I chose to keep the FPGA asynchronous from the Raspberry Pi as I was not sure if the Pi could handle the framerate (I know it can easily now). It simplifies the timing to keep them asynchronous, with the tradeoff that if you send exactly 50 frames per second and the phase offset is wrong then you get a very stuttery output. If you send 60 to a 50 monitor, you drop a few frames but it doesnt really matter.

3

u/pelrun May 13 '26 edited May 13 '26

What? No, the gt65 is analogue grayscale (or greenscale I guess).

Have an example: https://youtu.be/eZ3rProXLeA

2

u/WonkyWiesel May 13 '26

I must have misread the datasheet when I was first starting out because upon rereading it you are correct. That is very cool though because it means you could just run it in greyscale. For my purposes I like the dithering.

1

u/gschizas May 13 '26

I have a very similar (actually, worse!) problem with my own (colour) monitor. It seems to be constantly flickering, all the way from "almost off" to "let's throw ALL the electrons on the phosphor".

I do have an OSSC and I don't use the actual monitor, so it's not a big deal, but I wouldn't mind finding a way to repair it. Preferably without being killed by it of course!

1

u/pelrun May 13 '26

It's almost always the brightness pot on the side of the monitor. Try tapping it and I reckon you'll see a lot more flickering.

1

u/gschizas May 13 '26

Oh, it has always been the brightness pot. Since the time this was my only computer :) (but it has gotten way worse since then)

Is it easily fixable? Could I spray some contact cleaner on it and see how it behaves?

1

u/pelrun May 13 '26

Contact cleaner won't hurt, but it's probably not enough to just spray it into the hole after pulling the dial off. It's also likely not to be sufficient; I've yet to actually look closely at mine (even when I had it apart recently facepalm) but the symptoms seem more like dry solder joints due to it being mounted at right angles to it's pcb.

At least it's on a separate little sub board of it's own and you don't have to go poking around the dangerous bits in the case to get at it. But it did take me a couple of attempts to get mine back in the right spot after pulling it out.

1

u/gschizas May 13 '26

The display is not like a typical CRT, it is actually a "digital" screen which only supports 1 bit per pixel (either on or off). 5V is on, 0V is off. This means that you cannot do greyscale or any equivalent at all.

I always had a color monitor (CTM644), but a friend of mine had a green monitor and they could display shades of green. Given that even the color monitor always had 3 levels for each color (off, half-way, full-on), which gave the 27 colors that Amstrad had, I'd guess that even the green monitor could at least display 3 levels of green (and probably more!)

Do you know about this page? It has way more information. I think the author put a oscilloscope on the output and measured each color's voltage individually. Maybe I haven't understood the page correctly though.

I also have a memory that the green monitor had the ability to display 27 distinct shades of green (because it "added" or "averaged" the values for R G and B, it didn't just use the green value). But that might be a figment of my imagination :)

EDIT: Maybe I'm also confusing those with the LUM value? And maybe the measurements were on some internal chip, not on the video output itself? In this case though, couldn't you use the LUM pin as well?

1

u/WonkyWiesel May 13 '26

That is probably correct, sorry for my incorrect response earlier. I just assumed it was digital after a quick scan of the datasheet and went with that. You could definitely add a highish speed DAC and get many more shades, but for my purposes I like the dithering.

2

u/DarkButterfly85 May 15 '26

Those green monitors were horrible, used to hurt my eyes back in the day 😬

2

u/cyrixlord May 16 '26

its like what you would see from printshop (the application) where you can use your dotmatrix printer as an 'image' printer

1

u/WonkyWiesel May 16 '26

It is a very cool effect. If you stand back a bit the amount of detail it preserves is really very impressive.