On the other hand, the logic to automatically control the player's car during Attract Mode is a lot simpler. The code can be quite basic, because the traffic in OutRun intelligently attempts to move out of your way. A simple detail most home conversions didn't pick up upon.
Here's a simplified pseudo-code conversion if you're interested:
AttractModeAI() { // Check upcoming road segment for straight/curve. // Choose route from pre defined table at road split. AICheckRoad(); // Set steering value based on upcoming road segment AISetSteering(); // If speed is below a certain amount, just accelerate if (car_speed < 0xFA) { accelerator = MAX_VALUE; return; } // If AI Traffic is close, set brake on if (traffic_close) { traffic_close = false; brake = 0xC0; } // If either wheel of the car is off-road else if (wheels_offroad) { brake = 0xC0; } // Upcoming road: Straight Road if (road_type == STRAIGHT) { curve_counter = 0; } // Upcoming road: Curved Road else { if (++curve_counter == 1) { // Set road curve value based on hard coded road data. // High value = Sharper Bend road_curve_value = value - 1; } // toggle brake on bends. // The brake flickers on/off in OutRun attract mode else if (road_curve_value != 0 && ((road_curve_value <= 0xA) || (road_curve_value & 8))) { brake = 0xA0; road_curve_value--; return; } } accelerator = MAX_VALUE; return; }