2547 lines
74 KiB
C++
2547 lines
74 KiB
C++
#include "pinball.h"
|
|
|
|
//----- (0100E657) --------------------------------------------------------
|
|
void WaitingDeploymentController(int a1, int a2, TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
switch (a2)
|
|
{
|
|
case 63:
|
|
if ((struct TPinballComponent*)dword_1023838 == a3 || (TPinballComponent*)dword_1023840 == a3)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
}
|
|
break;
|
|
case 66:
|
|
TTextBox::Clear(tTextBox, a1);
|
|
dword_1025048 = 0;
|
|
break;
|
|
case 67:
|
|
v3 = get_rc_string(50, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
break;
|
|
}
|
|
}
|
|
// 1023838: using guessed type int dword_1023838;
|
|
// 1023840: using guessed type int dword_1023840;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1025048: using guessed type int dword_1025048;
|
|
|
|
//----- (0100E6D2) --------------------------------------------------------
|
|
void SelectMissionController(int a1, struct TPinballComponent* a2)
|
|
{
|
|
signed int v2; // esi
|
|
void(__thiscall * **v3)(DWORD, signed int, DWORD); // edi
|
|
void(__thiscall * **v4)(DWORD, signed int, DWORD); // edi
|
|
char* v5; // eax
|
|
void(* **v6)(signed int, DWORD); // ecx
|
|
char* v7; // eax
|
|
CHAR* v8; // ST58_4
|
|
CHAR* v9; // eax
|
|
int v10; // esi
|
|
int v11; // ST58_4
|
|
CHAR* v12; // eax
|
|
signed int v13; // [esp+58h] [ebp-54h]
|
|
char Dest; // [esp+68h] [ebp-44h]
|
|
|
|
v2 = 0;
|
|
if (a1 == 45 || a1 == 47)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023978 == a2)
|
|
LABEL_83:
|
|
MissionControl(67, a2);
|
|
}
|
|
else if (a1 == 63)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023B84 == a2)
|
|
v2 = 1;
|
|
if ((struct TPinballComponent*)dword_1023B8C == a2)
|
|
v2 = 2;
|
|
if ((struct TPinballComponent*)dword_1023B94 == a2)
|
|
v2 = 3;
|
|
if (v2)
|
|
{
|
|
if (*(DWORD*)(dword_1023B9C + 6) == 7)
|
|
{
|
|
*(DWORD*)(dword_1023B9C + 6) = 0;
|
|
v2 = 4;
|
|
}
|
|
switch ((**(int(* **)(signed int, DWORD))dword_1023CF4)(37, 0.0))
|
|
{
|
|
case 1:
|
|
switch (v2)
|
|
{
|
|
case 1:
|
|
v13 = 3;
|
|
break;
|
|
case 2:
|
|
v13 = 4;
|
|
break;
|
|
case 3:
|
|
v13 = 2;
|
|
break;
|
|
default:
|
|
v13 = 5;
|
|
break;
|
|
}
|
|
goto LABEL_71;
|
|
case 2:
|
|
case 3:
|
|
switch (v2)
|
|
{
|
|
case 1:
|
|
v13 = 9;
|
|
break;
|
|
case 2:
|
|
v13 = 11;
|
|
break;
|
|
case 3:
|
|
v13 = 10;
|
|
break;
|
|
default:
|
|
LABEL_69:
|
|
v13 = 16;
|
|
break;
|
|
}
|
|
goto LABEL_71;
|
|
case 4:
|
|
case 5:
|
|
switch (v2)
|
|
{
|
|
case 1:
|
|
v13 = 6;
|
|
break;
|
|
case 2:
|
|
v13 = 8;
|
|
break;
|
|
case 3:
|
|
v13 = 7;
|
|
break;
|
|
default:
|
|
LABEL_70:
|
|
v13 = 15;
|
|
break;
|
|
}
|
|
goto LABEL_71;
|
|
case 6:
|
|
case 7:
|
|
switch (v2)
|
|
{
|
|
case 1:
|
|
v13 = 12;
|
|
break;
|
|
case 2:
|
|
v13 = 13;
|
|
break;
|
|
case 3:
|
|
v13 = 14;
|
|
break;
|
|
default:
|
|
LABEL_68:
|
|
v13 = 17;
|
|
break;
|
|
}
|
|
goto LABEL_71;
|
|
case 8:
|
|
case 9:
|
|
switch (v2)
|
|
{
|
|
case 1:
|
|
goto LABEL_70;
|
|
case 2:
|
|
goto LABEL_69;
|
|
case 3:
|
|
goto LABEL_68;
|
|
}
|
|
v13 = 18;
|
|
LABEL_71:
|
|
*(DWORD*)(dword_1023888 + 6) = v13;
|
|
(**(void(* **)(signed int, DWORD))dword_1023888)(15, 2.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023BBC)(4, 0.0);
|
|
goto LABEL_83;
|
|
default:
|
|
return;
|
|
}
|
|
}
|
|
else if ((struct TPinballComponent*)dword_1023870 == a2
|
|
&& light_on((struct component_tag*) & lite56)
|
|
&& (**(int(* **)(signed int, DWORD))dword_1023978)(37, 0.0))
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023888)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023BBC)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023CFC)(26, -1.0);
|
|
if (light_on((struct component_tag*) & lite317))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite318))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EC4)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite319))
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(20, 0.0);
|
|
v10 = *(DWORD*)(dword_1023888 + 6);
|
|
*(DWORD*)(dword_1023BBC + 6) = v10;
|
|
MissionControl(66, 0);
|
|
v11 = SpecialAddScore(*(&off_10246A0 + v10));
|
|
v12 = get_rc_string(77, 0);
|
|
_sprintf(&Dest, v12, v11);
|
|
TTextBox::Display(tTextBox, 0, &Dest, 4.0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (a1 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023BBC)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023CFC)(34, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023BB4)(20, 0.0);
|
|
*(DWORD*)(dword_1023888 + 6) = 0;
|
|
*(DWORD*)(dword_1023B9C + 6) = 0;
|
|
v3 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A8C;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A8C)(34, 0.0);
|
|
(**v3)(v3, 20, 0.0);
|
|
v4 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A94;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A94)(34, 0.0);
|
|
(**v4)(v4, 20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EEC)(20, 0.0);
|
|
}
|
|
else if (a1 != 67)
|
|
{
|
|
return;
|
|
}
|
|
if ((**(int(* **)(signed int, DWORD))dword_1023978)(37, 0.0))
|
|
{
|
|
if (light_on((struct component_tag*) & lite56))
|
|
{
|
|
v8 = get_rc_string(word_1024708[2 * *(DWORD*)(dword_1023888 + 6)], 1);
|
|
v9 = get_rc_string(106, 0);
|
|
_sprintf(&Dest, v9, v8);
|
|
TTextBox::Display(tTextBox, 0, &Dest, -1.0);
|
|
if (light_on((struct component_tag*) & lite318))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EC4)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite319))
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite317))
|
|
{
|
|
v6 = (void(* **)(signed int, DWORD))dword_1023EBC;
|
|
goto LABEL_28;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v7 = get_rc_string(104, 0);
|
|
TTextBox::Display(tTextBox, 0, v7, -1.0);
|
|
if (light_on((struct component_tag*) & lite317))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite318))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EC4)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite319))
|
|
{
|
|
v6 = (void(* **)(signed int, DWORD))dword_1023ECC;
|
|
goto LABEL_28;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v5 = get_rc_string(105, 0);
|
|
TTextBox::Display(tTextBox, 0, v5, -1.0);
|
|
if (light_on((struct component_tag*) & lite317))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite319))
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite318))
|
|
{
|
|
v6 = (void(* **)(signed int, DWORD))dword_1023EC4;
|
|
LABEL_28:
|
|
(**v6)(7, 0.0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023870: using guessed type int dword_1023870;
|
|
// 1023884: using guessed type char *lite56;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023978: using guessed type int dword_1023978;
|
|
// 1023A8C: using guessed type int dword_1023A8C;
|
|
// 1023A94: using guessed type int dword_1023A94;
|
|
// 1023B84: using guessed type int dword_1023B84;
|
|
// 1023B8C: using guessed type int dword_1023B8C;
|
|
// 1023B94: using guessed type int dword_1023B94;
|
|
// 1023B9C: using guessed type int dword_1023B9C;
|
|
// 1023BB4: using guessed type int dword_1023BB4;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023CF4: using guessed type int dword_1023CF4;
|
|
// 1023CFC: using guessed type int dword_1023CFC;
|
|
// 1023EB8: using guessed type char *lite317;
|
|
// 1023EBC: using guessed type int dword_1023EBC;
|
|
// 1023EC0: using guessed type char *lite318;
|
|
// 1023EC4: using guessed type int dword_1023EC4;
|
|
// 1023EC8: using guessed type char *lite319;
|
|
// 1023ECC: using guessed type int dword_1023ECC;
|
|
// 1023EEC: using guessed type int dword_1023EEC;
|
|
// 1024708: using guessed type int word_1024708[];
|
|
|
|
//----- (0100EBF3) --------------------------------------------------------
|
|
void PracticeMissionController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST10_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char* v6; // eax
|
|
int v7; // ST10_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+14h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E74)(
|
|
dword_1023E74,
|
|
a3,
|
|
7,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E8C)(7, 0.0);
|
|
*(DWORD*)(dword_1023888 + 6) = 8;
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(107, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10236E4 == a3
|
|
|| (struct TPinballComponent*)dword_10236EC == a3
|
|
|| (struct TPinballComponent*)dword_10236F4 == a3
|
|
|| (struct TPinballComponent*)dword_10236FC == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E74)(
|
|
dword_1023E74,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E8C)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(108, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(500000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(6))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 10236E4: using guessed type int dword_10236E4;
|
|
// 10236EC: using guessed type int dword_10236EC;
|
|
// 10236F4: using guessed type int dword_10236F4;
|
|
// 10236FC: using guessed type int dword_10236FC;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E74: using guessed type int dword_1023E74;
|
|
// 1023E8C: using guessed type int dword_1023E8C;
|
|
|
|
//----- (0100ED83) --------------------------------------------------------
|
|
void LaunchTrainingController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST08_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char* v6; // eax
|
|
int v7; // ST08_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+Ch] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023EBC)(
|
|
dword_1023EBC,
|
|
a3,
|
|
7,
|
|
0.0);
|
|
*(DWORD*)(dword_1023888 + 6) = 3;
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(110, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023870 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023EBC)(
|
|
dword_1023EBC,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(111, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(500000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(6))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023870: using guessed type int dword_1023870;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023EBC: using guessed type int dword_1023EBC;
|
|
|
|
//----- (0100EED7) --------------------------------------------------------
|
|
void ReentryTrainingController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
void(__thiscall * **v3)(DWORD, signed int, DWORD); // esi
|
|
void(__thiscall * **v4)(DWORD, signed int, DWORD); // esi
|
|
int v5; // ST38_4
|
|
CHAR* v6; // eax
|
|
int v7; // ecx
|
|
char* v8; // eax
|
|
int v9; // ST38_4
|
|
CHAR* v10; // eax
|
|
char Dest; // [esp+40h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 3;
|
|
v3 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A8C;
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023A8C)(
|
|
dword_1023A8C,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
(**v3)(v3, 32, 0.2);
|
|
(**v3)(v3, 26, 0.2);
|
|
v4 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A94;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A94)(20, 0.0);
|
|
(**v4)(v4, 32, 0.2);
|
|
(**v4)(v4, 26, 0.2);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v5 = *(DWORD*)(dword_1023888 + 6);
|
|
v6 = get_rc_string(112, 0);
|
|
_sprintf(&Dest, v6, v5);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_102372C == a3
|
|
|| (struct TPinballComponent*)dword_1023734 == a3
|
|
|| (struct TPinballComponent*)dword_102373C == a3)
|
|
{
|
|
v7 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v7;
|
|
if (v7)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E6C)(
|
|
dword_1023E6C,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v8 = get_rc_string(113, 0);
|
|
TTextBox::Display(tTextBox, a1, v8, 4.0);
|
|
v9 = SpecialAddScore(500000);
|
|
v10 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v10, v9);
|
|
if (!AddRankProgress(6))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 102372C: using guessed type int dword_102372C;
|
|
// 1023734: using guessed type int dword_1023734;
|
|
// 102373C: using guessed type int dword_102373C;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023A8C: using guessed type int dword_1023A8C;
|
|
// 1023A94: using guessed type int dword_1023A94;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E6C: using guessed type int dword_1023E6C;
|
|
|
|
//----- (0100F0B3) --------------------------------------------------------
|
|
void ScienceMissionController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST60_4
|
|
CHAR* v4; // eax
|
|
int v5; // edx
|
|
char* v6; // eax
|
|
int v7; // ST60_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+68h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 9;
|
|
*(DWORD*)(dword_1023A9C + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A9C)(50, 0.0);
|
|
*(DWORD*)(dword_1023AA4 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AA4)(50, 0.0);
|
|
*(DWORD*)(dword_1023AAC + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AAC)(50, 0.0);
|
|
*(DWORD*)(dword_1023ADC + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023ADC)(50, 0.0);
|
|
*(DWORD*)(dword_1023AE4 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AE4)(50, 0.0);
|
|
*(DWORD*)(dword_1023AEC + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AEC)(50, 0.0);
|
|
*(DWORD*)(dword_1023B20 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023B20)(50, 0.0);
|
|
*(DWORD*)(dword_1023B28 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023B28)(50, 0.0);
|
|
*(DWORD*)(dword_1023B30 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023B30)(50, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E4C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E7C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EAC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(114, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023A9C == a3
|
|
|| (struct TPinballComponent*)dword_1023AA4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AAC == a3
|
|
|| (struct TPinballComponent*)dword_1023ADC == a3
|
|
|| (struct TPinballComponent*)dword_1023AE4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AEC == a3
|
|
|| (struct TPinballComponent*)dword_1023B20 == a3
|
|
|| (struct TPinballComponent*)dword_1023B28 == a3
|
|
|| (struct TPinballComponent*)dword_1023B30 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E4C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E7C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EAC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(115, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(750000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(9))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023A9C: using guessed type int dword_1023A9C;
|
|
// 1023AA4: using guessed type int dword_1023AA4;
|
|
// 1023AAC: using guessed type int dword_1023AAC;
|
|
// 1023ADC: using guessed type int dword_1023ADC;
|
|
// 1023AE4: using guessed type int dword_1023AE4;
|
|
// 1023AEC: using guessed type int dword_1023AEC;
|
|
// 1023B20: using guessed type int dword_1023B20;
|
|
// 1023B28: using guessed type int dword_1023B28;
|
|
// 1023B30: using guessed type int dword_1023B30;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E4C: using guessed type int dword_1023E4C;
|
|
// 1023E7C: using guessed type int dword_1023E7C;
|
|
// 1023EAC: using guessed type int dword_1023EAC;
|
|
|
|
//----- (0100F381) --------------------------------------------------------
|
|
void StrayCometController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
char* v4; // eax
|
|
int v5; // ST10_4
|
|
CHAR* v6; // eax
|
|
char Dest; // [esp+18h] [ebp-44h]
|
|
|
|
if (a2 == 63)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023BE0 == a3
|
|
|| (struct TPinballComponent*)dword_1023BE8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BF0 == a3)
|
|
{
|
|
if (*(DWORD*)(dword_1023C10 + 6) == 7)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E64)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(7, 0.0);
|
|
*(DWORD*)(dword_1023C10 + 6) = 15;
|
|
MissionControl(67, a3);
|
|
}
|
|
}
|
|
else if ((struct TPinballComponent*)dword_1023980 == a3 && *(DWORD*)(dword_1023C10 + 6) == 15)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v4 = get_rc_string(119, 0);
|
|
TTextBox::Display(tTextBox, a1, v4, 4.0);
|
|
v5 = SpecialAddScore(1000000);
|
|
v6 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v6, v5);
|
|
if (!AddRankProgress(8))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023C30)(20, 0.0);
|
|
*(DWORD*)(dword_1023C10 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023E64)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
if (*(DWORD*)(dword_1023C10 + 6) == 15)
|
|
v3 = get_rc_string(118, 0);
|
|
else
|
|
v3 = get_rc_string(117, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
}
|
|
}
|
|
// 1023980: using guessed type int dword_1023980;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023BE0: using guessed type int dword_1023BE0;
|
|
// 1023BE8: using guessed type int dword_1023BE8;
|
|
// 1023BF0: using guessed type int dword_1023BF0;
|
|
// 1023C10: using guessed type int dword_1023C10;
|
|
// 1023C30: using guessed type int dword_1023C30;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E54: using guessed type int dword_1023E54;
|
|
// 1023E64: using guessed type int dword_1023E64;
|
|
|
|
//----- (0100F539) --------------------------------------------------------
|
|
void SpaceRadiationController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
char* v4; // eax
|
|
int v5; // ST10_4
|
|
CHAR* v6; // eax
|
|
char Dest; // [esp+18h] [ebp-44h]
|
|
|
|
if (a2 == 63)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023BC8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BD0 == a3
|
|
|| (struct TPinballComponent*)dword_1023BD8 == a3)
|
|
{
|
|
if (*(DWORD*)(dword_1023BF8 + 6) == 7)
|
|
{
|
|
*(DWORD*)(dword_1023BF8 + 6) = 15;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A3C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E9C)(20, 0.0);
|
|
MissionControl(67, a3);
|
|
AdvanceWormHoleDestination(1);
|
|
}
|
|
}
|
|
else if (((struct TPinballComponent*)dword_10239EC == a3
|
|
|| (struct TPinballComponent*)dword_10239F4 == a3
|
|
|| (struct TPinballComponent*)dword_10239FC == a3)
|
|
&& *(DWORD*)(dword_1023BF8 + 6) == 15)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v4 = get_rc_string(121, 0);
|
|
TTextBox::Display(tTextBox, a1, v4, 4.0);
|
|
v5 = SpecialAddScore(1000000);
|
|
v6 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v6, v5);
|
|
if (!AddRankProgress(8))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023C28)(20, 0.0);
|
|
*(DWORD*)(dword_1023BF8 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023E9C)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
if (*(DWORD*)(dword_1023BF8 + 6) == 15)
|
|
v3 = get_rc_string(120, 0);
|
|
else
|
|
v3 = get_rc_string(176, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
}
|
|
}
|
|
// 10239EC: using guessed type int dword_10239EC;
|
|
// 10239F4: using guessed type int dword_10239F4;
|
|
// 10239FC: using guessed type int dword_10239FC;
|
|
// 1023A3C: using guessed type int dword_1023A3C;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023BC8: using guessed type int dword_1023BC8;
|
|
// 1023BD0: using guessed type int dword_1023BD0;
|
|
// 1023BD8: using guessed type int dword_1023BD8;
|
|
// 1023BF8: using guessed type int dword_1023BF8;
|
|
// 1023C28: using guessed type int dword_1023C28;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E9C: using guessed type int dword_1023E9C;
|
|
|
|
//----- (0100F6F4) --------------------------------------------------------
|
|
void BlackHoleThreatController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
void(* **v4)(signed int, DWORD); // ecx
|
|
char* v5; // eax
|
|
char* v6; // eax
|
|
int v7; // ST10_4
|
|
CHAR* v8; // eax
|
|
float v9; // [esp+10h] [ebp-4Ch]
|
|
char Dest; // [esp+18h] [ebp-44h]
|
|
|
|
if (a2 == 11)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023758 == a3)
|
|
MissionControl(67, a3);
|
|
}
|
|
else if (a2 == 63)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023C5C == a3 && *(DWORD*)(dword_1023758 + 78))
|
|
{
|
|
if (light_on((struct component_tag*) & lite316))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EB4)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite314))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EA4)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(124, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(1000000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(8))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023770)(11, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v9 = -1.0;
|
|
if (*(DWORD*)(dword_1023758 + 78))
|
|
{
|
|
v5 = get_rc_string(123, 0);
|
|
TTextBox::Display(tTextBox, a1, v5, v9);
|
|
if (light_on((struct component_tag*) & lite316))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EB4)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite314))
|
|
{
|
|
v4 = (void(* **)(signed int, DWORD))dword_1023EA4;
|
|
goto LABEL_12;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v3 = get_rc_string(122, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, v9);
|
|
if (light_on((struct component_tag*) & lite314))
|
|
(**(void(* **)(signed int, DWORD))dword_1023EA4)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite316))
|
|
{
|
|
v4 = (void(* **)(signed int, DWORD))dword_1023EB4;
|
|
LABEL_12:
|
|
(**v4)(7, 0.0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023758: using guessed type int dword_1023758;
|
|
// 1023770: using guessed type int dword_1023770;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023C5C: using guessed type int dword_1023C5C;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023EA0: using guessed type char *lite314;
|
|
// 1023EA4: using guessed type int dword_1023EA4;
|
|
// 1023EB0: using guessed type char *lite316;
|
|
// 1023EB4: using guessed type int dword_1023EB4;
|
|
|
|
//----- (0100F900) --------------------------------------------------------
|
|
void BugHuntController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST90_4
|
|
CHAR* v4; // eax
|
|
int v5; // edx
|
|
char* v6; // eax
|
|
int v7; // ST90_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+9Ch] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 15;
|
|
*(DWORD*)(dword_1023A9C + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A9C)(50, 0.0);
|
|
*(DWORD*)(dword_1023AA4 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AA4)(50, 0.0);
|
|
*(DWORD*)(dword_1023AAC + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AAC)(50, 0.0);
|
|
*(DWORD*)(dword_1023ADC + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023ADC)(50, 0.0);
|
|
*(DWORD*)(dword_1023AE4 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AE4)(50, 0.0);
|
|
*(DWORD*)(dword_1023AEC + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023AEC)(50, 0.0);
|
|
*(DWORD*)(dword_1023B20 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023B20)(50, 0.0);
|
|
*(DWORD*)(dword_1023B28 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023B28)(50, 0.0);
|
|
*(DWORD*)(dword_1023B30 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023B30)(50, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023B78)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023BB4)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023C28)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023C30)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E64)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E74)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E84)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E9C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(125, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023A9C == a3
|
|
|| (struct TPinballComponent*)dword_1023AA4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AAC == a3
|
|
|| (struct TPinballComponent*)dword_1023ADC == a3
|
|
|| (struct TPinballComponent*)dword_1023AE4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AEC == a3
|
|
|| (struct TPinballComponent*)dword_1023B20 == a3
|
|
|| (struct TPinballComponent*)dword_1023B28 == a3
|
|
|| (struct TPinballComponent*)dword_1023B30 == a3
|
|
|| (struct TPinballComponent*)dword_1023B48 == a3
|
|
|| (struct TPinballComponent*)dword_1023B50 == a3
|
|
|| (struct TPinballComponent*)dword_1023B58 == a3
|
|
|| (struct TPinballComponent*)dword_1023B84 == a3
|
|
|| (struct TPinballComponent*)dword_1023B8C == a3
|
|
|| (struct TPinballComponent*)dword_1023B94 == a3
|
|
|| (struct TPinballComponent*)dword_1023BC8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BD0 == a3
|
|
|| (struct TPinballComponent*)dword_1023BD8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BE0 == a3
|
|
|| (struct TPinballComponent*)dword_1023BE8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BF0 == a3
|
|
|| (struct TPinballComponent*)dword_1023C3C == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E64)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E74)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E84)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E9C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(126, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(750000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(7))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023A9C: using guessed type int dword_1023A9C;
|
|
// 1023AA4: using guessed type int dword_1023AA4;
|
|
// 1023AAC: using guessed type int dword_1023AAC;
|
|
// 1023ADC: using guessed type int dword_1023ADC;
|
|
// 1023AE4: using guessed type int dword_1023AE4;
|
|
// 1023AEC: using guessed type int dword_1023AEC;
|
|
// 1023B20: using guessed type int dword_1023B20;
|
|
// 1023B28: using guessed type int dword_1023B28;
|
|
// 1023B30: using guessed type int dword_1023B30;
|
|
// 1023B48: using guessed type int dword_1023B48;
|
|
// 1023B50: using guessed type int dword_1023B50;
|
|
// 1023B58: using guessed type int dword_1023B58;
|
|
// 1023B78: using guessed type int dword_1023B78;
|
|
// 1023B84: using guessed type int dword_1023B84;
|
|
// 1023B8C: using guessed type int dword_1023B8C;
|
|
// 1023B94: using guessed type int dword_1023B94;
|
|
// 1023BB4: using guessed type int dword_1023BB4;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023BC8: using guessed type int dword_1023BC8;
|
|
// 1023BD0: using guessed type int dword_1023BD0;
|
|
// 1023BD8: using guessed type int dword_1023BD8;
|
|
// 1023BE0: using guessed type int dword_1023BE0;
|
|
// 1023BE8: using guessed type int dword_1023BE8;
|
|
// 1023BF0: using guessed type int dword_1023BF0;
|
|
// 1023C28: using guessed type int dword_1023C28;
|
|
// 1023C30: using guessed type int dword_1023C30;
|
|
// 1023C3C: using guessed type int dword_1023C3C;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E64: using guessed type int dword_1023E64;
|
|
// 1023E74: using guessed type int dword_1023E74;
|
|
// 1023E84: using guessed type int dword_1023E84;
|
|
// 1023E9C: using guessed type int dword_1023E9C;
|
|
// 1023ECC: using guessed type int dword_1023ECC;
|
|
|
|
//----- (0100FCD9) --------------------------------------------------------
|
|
void RescueMissionController(int a1, int a2, struct TPinballComponent* a3)
|
|
{
|
|
BOOL v3; // eax
|
|
char* v4; // eax
|
|
void(* **v5)(signed int, DWORD); // ecx
|
|
char* v6; // eax
|
|
int v7; // ecx
|
|
char* v8; // eax
|
|
int v9; // ST18_4
|
|
CHAR* v10; // eax
|
|
float v11; // [esp+18h] [ebp-4Ch]
|
|
char Dest; // [esp+20h] [ebp-44h]
|
|
|
|
if (a2 == 63)
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023A9C == a3
|
|
|| (struct TPinballComponent*)dword_1023AA4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AAC == a3)
|
|
{
|
|
MissionControl(67, a3);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023980 != a3 || !light_on((struct component_tag*) & lite20))
|
|
return;
|
|
v7 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v7;
|
|
if (v7)
|
|
{
|
|
MissionControl(67, a3);
|
|
return;
|
|
}
|
|
if (light_on((struct component_tag*) & lite303))
|
|
(**(void(* **)(signed int, DWORD))dword_1023E4C)(20, 0.0);
|
|
if (light_on((struct component_tag*) & lite304))
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v8 = get_rc_string(129, 0);
|
|
TTextBox::Display(tTextBox, a1, v8, 4.0);
|
|
v9 = SpecialAddScore(750000);
|
|
v10 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v10, v9);
|
|
if (!AddRankProgress(7))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023940)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239D0)(20, 0.0);
|
|
*(DWORD*)(dword_1023888 + 6) = 1;
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = light_on((struct component_tag*) & lite20);
|
|
v11 = -1.0;
|
|
if (v3)
|
|
{
|
|
v6 = get_rc_string(128, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, v11);
|
|
if (light_on((struct component_tag*) & lite303))
|
|
(**(void(* **)(signed int, DWORD))dword_1023E4C)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite304))
|
|
{
|
|
v5 = (void(* **)(signed int, DWORD))dword_1023E54;
|
|
goto LABEL_11;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v4 = get_rc_string(127, 0);
|
|
TTextBox::Display(tTextBox, a1, v4, v11);
|
|
if (light_on((struct component_tag*) & lite304))
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(20, 0.0);
|
|
if (!light_on((struct component_tag*) & lite303))
|
|
{
|
|
v5 = (void(* **)(signed int, DWORD))dword_1023E4C;
|
|
LABEL_11:
|
|
(**v5)(7, 0.0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 102393C: using guessed type char *lite20;
|
|
// 1023940: using guessed type int dword_1023940;
|
|
// 1023980: using guessed type int dword_1023980;
|
|
// 10239D0: using guessed type int dword_10239D0;
|
|
// 1023A9C: using guessed type int dword_1023A9C;
|
|
// 1023AA4: using guessed type int dword_1023AA4;
|
|
// 1023AAC: using guessed type int dword_1023AAC;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E48: using guessed type char *lite303;
|
|
// 1023E4C: using guessed type int dword_1023E4C;
|
|
// 1023E50: using guessed type char *lite304;
|
|
// 1023E54: using guessed type int dword_1023E54;
|
|
|
|
//----- (0100FF35) --------------------------------------------------------
|
|
void AlienMenaceController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
void(__thiscall * **v3)(DWORD, signed int, DWORD); // esi
|
|
void(__thiscall * **v4)(DWORD, signed int, DWORD); // esi
|
|
char* v5; // eax
|
|
|
|
if (a2 != 11)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023704)(11, 0.0);
|
|
v3 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A8C;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A8C)(20, 0.0);
|
|
(**v3)(v3, 32, 0.2);
|
|
(**v3)(v3, 26, 0.2);
|
|
v4 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A94;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A94)(20, 0.0);
|
|
(**v4)(v4, 32, 0.2);
|
|
(**v4)(v4, 26, 0.2);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v5 = get_rc_string(175, 0);
|
|
TTextBox::Display(tTextBox, a1, v5, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10236E4 == a3)
|
|
{
|
|
if (*(DWORD*)(dword_10236E4 + 78))
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 20;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
}
|
|
// 10236E4: using guessed type int dword_10236E4;
|
|
// 1023704: using guessed type int dword_1023704;
|
|
// 1023A8C: using guessed type int dword_1023A8C;
|
|
// 1023A94: using guessed type int dword_1023A94;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023E6C: using guessed type int dword_1023E6C;
|
|
|
|
//----- (01010051) --------------------------------------------------------
|
|
void AlienMenacePartTwoController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
void(__thiscall * **v3)(DWORD, signed int, DWORD); // esi
|
|
void(__thiscall * **v4)(DWORD, signed int, DWORD); // esi
|
|
int v5; // ST30_4
|
|
CHAR* v6; // eax
|
|
int v7; // ecx
|
|
char* v8; // eax
|
|
int v9; // ST30_4
|
|
CHAR* v10; // eax
|
|
char Dest; // [esp+38h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 8;
|
|
v3 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A8C;
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023A8C)(
|
|
dword_1023A8C,
|
|
a3,
|
|
34,
|
|
0.0);
|
|
(**v3)(v3, 20, 0.0);
|
|
v4 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A94;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A94)(34, 0.0);
|
|
(**v4)(v4, 20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E74)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E8C)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v5 = *(DWORD*)(dword_1023888 + 6);
|
|
v6 = get_rc_string(107, 0);
|
|
_sprintf(&Dest, v6, v5);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10236E4 == a3
|
|
|| (struct TPinballComponent*)dword_10236EC == a3
|
|
|| (struct TPinballComponent*)dword_10236F4 == a3
|
|
|| (struct TPinballComponent*)dword_10236FC == a3)
|
|
{
|
|
v7 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v7;
|
|
if (v7)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E74)(
|
|
dword_1023E74,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E8C)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v8 = get_rc_string(130, 0);
|
|
TTextBox::Display(tTextBox, a1, v8, 4.0);
|
|
v9 = SpecialAddScore(750000);
|
|
v10 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v10, v9);
|
|
if (!AddRankProgress(7))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 10236E4: using guessed type int dword_10236E4;
|
|
// 10236EC: using guessed type int dword_10236EC;
|
|
// 10236F4: using guessed type int dword_10236F4;
|
|
// 10236FC: using guessed type int dword_10236FC;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023A8C: using guessed type int dword_1023A8C;
|
|
// 1023A94: using guessed type int dword_1023A94;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E74: using guessed type int dword_1023E74;
|
|
// 1023E8C: using guessed type int dword_1023E8C;
|
|
|
|
//----- (0101022D) --------------------------------------------------------
|
|
void SatelliteController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST08_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char* v6; // eax
|
|
int v7; // ST08_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+Ch] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 3;
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E74)(
|
|
dword_1023E74,
|
|
a3,
|
|
7,
|
|
0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(132, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10236FC == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E74)(
|
|
dword_1023E74,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(133, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(1250000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(9))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 10236FC: using guessed type int dword_10236FC;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E74: using guessed type int dword_1023E74;
|
|
|
|
//----- (01010385) --------------------------------------------------------
|
|
void ReconnaissanceController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST30_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char* v6; // eax
|
|
int v7; // ST30_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+38h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 15;
|
|
(**(void(* **)(signed int, DWORD))dword_1023E3C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E44)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EB4)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ED4)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EDC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(134, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_102372C == a3
|
|
|| (struct TPinballComponent*)dword_1023734 == a3
|
|
|| (struct TPinballComponent*)dword_102373C == a3
|
|
|| (struct TPinballComponent*)dword_1023798 == a3
|
|
|| (struct TPinballComponent*)dword_10237A0 == a3
|
|
|| (struct TPinballComponent*)dword_10237A8 == a3
|
|
|| (struct TPinballComponent*)dword_102389C == a3
|
|
|| (struct TPinballComponent*)dword_10238A4 == a3
|
|
|| (struct TPinballComponent*)dword_10238C0 == a3
|
|
|| (struct TPinballComponent*)dword_10238C8 == a3
|
|
|| (struct TPinballComponent*)dword_10238E8 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, 0);
|
|
}
|
|
else
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E3C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E44)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EB4)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ED4)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EDC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(136, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(1250000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(9))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 102372C: using guessed type int dword_102372C;
|
|
// 1023734: using guessed type int dword_1023734;
|
|
// 102373C: using guessed type int dword_102373C;
|
|
// 1023798: using guessed type int dword_1023798;
|
|
// 10237A0: using guessed type int dword_10237A0;
|
|
// 10237A8: using guessed type int dword_10237A8;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 102389C: using guessed type int dword_102389C;
|
|
// 10238A4: using guessed type int dword_10238A4;
|
|
// 10238C0: using guessed type int dword_10238C0;
|
|
// 10238C8: using guessed type int dword_10238C8;
|
|
// 10238E8: using guessed type int dword_10238E8;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E3C: using guessed type int dword_1023E3C;
|
|
// 1023E44: using guessed type int dword_1023E44;
|
|
// 1023E6C: using guessed type int dword_1023E6C;
|
|
// 1023EB4: using guessed type int dword_1023EB4;
|
|
// 1023ED4: using guessed type int dword_1023ED4;
|
|
// 1023EDC: using guessed type int dword_1023EDC;
|
|
|
|
//----- (010105E3) --------------------------------------------------------
|
|
void DoomsdayMachineController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST10_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char* v6; // eax
|
|
int v7; // ST10_4
|
|
CHAR* v8; // eax
|
|
char Dest; // [esp+14h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 3;
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E3C)(
|
|
dword_1023E3C,
|
|
a3,
|
|
7,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ED4)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(137, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_102389C == a3 || (struct TPinballComponent*)dword_10238A4 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E3C)(
|
|
dword_1023E3C,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ED4)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v6 = get_rc_string(138, 0);
|
|
TTextBox::Display(tTextBox, a1, v6, 4.0);
|
|
v7 = SpecialAddScore(1250000);
|
|
v8 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v8, v7);
|
|
if (!AddRankProgress(9))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 102389C: using guessed type int dword_102389C;
|
|
// 10238A4: using guessed type int dword_10238A4;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E3C: using guessed type int dword_1023E3C;
|
|
// 1023ED4: using guessed type int dword_1023ED4;
|
|
|
|
//----- (01010767) --------------------------------------------------------
|
|
void CosmicPlagueController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST20_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char Dest; // [esp+24h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 75;
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023940)(
|
|
dword_1023940,
|
|
a3,
|
|
19,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239D0)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E5C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E94)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(139, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023930 == a3 || (struct TPinballComponent*)dword_10239C8 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E5C)(
|
|
dword_1023E5C,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E94)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 21;
|
|
MissionControl(66, 0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023940)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239D0)(20, 0.0);
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023930: using guessed type int dword_1023930;
|
|
// 1023940: using guessed type int dword_1023940;
|
|
// 10239C8: using guessed type int dword_10239C8;
|
|
// 10239D0: using guessed type int dword_10239D0;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023E5C: using guessed type int dword_1023E5C;
|
|
// 1023E94: using guessed type int dword_1023E94;
|
|
|
|
//----- (010108BC) --------------------------------------------------------
|
|
void CosmicPlaguePartTwoController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
char* v4; // eax
|
|
int v5; // ST08_4
|
|
CHAR* v6; // eax
|
|
char Dest; // [esp+Ch] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E84)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(140, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023C50 == a3)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E84)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v4 = get_rc_string(141, 0);
|
|
TTextBox::Display(tTextBox, a1, v4, 4.0);
|
|
v5 = SpecialAddScore(1750000);
|
|
v6 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v6, v5);
|
|
if (!AddRankProgress(11))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023C50: using guessed type int dword_1023C50;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E84: using guessed type int dword_1023E84;
|
|
|
|
//----- (010109D5) --------------------------------------------------------
|
|
void SecretMissionYellowController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023A1C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A3C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A3C)(23, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023C44)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A14)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A34)(11, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A34)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A34)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(142, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10239FC == a3)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 22;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
// 10239FC: using guessed type int dword_10239FC;
|
|
// 1023A14: using guessed type int dword_1023A14;
|
|
// 1023A1C: using guessed type int dword_1023A1C;
|
|
// 1023A34: using guessed type int dword_1023A34;
|
|
// 1023A3C: using guessed type int dword_1023A3C;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023C44: using guessed type int dword_1023C44;
|
|
|
|
//----- (01010AD3) --------------------------------------------------------
|
|
void SecretMissionRedController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023A04)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A24)(11, 2.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A24)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A24)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(143, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10239EC == a3)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 23;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
// 10239EC: using guessed type int dword_10239EC;
|
|
// 1023A04: using guessed type int dword_1023A04;
|
|
// 1023A24: using guessed type int dword_1023A24;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
|
|
//----- (01010B85) --------------------------------------------------------
|
|
void SecretMissionGreenController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
char* v4; // eax
|
|
int v5; // ST20_4
|
|
CHAR* v6; // eax
|
|
char Dest; // [esp+24h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023A0C)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A2C)(11, 1.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A2C)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A2C)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(144, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10239F4 == a3)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v4 = get_rc_string(145, 0);
|
|
TTextBox::Display(tTextBox, a1, v4, 4.0);
|
|
v5 = SpecialAddScore(1500000);
|
|
v6 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v6, v5);
|
|
if (!AddRankProgress(10))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
// 10239F4: using guessed type int dword_10239F4;
|
|
// 1023A0C: using guessed type int dword_1023A0C;
|
|
// 1023A2C: using guessed type int dword_1023A2C;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
|
|
//----- (01010CC2) --------------------------------------------------------
|
|
void TimeWarpController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST10_4
|
|
CHAR* v4; // eax
|
|
int v5; // ecx
|
|
char Dest; // [esp+14h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 25;
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E34)(
|
|
dword_1023E34,
|
|
a3,
|
|
7,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EE4)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(146, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10237C4 == a3
|
|
|| (struct TPinballComponent*)dword_10237CC == a3
|
|
|| (struct TPinballComponent*)dword_10237E8 == a3
|
|
|| (struct TPinballComponent*)dword_10237F0 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(__fastcall * **)(int, struct TPinballComponent*, signed int, DWORD))dword_1023E34)(
|
|
dword_1023E34,
|
|
a3,
|
|
20,
|
|
0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EE4)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 24;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
}
|
|
// 10237C4: using guessed type int dword_10237C4;
|
|
// 10237CC: using guessed type int dword_10237CC;
|
|
// 10237E8: using guessed type int dword_10237E8;
|
|
// 10237F0: using guessed type int dword_10237F0;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023E34: using guessed type int dword_1023E34;
|
|
// 1023EE4: using guessed type int dword_1023EE4;
|
|
|
|
//----- (01010DD3) --------------------------------------------------------
|
|
void TimeWarpPartTwoController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
char* v4; // eax
|
|
int v5; // eax
|
|
CHAR* v6; // ST30_4
|
|
CHAR* v7; // eax
|
|
char* v8; // eax
|
|
int v9; // esi
|
|
CHAR* v10; // ST30_4
|
|
CHAR* v11; // eax
|
|
char Dest; // [esp+38h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023880)(7, -1.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239B8)(7, -1.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(147, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023980 == a3)
|
|
{
|
|
v4 = get_rc_string(47, 0);
|
|
TTextBox::Display(tTextBox, a1, v4, 4.0);
|
|
if ((**(int(* **)(signed int, DWORD))dword_1023CF4)(37, 0.0) > 1)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023CF4)(33, 5.0);
|
|
v5 = (**(int(* **)(signed int, DWORD))dword_1023CF4)(37, 0.0);
|
|
v6 = get_rc_string(word_10246EC[2 * (v5 - 1)], 1);
|
|
v7 = get_rc_string(174, 0);
|
|
_sprintf(&Dest, v7, v6);
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((struct TPinballComponent*)dword_1023870 != a3)
|
|
return;
|
|
v8 = get_rc_string(46, 0);
|
|
TTextBox::Display(tTextBox, a1, v8, 4.0);
|
|
if ((**(int(* **)(signed int, DWORD))dword_1023CF4)(37, 0.0) < 9)
|
|
{
|
|
v9 = (**(int(* **)(signed int, DWORD))dword_1023CF4)(37, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023CF4)(41, 5.0);
|
|
v10 = get_rc_string(word_10246EC[2 * v9], 1);
|
|
v11 = get_rc_string(173, 0);
|
|
_sprintf(&Dest, v11, v10);
|
|
}
|
|
if (!AddRankProgress(12))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D1C + 20))();
|
|
}
|
|
}
|
|
SpecialAddScore(2000000);
|
|
(**(void(* **)(signed int, DWORD))dword_1023880)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239B8)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
}
|
|
// 1023870: using guessed type int dword_1023870;
|
|
// 1023880: using guessed type int dword_1023880;
|
|
// 1023980: using guessed type int dword_1023980;
|
|
// 10239B8: using guessed type int dword_10239B8;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023CF4: using guessed type int dword_1023CF4;
|
|
// 1023D1C: using guessed type int dword_1023D1C;
|
|
// 1023E54: using guessed type int dword_1023E54;
|
|
// 1023EBC: using guessed type int dword_1023EBC;
|
|
// 10246EC: using guessed type int word_10246EC[];
|
|
|
|
//----- (0101106F) --------------------------------------------------------
|
|
void MaelstromController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST18_4
|
|
CHAR* v4; // eax
|
|
int v5; // edx
|
|
char Dest; // [esp+1Ch] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 3;
|
|
(**(void(* **)(signed int, DWORD))dword_1023E4C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E7C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EAC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(148, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023A9C == a3
|
|
|| (struct TPinballComponent*)dword_1023AA4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AAC == a3
|
|
|| (struct TPinballComponent*)dword_1023ADC == a3
|
|
|| (struct TPinballComponent*)dword_1023AE4 == a3
|
|
|| (struct TPinballComponent*)dword_1023AEC == a3
|
|
|| (struct TPinballComponent*)dword_1023B20 == a3
|
|
|| (struct TPinballComponent*)dword_1023B28 == a3
|
|
|| (struct TPinballComponent*)dword_1023B30 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E4C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E7C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EAC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 25;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023A9C: using guessed type int dword_1023A9C;
|
|
// 1023AA4: using guessed type int dword_1023AA4;
|
|
// 1023AAC: using guessed type int dword_1023AAC;
|
|
// 1023ADC: using guessed type int dword_1023ADC;
|
|
// 1023AE4: using guessed type int dword_1023AE4;
|
|
// 1023AEC: using guessed type int dword_1023AEC;
|
|
// 1023B20: using guessed type int dword_1023B20;
|
|
// 1023B28: using guessed type int dword_1023B28;
|
|
// 1023B30: using guessed type int dword_1023B30;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023E4C: using guessed type int dword_1023E4C;
|
|
// 1023E7C: using guessed type int dword_1023E7C;
|
|
// 1023EAC: using guessed type int dword_1023EAC;
|
|
|
|
//----- (010111D3) --------------------------------------------------------
|
|
void MaelstromPartTwoController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST28_4
|
|
CHAR* v4; // eax
|
|
int v5; // edx
|
|
char Dest; // [esp+30h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 3;
|
|
(**(void(* **)(signed int, DWORD))dword_1023E64)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E74)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E84)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E9C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(149, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023B48 == a3
|
|
|| (struct TPinballComponent*)dword_1023B50 == a3
|
|
|| (struct TPinballComponent*)dword_1023B58 == a3
|
|
|| (struct TPinballComponent*)dword_1023B84 == a3
|
|
|| (struct TPinballComponent*)dword_1023B8C == a3
|
|
|| (struct TPinballComponent*)dword_1023B94 == a3
|
|
|| (struct TPinballComponent*)dword_1023BC8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BD0 == a3
|
|
|| (struct TPinballComponent*)dword_1023BD8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BE0 == a3
|
|
|| (struct TPinballComponent*)dword_1023BE8 == a3
|
|
|| (struct TPinballComponent*)dword_1023BF0 == a3
|
|
|| (struct TPinballComponent*)dword_1023C3C == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E64)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E74)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E84)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E9C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ECC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 26;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023B48: using guessed type int dword_1023B48;
|
|
// 1023B50: using guessed type int dword_1023B50;
|
|
// 1023B58: using guessed type int dword_1023B58;
|
|
// 1023B84: using guessed type int dword_1023B84;
|
|
// 1023B8C: using guessed type int dword_1023B8C;
|
|
// 1023B94: using guessed type int dword_1023B94;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023BC8: using guessed type int dword_1023BC8;
|
|
// 1023BD0: using guessed type int dword_1023BD0;
|
|
// 1023BD8: using guessed type int dword_1023BD8;
|
|
// 1023BE0: using guessed type int dword_1023BE0;
|
|
// 1023BE8: using guessed type int dword_1023BE8;
|
|
// 1023BF0: using guessed type int dword_1023BF0;
|
|
// 1023C3C: using guessed type int dword_1023C3C;
|
|
// 1023E64: using guessed type int dword_1023E64;
|
|
// 1023E74: using guessed type int dword_1023E74;
|
|
// 1023E84: using guessed type int dword_1023E84;
|
|
// 1023E9C: using guessed type int dword_1023E9C;
|
|
// 1023ECC: using guessed type int dword_1023ECC;
|
|
|
|
//----- (010113A1) --------------------------------------------------------
|
|
void MaelstromPartThreeController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
int v3; // ST30_4
|
|
CHAR* v4; // eax
|
|
int v5; // edx
|
|
char Dest; // [esp+38h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 5;
|
|
(**(void(* **)(signed int, DWORD))dword_1023E3C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E44)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EB4)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ED4)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EDC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = *(DWORD*)(dword_1023888 + 6);
|
|
v4 = get_rc_string(150, 0);
|
|
_sprintf(&Dest, v4, v3);
|
|
TTextBox::Display(tTextBox, a1, &Dest, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_102372C == a3
|
|
|| (struct TPinballComponent*)dword_1023734 == a3
|
|
|| (struct TPinballComponent*)dword_102373C == a3
|
|
|| (struct TPinballComponent*)dword_1023798 == a3
|
|
|| (struct TPinballComponent*)dword_10237A0 == a3
|
|
|| (struct TPinballComponent*)dword_10237A8 == a3
|
|
|| (struct TPinballComponent*)dword_102389C == a3
|
|
|| (struct TPinballComponent*)dword_10238A4 == a3
|
|
|| (struct TPinballComponent*)dword_10238C0 == a3
|
|
|| (struct TPinballComponent*)dword_10238C8 == a3
|
|
|| (struct TPinballComponent*)dword_10238E8 == a3)
|
|
{
|
|
v5 = *(DWORD*)(dword_1023888 + 6) - 1;
|
|
*(DWORD*)(dword_1023888 + 6) = v5;
|
|
if (v5)
|
|
{
|
|
MissionControl(67, a3);
|
|
}
|
|
else
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E3C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E44)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E6C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EB4)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023ED4)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023EDC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 27;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
}
|
|
// 102372C: using guessed type int dword_102372C;
|
|
// 1023734: using guessed type int dword_1023734;
|
|
// 102373C: using guessed type int dword_102373C;
|
|
// 1023798: using guessed type int dword_1023798;
|
|
// 10237A0: using guessed type int dword_10237A0;
|
|
// 10237A8: using guessed type int dword_10237A8;
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 102389C: using guessed type int dword_102389C;
|
|
// 10238A4: using guessed type int dword_10238A4;
|
|
// 10238C0: using guessed type int dword_10238C0;
|
|
// 10238C8: using guessed type int dword_10238C8;
|
|
// 10238E8: using guessed type int dword_10238E8;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023E3C: using guessed type int dword_1023E3C;
|
|
// 1023E44: using guessed type int dword_1023E44;
|
|
// 1023E6C: using guessed type int dword_1023E6C;
|
|
// 1023EB4: using guessed type int dword_1023EB4;
|
|
// 1023ED4: using guessed type int dword_1023ED4;
|
|
// 1023EDC: using guessed type int dword_1023EDC;
|
|
|
|
//----- (01011582) --------------------------------------------------------
|
|
void MaelstromPartFourController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
*(DWORD*)(dword_1023888 + 6) = 0;
|
|
(**(void(* **)(signed int, DWORD))dword_1023EC4)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(151, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023924 == a3)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023EC4)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 28;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
// 1023888: using guessed type int dword_1023888;
|
|
// 1023924: using guessed type int dword_1023924;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023EC4: using guessed type int dword_1023EC4;
|
|
|
|
//----- (01011612) --------------------------------------------------------
|
|
void MaelstromPartFiveController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(152, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023870 == a3)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023EBC)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 29;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
// 1023870: using guessed type int dword_1023870;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023EBC: using guessed type int dword_1023EBC;
|
|
|
|
//----- (01011699) --------------------------------------------------------
|
|
void MaelstromPartSixController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023940)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239D0)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E5C)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E94)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(153, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023930 == a3 || (struct TPinballComponent*)dword_10239C8 == a3)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E5C)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E94)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 30;
|
|
MissionControl(66, 0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023940)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239D0)(20, 0.0);
|
|
}
|
|
}
|
|
// 1023930: using guessed type int dword_1023930;
|
|
// 1023940: using guessed type int dword_1023940;
|
|
// 10239C8: using guessed type int dword_10239C8;
|
|
// 10239D0: using guessed type int dword_10239D0;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023E5C: using guessed type int dword_1023E5C;
|
|
// 1023E94: using guessed type int dword_1023E94;
|
|
|
|
//----- (01011798) --------------------------------------------------------
|
|
void MaelstromPartSevenController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
AdvanceWormHoleDestination(1);
|
|
(**(void(* **)(signed int, DWORD))dword_10239EC)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239F4)(7, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239FC)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(154, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_10239EC == a3
|
|
|| (struct TPinballComponent*)dword_10239F4 == a3
|
|
|| (struct TPinballComponent*)dword_10239FC == a3)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 31;
|
|
MissionControl(66, 0);
|
|
}
|
|
}
|
|
// 10239EC: using guessed type int dword_10239EC;
|
|
// 10239F4: using guessed type int dword_10239F4;
|
|
// 10239FC: using guessed type int dword_10239FC;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
|
|
//----- (0101184C) --------------------------------------------------------
|
|
void MaelstromPartEightController(int a1@<ebx > , int a2, struct TPinballComponent* a3)
|
|
{
|
|
char* v3; // eax
|
|
int v4; // ST10_4
|
|
CHAR* v5; // eax
|
|
char* v6; // eax
|
|
char Dest; // [esp+14h] [ebp-44h]
|
|
|
|
if (a2 != 63)
|
|
{
|
|
if (a2 == 66)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_10239C0)(19, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(7, 0.0);
|
|
}
|
|
else if (a2 != 67)
|
|
{
|
|
return;
|
|
}
|
|
v3 = get_rc_string(155, 0);
|
|
TTextBox::Display(tTextBox, a1, v3, -1.0);
|
|
return;
|
|
}
|
|
if ((struct TPinballComponent*)dword_1023980 == a3)
|
|
{
|
|
(**(void(* **)(signed int, DWORD))dword_1023E54)(20, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_10239C0)(20, 0.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v4 = SpecialAddScore(5000000);
|
|
v5 = get_rc_string(78, 0);
|
|
_sprintf(&Dest, v5, v4);
|
|
v6 = get_rc_string(48, 0);
|
|
TTextBox::Display(dword_1023E1C, a1, v6, 4.0);
|
|
if (!AddRankProgress(18))
|
|
{
|
|
TTextBox::Display(tTextBox, a1, &Dest, 8.0);
|
|
(*(void (**)(void))(*(DWORD*)dword_1023D14 + 20))();
|
|
}
|
|
}
|
|
}
|
|
// 1023980: using guessed type int dword_1023980;
|
|
// 10239C0: using guessed type int dword_10239C0;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
// 1023D14: using guessed type int dword_1023D14;
|
|
// 1023E54: using guessed type int dword_1023E54;
|
|
|
|
//----- (01011985) --------------------------------------------------------
|
|
void GameoverController(int a1, struct TPinballComponent* a2)
|
|
{
|
|
TTextBox* v2; // eax
|
|
int v3; // esi
|
|
int v4; // esi
|
|
int v5; // ecx
|
|
CHAR* v6; // eax
|
|
int v7; // esi
|
|
int v8; // esi
|
|
int v9; // ecx
|
|
int v10; // esi
|
|
CHAR* v11; // eax
|
|
char* v12; // eax
|
|
int v13; // [esp+10h] [ebp-94h]
|
|
int v14; // [esp+10h] [ebp-94h]
|
|
char Dest; // [esp+20h] [ebp-84h]
|
|
|
|
if (a1 != 66)
|
|
{
|
|
if (a1 != 67)
|
|
return;
|
|
v2 = tTextBox;
|
|
v3 = *(DWORD*)((char*)tTextBox + 6);
|
|
if (!(v3 & 0x100))
|
|
{
|
|
if (!(v3 & 0x200))
|
|
goto LABEL_33;
|
|
goto LABEL_18;
|
|
}
|
|
v4 = *(DWORD*)((_BYTE*)tTextBox + 6) & 0xF;
|
|
v5 = **(DWORD * *)((char*)dword_1025040 + 28 * v4 + 102);
|
|
v3 = v4 + 1;
|
|
if (v5 >= 0)
|
|
{
|
|
switch (v3)
|
|
{
|
|
case 1:
|
|
v13 = v5;
|
|
v6 = get_rc_string(180, 0);
|
|
break;
|
|
case 2:
|
|
v13 = v5;
|
|
v6 = get_rc_string(181, 0);
|
|
break;
|
|
case 3:
|
|
v13 = v5;
|
|
v6 = get_rc_string(182, 0);
|
|
break;
|
|
case 4:
|
|
v13 = v5;
|
|
v6 = get_rc_string(183, 0);
|
|
break;
|
|
default:
|
|
goto LABEL_9;
|
|
}
|
|
_sprintf(&Dest, v6, v13);
|
|
TTextBox::Display(tTextBox, 256, &Dest, 3.0);
|
|
if (v3 == *(DWORD*)((char*)dword_1025040 + 214))
|
|
v7 = 512;
|
|
else
|
|
v7 = v3 | 0x100;
|
|
goto LABEL_32;
|
|
}
|
|
LABEL_9:
|
|
*(DWORD*)((char*)tTextBox + 6) = 512;
|
|
v2 = tTextBox;
|
|
LABEL_18:
|
|
v8 = v3 & 0xF;
|
|
v9 = dword_1025598[9 * v8];
|
|
v10 = v8 + 1;
|
|
if (v9 > 0)
|
|
{
|
|
switch (v10)
|
|
{
|
|
case 1:
|
|
v14 = v9;
|
|
v11 = get_rc_string(184, 0);
|
|
break;
|
|
case 2:
|
|
v14 = v9;
|
|
v11 = get_rc_string(185, 0);
|
|
break;
|
|
case 3:
|
|
v14 = v9;
|
|
v11 = get_rc_string(186, 0);
|
|
break;
|
|
case 4:
|
|
v14 = v9;
|
|
v11 = get_rc_string(187, 0);
|
|
break;
|
|
case 5:
|
|
v14 = v9;
|
|
v11 = get_rc_string(188, 0);
|
|
break;
|
|
default:
|
|
goto LABEL_33;
|
|
}
|
|
_sprintf(&Dest, v11, v14);
|
|
TTextBox::Display(tTextBox, 256, &Dest, 3.0);
|
|
if (v10 == 5)
|
|
v7 = 0;
|
|
else
|
|
v7 = v10 | 0x200;
|
|
LABEL_32:
|
|
*(DWORD*)((char*)tTextBox + 6) = v7;
|
|
return;
|
|
}
|
|
LABEL_33:
|
|
*(DWORD*)((char*)v2 + 6) = 256;
|
|
v12 = get_rc_string(172, 0);
|
|
TTextBox::Display(tTextBox, 256, v12, 10.0);
|
|
return;
|
|
}
|
|
(**(void(* **)(signed int, DWORD))dword_1023EEC)(20, 0.0);
|
|
pb_mode_change(2);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A74)(1022, 0.0);
|
|
(**(void(* **)(signed int, DWORD))dword_1023A7C)(1022, 0.0);
|
|
*(DWORD*)((char*)tTextBox + 6) = 0;
|
|
}
|
|
// 1023A74: using guessed type int dword_1023A74;
|
|
// 1023A7C: using guessed type int dword_1023A7C;
|
|
// 1023EEC: using guessed type int dword_1023EEC;
|
|
|
|
//----- (01011B98) --------------------------------------------------------
|
|
void UnselectMissionController(int a1, struct TPinballComponent* a2)
|
|
{
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
}
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|
|
|
|
//----- (01011BB5) --------------------------------------------------------
|
|
void MissionControl(int a1, struct TPinballComponent* a2)
|
|
{
|
|
int v2; // ebx
|
|
signed int v3; // edi
|
|
void(__thiscall * **v4)(DWORD, signed int, DWORD); // ebx
|
|
void(__thiscall * **v5)(DWORD, signed int, DWORD); // ebx
|
|
char* v6; // eax
|
|
char* v7; // eax
|
|
int v8; // [esp+30h] [ebp-4h]
|
|
|
|
if (dword_1023BBC)
|
|
{
|
|
v2 = *(DWORD*)(dword_1023BBC + 6);
|
|
v3 = a1;
|
|
v8 = *(DWORD*)(dword_1023BBC + 6);
|
|
switch (a1)
|
|
{
|
|
case 47:
|
|
if ((struct TPinballComponent*)dword_1023978 == a2 && v2 > 1)
|
|
{
|
|
v4 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A8C;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A8C)(34, 0.0);
|
|
(**v4)(v4, 20, 0.0);
|
|
v5 = (void(__thiscall * **)(DWORD, signed int, DWORD))dword_1023A94;
|
|
(**(void(* **)(signed int, DWORD))dword_1023A94)(34, 0.0);
|
|
(**v5)(v5, 20, 0.0);
|
|
v6 = get_rc_string(109, 0);
|
|
TTextBox::Display(tTextBox, (int)v5, v6, 4.0);
|
|
*(DWORD*)(dword_1023BBC + 6) = 1;
|
|
MissionControl(66, 0);
|
|
v2 = v8;
|
|
}
|
|
break;
|
|
case 60:
|
|
if ((struct TPinballComponent*)dword_1023978 == a2 && v2)
|
|
{
|
|
if ((**(int(* **)(signed int, DWORD))dword_1023978)(37, 0.0) == 1)
|
|
{
|
|
v7 = get_rc_string(116, 0);
|
|
TTextBox::Display(tTextBox, v2, v7, 4.0);
|
|
}
|
|
break;
|
|
}
|
|
if (tTextBox == a2)
|
|
goto LABEL_14;
|
|
break;
|
|
case 1009:
|
|
LABEL_14:
|
|
v3 = 67;
|
|
break;
|
|
}
|
|
switch (v2)
|
|
{
|
|
case 0:
|
|
WaitingDeploymentController(v2, v3, a2);
|
|
break;
|
|
case 1:
|
|
SelectMissionController(v3, a2);
|
|
break;
|
|
case 2:
|
|
PracticeMissionController(v2, v3, a2);
|
|
break;
|
|
case 3:
|
|
LaunchTrainingController(v2, v3, a2);
|
|
break;
|
|
case 4:
|
|
ReentryTrainingController(v2, v3, a2);
|
|
break;
|
|
case 5:
|
|
ScienceMissionController(v2, v3, a2);
|
|
break;
|
|
case 6:
|
|
StrayCometController(v2, v3, a2);
|
|
break;
|
|
case 7:
|
|
BlackHoleThreatController(v2, v3, a2);
|
|
break;
|
|
case 8:
|
|
SpaceRadiationController(v2, v3, a2);
|
|
break;
|
|
case 9:
|
|
BugHuntController(v2, v3, a2);
|
|
break;
|
|
case 10:
|
|
AlienMenaceController(v2, v3, a2);
|
|
break;
|
|
case 11:
|
|
RescueMissionController(v2, v3, a2);
|
|
break;
|
|
case 12:
|
|
SatelliteController(v2, v3, a2);
|
|
break;
|
|
case 13:
|
|
ReconnaissanceController(v2, v3, a2);
|
|
break;
|
|
case 14:
|
|
DoomsdayMachineController(v2, v3, a2);
|
|
break;
|
|
case 15:
|
|
CosmicPlagueController(v2, v3, a2);
|
|
break;
|
|
case 16:
|
|
SecretMissionYellowController(v2, v3, a2);
|
|
break;
|
|
case 17:
|
|
TimeWarpController(v2, v3, a2);
|
|
break;
|
|
case 18:
|
|
MaelstromController(v2, v3, a2);
|
|
break;
|
|
case 20:
|
|
AlienMenacePartTwoController(v2, v3, a2);
|
|
break;
|
|
case 21:
|
|
CosmicPlaguePartTwoController(v2, v3, a2);
|
|
break;
|
|
case 22:
|
|
SecretMissionRedController(v2, v3, a2);
|
|
break;
|
|
case 23:
|
|
SecretMissionGreenController(v2, v3, a2);
|
|
break;
|
|
case 24:
|
|
TimeWarpPartTwoController(v2, v3, a2);
|
|
break;
|
|
case 25:
|
|
MaelstromPartTwoController(v2, v3, a2);
|
|
break;
|
|
case 26:
|
|
MaelstromPartThreeController(v2, v3, a2);
|
|
break;
|
|
case 27:
|
|
MaelstromPartFourController(v2, v3, a2);
|
|
break;
|
|
case 28:
|
|
MaelstromPartFiveController(v2, v3, a2);
|
|
break;
|
|
case 29:
|
|
MaelstromPartSixController(v2, v3, a2);
|
|
break;
|
|
case 30:
|
|
MaelstromPartSevenController(v2, v3, a2);
|
|
break;
|
|
case 31:
|
|
MaelstromPartEightController(v2, v3, a2);
|
|
break;
|
|
case 32:
|
|
GameoverController(v3, a2);
|
|
break;
|
|
default:
|
|
UnselectMissionController(v3, a2);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
// 1023978: using guessed type int dword_1023978;
|
|
// 1023A8C: using guessed type int dword_1023A8C;
|
|
// 1023A94: using guessed type int dword_1023A94;
|
|
// 1023BBC: using guessed type int dword_1023BBC;
|