Subversion Repositories Games.Carmageddon

Rev

Rev 20 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 20 Rev 21
Line 585... Line 585...
585
// IDA: void __usercall SetFlag(int i@<EAX>)
585
// IDA: void __usercall SetFlag(int i@<EAX>)
586
void SetFlag(int i) {
586
void SetFlag(int i) {
587
    LOG_TRACE("(%d)", i);
587
    LOG_TRACE("(%d)", i);
588
 
588
 
589
    if (gNet_mode == eNet_mode_none) {
589
    if (gNet_mode == eNet_mode_none) {
590
        NewTextHeadupSlot(4, 0, 3000, -4, "You Cheat!");
590
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 3000, -4, "You Cheat!");
591
    }
591
    }
592
    gI_am_cheating = i;
592
    gI_am_cheating = i;
593
    F4Key();
593
    F4Key();
594
}
594
}
595
 
595
 
Line 764... Line 764...
764
// IDA: void __cdecl LookLeft()
764
// IDA: void __cdecl LookLeft()
765
void LookLeft(void) {
765
void LookLeft(void) {
766
    LOG_TRACE("()");
766
    LOG_TRACE("()");
767
 
767
 
768
    if (gAusterity_mode) {
768
    if (gAusterity_mode) {
769
        NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_NOT_ENOUGH_MEMORY));
769
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_NOT_ENOUGH_MEMORY));
770
    } else {
770
    } else {
771
        PratcamEvent(27);
771
        PratcamEvent(27);
772
        gProgram_state.old_view = gProgram_state.which_view;
772
        gProgram_state.old_view = gProgram_state.which_view;
773
        if (gProgram_state.which_view == eView_left) {
773
        if (gProgram_state.which_view == eView_left) {
774
            LookForward();
774
            LookForward();
Line 805... Line 805...
805
// IDA: void __cdecl LookRight()
805
// IDA: void __cdecl LookRight()
806
void LookRight(void) {
806
void LookRight(void) {
807
    LOG_TRACE("()");
807
    LOG_TRACE("()");
808
 
808
 
809
    if (gAusterity_mode) {
809
    if (gAusterity_mode) {
810
        NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_NOT_ENOUGH_MEMORY));
810
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_NOT_ENOUGH_MEMORY));
811
    } else {
811
    } else {
812
        PratcamEvent(28);
812
        PratcamEvent(28);
813
        gProgram_state.old_view = gProgram_state.which_view;
813
        gProgram_state.old_view = gProgram_state.which_view;
814
        if (gProgram_state.which_view == eView_right) {
814
        if (gProgram_state.which_view == eView_right) {
815
            LookForward();
815
            LookForward();
Line 1072... Line 1072...
1072
            }
1072
            }
1073
            AdjustRenderScreenSize();
1073
            AdjustRenderScreenSize();
1074
            AdjustHeadups();
1074
            AdjustHeadups();
1075
            MungeForwardSky();
1075
            MungeForwardSky();
1076
        } else {
1076
        } else {
1077
            NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_NOT_ENOUGH_MEMORY));
1077
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_NOT_ENOUGH_MEMORY));
1078
        }
1078
        }
1079
    }
1079
    }
1080
}
1080
}
1081
 
1081
 
1082
// IDA: void __cdecl ToggleMirror()
1082
// IDA: void __cdecl ToggleMirror()
Line 1084... Line 1084...
1084
    LOG_TRACE("()");
1084
    LOG_TRACE("()");
1085
 
1085
 
1086
    gProgram_state.mirror_on = !gProgram_state.mirror_on;
1086
    gProgram_state.mirror_on = !gProgram_state.mirror_on;
1087
    ReinitialiseRearviewCamera();
1087
    ReinitialiseRearviewCamera();
1088
    if (gProgram_state.mirror_on) {
1088
    if (gProgram_state.mirror_on) {
1089
        NewTextHeadupSlot(4, 0, 500, -4, GetMiscString(kMiscString_MirrorOn));
1089
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 500, -4, GetMiscString(kMiscString_MirrorOn));
1090
    } else {
1090
    } else {
1091
        NewTextHeadupSlot(4, 0, 500, -4, GetMiscString(kMiscString_MirrorOff));
1091
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 500, -4, GetMiscString(kMiscString_MirrorOff));
1092
    }
