#include"pinball.h" //----- (0100E657) -------------------------------------------------------- void __userpurge WaitingDeploymentController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax switch ( a2 ) { case 63: if ( (struct TPinballComponent *)dword_1023838 == a3 || (struct TPinballComponent *)dword_1023840 == a3 ) { *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); } break; case 66: TTextBox::Clear(dword_1023E24, a1); dword_1025048 = 0; break; case 67: v3 = get_rc_string(50, 0); TTextBox::Display(dword_1023E24, 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 __stdcall 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 (__stdcall ***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 (__stdcall ***)(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 (__stdcall ***)(signed int, _DWORD))dword_1023888)(15, 2.0); (**(void (__stdcall ***)(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 *)&off_1023884) && (**(int (__stdcall ***)(signed int, _DWORD))dword_1023978)(37, 0.0) ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023888)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023BBC)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023CFC)(26, -1.0); if ( light_on((struct component_tag *)&off_1023EB8) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EBC)(20, 0.0); if ( light_on((struct component_tag *)&off_1023EC0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EC4)(20, 0.0); if ( light_on((struct component_tag *)&off_1023EC8) ) (**(void (__stdcall ***)(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(dword_1023E24, 0, &Dest, 4.0); } } else { if ( a1 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023BBC)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023CFC)(34, 0.0); (**(void (__stdcall ***)(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 (__stdcall ***)(signed int, _DWORD))dword_1023A8C)(34, 0.0); (**v3)(v3, 20, 0.0); v4 = (void (__thiscall ***)(_DWORD, signed int, _DWORD))dword_1023A94; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A94)(34, 0.0); (**v4)(v4, 20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EEC)(20, 0.0); } else if ( a1 != 67 ) { return; } if ( (**(int (__stdcall ***)(signed int, _DWORD))dword_1023978)(37, 0.0) ) { if ( light_on((struct component_tag *)&off_1023884) ) { v8 = get_rc_string(word_1024708[2 * *(_DWORD *)(dword_1023888 + 6)], 1); v9 = get_rc_string(106, 0); _sprintf(&Dest, v9, v8); TTextBox::Display(dword_1023E24, 0, &Dest, -1.0); if ( light_on((struct component_tag *)&off_1023EC0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EC4)(20, 0.0); if ( light_on((struct component_tag *)&off_1023EC8) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ECC)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023EB8) ) { v6 = (void (__stdcall ***)(signed int, _DWORD))dword_1023EBC; goto LABEL_28; } } else { v7 = get_rc_string(104, 0); TTextBox::Display(dword_1023E24, 0, v7, -1.0); if ( light_on((struct component_tag *)&off_1023EB8) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EBC)(20, 0.0); if ( light_on((struct component_tag *)&off_1023EC0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EC4)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023EC8) ) { v6 = (void (__stdcall ***)(signed int, _DWORD))dword_1023ECC; goto LABEL_28; } } } else { v5 = get_rc_string(105, 0); TTextBox::Display(dword_1023E24, 0, v5, -1.0); if ( light_on((struct component_tag *)&off_1023EB8) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EBC)(20, 0.0); if ( light_on((struct component_tag *)&off_1023EC8) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ECC)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023EC0) ) { v6 = (void (__stdcall ***)(signed int, _DWORD))dword_1023EC4; LABEL_28: (**v6)(7, 0.0); return; } } } } // 1023870: using guessed type int dword_1023870; // 1023884: using guessed type char *off_1023884; // 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 *off_1023EB8; // 1023EBC: using guessed type int dword_1023EBC; // 1023EC0: using guessed type char *off_1023EC0; // 1023EC4: using guessed type int dword_1023EC4; // 1023EC8: using guessed type char *off_1023EC8; // 1023ECC: using guessed type int dword_1023ECC; // 1023EEC: using guessed type int dword_1023EEC; // 1024708: using guessed type __int16 word_1024708[]; //----- (0100EBF3) -------------------------------------------------------- void __userpurge PracticeMissionController(int a1@, 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 (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E8C)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v6 = get_rc_string(108, 0); TTextBox::Display(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(500000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(6) ) { TTextBox::Display(dword_1023E24, 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 __userpurge LaunchTrainingController(int a1@, 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(dword_1023E24, 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(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(500000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(6) ) { TTextBox::Display(dword_1023E24, 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 __userpurge ReentryTrainingController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023A94)(20, 0.0); (**v4)(v4, 32, 0.2); (**v4)(v4, 26, 0.2); (**(void (__stdcall ***)(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(dword_1023E24, 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(dword_1023E24, a1, v8, 4.0); v9 = SpecialAddScore(500000); v10 = get_rc_string(78, 0); _sprintf(&Dest, v10, v9); if ( !AddRankProgress(6) ) { TTextBox::Display(dword_1023E24, 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 __userpurge ScienceMissionController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023A9C)(50, 0.0); *(_DWORD *)(dword_1023AA4 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AA4)(50, 0.0); *(_DWORD *)(dword_1023AAC + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AAC)(50, 0.0); *(_DWORD *)(dword_1023ADC + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ADC)(50, 0.0); *(_DWORD *)(dword_1023AE4 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AE4)(50, 0.0); *(_DWORD *)(dword_1023AEC + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AEC)(50, 0.0); *(_DWORD *)(dword_1023B20 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B20)(50, 0.0); *(_DWORD *)(dword_1023B28 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B28)(50, 0.0); *(_DWORD *)(dword_1023B30 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B30)(50, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E4C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E7C)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E4C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E7C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EAC)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v6 = get_rc_string(115, 0); TTextBox::Display(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(750000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(9) ) { TTextBox::Display(dword_1023E24, 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 __userpurge StrayCometController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E64)(20, 0.0); (**(void (__stdcall ***)(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 (__stdcall ***)(signed int, _DWORD))dword_1023E54)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v4 = get_rc_string(119, 0); TTextBox::Display(dword_1023E24, a1, v4, 4.0); v5 = SpecialAddScore(1000000); v6 = get_rc_string(78, 0); _sprintf(&Dest, v6, v5); if ( !AddRankProgress(8) ) { TTextBox::Display(dword_1023E24, a1, &Dest, 8.0); (*(void (**)(void))(*(_DWORD *)dword_1023D14 + 20))(); } } } else { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023C30)(20, 0.0); *(_DWORD *)(dword_1023C10 + 6) = 0; (**(void (__stdcall ***)(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(dword_1023E24, 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 __userpurge SpaceRadiationController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023A3C)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, a1, v4, 4.0); v5 = SpecialAddScore(1000000); v6 = get_rc_string(78, 0); _sprintf(&Dest, v6, v5); if ( !AddRankProgress(8) ) { TTextBox::Display(dword_1023E24, a1, &Dest, 8.0); (*(void (**)(void))(*(_DWORD *)dword_1023D14 + 20))(); } } } else { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023C28)(20, 0.0); *(_DWORD *)(dword_1023BF8 + 6) = 0; (**(void (__stdcall ***)(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(dword_1023E24, 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 __userpurge BlackHoleThreatController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax void (__stdcall ***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 *)&off_1023EB0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EB4)(20, 0.0); if ( light_on((struct component_tag *)&off_1023EA0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EA4)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v6 = get_rc_string(124, 0); TTextBox::Display(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(1000000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(8) ) { TTextBox::Display(dword_1023E24, a1, &Dest, 8.0); (*(void (**)(void))(*(_DWORD *)dword_1023D14 + 20))(); } } } else { if ( a2 == 66 ) { (**(void (__stdcall ***)(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(dword_1023E24, a1, v5, v9); if ( light_on((struct component_tag *)&off_1023EB0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EB4)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023EA0) ) { v4 = (void (__stdcall ***)(signed int, _DWORD))dword_1023EA4; goto LABEL_12; } } else { v3 = get_rc_string(122, 0); TTextBox::Display(dword_1023E24, a1, v3, v9); if ( light_on((struct component_tag *)&off_1023EA0) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EA4)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023EB0) ) { v4 = (void (__stdcall ***)(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 *off_1023EA0; // 1023EA4: using guessed type int dword_1023EA4; // 1023EB0: using guessed type char *off_1023EB0; // 1023EB4: using guessed type int dword_1023EB4; //----- (0100F900) -------------------------------------------------------- void __userpurge BugHuntController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023A9C)(50, 0.0); *(_DWORD *)(dword_1023AA4 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AA4)(50, 0.0); *(_DWORD *)(dword_1023AAC + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AAC)(50, 0.0); *(_DWORD *)(dword_1023ADC + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ADC)(50, 0.0); *(_DWORD *)(dword_1023AE4 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AE4)(50, 0.0); *(_DWORD *)(dword_1023AEC + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023AEC)(50, 0.0); *(_DWORD *)(dword_1023B20 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B20)(50, 0.0); *(_DWORD *)(dword_1023B28 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B28)(50, 0.0); *(_DWORD *)(dword_1023B30 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B30)(50, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023B78)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023BB4)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023C28)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023C30)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E64)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E74)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E84)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E9C)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E64)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E74)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E84)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E9C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ECC)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v6 = get_rc_string(126, 0); TTextBox::Display(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(750000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(7) ) { TTextBox::Display(dword_1023E24, 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 __userpurge RescueMissionController(int a1@, int a2, struct TPinballComponent *a3) { BOOL v3; // eax char *v4; // eax void (__stdcall ***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 ) { goto LABEL_31; } if ( (struct TPinballComponent *)dword_1023980 != a3 || !light_on((struct component_tag *)&off_102393C) ) return; v7 = *(_DWORD *)(dword_1023888 + 6) - 1; *(_DWORD *)(dword_1023888 + 6) = v7; if ( v7 ) { LABEL_31: MissionControl(67, a3); return; } if ( light_on((struct component_tag *)&off_1023E48) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E4C)(20, 0.0); if ( light_on((struct component_tag *)&off_1023E50) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E54)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v8 = get_rc_string(129, 0); TTextBox::Display(dword_1023E24, a1, v8, 4.0); v9 = SpecialAddScore(750000); v10 = get_rc_string(78, 0); _sprintf(&Dest, v10, v9); if ( !AddRankProgress(7) ) { TTextBox::Display(dword_1023E24, a1, &Dest, 8.0); (*(void (**)(void))(*(_DWORD *)dword_1023D14 + 20))(); } } else { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023940)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239D0)(20, 0.0); *(_DWORD *)(dword_1023888 + 6) = 1; } else if ( a2 != 67 ) { return; } v3 = light_on((struct component_tag *)&off_102393C); v11 = -1.0; if ( v3 ) { v6 = get_rc_string(128, 0); TTextBox::Display(dword_1023E24, a1, v6, v11); if ( light_on((struct component_tag *)&off_1023E48) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E4C)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023E50) ) { v5 = (void (__stdcall ***)(signed int, _DWORD))dword_1023E54; goto LABEL_11; } } else { v4 = get_rc_string(127, 0); TTextBox::Display(dword_1023E24, a1, v4, v11); if ( light_on((struct component_tag *)&off_1023E50) ) (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E54)(20, 0.0); if ( !light_on((struct component_tag *)&off_1023E48) ) { v5 = (void (__stdcall ***)(signed int, _DWORD))dword_1023E4C; LABEL_11: (**v5)(7, 0.0); return; } } } } // 1023888: using guessed type int dword_1023888; // 102393C: using guessed type char *off_102393C; // 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 *off_1023E48; // 1023E4C: using guessed type int dword_1023E4C; // 1023E50: using guessed type char *off_1023E50; // 1023E54: using guessed type int dword_1023E54; //----- (0100FF35) -------------------------------------------------------- void __userpurge AlienMenaceController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023704)(11, 0.0); v3 = (void (__thiscall ***)(_DWORD, signed int, _DWORD))dword_1023A8C; (**(void (__stdcall ***)(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 (__stdcall ***)(signed int, _DWORD))dword_1023A94)(20, 0.0); (**v4)(v4, 32, 0.2); (**v4)(v4, 26, 0.2); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E6C)(7, 0.0); } else if ( a2 != 67 ) { return; } v5 = get_rc_string(175, 0); TTextBox::Display(dword_1023E24, a1, v5, -1.0); return; } if ( (struct TPinballComponent *)dword_10236E4 == a3 ) { if ( *(_DWORD *)(dword_10236E4 + 78) ) { (**(void (__stdcall ***)(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 __userpurge AlienMenacePartTwoController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023A94)(34, 0.0); (**v4)(v4, 20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E74)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E8C)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v8 = get_rc_string(130, 0); TTextBox::Display(dword_1023E24, a1, v8, 4.0); v9 = SpecialAddScore(750000); v10 = get_rc_string(78, 0); _sprintf(&Dest, v10, v9); if ( !AddRankProgress(7) ) { TTextBox::Display(dword_1023E24, 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 __userpurge SatelliteController(int a1@, 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(dword_1023E24, 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(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(1250000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(9) ) { TTextBox::Display(dword_1023E24, 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 __userpurge ReconnaissanceController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E3C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E44)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E6C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EB4)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ED4)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E3C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E44)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E6C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EB4)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ED4)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EDC)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v6 = get_rc_string(136, 0); TTextBox::Display(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(1250000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(9) ) { TTextBox::Display(dword_1023E24, 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 __userpurge DoomsdayMachineController(int a1@, 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 (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023ED4)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v6 = get_rc_string(138, 0); TTextBox::Display(dword_1023E24, a1, v6, 4.0); v7 = SpecialAddScore(1250000); v8 = get_rc_string(78, 0); _sprintf(&Dest, v8, v7); if ( !AddRankProgress(9) ) { TTextBox::Display(dword_1023E24, 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 __userpurge CosmicPlagueController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_10239D0)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E5C)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E94)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 21; MissionControl(66, 0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023940)(20, 0.0); (**(void (__stdcall ***)(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 __userpurge CosmicPlaguePartTwoController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E84)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(140, 0); TTextBox::Display(dword_1023E24, a1, v3, -1.0); return; } if ( (struct TPinballComponent *)dword_1023C50 == a3 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E84)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); v4 = get_rc_string(141, 0); TTextBox::Display(dword_1023E24, a1, v4, 4.0); v5 = SpecialAddScore(1750000); v6 = get_rc_string(78, 0); _sprintf(&Dest, v6, v5); if ( !AddRankProgress(11) ) { TTextBox::Display(dword_1023E24, 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 __userpurge SecretMissionYellowController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax if ( a2 != 63 ) { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A1C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A3C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A3C)(23, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023C44)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A14)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A34)(11, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A34)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A34)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(142, 0); TTextBox::Display(dword_1023E24, 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 __userpurge SecretMissionRedController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax if ( a2 != 63 ) { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A04)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A24)(11, 2.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A24)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A24)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(143, 0); TTextBox::Display(dword_1023E24, 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 __userpurge SecretMissionGreenController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023A0C)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A2C)(11, 1.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A2C)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A2C)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(144, 0); TTextBox::Display(dword_1023E24, 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(dword_1023E24, a1, v4, 4.0); v5 = SpecialAddScore(1500000); v6 = get_rc_string(78, 0); _sprintf(&Dest, v6, v5); if ( !AddRankProgress(10) ) { TTextBox::Display(dword_1023E24, 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 __userpurge TimeWarpController(int a1@, 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 (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(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 __userpurge TimeWarpPartTwoController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023880)(7, -1.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239B8)(7, -1.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E54)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EBC)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(147, 0); TTextBox::Display(dword_1023E24, a1, v3, -1.0); return; } if ( (struct TPinballComponent *)dword_1023980 == a3 ) { v4 = get_rc_string(47, 0); TTextBox::Display(dword_1023E24, a1, v4, 4.0); if ( (**(int (__stdcall ***)(signed int, _DWORD))dword_1023CF4)(37, 0.0) > 1 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023CF4)(33, 5.0); v5 = (**(int (__stdcall ***)(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(dword_1023E24, a1, &Dest, 8.0); } } else { if ( (struct TPinballComponent *)dword_1023870 != a3 ) return; v8 = get_rc_string(46, 0); TTextBox::Display(dword_1023E24, a1, v8, 4.0); if ( (**(int (__stdcall ***)(signed int, _DWORD))dword_1023CF4)(37, 0.0) < 9 ) { v9 = (**(int (__stdcall ***)(signed int, _DWORD))dword_1023CF4)(37, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, a1, &Dest, 8.0); (*(void (**)(void))(*(_DWORD *)dword_1023D1C + 20))(); } } SpecialAddScore(2000000); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023880)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239B8)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E54)(20, 0.0); (**(void (__stdcall ***)(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 __int16 word_10246EC[]; //----- (0101106F) -------------------------------------------------------- void __userpurge MaelstromController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E4C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E7C)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E4C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E7C)(20, 0.0); (**(void (__stdcall ***)(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 __userpurge MaelstromPartTwoController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E64)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E74)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E84)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E9C)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E64)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E74)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E84)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E9C)(20, 0.0); (**(void (__stdcall ***)(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 __userpurge MaelstromPartThreeController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E3C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E44)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E6C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EB4)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ED4)(7, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 (__stdcall ***)(signed int, _DWORD))dword_1023E3C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E44)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E6C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EB4)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023ED4)(20, 0.0); (**(void (__stdcall ***)(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 __userpurge MaelstromPartFourController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax if ( a2 != 63 ) { if ( a2 == 66 ) { *(_DWORD *)(dword_1023888 + 6) = 0; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EC4)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(151, 0); TTextBox::Display(dword_1023E24, a1, v3, -1.0); return; } if ( (struct TPinballComponent *)dword_1023924 == a3 ) { (**(void (__stdcall ***)(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 __userpurge MaelstromPartFiveController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax if ( a2 != 63 ) { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EBC)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(152, 0); TTextBox::Display(dword_1023E24, a1, v3, -1.0); return; } if ( (struct TPinballComponent *)dword_1023870 == a3 ) { (**(void (__stdcall ***)(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 __userpurge MaelstromPartSixController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax if ( a2 != 63 ) { if ( a2 == 66 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023940)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239D0)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E5C)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E94)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(153, 0); TTextBox::Display(dword_1023E24, a1, v3, -1.0); return; } if ( (struct TPinballComponent *)dword_1023930 == a3 || (struct TPinballComponent *)dword_10239C8 == a3 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E5C)(20, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E94)(20, 0.0); *(_DWORD *)(dword_1023BBC + 6) = 30; MissionControl(66, 0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023940)(20, 0.0); (**(void (__stdcall ***)(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 __userpurge MaelstromPartSevenController(int a1@, int a2, struct TPinballComponent *a3) { char *v3; // eax if ( a2 != 63 ) { if ( a2 == 66 ) { AdvanceWormHoleDestination(1); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239EC)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239F4)(7, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_10239FC)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(154, 0); TTextBox::Display(dword_1023E24, 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 __userpurge MaelstromPartEightController(int a1@, 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 (__stdcall ***)(signed int, _DWORD))dword_10239C0)(19, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E54)(7, 0.0); } else if ( a2 != 67 ) { return; } v3 = get_rc_string(155, 0); TTextBox::Display(dword_1023E24, a1, v3, -1.0); return; } if ( (struct TPinballComponent *)dword_1023980 == a3 ) { (**(void (__stdcall ***)(signed int, _DWORD))dword_1023E54)(20, 0.0); (**(void (__stdcall ***)(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(dword_1023E24, 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 __stdcall 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 = dword_1023E24; v3 = *(_DWORD *)((char *)dword_1023E24 + 6); if ( !(v3 & 0x100) ) { if ( !(v3 & 0x200) ) goto LABEL_33; goto LABEL_18; } v4 = *(_DWORD *)((_BYTE *)dword_1023E24 + 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(dword_1023E24, 256, &Dest, 3.0); if ( v3 == *(_DWORD *)((char *)dword_1025040 + 214) ) v7 = 512; else v7 = v3 | 0x100; goto LABEL_32; } LABEL_9: *(_DWORD *)((char *)dword_1023E24 + 6) = 512; v2 = dword_1023E24; 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(dword_1023E24, 256, &Dest, 3.0); if ( v10 == 5 ) v7 = 0; else v7 = v10 | 0x200; LABEL_32: *(_DWORD *)((char *)dword_1023E24 + 6) = v7; return; } LABEL_33: *(_DWORD *)((char *)v2 + 6) = 256; v12 = get_rc_string(172, 0); TTextBox::Display(dword_1023E24, 256, v12, 10.0); return; } (**(void (__stdcall ***)(signed int, _DWORD))dword_1023EEC)(20, 0.0); pb_mode_change(2); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A74)(1022, 0.0); (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A7C)(1022, 0.0); *(_DWORD *)((char *)dword_1023E24 + 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 __stdcall UnselectMissionController(int a1, struct TPinballComponent *a2) { *(_DWORD *)(dword_1023BBC + 6) = 1; MissionControl(66, 0); } // 1023BBC: using guessed type int dword_1023BBC; //----- (01011BB5) -------------------------------------------------------- void __stdcall 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 (__stdcall ***)(signed int, _DWORD))dword_1023A8C)(34, 0.0); (**v4)(v4, 20, 0.0); v5 = (void (__thiscall ***)(_DWORD, signed int, _DWORD))dword_1023A94; (**(void (__stdcall ***)(signed int, _DWORD))dword_1023A94)(34, 0.0); (**v5)(v5, 20, 0.0); v6 = get_rc_string(109, 0); TTextBox::Display(dword_1023E24, (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 (__stdcall ***)(signed int, _DWORD))dword_1023978)(37, 0.0) == 1 ) { v7 = get_rc_string(116, 0); TTextBox::Display(dword_1023E24, v2, v7, 4.0); } break; } if ( dword_1023E24 == 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;