Making a ‘CRT Emulator’ from an LCD Part 4, the final method!

I’ve been distracted with other projects so apologies for the lack of updates. I’ve been using the curved LCD for a while now so here’s the final method:

Start with a lense, ground into the right shape, the method in Part 1 worked well enough. I used perspex but in hindsight, a lens made from cast epoxy resin would have been easier and far less work.

I masked the lens off with black spray paint to cover the edges of the LCD. It’s important to use plastic safe paint as there’s a chemical reaction between certain spirits/solvents and perspex that causes it to self destruct.

Masked lens with lcd split out.

The important bit!

The main issues were bonding the lens and contamination of the backlight assembly. To avoid contamination of the backlight, I very carefully separated the LCD from the backlight, and flipped it over. You need to be careful doing this, the ribbon cable is really fragile. I also masked off the exposed backlight assembly to protect it from dust and fingerprints.

This is the setup I used to prep for bonding. I made sure everything was forensically clean and laid it all out in advance. I used white spirit to clean the lens and the screen. White spirit is the only solvent I have found that doesn’t cause any issues, it also has a long evaporation time which helps get everything smudge free.

The bonding step needs to be absolutely right and being prepared will save you from having to panic and scrabble around. I used a blusher brush for the final clean. I noticed that for the absolutely final step, if you huff on the surfaces first and then use a fine blusher brush, it removes any final streaks.

Preparation is key!


I used LOCA TP-2500 adhesive, it is really viscous and flow is key. It has a unique odour and thanks to a pavlovian reaction, it smells of failure and disappointment to me. 🙂

I mounted the LCD facing upwards on a flat surface and then bonded the lens on top. This gives you a good view of the screen and you can check for bubbles, grit, dust etc as you go. I applied the loca to the LCD in an X shape which causes the LOCA to run to each corner first and squeeze out from the middle. I noticed a small bubble on the first application but lifted it, put an extra dot of LOCA in the middle and pressed down until the bubble was pushed to the edges and out. this step is really messy which is why masking is so important.

Getting there!


I used some spare UV bulbs to cure the LOCA and the hardest part for me was to leave it while it cured. I blasted it with UV for a couple of hours just to be sure.

Fire UV lamps, maximum yield, full strength! 🙂


LOCA weeps for a long, long time and I ruined few backlights by being impatient. I ended up leaving the assembly open and on an absorbent cloth for three days (The longest three days ever!) if you don’t, this happens:

Oh no….

Cleaning up.

When the LOCA has eventually finished weeping, now is the ideal time to perform some clean up of the screen. I used a plastic spudger and some white spirit to get rid of the mess and gave it a final treatment with a clean blusher brush.

So close to success!!

Reassembly and Test.

When I was absolutely sure, I reassembled the final unit and tested it. I laid it on my trusty +2, powered it up, and success! I treated myself to a listen of the Agent X theme tune while I double checked the unit but the curve is definitely there!



This was a pretty tricky project but I like the idea of being able to reliably do it again rather than trust to luck. It isn’t a CRT but it’s pretty close. Ideally, this method could be scaled up to larger screens specifically for retro computing. If a custom driver board could be produced for retro systems it would have direct control of the pixels and would save the need for an OSSC etc. The power usage would also be much lower of a CRT.

Play Time!

Here’s some footage of it in action:

Making a ‘CRT Emulator’ from an LCD Part 3, Adhesives.

Part 3, Adhesives. More great strides in failure!

Progress is being made! In order to bond the LCD to the lens, I tried a number of different approaches and adhesives and they all failed dismally, sometimes ruining the backlight assembly. I was plagued by lint and bubbles no matter what I tried. I even came close a few times only for it to implode after a few hours.

Silicon and white spirit came so very close!!

After an unearthly number of failures, the adhesive I found to give the best result is LOCA (Liquid Optically Clear Adhesive). This is for repairing mobile phones and is baked by UV light. Luckily I have a retrobrighting box to steal the UV lamps from. I chose TP2500 as this is quite viscous and sets to a gel layer than can be removed if need be (which turned out to be really important!) .

Tooled up and ready for battle.
Gently does it!

I used the LOCA to attach the screen and baked it under UV for about 30 minutes. It seemed to work well and I baked both sides just to be sure.

There’s no kill like overkill!

Disaster! It turns out that the LOCA I have will weep for a day or two and although I thought it was cured it decided to mess up the backlight assembly. The assembly itself is made from multiple layers of fresnel lenses and diffusers and loves to use capillary action to suck up any liquids it can. LOCA is formulated specifically to spread so you can imagine how well that went. I suspect it it because I’m using the cheap LOCA. Apparently, the expensive stuff doesn’t ‘weep’ as much.

Spoiler, it didn’t go well.

At this point, I’m fairly sure I have a method that will work but I’m killing time (Hence the blog posts) until I’m sure the adhesive has stopped weeping. My current method is to really carefully split out the LCD from the backlight assembly, attach the lens and then, leave it to stop weeping for a couple of days.

