On this page
  1. Related
  2. Games
  3. References
  4. Sources

An overheat gauge charges for a boost in heat rather than in a meter that runs out. In Excitebike 64 the throttle and the turbo both heat the engine up to 7000, only the turbo heats it past that, and reaching 12000 cuts the engine to 0.3 of its torque until the heat is back to 70001,2.

  • Power cutExcitebike 64 (2000). The turbo heats the engine to an overheat at 12000, after which the engine gives 0.3 of its torque whichever button is held, and no takeoff boost, until the heat falls to 7000.1,2,3

Games

GameYearHowNote
Excitebike 642000Power cutthe turbo heats the engine to an overheat at 12000, after which the engine gives 0.3 of its torque whichever button is held, and no takeoff boost, until the heat falls to 7000
BuildCraft2011Explodethe combustion engine heats as it runs and explodes past its limit unless water cools it
Every claim about this mechanic, by game (3)
Excitebike 64 2000In Excitebike 64's US Rev 1 build, engine_update_heat moves a rider's engine heat each bike update by a rate from sEngineHeatRates, picked by whether the heat is above 7000 and by the drive: Z (the turbo), else A (the throttle), else neither. At 7000 or below the rates are −20 with neither, +20 on the throttle, and +40 on the turbo; above 7000 they're −12, −8, and +20. A positive rate while Z is held is divided by the rider's turbo stat, which is 1.0 for CPU riders. The heat is held between 0 and 12000. Reaching 12000 sets overheated, and while it's set the rate is −20 whatever is held, until the heat is back to 7000 or below. At 60 updates a second, a turbo stat of 1.0 takes a cold engine to 12000 in 425 updates, about 7.1 seconds, and an overheat lasts 250 updates, about 4.2 seconds; the throttle alone holds the heat around 7000 (computed). While the rear wheel is on the ground and the event isn't stopped (EVENT_STOPPED), a surface flagged SURFACE_COOLS_ENGINE (commented "resets the engine heat") sets the heat to 0.Code
In Excitebike 64's US Rev 1 build, engine_update scales the engine's torque by sTurboPowerScale (1.225) while Z, the turbo, is held, by sThrottlePowerScale (0.75) on A, the throttle, alone, and by sOverheatPowerScale (0.3) while the engine is overheated, whichever of the two is held. The scale applies only while the rear wheel is on the ground and the event isn't stopped (EVENT_STOPPED). With neither button held, or with either held while the event is stopped, the torque is −3728.4995 (commented "engine braking") above a speed of 1 and 0 below it. The turbo gives about 1.63 times the throttle's torque, and an overheated engine 0.4 times the throttle's and about 0.24 times the turbo's (computed).Code
In Excitebike 64's US Rev 1 build, bike_update_jump boosts a human rider who leaves the ground while riding and holding Z, the turbo, first pressed fewer than 10 updates earlier (turboPressFrame), on a jump whose predicted time in the air (landingTime, twice the vertical speed over gravity) is longer than a minimum: 0.25 seconds up to a takeoff speed of 10, 0.5 above 20, and linear between. Below a speed of 20 and while the engine isn't overheated, the bike's velocity is scaled so its speed gains 5, less half the speed above 10: 5 at 10 or less, 2.5 at 15, and nothing at 20. If the bike's pitch (rot[0]) is −0x17FF or more, its angular velocity also loses 2 times its right axis; the LodgeNet build subtracts 3, and the decompilers comment that "retail pitches the bike less". CPU riders get no takeoff boost.Code

