annotate round 5

This commit is contained in:
Dethrace Labs 2025-06-17 10:14:18 +12:00
parent 8fe9366923
commit 58539fb6e5
47 changed files with 973 additions and 17 deletions

View File

@ -16,6 +16,7 @@
// GLOBAL: CARM95 0x53e488
br_actor* gMr_blendy;
// GLOBAL: CARM95 0x550244
int gDefault_blend_pc;

View File

@ -38,15 +38,19 @@
// GLOBAL: CARM95 0x514cb0
int gDoing_physics = 0;
// GLOBAL: CARM95 0x514cb4
br_scalar gDt = 0.f;
// suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x514cb8
int gCollision_detection_on__car = 1;
// suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x514cc0
br_vector3 gGround_normal__car = { { 0.0f, 1.0f, 0.0f } };
// suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x00514cd0
void (*ControlCar[6])(tCar_spec*, br_scalar) = {
&ControlCar1,
&ControlCar2,
@ -55,16 +59,22 @@ void (*ControlCar[6])(tCar_spec*, br_scalar) = {
&ControlCar5,
NULL,
};
// GLOBAL: CARM95 0x514ce8
int gControl__car = 3; // suffix added to avoid duplicate symbol
int gControl__car = 3; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x514df8
int gFace_num__car = 1; // suffix added to avoid duplicate symbol
int gFace_num__car = 1; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x514cf0
br_angle gOld_yaw__car = 0; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x514cf4
br_angle gOld_zoom = 0;
// GLOBAL: CARM95 0x514cf8
br_vector3 gCamera_pos_before_collide = { { 0 } };
// GLOBAL: CARM95 0x514d08
int gMetal_crunch_sound_id__car[5] = {
// suffix added to avoid duplicate symbol
@ -74,6 +84,7 @@ int gMetal_crunch_sound_id__car[5] = {
5003,
5004,
};
// GLOBAL: CARM95 0x514d20
int gMetal_scrape_sound_id__car[3] = {
// suffix added to avoid duplicate symbol
@ -81,95 +92,137 @@ int gMetal_scrape_sound_id__car[3] = {
5011,
5012,
};
// GLOBAL: CARM95 0x514d2c
int gCar_car_collisions = 1;
// GLOBAL: CARM95 0x514d30
int gFreeze_mechanics = 0;
// GLOBAL: CARM95 0x514d34
tU32 gLast_cunning_stunt = 0;
// GLOBAL: CARM95 0x514d38
tU32 gWild_start = 0;
// GLOBAL: CARM95 0x514d3c
tU32 gQuite_wild_start = 0;
// GLOBAL: CARM95 0x514d40
tU32 gQuite_wild_end = 0;
// GLOBAL: CARM95 0x514d44
tU32 gOn_me_wheels_start = 0;
// GLOBAL: CARM95 0x514d48
int gWoz_upside_down_at_all = 0;
// GLOBAL: CARM95 0x514d50
tS3_sound_tag gSkid_tag[2] = { 0, 0 };
// GLOBAL: CARM95 0x514d58
tCar_spec* gLast_car_to_skid[2] = { NULL, NULL };
// GLOBAL: CARM95 0x514d60
int gEliminate_faces = 0;
// GLOBAL: CARM95 0x514d68
br_vector3 gZero_v__car = { { 0 } }; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x514d74
tU32 gSwitch_time = 0;
// GLOBAL: CARM95 0x514d78
tSave_camera gSave_camera[2];
// GLOBAL: CARM95 0x514d90
tU32 gLast_mechanics_time;
// GLOBAL: CARM95 0x514d94
int gOpponent_viewing_mode;
// GLOBAL: CARM95 0x514d98
int gNet_player_to_view_index = -1;
// GLOBAL: CARM95 0x514d9c
int gDouble_pling_water = 0;
// GLOBAL: CARM95 0x514da0
int gStop_opponents_moving = 0;
// GLOBAL: CARM95 0x514da8
float gDefensive_powerup_factor[6] = { 1.0f, 0.825f, 0.65f, 0.475f, 0.3f, 0.01f };
// GLOBAL: CARM95 0x514dc0
float gOffensive_powerup_factor[6] = { 1.0f, 1.5f, 2.0f, 3.0f, 5.0f, 10.0f };
// GLOBAL: CARM95 0x514dd8
float gEngine_powerup_factor[6] = { 1.3f, 1.9f, 2.5f, 3.2f, 4.0f, 10.0f };
// GLOBAL: CARM95 0x514df0
br_angle gPanning_camera_angle;
// GLOBAL: CARM95 0x514df2
br_scalar gPanning_camera_height;
// GLOBAL: CARM95 0x514cec
int gFace_count;
// GLOBAL: CARM95 0x514e00
float gCar_simplification_factor[2][5] = {
{ 10.0f, 3.0f, 1.5f, 0.75f, 0.0f },
{ 10.0f, 5.0f, 2.5f, 1.5f, 0.0f }
};
// GLOBAL: CARM95 0x514e28
int gCar_simplification_level = 0;
// GLOBAL: CARM95 0x514e2c
int gNum_active_non_cars = 0;
// GLOBAL: CARM95 0x514e30
int gCamera_has_collided = 0;
// GLOBAL: CARM95 0x53a5b8
tFace_ref gFace_list__car[150]; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x550680
tNon_car_spec* gActive_non_car_list[50];
// GLOBAL: CARM95 0x53a57c
int gOver_shoot;
// GLOBAL: CARM95 0x53a574
br_scalar gMin_world_y;
br_scalar gAccel;
// GLOBAL: CARM95 0x53a518
br_vector3 gAverage_grid_position;
// GLOBAL: CARM95 0x53cfe8
br_actor* gPed_actor;
int gCollision_count;
// GLOBAL: CARM95 0x53d000
int gCamera_frozen;
// GLOBAL: CARM95 0x53a584
int gMaterial_index;
// GLOBAL: CARM95 0x53a578
int gInTheSea;
// GLOBAL: CARM95 0x53a524
int gCamera_mode;
br_scalar gOur_yaw__car; // suffix added to avoid duplicate symbol
br_scalar gGravity__car; // suffix added to avoid duplicate symbol
br_vector3 gNew_ground_normal__car; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x550750
char gNon_car_spec_list[100];
// GLOBAL: CARM95 0x550670
tU32 gMechanics_time_sync;
// GLOBAL: CARM95 0x550748
int gNum_cars_and_non_cars;

View File

@ -83,14 +83,19 @@ tToggle_element gToggle_array[] = {
{ KEYMAP_INFO, KEYMAP_SHIFT_ANY, 1, 1, 0, ToggleInfo },
{ KEYMAP_INFO, KEYMAP_CONTROL_ANY, 1, 1, 0, ToggleInfo }
};
// GLOBAL: CARM95 0x51b5c8
int gRepair_last_time;
// GLOBAL: CARM95 0x51b5cc
int gHad_auto_recover;
// GLOBAL: CARM95 0x51b5d0
tU32 gLast_repair_time;
// GLOBAL: CARM95 0x51b5d4
tEdit_mode gWhich_edit_mode = eEdit_mode_options;
// GLOBAL: CARM95 0x51b5d8
char* gEdit_mode_names[10] = {
"Cheat",
"Accessories",
@ -105,6 +110,7 @@ char* gEdit_mode_names[10] = {
};
// order is: { None, CTRL, ALT, CTRL+ALT, SHIFT, CTRL+SHIFT, ALT+SHIFT, CTRL+ALT+SHIFT }
// GLOBAL: CARM95 0x51b600
tEdit_func* gEdit_funcs[10][18][8] = {
{ // CHEAT EDIT MODE
@ -536,24 +542,34 @@ tCheat gKev_keys[44] = {
{ .code = 0x30a19fab, .code2 = 0x2b0c2782, .action_proc = GetPowerup, .num = 45 },
{ .code = 0x0, .code2 = 0x0, .action_proc = 0x0, .num = 0x0 }
};
// GLOBAL: CARM95 0x51cf30
int gAllow_car_flying;
// GLOBAL: CARM95 0x51cf34
int gEntering_message;
// GLOBAL: CARM95 0x51cf38
tU32 gPalette_fade_time; // was gRecover_timer
// GLOBAL: CARM95 0x53d608
char* gAbuse_text[10];
// GLOBAL: CARM95 0x53d648
char gString[84];
// GLOBAL: CARM95 0x53d5f8
int gToo_late;
// GLOBAL: CARM95 0x53d5fc
int gRecover_timer;
// GLOBAL: CARM95 0x53d63c
int gRecovery_voucher_count;
// GLOBAL: CARM95 0x550550
int gInstant_handbrake;
// GLOBAL: CARM95 0x550554
int gAuto_repair;

View File

@ -27,12 +27,16 @@
// GLOBAL: CARM95 0x521370
float gWobble_spam_y[8] = { 0.0f, -0.15f, 0.4f, 0.15f, -0.4f, 0.25f, 0.0f, -0.25f };
// GLOBAL: CARM95 0x521390
float gWobble_spam_z[8] = { 0.4f, -0.25f, 0.0f, 0.25f, 0.0f, 0.15f, -0.4f, -0.15f };
// GLOBAL: CARM95 0x5213b0
br_scalar gWheel_circ_to_width = 0.16f;
// GLOBAL: CARM95 0x5213b8
tU8 gSmoke_damage_step[12] = { 20u, 20u, 0u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 10u };
// GLOBAL: CARM95 0x5213c4
int gSteal_ranks[5] = { 89, 72, 55, 38, 21 };

View File

@ -21,63 +21,93 @@
#include <stdlib.h>
tDepth_effect gDistance_depth_effects[4];
// GLOBAL: CARM95 0x513430
int gSky_on;
// GLOBAL: CARM95 0x513434
int gDepth_cueing_on;
// GLOBAL: CARM95 0x513438
tDepth_effect_type gSwap_depth_effect_type;
// GLOBAL: CARM95 0x537930
br_scalar gSky_height;
// GLOBAL: CARM95 0x53794c
br_scalar gSky_x_multiplier;
// GLOBAL: CARM95 0x537944
br_scalar gSky_width;
// GLOBAL: CARM95 0x537950
br_scalar gSky_y_multiplier;
tU32 gLast_depth_change;
// GLOBAL: CARM95 0x537934
br_scalar gOld_yon;
// GLOBAL: CARM95 0x550a68
br_pixelmap* gWater_shade_table;
// GLOBAL: CARM95 0x53795c
br_material* gHorizon_material;
// GLOBAL: CARM95 0x53792c
br_model* gRearview_sky_model;
// GLOBAL: CARM95 0x537924
int gFog_shade_table_power;
// GLOBAL: CARM95 0x53793c
br_actor* gRearview_sky_actor;
// GLOBAL: CARM95 0x537958
int gAcid_shade_table_power;
// GLOBAL: CARM95 0x537948
int gWater_shade_table_power;
// GLOBAL: CARM95 0x537920
br_model* gForward_sky_model;
// GLOBAL: CARM95 0x537954
br_actor* gForward_sky_actor;
// GLOBAL: CARM95 0x537938
int gDepth_shade_table_power;
// GLOBAL: CARM95 0x550a74
br_pixelmap* gFog_shade_table;
// GLOBAL: CARM95 0x550a80
int gSwap_depth_effect_start;
// GLOBAL: CARM95 0x550a60
br_pixelmap* gDepth_shade_table;
// GLOBAL: CARM95 0x550a78
tSpecial_volume* gLast_camera_special_volume;
// GLOBAL: CARM95 0x550a64
br_pixelmap* gAcid_shade_table;
// GLOBAL: CARM95 0x550a7c
int gSwap_depth_effect_end;
// GLOBAL: CARM95 0x550a5c
br_pixelmap* gSwap_sky_texture;
// GLOBAL: CARM95 0x537928
br_angle gOld_fov;
// GLOBAL: CARM95 0x550a6e
br_angle gSky_image_width;
// GLOBAL: CARM95 0x550a6c
br_angle gSky_image_height;
// GLOBAL: CARM95 0x550a70
br_angle gSky_image_underground;

View File

@ -19,55 +19,81 @@
// GLOBAL: CARM95 0x521678
int gLast_fancy_index;
// GLOBAL: CARM95 0x52167c
int gLast_credit_headup__displays; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x521680
int gLast_time_credit_headup;
// GLOBAL: CARM95 0x521684
tDR_font* gCached_font;
// GLOBAL: CARM95 0x541598
br_font* gBR_fonts[4];
// GLOBAL: CARM95 0x541160
tQueued_headup gQueued_headups[4];
// GLOBAL: CARM95 0x544e30
int gOld_times[10];
// GLOBAL: CARM95 0x541590
int gLast_fancy_headup;
// GLOBAL: CARM95 0x541594
tU32 gLast_time_earn_time;
// GLOBAL: CARM95 0x5415a8
tU32 gLast_centre_headup;
// GLOBAL: CARM95 0x5415ac
tU32 gLast_fancy_time;
// GLOBAL: CARM95 0x541158
int gQueued_headup_count;
// GLOBAL: CARM95 0x54114c
tU32 gLast_earn_time;
// GLOBAL: CARM95 0x541154
tU32 gLast_time_credit_amount;
// GLOBAL: CARM95 0x541150
int gLast_credit_amount;
// GLOBAL: CARM95 0x53fdd8
tHeadup gHeadups[15];
// GLOBAL: CARM95 0x544e60
int gLaps_headup;
// GLOBAL: CARM95 0x544e68
int gCar_kill_count_headup;
// GLOBAL: CARM95 0x544e5c
int gTimer_headup;
// GLOBAL: CARM95 0x544e6c
int gTime_awarded_headup;
// GLOBAL: CARM95 0x544e64
int gPed_kill_count_headup;
// GLOBAL: CARM95 0x544eec
int gDim_amount;
// GLOBAL: CARM95 0x544e70
br_pixelmap* gHeadup_images[32]; // Modified by DethRace for the demo
// GLOBAL: CARM95 0x544e58
int gNet_cash_headup;
// GLOBAL: CARM95 0x544e1c
int gNet_ped_headup;
int gCredits_lost_headup;
// GLOBAL: CARM95 0x544e20
int gCredits_won_headup;

View File

@ -4,6 +4,7 @@
#include "loading.h"
#include <stdlib.h>
// GLOBAL: CARM95 0x0050f020
br_filesystem gFilesystem = {
"Carmageddon",
NULL,
@ -19,6 +20,7 @@ br_filesystem gFilesystem = {
NULL,
NULL
};
// GLOBAL: CARM95 0x536298
br_filesystem* gOld_file_system;

View File

@ -6,8 +6,10 @@
// GLOBAL: CARM95 0x513600
br_allocator gAllocator = { "Death Race", DRStdlibAllocate, DRStdlibFree, DRStdlibInquire, Claim4ByteAlignment };
// GLOBAL: CARM95 0x513614
int gNon_fatal_allocation_errors = 0;
// Is 247 in DOS executable, last entry NULL
// GLOBAL: CARM95 0x513618
char* gMem_names[246] = {

View File

@ -14,7 +14,7 @@
#include <string.h>
// GLOBAL: CARM95 0x5120a0
char* gError_messages[126] = {
char* gError_messages[] = {
"Unable to support this screen depth setting",
"Couldn't allocate off-screen buffer",
"Couldn't allocate Z-Buffer",

View File

@ -12,26 +12,37 @@
// GLOBAL: CARM95 0x51e8fc
int gPling_materials = 1;
// GLOBAL: CARM95 0x51e900
br_material* gSub_material;
// GLOBAL: CARM95 0x51e904
br_material* gReal_material;
// GLOBAL: CARM95 0x51e908
int gNfaces;
// GLOBAL: CARM95 0x53e558
br_matrix34 gPick_model_to_view__finteray; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53e588
int gTemp_group;
// GLOBAL: CARM95 0x53e54c
br_model* gNearest_model;
// GLOBAL: CARM95 0x53e58c
br_model* gSelected_model;
// GLOBAL: CARM95 0x53e554
int gNearest_face_group;
// GLOBAL: CARM95 0x53e548
int gNearest_face;
// GLOBAL: CARM95 0x53e550
br_scalar gNearest_T;
// GLOBAL: CARM95 0x550240
tFace_ref* gPling_face;
@ -762,10 +773,10 @@ int FindFacesInBox2(tBounds* bnds, tFace_ref* face_list, int max_face) {
BrVector3Scale(&c[i], (br_vector3*)bnds->mat->m[i], b.v[i]);
}
for (i = 0; i < 3; i++) {
bnds->real_bounds.min.v[i] += MIN(0.f, c[0].v[i]) + MIN(0.f, c[1].v[i]) + MIN(0.f, c[2].v[i]);
bnds->real_bounds.max.v[i] += MAX(0.f, c[0].v[i]) + MAX(0.f, c[1].v[i]) + MAX(0.f, c[2].v[i]);
}
return max_face - ActorBoxPick(bnds, gTrack_actor, model_unk1, material_unk1, face_list, max_face, NULL);
bnds->real_bounds.min.v[i] += MIN(0.f, c[0].v[i]) + MIN(0.f, c[1].v[i]) + MIN(0.f, c[2].v[i]);
bnds->real_bounds.max.v[i] += MAX(0.f, c[0].v[i]) + MAX(0.f, c[1].v[i]) + MAX(0.f, c[2].v[i]);
}
return max_face - ActorBoxPick(bnds, gTrack_actor, model_unk1, material_unk1, face_list, max_face, NULL);
}
// IDA: int __usercall ActorBoxPick@<EAX>(tBounds *bnds@<EAX>, br_actor *ap@<EDX>, br_model *model@<EBX>, br_material *material@<ECX>, tFace_ref *face_list, int max_face, br_matrix34 *pMat)
@ -1367,7 +1378,7 @@ void Scale(int pD, int factor) {
for (v = 0; v < gSelected_model->nvertices; v++) {
for (f = 0; f < gSelected_model->nfaces; f++) {
if (faces[f].material == gSub_material
&& (faces[f].vertices[0] == v || faces[f].vertices[1] == v || faces[f].vertices[2] == v)) {
&& (faces[f].vertices[0] == v || faces[f].vertices[1] == v || faces[f].vertices[2] == v)) {
verts[v].map.v[pD] = (factor + d) / d * verts[v].map.v[pD];
break;
}

View File

@ -17,24 +17,34 @@
// GLOBAL: CARM95 0x514fa0
int gPalette_allocate_count;
// GLOBAL: CARM95 0x514fa4
int gPalette_fuck_prevention;
// GLOBAL: CARM95 0x514fa8
int gDark_mode;
// GLOBAL: CARM95 0x514fac
int gTransparency_on;
// GLOBAL: CARM95 0x514fb0
int gPanel_flic_disable;
// GLOBAL: CARM95 0x514fb4
int gPending_flic = -1;
// GLOBAL: CARM95 0x514fb8
int gPlay_from_disk;
// GLOBAL: CARM95 0x514fbc
int gTrans_enabled = 1;
// GLOBAL: CARM95 0x514fc0
br_pixelmap* gPanel_buffer[2];
// GLOBAL: CARM95 0x514fc8
tU32 gSound_time;
// GLOBAL: CARM95 0x514fd0
tFlic_spec gMain_flic_list[372] = {
{ "MAINSTIL.FLI", 1, 0, 0, 0, 0, 25, NULL, 0u }, // only used by the demo (set to "xxxxxxxx.FLI" by the full version)
@ -378,6 +388,7 @@ tFlic_spec gMain_flic_list[372] = {
{ "MAI2OPFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u },
{ "MAI2OPGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }
};
// GLOBAL: CARM95 0x518420
int gFlic_bunch0[29] = {
10,
@ -410,6 +421,7 @@ int gFlic_bunch0[29] = {
135,
45
};
// GLOBAL: CARM95 0x518498
int gFlic_bunch1[31] = {
140,
@ -444,10 +456,13 @@ int gFlic_bunch1[31] = {
43,
154
};
// GLOBAL: CARM95 0x518518
int gFlic_bunch2[8] = { 70, 71, 72, 73, 74, 56, 57, 59 };
// GLOBAL: CARM95 0x518538
int gFlic_bunch3[13] = { 40, 41, 42, 43, 44, 45, 50, 51, 73, 74, 56, 57, 59 };
// GLOBAL: CARM95 0x518570
int gFlic_bunch4[22] = {
80,
@ -473,8 +488,10 @@ int gFlic_bunch4[22] = {
120,
121
};
// GLOBAL: CARM95 0x5185c8
int gFlic_bunch5[5] = { 100, 101, 42, 43, 45 };
// GLOBAL: CARM95 0x5185e0
int gFlic_bunch6[51] = {
190,
@ -529,10 +546,13 @@ int gFlic_bunch6[51] = {
43,
284
};
// GLOBAL: CARM95 0x5186b0
int gFlic_bunch7[7] = { 130, 131, 132, 42, 43, 135, 45 };
// GLOBAL: CARM95 0x5186d0
int gFlic_bunch8[16] = { 290, 291, 292, 293, 294, 295, 296, 297, 42, 43, 154, 301, 42, 43, 304, 305 };
// GLOBAL: CARM95 0x518710
tFlic_bunch gFlic_bunch[9] = {
{ COUNT_OF(gFlic_bunch0), gFlic_bunch0 },
@ -545,34 +565,49 @@ tFlic_bunch gFlic_bunch[9] = {
{ COUNT_OF(gFlic_bunch7), gFlic_bunch7 },
{ COUNT_OF(gFlic_bunch8), gFlic_bunch8 },
};
// GLOBAL: CARM95 0x518758
char gLast_flic_name[14];
// GLOBAL: CARM95 0x53d060
tU32 gPanel_flic_data_length[2];
// GLOBAL: CARM95 0x53d1b8
tU32 gLast_panel_frame_time[2];
// GLOBAL: CARM95 0x53d0b8
tU8* gPanel_flic_data[2];
// GLOBAL: CARM95 0x53d0c0
int gPanel_flic_top[2];
// GLOBAL: CARM95 0x53d0d8
tFlic_descriptor gPanel_flic[2];
// GLOBAL: CARM95 0x53d0b0
int gPanel_flic_left[2];
// GLOBAL: CARM95 0x53d0cc
int gPending_pending_flic = -1;
// GLOBAL: CARM95 0x53d1c0
int gSound_ID;
// GLOBAL: CARM95 0x53d06c
int gTranslation_count;
// GLOBAL: CARM95 0x53d070
tDR_font* gTrans_fonts[15];
// GLOBAL: CARM95 0x53d0d0
tTranslation_record* gTranslations;
// GLOBAL: CARM95 0x53d0c8
br_pixelmap* gPalette;
// GLOBAL: CARM95 0x53d068
void* gPalette_pixels;
// GLOBAL: CARM95 0x53d0ac
tFlic_descriptor* gFirst_flic;

View File

@ -3,263 +3,399 @@
// GLOBAL: CARM95 0x5212f0
int gTyping;
// GLOBAL: CARM95 0x5212f4
int gArrow_mode;
// GLOBAL: CARM95 0x5212f8
int gInfo_on;
// GLOBAL: CARM95 0x5212fc
int gHost_abandon_game;
// GLOBAL: CARM95 0x521300
int gRecover_car;
// GLOBAL: CARM95 0x521304
int gDisallow_abandon_race;
int gPipe_reg_snap_before_new_game;
int gPipe_reg_snap_before_our_car;
int gPipe_reg_snap_after_our_car;
// GLOBAL: CARM95 0x521314
int gAction_replay_mode;
// GLOBAL: CARM95 0x521318
int gDefault_engine_noise_index;
// GLOBAL: CARM95 0x52131c
int gAusterity_mode;
// GLOBAL: CARM95 0x521320
int gSausage_override;
// GLOBAL: CARM95 0x521324
int gAustere_override;
// GLOBAL: CARM95 0x521328
int gSound_override;
// GLOBAL: CARM95 0x52132c
int gKey_map_index;
// GLOBAL: CARM95 0x521330
int gInterface_within_race_mode;
// GLOBAL: CARM95 0x521334
int gCut_scene_override;
// GLOBAL: CARM95 0x521338
int gGame_to_load = -1;
// GLOBAL: CARM95 0x52133c
int gCD_is_in_drive;
// GLOBAL: CARM95 0x521340
br_pixelmap* gRearview_screen;
// GLOBAL: CARM95 0x521344
br_scalar gCut_delay_1;
// GLOBAL: CARM95 0x521348
br_scalar gCut_delay_2;
// GLOBAL: CARM95 0x52134c
br_scalar gCut_delay_3;
// GLOBAL: CARM95 0x521350
br_scalar gCut_delay_4;
// GLOBAL: CARM95 0x521354
br_scalar gYon_multiplier;
// GLOBAL: CARM95 0x521358
tSave_game* gPre_race_saved_game;
FILE* gDiagnostic_file;
br_vector3 gDisabled_vector;
// GLOBAL: CARM95 0x52136c
tU32 gI_am_cheating;
// GLOBAL: CARM95 0x54b220
char gNet_player_name[32];
// GLOBAL: CARM95 0x545440
br_matrix34 gRearview_camera_to_world;
// GLOBAL: CARM95 0x549eb0
tSpecial_volume gDefault_default_water_spec_vol;
// GLOBAL: CARM95 0x545400
br_matrix34 gCamera_to_world;
// GLOBAL: CARM95 0x5454d0
tRace_list_spec gRace_list[100];
// GLOBAL: CARM95 0x546820
tPath_name gApplication_path;
// GLOBAL: CARM95 0x54a068
float gPinball_factor;
// GLOBAL: CARM95 0x54a064
float gOpponent_speed_factor;
// GLOBAL: CARM95 0x54b250
float gCar_crush_min_fold;
// GLOBAL: CARM95 0x549fc0
float gNet_recovery_cost[7];
// GLOBAL: CARM95 0x545474
float gCar_crush_softness;
// GLOBAL: CARM95 0x54b248
br_vector3* gOur_pos;
// GLOBAL: CARM95 0x545368
float gCar_crush_max_fold;
// GLOBAL: CARM95 0x54a020
tBrender_storage gNet_cars_storage_space;
// GLOBAL: CARM95 0x545380
float gNet_softness[7];
// GLOBAL: CARM95 0x54a094
tS32 gJoystick_deadzone;
// GLOBAL: CARM95 0x54b270
float gCar_crush_limit_deviant;
// GLOBAL: CARM95 0x5452e0
float gNet_offensive[7];
// GLOBAL: CARM95 0x545470
float gCar_crush_split_chance;
// GLOBAL: CARM95 0x54532c
float gGravity_multiplier;
// GLOBAL: CARM95 0x545364
float gCar_crush_wibble;
// GLOBAL: CARM95 0x549fe0
float gRepair_cost[3];
// GLOBAL: CARM95 0x5454c0
float gCop_speed_factor;
// GLOBAL: CARM95 0x54535c
float gDefault_gravity;
// GLOBAL: CARM95 0x545334
tU32 gKeys_pressed;
// GLOBAL: CARM95 0x54a054
tSpecial_volume* gDefault_water_spec_vol;
// GLOBAL: CARM95 0x549f60
float gNet_repair_cost[7];
// GLOBAL: CARM95 0x54537c
br_font* gFont_7;
// GLOBAL: CARM95 0x54a00c
tU32 gLast_replay_frame_time;
// GLOBAL: CARM95 0x5453f8
tU32 gTag_start_time;
// GLOBAL: CARM95 0x54b254
tOpponent* gOpponents;
tU32 gLast_credit_tick;
// GLOBAL: CARM95 0x549f80
tBrender_storage gTheir_cars_storage_space;
// GLOBAL: CARM95 0x5452fc
br_font* gHeadup_font;
// GLOBAL: CARM95 0x5454b8
tU32 gRace_finished;
tU32 gFrame_start_time;
// GLOBAL: CARM95 0x546930
tProgram_state gProgram_state;
// GLOBAL: CARM95 0x545370
tU32 gCredit_period_single[3];
// GLOBAL: CARM95 0x54b240
tU32 gRace_start;
// GLOBAL: CARM95 0x5453c0
tBrender_storage gTrack_storage_space;
// GLOBAL: CARM95 0x5453b0
tU32 gFrame_period;
// GLOBAL: CARM95 0x5467ac
tU32 gCredit_period;
// GLOBAL: CARM95 0x545300
tU32 gCredit_period_network[7];
// GLOBAL: CARM95 0x5467c0
tBrender_storage gOur_car_storage_space;
// GLOBAL: CARM95 0x54531c
tU32 gFox_start_time;
// GLOBAL: CARM95 0x546810
br_font* gBig_font;
// GLOBAL: CARM95 0x545480
tBrender_storage gPedestrians_storage_space;
// GLOBAL: CARM95 0x54a0a0
tRace_info gCurrent_race;
// GLOBAL: CARM95 0x54b26c
br_actor* gSelf;
// GLOBAL: CARM95 0x549fb4
br_actor* gDont_render_actor;
// GLOBAL: CARM95 0x5453ac
br_pixelmap* gScreen;
// GLOBAL: CARM95 0x54a06c
br_pixelmap* gRender_screen;
// GLOBAL: CARM95 0x5467b4
br_actor* gRearview_camera;
// GLOBAL: CARM95 0x5453b4
br_scalar gCamera_hither;
// GLOBAL: CARM95 0x545340
br_pixelmap* gBack_screen;
// GLOBAL: CARM95 0x545338
br_scalar gCamera_angle;
// GLOBAL: CARM95 0x546798
br_pixelmap* gDigits_pix;
// GLOBAL: CARM95 0x5454b4
br_pixelmap* gRender_shade_table;
// GLOBAL: CARM95 0x5467b0
br_pixelmap* gRearview_depth_buffer;
br_pixelmap* gWhole_screen;
// GLOBAL: CARM95 0x54a058
br_pixelmap* gIcons_pix;
// GLOBAL: CARM95 0x54a060
br_scalar gCamera_yon;
// GLOBAL: CARM95 0x54533c
br_actor* gCamera;
// GLOBAL: CARM95 0x545360
br_actor* gArrow_actor;
br_pixelmap* gIcons_pix_low_res;
// GLOBAL: CARM95 0x545324
br_pixelmap* gDepth_buffer;
// GLOBAL: CARM95 0x54a080
int gInitial_net_credits[5];
// GLOBAL: CARM95 0x5467a0
float gCar_cred_value[3];
// GLOBAL: CARM95 0x545430
int gNo_races_yet;
// GLOBAL: CARM95 0x5453a0
int gJump_start_fine[3];
// GLOBAL: CARM95 0x5454bc
int gReal_graf_data_index;
// GLOBAL: CARM95 0x549ff0
float gCar_time_value[3];
// GLOBAL: CARM95 0x54679c
int gTyping_slot;
// GLOBAL: CARM95 0x54b260
int gCunning_stunt_bonus[3];
// GLOBAL: CARM95 0x54b258
int gKnobbled_frame_period;
// GLOBAL: CARM95 0x54b24c
br_actor* gNon_track_actor;
// GLOBAL: CARM95 0x546790
int gWait_for_it;
// GLOBAL: CARM95 0x54a070
int gCheck_point_cash[3];
// GLOBAL: CARM95 0x54a010
int gPoints_per_second[3];
// GLOBAL: CARM95 0x5453fc
br_actor* gUniverse_actor;
// GLOBAL: CARM95 0x546920
br_actor* gTrack_actor;
// GLOBAL: CARM95 0x5467f4
int gMap_mode;
// GLOBAL: CARM95 0x54b290
int gPed_time_value[3];
// GLOBAL: CARM95 0x545328
int gAbandon_game;
// GLOBAL: CARM95 0x5467b8
int gLap;
// GLOBAL: CARM95 0x54b274
int gShow_opponents;
// GLOBAL: CARM95 0x54680c
int gTotal_laps;
// GLOBAL: CARM95 0x546794
int gFree_repairs;
// GLOBAL: CARM95 0x546924
int gFreeze_timer;
// GLOBAL: CARM95 0x549ea0
int gRoll_over_creds[3];
// GLOBAL: CARM95 0x545320
int gShow_peds_on_map;
// GLOBAL: CARM95 0x5453f4
int gOn_drugs;
// GLOBAL: CARM95 0x54b280
int gWasted_time[3];
// GLOBAL: CARM95 0x54a008
int gCheckpoint;
// GLOBAL: CARM95 0x546800
int gRoll_over_time[3];
// GLOBAL: CARM95 0x545350
int gWasted_creds[3];
// GLOBAL: CARM95 0x54a004
int gTimer;
// GLOBAL: CARM95 0x549fb8
int gCheckpoint_count;
// GLOBAL: CARM95 0x54a05c
int gCountdown;
// GLOBAL: CARM95 0x549ffc
int gFrame_rate;
// GLOBAL: CARM95 0x545330
int gNumber_of_racers;
// GLOBAL: CARM95 0x54a09c
int gSound_enabled;
// GLOBAL: CARM95 0x54a098
int gGraf_spec_index;
// GLOBAL: CARM95 0x54a000
int gSound_available;
// GLOBAL: CARM95 0x545434
int gNumber_of_races;
char gDir_separator[3] = "";
// GLOBAL: CARM95 0x549eac
char gDir_separator[3];

View File

@ -3,6 +3,7 @@
// GLOBAL: CARM95 0x520038
br_scalar gYon_factor;
// GLOBAL: CARM95 0x530c80
br_material* gMaterial[2];
int g16bit_palette_valid;

View File

@ -4,27 +4,39 @@
// GLOBAL: CARM95 0x50d380
br_scalar gCamera_zoom = 0.2f;
// GLOBAL: CARM95 0x50d384
br_angle gCamera_yaw;
// GLOBAL: CARM95 0x50d388
br_vector3 gView_direction = { { 0.0, 0.0, -1.0 } };
// GLOBAL: CARM95 0x50d394
int gCamera_sign;
// GLOBAL: CARM95 0x50d398
int gCar_flying;
// GLOBAL: CARM95 0x50d39c
int gCamera_reset;
// GLOBAL: CARM95 0x50d3a0
tCar_spec* gCar_to_view = &gProgram_state.current_car;
// GLOBAL: CARM95 0x551438
br_actor* gCamera_list[2];
// GLOBAL: CARM95 0x551450
tCar_spec* gActive_car_list[25];
// GLOBAL: CARM95 0x5514cc
int gNum_active_cars;
// GLOBAL: CARM95 0x5514c0
float gRecovery_cost[3];
// GLOBAL: CARM95 0x5514d0
br_scalar gCamera_height;
// GLOBAL: CARM95 0x551440
br_scalar gMin_camera_car_distance;

View File

@ -3,5 +3,6 @@
// GLOBAL: CARM95 0x5508f0
tCar_spec* gViewable_car_list[50];
// GLOBAL: CARM95 0x5509b8
int gNum_viewable_cars;

View File

@ -3,38 +3,53 @@
// GLOBAL: CARM95 0x50dd94
tNet_mode gNet_mode;
// GLOBAL: CARM95 0x550fa0
tNet_game_player_info gNet_players[6];
br_matrix34 gRoot_to_camera;
// GLOBAL: CARM95 0x550af0
tCar_detail_info gCar_details[60];
// GLOBAL: CARM95 0x550ae0
int gThis_net_player_index;
br_scalar gPedestrian_distance_squared;
// GLOBAL: CARM95 0x551434
int gPending_race;
// GLOBAL: CARM95 0x550aec
tPlayer_ID gLocal_net_ID;
// GLOBAL: CARM95 0x550ae4
int gNumber_of_net_players;
// GLOBAL: CARM95 0x550ad8
int gStart_race_sent;
// GLOBAL: CARM95 0x551424
int gSynch_race_start;
// GLOBAL: CARM95 0x550adc
tNet_game_details* gCurrent_net_game;
// GLOBAL: CARM95 0x550ad4
int gReceived_car_details;
// GLOBAL: CARM95 0x550ae8
int gWaiting_for_unpause;
// GLOBAL: CARM95 0x551428
tNet_game_options* gNet_options;
// GLOBAL: CARM95 0x550ac0
br_vector3 gCamera_direction;
int gNetwork_available;
int gPedestrian_image;
int gHighest_pedestrian_value;
// GLOBAL: CARM95 0x551430
int gNeed_to_send_start_race;
// GLOBAL: CARM95 0x550ad0
int gRendering_mirror;
int gRendering_mirror;

View File

@ -569,6 +569,7 @@ tGraf_data gGraf_data[2] = {
// GLOBAL: CARM95 0x551d88
tGraf_data* gCurrent_graf_data;
// GLOBAL: CARM95 0x551d84
int gGraf_data_index;

View File

@ -42,8 +42,10 @@
// GLOBAL: CARM95 0x520040
int gPalette_munged;
int gColourValues[1];
// GLOBAL: CARM95 0x520048
int gNext_transient;
// GLOBAL: CARM95 0x520050
int gCursor_x_offsets[8] = {
6,
@ -55,6 +57,7 @@ int gCursor_x_offsets[8] = {
16,
36,
};
// GLOBAL: CARM95 0x520070
int gCursor_y_offsets[8] = {
26,
@ -66,6 +69,7 @@ int gCursor_y_offsets[8] = {
12,
5,
};
// GLOBAL: CARM95 0x520090
int gCursor_gib_x_offsets[8] = {
82,
@ -77,6 +81,7 @@ int gCursor_gib_x_offsets[8] = {
66,
36,
};
// GLOBAL: CARM95 0x5200b0
int gCursor_gib_y_offsets[8] = {
74,
@ -88,6 +93,7 @@ int gCursor_gib_y_offsets[8] = {
93,
106,
};
// GLOBAL: CARM95 0x5200d0
int gCursor_giblet_sequence0[7] = {
6,
@ -98,6 +104,7 @@ int gCursor_giblet_sequence0[7] = {
4,
5,
};
// GLOBAL: CARM95 0x5200f0
int gCursor_giblet_sequence1[5] = {
4,
@ -106,6 +113,7 @@ int gCursor_giblet_sequence1[5] = {
8,
9,
};
// GLOBAL: CARM95 0x520108
int gCursor_giblet_sequence2[5] = {
4,
@ -114,6 +122,7 @@ int gCursor_giblet_sequence2[5] = {
12,
13,
};
// GLOBAL: CARM95 0x520120
int gCursor_giblet_sequence3[5] = {
4,
@ -122,6 +131,7 @@ int gCursor_giblet_sequence3[5] = {
16,
17,
};
// GLOBAL: CARM95 0x520138
int* gCursor_giblet_sequences[4] = {
gCursor_giblet_sequence0,
@ -129,6 +139,7 @@ int* gCursor_giblet_sequences[4] = {
gCursor_giblet_sequence2,
gCursor_giblet_sequence3,
};
// GLOBAL: CARM95 0x520148
char* gFont_names[21] = {
"TYPEABLE",
@ -153,6 +164,7 @@ char* gFont_names[21] = {
"LITPLAQ1",
"DRKPLAQ1"
};
// GLOBAL: CARM95 0x5201a0
br_colour gRGB_colours[9] = {
0u,
@ -177,6 +189,7 @@ br_matrix34 gIdentity34 = {
{ 0.0, 0.0, 1.0 },
{ 0.0, 0.0, 0.0 } }
};
// GLOBAL: CARM95 0x520228
tShadow_level gShadow_level = eShadow_us_only;
br_scalar gShadow_hither_z_move;
@ -208,133 +221,197 @@ int gArrows[2][4][60] =
// GLOBAL: CARM95 0x5209b8
float gMap_render_x = 80.f;
// GLOBAL: CARM95 0x5209bc
float gMap_render_y = 6.f;
// GLOBAL: CARM95 0x5209c0
float gMap_render_width = 64.f;
// GLOBAL: CARM95 0x5209c4
float gMap_render_height = 40.f;
// GLOBAL: CARM95 0x5209c8
int gMouse_started;
// GLOBAL: CARM95 0x5209cc
int gFaded_palette;
// GLOBAL: CARM95 0x5209d0
int gAR_fudge_headups;
// GLOBAL: CARM95 0x5209d4
br_pixelmap* gCurrent_splash;
// GLOBAL: CARM95 0x5209d8
br_pixelmap* gCurrent_conversion_table;
// GLOBAL: CARM95 0x5209e0
int gMap_colours[4] = { 4, 0, 52, 132 };
// GLOBAL: CARM95 0x53e798
br_vector3 gShadow_points[8];
// GLOBAL: CARM95 0x53f940
tConcussion gConcussion;
// GLOBAL: CARM95 0x53f080
tClip_details gShadow_clip_planes[8];
// GLOBAL: CARM95 0x53e5f8
br_actor* gLollipops[100];
// GLOBAL: CARM95 0x53f8d8
tWobble_spec gWobble_array[5];
// GLOBAL: CARM95 0x53f0c0
tSaved_table gSaved_shade_tables[100];
// GLOBAL: CARM95 0x53e808
tCursor_giblet gCursor_giblets[45];
// GLOBAL: CARM95 0x53f3f0
tTransient_bm gTransient_bitmaps[50];
// GLOBAL: CARM95 0x54ff30
float gCosine_array[64];
// GLOBAL: CARM95 0x54b300
br_pixelmap* gCursors[8];
// GLOBAL: CARM95 0x550040
br_pixelmap* gCursor_giblet_images[18];
// GLOBAL: CARM95 0x53e790
br_pixelmap* gEval_1;
br_pixelmap* gEval_2;
// GLOBAL: CARM95 0x53f8b8
br_vector3 gShadow_light_z;
// GLOBAL: CARM95 0x53f8a8
br_vector3 gShadow_light_x;
// GLOBAL: CARM95 0x53e7f8
int gShadow_dim_amount;
// GLOBAL: CARM95 0x53f8a0
int gNumber_of_lollipops;
// GLOBAL: CARM95 0x53f8c8
br_vector3 gShadow_light_ray;
// GLOBAL: CARM95 0x53e788
int gFancy_shadow;
// GLOBAL: CARM95 0x53f93c
br_model* gShadow_model;
// GLOBAL: CARM95 0x53e7fc
br_actor* gShadow_actor;
// GLOBAL: CARM95 0x53f928
int gShadow_clip_plane_count;
// GLOBAL: CARM95 0x53e800
br_pixelmap* gPalette_conversion_table;
// GLOBAL: CARM95 0x53f92c
br_material* gShadow_material;
// GLOBAL: CARM95 0x53f3e8
int gSaved_table_count;
// GLOBAL: CARM95 0x53f3e0
int gCurrent_cursor_index;
// GLOBAL: CARM95 0x53f930
int gPalette_index;
// GLOBAL: CARM95 0x53f3e4
int gCursor_transient_index;
// GLOBAL: CARM95 0x53f934
char* gScratch_pixels;
// GLOBAL: CARM95 0x53f078
br_pixelmap* gScratch_palette;
// GLOBAL: CARM95 0x53e78c
int gLast_palette_change;
// GLOBAL: CARM95 0x53f8a4
br_pixelmap* gOrig_render_palette;
// GLOBAL: CARM95 0x550030
br_pixelmap* gCurrent_palette;
// GLOBAL: CARM95 0x54fefc
br_pixelmap* gRender_palette;
// GLOBAL: CARM95 0x54ff08
float gCamera_to_horiz_angle;
// GLOBAL: CARM95 0x54b2d0
int gColours[9];
// GLOBAL: CARM95 0x550088
br_pixelmap* gFlic_palette;
// GLOBAL: CARM95 0x54b330
tDR_font gFonts[21];
// GLOBAL: CARM95 0x550094
char* gCurrent_palette_pixels;
// GLOBAL: CARM95 0x54b320
int gWidth;
// GLOBAL: CARM95 0x54ff18
int gMap_render_height_i;
// GLOBAL: CARM95 0x550038
int gScreen_wobble_x;
// GLOBAL: CARM95 0x550034
int gScreen_wobble_y;
// GLOBAL: CARM95 0x54ff0c
br_scalar gCurrent_ambience;
// GLOBAL: CARM95 0x54b2cc
int gY_offset;
// GLOBAL: CARM95 0x55008c
int gMap_render_width_i;
// GLOBAL: CARM95 0x550090
int gMouse_in_use;
// GLOBAL: CARM95 0x54b2f8
int gHeight;
// GLOBAL: CARM95 0x54ff00
int gMouse_last_y_coord;
// GLOBAL: CARM95 0x54b2f4
int gMouse_last_x_coord;
// GLOBAL: CARM95 0x54ff20
br_scalar gAmbient_adjustment;
// GLOBAL: CARM95 0x54ff14
int gMap_render_x_i;
// GLOBAL: CARM95 0x54ff24
int gX_offset;
// GLOBAL: CARM95 0x54ff10
int gMap_render_y_i;
// GLOBAL: CARM95 0x54ff04
int gMirror_on__graphics; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x54ff1c
br_scalar gYon_squared;

View File

@ -43,24 +43,34 @@
// GLOBAL: CARM95 0x52115c
int gGame_initialized;
// GLOBAL: CARM95 0x521160
int gBr_initialized;
// GLOBAL: CARM95 0x521164
int gBrZb_initialized;
// GLOBAL: CARM95 0x521168
int gInitialisation_finished;
// GLOBAL: CARM95 0x52116c
int gRender_indent;
// GLOBAL: CARM95 0x53fdd0
tU32 gAustere_time;
// GLOBAL: CARM95 0x54b2bc
int gInitial_rank;
// GLOBAL: CARM95 0x54b2b0
int gCredits_per_rank[3];
// GLOBAL: CARM95 0x54b2c0
int gInitial_credits[3];
// GLOBAL: CARM95 0x54b2a0
int gNet_mode_of_last_game;
// GLOBAL: CARM95 0x54b29c
br_material* gDefault_track_material;

View File

@ -13,41 +13,59 @@
// GLOBAL: CARM95 0x514c70
int gEdge_trigger_mode;
// GLOBAL: CARM95 0x514c74
tU32 gLast_poll_keys;
// GLOBAL: CARM95 0x514c78
int gInsert_mode;
// GLOBAL: CARM95 0x514c80
int gGo_ahead_keys[3] = { 51, 52, 106 }; // enter, return, space
// GLOBAL: CARM95 0x5507c0
tJoy_array gJoy_array;
// GLOBAL: CARM95 0x53a250
tKey_array gKey_array;
// GLOBAL: CARM95 0x53a248
int gKey_poll_counter;
// GLOBAL: CARM95 0x53a1f8
tRolling_letter* gRolling_letters;
// GLOBAL: CARM95 0x53a440
int gCurrent_cursor;
// GLOBAL: CARM95 0x53a4c0
int gCurrent_position;
// GLOBAL: CARM95 0x53a200
int gLetter_x_coords[15];
// GLOBAL: CARM95 0x53a240
int gVisible_length;
// GLOBAL: CARM95 0x53a1b8
int gLetter_y_coords[15];
int gThe_key;
// GLOBAL: CARM95 0x53a444
tU32 gLast_key_down_time;
// GLOBAL: CARM95 0x53a1f4
int gThe_length;
// GLOBAL: CARM95 0x53a448
tU32 gLast_roll;
// GLOBAL: CARM95 0x53a244
int gLast_key_down;
// GLOBAL: CARM95 0x5507e0
int gKey_mapping[67];
// GLOBAL: CARM95 0x53a450
char gCurrent_typing[110];

View File

@ -14,16 +14,22 @@
// GLOBAL: CARM95 0x53a4d8
int gDisabled_choices[10];
// GLOBAL: CARM95 0x53a500
int gCurrent_mode;
// GLOBAL: CARM95 0x53a508
tU32 gStart_time;
// GLOBAL: CARM95 0x53a504
int gCurrent_choice;
// GLOBAL: CARM95 0x53a4c8
tInterface_spec* gSpec;
// GLOBAL: CARM95 0x53a4d0
int gAlways_typing;
// GLOBAL: CARM95 0x53a4cc
int gDisabled_count;

View File

@ -81,6 +81,7 @@ tHeadup_info gHeadup_image_info[32] = {
};
char* gYour_car_names[2][6];
char* gDrivable_car_names[6];
// GLOBAL: CARM95 0x50a530
char* gDamage_names[] = {
"engine",
@ -96,6 +97,7 @@ char* gDamage_names[] = {
"lr_wheel",
"rr_wheel"
};
// GLOBAL: CARM95 0x50a560
char* gWheel_actor_names[] = {
"FLWHEEL.ACT",
@ -105,6 +107,7 @@ char* gWheel_actor_names[] = {
"IFLWHEEL.ACT",
"IFRWHEEL.ACT"
};
// GLOBAL: CARM95 0x50a578
char* gRaces_file_names[] = {
"RACES.TXT",
@ -117,36 +120,52 @@ char* gRaces_file_names[] = {
"NETRACES.TXT",
"NETRACES.TXT"
};
// GLOBAL: CARM95 0x50a5a0
char* gNet_avail_names[] = { "never", "eagle", "hawk", "all" };
// GLOBAL: CARM95 0x50a5b0
char* gFloorpan_names[] = { "GBUNDER.MAT", "BGLUNDER.MAT", "GRIMBOT.MAT", "DDBASE.MAT", "HFUNDER.MAT" };
// GLOBAL: CARM95 0x50a5c4
int gAllow_open_to_fail = 1;
// GLOBAL: CARM95 0x50a5c8
int gDecode_thing = '@';
// GLOBAL: CARM95 0x50a5d0
char gDecode_string[] = { 0x9B, 0x52, 0x93, 0x9F, 0x52, 0x98, 0x9B, 0x96, 0x96, 0x9E, 0x9B, 0xA0, 0x99, 0x0 };
// GLOBAL: CARM95 0x531f00
int gFunk_groove_flags[30];
// GLOBAL: CARM95 0x531f80
char gDef_def_water_screen_name[32];
// GLOBAL: CARM95 0x531dfc
br_material* gDestn_screen_mat;
// GLOBAL: CARM95 0x531f78
br_material* gSource_screen_mat;
// GLOBAL: CARM95 0x531f7c
int gCurrent_race_file_index;
// GLOBAL: CARM95 0x531df8
int gGroove_funk_offset;
// GLOBAL: CARM95 0x551da8
int gDemo_armour;
// GLOBAL: CARM95 0x551db0
int gDemo_rank;
// GLOBAL: CARM95 0x551d90
int gDemo_opponents[5];
// GLOBAL: CARM95 0x551da4
int gDemo_power;
// GLOBAL: CARM95 0x551dac
int gDemo_offensive;

View File

@ -24,8 +24,10 @@
// GLOBAL: CARM95 0x536278
tSave_game* gSaved_games[8];
// GLOBAL: CARM95 0x536270
int gStarted_typing;
// GLOBAL: CARM95 0x536274
int gSave_allowed;

View File

@ -39,40 +39,58 @@
// GLOBAL: CARM95 0x514afc
int gNasty_kludgey_cockpit_variable;
// GLOBAL: CARM95 0x514b00
tInfo_mode gInfo_mode;
// GLOBAL: CARM95 0x514b04
tU32 gLast_tick_count;
// GLOBAL: CARM95 0x514b08
tU32 gActual_last_tick_count;
// GLOBAL: CARM95 0x514b0c
tU32 gAverage_frame_period;
// GLOBAL: CARM95 0x53a1a8
tU32 gOld_camera_time;
// GLOBAL: CARM95 0x53a118
tU32 gLast_wasted_massage_start;
// GLOBAL: CARM95 0x53a114
float gMr_odo;
// GLOBAL: CARM95 0x53a0e8
tU32 gWasted_last_flash;
// GLOBAL: CARM95 0x53a120
tTime_bonus_state gTime_bonus_state;
// GLOBAL: CARM95 0x53a104
int gQueued_wasted_massages_count;
// GLOBAL: CARM95 0x53a11c
int gTime_bonus;
// GLOBAL: CARM95 0x53a1a4
int gRace_bonus_headup;
// GLOBAL: CARM95 0x53a10c
int gWasted_flash_state;
// GLOBAL: CARM95 0x53a110
int gLast_time_headup;
// GLOBAL: CARM95 0x53a1a0
int gTime_bonus_headup;
// GLOBAL: CARM95 0x53a0f0
int gQueued_wasted_massages[5];
// GLOBAL: CARM95 0x53a124
tU32 gTime_bonus_start;
// GLOBAL: CARM95 0x53a108
int gLast_credit_headup__mainloop; // suffix added to avoid duplicate symbol

View File

@ -22,15 +22,20 @@
#include <stdlib.h>
// GLOBAL: CARM95 0x536264
char* gPalette_copy__mainmenu; // suffix added to avoid duplicate symbol
char* gPalette_copy__mainmenu; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53625c
int gPixel_buffer_size__mainmenu; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x536260
tInterface_spec* gMain_menu_spec;
// GLOBAL: CARM95 0x536268
int gMouse_was_started__mainmenu; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53626c
int gReplace_background;
// GLOBAL: CARM95 0x536258
char* gPixels_copy__mainmenu; // suffix added to avoid duplicate symbol

View File

@ -30,20 +30,28 @@
// GLOBAL: CARM95 0x50c5e0
int gPowerup_cost[4] = { 1500, 2500, 4000, 6000 };
// GLOBAL: CARM95 0x50c5f0
int gGame_scores[6] = { 1, 2, 3, 4, 6, 10 };
// GLOBAL: CARM95 0x53220c
int gPed_target;
// GLOBAL: CARM95 0x532210
int gNot_shown_race_type_headup;
// GLOBAL: CARM95 0x532208
tU32 gLast_it_change;
// GLOBAL: CARM95 0x532204
tU32 gTime_for_punishment;
// GLOBAL: CARM95 0x532200
tNet_game_player_info* gLast_lepper;
// GLOBAL: CARM95 0x551d7c
int gInitialised_grid;
// GLOBAL: CARM95 0x551d80
int gIt_or_fox;

View File

@ -31,73 +31,105 @@
tU32 gMess_max_flags;
tU32 gMess_mid_flags;
tU32 gMess_min_flags;
// GLOBAL: CARM95 0x50d224
tU32 gGuarantee_number;
// GLOBAL: CARM95 0x50d228
int gNet_service_disable = 0;
// GLOBAL: CARM95 0x50d22c
int gIn_net_service = 0;
// GLOBAL: CARM95 0x50d230
int gPlayer_list_batch_number = 0;
// GLOBAL: CARM95 0x50d234
int gOnly_receive_guarantee_replies = 0;
// GLOBAL: CARM95 0x50d238
void* gMessage_to_free;
// GLOBAL: CARM95 0x50d23c
tNet_message* gBroadcast_stack;
// GLOBAL: CARM95 0x50d240
tNet_message* gTo_host_stack;
// GLOBAL: CARM95 0x50d244
tU32 gLast_flush_message = 0;
// GLOBAL: CARM95 0x50d248
int gRace_only_flags[33] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
0
};
// GLOBAL: CARM95 0x50d2cc
int gJoin_list_mode;
// GLOBAL: CARM95 0x535dd0
tNet_game_player_info gNew_net_players[6];
// GLOBAL: CARM95 0x534c90
tGuaranteed_message gGuarantee_list[100]; // DOS debug symbols has this as [150]
// GLOBAL: CARM95 0x534c70
tMid_message* gMid_messages;
// GLOBAL: CARM95 0x534c74
tU32 gLast_player_list_received;
// GLOBAL: CARM95 0x534c7c
tMin_message* gMin_messages;
void (*gAdd_proc)(tNet_game_details*);
// GLOBAL: CARM95 0x534c64
int gReceiving_batch_number;
// GLOBAL: CARM95 0x536250
int gReceiving_new_players;
// GLOBAL: CARM95 0x534c80
tMax_message* gMax_messages;
// GLOBAL: CARM95 0x534c58
int gNext_guarantee;
// GLOBAL: CARM95 0x534c84
tU32 gAsk_time;
// GLOBAL: CARM95 0x551420
int gNet_initialised;
// GLOBAL: CARM95 0x534c60
int gDont_allow_joiners;
// GLOBAL: CARM95 0x536254
tNet_game_details* gCurrent_join_poll_game;
// GLOBAL: CARM95 0x534c8c
int gMessage_header_size;
// GLOBAL: CARM95 0x534c5c
int gJoin_poll_index;
// GLOBAL: CARM95 0x534c88
int gJoin_request_denied;
// GLOBAL: CARM95 0x534c68
int gHost_died;
// GLOBAL: CARM95 0x535dc4
int gCar_was_taken;
// GLOBAL: CARM95 0x534c78
int gBastard_has_answered;
// GLOBAL: CARM95 0x535dc8
int gTime_for_next_one;
// GLOBAL: CARM95 0x5514d4
int gReceived_game_scores;

View File

@ -27,11 +27,14 @@
// GLOBAL: CARM95 0x51e910
tU8* gFrank_flic_data;
// GLOBAL: CARM95 0x51e914
tU8* gAnne_flic_data;
// GLOBAL: CARM95 0x51e918
int gNet_storage_allocated;
// clang-format off
// GLOBAL: CARM95 0x51e920
tRadio_bastards gRadio_bastards__newgame[11] = { // suffix added to avoid duplicate symbol
{ 1, 32, 0, { 245, 0, 0, 0, 0, }, },
@ -49,38 +52,54 @@ tRadio_bastards gRadio_bastards__newgame[11] = { // suffix added to avoid duplic
// clang-format on
char _name1[] = "xxxxxxxx.TXT"; // keep compiler happy
char _name2[] = "yyyyyyyy.TXT"; // keep compiler happy
// GLOBAL: CARM95 0x51ea80
char* gBasic_car_names[2] = { _name1, _name2 };
// GLOBAL: CARM95 0x5500c0
tNet_game_options gNet_settings[8];
// GLOBAL: CARM95 0x53e5c0
tJoinable_game gGames_to_join[6];
// GLOBAL: CARM95 0x53e5b8
tNet_game_options* gOptions;
// GLOBAL: CARM95 0x5500a0
int gNet_target[7];
// GLOBAL: CARM95 0x53e5f0
int gLast_graph_sel__newgame; // suffix added to avoid duplicate symbol
int gLast_graph_sel__newgame; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53e59c
tInterface_spec* gThe_interface_spec__newgame; // suffix added to avoid duplicate symbol
tInterface_spec* gThe_interface_spec__newgame; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53e5a8
tNet_sequence_type gNet_race_sequence__newgame; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x550098
tNet_game_type gLast_game_type;
int gCurrent_net_game_count;
// GLOBAL: CARM95 0x53e5f4
tU32 gAnne_flic_data_length;
// GLOBAL: CARM95 0x53e5a0
int gShifted_default_yet;
char* gNet_name;
// GLOBAL: CARM95 0x53e598
tU32 gFrank_flic_data_length;
// GLOBAL: CARM95 0x53e5a4
int gLast_net_choose_box;
// GLOBAL: CARM95 0x53e594
int gCurrent_game_selection;
// GLOBAL: CARM95 0x53e5b4
int gRace_index;
// GLOBAL: CARM95 0x53e590
int gRadio_selected;

View File

@ -13,12 +13,15 @@
// GLOBAL: CARM95 0x509a38
char* gOil_pixie_names[1] = { "OIL.PIX" };
// GLOBAL: CARM95 0x509a3c
int gNext_oil_pixie = 0;
br_scalar gZ_buffer_diff;
br_scalar gMin_z_diff;
// GLOBAL: CARM95 0x551dc0
br_pixelmap* gOil_pixies[1];
// GLOBAL: CARM95 0x551dd0
tOil_spill_info gOily_spills[15];

View File

@ -23,125 +23,183 @@
// GLOBAL: CARM95 0x5070d0
br_actor* gOppo_path_actor;
// GLOBAL: CARM95 0x5070d4
br_model* gOppo_path_model;
// GLOBAL: CARM95 0x5070d8
br_material* gMat_dk_yel;
// GLOBAL: CARM95 0x5070dc
br_material* gMat_md_yel;
// GLOBAL: CARM95 0x5070e0
br_material* gMat_lt_yel;
// GLOBAL: CARM95 0x5070e4
br_material* gMat_dk_red;
// GLOBAL: CARM95 0x5070e8
br_material* gMat_lt_red;
// GLOBAL: CARM95 0x5070ec
br_material* gMat_dk_grn;
// GLOBAL: CARM95 0x5070f0
br_material* gMat_lt_grn;
// GLOBAL: CARM95 0x5070f4
br_material* gMat_dk_blu;
// GLOBAL: CARM95 0x5070f8
br_material* gMat_lt_blu;
// GLOBAL: CARM95 0x5070fc
br_material* gMat_dk_turq;
// GLOBAL: CARM95 0x507100
br_material* gMat_lt_turq;
// GLOBAL: CARM95 0x507104
br_material* gMat_dk_gry;
// GLOBAL: CARM95 0x507108
br_material* gMat_md_gry;
// GLOBAL: CARM95 0x50710c
br_material* gMat_lt_gry;
// GLOBAL: CARM95 0x507110
int gMellow_opponents;
// GLOBAL: CARM95 0x507114
int gTest_toggle;
// GLOBAL: CARM95 0x507118
int gAlready_elasticating;
int gVertices_used_in_non_edit_paths;
int gFaces_used_in_non_edit_paths;
// GLOBAL: CARM95 0x507124
int gMats_allocated;
// GLOBAL: CARM95 0x507128
int gOppo_paths_shown;
// GLOBAL: CARM95 0x50712c
int gMade_path_filename;
// GLOBAL: CARM95 0x507130
int gBIG_APC_index = -1;
// GLOBAL: CARM95 0x507138
char* gPath_section_type_names[3];
// GLOBAL: CARM95 0x507144
int gMin_bangness = 100;
// GLOBAL: CARM95 0x507148
int gMax_bangness;
// GLOBAL: CARM95 0x50714c
tU32 gNext_elastication;
// GLOBAL: CARM95 0x507150
tU32 gNext_write_during_elastication;
char* gCop_name = "Faceless Cop";
char* gDrone_name = "Innocent Civilian";
// GLOBAL: CARM95 0x50715c
int gChallenger_index__opponent = -1; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x507160
int gSFS_count;
// GLOBAL: CARM95 0x507164
int gSFS_total_cycles;
// GLOBAL: CARM95 0x507168
int gSFS_max_cycles;
// GLOBAL: CARM95 0x50716c
float gOpponent_nastyness_frigger = 1.f;
// GLOBAL: CARM95 0x530ca8
char gOppo_path_filename[256];
// GLOBAL: CARM95 0x530df0
br_scalar gIn_view_distance;
// GLOBAL: CARM95 0x530de8
tU8* gBit_per_node;
// GLOBAL: CARM95 0x530da8
int gGrudge_reduction_per_period;
// GLOBAL: CARM95 0x530df8
int gSFS_cycles_this_time;
// GLOBAL: CARM95 0x530dec
br_scalar gMinimum_yness_before_knackerisation;
int gWanky_arse_tit_fuck;
// GLOBAL: CARM95 0x530df4
br_scalar gHead_on_cos_value;
// GLOBAL: CARM95 0x530de0
tU32 gNext_grudge_reduction;
// GLOBAL: CARM95 0x530dd0
br_scalar gCop_pursuit_speed_percentage_multiplier;
// GLOBAL: CARM95 0x530db8
br_scalar gDefinite_cop_pursuit_speed;
// GLOBAL: CARM95 0x530dd8
int gAcknowledged_start;
// GLOBAL: CARM95 0x530ca0
int gStart_jumped;
// GLOBAL: CARM95 0x530dc8
int gNum_of_opponents_getting_near;
// GLOBAL: CARM95 0x530dcc
int gNumber_of_cops_before_faffage;
// GLOBAL: CARM95 0x530dc0
int gFirst_frame;
// GLOBAL: CARM95 0x530dac
tU32 gAcme_frame_count;
// GLOBAL: CARM95 0x530dbc
br_scalar gDefinite_no_cop_pursuit_speed;
// GLOBAL: CARM95 0x530de4
int gNum_of_opponents_completing_race;
// GLOBAL: CARM95 0x530c98
int gNum_of_opponents_pursuing;
// GLOBAL: CARM95 0x530dc4
int gActive_car_list_rebuild_required;
// GLOBAL: CARM95 0x530db4
br_scalar gFrame_period_for_this_munging_in_secs;
// GLOBAL: CARM95 0x530c94
int gBig_bang;
// GLOBAL: CARM95 0x530ddc
int gProcessing_opponents;
// GLOBAL: CARM95 0x5520e0
tU32 gFrame_period_for_this_munging;
// GLOBAL: CARM95 0x5520e4
tU32 gTime_stamp_for_this_munging;
// GLOBAL: CARM95 0x530c90
tS16 gMobile_section;

View File

@ -27,6 +27,7 @@
// GLOBAL: CARM95 0x519ad8
int gKey_defns[18] = { 48, 49, 46, 47, 53, 44, 59, 57, 55, 45, 50, 51, 52, 56, 62, 63, 64, 66 };
// GLOBAL: CARM95 0x519b20
tRadio_bastards gRadio_bastards__options[13] = {
// suffix added to avoid duplicate symbol
@ -44,20 +45,28 @@ tRadio_bastards gRadio_bastards__options[13] = {
{ 3, 150, 0, { 132, 164, 207, 0, 0 } },
{ 4, 153, 0, { 177, 199, 220, 242, 0 } },
};
// GLOBAL: CARM95 0x53d1d4
int gKey_count;
// GLOBAL: CARM95 0x53d1d0
int gLast_graph_sel__options; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53d2f0
char* gKey_names[125];
// GLOBAL: CARM95 0x53d4e4
int gPending_entry;
// GLOBAL: CARM95 0x53d2ec
tInterface_spec* gThe_interface_spec__options; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53d1e0
int gOrig_key_mapping[67];
// GLOBAL: CARM95 0x53d1d8
br_pixelmap* gDials_pix;
// GLOBAL: CARM95 0x53d4e8
int gCurrent_key;

View File

@ -36,26 +36,35 @@
#define PEDESTRIAN_MAGIC FOURCC('P', 'e', 'd', '!')
#define ActorToPedestrianData(ACTOR) ((tPedestrian_data*)((ACTOR)->type_data))
#define GET_PEDESTRIAN_INDEX(P) ((P)-gPedestrian_array)
#define GET_PEDESTRIAN_INDEX(P) ((P) - gPedestrian_array)
// GLOBAL: CARM95 0x511740
int gDetect_peds = 1;
// GLOBAL: CARM95 0x511744
int gReally_stupid_ped_bug_enable = 0;
// GLOBAL: CARM95 0x511748
int gPed_sound_disable = 0;
// GLOBAL: CARM95 0x51174c
int gVesuvians_last_time = 0;
// GLOBAL: CARM95 0x511750
int gSend_peds = 1;
// GLOBAL: CARM95 0x511754
tU32 gLast_ped_message_send = 0;
// GLOBAL: CARM95 0x511758
tPedestrian_instruction* gInitial_instruction = NULL;
// GLOBAL: CARM95 0x511760
char* gRate_commands[3] = { "fixed", "speed", "variable" };
// GLOBAL: CARM95 0x51176c
char* gCollide_commands[1] = { "collide" };
// GLOBAL: CARM95 0x511770
char* gInstruc_commands[10] = {
"point",
@ -69,14 +78,19 @@ char* gInstruc_commands[10] = {
"faction",
"reverse"
};
// GLOBAL: CARM95 0x511798
float gMin_ped_gib_speeds[4] = { 10000.f, .005f, .002f, .001f };
// GLOBAL: CARM95 0x5117a8
float gPed_gib_distrib[4] = { 0.f, 0.33f, 0.34f, 0.33f };
// GLOBAL: CARM95 0x5117b8
float gPed_gib_speeds[4] = { 0.f, 1.f, 1.f, 1.f };
// GLOBAL: CARM95 0x5117c8
int gPed_size_counts[4] = { 3, 5, 5, 5 };
// GLOBAL: CARM95 0x5117d8
char* gPed_gib_names[4][5] = {
{ "BIGGIBS.PIX", "BIGGIBS2.PIX", "BIGGIBS3.PIX", "", "" },
@ -84,6 +98,7 @@ char* gPed_gib_names[4][5] = {
{ "HAND.PIX", "CHUNK02.PIX", "EYEBALL.PIX", "COLON.PIX", "CHUNK01.PIX" },
{ "CHUNK04.PIX", "SPLAT1.PIX", "CHUNK03.PIX", "SPLAT2.PIX", "SPLATOUT.PIX" }
};
// GLOBAL: CARM95 0x511828
char* gPed_geb_names[4][5] = {
{ "GBIGGIBS.PIX", "GBIGGIB2.PIX", "GBIGGIB3.PIX", "", "" },
@ -91,6 +106,7 @@ char* gPed_geb_names[4][5] = {
{ "GHAND.PIX", "GCHUNK02.PIX", "GEYEBALL.PIX", "GCOLON.PIX", "GCHUNK01.PIX" },
{ "GCHUNK04.PIX", "GSPLAT1.PIX", "GCHUNK03.PIX", "GSPLAT2.PIX", "GSPLATOT.PIX" }
};
// GLOBAL: CARM95 0x511878
int gPed_gib_maxes[4][5] = {
{ 1, 1, 1, 0, 0 },
@ -98,90 +114,131 @@ int gPed_gib_maxes[4][5] = {
{ 3, 3, 2, 3, 3 },
{ 3, 3, 3, 3, 3 },
};
// GLOBAL: CARM95 0x5118c8
br_scalar gExploding_ped_scale[3] = { 0.0028f, 0.0033f, 0.0045f };
// GLOBAL: CARM95 0x5118d8
br_vector3 gZero_v__pedestrn; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x5118e8
int gPed_instruc_count = 0;
// GLOBAL: CARM95 0x536b50
int gPed_count;
// GLOBAL: CARM95 0x5118f0
br_actor* gPath_actor = NULL;
// GLOBAL: CARM95 0x5118f4
br_actor* gCurrent_ped_path_actor = NULL;
// GLOBAL: CARM95 0x5118f8
int gPedestrians_on = 0;
// GLOBAL: CARM95 0x5118fc
int gVesuvian_corpses = 0;
// GLOBAL: CARM95 0x5118e4
br_material* gPed_material = NULL;
// GLOBAL: CARM95 0x5378c8
int gPed_gib_counts[4][5];
// GLOBAL: CARM95 0x536c48
tPedestrian_instruction gPed_instrucs[100];
// GLOBAL: CARM95 0x537418
tPed_gib gPed_gibs[30];
// GLOBAL: CARM95 0x536ab0
tPed_gib_materials gPed_gib_materials[4];
// GLOBAL: CARM95 0x536b58
tProximity_ray gProximity_rays[20];
int gPed_colliding;
// GLOBAL: CARM95 0x550a90
float gZombie_factor;
// GLOBAL: CARM95 0x550aac
int gRespawn_variance;
// GLOBAL: CARM95 0x550a94
br_scalar gPed_scale_factor;
// GLOBAL: CARM95 0x550a8c
int gTotal_peds;
// GLOBAL: CARM95 0x550aa0
int gPedestrian_harvest;
br_vector3 gPed_pos_camera;
// GLOBAL: CARM95 0x550aa4
int gMin_respawn_time;
// GLOBAL: CARM95 0x536b38
br_material* gPath_mat_calc;
// GLOBAL: CARM95 0x550aa8
float gPedestrian_speed_factor;
// GLOBAL: CARM95 0x550a88
int gExploding_pedestrians;
// GLOBAL: CARM95 0x550a84
int gBlind_pedestrians;
// GLOBAL: CARM95 0x536b18
br_material* gPath_mat_normal;
// GLOBAL: CARM95 0x536b1c
br_material* gInit_pos_mat_calc;
int gPed_other;
// GLOBAL: CARM95 0x550a98
int gAttracted_pedestrians;
// GLOBAL: CARM95 0x536aac
int gPed_ref_num;
// GLOBAL: CARM95 0x536b24
br_scalar gMax_distance_squared;
// GLOBAL: CARM95 0x536b28
br_model* gPed_model;
// GLOBAL: CARM95 0x536b20
float gDanger_level;
// GLOBAL: CARM95 0x536b40
br_vector3 gDanger_direction;
// GLOBAL: CARM95 0x536b4c
int gInit_ped_instruc;
// GLOBAL: CARM95 0x536b10
int gCurrent_lollipop_index;
// GLOBAL: CARM95 0x536aa8
int gVesuvians_this_time;
int gNumber_of_ped_gibs;
// GLOBAL: CARM95 0x536b14
tPedestrian_data* gFlag_waving_bastard;
// GLOBAL: CARM95 0x5118ec
int gNumber_of_pedestrians = 0;
// GLOBAL: CARM95 0x536b30
br_pixelmap* gProx_ray_shade_table;
// GLOBAL: CARM95 0x53791c
tPedestrian_data* gPedestrian_array;
// GLOBAL: CARM95 0x536b34
tU32 gLast_ped_splat_time;
// GLOBAL: CARM95 0x537918
int gCurrent_ped_multiplier;

View File

@ -23,14 +23,19 @@
// GLOBAL: CARM95 0x50ba00
tU8* gPipe_buffer_start = NULL;
// GLOBAL: CARM95 0x50ba04
int gDisable_sound = 0;
// GLOBAL: CARM95 0x50ba08
int gDisable_advance = 0;
// GLOBAL: CARM95 0x50ba0c
int gMax_rewind_chunks = 1000;
// GLOBAL: CARM95 0x50ba10
float gWall_severity = 0.f;
// GLOBAL: CARM95 0x50ba18
tPipe_reset_proc* gReset_procs[32] = {
NULL,
@ -67,58 +72,84 @@ tPipe_reset_proc* gReset_procs[32] = {
NULL,
};
tPiped_registration_snapshot gRegistration_snapshots[5];
// GLOBAL: CARM95 0x531ffc
tPipe_smudge_data* gSmudge_space;
// GLOBAL: CARM95 0x532010
tU32 gOldest_time;
int gCurrent_snapshot_registration_index;
// GLOBAL: CARM95 0x531fa0
tPipe_chunk* gMr_chunky;
// GLOBAL: CARM95 0x532040
tCar_spec* gCar_ptr;
// GLOBAL: CARM95 0x532068
br_vector3 gZero_vector;
// GLOBAL: CARM95 0x532050
tPipe_chunk_type gReentrancy_array[5];
// GLOBAL: CARM95 0x532000
tU32 gLast_time;
// GLOBAL: CARM95 0x53204c
tPipe_model_geometry_data* gModel_geometry_space;
// GLOBAL: CARM95 0x531ff8
tU32 gEnd_time;
// GLOBAL: CARM95 0x532094
tU32 gTrigger_time;
// GLOBAL: CARM95 0x532074
int gReentrancy_count;
// GLOBAL: CARM95 0x532030
br_vector3 gCar_pos;
// GLOBAL: CARM95 0x532020
br_vector3 gReference_pos;
// GLOBAL: CARM95 0x532004
br_scalar gMax_distance;
// GLOBAL: CARM95 0x532084
tU32 gLoop_abort_time;
// GLOBAL: CARM95 0x532078
br_vector3 gWall_impact_point;
// GLOBAL: CARM95 0x532044
tU8* gPipe_buffer_working_end;
// GLOBAL: CARM95 0x532098
tU32 gYoungest_time;
// GLOBAL: CARM95 0x53208c
tU8* gPipe_buffer_phys_end;
tU8* gLocal_buffer_record_ptr;
// GLOBAL: CARM95 0x532018
tU8* gPipe_play_ptr;
// GLOBAL: CARM95 0x532048
tU8* gEnd_of_session;
// GLOBAL: CARM95 0x53201c
tU8* gPipe_record_ptr;
// GLOBAL: CARM95 0x53200c
tU8* gPipe_buffer_oldest;
// GLOBAL: CARM95 0x532088
tU32 gPipe_buffer_size;
// GLOBAL: CARM95 0x532014
tU8* gLocal_buffer;
// GLOBAL: CARM95 0x532090
tU32 gLocal_buffer_size;
tPipe_chunk* gIncidentChunk; // FIXME: added by DethRace (really needed?)

View File

@ -60,6 +60,7 @@ tGot_proc* gGot_procs[34] = {
SetPedHarvest,
SetVesuvianCorpses,
};
// GLOBAL: CARM95 0x50bb20
tLose_proc* gLose_procs[34] = {
NULL,
@ -97,6 +98,7 @@ tLose_proc* gLose_procs[34] = {
ResetPedHarvest,
ResetVesuvianCorpses,
};
// GLOBAL: CARM95 0x50bba8
tPeriodic_proc* gPeriodic_procs[34] = {
NULL,
@ -134,28 +136,38 @@ tPeriodic_proc* gPeriodic_procs[34] = {
NULL,
NULL,
};
// GLOBAL: CARM95 0x50bc30
tU32* gReal_render_palette;
// GLOBAL: CARM95 0x50bc38
char* gFizzle_names[3] = { "CIRCLES.PIX", "SQUARES.PIX", "DIAMONDS.PIX" };
// GLOBAL: CARM95 0x50bc48
br_vector3 gZero_v__powerup; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x50bc58
int gPed_harvest_sounds[4] = { 4010, 4012, 4030, 4032 };
// GLOBAL: CARM95 0x5320a0
tHeadup_icon gIcon_list[20];
// GLOBAL: CARM95 0x5321f0
br_pixelmap* gFizzle_in[3];
// GLOBAL: CARM95 0x5321fc
int gNumber_of_powerups;
// GLOBAL: CARM95 0x5321e4
int gFizzle_height;
// GLOBAL: CARM95 0x5321e0
int gNumber_of_icons;
// GLOBAL: CARM95 0x5321e8
tPowerup* gPowerup_array;
#define GET_POWERUP_INDEX(POWERUP) ((POWERUP)-gPowerup_array)
#define GET_POWERUP_INDEX(POWERUP) ((POWERUP) - gPowerup_array)
// IDA: void __usercall LosePowerupX(tPowerup *pThe_powerup@<EAX>, int pTell_net_players@<EDX>)
// FUNCTION: CARM95 0x42cff6

View File

@ -18,30 +18,43 @@
// GLOBAL: CARM95 0x50f064
tS3_sound_tag gWhirr_noise = 0;
// GLOBAL: CARM95 0x5362b0
tFlic_descriptor gPrat_flic;
// GLOBAL: CARM95 0x536334
tPrat_sequence* gPratcam_sequences;
// GLOBAL: CARM95 0x536324
tPrat_flic_spec* gPratcam_flics;
// GLOBAL: CARM95 0x536320
int gCurrent_pratcam_chunk;
// GLOBAL: CARM95 0x53632c
int gPending_ambient_prat;
// GLOBAL: CARM95 0x5362a0
int gCurrent_pratcam_index;
// GLOBAL: CARM95 0x536340
br_pixelmap* gPrat_buffer;
// GLOBAL: CARM95 0x536330
int gNumber_of_prat_sequences;
// GLOBAL: CARM95 0x5362a4
int gNumber_of_prat_flics;
// GLOBAL: CARM95 0x53633c
tU32 gLast_pratcam_frame_time;
// GLOBAL: CARM95 0x536328
int gCurrent_pratcam_precedence;
// GLOBAL: CARM95 0x536338
int gCurrent_ambient_prat_sequence;
// GLOBAL: CARM95 0x5362a8
int gCurrent_pratcam_alternative;

View File

@ -28,65 +28,95 @@
// GLOBAL: CARM95 0x50f198
int gGrid_number_colour[4] = { 49u, 201u, 1u, 201u };
// GLOBAL: CARM95 0x50f1a8
int gJust_bought_part;
// GLOBAL: CARM95 0x50f1ac
tU32 gLast_host_query;
// GLOBAL: CARM95 0x550acc
br_pixelmap* gDead_car;
// GLOBAL: CARM95 0x536408
int gFade_away_parts_shop;
// GLOBAL: CARM95 0x53635c
tU32 gDare_start_time;
// GLOBAL: CARM95 0x536418
int gRefund_rate;
// GLOBAL: CARM95 0x53640c
int gSwap_grid_2;
// GLOBAL: CARM95 0x536410
int gSwap_grid_1;
// GLOBAL: CARM95 0x5363f0
int gChange_race_net_mode;
// GLOBAL: CARM95 0x53641c
tParts_category gPart_category;
tU32 gNet_synch_start;
// GLOBAL: CARM95 0x53634c
tNet_game_details* gChoose_car_net_game;
// GLOBAL: CARM95 0x536404
int gPart_index;
// GLOBAL: CARM95 0x53636c
int gChallenger_index__racestrt; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x536360
tGrid_draw gDraw_grid_status;
// GLOBAL: CARM95 0x5363ec
tNet_sequence_type gNet_race_sequence__racestrt; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53642c
br_pixelmap* gTaken_image;
// GLOBAL: CARM95 0x536370
int gGrid_number_x_coords[31];
// GLOBAL: CARM95 0x5363f4
int gGrid_transition_stage;
// GLOBAL: CARM95 0x536428
int gGrid_y_adjust;
// GLOBAL: CARM95 0x536400
br_pixelmap* gBullet_image;
// GLOBAL: CARM95 0x5363f8
br_pixelmap* gDeceased_image;
// GLOBAL: CARM95 0x536364
int gBest_pos_available;
// GLOBAL: CARM95 0x536358
int gChallenger_position;
// GLOBAL: CARM95 0x536414
int gOpponent_index;
// GLOBAL: CARM95 0x5363fc
int gChallenge_time;
// GLOBAL: CARM95 0x536354
int gOriginal_position;
// GLOBAL: CARM95 0x536420
int gCurrent_race_index;
// GLOBAL: CARM95 0x536350
tInterface_spec* gStart_interface_spec;
// GLOBAL: CARM95 0x536424
int gCurrent_car_index;
// GLOBAL: CARM95 0x536368
int gOur_starting_position;

View File

@ -26,62 +26,91 @@
// GLOBAL: CARM95 0x530e38
int gPlayer_lookup[6];
// GLOBAL: CARM95 0x530e58
tMouse_area gOld_back_button;
// GLOBAL: CARM95 0x530ec0
tWreck_info gWreck_array[30];
// GLOBAL: CARM95 0x530e94
br_actor* gWreck_root;
// GLOBAL: CARM95 0x530e2c
br_actor* gWreck_camera;
// GLOBAL: CARM95 0x530eac
tU32 gWreck_start_zoom;
// GLOBAL: CARM95 0x530ea4
tU32 gWreck_gallery_start;
// GLOBAL: CARM95 0x530e28
float gTemp_rank_increase;
// GLOBAL: CARM95 0x530eb8
float gRank_per_ms;
// GLOBAL: CARM95 0x530eb0
tU32 gLast_wreck_draw;
// GLOBAL: CARM95 0x530ea0
tS3_sound_tag gSumm_sound;
// GLOBAL: CARM95 0x530e8c
float gCredits_per_ms;
// GLOBAL: CARM95 0x530e10
tMouse_area* gBack_button_ptr;
// GLOBAL: CARM95 0x530e18
tU32 gSummary_start;
// GLOBAL: CARM95 0x530e98
br_pixelmap* gWreck_z_buffer;
// GLOBAL: CARM95 0x530e08
br_pixelmap* gWreck_render_area;
// GLOBAL: CARM95 0x531d48
int gWreck_selected;
// GLOBAL: CARM95 0x531d4c
int gWreck_zoom_out;
// GLOBAL: CARM95 0x530e90
br_pixelmap* gChrome_font;
// GLOBAL: CARM95 0x530eb4
int gWreck_zoom_in;
// GLOBAL: CARM95 0x530ea8
int gTemp_credits;
// GLOBAL: CARM95 0x530e50
int gUser_interacted;
// GLOBAL: CARM95 0x530e00
int gWreck_count;
// GLOBAL: CARM95 0x530e88
int gRank_etc_munged;
// GLOBAL: CARM95 0x530e0c
int gRank_increase;
// GLOBAL: CARM95 0x530e14
int gTemp_earned;
// GLOBAL: CARM95 0x530e30
int gTemp_rank;
// GLOBAL: CARM95 0x530e24
int gWreck_zoomed_in;
// GLOBAL: CARM95 0x530e04
int gDone_initial;
// GLOBAL: CARM95 0x530e20
int gTemp_lost;

View File

@ -11,26 +11,36 @@
// GLOBAL: CARM95 0x53d028
br_matrix34 gPick_model_to_view__raycast; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53d010
int gBelow_face_index;
// GLOBAL: CARM95 0x53d018
br_scalar gCurrent_y;
// GLOBAL: CARM95 0x53d020
int gAbove_face_index;
// GLOBAL: CARM95 0x53d01c
br_model* gAbove_model;
// GLOBAL: CARM95 0x53d00c
br_model* gBelow_model;
// GLOBAL: CARM95 0x53d058
br_scalar gHighest_y_below;
// GLOBAL: CARM95 0x53d008
br_actor* gY_picking_camera;
// GLOBAL: CARM95 0x53d014
br_scalar gLowest_y_above;
// Added, probably can be replaced with NULL
// GLOBAL: CARM95 0x553aa4
br_model* model_unk1;
// GLOBAL: CARM95 0x553aa8
br_material* material_unk1;

View File

@ -40,45 +40,65 @@ char* gReplay_pixie_names[10] = {
"FWDEND.PIX",
"CAMERA.PIX",
};
// GLOBAL: CARM95 0x50a1d8
int gSingle_frame_mode = 0;
// GLOBAL: CARM95 0x50a1dc
tU32 gCam_change_time = 0;
// GLOBAL: CARM95 0x50a1e0
int gSave_file = 0;
// GLOBAL: CARM95 0x50a1e8
int gProgress_line_left[2] = { 70, 141 };
// GLOBAL: CARM95 0x50a1f0
int gProgress_line_right[2] = { 279, 558 };
// GLOBAL: CARM95 0x50a1f8
int gProgress_line_top[2] = { 178, 429 };
// GLOBAL: CARM95 0x531dd0
br_pixelmap* gReplay_pixies[10];
// GLOBAL: CARM95 0x531db8
int gKey_down;
int gNo_cursor;
// GLOBAL: CARM95 0x531db4
int gSave_frame_number;
// GLOBAL: CARM95 0x531da8
int gCam_change_button_down;
// GLOBAL: CARM95 0x531da0
tU32 gAction_replay_start_time;
// GLOBAL: CARM95 0x531dc4
tU32 gLast_replay_zappy_screen;
// GLOBAL: CARM95 0x531dc0
tS32 gStopped_time;
// GLOBAL: CARM95 0x531dbc
float gPending_replay_rate;
// GLOBAL: CARM95 0x531da4
tU32 gAction_replay_end_time;
// GLOBAL: CARM95 0x531dcc
float gReplay_rate;
// GLOBAL: CARM95 0x531db0
int gSave_bunch_ID;
// GLOBAL: CARM95 0x531dac
int gPlay_direction;
// GLOBAL: CARM95 0x531dc8
int gPaused;
// GLOBAL: CARM95 0x551db4
tAction_replay_camera_type gAction_replay_camera_mode;

View File

@ -14,8 +14,10 @@
// GLOBAL: CARM95 0x507030
char* gBoring_material_names[2] = { "OILSMEAR.MAT", "ROBSMEAR.MAT" };
// GLOBAL: CARM95 0x507038
char* gMaterial_names[2] = { "OILSMEAR.MAT", "GIBSMEAR.MAT" };
// GLOBAL: CARM95 0x530190
tSkid gSkids[100];

View File

@ -18,57 +18,83 @@
// GLOBAL: CARM95 0x514928
int gSound_detail_level = 1;
// GLOBAL: CARM95 0x51492c
int gVirgin_pass = 1;
// GLOBAL: CARM95 0x514930
int gOld_sound_detail_level = -1;
// GLOBAL: CARM95 0x514934
int gLast_tune = -1;
// GLOBAL: CARM95 0x514938
int gRandom_MIDI_tunes[3] = { 9500, 9501, 9502 };
// GLOBAL: CARM95 0x514948
int gRandom_Rockin_MIDI_tunes[3] = { 9500, 9501, 9502 };
// GLOBAL: CARM95 0x514958
int gRandom_CDA_tunes[8] = { 9600, 9601, 9602, 9603, 9604, 9605, 9606, 9607 }; /* dethrace: Changed to size 8 */
// GLOBAL: CARM95 0x514978
int gCDA_is_playing;
// GLOBAL: CARM95 0x51497c
int gServicing_sound;
// GLOBAL: CARM95 0x514980
int gSong_repeat_count;
// GLOBAL: CARM95 0x514984
int gSound_sources_inited;
// GLOBAL: CARM95 0x514988
int gMusic_available;
// GLOBAL: CARM95 0x51498c
tS3_sound_tag gCDA_tag;
// GLOBAL: CARM95 0x514990
int gCD_fully_installed;
// GLOBAL: CARM95 0x514994
tS3_outlet_ptr gEffects_outlet;
// GLOBAL: CARM95 0x514998
tS3_outlet_ptr gCar_outlet;
// GLOBAL: CARM95 0x51499c
tS3_outlet_ptr gEngine_outlet;
// GLOBAL: CARM95 0x5149a0
tS3_outlet_ptr gDriver_outlet;
// GLOBAL: CARM95 0x5149a4
tS3_outlet_ptr gPedestrians_outlet;
// GLOBAL: CARM95 0x5149a8
tS3_outlet_ptr gMusic_outlet;
tS3_sound_id gMIDI_id;
// GLOBAL: CARM95 0x550a20
tS3_outlet_ptr gIndexed_outlets[6];
// GLOBAL: CARM95 0x538284
tU32 gLast_sound_service;
// GLOBAL: CARM95 0x550a1c
int gCD_is_disabled;
// GLOBAL: CARM95 0x550a00
br_vector3 gCamera_left;
// GLOBAL: CARM95 0x550a10
br_vector3 gCamera_position;
// GLOBAL: CARM95 0x550a40
br_vector3 gOld_camera_position;
// GLOBAL: CARM95 0x550a50
br_vector3 gCamera_velocity;
@ -755,7 +781,7 @@ int DRS3StartCDA(tS3_sound_id pCDA_id) {
gCDA_is_playing = DRS3StartSoundNoPiping(gMusic_outlet, pCDA_id);
#if defined(DETHRACE_FIX_BUGS)
// Initial CD music volume was not set correctly
DRS3SetOutletVolume(gMusic_outlet, 42 * gProgram_state.music_volume);
DRS3SetOutletVolume(gMusic_outlet, 42 * gProgram_state.music_volume);
#endif
gCDA_tag = gCDA_is_playing;
if (!gCDA_is_playing) {

View File

@ -25,74 +25,107 @@
// GLOBAL: CARM95 0x5149e8
int gNext_spark;
// GLOBAL: CARM95 0x5149ec
int gSpark_flags;
// GLOBAL: CARM95 0x5149f0
int gNext_shrapnel;
// GLOBAL: CARM95 0x5149f4
int gShrapnel_flags;
// GLOBAL: CARM95 0x5149f8
br_model* gShrapnel_model[2];
// GLOBAL: CARM95 0x514a00
int gSmoke_flags;
// GLOBAL: CARM95 0x514a04
int gSmoke_num;
// GLOBAL: CARM95 0x514a08
int gOffset = 0;
// GLOBAL: CARM95 0x514a0c
int gColumn_flags;
// GLOBAL: CARM95 0x514a10
int gNext_column;
// GLOBAL: CARM95 0x514a14
br_pixelmap* gBlack_smoke_shade_table;
// GLOBAL: CARM95 0x514a18
br_pixelmap* gDark_smoke_shade_table;
// GLOBAL: CARM95 0x514a1c
br_pixelmap* gGrey_smoke_shade_table;
// GLOBAL: CARM95 0x514a20
int gSmoke_on = 1;
// GLOBAL: CARM95 0x514a24
int gNum_splash_types;
int gIt_type;
// GLOBAL: CARM95 0x514a2c
br_pixelmap* gIt_shade_table;
// GLOBAL: CARM95 0x514a30
br_pixelmap** gDust_table = &gShade_list[8];
// GLOBAL: CARM95 0x538618
br_pixelmap* gFlame_map[20];
tBRender_smoke* gBR_smoke_pointers[30];
// GLOBAL: CARM95 0x538298
tSplash gSplash[32];
// GLOBAL: CARM95 0x538b00
br_material* gSplash_material[20];
tBRender_smoke gBR_smoke_structs[30];
// GLOBAL: CARM95 0x538de8
tSmoke_column gSmoke_column[25];
// GLOBAL: CARM95 0x538668
br_matrix4 gCameraToScreen;
// GLOBAL: CARM95 0x5398d8
tSpark gSparks[32];
// GLOBAL: CARM95 0x5509c0
br_pixelmap* gShade_list[16];
int gN_BR_smoke_structs;
// GLOBAL: CARM95 0x5386b0
tSmoke gSmoke[25];
// GLOBAL: CARM95 0x53a0e0
tU32 gSplash_flags;
// GLOBAL: CARM95 0x53828c
tU32 gNext_splash;
// GLOBAL: CARM95 0x53a0d8
br_model* gLollipop_model;
// GLOBAL: CARM95 0x538294
int gNum_dust_tables;
// GLOBAL: CARM95 0x5386a8
br_model* gSplash_model;
// GLOBAL: CARM95 0x53a0dc
int gDust_rotate;
// GLOBAL: CARM95 0x538290
br_camera* gSpark_cam;
// GLOBAL: CARM95 0x538288
br_material* gBlack_material;
// GLOBAL: CARM95 0x538b50
tShrapnel gShrapnel[15];

View File

@ -32,12 +32,16 @@
// GLOBAL: CARM95 0x509a60
int gLast_wrong_checkpoint;
// GLOBAL: CARM95 0x509a64
int gMirror_on__structur = 1; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x509a68
int gPratcam_on = 1;
// GLOBAL: CARM95 0x509a6c
int gCockpit_on = 1;
// GLOBAL: CARM95 0x509a70
int gOpponent_mix[10][5] = {
{ 3, 4, 4, 5, 5 },
@ -51,8 +55,10 @@ int gOpponent_mix[10][5] = {
{ 1, 1, 2, 3, 3 },
{ 1, 1, 2, 2, 3 }
};
// GLOBAL: CARM95 0x509b38
tU32 gLast_checkpoint_time;
// GLOBAL: CARM95 0x551dbc
tRace_over_reason gRace_over_reason;

View File

@ -99,12 +99,16 @@ float gFloat_sine_table[91] = {
1.0f,
};
br_fixed_ls gFixed_sine_table[91];
// GLOBAL: CARM95 0x53e4b8
br_matrix23 mat23tmp1;
// GLOBAL: CARM95 0x53e4d0
br_matrix23 mat23tmp2;
// GLOBAL: CARM95 0x53e4e8
br_matrix34 mattmp1__trig; // suffix added to avoid duplicate symbol
// GLOBAL: CARM95 0x53e518
br_matrix34 mattmp2__trig; // suffix added to avoid duplicate symbol

View File

@ -31,21 +31,28 @@
// GLOBAL: CARM95 0x521488
int gIn_check_quit = 0;
// GLOBAL: CARM95 0x52148c
tU32 gLost_time = 0;
#if BR_ENDIAN_BIG
// GLOBAL: CARM95 0x521490
tU32 gLong_key[4] = { 0x6c1b995f, 0xb9cd5f13, 0xcb04200e, 0x5e1ca10e };
// GLOBAL: CARM95 0x5214a0
tU32 gOther_long_key[4] = { 0x67a8d626, 0xb6dd451b, 0x327e2213, 0x15c29437 };
#else
// GLOBAL: CARM95 0x521490
tU32 gLong_key[4] = { 0x5f991b6c, 0x135fcdb9, 0x0e2004cb, 0x0ea11c5e };
// GLOBAL: CARM95 0x5214a0
tU32 gOther_long_key[4] = { 0x26d6a867, 0x1b45ddb6, 0x13227e32, 0x3794c215 };
#endif
// GLOBAL: CARM95 0x5214b0
int gEncryption_method = 0;
// GLOBAL: CARM95 0x544ef0
char* gMisc_strings[250];
br_pixelmap* g16bit_palette;
br_pixelmap* gSource_for_16bit_palette;

View File

@ -32,93 +32,137 @@
// GLOBAL: CARM95 0x50c710
int gFunkotronics_array_size;
// GLOBAL: CARM95 0x50c714
int gGroovidelics_array_size;
// GLOBAL: CARM95 0x50c718
int gSpec_vol_mode;
// GLOBAL: CARM95 0x50c71c
tFunkotronic_spec* gFunkotronics_array;
// GLOBAL: CARM95 0x50c720
tGroovidelic_spec* gGroovidelics_array;
// GLOBAL: CARM95 0x50c728
char* gFunk_type_names[] = { "spin", "rock", "throb", "slither", "roll" };
// GLOBAL: CARM95 0x50c740
char* gFunk_anim_names[] = { "frames", "flic" };
// GLOBAL: CARM95 0x50c748
char* gTime_mode_names[] = { "approximate", "accurate" };
// GLOBAL: CARM95 0x50c750
char* gFunk_move_names[] = { "linear", "harmonic", "flash", "controlled", "absolute", "continuous" };
// GLOBAL: CARM95 0x50c768
char* gFunk_nature_names[] = { "constant", "distance", "lastlap", "otherlaps" };
// GLOBAL: CARM95 0x50c778
char* gGroove_nature_names[] = { "constant", "distance" };
// GLOBAL: CARM95 0x50c780
char* gAxis_names[] = { "x", "y", "z" };
// GLOBAL: CARM95 0x50c790
char* gLollipop_names[] = { "xlollipop", "ylollipop", "zlollipop" };
// GLOBAL: CARM95 0x50c7a0
char* gGroove_path_names[] = { "straight", "circular" };
// GLOBAL: CARM95 0x50c7a8
char* gGroove_object_names[] = { "spin", "rock", "throb", "shear" };
// GLOBAL: CARM95 0x50c7b8
char* gDepth_effect_names[] = { "dark", "fog" };
// GLOBAL: CARM95 0x50c7c0
br_actor* gGroove_by_proxy_actor;
// GLOBAL: CARM95 0x50c7c4
tRotate_mode gCurrent_rotate_mode = eRotate_mode_y;
// GLOBAL: CARM95 0x50c7c8
tScale_mode gCurrent_scale_mode = eScale_mode_all;
// GLOBAL: CARM95 0x50c7cc
int gNumber_of_additional_models;
// GLOBAL: CARM95 0x50c7d0
tRoad_texturing_level gRoad_texturing_level = eRTL_full;
// GLOBAL: CARM95 0x50c7d4
tWall_texturing_level gWall_texturing_level = eWTL_full;
// GLOBAL: CARM95 0x50c7d8
tCar_texturing_level gCar_texturing_level = eCTL_full;
// GLOBAL: CARM95 0x50c7dc
int gRendering_accessories;
// GLOBAL: CARM95 0x50c7e0
int gNumber_of_actors;
// GLOBAL: CARM95 0x50c7e4
int gNumber_of_lights;
// GLOBAL: CARM95 0x5514e0
br_actor* gActor_array[500];
// GLOBAL: CARM95 0x532af0
float* gGroove_funk_bindings[960];
// GLOBAL: CARM95 0x532220
br_actor* gDelete_list[500];
// GLOBAL: CARM95 0x551cb0
br_actor* gLight_array[50];
// GLOBAL: CARM95 0x533b18
br_model* gAdditional_models[1000];
// GLOBAL: CARM95 0x534ac0
br_actor* gSpec_vol_actors[100];
// GLOBAL: CARM95 0x533a00
tPath_name gAdditional_actor_path;
// GLOBAL: CARM95 0x5329f0
tPath_name gAdditional_model_path;
// GLOBAL: CARM95 0x533b00
tU32 gPrevious_groove_times[2];
// GLOBAL: CARM95 0x551d78
int gRace_file_version;
// GLOBAL: CARM95 0x5339f0
br_vector3 gActor_centre;
// GLOBAL: CARM95 0x532218
float gTemp;
// GLOBAL: CARM95 0x533b0c
br_actor* gLast_actor;
// GLOBAL: CARM95 0x533b08
br_actor* gKnown_actor;
// GLOBAL: CARM95 0x534ab8
br_actor* gAdditional_actors;
// GLOBAL: CARM95 0x533b10
int gDelete_count;
// GLOBAL: CARM95 0x5339fc
br_scalar gNearest_distance;
// GLOBAL: CARM95 0x534c50
br_actor* gNearest_actor;
br_actor* gStandard_lamp;
// GLOBAL: CARM95 0x534abc
br_scalar gSight_distance_squared;

View File

@ -51,10 +51,12 @@ tS32 gJoystick_range2x;
tS32 gJoystick_range1y;
tS32 gJoystick_range1x;
int gNo_voodoo;
// GLOBAL: CARM95 0x51d5d0
int gSwitched_resolution;
br_pixelmap* gReal_back_screen;
tS32 gJoystick_min1x;
// GLOBAL: CARM95 0x51d59c
br_pixelmap* gTemp_screen;
tU32 gUpper_loop_limit;