1092
    }
1093
}
1093
}
1094
 
1094
 
1095
// IDA: void __cdecl ConcussMe()
1095
// IDA: void __cdecl ConcussMe()
1096
// dethrace: this is not referenced in the retail executables. Left over debug code.
1096
// dethrace: this is not referenced in the retail executables. Left over debug code.
Line 1581... Line 1581...
1581
                    cost += SpendCredits(cost);
1581
                    cost += SpendCredits(cost);
1582
                }
1582
                }
1583
                total_repair_cost += cost;
1583
                total_repair_cost += cost;
1584
                if (total_repair_cost) {
1584
                if (total_repair_cost) {
1585
                    if (gFree_repairs) {
1585
                    if (gFree_repairs) {
1586
                        NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_RepairingForFree));
1586
                        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_RepairingForFree));
1587
                    } else {
1587
                    } else {
1588
                        sprintf(s, "%s %d", GetMiscString(kMiscString_RepairCostColon), total_repair_cost);
1588
                        sprintf(s, "%s %d", GetMiscString(kMiscString_RepairCostColon), total_repair_cost);
1589
                        NewTextHeadupSlot(4, 0, 1000, -4, s);
1589
                        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, s);
1590
                    }
1590
                    }
1591
                }
1591
                }
1592
            } else {
1592
            } else {
1593
                if (!stopped_repairing) {
1593
                if (!stopped_repairing) {
1594
                    NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_CANNOT_AFFORD_TO_REPAIR));
1594
                    NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_CANNOT_AFFORD_TO_REPAIR));
1595
                }
1595
                }
1596
                gAuto_repair = 0;
1596
                gAuto_repair = 0;
1597
                stopped_repairing = 1;
1597
                stopped_repairing = 1;
1598
            }
1598
            }
1599
        }
1599
        }
Line 1617... Line 1617...
1617
        gHad_auto_recover = 0;
1617
        gHad_auto_recover = 0;
1618
    } else if (CheckRecoverCost()) {
1618
    } else if (CheckRecoverCost()) {
1619
        gRecover_timer = 0;
1619
        gRecover_timer = 0;
1620
        SetFlipUpCar(car);
1620
        SetFlipUpCar(car);
1621
        if (gNet_mode != eNet_mode_none) {
1621
        if (gNet_mode != eNet_mode_none) {
1622
            NewTextHeadupSlot(4, 0, 1500, -4, " ");
1622
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 1500, -4, " ");
1623
        }
1623
        }
1624
        if (gRecovery_voucher_count != 0) {
1624
        if (gRecovery_voucher_count != 0) {
1625
            gRecovery_voucher_count--;
1625
            gRecovery_voucher_count--;
1626
            sprintf(s, "%s", GetMiscString(kMiscString_RecoveringForFree));
1626
            sprintf(s, "%s", GetMiscString(kMiscString_RecoveringForFree));
1627
            NewTextHeadupSlot(4, 0, 1500, -4, s);
1627
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 1500, -4, s);
1628
        } else {
1628
        } else {
1629
            if (gNet_mode) {
1629
            if (gNet_mode) {
1630
                cost = gNet_recovery_cost[gCurrent_net_game->type];
1630
                cost = gNet_recovery_cost[gCurrent_net_game->type];
1631
            } else {
1631
            } else {
1632
                cost = gRecovery_cost[gProgram_state.skill_level];
1632
                cost = gRecovery_cost[gProgram_state.skill_level];
Line 1636... Line 1636...
1636
                cost = gNet_recovery_cost[gCurrent_net_game->type];
1636
                cost = gNet_recovery_cost[gCurrent_net_game->type];
1637
            } else {
1637
            } else {
1638
                cost = gRecovery_cost[gProgram_state.skill_level];
1638
                cost = gRecovery_cost[gProgram_state.skill_level];
1639
            }
1639
            }
1640
            sprintf(s, "%s %d", GetMiscString(kMiscString_RecoveryCostColon), cost);
1640
            sprintf(s, "%s %d", GetMiscString(kMiscString_RecoveryCostColon), cost);
1641
            NewTextHeadupSlot(4, 0, 1500, -4, s);
1641
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 1500, -4, s);
1642
            LoseSomePSPowerups(2);
