No video
VGA ZX Spectrum - Testing
In this short series, I'm going to build a ZX spectrum using an EPROM instead of a ULA. In this video, i looks at getting the VGA circuit to work.
Part 1: • ZX Spectrum build, No ...
Part 2: • ZX Spectrum build vide...
Part 3: • VGA ZX Spectrum - No U...
Пікірлер: 39
Superb! The fact that this works without an ULA is the real kicker. Even with the minor problems (which are likely to be ironed out) the picture is miles away from the TV (or composite) on a real Spectrum. Way better. Clean up the input to your DAC, some buffer gates (or a bunch of FFs if its really a timing issue) and plently decoupling close by should help. Besides, Jet Pac and Bruce Lee bring back many memories.
@DrMattRegan
Ай бұрын
Great to hear! It's been a fun little project. I'll give updates in the next series which will have no ULA and no Z80. Should be fun.
Wonderful work, particularly the interlaced memory access between the CPU and video state machine. I cannot see any diodes, only resistors in the VGA output circuit on your board. The intensity signal should sum with RGB through a resistor and a separate diode for each each R, G and B signals going into the VGA connector. Also, 220 pF to ground from each of the RGBI lines of the VGA output may also help with the jailbars.
@DrMattRegan
Ай бұрын
Yep, no diodes, only resistors. Cool, thanks for the input. I'll keep it up my sleave. Actually, i was thinking of using some extra transistors (2 per bit) to stop the pull down, but i think diodes will work just as well - thanks!!
I had the same jumping issue with the ZXPicoIF2ROM on my 48K. I spoke to the author of the board, Tom Dalby, and he said that this happens because the snapshot was taken on an emulator with a Kempston joystick interface enabled, and as my Speccy has no such interface, it gets confused. He suggested that I create my own snapshots in an emulator, with Kempston disabled, and use those instead. I haven’t got around to trying this yet, but I thought I would share, as it seems it might help in your situation too.
@DrMattRegan
Ай бұрын
Thanks for that, i suspected that's what was going on. Good to know that i'm not the only one who has seen it. Makes me less worried about it. I was just shying away from writing .tzx or .tap code.
Great job! The ULA will stop the CPU clock when it needs to draw the screen contents. So that will change the timing of the code you run. And timing us critical in many games.
@DrMattRegan
Ай бұрын
Thanks for the feedback. True, i actually have a video on the topic kzread.info/dash/bejne/iIGj1bKYiJWpaLg.html Will try slowing it down as i tweek it.
Great job, it's looking amazing through VGA! Incredible you managed to replace the ULA with an EPROM! If it's not correct timing wise against how the original ULA works, that will be why some games aren't working! Does it halt the CPU when the ULA is doing display stuff? .sna are a bit hit and miss - sometimes they are from a 128K machine (freeze or just crash on 48K), other times they are using a specific controller input, eg. kempston, cursor, SJS etc.
@DrMattRegan
Ай бұрын
Yes, i think the 60Hz vs 50Hz is an issues. Also, i don't mimic the exact timing of the memory by slowing the CPU down during video. That (should) be relatively easy to do. Will give it a go.
Even with the jail bars the display looks great.
@DrMattRegan
5 күн бұрын
Thanks Martin. I'm waiting on some parts from China to try fix it.
I really love this series! Can't wait to see how the jail bars issue is resolved
@DrMattRegan
Ай бұрын
Thanks David. Cameo role for your keyboard!
It works very well. Nice one.
@DrMattRegan
Ай бұрын
Thanks 👍
Hi, regarding the jail-bars they might appear because of the way you physically implemented the intensity bit comming into the video dac. I noticed in one of my builds if I buffer all the color and intensity bits and the pixel clock and bitmap data so all „flows“ synchronous through the output state all of the clock related artifacts disappear leaving only power related stuff which is more easy to debug. This I could get away with ample decoupling and shorter slightly thicker wires (also using star grounding and power but separate digital and analog circuits power) I did however also buffer the analogue video out with a fast 3ch opamp - the same that is used on some console RGB-mods.
@DrMattRegan
Ай бұрын
Thanks for that. The video comes directly out of a 374, so it should be synchronized. My back-up plan is basically what you suggest, create a separate analogue only video board, possibly with it's own power supply. I think the spectrum is a bit forgiving because it only has 16 colours, but this would be crap for actual VGA.
Outstanding!
@DrMattRegan
Ай бұрын
Thank you kindly!
A ground grid works better than a tree. The whole ground loop is only for the point between analog and the digital. For each section connect all the grounds together in all different directions. This makes a mesh and it will act like a ground plane up to a frequency based on the largest loop.
@DrMattRegan
Ай бұрын
A mesh is likely to be closer to a ground plane than a star/tree. It doesn't seem to upset the digital portion though, i may just need to redesign the analogue section.
Very nice work, about the jailbar, maybe an rc filter isolating the power of the video circuit from de rest of the circuit could help, something like 10R and 10uF +100nF
@DrMattRegan
29 күн бұрын
I did try using the circuit you suggested but with a diode instead of the 10 ohm resistor, but no joy.
Do you have a CRT to test with? I've run into similar issues using a deadbug style circuit with a ground plane. CRT works perfectly, but LCD has jailbars. I'm pretty sure it's caused by the LCD sampling the signal in a lazy way causing a lot of aliasing. That's not to say the DAC isn't at fault(any noise on the power supply will flow through to the output), but the aliasing is way worse than it should be. I'd be curious to see what the output of the DAC looks like on the scope. Also as other people have mentioned star grounding is the opposite of what you want. It's the area inside a current loop that determines inductance so you want the signal/power and ground wires to be close together as possible.
@DrMattRegan
15 күн бұрын
Not a bad idea. I do have a conventional VGA monitor somewhere out the back. Will give it a try.
A great project and well explained as all ways. I would like to try some of your ideas out on my RC2014. I am very interested in the Arduino Mega reading the video RAM, Will you share the your code and or make a video on your techniques. You always seem to skip over the finer details which is the most interesting parts for me.
@DrMattRegan
13 күн бұрын
Yep, i plan to plan to make the Arduino Code etc available. Unfortunately, if i go into to fine details, it apparently puts many viewer to sleep, so i try to keep it a bit higher level.
Removing Jail Bars is not difficult. Ensure that your PDN (Power Delivery Network) is designed with low impedance to ensure that high frequency components are attenuated and routed away from the analog area. With proper PDN design, there's actually no need to have separate power supplies for the analog and digital sections. Avoid using chokes if possible - the use of them is an indication of poor design (but are often used!). A possible reason why the full intensity colours don't have jailbars is because the signals are above the maximum 0.7V peak thus any ripple is ignored. For the prototype, I would just use a galvanically isolated DAC to have separate clean voltages to drive the monitor.
@DrMattRegan
27 күн бұрын
Thanks i suspect you're right. I checked my resistor network and bright is about 0.8v, is i too suspect it's saturating the 0.7v peek - no ripple. The low intensity level is about 0.5v. I'll probably make a video about it. I'll start with a VideoDAC, and work backwards. I was hoping to get away with just a resistor network though.
@pebbleschan6085
24 күн бұрын
Just a thought - Are you driving the CPU clock with a TTL inverter and 330 ohm resistor by any chance? If so, temporarily remove disconnect the pull up resistor to see what effect (if any) it has on the jail bars. Also, mesh your PDN to better control noise paths and ground bounce. There’s no need to avoid ground loops when dealing with higher frequency waves.
Does colour clash display exactly as before or are there unexpected effects?
@DrMattRegan
Ай бұрын
The colour clash matches what i've seen before, for example Brue Lee looks exactly like the same as images on the internet. The jailbar artifact is new, i wasn't expecting it. To date, all of the video has been white on black (for PAL) and there wasn't a hint there.
@whetphish
Ай бұрын
Wouldn't it be amazing if it accidentally eliminated Speccy colour clash? 😂
@dav1dbone
Ай бұрын
@@whetphish yea it would, ula+ was one method it involved patching the games or developing games from scratch. I feel that if Sinclair had put more into development at the time the Speccy would easily have trumped the competition, alas the hardware costs and supply issues back then tho......
@jasejj
Ай бұрын
@@dav1dbone Thing is though, one of the reasons for the Spectrum's long term success was the price/performance balance of the design. I suspect that any improvements would likely have either led to increased cost or reduced performance (the colour display in particular is a particularly efficient design even if it is ugly) - either of which would have rendered the machine less competitive. You only have to look at the like of the Oric to see this; on paper it's a better machine but in practice the graphics get in the way and slow the system down. The big omission was the lack of a sound chip, and to this day I'm surprised they didn't include an AY on the interface 2 - this would have been copied by other vendors and become a standard pretty quickly I think.
@gdclemo
Ай бұрын
@@whetphish that would be quite a trick, given that the colour clash is caused by the way the screen is stored in memory. If I remember correctly, someone did build a modern interface to remove colour clash, but it doesn't work in all games, and it requires something like four times the normal amount of screen memory to store the clash-free display on.
manic miner is probably jumping because you have not FF value in kempston port #1F after game load, the game detects presence of KJ by checking bit 5(or 6, or 7) of kempston port
@DrMattRegan
15 күн бұрын
I think you are right. Not sure if i'll fix it straight away though.