Rev 18 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | pmbaty | 1 | #ifndef DR_TYPES_H |
| 2 | #define DR_TYPES_H |
||
| 3 | |||
| 20 | pmbaty | 4 | #include "brender/br_types.h" |
| 1 | pmbaty | 5 | #include "constants.h" |
| 6 | #include "macros.h" |
||
| 7 | |||
| 8 | #include "s3/s3.h" |
||
| 9 | #include <assert.h> |
||
| 10 | #include <stdarg.h> |
||
| 11 | #include <stddef.h> |
||
| 12 | #include <stdint.h> |
||
| 13 | #include <stdio.h> |
||
| 14 | |||
| 15 | typedef unsigned char tU8; |
||
| 16 | typedef signed char tS8; |
||
| 17 | typedef uint16_t tU16; |
||
| 18 | typedef int16_t tS16; |
||
| 19 | typedef uint32_t tU32; |
||
| 20 | typedef int32_t tS32; |
||
| 21 | typedef double tF64; |
||
| 22 | typedef int16_t tX88; |
||
| 23 | typedef int32_t tX1616; |
||
| 24 | typedef tU8 tNet_message_type; |
||
| 25 | typedef struct tCar_spec_struct tCar_spec; |
||
| 26 | typedef struct tCar_spec_struct2 tCar_spec2; |
||
| 27 | typedef struct tPath_node_struct tPath_node; |
||
| 28 | typedef struct tPath_section_struct tPath_section; |
||
| 29 | typedef tU32 tPlayer_ID; |
||
| 30 | typedef void tPipe_reset_proc(void); |
||
| 31 | typedef struct tPowerup tPowerup; |
||
| 32 | |||
| 33 | // FIXME? hardcoding pc-win95 here |
||
| 34 | #include "pc-win95/win95net_types.h" |
||
| 35 | |||
| 36 | #ifdef DETHRACE_FIX_BUGS |
||
| 37 | typedef int tGot_proc(tPowerup*, tCar_spec*); |
||
| 38 | typedef void tLose_proc(tPowerup*, tCar_spec*); |
||
| 39 | typedef void tPeriodic_proc(tPowerup*, tU32); |
||
| 40 | #else |
||
| 41 | typedef int* tGot_proc(tPowerup*, tCar_spec*); |
||
| 42 | typedef void* tLose_proc(tPowerup*, tCar_spec*); |
||
| 43 | typedef void* tPeriodic_proc(tPowerup*, tU32); |
||
| 44 | #endif |
||
| 45 | typedef char tPath_name[256]; |
||
| 46 | typedef struct tFlic_descriptor* tFlic_descriptor_ptr; |
||
| 47 | typedef struct exception_struct* tException_list; |
||
| 48 | typedef struct exception_struct tException_node; |
||
| 49 | typedef int tKey_array[123]; |
||
| 50 | typedef tS32 tJoy_array[8]; |
||
| 51 | typedef void* tPMFM2CB(br_material*); |
||
| 52 | typedef struct v11face DR_FACE; |
||
| 53 | typedef struct fmt_vertex DR_VERTEX; |
||
| 54 | |||
| 55 | typedef enum tDriver { |
||
| 56 | eDriver_non_car_unused_slot = 0, |
||
| 57 | eDriver_non_car = 1, |
||
| 58 | eDriver_oppo = 2, |
||
| 59 | eDriver_net_human = 3, |
||
| 60 | eDriver_local_human = 4 |
||
| 61 | } tDriver; |
||
| 62 | |||
| 63 | typedef enum tBounds_type { |
||
| 64 | eUndefined = 0, |
||
| 65 | eBounds_ws = 1, |
||
| 66 | eBounds_cs = 2 |
||
| 67 | } tBounds_type; |
||
| 68 | |||
| 69 | typedef enum tImpact_location { |
||
| 70 | eImpact_top = 0, |
||
| 71 | eImpact_bottom = 1, |
||
| 72 | eImpact_left = 2, |
||
| 73 | eImpact_right = 3, |
||
| 74 | eImpact_front = 4, |
||
| 75 | eImpact_back = 5, |
||
| 76 | eImpact_location_count = 6, |
||
| 77 | eImpact_unknown = 7 |
||
| 78 | } tImpact_location; |
||
| 79 | |||
| 80 | typedef enum tAxis_comp { |
||
| 81 | eAxis_x = 0, |
||
| 82 | eAxis_y = 1, |
||
| 83 | eAxis_z = 2 |
||
| 84 | } tAxis_comp; |
||
| 85 | |||
| 86 | typedef enum tCondition_operator { |
||
| 87 | eCondition_less_than = 0, |
||
| 88 | eCondition_greater_than = 1 |
||
| 89 | } tCondition_operator; |
||
| 90 | |||
| 91 | typedef enum tDamage_type { |
||
| 92 | eDamage_engine = 0, |
||
| 93 | eDamage_transmission = 1, |
||
| 94 | eDamage_driver = 2, |
||
| 95 | eDamage_steering = 3, |
||
| 96 | eDamage_lf_brake = 4, |
||
| 97 | eDamage_rf_brake = 5, |
||
| 98 | eDamage_lr_brake = 6, |
||
| 99 | eDamage_rr_brake = 7, |
||
| 100 | eDamage_lf_wheel = 8, |
||
| 101 | eDamage_rf_wheel = 9, |
||
| 102 | eDamage_lr_wheel = 10, |
||
| 103 | eDamage_rr_wheel = 11, |
||
| 104 | eDamage_type_count = 12 |
||
| 105 | } tDamage_type; |
||
| 106 | |||
| 107 | typedef enum tJustification { |
||
| 108 | eJust_left = 0, |
||
| 109 | eJust_right = 1, |
||
| 110 | eJust_centre = 2 |
||
| 111 | } tJustification; |
||
| 112 | |||
| 113 | typedef enum tOpponent_objective_type { |
||
| 114 | eOOT_none = 0, |
||
| 115 | eOOT_complete_race = 1, |
||
| 116 | eOOT_pursue_and_twat = 2, |
||
| 117 | eOOT_run_away = 3, |
||
| 118 | eOOT_get_near_player = 4, |
||
| 119 | eOOT_levitate = 5, |
||
| 120 | eOOT_knackered_and_freewheeling = 6, |
||
| 121 | eOOT_frozen = 7, |
||
| 122 | eOOT_wait_for_some_hapless_sod = 8, |
||
| 123 | eOOT_rematerialise = 9, |
||
| 124 | eOOT_return_to_start = 10 |
||
| 125 | } tOpponent_objective_type; |
||
| 126 | |||
| 127 | typedef enum tFollow_path_result { |
||
| 128 | eFPR_OK = 0, |
||
| 129 | eFPR_end_of_path = 1, |
||
| 130 | eFPR_given_up = 2 |
||
| 131 | } tFollow_path_result; |
||
| 132 | |||
| 133 | typedef enum tPath_section_type_enum { |
||
| 134 | ePST_normal = 0, |
||
| 135 | ePST_race_path = 1, |
||
| 136 | ePST_cheat_only = 2, |
||
| 137 | ePST_count = 3 |
||
| 138 | } tPath_section_type_enum; |
||
| 139 | |||
| 140 | typedef enum tPursue_car_state { |
||
| 141 | ePCS_what_now = 0, |
||
| 142 | ePCS_following_trail = 1, |
||
| 143 | ePCS_following_line_of_sight = 2, |
||
| 144 | ePCS_backing_up = 3 |
||
| 145 | } tPursue_car_state; |
||
| 146 | |||
| 147 | typedef enum tProcess_objective_command { |
||
| 148 | ePOC_start = 0, |
||
| 149 | ePOC_run = 1, |
||
| 150 | ePOC_die = 2 |
||
| 151 | } tProcess_objective_command; |
||
| 152 | |||
| 153 | typedef enum tParts_category { |
||
| 154 | eParts_armour = 0, |
||
| 155 | eParts_power = 1, |
||
| 156 | eParts_offensive = 2, |
||
| 157 | eParts_count = 3 |
||
| 158 | } tParts_category; |
||
| 159 | |||
| 160 | typedef enum tRace_over_reason { |
||
| 161 | eRace_not_over_yet = -1, |
||
| 162 | eRace_over_laps = 0, |
||
| 163 | eRace_over_peds = 1, |
||
| 164 | eRace_over_opponents = 2, |
||
| 165 | eRace_over_abandoned = 3, |
||
| 166 | eRace_over_out_of_time = 4, |
||
| 167 | eRace_over_demo = 5, |
||
| 168 | eRace_over_network_victory = 6, |
||
| 169 | eRace_over_network_loss = 7, |
||
| 170 | eRace_over_count = 8 |
||
| 171 | } tRace_over_reason; |
||
| 172 | |||
| 173 | typedef enum tNet_mode { |
||
| 174 | eNet_mode_none = 0, |
||
| 175 | eNet_mode_thinking_about_it = 1, |
||
| 176 | eNet_mode_host = 2, |
||
| 177 | eNet_mode_client = 3 |
||
| 178 | } tNet_mode; |
||
| 179 | |||
| 180 | typedef enum tPlayer_status { |
||
| 181 | ePlayer_status_unknown = 0, |
||
| 182 | ePlayer_status_ready = 1, |
||
| 183 | ePlayer_status_loading = 2, |
||
| 184 | ePlayer_status_wrecks_gallery = 3, |
||
| 185 | ePlayer_status_summary = 4, |
||
| 186 | ePlayer_status_not_responding = 5, |
||
| 187 | ePlayer_status_racing = 6, |
||
| 188 | ePlayer_status_main_menu = 7, |
||
| 189 | ePlayer_status_recovering = 8, |
||
| 190 | ePlayer_status_action_replay = 9 |
||
| 191 | } tPlayer_status; |
||
| 192 | |||
| 193 | typedef enum tNet_game_type { |
||
| 194 | eNet_game_type_fight_to_death = 0, |
||
| 195 | eNet_game_type_car_crusher = 1, |
||
| 196 | eNet_game_type_carnage = 2, |
||
| 197 | eNet_game_type_checkpoint = 3, |
||
| 198 | eNet_game_type_sudden_death = 4, |
||
| 199 | eNet_game_type_tag = 5, |
||
| 200 | eNet_game_type_foxy = 6, |
||
| 201 | eNet_game_type_count = 7 |
||
| 202 | } tNet_game_type; |
||
| 203 | |||
| 204 | typedef enum tNet_game_stage { |
||
| 205 | eNet_game_starting = 0, |
||
| 206 | eNet_game_ready = 1, |
||
| 207 | eNet_game_playing = 2, |
||
| 208 | eNet_game_status_count = 3 |
||
| 209 | } tNet_game_stage; |
||
| 210 | |||
| 211 | typedef enum tCar_choice { |
||
| 212 | eNet_car_frankie = 0, |
||
| 213 | eNet_car_annie = 1, |
||
| 214 | eNet_car_both = 2, |
||
| 215 | eNet_car_all = 3 |
||
| 216 | } tCar_choice; |
||
| 217 | |||
| 218 | typedef enum tNet_sequence_type { |
||
| 219 | eNet_sequence_sequential = 0, |
||
| 220 | eNet_sequence_random = 1 |
||
| 221 | } tNet_sequence_type; |
||
| 222 | |||
| 223 | typedef enum tPowerup_event { |
||
| 224 | ePowerup_gained = 0, |
||
| 225 | ePowerup_ongoing = 1, |
||
| 226 | ePowerup_lost = 2 |
||
| 227 | } tPowerup_event; |
||
| 228 | |||
| 229 | typedef enum tNet_gameplay_mess { |
||
| 230 | eNet_gameplay_checkpoint = 0, |
||
| 231 | eNet_gameplay_wrong_checkpoint = 1, |
||
| 232 | eNet_gameplay_suddenly_death = 2, |
||
| 233 | eNet_gameplay_suicide = 3, |
||
| 234 | eNet_gameplay_go_for_it = 4, |
||
| 235 | eNet_gameplay_host_paused = 5, |
||
| 236 | eNet_gameplay_host_unpaused = 6, |
||
| 237 | eNet_gameplay_earn_credits = 7 |
||
| 238 | } tNet_gameplay_mess; |
||
| 239 | |||
| 240 | typedef enum tCar_detail_ownership { |
||
| 241 | eCar_owner_none = 0, |
||
| 242 | eCar_owner_someone = 1, |
||
| 243 | eCar_owner_self = 2, |
||
| 244 | eCar_owner_not_allowed = 3 |
||
| 245 | } tCar_detail_ownership; |
||
| 246 | |||
| 247 | typedef enum tPowerup_type { |
||
| 248 | ePowerup_dummy = 0, |
||
| 249 | ePowerup_instantaneous = 1, |
||
| 250 | ePowerup_timed = 2, |
||
| 251 | ePowerup_whole_race = 3 |
||
| 252 | } tPowerup_type; |
||
| 253 | |||
| 254 | typedef enum tNet_powerup_type { |
||
| 255 | eNet_powerup_local = 0, |
||
| 256 | eNet_powerup_global = 1, |
||
| 257 | eNet_powerup_inappropriate = 2 |
||
| 258 | } tNet_powerup_type; |
||
| 259 | |||
| 260 | typedef enum tVehicle_type { |
||
| 261 | eVehicle_self = 0, |
||
| 262 | eVehicle_net_player = 1, |
||
| 263 | eVehicle_opponent = 2, |
||
| 264 | eVehicle_rozzer = 3, |
||
| 265 | eVehicle_drone = 4, |
||
| 266 | eVehicle_not_really = 5 |
||
| 267 | } tVehicle_type; |
||
| 268 | |||
| 269 | typedef enum tDepth_effect_type { |
||
| 270 | eDepth_effect_none = -1, |
||
| 271 | eDepth_effect_darkness = 0, |
||
| 272 | eDepth_effect_fog = 1 |
||
| 273 | } tDepth_effect_type; |
||
| 274 | |||
| 275 | typedef enum tPlane_type { |
||
| 276 | ePlane_pos_x = 0, |
||
| 277 | ePlane_neg_x = 1, |
||
| 278 | ePlane_pos_y = 2, |
||
| 279 | ePlane_neg_y = 3, |
||
| 280 | ePlane_pos_z = 4, |
||
| 281 | ePlane_neg_z = 5, |
||
| 282 | ePlane_general = 6 |
||
| 283 | } tPlane_type; |
||
| 284 | |||
| 285 | typedef enum tNet_avail { |
||
| 286 | eNet_avail_never = 0, |
||
| 287 | eNet_avail_eagle = 1, |
||
| 288 | eNet_avail_hawk = 2, |
||
| 289 | eNet_avail_all = 3 |
||
| 290 | } tNet_avail; |
||
| 291 | |||
| 292 | typedef enum tProg_status { |
||
| 293 | eProg_intro = 0, |
||
| 294 | eProg_opening = 1, |
||
| 295 | eProg_idling = 2, |
||
| 296 | eProg_demo = 3, |
||
| 297 | eProg_game_starting = 4, |
||
| 298 | eProg_game_ongoing = 5, |
||
| 299 | eProg_quit = 6 |
||
| 300 | } tProg_status; |
||
| 301 | |||
| 302 | typedef enum tMM_result { |
||
| 303 | eMM_none = 0, |
||
| 304 | eMM_continue = 1, |
||
| 305 | eMM_end_game = 2, |
||
| 306 | eMM_1_start = 3, |
||
| 307 | eMM_n_start = 4, |
||
| 308 | eMM_loaded = 5, |
||
| 309 | eMM_save = 6, |
||
| 310 | eMM_options = 7, |
||
| 311 | eMM_quit = 8, |
||
| 312 | eMM_timeout = 9, |
||
| 313 | eMM_recover = 10, |
||
| 314 | eMM_abort_race = 11 |
||
| 315 | } tMM_result; |
||
| 316 | |||
| 317 | typedef enum tSO_result { |
||
| 318 | eSO_main_menu_invoked = 0, |
||
| 319 | eSO_game_over = 1, |
||
| 320 | eSO_game_completed = 2, |
||
| 321 | eSO_continue = 3 |
||
| 322 | } tSO_result; |
||
| 323 | |||
| 324 | typedef enum tRace_result { |
||
| 325 | eRace_game_abandonned = 0, |
||
| 326 | eRace_aborted = 1, |
||
| 327 | eRace_timed_out = 2, |
||
| 328 | eRace_completed = 3 |
||
| 329 | } tRace_result; |
||
| 330 | |||
| 331 | typedef enum tFrank_anne { |
||
| 332 | eFrankie = 0, |
||
| 333 | eAnnie = 1 |
||
| 334 | } tFrank_anne; |
||
| 335 | |||
| 336 | typedef enum tRace_sel_view_type { |
||
| 337 | eVT_Scene = 0, |
||
| 338 | eVT_Info = 1, |
||
| 339 | eVT_Opponents = 2 |
||
| 340 | } tRace_sel_view_type; |
||
| 341 | |||
| 342 | typedef enum tAuto_parts_reply { |
||
| 343 | eAP_auto = 0, |
||
| 344 | eAP_manual = 1, |
||
| 345 | eAP_piss_off = 2 |
||
| 346 | } tAuto_parts_reply; |
||
| 347 | |||
| 348 | typedef enum tWhich_view { |
||
| 349 | eView_undefined = 0, |
||
| 350 | eView_left = 1, |
||
| 351 | eView_forward = 2, |
||
| 352 | eView_right = 3 |
||
| 353 | } tWhich_view; |
||
| 354 | |||
| 355 | typedef enum tRolling_type { |
||
| 356 | eRT_alpha = 0, |
||
| 357 | eRT_numeric = 1, |
||
| 358 | eRT_looping_random = 2, |
||
| 359 | eRT_looping_single = 3 |
||
| 360 | } tRolling_type; |
||
| 361 | |||
| 362 | typedef enum tCar_texturing_level { |
||
| 363 | eCTL_none = 0, |
||
| 364 | eCTL_transparent = 1, |
||
| 365 | eCTL_full = 2, |
||
| 366 | eCTL_count = 3 |
||
| 367 | } tCar_texturing_level; |
||
| 368 | |||
| 369 | typedef enum tRoad_texturing_level { |
||
| 370 | eRTL_none = 0, |
||
| 371 | eRTL_full = 1, |
||
| 372 | eRTL_count = 2 |
||
| 373 | } tRoad_texturing_level; |
||
| 374 | |||
| 375 | typedef enum tWall_texturing_level { |
||
| 376 | eWTL_none = 0, |
||
| 377 | eWTL_linear = 1, |
||
| 378 | eWTL_full = 2, |
||
| 379 | eWTL_count = 3 |
||
| 380 | } tWall_texturing_level; |
||
| 381 | |||
| 382 | typedef enum tAdd_to_storage_result { |
||
| 383 | eStorage_not_enough_room = 0, |
||
| 384 | eStorage_duplicate = 1, |
||
| 385 | eStorage_allocated = 2 |
||
| 386 | } tAdd_to_storage_result; |
||
| 387 | |||
| 388 | typedef enum tLollipop_mode { |
||
| 389 | eLollipop_none = -1, |
||
| 390 | eLollipop_x_match = 0, |
||
| 391 | eLollipop_y_match = 1, |
||
| 392 | eLollipop_z_match = 2 |
||
| 393 | } tLollipop_mode; |
||
| 394 | |||
| 395 | typedef enum tSmear_type { |
||
| 396 | eSmear_oil = 0, |
||
| 397 | eSmear_blood = 1, |
||
| 398 | eSmear_count = 2 |
||
| 399 | } tSmear_type; |
||
| 400 | |||
| 401 | // Make gcc happy |
||
| 402 | typedef struct exception_ { |
||
| 403 | int type; |
||
| 404 | char* name; |
||
| 405 | double arg1; |
||
| 406 | double arg2; |
||
| 407 | double retval; |
||
| 408 | } exception_; |
||
| 409 | |||
| 410 | typedef struct tTrack_spec { |
||
| 411 | tU8 ncolumns_x; |
||
| 412 | tU8 ncolumns_z; |
||
| 413 | br_scalar column_size_x; |
||
| 414 | br_scalar column_size_z; |
||
| 415 | br_scalar origin_x; |
||
| 416 | br_scalar origin_z; |
||
| 417 | br_actor* the_actor; |
||
| 418 | br_actor*** columns; |
||
| 419 | br_actor*** lollipops; |
||
| 420 | br_actor*** blends; |
||
| 421 | int ampersand_digits; |
||
| 422 | br_actor** non_car_list; |
||
| 423 | } tTrack_spec; |
||
| 424 | |||
| 425 | typedef struct tCrush_neighbour { |
||
| 426 | br_uint_8 vertex_index; |
||
| 427 | br_uint_8 factor; |
||
| 428 | } tCrush_neighbour; |
||
| 429 | |||
| 430 | typedef struct tCrush_point_spec { |
||
| 431 | br_uint_16 vertex_index; |
||
| 432 | br_uint_16 number_of_neighbours; |
||
| 433 | br_vector3 limits_neg; |
||
| 434 | br_vector3 limits_pos; |
||
| 435 | br_vector3 softness_neg; |
||
| 436 | br_vector3 softness_pos; |
||
| 437 | tCrush_neighbour* neighbours; |
||
| 438 | } tCrush_point_spec; |
||
| 439 | |||
| 440 | typedef struct tCrush_data { |
||
| 441 | int number_of_crush_points; |
||
| 442 | float softness_factor; |
||
| 443 | float min_fold_factor; |
||
| 444 | float max_fold_factor; |
||
| 445 | float wibble_factor; |
||
| 446 | float limit_deviant; |
||
| 447 | float split_chance; |
||
| 448 | br_scalar min_y_fold_down; |
||
| 449 | tCrush_point_spec* crush_points; |
||
| 450 | } tCrush_data; |
||
| 451 | |||
| 452 | typedef struct tSpecial_volume { |
||
| 453 | br_matrix34 mat; |
||
| 454 | br_matrix34 inv_mat; |
||
| 455 | br_bounds bounds; |
||
| 456 | br_scalar gravity_multiplier; |
||
| 457 | br_scalar viscosity_multiplier; |
||
| 458 | float car_damage_per_ms; |
||
| 459 | float ped_damage_per_ms; |
||
| 460 | int no_mat; |
||
| 461 | int camera_special_effect_index; |
||
| 462 | int sky_col; |
||
| 463 | int entry_noise; |
||
| 464 | int exit_noise; |
||
| 465 | int engine_noise_index; |
||
| 466 | br_material* screen_material; |
||
| 467 | int material_modifier_index; |
||
| 468 | } tSpecial_volume; |
||
| 469 | |||
| 470 | typedef struct tReduced_matrix { |
||
| 471 | br_vector3 row1; |
||
| 472 | br_vector3 row2; |
||
| 473 | br_vector3 translation; |
||
| 474 | } tReduced_matrix; |
||
| 475 | |||
| 20 | pmbaty | 476 | typedef struct tCar_controls { |
| 1 | pmbaty | 477 | int joystick_acc : 8; |
| 478 | int joystick_dec : 8; |
||
| 479 | unsigned int left : 1; // 0x10000 bit 17 |
||
| 480 | unsigned int right : 1; // 0x20000 bit 18 |
||
| 481 | unsigned int acc : 1; // 0x40000 bit 19 |
||
| 482 | unsigned int dec : 1; // 0x80000 bit 20 |
||
| 483 | unsigned int brake : 1; // 0x100000 bit 21 |
||
| 484 | unsigned int up : 1; // 0x200000 bit 22 |
||
| 485 | unsigned int down : 1; // 0x400000 bit 23 |
||
| 486 | unsigned int holdw : 1; // 0x800000 bit 24 |
||
| 487 | unsigned int backwards : 1; // 0x1000000 bit 25 |
||
| 488 | unsigned int change_up : 1; // 0x2000000 bit 26 |
||
| 489 | unsigned int change_down : 1; // 0x4000000 bit 27 |
||
| 490 | unsigned int horn : 1; // 0x8000000 bit 28 |
||
| 491 | } tCar_controls; |
||
| 492 | |||
| 20 | pmbaty | 493 | typedef struct tNet_message_mechanics_info { |
| 494 | tU8 contents_size; |
||
| 495 | tNet_message_type type; |
||
| 496 | tU32 ID; |
||
| 497 | tU32 time; |
||
| 498 | tReduced_matrix mat; |
||
| 499 | br_vector3 v; |
||
| 500 | br_vector3 omega; |
||
| 501 | tU8 d[4]; |
||
| 502 | tCar_controls keys; |
||
| 503 | tU32 cc_coll_time; |
||
| 504 | tS16 curvature; |
||
| 505 | tU16 revs; |
||
| 506 | br_scalar front; |
||
| 507 | br_scalar back; |
||
| 508 | tU32 repair_time; |
||
| 509 | tU8 damage[12]; |
||
| 510 | tU16 powerups; |
||
| 511 | br_scalar wheel_dam_offset[4]; |
||
| 1 | pmbaty | 512 | } tNet_message_mechanics_info; |
| 513 | |||
| 514 | typedef struct tDamage_unit { |
||
| 515 | int x_coord; |
||
| 516 | int y_coord; |
||
| 517 | int damage_level; |
||
| 518 | int last_level; |
||
| 519 | int smoke_last_level; |
||
| 520 | int periods[5]; |
||
| 521 | br_pixelmap* images; |
||
| 522 | } tDamage_unit; |
||
| 523 | |||
| 524 | typedef struct tDamage_condition { |
||
| 525 | tAxis_comp axis_comp; |
||
| 526 | tCondition_operator condition_operator; |
||
| 527 | float comparitor; |
||
| 528 | } tDamage_condition; |
||
| 529 | |||
| 530 | typedef struct tDamage_effect { |
||
| 531 | tDamage_type type; |
||
| 532 | float weakness_factor; |
||
| 533 | } tDamage_effect; |
||
| 534 | |||
| 535 | typedef struct tDamage_clause { |
||
| 536 | tDamage_condition conditions[2]; |
||
| 537 | int effect_count; |
||
| 538 | int condition_count; |
||
| 539 | tDamage_effect effects[4]; |
||
| 540 | } tDamage_clause; |
||
| 541 | |||
| 542 | typedef struct tDamage_program { |
||
| 543 | int clause_count; |
||
| 544 | tDamage_clause* clauses; |
||
| 545 | } tDamage_program; |
||
| 546 | |||
| 547 | typedef struct tHeadup_slot { |
||
| 548 | int x; |
||
| 549 | int y; |
||
| 550 | int colour; |
||
| 551 | int cockpit_anchored; |
||
| 552 | int dimmed_background; |
||
| 553 | int dim_left; |
||
| 554 | int dim_top; |
||
| 555 | int dim_right; |
||
| 556 | int dim_bottom; |
||
| 557 | tJustification justification; |
||
| 558 | } tHeadup_slot; |
||
| 559 | |||
| 560 | typedef struct tPart_info { |
||
| 561 | char part_name[14]; |
||
| 562 | tU8* data_ptr; |
||
| 563 | tU32 data_length; |
||
| 564 | int rank_required; |
||
| 565 | int prices[3]; |
||
| 566 | } tPart_info; |
||
| 567 | |||
| 568 | typedef struct tParts_spec { |
||
| 569 | int number_of_parts; |
||
| 570 | tPart_info info[6]; |
||
| 571 | } tParts_spec; |
||
| 572 | |||
| 573 | typedef struct tCar_actor { |
||
| 574 | br_actor* actor; |
||
| 575 | br_scalar min_distance_squared; |
||
| 576 | tCrush_data crush_data; |
||
| 577 | br_vertex* undamaged_vertices; |
||
| 578 | } tCar_actor; |
||
| 579 | |||
| 580 | typedef struct tJoystick { |
||
| 581 | tS32 left; |
||
| 582 | tS32 right; |
||
| 583 | tS32 acc; |
||
| 584 | tS32 dec; |
||
| 585 | } tJoystick; |
||
| 586 | |||
| 587 | typedef struct tPursuee_trail { |
||
| 588 | br_vector3 trail_nodes[25]; |
||
| 589 | br_vector3 base_heading; |
||
| 590 | tU32 time_of_next_recording; |
||
| 591 | tU32 end_of_deviation; |
||
| 592 | tU8 number_of_nodes; |
||
| 593 | tU8 has_deviated_recently; |
||
| 594 | tU8 nodes_shifted_this_frame; |
||
| 595 | } tPursuee_trail; |
||
| 596 | |||
| 597 | typedef struct tCar_spec_struct { // size: 0x1a9c |
||
| 598 | int index; // @0x0 |
||
| 599 | int disabled; // @0x4 |
||
| 600 | tDriver driver; // @0x8 |
||
| 601 | br_actor* car_master_actor; // @0xc |
||
| 602 | br_scalar min_torque_squared; // @0x10 |
||
| 603 | br_scalar break_off_radians_squared; // @0x14 |
||
| 604 | br_vector3 v; // @0x18 |
||
| 605 | br_vector3 old_v; // @0x24 |
||
| 606 | br_vector3 velocity_car_space; // @0x30 |
||
| 607 | br_matrix34 oldmat; // @0x3c |
||
| 608 | br_matrix34 old_frame_mat; // @0x6c |
||
| 609 | br_vector3 pos; // @0x9c |
||
| 610 | br_vector3 omega; // @0xa8 |
||
| 611 | br_vector3 oldomega; // @0xb4 |
||
| 612 | br_scalar M; // @0xc0 |
||
| 613 | int infinite_mass; // @0xc4 |
||
| 614 | br_vector3 I; // @0xc8 |
||
| 615 | br_vector3 cmpos; // @0xd4 |
||
| 616 | int extra_point_num; // @0xe0 |
||
| 617 | br_bounds bounds[3]; // @0xe4 |
||
| 618 | br_bounds max_bounds[2]; // @0x12c |
||
| 619 | br_vector3 extra_points[6]; // @0x15c |
||
| 620 | br_scalar original_extra_points_z[6]; // @0x1a4 |
||
| 621 | br_vector3 old_point; // @0x1bc |
||
| 622 | br_vector3 old_norm; // @0x1c8 |
||
| 623 | int box_face_start; // @0x1d4 |
||
| 624 | int box_face_end; // @0x1d8 |
||
| 625 | int box_face_ref; // @0x1dc |
||
| 626 | br_matrix34 last_box_inv_mat; // @0x1e0 |
||
| 627 | br_bounds last_box; // @0x210 |
||
| 628 | int doing_nothing_flag; // @0x228 |
||
| 629 | tSpecial_volume* last_special_volume; // @0x22c |
||
| 630 | tSpecial_volume* auto_special_volume; // @0x230 |
||
| 631 | int frame_collision_flag; // @0x234 |
||
| 632 | int collision_flag; // @0x238 |
||
| 633 | int max_shrapnel_material; // @0x23c |
||
| 634 | br_vector3 direction; // @0x240 |
||
| 635 | float speed; // @0x24c |
||
| 636 | tU16 car_ID; // @0x250 |
||
| 637 | br_material* shrapnel_material[3]; // @0x254 |
||
| 638 | br_bounds bounds_world_space; // @0x260 |
||
| 639 | tBounds_type bounds_ws_type; // @0x278 |
||
| 640 | tU16 fire_vertex[12]; // @0x27c |
||
| 641 | tU16 num_smoke_columns; // @0x294 |
||
| 642 | br_vector3 water_normal; // @0x298 |
||
| 643 | br_scalar water_d; // @0x2a4 |
||
| 644 | br_scalar water_depth_factor; // @0x2a8 |
||
| 645 | tNet_message_mechanics_info message; // @0x2ac |
||
| 646 | tU32 last_car_car_collision; // @0x330 |
||
| 647 | br_scalar dt; // @0x334 |
||
| 648 | tCar_spec* who_last_hit_me; // @0x338 |
||
| 649 | char name[32]; // @0x33c |
||
| 650 | char driver_name[32]; // @0x35c |
||
| 651 | char grid_icon_names[3][14]; // @0x37c |
||
| 652 | tS8* cockpit_images[3]; // @0x3a8 |
||
| 653 | br_pixelmap* prat_cam_left; // @0x3b4 |
||
| 654 | br_pixelmap* prat_cam_top; // @0x3b8 |
||
| 655 | br_pixelmap* prat_cam_right; // @0x3bc |
||
| 656 | br_pixelmap* prat_cam_bottom; // @0x3c0 |
||
| 657 | br_pixelmap* prat_cam_dummy; // @0x3c4 |
||
| 658 | br_pixelmap* speedo_image[2]; // @0x3c8 |
||
| 659 | br_pixelmap* tacho_image[2]; // @0x3d0 |
||
| 660 | br_pixelmap* damage_background; // @0x3d8 |
||
| 661 | br_pixelmap* lhands_images[7]; // @0x3dc |
||
| 662 | br_pixelmap* rhands_images[7]; // @0x3f8 |
||
| 663 | br_pixelmap* grid_icon_image; // @0x414 |
||
| 664 | br_pixelmap* gears_image; // @0x418 |
||
| 665 | int fg_index; // @0x41c |
||
| 666 | int underwater_ability; // @0x420 |
||
| 667 | int invulnerable; // @0x424 |
||
| 668 | int wall_climber_mode; // @0x428 |
||
| 669 | int can_be_stolen; // @0x42c |
||
| 670 | int has_been_stolen; // @0x430 |
||
| 671 | int active; // @0x434 |
||
| 672 | int knackered; // @0x438 |
||
| 673 | int pre_car_col_knackered; // @0x43c |
||
| 674 | int render_left[3]; // @0x440 |
||
| 675 | int render_top[3]; // @0x44c |
||
| 676 | int render_right[3]; // @0x458 |
||
| 677 | int render_bottom[3]; // @0x464 |
||
| 678 | int mirror_left; // @0x470 |
||
| 679 | int mirror_top; // @0x474 |
||
| 680 | int mirror_right; // @0x478 |
||
| 681 | int mirror_bottom; // @0x47c |
||
| 682 | int prat_left; // @0x480 |
||
| 683 | int prat_top; // @0x484 |
||
| 684 | int prat_right; // @0x488 |
||
| 685 | int prat_bottom; // @0x48c |
||
| 686 | int speedo_x[2]; // @0x490 |
||
| 687 | int speedo_y[2]; // @0x498 |
||
| 688 | int speedo_centre_x[2]; // @0x4a0 |
||
| 689 | int speedo_centre_y[2]; // @0x4a8 |
||
| 690 | int speedo_x_pitch[2]; // @0x4b0 |
||
| 691 | int speedo_y_pitch[2]; // @0x4b8 |
||
| 692 | int speedo_radius_1[2]; // @0x4c0 |
||
| 693 | int speedo_radius_2[2]; // @0x4c8 |
||
| 694 | int speedo_start_angle[2]; // @0x4d0 |
||
| 695 | int speedo_end_angle[2]; // @0x4d8 |
||
| 696 | int speedo_needle_colour[2]; // @0x4e0 |
||
| 697 | int tacho_x[2]; // @0x4e8 |
||
| 698 | int tacho_y[2]; // @0x4f0 |
||
| 699 | int tacho_centre_x[2]; // @0x4f8 |
||
| 700 | int tacho_centre_y[2]; // @0x500 |
||
| 701 | int tacho_x_pitch[2]; // @0x508 |
||
| 702 | int tacho_y_pitch[2]; // @0x510 |
||
| 703 | int tacho_radius_1[2]; // @0x518 |
||
| 704 | int tacho_radius_2[2]; // @0x520 |
||
| 705 | int tacho_start_angle[2]; // @0x528 |
||
| 706 | int tacho_end_angle[2]; // @0x530 |
||
| 707 | int tacho_needle_colour[2]; // @0x538 |
||
| 708 | int gear_x[2]; // @0x540 |
||
| 709 | int gear_y[2]; // @0x548 |
||
| 710 | int red_line; // @0x550 |
||
| 711 | int lhands_x[7]; // @0x554 |
||
| 712 | int lhands_y[7]; // @0x570 |
||
| 713 | int rhands_x[7]; // @0x58c |
||
| 714 | int rhands_y[7]; // @0x5a8 |
||
| 715 | int number_of_hands_images; // @0x5c4 |
||
| 716 | int max_speed; // @0x5c8 |
||
| 717 | int damage_x_offset; // @0x5cc |
||
| 718 | int damage_y_offset; // @0x5d0 |
||
| 719 | int damage_background_x; // @0x5d4 |
||
| 720 | int damage_background_y; // @0x5d8 |
||
| 721 | int dim_count[2]; // @0x5dc |
||
| 722 | int dim_left[2][4]; // @0x5e4 |
||
| 723 | int dim_top[2][4]; // @0x604 |
||
| 724 | int dim_right[2][4]; // @0x624 |
||
| 725 | int dim_bottom[2][4]; // @0x644 |
||
| 726 | int car_actor_count; // @0x664 |
||
| 727 | int current_car_actor; // @0x668 |
||
| 728 | int principal_car_actor; // @0x66c |
||
| 729 | int car_model_variable; // @0x670 |
||
| 730 | int number_of_steerable_wheels; // @0x674 |
||
| 731 | int steering_ref[6]; // @0x678 |
||
| 732 | int lf_sus_ref[4]; // @0x690 |
||
| 733 | int rf_sus_ref[4]; // @0x6a0 |
||
| 734 | int lr_sus_ref[2]; // @0x6b0 |
||
| 735 | int rr_sus_ref[2]; // @0x6b8 |
||
| 736 | int driven_wheels_spin_ref_1; // @0x6c0 |
||
| 737 | int driven_wheels_spin_ref_2; // @0x6c4 |
||
| 738 | int driven_wheels_spin_ref_3; // @0x6c8 |
||
| 739 | int driven_wheels_spin_ref_4; // @0x6cc |
||
| 740 | int non_driven_wheels_spin_ref_1; // @0x6d0 |
||
| 741 | int non_driven_wheels_spin_ref_2; // @0x6d4 |
||
| 742 | int non_driven_wheels_spin_ref_3; // @0x6d8 |
||
| 743 | int non_driven_wheels_spin_ref_4; // @0x6dc |
||
| 744 | int engine_noises[3]; // @0x6e0 |
||
| 745 | float driver_x_offset; // @0x6ec |
||
| 746 | float driver_y_offset; // @0x6f0 |
||
| 747 | float driver_z_offset; // @0x6f4 |
||
| 748 | float mirror_x_offset; // @0x6f8 |
||
| 749 | float mirror_y_offset; // @0x6fc |
||
| 750 | float mirror_z_offset; // @0x700 |
||
| 751 | float rearview_camera_angle; // @0x704 |
||
| 752 | float head_left_angle; // @0x708 |
||
| 753 | float head_right_angle; // @0x70c |
||
| 754 | float steering_angle; // @0x710 |
||
| 755 | float speedo_speed; // @0x714 |
||
| 756 | float lf_sus_position; // @0x718 |
||
| 757 | float rf_sus_position; // @0x71c |
||
| 758 | float lr_sus_position; // @0x720 |
||
| 759 | float rr_sus_position; // @0x724 |
||
| 760 | float driven_wheels_circum; // @0x728 |
||
| 761 | float non_driven_wheels_circum; // @0x72c |
||
| 762 | float bounce_rate; // @0x730 |
||
| 763 | float bounce_amount; // @0x734 |
||
| 764 | float collision_mass_multiplier; // @0x738 |
||
| 765 | float damage_multiplier; // @0x73c |
||
| 766 | float grip_multiplier; // @0x740 |
||
| 767 | float engine_power_multiplier; // @0x744 |
||
| 768 | tDamage_unit damage_units[12]; // @0x748 |
||
| 769 | tU8 frame_start_damage[12]; // @0x958 |
||
| 770 | tImpact_location last_impact_location; // @0x964 |
||
| 771 | tDamage_program damage_programs[6]; // @0x968 |
||
| 772 | tHeadup_slot headup_slots[2][20]; // @0x998 |
||
| 773 | tParts_spec power_ups[3]; // @0xfd8 |
||
| 774 | int car_actor_pipe_ref; // @0x12b4 |
||
| 775 | tCar_actor car_model_actors[5]; // @0x12b8 |
||
| 776 | br_material* screen_material; // @0x13a8 |
||
| 777 | br_material* screen_material_source; // @0x13ac |
||
| 778 | br_matrix34 last_safe_positions[5]; // @0x13b0 |
||
| 779 | int wheel_slip; // @0x14a0 |
||
| 780 | br_scalar damping; // @0x14a4 |
||
| 781 | br_scalar sk[2]; // @0x14a8 |
||
| 782 | br_scalar sb[2]; // @0x14b0 |
||
| 783 | br_scalar susp_give[2]; // @0x14b8 |
||
| 784 | br_scalar susp_height[2]; // @0x14c0 |
||
| 785 | br_scalar ride_height; // @0x14c8 |
||
| 786 | br_vector3 wpos[4]; // @0x14cc |
||
| 787 | br_scalar curvature; // @0x14fc |
||
| 788 | br_scalar maxcurve; // @0x1500 |
||
| 789 | br_scalar turn_speed; // @0x1504 |
||
| 790 | br_scalar oldd[4]; // @0x1508 |
||
| 791 | int material_index[4]; // @0x1518 |
||
| 792 | int dust_time[4]; // @0x1528 |
||
| 793 | br_scalar mu[3]; // @0x1538 |
||
| 794 | br_scalar friction_elipticity; // @0x1544 |
||
| 795 | br_scalar down_force_speed; // @0x1548 |
||
| 796 | int down_force_flag; // @0x154c |
||
| 797 | br_scalar initial_brake; // @0x1550 |
||
| 798 | br_scalar brake_increase; // @0x1554 |
||
| 799 | br_scalar freduction; // @0x1558 |
||
| 800 | br_scalar acc_force; // @0x155c |
||
| 801 | br_scalar torque; // @0x1560 |
||
| 802 | br_scalar brake_force; // @0x1564 |
||
| 803 | int traction_control; // @0x1568 |
||
| 804 | br_scalar rolling_r_front; // @0x156c |
||
| 805 | br_scalar rolling_r_back; // @0x1570 |
||
| 806 | tCar_controls keys; // @0x1574 |
||
| 807 | tJoystick joystick; // @0x1578 |
||
| 808 | int pedals_xy; // @0x1588 |
||
| 809 | int number_of_wheels_on_ground; // @0x158c |
||
| 810 | br_actor* wheel_actors[6]; // @0x1590 |
||
| 811 | float wheel_rot_pos[4]; // @0x15a8 |
||
| 812 | br_scalar wheel_dam_offset[4]; // @0x15b8 |
||
| 813 | br_scalar damage_magnitude_accumulator; // @0x15c8 |
||
| 814 | br_scalar revs; // @0x15cc |
||
| 815 | br_scalar target_revs; // @0x15d0 |
||
| 816 | br_vector3 road_normal; // @0x15d4 |
||
| 817 | br_scalar max_force_front; // @0x15e0 |
||
| 818 | br_scalar max_force_rear; // @0x15e4 |
||
| 819 | int gear; // @0x15e8 |
||
| 820 | int just_changed_gear; // @0x15ec |
||
| 821 | int max_gear; // @0x15f0 |
||
| 822 | br_scalar speed_revs_ratio; // @0x15f4 |
||
| 823 | br_scalar force_torque_ratio; // @0x15f8 |
||
| 824 | tS3_sound_source_ptr sound_source; // @0x15fc |
||
| 825 | br_matrix34 pre_car_col_mat; // @0x1600 |
||
| 826 | br_scalar pre_car_col_speed; // @0x1630 |
||
| 827 | br_vector3 pre_car_col_direction; // @0x1634 |
||
| 828 | br_vector3 pre_car_col_velocity; // @0x1640 |
||
| 829 | br_vector3 pre_car_col_velocity_car_space; // @0x164c |
||
| 830 | br_vector3 velocity_bu_per_sec; // @0x1658 |
||
| 831 | float last_col_prop_x; // @0x1664 |
||
| 832 | float last_col_prop_y; // @0x1668 |
||
| 833 | float last_col_prop_z; // @0x166c |
||
| 834 | tU32 time_last_hit; // @0x1670 |
||
| 835 | tU32 time_last_victim; // @0x1674 |
||
| 836 | struct tCar_spec_struct* last_hit_by; // @0x1678 |
||
| 837 | struct tCar_spec_struct* last_culprit; // @0x167c |
||
| 838 | int no_of_processes_recording_my_trail; // @0x1680 |
||
| 839 | tPursuee_trail my_trail; // @0x1684 |
||
| 840 | unsigned int grudge_raised_recently : 1; // @0x17c8 // 0x1 |
||
| 841 | unsigned int big_bang : 1; // @0x17c8 // 0x2 |
||
| 842 | unsigned int scary_bang : 1; // @0x17c8 // 0x4 |
||
| 843 | tU32 last_collision_time; // @0x17cc |
||
| 844 | tU32 last_time_we_touched_a_player; // @0x17d0 |
||
| 845 | tU32 end_steering_damage_effect; // @0x17d4 |
||
| 846 | tU32 end_trans_damage_effect; // @0x17d8 |
||
| 847 | int false_key_left; // @0x17dc |
||
| 848 | int false_key_right; // @0x17e0 |
||
| 849 | tCar_spec* last_person_to_hit_us; // @0x17e4 |
||
| 850 | tCar_spec* last_person_we_hit; // @0x17e8 |
||
| 851 | br_vector3 engine_pos; // @0x17ec |
||
| 852 | br_model* last_wheel_models[4]; // @0x17f8 |
||
| 853 | int last_wheel_faces[4]; // @0x1808 |
||
| 854 | tU32 shadow_intersection_flags; // @0x1818 |
||
| 855 | tU32 last_bounce; // @0x181c |
||
| 856 | unsigned int new_skidding; // @0x1820 |
||
| 857 | unsigned int old_skidding; // @0x1824 |
||
| 858 | tU16 old_skid[4]; // @0x1828 |
||
| 859 | br_vector3 prev_skid_pos[4]; // @0x1830 |
||
| 860 | br_vector3 skid_line_start[4]; // @0x1860 |
||
| 861 | br_vector3 skid_line_end[4]; // @0x1890 |
||
| 862 | br_vector3 nor[4]; // @0x18c0 |
||
| 863 | br_vector3 prev_nor[4]; // @0x18f0 |
||
| 864 | br_vector3 special_start[4]; // @0x1920 |
||
| 865 | br_scalar oil_remaining[4]; // @0x1950 |
||
| 866 | br_scalar blood_remaining[4]; // @0x1960 |
||
| 867 | br_scalar total_length[4]; // @0x1970 |
||
| 868 | float proxy_ray_distance; // @0x1980 |
||
| 869 | tS32 powerups[64]; // @0x1984 |
||
| 870 | tU32 time_to_recover; // @0x1a84 |
||
| 871 | tU32 repair_time; // @0x1a88 |
||
| 872 | int power_up_levels[3]; // @0x1a8c |
||
| 873 | tS3_sound_tag horn_sound_tag; // @0x1a98 |
||
| 874 | } tCar_spec; |
||
| 875 | |||
| 876 | typedef struct tOppo_psyche { |
||
| 877 | tU8 grudge_against_player; |
||
| 878 | } tOppo_psyche; |
||
| 879 | |||
| 880 | typedef struct tComplete_race_data { |
||
| 881 | tU8 finished_calcing_race_route; |
||
| 882 | tU8 found_race_section; |
||
| 883 | } tComplete_race_data; |
||
| 884 | |||
| 885 | typedef struct tReturn_to_start_data { |
||
| 886 | br_vector3 nearest_path_point; |
||
| 887 | tS16 section_no; |
||
| 888 | tU8 waiting_near_start; |
||
| 889 | } tReturn_to_start_data; |
||
| 890 | |||
| 891 | typedef struct tPath_node_struct { |
||
| 892 | br_vector3 p; |
||
| 893 | tS16 sections[8]; |
||
| 894 | tU8 number_of_sections; |
||
| 895 | } tPath_node; |
||
| 896 | |||
| 897 | typedef struct tPath_section_struct { // size: 0x14 |
||
| 898 | tS16 node_indices[2]; // @0x0 |
||
| 899 | tU8 min_speed[2]; // @0x4 |
||
| 900 | tU8 max_speed[2]; // @0x6 |
||
| 901 | br_scalar width; // @0x8 |
||
| 902 | br_scalar length; // @0xc |
||
| 903 | tU8 type; // @0x10 |
||
| 904 | tU8 one_way; // @0x11 |
||
| 905 | } tPath_section; |
||
| 906 | |||
| 907 | typedef struct tPursue_car_data { // size: 0x70 |
||
| 908 | tCar_spec* pursuee; // @0x0 |
||
| 909 | tU32 time_of_next_visibility_check; // @0x4 |
||
| 910 | tU32 start_backup_time; // @0x8 |
||
| 911 | tU32 time_last_twatted_em; // @0xc |
||
| 912 | tU32 time_pursuee_last_visible; // @0x10 |
||
| 913 | tU32 time_last_away_from_pursuee; // @0x14 |
||
| 914 | tPath_node direct_line_nodes[2]; // @0x18 |
||
| 915 | tPath_section direct_line_section; // @0x58 |
||
| 916 | tU8 state; // @0x6c |
||
| 917 | } tPursue_car_data; |
||
| 918 | |||
| 919 | typedef struct tFollow_path_data { // size: 0x58 |
||
| 920 | tU32 struggle_time; // @0x0 |
||
| 921 | tU32 last_finished_struggle_time; // @0x4 |
||
| 922 | tU32 toggle_time; // @0x8 |
||
| 923 | tU32 borrowed_time_start; // @0xc |
||
| 924 | br_scalar prev_acc; // @0x10 |
||
| 925 | br_scalar prev_acc_error; // @0x14 |
||
| 926 | br_scalar desired_speed; // @0x18 |
||
| 927 | br_scalar last_distance; // @0x1c |
||
| 928 | br_vector3 cheaty_intersect; // @0x20 |
||
| 929 | tS16 section_no; // @0x2c |
||
| 930 | tS16 first_section_no; // @0x2e |
||
| 931 | tS16 last_struggle_section; // @0x30 |
||
| 932 | unsigned int number_of_struggles : 8; // @0x34 |
||
| 933 | unsigned int has_moved_during_this_task : 1; // @0x34 // 0x100 |
||
| 934 | unsigned int made_it : 1; // @0x34 // 0x200 |
||
| 935 | unsigned int cheating : 1; // @0x34 // 0x400 |
||
| 936 | unsigned int cornering : 1; // @0x34 // 0x800 |
||
| 937 | unsigned int left_not_right : 1; // @0x34 // 0x1000 |
||
| 938 | unsigned int off_path_toggle; // @0x38 |
||
| 939 | unsigned int moving_to_intersect; // @0x3c |
||
| 940 | br_vector2 turning_cent; // @0x40 |
||
| 941 | br_scalar turning_radius; // @0x48 |
||
| 942 | br_scalar corner_size; // @0x4c |
||
| 943 | br_scalar corner_width; // @0x50 |
||
| 944 | int section_after; // @0x54 |
||
| 945 | } tFollow_path_data; |
||
| 946 | |||
| 947 | typedef struct tLevitate_data { |
||
| 948 | br_scalar initial_y; |
||
| 949 | tU32 time_started; |
||
| 950 | unsigned int waiting_to_levitate : 1; |
||
| 951 | } tLevitate_data; |
||
| 952 | |||
| 953 | typedef struct tRun_away_data { |
||
| 954 | tU32 time_to_stop; |
||
| 955 | } tRun_away_data; |
||
| 956 | |||
| 957 | typedef struct tRoute_section { // size: 0x4 |
||
| 958 | tS16 section_no; // @0x0 |
||
| 959 | tU8 direction; // @0x2 |
||
| 960 | } tRoute_section; |
||
| 961 | |||
| 962 | typedef struct tOpponent_spec { // size: 0x190 |
||
| 963 | int index; // @0x0 |
||
| 964 | tOpponent_objective_type current_objective; // @0x4 |
||
| 965 | tCar_spec* car_spec; // @0x8 |
||
| 966 | float nastiness; // @0xc |
||
| 967 | br_scalar distance_to_camera; // @0x10 |
||
| 968 | br_scalar distance_from_home; // @0x14 |
||
| 969 | br_scalar player_to_oppo_d; // @0x18 |
||
| 970 | br_vector3 start_pos; // @0x1c |
||
| 971 | br_vector3 start_direction; // @0x28 |
||
| 972 | br_vector3 pos_last_frame; // @0x34 |
||
| 973 | br_vector3 player_to_oppo_v; // @0x40 |
||
| 974 | tU32 next_out_of_world_check; // @0x4c |
||
| 975 | tU32 stun_time_ends; // @0x50 |
||
| 976 | tU32 next_player_visibility_check; // @0x54 |
||
| 977 | tU32 last_moved_ok; // @0x58 |
||
| 978 | tU32 last_in_view; // @0x5c |
||
| 979 | tU32 time_last_processed; // @0x60 |
||
| 980 | tU32 time_this_objective_started; // @0x64 |
||
| 981 | tU32 time_for_this_objective_to_finish; // @0x68 |
||
| 982 | tU32 cunting_buttfuck_timer; // @0x6c |
||
| 983 | tS16 players_section_when_last_calced_full_path; // @0x70 |
||
| 984 | int nnext_sections; // @0x74 |
||
| 985 | tRoute_section next_sections[10]; // @0x78 |
||
| 986 | unsigned int new_objective_required : 1; // @0xa0 // 0x1 |
||
| 987 | unsigned int finished_for_this_race : 1; // @0xa0 // 0x2 |
||
| 988 | unsigned int knackeredness_detected : 1; // @0xa0 // 0x4 |
||
| 989 | unsigned int physics_me : 1; // @0xa0 // 0x8 |
||
| 990 | unsigned int pursue_from_start : 1; // @0xa0 // 0x10 |
||
| 991 | unsigned int cheating : 1; // @0xa0 // 0x20 |
||
| 992 | unsigned int last_cheating_value : 1; // @0xa0 // 0x40 |
||
| 993 | unsigned int pursuing_player_before_freeze : 1; // @0xa0 // 0x80 |
||
| 994 | unsigned int has_moved_at_some_point : 1; // @0xa0 // 0x100 |
||
| 995 | unsigned int player_in_view_now : 1; // @0xa0 // 0x200 |
||
| 996 | unsigned int acknowledged_piv : 1; // @0xa0 // 0x400 |
||
| 997 | unsigned int murder_reported : 1; // @0xa0 // 0x800 |
||
| 998 | tComplete_race_data complete_race_data; // @0xa4 |
||
| 999 | tFollow_path_data follow_path_data; // @0xa8 |
||
| 1000 | tPursue_car_data pursue_car_data; // @0x100 |
||
| 1001 | tLevitate_data levitate_data; // @0x170 |
||
| 1002 | tRun_away_data run_away_data; // @0x17c |
||
| 1003 | tReturn_to_start_data return_to_start_data; // @0x180 |
||
| 1004 | } tOpponent_spec; |
||
| 1005 | |||
| 1006 | typedef struct tIntelligent_vehicles { |
||
| 1007 | int number_of_opponents; |
||
| 1008 | int number_of_cops; |
||
| 1009 | int number_of_path_nodes; |
||
| 1010 | int number_of_path_sections; |
||
| 1011 | br_vector3 cop_start_points[10]; |
||
| 1012 | br_vector3 cop_start_vectors[10]; |
||
| 1013 | tOpponent_spec opponents[5]; |
||
| 1014 | tOpponent_spec cops[10]; |
||
| 1015 | tPath_node* path_nodes; |
||
| 1016 | tPath_section* path_sections; |
||
| 1017 | } tIntelligent_vehicles; |
||
| 1018 | |||
| 1019 | typedef struct tBounds { |
||
| 1020 | br_matrix34* mat; |
||
| 1021 | br_bounds original_bounds; |
||
| 1022 | br_vector3 box_centre; |
||
| 1023 | br_scalar radius; |
||
| 1024 | br_bounds real_bounds; |
||
| 1025 | } tBounds; |
||
| 1026 | |||
| 1027 | typedef struct tFace_ref { |
||
| 1028 | br_material* material; |
||
| 1029 | br_vector3 v[3]; |
||
| 1030 | br_vector2* map[3]; |
||
| 1031 | br_vector3 normal; |
||
| 1032 | int flags; |
||
| 1033 | br_scalar d; |
||
| 1034 | } tFace_ref; |
||
| 1035 | |||
| 1036 | typedef struct tNet_game_player_info { // size: 0xc0 |
||
| 1037 | tPD_net_player_info pd_net_info; // @0x0 |
||
| 1038 | tU32 this_players_time_stamp; // @0x10 |
||
| 1039 | tU32 last_heard_from_him; // @0x14 |
||
| 1040 | tU32 reposition_time; // @0x18 |
||
| 1041 | tU32 last_waste_message; // @0x1c |
||
| 1042 | int host; // @0x20 |
||
| 1043 | tPlayer_ID ID; // @0x24 |
||
| 1044 | char player_name[32]; // @0x28 |
||
| 1045 | tPlayer_status player_status; // @0x48 |
||
| 1046 | int car_index; // @0x4c |
||
| 1047 | int grid_index; // @0x50 |
||
| 1048 | int grid_position_set; // @0x54 |
||
| 1049 | int opponent_list_index; // @0x58 |
||
| 1050 | int awaiting_confirmation; // @0x5c |
||
| 1051 | int score; // @0x60 |
||
| 1052 | int credits; // @0x64 |
||
| 1053 | int wasted; // @0x68 |
||
| 1054 | int wasteage_attributed; // @0x6c |
||
| 1055 | int name_not_clipped; // @0x70 |
||
| 1056 | int race_stuff_initialised; // @0x74 |
||
| 1057 | int played; // @0x78 |
||
| 1058 | int won; // @0x7c |
||
| 1059 | int next_car_index; // @0x80 |
||
| 1060 | int games_score; // @0x84 |
||
| 1061 | int last_score_index; // @0x88 |
||
| 1062 | br_matrix34 initial_position; // @0x8c |
||
| 1063 | tCar_spec* car; // @0xbc |
||
| 1064 | } tNet_game_player_info; |
||
| 1065 | |||
| 1066 | typedef struct tNet_game_options { // size: 0x30 |
||
| 1067 | int show_players_on_map; // @0x0 |
||
| 1068 | int show_peds_on_map; // @0x4 |
||
| 1069 | int enable_text_messages; // @0x8 |
||
| 1070 | int show_powerups_on_map; // @0xc |
||
| 1071 | int powerup_respawn; // @0x10 |
||
| 1072 | int open_game; // @0x14 |
||
| 1073 | int starting_money_index; // @0x18 |
||
| 1074 | int grid_start; // @0x1c |
||
| 1075 | int race_end_target; // @0x20 |
||
| 1076 | int random_car_choice; // @0x24 |
||
| 1077 | tNet_sequence_type race_sequence_type; // @0x28 |
||
| 1078 | tCar_choice car_choice; // @0x2c |
||
| 1079 | } tNet_game_options; |
||
| 1080 | |||
| 1081 | typedef struct tNet_game_status { // size: 0x4 |
||
| 1082 | tNet_game_stage stage; // @0x0 |
||
| 1083 | } tNet_game_status; |
||
| 1084 | |||
| 1085 | typedef struct tNet_game_details { // size: 0x78 |
||
| 1086 | tPD_net_player_info pd_net_info; // @0x0 |
||
| 1087 | char host_name[32]; // @0x10 |
||
| 1088 | tPlayer_ID host_ID; // @0x30 |
||
| 1089 | int num_players; // @0x34 |
||
| 1090 | int start_race; // @0x38 |
||
| 1091 | int no_races_yet; // @0x3c |
||
| 1092 | tNet_game_status status; // @0x40 |
||
| 1093 | tNet_game_options options; // @0x44 |
||
| 1094 | tNet_game_type type; // @0x74 |
||
| 1095 | } tNet_game_details; |
||
| 1096 | |||
| 1097 | typedef struct tNet_message_send_me_details { |
||
| 1098 | tU8 contents_size; |
||
| 1099 | tNet_message_type type; |
||
| 1100 | } tNet_message_send_me_details; |
||
| 1101 | |||
| 1102 | typedef struct tNet_message_my_details { |
||
| 1103 | tU8 contents_size; |
||
| 1104 | tNet_message_type type; |
||
| 1105 | tNet_game_details details; |
||
| 1106 | } tNet_message_my_details; |
||
| 1107 | |||
| 1108 | typedef struct tNet_message_join { |
||
| 1109 | tU8 contents_size; |
||
| 1110 | tNet_message_type type; |
||
| 1111 | tNet_game_player_info player_info; |
||
| 1112 | } tNet_message_join; |
||
| 1113 | |||
| 1114 | typedef struct tNet_message_leave { |
||
| 1115 | tU8 contents_size; |
||
| 1116 | tNet_message_type type; |
||
| 1117 | } tNet_message_leave; |
||
| 1118 | |||
| 1119 | typedef struct tNet_message_host_pissing_off { |
||
| 1120 | tU8 contents_size; |
||
| 1121 | tNet_message_type type; |
||
| 1122 | } tNet_message_host_pissing_off; |
||
| 1123 | |||
| 1124 | typedef struct tNet_message_new_player_list { |
||
| 1125 | tU8 contents_size; |
||
| 1126 | tNet_message_type type; |
||
| 1127 | int number_of_players; |
||
| 1128 | int this_index; |
||
| 1129 | int batch_number; |
||
| 1130 | tNet_game_player_info player; |
||
| 1131 | } tNet_message_new_player_list; |
||
| 1132 | |||
| 1133 | typedef struct tNet_message_race_over { |
||
| 1134 | tU8 contents_size; |
||
| 1135 | tNet_message_type type; |
||
| 1136 | tRace_over_reason reason; |
||
| 1137 | } tNet_message_race_over; |
||
| 1138 | |||
| 1139 | typedef struct tNet_message_status_report { |
||
| 1140 | tU8 contents_size; |
||
| 1141 | tNet_message_type type; |
||
| 1142 | tPlayer_status status; |
||
| 1143 | } tNet_message_status_report; |
||
| 1144 | |||
| 1145 | typedef struct tGrid_spec { |
||
| 1146 | int index; |
||
| 1147 | int next_car_index; |
||
| 1148 | br_matrix34 mat; |
||
| 1149 | } tGrid_spec; |
||
| 1150 | |||
| 1151 | typedef struct tNet_message_start_race { |
||
| 1152 | tU8 contents_size; |
||
| 1153 | tNet_message_type type; |
||
| 1154 | int car_count; |
||
| 1155 | int racing; |
||
| 1156 | int next_race; |
||
| 1157 | tGrid_spec car_list[6]; |
||
| 1158 | } tNet_message_start_race; |
||
| 1159 | |||
| 1160 | typedef struct tNet_message_guarantee_reply { |
||
| 1161 | tU8 contents_size; |
||
| 1162 | tNet_message_type type; |
||
| 1163 | tU32 guarantee_number; |
||
| 1164 | } tNet_message_guarantee_reply; |
||
| 1165 | |||
| 1166 | typedef struct tNet_message_headup { |
||
| 1167 | tU8 contents_size; |
||
| 1168 | tNet_message_type type; |
||
| 1169 | char text[128]; |
||
| 1170 | } tNet_message_headup; |
||
| 1171 | |||
| 1172 | typedef struct tNet_message_host_query { |
||
| 1173 | tU8 contents_size; |
||
| 1174 | tNet_message_type type; |
||
| 1175 | } tNet_message_host_query; |
||
| 1176 | |||
| 1177 | typedef struct tNet_message_host_reply { |
||
| 1178 | tU8 contents_size; |
||
| 1179 | tNet_message_type type; |
||
| 1180 | int race_has_started; |
||
| 1181 | int race_index; |
||
| 1182 | int pending_race; |
||
| 1183 | } tNet_message_host_reply; |
||
| 1184 | |||
| 1185 | typedef struct tNet_message_cop_info { |
||
| 1186 | tU8 contents_size; |
||
| 1187 | tNet_message_type type; |
||
| 1188 | tU32 ID; |
||
| 1189 | tU32 time; |
||
| 1190 | tReduced_matrix mat; |
||
| 1191 | br_vector3 v; |
||
| 1192 | br_vector3 omega; |
||
| 1193 | br_scalar curvature; |
||
| 1194 | br_scalar d[4]; |
||
| 1195 | tU8 damage[12]; |
||
| 1196 | } tNet_message_cop_info; |
||
| 1197 | |||
| 1198 | typedef struct tNet_message_non_car_info { |
||
| 1199 | tU8 contents_size; |
||
| 1200 | tNet_message_type type; |
||
| 1201 | tU32 ID; |
||
| 1202 | tU32 time; |
||
| 1203 | tReduced_matrix mat; |
||
| 1204 | br_vector3 v; |
||
| 1205 | br_vector3 omega; |
||
| 1206 | tU32 cc_coll_time; |
||
| 1207 | tU16 flags; |
||
| 1208 | } tNet_message_non_car_info; |
||
| 1209 | |||
| 1210 | typedef struct tNet_message_non_car_position { |
||
| 1211 | tU8 contents_size; |
||
| 1212 | tNet_message_type type; |
||
| 1213 | tU32 ID; |
||
| 1214 | br_matrix34 mat; |
||
| 1215 | tU16 flags; |
||
| 1216 | } tNet_message_non_car_position; |
||
| 1217 | |||
| 1218 | typedef struct tNet_message_time_sync { |
||
| 1219 | tU8 contents_size; |
||
| 1220 | tNet_message_type type; |
||
| 1221 | int race_start_time; |
||
| 1222 | } tNet_message_time_sync; |
||
| 1223 | |||
| 1224 | typedef struct tNet_message_players_confirm { |
||
| 1225 | tU8 contents_size; |
||
| 1226 | tNet_message_type type; |
||
| 1227 | tPlayer_ID player; |
||
| 1228 | } tNet_message_players_confirm; |
||
| 1229 | |||
| 1230 | typedef struct tNet_message_disable_car { |
||
| 1231 | tU8 contents_size; |
||
| 1232 | tNet_message_type type; |
||
| 1233 | tPlayer_ID player; |
||
| 1234 | } tNet_message_disable_car; |
||
| 1235 | |||
| 1236 | typedef struct tNet_message_enable_car { |
||
| 1237 | tU8 contents_size; |
||
| 1238 | tNet_message_type type; |
||
| 1239 | tPlayer_ID player; |
||
| 1240 | } tNet_message_enable_car; |
||
| 1241 | |||
| 1242 | typedef struct tNet_message_powerup { |
||
| 1243 | tU8 contents_size; |
||
| 1244 | tNet_message_type type; |
||
| 1245 | tPlayer_ID player; |
||
| 1246 | int powerup_index; |
||
| 1247 | tU32 time_left; |
||
| 1248 | tPowerup_event event; |
||
| 1249 | } tNet_message_powerup; |
||
| 1250 | |||
| 1251 | typedef struct tNet_message_recover { |
||
| 1252 | tU8 contents_size; |
||
| 1253 | tNet_message_type type; |
||
| 1254 | tU32 ID; |
||
| 1255 | int time_to_recover; |
||
| 1256 | } tNet_message_recover; |
||
| 1257 | |||
| 1258 | typedef struct tNet_message_scores { |
||
| 1259 | tU8 contents_size; |
||
| 1260 | tNet_message_type type; |
||
| 1261 | int general_score; |
||
| 1262 | int scores[6]; |
||
| 1263 | } tNet_message_scores; |
||
| 1264 | |||
| 1265 | typedef struct tNet_message_wasted { |
||
| 1266 | tU8 contents_size; |
||
| 1267 | tNet_message_type type; |
||
| 1268 | tPlayer_ID victim; |
||
| 1269 | tPlayer_ID culprit; |
||
| 1270 | } tNet_message_wasted; |
||
| 1271 | |||
| 1272 | typedef struct tNet_message_gameplay { |
||
| 1273 | tU8 contents_size; |
||
| 1274 | tNet_message_type type; |
||
| 1275 | tNet_gameplay_mess mess; |
||
| 1276 | tU32 param_1; |
||
| 1277 | tU32 param_2; |
||
| 1278 | tU32 param_3; |
||
| 1279 | tU32 param_4; |
||
| 1280 | } tNet_message_gameplay; |
||
| 1281 | |||
| 1282 | typedef struct tNet_message_pedestrian { |
||
| 1283 | tU8 contents_size; |
||
| 1284 | tNet_message_type type; |
||
| 1285 | tS8 action_instruction; |
||
| 1286 | tS8 flags; |
||
| 1287 | tS16 index; |
||
| 1288 | br_vector3 pos; |
||
| 1289 | br_scalar speed; |
||
| 1290 | br_vector3 to_pos; |
||
| 1291 | br_vector3 offset; |
||
| 1292 | tPlayer_ID murderer; |
||
| 1293 | tU32 respawn_time_or_spin_period; |
||
| 1294 | tS8 frame; |
||
| 1295 | } tNet_message_pedestrian; |
||
| 1296 | |||
| 1297 | typedef struct tNet_message_car_details_req { |
||
| 1298 | tU8 contents_size; |
||
| 1299 | tNet_message_type type; |
||
| 1300 | } tNet_message_car_details_req; |
||
| 1301 | |||
| 1302 | typedef struct tCar_details { |
||
| 1303 | int car_index; |
||
| 1304 | char owner[16]; |
||
| 1305 | } tCar_details; |
||
| 1306 | |||
| 1307 | typedef struct tNet_message_car_details { |
||
| 1308 | tU8 contents_size; |
||
| 1309 | tNet_message_type type; |
||
| 1310 | int count; |
||
| 1311 | tCar_details details[6]; |
||
| 1312 | } tNet_message_car_details; |
||
| 1313 | |||
| 1314 | typedef struct tGame_scores { |
||
| 1315 | int played; |
||
| 1316 | int won; |
||
| 1317 | int score; |
||
| 1318 | } tGame_scores; |
||
| 1319 | |||
| 1320 | typedef struct tNet_message_game_scores { |
||
| 1321 | tU8 contents_size; |
||
| 1322 | tNet_message_type type; |
||
| 1323 | tGame_scores scores[6]; |
||
| 1324 | } tNet_message_game_scores; |
||
| 1325 | |||
| 1326 | typedef struct tNet_message_oil_spill { |
||
| 1327 | tU8 contents_size; |
||
| 1328 | tNet_message_type type; |
||
| 1329 | tPlayer_ID player; |
||
| 1330 | br_scalar full_size; |
||
| 1331 | br_scalar grow_rate; |
||
| 1332 | br_scalar current_size; |
||
| 1333 | } tNet_message_oil_spill; |
||
| 1334 | |||
| 1335 | typedef struct tNet_message_crush_point { |
||
| 1336 | tU8 contents_size; |
||
| 1337 | tNet_message_type type; |
||
| 1338 | tPlayer_ID id; |
||
| 1339 | tU16 vertex; |
||
| 1340 | br_vector3 energy_vector; |
||
| 1341 | } tNet_message_crush_point; |
||
| 1342 | |||
| 1343 | typedef union tNet_contents { // size: 0x160 |
||
| 1344 | struct { // size: 0x2 |
||
| 1345 | tU8 contents_size; // @0x0 |
||
| 1346 | tNet_message_type type; // @0x1 |
||
| 1347 | } header; // @0x0 |
||
| 1348 | union { // size: 0x160 |
||
| 1349 | tNet_message_send_me_details send_details; // @0x0 |
||
| 1350 | tNet_message_my_details details; // @0x0 |
||
| 1351 | tNet_message_join join; // @0x0 |
||
| 1352 | tNet_message_leave leave; // @0x0 |
||
| 1353 | tNet_message_host_pissing_off hosticide; // @0x0 |
||
| 1354 | tNet_message_new_player_list player_list; // @0x0 |
||
| 1355 | tNet_message_race_over race_over; // @0x0 |
||
| 1356 | tNet_message_status_report report; // @0x0 |
||
| 1357 | tNet_message_start_race start_race; // @0x0 |
||
| 1358 | tNet_message_guarantee_reply reply; // @0x0 |
||
| 1359 | tNet_message_headup headup; // @0x0 |
||
| 1360 | tNet_message_host_query where_we_at; // @0x0 |
||
| 1361 | tNet_message_host_reply heres_where_we_at; // @0x0 |
||
| 1362 | tNet_message_mechanics_info mech; // @0x0 |
||
| 1363 | tNet_message_non_car_info non_car; // @0x0 |
||
| 1364 | tNet_message_time_sync time_sync; // @0x0 |
||
| 1365 | tNet_message_players_confirm confirm; // @0x0 |
||
| 1366 | tNet_message_disable_car disable_car; // @0x0 |
||
| 1367 | tNet_message_enable_car enabled_car; // @0x0 |
||
| 1368 | tNet_message_powerup powerup; // @0x0 |
||
| 1369 | tNet_message_recover recover; // @0x0 |
||
| 1370 | tNet_message_scores scores; // @0x0 |
||
| 1371 | tNet_message_wasted wasted; // @0x0 |
||
| 1372 | tNet_message_pedestrian pedestrian; // @0x0 |
||
| 1373 | tNet_message_gameplay gameplay; // @0x0 |
||
| 1374 | tNet_message_non_car_position non_car_position; // @0x0 |
||
| 1375 | tNet_message_cop_info cop_info; // @0x0 |
||
| 1376 | tNet_message_car_details_req car_details_req; // @0x0 |
||
| 1377 | tNet_message_car_details car_details; // @0x0 |
||
| 1378 | tNet_message_game_scores game_scores; // @0x0 |
||
| 1379 | tNet_message_oil_spill oil_spill; // @0x0 |
||
| 1380 | tNet_message_crush_point crush; // @0x0 |
||
| 1381 | } data; // @0x0 |
||
| 1382 | } tNet_contents; |
||
| 1383 | |||
| 1384 | typedef struct tNet_message { // size: 0x17c |
||
| 1385 | tU32 pd_stuff_so_DO_NOT_USE; // @0x0 |
||
| 1386 | tU32 magic_number; // @0x4 |
||
| 1387 | tU32 guarantee_number; // @0x8 |
||
| 1388 | tPlayer_ID sender; // @0xc |
||
| 1389 | int version; // @0x10 |
||
| 1390 | tU32 senders_time_stamp; // @0x14 |
||
| 1391 | tU16 num_contents; // @0x18 |
||
| 1392 | tU16 overall_size; // @0x1a |
||
| 1393 | tNet_contents contents; // @0x1c |
||
| 1394 | } tNet_message; |
||
| 1395 | |||
| 1396 | typedef struct tCar_detail_info { |
||
| 1397 | tCar_detail_ownership ownership; |
||
| 1398 | char name[16]; |
||
| 1399 | } tCar_detail_info; |
||
| 1400 | |||
| 1401 | typedef struct tWav_header { |
||
| 1402 | char quote_RIFF[4]; |
||
| 1403 | tU32 format_length; |
||
| 1404 | tU8 wave[4]; |
||
| 1405 | tU8 fmt[4]; |
||
| 1406 | tU32 wave_format_length; |
||
| 1407 | tU16 format_tag; |
||
| 1408 | tU16 channels; |
||
| 1409 | tU32 samples_per_sec; |
||
| 1410 | tU32 avg_bytes_per_sec; |
||
| 1411 | tU16 block_align; |
||
| 1412 | tU16 bits_per_sample; |
||
| 1413 | tU8 data[4]; |
||
| 1414 | tU32 data_length; |
||
| 1415 | } tWav_header; |
||
| 1416 | |||
| 1417 | typedef struct tPowerup { |
||
| 1418 | tPowerup_type type; |
||
| 1419 | tU32 got_time; |
||
| 1420 | tU32 duration; |
||
| 1421 | tU32 lose_time; |
||
| 1422 | tU16 group_inclusion; |
||
| 1423 | br_pixelmap* icon; |
||
| 1424 | int fizzle_type; |
||
| 1425 | int number_of_float_params; |
||
| 1426 | int number_of_integer_params; |
||
| 1427 | int* integer_params; |
||
| 1428 | int current_value; |
||
| 1429 | int prat_cam_event; |
||
| 1430 | tNet_powerup_type net_type; |
||
| 1431 | tGot_proc* got_proc; |
||
| 1432 | tLose_proc* lose_proc; |
||
| 1433 | tPeriodic_proc* periodic_proc; |
||
| 1434 | float* float_params; |
||
| 1435 | tCar_spec* car; |
||
| 1436 | char message[64]; |
||
| 1437 | } tPowerup; |
||
| 1438 | |||
| 1439 | typedef struct tDepth_effect { |
||
| 1440 | tDepth_effect_type type; |
||
| 1441 | int start; |
||
| 1442 | int end; |
||
| 1443 | br_pixelmap* sky_texture; |
||
| 1444 | } tDepth_effect; |
||
| 1445 | |||
| 1446 | typedef struct tPlane_spec { |
||
| 1447 | tPlane_type plane_type; |
||
| 1448 | br_fvector3 n; |
||
| 1449 | br_scalar d; |
||
| 1450 | } tPlane_spec; |
||
| 1451 | |||
| 1452 | typedef struct tMaterial_modifiers { |
||
| 1453 | br_scalar car_wall_friction; |
||
| 1454 | br_scalar tyre_road_friction; |
||
| 1455 | br_scalar down_force; |
||
| 1456 | br_scalar bumpiness; |
||
| 1457 | int tyre_noise_index; |
||
| 1458 | int crash_noise_index; |
||
| 1459 | int scrape_noise_index; |
||
| 1460 | br_scalar sparkiness; |
||
| 1461 | int smoke_type; |
||
| 1462 | br_material* skid_mark_material; |
||
| 1463 | } tMaterial_modifiers; |
||
| 1464 | |||
| 1465 | typedef struct tSpecial_screen { |
||
| 1466 | br_material* material; |
||
| 1467 | br_scalar min_x; |
||
| 1468 | br_scalar min_z; |
||
| 1469 | br_scalar max_x; |
||
| 1470 | br_scalar max_z; |
||
| 1471 | } tSpecial_screen; |
||
| 1472 | |||
| 1473 | typedef struct tRace_list_spec { |
||
| 1474 | char name[32]; |
||
| 1475 | int rank_required; |
||
| 1476 | int best_rank; |
||
| 1477 | int suggested_rank; |
||
| 1478 | int been_there_done_that; |
||
| 1479 | } tRace_list_spec; |
||
| 1480 | |||
| 1481 | typedef struct tRace_save_info { |
||
| 1482 | tU32 been_there_done_that; |
||
| 1483 | } tRace_save_info; |
||
| 1484 | |||
| 1485 | typedef struct tGraf_spec { |
||
| 1486 | int depth_bits; |
||
| 1487 | int depth_bytes; |
||
| 1488 | int doubled; |
||
| 1489 | int total_width; |
||
| 1490 | int total_height; |
||
| 1491 | long black_value; |
||
| 1492 | int colour_index; |
||
| 1493 | char* data_dir_name; |
||
| 1494 | char* gfx_init_string; |
||
| 1495 | int row_bytes; |
||
| 1496 | int phys_width; |
||
| 1497 | int phys_height; |
||
| 1498 | void* base_addr; |
||
| 1499 | } tGraf_spec; |
||
| 1500 | |||
| 20 | pmbaty | 1501 | typedef struct tCollision_info { |
| 1502 | int index; |
||
| 1503 | int disabled; |
||
| 1504 | tDriver driver; |
||
| 1505 | br_actor* car_master_actor; |
||
| 1506 | br_scalar min_torque_squared; |
||
| 1507 | br_scalar break_off_radians_squared; |
||
| 1508 | br_vector3 v; |
||
| 1509 | br_vector3 old_v; |
||
| 1510 | br_vector3 velocity_car_space; |
||
| 1511 | br_matrix34 oldmat; |
||
| 1512 | br_matrix34 old_frame_mat; |
||
| 1513 | br_vector3 pos; |
||
| 1514 | br_vector3 omega; |
||
| 1515 | br_vector3 oldomega; |
||
| 1516 | br_scalar M; |
||
| 1517 | int infinite_mass; |
||
| 1518 | br_vector3 I; |
||
| 1519 | br_vector3 cmpos; |
||
| 1520 | int extra_point_num; |
||
| 1521 | br_bounds bounds[3]; |
||
| 1522 | br_bounds max_bounds[2]; |
||
| 1523 | br_vector3 extra_points[6]; |
||
| 1524 | br_scalar original_extra_points_z[6]; |
||
| 1525 | br_vector3 old_point; |
||
| 1526 | br_vector3 old_norm; |
||
| 1527 | int box_face_start; |
||
| 1528 | int box_face_end; |
||
| 1529 | int box_face_ref; |
||
| 1530 | br_matrix34 last_box_inv_mat; |
||
| 1531 | br_bounds last_box; |
||
| 1532 | int doing_nothing_flag; |
||
| 1533 | tSpecial_volume* last_special_volume; |
||
| 1534 | tSpecial_volume* auto_special_volume; |
||
| 1535 | int frame_collision_flag; |
||
| 1536 | int collision_flag; |
||
| 1537 | int max_shrapnel_material; |
||
| 1538 | br_vector3 direction; |
||
| 1539 | float speed; |
||
| 1540 | tU16 car_ID; |
||
| 1541 | br_material* shrapnel_material[3]; |
||
| 1542 | br_bounds bounds_world_space; |
||
| 1543 | tBounds_type bounds_ws_type; |
||
| 1544 | tU16 fire_vertex[12]; |
||
| 1545 | tU16 num_smoke_columns; |
||
| 1546 | br_vector3 water_normal; |
||
| 1547 | br_scalar water_d; |
||
| 1548 | br_scalar water_depth_factor; |
||
| 1549 | tNet_message_mechanics_info message; |
||
| 1550 | tU32 last_car_car_collision; |
||
| 1551 | br_scalar dt; |
||
| 1552 | tCar_spec* who_last_hit_me; |
||
| 1 | pmbaty | 1553 | } tCollision_info; |
| 1554 | |||
| 20 | pmbaty | 1555 | typedef struct tNon_car_spec { |
| 1556 | tCollision_info collision_info; |
||
| 1557 | br_scalar free_mass; |
||
| 1558 | br_scalar attached_mass; |
||
| 1559 | br_vector3 free_cmpos; |
||
| 1560 | br_vector3 attached_cmpos; |
||
| 1561 | br_scalar min_torque_squared; |
||
| 1562 | br_scalar snap_off_cosine; |
||
| 1563 | br_vector3 I_over_M; |
||
| 1 | pmbaty | 1564 | } tNon_car_spec; |
| 1565 | |||
| 20 | pmbaty | 1566 | typedef struct tOpp_spec { |
| 1567 | int index; |
||
| 1568 | int ranking; |
||
| 1569 | int net_player_index; |
||
| 1570 | tCar_spec* car_spec; |
||
| 1 | pmbaty | 1571 | } tOpp_spec; |
| 1572 | |||
| 1573 | typedef struct tCheckpoint { |
||
| 1574 | int time_value[3]; |
||
| 1575 | int quad_count; |
||
| 1576 | br_vector3 vertices[4][4]; |
||
| 1577 | br_vector3 normal[4]; |
||
| 1578 | int map_left[2]; |
||
| 1579 | int map_top[2]; |
||
| 1580 | int map_right[2]; |
||
| 1581 | int map_bottom[2]; |
||
| 1582 | } tCheckpoint; |
||
| 1583 | |||
| 1584 | typedef struct tNet_starts { |
||
| 1585 | br_vector3 pos; |
||
| 1586 | br_scalar yaw; |
||
| 1587 | } tNet_starts; |
||
| 1588 | |||
| 1589 | typedef struct tText_chunk { |
||
| 1590 | int frame_cue; |
||
| 1591 | int frame_end; |
||
| 1592 | int x_coord; |
||
| 1593 | int y_coord; |
||
| 1594 | int line_count; |
||
| 1595 | char* text[8]; |
||
| 1596 | } tText_chunk; |
||
| 1597 | |||
| 1598 | typedef struct tRace_info { |
||
| 1599 | char name[32]; |
||
| 1600 | char track_file_name[14]; |
||
| 1601 | int rank_required; |
||
| 1602 | int best_rank; |
||
| 1603 | int suggested_rank; |
||
| 1604 | int total_laps; |
||
| 1605 | int check_point_count; |
||
| 1606 | int initial_timer[3]; |
||
| 1607 | int bonus_score[8][3]; |
||
| 1608 | int number_of_racers; |
||
| 1609 | int number_of_net_start_points; |
||
| 1610 | int text_chunk_count; |
||
| 1611 | tNet_starts net_starts[24]; |
||
| 1612 | tCheckpoint checkpoints[10]; |
||
| 1613 | tOpp_spec opponent_list[30]; |
||
| 1614 | tU8* scene_image_data; |
||
| 1615 | tU8* map_image_data; |
||
| 1616 | tU8* info_image_data; |
||
| 1617 | tU32 scene_image_data_length; |
||
| 1618 | tU32 map_image_data_length; |
||
| 1619 | tU32 info_image_data_length; |
||
| 1620 | br_vector3 initial_position; |
||
| 1621 | br_scalar initial_yaw; |
||
| 1622 | br_pixelmap* map_image; |
||
| 1623 | br_matrix34 map_transformation; |
||
| 1624 | tText_chunk* text_chunks; |
||
| 1625 | tMaterial_modifiers material_modifiers[11]; |
||
| 1626 | } tRace_info; |
||
| 1627 | |||
| 1628 | typedef struct tOpponent_save_info { |
||
| 1629 | tU32 dead; |
||
| 1630 | } tOpponent_save_info; |
||
| 1631 | |||
| 1632 | typedef struct tOpponent { |
||
| 1633 | char name[24]; |
||
| 1634 | char abbrev_name[24]; |
||
| 1635 | char mug_shot_name[14]; |
||
| 1636 | char car_file_name[14]; |
||
| 1637 | char stolen_car_flic_name[14]; |
||
| 1638 | tU8* mug_shot_image_data; |
||
| 1639 | tU8* stolen_car_image_data; |
||
| 1640 | tU32 mug_shot_image_data_length; |
||
| 1641 | tU32 stolen_car_image_data_length; |
||
| 1642 | int car_number; |
||
| 1643 | int strength_rating; |
||
| 1644 | int picked; |
||
| 1645 | int dead; |
||
| 1646 | int text_chunk_count; |
||
| 1647 | tNet_avail network_availability; |
||
| 1648 | br_pixelmap* grid_icon_image; |
||
| 1649 | tOppo_psyche psyche; |
||
| 1650 | tText_chunk* text_chunks; |
||
| 1651 | } tOpponent; |
||
| 1652 | |||
| 1653 | typedef struct tProgram_state { |
||
| 1654 | tS32 credits; |
||
| 1655 | tS32 credits_earned; |
||
| 1656 | tS32 credits_lost; |
||
| 1657 | tU32 view_change_start; |
||
| 1658 | tU32 pratcam_move_start; |
||
| 1659 | int peds_killed; |
||
| 1660 | int sausage_eater_mode; |
||
| 1661 | int rank; |
||
| 1662 | int loaded; |
||
| 1663 | int last_slot; |
||
| 1664 | int skill_level; |
||
| 1665 | int parts_shop_visited; |
||
| 1666 | int racing; |
||
| 1667 | int cut_scene; |
||
| 1668 | int saving; |
||
| 1669 | int loading; |
||
| 1670 | int dont_save_or_load; |
||
| 1671 | int dont_load; |
||
| 1672 | int mirror_on; |
||
| 1673 | int prat_cam_on; |
||
| 1674 | int cockpit_on; |
||
| 1675 | int cockpit_image_index; |
||
| 1676 | int current_render_left; |
||
| 1677 | int current_render_top; |
||
| 1678 | int current_render_right; |
||
| 1679 | int current_render_bottom; |
||
| 1680 | int frame_rate_headup; |
||
| 1681 | int revs; |
||
| 1682 | int music_volume; |
||
| 1683 | int effects_volume; |
||
| 1684 | int current_race_index; |
||
| 1685 | int redo_race_index; |
||
| 1686 | int credits_per_rank; |
||
| 1687 | int game_completed; |
||
| 1688 | int number_of_cars; |
||
| 1689 | int current_car_index; |
||
| 1690 | tWhich_view which_view; |
||
| 1691 | tWhich_view new_view; |
||
| 1692 | tWhich_view pending_view; |
||
| 1693 | tWhich_view old_view; |
||
| 1694 | tRace_sel_view_type view_type; |
||
| 1695 | tProg_status prog_status; |
||
| 1696 | tFrank_anne frank_or_anniness; |
||
| 1697 | tAuto_parts_reply auto_parts_reply; |
||
| 1698 | tCar_spec current_car; |
||
| 1699 | char player_name[2][14]; |
||
| 1700 | char track_file_name[14]; |
||
| 1701 | char car_name[14]; |
||
| 1702 | int cars_available[60]; |
||
| 1703 | br_vector3 initial_position; |
||
| 1704 | br_scalar initial_yaw; |
||
| 1705 | tTrack_spec track_spec; |
||
| 1706 | tDepth_effect default_depth_effect; |
||
| 1707 | tDepth_effect current_depth_effect; |
||
| 1708 | int special_volume_count; |
||
| 1709 | tSpecial_volume* special_volumes; |
||
| 1710 | br_material* standard_screen; |
||
| 1711 | br_material* standard_screen_dark; |
||
| 1712 | br_material* standard_screen_fog; |
||
| 1713 | int special_screens_count; |
||
| 1714 | tSpecial_screen* special_screens; |
||
| 1715 | tIntelligent_vehicles AI_vehicles; |
||
| 1716 | tNon_car_spec* non_cars; |
||
| 1717 | int num_non_car_spaces; |
||
| 1718 | } tProgram_state; |
||
| 1719 | |||
| 1720 | typedef struct tDR_font { |
||
| 1721 | br_pixelmap* images; |
||
| 1722 | int file_read_once; |
||
| 1723 | int height; |
||
| 1724 | int width; |
||
| 1725 | int spacing; |
||
| 1726 | int offset; |
||
| 1727 | int num_entries; |
||
| 1728 | int width_table[224]; |
||
| 1729 | } tDR_font; |
||
| 1730 | |||
| 1731 | typedef struct tGraf_data { |
||
| 1732 | int width; |
||
| 1733 | int height; |
||
| 1734 | int rolling_letter_y_pitch; |
||
| 1735 | int save_slot_y_offset; |
||
| 1736 | int rolling_letter_x_pitch; |
||
| 1737 | int save_slot_x_offset; |
||
| 1738 | int save_slot_rank_x_offset; |
||
| 1739 | int save_slot_credits_x_offset; |
||
| 1740 | int save_slot_height; |
||
| 1741 | int save_slot_letter_height; |
||
| 1742 | int save_slot_table[41]; |
||
| 1743 | int player_name_y; |
||
| 1744 | int player_name_x[2]; |
||
| 1745 | int enter_name_x[2]; |
||
| 1746 | int enter_name_y; |
||
| 1747 | int frank_panel_left; |
||
| 1748 | int frank_panel_top; |
||
| 1749 | int frank_panel_right; |
||
| 1750 | int frank_panel_bottom; |
||
| 1751 | int anne_panel_left; |
||
| 1752 | int anne_panel_top; |
||
| 1753 | int anne_panel_right; |
||
| 1754 | int anne_panel_bottom; |
||
| 1755 | int cock_margin_x; |
||
| 1756 | int cock_margin_y; |
||
| 1757 | int total_cock_width; |
||
| 1758 | int total_cock_height; |
||
| 1759 | int dial__x[2]; |
||
| 1760 | int dial__y[2]; |
||
| 1761 | int dial__x_centre; |
||
| 1762 | int dial__y_centre; |
||
| 1763 | int start_race_panel_left; |
||
| 1764 | int start_race_panel_top; |
||
| 1765 | int start_race_panel_right; |
||
| 1766 | int start_race_panel_bottom; |
||
| 1767 | int start_race_panel_top_clip; |
||
| 1768 | int start_race_panel_bottom_clip; |
||
| 1769 | int choose_race_rank_right; |
||
| 1770 | int choose_race_name_left; |
||
| 1771 | int choose_race_bullet_left; |
||
| 1772 | int choose_race_left; |
||
| 1773 | int choose_race_right; |
||
| 1774 | int choose_race_y_top; |
||
| 1775 | int choose_race_y_bottom; |
||
| 1776 | int choose_race_y_pitch; |
||
| 1777 | int choose_race_curr_y; |
||
| 1778 | int choose_race_box_left; |
||
| 1779 | int choose_race_box_top; |
||
| 1780 | int choose_race_line_y; |
||
| 1781 | int choose_race_current_text_x; |
||
| 1782 | int choose_race_current_text_y; |
||
| 1783 | int choose_race_current_num_x; |
||
| 1784 | int grid_x_pitch; |
||
| 1785 | int grid_y_pitch; |
||
| 1786 | int grid_x_stagger; |
||
| 1787 | int grid_left_x; |
||
| 1788 | int grid_top_y; |
||
| 1789 | int grid_left_clip; |
||
| 1790 | int grid_top_clip; |
||
| 1791 | int grid_right_clip; |
||
| 1792 | int grid_bottom_clip; |
||
| 1793 | int grid_numbers_left; |
||
| 1794 | int grid_numbers_top; |
||
| 1795 | int grid_numbers_right; |
||
| 1796 | int grid_marker_margin; |
||
| 1797 | int grid_marker_x_len; |
||
| 1798 | int dare_mugshot_left; |
||
| 1799 | int dare_mugshot_top; |
||
| 1800 | int dare_mugshot_width; |
||
| 1801 | int dare_mugshot_height; |
||
| 1802 | int dare_text_left; |
||
| 1803 | int dare_text_width; |
||
| 1804 | int dare_mug_left_margin; |
||
| 1805 | int dare_mug_top_margin; |
||
| 1806 | int dare_y_adjust; |
||
| 1807 | int parts_image_x; |
||
| 1808 | int parts_image_y; |
||
| 1809 | int parts_image_width; |
||
| 1810 | int parts_image_height; |
||
| 1811 | int parts_cost_x; |
||
| 1812 | int parts_cost_y; |
||
| 1813 | int parts_total_x; |
||
| 1814 | int parts_total_y; |
||
| 1815 | int parts_net_x; |
||
| 1816 | int parts_net_y; |
||
| 1817 | int parts_numbers_x; |
||
| 1818 | int parts_top_clip; |
||
| 1819 | int parts_bottom_clip; |
||
| 1820 | int parts_label_x; |
||
| 1821 | int parts_label_y; |
||
| 1822 | int summ1_credits_box_left; |
||
| 1823 | int summ1_credits_left; |
||
| 1824 | int summ1_credits_right; |
||
| 1825 | int summ1_earned_top; |
||
| 1826 | int summ1_earned_bottom; |
||
| 1827 | int summ1_lost_top; |
||
| 1828 | int summ1_lost_bottom; |
||
| 1829 | int summ1_total_top; |
||
| 1830 | int summ1_total_bottom; |
||
| 1831 | int summ1_rank_x_pitch; |
||
| 1832 | int summ1_rank_inc_l; |
||
| 1833 | int summ1_rank_inc_c; |
||
| 1834 | int summ1_rank_total_l; |
||
| 1835 | int summ1_rank_total_c; |
||
| 1836 | int summ1_rank_inc_left; |
||
| 1837 | int summ1_rank_inc_right; |
||
| 1838 | int summ1_rank_total_left; |
||
| 1839 | int summ1_rank_total_right; |
||
| 1840 | int summ1_rank_top; |
||
| 1841 | int summ1_rank_bot; |
||
| 1842 | int summ1_rank_y; |
||
| 1843 | int wreck_name_left; |
||
| 1844 | int wreck_name_right; |
||
| 1845 | int wreck_name_top; |
||
| 1846 | int wreck_name_bottom; |
||
| 1847 | int wreck_name_base_line; |
||
| 1848 | int wreck_render_x; |
||
| 1849 | int wreck_render_y; |
||
| 1850 | int wreck_render_w; |
||
| 1851 | int wreck_render_h; |
||
| 1852 | int power_up_icon_x; |
||
| 1853 | int power_up_icon_countdown_x; |
||
| 1854 | int power_up_icon_y; |
||
| 1855 | int power_up_icon_y_pitch; |
||
| 1856 | int power_up_icon_countdown_y_offset; |
||
| 1857 | int change_car_text_y; |
||
| 1858 | int change_car_line_left; |
||
| 1859 | int change_car_line_y; |
||
| 1860 | int change_car_line_right; |
||
| 1861 | int change_car_panel_left; |
||
| 1862 | int change_car_panel_top; |
||
| 1863 | int change_car_panel_right; |
||
| 1864 | int change_car_panel_bottom; |
||
| 1865 | int change_car_panel_top_clip; |
||
| 1866 | int change_car_panel_bottom_clip; |
||
| 1867 | int map_timer_text_x; |
||
| 1868 | int map_timer_text_y; |
||
| 1869 | int map_timer_border_x; |
||
| 1870 | int map_timer_border_y; |
||
| 1871 | int action_replay_R_x; |
||
| 1872 | int action_replay_R_y; |
||
| 1873 | int action_replay_controls_x; |
||
| 1874 | int action_replay_controls_y; |
||
| 1875 | int action_replay_hilite_y; |
||
| 1876 | int action_replay_rew_start_x; |
||
| 1877 | int action_replay_rew_x; |
||
| 1878 | int action_replay_rev_play_x; |
||
| 1879 | int action_replay_pause_x; |
||
| 1880 | int action_replay_play_x; |
||
| 1881 | int action_replay_ffwd_x; |
||
| 1882 | int action_replay_fwd_end_x; |
||
| 1883 | int action_replay_camera_x; |
||
| 1884 | int action_replay_cam_text_x; |
||
| 1885 | int action_replay_cam_text_y; |
||
| 1886 | int joinable_games_x_1; |
||
| 1887 | int joinable_games_x_2; |
||
| 1888 | int joinable_games_x_3; |
||
| 1889 | int joinable_games_x_4; |
||
| 1890 | int joinable_games_x_r; |
||
| 1891 | int joinable_games_y; |
||
| 1892 | int joinable_games_y_pitch; |
||
| 1893 | int joinable_games_sel_left; |
||
| 1894 | int joinable_games_sel_right; |
||
| 1895 | int joinable_games_sel_top_marg; |
||
| 1896 | int joinable_games_sel_bot_marg; |
||
| 1897 | int net_player_name_x; |
||
| 1898 | int net_player_name_y; |
||
| 1899 | int error_box_left; |
||
| 1900 | int error_box_top; |
||
| 1901 | int error_box_right; |
||
| 1902 | int error_box_bottom; |
||
| 1903 | int start_synch_x_0; |
||
| 1904 | int start_synch_x_1; |
||
| 1905 | int start_synch_x_2; |
||
| 1906 | int start_synch_x_r; |
||
| 1907 | int start_synch_top; |
||
| 1908 | int start_synch_y_pitch; |
||
| 1909 | int start_synch_start_x; |
||
| 1910 | int start_synch_start_y; |
||
| 1911 | int key_assign_col_1; |
||
| 1912 | int key_assign_col_1_a; |
||
| 1913 | int key_assign_col_2; |
||
| 1914 | int key_assign_col_2_a; |
||
| 1915 | int key_assign_y_pitch; |
||
| 1916 | int key_assign_y; |
||
| 1917 | int key_assign_key_map_y; |
||
| 1918 | int key_assign_flic_x; |
||
| 1919 | int key_assign_flic_y; |
||
| 1920 | int map_render_x_marg; |
||
| 1921 | int map_render_y_marg; |
||
| 1922 | int net_head_box_x; |
||
| 1923 | int net_head_box_pitch; |
||
| 1924 | int net_head_box_width; |
||
| 1925 | int net_head_box_top; |
||
| 1926 | int net_head_box_bot; |
||
| 1927 | int net_head_name_x_marg; |
||
| 1928 | int net_head_name_y; |
||
| 1929 | int net_head_num_x; |
||
| 1930 | int net_head_num_y; |
||
| 1931 | int net_head_num_height; |
||
| 1932 | int net_head_icon_x; |
||
| 1933 | int net_head_icon_y; |
||
| 1934 | int net_head_icon_height; |
||
| 1935 | int net_head_score_x; |
||
| 1936 | int net_head_score_y; |
||
| 1937 | int armour_headup_y[2]; |
||
| 1938 | int power_headup_y[2]; |
||
| 1939 | int offense_headup_y[2]; |
||
| 1940 | int ps_dim_left; |
||
| 1941 | int ps_dim_right; |
||
| 1942 | int ps_dim_height; |
||
| 1943 | int ps_name_left; |
||
| 1944 | int ps_name_top_border; |
||
| 1945 | int ps_bars_per_level; |
||
| 1946 | int ps_x_pitch; |
||
| 1947 | int ps_bar_top_border; |
||
| 1948 | int ps_bar_left; |
||
| 1949 | int ps_bar_height; |
||
| 1950 | int net_choose_race_x; |
||
| 1951 | int net_choose_race_y; |
||
| 1952 | int net_descr_race_l; |
||
| 1953 | int net_descr_race_r; |
||
| 1954 | int net_descr_race_top; |
||
| 1955 | int net_descr_race_bot; |
||
| 1956 | int net_sum_x_1; |
||
| 1957 | int net_sum_x_2; |
||
| 1958 | int net_sum_x_3; |
||
| 1959 | int net_sum_x_4; |
||
| 1960 | int net_sum_x_5; |
||
| 1961 | int net_sum_headings_y; |
||
| 1962 | int net_sum_y_pitch; |
||
| 1963 | int graph_opt_disable_x; |
||
| 1964 | int graph_opt_disable_y; |
||
| 1965 | int sound_opt_disable_x; |
||
| 1966 | int sound_opt_disable_y; |
||
| 1967 | int net_message_enter_x; |
||
| 1968 | int net_message_enter_y; |
||
| 1969 | int eval_x; |
||
| 1970 | int eval_y; |
||
| 1971 | } tGraf_data; |
||
| 1972 | |||
| 1973 | typedef struct tRolling_letter { |
||
| 1974 | int letters[9]; |
||
| 1975 | int x_coord; |
||
| 1976 | int y_coord; |
||
| 1977 | int number_of_letters; |
||
| 1978 | tRolling_type rolling_type; |
||
| 1979 | float current_offset; |
||
| 1980 | } tRolling_letter; |
||
| 1981 | |||
| 1982 | typedef struct tFlic_descriptor { |
||
| 1983 | char* data; |
||
| 1984 | char* data_start; |
||
| 1985 | char file_name[32]; |
||
| 1986 | tU8* first_pixel; |
||
| 1987 | tU32 bytes_remaining; |
||
| 1988 | tU32 frame_period; |
||
| 1989 | tU32 last_frame; |
||
| 1990 | br_pixelmap* the_pixelmap; |
||
| 1991 | int x_offset; |
||
| 1992 | int y_offset; |
||
| 1993 | int width; |
||
| 1994 | int height; |
||
| 1995 | int frames_left; |
||
| 1996 | int current_frame; |
||
| 1997 | int the_index; |
||
| 1998 | int new_format; |
||
| 1999 | int must_finish; |
||
| 2000 | int bytes_still_to_be_read; |
||
| 2001 | int bytes_in_buffer; |
||
| 2002 | FILE* f; |
||
| 2003 | tFlic_descriptor_ptr next; |
||
| 2004 | } tFlic_descriptor; |
||
| 2005 | |||
| 2006 | typedef struct tBrender_storage { |
||
| 2007 | int models_count; |
||
| 2008 | int materials_count; |
||
| 2009 | int shade_tables_count; |
||
| 2010 | int pixelmaps_count; |
||
| 2011 | int max_pixelmaps; |
||
| 2012 | int max_shade_tables; |
||
| 2013 | int max_materials; |
||
| 2014 | int max_models; |
||
| 2015 | br_model** models; |
||
| 2016 | br_pixelmap** pixelmaps; |
||
| 2017 | br_pixelmap** shade_tables; |
||
| 2018 | br_material** materials; |
||
| 2019 | br_pixelmap** saved_colour_maps; |
||
| 2020 | } tBrender_storage; |
||
| 2021 | |||
| 2022 | typedef struct tSave_game { |
||
| 2023 | char slot_name[16]; |
||
| 2024 | char car_name[16]; |
||
| 2025 | char player_name[2][14]; |
||
| 2026 | tRace_save_info race_info[100]; |
||
| 2027 | tOpponent_save_info opponent_info[48]; |
||
| 2028 | tU32 credits; |
||
| 2029 | tU32 rank; |
||
| 2030 | tU32 skill_level; |
||
| 2031 | tU32 game_completed; |
||
| 2032 | tU32 number_of_cars; |
||
| 2033 | tU32 cars_available[60]; |
||
| 2034 | tU32 current_car_index; |
||
| 2035 | tU32 current_race_index; |
||
| 2036 | tU32 redo_race_index; |
||
| 2037 | tU32 frank_or_annitude; |
||
| 2038 | tU32 power_up_levels[3]; |
||
| 2039 | tU32 version; |
||
| 2040 | tU32 checksum; |
||
| 2041 | } tSave_game; |
||
| 2042 | |||
| 2043 | typedef struct tPed_subs { |
||
| 2044 | int orig; |
||
| 2045 | int subs; |
||
| 2046 | } tPed_subs; |
||
| 2047 | |||
| 2048 | typedef struct tRadio_bastards { |
||
| 2049 | int count; |
||
| 2050 | int top; |
||
| 2051 | int current_value; |
||
| 2052 | int left[5]; |
||
| 2053 | } tRadio_bastards; |
||
| 2054 | |||
| 2055 | typedef struct exception_struct { |
||
| 2056 | tException_list next; |
||
| 2057 | char* name; |
||
| 2058 | int flags; |
||
| 2059 | } tException_node; |
||
| 2060 | |||
| 2061 | typedef struct tPixelmap_user_data { |
||
| 2062 | tU16 orig_width; |
||
| 2063 | tU16 orig_height; |
||
| 2064 | } tPixelmap_user_data; |
||
| 2065 | |||
| 2066 | typedef struct tMatrix_and_actor { |
||
| 2067 | br_matrix34* m; |
||
| 2068 | br_actor* a; |
||
| 2069 | } tMatrix_and_actor; |
||
| 2070 | |||
| 2071 | typedef tU16 tChunk_subject_index; |
||
| 2072 | |||
| 2073 | typedef enum tShadow_level { |
||
| 2074 | eShadow_none = 0, |
||
| 2075 | eShadow_us_only = 1, |
||
| 2076 | eShadow_us_and_opponents = 2, |
||
| 2077 | eShadow_everyone = 3 |
||
| 2078 | } tShadow_level; |
||
| 2079 | |||
| 2080 | typedef enum tPipe_chunk_type { |
||
| 2081 | ePipe_chunk_actor_rstyle = 0, |
||
| 2082 | ePipe_chunk_actor_translate = 1, |
||
| 2083 | ePipe_chunk_actor_transform = 2, |
||
| 2084 | ePipe_chunk_actor_create = 3, |
||
| 2085 | ePipe_chunk_actor_destroy = 4, |
||
| 2086 | ePipe_chunk_actor_relink = 5, |
||
| 2087 | ePipe_chunk_actor_material = 6, |
||
| 2088 | ePipe_chunk_face_material = 7, |
||
| 2089 | ePipe_chunk_material_trans = 8, |
||
| 2090 | ePipe_chunk_material_pixelmap = 9, |
||
| 2091 | ePipe_chunk_model_geometry = 10, |
||
| 2092 | ePipe_chunk_pedestrian = 11, |
||
| 2093 | ePipe_chunk_frame_boundary = 12, |
||
| 2094 | ePipe_chunk_car = 13, |
||
| 2095 | ePipe_chunk_sound = 14, |
||
| 2096 | ePipe_chunk_damage = 15, |
||
| 2097 | ePipe_chunk_special = 16, |
||
| 2098 | ePipe_chunk_ped_gib = 17, |
||
| 2099 | ePipe_chunk_incident = 18, |
||
| 2100 | ePipe_chunk_spark = 19, |
||
| 2101 | ePipe_chunk_shrapnel = 20, |
||
| 2102 | ePipe_chunk_screen_shake = 21, |
||
| 2103 | ePipe_chunk_groove_stop = 22, |
||
| 2104 | ePipe_chunk_non_car = 23, |
||
| 2105 | ePipe_chunk_smoke = 24, |
||
| 2106 | ePipe_chunk_oil_spill = 25, |
||
| 2107 | ePipe_chunk_smoke_column = 26, |
||
| 2108 | ePipe_chunk_flame = 27, |
||
| 2109 | ePipe_chunk_smudge = 28, |
||
| 2110 | ePipe_chunk_splash = 29, |
||
| 2111 | ePipe_chunk_prox_ray = 30, |
||
| 2112 | ePipe_chunk_skid_adjustment = 31, |
||
| 2113 | ePipe_chunk_enum_count = 32 |
||
| 2114 | } tPipe_chunk_type; |
||
| 2115 | |||
| 2116 | typedef enum tSpecial_type { |
||
| 2117 | ePipe_special_fade = 0, |
||
| 2118 | ePipe_special_giant_ped_on = 1, |
||
| 2119 | ePipe_special_giant_ped_off = 2, |
||
| 2120 | ePipe_special_min_ped_on = 3, |
||
| 2121 | ePipe_special_min_ped_off = 4 |
||
| 2122 | } tSpecial_type; |
||
| 2123 | |||
| 2124 | typedef enum tIncident_type { |
||
| 2125 | eIncident_ped = 0, |
||
| 2126 | eIncident_car = 1, |
||
| 2127 | eIncident_wall = 2, |
||
| 2128 | eNo_incident = 3 |
||
| 2129 | } tIncident_type; |
||
| 2130 | |||
| 2131 | typedef enum tAction_replay_camera_type { |
||
| 2132 | eAction_replay_standard = 0, |
||
| 2133 | eAction_replay_tv = 1, |
||
| 2134 | eAction_replay_action = 2 |
||
| 2135 | } tAction_replay_camera_type; |
||
| 2136 | |||
| 2137 | typedef enum tKey_down_result { |
||
| 2138 | tKey_down_no = 0, |
||
| 2139 | tKey_down_yes = 1, |
||
| 2140 | tKey_down_still = 2, |
||
| 2141 | tKey_down_repeat = 3 |
||
| 2142 | } tKey_down_result; |
||
| 2143 | typedef int dr_pick2d_cbfn(br_actor*, br_model*, br_material*, br_vector3*, br_vector3*, br_scalar, br_scalar, void*); |
||
| 2144 | typedef struct tReduced_pos { |
||
| 2145 | tS16 v[3]; |
||
| 2146 | } tReduced_pos; |
||
| 2147 | |||
| 2148 | typedef union tIncident_info { // size: 0x10 |
||
| 2149 | struct { // size: 0x10 |
||
| 2150 | tCar_spec* car; // @0x0 |
||
| 2151 | br_vector3 impact_point; // @0x4 |
||
| 2152 | } car_info; // @0x0 |
||
| 2153 | struct { // size: 0x8 |
||
| 2154 | br_actor* ped_actor; // @0x0 |
||
| 2155 | br_actor* murderer_actor; // @0x4 |
||
| 2156 | } ped_info; // @0x0 |
||
| 2157 | struct { // size: 0xc |
||
| 2158 | br_vector3 pos; // @0x0 |
||
| 2159 | } wall_info; // @0x0 |
||
| 2160 | } tIncident_info; |
||
| 2161 | |||
| 2162 | typedef struct tChanged_vertex { |
||
| 2163 | tU16 vertex_index; |
||
| 2164 | br_vector3 delta_coordinates; |
||
| 2165 | } tChanged_vertex; |
||
| 2166 | |||
| 2167 | typedef struct tPipe_actor_rstyle_data { |
||
| 2168 | tU8 new_rstyle; |
||
| 2169 | } tPipe_actor_rstyle_data; |
||
| 2170 | |||
| 2171 | typedef struct tPipe_actor_translate_data { |
||
| 2172 | br_vector3 new_translation; |
||
| 2173 | } tPipe_actor_translate_data; |
||
| 2174 | |||
| 2175 | typedef struct tPipe_actor_transform_data { |
||
| 2176 | br_matrix34 new_transformation; |
||
| 2177 | } tPipe_actor_transform_data; |
||
| 2178 | |||
| 2179 | typedef struct tPipe_actor_create_data { |
||
| 2180 | tU8 dummy; |
||
| 2181 | } tPipe_actor_create_data; |
||
| 2182 | |||
| 2183 | typedef struct tPipe_actor_destroy_data { |
||
| 2184 | tU8 dummy; |
||
| 2185 | } tPipe_actor_destroy_data; |
||
| 2186 | |||
| 2187 | typedef struct tPipe_actor_relink_data { |
||
| 2188 | tChunk_subject_index new_parent; |
||
| 2189 | } tPipe_actor_relink_data; |
||
| 2190 | |||
| 2191 | typedef struct tPipe_actor_material_data { |
||
| 2192 | tChunk_subject_index new_material; |
||
| 2193 | } tPipe_actor_material_data; |
||
| 2194 | |||
| 2195 | typedef struct tPipe_face_material_data { |
||
| 2196 | tU16 face_index; |
||
| 2197 | tChunk_subject_index new_material; |
||
| 2198 | } tPipe_face_material_data; |
||
| 2199 | |||
| 2200 | typedef struct tPipe_material_trans_data { |
||
| 2201 | br_matrix23 new_transformation; |
||
| 2202 | } tPipe_material_trans_data; |
||
| 2203 | |||
| 2204 | typedef struct tPipe_material_pixelmap_data { |
||
| 2205 | tChunk_subject_index new_pixelmap; |
||
| 2206 | } tPipe_material_pixelmap_data; |
||
| 2207 | |||
| 2208 | typedef struct tPipe_model_geometry_data { |
||
| 2209 | tU16 vertex_count; |
||
| 2210 | int model_index; |
||
| 2211 | tChanged_vertex vertex_changes[1]; |
||
| 2212 | } tPipe_model_geometry_data; |
||
| 2213 | |||
| 2214 | typedef struct tSmudged_vertex { |
||
| 2215 | tU16 vertex_index; |
||
| 2216 | tU16 light_index; |
||
| 2217 | } tSmudged_vertex; |
||
| 2218 | |||
| 2219 | typedef struct tPipe_smudge_data { |
||
| 2220 | tU16 vertex_count; |
||
| 2221 | int model_index; |
||
| 2222 | tSmudged_vertex vertex_changes[1]; |
||
| 2223 | } tPipe_smudge_data; |
||
| 2224 | |||
| 2225 | typedef struct tPipe_pedestrian_data { |
||
| 2226 | tU8 action_and_frame_index; |
||
| 2227 | tS8 hit_points; |
||
| 2228 | tU16 parent; |
||
| 2229 | br_vector3 new_translation; |
||
| 2230 | float spin_period; |
||
| 2231 | br_actor* parent_actor; |
||
| 2232 | br_vector3 offset; |
||
| 2233 | br_scalar jump_magnitude; |
||
| 2234 | } tPipe_pedestrian_data; |
||
| 2235 | |||
| 2236 | typedef struct tPipe_frame_boundary_data { |
||
| 2237 | tU32 time; |
||
| 2238 | } tPipe_frame_boundary_data; |
||
| 2239 | |||
| 2240 | typedef struct tPipe_car_data { |
||
| 2241 | br_matrix34 transformation; |
||
| 2242 | br_vector3 velocity; |
||
| 2243 | tS16 speedo_speed; |
||
| 2244 | tS16 steering_angle; |
||
| 2245 | tU16 revs_and_gear; |
||
| 2246 | tS8 lf_sus_position; |
||
| 2247 | tS8 rf_sus_position; |
||
| 2248 | tS8 lr_sus_position; |
||
| 2249 | tS8 rr_sus_position; |
||
| 2250 | } tPipe_car_data; |
||
| 2251 | |||
| 2252 | typedef struct tPipe_sound_data { |
||
| 2253 | tS3_pitch pitch; |
||
| 2254 | br_vector3 position; |
||
| 2255 | tU16 outlet_index; |
||
| 2256 | tU16 volume; |
||
| 2257 | } tPipe_sound_data; |
||
| 2258 | |||
| 2259 | typedef struct tPipe_damage_data { |
||
| 2260 | tS8 damage_delta[12]; |
||
| 2261 | } tPipe_damage_data; |
||
| 2262 | |||
| 2263 | typedef struct tPipe_special_data { |
||
| 2264 | tU8 dummy; |
||
| 2265 | tS8 padding; |
||
| 2266 | } tPipe_special_data; |
||
| 2267 | |||
| 2268 | typedef struct tPipe_ped_gib_data { |
||
| 2269 | tU16 ped_parent_index; |
||
| 2270 | tU8 size; |
||
| 2271 | tU8 gib_index; |
||
| 2272 | br_matrix34 transform; |
||
| 2273 | } tPipe_ped_gib_data; |
||
| 2274 | |||
| 2275 | typedef struct tPipe_incident_data { // size: 0x14 |
||
| 2276 | float severity; // @0x0 |
||
| 2277 | union { // size: 0x10 |
||
| 2278 | struct { // size: 0x10 |
||
| 2279 | tU16 car_ID; // @0x0 |
||
| 2280 | br_vector3 impact_point; // @0x4 |
||
| 2281 | } car_info; // @0x0 |
||
| 2282 | struct { // size: 0x8 |
||
| 2283 | tU16 ped_index; // @0x0 |
||
| 2284 | br_actor* actor; // @0x4 |
||
| 2285 | } ped_info; // @0x0 |
||
| 2286 | struct { // size: 0xc |
||
| 2287 | br_vector3 pos; // @0x0 |
||
| 2288 | } wall_info; // @0x0 |
||
| 2289 | } info; // @0x4 |
||
| 2290 | } tPipe_incident_data; |
||
| 2291 | |||
| 2292 | typedef struct tPipe_spark_data { |
||
| 2293 | br_vector3 pos; |
||
| 2294 | br_vector3 v; |
||
| 2295 | } tPipe_spark_data; |
||
| 2296 | |||
| 2297 | typedef struct tPipe_shrapnel_data { |
||
| 2298 | br_vector3 pos; |
||
| 2299 | tU16 age; |
||
| 2300 | br_material* material; |
||
| 2301 | } tPipe_shrapnel_data; |
||
| 2302 | |||
| 2303 | typedef struct tPipe_screen_shake_data { |
||
| 2304 | tS8 wobble_x; |
||
| 2305 | tS8 wobble_y; |
||
| 2306 | } tPipe_screen_shake_data; |
||
| 2307 | |||
| 2308 | typedef struct tPipe_non_car_data { |
||
| 2309 | br_actor* actor; |
||
| 2310 | br_matrix34 mat; |
||
| 2311 | } tPipe_non_car_data; |
||
| 2312 | |||
| 2313 | typedef struct tPipe_smoke_data { |
||
| 2314 | tReduced_pos pos; |
||
| 2315 | tU16 radius; |
||
| 2316 | tU8 strength; |
||
| 2317 | tU8 type; |
||
| 2318 | } tPipe_smoke_data; |
||
| 2319 | |||
| 2320 | typedef struct tPipe_smoke_column_data { |
||
| 2321 | int car_ID; |
||
| 2322 | tU16 vertex; |
||
| 2323 | } tPipe_smoke_column_data; |
||
| 2324 | |||
| 2325 | typedef struct tPipe_flame_data { |
||
| 2326 | tS16 frame_count; |
||
| 2327 | br_scalar scale_x; |
||
| 2328 | br_scalar scale_y; |
||
| 2329 | br_scalar offset_x; |
||
| 2330 | br_scalar offset_z; |
||
| 2331 | } tPipe_flame_data; |
||
| 2332 | |||
| 2333 | typedef struct tPipe_splash_data { |
||
| 2334 | br_scalar d; |
||
| 2335 | br_vector3 normal; |
||
| 2336 | } tPipe_splash_data; |
||
| 2337 | |||
| 2338 | typedef struct tPipe_prox_ray_data { |
||
| 2339 | tU16 ped_index; |
||
| 2340 | tU16 car_ID; |
||
| 2341 | tU32 time; |
||
| 2342 | } tPipe_prox_ray_data; |
||
| 2343 | |||
| 2344 | typedef struct tPipe_oil_spill_data { |
||
| 2345 | br_matrix34 mat; |
||
| 2346 | br_scalar full_size; |
||
| 2347 | br_scalar grow_rate; |
||
| 2348 | tU32 spill_time; |
||
| 2349 | tU32 previous_stop_time; |
||
| 2350 | tCar_spec* car; |
||
| 2351 | br_vector3 original_pos; |
||
| 2352 | br_pixelmap* pixelmap; |
||
| 2353 | } tPipe_oil_spill_data; |
||
| 2354 | |||
| 2355 | typedef struct tPipe_groove_stop_data { |
||
| 2356 | int path_interrupt; |
||
| 2357 | int object_interrupt; |
||
| 2358 | float path_resumption; |
||
| 2359 | float object_resumption; |
||
| 2360 | br_matrix34 matrix; |
||
| 2361 | } tPipe_groove_stop_data; |
||
| 2362 | |||
| 2363 | typedef struct tPipe_skid_adjustment { |
||
| 2364 | br_matrix34 matrix; |
||
| 2365 | int material_index; |
||
| 2366 | } tPipe_skid_adjustment; |
||
| 2367 | |||
| 2368 | typedef struct tPipe_chunk { // size: 0x58 |
||
| 2369 | tChunk_subject_index subject_index; // @0x0 |
||
| 2370 | #if defined(DETHRACE_REPLAY_DEBUG) |
||
| 2371 | int chunk_magic1; |
||
| 2372 | #endif |
||
| 2373 | union { // size: 0x54 |
||
| 2374 | tPipe_actor_rstyle_data actor_rstyle_data; // @0x0 |
||
| 2375 | tPipe_actor_translate_data actor_translate_data; // @0x0 |
||
| 2376 | tPipe_actor_transform_data actor_transform_data; // @0x0 |
||
| 2377 | tPipe_actor_create_data actor_create_data; // @0x0 |
||
| 2378 | tPipe_actor_destroy_data actor_destroy_data; // @0x0 |
||
| 2379 | tPipe_actor_relink_data actor_relink_data; // @0x0 |
||
| 2380 | tPipe_actor_material_data actor_material_data; // @0x0 |
||
| 2381 | tPipe_face_material_data face_material_data; // @0x0 |
||
| 2382 | tPipe_material_trans_data material_trans_data; // @0x0 |
||
| 2383 | tPipe_material_pixelmap_data material_pixelmap_data; // @0x0 |
||
| 2384 | tPipe_model_geometry_data model_geometry_data; // @0x0 |
||
| 2385 | tPipe_pedestrian_data pedestrian_data; // @0x0 |
||
| 2386 | tPipe_frame_boundary_data frame_boundary_data; // @0x0 |
||
| 2387 | tPipe_car_data car_data; // @0x0 |
||
| 2388 | tPipe_sound_data sound_data; // @0x0 |
||
| 2389 | tPipe_damage_data damage_data; // @0x0 |
||
| 2390 | tPipe_special_data special_data; // @0x0 |
||
| 2391 | tPipe_ped_gib_data ped_gib_data; // @0x0 |
||
| 2392 | tPipe_incident_data incident_data; // @0x0 |
||
| 2393 | tPipe_spark_data spark_data; // @0x0 |
||
| 2394 | tPipe_shrapnel_data shrapnel_data; // @0x0 |
||
| 2395 | tPipe_screen_shake_data screen_shake_data; // @0x0 |
||
| 2396 | tPipe_groove_stop_data groove_stop_data; // @0x0 |
||
| 2397 | tPipe_non_car_data non_car_data; // @0x0 |
||
| 2398 | tPipe_smoke_data smoke_data; // @0x0 |
||
| 2399 | tPipe_oil_spill_data oil_data; // @0x0 |
||
| 2400 | tPipe_smoke_column_data smoke_column_data; // @0x0 |
||
| 2401 | tPipe_flame_data flame_data; // @0x0 |
||
| 2402 | tPipe_smudge_data smudge_data; // @0x0 |
||
| 2403 | tPipe_splash_data splash_data; // @0x0 |
||
| 2404 | tPipe_prox_ray_data prox_ray_data; // @0x0 |
||
| 2405 | tPipe_skid_adjustment skid_adjustment; // @0x0 |
||
| 2406 | } chunk_data; // @0x4 |
||
| 2407 | } tPipe_chunk; |
||
| 2408 | |||
| 2409 | typedef struct tPipe_session { |
||
| 2410 | tPipe_chunk_type chunk_type; |
||
| 2411 | tU8 number_of_chunks; |
||
| 2412 | #if defined(DETHRACE_REPLAY_DEBUG) |
||
| 2413 | int pipe_magic1; |
||
| 2414 | #endif |
||
| 2415 | tPipe_chunk chunks; |
||
| 2416 | } tPipe_session; |
||
| 2417 | |||
| 2418 | typedef struct tCollison_data { |
||
| 2419 | int ref; |
||
| 2420 | tCollision_info* car; |
||
| 2421 | } tCollison_data; |
||
| 2422 | |||
| 2423 | typedef struct tSave_camera { |
||
| 2424 | int saved; |
||
| 2425 | br_scalar zoom; |
||
| 2426 | br_angle yaw; |
||
| 2427 | } tSave_camera; |
||
| 2428 | |||
| 2429 | #ifdef DETHRACE_FIX_BUGS |
||
| 2430 | typedef void tEdit_func(void); |
||
| 2431 | #else |
||
| 2432 | typedef void* tEdit_func(void); |
||
| 2433 | #endif |
||
| 2434 | |||
| 2435 | typedef enum tEdit_mode { |
||
| 2436 | eEdit_mode_cheat = 0, |
||
| 2437 | eEdit_mode_acc = 1, |
||
| 2438 | eEdit_mode_spec_vol = 2, |
||
| 2439 | eEdit_mode_ped = 3, |
||
| 2440 | eEdit_mode_opp = 4, |
||
| 2441 | eEdit_mode_pratcam = 5, |
||
| 2442 | eEdit_mode_depth = 6, |
||
| 2443 | eEdit_mode_damage = 7, |
||
| 2444 | eEdit_mode_bonnet = 8, |
||
| 2445 | eEdit_mode_options = 9, |
||
| 2446 | eEdit_mode_count = 10 |
||
| 2447 | } tEdit_mode; |
||
| 2448 | typedef struct tToggle_element { |
||
| 2449 | int key1; |
||
| 2450 | int key2; |
||
| 2451 | int in_game_only; |
||
| 2452 | int exact_modifiers; |
||
| 2453 | int on_last_time; |
||
| 2454 | void (*action_proc)(void); |
||
| 2455 | } tToggle_element; |
||
| 2456 | |||
| 2457 | typedef struct tCheat { |
||
| 2458 | tU32 code; |
||
| 2459 | tU32 code2; |
||
| 2460 | void (*action_proc)(int); |
||
| 2461 | int num; |
||
| 2462 | } tCheat; |
||
| 2463 | |||
| 2464 | typedef enum tSpec_vol_depth_effect { |
||
| 2465 | eSpec_dep_acid = 0, |
||
| 2466 | eSpec_dep_water = 1, |
||
| 2467 | eSpec_dep_slight_fog = 2, |
||
| 2468 | eSpec_dep_med_fog = 3, |
||
| 2469 | eSpec_dep_thick_fog = 4 |
||
| 2470 | } tSpec_vol_depth_effect; |
||
| 2471 | |||
| 2472 | typedef enum tSpec_vol_cam_effect { |
||
| 2473 | eSpec_cam_wobble = 0 |
||
| 2474 | } tSpec_vol_cam_effect; |
||
| 2475 | |||
| 2476 | typedef enum tHeadup_type { |
||
| 2477 | eHeadup_unused = 0, |
||
| 2478 | eHeadup_text = 1, |
||
| 2479 | eHeadup_coloured_text = 2, |
||
| 2480 | eHeadup_image = 3, |
||
| 2481 | eHeadup_fancy = 4, |
||
| 2482 | eHeadup_box_text = 5 |
||
| 2483 | } tHeadup_type; |
||
| 2484 | |||
| 2485 | typedef enum tFancy_stage { |
||
| 2486 | eFancy_stage_incoming = 0, |
||
| 2487 | eFancy_stage_halting = 1, |
||
| 2488 | eFancy_stage_waiting = 2, |
||
| 2489 | eFancy_stage_readying = 3, |
||
| 2490 | eFancy_stage_leaving = 4 |
||
| 2491 | } tFancy_stage; |
||
| 2492 | |||
| 2493 | typedef struct tHeadup { // size: 0x14c |
||
| 2494 | tHeadup_type type; // @0x0 |
||
| 2495 | int x; // @0x4 |
||
| 2496 | int y; // @0x8 |
||
| 2497 | int original_x; // @0xc |
||
| 2498 | int right_edge; // @0x10 |
||
| 2499 | int flash_period; // @0x14 |
||
| 2500 | int slot_index; // @0x18 |
||
| 2501 | int dimmed_background; // @0x1c |
||
| 2502 | int dim_left; // @0x20 |
||
| 2503 | int dim_top; // @0x24 |
||
| 2504 | int dim_right; // @0x28 |
||
| 2505 | int dim_bottom; // @0x2c |
||
| 2506 | int clever; // @0x30 |
||
| 2507 | int cockpit_anchored; // @0x34 |
||
| 2508 | int flash_state; // @0x38 |
||
| 2509 | tJustification justification; // @0x3c |
||
| 2510 | tU32 end_time; // @0x40 |
||
| 2511 | tU32 last_flash; // @0x44 |
||
| 2512 | union { // size: 0x104 |
||
| 2513 | struct { // size: 0x104 |
||
| 2514 | char text[250]; // @0x0 |
||
| 2515 | int colour; // @0xfc |
||
| 2516 | br_font* font; // @0x100 |
||
| 2517 | } text_info; // @0x0 |
||
| 2518 | struct { // size: 0x100 |
||
| 2519 | char text[250]; // @0x0 |
||
| 2520 | tDR_font* coloured_font; // @0xfc |
||
| 2521 | } coloured_text_info; // @0x0 |
||
| 2522 | struct { // size: 0x4 |
||
| 2523 | br_pixelmap* image; // @0x0 |
||
| 2524 | } image_info; // @0x0 |
||
| 2525 | struct { // size: 0x18 |
||
| 2526 | br_pixelmap* image; // @0x0 |
||
| 2527 | int offset; // @0x4 |
||
| 2528 | int shear_amount; // @0x8 |
||
| 2529 | int end_offset; // @0xc |
||
| 2530 | tFancy_stage fancy_stage; // @0x10 |
||
| 2531 | tU32 start_time; // @0x14 |
||
| 2532 | } fancy_info; // @0x0 |
||
| 2533 | } data; // @0x48 |
||
| 2534 | } tHeadup; |
||
| 2535 | |||
| 2536 | typedef struct tQueued_headup { |
||
| 2537 | int flash_rate; |
||
| 2538 | int lifetime; |
||
| 2539 | int font_index; |
||
| 2540 | char text[256]; |
||
| 2541 | } tQueued_headup; |
||
| 2542 | |||
| 2543 | typedef struct tFlicette { |
||
| 2544 | int flic_index; |
||
| 2545 | int x[2]; |
||
| 2546 | int y[2]; |
||
| 2547 | } tFlicette; |
||
| 2548 | |||
| 2549 | typedef struct tMouse_area { |
||
| 2550 | int left[2]; |
||
| 2551 | int top[2]; |
||
| 2552 | int right[2]; |
||
| 2553 | int bottom[2]; |
||
| 2554 | int new_choice; |
||
| 2555 | int new_mode; |
||
| 2556 | int available_when_typing; |
||
| 2557 | int (*mouse_click)(int*, int*, int, int); |
||
| 2558 | } tMouse_area; |
||
| 2559 | |||
| 2560 | typedef struct tRectile { |
||
| 2561 | int left[2]; |
||
| 2562 | int top[2]; |
||
| 2563 | int right[2]; |
||
| 2564 | int bottom[2]; |
||
| 2565 | } tRectile; |
||
| 2566 | |||
| 2567 | typedef struct tInterface_spec { |
||
| 2568 | int initial_imode; |
||
| 2569 | int first_opening_flic; |
||
| 2570 | int second_opening_flic; |
||
| 2571 | int end_flic_go_ahead; |
||
| 2572 | int end_flic_escaped; |
||
| 2573 | int end_flic_otherwise; |
||
| 2574 | int flic_bunch_to_load; |
||
| 2575 | int move_left_new_mode[2]; |
||
| 2576 | int move_left_delta[2]; |
||
| 2577 | int move_left_min[2]; |
||
| 2578 | int move_left_max[2]; |
||
| 2579 | int (*move_left_proc[2])(int*, int*); |
||
| 2580 | int move_right_new_mode[2]; |
||
| 2581 | int move_right_delta[2]; |
||
| 2582 | int move_right_min[2]; |
||
| 2583 | int move_right_max[2]; |
||
| 2584 | int (*move_right_proc[2])(int*, int*); |
||
| 2585 | int move_up_new_mode[2]; |
||
| 2586 | int move_up_delta[2]; |
||
| 2587 | int move_up_min[2]; |
||
| 2588 | int move_up_max[2]; |
||
| 2589 | int (*move_up_proc[2])(int*, int*); |
||
| 2590 | int move_down_new_mode[2]; |
||
| 2591 | int move_down_delta[2]; |
||
| 2592 | int move_down_min[2]; |
||
| 2593 | int move_down_max[2]; |
||
| 2594 | int (*move_down_proc[2])(int*, int*); |
||
| 2595 | int go_ahead_allowed[2]; |
||
| 2596 | int (*go_ahead_proc[2])(int*, int*); |
||
| 2597 | int escape_allowed[2]; |
||
| 2598 | int (*escape_proc[2])(int*, int*); |
||
| 2599 | int (*exit_proc)(int*, int*); |
||
| 2600 | void (*draw_proc)(int, int); |
||
| 2601 | tU32 time_out; |
||
| 2602 | void (*start_proc1)(void); |
||
| 2603 | void (*start_proc2)(void); |
||
| 2604 | int (*done_proc)(int, int, int, int, int); |
||
| 2605 | int font_needed; |
||
| 2606 | int typeable[2]; |
||
| 2607 | void (*get_original_string)(int, int, char*, int*); |
||
| 2608 | int escape_code; |
||
| 2609 | int dont_save_or_load; |
||
| 2610 | int number_of_button_flics; |
||
| 2611 | tFlicette* flicker_on_flics; |
||
| 2612 | tFlicette* flicker_off_flics; |
||
| 2613 | tFlicette* pushed_flics; |
||
| 2614 | int number_of_mouse_areas; |
||
| 2615 | tMouse_area* mouse_areas; |
||
| 2616 | int number_of_recopy_areas; |
||
| 2617 | tRectile* recopy_areas; |
||
| 2618 | } tInterface_spec; |
||
| 2619 | |||
| 2620 | typedef int dr_modelpick2d_cbfn(br_model*, br_material*, br_vector3*, br_vector3*, br_scalar, int, int, int, br_vector3*, br_vector2*, void*); |
||
| 2621 | typedef int dr_pick3d_cbfn(br_actor*, br_model*, br_material*, br_matrix34*, br_bounds*, void*); |
||
| 2622 | |||
| 2623 | typedef struct tFlic_spec { |
||
| 2624 | char* file_name; |
||
| 2625 | int interruptable; |
||
| 2626 | int queued; |
||
| 2627 | int frame_rate; |
||
| 2628 | int repeat; |
||
| 2629 | int x_offset; |
||
| 2630 | int y_offset; |
||
| 2631 | tS8* data_ptr; |
||
| 2632 | tU32 the_size; |
||
| 2633 | } tFlic_spec; |
||
| 2634 | |||
| 2635 | typedef struct tFlic_bunch { |
||
| 2636 | char count; |
||
| 2637 | int* indexes; |
||
| 2638 | } tFlic_bunch; |
||
| 2639 | |||
| 2640 | typedef struct tTranslation_record { |
||
| 2641 | int flic_index; |
||
| 2642 | int x; |
||
| 2643 | int y; |
||
| 2644 | int font_index; |
||
| 2645 | int global; |
||
| 2646 | int every_frame; |
||
| 2647 | tJustification justification; |
||
| 2648 | char* text; |
||
| 2649 | } tTranslation_record; |
||
| 2650 | |||
| 2651 | /* Changed due to conflict with tVehicle_type enum */ |
||
| 2652 | typedef enum tVehicle_category { |
||
| 2653 | eVehiclecat_self = 0, |
||
| 2654 | eVehiclecat_opponent = 1, |
||
| 2655 | eVehiclecat_rozzer = 2, |
||
| 2656 | eVehiclecat_drone = 3 |
||
| 2657 | } tVehicle_category; |
||
| 2658 | |||
| 2659 | typedef struct tTransient_bm { |
||
| 2660 | br_pixelmap* pixmap; |
||
| 2661 | int in_use; |
||
| 2662 | int x_coord; |
||
| 2663 | int y_coord; |
||
| 2664 | int order_number; |
||
| 2665 | int user_data; |
||
| 2666 | } tTransient_bm; |
||
| 2667 | |||
| 2668 | typedef struct tCursor_giblet { |
||
| 2669 | int current_giblet; |
||
| 2670 | int sequence_index; |
||
| 2671 | int landed; |
||
| 2672 | int transient_index; |
||
| 2673 | float x_speed; |
||
| 2674 | float y_speed; |
||
| 2675 | float x_coord; |
||
| 2676 | float y_coord; |
||
| 2677 | float the_speed; |
||
| 2678 | tU32 last_giblet_change; |
||
| 2679 | tU32 giblet_change_period; |
||
| 2680 | tU32 e_t_a; |
||
| 2681 | } tCursor_giblet; |
||
| 2682 | |||
| 2683 | typedef struct tWobble_spec { |
||
| 2684 | float amplitude_x; |
||
| 2685 | float amplitude_y; |
||
| 2686 | float period; |
||
| 2687 | int time_started; |
||
| 2688 | } tWobble_spec; |
||
| 2689 | |||
| 2690 | typedef struct tConcussion { |
||
| 2691 | int concussed; |
||
| 2692 | br_matrix34 amplitudes; |
||
| 2693 | br_matrix34 periods; |
||
| 2694 | tU32 time_started; |
||
| 2695 | } tConcussion; |
||
| 2696 | |||
| 2697 | typedef struct tSaved_table { |
||
| 2698 | br_pixelmap* original; |
||
| 2699 | br_pixelmap* copy; |
||
| 2700 | } tSaved_table; |
||
| 2701 | |||
| 2702 | typedef struct tClip_details { |
||
| 2703 | br_actor* clip; |
||
| 2704 | br_scalar length; |
||
| 2705 | } tClip_details; |
||
| 2706 | |||
| 2707 | typedef enum tNet_head_avail { |
||
| 2708 | eNet_or_otherwise = 0, |
||
| 2709 | eNet_only = 1, |
||
| 2710 | eNot_net = 2, |
||
| 2711 | eNot_ever_ever_ever = 3 |
||
| 2712 | } tNet_head_avail; |
||
| 2713 | typedef struct tModel_pool { |
||
| 2714 | br_model** model_array; |
||
| 2715 | int model_count; |
||
| 2716 | } tModel_pool; |
||
| 2717 | |||
| 2718 | typedef struct tHeadup_info { |
||
| 2719 | char* name; |
||
| 2720 | tNet_head_avail avail; |
||
| 2721 | } tHeadup_info; |
||
| 2722 | |||
| 2723 | typedef enum tTime_bonus_state { |
||
| 2724 | eTime_bonus_none = 0, |
||
| 2725 | eTime_bonus_initial_pause = 1, |
||
| 2726 | eTime_bonus_race_bonus = 2, |
||
| 2727 | eTime_bonus_tb_up = 3, |
||
| 2728 | eTime_bonus_tb_pause = 4, |
||
| 2729 | eTime_bonus_tb_down = 5, |
||
| 2730 | eTime_bonus_end_pause = 6 |
||
| 2731 | } tTime_bonus_state; |
||
| 2732 | |||
| 2733 | typedef enum tInfo_mode { |
||
| 2734 | eInfo_regular = 0, |
||
| 2735 | eInfo_pcam_car = 1, |
||
| 2736 | eInfo_nearby_mat = 2, |
||
| 2737 | eInfo_count = 3 |
||
| 2738 | } tInfo_mode; |
||
| 2739 | typedef struct tHeadup_pair { |
||
| 2740 | int player_index; |
||
| 2741 | int score; |
||
| 2742 | int out_of_game; |
||
| 2743 | } tHeadup_pair; |
||
| 2744 | |||
| 2745 | typedef struct tMax_message { |
||
| 2746 | // char buffer[516]; // 512 + sizeof(void*) |
||
| 2747 | char buffer[520]; |
||
| 2748 | } tMax_message; |
||
| 2749 | |||
| 2750 | typedef struct tMid_message { |
||
| 2751 | // char buffer[132]; // 128 + sizeof(void*) |
||
| 2752 | char buffer[136]; |
||
| 2753 | } tMid_message; |
||
| 2754 | |||
| 2755 | typedef struct tMin_message { |
||
| 2756 | // char buffer[36]; // 32 + sizeof(void*) |
||
| 2757 | char buffer[40]; |
||
| 2758 | } tMin_message; |
||
| 2759 | |||
| 2760 | typedef struct tGuaranteed_message { // size: 0x2c |
||
| 2761 | tNet_message* message; // @0x0 |
||
| 2762 | tU32 send_time; // @0x4 |
||
| 2763 | tU32 next_resend_time; // @0x8 |
||
| 2764 | tU32 resend_period; // @0xc |
||
| 2765 | int recieved; // @0x10 |
||
| 2766 | tPD_net_player_info pd_address; // @0x14 |
||
| 2767 | int (*NotifyFail)(tU32, tNet_message*); // @0x24 |
||
| 2768 | tU32 guarantee_number; // @0x28 |
||
| 2769 | } tGuaranteed_message; |
||
| 2770 | |||
| 2771 | typedef enum tJoin_or_host_result { |
||
| 2772 | eJoin_or_host_cancel = 0, |
||
| 2773 | eJoin_or_host_join = 1, |
||
| 2774 | eJoin_or_host_host = 2 |
||
| 2775 | } tJoin_or_host_result; |
||
| 2776 | typedef struct tJoinable_game { |
||
| 2777 | tNet_game_details* game; |
||
| 2778 | tU32 time; |
||
| 2779 | } tJoinable_game; |
||
| 2780 | |||
| 2781 | typedef struct tOil_spill_info { |
||
| 2782 | br_actor* actor; |
||
| 2783 | tCar_spec* car; |
||
| 2784 | tU32 spill_time; |
||
| 2785 | tU32 stop_time; |
||
| 2786 | br_scalar full_size; |
||
| 2787 | br_scalar current_size; |
||
| 2788 | br_scalar grow_rate; |
||
| 2789 | br_vector3 original_pos; |
||
| 2790 | br_vector3 pos; |
||
| 2791 | } tOil_spill_info; |
||
| 2792 | |||
| 2793 | typedef enum tJoy_calib_stage { |
||
| 2794 | eJoy_calib_tl_1 = 0, |
||
| 2795 | eJoy_calib_br_1 = 1, |
||
| 2796 | eJoy_calib_cn_1 = 2, |
||
| 2797 | eJoy_calib_tl_2 = 3, |
||
| 2798 | eJoy_calib_br_2 = 4, |
||
| 2799 | eJoy_calib_cn_2 = 5 |
||
| 2800 | } tJoy_calib_stage; |
||
| 2801 | |||
| 2802 | typedef enum tPed_instruc_type { |
||
| 2803 | ePed_instruc_point = 0, |
||
| 2804 | ePed_instruc_xpoint = 1, |
||
| 2805 | ePed_instruc_bchoice = 2, |
||
| 2806 | ePed_instruc_fchoice = 3, |
||
| 2807 | ePed_instruc_dead = 4, |
||
| 2808 | ePed_instruc_bmarker = 5, |
||
| 2809 | ePed_instruc_fmarker = 6, |
||
| 2810 | ePed_instruc_baction = 7, |
||
| 2811 | ePed_instruc_faction = 8, |
||
| 2812 | ePed_instruc_reverse = 9 |
||
| 2813 | } tPed_instruc_type; |
||
| 2814 | |||
| 2815 | typedef enum tPed_frame_rate_type { |
||
| 2816 | ePed_frame_fixed = 0, |
||
| 2817 | ePed_frame_speed = 1, |
||
| 2818 | ePed_frame_variable = 2 |
||
| 2819 | } tPed_frame_rate_type; |
||
| 2820 | |||
| 2821 | typedef enum tPed_collide_type { |
||
| 2822 | ePed_collide_none = -1, |
||
| 2823 | ePed_collide_on = 0 |
||
| 2824 | } tPed_collide_type; |
||
| 2825 | |||
| 2826 | typedef enum tPed_hit_position { |
||
| 2827 | ePed_hit_unknown = 0, |
||
| 2828 | ePed_hit_front = 1, |
||
| 2829 | ePed_hit_back = 2, |
||
| 2830 | ePed_hit_rside = 3, |
||
| 2831 | ePed_hit_lside = 4 |
||
| 2832 | } tPed_hit_position; |
||
| 2833 | typedef struct tPed_choice { |
||
| 2834 | tU16 danger_level; |
||
| 2835 | tU8 percentage_chance; |
||
| 2836 | tU8 marker_ref; |
||
| 2837 | } tPed_choice; |
||
| 2838 | |||
| 2839 | typedef struct tPedestrian_instruction { // size: 0x14 |
||
| 2840 | tPed_instruc_type type; // @0x0 |
||
| 2841 | union { // size: 0x10 |
||
| 2842 | struct { // size: 0x10 |
||
| 2843 | br_vector3 position; // @0x0 |
||
| 2844 | int irreversable; // @0xc |
||
| 2845 | } point_data; // @0x0 |
||
| 2846 | struct { // size: 0xc |
||
| 2847 | int number_of_choices; // @0x0 |
||
| 2848 | tPed_choice choices[2]; // @0x4 |
||
| 2849 | } choice_data; // @0x0 |
||
| 2850 | struct { // size: 0x4 |
||
| 2851 | int death_sequence; // @0x0 |
||
| 2852 | } death_data; // @0x0 |
||
| 2853 | struct { // size: 0x4 |
||
| 2854 | int marker_ref; // @0x0 |
||
| 2855 | } marker_data; // @0x0 |
||
| 2856 | struct { // size: 0x4 |
||
| 2857 | int action_index; // @0x0 |
||
| 2858 | } action_data; // @0x0 |
||
| 2859 | } data; // @0x4 |
||
| 2860 | } tPedestrian_instruction; |
||
| 2861 | |||
| 2862 | typedef struct tBearing_sequence { |
||
| 2863 | int sequence_index; |
||
| 2864 | float max_bearing; |
||
| 2865 | } tBearing_sequence; |
||
| 2866 | |||
| 2867 | typedef struct tPedestrian_action { |
||
| 2868 | float danger_level; |
||
| 2869 | float percentage_chance; |
||
| 2870 | int number_of_bearings; |
||
| 2871 | int number_of_sounds; |
||
| 2872 | int sounds[3]; |
||
| 2873 | tBearing_sequence sequences[7]; |
||
| 2874 | float initial_speed; |
||
| 2875 | float looping_speed; |
||
| 2876 | tU32 reaction_time; |
||
| 2877 | } tPedestrian_action; |
||
| 2878 | |||
| 2879 | typedef struct tPed_frame_info { |
||
| 2880 | br_vector2 offset; |
||
| 2881 | int flipped; |
||
| 2882 | br_pixelmap* pixelmap; |
||
| 2883 | } tPed_frame_info; |
||
| 2884 | |||
| 2885 | typedef struct tPedestrian_sequence { |
||
| 2886 | tPed_frame_rate_type frame_rate_type; |
||
| 2887 | float frame_rate_factor1; |
||
| 2888 | float frame_rate_factor2; |
||
| 2889 | int number_of_frames; |
||
| 2890 | int looping_frame_start; |
||
| 2891 | tPed_frame_info frames[10]; |
||
| 2892 | } tPedestrian_sequence; |
||
| 2893 | |||
| 2894 | typedef struct tPedestrian_data { |
||
| 2895 | int magic_number; |
||
| 2896 | br_scalar height; |
||
| 2897 | br_scalar jump_magnitude; |
||
| 2898 | br_scalar car_to_ped; |
||
| 2899 | br_scalar min_x; |
||
| 2900 | br_scalar max_x; |
||
| 2901 | int credits_value; |
||
| 2902 | int hit_points; |
||
| 2903 | int number_of_exploding_sounds; |
||
| 2904 | int exploding_sounds[3]; |
||
| 2905 | int falling_sound; |
||
| 2906 | int last_sound_action; |
||
| 2907 | tU16 killers_ID; |
||
| 2908 | br_scalar width; |
||
| 2909 | br_scalar height2; |
||
| 2910 | tCar_spec* fate; |
||
| 2911 | br_actor* actor; |
||
| 2912 | tPlayer_ID murderer; |
||
| 2913 | tPedestrian_instruction* instruction_list; |
||
| 2914 | tPedestrian_action* action_list; |
||
| 2915 | tU8 ref_number; |
||
| 2916 | tU8 active; |
||
| 2917 | tU8 munged; |
||
| 2918 | tU8 collided_last_time; |
||
| 2919 | tU8 flipped; |
||
| 2920 | tU8 reverse_frames; |
||
| 2921 | tU8 sent_dead_message; |
||
| 2922 | tS8 image_index; |
||
| 2923 | tS8 number_of_actions; |
||
| 2924 | tS8 number_of_instructions; |
||
| 2925 | tS8 first_instruction; |
||
| 2926 | tS8 current_instruction; |
||
| 2927 | tS8 fatal_car_impact_action; |
||
| 2928 | tS8 non_fatal_car_impact_action; |
||
| 2929 | tS8 after_impact_action; |
||
| 2930 | tS8 fatal_ground_impact_action; |
||
| 2931 | tS8 non_fatal_ground_impact_action; |
||
| 2932 | tS8 giblets_action; |
||
| 2933 | tS8 current_sequence; |
||
| 2934 | tS8 current_action; |
||
| 2935 | tS8 current_action_mode; |
||
| 2936 | tS8 current_frame; |
||
| 2937 | tS8 number_of_sequences; |
||
| 2938 | tS8 done_initial; |
||
| 2939 | tS8 giblets_being_sat_upon; |
||
| 2940 | tS8 mid_air; |
||
| 2941 | tS8 instruction_direction; |
||
| 2942 | tS8 irreversable; |
||
| 2943 | tS8 frightened_of_us; |
||
| 2944 | tS8 cloned; |
||
| 2945 | float current_speed; |
||
| 2946 | float acceleration; |
||
| 2947 | float spin_period; |
||
| 2948 | tU32 last_frame; |
||
| 2949 | tU32 last_action_change; |
||
| 2950 | tU32 last_sound_make; |
||
| 2951 | tS32 respawn_time; |
||
| 2952 | br_vector3 pos; |
||
| 2953 | br_vector3 direction; |
||
| 2954 | br_vector3 from_pos; |
||
| 2955 | br_vector3 to_pos; |
||
| 2956 | br_vector3 offset; |
||
| 2957 | float falling_speed; |
||
| 2958 | tSpecial_volume* last_special_volume; |
||
| 2959 | tPedestrian_sequence* sequences; |
||
| 2960 | tS3_sound_tag last_sound; |
||
| 2961 | br_pixelmap* colour_map; |
||
| 2962 | } tPedestrian_data; |
||
| 2963 | |||
| 2964 | typedef struct tPed_gib { |
||
| 2965 | br_actor* actor; |
||
| 2966 | br_scalar x_speed; |
||
| 2967 | br_scalar y_speed; |
||
| 2968 | int size; |
||
| 2969 | int last_frame; |
||
| 2970 | int gib_index; |
||
| 2971 | int parent_index; |
||
| 2972 | tU32 start_time; |
||
| 2973 | tU32 end_time; |
||
| 2974 | tU32 flip_period; |
||
| 2975 | } tPed_gib; |
||
| 2976 | |||
| 2977 | typedef struct tPed_gib_materials { |
||
| 2978 | int count; |
||
| 2979 | br_material* materials[5]; |
||
| 2980 | } tPed_gib_materials; |
||
| 2981 | |||
| 2982 | typedef struct tProximity_ray { |
||
| 2983 | tCar_spec* car; |
||
| 2984 | tPedestrian_data* ped; |
||
| 2985 | tU32 start_time; |
||
| 2986 | } tProximity_ray; |
||
| 2987 | |||
| 2988 | typedef struct tPiped_registration_snapshot { |
||
| 2989 | int piped_actors_count; |
||
| 2990 | int piped_models_count; |
||
| 2991 | int piped_materials_count; |
||
| 2992 | int piped_pixelmaps_count; |
||
| 2993 | } tPiped_registration_snapshot; |
||
| 2994 | |||
| 2995 | typedef struct tHeadup_icon { |
||
| 2996 | tPowerup* powerup; |
||
| 2997 | int fizzle_stage; |
||
| 2998 | int fizzle_direction; |
||
| 2999 | tU32 fizzle_start; |
||
| 3000 | } tHeadup_icon; |
||
| 3001 | |||
| 3002 | typedef struct tPrat_flic_spec { |
||
| 3003 | char* data; |
||
| 3004 | tU32 data_length; |
||
| 3005 | } tPrat_flic_spec; |
||
| 3006 | |||
| 3007 | typedef struct tPrat_alternative { |
||
| 3008 | int ref; |
||
| 3009 | int chance; |
||
| 3010 | int number_of_sounds; |
||
| 3011 | int sound_ids[8]; |
||
| 3012 | int sound_chance; |
||
| 3013 | } tPrat_alternative; |
||
| 3014 | |||
| 3015 | typedef struct tPrat_flic_chunk { |
||
| 3016 | int number_of_alternatives; |
||
| 3017 | tPrat_alternative alternatives[6]; |
||
| 3018 | } tPrat_flic_chunk; |
||
| 3019 | |||
| 3020 | typedef struct tPrat_sequence { |
||
| 3021 | int number_of_chunks; |
||
| 3022 | int precedence; |
||
| 3023 | int repeat_chunk; |
||
| 3024 | tPrat_flic_chunk chunks[6]; |
||
| 3025 | } tPrat_sequence; |
||
| 3026 | |||
| 3027 | typedef enum tGrid_draw { |
||
| 3028 | eGrid_draw_none = 0, |
||
| 3029 | eGrid_draw_icons_only = 1, |
||
| 3030 | eGrid_draw_all = 2 |
||
| 3031 | } tGrid_draw; |
||
| 3032 | |||
| 3033 | typedef enum tNet_synch_mode { |
||
| 3034 | eNet_synch_host_first = 0, |
||
| 3035 | eNet_synch_host_subsequent = 1, |
||
| 3036 | eNet_synch_client = 2 |
||
| 3037 | } tNet_synch_mode; |
||
| 3038 | typedef struct tWreck_info { |
||
| 3039 | br_actor* actor; |
||
| 3040 | br_matrix34 rotation; |
||
| 3041 | br_matrix34 original_matrix; |
||
| 3042 | int customised; |
||
| 3043 | int car_index; |
||
| 3044 | float pos_x; |
||
| 3045 | float pos_y; |
||
| 3046 | tVehicle_type car_type; |
||
| 3047 | br_scalar scaling_factor; |
||
| 3048 | } tWreck_info; |
||
| 3049 | |||
| 3050 | typedef struct tRectangle { |
||
| 3051 | int left; |
||
| 3052 | int top; |
||
| 3053 | int right; |
||
| 3054 | int bottom; |
||
| 3055 | } tRectangle; |
||
| 3056 | |||
| 3057 | typedef struct tSkid { |
||
| 3058 | br_actor* actor; |
||
| 3059 | br_vector3 normal; |
||
| 3060 | br_vector3 pos; |
||
| 3061 | } tSkid; |
||
| 3062 | |||
| 3063 | typedef struct tSpark { |
||
| 3064 | int count; |
||
| 3065 | br_vector3 pos; |
||
| 3066 | br_vector3 v; |
||
| 3067 | br_vector3 length; |
||
| 3068 | br_vector3 normal; |
||
| 3069 | tU32 time_sync; |
||
| 3070 | tCar_spec* car; |
||
| 3071 | tU8 colour; |
||
| 3072 | } tSpark; |
||
| 3073 | |||
| 3074 | typedef struct tShrapnel { |
||
| 3075 | br_actor* actor; |
||
| 3076 | br_vector3 v; |
||
| 3077 | tU32 time_sync; |
||
| 3078 | tU32 age; |
||
| 3079 | br_scalar shear1; |
||
| 3080 | br_scalar shear2; |
||
| 3081 | br_vector3 axis; |
||
| 3082 | } tShrapnel; |
||
| 3083 | |||
| 3084 | typedef struct tSmoke { |
||
| 3085 | tU32 time_sync; |
||
| 3086 | br_vector3 pos; |
||
| 3087 | br_vector3 v; |
||
| 3088 | br_scalar radius; |
||
| 3089 | br_scalar strength; |
||
| 3090 | br_scalar decay_factor; |
||
| 3091 | tU8 type; |
||
| 3092 | tU8 pipe_me; |
||
| 3093 | } tSmoke; |
||
| 3094 | |||
| 3095 | typedef struct tSmoke_column { |
||
| 3096 | tCar_spec* car; |
||
| 3097 | tU32 time; |
||
| 3098 | tU32 lifetime; |
||
| 3099 | tU32 count; |
||
| 3100 | int colour; |
||
| 3101 | int whiter; |
||
| 3102 | br_actor* flame_actor; |
||
| 3103 | int frame_count[3]; |
||
| 3104 | br_vector3 pos; |
||
| 3105 | br_scalar scale_x[3]; |
||
| 3106 | br_scalar scale_y[3]; |
||
| 3107 | br_scalar offset_x[3]; |
||
| 3108 | br_scalar offset_z[3]; |
||
| 3109 | tU32 smudge_timer; |
||
| 3110 | int vertex_index; |
||
| 3111 | int upright; |
||
| 3112 | |||
| 3113 | #ifdef DETHRACE_FIX_BUGS |
||
| 3114 | // Flames textures are animated per frame. At higher FPS, this happens too quickly |
||
| 3115 | br_scalar frame_time[3]; |
||
| 3116 | #endif |
||
| 3117 | } tSmoke_column; |
||
| 3118 | |||
| 3119 | typedef struct tSplash { |
||
| 3120 | br_actor* actor; |
||
| 3121 | br_vector3 v; |
||
| 3122 | int just_done; |
||
| 3123 | br_scalar size; |
||
| 3124 | br_scalar scale_x; |
||
| 3125 | } tSplash; |
||
| 3126 | |||
| 3127 | typedef struct tBRender_smoke { |
||
| 3128 | br_vector3 pos; |
||
| 3129 | br_scalar r; |
||
| 3130 | br_scalar strength; |
||
| 3131 | br_colour col; |
||
| 3132 | br_scalar aspect; |
||
| 3133 | } tBRender_smoke; |
||
| 3134 | |||
| 3135 | typedef struct tRGB_colour { |
||
| 3136 | int red; |
||
| 3137 | int green; |
||
| 3138 | int blue; |
||
| 3139 | } tRGB_colour; |
||
| 3140 | |||
| 3141 | #ifdef DETHRACE_FIX_BUGS |
||
| 3142 | typedef br_material* tPMFMCB(br_model*, tU16); |
||
| 3143 | #else |
||
| 3144 | typedef br_material** tPMFMCB(br_model*, tU16); |
||
| 3145 | #endif |
||
| 3146 | |||
| 3147 | typedef enum tMatrix_mod_type { |
||
| 3148 | eMatrix_mod_none = -1, |
||
| 3149 | eMatrix_mod_spin = 0, |
||
| 3150 | eMatrix_mod_rock = 1, |
||
| 3151 | eMatrix_mod_throb = 2, |
||
| 3152 | eMatrix_mod_slither = 3, |
||
| 3153 | eMatrix_mod_roll = 4 |
||
| 3154 | } tMatrix_mod_type; |
||
| 3155 | |||
| 3156 | typedef enum tTexture_animation_type { |
||
| 3157 | eTexture_animation_none = -1, |
||
| 3158 | eTexture_animation_frames = 0, |
||
| 3159 | eTexture_animation_flic = 1 |
||
| 3160 | } tTexture_animation_type; |
||
| 3161 | |||
| 3162 | typedef enum tMove_mode { |
||
| 3163 | eMove_none = -1, |
||
| 3164 | eMove_linear = 0, |
||
| 3165 | eMove_harmonic = 1, |
||
| 3166 | eMove_flash = 2, |
||
| 3167 | eMove_controlled = 3, |
||
| 3168 | eMove_absolute = 4, |
||
| 3169 | eMove_continuous = 5 |
||
| 3170 | } tMove_mode; |
||
| 3171 | |||
| 3172 | typedef enum tFunk_trigger_mode { |
||
| 3173 | eFunk_mode_constant = 0, |
||
| 3174 | eFunk_mode_distance = 1, |
||
| 3175 | eFunk_mode_last_lap_only = 2, |
||
| 3176 | eFunk_mode_all_laps_but_last = 3 |
||
| 3177 | } tFunk_trigger_mode; |
||
| 3178 | |||
| 3179 | typedef enum tGroove_trigger_mode { |
||
| 3180 | eGroove_mode_constant = 0, |
||
| 3181 | eGroove_mode_distance = 1 |
||
| 3182 | } tGroove_trigger_mode; |
||
| 3183 | |||
| 3184 | typedef enum tGroove_path_mode { |
||
| 3185 | eGroove_path_none = -1, |
||
| 3186 | eGroove_path_straight = 0, |
||
| 3187 | eGroove_path_circular = 1 |
||
| 3188 | } tGroove_path_mode; |
||
| 3189 | |||
| 3190 | typedef enum tGroove_object_mode { |
||
| 3191 | eGroove_object_none = -1, |
||
| 3192 | eGroove_object_spin = 0, |
||
| 3193 | eGroove_object_rock = 1, |
||
| 3194 | eGroove_object_throb = 2, |
||
| 3195 | eGroove_object_shear = 3 |
||
| 3196 | } tGroove_object_mode; |
||
| 3197 | |||
| 3198 | typedef enum tGroove_axis_mode { |
||
| 3199 | eGroove_axis_x = 0, |
||
| 3200 | eGroove_axis_y = 1, |
||
| 3201 | eGroove_axis_z = 2 |
||
| 3202 | } tGroove_axis_mode; |
||
| 3203 | |||
| 3204 | typedef enum tAnimation_time_mode { |
||
| 3205 | eTime_mode_approximate = 0, |
||
| 3206 | eTime_mode_accurate = 1 |
||
| 3207 | } tAnimation_time_mode; |
||
| 3208 | |||
| 3209 | typedef enum tInterrupt_status { |
||
| 3210 | eInterrupt_none = 0, |
||
| 3211 | eInterrupt_less_than = 1, |
||
| 3212 | eInterrupt_greater_than = 2 |
||
| 3213 | } tInterrupt_status; |
||
| 3214 | |||
| 3215 | typedef enum tRotate_mode { |
||
| 3216 | eRotate_mode_x = 0, |
||
| 3217 | eRotate_mode_y = 1, |
||
| 3218 | eRotate_mode_z = 2 |
||
| 3219 | } tRotate_mode; |
||
| 3220 | |||
| 3221 | typedef enum tScale_mode { |
||
| 3222 | eScale_mode_all = 0, |
||
| 3223 | eScale_mode_x = 1, |
||
| 3224 | eScale_mode_y = 2, |
||
| 3225 | eScale_mode_z = 3 |
||
| 3226 | } tScale_mode; |
||
| 3227 | |||
| 3228 | typedef struct tFunkotronic_spec { // size: 0xd8 |
||
| 3229 | int owner; // @0x0 |
||
| 3230 | br_material* material; // @0x4 |
||
| 3231 | tFunk_trigger_mode mode; // @0x8 |
||
| 3232 | tMatrix_mod_type matrix_mod_type; // @0xc |
||
| 3233 | tMove_mode matrix_mode; // @0x10 |
||
| 3234 | union { // size: 0x18 |
||
| 3235 | struct { // size: 0x4 |
||
| 3236 | float period; // @0x0 |
||
| 3237 | } spin_info; // @0x0 |
||
| 3238 | struct { // size: 0x10 |
||
| 3239 | float period; // @0x0 |
||
| 3240 | br_scalar x_centre; // @0x4 |
||
| 3241 | br_scalar y_centre; // @0x8 |
||
| 3242 | float rock_angle; // @0xc |
||
| 3243 | } rock_info; // @0x0 |
||
| 3244 | struct { // size: 0x18 |
||
| 3245 | float x_period; // @0x0 |
||
| 3246 | float y_period; // @0x4 |
||
| 3247 | br_scalar x_centre; // @0x8 |
||
| 3248 | br_scalar y_centre; // @0xc |
||
| 3249 | float x_magnitude; // @0x10 |
||
| 3250 | float y_magnitude; // @0x14 |
||
| 3251 | } throb_info; // @0x0 |
||
| 3252 | struct { // size: 0x10 |
||
| 3253 | float x_period; // @0x0 |
||
| 3254 | float y_period; // @0x4 |
||
| 3255 | float x_magnitude; // @0x8 |
||
| 3256 | float y_magnitude; // @0xc |
||
| 3257 | } slither_info; // @0x0 |
||
| 3258 | struct { // size: 0x8 |
||
| 3259 | float x_period; // @0x0 |
||
| 3260 | float y_period; // @0x4 |
||
| 3261 | } roll_info; // @0x0 |
||
| 3262 | } matrix_mod_data; // @0x14 |
||
| 3263 | tMove_mode lighting_animation_type; // @0x2c |
||
| 3264 | float lighting_animation_period; // @0x30 |
||
| 3265 | float ambient_base; // @0x34 |
||
| 3266 | float ambient_delta; // @0x38 |
||
| 3267 | float direct_base; // @0x3c |
||
| 3268 | float direct_delta; // @0x40 |
||
| 3269 | float specular_base; // @0x44 |
||
| 3270 | float specular_delta; // @0x48 |
||
| 3271 | tTexture_animation_type texture_animation_type; // @0x4c |
||
| 3272 | tAnimation_time_mode time_mode; // @0x50 |
||
| 3273 | float last_frame; // @0x54 |
||
| 3274 | union { // size: 0x78 |
||
| 3275 | struct { // size: 0x30 |
||
| 3276 | tMove_mode mode; // @0x0 |
||
| 3277 | float period; // @0x4 |
||
| 3278 | int texture_count; // @0x8 |
||
| 3279 | int current_frame; // @0xc |
||
| 3280 | br_pixelmap* textures[8]; // @0x10 |
||
| 3281 | } frames_info; // @0x0 |
||
| 3282 | struct { // size: 0x78 |
||
| 3283 | tU8* flic_data; // @0x0 |
||
| 3284 | tU32 flic_data_length; // @0x4 |
||
| 3285 | tFlic_descriptor flic_descriptor; // @0x8 |
||
| 3286 | } flic_info; // @0x0 |
||
| 3287 | } texture_animation_data; // @0x58 |
||
| 3288 | int proximity_count; // @0xd0 |
||
| 3289 | br_vector3* proximity_array; // @0xd4 |
||
| 3290 | } tFunkotronic_spec; |
||
| 3291 | |||
| 3292 | typedef struct tGroovidelic_spec { // size: 0x80 |
||
| 3293 | int owner; // @0x0 |
||
| 3294 | int done_this_frame; // @0x4 |
||
| 3295 | br_actor* actor; // @0x8 |
||
| 3296 | tLollipop_mode lollipop_mode; // @0xc |
||
| 3297 | tGroove_trigger_mode mode; // @0x10 |
||
| 3298 | tGroove_path_mode path_type; // @0x14 |
||
| 3299 | tMove_mode path_mode; // @0x18 |
||
| 3300 | tInterrupt_status path_interrupt_status; // @0x1c |
||
| 3301 | float path_resumption_value; // @0x20 |
||
| 3302 | union { // size: 0x1c |
||
| 3303 | struct { // size: 0x1c |
||
| 3304 | float period; // @0x0 |
||
| 3305 | float x_delta; // @0x4 |
||
| 3306 | float y_delta; // @0x8 |
||
| 3307 | float z_delta; // @0xc |
||
| 3308 | br_vector3 centre; // @0x10 |
||
| 3309 | } straight_info; // @0x0 |
||
| 3310 | struct { // size: 0x18 |
||
| 3311 | float period; // @0x0 |
||
| 3312 | float radius; // @0x4 |
||
| 3313 | br_vector3 centre; // @0x8 |
||
| 3314 | tGroove_axis_mode axis; // @0x14 |
||
| 3315 | } circular_info; // @0x0 |
||
| 3316 | } path_data; // @0x24 |
||
| 3317 | br_vector3 object_centre; // @0x40 |
||
| 3318 | br_vector3 object_position; // @0x4c |
||
| 3319 | tGroove_object_mode object_type; // @0x58 |
||
| 3320 | tMove_mode object_mode; // @0x5c |
||
| 3321 | tInterrupt_status object_interrupt_status; // @0x60 |
||
| 3322 | float object_resumption_value; // @0x64 |
||
| 3323 | union { // size: 0x18 |
||
| 3324 | struct { // size: 0x8 |
||
| 3325 | float period; // @0x0 |
||
| 3326 | tGroove_axis_mode axis; // @0x4 |
||
| 3327 | } spin_info; // @0x0 |
||
| 3328 | struct { // size: 0x10 |
||
| 3329 | float period; // @0x0 |
||
| 3330 | float max_angle; // @0x4 |
||
| 3331 | float current_angle; // @0x8 |
||
| 3332 | tGroove_axis_mode axis; // @0xc |
||
| 3333 | } rock_info; // @0x0 |
||
| 3334 | struct { // size: 0x18 |
||
| 3335 | float x_period; // @0x0 |
||
| 3336 | float y_period; // @0x4 |
||
| 3337 | float z_period; // @0x8 |
||
| 3338 | float x_magnitude; // @0xc |
||
| 3339 | float y_magnitude; // @0x10 |
||
| 3340 | float z_magnitude; // @0x14 |
||
| 3341 | } throb_info; // @0x0 |
||
| 3342 | struct { // size: 0x18 |
||
| 3343 | float x_period; // @0x0 |
||
| 3344 | float y_period; // @0x4 |
||
| 3345 | float z_period; // @0x8 |
||
| 3346 | float x_magnitude; // @0xc |
||
| 3347 | float y_magnitude; // @0x10 |
||
| 3348 | float z_magnitude; // @0x14 |
||
| 3349 | } shear_info; // @0x0 |
||
| 3350 | } object_data; // @0x68 |
||
| 3351 | } tGroovidelic_spec; |
||
| 3352 | |||
| 3353 | typedef struct tMem_info { |
||
| 3354 | unsigned int largest_block_avail; |
||
| 3355 | unsigned int max_unlocked_page; |
||
| 3356 | unsigned int largest_lockable_page; |
||
| 3357 | unsigned int lin_addr_space; |
||
| 3358 | unsigned int num_free_pages_avail; |
||
| 3359 | unsigned int num_physical_pages_free; |
||
| 3360 | unsigned int total_physical_pages; |
||
| 3361 | unsigned int free_lin_addr_space; |
||
| 3362 | unsigned int size_of_page_file; |
||
| 3363 | unsigned int reserved[3]; |
||
| 3364 | } tMem_info; |
||
| 3365 | |||
| 3366 | typedef struct tIPX_netnum { |
||
| 3367 | unsigned char bNetwork[4]; |
||
| 3368 | } tIPX_netnum; |
||
| 3369 | |||
| 3370 | #endif |