I was able to dump my G3's ROM and my G4 Mac mini's ROM, and I've confirmed that my decode of the G3 firmware update worked correctly.
I found two instances of an IMA ADPCM step table in the Blue and White G3's ROM. (It's also in the Mac mini's ROM twice in similar locations...) I'm now pretty sure the startup chime is IMA compressed, and the fact that the table is in ROM suggests to me that the decompression is most likely done in software.
I'm not sure why there are *two* step tables. One of them seems to be in a recovery section of the ROM, so it might just be different code for playing a startup sound in recovery mode.
The step table is probably a useful clue for where to look in ROM for the decoding algorithm. Chances are the code is nearby, or I can at least use the step table's known location to find code that references it. There are many implementations of IMA compression, but they all use the same basic algorithm -- it's the little details of the implementation like packet size and the format of the first few bytes per packet that I have to iron out. Hopefully some PowerPC disassembly will help with that. }
I found two instances of an IMA ADPCM step table in the Blue and White G3's ROM. (It's also in the Mac mini's ROM twice in similar locations...) I'm now pretty sure the startup chime is IMA compressed, and the fact that the table is in ROM suggests to me that the decompression is most likely done in software.
I'm not sure why there are *two* step tables. One of them seems to be in a recovery section of the ROM, so it might just be different code for playing a startup sound in recovery mode.
The step table is probably a useful clue for where to look in ROM for the decoding algorithm. Chances are the code is nearby, or I can at least use the step table's known location to find code that references it. There are many implementations of IMA compression, but they all use the same basic algorithm -- it's the little details of the implementation like packet size and the format of the first few bytes per packet that I have to iron out. Hopefully some PowerPC disassembly will help with that. }