Discussion:
How are CHRP bootinfo icons formatted?
(too old to reply)
John Paul Adrian Glaubitz
2023-06-02 07:30:01 UTC
Permalink
Hi Ben!
Hello,
Every Linux bootinfo file I've seen for PowerMacs has had either the GNU
In case you're coming up with a nice boot logo, feel free to open a pull
request in the grub2 package to get the changes merged [1]. Although, I
have no clue how exactly the logo is installed but you should be able to
find out by reading the source code.

Adrian
[1] https://salsa.debian.org/grub-team/grub
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Linux User #330250
2023-06-03 08:30:01 UTC
Permalink
I have no idea what the second one is supposed to be and how I can
create it.
One thing I tested was just making the first and second bitmaps the
exact same. When I did this, it produced what looked like a
color-inverted version of the image. So, the next thing I tested was
creating an inverted version of the bitmap, and using that as the second
one. This, however, produced the same result. I then tried making the
inverted bitmap the first one and the regular one second, and I got an
image that looked relatively close to the original. I also tested making
them both the inverted bitmap, and this produced the same result. It
seems to be that no matter what the second bitmap is changed to, even if
you just make it all zeroes, the resulting image still stays the same.
So, if you take a 16x16 image, invert its colors, and use the attached
script to generate the three bitmaps (first and second being the actual
image and third just being 0xFF where it's not transparent and 0x00
where it is), you can create an icon for a CHRP script. While this is a
good enough method for something simple like the Debian logo, anything
with more complex colors doesn't look right at all. This and the fact
that changing the second bitmap doesn't seem to do anything confirms for
me that this is most definitely not the correct way to do things, but
the result of this method is certainly interesting and useful.
...
...

Ben, thank you so much!

I was experimenting with those CHRP icons a while back but never could
figure out how they work, specifically the color palette was a complete
riddle to me. I searched the internet until finally I gave up...

So, again, thank you! I'm very happy you found the key to the
hexadecimal colors!

Any of you have a GitLab account? I think we should collect the OS
BADGES of various Linux distribution icons, not only Debian. Especially
those that still have PowerPC support would benefit from such an icon...
(Gentoo...)

If not, I'll sign up for a GitLab repo to collect those icons. And some
info about the CHRP boot script in general...

Thanks! Great work!
Linux User #330250
Gabriel Paubert
2023-06-04 06:00:02 UTC
Permalink
I don't think I really did. All I did was guess that the colors are
stored in some sort of 3,3,2 8 bit color format since that's what
standard CHRP does. My method for converting RGB pixels into 3,3,2 was
based on a Stack Overflow answer that I'm not so sure was accurate.
I tried something else; while I'm not quite there yet, I think I'm getting
closer. My last palette based on a Stack Overflow answer incremented the red
and green by 32, giving a range from 0x00 to 0xE0, and the blue by 64,
giving a range from 0x00 to 0xC0.
I created a new palette incrementing red and green by 36, giving a range
from 0x00 to 0xFC, and blue by 85, which gives the complete range of color
from 0x00 to 0xFF. This is much better coverage than before, and the new
palette as well as a new script that uses it is attached.
That's better, but even the 8 level palette should go from 0 to 0xff:
the best mapping for 3 bit color channels is to multiply by 255/7 and
then round to the nearest channel.

So the range should be more like 0, 36, 73, 109, 146, 182, 219, 255. The
extremes have to be mapped to the extremes.
The reason why I think the new palette is closer than the old one is that I
no longer need to invert the Debian logo's colors to make it look right. The
red is also a lot darker than it was before, going from almost pink to a
sort of burgundy. It's still not quite right, though, as more complex images
still look completely wrong.
With 3/3/2 it's impossible to produce photo realistic images. Even 16
bit, which is RGB 565 if memory serves (not used in well over a decade),
gives quite a few artefacts.