The latest one is looking good and hasn’t shown any signs of weeping any more.

My latest (and hopefully) final attempt!

If this works I’ll write up the method in detail and post a part 4. In the meantime I’ll be chewing my own fingers off waiting for glue to dry. 🙂

Making a ‘CRT Emulator’ from an LCD Part 2, Optics.

Part 2, Optics – Even more failure!

Not satisfied with failing the last part multiple times I thought I’d make things even more difficult for myself. Having the lens is great but the layer of air between the LCD and the lens, scatters the light. Depth of colour is muted and so is the contrast.

It’s good, but it’s not right.

I got to thinking about refraction (While washing a glass jug in the sink) and this is the theory I have been working with:

I tested this theory with a 1mm silicone sheet and a liquid layer between the LCD and the lens. I was right! There were gaps and bubbles but where it worked, it worked really well. The brief glimpse I saw made it worth progressing

On the left, you can see the air gap and how the refraction works when they’re one ‘piece’

I have been working on an optimal method to join the LCD and the lens, I have a 90% failure rate at the moment but as soon as I get a reliable method I’ll add it as a Part 3.

As you can see, the curve looks fairly authentic. I’m currently on my 25th attempt at bonding but I’m getting close to the result I want! 🙂

Making a ‘CRT Emulator’ from an LCD Part 1, Lenses.

Part 1 – Making the lens. So much failure!

I love Retro Gaming, but LCD panels are flat and look ‘off’ when compared to a CRT. The image is too clean. I have been meaning to make a small USB powered screen for my consoles and got a bit carried away.
I’ll be documenting each step as soon as I have a method that works.

Mmmmm…. Curvaceous!

This is my aim, so very shiny!

The ‘Original Plan’

Use a camera reversing monitor and convert it to 5v to use on my desktop. They can take a PAL 50hz and NTSC 60hz signal happily and uses composite encoding artifacts to add some authenticity. Pop it in a case, job done…

The ‘New Plan’ (AKA the Sanity Siphon)

The screen was nice, but it was flat and looked ‘off’ despite the composite encoding. I decided to make a lens to put on the front of the screen to make it appear curved. I started with a piece of acrylic and carved it into a rough shape

Acrylic 10mm thick 60x80mm lens blank

Making the lens, this where it started to go wrong…

I ended up making quite a few lenses. I had a cracking problem and it took a while to work out why.

Cracks, cracks and more cracks!

It turns out that there are two ways acrylic sheet is made and I was using cold formed sheets. These carry internal stresses that force it to pull itself apart. you can see the type of plastic with some polarised sunglasses and an lcd screen. There’s a video that shows the effect here:

Stressed? Definitely!

A successful method!

I’ve found a way of making the lenses with minimal failure. Firstly, make sure the plastic is not cold formed. Secondly, try not to get the material any hotter than luke warm. Any heat creates localised stresses and turns it into something like a Prince Rupert’s drop.

I stuck the blank to a rotating arbour I made from an old tank wheel (I also build tanks btw.) The plan is to put it on a belt sander, and let it spin itself curved.

It’s ugly but it works!
Strapped down and centered.

I used the underside of my belt sander to work the curve into the acrylic. I used a new belt as it would be sharper and less prone to heat the material. Once I set the angle, I only ran it for a couple of minutes at a time and periodically sprayed it with WD-40 making sure it only just got warm.

The curve of the belt got the shape just right

After grinding, I sanded the surface with 400, 800, 1000 and then 3000 grit sandpaper, then used plastic polish to finish the surface.

So shiny!

Once I had got to this point I masked up the lens and used matt black spray paint, this hides the edges of the LCD.

A finished lens!
Installed, it looks nice but could be better…

Further improvements:

To complete the look, it’ll be necessary to bond the lens directly to the screen. This should bring the image to the outside of the curve. I’m working out the kinks in the process and will make a Part 2 when I have a reliable method. Currently I’m on the 24th attempt so it may be a while.

I hope you find this info useful and it helps you not to make the same mistakes that I did. 🙂

Cassette Adapters on the ZX Spectrum 128k +2 don’t work. Or do they?

Whilst developing my TZXCassette, I noticed that certain games wouldn’t load despite them working fine when fed through the line in. There are a number of games (speedloaders etc.) that really dislike being loaded by a Cassette Adapter. As this is the way I plan to use the TZXCassette and there are a bunch of titles that don’t load, it’s a big problem.

I downloaded Soundcard Oscilloscope, plugged a lead and Cassette adapter into my Speccy and set to work. Having never used a scope before, it was a bit of a learning curve, I got this from the external port of the speccy and it’s a mess!

Don’t wave there, wave it elsewhere, you’re waving it round and it ought to be square! 😦

There was also evidence of harmonic distortion.

