Return to Effects Index

a [Marathon] map making tool


Ambience 1.0

Download 47K
February 3, 1999


Ambience is an effect for use with Chisel 2.0 or later that lets you make use of up to 172 ambient sounds and 149 random sounds in Marathon Infinity. It was written for Chris Veres as part of the Trojan ][ project.

Sound References, IDs, Numbers and Banks

To explain Ambience we'll need some terminology. There are lots of different ID numbers for sounds in Marathon. There are the sounds in the sound file, numbered in order. There are the ambient and random sound instances that you create in Forge and paint over the map to make polygons emit sound. There are the two lists of ambient and random sounds that Forge lets you pick from to attach to the sound instances you paint on the map. Finally there are the sound Banks that Ambience itself refers to.

I'm going to try to use:

  • sound ID to refer to a particular sound in the sounds file.
  • sound instanceID to refer to an ambient or random sound you have made in Forge.
  • sound referenceID to mean the sound that a particular sound instance produces.
  • sound Bank & Number to mean Ambience's own way of refering to sounds.

How Ambience works

Marathon uses an internal table to convert an ambient sound reference to an actual sound number in the sounds file. Every sound instance you make in Forge has a referenceID as part of its data - you select the referenceID from the menu in Forge. This referenceID is used as an index into the internal tables. What the engine doesn't do is check that this referenceID is within the actual bounds of the tables, so it is possible to point the engine to data stored 'elsewhere' - in Ambience's case this elsewhere is some unused space in the application's data originally used to store information about the various platform types.

Extending the number of ambient sounds in Marathon is an involved, although not too complex process, but Ambience alone can't do it for you. You'll first need to create a custom application using Bo Lindbergh's FUX. Ambience extends the number of sounds available by using some 'dead' space in the application data currently occupied by some old pre-rolled platform data. Each platform record contains enough unused space to store 16 ambient sound references. There are 9 platforms, so that make 144 extra ambient sounds available to you. Ambience refers to these unused storage areas as 'banks' numbered from 0-8, each of which contains sounds numbered from 0-15. It uses a special bank '-1' to refer to the exisiting 28 ambient sounds, numbered from 0-27. Instructions for editing the app with FUX are contained in a separate readme. Basically, you stuff the sound IDs that you want to use as Ambient and Random sounds into the unused fields of the platform data.

The best thing is that you only need to edit the application with FUX once (unless of course you move sounds around in the sounds file). Simply set up each bank of extra sounds and then use ambience to make your maps use these sounds (since you can only set the original 0-27 bank with Forge). The downside is that the technique has to work differently on PPC and 68K maps. Opening a 68K Ambience extended map on a PPC machine will crash Marathon (or at least produce some very odd sound effects), and vice-versa. If you use Ambience on your scenario, you will HAVE to distribute 68K and PPC specific versions, and MAKE CLEAR to players the difference between the two.

If I come up with a better (ie cross platform) method for extending the ambient sounds, a new version of ambience will follow asap. (I've tried two other methods already, neither are as convenient, nor do they allow the enormous number of new soudns to be used that the current one does so successfully).

Random Sounds can also be extended in exactly the same way - you have 144 extra sounds that can be referenced as random or ambient sounds, it is up to you. You can use the same bank & number as both a random and ambient sound should you so wish (although this probably won't be very useful). The only difference is that there are only 5 normal random sound slots in marathon, so the special '-1' bank is limited to indexes 0-4 instead of 0-27.

Version History

Ambience 1.0
Chris Veres OK'd the distribution of this effect, so here is v0.4 rebundled as v1.0 with some proper instructions and a single bug fix. Apply a script now tells you what is going on correctly.

Ambience 0.4
Put the ability to edit random sounds back into the effect.
Rearranged the interface to be a bit more readable.
Added the #RANDOM script command.

Ambience 0.3
Fixed the problems with v0.2 and added scripting as well as the ability to use a map as a template.

Ambience 0.2
v0.1 failed to work - wrong concept. New idea to extend the number of sounds used that requires seperate PPC and 68K apps.

Ambience 0.1
First version. Handy, simple test version to see if this is going to work well. Scriptable version will follow if this is a good thing.

Chisel World | Documentation | Download Chisel 2.1.5 | Download extra Effects | Links