Cheers,
Gabriel
--
Ben Westover
from PIL import Image
from more_itertools import chunked
img = Image.open('image.png')
pixels = []
pixels.append(img.getpixel((j, i)))
bmp1_values = []
red = format(round(pixel[0] / 36), 'b').zfill(3)
green = format(round(pixel[0] / 36), 'b').zfill(3)
blue = format(round(pixel[0] / 85), 'b').zfill(2)
bmp1_values.append(format(int(red + green + blue, 2), 'X').zfill(2))
bmp3_values = []
bmp3_values.append("00")
bmp3_values.append("FF")
print(''.join(chunk))
print("")
print(''.join(chunk))
print("")
print(''.join(chunk))
.Untitled { color: rgb(0, 0, 0) };
.Untitled { color: rgb(0, 0, 85) };
.Untitled { color: rgb(0, 0, 170) };
.Untitled { color: rgb(0, 0, 255) };
.Untitled { color: rgb(0, 36, 0) };
.Untitled { color: rgb(0, 36, 85) };
.Untitled { color: rgb(0, 36, 170) };
.Untitled { color: rgb(0, 36, 255) };
.Untitled { color: rgb(0, 72, 0) };
.Untitled { color: rgb(0, 72, 85) };
.Untitled { color: rgb(0, 72, 170) };
.Untitled { color: rgb(0, 72, 255) };
.Untitled { color: rgb(0, 108, 0) };
.Untitled { color: rgb(0, 108, 85) };
.Untitled { color: rgb(0, 108, 170) };
.Untitled { color: rgb(0, 108, 255) };
.Untitled { color: rgb(0, 144, 0) };
.Untitled { color: rgb(0, 144, 85) };
.Untitled { color: rgb(0, 144, 170) };
.Untitled { color: rgb(0, 144, 255) };
.Untitled { color: rgb(0, 180, 0) };
.Untitled { color: rgb(0, 180, 85) };
.Untitled { color: rgb(0, 180, 170) };
.Untitled { color: rgb(0, 180, 255) };
.Untitled { color: rgb(0, 216, 0) };
.Untitled { color: rgb(0, 216, 85) };
.Untitled { color: rgb(0, 216, 170) };
.Untitled { color: rgb(0, 216, 255) };
.Untitled { color: rgb(0, 252, 0) };
.Untitled { color: rgb(0, 252, 85) };
.Untitled { color: rgb(0, 252, 170) };
.Untitled { color: rgb(0, 252, 255) };
.Untitled { color: rgb(36, 0, 0) };
.Untitled { color: rgb(36, 0, 85) };
.Untitled { color: rgb(36, 0, 170) };
.Untitled { color: rgb(36, 0, 255) };
.Untitled { color: rgb(36, 36, 0) };
.Untitled { color: rgb(36, 36, 85) };
.Untitled { color: rgb(36, 36, 170) };
.Untitled { color: rgb(36, 36, 255) };
.Untitled { color: rgb(36, 72, 0) };
.Untitled { color: rgb(36, 72, 85) };
.Untitled { color: rgb(36, 72, 170) };
.Untitled { color: rgb(36, 72, 255) };
.Untitled { color: rgb(36, 108, 0) };
.Untitled { color: rgb(36, 108, 85) };
.Untitled { color: rgb(36, 108, 170) };
.Untitled { color: rgb(36, 108, 255) };
.Untitled { color: rgb(36, 144, 0) };
.Untitled { color: rgb(36, 144, 85) };
.Untitled { color: rgb(36, 144, 170) };
.Untitled { color: rgb(36, 144, 255) };
.Untitled { color: rgb(36, 180, 0) };
.Untitled { color: rgb(36, 180, 85) };
.Untitled { color: rgb(36, 180, 170) };
.Untitled { color: rgb(36, 180, 255) };
.Untitled { color: rgb(36, 216, 0) };
.Untitled { color: rgb(36, 216, 85) };
.Untitled { color: rgb(36, 216, 170) };
.Untitled { color: rgb(36, 216, 255) };
.Untitled { color: rgb(36, 252, 0) };
.Untitled { color: rgb(36, 252, 85) };
.Untitled { color: rgb(36, 252, 170) };
.Untitled { color: rgb(36, 252, 255) };
.Untitled { color: rgb(72, 0, 0) };
.Untitled { color: rgb(72, 0, 85) };
.Untitled { color: rgb(72, 0, 170) };
.Untitled { color: rgb(72, 0, 255) };
.Untitled { color: rgb(72, 36, 0) };
.Untitled { color: rgb(72, 36, 85) };
.Untitled { color: rgb(72, 36, 170) };
.Untitled { color: rgb(72, 36, 255) };
.Untitled { color: rgb(72, 72, 0) };
.Untitled { color: rgb(72, 72, 85) };
.Untitled { color: rgb(72, 72, 170) };
.Untitled { color: rgb(72, 72, 255) };
.Untitled { color: rgb(72, 108, 0) };
.Untitled { color: rgb(72, 108, 85) };
.Untitled { color: rgb(72, 108, 170) };
.Untitled { color: rgb(72, 108, 255) };
.Untitled { color: rgb(72, 144, 0) };
.Untitled { color: rgb(72, 144, 85) };
.Untitled { color: rgb(72, 144, 170) };
.Untitled { color: rgb(72, 144, 255) };
.Untitled { color: rgb(72, 180, 0) };
.Untitled { color: rgb(72, 180, 85) };
.Untitled { color: rgb(72, 180, 170) };
.Untitled { color: rgb(72, 180, 255) };
.Untitled { color: rgb(72, 216, 0) };
.Untitled { color: rgb(72, 216, 85) };
.Untitled { color: rgb(72, 216, 170) };
.Untitled { color: rgb(72, 216, 255) };
.Untitled { color: rgb(72, 252, 0) };
.Untitled { color: rgb(72, 252, 85) };
.Untitled { color: rgb(72, 252, 170) };
.Untitled { color: rgb(72, 252, 255) };
.Untitled { color: rgb(108, 0, 0) };
.Untitled { color: rgb(108, 0, 85) };
.Untitled { color: rgb(108, 0, 170) };
.Untitled { color: rgb(108, 0, 255) };
.Untitled { color: rgb(108, 36, 0) };
.Untitled { color: rgb(108, 36, 85) };
.Untitled { color: rgb(108, 36, 170) };
.Untitled { color: rgb(108, 36, 255) };
.Untitled { color: rgb(108, 72, 0) };
.Untitled { color: rgb(108, 72, 85) };
.Untitled { color: rgb(108, 72, 170) };
.Untitled { color: rgb(108, 72, 255) };
.Untitled { color: rgb(108, 108, 0) };
.Untitled { color: rgb(108, 108, 85) };
.Untitled { color: rgb(108, 108, 170) };
.Untitled { color: rgb(108, 108, 255) };
.Untitled { color: rgb(108, 144, 0) };
.Untitled { color: rgb(108, 144, 85) };
.Untitled { color: rgb(108, 144, 170) };
.Untitled { color: rgb(108, 144, 255) };
.Untitled { color: rgb(108, 180, 0) };
.Untitled { color: rgb(108, 180, 85) };
.Untitled { color: rgb(108, 180, 170) };
.Untitled { color: rgb(108, 180, 255) };
.Untitled { color: rgb(108, 216, 0) };
.Untitled { color: rgb(108, 216, 85) };
.Untitled { color: rgb(108, 216, 170) };
.Untitled { color: rgb(108, 216, 255) };
.Untitled { color: rgb(108, 252, 0) };
.Untitled { color: rgb(108, 252, 85) };
.Untitled { color: rgb(108, 252, 170) };
.Untitled { color: rgb(108, 252, 255) };
.Untitled { color: rgb(144, 0, 0) };
.Untitled { color: rgb(144, 0, 85) };
.Untitled { color: rgb(144, 0, 170) };
.Untitled { color: rgb(144, 0, 255) };
.Untitled { color: rgb(144, 36, 0) };
.Untitled { color: rgb(144, 36, 85) };
.Untitled { color: rgb(144, 36, 170) };
.Untitled { color: rgb(144, 36, 255) };
.Untitled { color: rgb(144, 72, 0) };
.Untitled { color: rgb(144, 72, 85) };
.Untitled { color: rgb(144, 72, 170) };
.Untitled { color: rgb(144, 72, 255) };
.Untitled { color: rgb(144, 108, 0) };
.Untitled { color: rgb(144, 108, 85) };
.Untitled { color: rgb(144, 108, 170) };
.Untitled { color: rgb(144, 108, 255) };
.Untitled { color: rgb(144, 144, 0) };
.Untitled { color: rgb(144, 144, 85) };
.Untitled { color: rgb(144, 144, 170) };
.Untitled { color: rgb(144, 144, 255) };
.Untitled { color: rgb(144, 180, 0) };
.Untitled { color: rgb(144, 180, 85) };
.Untitled { color: rgb(144, 180, 170) };
.Untitled { color: rgb(144, 180, 255) };
.Untitled { color: rgb(144, 216, 0) };
.Untitled { color: rgb(144, 216, 85) };
.Untitled { color: rgb(144, 216, 170) };
.Untitled { color: rgb(144, 216, 255) };
.Untitled { color: rgb(144, 252, 0) };
.Untitled { color: rgb(144, 252, 85) };
.Untitled { color: rgb(144, 252, 170) };
.Untitled { color: rgb(144, 252, 255) };
.Untitled { color: rgb(180, 0, 0) };
.Untitled { color: rgb(180, 0, 85) };
.Untitled { color: rgb(180, 0, 170) };
.Untitled { color: rgb(180, 0, 255) };
.Untitled { color: rgb(180, 36, 0) };
.Untitled { color: rgb(180, 36, 85) };
.Untitled { color: rgb(180, 36, 170) };
.Untitled { color: rgb(180, 36, 255) };
.Untitled { color: rgb(180, 72, 0) };
.Untitled { color: rgb(180, 72, 85) };
.Untitled { color: rgb(180, 72, 170) };
.Untitled { color: rgb(180, 72, 255) };
.Untitled { color: rgb(180, 108, 0) };
.Untitled { color: rgb(180, 108, 85) };
.Untitled { color: rgb(180, 108, 170) };
.Untitled { color: rgb(180, 108, 255) };
.Untitled { color: rgb(180, 144, 0) };
.Untitled { color: rgb(180, 144, 85) };
.Untitled { color: rgb(180, 144, 170) };
.Untitled { color: rgb(180, 144, 255) };
.Untitled { color: rgb(180, 180, 0) };
.Untitled { color: rgb(180, 180, 85) };
.Untitled { color: rgb(180, 180, 170) };
.Untitled { color: rgb(180, 180, 255) };
.Untitled { color: rgb(180, 216, 0) };
.Untitled { color: rgb(180, 216, 85) };
.Untitled { color: rgb(180, 216, 170) };
.Untitled { color: rgb(180, 216, 255) };
.Untitled { color: rgb(180, 252, 0) };
.Untitled { color: rgb(180, 252, 85) };
.Untitled { color: rgb(180, 252, 170) };
.Untitled { color: rgb(180, 252, 255) };
.Untitled { color: rgb(216, 0, 0) };
.Untitled { color: rgb(216, 0, 85) };
.Untitled { color: rgb(216, 0, 170) };
.Untitled { color: rgb(216, 0, 255) };
.Untitled { color: rgb(216, 36, 0) };
.Untitled { color: rgb(216, 36, 85) };
.Untitled { color: rgb(216, 36, 170) };
.Untitled { color: rgb(216, 36, 255) };
.Untitled { color: rgb(216, 72, 0) };
.Untitled { color: rgb(216, 72, 85) };
.Untitled { color: rgb(216, 72, 170) };
.Untitled { color: rgb(216, 72, 255) };
.Untitled { color: rgb(216, 108, 0) };
.Untitled { color: rgb(216, 108, 85) };
.Untitled { color: rgb(216, 108, 170) };
.Untitled { color: rgb(216, 108, 255) };
.Untitled { color: rgb(216, 144, 0) };
.Untitled { color: rgb(216, 144, 85) };
.Untitled { color: rgb(216, 144, 170) };
.Untitled { color: rgb(216, 144, 255) };
.Untitled { color: rgb(216, 180, 0) };
.Untitled { color: rgb(216, 180, 85) };
.Untitled { color: rgb(216, 180, 170) };
.Untitled { color: rgb(216, 180, 255) };
.Untitled { color: rgb(216, 216, 0) };
.Untitled { color: rgb(216, 216, 85) };
.Untitled { color: rgb(216, 216, 170) };
.Untitled { color: rgb(216, 216, 255) };
.Untitled { color: rgb(216, 252, 0) };
.Untitled { color: rgb(216, 252, 85) };
.Untitled { color: rgb(216, 252, 170) };
.Untitled { color: rgb(216, 252, 255) };
.Untitled { color: rgb(252, 0, 0) };
.Untitled { color: rgb(252, 0, 85) };
.Untitled { color: rgb(252, 0, 170) };
.Untitled { color: rgb(252, 0, 255) };
.Untitled { color: rgb(252, 36, 0) };
.Untitled { color: rgb(252, 36, 85) };
.Untitled { color: rgb(252, 36, 170) };
.Untitled { color: rgb(252, 36, 255) };
.Untitled { color: rgb(252, 72, 0) };
.Untitled { color: rgb(252, 72, 85) };
.Untitled { color: rgb(252, 72, 170) };
.Untitled { color: rgb(252, 72, 255) };
.Untitled { color: rgb(252, 108, 0) };
.Untitled { color: rgb(252, 108, 85) };
.Untitled { color: rgb(252, 108, 170) };
.Untitled { color: rgb(252, 108, 255) };
.Untitled { color: rgb(252, 144, 0) };
.Untitled { color: rgb(252, 144, 85) };
.Untitled { color: rgb(252, 144, 170) };
.Untitled { color: rgb(252, 144, 255) };
.Untitled { color: rgb(252, 180, 0) };
.Untitled { color: rgb(252, 180, 85) };
.Untitled { color: rgb(252, 180, 170) };
.Untitled { color: rgb(252, 180, 255) };
.Untitled { color: rgb(252, 216, 0) };
.Untitled { color: rgb(252, 216, 85) };
.Untitled { color: rgb(252, 216, 170) };
.Untitled { color: rgb(252, 216, 255) };
.Untitled { color: rgb(252, 252, 0) };
.Untitled { color: rgb(252, 252, 85) };
.Untitled { color: rgb(252, 252, 170) };
.Untitled { color: rgb(252, 252, 255) };
Ben Westover
2023-06-04 06:10:01 UTC
Permalink
Hello,
Post by Gabriel Paubert
With 3/3/2 it's impossible to produce photo realistic images. Even 16
bit, which is RGB 565 if memory serves (not used in well over a decade),
gives quite a few artefacts.
I'm not expecting a 16x16 image of 8 bit color depth to be anything
close to photorealistic. I'm saying that basic things like Tux (only a
few colors) look horrible compared to the one that yaboot supplies.
--
Ben Westover
Linux User #330250
2023-06-04 07:00:01 UTC
Permalink
Another thing I can't figure out is the second bitmap. While it's
possible to just make it the same as the first one, it definitely must
have some function. While the GNU logo doesn't make use of it, the Tux
Well, you're working on it and I thank you for it. I didn't find the
time or the muse to undust my Macs and start them at this time, so...

