Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I get this error:

Code:
su-4.3# uname -a
Darwin simbologia.local 8.11.0 Darwin Kernel Version 8.11.0: Wed Oct 10 18:26:00 PDT 2007; root:xnu-792.24.17~1/RELEASE_PPC Power Macintosh powerpc
su-4.3# ./Allrez
dyld: incompatible cpu-subtype
Trace/BPT trap
su-4.3#

I didn’t build it from source. Rather, I used the already built binary in the 10.4-10.5 directory.

EDIT: IT appears the Xcode project file within for 10.4–10.5 in the source download archive requires a version of Xcode which not only exceeds what I have running on the iBook, but also includes references to frameworks which I don’t believe exist in Tiger (like CoreDisplay.framework and a couple of others).

Would anyone here be able to build this for PowerPC, to be able to run on Tiger? Cheers.
My uneducated guess is that the problem is processor related, not OS or Xcode. I ran it successfully from that same folder as you on my G4 iBook running 10.4.11 (Server version albeit, but it seems from earlier screenshots you are also running Server?) Might not work on a G3 for whatever reason, but joevt would obviously have a better clue.
 
I get this error:

I didn’t build it from source. Rather, I used the already built binary in the 10.4-10.5 directory.

EDIT: IT appears the Xcode project file within for 10.4–10.5 in the source download archive requires a version of Xcode which not only exceeds what I have running on the iBook, but also includes references to frameworks which I don’t believe exist in Tiger (like CoreDisplay.framework and a couple of others).

Would anyone here be able to build this for PowerPC, to be able to run on Tiger? Cheers.
I build the 10.4 - 10.5 version using Xcode 3.2.6 in 10.6.
The 10.6 - 10.8 version is built using Xcode 9.2 in 10.12.
The 10.9 - 13 version is built using Xcode 14.3 in 13.

10.6 was defaulting the ppc architecture to ppc7400 (G4) instead of ppc (G3). I think it should be fixed in the 1.2.1 release.

Here's my build commands:
Code:
# b = built
# √ = tested

xcodebuild -project joevt-allrez/AllRez10.4.xcodeproj  -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.4.xcodeproj  -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.5.xcodeproj  -configuration Release ARCHS="ppc i386 x86_64" ; xcodebuild -project joevt-allrez/AllRez10.5.xcodeproj  -configuration Debug ARCHS="ppc i386 x86_64" # b√ # build On MacPro3,1 SnowLeopard
xcodebuild -project joevt-allrez/AllRez10.6.xcodeproj  -configuration Release ARCHS="ppc i386"        ; xcodebuild -project joevt-allrez/AllRez10.6.xcodeproj  -configuration Debug ARCHS="ppc i386"        # 
xcodebuild -project joevt-allrez/AllRez10.7.xcodeproj  -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.7.xcodeproj  -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.8.xcodeproj  -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.8.xcodeproj  -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.9.xcodeproj  -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.9.xcodeproj  -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.10.xcodeproj -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.10.xcodeproj -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.11.xcodeproj -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.11.xcodeproj -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.12.xcodeproj -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.12.xcodeproj -configuration Debug                         # b√ # build On MacPro3,1 Sierra
xcodebuild -project joevt-allrez/AllRez10.13.xcodeproj -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.13.xcodeproj -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.14.xcodeproj -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.14.xcodeproj -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez10.15.xcodeproj -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez10.15.xcodeproj -configuration Debug                         # 		
xcodebuild -project joevt-allrez/AllRez11.xcodeproj    -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez11.xcodeproj    -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez12.xcodeproj    -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez12.xcodeproj    -configuration Debug                         # 
xcodebuild -project joevt-allrez/AllRez.xcodeproj      -configuration Release                         ; xcodebuild -project joevt-allrez/AllRez.xcodeproj      -configuration Debug                         # b√ # build on Mac mini since Xcode doesn't work on MacPro3,1 Ventura


cd /Volumes/Work/Programming/XcodeProjects/Displays/AllRez
rm -R Assets
mkdir -p "Assets/AllRez/For 10.4 - 10.5"
mkdir -p "Assets/AllRez/For 10.6 - 10.8"
mkdir -p "Assets/AllRez/For 10.9 - 13"
cp -Rp joevt-AllRez/Build/Build10.6/Debug/AllRez joevt-AllRez/Build/Build10.6/Debug/AllRez.dSYM "Assets/AllRez/For 10.4 - 10.5"
cp -Rp joevt-AllRez/Build/Build10.12/Debug/AllRez joevt-AllRez/Build/Build10.12/Debug/AllRez.dSYM  "Assets/AllRez/For 10.6 - 10.8"
cp -Rp joevt-AllRez/Build/Build13/Debug/AllRez joevt-AllRez/Build/Build13/Debug/AllRez.dSYM  "Assets/AllRez/For 10.9 - 13"

