Introduction
Maniac Mansion for the Apple II produced sound effects via its internal speaker and the only music played is Razor/Sid's piano track.
It appears that not all sound effects were used in the game, this is noticeable when running the game through an emulator, of particular note is the lack of introduction audio.
However these un-used sound effects still appear in the resources.
A speculative guess would be that perhaps they were disabled because the AppleII engine was unable to parse the sound resources synchronously, during playback the engine would pause and poll for keyboard input to stop the audio.
The Sound Resources
A sound resource appears to have the following format:
It is worth noting that byte number 5 seems to be always 0x01, but there is a check in the code for values not equal to 0x01. The final byte is always 0xFF
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0 | 1 Byte | Resource Size |
1 | 2 Bytes | Two 00 Bytes |
3 | (Resource Size - 4) Bytes | Data |
Resource Size | 1 Byte | One FF Terminator Byte |
Examples
The sounds are referenced through Sound ID's, although not all sound effects are played in the original. A small list of some Sound ID's and their resource contents is below:
ID | DESCRIPTION | DATA |
---|---|---|
8 | Door Open | 15 00 00 D4 03 01 05 1E 64 14 C8 FE 64 1E C8 82 78 28 96 82 FF |
9 | Door Close | 17 00 00 77 03 01 06 64 C8 FA E6 1E D2 28 96 FE 5A 64 3C C8 1E 64 FF |
39 | Doorbell | 0C 00 00 D2 02 01 C8 82 FE FE 64 FF |
54 | Click Character Selection | 09 00 00 14 02 01 64 8C FF |
The Internal Speaker
The speaker only had the functionality to emit a click as a square wave (when memory location $C030 is referenced).
The duration and frequency of the sound could be managed by the use of loops controlling the references to $C030.