The thing with the first and second icon: I now remember that I had an
idea what it could mean, but didn't get around testing it: Could it be
active/inactive, i.e. not selected for boot (first icon) and selected
boot option (second icon)?

Also, if the yaboot people made the Tux and did make use of the second
icon, they must know what it means. Maybe we can get hold of who made
the Tux for the CHRP script...

As for the color palette: In 2018/19 my next step would have been to
look for some old software for the classic Mac OS that supports the Sun
image format (now abandonware), because I read somewhere that it was
this Sun image format that was used for those CHRP boot script icons,
which does make sense when we know that Sun originally made Open Firmware.

Anyway, for me /close/ is better than /not at all/, so I'm thankful!
Linux User #330250
Ben Westover
2023-06-04 07:10:01 UTC
Permalink
Post by Linux User #330250
The thing with the first and second icon: I now remember that I had an
idea what it could mean, but didn't get around testing it: Could it be
active/inactive, i.e. not selected for boot (first icon) and selected
boot option (second icon)?
Interesting idea, I'll have to test that.
Post by Linux User #330250
Also, if the yaboot people made the Tux and did make use of the second
icon, they must know what it means. Maybe we can get hold of who made
the Tux for the CHRP script...
Funny you say that, I just sent the person who designed yaboot's CHRP
icon an email about 30 minutes ago. It happened 23 years ago, so it's
unlikely that a) the email with a university domain is still active and
b) the person remembers exactly how to do it or the software/format used
is still around. I also sent one to the person (gmail address) who did
the GNU logo for GRUB's CHRP icon in 2013, which is more likely to work.
--
Ben Westover
Linux User #330250
2023-06-04 07:20:01 UTC
Permalink
Post by Ben Westover
Funny you say that, I just sent the person who designed yaboot's CHRP
icon an email about 30 minutes ago. It happened 23 years ago, so it's
unlikely that a) the email with a university domain is still active and
b) the person remembers exactly how to do it or the software/format used
is still around. I also sent one to the person (gmail address) who did
the GNU logo for GRUB's CHRP icon in 2013, which is more likely to work.
Let's hope for the best.