pushd Assets
[[ -e ../AllRez.zip ]] && rm ../AllRez.zip
find . -not -name "Assets" -not -name ".DS_Store" -not -path "*/DerivedData*" -not -path "*/obj-amd64*" -not -path "*/xcuserdata*" -not -path "*/project.xcworkspace*" -print0 | xargs -0 zip -g ../AllRez.zip
popd


Here's some notes:
Code:
#=========================================================================================
# Support

10.6
- For PowerPC Mac OS X 10.4 to Mac OS X 10.5.
- Last version to support PowerPC.
10.12
- For Intel Mac OS X 10.5 to OS X 10.8.
- Last version to support Mac OS X 10.4 and 32-bit.
- However, you need to have 32-bit in a separate binary for 10.4.
13
- For OS X 10.9 to macOS 13.

#=========================================================================================
# Notes

10.4.11
- 64-bit doesn’t work in 10.4 (because ApplicationServices.framework is only 32-bit).
10.5.8
- DisplayPort DPCD can be read only up to 00100h.
10.6.8
- Nvidia Kepler has no DisplayPort support and no display resolutions.
- Radeon HD 4870 can use Acer XV273K when it is set to DP 1.1 or 1.2 but not 1.4.
10.6.8, 10.7.5
- > 360MHz on Radeon HD 4870 (DP 1.1) in 10.6 and 10.7 are modified to < 360MHz modes like this:
	41	41
	42	40
	43	35
	44  29
	45	24
	46	--
10.7.5
- First Mac OS version to have Nvidia Kepler drivers. No web drivers.
- GTX 680 doesn’t like Acer XV273K (even when set to DP 1.1) but does like Dell P2415Q (4K only up to 30Hz though).
10.8.5
- GTX 680 doesn’t like Acer XV273K (won’t connect even when set to DP 1.1) but does like Dell P2415Q (4K60 after restart with Nvidia web drivers).
10.9.5
- GTX 680 doesn’t allow Dell P2415Q to go to 4K 60Hz even though it accepts the timing (4K only up to 30Hz though). Can do 5K35 and 4K60 on the Acer XV273K.


Lilu/WhateverGreen without OpenCore adds the following to AllRez output:
IOFBAttributes - Lists the latest get/set of each attribute in the order they occur.
IOFBInvalidModes - Lists modes that the IOFramebuffer examined aand rejected. These are modes that aren't skipped/rejected directly by CoreDisplay.
IOFBEDID0 - The EDID read by IOFramebuffer::getDDCBlock. It could be our EDID override.


# Notes
# - Can't run ppc after Snow Leopard.
# - Can't run ppc64 on Intel Mac.
# - Can't run Intel on Power Mac.
# - Can't run i386 after Mojave.
# - Can't run 13.2 SDK on 10.6 (C++ library missing).
# - Can't run Deployment Target that is greater than OS X version.
# - Don't run AllRez with endian mismatch between user and Window Server or kernel space.
# - Can't run ppc64 build on 10.4 because ApplicationServices.framework is only 32 bit.

Here's some notes on all the AllRez Xcode projects. I only included the 3 projects required to build the included assets which are sufficient to support all Mac OS versions from 10.4 to 13 and all architectures.
Code:
#=========================================================================================
# Compare AllRez projects

