• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Development of Nubus graphics card outputting to HDMI?

dlv

Active member
I came across the open source MNT VA2000 project last night (https://github.com/mntmn/amiga2000-gfxcard/tree/master) which brings HDMI output to the Amiga 2000. 

Is anyone aware of a similar project or efforts for Apple Nubus? 

It appears to me (naively) that the VA2000 could be leveraged for such a project. One of the main challenges is, of course, porting from the Amiga's Zorrow II/III bus to Apple Nubus. I've begun reading through "Designing Cards and Drivers for the Macintosh Family" as a starting point, just to get myself familiarized with the basics. However, I don't have an electrical engineering background or experience with FPGAs (always wanted to learn) to determine how feasible such a project might be...

 

Unknown_K

Well-known member
Amiga people spend lots of cash for their machines, not sure the Apple 68k/ppc community would.

 

EvieSigma

Young ThinkPad Apprentice
I'd honestly be happy with just a cheap VGA 1024x768 NuBus card myself. I don't have any CRTs that can do the wacky higher resolutions anyway.

 

Byrd

Well-known member
Amiga people spend lots of cash for their machines, not sure the Apple 68k/ppc community would.


+ also they have greater need with 15khz output limitations.  Nubus cards are getting thin on the ground though these days.

 

Unknown_K

Well-known member
Flicker fixers/scan doublers are cheaper then video cards for the Amiga and you can use any VGA monitor.

Yes, Nubus cards are getting hard to find (I snagged them all), and some of then a funky fixed frequency models you need special monitors for. You also get a green tinted screen color if you don't have a sync on green monitor so find an old Sony Trinitron if you can.

I do have a slightly higher resolution old Supermac 20" fixed frequency monitor that I assume still works (have not fired it up in years) that worked well with my Q950 built in video or a Supermac 3MB card. That sucker is too heavy to move.

So many people junked the old CRT's so you either find a working late model monitor or use an LCD that kind of ruins the look. Not that many non widescreen LCDs around anymore.

 

dlv

Active member
Yeah... I'm not that nostalgic for old CRTs (been there, done that). My focus is on the machine, so I think getting a crisp 1080p signal from a Q950 would be a fascinating way to interact with it  :)  

 
Last edited by a moderator:

Trash80toHP_Mini

NIGHT STALKER
Developing a new VidCard would be the a fabulous project. That Amiga blog is very interesting and the FPGA board very promising. Dunno where we were talking about it but I suggested going straight to HDMI rather than bother with finding and interfacing VRAM with a RAMDAC to get analog video out. Looks like everything needed to do it is right there on that board outside of bus buffering and multiplexing on his carrier card.

I think I'd skip right past the NuBus section of that book and head straight to the 68030 PDS interface of the SE/30 and IIsi (maybe add a side order of IIfx PDS just to keep things interesting at the start?) as your target machines. That will be a lot easier than slogging through NuBus in terms of development. Once you have something up and running on PDS, your Card Design, DeclROM and Drivers will be all set for NuBus Controller/Bus Transceiver conversion to the Slots in the rest of the family. :approve:

1024x768 is 3:3 XGA, but modern panels are all wide screen which resets your sights a bit higher to 8:5 WXGA at 1280x768 or set a tad lower to straight up 16:9 720p at 1280x720 which scales automagically to the ubiquitous 1080p in today's displays. With 32MB of SDRAM on that FPGA board, 1080p, Dual Head 720p or even Dual Head 1080p might be in the ballpark?

I read up a bit at work tonight on Zorro III, sounds a bit like proprietary local bus of PCs after morphing into support of multiple VLB cards to me. VLB had a pincount high enough that it didn't need multiplexing. Zorro III sounds like they did multiplexing fonly for cross compatibility with Zorro II's connector and cards.

Going straight to the 68030 without worrying about multiplexing ought to be the easiest path to the NuBus. You won't have the bus width limitations of NuBus and the SE/30 is the favorite of the boffins around here and SE/30 lunat  .  .  .  zealots  .  .  .  are about the only gang that spends anything like Amiga Money around here.

edit: translating a 68030 PDS Card to the 68040 Quadra PDS would be amazing. That would make for one damn fast card for your Quadra 950, dlv.

 
Last edited by a moderator:

kreats

Well-known member
there is already the OSSC, which is open source.. I guess someone could adapt it so that it went on a nubus card

 

Trash80toHP_Mini

NIGHT STALKER
Yeah, found that first page and was hoping for something different. That's a CRT television resolution converter for achieving excellent legacy gaming console output on HDTV, no? That's fascinating but not applicable here for high resolutions on 4:3 CRTs and LCDs and letterboxed 4:3 on wide screen Displays? I probably confuzzled the issue by suggesting 16;9 720p/1080p as additional target resolutions for any new VidCard design.

 

NJRoadfan

Well-known member
It'll also pass thru any content coming from the VGA port to HDMI untouched with no upscaling (dumb ADC), it can also do 2x scaling on 480p sources (so 640x480 is outputting 1280x960). Handy if you have a TV or monitor without a VGA port. The bigger issue with 16:9 modes is Nubus era hardware generally doesn't have enough power to drive 1280x720 or 1920x1080 modes natively. Those that do generally don't have the resolution presets in their drivers.

 
Last edited by a moderator:

nickpunt

Well-known member
To be honest, once you get to higher resolutions I think the classic MacOS experience degrades quite a bit, especially what can be powered by nubus/68k machines. Lots of picking the mouse up multiple times to get across the screen, and many apps/games either not being designed for those resolutions or too slow to run on this era hardware. 

If the issue is more common classic MacOS resolutions like 512x384, 640x480, 800x600, 832x624 and 1024x768 don't scale well to 720p/1080p (which they don't, without artifacts), we can always solve the problem at the other end and aim to scale them to higher resolutions like 4K (2160p). With 3840x2160 pixels to play with, upscaling is going to be pretty good, and you can always letterbox a bit if you want even pixel dividers.

