parent
cee44698b2
commit
66fe07e9a2
|
|
@ -3,7 +3,7 @@ TARGET_EXEC ?= c1
|
|||
BUILD_DIR ?= ./build
|
||||
SRC_DIR ?= .
|
||||
|
||||
SRCS := $(shell find $(SRC_DIR) -name *.c)
|
||||
SRCS := $(shell find $(SRC_DIR) -name "*.c")
|
||||
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ BUILD_DIR ?= ./build
|
|||
SRC_DIR ?= .
|
||||
BR_SRC_DIR ?= ../BRSRC13
|
||||
|
||||
SRCS := $(shell find $(SRC_DIR) -name *.c)
|
||||
SRCS := $(shell find $(SRC_DIR) -name "*.c")
|
||||
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
|
||||
OBJS += $(shell find $(BR_SRC_DIR) -name *.o)
|
||||
OBJS += $(shell find $(BR_SRC_DIR) -name "*.o")
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
|
||||
INC_DIRS := $(shell find $(SRC_DIR) -type d) $(BR_SRC_DIR)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,68 @@
|
|||
#include "dr_types.h"
|
||||
#include "br_types.h"
|
||||
|
||||
#define CAR_MAX_SIMPLIFICATION_LEVEL 4
|
||||
|
||||
extern float gEngine_powerup_factor[6];
|
||||
extern tCar_spec *gLast_car_to_skid[2];
|
||||
extern tS3_sound_tag gSkid_tag[2];
|
||||
extern tSave_camera gSave_camera[2];
|
||||
extern tFace_ref gFace_list[150];
|
||||
extern void (*ControlCar[6])(tCar_spec*, br_scalar);
|
||||
extern tNon_car_spec *gActive_non_car_list[50];
|
||||
extern float gCar_simplification_factor[2][CAR_MAX_SIMPLIFICATION_LEVEL+1];
|
||||
extern float gDefensive_powerup_factor[6];
|
||||
extern float gOffensive_powerup_factor[6];
|
||||
extern int gNet_player_to_view_index;
|
||||
extern int gOver_shoot;
|
||||
extern int gDouble_pling_water;
|
||||
extern int gOpponent_viewing_mode;
|
||||
extern br_scalar gMin_world_y;
|
||||
extern int gMetal_crunch_sound_id[5];
|
||||
extern int gFreeze_mechanics;
|
||||
extern int gWoz_upside_down_at_all;
|
||||
extern tU32 gQuite_wild_end;
|
||||
extern tU32 gLast_mechanics_time;
|
||||
extern tU32 gOn_me_wheels_start;
|
||||
extern int gCar_car_collisions;
|
||||
extern br_scalar gAccel;
|
||||
extern br_vector3 gAverage_grid_position;
|
||||
extern br_actor *gPed_actor;
|
||||
extern tU32 gWild_start;
|
||||
extern tU32 gLast_cunning_stunt;
|
||||
extern int gCollision_count;
|
||||
extern tU32 gQuite_wild_start;
|
||||
extern int gCamera_frozen;
|
||||
extern tU32 gSwitch_time;
|
||||
extern int gMaterial_index;
|
||||
extern int gEliminate_faces;
|
||||
extern int gInTheSea;
|
||||
extern int gMetal_scrape_sound_id[3];
|
||||
extern br_vector3 gZero_v;
|
||||
extern int gCamera_mode;
|
||||
extern int gDoing_physics;
|
||||
extern br_scalar gOur_yaw;
|
||||
extern br_vector3 gCamera_pos_before_collide;
|
||||
extern br_scalar gGravity;
|
||||
extern br_vector3 gNew_ground_normal;
|
||||
extern br_scalar gDt;
|
||||
extern int gFace_num;
|
||||
extern int gCollision_detection_on;
|
||||
extern int gControl;
|
||||
extern br_vector3 gGround_normal;
|
||||
extern char gNon_car_spec_list[100];
|
||||
extern int gCamera_has_collided;
|
||||
extern int gCar_simplification_level;
|
||||
extern int gNum_active_non_cars;
|
||||
extern br_scalar gPanning_camera_height;
|
||||
extern int gStop_opponents_moving;
|
||||
extern tU32 gMechanics_time_sync;
|
||||
extern int gNum_cars_and_non_cars;
|
||||
extern int gFace_count;
|
||||
extern br_angle gOld_yaw;
|
||||
extern br_angle gOld_zoom;
|
||||
extern br_angle gPanning_camera_angle;
|
||||
|
||||
// Offset: 0
|
||||
// Size: 91
|
||||
// EAX: pCar
|
||||
|
|
|
|||
|
|
@ -4,4 +4,141 @@
|
|||
#include "dr_types.h"
|
||||
#include "br_types.h"
|
||||
|
||||
extern char gNet_player_name[32];
|
||||
extern br_matrix34 gRearview_camera_to_world;
|
||||
extern tSpecial_volume gDefault_default_water_spec_vol;
|
||||
extern br_matrix34 gCamera_to_world;
|
||||
extern tRace_list_spec gRace_list[100];
|
||||
extern tPath_name gApplication_path;
|
||||
extern tU32 gI_am_cheating;
|
||||
extern float gPinball_factor;
|
||||
extern float gOpponent_speed_factor;
|
||||
extern float gCar_crush_min_fold;
|
||||
extern float gNet_recovery_cost[7];
|
||||
extern float gCar_crush_softness;
|
||||
extern br_vector3 gDisabled_vector;
|
||||
extern br_vector3 *gOur_pos;
|
||||
extern float gCar_crush_max_fold;
|
||||
extern tBrender_storage gNet_cars_storage_space;
|
||||
extern float gNet_softness[7];
|
||||
extern tS32 gJoystick_deadzone;
|
||||
extern float gCar_crush_limit_deviant;
|
||||
extern float gNet_offensive[7];
|
||||
extern float gCar_crush_split_chance;
|
||||
extern float gGravity_multiplier;
|
||||
extern float gCar_crush_wibble;
|
||||
extern float gRepair_cost[3];
|
||||
extern float gCop_speed_factor;
|
||||
extern float gDefault_gravity;
|
||||
extern tU32 gKeys_pressed;
|
||||
extern tSpecial_volume *gDefault_water_spec_vol;
|
||||
extern float gNet_repair_cost[7];
|
||||
extern br_font *gFont_7;
|
||||
extern tU32 gLast_replay_frame_time;
|
||||
extern tU32 gTag_start_time;
|
||||
extern tOpponent *gOpponents;
|
||||
extern tU32 gLast_credit_tick;
|
||||
extern tBrender_storage gTheir_cars_storage_space;
|
||||
extern br_font *gHeadup_font;
|
||||
extern tSave_game *gPre_race_saved_game;
|
||||
extern tU32 gRace_finished;
|
||||
extern FILE *gDiagnostic_file;
|
||||
extern tU32 gFrame_start_time;
|
||||
extern tProgram_state gProgram_state;
|
||||
extern tU32 gCredit_period_single[3];
|
||||
extern tU32 gRace_start;
|
||||
extern tBrender_storage gTrack_storage_space;
|
||||
extern br_scalar gYon_multiplier;
|
||||
extern tU32 gFrame_period;
|
||||
extern tU32 gCredit_period;
|
||||
extern tU32 gCredit_period_network[7];
|
||||
extern tBrender_storage gOur_car_storage_space;
|
||||
extern tU32 gFox_start_time;
|
||||
extern br_font *gBig_font;
|
||||
extern tBrender_storage gPedestrians_storage_space;
|
||||
extern tRace_info gCurrent_race;
|
||||
extern br_scalar gCut_delay_4;
|
||||
extern br_actor *gSelf;
|
||||
extern br_scalar gCut_delay_1;
|
||||
extern br_scalar gCut_delay_2;
|
||||
extern br_actor *gDont_render_actor;
|
||||
extern br_scalar gCut_delay_3;
|
||||
extern br_pixelmap *gScreen;
|
||||
extern br_pixelmap *gRender_screen;
|
||||
extern br_actor *gRearview_camera;
|
||||
extern br_scalar gCamera_hither;
|
||||
extern br_pixelmap *gRearview_screen;
|
||||
extern br_pixelmap *gBack_screen;
|
||||
extern br_scalar gCamera_angle;
|
||||
extern br_pixelmap *gDigits_pix;
|
||||
extern br_pixelmap *gRender_shade_table;
|
||||
extern br_pixelmap *gRearview_depth_buffer;
|
||||
extern br_pixelmap *gWhole_screen;
|
||||
extern br_pixelmap *gIcons_pix;
|
||||
extern br_scalar gCamera_yon;
|
||||
extern br_actor *gCamera;
|
||||
extern br_actor *gArrow_actor;
|
||||
extern br_pixelmap *gIcons_pix_low_res;
|
||||
extern br_pixelmap *gDepth_buffer;
|
||||
extern int gSound_override;
|
||||
extern int gAustere_override;
|
||||
extern int gInitial_net_credits[5];
|
||||
extern float gCar_cred_value[3];
|
||||
extern int gNo_races_yet;
|
||||
extern int gDefault_engine_noise_index;
|
||||
extern int gGame_to_load;
|
||||
extern int gJump_start_fine[3];
|
||||
extern int gSausage_override;
|
||||
extern int gAusterity_mode;
|
||||
extern int gReal_graf_data_index;
|
||||
extern float gCar_time_value[3];
|
||||
extern int gTyping_slot;
|
||||
extern int gCunning_stunt_bonus[3];
|
||||
extern int gKnobbled_frame_period;
|
||||
extern int gCD_is_in_drive;
|
||||
extern int gInterface_within_race_mode;
|
||||
extern br_actor *gNon_track_actor;
|
||||
extern int gCut_scene_override;
|
||||
extern int gKey_map_index;
|
||||
extern int gWait_for_it;
|
||||
extern int gCheck_point_cash[3];
|
||||
extern int gPoints_per_second[3];
|
||||
extern br_actor *gUniverse_actor;
|
||||
extern br_actor *gTrack_actor;
|
||||
extern int gMap_mode;
|
||||
extern int gPed_time_value[3];
|
||||
extern int gHost_abandon_game;
|
||||
extern int gAbandon_game;
|
||||
extern int gLap;
|
||||
extern int gShow_opponents;
|
||||
extern int gPipe_reg_snap_before_new_game;
|
||||
extern int gTotal_laps;
|
||||
extern int gDisallow_abandon_race;
|
||||
extern int gFree_repairs;
|
||||
extern int gFreeze_timer;
|
||||
extern int gRoll_over_creds[3];
|
||||
extern int gShow_peds_on_map;
|
||||
extern int gOn_drugs;
|
||||
extern int gWasted_time[3];
|
||||
extern int gAction_replay_mode;
|
||||
extern int gPipe_reg_snap_after_our_car;
|
||||
extern int gRecover_car;
|
||||
extern int gCheckpoint;
|
||||
extern int gRoll_over_time[3];
|
||||
extern int gPipe_reg_snap_before_our_car;
|
||||
extern int gWasted_creds[3];
|
||||
extern int gTimer;
|
||||
extern int gCheckpoint_count;
|
||||
extern int gCountdown;
|
||||
extern int gFrame_rate;
|
||||
extern int gNumber_of_racers;
|
||||
extern int gSound_enabled;
|
||||
extern int gInfo_on;
|
||||
extern int gGraf_spec_index;
|
||||
extern int gTyping;
|
||||
extern int gSound_available;
|
||||
extern int gNumber_of_races;
|
||||
extern int gArrow_mode;
|
||||
extern char gDir_separator[3];
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,6 +4,35 @@
|
|||
#include "dr_types.h"
|
||||
#include "br_types.h"
|
||||
|
||||
extern tS3_outlet_ptr gIndexed_outlets[6];
|
||||
extern int gRandom_CDA_tunes[7];
|
||||
extern tU32 gLast_sound_service;
|
||||
extern int gSong_repeat_count;
|
||||
extern int gServicing_sound;
|
||||
extern int gCD_fully_installed;
|
||||
extern int gCD_is_disabled;
|
||||
extern int gCDA_is_playing;
|
||||
extern int gSound_sources_inited;
|
||||
extern tS3_sound_tag gCDA_tag;
|
||||
extern tS3_outlet_ptr gEngine_outlet;
|
||||
extern int gRandom_Rockin_MIDI_tunes[3];
|
||||
extern int gOld_sound_detail_level;
|
||||
extern int gLast_tune;
|
||||
extern int gVirgin_pass;
|
||||
extern br_vector3 gCamera_left;
|
||||
extern int gRandom_MIDI_tunes[3];
|
||||
extern br_vector3 gCamera_position;
|
||||
extern br_vector3 gOld_camera_position;
|
||||
extern br_vector3 gCamera_velocity;
|
||||
extern int gSound_detail_level;
|
||||
extern tS3_outlet_ptr gDriver_outlet;
|
||||
extern tS3_outlet_ptr gPedestrians_outlet;
|
||||
extern tS3_outlet_ptr gCar_outlet;
|
||||
extern tS3_sound_id gMIDI_id;
|
||||
extern int gMusic_available;
|
||||
extern tS3_outlet_ptr gMusic_outlet;
|
||||
extern tS3_outlet_ptr gEffects_outlet;
|
||||
|
||||
// Offset: 0
|
||||
// Size: 224
|
||||
void UsePathFileToDetermineIfFullInstallation();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,13 @@
|
|||
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "watcom_functions.h"
|
||||
#include "common/globvars.h"
|
||||
#include "common/main.h"
|
||||
#include "common/car.h"
|
||||
#include "common/sound.h"
|
||||
|
||||
int gASCII_table[128];
|
||||
tU32 gKeyboard_bits[8];
|
||||
|
|
@ -383,17 +390,86 @@ void PDDisposeActionReplayBuffer(char *pBuffer) {
|
|||
// EAX: pProgpath
|
||||
void Usage(char *pProgpath) {
|
||||
char basename[9];
|
||||
|
||||
splitpath(pProgpath, NULL, NULL, basename, NULL);
|
||||
|
||||
fprintf(stderr,
|
||||
"Usage: %s [%s] [%s YonFactor] [%s CarSimplificationLevel] [%s SoundDetailLevel] [%s] [%s] [%s] [%s] [%s] [%s]\nWhere YonFactor is between 0 and 1,\nCarSimplificationLevel is a whole number between 0 and %d,\nand SoundDetailLevel is a whole number.\n",
|
||||
basename,
|
||||
"-hires",
|
||||
"-yon",
|
||||
"-simple",
|
||||
"-sound",
|
||||
"-robots",
|
||||
"-lomem",
|
||||
"-nosound",
|
||||
"-spamfritter",
|
||||
"-nocutscenes",
|
||||
"-noreplay",
|
||||
CAR_MAX_SIMPLIFICATION_LEVEL);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// // Offset: 6972
|
||||
// // Size: 722
|
||||
// // EAX: pArgc
|
||||
// // EDX: pArgv
|
||||
// int main(int pArgc, char **pArgv) {
|
||||
// int arg;
|
||||
// int i;
|
||||
// float f;
|
||||
// }
|
||||
// Offset: 6972
|
||||
// Size: 722
|
||||
// EAX: pArgc
|
||||
// EDX: pArgv
|
||||
// Renamed from "main" to "_main" to allow for unit testing
|
||||
int _main(int pArgc, char **pArgv) {
|
||||
int arg;
|
||||
int i;
|
||||
float f;
|
||||
|
||||
for (i = 1; i < pArgc; i++) {
|
||||
if (strcasecmp(pArgv[i], "-hires") == 0) {
|
||||
gReal_graf_data_index = 1;
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-yon") == 0 && i < pArgc - 1) {
|
||||
i++;
|
||||
sscanf(pArgv[i], "%f", &f);
|
||||
if (f >= 0.0 && f <= 1065353216 )
|
||||
{
|
||||
gYon_multiplier = f;
|
||||
}
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-simple") == 0 && i < pArgc - 1) {
|
||||
i++;
|
||||
sscanf(pArgv[i], "%d", &arg);
|
||||
if (arg >= 0 && arg < 5) {
|
||||
gCar_simplification_level = arg;
|
||||
}
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-sound") == 0 && i < pArgc - 1) {
|
||||
i++;
|
||||
sscanf(pArgv[i], "%d", &arg);
|
||||
gSound_detail_level = arg;
|
||||
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-robots") == 0) {
|
||||
gSausage_override = 1;
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-lomem") == 0) {
|
||||
gAustere_override = 1;
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-nosound") == 0) {
|
||||
gSound_override = 1;
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-spamfritter") == 0) {
|
||||
gExtra_mem = 2000000;
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-nocutscenes") == 0) {
|
||||
gCut_scene_override = 1;
|
||||
}
|
||||
else if (strcasecmp(pArgv[i], "-noreplay") == 0) {
|
||||
gReplay_override = 1;
|
||||
}
|
||||
else {
|
||||
Usage(pArgv[0]);
|
||||
}
|
||||
}
|
||||
GameMain(pArgc, pArgv);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Offset: 7696
|
||||
// Size: 62
|
||||
|
|
|
|||
|
|
@ -9,6 +9,35 @@
|
|||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
extern int gASCII_table[128];
|
||||
extern tU32 gKeyboard_bits[8];
|
||||
extern int gASCII_shift_table[128];
|
||||
extern tGraf_spec gGraf_specs[2];
|
||||
extern char gNetwork_profile_fname[256];
|
||||
extern tS32 gJoystick_min1y;
|
||||
extern tS32 gJoystick_min2y;
|
||||
extern tS32 gJoystick_min2x;
|
||||
extern tS32 gRaw_joystick2y;
|
||||
extern tS32 gRaw_joystick2x;
|
||||
extern tS32 gRaw_joystick1y;
|
||||
extern tS32 gRaw_joystick1x;
|
||||
extern tS32 gJoystick_range2y;
|
||||
extern tS32 gJoystick_range2x;
|
||||
extern tS32 gJoystick_range1y;
|
||||
extern tS32 gJoystick_range1x;
|
||||
extern int gNo_voodoo;
|
||||
extern int gSwitched_resolution;
|
||||
extern int gReplay_override;
|
||||
extern br_pixelmap *gReal_back_screen;
|
||||
extern tS32 gJoystick_min1x;
|
||||
extern br_pixelmap *gTemp_screen;
|
||||
extern int gDOSGfx_initialized;
|
||||
extern tU32 gUpper_loop_limit;
|
||||
extern int gExtra_mem;
|
||||
extern int gReal_back_screen_locked;
|
||||
extern void (*gPrev_keyboard_handler)();
|
||||
extern tU8 gScan_code[123][2];
|
||||
|
||||
extern int _unittest_do_not_exit;
|
||||
|
||||
// Offset: 0
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
#include "pc-dos/dossys.h"
|
||||
|
||||
// main method Moved from pc-dos/dossys.c to enable unit testing
|
||||
extern int _main(int pArgc, char* pArgv[]);
|
||||
|
||||
// Offset: 6972
|
||||
// Size: 722
|
||||
// EAX: pArgc
|
||||
// EDX: pArgv
|
||||
int main(int pArgc, char **pArgv) {
|
||||
int arg;
|
||||
int i;
|
||||
float f;
|
||||
// Moved from pc-dos/dossys.c to enable unit testing
|
||||
int main(int pArgc, char* pArgv[]) {
|
||||
return _main(pArgc, pArgv);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
#include "watcom_functions.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <libgen.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
#define snprintf _snprintf
|
||||
#define vsnprintf _vsnprintf
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#else
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
void splitpath( char *path, char *drive, char *dir, char *fname, char *ext ) {
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
_splitpath(path, drive, dr, fname, ext);
|
||||
#else
|
||||
// shortcut - we only ever call this method asking for 'fname'
|
||||
// 9 is hardcoded to match `basename` defined in `Usage`
|
||||
strncpy(fname, basename(path), 9);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef _WATCOM_FUNCTIONS_H_
|
||||
#define _WATCOM_FUNCTIONS_H_
|
||||
|
||||
// These functions are used by the game and were originally provided by Watcom C lib.
|
||||
// Reimplemented here without Watcom code
|
||||
|
||||
void splitpath( char *path, char *drive, char *dir, char *fname, char *ext );
|
||||
|
||||
#endif
|
||||
|
|
@ -7,7 +7,7 @@ BR_SRC_DIR ?= ../src/BRSRC13
|
|||
|
||||
SRCS := $(shell find $(SRC_DIR) -name "*.c")
|
||||
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
|
||||
OBJS += $(shell find $(BR_SRC_DIR) -name *.o)
|
||||
OBJS += $(shell find $(BR_SRC_DIR) -name "*.o")
|
||||
# include all DR objects except the main method to avoid _main symbol collision
|
||||
OBJS += $(shell find $(DR_SRC_DIR) -name *.o | grep -v pc-dos/main.c.o)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue