Mario Kart 64
|
#include <ultra64.h>
#include <macros.h>
#include <defines.h>
#include "cpu_vehicles_camera_path.h"
#include "math_util.h"
#include "code_800029B0.h"
#include "racing/memory.h"
#include "path.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 "math_util_2.h"
#include "cpu_vehicles_camera_path/cpu_speed_control.inc.c"
#include "cpu_vehicles_camera_path/path_utils.inc.c"
#include "cpu_vehicles_camera_path/bomb_kart.inc.c"
#include "cpu_vehicles_camera_path/actor_utils.inc.c"
#include "cpu_vehicles_camera_path/path_calc.inc.c"
#include "cpu_vehicles_camera_path/behaviour_utils.inc.c"
#include "cpu_vehicles_camera_path/vehicle_utils.inc.c"
#include "cpu_vehicles_camera_path/cpu_item_strategy.inc.c"
Macros | |
#define | BANANA_ACTOR(actor) ((struct BananaActor*)(actor)) |
#define | SHELL_ACTOR(actor) ((struct ShellActor*)(actor)) |
#define | FAKE_ITEMBOX_ACTOR(actor) ((struct FakeItemBox*)(actor)) |
#define | BANANA_BUNCH_ACTOR(actor) ((struct BananaBunchParent*)(actor)) |
Functions | |
s16 | get_angle_between_path (Vec3f arg0, Vec3f arg1) |
bool | is_collide_with_vehicle (f32 vehicleX, f32 vehicleY, 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) |
bool | func_800088D8 (s32 playerId, s16 arg1, 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) |
void | func_8000F0E0 (void) |
void | func_8000F124 (void) |
void | clear_pathPoint (TrackPathPoint *arg0, size_t size) |
void | init_course_path_point (void) |
void | init_players (void) |
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 pathPoint, 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 | cpu_use_item_strategy (s32 playerId) |
void | func_8001BE78 (void) |
void | func_8001C05C (void) |
void | func_8001C14C (void) |
void | func_8001C3C4 (s32 cameraId) |
UNUSED void | func_8001C42C (void) |
Variables | |
s32 | unk_cpu_vehicles_camera_path_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 [2] |
u16 | gSpeedCPUBehaviour [12] |
s32 | gSizePath [4] |
s32 | gIncrementUpdatePlayer |
s32 | D_8016337C |
s16 | gCurrentPlayerLookAhead [12] |
s16 | D_80163398 [12] |
s16 | D_801633B0 [12] |
s16 | gPositionSwapTimer [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 | D_80164038 [NUM_BOMB_KARTS_MAX] |
struct unexpiredActors | gUnexpiredActorsList [8] |
CpuItemStrategyData | cpu_ItemStrategy [NUM_PLAYERS] |
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 | ) | ((struct BananaActor*)(actor)) |
#define BANANA_BUNCH_ACTOR | ( | actor | ) | ((struct BananaBunchParent*)(actor)) |
#define FAKE_ITEMBOX_ACTOR | ( | actor | ) | ((struct FakeItemBox*)(actor)) |
#define SHELL_ACTOR | ( | actor | ) | ((struct ShellActor*)(actor)) |
void clear_pathPoint | ( | TrackPathPoint * | arg0, |
size_t | size ) |
void cpu_use_item_strategy | ( | s32 | playerId | ) |
Helps calculate time since player last touched finishline.
void func_8000B140 | ( | s32 | playerId | ) |
void func_8000F0E0 | ( | void | ) |
void func_8000F124 | ( | void | ) |
void func_80014DE4 | ( | s32 | cameraIndex | ) |
UNUSED void func_8001530C | ( | void | ) |
void func_8001968C | ( | void | ) |
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_8001A588 | ( | UNUSED u16 * | localD_80152300, |
Camera * | camera, | ||
Player * | player, | ||
s8 | index, | ||
s32 | cameraIndex ) |
void func_8001BE78 | ( | void | ) |
void func_8001C05C | ( | void | ) |
void func_8001C14C | ( | void | ) |
void func_8001C3C4 | ( | s32 | cameraId | ) |
UNUSED void func_8001C42C | ( | void | ) |
void init_course_path_point | ( | void | ) |
void init_players | ( | void | ) |
bool is_collide_with_vehicle | ( | f32 | vehicleX, |
f32 | vehicleY, | ||
f32 | vehicleVelocityX, | ||
f32 | vehicleVelocityZ, | ||
f32 | distanceX, | ||
f32 | distanceY, | ||
f32 | playerX, | ||
f32 | playerZ ) |
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 set_current_path | ( | s32 | pathIndex | ) |
void set_places | ( | void | ) |
void set_places_end_course_with_time | ( | void | ) |
void update_player | ( | s32 | playerId | ) |
void update_player_completion | ( | s32 | playerId | ) |
void update_player_rankings | ( | 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[NUM_PLAYERS] |
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[2] |
s32 D_8016337C |
s16 D_80163398[12] |
s16 D_801633B0[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] |
Collision D_80164038[NUM_BOMB_KARTS_MAX] |
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 |
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 gPositionSwapTimer[12] |
s16 gPreviousAngleSteering[12] |
u16 gPreviousCPUBehaviourId[12] |
f32 gPreviousCpuTargetSpeed[10] |
s32 gPreviousGPCurrentRaceRankByPlayerId |
s32 gPreviousLapProgressScore[10] |
f32 gPreviousPlayerAiOffsetX[10] |
f32 gPreviousPlayerAiOffsetZ[10] |
f32 gPreviousPlayerZ[10] |
VehicleStuff gSchoolBusList[NUM_RACE_SCHOOL_BUSES] |
u16 gSelectedPathCount |
s32 gSizePath[4] |
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 gCurrentTrackRightPath 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 cpu_vehicles_camera_path. So they are at least pathPoint adjacent.
TrackPathPoint* gTrackRightPaths[4] |
s16* gTrackSectionTypes[4] |
Don't know what exactly these are, but like gTrackPaths, gTrackLeftPaths, and gCurrentTrackRightPath 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 pathPoint 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_cpu_vehicles_camera_path_pad[24] |