cd /Volumes/Work/Programming/XcodeProjects/Displays/AllRez
ls -d joevt-allrez/*.xcodeproj | sort -V
joevt-allrez/AllRez.xcodeproj
joevt-allrez/AllRez10.4.xcodeproj
joevt-allrez/AllRez10.5.xcodeproj
joevt-allrez/AllRez10.6.xcodeproj
joevt-allrez/AllRez10.7.xcodeproj
joevt-allrez/AllRez10.8.xcodeproj
joevt-allrez/AllRez10.9.xcodeproj
joevt-allrez/AllRez10.10.xcodeproj
joevt-allrez/AllRez10.11.xcodeproj
joevt-allrez/AllRez10.12.xcodeproj
joevt-allrez/AllRez10.13.xcodeproj
joevt-allrez/AllRez10.14.xcodeproj
joevt-allrez/AllRez10.15.xcodeproj
joevt-allrez/AllRez11.xcodeproj
joevt-allrez/AllRez12.xcodeproj

bbedit joevt-allrez/AllRez10.4.xcodeproj/project.pbxproj
# SDK 10.4 -> 10.5.
# Xcode version 3.1 (42)
# Deployment Target 10.4.
# ppc and i386.

bbdiff joevt-allrez/AllRez10.4.xcodeproj/project.pbxproj joevt-allrez/AllRez10.5.xcodeproj/project.pbxproj
# SDK 10.4 -> 10.5.
# Xcode version increased from 3.1 (42) to 3.1 (45).
# Deployment Target 10.4.
# Added x86_64. Can add ppc64.
# 7 diffs (can't stop it from updating to (45)).

bbdiff joevt-allrez/AllRez10.5.xcodeproj/project.pbxproj joevt-allrez/AllRez10.6.xcodeproj/project.pbxproj
# SDK 10.5 -> 10.6. Can't add ppc64.
# 10.6 force ppc build for G3 instead of G4

bbdiff joevt-allrez/AllRez10.6.xcodeproj/project.pbxproj joevt-allrez/AllRez10.7.xcodeproj/project.pbxproj
# SDK 10.6 -> 10.7. SDKs beyond 10.6 don't build ppc. Xcode 4.6.3 builds to DerivedData while xcodebuild still builds to SYMROOT.

bbdiff joevt-allrez/AllRez10.7.xcodeproj/project.pbxproj joevt-allrez/AllRez10.8.xcodeproj/project.pbxproj
# SDK 10.7 -> 10.8.

bbdiff joevt-allrez/AllRez10.8.xcodeproj/project.pbxproj joevt-allrez/AllRez10.9.xcodeproj/project.pbxproj
# SDK 10.8 -> 10.9.

bbdiff joevt-allrez/AllRez10.9.xcodeproj/project.pbxproj joevt-allrez/AllRez10.10.xcodeproj/project.pbxproj
# SDK 10.9 -> 10.10.

bbdiff joevt-allrez/AllRez10.10.xcodeproj/project.pbxproj joevt-allrez/AllRez10.11.xcodeproj/project.pbxproj
# SDK 10.10 -> 10.11.

bbdiff joevt-allrez/AllRez10.11.xcodeproj/project.pbxproj joevt-allrez/AllRez10.12.xcodeproj/project.pbxproj
# SDK 10.11 -> 10.12.  Xcode 9.3 can use SYSTEM_HEADER_SEARCH_PATHS and SYSTEM_FRAMEWORK_SEARCH_PATHS
# 10.12 adds SkyLight.Framework and CoreDisplay.Framework (optional/weak-linked so it can still run on 10.9)
# 8 diffs

bbdiff joevt-allrez/AllRez10.12.xcodeproj/project.pbxproj joevt-allrez/AllRez10.13.xcodeproj/project.pbxproj
# SDK 10.12 -> 10.13. Xcode 10.0 has path lists changed from space delimited list to array (array support starts at Xcode 9.3 format)
# Arch must not include Arm for 10.12 SDK.
# Remove i386
# Adds iogdiagnose9, iogdiagnose10_15_7, iogdiagnose which were not compilable previously
# Deployment Target set to 10.9 to avoid C++ issues.
# C++ dialect needs to be C++11 or GNU++11 or later.
# 16 diffs

bbdiff joevt-allrez/AllRez10.13.xcodeproj/project.pbxproj joevt-allrez/AllRez10.14.xcodeproj/project.pbxproj
# SDK 10.13 -> 10.14.

bbdiff joevt-allrez/AllRez10.14.xcodeproj/project.pbxproj joevt-allrez/AllRez10.15.xcodeproj/project.pbxproj
# SDK 10.14 -> 10.15

bbdiff joevt-allrez/AllRez10.15.xcodeproj/project.pbxproj joevt-allrez/AllRez11.xcodeproj/project.pbxproj
# SDK 10.15 -> 11.3. # compiles for ARM

bbdiff joevt-allrez/AllRez11.xcodeproj/project.pbxproj joevt-allrez/AllRez12.xcodeproj/project.pbxproj
# SDK 11.3 -> 12.3.

bbdiff joevt-allrez/AllRez12.xcodeproj/project.pbxproj joevt-allrez/AllRez.xcodeproj/project.pbxproj
# SDK 12.3 -> macosx
 
  • Like
Reactions: Amethyst1
Code:
10.9.5 - GTX 680 doesn’t allow Dell P2415Q to go to 4K 60Hz even though it accepts the timing (4K only up to 30Hz though).
That’s interesting. I had no problem with 4K60 on a GTX 660 and a P2415Q. #1
 
Are you running 10.4.11 on the Clamshell? If so, can you download AllRez, pipe its output to a file (AllRez > allrez.txt in Terminal) and check if DownSamplePixels shows up in there? If so, higher-than-native scaled resolutions may be possible. I was wrong about that being generally impossible on PPC Macs. @B S Magnet: can you do this on your XGA Clamshell?

It’s a long mess, and I’ll leave it to you and others to decipher, but here’s the outcome of the latest @joevt build:

Code:
AllRez ppc on Mac OS X 10.4.11 (Darwin 8.11.0 ppc) built on May  9 2023 at 01:06:29 using SDK 10.6.0
Mac OS X 10.5 is required for CGDisplayRotation.
Mac OS X 10.5 is required for CGDisplayCopyColorSpace.
Mac OS X 10.5 is required for DisplayServicesGetBrightness.
Mac OS X 10.5 is required for DisplayServicesSetBrightness.
Mac OS X 10.6 is required for CGDisplayCopyDisplayMode.
Mac OS X 10.6 is required for CGDisplayCopyAllDisplayModes.
OS X 10.8 SDK is required for kCGDisplayShowDuplicateLowResolutionModes.
OS X 10.11 SDK is required for CGSEnableHDR.
OS X 10.11 SDK is required for CGSIsHDREnabled.
OS X 10.11 SDK is required for CGSIsHDRSupported.
macOS 11 SDK is required for SLSDisplaySetHDRModeEnabled.
macOS 11 SDK is required for SLSDisplayIsHDRModeEnabled.
macOS 11 SDK is required for SLSDisplaySupportsHDRMode.
macOS 12 SDK is required for SLSIsDisplayModeVRR.
macOS 12 SDK is required for SLSIsDisplayModeProMotion.
macOS 12 SDK is required for SLSGetDisplayModeMinRefreshRate.

1 Online Monitors found
Main display: 0x4131180
-----------------------------------------------------
DISPLAYS = {
    Monitor[0] = {
        modeAlias = 0;
        DisplayID = 0x4131180;
        PrimaryID = 0x4131180;
        MirrorsID = 0x0;
        vendorNumber = 0x610;
        modelNumber = 0x4c46;
        serialNumber = 0;
        unitNumber = 0;
        IOService = 0x1c07;
        Main = true;
        Active = false;
        Online = true;
        Asleep = true;
        Stereo = false;
        Builtin = true;
        Quartz Extreme = false;
        InMirrorSet = false;
        InHWMirrorSet = false;
        AlwaysInMirrorSet = false;
        Bounds (l,t,w,h) = { 0, 0, 1024, 768 };
        Size = 361.199 x 270.899 mm;
    }, // Monitor[0]
}; // DISPLAYS
-----------------------------------------------------
IOSERVICE = {
    Monitor[0]: /MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,RageM3p29s@10/.Display_Rage128 = {
        DisplayInfo = {
            DisplayVendorID = 1552 (0x0610) "APP";
            DisplayProductID = 19526 (0x4c46);
            DisplayProductName (preferred) = "iBook XGA Display"
            DisplayProductName = { "iBook XGA Display" = { en_US, de_DE, ja_JP } };
            IODisplayConnectFlags = ReportsTagging,TaggingInfoNonStandard,ReportsDDCConnection,BuiltInConnection,;
            DisplayViewAngleAffectsGamma = true;
            IODisplayHasBacklight = true;
            IOFBTransform = 0°,;
            graphic-options = ;
            DisplayInfo properties (unparsed) = {type = mutable, count = 5, capacity = 8, pairs = (
                2 : IODisplayLocation = IOService:/MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,RageM3p29s@10/.Display_Rage128/display0/AppleBacklightDisplay
                7 : DisplayBundle = CFBundle 0x50d210 </System/Library/Displays/Overrides> (not loaded)
                8 : SRDisplayProductName = Color LCD
                9 : dmdg = {length = 4, capacity = 4, bytes = 0x00000002}
                10 : IODisplayPrefsKey = IOService:/MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,RageM3p29s@10/.Display_Rage128/display0/AppleBacklightDisplay-756e6b6e-20000
            )}; // DisplayInfo properties (unparsed)
        }; // DisplayInfo

        IODisplayCopyParameters for IOFramebuffer = {
            kIODisplayBrightnessKey = 80 (0…128);
            IODisplayCopyParameters for IOFramebuffer properties (unparsed) = {type = mutable, count = 1, capacity = 4, pairs = (
                1 : commit = {type = fixed-mutable, count = 1, capacity = 1, pairs = (
                0 : reg = {value = +0, type = kCFNumberSInt32Type}
            )}
            )}; // IODisplayCopyParameters for IOFramebuffer properties (unparsed)
        }; // IODisplayCopyParameters for IOFramebuffer

        IODisplayCopyParameters for IODisplay = {
            kIODisplayBrightnessKey = 80 (0…128);
            IODisplayCopyParameters for IODisplay properties (unparsed) = {type = mutable, count = 1, capacity = 4, pairs = (
                1 : commit = {type = fixed-mutable, count = 1, capacity = 1, pairs = (
                0 : reg = {value = +0, type = kCFNumberSInt32Type}
            )}
            )}; // IODisplayCopyParameters for IODisplay properties (unparsed)
        }; // IODisplayCopyParameters for IODisplay

        IOFramebuffer 0x1c07 = {
            IOFBConfig = {
                IOFBModes = {
                    { DisplayModeInformation = { 640x480@60.000Hz maxdepth:2 flags:Valid,Safe,BuiltIn }; AppleTimingID = 150:VESA_640x480_60hz; DriverFlags = Valid,Safe,BuiltIn; ID = 0x0000.051; },
                    { DisplayModeInformation = { 800x600@75.000Hz maxdepth:2 flags:Valid,Safe,BuiltIn }; AppleTimingID = 186:VESA_800x600_75hz; DriverFlags = Valid,Safe,BuiltIn; ID = 0x0000.054; },
                    { DisplayModeInformation = { 1024x768@75.000Hz maxdepth:2 flags:Valid,Safe,Default,BuiltIn }; AppleTimingID = 204:VESA_1024x768_75hz; DriverFlags = Valid,Safe,Default,BuiltIn; ID = 0x0000.056; },
                }; // IOFBModes
                dims (IOFBOvrDimensions) = -1x-1 setFlags: clearFlags:;
            }; // IOFBConfig
            IOFBCursorInfo = {
                [0] = (32 bit) { version:1.0 size:64x64 depth:2Indexed maskBitDepth:0 colors:2 colorEncodings:a4c8034 flags:0 specialEncodings:(transparent:000002,inverting:000003) },
                [1] = (32 bit) { version:1.0 size:64x64 depth:32ARGB maskBitDepth:0 colors:0 colorEncodings:0 flags:2 specialEncodings:(transparent:000000) },
            }; // IOFBCursorInfo
            IOFBProbeOptions = UserRequestProbe, Transform:0°,;
            IOFBTransform = 0°,;
            IOFBI2CInterfaceIDs = (
                [0] = 0x166400000000000
            ); // IOFBI2CInterfaceIDs
            IOFBI2CInterfaceInfo = (
                [0] = { id:0x0 busType:I2C transactionTypes:(No,Simple,DDCci,) commFlags:() }
            ); // IOFBI2CInterfaceInfo
            IOFBWaitCursorFrames = 15;
            IOFBWaitCursorPeriod = 33333333 ns (30 Hz);
            IOFBCLUTDefer = true;
            IOFramebuffer properties (unparsed) = {type = fixed-mutable, count = 25, capacity = 33, pairs = (
                5 : IOClass = IONDRVFramebuffer
                7 : IOFBGammaWidth = {value = +8, type = kCFNumberSInt32Type}
                9 : IOAccelRevision = {value = +2, type = kCFNumberSInt32Type}
                10 : IOFBMemorySize = {value = +8388608, type = kCFNumberSInt32Type}
                13 : CFBundleIdentifier = com.apple.iokit.IONDRVSupport
                14 : IOProbeScore = {value = +20000, type = kCFNumberSInt32Type}
                15 : IOFramebufferOpenGLIndex = {value = +0, type = kCFNumberSInt32Type}
                17 : IOMatchCategory = IOFramebuffer
                18 : IONameMatched = display
                19 : IONameMatch = display
                20 : built-in = {length = 0, capacity = 0, bytes = 0x}
                21 : IOGeneralInterest = IOCommand is not serializable
                22 : IOFBGammaCount = {value = +256, type = kCFNumberSInt32Type}
                23 : IOFBConfig = {type = mutable, count = 1, capacity = 4, pairs = (
                1 : IODisplayConnectFlags = {value = +0, type = kCFNumberSInt32Type}
            )}
                25 : Power Management protected data = { theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000002, staticPower 65535, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 00008000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 65535, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 1, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }
                26 : IOFBGammaHeaderSize = {value = +12, type = kCFNumberSInt32Type}
                33 : Power Management private data = { this object = 01664000, interested driver = 01664000, driverDesire = 1, deviceDesire = 0, ourDesiredPowerState = 1, previousRequest = 2 }
                42 : driver,AAPL,MacOS,PowerPC = {length = 128, capacity = 128, bytes = 0x6d74656a000000000e4154592c526167 ... 7669646f01000000}
                43 : IOProviderClass = IOPCIDevice
                47 : IOAccelIndex = {value = +0, type = kCFNumberSInt32Type}
                49 : IODisplayParameters = IOFramebufferParameterHandler is not serializable
                53 : IONDRVFramebufferGeneration = {length = 8, capacity = 8, bytes = 0x0000000100000001}
                57 : IOCFPlugInTypes = {type = fixed-mutable, count = 1, capacity = 1, pairs = (
                2 : ACCF0000-0000-0000-0000-000a2789904e = ATIRage128GA.plugin
            )}
                58 : IOAccelTypes = IOService:/MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,RageM3p29s@10/ATIRage128
                65 : graphic-options = {value = +0, type = kCFNumberSInt32Type}
            )}; // IOFramebuffer properties (unparsed)
        }; // IOFramebuffer

        IODisplay 0x1e0b = {
            DisplayVendorID = 1970170734 (0x756e6b6e) 'unkn';
            DisplayProductID = 131072 (0x20000);
            IODisplayConnectFlags = ReportsTagging,TaggingInfoNonStandard,ReportsDDCConnection,BuiltInConnection,;
            IODisplayParameters = {
                kIODisplayBrightnessKey = 80 (0…128);
                IODisplayParameters properties (unparsed) = {type = mutable, count = 1, capacity = 4, pairs = (
                    1 : commit = {type = fixed-mutable, count = 1, capacity = 1, pairs = (
                    0 : reg = {value = +0, type = kCFNumberSInt32Type}
                )}
                )}; // IODisplayParameters properties (unparsed)
            }; // IODisplayParameters
            AppleDisplayType = Panel;
            AppleSense = ?0x1000 RSCZero,00/00/00:ESCZero21Inch;
            IODisplay properties (unparsed) = {type = fixed-mutable, count = 9, capacity = 15, pairs = (
                0 : Power Management protected data = { theNumberOfPowerStates = 4, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 00008000, outputPowerCharacter 00000000, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 3 = { capabilityFlags 0000c000, outputPowerCharacter 00000000, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 0, parentsCurrentPowerFlags = 00000000, maxCapability = 0 }
                3 : IODisplayPrefsKey = IOService:/MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,RageM3p29s@10/.Display_Rage128/display0/AppleBacklightDisplay-756e6b6e-20000
                8 : CFBundleIdentifier = com.apple.iokit.IOGraphicsFamily
                9 : IOClass = AppleBacklightDisplay
                13 : IOProbeScore = {value = +3000, type = kCFNumberSInt32Type}
                15 : IOMatchCategory = IODefaultMatchCategory
                16 : Power Management private data = { this object = 018b6800, interested driver = 018b6800, driverDesire = 0, deviceDesire = 0, ourDesiredPowerState = 0, previousRequest = 0 }
                20 : IODisplayGUID = {value = +436849163854938112, type = kCFNumberSInt64Type}
                21 : IOProviderClass = IODisplayConnect
            )}; // IODisplay properties (unparsed)
        }; // IODisplay

        IOFramebufferOpen = {
            kIOFBCursorMemory = { size:278764 version:3 location:49x2 };
        }; // IOFramebufferOpen

        I2C Interfaces = {
            [0] = {
                IOFBCopyI2CInterfaceForBus = { id:0x166400000000000 busType:I2C transactionTypes:(No,Simple,DDCci,) commFlags:() };
                EDID from E-DDC (old method) = (request  result:kIOReturnNoDevice)
                EDID from E-DDC              = (request  result:kIOReturnNoDevice)
                Timing Report = { (unexpected data: 518107b9bfffe07cbf) };
                VCP Capabilities = {
                    (unexpected data at offset 0: 5183f300004fe07cbfffddb0000000400050d19000000000bfffde30bfffe07c000000000000),
                }; // VCP Capabilities
            },
        }; // I2C Interfaces
    }, // Monitor[0]: /MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,RageM3p29s@10/.Display_Rage128

}; // IOSERVICE
-----------------------------------------------------
CURRENT MODE = {
    Monitor[0] = {
        current mode by CGSGetCurrentDisplayMode (private) = 8 = { 8: id:0x0000.000 1024x768@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:() flags:(Valid,Safe,Default,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84004b0000 unknown22:?0x40700000000 (?0 bytes) };
        current mode by CGDisplayCurrentMode (deprecated)      = { 8: id:ø 1024x768@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø };
        current mode info by CGDisplay* (deprecated)           = { 1024x768 32bpp 8bpc 3cpp rowbytes:4096 };
    }, // Monitor[0]
}; // CURRENT MODE
-----------------------------------------------------
ALL MODES = {
    Monitor[0] = {
        CGDisplayAvailableModes (deprecated) (9 modes) = {
            { 0: id:ø 640x480@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:768 IOFlags:(Valid,Safe,BuiltIn) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 1: id:ø 640x480@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:1280 IOFlags:(Valid,Safe,BuiltIn) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 2: id:ø 640x480@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:2560 IOFlags:(Valid,Safe,BuiltIn) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 3: id:ø 800x600@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:1024 IOFlags:(Valid,Safe,BuiltIn) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 4: id:ø 800x600@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:1792 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 5: id:ø 800x600@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:3328 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 6: id:ø 1024x768@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:1024 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 7: id:ø 1024x768@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:2048 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 8: id:ø 1024x768@75.000Hz 75Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
        }; // CGDisplayAvailableModes
        CGSGetDisplayModeDescriptionOfLength (9 modes) = {
            { 0: id:0x0000.000 640x480@0.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:768 IOFlags:() flags:(BuiltIn,¿6<<28) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x1 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 1: id:0x0000.000 640x480@0.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:1280 IOFlags:() flags:(BuiltIn,¿6<<28) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x42424200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 2: id:0x0000.000 640x480@0.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:2560 IOFlags:() flags:(BuiltIn,¿6<<28) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 3: id:0x0000.000 800x600@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:1024 IOFlags:() flags:(BuiltIn,¿6<<28) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x1 unknown21:?0x84004b0000 unknown22:?0x40300000000 (?0 bytes) },
            { 4: id:0x0000.000 800x600@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:1792 IOFlags:() flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x42424200000001 unknown21:?0x84004b0000 unknown22:?0x40300000000 (?0 bytes) },
            { 5: id:0x0000.000 800x600@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:3328 IOFlags:() flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84004b0000 unknown22:?0x40300000000 (?0 bytes) },
            { 6: id:0x0000.000 1024x768@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:1024 IOFlags:() flags:(Default,BuiltIn,¿6<<28) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x1 unknown21:?0x84004b0000 unknown22:?0x40700000000 (?0 bytes) },
            { 7: id:0x0000.000 1024x768@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:2048 IOFlags:() flags:(Valid,Safe,Default,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x42424200000001 unknown21:?0x84004b0000 unknown22:?0x40700000000 (?0 bytes) },
            { 8: id:0x0000.000 1024x768@0.000Hz 75Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:() flags:(Valid,Safe,Default,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84004b0000 unknown22:?0x40700000000 (?0 bytes) },
        }; // CGSGetDisplayModeDescriptionOfLength
    }, // Monitor[0]
}; // ALL MODES
 
  • Like
Reactions: Amethyst1
It’s a long mess, and I’ll leave it to you and others to decipher, but here’s the outcome of the latest @joevt build:

Code:
AllRez ppc on Mac OS X 10.4.11 (Darwin 8.11.0 ppc) built on May  9 2023 at 01:06:29 using SDK 10.6.0
Doesn't appear to have any scaling capability. No upscaling or downscaling. Did you try adding some scaled resolutions of either type (less than 1024x768 and greater than 1024x768)?

The display supports 3 timings so maybe it could support other timings (not scaled modes)? Or the display could maybe only support those 3 timings, just as my 30" Cinema Display only supports 1280x800 and 2560x1600.

The 3 timings are standard timings, so if it can't support detailed timings (with active and blanking pixels and lines specified), maybe it could support other standard timings.
 
  • Like
Reactions: Amethyst1
Doesn't appear to have any scaling capability. No upscaling or downscaling. Did you try adding some scaled resolutions of either type (less than 1024x768 and greater than 1024x768)?

You mean, to the system itself? No. When I set up the modified OF command to be kept in nvram at boot, the priority was just making sure the system believed it was not a PowerBook2,2. It mostly works, though boot sequence renders as 800x600, tiling vertically, until WindowServer initializes.

I also haven’t desired to mess with resolution after the XGA display and the OF command was in place, mostly out of fear (likely unfounded). Displays.prefPane does, however, show three available resolutions (1024x768, 800x600, 640x480) and one refresh rate of 75 Hertz (with 60 Hertz greyed out, ostensibly because Graphics/Displays in System Profiler suggests the LCD is a CRT).

That said, I can say that when I launched Civilization III over the weekend, to test whether it would run, the system unquestionably dropped to 800x600 or even 640x480 for the initial video sequence (in that weirdly blurry effect of running a low resolution on a higher-res monitor whose pixel conversion isn’t 1:1 or even 2:1) , before the screen blacking out momentarily, to return to 1024x768, to show the main menu. So I know the modified setup can handle changes to screen resolution, and when it dropped to whatever that intro move, the lower res rendering looks fine (i.e., doesn’t do that vertical tiling effect during boot-up).

Does this help with addressing what you were wondering/observing from that report? Or should I be trying some other tests/experiments, as well?

The display supports 3 timings so maybe it could support other timings (not scaled modes)? Or the display could maybe only support those 3 timings, just as my 30" Cinema Display only supports 1280x800 and 2560x1600.

I think @Amethyst1 knows how the pupils of my eyes glaze over into CRT static when discussion of screen timings get brought into the discussion. I have no idea to what any of the above translates for things like screen timings or pixel clocks.

The 3 timings are standard timings, so if it can't support detailed timings (with active and blanking pixels and lines specified), maybe it could support other standard timings.

I’ll just nod my head gamely here — pun not intended — and go, “Sure, I guess,” as this is realm not in my wheelhouse at all.
 
You mean, to the system itself? No. When I set up the modified OF command to be kept in nvram at boot, the priority was just making sure the system believed it was not a PowerBook2,2. It mostly works, though boot sequence renders as 800x600, tiling vertically, until WindowServer initializes.

I also haven’t desired to mess with resolution after the XGA display and the OF command was in place, mostly out of fear (likely unfounded). Displays.prefPane does, however, show three available resolutions (1024x768, 800x600, 640x480) and one refresh rate of 75 Hertz (with 60 Hertz greyed out, ostensibly because Graphics/Displays in System Profiler suggests the LCD is a CRT).

That said, I can say that when I launched Civilization III over the weekend, to test whether it would run, the system unquestionably dropped to 800x600 or even 640x480 for the initial video sequence (in that weirdly blurry effect of running a low resolution on a higher-res monitor whose pixel conversion isn’t 1:1 or even 2:1) , before the screen blacking out momentarily, to return to 1024x768, to show the main menu. So I know the modified setup can handle changes to screen resolution, and when it dropped to whatever that intro move, the lower res rendering looks fine (i.e., doesn’t do that vertical tiling effect during boot-up).

Does this help with addressing what you were wondering/observing from that report? Or should I be trying some other tests/experiments, as well?

I think @Amethyst1 knows how the pupils of my eyes glaze over into CRT static when discussion of screen timings get brought into the discussion. I have no idea to what any of the above translates for things like screen timings or pixel clocks.
SwitchResX 3.8.7 can be used to add custom timings and scaled modes and standard modes to a display.

Custom timings let you adjust blanking pixels and pixel clock. vertical refresh rate is pixel clock divided by total pixels. horizontal refresh rate is pixel clock divided by total horizontal pixels. Active pixels are the visible pixels. Blanking pixels are those between the end of one line or frame and the next.

A scaled mode is just a scaling that macOS applies to timings that have the base resolution. In your case the base resolution is 1024x768. The scaled mode can be an upscale mode which is < 1024x768 scaled up to 1024x768. It can be a downscale mode which is > 1024x768 scaled down to 1024x768.

A standard mode is a mode from the list of standard modes (usually modes that were used with CRTs).

These custom timings and scaled modes and standard modes are stored in the Display overrides in one of these locations depending on the macOS version and version of SwitchResX.
/System/Library/Displays/Contents/Resources/Overrides
/Library/Displays/Contents/Resources/Overrides
/System/Library/Displays/Overrides

A display override file is a plist file which you can edit with PlistEditor.app or Xcode, depending on the version of macOS.

Apple displays have vendor ID 610 so Apple display overrides will be in the DisplayVendorID-610 folder. Your display will be the file with the latest modification date. Later versions of SwitchResX for later versions of macOS will use a name for the override file that includes the year and month of manufacture of the display instead of the product ID.

Custom timings are stored as an item in the dspc array unless the pixel clock > 655.53 MHz, in which case the custom timing needs to be defined in an EDID override as a detailed timing in a DisplayID extension block.

Scaled modes are stored as an item in the scale-resolutions array.

Standard modes are stored as an item in the tovr array.

The display override file can override other stuff such as display name.
 
  • Like
Reactions: Amethyst1
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.