Mario Kart 64
|
#include <libultraship.h>
#include <macros.h>
#include <defines.h>
#include <stubs.h>
#include "course_metadata.h"
#include <align_asset_macro.h>
#include "code_80005FD0.h"
#include "math_util.h"
#include "code_800029B0.h"
#include "racing/memory.h"
#include "waypoints.h"
#include "camera.h"
#include "actors.h"
#include "actors_extended.h"
#include "render_player.h"
#include "player_controller.h"
#include "update_objects.h"
#include "collision.h"
#include <actor_types.h>
#include "vehicles.h"
#include "render_objects.h"
#include "code_80057C60.h"
#include "bomb_kart.h"
#include "courses/all_course_data.h"
#include <assets/common_data.h>
#include <common_structs.h>
#include "main.h"
#include "menus.h"
#include "menu_items.h"
#include "audio/external.h"
#include "ending/podium_ceremony_actors.h"
#include "spawn_players.h"
#include "sounds.h"
#include "data/path_spawn_metadata.h"
#include <assets/kalimari_desert_data.h>
#include <assets/frappe_snowland_data.h>
#include <assets/dks_jungle_parkway_data.h>
#include <stdio.h>
#include "port/Game.h"
#include "engine/courses/Course.h"
Macros | |
#define | calc_a(x, y, x2, y2) |
#define | calc_b(x, y, b) |
#define | calc(table) |
#define | GET_PATH_LENGTH(waypoint) |
#define | BANANA_ACTOR(actor) |
#define | SHELL_ACTOR(actor) |
#define | FAKE_ITEMBOX_ACTOR(actor) |
#define | BANANA_BUNCH_ACTOR(actor) |
Functions | |
s16 | get_angle_between_path (Vec3f arg0, Vec3f arg1) |
s32 | is_collide_with_vehicle (f32 vehicleX, f32 vehicleZ, f32 vehicleVelocityX, f32 vehicleVelocityZ, f32 distanceX, f32 distanceY, f32 playerX, f32 playerZ) |
void | adjust_position_by_angle (Vec3f newPos, Vec3f oldPos, s16 orientationY) |
s32 | set_vehicle_render_distance_flags (Vec3f vehiclePos, f32 renderDistance, s32 flags) |
void | detect_wrong_player_direction (s32 playerId, Player *player) |
void | set_places (void) |
void | update_player_rankings (void) |
void | set_places_end_course_with_time (void) |
s32 | is_path_point_in_range (u16 pathPoint, u16 currentPathPoint, u16 backwardRange, u16 forwardRange, u16 totalPathPoints) |
void | func_80007D04 (s32 playerId, Player *player) |
void | func_80007FA4 (s32 arg0, Player *player, f32 arg2) |
void | regulate_cpu_speed (s32 playerId, f32 targetSpeed, Player *player) |
bool | func_800088D8 (s32 playerId, s16 lapNum, s16 arg2) |
void | set_current_path (s32 pathIndex) |
s32 | update_player_path_selection (s32 payerId, s32 pathIndex) |
void | update_player_completion (s32 playerId) |
void | yoshi_valley_cpu_path (s32 playerId) |
void | update_cpu_path_completion (s32 playerId, Player *player) |
f32 | func_80009258 (UNUSED s32 playerId, f32 arg1, f32 arg2) |
void | update_player_path_completion (s32 playerId, Player *player) |
void | update_vehicles (void) |
void | play_cpu_sound_effect (s32 arg0, Player *player) |
void | update_player_timer_sound (s32 playerId, UNUSED Player *unused) |
void | update_player (s32 playerId) |
void | func_8000B140 (s32 playerId) |
s32 | are_in_curve (UNUSED s32 arg0, u16 waypointIndex) |
bool | is_far_from_path (s32 playerIndex) |
f32 | calculate_track_position_factor (f32 posX, f32 posZ, u16 waypointIndex, s32 pathIndex) |
void | update_player_position_factor (s32 playerId, u16 waypointIndex, s32 pathIndex) |
void | calculate_track_offset_position (u16 waypointIndex, f32 arg1, f32 arg2, s16 pathIndex) |
void | set_track_offset_position (u16 waypointIndex, f32 arg1, s16 pathIndex) |
s16 | func_8000BD94 (f32 posX, f32 posY, f32 posZ, s32 pathIndex) |
s16 | find_closest_path_point_track_section (f32 posX, f32 posY, f32 posZ, u16 trackSectionId, s32 *pathIndex) |
s16 | update_path_index_with_track (f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex, u16 trackSectionId) |
s16 | update_path_index (f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex) |
void | tweak_path_index_wario_stadium (UNUSED f32 posX, f32 posY, UNUSED f32 posZ, s16 *waypointIndex, UNUSED s32 arg4) |
void | adjust_path_at_start_line (UNUSED f32 posX, UNUSED f32 posY, f32 posZ, s16 *waypointIndex, s32 pathIndex) |
s16 | update_path_index_track_section (f32 posX, f32 posY, f32 posZ, Player *player, s32 playerId, s32 *pathIndex) |
s16 | update_player_path (f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player *player, s32 playerId, s32 pathIndex) |
s16 | find_closest_vehicles_path_point (f32 xPos, UNUSED f32 yPos, f32 zPos, s16 waypointIndex) |
s16 | func_8000D24C (f32 posX, f32 posY, f32 posZ, s32 *pathIndex) |
s16 | func_8000D2B4 (f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex) |
s16 | func_8000D33C (f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex) |
f32 | cpu_track_position_factor (s32 playerId) |
void | determine_ideal_cpu_position_offset (s32 arg0, u16 arg1) |
s16 | func_8000D6D0 (Vec3f position, s16 *waypointIndex, f32 speed, f32 arg3, s16 pathIndex, s16 arg5) |
s16 | func_8000D940 (Vec3f pos, s16 *waypointIndex, f32 speed, f32 arg3, s16 pathIndex) |
s16 | update_vehicle_following_path (Vec3f pos, s16 *waypointIndex, f32 speed) |
void | set_bomb_kart_spawn_positions (void) |
void | func_8000DF8C (s32 bombKartId) |
s32 | add_actor_in_unexpired_actor_list (s32 actorIndex, s16 arg1) |
s32 | add_red_shell_in_unexpired_actor_list (s32 actorIndex) |
s32 | add_green_shell_in_unexpired_actor_list (s32 actorIndex) |
s32 | add_blue_shell_in_unexpired_actor_list (s32 arg0) |
void | delete_actor_in_unexpired_actor_list (s32 actorIndex) |
void | func_8000EEDC (void) |
void | generate_player_smoke (void) |
void | func_8000F0E0 (void) |
void | func_8000F124 (void) |
void | clear_path_point (TrackPathPoint *arg0, size_t size) |
void | init_course_path_point (void) |
void | init_players (void) |
void | load_track_path (s32 pathIndex) |
void | calculate_track_boundaries (s32 pathIndex) |
f32 | calculate_track_curvature (s32 pathIndex, u16 waypointIndex) |
void | analyze_track_section (s32 pathIndex) |
s16 | calculate_angle_path (s32 pathIndex, s32 waypointIndex) |
void | analyse_angle_path (s32 pathIndex) |
void | analyze_curved_path (s32 pathIndex) |
f32 | func_80010F40 (f32 arg0, f32 arg1, f32 arg2, UNUSED s32 arg3, UNUSED s32 arg4) |
f32 | func_80010FA0 (f32 arg0, f32 arg1, f32 arg2, UNUSED s32 arg3, UNUSED s32 arg4) |
s32 | func_80011014 (TrackPathPoint *pathDest, TrackPathPoint *path, s32 numPathPoints, UNUSED s32 pathIndex) |
s32 | process_path_data (TrackPathPoint *dest, TrackPathPoint *src) |
s32 | generate_2d_path (Path2D *pathDest, TrackPathPoint *pathSrc, s32 numWaypoints) |
void | copy_courses_cpu_behaviour (void) |
void | reset_cpu_behaviour_none (s32 playerIndex) |
void | reset_cpu_behaviour (s32 playerIndex) |
void | cpu_behaviour_start (s32 playerId, Player *player) |
void | cpu_behaviour_end (s32 playerIndex, Player *player) |
void | cpu_behaviour (s32 playerIndex) |
void | func_80011EC0 (s32 arg0, Player *player, s32 arg2, UNUSED u16 arg3) |
void | generate_train_path (void) |
void | generate_ferry_path (void) |
void | spawn_vehicle_on_road (Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex, s32 someMultiplierTheSequel, f32 speed) |
void | set_vehicle_pos_path_point (TrainCarStuff *trainCar, Path2D *posXZ, u16 waypoint) |
void | init_vehicles_trains (size_t i, size_t numCarriages, f32 speed) |
void | sync_train_components (TrainCarStuff *trainCar, s16 orientationY) |
sync the train components vehicle with the actor | |
void | update_vehicle_trains (void) |
void | handle_trains_interactions (s32 playerId, Player *player) |
void | func_80013054 (void) |
void | check_ai_crossing_distance (s32 playerId) |
void | init_vehicles_ferry (void) |
void | update_vehicle_paddle_boats (void) |
void | handle_paddle_boats_interactions (Player *player) |
void | initialize_toads_turnpike_vehicle (f32 speedA, f32 speedB, s32 numVehicles, s32 arg3, VehicleStuff *vehicleList, TrackPathPoint *waypointList) |
f32 | func_80013C74 (s16 someType, s16 waypointIndex) |
void | update_vehicle_follow_path_point (VehicleStuff *vehicle) |
void | handle_vehicle_interactions (s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3, f32 arg4, s32 arg5, u32 soundBits) |
f32 | player_track_position_factor_vehicle (s16 arg0, f32 arg1, s16 arg2) |
void | update_player_track_position_factor_from_vehicle (s32 playerId, s32 arg1, VehicleStuff *vehicle) |
void | init_vehicles_box_trucks (void) |
void | update_vehicle_box_trucks (void) |
void | handle_box_trucks_interactions (s32 playerId, Player *player) |
void | update_player_track_position_factor_from_box_trucks (s32 playerId) |
void | init_vehicles_school_buses (void) |
void | update_vehicle_school_bus (void) |
void | handle_school_buses_interactions (s32 playerId, Player *player) |
void | update_player_track_position_factor_from_buses (s32 playerId) |
void | init_vehicles_trucks (void) |
void | update_vehicle_tanker_trucks (void) |
void | handle_tanker_trucks_interactions (s32 playerId, Player *player) |
void | update_player_track_position_factor_from_tanker_truck (s32 playerId) |
void | init_vehicles_cars (void) |
void | update_vehicle_cars (void) |
void | handle_cars_interactions (s32 playerId, Player *player) |
void | update_player_track_position_factor_from_cars (s32 playerId) |
void | func_80014D30 (s32 cameraId, s32 pathIndex) |
void | func_80014DE4 (s32 cameraIndex) |
f32 | func_80014EE4 (f32 arg0, s32 arg1) |
void | calculate_camera_up_vector (Camera *camera, s32 cameraIndex) |
UNUSED void | func_8001530C (void) |
void | func_80015314 (s32 playerId, UNUSED f32 arg1, s32 cameraId) |
void | func_80015390 (Camera *camera, UNUSED Player *player, UNUSED s32 arg2) |
void | func_80015544 (s32 playerId, f32 arg1, s32 cameraId, s32 pathIndex) |
void | func_8001577C (Camera *camera, UNUSED Player *playerArg, UNUSED s32 arg2, s32 cameraId) |
void | func_80015A9C (s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) |
void | func_80015C94 (Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) |
void | func_800162CC (s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) |
void | func_80016494 (Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) |
void | func_80016C3C (UNUSED s32 playerId, UNUSED f32 arg1, s32 cameraId) |
void | func_80017054 (Camera *camera, UNUSED Player *player, UNUSED s32 index, s32 cameraId) |
void | func_80017720 (s32 playerId, UNUSED f32 arg1, s32 cameraId, s16 pathIndex) |
void | func_800178F4 (Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) |
void | func_80017F10 (s32 playerId, UNUSED f32 arg1, s32 cameraId, s16 pathIndex) |
void | func_800180F0 (Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) |
void | func_80018718 (s32 playerId, UNUSED f32 arg1, s32 cameraId, s16 pathIndex) |
void | func_800188F4 (Camera *camera, UNUSED Player *unusePlayer, UNUSED s32 arg2, s32 cameraId) |
void | func_80019118 (s32 playerId, f32 arg1, s32 cameraId, UNUSED s16 pathIndex) |
void | func_8001933C (Camera *camera, UNUSED Player *playerArg, UNUSED s32 arg2, s32 cameraId) |
void | func_8001968C (void) |
void | func_8001969C (UNUSED s32 playerId, UNUSED f32 arg1, s32 cameraId, UNUSED s16 pathIndex) |
void | func_80019760 (Camera *camera, UNUSED Player *player, UNUSED s32 arg2, s32 cameraId) |
void | func_80019890 (s32 playerId, s32 cameraId) |
void | func_80019B50 (s32 cameraIndex, u16 arg1) |
void | func_80019C50 (s32 arg0) |
void | func_80019D2C (Camera *camera, Player *player, s32 arg2) |
void | func_80019DE4 (void) |
void | func_80019DF4 (void) |
void | func_80019E58 (void) |
void | func_80019ED0 (void) |
void | func_80019FB4 (s32 cameraId) |
void | func_8001A0A4 (UNUSED u16 *arg0, UNUSED Camera *arg1, UNUSED Player *arg2, UNUSED s8 arg3, s32 arg4) |
void | func_8001A0DC (u16 *arg0, Camera *arg1, Player *arg2, s8 arg3, s32 arg4) |
void | func_8001A124 (s32 arg0, s32 arg1) |
void | func_8001A220 (UNUSED s32 arg0, s32 cameraId) |
s32 | func_8001A310 (s32 waypoint, s32 arg1) |
void | func_8001A348 (s32 cameraId, f32 arg1, s32 arg2) |
void | func_8001A3D8 (s32 arg0, f32 arg1, s32 arg2) |
void | func_8001A450 (s32 playerId, s32 arg1, s32 arg2) |
void | func_8001A518 (s32 arg0, s32 arg1, s32 arg2) |
void | func_8001A588 (UNUSED u16 *localD_80152300, Camera *camera, Player *player, s8 index, s32 cameraIndex) |
void | func_8001AAAC (s16 arg0, s16 arg1, s16 arg2) |
void | func_8001AB00 (void) |
void | cpu_decisions_branch_item (UNUSED s32 playerId, s16 *branch, s32 itemId) |
void | func_8001ABE0 (UNUSED s32 arg0, UNUSED CpuItemStrategyData *arg1) |
void | clear_expired_strategies (CpuItemStrategyData *arg0) |
void | cpu_use_item_strategy (s32 playerId) |
void | func_8001BE78 (void) |
void | func_8001C05C (void) |
void | func_8001C14C (void) |
void | render_bomb_karts_wrap (s32 cameraId) |
UNUSED void | func_8001C42C (void) |
Variables | |
s32 | unk_code_80005FD0_pad [24] |
Collision | D_80162E70 |
s16 | D_80162EB0 |
s16 | D_80162EB2 |
CPUBehaviour * | gCoursesCPUBehaviour [NUM_COURSES - 1] |
s32 | D_80162F08 [2] |
s16 | D_80162F10 [30] |
s16 | D_80162F50 [30] |
s32 | D_80162F90 [4] |
Vec3f | gOffsetPosition |
Vec3f | D_80162FB0 |
Vec3f | D_80162FC0 |
s16 | gTrainSmokeTimer |
s16 | sSomeNearestPathPoint |
s16 | D_80162FD0 |
f32 | gCourseCompletionPercentByRank [NUM_PLAYERS] |
s16 | D_80162FF8 [12] |
s16 | D_80163010 [12] |
f32 | cpu_TargetSpeed [10] |
s16 | gPreviousAngleSteering [12] |
f32 | gTrackPositionFactor [10] |
f32 | D_80163090 [10] |
bool | gIsPlayerInCurve [10] |
u16 | gCurrentNearestPathPoint |
s16 | gIsPlayerNewPathPoint |
s16 | D_801630E8 [10] |
s16 | gFerrySmokeTimer |
s32 | D_80163100 [10] |
s32 | D_80163128 [10] |
s32 | D_80163150 [10] |
f32 | gPreviousPlayerAiOffsetX [10] |
f32 | gPreviousPlayerAiOffsetZ [10] |
s16 | sVehicleSoundRenderCounter |
s32 | D_801631CC |
TrackPathPoint * | gCurrentTrackLeftPath |
TrackPathPoint * | gCurrentTrackRightPath |
s16 * | gCurrentTrackSectionTypesPath |
s16 * | gCurrentPathPointExpectedRotationPath |
u16 | D_801631E0 [12] |
u16 | D_801631F8 [10] |
f32 | gCurrentCpuTargetSpeed |
f32 | gPreviousCpuTargetSpeed [10] |
s32 | D_80163238 |
u16 | D_80163240 [12] |
u16 | gWrongDirectionCounter [12] |
u16 | gIsPlayerWrongDirection [12] |
s32 | gPreviousLapProgressScore [10] |
CPUBehaviour * | sCurrentCPUBehaviour |
u16 | gCurrentCPUBehaviourId [12] |
u16 | gPreviousCPUBehaviourId [12] |
u16 | cpu_BehaviourState [12] |
s16 | sPlayerAngle [12] |
u16 | gPlayersTrackSectionId [12] |
u16 | D_80163330 [10] |
u16 | D_80163344 [2] |
u16 | D_80163348 [2] |
u16 | D_8016334C [8] |
u16 | gSpeedCPUBehaviour [12] |
s32 | D_80163368 [4] |
s32 | gIncrementUpdatePlayer |
s32 | D_8016337C |
s16 | gCurrentPlayerLookAhead [12] |
s16 | D_80163398 [12] |
s16 | D_801633B0 [12] |
s16 | D_801633C8 [12] |
s16 | D_801633E0 [12] |
s16 | D_801633F8 [12] |
s16 | D_80163410 [4] |
f32 | D_80163418 [4] |
f32 | D_80163428 [4] |
f32 | D_80163438 [4] |
s32 | gPlayerPathIndex |
f32 | gPathStartZ |
f32 | gPreviousPlayerZ [10] |
s16 | gBestRankedHumanPlayer |
s16 | gIsInExtra |
s16 | D_8016347C |
s16 | D_8016347E |
s32 | D_80163480 |
s32 | D_80163484 |
s32 | D_80163488 |
s16 | D_8016348C |
s16 | cpu_enteringPathIntersection [12] |
s16 | cpu_exitingPathIntersection [12] |
s16 | D_801634C0 [12] |
s16 | bStopAICrossing [10] |
s16 | D_801634EC |
s32 | D_801634F0 |
s32 | D_801634F4 |
TrackPositionFactorInstruction | gPlayerTrackPositionFactorInstruction [10] |
Path2D * | gVehicle2DPathPoint |
s32 | gVehicle2DPathLength |
TrainStuff | gTrainList [NUM_TRAINS] |
u16 | isCrossingTriggeredByIndex [NUM_CROSSINGS] |
u16 | sCrossingActiveTimer [NUM_CROSSINGS] |
PaddleBoatStuff | gPaddleBoats [NUM_PADDLE_BOATS] |
VehicleStuff | gBoxTruckList [NUM_RACE_BOX_TRUCKS] |
VehicleStuff | gSchoolBusList [NUM_RACE_SCHOOL_BUSES] |
VehicleStuff | gTankerTruckList [NUM_RACE_TANKER_TRUCKS] |
VehicleStuff | gCarList [NUM_RACE_CARS] |
s32 | D_80163DD8 [4] |
BombKart | gBombKarts [NUM_BOMB_KARTS_MAX] |
Collision | gBombKartCollision [NUM_BOMB_KARTS_MAX] |
struct unexpiredActors | gUnexpiredActorsList [8] |
CpuItemStrategyData | cpu_ItemStrategy [8] |
s16 | D_80164358 |
s16 | D_8016435A |
s16 | D_8016435C |
s16 | gGPCurrentRacePlayerIdByRank [12] |
s16 | D_80164378 [12] |
s32 | gLapCountByPlayerId [10] |
s32 | gGPCurrentRaceRankByPlayerId [10] |
s32 | gPreviousGPCurrentRaceRankByPlayerId [10] |
s32 | gGPCurrentRaceRankByPlayerIdDup [10] |
u16 | gSelectedPathCount |
u16 | gNearestPathPointByPlayerId [12] |
s32 | gNumPathPointsTraversed [10] |
s16 | gGetPlayerByCharacterId [10] |
s32 | D_8016448C |
TrackPathPoint * | gCurrentTrackPath |
f32 | D_80164498 [4] |
f32 | gLapCompletionPercentByPlayerId [10] |
f32 | gCourseCompletionPercentByPlayerId [10] |
s16 | bInMultiPathSection [12] |
f32 | gPlayerPathY [10] |
s16 | D_80164538 [12] |
TrackPathPoint * | gTrackPaths [4] |
TrackPathPoint * | gTrackLeftPaths [4] |
TrackPathPoint * | gTrackRightPaths [4] |
s16 * | gTrackSectionTypes [4] |
s16 * | gPathExpectedRotation [4] |
s16 * | gTrackConsecutiveCurveCounts [4] |
u16 | gPathIndexByPlayerId [12] |
u16 | gPathCountByPathIndex [4] |
s32 | D_801645D0 [4] |
s16 * | gCurrentTrackConsecutiveCurveCountsPath |
s32 | D_801645E8 [4] |
f32 | D_801645F8 [4] |
s32 | D_80164608 [4] |
f32 | D_80164618 [4] |
s32 | D_80164628 [4] |
f32 | D_80164638 [4] |
f32 | D_80164648 [4] |
f32 | D_80164658 [4] |
s16 | gNearestPathPointByCameraId [4] |
s16 | D_80164670 [4] |
s16 | D_80164678 [4] |
s16 | D_80164680 [4] |
f32 | D_80164688 [4] |
f32 | D_80164698 |
f32 | D_8016469C |
f32 | D_801646A0 |
s32 | D_801646A4 |
s32 | D_801646A8 |
s32 | D_801646AC |
s32 | D_801646B0 |
s32 | D_801646B4 |
s32 | D_801646B8 |
s32 | D_801646BC |
s16 | D_801646C0 [4] |
u32 | D_801646C8 |
u16 | D_801646CC |
UnkStruct_46D0 | D_801646D0 [4] |
char * | D_800EB710 = "ゴール直後の強制ソート\n" |
char * | D_800EB728 = "2PGPで片方がゴール直後の強制ソート\n" |
char * | D_800EB74C = "順位計算エラー!! (num %d) (rank %d) (e_rank %d)\n" |
char * | D_800EB780 = "バイパス切り替え エラー!!!(num %d org_bipas %d bipas %d)\n" |
char * | D_800EB7BC = "(%d) rap %3d rate_count_F %10.2f rap_count_F %10.2f area %5d \n" |
char * | D_800EB800 = "迷路に突入! enemy %d (%d --> %d)\n" |
char * | D_800EB824 = "迷路から出た! enemy %d (%d --> %d)\n" |
char * | D_800EB84C = "enemy voice set (%d slip_flag %x weapon %x)\n" |
char * | D_800EB87C = "スピンヴォイス!!(%d , name %d)\n" |
char * | D_800EB8A0 = "ダメージヴォイス!!(%d, name %d)\n" |
char * | D_800EB8C4 = "===== ENEMY DRIVE SUB (%d) =====\n" |
char * | D_800EB8E8 = "ENEMY END(手抜き)\n\n" |
char * | D_800EB8FC = "ENEMY END(手抜き)\n\n" |
char * | D_800EB910 = "(1)enemy stick angle over!! (%d)\n" |
char * | D_800EB934 = "ENEMY END\n\n" |
char * | D_800EB940 = "(2)enemy stick angle over!! (%d)\n" |
char * | D_800EB964 = "ENEMY END\n\n" |
char * | D_800EB970 = "AREA ERR!!! (現在のセンターライン %d に未登録のグループです) %d\n" |
char * | D_800EB9B4 = "AREA ERR!!! (未登録のグループです) %d\n" |
char * | D_800EB9DC = "get_oga_area_sub_BP() ... エリアが見つからないッス! (b_num = %d)\n" |
char * | D_800EBA20 = " 状況: (%d, %d, %d) \n" |
char * | D_800EBA38 = "<%d> (%d, %d, %d) [%d] lng %f\n" |
char * | D_800EBA58 = "ワリオスタジアム ジャンプ失敗!!! (area %d, y %7.2f)\n" |
char * | D_800EBA94 = "水に落ちた!! センターラインに強制移動しました (num %d: area %d ) (%d,%d,%d)\n" |
char * | D_800EBAE4 |
char * | D_800EBB60 |
char * | D_800EBBDC = "こーすあうと!!! エリアを再計算しました (num %d: area %d ==>%d)\n" |
char * | D_800EBC24 = "直接指定のBOM(%d) (%7.2f, %7.2f, %7.2f) \n" |
char * | D_800EBC50 = "BOM HIT CHECK\n" |
char * | D_800EBC60 = "BOM HIT !!!!! (%d)\n" |
char * | D_800EBC74 = "BOM待機\n" |
char * | D_800EBC80 = "RESULT BOM area(%d)\n" |
char * | D_800EBC98 = "BOM が 落ちました。\n" |
char * | D_800EBCB0 = "カメ用火柱 SET 失敗 (TABLE IS FULL)\n" |
char * | D_800EBCD8 = "赤ガメ火柱セットエラー! (category %d)\n" |
char * | D_800EBD00 = "青ガメ火柱セットエラー! (category %d)\n" |
char * | D_800EBD28 = "トゲガメ火柱セットエラー! (category %d)\n" |
char * | D_800EBD54 = "カメ火柱初期化!!\n" |
char * | D_800EBD68 = "センターライン初期化\n" |
char * | D_800EBD80 = "MAP NUMBER %d\n" |
char * | D_800EBD90 = "center_EX ptr = %x %x (%x)\n" |
char * | D_800EBDB4 = "\n" |
char * | D_800EBDB8 = "center_BP[%d] ptr = %x %x (%x)\n" |
char * | D_800EBDE0 = "side_point_L_BP[%d] ptr = %x %x (%x)\n" |
char * | D_800EBE08 = "side_point_R_BP[%d] ptr = %x %x (%x)\n" |
char * | D_800EBE30 = "curve_BP[%d] ptr = %x %x (%x)\n" |
char * | D_800EBE58 = "angle_BP[%d] ptr = %x %x (%x)\n" |
char * | D_800EBE80 = "short_cut_data_BP[%d] ptr = %x %x (%x)\n" |
char * | D_800EBEA8 = "\n" |
char * | D_800EBEAC = "小川の使用メモリー合計 = %d\n" |
char * | D_800EBECC = "敵初期化\n" |
char * | D_800EBED8 = "敵初期化終了\n" |
char * | D_800EBEE8 = "バイパス CENTER LINE 分割開始\n" |
char * | D_800EBF08 = "センターラインをROMから読みます (map:%d)\n" |
char * | D_800EBF34 = "ROM center (BP%d) line adr. = %x (%x)\n" |
char * | D_800EBF5C = "センターラインを計算します (map:%d)\n" |
char * | D_800EBF84 = "center (BP%d) line adr. = %x (%x)\n" |
char * | D_800EBFA8 = "BP center_point_number : %d\n" |
char * | D_800EBFC8 = "センターライン データ エラー!!\n" |
char * | D_800EBFEC = "バイパス CENTER LINE 分割終了 (%d -> %d 個)\n" |
char * | D_800EC01C = "センターラインが ありません。(map:%d)\n" |
char * | D_800EC044 = "サイドポイント計算 (バイパス %d)\n" |
char * | D_800EC068 = "カーブデータ計算 (バイパス %d)\n" |
char * | D_800EC088 = "センターラインが ありません。(map:%d)\n" |
char * | D_800EC0B0 = "アングルデータ計算 (バイパス %d) \n" |
char * | D_800EC0D4 = "センターラインが ありません。(map:%d)\n" |
char * | D_800EC0FC = "ショートカットデータ計算 (バイパス %d)\n" |
char * | D_800EC124 = "extern POINT rom_center_KT%d_BP%d[] = {\n" |
char * | D_800EC150 = "\t{%d,%d,%d,%d},\n" |
char * | D_800EC164 = "\t0x8000,0x8000,0x8000,0\n};\n\n" |
char * | D_800EC184 = "area read from ROM (%d)\n" |
char * | D_800EC1A0 = "ノーマルジャンプ!!!(%d)\n" |
char * | D_800EC1BC = "ターボオン!!!(%d)\n" |
char * | D_800EC1D4 = "手抜き禁止!!!(%d)\n" |
char * | D_800EC1EC = "アクション開始データエラー!(num %d, act %d)\n" |
char * | D_800EC21C = "アクション終了データエラー!(num %d, act %d, old_act_num %d)\n" |
char * | D_800EC25C = "SL : center_point_number : %d\n" |
char * | D_800EC27C = "SL: CENTER LINE 分割開始\n" |
char * | D_800EC298 = "SL: CENTER LINE 分割終了 (%d -> %d 個)\n" |
char * | D_800EC2C0 = "SHIP : center_point_number : %d\n" |
char * | D_800EC2E4 = "SHIP: CENTER LINE 分割開始\n" |
char * | D_800EC300 = "SHIP: CENTER LINE 分割終了 (%d -> %d 個)\n" |
char * | D_800EC32C = "汎用OBJキャラ初期化\n" |
char * | D_800EC344 = "SL OBJ設定\n" |
char * | D_800EC350 = "SHIP OBJ設定\n" |
char * | D_800EC360 = "トラックOBJ設定\n" |
char * | D_800EC374 = "バスOBJ設定\n" |
char * | D_800EC384 = "タンクOBJ設定\n" |
char * | D_800EC394 = "RV OBJ設定\n" |
char * | D_800EC3A0 = "汎用OBJキャラ初期化終了\n" |
char * | D_800EC3BC = "クラクション (num %d, permit %d, %d)\n" |
char * | D_800EC3E4 = "OGA CAMERA INIT (%d)\n" |
char * | D_800EC3FC = "OGA CAMERA INIT END\n" |
char * | D_800EC414 = "高速カメラ ERR !!! (ncx = %f)\n" |
char * | D_800EC434 = "高速カメラ ERR !!! (ncz = %f)\n" |
char * | D_800EC454 = "高速カメラ ERR !!! (ecx = %f)\n" |
char * | D_800EC474 = "高速カメラ ERR !!! (ecz = %f)\n" |
char * | D_800EC494 = "OGA DRIVERS POINT CAMERA MODE \n" |
char * | D_800EC4B4 = "OGA WINNER CAMERA MODE \n" |
char * | D_800EC4D0 = "OGA TIMEATTACK QUICK CAMERA INIT \n" |
char * | D_800EC4F4 = "OGA BATTLE CAMERA INIT win(%d)\n" |
char * | D_800EC514 = "GOAL! <<rank 1>> camera %d rank %d\n" |
char * | D_800EC53C = "GOAL! <<rank 2,3,4>> camera %d rank %d\n" |
char * | D_800EC568 = "GOAL! <<rank 5,6,7,8>> camera %d rank %d\n" |
char * | D_800EC594 = "カメラとカートが衝突しました!!! (%d)\n" |
char * | D_800EC5C0 = "<<< ITEM OBJ NUMBER ERR !! >>> item %d obj_num %d \n" |
char * | D_800EC5F8 = "<<< BANANA SET 失敗 >>> obj_num %d zure %f \n" |
char * | D_800EC628 = "BANANA 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800EC65C = "理由: EXISTOBJ \n" |
char * | D_800EC670 = "理由: category \n" |
char * | D_800EC684 = "理由: sparam \n" |
char * | D_800EC694 = "理由: num \n" |
char * | D_800EC6A0 = "BANANA HOLD (num %d time %d hold_time %d)\n" |
char * | D_800EC6D0 = "設置 BANANA 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800EC708 = "理由: EXISTOBJ \n" |
char * | D_800EC71C = "理由: category \n" |
char * | D_800EC730 = "理由: sparam \n" |
char * | D_800EC740 = "理由: num \n" |
char * | D_800EC74C = "BANANA 置きました。 (num %d)\n" |
char * | D_800EC76C = "<<< BANANA NAGE SET 失敗 >>> obj_num %d \n" |
char * | D_800EC798 = "BANANA NAGE MOVE 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800EC7D8 = "理由: EXISTOBJ \n" |
char * | D_800EC7EC = "理由: category \n" |
char * | D_800EC800 = "理由: sparam \n" |
char * | D_800EC810 = "理由: num \n" |
char * | D_800EC81C = "BANANA NAGE END 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800EC858 = "理由: EXISTOBJ \n" |
char * | D_800EC86C = "理由: category \n" |
char * | D_800EC880 = "理由: sparam \n" |
char * | D_800EC890 = "理由: num \n" |
char * | D_800EC89C = "G_SHELL HOLD (num %d time %d hold_time %d)\n" |
char * | D_800EC8CC = "<<< G_SHELL SET 失敗 >>> obj_num %d \n" |
char * | D_800EC8F4 = "<<< G_SHELL SET 失敗 >>> object_count %d \n" |
char * | D_800EC920 = "G_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800EC954 = "理由: EXISTOBJ \n" |
char * | D_800EC968 = "理由: category \n" |
char * | D_800EC97C = "理由: sparam \n" |
char * | D_800EC98C = "理由: num \n" |
char * | D_800EC998 = "発射直前 G_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800EC9D8 = "理由: EXISTOBJ \n" |
char * | D_800EC9EC = "理由: category \n" |
char * | D_800ECA00 = "理由: sparam \n" |
char * | D_800ECA10 = "理由: num \n" |
char * | D_800ECA1C = "G_SHELL 発射 (num %d)\n" |
char * | D_800ECA34 = "R_SHELL HOLD (num %d time %d hold_time %d obj_num %d)\n" |
char * | D_800ECA70 = "<<< R_SHELL SET 失敗 >>> obj_num %d \n" |
char * | D_800ECA98 = "<<< R_SHELL SET 失敗 >>> object_count %d \n" |
char * | D_800ECAC4 = "R_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800ECAF8 = "理由: EXISTOBJ \n" |
char * | D_800ECB0C = "理由: category \n" |
char * | D_800ECB20 = "理由: sparam \n" |
char * | D_800ECB30 = "理由: num \n" |
char * | D_800ECB3C = "R_SHELL SHOOT (num %d time %d hold_time %d obj_num %d)\n" |
char * | D_800ECB78 = "発射直前 R_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800ECBB8 = "理由: EXISTOBJ \n" |
char * | D_800ECBCC = "理由: category \n" |
char * | D_800ECBE0 = "理由: sparam \n" |
char * | D_800ECBF0 = "理由: num \n" |
char * | D_800ECBFC = "R_SHELL 発射 (num %d)\n" |
char * | D_800ECC14 = "S_BANANA HOLD (num %d time %d hold_time %d)\n" |
char * | D_800ECC44 = "<<< SUPER_BANANA SET 失敗 >>> obj_num %d \n" |
char * | D_800ECC70 = "<<< SUPER_BANANA SET 失敗 >>> object_count %d \n" |
char * | D_800ECCA0 = "S_BANANA 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800ECCD8 = "理由: category \n" |
char * | D_800ECCEC = "理由: sparam \n" |
char * | D_800ECCFC = "理由: sb_ok \n" |
char * | D_800ECD0C = "S_BANANA RELEASE (num %d time %d )\n" |
char * | D_800ECD34 = "<<< FAKE IBOX SET 失敗 >>> obj_num %d \n" |
char * | D_800ECD5C = "IBOX 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800ECD90 = "理由: EXISTOBJ \n" |
char * | D_800ECDA4 = "理由: category \n" |
char * | D_800ECDB8 = "理由: sparam \n" |
char * | D_800ECDC8 = "理由: num \n" |
char * | D_800ECDD4 = "FBOX HOLD (num %d time %d hold_time %d)\n" |
char * | D_800ECE00 = "設置 IBOX 所有者チェックに引っ掛かりました。(num %d)\n" |
char * | D_800ECE38 = "理由: EXISTOBJ \n" |
char * | D_800ECE4C = "理由: category \n" |
char * | D_800ECE60 = "理由: sparam \n" |
char * | D_800ECE70 = "理由: num \n" |
char * | D_800ECE7C = "雷START (%d)\n" |
char * | D_800ECE8C = "雷END (%d)\n" |
char * | D_800ECE98 = "---------- 表彰台初期化\n" |
char * | D_800ECEB4 = "map_number = %d - > 20 書き換え中。\n" |
char * | D_800ECEDC = "OGA 表彰 move 開始\n" |
char * | D_800ECEF0 = "4位の人の表示をコールしました。\n" |
char * | D_800ECF14 = "表彰台に到着\n" |
char * | D_800ECF24 = "全員集合!\n" |
char * | D_800ECF30 = "道路に到着\n" |
char * | D_800ECF3C = "4位の人終了\n" |
char * | D_800ECF4C = "OGA 表彰 move 終了\n" |
char * | D_800ECF60 = "OGAWA DEBUG DRAW\n" |
#define BANANA_ACTOR | ( | actor | ) |
#define BANANA_BUNCH_ACTOR | ( | actor | ) |
#define calc | ( | table | ) |
#define calc_a | ( | x, | |
y, | |||
x2, | |||
y2 ) |
#define calc_b | ( | x, | |
y, | |||
b ) |
#define FAKE_ITEMBOX_ACTOR | ( | actor | ) |
#define GET_PATH_LENGTH | ( | waypoint | ) |
#define SHELL_ACTOR | ( | actor | ) |
s32 add_actor_in_unexpired_actor_list | ( | s32 | actorIndex, |
s16 | arg1 ) |
s32 add_blue_shell_in_unexpired_actor_list | ( | s32 | arg0 | ) |
s32 add_green_shell_in_unexpired_actor_list | ( | s32 | actorIndex | ) |
s32 add_red_shell_in_unexpired_actor_list | ( | s32 | actorIndex | ) |
void adjust_path_at_start_line | ( | UNUSED f32 | posX, |
UNUSED f32 | posY, | ||
f32 | posZ, | ||
s16 * | waypointIndex, | ||
s32 | pathIndex ) |
void analyse_angle_path | ( | s32 | pathIndex | ) |
void analyze_curved_path | ( | s32 | pathIndex | ) |
void analyze_track_section | ( | s32 | pathIndex | ) |
s32 are_in_curve | ( | UNUSED s32 | arg0, |
u16 | waypointIndex ) |
s16 calculate_angle_path | ( | s32 | pathIndex, |
s32 | waypointIndex ) |
void calculate_camera_up_vector | ( | Camera * | camera, |
s32 | cameraIndex ) |
void calculate_track_boundaries | ( | s32 | pathIndex | ) |
f32 calculate_track_curvature | ( | s32 | pathIndex, |
u16 | waypointIndex ) |
void calculate_track_offset_position | ( | u16 | waypointIndex, |
f32 | arg1, | ||
f32 | arg2, | ||
s16 | pathIndex ) |
f32 calculate_track_position_factor | ( | f32 | posX, |
f32 | posZ, | ||
u16 | waypointIndex, | ||
s32 | pathIndex ) |
void check_ai_crossing_distance | ( | s32 | playerId | ) |
void clear_expired_strategies | ( | CpuItemStrategyData * | arg0 | ) |
void clear_path_point | ( | TrackPathPoint * | arg0, |
size_t | size ) |
void copy_courses_cpu_behaviour | ( | void | ) |
void cpu_behaviour | ( | s32 | playerIndex | ) |
void cpu_behaviour_end | ( | s32 | playerIndex, |
Player * | player ) |
void cpu_behaviour_start | ( | s32 | playerId, |
Player * | player ) |
void cpu_decisions_branch_item | ( | UNUSED s32 | playerId, |
s16 * | branch, | ||
s32 | itemId ) |
f32 cpu_track_position_factor | ( | s32 | playerId | ) |
void cpu_use_item_strategy | ( | s32 | playerId | ) |
void delete_actor_in_unexpired_actor_list | ( | s32 | actorIndex | ) |
void detect_wrong_player_direction | ( | s32 | playerId, |
Player * | player ) |
void determine_ideal_cpu_position_offset | ( | s32 | arg0, |
u16 | arg1 ) |
s16 find_closest_path_point_track_section | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
u16 | trackSectionId, | ||
s32 * | pathIndex ) |
s16 find_closest_vehicles_path_point | ( | f32 | xPos, |
UNUSED f32 | yPos, | ||
f32 | zPos, | ||
s16 | waypointIndex ) |
void func_80007D04 | ( | s32 | playerId, |
Player * | player ) |
void func_80007FA4 | ( | s32 | arg0, |
Player * | player, | ||
f32 | arg2 ) |
bool func_800088D8 | ( | s32 | playerId, |
s16 | lapNum, | ||
s16 | arg2 ) |
f32 func_80009258 | ( | UNUSED s32 | playerId, |
f32 | arg1, | ||
f32 | arg2 ) |
Helps calculate time since player last touched finishline.
void func_8000B140 | ( | s32 | playerId | ) |
s16 func_8000BD94 | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s32 | pathIndex ) |
s16 func_8000D24C | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s32 * | pathIndex ) |
s16 func_8000D2B4 | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s16 | waypointIndex, | ||
s32 | pathIndex ) |
s16 func_8000D33C | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s16 | waypointIndex, | ||
s32 | pathIndex ) |
s16 func_8000D6D0 | ( | Vec3f | position, |
s16 * | waypointIndex, | ||
f32 | speed, | ||
f32 | arg3, | ||
s16 | pathIndex, | ||
s16 | arg5 ) |
s16 func_8000D940 | ( | Vec3f | pos, |
s16 * | waypointIndex, | ||
f32 | speed, | ||
f32 | arg3, | ||
s16 | pathIndex ) |
void func_8000DF8C | ( | s32 | bombKartId | ) |
void func_8000EEDC | ( | void | ) |
void func_8000F0E0 | ( | void | ) |
void func_8000F124 | ( | void | ) |
s32 func_80011014 | ( | TrackPathPoint * | pathDest, |
TrackPathPoint * | path, | ||
s32 | numPathPoints, | ||
UNUSED s32 | pathIndex ) |
void func_80013054 | ( | void | ) |
Appears to check if the train is close to the crossing. Implements sCrossingActiveTimer as a counter
f32 func_80013C74 | ( | s16 | someType, |
s16 | waypointIndex ) |
void func_80014D30 | ( | s32 | cameraId, |
s32 | pathIndex ) |
void func_80014DE4 | ( | s32 | cameraIndex | ) |
f32 func_80014EE4 | ( | f32 | arg0, |
s32 | arg1 ) |
UNUSED void func_8001530C | ( | void | ) |
void func_80015314 | ( | s32 | playerId, |
UNUSED f32 | arg1, | ||
s32 | cameraId ) |
void func_80015544 | ( | s32 | playerId, |
f32 | arg1, | ||
s32 | cameraId, | ||
s32 | pathIndex ) |
void func_80015A9C | ( | s32 | playerId, |
f32 | arg1, | ||
s32 | cameraId, | ||
s16 | pathIndex ) |
void func_800162CC | ( | s32 | playerId, |
f32 | arg1, | ||
s32 | cameraId, | ||
s16 | pathIndex ) |
void func_80017720 | ( | s32 | playerId, |
UNUSED f32 | arg1, | ||
s32 | cameraId, | ||
s16 | pathIndex ) |
void func_80017F10 | ( | s32 | playerId, |
UNUSED f32 | arg1, | ||
s32 | cameraId, | ||
s16 | pathIndex ) |
void func_80018718 | ( | s32 | playerId, |
UNUSED f32 | arg1, | ||
s32 | cameraId, | ||
s16 | pathIndex ) |
void func_80019118 | ( | s32 | playerId, |
f32 | arg1, | ||
s32 | cameraId, | ||
UNUSED s16 | pathIndex ) |
void func_8001968C | ( | void | ) |
void func_80019890 | ( | s32 | playerId, |
s32 | cameraId ) |
void func_80019B50 | ( | s32 | cameraIndex, |
u16 | arg1 ) |
void func_80019C50 | ( | s32 | arg0 | ) |
void func_80019DE4 | ( | void | ) |
void func_80019DF4 | ( | void | ) |
void func_80019E58 | ( | void | ) |
void func_80019ED0 | ( | void | ) |
void func_80019FB4 | ( | s32 | cameraId | ) |
void func_8001A0A4 | ( | UNUSED u16 * | arg0, |
UNUSED Camera * | arg1, | ||
UNUSED Player * | arg2, | ||
UNUSED s8 | arg3, | ||
s32 | arg4 ) |
void func_8001A124 | ( | s32 | arg0, |
s32 | arg1 ) |
void func_8001A220 | ( | UNUSED s32 | arg0, |
s32 | cameraId ) |
s32 func_8001A310 | ( | s32 | waypoint, |
s32 | arg1 ) |
void func_8001A348 | ( | s32 | cameraId, |
f32 | arg1, | ||
s32 | arg2 ) |
void func_8001A3D8 | ( | s32 | arg0, |
f32 | arg1, | ||
s32 | arg2 ) |
void func_8001A450 | ( | s32 | playerId, |
s32 | arg1, | ||
s32 | arg2 ) |
void func_8001A518 | ( | s32 | arg0, |
s32 | arg1, | ||
s32 | arg2 ) |
void func_8001A588 | ( | UNUSED u16 * | localD_80152300, |
Camera * | camera, | ||
Player * | player, | ||
s8 | index, | ||
s32 | cameraIndex ) |
void func_8001AAAC | ( | s16 | arg0, |
s16 | arg1, | ||
s16 | arg2 ) |
void func_8001AB00 | ( | void | ) |
void func_8001ABE0 | ( | UNUSED s32 | arg0, |
UNUSED CpuItemStrategyData * | arg1 ) |
void func_8001BE78 | ( | void | ) |
void func_8001C05C | ( | void | ) |
void func_8001C14C | ( | void | ) |
UNUSED void func_8001C42C | ( | void | ) |
s32 generate_2d_path | ( | Path2D * | pathDest, |
TrackPathPoint * | pathSrc, | ||
s32 | numWaypoints ) |
void generate_ferry_path | ( | void | ) |
void generate_player_smoke | ( | void | ) |
void generate_train_path | ( | void | ) |
void handle_box_trucks_interactions | ( | s32 | playerId, |
Player * | player ) |
void handle_cars_interactions | ( | s32 | playerId, |
Player * | player ) |
void handle_paddle_boats_interactions | ( | Player * | player | ) |
void handle_school_buses_interactions | ( | s32 | playerId, |
Player * | player ) |
void handle_tanker_trucks_interactions | ( | s32 | playerId, |
Player * | player ) |
void handle_trains_interactions | ( | s32 | playerId, |
Player * | player ) |
void handle_vehicle_interactions | ( | s32 | playerId, |
Player * | player, | ||
VehicleStuff * | vehicle, | ||
f32 | arg3, | ||
f32 | arg4, | ||
s32 | arg5, | ||
u32 | soundBits ) |
void init_course_path_point | ( | void | ) |
void init_players | ( | void | ) |
todo: @BUG this doesn't seem right. This variable is metadata.
void init_vehicles_box_trucks | ( | void | ) |
void init_vehicles_cars | ( | void | ) |
void init_vehicles_ferry | ( | void | ) |
void init_vehicles_school_buses | ( | void | ) |
void init_vehicles_trains | ( | size_t | i, |
size_t | numCarriages, | ||
f32 | speed ) |
Set waypoint spawn locations for each rolling stock The railroad has 465 waypoints
void init_vehicles_trucks | ( | void | ) |
void initialize_toads_turnpike_vehicle | ( | f32 | speedA, |
f32 | speedB, | ||
s32 | numVehicles, | ||
s32 | arg3, | ||
VehicleStuff * | vehicleList, | ||
TrackPathPoint * | waypointList ) |
s32 is_collide_with_vehicle | ( | f32 | vehicleX, |
f32 | vehicleZ, | ||
f32 | vehicleVelocityX, | ||
f32 | vehicleVelocityZ, | ||
f32 | distanceX, | ||
f32 | distanceY, | ||
f32 | playerX, | ||
f32 | playerZ ) |
bool is_far_from_path | ( | s32 | playerIndex | ) |
s32 is_path_point_in_range | ( | u16 | pathPoint, |
u16 | currentPathPoint, | ||
u16 | backwardRange, | ||
u16 | forwardRange, | ||
u16 | totalPathPoints ) |
Checks if a path point is within a valid range of another path point, accounting for track wrapping
pathPoint | The path point to check |
currentPathPoint | The reference path point |
backwardRange | Number of path to look behind |
forwardRange | Number of path to look ahead |
totalPathPoints | Total number of path in the track |
void load_track_path | ( | s32 | pathIndex | ) |
void play_cpu_sound_effect | ( | s32 | arg0, |
Player * | player ) |
f32 player_track_position_factor_vehicle | ( | s16 | arg0, |
f32 | arg1, | ||
s16 | arg2 ) |
s32 process_path_data | ( | TrackPathPoint * | dest, |
TrackPathPoint * | src ) |
void regulate_cpu_speed | ( | s32 | playerId, |
f32 | targetSpeed, | ||
Player * | player ) |
void render_bomb_karts_wrap | ( | s32 | cameraId | ) |
void reset_cpu_behaviour | ( | s32 | playerIndex | ) |
void reset_cpu_behaviour_none | ( | s32 | playerIndex | ) |
void set_bomb_kart_spawn_positions | ( | void | ) |
void set_current_path | ( | s32 | pathIndex | ) |
void set_places | ( | void | ) |
void set_places_end_course_with_time | ( | void | ) |
void set_track_offset_position | ( | u16 | waypointIndex, |
f32 | arg1, | ||
s16 | pathIndex ) |
void set_vehicle_pos_path_point | ( | TrainCarStuff * | trainCar, |
Path2D * | posXZ, | ||
u16 | waypoint ) |
s32 set_vehicle_render_distance_flags | ( | Vec3f | vehiclePos, |
f32 | renderDistance, | ||
s32 | flags ) |
void spawn_vehicle_on_road | ( | Vec3f | position, |
Vec3s | rotation, | ||
Vec3f | velocity, | ||
s32 | waypointIndex, | ||
s32 | someMultiplierTheSequel, | ||
f32 | speed ) |
void sync_train_components | ( | TrainCarStuff * | trainCar, |
s16 | orientationY ) |
sync the train components vehicle with the actor
trainCar | |
orientationY |
void tweak_path_index_wario_stadium | ( | UNUSED f32 | posX, |
f32 | posY, | ||
UNUSED f32 | posZ, | ||
s16 * | waypointIndex, | ||
UNUSED s32 | arg4 ) |
void update_cpu_path_completion | ( | s32 | playerId, |
Player * | player ) |
s16 update_path_index | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s16 | waypointIndex, | ||
s32 | pathIndex ) |
Tries to find the waypoint nearest to (posX, posY, posZ) Only considers waypoints within 400 units of (posX, posY, posZ) Looks 3 waypoints behind and 6 waypoints ahead of waypointIndex
This fake match is done to stop the compiler from optimzing out considerWaypoint. Maybe if no waypoint was found some debugging info was printed out, but come production time they removed the debug printing but not the loop?
s16 update_path_index_track_section | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
Player * | player, | ||
s32 | playerId, | ||
s32 * | pathIndex ) |
s16 update_path_index_with_track | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s16 | waypointIndex, | ||
s32 | pathIndex, | ||
u16 | trackSectionId ) |
Tries to find the waypoint nearest to (posX, posY, posZ) Only consider waypoints in the same segment as trackSectionId Only considers waypoints within 500 units of(posX, posY, posZ) Looks 3 waypoints behind and 6 waypoints ahead of waypointIndex
void update_player | ( | s32 | playerId | ) |
void update_player_completion | ( | s32 | playerId | ) |
s16 update_player_path | ( | f32 | posX, |
f32 | posY, | ||
f32 | posZ, | ||
s16 | waypointIndex, | ||
Player * | player, | ||
s32 | playerId, | ||
s32 | pathIndex ) |
void update_player_path_completion | ( | s32 | playerId, |
Player * | player ) |
s32 update_player_path_selection | ( | s32 | payerId, |
s32 | pathIndex ) |
void update_player_position_factor | ( | s32 | playerId, |
u16 | waypointIndex, | ||
s32 | pathIndex ) |
void update_player_rankings | ( | void | ) |
void update_player_track_position_factor_from_box_trucks | ( | s32 | playerId | ) |
void update_player_track_position_factor_from_buses | ( | s32 | playerId | ) |
void update_player_track_position_factor_from_cars | ( | s32 | playerId | ) |
void update_player_track_position_factor_from_tanker_truck | ( | s32 | playerId | ) |
void update_player_track_position_factor_from_vehicle | ( | s32 | playerId, |
s32 | arg1, | ||
VehicleStuff * | vehicle ) |
void update_vehicle_box_trucks | ( | void | ) |
void update_vehicle_cars | ( | void | ) |
void update_vehicle_follow_path_point | ( | VehicleStuff * | vehicle | ) |
s16 update_vehicle_following_path | ( | Vec3f | pos, |
s16 * | waypointIndex, | ||
f32 | speed ) |
void update_vehicle_paddle_boats | ( | void | ) |
void update_vehicle_school_bus | ( | void | ) |
void update_vehicle_tanker_trucks | ( | void | ) |
void update_vehicle_trains | ( | void | ) |
void update_vehicles | ( | void | ) |
void yoshi_valley_cpu_path | ( | s32 | playerId | ) |
s16 bInMultiPathSection[12] |
s16 bStopAICrossing[10] |
u16 cpu_BehaviourState[12] |
s16 cpu_enteringPathIntersection[12] |
s16 cpu_exitingPathIntersection[12] |
CpuItemStrategyData cpu_ItemStrategy[8] |
f32 cpu_TargetSpeed[10] |
char* D_800EB710 = "ゴール直後の強制ソート\n" |
char* D_800EB728 = "2PGPで片方がゴール直後の強制ソート\n" |
char* D_800EB74C = "順位計算エラー!! (num %d) (rank %d) (e_rank %d)\n" |
char* D_800EB780 = "バイパス切り替え エラー!!!(num %d org_bipas %d bipas %d)\n" |
char* D_800EB7BC = "(%d) rap %3d rate_count_F %10.2f rap_count_F %10.2f area %5d \n" |
char* D_800EB800 = "迷路に突入! enemy %d (%d --> %d)\n" |
char* D_800EB824 = "迷路から出た! enemy %d (%d --> %d)\n" |
char* D_800EB84C = "enemy voice set (%d slip_flag %x weapon %x)\n" |
char* D_800EB87C = "スピンヴォイス!!(%d , name %d)\n" |
char* D_800EB8A0 = "ダメージヴォイス!!(%d, name %d)\n" |
char* D_800EB8C4 = "===== ENEMY DRIVE SUB (%d) =====\n" |
char* D_800EB8E8 = "ENEMY END(手抜き)\n\n" |
char* D_800EB8FC = "ENEMY END(手抜き)\n\n" |
char* D_800EB910 = "(1)enemy stick angle over!! (%d)\n" |
char* D_800EB934 = "ENEMY END\n\n" |
char* D_800EB940 = "(2)enemy stick angle over!! (%d)\n" |
char* D_800EB964 = "ENEMY END\n\n" |
char* D_800EB970 = "AREA ERR!!! (現在のセンターライン %d に未登録のグループです) %d\n" |
char* D_800EB9B4 = "AREA ERR!!! (未登録のグループです) %d\n" |
char* D_800EB9DC = "get_oga_area_sub_BP() ... エリアが見つからないッス! (b_num = %d)\n" |
char* D_800EBA20 = " 状況: (%d, %d, %d) \n" |
char* D_800EBA38 = "<%d> (%d, %d, %d) [%d] lng %f\n" |
char* D_800EBA58 = "ワリオスタジアム ジャンプ失敗!!! (area %d, y %7.2f)\n" |
char* D_800EBA94 = "水に落ちた!! センターラインに強制移動しました (num %d: area %d ) (%d,%d,%d)\n" |
char* D_800EBAE4 |
char* D_800EBB60 |
char* D_800EBBDC = "こーすあうと!!! エリアを再計算しました (num %d: area %d ==>%d)\n" |
char* D_800EBC24 = "直接指定のBOM(%d) (%7.2f, %7.2f, %7.2f) \n" |
char* D_800EBC50 = "BOM HIT CHECK\n" |
char* D_800EBC60 = "BOM HIT !!!!! (%d)\n" |
char* D_800EBC74 = "BOM待機\n" |
char* D_800EBC80 = "RESULT BOM area(%d)\n" |
char* D_800EBC98 = "BOM が 落ちました。\n" |
char* D_800EBCB0 = "カメ用火柱 SET 失敗 (TABLE IS FULL)\n" |
char* D_800EBCD8 = "赤ガメ火柱セットエラー! (category %d)\n" |
char* D_800EBD00 = "青ガメ火柱セットエラー! (category %d)\n" |
char* D_800EBD28 = "トゲガメ火柱セットエラー! (category %d)\n" |
char* D_800EBD54 = "カメ火柱初期化!!\n" |
char* D_800EBD68 = "センターライン初期化\n" |
char* D_800EBD80 = "MAP NUMBER %d\n" |
char* D_800EBD90 = "center_EX ptr = %x %x (%x)\n" |
char* D_800EBDB4 = "\n" |
char* D_800EBDB8 = "center_BP[%d] ptr = %x %x (%x)\n" |
char* D_800EBDE0 = "side_point_L_BP[%d] ptr = %x %x (%x)\n" |
char* D_800EBE08 = "side_point_R_BP[%d] ptr = %x %x (%x)\n" |
char* D_800EBE30 = "curve_BP[%d] ptr = %x %x (%x)\n" |
char* D_800EBE58 = "angle_BP[%d] ptr = %x %x (%x)\n" |
char* D_800EBE80 = "short_cut_data_BP[%d] ptr = %x %x (%x)\n" |
char* D_800EBEA8 = "\n" |
char* D_800EBEAC = "小川の使用メモリー合計 = %d\n" |
char* D_800EBECC = "敵初期化\n" |
char* D_800EBED8 = "敵初期化終了\n" |
char* D_800EBEE8 = "バイパス CENTER LINE 分割開始\n" |
char* D_800EBF08 = "センターラインをROMから読みます (map:%d)\n" |
char* D_800EBF34 = "ROM center (BP%d) line adr. = %x (%x)\n" |
char* D_800EBF5C = "センターラインを計算します (map:%d)\n" |
char* D_800EBF84 = "center (BP%d) line adr. = %x (%x)\n" |
char* D_800EBFA8 = "BP center_point_number : %d\n" |
char* D_800EBFC8 = "センターライン データ エラー!!\n" |
char* D_800EBFEC = "バイパス CENTER LINE 分割終了 (%d -> %d 個)\n" |
char* D_800EC01C = "センターラインが ありません。(map:%d)\n" |
char* D_800EC044 = "サイドポイント計算 (バイパス %d)\n" |
char* D_800EC068 = "カーブデータ計算 (バイパス %d)\n" |
char* D_800EC088 = "センターラインが ありません。(map:%d)\n" |
char* D_800EC0B0 = "アングルデータ計算 (バイパス %d) \n" |
char* D_800EC0D4 = "センターラインが ありません。(map:%d)\n" |
char* D_800EC0FC = "ショートカットデータ計算 (バイパス %d)\n" |
char* D_800EC124 = "extern POINT rom_center_KT%d_BP%d[] = {\n" |
char* D_800EC150 = "\t{%d,%d,%d,%d},\n" |
char* D_800EC164 = "\t0x8000,0x8000,0x8000,0\n};\n\n" |
char* D_800EC184 = "area read from ROM (%d)\n" |
char* D_800EC1A0 = "ノーマルジャンプ!!!(%d)\n" |
char* D_800EC1BC = "ターボオン!!!(%d)\n" |
char* D_800EC1D4 = "手抜き禁止!!!(%d)\n" |
char* D_800EC1EC = "アクション開始データエラー!(num %d, act %d)\n" |
char* D_800EC21C = "アクション終了データエラー!(num %d, act %d, old_act_num %d)\n" |
char* D_800EC25C = "SL : center_point_number : %d\n" |
char* D_800EC27C = "SL: CENTER LINE 分割開始\n" |
char* D_800EC298 = "SL: CENTER LINE 分割終了 (%d -> %d 個)\n" |
char* D_800EC2C0 = "SHIP : center_point_number : %d\n" |
char* D_800EC2E4 = "SHIP: CENTER LINE 分割開始\n" |
char* D_800EC300 = "SHIP: CENTER LINE 分割終了 (%d -> %d 個)\n" |
char* D_800EC32C = "汎用OBJキャラ初期化\n" |
char* D_800EC344 = "SL OBJ設定\n" |
char* D_800EC350 = "SHIP OBJ設定\n" |
char* D_800EC360 = "トラックOBJ設定\n" |
char* D_800EC374 = "バスOBJ設定\n" |
char* D_800EC384 = "タンクOBJ設定\n" |
char* D_800EC394 = "RV OBJ設定\n" |
char* D_800EC3A0 = "汎用OBJキャラ初期化終了\n" |
char* D_800EC3BC = "クラクション (num %d, permit %d, %d)\n" |
char* D_800EC3E4 = "OGA CAMERA INIT (%d)\n" |
char* D_800EC3FC = "OGA CAMERA INIT END\n" |
char* D_800EC414 = "高速カメラ ERR !!! (ncx = %f)\n" |
char* D_800EC434 = "高速カメラ ERR !!! (ncz = %f)\n" |
char* D_800EC454 = "高速カメラ ERR !!! (ecx = %f)\n" |
char* D_800EC474 = "高速カメラ ERR !!! (ecz = %f)\n" |
char* D_800EC494 = "OGA DRIVERS POINT CAMERA MODE \n" |
char* D_800EC4B4 = "OGA WINNER CAMERA MODE \n" |
char* D_800EC4D0 = "OGA TIMEATTACK QUICK CAMERA INIT \n" |
char* D_800EC4F4 = "OGA BATTLE CAMERA INIT win(%d)\n" |
char* D_800EC514 = "GOAL! <<rank 1>> camera %d rank %d\n" |
char* D_800EC53C = "GOAL! <<rank 2,3,4>> camera %d rank %d\n" |
char* D_800EC568 = "GOAL! <<rank 5,6,7,8>> camera %d rank %d\n" |
char* D_800EC594 = "カメラとカートが衝突しました!!! (%d)\n" |
char* D_800EC5C0 = "<<< ITEM OBJ NUMBER ERR !! >>> item %d obj_num %d \n" |
char* D_800EC5F8 = "<<< BANANA SET 失敗 >>> obj_num %d zure %f \n" |
char* D_800EC628 = "BANANA 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800EC65C = "理由: EXISTOBJ \n" |
char* D_800EC670 = "理由: category \n" |
char* D_800EC684 = "理由: sparam \n" |
char* D_800EC694 = "理由: num \n" |
char* D_800EC6A0 = "BANANA HOLD (num %d time %d hold_time %d)\n" |
char* D_800EC6D0 = "設置 BANANA 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800EC708 = "理由: EXISTOBJ \n" |
char* D_800EC71C = "理由: category \n" |
char* D_800EC730 = "理由: sparam \n" |
char* D_800EC740 = "理由: num \n" |
char* D_800EC74C = "BANANA 置きました。 (num %d)\n" |
char* D_800EC76C = "<<< BANANA NAGE SET 失敗 >>> obj_num %d \n" |
char* D_800EC798 = "BANANA NAGE MOVE 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800EC7D8 = "理由: EXISTOBJ \n" |
char* D_800EC7EC = "理由: category \n" |
char* D_800EC800 = "理由: sparam \n" |
char* D_800EC810 = "理由: num \n" |
char* D_800EC81C = "BANANA NAGE END 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800EC858 = "理由: EXISTOBJ \n" |
char* D_800EC86C = "理由: category \n" |
char* D_800EC880 = "理由: sparam \n" |
char* D_800EC890 = "理由: num \n" |
char* D_800EC89C = "G_SHELL HOLD (num %d time %d hold_time %d)\n" |
char* D_800EC8CC = "<<< G_SHELL SET 失敗 >>> obj_num %d \n" |
char* D_800EC8F4 = "<<< G_SHELL SET 失敗 >>> object_count %d \n" |
char* D_800EC920 = "G_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800EC954 = "理由: EXISTOBJ \n" |
char* D_800EC968 = "理由: category \n" |
char* D_800EC97C = "理由: sparam \n" |
char* D_800EC98C = "理由: num \n" |
char* D_800EC998 = "発射直前 G_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800EC9D8 = "理由: EXISTOBJ \n" |
char* D_800EC9EC = "理由: category \n" |
char* D_800ECA00 = "理由: sparam \n" |
char* D_800ECA10 = "理由: num \n" |
char* D_800ECA1C = "G_SHELL 発射 (num %d)\n" |
char* D_800ECA34 = "R_SHELL HOLD (num %d time %d hold_time %d obj_num %d)\n" |
char* D_800ECA70 = "<<< R_SHELL SET 失敗 >>> obj_num %d \n" |
char* D_800ECA98 = "<<< R_SHELL SET 失敗 >>> object_count %d \n" |
char* D_800ECAC4 = "R_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800ECAF8 = "理由: EXISTOBJ \n" |
char* D_800ECB0C = "理由: category \n" |
char* D_800ECB20 = "理由: sparam \n" |
char* D_800ECB30 = "理由: num \n" |
char* D_800ECB3C = "R_SHELL SHOOT (num %d time %d hold_time %d obj_num %d)\n" |
char* D_800ECB78 = "発射直前 R_SHELL 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800ECBB8 = "理由: EXISTOBJ \n" |
char* D_800ECBCC = "理由: category \n" |
char* D_800ECBE0 = "理由: sparam \n" |
char* D_800ECBF0 = "理由: num \n" |
char* D_800ECBFC = "R_SHELL 発射 (num %d)\n" |
char* D_800ECC14 = "S_BANANA HOLD (num %d time %d hold_time %d)\n" |
char* D_800ECC44 = "<<< SUPER_BANANA SET 失敗 >>> obj_num %d \n" |
char* D_800ECC70 = "<<< SUPER_BANANA SET 失敗 >>> object_count %d \n" |
char* D_800ECCA0 = "S_BANANA 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800ECCD8 = "理由: category \n" |
char* D_800ECCEC = "理由: sparam \n" |
char* D_800ECCFC = "理由: sb_ok \n" |
char* D_800ECD0C = "S_BANANA RELEASE (num %d time %d )\n" |
char* D_800ECD34 = "<<< FAKE IBOX SET 失敗 >>> obj_num %d \n" |
char* D_800ECD5C = "IBOX 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800ECD90 = "理由: EXISTOBJ \n" |
char* D_800ECDA4 = "理由: category \n" |
char* D_800ECDB8 = "理由: sparam \n" |
char* D_800ECDC8 = "理由: num \n" |
char* D_800ECDD4 = "FBOX HOLD (num %d time %d hold_time %d)\n" |
char* D_800ECE00 = "設置 IBOX 所有者チェックに引っ掛かりました。(num %d)\n" |
char* D_800ECE38 = "理由: EXISTOBJ \n" |
char* D_800ECE4C = "理由: category \n" |
char* D_800ECE60 = "理由: sparam \n" |
char* D_800ECE70 = "理由: num \n" |
char* D_800ECE7C = "雷START (%d)\n" |
char* D_800ECE8C = "雷END (%d)\n" |
char* D_800ECE98 = "---------- 表彰台初期化\n" |
char* D_800ECEB4 = "map_number = %d - > 20 書き換え中。\n" |
char* D_800ECEDC = "OGA 表彰 move 開始\n" |
char* D_800ECEF0 = "4位の人の表示をコールしました。\n" |
char* D_800ECF14 = "表彰台に到着\n" |
char* D_800ECF24 = "全員集合!\n" |
char* D_800ECF30 = "道路に到着\n" |
char* D_800ECF3C = "4位の人終了\n" |
char* D_800ECF4C = "OGA 表彰 move 終了\n" |
char* D_800ECF60 = "OGAWA DEBUG DRAW\n" |
Collision D_80162E70 |
s16 D_80162EB0 |
s16 D_80162EB2 |
s32 D_80162F08[2] |
s16 D_80162F10[30] |
s16 D_80162F50[30] |
s32 D_80162F90[4] |
Vec3f D_80162FB0 |
Vec3f D_80162FC0 |
s16 D_80162FD0 |
s16 D_80162FF8[12] |
s16 D_80163010[12] |
f32 D_80163090[10] |
s16 D_801630E8[10] |
s32 D_80163100[10] |
s32 D_80163128[10] |
s32 D_80163150[10] |
s32 D_801631CC |
u16 D_801631E0[12] |
u16 D_801631F8[10] |
s32 D_80163238 |
u16 D_80163240[12] |
u16 D_80163330[10] |
u16 D_80163344[2] |
u16 D_80163348[2] |
u16 D_8016334C[8] |
s32 D_80163368[4] |
s32 D_8016337C |
s16 D_80163398[12] |
s16 D_801633B0[12] |
s16 D_801633C8[12] |
s16 D_801633E0[12] |
s16 D_801633F8[12] |
s16 D_80163410[4] |
f32 D_80163418[4] |
f32 D_80163428[4] |
f32 D_80163438[4] |
s16 D_8016347C |
s16 D_8016347E |
s32 D_80163480 |
s32 D_80163484 |
s32 D_80163488 |
s16 D_8016348C |
s16 D_801634C0[12] |
s16 D_801634EC |
s32 D_801634F0 |
s32 D_801634F4 |
s32 D_80163DD8[4] |
s16 D_80164358 |
s16 D_8016435A |
s16 D_8016435C |
s16 D_80164378[12] |
s32 D_8016448C |
f32 D_80164498[4] |
s16 D_80164538[12] |
s32 D_801645D0[4] |
s32 D_801645E8[4] |
f32 D_801645F8[4] |
s32 D_80164608[4] |
f32 D_80164618[4] |
s32 D_80164628[4] |
f32 D_80164638[4] |
f32 D_80164648[4] |
f32 D_80164658[4] |
s16 D_80164670[4] |
s16 D_80164678[4] |
s16 D_80164680[4] |
f32 D_80164688[4] |
f32 D_80164698 |
f32 D_8016469C |
f32 D_801646A0 |
s32 D_801646A4 |
s32 D_801646A8 |
s32 D_801646AC |
s32 D_801646B0 |
s32 D_801646B4 |
s32 D_801646B8 |
s32 D_801646BC |
s16 D_801646C0[4] |
u32 D_801646C8 |
u16 D_801646CC |
UnkStruct_46D0 D_801646D0[4] |
s16 gBestRankedHumanPlayer |
Collision gBombKartCollision[NUM_BOMB_KARTS_MAX] |
BombKart gBombKarts[NUM_BOMB_KARTS_MAX] |
VehicleStuff gBoxTruckList[NUM_RACE_BOX_TRUCKS] |
VehicleStuff gCarList[NUM_RACE_CARS] |
f32 gCourseCompletionPercentByPlayerId[10] |
f32 gCourseCompletionPercentByRank |
CPUBehaviour* gCoursesCPUBehaviour[NUM_COURSES - 1] |
u16 gCurrentCPUBehaviourId[12] |
f32 gCurrentCpuTargetSpeed |
u16 gCurrentNearestPathPoint |
s16* gCurrentPathPointExpectedRotationPath |
s16 gCurrentPlayerLookAhead[12] |
s16* gCurrentTrackConsecutiveCurveCountsPath |
TrackPathPoint* gCurrentTrackLeftPath |
TrackPathPoint* gCurrentTrackPath |
TrackPathPoint* gCurrentTrackRightPath |
s16* gCurrentTrackSectionTypesPath |
s16 gFerrySmokeTimer |
s16 gGetPlayerByCharacterId[10] |
s16 gGPCurrentRacePlayerIdByRank[12] |
s32 gGPCurrentRaceRankByPlayerId[10] |
s32 gGPCurrentRaceRankByPlayerIdDup[10] |
s32 gIncrementUpdatePlayer |
s16 gIsInExtra |
bool gIsPlayerInCurve[10] |
s16 gIsPlayerNewPathPoint |
u16 gIsPlayerWrongDirection[12] |
f32 gLapCompletionPercentByPlayerId[10] |
s32 gLapCountByPlayerId[10] |
s16 gNearestPathPointByCameraId[4] |
u16 gNearestPathPointByPlayerId[12] |
s32 gNumPathPointsTraversed[10] |
Vec3f gOffsetPosition |
PaddleBoatStuff gPaddleBoats[NUM_PADDLE_BOATS] |
u16 gPathCountByPathIndex[4] |
s16* gPathExpectedRotation[4] |
u16 gPathIndexByPlayerId[12] |
f32 gPathStartZ |
s32 gPlayerPathIndex |
f32 gPlayerPathY[10] |
u16 gPlayersTrackSectionId[12] |
TrackPositionFactorInstruction gPlayerTrackPositionFactorInstruction[10] |
s16 gPreviousAngleSteering[12] |
u16 gPreviousCPUBehaviourId[12] |
f32 gPreviousCpuTargetSpeed[10] |
s32 gPreviousGPCurrentRaceRankByPlayerId[10] |
s32 gPreviousLapProgressScore[10] |
f32 gPreviousPlayerAiOffsetX[10] |
f32 gPreviousPlayerAiOffsetZ[10] |
f32 gPreviousPlayerZ[10] |
VehicleStuff gSchoolBusList[NUM_RACE_SCHOOL_BUSES] |
u16 gSelectedPathCount |
u16 gSpeedCPUBehaviour[12] |
VehicleStuff gTankerTruckList[NUM_RACE_TANKER_TRUCKS] |
s16* gTrackConsecutiveCurveCounts[4] |
TrackPathPoint* gTrackLeftPaths[4] |
TrackPathPoint* gTrackPaths[4] |
These are per-path arrays that contain some information relating to path The arrays in gTrackPaths contain X/Y/Z and track segment information The arrays in gTrackLeftPaths and gTrackRightPaths track some other X/Y/Z, but the track segment is always 0 (so, untracked/unused) Its unclear how these arrays relate to each other
f32 gTrackPositionFactor[10] |
Stuff that may not be directly related to path, but are only referenced in code_80005FD0. So they are at least path point adjacent.
TrackPathPoint* gTrackRightPaths[4] |
s16* gTrackSectionTypes[4] |
Don't know what exactly these are, but like gTrackPaths, gTrackLeftPaths, and gTrackRightPaths they track something about the path on a per-path basis
TrainStuff gTrainList[NUM_TRAINS] |
s16 gTrainSmokeTimer |
struct unexpiredActors gUnexpiredActorsList[8] |
s32 gVehicle2DPathLength |
Path2D* gVehicle2DPathPoint |
u16 gWrongDirectionCounter[12] |
u16 isCrossingTriggeredByIndex[NUM_CROSSINGS] |
u16 sCrossingActiveTimer[NUM_CROSSINGS] |
CPUBehaviour* sCurrentCPUBehaviour |
s16 sPlayerAngle[12] |
s16 sSomeNearestPathPoint |
Certain parts of the path point logic will copy some path/player specific data to a temporary variable. For example: gCurrentTrackPath is always a value from gTrackPaths. Depending on which path a given player is on, the specific value may change
s16 sVehicleSoundRenderCounter |
s32 unk_code_80005FD0_pad[24] |