eharmon
Well-known member
Everything seems right for the SuperMac Thunder II GX 1360 to successfully run at 1600x1200:
Like it's 1600 peer it has:
- 6MiB of memory
- 3x 135MHz RAMDACs
So I took a look at modifying the ROM and/or extension to enable 1600x1200 resolutions.
The bad news: doesn't work yet.
The good news: I'm not convinced it's a dead-end.
Roughly, I started by patching one of the resolutions (832x624) to map to a 1600x1200 framebuffer in the declrom. Essentially I just modified the existing vpBounds for a higher resolution. That works, it'll boot at 1600x1200...sorta:
- The framebuffer runs properly at 1600x1200, but I think acceleration goes a bit haywire, drawing duplicate data in multiple regions of memory (vertically). It "works", but the software stack isn't handling it properly.
- The output signal behaves oddly, the card does auto-adjust to the resolution, but improperly. It ends up outputting somewhere around 1200x1200, but with a pretty poor sync lock. My upscaler locks onto the signal crushed by 50% vertically.
- The card puts it in virtual desktop mode, so the 1600x1200 framebuffer is scrolled around the 1200x1200 output.
All this occurs before we even reach Mac OS, so it's pretty clear the extension doesn't have much responsibility here.
So the card's init is definitely capable of "figuring out what to do" to a degree, but it's not able to exactly understand how it should handle this situation.
I've read some of Designing Cards and Drivers for the Macintosh Family, and took a look at the timing descriptions for various video modes. But I can't tell how the card might be determining how to configure the RAMDAC, which I presume it's doing only half-correctly.
Could the control panel be laying down the right hints in the PRAM? Only a few bits are twiddled on display changes. Is there some hardcoded table in the PrimaryInit? Or in the driver provided by the card? I see suspicious sections in the status function that look quite a bit like data tables.
A 1600 ROM to compare with would be best, obviously, and they might even be compatible with each other. But since those seem to be soldered down it seems unlikely we'll see a copy. But I kinda wonder if they're mostly universal and with the right bits flipped, the 1360 card will behave like a 1600 anyway.
(As an aside: Thunder/24 ROMs are NOT compatible with Thunder II, it seems the universality does not extend that far -- makes sense since Thunder II were the first cards with higher resolutions)
Like it's 1600 peer it has:
- 6MiB of memory
- 3x 135MHz RAMDACs
So I took a look at modifying the ROM and/or extension to enable 1600x1200 resolutions.
The bad news: doesn't work yet.
The good news: I'm not convinced it's a dead-end.
Roughly, I started by patching one of the resolutions (832x624) to map to a 1600x1200 framebuffer in the declrom. Essentially I just modified the existing vpBounds for a higher resolution. That works, it'll boot at 1600x1200...sorta:
- The framebuffer runs properly at 1600x1200, but I think acceleration goes a bit haywire, drawing duplicate data in multiple regions of memory (vertically). It "works", but the software stack isn't handling it properly.
- The output signal behaves oddly, the card does auto-adjust to the resolution, but improperly. It ends up outputting somewhere around 1200x1200, but with a pretty poor sync lock. My upscaler locks onto the signal crushed by 50% vertically.
- The card puts it in virtual desktop mode, so the 1600x1200 framebuffer is scrolled around the 1200x1200 output.
All this occurs before we even reach Mac OS, so it's pretty clear the extension doesn't have much responsibility here.
So the card's init is definitely capable of "figuring out what to do" to a degree, but it's not able to exactly understand how it should handle this situation.
I've read some of Designing Cards and Drivers for the Macintosh Family, and took a look at the timing descriptions for various video modes. But I can't tell how the card might be determining how to configure the RAMDAC, which I presume it's doing only half-correctly.
Could the control panel be laying down the right hints in the PRAM? Only a few bits are twiddled on display changes. Is there some hardcoded table in the PrimaryInit? Or in the driver provided by the card? I see suspicious sections in the status function that look quite a bit like data tables.
A 1600 ROM to compare with would be best, obviously, and they might even be compatible with each other. But since those seem to be soldered down it seems unlikely we'll see a copy. But I kinda wonder if they're mostly universal and with the right bits flipped, the 1360 card will behave like a 1600 anyway.
(As an aside: Thunder/24 ROMs are NOT compatible with Thunder II, it seems the universality does not extend that far -- makes sense since Thunder II were the first cards with higher resolutions)