In practice, I don't know of scaler hardware that will do this yet (haven't looked) but it's something to consider, rather than hunting down super rare cards, tweaking old drivers, etc. Retina resolutions are pretty forgiving when it comes to scaling content.

 

Gorgonops

Moderator
Staff member
I don't really see how the OSSC is relevant to making a new video card from scratch. I also don't see how it's of much use if your goal is trying to get the output from an old Mac video card that outputs some Mac-specific mode onto a newer monitor, because having read the documentation it looks like the one thing it does *not* do is deal with frame rate issues. (IE, if you have a Mac video card that only does 640x480@67hz instead of the "standard" 60hz the OSSC will output an HDMI signal at a very nonstandard 67hz, which on most monitors isn't going to get you anywhere.) It's pretty clear from the wiki that it doesn't manage to work with some consoles and arcade boards that are only a few points of a percentage off from the standard frame rates.

Here is an interesting project for interfacing a Raspberry Pi to a simple eight or sixteen bit bus so it can act as a video card. Unfortunately the repository seems to be incomplete; there's some source code for the FIFO board (which is the really interesting part and it's on my to-do list to see if I can wrap my head around it) and a debug listener but no trace of the actual render code that I can see. Alas the whole thing appears to have been abandoned; I was really curious to see if he'd implemented a linear framebuffer in the graphics core (which is what you'd need for a Mac video card) or if it was implemented entirely as a display list processor. (IE, essentially something more along the lines of a TI 9918/A.) Still, even if it's of no real use as a graphics engine the idea of tacking a FIFO buffer on to let you snoop bus transactions without having to worry about exact timing could be super useful for other applications....

Anyway. Strictly speaking a video card for a Nubus Mac should be a pretty low hanging fruit as long as you're happy with unaccelerated video (as it looks like that VA2000 card is). Macs require a linear framebuffer with "chunky" pixels (not planar like VGA modes higher than 320x200 originally were) for 8 bit-and-less color depths mapped into the Nubus slot space and, if I'm recalling the documentation in the book I downloaded off Archive.org at one point correctly, a *pretty* simple initialization ROM that just tells the Mac what modes the card supports and what bits to poke to select them. (There are some additional wrinkles, of course, such as how the bitmap will need to be able to map into both the 24 bit slot space and the 32 bit Superslot spaces, modes that require more than 1MB of RAM need special handling, etc, but I believe it *is* all documented.) Examples of FPGA video generator code are a dime a dozen so it's really all down to the Nubus interface code. Casual googling has yet to turn up for me an example of open FPGA/CPLD code for implementing Nubus but it may well be out there. (Don't forget you'll be needing some level converters too, given the lower I/O voltage of most modern FPGAs.) A PDS card would indeed be somewhat simpler mainly because the 680x0 bus is more copiously documented.

Late at the end of the "PDS era" there were a few video cards made for LC PDS that used standard off-the-shelf VESA-bus VGA chips so, again, the requirements for actual video hardware itself are pretty loose. If it can do Chunky video with a linear frame buffer it'll probably work.

 
Last edited by a moderator:

trag

