The PPC ROMs use Color QuickDraw to draw the color icons, which are stored as 'cicn' resources in the ROM's resource map. I believe adopting this approach would work for anything that has Color QuickDraw support (such as the IIsi ROM already being used), regardless of what the current monitor settings support (Color QuickDraw figures it all out for you). The PPC ROMs use the following cicn resource ids:
-20020 for happy mac
-20021 for "empty" floppy icon
-20022 for '?'
-20023 for 'X'
Backporting the code to do this to the IIsi ROM doesn't seem
too bad. When adding new code to the ROM I've been reusing the space from the RAM test functions, which have been disabled, then bsr.l to it, using a hand calculated offset.
The more interesting aspect is modifying the ROM's resource map to accommodate the new 'cicn' color icon resources. The IIsi ROM's resource map header lives after the resources, and before the declrom. So, the resource map can't grow without displacing the Slot 0 declrom.
Basically the ROM looks like this:
header information
code
last resource entry (which happens to be the .netBOOT driver)
last-1 resource entry
...
first resource entry
resource map header
Slot 0 declaration ROM w/video drivers, etc.
The most scalable approach would be to move the declaration ROM out, figure out all the things that refer to it (hopefully just located via looking at the ROM length field in the ROM header), update those, move the resource map header out, update the offset to that, then add the icons, then add the color icon drawing routines, and make the system try calling those first, and if they fail, fall back to the current B&W icons. Growing the resource map will be necessary eventually anyway for adding other things in the future (drivers, cursors, fonts, whatever).
Or just put stuff in the framebuffer and hope it works.