1642
            LoseSomePSPowerups(2);
1643
        }
1643
        }
1644
        CancelPendingCunningStunt();
1644
        CancelPendingCunningStunt();
1645
        PipeSingleSpecial(ePipe_special_fade);
1645
        PipeSingleSpecial(ePipe_special_fade);
1646
    }
1646
    }
Line 1657... Line 1657...
1657
        || gRecovery_voucher_count) {
1657
        || gRecovery_voucher_count) {
1658
        return 1;
1658
        return 1;
1659
    }
1659
    }
1660
    gProgram_state.credits_earned = 0;
1660
    gProgram_state.credits_earned = 0;
1661
    gProgram_state.credits_lost = 0;
1661
    gProgram_state.credits_lost = 0;
1662
    NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_CANNOT_AFFORD_TO_RECOVER));
1662
    NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_CANNOT_AFFORD_TO_RECOVER));
1663
    DoFancyHeadup(kFancyHeadupNetworkRaceNoMoreMoney);
1663
    DoFancyHeadup(kFancyHeadupNetworkRaceNoMoreMoney);
1664
    KnackerThisCar(&gProgram_state.current_car);
1664
    KnackerThisCar(&gProgram_state.current_car);
1665
    SendGameplayToHost(eNet_gameplay_suicide, 0, 0, 0, 0);
1665
    SendGameplayToHost(eNet_gameplay_suicide, 0, 0, 0, 0);
1666
    return 0;
1666
    return 0;
1667
}
1667
}
Line 2085... Line 2085...
2085
    LOG_TRACE("()");
2085
    LOG_TRACE("()");
2086
 
2086
 
2087
    if (gAllow_car_flying && gNet_mode == eNet_mode_none) {
2087
    if (gAllow_car_flying && gNet_mode == eNet_mode_none) {
2088
        gCar_flying = !gCar_flying;
2088
        gCar_flying = !gCar_flying;
2089
        if (gCar_flying) {
2089
        if (gCar_flying) {
2090
            NewTextHeadupSlot(4, 0, 500, -4, "We have lift off!!");
2090
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 500, -4, "We have lift off!!");
2091
        } else {
2091
        } else {
2092
            NewTextHeadupSlot(4, 0, 500, -4, "Back down to Earth");
2092
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 500, -4, "Back down to Earth");
2093
        }
2093
        }
2094
    } else {
2094
    } else {
2095
        gCar_flying = 0;
2095
        gCar_flying = 0;
2096
    }
2096
    }
2097
}
2097
}
Line 2100... Line 2100...
2100
void ToggleInvulnerability(void) {
2100
void ToggleInvulnerability(void) {
2101
    LOG_TRACE("()");
2101
    LOG_TRACE("()");
2102
 
2102
 
2103
    gProgram_state.current_car.invulnerable = !gProgram_state.current_car.invulnerable;
2103
    gProgram_state.current_car.invulnerable = !gProgram_state.current_car.invulnerable;
2104
    if (gProgram_state.current_car.invulnerable) {
2104
    if (gProgram_state.current_car.invulnerable) {
2105
        NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_Invulnerable));
2105
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_Invulnerable));
2106
    } else {
2106
    } else {
2107
        NewTextHeadupSlot(4, 0, 1000, -4, "Vulnerability returns!");
2107
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, "Vulnerability returns!");
2108
    }
2108
    }
2109
}
2109
}
2110
 
2110
 
