noidentity
Well-known member
I've started using my iBook G3 800 MHz 12.1" to run Mac OS 9.2.2 on and was frustrated that it didn't support 1920x1080 on an external VGA monitor. I've installed the screen spanning hack to allow non-mirrored external displays, but it still didn't have the resolution I wanted, so I hacked the video driver to support it as I did for my PowerMac 8500 a while back. It's very straight forward to set new timings, as it has all the parameters virtually in the standard modeline format.
ATI Driver Update 1920x1080.sit
The attached modified ATI Driver Update (version 2.4.4) has 1920x1080 60Hz using the following modeline:
Modeline "1920x1080_60.00" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
I also figured out that if you set the external monitor as the main (menubar) monitor in Monitors, everything starts on it. Further, if you call DMDisableDisplay(), you can totally disable the internal LCD and treat it like a desktop machine with only an external monitor. And then turn the brightness down until the backlight goes off. Very useful to not have the mouse/windows/desktop icons get lost on the internal LCD when it's not visible or on.
You can patch the driver yourself by editing the data fork at offset 2B7088. Initially it has the following:
replace with
The values have the following meanings:
(note that this template can't be applied to the original bytes in the unchanged file since the format is based on how the fragment's globals are compressed, and I slightly changed how they were compressed to better make the values available for modifying)
To convert a modeline to the above format, start with the modeline:
Set values as follows:
Here is a further log of how I developed this hack, made so I wouldn't forget the fine points in case I ever have to do it yet again. Includes some notes on how to try new timings with Macsbug without having to restart.
ATI 1920x1080 hack log.txt
I hope someone can get some use out of this running Mac OS 9.2.2 on an iBook like I am.
ATI Driver Update 1920x1080.sit
The attached modified ATI Driver Update (version 2.4.4) has 1920x1080 60Hz using the following modeline:
Modeline "1920x1080_60.00" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
I also figured out that if you set the external monitor as the main (menubar) monitor in Monitors, everything starts on it. Further, if you call DMDisableDisplay(), you can totally disable the internal LCD and treat it like a desktop machine with only an external monitor. And then turn the brightness down until the backlight goes off. Very useful to not have the mouse/windows/desktop icons get lost on the internal LCD when it's not visible or on.
You can patch the driver yourself by editing the data fork at offset 2B7088. Initially it has the following:
Code:
02 01 23 4F FB 07 01 22
09 90 01 21 80 01 25 C8 05 40 05 72 01 21 01 01
21 03 04
Code:
03 01 24 3A 02 07 80 24
08 98 00 58 24 00 2C 04 38 24 04 65 00 04 23 00
09 00 03
Code:
ss 01 24 clock hres 24
htotl hsync 24 hswid vres 24 vtotl vsync 23 vs
wd 00 03
To convert a modeline to the above format, start with the modeline:
Code:
A B C D E F G H I J K
Modeline "1920x1080_60.00" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
Code:
ss = 03:+hsync +vsync 20:-hsync +vsync 10:+hsync -vsync 00:-hsync -vsync
clock = A*100, so 123.45 MHz becomes 12345
hres = B
htotl = E
hsync = C-B
hswid = D-C
vres = F
vtotl = I
vsync = G-F
vswd = H-F (possibly actually H-G, but this is very minor)
So in the 1920x1080 example, you have (# before decimal values)
ss = 03
clock = 3A02 = #14850
hres = 0780 = #1920
htotl = 0889 = #2200
hsync = 0058 = #88
hswid = 002C = #44
vres = 0438 = #1080
vtotl = 0465 = #1125
vsync = 0004 = #4
vswd = 0009 = #9
ATI 1920x1080 hack log.txt
I hope someone can get some use out of this running Mac OS 9.2.2 on an iBook like I am.