References

  1. ^ abIn Excitebike 64's US Rev 1 build, engine_update_heat moves a rider's engine heat each bike update by a rate from sEngineHeatRates, picked by whether the heat is above 7000 and by the drive: Z (the turbo), else A (the throttle), else neither. At 7000 or below the rates are −20 with neither, +20 on the throttle, and +40 on the turbo; above 7000 they're −12, −8, and +20. A positive rate while Z is held is divided by the rider's turbo stat, which is 1.0 for CPU riders. The heat is held between 0 and 12000. Reaching 12000 sets overheated, and while it's set the rate is −20 whatever is held, until the heat is back to 7000 or below. At 60 updates a second, a turbo stat of 1.0 takes a cold engine to 12000 in 425 updates, about 7.1 seconds, and an overheat lasts 250 updates, about 4.2 seconds; the throttle alone holds the heat around 7000 (computed). While the rear wheel is on the ground and the event isn't stopped (EVENT_STOPPED), a surface flagged SURFACE_COOLS_ENGINE (commented "resets the engine heat") sets the heat to 0.Codechasmlol/excitebike64revised
    How we know
    56/* The rider's drive: 2 turbo (Z), 1 throttle (A), 0 neither. */
    ⋮
    61    if (rider->input & INPUT_Z) {
    62        return 2;
    ⋮
    64    throttle = rider->input & INPUT_A;
    65    return throttle != 0;
    ⋮
    78    drive = drive_input(rider);
    79    hot = 0;
    80    if (rider->engine.heat > 7000.0f) {
    81        hot = 1;
    ⋮
    83    if (rider->engine.overheated) {
    84        hot = drive = 0;
    ⋮
    86    rate = sEngineHeatRates[hot][drive];
    ⋮
    
    src/game/unnamed/s0_800358C0.c lines 56–106 at 9cdb194 · upstream ↗
    3999f32 sEngineHeatRates[0x6] = {
    4000    /* 0x000 */ -20.0f, 20.0f, 40.0f, -12.0f,
    4001    /* 0x010 */ -8.0f, 20.0f,
    
    src/data/game_800C2280.c lines 3999–4002 at 9cdb194 · upstream ↗
    115    rider = &gRiders[riderIdx];
    116    engine_update_heat(rider);
    
    src/game/unnamed/s0_800358C0.c lines 114–116 at 9cdb194 · upstream ↗
    125    if (rider->rearWheel.airTicks < 1 && (gEvent.flags & EVENT_STOPPED) == 0) {
    
    src/game/unnamed/s0_800358C0.c line 125 at 9cdb194 · upstream ↗
    163        if (rider->rearWheel.surface->flags & SURFACE_COOLS_ENGINE) {
    164            rider->engine.heat = 0.0f;
    
    src/game/unnamed/s0_800358C0.c lines 163–165 at 9cdb194 · upstream ↗
    16#define SURFACE_COOLS_ENGINE        0x0200 /* resets the engine heat */
    
    include/structs/surface.h line 16 at 9cdb194 · upstream ↗
    349    rider->bike.mass = 250.0f;
    350    rider->wallFriction = 0.3f;
    351    rider->landing = 1.0f;
    352    rider->turbo = 1.0f;
    
    src/game/bikenew.c lines 349–352 at 9cdb194 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

  2. ^ abIn Excitebike 64's US Rev 1 build, engine_update scales the engine's torque by sTurboPowerScale (1.225) while Z, the turbo, is held, by sThrottlePowerScale (0.75) on A, the throttle, alone, and by sOverheatPowerScale (0.3) while the engine is overheated, whichever of the two is held. The scale applies only while the rear wheel is on the ground and the event isn't stopped (EVENT_STOPPED). With neither button held, or with either held while the event is stopped, the torque is −3728.4995 (commented "engine braking") above a speed of 1 and 0 below it. The turbo gives about 1.63 times the throttle's torque, and an overheated engine 0.4 times the throttle's and about 0.24 times the turbo's (computed).Codechasmlol/excitebike64revised
    How we know
    190    if ((rider->input & (INPUT_Z | INPUT_A)) != 0 && (gEvent.flags & EVENT_STOPPED) == 0) {
    191        if (rider->rearWheel.airTicks < 1) {
    192            if (rider->engine.overheated != 0) {
    193                tmp = sOverheatPowerScale;
    194            } else if (rider->input & INPUT_Z) {
    195                tmp = sTurboPowerScale;
    196            } else {
    197                tmp = sThrottlePowerScale;
    ⋮
    199            torque = torque * tmp;
    200            rider->engine.torque = torque;
    ⋮
    202    } else if (1.0f < rider->speed) {
    203        rider->engine.torque = -3728.4995f; /* engine braking */
    ⋮
    
    src/game/unnamed/s0_800358C0.c lines 190–206 at 9cdb194 · upstream ↗
    4003f32 sTurboPowerScale = 1.225f;
    4004f32 sThrottlePowerScale = 0.75f;
    4005f32 sOverheatPowerScale = 0.3f;
    
    src/data/game_800C2280.c lines 4003–4005 at 9cdb194 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

  3. ^In Excitebike 64's US Rev 1 build, bike_update_jump boosts a human rider who leaves the ground while riding and holding Z, the turbo, first pressed fewer than 10 updates earlier (turboPressFrame), on a jump whose predicted time in the air (landingTime, twice the vertical speed over gravity) is longer than a minimum: 0.25 seconds up to a takeoff speed of 10, 0.5 above 20, and linear between. Below a speed of 20 and while the engine isn't overheated, the bike's velocity is scaled so its speed gains 5, less half the speed above 10: 5 at 10 or less, 2.5 at 15, and nothing at 20. If the bike's pitch (rot[0]) is −0x17FF or more, its angular velocity also loses 2 times its right axis; the LodgeNet build subtracts 3, and the decompilers comment that "retail pitches the bike less". CPU riders get no takeoff boost.Codechasmlol/excitebike64
    How we know
    2235    if (rider->rearWheel.airTicks > 0 && rider->frontWheel.airTicks > 0) {
    2236        if (rider->airFrames <= 0) {
    ⋮
    2240            rider->landingTime = (rider->bike.vel.y + rider->bike.vel.y) / GRAVITY;
    ⋮
    2242            takeoffSpeed = rider->speed;
    2243            minAirTime = 0.5f;
    2244            if (!(takeoffSpeed > 20.0f)) {
    2245                minAirTime = 0.25f;
    2246                if (takeoffSpeed > 10.0f) {
    2247                    minAirTime = (takeoffSpeed - 10.0f) / 40.0f + 0.25f;
    ⋮
    2250            if (minAirTime < rider->landingTime) {
    
    src/game/bikenew.c lines 2235–2250 at 9cdb194 · upstream ↗
    2258                if (rider->isCpu == 0 && rider->crashState == CRASH_STATE_RIDING && gRaceFrame - rider->turboPressFrame < 10 && (rider->input & INPUT_Z)) {
    2259                    /* turbo at takeoff: a boost (none when overheated) */
    2260                    speed = rider->speed;
    2261                    if (speed < 20.0f && rider->engine.overheated == 0) {
    2262                        boost = 5.0f;
    2263                        if (speed > 10.0f) {
    2264                            boost = 5.0f - (speed - 10.0f) * 0.5f;
    ⋮
    2266                        if (speed != 0.0f) {
    2267                            speed = boost / speed + 1.0f;
    2268                        } else {
    2269                            speed = 0.0f;
    ⋮
    2271                        rider->bike.vel.x *= speed;
    ⋮
    
    src/game/bikenew.c lines 2258–2285 at 9cdb194 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code