2111
// IDA: void __cdecl MoreTime()
2111
// IDA: void __cdecl MoreTime()
2112
void MoreTime(void) {
2112
void MoreTime(void) {
Line 2126... Line 2126...
2126
void ToggleTimerFreeze(void) {
2126
void ToggleTimerFreeze(void) {
2127
    LOG_TRACE("()");
2127
    LOG_TRACE("()");
2128
 
2128
 
2129
    gFreeze_timer = !gFreeze_timer;
2129
    gFreeze_timer = !gFreeze_timer;
2130
    if (gFreeze_timer) {
2130
    if (gFreeze_timer) {
2131
        NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_TimerFrozen));
2131
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_TimerFrozen));
2132
    } else {
2132
    } else {
2133
        NewTextHeadupSlot(4, 0, 1000, -4, "Timer thawed out");
2133
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, "Timer thawed out");
2134
    }
2134
    }
2135
}
2135
}
2136
 
2136
 
2137
// IDA: void __cdecl EarnDosh()
2137
// IDA: void __cdecl EarnDosh()
2138
void EarnDosh(void) {
2138
void EarnDosh(void) {
Line 2155... Line 2155...
2155
    LOG_TRACE("()");
2155
    LOG_TRACE("()");
2156
 
2156
 
2157
    if (gMap_mode == 0) {
2157
    if (gMap_mode == 0) {
2158
        if (!gAction_replay_mode) {
2158
        if (!gAction_replay_mode) {
2159
            if (gNet_mode != eNet_mode_none && gCurrent_net_game->type == eNet_game_type_foxy && gThis_net_player_index == gIt_or_fox) {
2159
            if (gNet_mode != eNet_mode_none && gCurrent_net_game->type == eNet_game_type_foxy && gThis_net_player_index == gIt_or_fox) {
2160
                NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_THE_FOX_CANNOT_DO_THAT));
2160
                NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_THE_FOX_CANNOT_DO_THAT));
2161
            } else if (gNet_mode != eNet_mode_none && gCurrent_net_game->type == eNet_game_type_tag && gThis_net_player_index != gIt_or_fox) {
2161
            } else if (gNet_mode != eNet_mode_none && gCurrent_net_game->type == eNet_game_type_tag && gThis_net_player_index != gIt_or_fox) {
2162
                NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_ONLY_IT_CAN_DO_THAT));
2162
                NewTextHeadupSlot(eHeadupSlot_misc, 0, 1000, -4, GetMiscString(kMiscString_ONLY_IT_CAN_DO_THAT));
2163
            } else {
2163
            } else {
2164
                old_indent = gRender_indent;
2164
                old_indent = gRender_indent;
2165
                gRender_indent = 0;
2165
                gRender_indent = 0;
2166
                was_in_cockpit = gProgram_state.cockpit_on;
2166
                was_in_cockpit = gProgram_state.cockpit_on;
2167
                if (gProgram_state.cockpit_on) {
2167
                if (gProgram_state.cockpit_on) {
Line 2242... Line 2242...
2242
 
2242
 
2243
    new_level = (GetCarTexturingLevel() + 1) % eCTL_count;
2243
    new_level = (GetCarTexturingLevel() + 1) % eCTL_count;
2244
    SetCarTexturingLevel(new_level);
2244
    SetCarTexturingLevel(new_level);
2245
    switch (new_level) {
2245
    switch (new_level) {
2246
    case eCTL_none:
2246
    case eCTL_none:
2247
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_NoCarTextures));
2247
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_NoCarTextures));
2248
        break;
2248
        break;
2249
    case eCTL_transparent:
2249
    case eCTL_transparent:
2250
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_TransparentCarTexturesOnly));
2250
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_TransparentCarTexturesOnly));
2251
        break;
2251
        break;
2252
    case eCTL_full:
2252
    case eCTL_full:
2253
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_FullCarTextures));
2253
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_FullCarTextures));
2254
        break;
2254
        break;
2255
    case eCTL_count:
2255
    case eCTL_count:
2256
        break;
2256
        break;
2257
    }
2257
    }
2258
}
2258
}
Line 2265... Line 2265...
2265
    new_level = (GetWallTexturingLevel() + 1) % eWTL_count;