Linux User #330250
Linux User #330250
2023-06-04 09:20:01 UTC
Permalink
Post by Ben Westover
Post by Linux User #330250
The thing with the first and second icon: I now remember that I had an
idea what it could mean, but didn't get around testing it: Could it be
active/inactive, i.e. not selected for boot (first icon) and selected
boot option (second icon)?
Interesting idea, I'll have to test that.
You were right! The mystery of the second bitmap has been solved.
Attached are two videos. In the first video, I made the second bitmap
the same as the first one, and in the second video, I made the second
bitmap white. While I am holding down the mouse button to select the
menu item, the second icon displays, and as soon as I release the mouse
button and the item is selected, it goes back to showing the first icon.
Thanks for testing! I had no idea it would only be visible while being
clicked. But now I think I saw that when I was playing with old Mac OS X
versions like Rhapsody and the Developer Previews of Mac OS X 10.0 or
so... And that's probably where /my idea/ (haha) originated...
We have now solved all of the mysteries except for the most important
one, which is, which hex values correspond to exactly which colors?
Yes, but then again: it's better to have some icon than no icon. So I'm
very happy if the Debian Swirl symbol is included with the unofficial
PowerPC port of Debian, because this makes it much more intuitive, so it
does make sense to include this "feature".

So, again, thanks Ben and thanks Adrian for your continued work. It took
some time, but now we're closer to a better PowerMac experience than ever!

