VOGONS


First post, by retrocanada76

User metadata
Rank Member
Rank
Member

Hello guys, this is my last project I’ve been working this month:

a truly FPGA MDA/CGA/EGA to VGA Converter. And it will be open source.

First, few answers before watching the video:

1) No, I am not selling this. I am designing it. It will be available later as DIY and open source.
2) It’s a W.I.P. I need to add MDA support now
3) It’s purely DIGITAL. No, your Amiga, Apple GS won’t work
4) Being DIGITAL it’s tied up to the EGA-MDA and CGA pixel clocks: 16.257Mhz and 14.318Mhz. Anything different than that, like your ZX-Speccy 128 will look jagged and jittered. Not to mention the sync pulse polarity that must match the EGA/CGA.
5) It converts CGA and outputs as 640x400@70Hz (21.175Mhz). For EGA it uses 640x350@70Hz (21.175Mhz). These are VESA standard resolutions supported by a standard VGA monitor. Your fancy new HDMI monitor probably will give a middle finger to that.
6) For MDA it will use 720x350x70Hz another VESA.
7) There is no HDMI output and it won’t have it.
😎 There are no margins the signal is displayed in 640x350/400. Some programs like ChekIt changes the CGA 6845 registers and mess up with the borders. For that in CGA you can use a DIP switch to fine adjust the screen. This problem doesn’t seem to happen in EGA.
9) I’m testing with my boards. There could be variations
10) I still need to solve some race conditions in EGA that causes it to make very hard to add changes. Too many lines being written/read at same time. But the video is stable.
11) You will be able to change the resolutions like output in 800x600, provided you can change the FGPA design and add new pixel clocks and solve many *ISSUES* it may cause 😁 hey it’s fun! But there won’t be scale-up, unless you implement it in FGPA 😈 using linear interpolation. Right now the only scaling present is CGA where I double scan each line from 640x200 to 640x400.

Enjoy the video:

https://www.youtube.com/watch?v=8_fl28-o9tE

Reply 2 of 36, by keropi

User metadata
Rank l33t++
Rank
l33t++

Excellent, kudos for making this!!!
I was under the impression cga/ega were 60hz though, isn't there 60hz VESA modes to use as the 60~70hz difference would create a non-synced image? Or do I have it wrong?

ps. the scanlines are awesome

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 3 of 36, by retrocanada76

User metadata
Rank Member
Rank
Member
keenerb wrote:

Is there significant input lag? It doesn't appear so, from the video.

The maximum input lag would be one frame. That's what I can fit inside 256x16KB SRAM, but since the output rate is higher than the input you end up rendering the new frame using parts of the old one. And you would see a tearing for smooth scrolled screens.

Reply 4 of 36, by retrocanada76

User metadata
Rank Member
Rank
Member
keropi wrote:

I was under the impression cga/ega were 60hz though, isn't there 60hz VESA modes to use as the 60~70hz difference would create a non-synced image? Or do I have it wrong?

Yes you are right the input is 60Hz and the output 70hz. There is only one frame inside the 265x16KB SRAM. So a visible tearing is unavoidable. If both frames start together the 70Hz will end up faster, showing at the bottom end the previous frame stored in the SRAM (Because the EGA/CGA don't even generated it. So there won't be any noticeable lag aside from tearing in smooth scrolled games.

But I played commander keen with no noticeable tearing.

Is there any game or demo you want to see ?

I may be able to add CGA composite video emulation (artifact colours). Let's see it. I need to get my IBM CGA board first.

Reply 6 of 36, by retrocanada76

User metadata
Rank Member
Rank
Member
keenerb wrote:

I wonder if this will work with the Tandy 1000 16-color modes?

Probably. But I don't have one to test. If it works on a 5153 than it should work.

Multisync monitors that would be problem.

Reply 8 of 36, by keenerb

User metadata
Rank Oldbie
Rank
Oldbie
retrocanada76 wrote:
Yes you are right the input is 60Hz and the output 70hz. There is only one frame inside the 265x16KB SRAM. So a visible tearing […]
Show full quote
keropi wrote:

I was under the impression cga/ega were 60hz though, isn't there 60hz VESA modes to use as the 60~70hz difference would create a non-synced image? Or do I have it wrong?

Yes you are right the input is 60Hz and the output 70hz. There is only one frame inside the 265x16KB SRAM. So a visible tearing is unavoidable. If both frames start together the 70Hz will end up faster, showing at the bottom end the previous frame stored in the SRAM (Because the EGA/CGA don't even generated it. So there won't be any noticeable lag aside from tearing in smooth scrolled games.

But I played commander keen with no noticeable tearing.

Is there any game or demo you want to see ?

I may be able to add CGA composite video emulation (artifact colours). Let's see it. I need to get my IBM CGA board first.

Supporting CGA composite 16 color mode would be very nice, I think.

Reply 9 of 36, by keropi

User metadata
Rank l33t++
Rank
l33t++

CGA artifact color display would be really amazing to add!
I know of this EGA demo that has smooth scrolling: http://www.pouet.net/prod.php?which=3972 , maybe it's a good test?

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 12 of 36, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie

This is really an awesome project. Thanks for initiating it.

I have two dead digital multisync monitors, so this device would save me the trouble of trying to fix them. BTW, do you have a video to show scrolling and any potential tearing from this?

Reply 14 of 36, by xjas

User metadata
Rank l33t
Rank
l33t

You should talk to Trixter (MobyGamer on here IIRC) who's done a significant amount of work towards getting reference digital captures out of CGA. He knows its quirks inside & out. Impressive project so far!

twitch.tv/oldskooljay - playing the obscure, forgotten & weird - most Tuesdays & Thursdays @ 6:30 PM PDT. Bonus streams elsewhen!

Reply 17 of 36, by retrocanada76

User metadata
Rank Member
Rank
Member
dr.zeissler wrote:

cool, but can it run 8088mph 😀

I can but it looks like a 5153 for now. To get the composite colors right first I need to get the perfect pixels. If a column is oversampled and results in 2 pixels wide due to clock differences, the composite artifact will not work.