Hello! This is brilliant. I built Necroware's MCE adapter after seeing his video and was thinking "if only this were incorporated into a complete solution".... YAY!! Looking forward very much to your progress on this - already looks pretty impressive! Thank you for doing this work.
Cool project! You may struggle with timing because every old EGA card seems to have slightly different pixel clock rates. There was no exact standard and when creating profiles for the RGB2HDMI project I often had to tweak things slightly from EGA to EGA card. Same for MDA vs Hercules cards .... Also slightly different even from text to graphics mode. It's akin to the auto timing stuff VGA LCD monitors have to employ as VGA cards all vary slightly as well.
Yeah getting it to sample the input perfectly will probably be an issue. I am actually synchronizing sampling per line so as long as it's not too off I may be able to get rid of the sampling artifacts. But yeah I definitely need to do more testing. Thanks for the feedback :)
This is awesome! Been in the market for this very thing, and was hoping for something based off a pi pico or zero as I have a few hanging around. TYVM!
Would it be possible to transcode MDA/CGA/EGA directly to DVI? VGA is still quite flaky on LCD screens and capture devices. Would be nice to have the output in a modern-ish digital standard. I'm also wondering if it would be possible to repolace RAMDAC on a VGA card with DVI encoder.
Great job! I'm trying to find time to test and repair some old hardware, and this would come handy. Used to have an EGA monitor but at some point was thrown away because was just some old stuff taking dust; I told to not do that 😭
Calibrating sample point on a moving target must be a real nightmare? Making the rp2040 process pixels at insane speed is fairly simple with chained DMA and strategic assembler code but that part... I'm having a headache just thinking about what you have to deal with. Extremely impressive! :)
Getting the sampling right is the trickiest part, but I think I can improve upon the current version quite a bit. Not sure if we can get it to work perfectly though. Yeah DMAs are an option, but we also need to do some computation with the input data for skipping the black borders, identifying the mode and adjusting the borders etc. But yes, it is definitely worth considering.
Very nice! The Pico is almost (but not quite) fast enough that it could actually be turned into an EGA card-with some help it probably could-but how many Tandys, Commodore 128s, and other PCs will this serve? Quite a few, I suspect! And it's going to cost less than any project involving its larger brother if you can resolve the last couple of issues. I'm excited for this project!
Maybe you could use two (or even more?) Picos and see if you could share the load between them. One could handle the ISA slot and forward data to the next one.
As long as it does not use more than one core it should be possible. I think there is some project out there that drives a display port with a Pico. Funny enough the hardest part is not driving the display, but rather getting the input from MDA/CGA/EGA :)
Before playing the video I got excited you resolved sampling frequency phase problems, but alas. You will need additional PLL clock with finetuning, like $2 Si5351A to feed base frequency into pico instead of its standard crystal. ps: there is also pico-rgb2hdmi project if you fancy adding hdmi/dvi output.
I think the sampling issue is because I haven't actually set the sample timings correctly. But you may be right, I will need to do some additional testing. Ah, thanks for the pointer! If this one works well, that would be the next logical step.
how long until we get a full on card solution that replaces the mda/cga/ega video cards entirely to output vga native, but the software sees the older formats on a case by case basis? i can't imagine its going to be much longer.
Yeah it shouldn't be impossible to do both the interfacing with the ISA bus and driving the display, at least for an 8-bit card. The only issue is that the Pico is almost not fast enough. A newer slightly faster version of the Pico would just make it a lot easier.
I don't want to be disrespectful but your voice reminds me a bit of professor Von Schlemmer from Adventures of Sonic the hedgehog, the video is good though
The Pi Zero has a much faster main CPU but it is lacking the programmable PIO state machines of the Pico. These state machines run deterministically and give you cycle-accurate timings, which is required for sampling the input and generating the output that drives the VGA. For example, you can ask the PIO to generate a signal that is high for X nanoseconds and low for Y nanoseconds, and it will produce a perfect signal. As far as I know this can't be done with either the main ARM core of the Pico or the ARM cores of the Pi Zero, or any other faster Pis.
The RGB2HDMI project handles this with an external CPLD to perfectly synchronize and digitize the input signal, then you have all the power of the Pi Zero framebuffer to handle scaling and every custom digital video format imaginable. It's one of the most phenomenal solutions around for retro display and has no downsides outside of requiring a Pi Zero, SD card and the CPL hat (so costs more.)
Haha it is a bit ridiculous when you stop and think about it, but these chips open up so many possibilities for retro computers and game consoles how could we possibly stop?! 😅
Hello! This is brilliant. I built Necroware's MCE adapter after seeing his video and was thinking "if only this were incorporated into a complete solution".... YAY!! Looking forward very much to your progress on this - already looks pretty impressive! Thank you for doing this work.
Thanks!
Cool project! You may struggle with timing because every old EGA card seems to have slightly different pixel clock rates. There was no exact standard and when creating profiles for the RGB2HDMI project I often had to tweak things slightly from EGA to EGA card. Same for MDA vs Hercules cards .... Also slightly different even from text to graphics mode. It's akin to the auto timing stuff VGA LCD monitors have to employ as VGA cards all vary slightly as well.
Yeah getting it to sample the input perfectly will probably be an issue. I am actually synchronizing sampling per line so as long as it's not too off I may be able to get rid of the sampling artifacts. But yeah I definitely need to do more testing. Thanks for the feedback :)
And the RP2040 PIO strikes again! I love seeing all the cool things people do with these chips!
The Pi Pico has been a game-changer for signals processing and emulation projects like this one. And it's so cheap, too!
Yeah it removes the need for additional hardware logic in many cases.
That is impressive work, looking forward to your progress!
This is awesome! Been in the market for this very thing, and was hoping for something based off a pi pico or zero as I have a few hanging around. TYVM!
Yeah, the Picos are perfect for this kind of stuff!
Very nice, can't wait for the problems to be fixed.
Another great video and project.
Excellent video, thank you for a perfect explanation!
Thanks, glad you enjoyed it :)
Great work. I wish You success with solving those issues.
Great project - it's coming along very nicely =D
Awesome project! Would love something like this for the VDC output on the C128.
ty kermit.
Would it be possible to transcode MDA/CGA/EGA directly to DVI? VGA is still quite flaky on LCD screens and capture devices. Would be nice to have the output in a modern-ish digital standard. I'm also wondering if it would be possible to repolace RAMDAC on a VGA card with DVI encoder.
Yes, I think it should be possible, I will give it a try.
Great job! I'm trying to find time to test and repair some old hardware, and this would come handy.
Used to have an EGA monitor but at some point was thrown away because was just some old stuff taking dust; I told to not do that 😭
Oh no, poor EGA monitor!
Конвертер по производительности быстрее чем сам компьютер и видеокарта :)
Haha yeah :D
Calibrating sample point on a moving target must be a real nightmare?
Making the rp2040 process pixels at insane speed is fairly simple with chained DMA and strategic assembler code but that part... I'm having a headache just thinking about what you have to deal with. Extremely impressive! :)
Getting the sampling right is the trickiest part, but I think I can improve upon the current version quite a bit. Not sure if we can get it to work perfectly though.
Yeah DMAs are an option, but we also need to do some computation with the input data for skipping the black borders, identifying the mode and adjusting the borders etc. But yes, it is definitely worth considering.
sweeeeeeeeeet! great vid, thanks!!
That Duke music during the testing l.. chef kiss
Very nice! The Pico is almost (but not quite) fast enough that it could actually be turned into an EGA card-with some help it probably could-but how many Tandys, Commodore 128s, and other PCs will this serve? Quite a few, I suspect! And it's going to cost less than any project involving its larger brother if you can resolve the last couple of issues. I'm excited for this project!
Maybe you could use two (or even more?) Picos and see if you could share the load between them. One could handle the ISA slot and forward data to the next one.
Yeah implementing a simple video card for a slow machine should be doable.
would it be possible to convert MDA/CGA/EGA to DisplayPort instead?
As long as it does not use more than one core it should be possible. I think there is some project out there that drives a display port with a Pico. Funny enough the hardest part is not driving the display, but rather getting the input from MDA/CGA/EGA :)
Before playing the video I got excited you resolved sampling frequency phase problems, but alas. You will need additional PLL clock with finetuning, like $2 Si5351A to feed base frequency into pico instead of its standard crystal.
ps: there is also pico-rgb2hdmi project if you fancy adding hdmi/dvi output.
I think the sampling issue is because I haven't actually set the sample timings correctly. But you may be right, I will need to do some additional testing.
Ah, thanks for the pointer! If this one works well, that would be the next logical step.
how long until we get a full on card solution that replaces the mda/cga/ega video cards entirely to output vga native, but the software sees the older formats on a case by case basis?
i can't imagine its going to be much longer.
Yeah it shouldn't be impossible to do both the interfacing with the ISA bus and driving the display, at least for an 8-bit card. The only issue is that the Pico is almost not fast enough. A newer slightly faster version of the Pico would just make it a lot easier.
Wouldn't it be easier to convert it to some modern digital signal instead of analogue?
Yes, I think it should be possible to generate a digital signal.
What is the music track that begins at about 10:00?
It is track "Stalker" from the "Duke Duke Dance Party" Album by the space quest historian.
@@scrap_computing Thank you.
I don't want to be disrespectful but your voice reminds me a bit of professor Von Schlemmer from Adventures of Sonic the hedgehog, the video is good though
I'm far from an expert, but how about a Pi Zero?
The Pi Zero has a much faster main CPU but it is lacking the programmable PIO state machines of the Pico. These state machines run deterministically and give you cycle-accurate timings, which is required for sampling the input and generating the output that drives the VGA. For example, you can ask the PIO to generate a signal that is high for X nanoseconds and low for Y nanoseconds, and it will produce a perfect signal. As far as I know this can't be done with either the main ARM core of the Pico or the ARM cores of the Pi Zero, or any other faster Pis.
@@scrap_computing Yeah, my guess would've been timing since you didn't use it, but thanks for the explanation.
The RGB2HDMI project handles this with an external CPLD to perfectly synchronize and digitize the input signal, then you have all the power of the Pi Zero framebuffer to handle scaling and every custom digital video format imaginable. It's one of the most phenomenal solutions around for retro display and has no downsides outside of requiring a Pi Zero, SD card and the CPL hat (so costs more.)
Can we stop this madness of shoving a computer powerful enough to emulate the computer into another computer to act as a peripheral?
Haha it is a bit ridiculous when you stop and think about it, but these chips open up so many possibilities for retro computers and game consoles how could we possibly stop?! 😅