mirror of
https://github.com/OpenDriver2/REDRIVER2.git
synced 2024-11-24 19:32:50 +01:00
1336 lines
30 KiB
C++
1336 lines
30 KiB
C++
|
#include "THISDUST.H"
|
||
|
#include "MC_SND.H"
|
||
|
|
||
|
|
||
|
char missionstarts[42] = {
|
||
|
0xFF, 0xFF, 0, 2, 4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||
|
6, 8, 0xFF, 9, 0xFF, 0xC, 0xD, 0xFF, 0xE, 0xFF, 0x13,
|
||
|
0x14, 0xFF, 0x15, 0x18, 0x1A, 0xFF, 0x1C, 0xFF, 0x1E,
|
||
|
0x21, 0xFF, 0x25, 0x27, 0xFF, 0x29, 0xFF, 0xFF, 0xFF,
|
||
|
0x2E, 0x30, 0x31
|
||
|
};
|
||
|
|
||
|
io id_map[49] =
|
||
|
{
|
||
|
{0, 0},
|
||
|
{0, 1},
|
||
|
{2, 0},
|
||
|
{3, 1},
|
||
|
{4, 0},
|
||
|
{5, 1},
|
||
|
{4, 0},
|
||
|
{5, 1},
|
||
|
{11, 0},
|
||
|
{12, 0},
|
||
|
{12, 1},
|
||
|
{11, 2},
|
||
|
{14, 0},
|
||
|
{14, 0},
|
||
|
{15, 0},
|
||
|
{16, 1},
|
||
|
{16, 2},
|
||
|
{18, 3},
|
||
|
{18, 4},
|
||
|
{11, 0},
|
||
|
{11, 0},
|
||
|
{20, 0},
|
||
|
{12, 1},
|
||
|
{13, 2},
|
||
|
{21, 0},
|
||
|
{31, 1},
|
||
|
{31, 0},
|
||
|
{11, 1},
|
||
|
{23, 0},
|
||
|
{24, 1},
|
||
|
{26, 0},
|
||
|
{27, 1},
|
||
|
{28, 2},
|
||
|
{34, 0},
|
||
|
{29, 1},
|
||
|
{29, 2},
|
||
|
{20, 3},
|
||
|
{31, 0},
|
||
|
{11, 1},
|
||
|
{31, 0},
|
||
|
{33, 1},
|
||
|
{34, 0},
|
||
|
{36, 1},
|
||
|
{29, 2},
|
||
|
{29, 3},
|
||
|
{20, 4},
|
||
|
{37, 0},
|
||
|
{38, 1},
|
||
|
{39, 0},
|
||
|
};
|
||
|
|
||
|
xa_request xa_data[26] = {
|
||
|
{0x10, 0, 0, 1, 0},
|
||
|
{0x19, 0, 1, 2, 0},
|
||
|
{0x1E, 0, 2, 3, 0},
|
||
|
{0x26, 0, 3, 4, 0},
|
||
|
{0x10, 0, 4, 9, 0},
|
||
|
{0x82, 0, 5, 0xA, 0},
|
||
|
{0x5A, 0, 6, 0xD, 0},
|
||
|
{0x10, 0, 7, 0xE, 0},
|
||
|
{0x280, 1, 0, 0x12, 1},
|
||
|
{0x10, 1, 1, 0x16, 0},
|
||
|
{0x1C2, 1, 2, 0x17, 0},
|
||
|
{0x10, 1, 3, 0x19, 0},
|
||
|
{0x10, 1, 4, 0x1A, 0},
|
||
|
{0x14, 1, 5, 0x1B, 0},
|
||
|
{0x28, 1, 6, 0x1C, 0},
|
||
|
{0x15E, 1, 7, 0x1D, 1},
|
||
|
{0x10, 2, 0, 0x1D, 0},
|
||
|
{0x10, 2, 1, 0x1E, 0},
|
||
|
{0x96, 2, 2, 0x1F, 0},
|
||
|
{0x10, 2, 3, 0x20, 0},
|
||
|
{0x10, 2, 4, 0x22, 0},
|
||
|
{0x19, 2, 5, 0x23, 0},
|
||
|
{0x10, 2, 6, 0x25, 0},
|
||
|
{0x10, 2, 7, 0x27, 0},
|
||
|
{0x2EE, 3, 0, 0x21, 1},
|
||
|
{0, 0, 0, 0xFF, 0},
|
||
|
};
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// char /*$ra*/ GetMissionSound(char id /*$s1*/)
|
||
|
// line 88, offset 0x0005d814
|
||
|
/* begin block 1 */
|
||
|
// Start line: 89
|
||
|
// Start offset: 0x0005D814
|
||
|
// Variables:
|
||
|
// char c; // $s0
|
||
|
// char start; // $s2
|
||
|
// char end; // $a0
|
||
|
// char rnd; // $t1
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005D950
|
||
|
// End Line: 106
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 176
|
||
|
/* end block 2 */
|
||
|
// End Line: 177
|
||
|
|
||
|
char GetMissionSound(char id)
|
||
|
|
||
|
{
|
||
|
byte bVar1;
|
||
|
long lVar2;
|
||
|
uint uVar3;
|
||
|
char *pcVar4;
|
||
|
uint uVar5;
|
||
|
|
||
|
bVar1 = (&missionstarts)[gCurrentMissionNumber];
|
||
|
uVar5 = (uint)bVar1;
|
||
|
lVar2 = Random2(5);
|
||
|
if (bVar1 != 0xff) {
|
||
|
uVar3 = 1;
|
||
|
do {
|
||
|
bVar1 = (&missionstarts)[gCurrentMissionNumber + (uVar3 & 0xff)];
|
||
|
uVar3 = (uVar3 & 0xff) + 1;
|
||
|
} while (bVar1 == 0xff);
|
||
|
while (uVar5 < (uint)bVar1) {
|
||
|
uVar3 = uVar5 + 1;
|
||
|
if (id_map[uVar5].in == id) {
|
||
|
pcVar4 = &id_map[uVar5].out;
|
||
|
if ((uVar3 != (uint)bVar1) && (pcVar4 = &id_map[uVar5].out, id_map[uVar3].in == id)) {
|
||
|
pcVar4 = &id_map[uVar5 + (lVar2 % 2 & 0xffU)].out;
|
||
|
}
|
||
|
return *pcVar4 + phrase_top;
|
||
|
}
|
||
|
uVar5 = uVar3 & 0xff;
|
||
|
}
|
||
|
}
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ RequestXA()
|
||
|
// line 145, offset 0x0005f12c
|
||
|
/* begin block 1 */
|
||
|
// Start line: 146
|
||
|
// Start offset: 0x0005F12C
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005F1B4
|
||
|
// End Line: 157
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 290
|
||
|
/* end block 2 */
|
||
|
// End Line: 291
|
||
|
|
||
|
/* begin block 3 */
|
||
|
// Start line: 927
|
||
|
/* end block 3 */
|
||
|
// End Line: 928
|
||
|
|
||
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
||
|
|
||
|
void RequestXA(void)
|
||
|
|
||
|
{
|
||
|
__xa_request *p_Var1;
|
||
|
__xa_request *p_Var2;
|
||
|
|
||
|
xa._0_4_ = CONCAT22(xa._2_2_,0xffff);
|
||
|
xa._4_2_ = xa._4_2_ & 0xff00;
|
||
|
p_Var2 = xa_data;
|
||
|
if (-1 < xa_data[0].mission) {
|
||
|
do {
|
||
|
if (((int)p_Var2->mission == gCurrentMissionNumber) &&
|
||
|
((int)p_Var2->cutscene == gInGameCutsceneID)) {
|
||
|
xa._0_4_ = *(undefined4 *)p_Var2;
|
||
|
xa._4_2_ = *(ushort *)&p_Var2->mission;
|
||
|
}
|
||
|
p_Var1 = p_Var2 + 1;
|
||
|
p_Var2 = p_Var2 + 1;
|
||
|
} while (-1 < p_Var1->mission);
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ HandleRequestedXA()
|
||
|
// line 164, offset 0x0005f1b4
|
||
|
/* begin block 1 */
|
||
|
// Start line: 166
|
||
|
// Start offset: 0x0005F1B4
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005F224
|
||
|
// End Line: 170
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 957
|
||
|
/* end block 2 */
|
||
|
// End Line: 958
|
||
|
|
||
|
/* begin block 3 */
|
||
|
// Start line: 965
|
||
|
/* end block 3 */
|
||
|
// End Line: 966
|
||
|
|
||
|
/* begin block 4 */
|
||
|
// Start line: 966
|
||
|
/* end block 4 */
|
||
|
// End Line: 967
|
||
|
|
||
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
||
|
|
||
|
void HandleRequestedXA(void)
|
||
|
|
||
|
{
|
||
|
if ((xa.cutscene == '\0') && (xa.mission != '\0')) {
|
||
|
PrepareXA();
|
||
|
xa.mission = '\0';
|
||
|
}
|
||
|
if (xa.delay == 0) {
|
||
|
PlayXA((int)xa.bank,(int)xa.track);
|
||
|
}
|
||
|
if (-1 < xa.delay) {
|
||
|
xa.delay = xa.delay + -1;
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ InitializeCutsceneSound(int cutscene /*$a0*/)
|
||
|
// line 176, offset 0x0005f224
|
||
|
/* begin block 1 */
|
||
|
// Start line: 177
|
||
|
// Start offset: 0x0005F224
|
||
|
// Variables:
|
||
|
// int i; // $a0
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005F25C
|
||
|
// End Line: 181
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 982
|
||
|
/* end block 2 */
|
||
|
// End Line: 983
|
||
|
|
||
|
/* begin block 3 */
|
||
|
// Start line: 989
|
||
|
/* end block 3 */
|
||
|
// End Line: 990
|
||
|
|
||
|
/* begin block 4 */
|
||
|
// Start line: 991
|
||
|
/* end block 4 */
|
||
|
// End Line: 992
|
||
|
|
||
|
void InitializeCutsceneSound(int cutscene)
|
||
|
|
||
|
{
|
||
|
char *pcVar1;
|
||
|
char *pcVar2;
|
||
|
int iVar3;
|
||
|
|
||
|
cutscene_timer = 0;
|
||
|
iVar3 = 0;
|
||
|
do {
|
||
|
pcVar1 = &force_idle + iVar3;
|
||
|
pcVar2 = &force_siren + iVar3;
|
||
|
iVar3 = iVar3 + 1;
|
||
|
*pcVar1 = -1;
|
||
|
*pcVar2 = '\0';
|
||
|
} while (iVar3 < 8);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ DoCutsceneSound()
|
||
|
// line 187, offset 0x0005d950
|
||
|
/* begin block 1 */
|
||
|
// Start line: 188
|
||
|
// Start offset: 0x0005D950
|
||
|
|
||
|
/* begin block 1.1 */
|
||
|
// Start line: 191
|
||
|
// Start offset: 0x0005D99C
|
||
|
|
||
|
/* begin block 1.1.1 */
|
||
|
// Start line: 224
|
||
|
// Start offset: 0x0005DA88
|
||
|
|
||
|
/* begin block 1.1.1.1 */
|
||
|
// Start line: 226
|
||
|
// Start offset: 0x0005DAB0
|
||
|
// Variables:
|
||
|
// long *here; // $t0
|
||
|
/* end block 1.1.1.1 */
|
||
|
// End offset: 0x0005DAEC
|
||
|
// End Line: 228
|
||
|
/* end block 1.1.1 */
|
||
|
// End offset: 0x0005DAEC
|
||
|
// End Line: 229
|
||
|
|
||
|
/* begin block 1.1.2 */
|
||
|
// Start line: 244
|
||
|
// Start offset: 0x0005DB9C
|
||
|
|
||
|
/* begin block 1.1.2.1 */
|
||
|
// Start line: 245
|
||
|
// Start offset: 0x0005DBAC
|
||
|
// Variables:
|
||
|
// struct _CAR_DATA *you; // $s0
|
||
|
/* end block 1.1.2.1 */
|
||
|
// End offset: 0x0005DBF0
|
||
|
// End Line: 248
|
||
|
/* end block 1.1.2 */
|
||
|
// End offset: 0x0005DC1C
|
||
|
// End Line: 250
|
||
|
/* end block 1.1 */
|
||
|
// End offset: 0x0005DD00
|
||
|
// End Line: 269
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005DD10
|
||
|
// End Line: 271
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 295
|
||
|
/* end block 2 */
|
||
|
// End Line: 296
|
||
|
|
||
|
/* begin block 3 */
|
||
|
// Start line: 377
|
||
|
/* end block 3 */
|
||
|
// End Line: 378
|
||
|
|
||
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
||
|
|
||
|
void DoCutsceneSound(void)
|
||
|
|
||
|
{
|
||
|
char cVar1;
|
||
|
undefined3 extraout_var;
|
||
|
undefined3 extraout_var_00;
|
||
|
|
||
|
cutscene_timer = cutscene_timer + 1;
|
||
|
switch(gCurrentMissionNumber) {
|
||
|
case 2:
|
||
|
if (gInGameCutsceneID != 1) {
|
||
|
return;
|
||
|
}
|
||
|
if (0x4a < cutscene_timer) {
|
||
|
s__000aafd1[0] = -1;
|
||
|
return;
|
||
|
}
|
||
|
goto LAB_0005dcfc;
|
||
|
case 5:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return;
|
||
|
}
|
||
|
if (cutscene_timer < 0x97) {
|
||
|
if (0x8c < cutscene_timer) {
|
||
|
CHAR_00h_000aafe1 = '\x01';
|
||
|
CHAR_00h_000aafe2 = '\0';
|
||
|
return;
|
||
|
}
|
||
|
CHAR_00h_000aafe1 = '\0';
|
||
|
CHAR_00h_000aafe2 = '\0';
|
||
|
return;
|
||
|
}
|
||
|
goto LAB_0005db74;
|
||
|
case 7:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
if (cutscene_timer < 100) {
|
||
|
s__000aafd1[0] = '\0';
|
||
|
}
|
||
|
else {
|
||
|
s__000aafd1[0] = -1;
|
||
|
}
|
||
|
}
|
||
|
if (gInGameCutsceneID != 1) {
|
||
|
return;
|
||
|
}
|
||
|
goto LAB_0005dcfc;
|
||
|
case 0x12:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
if (cutscene_timer == 1) {
|
||
|
MissionSay(0xf);
|
||
|
}
|
||
|
if (cutscene_timer == 0xce) {
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,6,4,car_data[2].hd.where.t[0],-car_data[2].hd.where.t[1],
|
||
|
car_data[2].hd.where.t[2],-0x9c4,0xc00);
|
||
|
}
|
||
|
}
|
||
|
if ((gInGameCutsceneID == 1) && (cutscene_timer == 6)) {
|
||
|
PrepareXA();
|
||
|
}
|
||
|
break;
|
||
|
case 0x15:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
jericho_in_back = 1;
|
||
|
}
|
||
|
break;
|
||
|
case 0x19:
|
||
|
if (gInGameCutsceneID == 1) {
|
||
|
jericho_in_back = gInGameCutsceneID;
|
||
|
}
|
||
|
break;
|
||
|
case 0x1a:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return;
|
||
|
}
|
||
|
LAB_0005db74:
|
||
|
CHAR_00h_000aafe2 = '\x01';
|
||
|
CHAR_00h_000aafe1 = '\x01';
|
||
|
break;
|
||
|
case 0x1b:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return;
|
||
|
}
|
||
|
if (cutscene_timer == 0x1cc) {
|
||
|
cVar1 = GetMissionSound('\x18');
|
||
|
Start3DTrackingSound
|
||
|
(-1,5,CONCAT31(extraout_var,cVar1),(VECTOR *)car_data[2].hd.where.t,(long *)0x0);
|
||
|
CHAR_00h_000aafe7 = '\x01';
|
||
|
CHAR_00h_000aafe6 = '\x01';
|
||
|
CHAR_00h_000aafe5 = '\x01';
|
||
|
CHAR_00h_000aafe4 = '\x01';
|
||
|
CHAR_00h_000aafe3 = '\x01';
|
||
|
CHAR_00h_000aafe2 = '\x01';
|
||
|
}
|
||
|
if (cutscene_timer == 0x1fe) {
|
||
|
MissionSay(0x17);
|
||
|
}
|
||
|
if (cutscene_timer < 0x33) {
|
||
|
return;
|
||
|
}
|
||
|
goto LAB_0005dcfc;
|
||
|
case 0x1d:
|
||
|
if (gInGameCutsceneID == 1) {
|
||
|
if (cutscene_timer == 6) {
|
||
|
PrepareXA();
|
||
|
}
|
||
|
if (cutscene_timer == 0xb4) {
|
||
|
cVar1 = GetMissionSound('\x1a');
|
||
|
Start3DTrackingSound
|
||
|
(-1,5,CONCAT31(extraout_var_00,cVar1),(VECTOR *)car_data[2].hd.where.t,
|
||
|
(long *)(car_data[2].st + 0x1c));
|
||
|
}
|
||
|
if (cutscene_timer < 0x281) {
|
||
|
CHAR_00h_000aafe3 = '\0';
|
||
|
}
|
||
|
else {
|
||
|
CHAR_00h_000aafe3 = '\x01';
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case 0x21:
|
||
|
if (gInGameCutsceneID != 1) {
|
||
|
return;
|
||
|
}
|
||
|
if (cutscene_timer == 6) {
|
||
|
PrepareXA();
|
||
|
}
|
||
|
if (cutscene_timer == 0x3c0) {
|
||
|
SetEnvSndVol(rio_alarm,3000);
|
||
|
}
|
||
|
LAB_0005dcfc:
|
||
|
s__000aafd1[0] = '\0';
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ InitializeMissionSound()
|
||
|
// line 279, offset 0x0005dd10
|
||
|
/* begin block 1 */
|
||
|
// Start line: 280
|
||
|
// Start offset: 0x0005DD10
|
||
|
// Variables:
|
||
|
// int i; // $a1
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005E020
|
||
|
// End Line: 308
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 559
|
||
|
/* end block 2 */
|
||
|
// End Line: 560
|
||
|
|
||
|
/* begin block 3 */
|
||
|
// Start line: 568
|
||
|
/* end block 3 */
|
||
|
// End Line: 569
|
||
|
|
||
|
/* begin block 4 */
|
||
|
// Start line: 573
|
||
|
/* end block 4 */
|
||
|
// End Line: 574
|
||
|
|
||
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
||
|
|
||
|
void InitializeMissionSound(void)
|
||
|
|
||
|
{
|
||
|
int iVar1;
|
||
|
char cVar2;
|
||
|
undefined3 extraout_var;
|
||
|
undefined3 extraout_var_00;
|
||
|
undefined3 extraout_var_01;
|
||
|
undefined3 extraout_var_02;
|
||
|
undefined3 extraout_var_03;
|
||
|
undefined3 extraout_var_04;
|
||
|
char *pcVar3;
|
||
|
int iVar4;
|
||
|
|
||
|
iVar4 = 0;
|
||
|
pcVar3 = &es_mobile;
|
||
|
bodgevar = 0;
|
||
|
holdall = -1;
|
||
|
MissionStartData.PlayerPos._0_4_ = 0xffffffff;
|
||
|
do {
|
||
|
*pcVar3 = -1;
|
||
|
iVar1 = GameLevel;
|
||
|
iVar4 = iVar4 + -1;
|
||
|
pcVar3 = pcVar3 + -1;
|
||
|
} while (-1 < iVar4);
|
||
|
jericho_in_back = 0;
|
||
|
if (GameLevel == 1) {
|
||
|
if (gCurrentMissionNumber - 0xfU < 2) {
|
||
|
cVar2 = GetMissionSound('\x0e');
|
||
|
iVar4 = AddEnvSnd(3,' ',5,CONCAT31(extraout_var,cVar2),0,-10000,0);
|
||
|
es_mobile = (char)iVar4;
|
||
|
}
|
||
|
if (gCurrentMissionNumber == 0x14) {
|
||
|
jericho_in_back = iVar1;
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (GameLevel < 2) {
|
||
|
if (GameLevel == 0) {
|
||
|
iVar4 = AddEnvSnd(3,'\0',4,4,-10000,0,0);
|
||
|
es_mobile = (char)iVar4;
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (GameLevel == 2) {
|
||
|
if (gCurrentMissionNumber == 0x16) {
|
||
|
iVar4 = AddEnvSnd(3,'\0',5,0,-10000,0,0);
|
||
|
es_mobile = (char)iVar4;
|
||
|
}
|
||
|
if (gCurrentMissionNumber == 0x18) {
|
||
|
cVar2 = GetMissionSound('\x1f');
|
||
|
AddEnvSnd(3,' ',5,CONCAT31(extraout_var_00,cVar2),3000,-37000,0x420a4);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (GameLevel == 3) {
|
||
|
if (gCurrentMissionNumber == 0x20) {
|
||
|
cVar2 = GetMissionSound('\x1f');
|
||
|
rio_alarm = AddEnvSnd(3,' ',5,CONCAT31(extraout_var_01,cVar2),-10000,-0x1e1c0,-0x3e300);
|
||
|
}
|
||
|
if (gCurrentMissionNumber == 0x21) {
|
||
|
cVar2 = GetMissionSound('\x1f');
|
||
|
rio_alarm = AddEnvSnd(3,' ',5,CONCAT31(extraout_var_02,cVar2),-10000,-0x319f2,0x52e2c);
|
||
|
}
|
||
|
if (gCurrentMissionNumber == 0x23) {
|
||
|
cVar2 = GetMissionSound('$');
|
||
|
iVar4 = AddEnvSnd(3,' ',5,CONCAT31(extraout_var_03,cVar2),-10000,0,0);
|
||
|
es_mobile = (char)iVar4;
|
||
|
}
|
||
|
if (gCurrentMissionNumber == 0x28) {
|
||
|
cVar2 = GetMissionSound('\'');
|
||
|
holdall = Start3DSoundVolPitch(-1,5,CONCAT31(extraout_var_04,cVar2),0,0,0,-10000,0x1000)
|
||
|
;
|
||
|
LockChannel(holdall);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ DoMissionSound()
|
||
|
// line 321, offset 0x0005e020
|
||
|
/* begin block 1 */
|
||
|
// Start line: 322
|
||
|
// Start offset: 0x0005E020
|
||
|
// Variables:
|
||
|
// int i; // $a2
|
||
|
|
||
|
/* begin block 1.1 */
|
||
|
// Start line: 400
|
||
|
// Start offset: 0x0005E1E4
|
||
|
// Variables:
|
||
|
// long *pos; // $s5
|
||
|
// long *vel; // $s4
|
||
|
|
||
|
/* begin block 1.1.1 */
|
||
|
// Start line: 404
|
||
|
// Start offset: 0x0005E25C
|
||
|
// Variables:
|
||
|
// int chan; // $s1
|
||
|
/* end block 1.1.1 */
|
||
|
// End offset: 0x0005E25C
|
||
|
// End Line: 404
|
||
|
/* end block 1.1 */
|
||
|
// End offset: 0x0005E25C
|
||
|
// End Line: 404
|
||
|
|
||
|
/* begin block 1.2 */
|
||
|
// Start line: 475
|
||
|
// Start offset: 0x0005E348
|
||
|
// Variables:
|
||
|
// struct VECTOR Q[3]; // stack offset -96
|
||
|
// struct VECTOR P; // stack offset -48
|
||
|
/* end block 1.2 */
|
||
|
// End offset: 0x0005E410
|
||
|
// End Line: 478
|
||
|
|
||
|
/* begin block 1.3 */
|
||
|
// Start line: 480
|
||
|
// Start offset: 0x0005E424
|
||
|
// Variables:
|
||
|
// int i; // $s0
|
||
|
/* end block 1.3 */
|
||
|
// End offset: 0x0005E5B8
|
||
|
// End Line: 484
|
||
|
|
||
|
/* begin block 1.4 */
|
||
|
// Start line: 523
|
||
|
// Start offset: 0x0005E6F0
|
||
|
// Variables:
|
||
|
// struct VECTOR Q[3]; // stack offset -96
|
||
|
// struct VECTOR P; // stack offset -48
|
||
|
/* end block 1.4 */
|
||
|
// End offset: 0x0005E7B8
|
||
|
// End Line: 526
|
||
|
|
||
|
/* begin block 1.5 */
|
||
|
// Start line: 528
|
||
|
// Start offset: 0x0005E7CC
|
||
|
// Variables:
|
||
|
// int i; // $s0
|
||
|
/* end block 1.5 */
|
||
|
// End offset: 0x0005E968
|
||
|
// End Line: 532
|
||
|
|
||
|
/* begin block 1.6 */
|
||
|
// Start line: 557
|
||
|
// Start offset: 0x0005EA74
|
||
|
// Variables:
|
||
|
// long V[3]; // stack offset -96
|
||
|
// long *C; // $a1
|
||
|
/* end block 1.6 */
|
||
|
// End offset: 0x0005EB98
|
||
|
// End Line: 566
|
||
|
/* end block 1 */
|
||
|
// End offset: 0x0005EE00
|
||
|
// End Line: 628
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 645
|
||
|
/* end block 2 */
|
||
|
// End Line: 646
|
||
|
|
||
|
/* begin block 3 */
|
||
|
// Start line: 659
|
||
|
/* end block 3 */
|
||
|
// End Line: 660
|
||
|
|
||
|
/* begin block 4 */
|
||
|
// Start line: 661
|
||
|
/* end block 4 */
|
||
|
// End Line: 662
|
||
|
|
||
|
/* WARNING: Type propagation algorithm not settling */
|
||
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
||
|
|
||
|
void DoMissionSound(void)
|
||
|
|
||
|
{
|
||
|
char cVar1;
|
||
|
undefined3 extraout_var;
|
||
|
undefined3 extraout_var_00;
|
||
|
undefined3 extraout_var_01;
|
||
|
undefined3 extraout_var_02;
|
||
|
int *piVar2;
|
||
|
undefined3 extraout_var_03;
|
||
|
undefined3 extraout_var_04;
|
||
|
undefined3 extraout_var_05;
|
||
|
undefined3 extraout_var_06;
|
||
|
undefined3 extraout_var_07;
|
||
|
undefined **ppuVar3;
|
||
|
undefined3 extraout_var_08;
|
||
|
undefined3 extraout_var_09;
|
||
|
undefined3 extraout_var_10;
|
||
|
undefined3 extraout_var_11;
|
||
|
int y;
|
||
|
int *piVar4;
|
||
|
int z;
|
||
|
_TARGET *p_Var5;
|
||
|
int iVar6;
|
||
|
int sample;
|
||
|
int sample_00;
|
||
|
undefined *puVar7;
|
||
|
int x;
|
||
|
undefined *puVar8;
|
||
|
undefined *puVar9;
|
||
|
undefined *local_60;
|
||
|
int local_5c;
|
||
|
undefined *local_58;
|
||
|
int local_54 [12];
|
||
|
int local_24;
|
||
|
|
||
|
iVar6 = DAT_000d7c2c;
|
||
|
sample_00 = bodgevar;
|
||
|
switch(gCurrentMissionNumber) {
|
||
|
case 0xb:
|
||
|
case 0xd:
|
||
|
case 0x14:
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
cVar1 = GetMissionSound('\v');
|
||
|
sample_00 = CONCAT31(extraout_var,cVar1);
|
||
|
goto LAB_0005ed9c;
|
||
|
}
|
||
|
goto LAB_0005e0d0;
|
||
|
case 0x15:
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
cVar1 = GetMissionSound('\v');
|
||
|
Start3DSoundVolPitch
|
||
|
(MissionStartData.PlayerPos._0_4_,5,CONCAT31(extraout_var_00,cVar1),pos[0],pos[1],
|
||
|
pos[2],-1000,0x1000);
|
||
|
GetMissionSound('\v');
|
||
|
bodgevar = 2;
|
||
|
return;
|
||
|
}
|
||
|
goto LAB_0005e0d0;
|
||
|
case 0x17:
|
||
|
if (holdall == -1) {
|
||
|
if (MissionTargets->data[0] == 2) {
|
||
|
holdall = MissionTargets->data[6];
|
||
|
}
|
||
|
else {
|
||
|
sample_00 = 1;
|
||
|
do {
|
||
|
if (0xf < sample_00) {
|
||
|
return;
|
||
|
}
|
||
|
p_Var5 = MissionTargets + sample_00;
|
||
|
sample_00 = sample_00 + 1;
|
||
|
} while (p_Var5->data[0] != 2);
|
||
|
holdall = p_Var5->data[6];
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
sample_00 = (int)player.playerCarId;
|
||
|
if (sample_00 == holdall) {
|
||
|
if ((DAT_000d7c2c != 0) && (DAT_000d7c2c == (DAT_000d7c2c / 3000) * 3000)) {
|
||
|
sample = GetFreeChannel();
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
StartSound(sample,5,CONCAT31(extraout_var_01,cVar1),-0x5dc,0x1000);
|
||
|
SetChannelPosition3(sample,(VECTOR *)car_data[sample_00].hd.where.t,
|
||
|
(long *)(car_data[sample_00].st + 0x1c),-0x5dc,0x1000 - iVar6 / 0x2ee,
|
||
|
0);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case 0x19:
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
cVar1 = GetMissionSound('\v');
|
||
|
Start3DSoundVolPitch
|
||
|
(MissionStartData.PlayerPos._0_4_,5,CONCAT31(extraout_var_02,cVar1),pos[0],pos[1],
|
||
|
pos[2],-1000,0x1000);
|
||
|
holdall = holdall + 1;
|
||
|
bodgevar = 2;
|
||
|
return;
|
||
|
}
|
||
|
LAB_0005e0d0:
|
||
|
if (bodgevar != 3) {
|
||
|
return;
|
||
|
}
|
||
|
StopChannel(MissionStartData.PlayerPos._0_4_);
|
||
|
LAB_0005edd8:
|
||
|
bodgevar = 4;
|
||
|
break;
|
||
|
case 0x1e:
|
||
|
if (bodgevar - 1U < 3) {
|
||
|
piVar2 = &DAT_00010e8c;
|
||
|
piVar4 = &local_60;
|
||
|
do {
|
||
|
sample_00 = piVar2[1];
|
||
|
iVar6 = piVar2[2];
|
||
|
sample = piVar2[3];
|
||
|
*piVar4 = *piVar2;
|
||
|
piVar4[1] = sample_00;
|
||
|
piVar4[2] = iVar6;
|
||
|
piVar4[3] = sample;
|
||
|
piVar2 = piVar2 + 4;
|
||
|
piVar4 = piVar4 + 4;
|
||
|
} while (piVar2 != &DAT_00010ebc);
|
||
|
sample_00 = bodgevar + -1;
|
||
|
local_54[9] = (&local_60)[sample_00 * 4];
|
||
|
local_54[10] = (&local_60)[sample_00 * 4 + 1];
|
||
|
local_54[11] = (&local_60)[sample_00 * 4 + 2];
|
||
|
local_24 = (&local_60)[sample_00 * 4 + 3];
|
||
|
cVar1 = GetMissionSound('\"');
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,5,CONCAT31(extraout_var_03,cVar1),local_54[9],local_54[10],local_54[11],-1000,
|
||
|
0x1000);
|
||
|
bodgevar = bodgevar + 4;
|
||
|
}
|
||
|
sample_00 = DAT_000d7c2c;
|
||
|
if (bodgevar < 4) {
|
||
|
return;
|
||
|
}
|
||
|
if (bodgevar == 6) {
|
||
|
LAB_0005e4e8:
|
||
|
if ((sample_00 / 3000) * 3000 == sample_00 + -800) {
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,5,CONCAT31(extraout_var_05,cVar1),-0x34aa,-0xfa,0xcd5e0,-0x5dc,
|
||
|
0x1000 - sample_00 / 0x2ee);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (6 < bodgevar) {
|
||
|
if (bodgevar != 7) {
|
||
|
return;
|
||
|
}
|
||
|
if ((DAT_000d7c2c / 3000) * 3000 == DAT_000d7c2c + -0x514) {
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,5,CONCAT31(extraout_var_04,cVar1),-0x2ffb,-0x113,0xcd61b,-0x5dc,
|
||
|
0x1000 - sample_00 / 0x2ee);
|
||
|
}
|
||
|
goto LAB_0005e4e8;
|
||
|
}
|
||
|
if (bodgevar != 5) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
iVar6 = (int)((ulonglong)((longlong)sample_00 * 0x57619f1) >> 0x20);
|
||
|
if ((sample_00 / 3000) * 3000 != sample_00 + -100) {
|
||
|
return;
|
||
|
}
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
sample = CONCAT31(extraout_var_06,cVar1);
|
||
|
z = 0xcd383;
|
||
|
x = -0x382c;
|
||
|
y = -0x114;
|
||
|
goto LAB_0005e990;
|
||
|
case 0x20:
|
||
|
if (holdall == -1) {
|
||
|
holdall = 0;
|
||
|
return;
|
||
|
}
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
cVar1 = GetMissionSound('\v');
|
||
|
sample_00 = CONCAT31(extraout_var_07,cVar1);
|
||
|
goto LAB_0005ed9c;
|
||
|
}
|
||
|
if (bodgevar != 3) {
|
||
|
return;
|
||
|
}
|
||
|
if (-1 < MissionStartData.PlayerPos._0_4_) {
|
||
|
StopChannel(MissionStartData.PlayerPos._0_4_);
|
||
|
}
|
||
|
holdall = holdall + 1;
|
||
|
if (holdall == 2) {
|
||
|
SetEnvSndVol(rio_alarm,3000);
|
||
|
}
|
||
|
goto LAB_0005edd8;
|
||
|
case 0x21:
|
||
|
if (holdall == -1) {
|
||
|
StartSound(2,2,0,-10000,0x81);
|
||
|
holdall = 0;
|
||
|
}
|
||
|
break;
|
||
|
case 0x23:
|
||
|
if (bodgevar - 1U < 3) {
|
||
|
ppuVar3 = (undefined **)&DAT_00010ebc;
|
||
|
piVar4 = &local_60;
|
||
|
do {
|
||
|
puVar7 = ppuVar3[1];
|
||
|
puVar8 = ppuVar3[2];
|
||
|
puVar9 = ppuVar3[3];
|
||
|
*(undefined **)piVar4 = *ppuVar3;
|
||
|
*(undefined **)(piVar4 + 1) = puVar7;
|
||
|
*(undefined **)(piVar4 + 2) = puVar8;
|
||
|
*(undefined **)(piVar4 + 3) = puVar9;
|
||
|
ppuVar3 = ppuVar3 + 4;
|
||
|
piVar4 = piVar4 + 4;
|
||
|
} while (ppuVar3 != switchdataD_00010eec);
|
||
|
sample_00 = bodgevar + -1;
|
||
|
local_54[9] = (&local_60)[sample_00 * 4];
|
||
|
local_54[10] = (&local_60)[sample_00 * 4 + 1];
|
||
|
local_54[11] = (&local_60)[sample_00 * 4 + 2];
|
||
|
local_24 = (&local_60)[sample_00 * 4 + 3];
|
||
|
cVar1 = GetMissionSound('\"');
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,5,CONCAT31(extraout_var_08,cVar1),local_54[9],local_54[10],local_54[11],-1000,
|
||
|
0x1000);
|
||
|
bodgevar = bodgevar + 4;
|
||
|
}
|
||
|
sample_00 = DAT_000d7c2c;
|
||
|
if (bodgevar < 4) {
|
||
|
return;
|
||
|
}
|
||
|
if (bodgevar == 6) {
|
||
|
LAB_0005e894:
|
||
|
if ((sample_00 / 3000) * 3000 == sample_00 + -800) {
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,5,CONCAT31(extraout_var_10,cVar1),0x312b0,-0xb1,0x5f050,-0x5dc,
|
||
|
0x1000 - sample_00 / 0x2ee);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (6 < bodgevar) {
|
||
|
if (bodgevar != 7) {
|
||
|
return;
|
||
|
}
|
||
|
if ((DAT_000d7c2c / 3000) * 3000 == DAT_000d7c2c + -0x514) {
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
Start3DSoundVolPitch
|
||
|
(-1,5,CONCAT31(extraout_var_09,cVar1),0x30ad0,-0xb1,0x5f050,-0x5dc,
|
||
|
0x1000 - sample_00 / 0x2ee);
|
||
|
}
|
||
|
goto LAB_0005e894;
|
||
|
}
|
||
|
if (bodgevar != 5) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
iVar6 = (int)((ulonglong)((longlong)sample_00 * 0x57619f1) >> 0x20);
|
||
|
if ((sample_00 / 3000) * 3000 != sample_00 + -300) {
|
||
|
return;
|
||
|
}
|
||
|
cVar1 = GetMissionSound('\x14');
|
||
|
sample = CONCAT31(extraout_var_11,cVar1);
|
||
|
z = 0x5e0e0;
|
||
|
x = 0x31330;
|
||
|
y = -0xb1;
|
||
|
LAB_0005e990:
|
||
|
Start3DSoundVolPitch(-1,5,sample,x,y,z,-0x5dc,0x1000 - ((iVar6 >> 4) - (sample_00 >> 0x1f)));
|
||
|
break;
|
||
|
case 0x27:
|
||
|
if (holdall == -1) {
|
||
|
sample_00 = 0;
|
||
|
p_Var5 = MissionTargets;
|
||
|
while (sample_00 < 0x10) {
|
||
|
if (p_Var5->data[0] == 2) {
|
||
|
if (holdall == -1) {
|
||
|
holdall = 0x14;
|
||
|
}
|
||
|
else {
|
||
|
if (holdall == 0x14) {
|
||
|
holdall = p_Var5->data[6];
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
p_Var5 = p_Var5 + 1;
|
||
|
sample_00 = sample_00 + 1;
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if ((int)player.playerCarId == holdall) {
|
||
|
jericho_in_back = 1;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case 0x28:
|
||
|
if (bodgevar == 0) {
|
||
|
if (holdall != -1) {
|
||
|
StopChannel(holdall);
|
||
|
UnlockChannel(holdall);
|
||
|
holdall = -1;
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
iVar6 = car_data[player.playerCarId].hd.where.t[0];
|
||
|
sample = *(int *)bodgevar - iVar6;
|
||
|
iVar6 = iVar6 - *(int *)bodgevar;
|
||
|
if (-1 < sample) {
|
||
|
iVar6 = sample;
|
||
|
}
|
||
|
if (iVar6 < 0x8000) {
|
||
|
iVar6 = car_data[player.playerCarId].hd.where.t[2];
|
||
|
sample = *(int *)(bodgevar + 8) - iVar6;
|
||
|
iVar6 = iVar6 - *(int *)(bodgevar + 8);
|
||
|
if (-1 < sample) {
|
||
|
iVar6 = sample;
|
||
|
}
|
||
|
if (iVar6 < 0x8000) {
|
||
|
local_60 = pos[0] - *(int *)bodgevar;
|
||
|
local_5c = pos[1] - *(int *)(bodgevar + 4);
|
||
|
local_58 = pos[2] - *(int *)(bodgevar + 8);
|
||
|
SetChannelPosition3(holdall,(VECTOR *)bodgevar,&local_60,0,0x1000,0);
|
||
|
pos[0] = *(long *)sample_00;
|
||
|
pos[1] = *(long *)(sample_00 + 4);
|
||
|
pos[2] = *(long *)(sample_00 + 8);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
SpuSetVoicePitch(holdall,0);
|
||
|
}
|
||
|
break;
|
||
|
case 0x34:
|
||
|
case 0x35:
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
Start3DSoundVolPitch(MissionStartData.PlayerPos._0_4_,5,0,pos[0],pos[1],pos[2],-1000,0x1000);
|
||
|
bodgevar = 2;
|
||
|
}
|
||
|
else {
|
||
|
if (bodgevar == 3) {
|
||
|
if (-1 < MissionStartData.PlayerPos._0_4_) {
|
||
|
StopChannel(MissionStartData.PlayerPos._0_4_);
|
||
|
}
|
||
|
bodgevar = 4;
|
||
|
}
|
||
|
}
|
||
|
case 0x36:
|
||
|
case 0x37:
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
Start3DSoundVolPitch(MissionStartData.PlayerPos._0_4_,5,1,pos[0],pos[1],pos[2],-1000,0x1000);
|
||
|
bodgevar = 2;
|
||
|
}
|
||
|
else {
|
||
|
if (bodgevar == 3) {
|
||
|
if (-1 < MissionStartData.PlayerPos._0_4_) {
|
||
|
StopChannel(MissionStartData.PlayerPos._0_4_);
|
||
|
}
|
||
|
bodgevar = 4;
|
||
|
}
|
||
|
else {
|
||
|
if (bodgevar == 5) {
|
||
|
Start3DSoundVolPitch(-1,5,0,-0x26868,-0xfa,(int)&DAT_0009d274,-1000,0x1000);
|
||
|
bodgevar = 6;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
case 0x38:
|
||
|
case 0x39:
|
||
|
goto switchD_0005e06c_caseD_38;
|
||
|
}
|
||
|
return;
|
||
|
switchD_0005e06c_caseD_38:
|
||
|
if (bodgevar == 1) {
|
||
|
MissionStartData.PlayerPos._0_4_ = GetFreeChannel();
|
||
|
sample_00 = 0;
|
||
|
LAB_0005ed9c:
|
||
|
Start3DSoundVolPitch
|
||
|
(MissionStartData.PlayerPos._0_4_,5,sample_00,pos[0],pos[1],pos[2],-1000,0x1000);
|
||
|
bodgevar = 2;
|
||
|
return;
|
||
|
}
|
||
|
if (bodgevar != 3) {
|
||
|
return;
|
||
|
}
|
||
|
if (-1 < MissionStartData.PlayerPos._0_4_) {
|
||
|
StopChannel(MissionStartData.PlayerPos._0_4_);
|
||
|
}
|
||
|
goto LAB_0005edd8;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ SetMSoundVar(int var /*$a0*/, struct VECTOR *V /*$a1*/)
|
||
|
// line 636, offset 0x0005f25c
|
||
|
/* begin block 1 */
|
||
|
// Start line: 1453
|
||
|
/* end block 1 */
|
||
|
// End Line: 1454
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 1909
|
||
|
/* end block 2 */
|
||
|
// End Line: 1910
|
||
|
|
||
|
void SetMSoundVar(int var,VECTOR *V)
|
||
|
|
||
|
{
|
||
|
if (V != (VECTOR *)0x0) {
|
||
|
pos[0] = V->vx;
|
||
|
pos[1] = V->vy;
|
||
|
pos[2] = V->vz;
|
||
|
}
|
||
|
bodgevar = var;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// char /*$ra*/ SilenceThisCar(int car /*$a1*/)
|
||
|
// line 652, offset 0x0005ee00
|
||
|
/* begin block 1 */
|
||
|
// Start line: 1316
|
||
|
/* end block 1 */
|
||
|
// End Line: 1317
|
||
|
|
||
|
/* begin block 2 */
|
||
|
// Start line: 1341
|
||
|
/* end block 2 */
|
||
|
// End Line: 1342
|
||
|
|
||
|
/* WARNING: Type propagation algorithm not settling */
|
||
|
|
||
|
char SilenceThisCar(int car)
|
||
|
|
||
|
{
|
||
|
int iVar1;
|
||
|
bool bVar2;
|
||
|
|
||
|
if (gInGameCutsceneActive == 0) {
|
||
|
bVar2 = false;
|
||
|
if (car_data[car].controlType == '\a') {
|
||
|
bVar2 = car_data[car].ai[0xc] == 7;
|
||
|
}
|
||
|
return (char)bVar2;
|
||
|
}
|
||
|
switch(gCurrentMissionNumber) {
|
||
|
case 1:
|
||
|
case 0xe:
|
||
|
case 0x11:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
if (car == 1) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
break;
|
||
|
case 2:
|
||
|
if (gInGameCutsceneID != 1) {
|
||
|
return '\0';
|
||
|
}
|
||
|
if ((car == 2) && (cutscene_timer < 200)) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
if (car != 1) {
|
||
|
return '\0';
|
||
|
}
|
||
|
bVar2 = cutscene_timer < 0x23;
|
||
|
goto LAB_0005ef14;
|
||
|
case 3:
|
||
|
case 0x19:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
iVar1 = 2;
|
||
|
goto LAB_0005ef3c;
|
||
|
case 6:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
bVar2 = car - 2U < 2;
|
||
|
}
|
||
|
else {
|
||
|
if (gInGameCutsceneID != 1) {
|
||
|
return '\0';
|
||
|
}
|
||
|
bVar2 = cutscene_timer < 0xfd;
|
||
|
}
|
||
|
LAB_0005ef14:
|
||
|
if (bVar2) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
return '\0';
|
||
|
case 7:
|
||
|
case 0x13:
|
||
|
case 0x15:
|
||
|
case 0x1c:
|
||
|
case 0x1e:
|
||
|
case 0x1f:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
return '\x01';
|
||
|
case 10:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
iVar1 = 3;
|
||
|
LAB_0005ef3c:
|
||
|
if (car == iVar1) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
return '\0';
|
||
|
case 0x10:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
if (car != 1) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
break;
|
||
|
case 0x12:
|
||
|
if ((gInGameCutsceneID == 0) && (car != 1)) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
if ((gInGameCutsceneID == 1) && (2 < car)) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
if (car == 1) {
|
||
|
bVar2 = cutscene_timer < 0x1d7;
|
||
|
goto LAB_0005f098;
|
||
|
}
|
||
|
break;
|
||
|
case 0x17:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
if (cutscene_timer < 0xa0) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
if (car != 1) {
|
||
|
return '\0';
|
||
|
}
|
||
|
bVar2 = cutscene_timer < 0x1a0;
|
||
|
goto LAB_0005f098;
|
||
|
case 0x1b:
|
||
|
if (gInGameCutsceneID != 0) {
|
||
|
return '\0';
|
||
|
}
|
||
|
if (car - 6U < 2) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
if (1 < car - 2U) {
|
||
|
return '\0';
|
||
|
}
|
||
|
bVar2 = cutscene_timer < 0x2a9;
|
||
|
LAB_0005f098:
|
||
|
if (!bVar2) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
return '\0';
|
||
|
case 0x1d:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
if (gInGameCutsceneID == 1) {
|
||
|
bVar2 = car - 4U < 2;
|
||
|
goto LAB_0005ef14;
|
||
|
}
|
||
|
break;
|
||
|
case 0x21:
|
||
|
if ((gInGameCutsceneID == 1) && (car != 1)) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
break;
|
||
|
case 0x26:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
bVar2 = car - 2U < 2;
|
||
|
goto LAB_0005ef14;
|
||
|
}
|
||
|
break;
|
||
|
case 0x27:
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
return '\x01';
|
||
|
}
|
||
|
}
|
||
|
return '\0';
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// decompiled code
|
||
|
// original method signature:
|
||
|
// void /*$ra*/ AdjustPlayerCarVolume()
|
||
|
// line 749, offset 0x0005f294
|
||
|
/* begin block 1 */
|
||
|
// Start line: 2136
|
||
|
/* end block 1 */
|
||
|
// End Line: 2137
|
||
|
|
||
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
||
|
|
||
|
void AdjustPlayerCarVolume(void)
|
||
|
|
||
|
{
|
||
|
if (gInGameCutsceneID == 0) {
|
||
|
if (((gCurrentMissionNumber == 3) || (gCurrentMissionNumber == 5)) ||
|
||
|
(gCurrentMissionNumber == 0x1b)) {
|
||
|
player.revsvol = -0x1a5e;
|
||
|
player.idlevol = -10000;
|
||
|
}
|
||
|
else {
|
||
|
player.revsvol = -10000;
|
||
|
player.idlevol = -8000;
|
||
|
}
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|