2265
    new_level = (GetWallTexturingLevel() + 1) % eWTL_count;
2266
    ReallySetWallTexturingLevel(new_level);
2266
    ReallySetWallTexturingLevel(new_level);
2267
    SetWallTexturingLevel(new_level);
2267
    SetWallTexturingLevel(new_level);
2268
    switch (new_level) {
2268
    switch (new_level) {
2269
    case eWTL_none:
2269
    case eWTL_none:
2270
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_NoWallTextures));
2270
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_NoWallTextures));
2271
        break;
2271
        break;
2272
    case eWTL_linear:
2272
    case eWTL_linear:
2273
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_LinearWallTextures));
2273
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_LinearWallTextures));
2274
        break;
2274
        break;
2275
    case eWTL_full:
2275
    case eWTL_full:
2276
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_BestWallTextures));
2276
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_BestWallTextures));
2277
        break;
2277
        break;
2278
    case eWTL_count:
2278
    case eWTL_count:
2279
        break;
2279
        break;
2280
    }
2280
    }
2281
}
2281
}
Line 2287... Line 2287...
2287
 
2287
 
2288
    new_level = (GetRoadTexturingLevel() + 1) % 3;
2288
    new_level = (GetRoadTexturingLevel() + 1) % 3;
2289
    ReallySetRoadTexturingLevel(new_level);
2289
    ReallySetRoadTexturingLevel(new_level);
2290
    SetRoadTexturingLevel(new_level);
2290
    SetRoadTexturingLevel(new_level);
2291
    if (new_level == eRTL_none) {
2291
    if (new_level == eRTL_none) {
2292
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_NoRoadTextures));
2292
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_NoRoadTextures));
2293
    } else if (new_level == eRTL_full) {
2293
    } else if (new_level == eRTL_full) {
2294
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_RoadTextures));
2294
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_RoadTextures));
2295
    }
2295
    }
2296
}
2296
}
2297
 
2297
 
2298
// IDA: void __cdecl CycleYonFactor()
2298
// IDA: void __cdecl CycleYonFactor()
2299
void CycleYonFactor(void) {
2299
void CycleYonFactor(void) {
Line 2305... Line 2305...
2305
    if (new_factor < .1f) {
2305
    if (new_factor < .1f) {
2306
        new_factor = 1.f;
2306
        new_factor = 1.f;
2307
    }
2307
    }
2308
    SetYonFactor(new_factor);
2308
    SetYonFactor(new_factor);
2309
    if (new_factor > .75f) {
2309
    if (new_factor > .75f) {
2310
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_TrackAppearsVeryQuickly));
2310
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_TrackAppearsVeryQuickly));
2311
    } else if (new_factor > .375f) {
2311
    } else if (new_factor > .375f) {
2312
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_TrackAppearsQuiteQuickly));
2312
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_TrackAppearsQuiteQuickly));
2313
    } else if (new_factor > .187f) {
2313
    } else if (new_factor > .187f) {
2314
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_TrackQppearsQuiteLate));
2314
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_TrackQppearsQuiteLate));
2315
    } else {
2315
    } else {
2316
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_TrackAppearsVeryLate));
2316
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_TrackAppearsVeryLate));
2317
    }
2317
    }
2318
}
2318
}
2319
 
2319
 
2320
// IDA: void __usercall SetSoundDetailLevel(int pLevel@<EAX>)
2320
// IDA: void __usercall SetSoundDetailLevel(int pLevel@<EAX>)
2321
void SetSoundDetailLevel(int pLevel) {
2321
void SetSoundDetailLevel(int pLevel) {
Line 2350... Line 2350...
2350
    new_level = (gSound_detail_level + 1) % 3;
2350
    new_level = (gSound_detail_level + 1) % 3;
2351
    ReallySetSoundDetailLevel(new_level);
2351
    ReallySetSoundDetailLevel(new_level);
2352
    SetSoundDetailLevel(new_level);
2352
    SetSoundDetailLevel(new_level);
2353
    switch (new_level) {
2353
    switch (new_level) {
2354
    case 0:
2354
    case 0:
2355
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_FewestSounds));
2355
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_FewestSounds));
2356
        break;
