SCUMM/V0/Maniac Mansion Apple II

From ScummVM :: Wiki
< SCUMM‎ | V0
Revision as of 22:02, 12 April 2011 by Sanguinehearts (talk | contribs) (Add back '$' after Thierry's Math fixes :))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.