The correct color pallet is the next step.
And the full support for HFS and blessing as well. But there's more to
do than just that, because GRUB cannot start Mac OS/Mac OS X, and so an
additional stage before GRUB will be needed, and if that is a CHRP
script with a boot selection like the one from yaboot for selecting Mac
OS, things get way more complicated in one very particular way:
remembering the previous boot selection.

See also:
https://lists.debian.org/debian-powerpc/2016/02/msg00051.html

Alternatively GRUB would have to be enhanced to support selecting OF
boot options (OF chainloading)?

Anyway, thanks for testing the function of the second icon. Well done!
Linux User #330250

Linux User #330250
2023-06-03 09:00:01 UTC
Permalink
One thing I tested was just making the first and second bitmaps the
exact same. When I did this, it produced what looked like a
color-inverted version of the image. So, the next thing I tested was
creating an inverted version of the bitmap, and using that as the second
one. This, however, produced the same result. I then tried making the
inverted bitmap the first one and the regular one second, and I got an
image that looked relatively close to the original. I also tested making
them both the inverted bitmap, and this produced the same result. It
seems to be that no matter what the second bitmap is changed to, even if
you just make it all zeroes, the resulting image still stays the same.
I also always wondered why there are two. The third one definitely is
the image outline mask, so that it can have a transparent part where
appropriate.