2356
        break;
2357
    case 1:
2357
    case 1:
2358
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_PartialSound));
2358
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_PartialSound));
2359
        break;
2359
        break;
2360
    case 2:
2360
    case 2:
2361
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_AllSounds));
2361
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_AllSounds));
2362
        break;
2362
        break;
2363
    }
2363
    }
2364
}
2364
}
2365
 
2365
 
2366
// IDA: void __cdecl CycleCarSimplificationLevel()
2366
// IDA: void __cdecl CycleCarSimplificationLevel()
Line 2371... Line 2371...
2371
 
2371
 
2372
    gCar_simplification_level = (gCar_simplification_level + 1) % 5;
2372
    gCar_simplification_level = (gCar_simplification_level + 1) % 5;
2373
    src = GetMiscString(kMiscString_CarSimplificationLevel_D);
2373
    src = GetMiscString(kMiscString_CarSimplificationLevel_D);
2374
    dst = BrMemAllocate(strlen(src), kMem_simp_level);
2374
    dst = BrMemAllocate(strlen(src), kMem_simp_level);
2375
    sprintf(dst, src, gCar_simplification_level);
2375
    sprintf(dst, src, gCar_simplification_level);
2376
    NewTextHeadupSlot(4, 0, 2000, -4, dst);
2376
    NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, dst);
2377
    BrMemFree(dst);
2377
    BrMemFree(dst);
2378
}
2378
}
2379
 
2379
 
2380
// IDA: void __cdecl ToggleAccessoryRendering()
2380
// IDA: void __cdecl ToggleAccessoryRendering()
2381
void ToggleAccessoryRendering(void) {
2381
void ToggleAccessoryRendering(void) {
Line 2384... Line 2384...
2384
 
2384
 
2385
    if (gNet_mode == eNet_mode_none) {
2385
    if (gNet_mode == eNet_mode_none) {
2386
        on = !GetAccessoryRendering();
2386
        on = !GetAccessoryRendering();
2387
        SetAccessoryRendering(on);
2387
        SetAccessoryRendering(on);
2388
        if (on) {
2388
        if (on) {
2389
            NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_AccessoriesOn));
2389
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_AccessoriesOn));
2390
        } else {
2390
        } else {
2391
            NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_AccessoriesOff));
2391
            NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_AccessoriesOff));
2392
        }
2392
        }
2393
    } else {
2393
    } else {
2394
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_NetGamesAlwaysAccessorized));
2394
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_NetGamesAlwaysAccessorized));
2395
    }
2395
    }
2396
}
2396
}
2397
 
2397
 
2398
// IDA: void __cdecl ToggleSmoke()
2398
// IDA: void __cdecl ToggleSmoke()
2399
void ToggleSmoke(void) {
2399
void ToggleSmoke(void) {
Line 2402... Line 2402...
2402
 
2402
 
2403
    on = !GetSmokeOn();
2403
    on = !GetSmokeOn();
2404
    ReallySetSmokeOn(on);
2404
    ReallySetSmokeOn(on);
2405
    SetSmokeOn(on);
2405
    SetSmokeOn(on);
2406
    if (on) {
2406
    if (on) {
2407
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_SmokeOn));
2407
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_SmokeOn));
2408
    } else {
2408
    } else {
2409
        NewTextHeadupSlot(4, 0, 2000, -4, GetMiscString(kMiscString_SmokeOff));
2409
        NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_SmokeOff));
2410
    }
2410
    }
2411
}
2411
}
2412
 
2412
 
2413
// IDA: void __usercall DrawSomeText2(tDR_font *pFont@<EAX>)
2413
// IDA: void __usercall DrawSomeText2(tDR_font *pFont@<EAX>)
2414
void DrawSomeText2(tDR_font* pFont) {
2414
void DrawSomeText2(tDR_font* pFont) {