Well-known member
So many people junked the old CRT's so you either find a working late model monitor or use an LCD that kind of ruins the look. Not that many non widescreen LCDs around anymore.


Newegg still sells some 18" 4 X 3 LCDs.  For example, the refurbished HP LA1951G:

https://www.newegg.com/Product/Product.aspx?Item=N82E16824276654

It has preset resolutions supported from 640 X 480 up to its native of 1280 X 1024.  It also has 15 user presets, suggesting that one could use 832 X 624 on it as well.    It looks like as long as the pixel clock isn't exceeded it will display anything.

However, I don't think it has the option to display non-native resolutions in native mode.  I think it just upscales all of them.   I have eight old IBM 18" LCD panels that have a user setting, so if you're viewing 640 X 480, e.g., the monitor can either upscale it to the whole screen, or just use the center 640 X 480 pixels on the display so you get native quality images.

Those old IBMs appear to have actually been made by Samsung.  Ah, here we go, the old T85A.   It has a VGA port and a 13W3 port.   There was a newer version, (T85H maybe?) which had a VGA port and a DVI port.

 

Gorgonops

Moderator
Staff member
However, I don't think it has the option to display non-native resolutions in native mode.  I think it just upscales all of them.
Alas it's been a long time since I've seen a monitor that had the "just center it in the middle" option for lower resolutions.

It is sort of ironic that some of the oldest LCD monitors usually had more flexible scaler engines than ones just a few years newer, but I suppose it also makes sense given that there was a greater chance that they might be connected to machines that didn't honor VESA DDC mode suggestions. I used to have an ancient AOC 17" flat panel from 2002 that would work with anything I tried on it, including oddball Sun workstation modes. Downside is, of course, that the LCDs from that era really looked like... LCDs from that era.

 

dlv

Active member
Thank you all for the discussion so far.

Developing a new VidCard would be the a fabulous project. That Amiga blog is very interesting and the FPGA board very promising. Dunno where we were talking about it but I suggested going straight to HDMI rather than bother with finding and interfacing VRAM with a RAMDAC to get analog video out. Looks like everything needed to do it is right there on that board outside of bus buffering and multiplexing on his carrier card.
You mean, interfacing with the VRAM built into the motherboard (or whatever)? I doubt Nubus/PDS has enough bandwidth to pull the contents of VRAM at any usable frame rate. A FPGA board providing its own frame buffer to the system and outputting the video signal independently is definitely the way to go.

Unfortunately, it looks like the miniSpartan6+ FPGA board used in the VA2000 project is no longer sold which is too bad because, from what I've gathered, it was particularly well suited for this type of application (and relatively cheap).

There are some boards (DE10-Nano, Zynq-7010/7020) that appear to be suitable (HDMI port, enough digital I/O pins, enough RAM, NVM to hold ROM) but these provide ARM cores that, from what I've gathered, share the memory on these devices and are therefore not suitable for low latency applications. Some projects (MiSTer for the DE10-Nano https://github.com/MiSTer-devel/Hardware_MiSTer) have gotten around that limitation by attaching memory to the I/O pins. My recollection from skimming through documentation is that 56 pins are required in Apple's Nubus, which rules out the DE10-Nano, for example, because half of the 80 I/O pins available on that board would be used by the SDRAM daughter board. I haven't looked more closely at the Zynq-7010/7020 but I suspect it has the same problem.

With 32MB of SDRAM on that FPGA board, 1080p, Dual Head 720p or even Dual Head 1080p might be in the ballpark?
I suppose it's a possibility provided the FPGA has enough bandwidth.

To be honest, once you get to higher resolutions I think the classic MacOS experience degrades quite a bit, especially what can be powered by nubus/68k machines. Lots of picking the mouse up multiple times to get across the screen, and many apps/games either not being designed for those resolutions or too slow to run on this era hardware. 
I agree. I think 1080p is probably the upper limit and there are still likely to be some issues, as you've pointed out.

Here is an interesting project for interfacing a Raspberry Pi to a simple eight or sixteen bit bus so it can act as a video card. Unfortunately the repository seems to be incomplete; there's some source code for the FIFO board (which is the really interesting part and it's on my to-do list to see if I can wrap my head around it) and a debug listener but no trace of the actual render code that I can see. Alas the whole thing appears to have been abandoned; I was really curious to see if he'd implemented a linear framebuffer in the graphics core (which is what you'd need for a Mac video card) or if it was implemented entirely as a display list processor. (IE, essentially something more along the lines of a TI 9918/A.) Still, even if it's of no real use as a graphics engine the idea of tacking a FIFO buffer on to let you snoop bus transactions without having to worry about exact timing could be super useful for other applications....
Nice find. It sounds like what the VA2000 is essentially doing, just... much slower. I'll check it out later.