(I learned the phrase Harmonic Distortion from Star Trek, I have no clue what I’m doing!)

Thanks to some brilliant work from Duncan Edwards with a new TZXDuino firmware and advice from Keir Fraser I learned how the TZXDuino should work and what to expect. The TZXDuino is a wonderful device the TZXCassette uses as its internals and this works amazingly well but when someone does something stupid with it (like me!) then things start getting sticky (and not in the good way).

I whipped up a test setup and through more luck than judgement, made some slow progress.

If it’s stupid and it works, it isn’t stupid. I’ll either fix the problem or accidentally invent time travel.

To load successfully from a tape adapter you need a REALLY specific volume, I’m talking safecracker specific, and it needs to be really loud. Games loaded fine from the line in so I knew the kit was good, it was just that damned tape deck doing ‘something’. Have I mentioned that I have no clue what I’m doing yet? 🙂

WOW, that’s loud!

After some more examination, I started to spot a pattern in the waveform that I was sure didn’t belong. There were dips in the tips of the waveforms.

That just looks plain wrong!

This made no sense to me, at lower volumes these tips would intersect with the middle line and cause a ‘double peak’ and of course, a loading error. Through raising the volume you could ‘push’ the peaks into the right place but the edges of the waveform were ragged and sounded awful. It worked but didn’t seem right.

I did a bunch of reading to find out what the Spectrum was actually expecting, nearly everywhere said square wave, straight to the ULA. I found one sentence that made the whole problem come together.

‘ZX Spectrum Cassette tape waveforms have to be sinusoidal’

The supposition… Brace yourself for the science bit….

The ULA takes a square wave, the Datacorder wants a sinusoidal input, it’ll convert it to a square wave and move it to the ULA, all good. That is unless you feed a square wave into the Datacorder which many people have done and have been frustrated by as it converts an already square wave into the wibbly wobbly monstrosity at the top of this post.

I’ve found the problem, now how to I fix it??

I needed to work out how to turn a semi square wave into a sinusoidal wave with very little electronics experience, a knack for lucky guessing and a can do attidude. I put my dodgy soundcard scope on the output of the head and set to work.

This is not a sine wave! Not even a little bit!!

I sang a childs rhyme (Ip Dip Dog Sh*t if you must know) and picked the first component I pointed at, a 4.7uF Ceramic cap. I bridged the wires on the head with it and hey presto!

It’s a sine!!

Everything started working properly, and sounding great. As a bonus it cleared up the Harmonic distortion and as this means that a lower volume is required.

Much better!

If you give it a try, let me know, I’d love to know how you get on.

Arduino Nano Clone USB Solder Points

I got impatient and killed the USB port traces of my Arduino Nano Clone whilst desoldering it. I should have used a heat gun but ran out of patience and thought I’d wing it.

Noooooooooooo! 😦

I Googled it but there aren’t a lot of helpful docs for redirecting the USB port so documented it here in case anyone finds it to be useful.

I ran some tracing and checked the pinout for the CH340G and these are the alternate solder points.

Alternate Arduino Nano Solder Points

I am extending the USB port for a project of mine and these points are way easier to solder to than the ones on the upper side of the PCB so it was a happy accident for me.


The TZXCassette – A TZXDuino in a Cassette Tape!

A TZXDuino smooshed into a Cassette Tape? Witchcraft!

I am not a witch!

I’ve built a TZXDuino device into a cassette tape, I didn’t think I could do it when I started but, as always, I’m glad to be wrong. 🙂

It’ll hold thousands of games and replace a cassette player. With this, you can load straight from the tape into a ZX Spectrum. As it seems that I need to prove that I’m not a witch (and I’m still pretty smug about that, thanks Twitter! ) and there are a few poeople that want to build their own I’ve documented the process here:

I also made an overview on YouTube:

Give it a go, it’s a challenge but it’s worth it! 🙂

128K +2 (Grey) Jailbar elimination.

As the +2 gets no love, I thought I’d tinker with it and see if I could adapt the fix for the Toastrack Jailbars issue. I got very lucky and managed to exceeded the results they were getting on the toastrack.

I started with a Standard 128K +2 Issue 3 and the jailbars were very visible, especially over RGB. This has happened on every Grey +2 I have seen and is a ‘feature’.

I took a punt and added 1UF (B105) capacitors to the existing capacitors on the RAM bank to see if it helped and it did! I also swapped C52 from a 22uf capacitor to a 100uf capacitor. I tried different values but the 100uf capacitor worked best.

To sum up, swap C52 from a 22uf capacitor to a 100uf capacitor. Add 1uf capacitors to augment the existing capacitors in positions  C72-C79. I am sure there is a more efficient way of fixing this but I am yet to see any published fixes for these machines. I ran the machine on soak for a few days and it passed all of the diagnostic tests so in its current state, the fix definitely helps more than it harms and you can’t argue with the results.

I also uploaded a video documenting the process. 🙂