Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
music.c
Go to the documentation of this file.
1/*
2 * Music and sound-effect control.
3 *
4 * Retail object 0x452A00-0x45381F (link order; see docs/ORDER.md).
5 */
6/* This unit owns storage declared in globals.h as statics. */
7#define MUSIC_C
8#include "game.h"
9
10static int g_nActiveMusicStreamMask; /* 0x0049be9c */
11static signed char g_acMusicTrackStreamFlags[72]; /* 0x0049beb8 */
12
13/* Function start: 0x452A00 */
15{
17}
18
19/* Function start: 0x452A10 */
20void SetMusBreakpt(int first, int second)
21{
22}
23
24/* Function start: 0x452A1B */
25void SetMusicOn(short enabled)
26{
27}
28
29/* Function start: 0x452A26 */
30void StopMusic(short enabled)
31{
34}
35
36/* Function start: 0x452A40 */
37short StartMusic(void *music)
38{
39 SoundDebugPrintf("startMusic %p\n", music);
40 return 0;
41}
42
43/* Function start: 0x452A64 */
44short StartInteractiveMusic(int track)
45{
46 SoundDebugPrintf("startIntMusic %d\n", track);
47 ProcessMusicScriptCommand(track, 1, 0);
48 return track;
49}
50
51/* Function start: 0x452A99 */
52/* Started a sound effect on the DOS music driver; the Win32 port plays
53 * effects through PlaySfxWaveFileByNumber and always reports no handle. */
54int StartSoundEffectHook(const unsigned char *definition, int effectHandle,
55 int volume, int pan, int sample, int looping)
56{
57 return 0;
58}
59
60/* Function start: 0x452AAB */
62{
63 SoundDebugPrintf("FLUSH EFFECT\n");
65}
66
67/* Function start: 0x452AC8 */
69{
70 SoundDebugPrintf("FLUSH EFFECTS\n");
72}
73
74/* Function start: 0x452AE5 */
75void FadeMusic(short duration)
76{
77}
78
79/* Function start: 0x452AF0 */
81{
82 /* The body was compiled out; its one local still takes a slot. */
83 int state;
84
85 return;
86}
87
88/* Function start: 0x452B03 */
89unsigned short ProcessMusicScriptCommand(int track, int command, short enabled)
90{
91 int streamFlags;
92 int streamerCommand;
93
94 if (track == -1)
95 return 0;
96
97 streamFlags = g_acMusicTrackStreamFlags[track];
98 SoundDebugPrintf("queue_next_music %d %x\n", track, streamFlags);
99 if (track >= 0x40)
100 streamerCommand = track - 0x2c;
101 else
102 streamerCommand = track;
103
104 if (command == 4) {
105 SoundDebugPrintf("queue_stop\n");
106 StopMusic(enabled);
108 return;
109 }
110
111 if ((streamFlags & g_nActiveMusicStreamMask) == 0) {
112 if ((streamFlags & 1) != 0) {
113 Streamer_open("gameflow.str");
115 } else if ((streamFlags & 2) != 0) {
116 Streamer_open("spaceflt.str");
118 } else if ((streamFlags & 0x10) != 0) {
119 Streamer_open("gametwo.str");
121 } else {
122 SoundDebugPrintf("**** unknown stream for track %d\n", track);
123 StopMusic(0);
124 return;
125 }
127 } else {
128 g_nCurrentMusicTrack = track;
129 }
130
131 if (g_nActiveMusicStreamMask == 2) {
132 if ((streamFlags & 4) != 0) {
133 SetStreamerIntensity(streamerCommand);
134 } else if ((streamFlags & 8) != 0) {
135 SetStreamerTrigger(streamerCommand);
136 } else {
138 "unknown int/trig stream for track %d\n", track);
139 exit_squadron("unknown track %d", track);
140 }
141 } else {
143 ForceStreamerTrigger(streamerCommand);
144 }
145
146 if (g_nCannedSceneMode == 0)
147 RecordMusicCommandHook(track, command, enabled);
148 return 1;
149}
150
151/* Function start: 0x452CF4 */
152void spacetrack(int track, int mode, int enabled)
153{
154 if (g_nMusicDriverMode != 0 &&
156 ProcessMusicScriptCommand(track, mode, enabled);
157}
158
159/* Function start: 0x452D32 */
161{
162 if (g_nMusicDriverMode != 0 &&
164 StopMusic(0);
165}
166
167/* Function start: 0x452D66 */
168unsigned int IsMusicTrackComplete(void)
169{
170 if (g_nMusicDriverMode != 0 &&
171 g_nMusicDriverMode != 3 &&
173 return 1;
174 return 0;
175}
176
177/* Function start: 0x452DB0 */
179{
180 if (g_nMusicDriverMode != 0 &&
181 g_nMusicDriverMode != 3) {
182 if (g_nWaitForMusicEnabled == 0) {
183 StopMusic(0);
184 return;
185 }
186 SetMusBreakpt(0, 0);
187 while (g_nMusicTrackComplete == 0) {
188 if (g_bSceneEscapeRequested != 0 ||
189 WaitForInputKey() != 0) {
190 StopMusic(0);
191 return;
192 }
193 }
194 }
195}
196
197/* Function start: 0x452E46 */
198void new_space_music_changes(short attacker, short victim)
199{
200 if (g_nInFlightMusicActive != 0) {
201 if (g_asShipSide[victim] == SIDE_KILRATHI) {
202 if (report_kilrathi_rout(1) == 0) {
203 spacetrack(10, 1, 0);
204 } else if (attacker == 0) {
205 if (g_acShipPortrait[victim] != -1 ||
206 RandomInRange(0, 3) == 0)
207 spacetrack(9, 3, 0);
208 else
209 spacetrack(6, 3, 0);
210 }
211 } else {
212 if (g_nYourWingman == victim) {
213 spacetrack(8, 3, 0);
214 return;
215 }
216 if (g_asShipSide[victim] == SIDE_IMPERIAL) {
217 if ((g_asShipMissionType[0] ==
221 g_asShipMissionIndex[victim] ==
223 spacetrack(11, 3, 0);
224 return;
225 }
226 spacetrack(7, 3, 0);
227 }
228 }
229 }
230}
231
232/* Function start: 0x452F90 */
233int changetrack(void)
234{
235 int track;
236
237 switch (g_asShipMissionType[0]) {
239 track = 17;
240 break;
242 track = 18;
243 break;
246 track = 16;
247 break;
248 default:
249 track = 15;
250 break;
251 }
254 if (triumph(0) != 0) {
256 track = 14;
257 else
258 track = 13;
259 } else
260 track = 12;
261 }
262 return track;
263}
264
265/* Function start: 0x453085 */
266void gametrack(void)
267{
268 short level;
269 int track;
270
271 track = -1;
272 if (g_nInFlightMusicActive == 0)
273 return;
274 if (g_nCombatMusicActive != 0) {
275 if ((g_nSpaceFrame & 0xf) == 0 ||
279 if (FindMissileTargetingObject(0) != 0) {
280 track = 3;
281 } else if (detect_enemy_tail(0) != -1) {
282 track = 1;
283 } else if (is_ship_tailing_player_target(0) != 0) {
284 track = 2;
285 } else {
286 level = (short)calculate_damage_level();
287 if (level >= 2)
288 track = 4;
289 else if (level == 1)
290 track = 5;
291 else
292 track = 0;
293 }
296 if (report_kilrathi_rout(1) == 0)
298 }
299 } else if ((g_nSpaceFrame & 0xf) == 0 ||
301 if (g_bJumpSequenceActive != 0)
302 track = 0x2f;
303 else
304 track = changetrack();
305 if (report_kilrathi_rout(2) != 0)
307 }
308 spacetrack(track, 1, 0);
309}
310
311void ScaleFixedVector(FixedVector *vector, int scale, FixedVector *result);
312void AddFixedVectors(const FixedVector *left, const FixedVector *right,
313 FixedVector *sum);
315 FixedVector *delta);
316
317/* Function start: 0x453240 */
318void servicetrack(void)
319{
320 short volume;
321 short ship;
322 FixedVector lead;
323 FixedVector predicted;
324
325 if (g_nMusicDriverMode == 0)
326 return;
327 gametrack();
329 for (ship = 0; ship < SPACE_OBJECT_COUNT;
330 ship++) {
331 if (g_nPassingShipSoundObject == ship &&
334 switch (g_aeObjectClass[ship]) {
338 if (g_asObjectScreenX[ship] != -32767 &&
339 (unsigned short)g_asObjectDistance[ship] < 0x384) {
340 if (g_nPassingShipSoundObject == -1) {
341 ScaleFixedVector(&g_aShipVelocity[ship], 0x1400,
342 &lead);
343 AddFixedVectors(&g_aShipPosition[ship], &lead,
344 &predicted);
347 &predicted, &lead);
350 &g_aShipPosition[ship], &predicted);
351 if (dot_product(&lead, &predicted) < 0xdd) {
352 if (ship == 0 && g_bJumpSequenceActive != 0)
353 continue;
356 volume = 12;
358 (unsigned char)volume;
359 *(short *)&g_abSoundEffectDefinitions[0xc] = 2;
360 g_abSoundEffectDefinitions[0xe] = 0x70;
361 if (g_nSpaceFrame >
364 g_nSpaceFrame + 24;
365 PlaySfxWaveFileByNumber(2, ship, 0);
366 }
367 }
368 } else if (g_nPassingShipSoundObject == ship) {
372 }
373 }
374 break;
375 }
376 }
377 }
378}
379
380/* Function start: 0x453496 */
387
388/* Function start: 0x4534BA */
394
395/* Function start: 0x4534D3 */
396/* Disabled by the Win32 port: the flight sound reset follows the early
397 * return. */
399{
400 return;
403}
404
405/* Function start: 0x4534F1 */
406/* Nothing in the shipped executable calls this; the Win32 port left the
407 * counterpart of EnableMusicForScene empty. */
409{
410}
411
412/* Function start: 0x4534FC */
414{
416 SetMusicOn(1);
417}
418
419/* Function start: 0x45351A */
420/* Logs an effect the Win32 sound table does not know. The DOS driver
421 * playback follows the early return. */
422int LogUnknownSoundEffect(const unsigned char *definition,
423 short sourceObject, short pan, short volume,
424 short looping, short priority)
425{
426 SoundDebugPrintf("Playing SFX <UNKNOWN>\n");
427 return 0;
429 return StartSoundEffectHook(definition, sourceObject, pan, volume,
430 looping, priority);
431 } else {
432 return 0;
433 }
434}
435
436/* Function start: 0x45357E */
437/* Stops every effect. The DOS single-effect stop follows the early
438 * return. */
439void FlushSoundEffectsAndLog(void *effect, short flags)
440{
442 SoundDebugPrintf("flushFX\n");
443 return;
444 if (effect != 0)
445 ((void (__cdecl *)(void *, int))FlushSoundEffect)(effect, flags);
446}
447
448/* Function start: 0x4535BB */
449/* Logs the effect number. The DOS positional playback (distance volume,
450 * stereo pan and per-object handles) follows the early return. */
451void sound_effect(signed char soundNumber, short sourceObject, short looping)
452{
453 short volume;
454 short effectHandle = 0;
455 int length;
456 FixedVector offset;
457 int side;
458 short balance;
459 short sampleIndex;
460
461 SoundDebugPrintf("Playing SFX #%d\n", soundNumber);
462 return;
463 if (g_nMusicDriverMode == 0 ||
465 return;
467 &g_aShipPosition[sourceObject], &offset);
468 length = Vector_magnitude(&offset);
469 volume = MaxShort(0, (short)(0x7f - ((length / 500) >> 8)));
470 if (volume < 10)
471 return;
472 if (g_nCannedSceneMode == 0)
473 RecordCannedSceneBriefingCharacter(soundNumber, sourceObject,
474 looping);
475 if (soundNumber == 8) {
476 sampleIndex = (short)((g_10_nAlternateSampleToggle & 1) + 0x40);
478 } else {
479 sampleIndex = sourceObject;
480 }
481 NormalizeFixedVector(&offset);
482 side = dot_product(&offset, &g_aShipRightVector[EYE_OBJECT]);
483 balance = (short)(0x40 - ((side << 6) >> 8));
485 &g_abSoundEffectDefinitions[(soundNumber - 1) * 8],
486 effectHandle, volume, balance, sampleIndex, looping);
487}
488
489/* Function start: 0x45373B */
490void PlaySfxWaveFileByNumber(int soundNumber, int sourceObject, int looping)
491{
492 FixedVector delta;
493 int magnitude;
494 int distance;
495 int channel;
496
497 if (sourceObject != -1) {
499 &g_aShipPosition[sourceObject],
500 &delta);
501 magnitude = Vector_magnitude(&delta);
502 distance = magnitude;
503 if (distance > 32000)
504 distance = 32000;
505 g_aiSoundEffectSourceActiveValue[sourceObject] = 1;
506 } else {
507 distance = 72000;
508 }
509 if (distance < 10)
510 return;
511 soundNumber--;
513 "Playing SFX #%d on obj: %d with volume of %d\n",
514 soundNumber, sourceObject, distance);
515 sprintf(g_szSfxWavePath, "sfx%02i.wav", soundNumber);
516 playWAVE(g_szSfxWavePath, looping, distance);
517}
518
519/* This unit's initialized data, after its functions so that the tables do
520 * not move the functions' symbol keys. */
521short g_nMusicTrackComplete = 1; /* 0x0049be88 */
522short g_nMusicDriverMode = 1; /* 0x0049be8c */
523short g_nCutsceneMusicVolume = 0; /* 0x0049be90 */
524short g_nTitleMusicSequenceStage = 0; /* 0x0049be94 */
525int g_nCurrentMusicTrack = -1; /* 0x0049be98 */
526static int g_nActiveMusicStreamMask = 0; /* 0x0049be9c */
527struct LimitedMusicBuffer g_aLimitedMusicBuffers[2] = {
528 { 0, -1 },
529 { 0, -1 }
530}; /* 0x0049bea0 */
531short g_nWaitForMusicEnabled = 1; /* 0x0049beac */
532short g_bFlightSoundEffectsEnabled = 1; /* 0x0049beb0 */
533static signed char g_acMusicTrackStreamFlags[72] = {
534 6, 6, 6, 6, 6, 6, 10, 10, 10, 10, 10, 10,
535 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0,
536 0, 0, 0, 6, 16, 16, 0, 6, 6, 16, 16, 0,
537 16, 16, 16, 16, 16, 6, 10, 1, 1, 1, 1, 7,
538 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 1, 16,
539 16, 1, 1, 16, 16, 16, 0, 0, 0, 0, 0, 0
540}; /* 0x0049beb8 */
541short g_nInitialFlightMusicPending = 1; /* 0x0049bf00 */
542short g_nCombatMusicActive = 0; /* 0x0049bf04 */
543short g_nInFlightMusicActive = 0; /* 0x0049bf08 */
544int g_nUnusedMusicWord1 = 0; /* 0x0049bf0c */
545short g_nPassingShipSoundObject = -1; /* 0x0049bf10 */
546short g_nPassingShipSoundCountdown = 0; /* 0x0049bf14 */
547unsigned char g_abSoundEffectDefinitions[0x1b8] = {
548 0, 104, 48, 64, 120, 0, 0, 0,
549 2, 55, 48, 96, 2, 0, 0, 0,
550 0, 39, 48, 64, 60, 0, 0, 0,
551 0, 100, 48, 80, 30, 0, 0, 0,
552 0, 7, 48, 127, 6, 0, 0, 0,
553 0, 16, 48, 64, 30, 0, 0, 0,
554 0, 9, 48, 64, 10, 0, 0, 0,
555 0, 10, 48, 127, 15, 0, 0, 0,
556 0, 11, 48, 64, 6, 0, 0, 0,
557 0, 12, 48, 64, 10, 0, 0, 0,
558 4, 13, 48, 64, 60, 0, 0, 0,
559 4, 14, 64, 64, 60, 0, 0, 0,
560 0, 15, 48, 64, 6, 0, 0, 0,
561 8, 19, 48, 64, 60, 0, 0, 0,
562 4, 20, 64, 64, 60, 0, 0, 0,
563 0, 21, 48, 64, 60, 0, 0, 0,
564 4, 22, 48, 64, 60, 0, 0, 0,
565 2, 23, 119, 64, 5, 0, 52, 0,
566 0, 24, 48, 96, 60, 0, 0, 0,
567 2, 41, 24, 24, 2, 0, 100, 0,
568 0, 42, 64, 64, 40, 0, 0, 0,
569 0, 43, 64, 64, 40, 0, 0, 0,
570 0, 61, 48, 64, 7, 0, 0, 0,
571 0, 46, 48, 64, 7, 0, 0, 0,
572 0, 47, 48, 64, 7, 0, 0, 0,
573 0, 60, 48, 64, 20, 0, 0, 0,
574 0, 64, 48, 127, 40, 0, 0, 0,
575 0, 125, 48, 108, 40, 0, 0, 0,
576 0, 54, 48, 96, 30, 0, 0, 0,
577 0, 96, 64, 127, 40, 0, 0, 0,
578 0, 106, 64, 86, 60, 0, 0, 0,
579 8, 107, 48, 64, 40, 0, 0, 0,
580 0, 110, 48, 96, 30, 0, 0, 0,
581 0, 109, 48, 64, 80, 0, 0, 0,
582 0, 111, 48, 64, 30, 0, 0, 0,
583 0, 112, 48, 64, 60, 0, 0, 0,
584 0, 128, 48, 64, 60, 0, 0, 0,
585 4, 32, 64, 64, 60, 0, 0, 0,
586 0, 126, 40, 96, 5, 0, 0, 0,
587 0, 40, 48, 96, 180, 0, 0, 0,
588 0, 44, 64, 96, 90, 0, 0, 0,
589 0, 116, 48, 127, 20, 0, 0, 0,
590 0, 117, 48, 127, 20, 0, 0, 0,
591 0, 31, 64, 96, 200, 0, 0, 0,
592 4, 84, 12, 127, 90, 0, 0, 0,
593 0, 81, 64, 96, 20, 0, 0, 0,
594 0, 18, 64, 84, 30, 0, 0, 0,
595 4, 88, 12, 127, 90, 0, 0, 0,
596 0, 68, 36, 96, 90, 0, 0, 0,
597 0, 35, 36, 96, 60, 0, 0, 0,
598 0, 35, 36, 96, 60, 0, 0, 0,
599 0, 82, 60, 96, 60, 0, 0, 0,
600 4, 77, 48, 96, 200, 0, 0, 0,
601 4, 83, 48, 127, 90, 0, 0, 0,
602 0, 92, 48, 96, 120
603}; /* 0x0049bf18 */
604
605/* Linker commons defined here. LINK lays a unit's commons out by the
606 * identifiers' hash keys, so these spellings follow the original addresses. */
608MusicResource g_aTuneResources[66]; /* 0x005d13e0 */
609int g_nPassingShipSndCooldown; /* 0x005d156c */
610short g_10_nAlternateSampleToggle; /* 0x005d1570 */
612int g_2_nUnusedMusicWord2; /* 0x005d1698 */ /* never referenced */
void(__cdecl *g_pIxFree)(void *)
void RecordMusicCommandHook(int track, int command, short enabled)
Definition taperec.c:255
void ForceStreamerTrigger(int trigger)
Definition stream.cpp:127
void ComputeVectorDelta(FixedVector *from, FixedVector *to, FixedVector *delta)
Definition geom.c:229
void SceneLeaveHook()
Definition music.c:80
void wait_for_end_of_music(void)
Definition music.c:178
void FadeMusic(short duration)
Definition music.c:75
short MaxShort(short a, short b)
Definition disk.c:36
void sound_effect(signed char soundNumber, short sourceObject, short looping)
Definition music.c:451
void DisableMusicForSceneHook(void)
Definition music.c:408
int StartSoundEffectHook(const unsigned char *definition, int effectHandle, int volume, int pan, int sample, int looping)
Definition music.c:54
void ResetSoundStateForFlight(void)
Definition music.c:398
int dot_product(const FixedVector *left, const FixedVector *right)
Definition geom.c:316
long Vector_magnitude(const FixedVector *vector)
Definition eventmgr.c:157
void StopMusicStream(void)
Definition music.c:14
void ResetSoundStateForScene(void)
Definition music.c:389
void AddFixedVectors(const FixedVector *left, const FixedVector *right, FixedVector *sum)
Definition geom.c:211
void SetStreamerIntensity(int intensity)
Definition stream.cpp:105
short StartMusic(void *music)
Definition music.c:37
void EnableMusicForScene(void)
Definition music.c:413
unsigned int IsMusicTrackComplete(void)
Definition music.c:168
void playWAVE(const char *filename, int looping, int volume)
Definition sound.c:217
void ScaleFixedVector(FixedVector *vector, int scale, FixedVector *result)
Definition geom.c:237
void StopMusic(short enabled)
Definition music.c:30
void StopMusicUnlessSuppressed(void)
Definition music.c:160
void SetMusicOn(short enabled)
Definition music.c:25
void SoundDebugPrintf(const char *fmt,...)
Definition mono.c:64
short WaitForInputKey(void)
Definition disk.c:319
void spacetrack(int track, int mode, int enabled)
Definition music.c:152
void SetMusBreakpt(int first, int second)
Definition music.c:20
void Streamer_open(const char *streamName)
Definition stream.cpp:65
short StartInteractiveMusic(int track)
Definition music.c:44
void stop_all_sounds(void)
Definition sound.c:331
void gametrack(void)
Definition music.c:266
int LogUnknownSoundEffect(const unsigned char *definition, short sourceObject, short pan, short volume, short looping, short priority)
Definition music.c:422
void ResetSoundState(void)
Definition music.c:381
short triumph(short obj)
Definition logic.c:983
short is_ship_tailing_player_target(short obj)
Definition logic.c:347
void new_space_music_changes(short attacker, short victim)
Definition music.c:198
short calculate_damage_level(void)
Definition main.c:1890
short report_kilrathi_rout(int mode)
Definition logic.c:214
short detect_enemy_tail(short obj)
Definition logic.c:330
unsigned short ProcessMusicScriptCommand(int track, int command, short enabled)
Definition music.c:89
short FindMissileTargetingObject(short obj)
Definition logic.c:357
void FlushSoundEffectsAndLog(void *effect, short flags)
Definition music.c:439
void PlaySfxWaveFileByNumber(int soundNumber, int sourceObject, int looping)
Definition music.c:490
void SetStreamerTrigger(int trigger)
Definition stream.cpp:116
int changetrack(void)
Definition music.c:233
void FlushSoundEffect(void)
Definition music.c:61
void exit_squadron(const char *msg,...)
Definition message.c:44
void RecordCannedSceneBriefingCharacter(signed char character, signed char pose, short animationFrame)
Definition taperec.c:227
unsigned short RandomInRange(unsigned short lo, unsigned short hi)
Definition eventmgr.c:31
void servicetrack(void)
Definition music.c:318
void FlushSoundEffects(void)
Definition music.c:68
short NormalizeFixedVector(FixedVector *vector)
Definition geom.c:347
void Streamer_stop(void)
Definition stream.cpp:93
Shared Win32 declarations, types and library interfaces.
@ MISSION_TYPE_PATROL
Definition game_data.h:122
@ MISSION_TYPE_ESCORT
Definition game_data.h:123
@ MISSION_TYPE_RENDEZVOUS
Definition game_data.h:130
@ MISSION_TYPE_DEFEND
Definition game_data.h:125
@ MISSION_TYPE_STRIKE
Definition game_data.h:124
#define EYE_OBJECT
Definition game_data.h:1580
@ SIDE_IMPERIAL
Definition game_data.h:175
@ SIDE_KILRATHI
Definition game_data.h:176
@ OBJECTIVE_HOME_BASE
Definition game_data.h:140
#define SPACE_OBJECT_COUNT
Definition game_data.h:1578
@ OBJECT_CLASS_SHIP
Definition game_data.h:49
@ OBJECT_CLASS_CAPITAL_SHIP
Definition game_data.h:50
@ OBJECT_CLASS_BASE
Definition game_data.h:51
short g_asShipMissionParameter[12]
Definition viewrect.c:164
int g_nCurrentMusicTrack
Definition music.c:525
short g_asObjectDistance[SPACE_OBJECT_COUNT]
Definition viewrect.c:104
short g_nYourWingman
Definition viewrect.c:75
signed char g_bSceneEscapeRequested
Definition eventmgr.c:2420
short g_nPassingShipSoundCountdown
Definition music.c:546
int g_nPassingShipSndCooldown
Definition music.c:609
short g_aeObjectClass[SPACE_OBJECT_COUNT]
Definition viewrect.c:125
signed char g_cCurrentObjective
Definition viewrect.c:57
int g_aiSoundEffectSourceActiveValue[SPACE_OBJECT_COUNT]
Definition music.c:607
short g_nCombatMusicActive
Definition music.c:542
short g_asObjectScreenX[SPACE_OBJECT_COUNT]
Definition viewrect.c:95
short g_nMusicTrackComplete
Definition music.c:521
signed char g_acShipPortrait[12]
Definition viewrect.c:159
short g_nInitialFlightMusicPending
Definition music.c:541
FixedVector g_aShipRightVector[SPACE_OBJECT_COUNT]
Definition viewrect.c:105
short g_bJumpSequenceActive
Definition jump.c:10
short g_nSpaceFrame
Definition viewrect.c:32
int g_nMissionMusicTrackOverride
Definition viewrect.c:194
short g_nMusicDriverMode
Definition music.c:522
unsigned char g_abSoundEffectDefinitions[0x1b8]
Definition music.c:547
short g_nInFlightMusicActive
Definition music.c:543
short g_nPassingShipSoundObject
Definition music.c:545
FixedVector g_aShipPosition[SPACE_OBJECT_COUNT]
Definition viewrect.c:108
MUSIC_STATIC char g_szSfxWavePath[0x40]
Definition globals.h:949
short g_nCutsceneMusicVolume
Definition music.c:523
FixedVector g_aShipVelocity[SPACE_OBJECT_COUNT]
Definition viewrect.c:109
short g_asShipMissionIndex[12]
Definition viewrect.c:153
int g_3_bAfterburnerSfxActive
Definition ship.c:3064
int g_4_nSevereDmgWarningSfxHandle
Definition cockpt.c:3816
int g_14_anObjectSoundEffects[SPACE_OBJECT_COUNT]
Definition music.c:611
MusicResource g_aTuneResources[66]
Definition music.c:608
MissionObjective g_aMissionObjectives[MISSION_OBJECTIVE_COUNT]
Definition viewrect.c:69
short g_bFlightSoundEffectsEnabled
Definition music.c:532
short g_nWaitForMusicEnabled
Definition music.c:531
short g_asShipMissionType[12]
Definition viewrect.c:163
short g_asShipSide[12]
Definition viewrect.c:139
short g_10_nAlternateSampleToggle
Definition music.c:610
short g_nCannedSceneMode
Definition taperec.c:14
short g_nTitleMusicSequenceStage
Definition music.c:524
struct LimitedMusicBuffer g_aLimitedMusicBuffers[2]
Definition music.c:527
int g_2_nUnusedMusicWord2
Definition music.c:612
static signed char g_acMusicTrackStreamFlags[72]
Definition music.c:11
static int g_nActiveMusicStreamMask
Definition music.c:10
int g_nUnusedMusicWord1
Definition music.c:544