Anyway. Strictly speaking a video card for a Nubus Mac should be a pretty low hanging fruit as long as you're happy with unaccelerated video (as it looks like that VA2000 card is). Macs require a linear framebuffer with "chunky" pixels (not planar like VGA modes higher than 320x200 originally were) for 8 bit-and-less color depths mapped into the Nubus slot space and, if I'm recalling the documentation in the book I downloaded off Archive.org at one point correctly, a *pretty* simple initialization ROM that just tells the Mac what modes the card supports and what bits to poke to select them. (There are some additional wrinkles, of course, such as how the bitmap will need to be able to map into both the 24 bit slot space and the 32 bit Superslot spaces, modes that require more than 1MB of RAM need special handling, etc, but I believe it *is* all documented.)
That's encouraging. I skimmed through the video card specific sections of the Nubus documentation the other night, and came largely to the same conclusion. I would be thrilled to have unaccelerated video; I think that would be a major accomplishment. Accelerated video can come later :)  

Examples of FPGA video generator code are a dime a dozen so it's really all down to the Nubus interface code. Casual googling has yet to turn up for me an example of open FPGA/CPLD code for implementing Nubus but it may well be out there. (Don't forget you'll be needing some level converters too, given the lower I/O voltage of most modern FPGAs.)
Right, I think one of the main challenges will be either finding a Nubus implementation with permissive licensing, or implementing one from scratch. And yes, I saw a bunch of level converters in the VA2000's schematic.

A PDS card would indeed be somewhat simpler mainly because the 680x0 bus is more copiously documented.

Late at the end of the "PDS era" there were a few video cards made for LC PDS that used standard off-the-shelf VESA-bus VGA chips so, again, the requirements for actual video hardware itself are pretty loose. If it can do Chunky video with a linear frame buffer it'll probably work.
I'll look into it. One concern I have is whether a PDS graphics card can be used early enough in the boot process? There's a length discussion about that in the Nubus documentation for video cards.

 

trag

Well-known member
Downside is, of course, that the LCDs from that era really looked like... LCDs from that era.


Yes, those IBM monitors are heavy, thick and have wide bezels, by today's standards and IBM, bless their hearts, didn't provide a standard VESA mount.  It was a (IIRC) ~$150 option.  Compared to the original retail price, I guess that didn't seem like so much.  The backlighting is more even than one often sees.

I fabricated my own VESA adapters for the used monitors I acquired.

On_Arm_Propped.jpg.00d73b526ecdf91953f0fc19f9b656c3.jpg


On_LCD_Oblique.jpg.369f42aca82239ddf1bab004387c1209.jpg


 

Trash80toHP_Mini

NIGHT STALKER
Nice adapter, trag. iLike! :approve:

To be honest, once you get to higher resolutions I think the classic MacOS experience degrades quite a bit, especially what can be powered by nubus/68k machines. Lots of picking the mouse up multiple times to get across the screen, and many apps/games either not being designed for those resolutions or too slow to run on this era hardware. 
Mac experience on a IIfx running a pair of 21" displays at 1152x877 in 24-bit works for me, no problem. I'll wager they were doing CAD in that configuration on the IIx in 8-bit color or better a/o Grayscale without complaint back in the day.

If the issue is more common classic MacOS resolutions like 512x384, 640x480, 800x600, 832x624 and 1024x768 don't scale well to 720p/1080p (which they don't, without artifacts), we can always solve the problem at the other end and aim to scale them to higher resolutions like 4K (2160p). With 3840x2160 pixels to play with, upscaling is going to be pretty good, and you can always letterbox a bit if you want even pixel dividers.
If you're talking a new VideCard you're NOT looking at common classic resolutions at oddball "non-flicker" refresh rates. You'll be looking at 640x480, 800x600, 1024x768 and the like at 60Hz for compatibility with current display tech. Apple CRT Displays are going to need legacy cards, trying to support those would be a project killing case of featuritis, Best to stick to the main line of development, a high end VidCard for Digital HDMI support.

Add HDTV resolutions on top of the basic VGA/SVGA/XGA triplets I listed above and leave it at that..

In practice, I don't know of scaler hardware that will do this yet (haven't looked) but it's something to consider, rather than hunting down super rare cards, tweaking old drivers, etc. Retina resolutions are pretty forgiving when it comes to scaling content.
Getting legacy resolutions at crazy refresh rates would still be the problem, no?

 
Last edited by a moderator:
Top