Jump to content

iBook G3 800 MHz hack gives 1920x1080 VGA output


Recommended Posts

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:

                       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

 

replace with

                       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

 

The values have the following meanings:

                       ss 01 24 clock hres  24 
htotl hsync 24 hswid vres  24 vtotl vsync 23 vs
wd 00 03

 

(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:

                             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

 

Set values as follows:

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

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.

Link to post
Share on other sites
  • 2 weeks later...
  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...