I looked at a lot of Apple CHRP scripts with icons, the early ones like
Rapsody and Mac OS X Server 1.2 and Mac OS X 10.0 Developer Release and
Public Beta, but all I ever found where

a) 16x16 icons, which are displayed in the lower right corner next to
the media icon in OS Picker. Mostly used for (external) installation media.
b) 64x64 icons for installed OSes.
c) first two icons always were identical
d) third icon is the "outline mask" for transparency to work
e) between the three icons may be one empty line (optional)

The previous efforts for Apple-specific OF CHRP boot I found:
1) https://lists.debian.org/debian-powerpc/2001/02/msg00061.html
2) https://lists.debian.org/debian-powerpc/2016/02/msg00051.html
and mine:
3) https://lists.debian.org/debian-powerpc/2019/06/msg00051.html

BTW, if it's "OS Picker" or "Boot Picker" or "Startup Manager" or "boot
selector" depends on who wrote the article:
OP Picker: https://flylib.com/books/en/3.126.1.46/1/
Boot Picker:
https://forums.macrumors.com/threads/the-open-firmware-wiki.2225024/
Startup Manager: https://library.morph.zone/Open_Firmware
boot selector: https://mac-classic.com/articles/open-firmware-basics/

Generally, one might call it the Open Firmware boot selection utility on
Apple systems...

Linux User #330250
Linux User #330250
2023-06-04 07:10:01 UTC
Permalink
Post by Linux User #330250
b) 64x64 icons for installed OSes.
^^
52x52 of course is what I meant.


I also remember testing bigger icons and they would extend beyond the
buttons (with the button over the icon). The icon will always start at
the lower right corner, no matter the size.

I also remember that something like 52x53 or 53x52 is actually the
maximum size for the icon, at least so it was on my Power Mac G5 Late-2005.
Post by Linux User #330250
Linux User #330250
Yes. That's me.
Loading...