Fix/global vars ordering (#58)

* reordered global vars based on updated codegen, resolve duplicate symbols
This commit is contained in:
Jeff Harris 2021-09-10 13:36:14 +12:00 committed by GitHub
parent 12a500a9ee
commit 6a31e4f6a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
163 changed files with 1491 additions and 1198 deletions

View File

@ -1,7 +1,6 @@
#include "eventq.h"
#include "harness_trace.h"
char rscid[48];
int _DOSEventQEnabled;
host_real_memory _DOSEventMemory;

View File

@ -4,7 +4,6 @@
host_real_memory mouseMemory;
host_regs regs;
br_boolean mouseActive;
char rscid[49];
unsigned char mouseHandler[245];
// IDA: br_error __cdecl DOSMouseBegin()

View File

@ -6,7 +6,6 @@
#include "fwsetup.h"
br_boolean active;
char rscid[54];
// IDA: br_error __cdecl BrBegin()
br_error BrBegin() {

View File

@ -1,8 +1,6 @@
#include "brbhook.h"
#include "harness_trace.h"
char rscid[49];
// IDA: void __cdecl _BrBeginHook()
void _BrBeginHook() {
LOG_TRACE("()");

View File

@ -4,8 +4,6 @@
#include <stdio.h>
#include <unistd.h>
char rscid[49];
// IDA: void __cdecl BrNewList(br_list *list)
void BrNewList(br_list* list) {
list->_null = NULL;

View File

@ -1,8 +1,6 @@
#include "brprintf.h"
#include "harness_trace.h"
char rscid[48];
#include <stdarg.h>
br_int_32 BrSprintf(char* buf, char* fmt, ...) {

View File

@ -2,7 +2,6 @@
#include <stdlib.h>
// Global variables
char rscid[49];
// IDA: void __cdecl BrQsort(void *basep, unsigned int nelems, unsigned int size, br_qsort_cbfn *comp)
void BrQsort(void* basep, unsigned int nelems, unsigned int size, br_qsort_cbfn comp) {

View File

@ -1,8 +1,6 @@
#include "bswap.h"
#include "harness_trace.h"
char rscid[47];
// IDA: br_uint_32 __cdecl BrSwap32(br_uint_32 l)
br_uint_32 BrSwap32(br_uint_32 l) {
// struct { // size: 0x4

View File

@ -112,7 +112,6 @@ struct {
int count;
} DatafileStack[1024];
char* ChunkNames[61];
char rscid[52];
int DatafileStackTop;
// IDA: void __usercall DfPush(int type@<EAX>, void *value@<EDX>, int count@<EBX>)

View File

@ -1,8 +1,6 @@
#include "devlist.h"
#include "harness_trace.h"
char rscid[53];
// IDA: br_error __cdecl AddRequestedDrivers()
br_error AddRequestedDrivers() {
char devstr[256];

View File

@ -5,7 +5,6 @@
#include <stdarg.h>
br_pixelmap* last_begin_screen;
char rscid[51];
// IDA: br_pixelmap* __cdecl BrDevLastBeginQuery()
br_pixelmap* BrDevLastBeginQuery() {

View File

@ -7,7 +7,6 @@
// Global variables
char _diag_scratch[128];
char rscid[49];
// IDA: void __cdecl BrFailure(char *s, ...)
void BrFailure(const char* s, ...) {

View File

@ -1,8 +1,6 @@
#include "error.h"
#include "harness_trace.h"
char rscid[47];
// IDA: br_error __cdecl BrLastErrorGet(void **valuep)
br_error BrLastErrorGet(void** valuep) {
LOG_TRACE("(%p)", valuep);

View File

@ -6,8 +6,6 @@
#include <stdarg.h>
#include <stddef.h>
char rscid[49];
// IDA: void __cdecl _BrFileFree(void *res, br_uint_8 res_class, br_size_t size)
void _BrFileFree(void* res, br_uint_8 res_class, br_size_t size) {
br_file* file;

View File

@ -67,8 +67,6 @@ br_image Image_BRCORE1 = {
NULL
};
char rscid[53];
#define NBR_DEV_SLOTS 16
// IDA: br_error __cdecl BrFwBegin()

View File

@ -6,7 +6,6 @@ br_file_struct_member file_info_FM[2];
br_file_struct file_info_F;
br_file_enum_member file_type_FM[10];
br_file_enum file_type_F;
char rscid[50];
// IDA: int __usercall FopRead_END@<EAX>(br_datafile *df@<EAX>, br_uint_32 id@<EDX>, br_uint_32 length@<EBX>, br_uint_32 count@<ECX>)
int FopRead_END(br_datafile* df, br_uint_32 id, br_uint_32 length, br_uint_32 count) {

View File

@ -1,8 +1,6 @@
#include "image.h"
#include "harness_trace.h"
char rscid[50];
// IDA: br_boolean __cdecl BrImageAdd(br_image *img)
br_boolean BrImageAdd(br_image* img) {
STUB();

View File

@ -1,8 +1,6 @@
#include "loader.h"
#include "harness_trace.h"
char rscid[49];
// IDA: br_image* __usercall ImageLoad@<EAX>(char *name@<EAX>)
br_image* ImageLoad(char* name) {
void* fh;

View File

@ -4,8 +4,6 @@
#include "CORE/STD/brstdlib.h"
#include "harness_trace.h"
char rscid[45];
// IDA: void* __cdecl BrMemAllocate(br_size_t size, br_uint_8 type)
void* BrMemAllocate(br_size_t size, br_uint_8 type) {
void* b;

View File

@ -1,8 +1,6 @@
#include "object.h"
#include "harness_trace.h"
char rscid[48];
// IDA: br_error __cdecl _M_br_object_query(br_object *self, br_uint_32 *pvalue, br_token t)
br_error _M_br_object_query(br_object* self, br_uint_32* pvalue, br_token t) {
LOG_TRACE("(%p, %p, %d)", self, pvalue, t);

View File

@ -1,8 +1,6 @@
#include "objectc.h"
#include "harness_trace.h"
char rscid[49];
// IDA: void* __cdecl BrObjectListAllocate(void *res)
void* BrObjectListAllocate(void* res) {
object_list* hl;

View File

@ -2,8 +2,6 @@
#include "harness_trace.h"
#include <ctype.h>
char rscid[49];
// IDA: br_boolean __cdecl BrNamePatternMatch(char *p, char *s)
br_boolean BrNamePatternMatch(char* p, char* s) {
char* cp;

View File

@ -6,8 +6,6 @@
#include "pattern.h"
#include "resource.h"
char rscid[50];
// IDA: void* __usercall BrRegistryNew@<EAX>(br_registry *reg@<EAX>)
void* BrRegistryNew(br_registry* reg) {
BrNewList(&reg->list);

View File

@ -9,8 +9,6 @@
#include <stdio.h>
#include <stdlib.h>
char rscid[51];
// IDA: void* __usercall ResToUser@<EAX>(resource_header *r@<EAX>)
void* ResToUser(resource_header* r) {
br_int_32 align;

View File

@ -6,8 +6,6 @@
#include <stddef.h>
#include <stdio.h>
char rscid[48];
// IDA: br_resource_class* __cdecl BrResClassAdd(br_resource_class *rclass)
br_resource_class* BrResClassAdd(br_resource_class* rclass) {
br_resource_class* r;

View File

@ -5,7 +5,6 @@
#include "resource.h"
char scratchString[512];
char rscid[49];
// IDA: void* __cdecl BrScratchAllocate(br_size_t size)
void* BrScratchAllocate(br_size_t size) {

View File

@ -2,7 +2,6 @@
#include "harness_trace.h"
br_token_entry predefinedTokens[457];
char rscid[48];
token_type tokenTypes[37];
// IDA: void __cdecl BrTokenBegin()

View File

@ -2,8 +2,6 @@
#include "harness_trace.h"
#include "resource.h"
char rscid[50];
// IDA: br_tv_template* __cdecl BrTVTemplateAllocate(void *res, br_tv_template_entry *entries, int n_entries)
br_tv_template* BrTVTemplateAllocate(void* res, br_tv_template_entry* entries, int n_entries) {
br_tv_template* t;

View File

@ -1,7 +1,6 @@
#include "angles.h"
#include "harness_trace.h"
char rscid[48];
order_info OrderAxes[32];
// IDA: br_matrix34* __cdecl BrEulerToMatrix34(br_matrix34 *mat, br_euler *euler)

View File

@ -1,9 +1,8 @@
#include "matrix23.h"
#include "harness_trace.h"
br_matrix23 mattmp1;
br_matrix23 mattmp2;
char rscid[52];
br_matrix23 mattmp1_23;
br_matrix23 mattmp2_23;
// IDA: void __cdecl BrMatrix23Copy(br_matrix23 *A, br_matrix23 *B)
void BrMatrix23Copy(br_matrix23* A, br_matrix23* B) {

View File

@ -5,7 +5,6 @@
br_matrix34 mattmp1;
br_matrix34 mattmp2;
char rscid[52];
#define M(x, y) mat->m[x][y]
#define A(x, y) A->m[x][y]

View File

@ -1,8 +1,6 @@
#include "matrix4.h"
#include "harness_trace.h"
char rscid[51];
// IDA: void __cdecl BrMatrix4Copy(br_matrix4 *A, br_matrix4 *B)
void BrMatrix4Copy(br_matrix4* A, br_matrix4* B) {
LOG_TRACE("(%p, %p)", A, B);

View File

@ -3,8 +3,6 @@
#include "harness_trace.h"
#include <math.h>
char rscid[49];
// IDA: br_int_32 __cdecl BrPlaneEquation(br_vector4 *eqn, br_vector3 *v0, br_vector3 *v1, br_vector3 *v2)
br_int_32 BrPlaneEquation(br_vector4* eqn, br_vector3* v0, br_vector3* v1, br_vector3* v2) {
br_vector3 a;

View File

@ -1,8 +1,6 @@
#include "quat.h"
#include "harness_trace.h"
char rscid[48];
// IDA: br_quat* __cdecl BrQuatMul(br_quat *q, br_quat *l, br_quat *r)
br_quat* BrQuatMul(br_quat* q, br_quat* l, br_quat* r) {
br_scalar x1;

View File

@ -5,8 +5,6 @@
#include "CORE/MATH/vector.h"
#include "harness_trace.h"
char rscid[52];
#define M34 BR_TRANSFORM_MATRIX34
#define MLP BR_TRANSFORM_MATRIX34_LP
#define QUT BR_TRANSFORM_QUAT

View File

@ -2,8 +2,6 @@
#include "harness_trace.h"
#include <math.h>
char rscid[50];
// IDA: void __cdecl BrVector2Copy(br_vector2 *v1, br_vector2 *v2)
void BrVector2Copy(br_vector2* v1, br_vector2* v2) {
LOG_TRACE("(%p, %p)", v1, v2);

View File

@ -4,4 +4,3 @@
br_font* BrFontProp4x6 = NULL;
br_font* BrFontProp7x9 = NULL;
br_font* BrFontFixed3x5 = NULL;
char rscid[50];

View File

@ -1,8 +1,6 @@
#include "genclip.h"
#include "harness_trace.h"
char rscid[49];
// IDA: br_clip_result __cdecl PixelmapPointClip(br_point *out, br_point *in, br_pixelmap *pm)
br_clip_result PixelmapPointClip(br_point* out, br_point* in, br_pixelmap* pm) {
LOG_TRACE("(%p, %p, %p)", out, in, pm);

View File

@ -1,8 +1,6 @@
#include "gencopy.h"
#include "harness_trace.h"
char rscid[49];
// IDA: br_error __usercall GeneralRectangleCopy@<EAX>(br_device_pixelmap *dest@<EAX>, br_point *p@<EDX>, br_device_pixelmap *src@<EBX>, br_rectangle *r@<ECX>)
br_error GeneralRectangleCopy(br_device_pixelmap* dest, br_point* p, br_device_pixelmap* src, br_rectangle* r) {
LOG_TRACE("(%p, %p, %p, %p)", dest, p, src, r);

View File

@ -2,8 +2,6 @@
#include "harness_trace.h"
#include "pmmem.h"
char rscid[50];
// IDA: br_pixelmap* __cdecl BrPixelmapAllocate(br_uint_8 type, br_int_32 w, br_int_32 h, void *pixels, int flags)
br_pixelmap* BrPixelmapAllocate(br_uint_8 type, br_int_32 w, br_int_32 h, void* pixels, int flags) {
LOG_TRACE("(%d, %d, %d, %p, %d)", type, w, h, pixels, flags);

View File

@ -8,8 +8,6 @@
#include <stdlib.h>
#include <string.h>
char rscid[65];
// IDA: br_pixelmap* __cdecl BrPixelmapAllocateSub(br_pixelmap *src, br_int_32 x, br_int_32 y, br_int_32 w, br_int_32 h)
br_pixelmap* BrPixelmapAllocateSub(br_pixelmap* src, br_int_32 x, br_int_32 y, br_int_32 w, br_int_32 h) {
br_pixelmap* new;

View File

@ -43,8 +43,6 @@ br_chunks_table_entry PixelmapLoadEntries[5] = {
};
br_chunks_table PixelmapLoadTable = { 4, PixelmapLoadEntries };
char rscid[54];
#define DF_PIXELMAP 2
// IDA: int __usercall FopWrite_PIXELMAP@<EAX>(br_datafile *df@<EAX>, br_pixelmap *pixelmap@<EDX>)

View File

@ -1,8 +1,6 @@
#include "pmgen.h"
#include "harness_trace.h"
char rscid[48];
// IDA: br_error __cdecl _M_br_device_pixelmap_gen_match(br_device_pixelmap *self, br_device_pixelmap **newpm, br_token_value *tv)
br_error _M_br_device_pixelmap_gen_match(br_device_pixelmap* self, br_device_pixelmap** newpm, br_token_value* tv) {
LOG_TRACE("(%p, %p, %p)", self, newpm, tv);

View File

@ -109,8 +109,6 @@ pm_type_info pmTypeInfo[30] = {
{ 0u, 0u, 0u, 0u }
};
char rscid[53];
// IDA: br_device_pixelmap* __usercall DevicePixelmapMemAllocate@<EAX>(br_uint_8 type@<EAX>, br_uint_16 w@<EDX>, br_uint_16 h@<EBX>, void *pixels@<ECX>, int flags)
br_device_pixelmap* DevicePixelmapMemAllocate(br_uint_8 type, br_uint_16 w, br_uint_16 h, void* pixels, int flags) {
br_device_pixelmap* pm;

View File

@ -1,8 +1,6 @@
#include "pmnull.h"
#include "harness_trace.h"
char rscid[51];
// IDA: br_error __cdecl _M_br_device_pixelmap_null_resize(br_device_pixelmap *self, br_int_32 width, br_int_32 height)
br_error _M_br_device_pixelmap_null_resize(br_device_pixelmap* self, br_int_32 width, br_int_32 height) {
LOG_TRACE("(%p, %d, %d)", self, width, height);

View File

@ -3,7 +3,6 @@
void* exceptionValue;
br_exception_handler* _BrExceptionHandler;
char rscid[50];
// IDA: br_exception_handler* __cdecl _BrExceptionBegin()
br_exception_handler* _BrExceptionBegin() {

View File

@ -2,8 +2,6 @@
#include "harness_trace.h"
#include <math.h>
char rscid[46];
float BrFloatFloor(float f) {
return floorf(f);
}

View File

@ -3,7 +3,6 @@
br_diaghandler BrStdioDiagHandler;
br_diaghandler* _BrDefaultDiagHandler = NULL;
char rscid[49];
void BrStdioWarning(char* message) {
NOT_IMPLEMENTED();

View File

@ -22,7 +22,6 @@ br_filesystem BrStdioFilesystem = {
BrStdioAdvance
};
br_filesystem* _BrDefaultFilesystem = &BrStdioFilesystem;
char rscid[52]; // $Id: stdfile.c 2.7 1996/11/20 18:07:52 STEVEW Exp $
br_uint_32 BrStdioAttributes() {
return BR_FS_ATTR_READABLE | BR_FS_ATTR_WRITEABLE | BR_FS_ATTR_HAS_TEXT | BR_FS_ATTR_HAS_BINARY | BR_FS_ATTR_HAS_ADVANCE;

View File

@ -8,7 +8,6 @@
// Global variables
// DOSPICK has "$Id: stdlib.c 2.4 1996/12/06 21:18:39 sam Exp $" for this. Do we want to implement these?
char rscid[48];
int BrMemCmp(void* s1, void* s2, size_t n) {
return memcmp(s1, s2, n);

View File

@ -4,7 +4,6 @@
#include <stdlib.h>
// Global variables
char rscid[48];
br_allocator BrStdlibAllocator = { "malloc", BrStdlibAllocate, BrStdlibFree, BrStdlibInquire, BrStdlibAlign };
br_allocator* _BrDefaultAllocator = &BrStdlibAllocator;

View File

@ -1,8 +1,6 @@
#include "logwrite.h"
#include "harness_trace.h"
char rscid[50];
// IDA: int __cdecl BrLogWrite(void *buffer, br_size_t s, br_size_t n)
int BrLogWrite(void* buffer, br_size_t s, br_size_t n) {
LOG_TRACE("(%p, %d, %d)", buffer, s, n);

View File

@ -10,8 +10,6 @@
#include "actsupt.h"
#include "harness_trace.h"
char rscid[53];
// IDA: br_uint_32 __cdecl BrActorEnum(br_actor *parent, br_actor_enum_cbfn *callback, void *arg)
br_uint_32 BrActorEnum(br_actor* parent, br_actor_enum_cbfn* callback, void* arg) {
br_actor* a;

View File

@ -1,8 +1,6 @@
#include "custsupt.h"
#include "harness_trace.h"
char rscid[52];
// IDA: void __cdecl BrModelToScreenQuery(br_matrix4 *dest)
void BrModelToScreenQuery(br_matrix4* dest) {
br_uint_32 dummy;

View File

@ -4,8 +4,6 @@
#include "matrix23.h"
#include "resource.h"
char rscid[52];
// IDA: br_material* __cdecl SetupDefaultMaterial()
br_material* SetupDefaultMaterial() {
static br_material* default_mat;

View File

@ -2,5 +2,4 @@
br_face default_model_faces[12];
br_vertex default_model_vertices[8];
br_model _BrDefaultModel = {0};
char rscid[49];
br_model _BrDefaultModel = { 0 };

View File

@ -1,5 +1,4 @@
#include "def_otab.h"
void* _default_table[256];
char rscid[52];
br_order_table _BrDefaultOrderTable;

View File

@ -3,8 +3,6 @@
#include "harness_trace.h"
#include <stddef.h>
char rscid[51];
// IDA: void __usercall actorEnable(br_v1db_enable *e@<EAX>, br_actor *a@<EDX>)
void actorEnable(br_v1db_enable* e, br_actor* a) {
int i;

View File

@ -5,8 +5,6 @@
#include <stddef.h>
#include <string.h>
char rscid[49];
// IDA: br_material* __cdecl BrMaterialAllocate(char *name)
br_material* BrMaterialAllocate(char* name) {
br_material* m;

View File

@ -27,7 +27,6 @@ void (*RenderStyleCalls[])(
v11model bounds_prepared;
br_model bounds_model;
v11group bounds_face_groups[1];
char rscid[49];
// IDA: void __usercall renderFaces(br_actor *actor@<EAX>, br_model *model@<EDX>, br_material *material@<EBX>, void *render_data@<ECX>, br_uint_8 style, int on_screen)
void renderFaces(br_actor* actor, br_model* model, br_material* material, void* render_data, br_uint_8 style, int on_screen) {

View File

@ -3,8 +3,6 @@
#include "CORE/V1DB/dbsetup.h"
#include "harness_trace.h"
char rscid[50];
// IDA: void __cdecl BrModelApplyMap(br_model *model, int map_type, br_matrix34 *xform)
void BrModelApplyMap(br_model* model, int map_type, br_matrix34* xform) {
int v;

View File

@ -1,8 +1,6 @@
#include "otable.h"
#include "harness_trace.h"
char rscid[50];
// IDA: br_order_table* __cdecl BrZsOrderTableAllocate(br_uint_16 size, br_uint_32 flags, br_uint_16 type)
br_order_table* BrZsOrderTableAllocate(br_uint_16 size, br_uint_32 flags, br_uint_16 type) {
br_order_table* order_table;

View File

@ -1,8 +1,6 @@
#include "prepmap.h"
#include "harness_trace.h"
char rscid[51];
// IDA: void __cdecl BrMapUpdate(br_pixelmap *map, br_uint_16 flags)
void BrMapUpdate(br_pixelmap* map, br_uint_16 flags) {
BrBufferUpdate(map, BRT_COLOUR_MAP_O, flags);

View File

@ -1,8 +1,6 @@
#include "prepmatl.h"
#include "harness_trace.h"
char rscid[52];
// IDA: void __cdecl BrMaterialUpdate(br_material *mat, br_uint_16 flags)
void BrMaterialUpdate(br_material* mat, br_uint_16 flags) {
br_token_value tva[32];

View File

@ -16,7 +16,6 @@ char* pm_edge_scratch;
pm_temp_edge** pm_edge_hash;
int num_edges;
pm_temp_edge* pm_edge_table;
char rscid[51];
#define PREP_ALIGN(f) (f)

View File

@ -3,8 +3,6 @@
#include "harness_trace.h"
#include "prepmap.h"
char rscid[51];
// IDA: void __cdecl BrTableUpdate(br_pixelmap *table, br_uint_16 flags)
void BrTableUpdate(br_pixelmap* table, br_uint_16 flags) {
BrBufferUpdate(table, BRT_UNKNOWN, flags);

View File

@ -8,8 +8,6 @@
#include "harness_trace.h"
char rscid[51];
// IDA: br_model* __cdecl BrModelAdd(br_model *model)
br_model* BrModelAdd(br_model* model) {
BrRegistryAdd(&v1db.reg_models, model);

View File

@ -7,8 +7,6 @@
#include "transfrm.h"
#include <string.h>
char rscid[55];
#define RendererModelMul(self, a1) self->dispatch->_modelMulF(self, a1);
#define RendererStatePush(self, a1) self->dispatch->_statePush(self, a1);
#define RendererStatePop(self, a1) self->dispatch->_statePop(self, a1);

View File

@ -218,8 +218,6 @@ struct {
#define DF_TRANSFORM 16
#define DF_BOUNDS 19
char rscid[53];
// IDA: int __usercall FopWrite_VERTICES@<EAX>(br_datafile *df@<EAX>, br_vertex *vertices@<EDX>, int nvertices@<EBX>)
int FopWrite_VERTICES(br_datafile* df, br_vertex* vertices, int nvertices) {
LOG_TRACE("(%p, %p, %d)", df, vertices, nvertices);

View File

@ -24,11 +24,13 @@
#include <math.h>
#include <stdlib.h>
float gEngine_powerup_factor[6] = { 1.3, 1.9, 2.5, 3.2, 4.0, 10.0 };
tCar_spec* gLast_car_to_skid[2];
tS3_sound_tag gSkid_tag[2];
tSave_camera gSave_camera[2];
tFace_ref gFace_list[150];
int gDoing_physics;
br_scalar gDt;
// suffix added to avoid duplicate symbol
int gCollision_detection_on__car = 1;
// suffix added to avoid duplicate symbol
br_vector3 gGround_normal__car;
// suffix added to avoid duplicate symbol
void (*ControlCar[6])(tCar_spec*, br_scalar) = {
&ControlCar1,
&ControlCar2,
@ -37,62 +39,63 @@ void (*ControlCar[6])(tCar_spec*, br_scalar) = {
&ControlCar5,
NULL
};
tNon_car_spec* gActive_non_car_list[50];
int gControl__car = 3; // suffix added to avoid duplicate symbol
int gFace_num__car = 1; // suffix added to avoid duplicate symbol
br_angle gOld_yaw__car; // suffix added to avoid duplicate symbol
br_angle gOld_zoom;
br_vector3 gCamera_pos_before_collide;
int gMetal_crunch_sound_id__car[5]; // suffix added to avoid duplicate symbol
int gMetal_scrape_sound_id__car[3]; // suffix added to avoid duplicate symbol
int gCar_car_collisions;
int gFreeze_mechanics;
tU32 gLast_cunning_stunt;
tU32 gWild_start;
tU32 gQuite_wild_start;
tU32 gQuite_wild_end;
tU32 gOn_me_wheels_start;
int gWoz_upside_down_at_all;
tS3_sound_tag gSkid_tag[2];
tCar_spec* gLast_car_to_skid[2];
int gEliminate_faces;
br_vector3 gZero_v__car; // suffix added to avoid duplicate symbol
tU32 gSwitch_time;
tSave_camera gSave_camera[2];
tU32 gLast_mechanics_time;
int gOpponent_viewing_mode;
int gNet_player_to_view_index;
int gDouble_pling_water;
int gStop_opponents_moving;
float gDefensive_powerup_factor[6];
float gOffensive_powerup_factor[6];
float gEngine_powerup_factor[6] = { 1.3, 1.9, 2.5, 3.2, 4.0, 10.0 };
br_angle gPanning_camera_angle;
br_scalar gPanning_camera_height;
int gFace_count;
float gCar_simplification_factor[2][5] = {
{ 10.0, 3.0, 1.5, 0.75, 0.0 },
{ 10.0, 5.0, 2.5, 1.5, 0.0 }
};
float gDefensive_powerup_factor[6];
float gOffensive_powerup_factor[6];
int gNet_player_to_view_index;
int gCar_simplification_level;
int gNum_active_non_cars;
int gCamera_has_collided;
tFace_ref gFace_list__car[150]; // suffix added to avoid duplicate symbol
tNon_car_spec* gActive_non_car_list[50];
int gOver_shoot;
int gDouble_pling_water;
int gOpponent_viewing_mode;
br_scalar gMin_world_y;
int gMetal_crunch_sound_id[5];
int gFreeze_mechanics;
int gWoz_upside_down_at_all;
tU32 gQuite_wild_end;
tU32 gLast_mechanics_time;
tU32 gOn_me_wheels_start;
int gCar_car_collisions;
br_scalar gAccel;
br_vector3 gAverage_grid_position;
br_actor* gPed_actor;
tU32 gWild_start;
tU32 gLast_cunning_stunt;
int gCollision_count;
tU32 gQuite_wild_start;
int gCamera_frozen;
tU32 gSwitch_time;
int gMaterial_index;
int gEliminate_faces;
int gInTheSea;
int gMetal_scrape_sound_id[3];
br_vector3 gZero_v;
int gCamera_mode;
int gDoing_physics;
br_scalar gOur_yaw;
br_vector3 gCamera_pos_before_collide;
br_scalar gGravity;
br_vector3 gNew_ground_normal;
br_scalar gDt;
int gFace_num = 1;
int gCollision_detection_on = 1;
int gControl = 3;
br_vector3 gGround_normal;
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
char gNon_car_spec_list[100];
int gCamera_has_collided;
int gCar_simplification_level;
int gNum_active_non_cars;
br_scalar gPanning_camera_height;
int gStop_opponents_moving;
tU32 gMechanics_time_sync;
int gNum_cars_and_non_cars;
int gFace_count;
br_angle gOld_yaw;
br_angle gOld_zoom;
br_angle gPanning_camera_angle;
// IDA: void __usercall DamageUnit(tCar_spec *pCar@<EAX>, int pUnit_type@<EDX>, int pDamage_amount@<EBX>)
void DamageUnit(tCar_spec* pCar, int pUnit_type, int pDamage_amount) {
@ -334,7 +337,7 @@ void InitialiseCar2(tCar_spec* pCar, int pClear_disabled_flag) {
break;
}
PossibleService();
pCar->box_face_ref = gFace_num - 2;
pCar->box_face_ref = gFace_num__car - 2;
pCar->doing_nothing_flag = 0;
pCar->end_steering_damage_effect = 0;
pCar->end_trans_damage_effect = 0;
@ -601,7 +604,7 @@ void GetFacesInBox(tCollision_info* c) {
}
GetNewBoundingBox(&c->bounds_world_space, &bnds.original_bounds, &mat);
c->bounds_ws_type = eBounds_ws;
if ((c->box_face_ref != gFace_num && (c->box_face_ref != gFace_num - 1 || c->box_face_start <= gFace_count))
if ((c->box_face_ref != gFace_num__car && (c->box_face_ref != gFace_num__car - 1 || c->box_face_start <= gFace_count))
|| (BrMatrix34Mul(&mat5, &mat, &c->last_box_inv_mat),
GetNewBoundingBox(&new_in_old, &bnds.original_bounds, &mat5),
c->last_box.max.v[0] <= new_in_old.max.v[0])
@ -629,11 +632,11 @@ void GetFacesInBox(tCollision_info* c) {
bnds.mat = &mat;
c->box_face_start = gFace_count;
gPling_face = NULL;
gFace_count += FindFacesInBox(&bnds, &gFace_list[gFace_count], 150 - gFace_count);
gFace_count += FindFacesInBox(&bnds, &gFace_list__car[gFace_count], 150 - gFace_count);
if (gFace_count >= 150) {
c->box_face_start = 0;
gFace_count = FindFacesInBox(&bnds, gFace_list, 150);
++gFace_num;
gFace_count = FindFacesInBox(&bnds, gFace_list__car, 150);
++gFace_num__car;
}
old_d = c->water_d;
if (c->driver == eDriver_local_human
@ -683,7 +686,7 @@ void GetFacesInBox(tCollision_info* c) {
EndPipingSession();
}
c->box_face_end = gFace_count;
c->box_face_ref = gFace_num;
c->box_face_ref = gFace_num__car;
}
}
@ -775,7 +778,7 @@ void ControlOurCar(tU32 pTime_difference) {
}
}
ts = (double)pTime_difference / 1000.0;
ControlCar[gControl](car, ts);
ControlCar[gControl__car](car, ts);
RememberSafePosition(car, pTime_difference);
if (gCamera_reset) {
BrVector3SetFloat(&minus_k, 0.0, 0.0, -1.0);
@ -1137,8 +1140,8 @@ void ApplyPhysicsToCars(tU32 last_frame_time, tU32 pTime_difference) {
}
if (!car->disabled
&& (!car->doing_nothing_flag || (car->driver >= eDriver_net_human && (!gRecover_timer || car->driver != eDriver_local_human)))) {
if (car->box_face_ref != gFace_num
&& (car->box_face_ref != gFace_num - 1 || car->box_face_start <= gFace_count)) {
if (car->box_face_ref != gFace_num__car
&& (car->box_face_ref != gFace_num__car - 1 || car->box_face_start <= gFace_count)) {
car_info = (tCollision_info*)car;
GetFacesInBox(car_info);
}
@ -1155,8 +1158,8 @@ void ApplyPhysicsToCars(tU32 last_frame_time, tU32 pTime_difference) {
non_car->collision_info.dt = (double)(gLast_mechanics_time + PHYSICS_STEP_TIME - non_car->collision_info.message.time) / 1000.0;
GetNetPos((tCar_spec*)non_car);
}
if (non_car->collision_info.box_face_ref != gFace_num
&& (non_car->collision_info.box_face_ref != gFace_num - 1
if (non_car->collision_info.box_face_ref != gFace_num__car
&& (non_car->collision_info.box_face_ref != gFace_num__car - 1
|| non_car->collision_info.box_face_start <= gFace_count)) {
GetFacesInBox(&non_car->collision_info);
}
@ -1277,7 +1280,7 @@ int CollideCarWithWall(tCollision_info* car, br_scalar dt) {
LOG_TRACE("(%p, %f)", car, dt);
GetFacesInBox(car);
if (gCollision_detection_on) {
if (gCollision_detection_on__car) {
car->collision_flag = 0;
while (CollCheck(car, dt)) {
car->collision_flag++;
@ -1308,10 +1311,10 @@ int CollideCarWithWall(tCollision_info* car, br_scalar dt) {
void ToggleControls() {
LOG_TRACE("()");
if (!ControlCar[++gControl]) {
gControl = 0;
if (!ControlCar[++gControl__car]) {
gControl__car = 0;
}
switch (gControl) {
switch (gControl__car) {
case 0:
NewTextHeadupSlot(4, 0, 500, -1, "Original Controls");
break;
@ -2428,7 +2431,7 @@ void DoRevs(tCar_spec* c, br_scalar dt) {
c->gear = 0;
LOG_DEBUG("changedown2");
}
if (!c->number_of_wheels_on_ground || (c->wheel_slip & 2) != -1 || !c->gear) {
if (!c->number_of_wheels_on_ground || ((c->wheel_slip & 2) + 1) != 0 || !c->gear) {
if (c->number_of_wheels_on_ground) {
//LOG_DEBUG("spin1");
wheel_spin_force = c->force_torque_ratio * c->torque - (double)c->gear * c->acc_force;
@ -2772,14 +2775,14 @@ void MultiFindFloorInBoxBU(int pNum_rays, br_vector3* a, br_vector3* b, br_vecto
LOG_TRACE("(%d, %p, %p, %p, %p, %p, %p)", pNum_rays, a, b, nor, d, c, mat_ref);
for (i = 0; i < c->box_face_end; i++) {
face_ref = &gFace_list[i];
face_ref = &gFace_list__car[i];
if (!gEliminate_faces || (face_ref->flags & 0x80) == 0) {
MultiRayCheckSingleFace(pNum_rays, face_ref, a, b, &nor2, dist);
for (j = 0; j < pNum_rays; ++j) {
if (d[j] > dist[j]) {
d[j] = dist[j];
nor[j] = nor2;
l = *gFace_list[i].material->identifier - 47;
l = *gFace_list__car[i].material->identifier - 47;
if (l >= 0 && l < 11) {
mat_ref[j] = l;
}
@ -3522,7 +3525,7 @@ void NormalPositionExternalCamera(tCar_spec* c, tU32 pTime) {
m1 = &gCamera->t.t.mat;
m2 = &c->car_master_actor->t.t.mat;
swoop = gCountdown && c->pos.v[1] + 0.001 < gCamera_height;
manual_swing = gOld_yaw != gCamera_yaw || swoop;
manual_swing = gOld_yaw__car != gCamera_yaw || swoop;
manual_zoom = (double)gOld_zoom != gCamera_zoom;
old_camera_pos = *(br_vector3*)&m1->m[3][0];
if (!gProgram_state.cockpit_on) {
@ -3580,8 +3583,8 @@ void NormalPositionExternalCamera(tCar_spec* c, tU32 pTime) {
a.v[2] = c->pos.v[2] - old_camera_pos.v[2];
a.v[1] = 0.0;
if (manual_swing) {
DrVector3RotateY(&a, (gCamera_sign == 0 ? 1 : -1) * (gCamera_yaw - gOld_yaw));
gCamera_yaw = gOld_yaw;
DrVector3RotateY(&a, (gCamera_sign == 0 ? 1 : -1) * (gCamera_yaw - gOld_yaw__car));
gCamera_yaw = gOld_yaw__car;
}
scale = sqrt(a.v[1] * a.v[1] + a.v[2] * a.v[2] + a.v[0] * a.v[0]);
if (scale <= 2.3841858e-7) {
@ -3655,7 +3658,7 @@ void NormalPositionExternalCamera(tCar_spec* c, tU32 pTime) {
}
PointCameraAtCar(c, m2, m1);
}
gOld_yaw = gCamera_yaw;
gOld_yaw__car = gCamera_yaw;
gOld_zoom = (br_angle)gCamera_zoom;
}
@ -3710,7 +3713,7 @@ void SwingCamera(tCar_spec* c, br_matrix34* m1, br_matrix34* m2, br_vector3* vn,
static br_vector3 old_vn;
LOG_TRACE("(%p, %p, %p, %p, %d)", c, m1, m2, vn, pTime);
manual_swing = gOld_yaw != gCamera_yaw;
manual_swing = gOld_yaw__car != gCamera_yaw;
if (elapsed_time > 500) {
elapsed_time = -1;
}

View File

@ -6,65 +6,65 @@
#define CAR_MAX_SIMPLIFICATION_LEVEL 4
extern float gEngine_powerup_factor[6];
extern tCar_spec* gLast_car_to_skid[2];
extern int gDoing_physics;
extern br_scalar gDt;
extern int gCollision_detection_on__car; // suffix added to avoid duplicate symbol
extern br_vector3 gGround_normal__car; // suffix added to avoid duplicate symbol
extern void (*ControlCar__car[6])(tCar_spec*, br_scalar); // suffix added to avoid duplicate symbol
extern int gControl__car; // suffix added to avoid duplicate symbol
extern int gFace_num__car; // suffix added to avoid duplicate symbol
extern br_angle gOld_yaw__car; // suffix added to avoid duplicate symbol
extern br_angle gOld_zoom;
extern br_vector3 gCamera_pos_before_collide;
extern int gMetal_crunch_sound_id__car[5]; // suffix added to avoid duplicate symbol
extern int gMetal_scrape_sound_id__car[3]; // suffix added to avoid duplicate symbol
extern int gCar_car_collisions;
extern int gFreeze_mechanics;
extern tU32 gLast_cunning_stunt;
extern tU32 gWild_start;
extern tU32 gQuite_wild_start;
extern tU32 gQuite_wild_end;
extern tU32 gOn_me_wheels_start;
extern int gWoz_upside_down_at_all;
extern tS3_sound_tag gSkid_tag[2];
extern tCar_spec* gLast_car_to_skid[2];
extern int gEliminate_faces;
extern br_vector3 gZero_v__car; // suffix added to avoid duplicate symbol
extern tU32 gSwitch_time;
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 tU32 gLast_mechanics_time;
extern int gOpponent_viewing_mode;
extern int gNet_player_to_view_index;
extern int gDouble_pling_water;
extern int gStop_opponents_moving;
extern float gDefensive_powerup_factor[6];
extern float gOffensive_powerup_factor[6];
extern int gNet_player_to_view_index;
extern float gEngine_powerup_factor[6];
extern br_angle gPanning_camera_angle;
extern br_scalar gPanning_camera_height;
extern int gFace_count;
extern float gCar_simplification_factor[2][5];
extern int gCar_simplification_level;
extern int gNum_active_non_cars;
extern int gCamera_has_collided;
extern tFace_ref gFace_list__car[150]; // suffix added to avoid duplicate symbol
extern tNon_car_spec* gActive_non_car_list[50];
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 br_scalar gOur_yaw__car; // suffix added to avoid duplicate symbol
extern br_scalar gGravity__car; // suffix added to avoid duplicate symbol
extern br_vector3 gNew_ground_normal__car; // suffix added to avoid duplicate symbol
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;
void DamageUnit(tCar_spec* pCar, int pUnit_type, int pDamage_amount);

View File

@ -25,54 +25,6 @@
#include "world.h"
#include <stdlib.h>
tCheat gKev_keys[44] = {
{ .code = 0xA11EE75D, .code2 = 0xF805EDDD, .action_proc = SetFlag, .num = 0x0A11EE75D },
{ .code = 0x564E78B9, .code2 = 0x99155115, .action_proc = SetFlag, .num = 0x564E78B9 },
{ .code = 0x1F47E5E8, .code2 = 0xA715222C, .action_proc = SetFlag2, .num = 1 },
{ .code = 0x39D4C4C4, .code2 = 0xF0A2C5B0, .action_proc = FinishLap, .num = 0 },
{ .code = 0x2654216C, .code2 = 0xF8256D15, .action_proc = GetPowerup, .num = 1 },
{ .code = 0x4294EC89, .code2 = 0xC38AD60E, .action_proc = GetPowerup, .num = 2 },
{ .code = 0x2CEB2850, .code2 = 0xA0C2D27E, .action_proc = GetPowerup, .num = 3 },
{ .code = 0x2D5F3125, .code2 = 0x9CE8A541, .action_proc = GetPowerup, .num = 4 },
{ .code = 0x2169C78B, .code2 = 0x7F3C9229, .action_proc = GetPowerup, .num = 5 },
{ .code = 0x2203C0CB, .code2 = 0x79729BE4, .action_proc = GetPowerup, .num = 6 },
{ .code = 0x34F4E3EC, .code2 = 0x868C534D, .action_proc = GetPowerup, .num = 7 },
{ .code = 0x34010316, .code2 = 0x591D1EB2, .action_proc = GetPowerup, .num = 8 },
{ .code = 0x214FE3BC, .code2 = 0x87285111, .action_proc = GetPowerup, .num = 9 },
{ .code = 0x2FABC390, .code2 = 0xC93D9F7, .action_proc = GetPowerup, .num = 10 },
{ .code = 0x2902E890, .code2 = 0x40969F67, .action_proc = GetPowerup, .num = 11 },
{ .code = 0x2F458288, .code2 = 0x58074E2, .action_proc = GetPowerup, .num = 12 },
{ .code = 0x249DA152, .code2 = 0x8F287346, .action_proc = GetPowerup, .num = 13 },
{ .code = 0x23AAE08B, .code2 = 0xA668103D, .action_proc = GetPowerup, .num = 14 },
{ .code = 0x32130661, .code2 = 0x56F03459, .action_proc = GetPowerup, .num = 15 },
{ .code = 0x2734E944, .code2 = 0xFE1E4639, .action_proc = GetPowerup, .num = 16 },
{ .code = 0x28341139, .code2 = 0x355F6D02, .action_proc = GetPowerup, .num = 17 },
{ .code = 0x20508831, .code2 = 0x123D1961, .action_proc = GetPowerup, .num = 18 },
{ .code = 0x346B8BCB, .code2 = 0x4ABA696C, .action_proc = GetPowerup, .num = 19 },
{ .code = 0x3FC93DF0, .code2 = 0x29FA9EFB, .action_proc = GetPowerup, .num = 20 },
{ .code = 0x2A80B09B, .code2 = 0x58516F5, .action_proc = GetPowerup, .num = 21 },
{ .code = 0x2F548FD1, .code2 = 0x696744DA, .action_proc = GetPowerup, .num = 22 },
{ .code = 0x3CB74F32, .code2 = 0xB915D88D, .action_proc = GetPowerup, .num = 23 },
{ .code = 0x297B53BA, .code2 = 0x218D4D2D, .action_proc = GetPowerup, .num = 24 },
{ .code = 0x351BC37D, .code2 = 0xB2A63343, .action_proc = GetPowerup, .num = 25 },
{ .code = 0x2B624386, .code2 = 0x9BA6260E, .action_proc = GetPowerup, .num = 26 },
{ .code = 0x2BA4AE23, .code2 = 0xC163A76C, .action_proc = GetPowerup, .num = 27 },
{ .code = 0x2FB92DCA, .code2 = 0x4AD7D54E, .action_proc = GetPowerup, .num = 32 },
{ .code = 0x3A42191B, .code2 = 0xEFF70F4C, .action_proc = GetPowerup, .num = 35 },
{ .code = 0x2ACA3190, .code2 = 0xD9004F25, .action_proc = GetPowerup, .num = 36 },
{ .code = 0x37C1F613, .code2 = 0xB7FAF351, .action_proc = GetPowerup, .num = 37 },
{ .code = 0x2BA3F603, .code2 = 0x29F2425C, .action_proc = GetPowerup, .num = 38 },
{ .code = 0x416EFF61, .code2 = 0x2667DF4B, .action_proc = GetPowerup, .num = 39 },
{ .code = 0x2554125C, .code2 = 0x393CA35D, .action_proc = GetPowerup, .num = 41 },
{ .code = 0x3FFF84D5, .code2 = 0x84A42DF4, .action_proc = GetPowerup, .num = 42 },
{ .code = 0x37E83018, .code2 = 0xB609AEE6, .action_proc = GetPowerup, .num = 43 },
{ .code = 0x2DB03B19, .code2 = 0x924A84B7, .action_proc = GetPowerup, .num = 44 },
{ .code = 0x30A19FAB, .code2 = 0x2B0C2782, .action_proc = GetPowerup, .num = 45 },
{ .code = 0x0, .code2 = 0x0, .action_proc = 0x0, .num = 0x0 }
};
char* gAbuse_text[10];
tEdit_func* gEdit_funcs[10][18][8];
char* gEdit_mode_names[10];
tToggle_element gToggle_array[] = {
{ 34, -2, 1, 1, 0, ToggleMirror },
{ 56, -2, 1, 1, 0, ToggleMap },
@ -118,20 +70,67 @@ tToggle_element gToggle_array[] = {
{ 26, 8, 1, 1, 0, ToggleInfo },
{ 26, 7, 1, 1, 0, ToggleInfo }
};
int gRepair_last_time;
int gHad_auto_recover;
tU32 gLast_repair_time;
tEdit_mode gWhich_edit_mode;
char* gEdit_mode_names[10];
tEdit_func* gEdit_funcs[10][18][8];
tCheat gKev_keys[44] = {
{ .code = 0xA11EE75D, .code2 = 0xF805EDDD, .action_proc = SetFlag, .num = 0x0A11EE75D },
{ .code = 0x564E78B9, .code2 = 0x99155115, .action_proc = SetFlag, .num = 0x564E78B9 },
{ .code = 0x1F47E5E8, .code2 = 0xA715222C, .action_proc = SetFlag2, .num = 1 },
{ .code = 0x39D4C4C4, .code2 = 0xF0A2C5B0, .action_proc = FinishLap, .num = 0 },
{ .code = 0x2654216C, .code2 = 0xF8256D15, .action_proc = GetPowerup, .num = 1 },
{ .code = 0x4294EC89, .code2 = 0xC38AD60E, .action_proc = GetPowerup, .num = 2 },
{ .code = 0x2CEB2850, .code2 = 0xA0C2D27E, .action_proc = GetPowerup, .num = 3 },
{ .code = 0x2D5F3125, .code2 = 0x9CE8A541, .action_proc = GetPowerup, .num = 4 },
{ .code = 0x2169C78B, .code2 = 0x7F3C9229, .action_proc = GetPowerup, .num = 5 },
{ .code = 0x2203C0CB, .code2 = 0x79729BE4, .action_proc = GetPowerup, .num = 6 },
{ .code = 0x34F4E3EC, .code2 = 0x868C534D, .action_proc = GetPowerup, .num = 7 },
{ .code = 0x34010316, .code2 = 0x591D1EB2, .action_proc = GetPowerup, .num = 8 },
{ .code = 0x214FE3BC, .code2 = 0x87285111, .action_proc = GetPowerup, .num = 9 },
{ .code = 0x2FABC390, .code2 = 0xC93D9F7, .action_proc = GetPowerup, .num = 10 },
{ .code = 0x2902E890, .code2 = 0x40969F67, .action_proc = GetPowerup, .num = 11 },
{ .code = 0x2F458288, .code2 = 0x58074E2, .action_proc = GetPowerup, .num = 12 },
{ .code = 0x249DA152, .code2 = 0x8F287346, .action_proc = GetPowerup, .num = 13 },
{ .code = 0x23AAE08B, .code2 = 0xA668103D, .action_proc = GetPowerup, .num = 14 },
{ .code = 0x32130661, .code2 = 0x56F03459, .action_proc = GetPowerup, .num = 15 },
{ .code = 0x2734E944, .code2 = 0xFE1E4639, .action_proc = GetPowerup, .num = 16 },
{ .code = 0x28341139, .code2 = 0x355F6D02, .action_proc = GetPowerup, .num = 17 },
{ .code = 0x20508831, .code2 = 0x123D1961, .action_proc = GetPowerup, .num = 18 },
{ .code = 0x346B8BCB, .code2 = 0x4ABA696C, .action_proc = GetPowerup, .num = 19 },
{ .code = 0x3FC93DF0, .code2 = 0x29FA9EFB, .action_proc = GetPowerup, .num = 20 },
{ .code = 0x2A80B09B, .code2 = 0x58516F5, .action_proc = GetPowerup, .num = 21 },
{ .code = 0x2F548FD1, .code2 = 0x696744DA, .action_proc = GetPowerup, .num = 22 },
{ .code = 0x3CB74F32, .code2 = 0xB915D88D, .action_proc = GetPowerup, .num = 23 },
{ .code = 0x297B53BA, .code2 = 0x218D4D2D, .action_proc = GetPowerup, .num = 24 },
{ .code = 0x351BC37D, .code2 = 0xB2A63343, .action_proc = GetPowerup, .num = 25 },
{ .code = 0x2B624386, .code2 = 0x9BA6260E, .action_proc = GetPowerup, .num = 26 },
{ .code = 0x2BA4AE23, .code2 = 0xC163A76C, .action_proc = GetPowerup, .num = 27 },
{ .code = 0x2FB92DCA, .code2 = 0x4AD7D54E, .action_proc = GetPowerup, .num = 32 },
{ .code = 0x3A42191B, .code2 = 0xEFF70F4C, .action_proc = GetPowerup, .num = 35 },
{ .code = 0x2ACA3190, .code2 = 0xD9004F25, .action_proc = GetPowerup, .num = 36 },
{ .code = 0x37C1F613, .code2 = 0xB7FAF351, .action_proc = GetPowerup, .num = 37 },
{ .code = 0x2BA3F603, .code2 = 0x29F2425C, .action_proc = GetPowerup, .num = 38 },
{ .code = 0x416EFF61, .code2 = 0x2667DF4B, .action_proc = GetPowerup, .num = 39 },
{ .code = 0x2554125C, .code2 = 0x393CA35D, .action_proc = GetPowerup, .num = 41 },
{ .code = 0x3FFF84D5, .code2 = 0x84A42DF4, .action_proc = GetPowerup, .num = 42 },
{ .code = 0x37E83018, .code2 = 0xB609AEE6, .action_proc = GetPowerup, .num = 43 },
{ .code = 0x2DB03B19, .code2 = 0x924A84B7, .action_proc = GetPowerup, .num = 44 },
{ .code = 0x30A19FAB, .code2 = 0x2B0C2782, .action_proc = GetPowerup, .num = 45 },
{ .code = 0x0, .code2 = 0x0, .action_proc = 0x0, .num = 0x0 }
};
int gAllow_car_flying;
int gEntering_message;
tU32 gPalette_fade_time;
char* gAbuse_text[10];
char gString[84];
int gToo_late;
int gAllow_car_flying;
int gRecover_timer;
tU32 gLast_repair_time;
int gHad_auto_recover;
tEdit_mode gWhich_edit_mode;
int gRepair_last_time;
int gRecovery_voucher_count;
int gInstant_handbrake;
int gAuto_repair;
tU32 gPalette_fade_time;
int gEntering_message;
int _unittest_controls_lastGetPowerup = 0;

View File

@ -4,21 +4,24 @@
#include "br_types.h"
#include "dr_types.h"
extern tToggle_element gToggle_array[43];
extern int gRepair_last_time;
extern int gHad_auto_recover;
extern tU32 gLast_repair_time;
extern tEdit_mode gWhich_edit_mode;
extern char* gEdit_mode_names[10];
extern tEdit_func* gEdit_funcs[10][18][8];
extern tCheat gKev_keys[44];
extern int gAllow_car_flying;
extern int gEntering_message;
extern tU32 gPalette_fade_time;
extern char* gAbuse_text[10];
extern char gString[84];
extern int gToo_late;
extern int gAllow_car_flying;
extern int gRecover_timer;
extern tU32 gLast_repair_time;
extern int gHad_auto_recover;
extern tEdit_mode gWhich_edit_mode;
extern int gRepair_last_time;
extern int gRecovery_voucher_count;
extern int gInstant_handbrake;
extern int gAuto_repair;
extern tU32 gPalette_fade_time;
extern int gEntering_message;
extern int _unittest_controls_lastGetPowerup;
void AbortRace();

View File

@ -6,9 +6,9 @@
float gWobble_spam_y[8];
float gWobble_spam_z[8];
int gSteal_ranks[5];
tU8 gSmoke_damage_step[12];
br_scalar gWheel_circ_to_width;
tU8 gSmoke_damage_step[12];
int gSteal_ranks[5];
// IDA: int __usercall ReadCrushData@<EAX>(FILE *pF@<EAX>, tCrush_data *pCrush_data@<EDX>)
int ReadCrushData(FILE* pF, tCrush_data* pCrush_data) {

View File

@ -4,6 +4,12 @@
#include "br_types.h"
#include "dr_types.h"
extern float gWobble_spam_y[8];
extern float gWobble_spam_z[8];
extern br_scalar gWheel_circ_to_width;
extern tU8 gSmoke_damage_step[12];
extern int gSteal_ranks[5];
int ReadCrushData(FILE* pF, tCrush_data* pCrush_data);
float SkipCrushData(FILE* pF);

View File

@ -4,6 +4,8 @@
#include "br_types.h"
#include "dr_types.h"
extern tS32 gLast_demo_end_anim;
void ShowCutScene(int pIndex, int pWait_end, int pSound_ID, br_scalar pDelay);
void DoSCILogo();

View File

@ -4,6 +4,8 @@
#include "br_types.h"
#include "dr_types.h"
extern int gLast_demo;
void DoDemo();
#endif

View File

@ -9,6 +9,9 @@
#include <stdlib.h>
tDepth_effect gDistance_depth_effects[4];
int gSky_on;
int gDepth_cueing_on;
tDepth_effect_type gSwap_depth_effect_type;
br_scalar gSky_height;
br_scalar gSky_x_multiplier;
br_scalar gSky_width;
@ -17,8 +20,6 @@ tU32 gLast_depth_change;
br_scalar gOld_yon;
br_pixelmap* gWater_shade_table;
br_material* gHorizon_material;
int gDepth_cueing_on;
int gSky_on;
br_model* gRearview_sky_model;
int gFog_shade_table_power;
br_actor* gRearview_sky_actor;
@ -31,7 +32,6 @@ br_pixelmap* gFog_shade_table;
int gSwap_depth_effect_start;
br_pixelmap* gDepth_shade_table;
tSpecial_volume* gLast_camera_special_volume;
tDepth_effect_type gSwap_depth_effect_type;
br_pixelmap* gAcid_shade_table;
int gSwap_depth_effect_end;
br_pixelmap* gSwap_sky_texture;

View File

@ -5,6 +5,9 @@
#include "dr_types.h"
extern tDepth_effect gDistance_depth_effects[4];
extern int gSky_on;
extern int gDepth_cueing_on;
extern tDepth_effect_type gSwap_depth_effect_type;
extern br_scalar gSky_height;
extern br_scalar gSky_x_multiplier;
extern br_scalar gSky_width;
@ -13,8 +16,6 @@ extern tU32 gLast_depth_change;
extern br_scalar gOld_yon;
extern br_pixelmap* gWater_shade_table;
extern br_material* gHorizon_material;
extern int gDepth_cueing_on;
extern int gSky_on;
extern br_model* gRearview_sky_model;
extern int gFog_shade_table_power;
extern br_actor* gRearview_sky_actor;
@ -27,7 +28,6 @@ extern br_pixelmap* gFog_shade_table;
extern int gSwap_depth_effect_start;
extern br_pixelmap* gDepth_shade_table;
extern tSpecial_volume* gLast_camera_special_volume;
extern tDepth_effect_type gSwap_depth_effect_type;
extern br_pixelmap* gAcid_shade_table;
extern int gSwap_depth_effect_end;
extern br_pixelmap* gSwap_sky_texture;

View File

@ -11,6 +11,10 @@
#include "utility.h"
#include <stdlib.h>
int gLast_fancy_index;
int gLast_credit_headup__displays; // suffix added to avoid duplicate symbol
int gLast_time_credit_headup;
tDR_font* gCached_font;
br_font* gBR_fonts[4];
tQueued_headup gQueued_headups[4];
int gOld_times[10];
@ -22,10 +26,6 @@ int gQueued_headup_count;
tU32 gLast_earn_time;
tU32 gLast_time_credit_amount;
int gLast_credit_amount;
tDR_font* gCached_font;
int gLast_time_credit_headup;
int gLast_fancy_index;
int gLast_credit_headup;
tHeadup gHeadups[15];
int gLaps_headup;
int gCar_kill_count_headup;
@ -92,7 +92,7 @@ void ClearHeadups() {
}
}
gLast_fancy_index = -1;
gLast_credit_headup = -1;
gLast_credit_headup__displays = -1;
gLast_time_credit_headup = -1;
gLast_earn_time = 0;
gLast_fancy_time = 0;

View File

@ -4,6 +4,10 @@
#include "br_types.h"
#include "dr_types.h"
extern int gLast_fancy_index;
extern int gLast_credit_headup__displays; // suffix added to avoid duplicate symbol
extern int gLast_time_credit_headup;
extern tDR_font* gCached_font;
extern br_font* gBR_fonts[4];
extern tQueued_headup gQueued_headups[4];
extern int gOld_times[10];
@ -15,10 +19,6 @@ extern int gQueued_headup_count;
extern tU32 gLast_earn_time;
extern tU32 gLast_time_credit_amount;
extern int gLast_credit_amount;
extern tDR_font* gCached_font;
extern int gLast_time_credit_headup;
extern int gLast_fancy_index;
extern int gLast_credit_headup;
extern tHeadup gHeadups[15];
extern int gLaps_headup;
extern int gCar_kill_count_headup;

View File

@ -3,7 +3,6 @@
#include "loading.h"
#include <stdlib.h>
br_filesystem* gOld_file_system;
br_filesystem gFilesystem = {
"Carmageddon",
NULL,
@ -19,6 +18,7 @@ br_filesystem gFilesystem = {
NULL,
NULL
};
br_filesystem* gOld_file_system;
// Added by Jeff
#define DR_MEMORY_FILESYSTEM 140

View File

@ -4,6 +4,9 @@
#include "br_types.h"
#include "dr_types.h"
extern br_filesystem gFilesystem;
extern br_filesystem* gOld_file_system;
void* DRStdioOpenRead(char* name, br_size_t n_magics, br_mode_test_cbfn* identify, int* mode_result);
void* DRStdioOpenWrite(char* name, int mode);

View File

@ -3,7 +3,8 @@
#include "errors.h"
#include <stdlib.h>
br_resource_class gStainless_classes[118];
br_allocator gAllocator = { "Death Race", DRStdlibAllocate, DRStdlibFree, DRStdlibInquire, Claim4ByteAlignment };
int gNon_fatal_allocation_errors = 0;
char* gMem_names[247] = {
NULL,
"BR_MEMORY_SCRATCH",
@ -252,9 +253,7 @@ char* gMem_names[247] = {
"kMem_action_replay_buffer",
"kMem_misc"
};
int gNon_fatal_allocation_errors = 0;
br_allocator gAllocator = { "Death Race", DRStdlibAllocate, DRStdlibFree, DRStdlibInquire, Claim4ByteAlignment };
br_resource_class gStainless_classes[118];
// IDA: void __cdecl SetNonFatalAllocationErrors()
void SetNonFatalAllocationErrors() {

View File

@ -4,6 +4,11 @@
#include "br_types.h"
#include "dr_types.h"
extern br_allocator gAllocator;
extern int gNon_fatal_allocation_errors;
extern char* gMem_names[247];
extern br_resource_class gStainless_classes[118];
void SetNonFatalAllocationErrors();
void ResetNonFatalAllocationErrors();

View File

@ -128,10 +128,10 @@ char* gError_messages[126] = {
"Random number out of range (%)"
};
int gError_code;
char* gPalette_copy;
int gPixel_buffer_size;
int gMouse_was_started__;
char* gPixels_copy;
char* gPalette_copy__errors; // suffix added to avoid duplicate symbol
int gPixel_buffer_size__errors; // suffix added to avoid duplicate symbol
int gMouse_was_started__errors; // suffix added to avoid duplicate symbol
char* gPixels_copy__errors; // suffix added to avoid duplicate symbol
// IDA: void __cdecl FatalError(int pStr_index, ...)
void FatalError(int pStr_index, ...) {

View File

@ -4,6 +4,13 @@
#include "br_types.h"
#include "dr_types.h"
extern char* gError_messages[126];
extern int gError_code;
extern char* gPalette_copy__errors; // suffix added to avoid duplicate symbol
extern int gPixel_buffer_size__errors; // suffix added to avoid duplicate symbol
extern int gMouse_was_started__errors; // suffix added to avoid duplicate symbol
extern char* gPixels_copy__errors; // suffix added to avoid duplicate symbol
void FatalError(int pStr_index, ...);
void NonFatalError(int pStr_index, ...);

View File

@ -6,38 +6,39 @@
#include "world.h"
#include <stdlib.h>
br_matrix34 gPick_model_to_view;
int gPling_materials = 1;
br_material* gSub_material;
br_material* gReal_material;
int gNfaces;
br_matrix34 gPick_model_to_view__finteray; // suffix added to avoid duplicate symbol
int gTemp_group;
br_model* gNearest_model;
int gNfaces;
br_model* gSelected_model;
int gNearest_face_group;
br_material* gSub_material;
int gNearest_face;
br_material* gReal_material;
br_scalar gNearest_T;
tFace_ref* gPling_face;
// IDA: int __cdecl BadDiv(br_scalar a, br_scalar b)
int BadDiv_finteray(br_scalar a, br_scalar b) {
// Suffix added to avoid duplicate symbol
int BadDiv__finteray(br_scalar a, br_scalar b) {
//LOG_TRACE("(%f, %f)", a, b);
return fabs(b) < 1.0 && fabs(a) > fabs(b) * BR_SCALAR_MAX;
}
// IDA: void __usercall DRVector2AccumulateScale(br_vector2 *a@<EAX>, br_vector2 *b@<EDX>, br_scalar s)
void DRVector2AccumulateScale_finteray(br_vector2* a, br_vector2* b, br_scalar s) {
// Suffix added to avoid duplicate symbol
void DRVector2AccumulateScale__finteray(br_vector2* a, br_vector2* b, br_scalar s) {
LOG_TRACE("(%p, %p, %f)", a, b, s);
a->v[0] = b->v[0] * s + a->v[0];
a->v[1] = b->v[1] * s + a->v[1];
}
// Offset: 180
// Size: 0x228
//IDA: int __usercall PickBoundsTestRay@<EAX>(br_bounds *b@<EAX>, br_vector3 *rp@<EDX>, br_vector3 *rd@<EBX>, br_scalar t_near, br_scalar t_far, br_scalar *new_t_near, br_scalar *new_t_far)
int PickBoundsTestRay_finteray(br_bounds* b, br_vector3* rp, br_vector3* rd, br_scalar t_near, br_scalar t_far, br_scalar* new_t_near, br_scalar* new_t_far) {
// Suffix added to avoid duplicate symbol
int PickBoundsTestRay__finteray(br_bounds* b, br_vector3* rp, br_vector3* rd, br_scalar t_near, br_scalar t_far, br_scalar* new_t_near, br_scalar* new_t_far) {
int i;
float s;
float t;
@ -135,7 +136,7 @@ int ActorRayPick2D(br_actor* ap, br_vector3* pPosition, br_vector3* pDir, br_mod
pDir = &dir;
}
if (ap->type == BR_ACTOR_MODEL) {
if (PickBoundsTestRay_finteray(&this_model->bounds, pPosition, pDir, t_near, t_far, &t_near, &t_far)) {
if (PickBoundsTestRay__finteray(&this_model->bounds, pPosition, pDir, t_near, t_far, &t_near, &t_far)) {
t_near = 0.0;
if (gNearest_T >= 1.0) {
t_far = 1.0;
@ -151,7 +152,7 @@ int ActorRayPick2D(br_actor* ap, br_vector3* pPosition, br_vector3* pDir, br_mod
return r;
}
} else if (ap->type >= BR_ACTOR_BOUNDS && ap->type <= BR_ACTOR_BOUNDS_CORRECT) {
if (PickBoundsTestRay_finteray((br_bounds*)ap->type_data, pPosition, pDir, t_near, t_far, &t_near, &t_far)) {
if (PickBoundsTestRay__finteray((br_bounds*)ap->type_data, pPosition, pDir, t_near, t_far, &t_near, &t_far)) {
for (a = ap->children; a; a = a->next) {
r = ActorRayPick2D(a, pPosition, pDir, this_model, this_material, callback);
if (r) {
@ -174,14 +175,13 @@ int ActorRayPick2D(br_actor* ap, br_vector3* pPosition, br_vector3* pDir, br_mod
int DRSceneRayPick2D(br_actor* world, br_vector3* pPosition, br_vector3* pDir, dr_pick2d_cbfn* callback) {
LOG_TRACE("(%p, %p, %p, %p)", world, pPosition, pDir, callback);
BrMatrix34Inverse(&gPick_model_to_view, &world->t.t.mat);
BrMatrix34Inverse(&gPick_model_to_view__finteray, &world->t.t.mat);
return ActorRayPick2D(world, pPosition, pDir, NULL, NULL, callback);
}
// Offset: 1544
// Size: 0x80b
//IDA: int __usercall DRModelPick2D@<EAX>(br_model *model@<EAX>, br_material *material@<EDX>, br_vector3 *ray_pos@<EBX>, br_vector3 *ray_dir@<ECX>, br_scalar t_near, br_scalar t_far, dr_modelpick2d_cbfn *callback, void *arg)
int DRModelPick2D_finteray(br_model* model, br_material* material, br_vector3* ray_pos, br_vector3* ray_dir, br_scalar t_near, br_scalar t_far, dr_modelpick2d_cbfn* callback, void* arg) {
// Suffix added to avoid duplicate symbol
int DRModelPick2D__finteray(br_model* model, br_material* material, br_vector3* ray_pos, br_vector3* ray_dir, br_scalar t_near, br_scalar t_far, dr_modelpick2d_cbfn* callback, void* arg) {
DR_FACE* fp;
int f;
int axis_m;
@ -232,7 +232,7 @@ int DRModelPick2D_finteray(br_model* model, br_material* material, br_vector3* r
+ fp->eqn.v[2] * ray_pos->v[2]
+ fp->eqn.v[0] * ray_pos->v[0]
- fp->eqn.v[3];
if (!BadDiv_finteray(numerator, d)) {
if (!BadDiv__finteray(numerator, d)) {
t = -(numerator / d);
if (t >= t_near && t <= t_far) {
p.v[0] = ray_dir->v[0] * t;
@ -300,11 +300,11 @@ int DRModelPick2D_finteray(br_model* model, br_material* material, br_vector3* r
s_beta = beta;
map.v[0] = V11MODEL(model)->groups[group].vertices[fp->vertices[1]].map.v[0] * s_alpha;
map.v[1] = V11MODEL(model)->groups[group].vertices[fp->vertices[1]].map.v[1] * s_alpha;
DRVector2AccumulateScale_finteray(
DRVector2AccumulateScale__finteray(
&map,
&V11MODEL(model)->groups[group].vertices[fp->vertices[2]].map,
s_beta);
DRVector2AccumulateScale_finteray(
DRVector2AccumulateScale__finteray(
&map,
&V11MODEL(model)->groups[group].vertices[fp->vertices[0]].map,
1.0 - (s_alpha + s_beta));
@ -340,7 +340,8 @@ int DRModelPick2D_finteray(br_model* model, br_material* material, br_vector3* r
}
// IDA: int __cdecl FindHighestPolyCallBack(br_model *pModel, br_material *pMaterial, br_vector3 *pRay_pos, br_vector3 *pRay_dir, br_scalar pT, int pF, int pE, int pV, br_vector3 *pPoint, br_vector2 *pMap, void *pArg)
int FindHighestPolyCallBack_finteray(br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT, int pF, int pE, int pV, br_vector3* pPoint, br_vector2* pMap, void* pArg) {
// Suffix added to avoid duplicate symbol
int FindHighestPolyCallBack__finteray(br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT, int pF, int pE, int pV, br_vector3* pPoint, br_vector2* pMap, void* pArg) {
LOG_TRACE("(%p, %p, %p, %p, %f, %d, %d, %d, %p, %p, %p)", pModel, pMaterial, pRay_pos, pRay_dir, pT, pF, pE, pV, pPoint, pMap, pArg);
if (pT < (double)gNearest_T) {
@ -353,12 +354,13 @@ int FindHighestPolyCallBack_finteray(br_model* pModel, br_material* pMaterial, b
}
// IDA: int __cdecl FindHighestCallBack(br_actor *pActor, br_model *pModel, br_material *pMaterial, br_vector3 *pRay_pos, br_vector3 *pRay_dir, br_scalar pT_near, br_scalar pT_far, void *pArg)
int FindHighestCallBack_finteray(br_actor* pActor, br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT_near, br_scalar pT_far, void* pArg) {
// Suffix added to avoid duplicate symbol
int FindHighestCallBack__finteray(br_actor* pActor, br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT_near, br_scalar pT_far, void* pArg) {
LOG_TRACE("(%p, %p, %p, %p, %p, %f, %f, %p)", pActor, pModel, pMaterial, pRay_pos, pRay_dir, pT_near, pT_far, pArg);
if (gProgram_state.current_car.current_car_actor < 0
|| gProgram_state.current_car.car_model_actors[gProgram_state.current_car.current_car_actor].actor != pActor) {
DRModelPick2D_finteray(pModel, pMaterial, pRay_pos, pRay_dir, pT_near, pT_far, FindHighestPolyCallBack_finteray, pArg);
DRModelPick2D__finteray(pModel, pMaterial, pRay_pos, pRay_dir, pT_near, pT_far, FindHighestPolyCallBack__finteray, pArg);
}
return 0;
}
@ -369,7 +371,7 @@ void FindFace(br_vector3* pPosition, br_vector3* pDir, br_vector3* nor, br_scala
LOG_TRACE("(%p, %p, %p, %p, %p)", pPosition, pDir, nor, t, material);
gNearest_T = 100.0;
DRSceneRayPick2D(gTrack_actor, pPosition, pDir, FindHighestCallBack_finteray);
DRSceneRayPick2D(gTrack_actor, pPosition, pDir, FindHighestCallBack__finteray);
*t = gNearest_T;
if (*t < 100.0) {
group = gNearest_face_group;
@ -518,7 +520,7 @@ void MultiRayCheckSingleFace(int pNum_rays, tFace_ref* pFace, br_vector3* ray_po
tv.v[1] = ray_pos[i].v[1] - pFace->v[0].v[1];
tv.v[2] = ray_pos[i].v[2] - pFace->v[0].v[2];
numerator = pFace->normal.v[2] * tv.v[2] + pFace->normal.v[1] * tv.v[1] + pFace->normal.v[0] * tv.v[0];
if (BadDiv_finteray(numerator, d)) {
if (BadDiv__finteray(numerator, d)) {
return;
}
if (d > 0.0) {
@ -716,13 +718,13 @@ int ActorBoxPick(tBounds* bnds, br_actor* ap, br_model* model, br_material* mate
new_bounds.radius = bnds->radius;
GetNewBoundingBox(&new_bounds.real_bounds, &new_bounds.original_bounds, new_bounds.mat);
if (ap->identifier[1] >= '0' && ap->identifier[1] <= '9') {
if (!BoundsOverlapTest_finteray(&new_bounds.real_bounds, &this_model->bounds)) {
if (!BoundsOverlapTest__finteray(&new_bounds.real_bounds, &this_model->bounds)) {
return max_face;
}
BrMatrix34LPInverse(&invmat, bnds->mat);
BrMatrix34Mul(&box_to_actor, &ap->t.t.mat, &invmat);
GetNewBoundingBox(&br_bnds, &ap->model->bounds, &box_to_actor);
if (!BoundsOverlapTest_finteray(&br_bnds, &bnds->original_bounds)) {
if (!BoundsOverlapTest__finteray(&br_bnds, &bnds->original_bounds)) {
return max_face;
}
if (PullActorFromWorld(ap)) {
@ -732,7 +734,7 @@ int ActorBoxPick(tBounds* bnds, br_actor* ap, br_model* model, br_material* mate
bnds = &new_bounds;
}
if (ap->type == BR_ACTOR_MODEL) {
if (BoundsOverlapTest_finteray(&bnds->real_bounds, &this_model->bounds)) {
if (BoundsOverlapTest__finteray(&bnds->real_bounds, &this_model->bounds)) {
n = ModelPickBox(ap, bnds, this_model, this_material, &face_list[i], max_face, pMat);
if (pMat && max_face != n) {
StopGroovidelic(ap);
@ -741,7 +743,7 @@ int ActorBoxPick(tBounds* bnds, br_actor* ap, br_model* model, br_material* mate
max_face = n;
}
} else if (ap->type >= 5u && ap->type <= 6u) {
test_children = BoundsOverlapTest_finteray(&bnds->real_bounds, (br_bounds*)ap->type_data);
test_children = BoundsOverlapTest__finteray(&bnds->real_bounds, (br_bounds*)ap->type_data);
}
if (test_children) {
for (a = ap->children; a; a = next_a) {
@ -990,7 +992,8 @@ void ClipToPlaneLE(br_vector3* p, int* nv, int i, br_scalar limit) {
}
// IDA: int __usercall BoundsOverlapTest@<EAX>(br_bounds *b1@<EAX>, br_bounds *b2@<EDX>)
int BoundsOverlapTest_finteray(br_bounds* b1, br_bounds* b2) {
// Suffix added to avoid duplicate symbol
int BoundsOverlapTest__finteray(br_bounds* b1, br_bounds* b2) {
LOG_TRACE("(%p, %p)", b1, b2);
return b1->min.v[0] <= b2->max.v[0]

View File

@ -4,23 +4,40 @@
#include "br_types.h"
#include "dr_types.h"
extern int gPling_materials;
extern br_material* gSub_material;
extern br_material* gReal_material;
extern int gNfaces;
extern br_matrix34 gPick_model_to_view__finteray; // suffix added to avoid duplicate symbol
extern int gTemp_group;
extern br_model* gNearest_model;
extern br_model* gSelected_model;
extern int gNearest_face_group;
extern int gNearest_face;
extern br_scalar gNearest_T;
extern tFace_ref* gPling_face;
int BadDiv_finteray(br_scalar a, br_scalar b);
// Suffix added to avoid duplicate symbol
int BadDiv__finteray(br_scalar a, br_scalar b);
void DRVector2AccumulateScale_finteray(br_vector2* a, br_vector2* b, br_scalar s);
// Suffix added to avoid duplicate symbol
void DRVector2AccumulateScale__finteray(br_vector2* a, br_vector2* b, br_scalar s);
int PickBoundsTestRay_finteray(br_bounds* b, br_vector3* rp, br_vector3* rd, br_scalar t_near, br_scalar t_far, br_scalar* new_t_near, br_scalar* new_t_far);
// Suffix added to avoid duplicate symbol
int PickBoundsTestRay__finteray(br_bounds* b, br_vector3* rp, br_vector3* rd, br_scalar t_near, br_scalar t_far, br_scalar* new_t_near, br_scalar* new_t_far);
int ActorRayPick2D(br_actor* ap, br_vector3* pPosition, br_vector3* pDir, br_model* model, br_material* material, dr_pick2d_cbfn* callback);
int DRSceneRayPick2D(br_actor* world, br_vector3* pPosition, br_vector3* pDir, dr_pick2d_cbfn* callback);
int DRModelPick2D_finteray(br_model* model, br_material* material, br_vector3* ray_pos, br_vector3* ray_dir, br_scalar t_near, br_scalar t_far, dr_modelpick2d_cbfn* callback, void* arg);
// Suffix added to avoid duplicate symbol
int DRModelPick2D__finteray(br_model* model, br_material* material, br_vector3* ray_pos, br_vector3* ray_dir, br_scalar t_near, br_scalar t_far, dr_modelpick2d_cbfn* callback, void* arg);
int FindHighestPolyCallBack_finteray(br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT, int pF, int pE, int pV, br_vector3* pPoint, br_vector2* pMap, void* pArg);
// Suffix added to avoid duplicate symbol
int FindHighestPolyCallBack__finteray(br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT, int pF, int pE, int pV, br_vector3* pPoint, br_vector2* pMap, void* pArg);
int FindHighestCallBack_finteray(br_actor* pActor, br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT_near, br_scalar pT_far, void* pArg);
// Suffix added to avoid duplicate symbol
int FindHighestCallBack__finteray(br_actor* pActor, br_model* pModel, br_material* pMaterial, br_vector3* pRay_pos, br_vector3* pRay_dir, br_scalar pT_near, br_scalar pT_far, void* pArg);
void FindFace(br_vector3* pPosition, br_vector3* pDir, br_vector3* nor, br_scalar* t, br_material** material);
@ -46,7 +63,8 @@ void ClipToPlaneGE(br_vector3* p, int* nv, int i, br_scalar limit);
void ClipToPlaneLE(br_vector3* p, int* nv, int i, br_scalar limit);
int BoundsOverlapTest_finteray(br_bounds* b1, br_bounds* b2);
// Suffix added to avoid duplicate symbol
int BoundsOverlapTest__finteray(br_bounds* b1, br_bounds* b2);
int BoundsTransformTest(br_bounds* b1, br_bounds* b2, br_matrix34* M);

View File

@ -13,34 +13,16 @@
#include <stdlib.h>
#include <unistd.h>
int gFlic_bunch8[16] = { 290, 291, 292, 293, 294, 295, 296, 297, 42, 43, 154, 301, 42, 43, 304, 305 };
int gFlic_bunch4[22] = {
80,
81,
82,
83,
84,
85,
42,
43,
88,
45,
110,
111,
42,
43,
45,
115,
116,
117,
118,
119,
120,
121
};
int gFlic_bunch2[8] = { 70, 71, 72, 73, 74, 56, 57, 59 };
int gPalette_allocate_count;
int gPalette_fuck_prevention;
int gDark_mode;
int gTransparency_on;
int gPanel_flic_disable;
int gPending_flic = -1;
int gPlay_from_disk;
int gTrans_enabled = 1;
br_pixelmap* gPanel_buffer[2];
tU32 gSound_time;
tFlic_spec gMain_flic_list[372] = {
{ "xxxxxxxx.FLI", 1, 0, 0, 0, 0, 25, NULL, 0u },
{ "DEMSTRT2.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u },
@ -383,70 +365,6 @@ 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 }
};
tU32 gPanel_flic_data_length[2];
tU32 gLast_panel_frame_time[2];
tU8* gPanel_flic_data[2];
int gPanel_flic_top[2];
tFlic_descriptor gPanel_flic[2];
br_pixelmap* gPanel_buffer[2];
int gPanel_flic_left[2];
int gFlic_bunch6[51] = {
190,
191,
192,
42,
43,
195,
200,
201,
210,
212,
213,
220,
221,
222,
220,
221,
225,
230,
231,
42,
43,
154,
45,
220,
221,
222,
220,
221,
225,
250,
251,
42,
43,
254,
255,
256,
154,
42,
43,
260,
220,
221,
222,
220,
221,
225,
280,
281,
42,
43,
284
};
int gFlic_bunch7[7] = { 130, 131, 132, 42, 43, 135, 45 };
int gFlic_bunch5[5] = { 100, 101, 42, 43, 45 };
int gFlic_bunch3[13] = { 40, 41, 42, 43, 44, 45, 50, 51, 73, 74, 56, 57, 59 };
int gFlic_bunch0[29] = {
10,
11,
@ -511,25 +429,88 @@ int gFlic_bunch1[31] = {
43,
154
};
tU32 gSound_time;
int gTrans_enabled = 1;
int gPanel_flic_disable;
int gDark_mode;
int gPending_pending_flic;
int gTransparency_on;
int gSound_ID;
int gPlay_from_disk = 0;
int gTranslation_count;
int gPending_flic = -1;
tDR_font* gTrans_fonts[15];
int gPalette_fuck_prevention;
tTranslation_record* gTranslations;
br_pixelmap* gPalette;
void* gPalette_pixels;
int gPalette_allocate_count;
tFlic_descriptor* gFirst_flic;
char gLast_flic_name[14];
int gFlic_bunch2[8] = { 70, 71, 72, 73, 74, 56, 57, 59 };
int gFlic_bunch3[13] = { 40, 41, 42, 43, 44, 45, 50, 51, 73, 74, 56, 57, 59 };
int gFlic_bunch4[22] = {
80,
81,
82,
83,
84,
85,
42,
43,
88,
45,
110,
111,
42,
43,
45,
115,
116,
117,
118,
119,
120,
121
};
int gFlic_bunch5[5] = { 100, 101, 42, 43, 45 };
int gFlic_bunch6[51] = {
190,
191,
192,
42,
43,
195,
200,
201,
210,
212,
213,
220,
221,
222,
220,
221,
225,
230,
231,
42,
43,
154,
45,
220,
221,
222,
220,
221,
225,
250,
251,
42,
43,
254,
255,
256,
154,
42,
43,
260,
220,
221,
222,
220,
221,
225,
280,
281,
42,
43,
284
};
int gFlic_bunch7[7] = { 130, 131, 132, 42, 43, 135, 45 };
int gFlic_bunch8[16] = { 290, 291, 292, 293, 294, 295, 296, 297, 42, 43, 154, 301, 42, 43, 304, 305 };
tFlic_bunch gFlic_bunch[9] = {
{ 29, gFlic_bunch0 },
{ 31, gFlic_bunch1 },
@ -541,6 +522,21 @@ tFlic_bunch gFlic_bunch[9] = {
{ 7, gFlic_bunch7 },
{ 16, gFlic_bunch8 }
};
char gLast_flic_name[14];
tU32 gPanel_flic_data_length[2];
tU32 gLast_panel_frame_time[2];
tU8* gPanel_flic_data[2];
int gPanel_flic_top[2];
tFlic_descriptor gPanel_flic[2];
int gPanel_flic_left[2];
int gPending_pending_flic = -1;
int gSound_ID;
int gTranslation_count;
tDR_font* gTrans_fonts[15];
tTranslation_record* gTranslations;
br_pixelmap* gPalette;
void* gPalette_pixels;
tFlic_descriptor* gFirst_flic;
// IDA: void __cdecl EnableTranslationText()
void EnableTranslationText() {

View File

@ -4,7 +4,42 @@
#include "br_types.h"
#include "dr_types.h"
extern int gPalette_allocate_count;
extern int gPalette_fuck_prevention;
extern int gDark_mode;
extern int gTransparency_on;
extern int gPanel_flic_disable;
extern int gPending_flic;
extern int gPlay_from_disk;
extern int gTrans_enabled;
extern br_pixelmap* gPanel_buffer[2];
extern tU32 gSound_time;
extern tFlic_spec gMain_flic_list[372];
extern int gFlic_bunch0[29];
extern int gFlic_bunch1[31];
extern int gFlic_bunch2[8];
extern int gFlic_bunch3[13];
extern int gFlic_bunch4[22];
extern int gFlic_bunch5[5];
extern int gFlic_bunch6[51];
extern int gFlic_bunch7[7];
extern int gFlic_bunch8[16];
extern tFlic_bunch gFlic_bunch[9];
extern char gLast_flic_name[14];
extern tU32 gPanel_flic_data_length[2];
extern tU32 gLast_panel_frame_time[2];
extern tU8* gPanel_flic_data[2];
extern int gPanel_flic_top[2];
extern tFlic_descriptor gPanel_flic[2];
extern int gPanel_flic_left[2];
extern int gPending_pending_flic;
extern int gSound_ID;
extern int gTranslation_count;
extern tDR_font* gTrans_fonts[15];
extern tTranslation_record* gTranslations;
extern br_pixelmap* gPalette;
extern void* gPalette_pixels;
extern tFlic_descriptor* gFirst_flic;
void EnableTranslationText();

View File

@ -1,19 +1,47 @@
#include "globvars.h"
#include <stdlib.h>
int gTyping;
int gArrow_mode;
int gInfo_on;
int gHost_abandon_game;
int gRecover_car;
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;
int gAction_replay_mode;
int gDefault_engine_noise_index;
int gAusterity_mode;
int gSausage_override;
int gAustere_override;
int gSound_override;
int gKey_map_index;
int gInterface_within_race_mode;
int gCut_scene_override;
int gGame_to_load = -1;
int gCD_is_in_drive;
br_pixelmap* gRearview_screen;
br_scalar gCut_delay_1;
br_scalar gCut_delay_2;
br_scalar gCut_delay_3;
br_scalar gCut_delay_4;
br_scalar gYon_multiplier;
tSave_game* gPre_race_saved_game;
FILE* gDiagnostic_file;
br_vector3 gDisabled_vector;
tU32 gI_am_cheating;
char gNet_player_name[32];
br_matrix34 gRearview_camera_to_world;
tSpecial_volume gDefault_default_water_spec_vol;
br_matrix34 gCamera_to_world;
tRace_list_spec gRace_list[100];
tPath_name gApplication_path;
tU32 gI_am_cheating;
float gPinball_factor;
float gOpponent_speed_factor;
float gCar_crush_min_fold;
float gNet_recovery_cost[7];
float gCar_crush_softness;
br_vector3 gDisabled_vector;
br_vector3* gOur_pos;
float gCar_crush_max_fold;
tBrender_storage gNet_cars_storage_space;
@ -37,15 +65,12 @@ tOpponent* gOpponents;
tU32 gLast_credit_tick;
tBrender_storage gTheir_cars_storage_space;
br_font* gHeadup_font;
tSave_game* gPre_race_saved_game;
tU32 gRace_finished;
FILE* gDiagnostic_file;
tU32 gFrame_start_time;
tProgram_state gProgram_state;
tU32 gCredit_period_single[3];
tU32 gRace_start;
tBrender_storage gTrack_storage_space;
br_scalar gYon_multiplier;
tU32 gFrame_period;
tU32 gCredit_period;
tU32 gCredit_period_network[7];
@ -54,17 +79,12 @@ tU32 gFox_start_time;
br_font* gBig_font;
tBrender_storage gPedestrians_storage_space;
tRace_info gCurrent_race;
br_scalar gCut_delay_4;
br_actor* gSelf;
br_scalar gCut_delay_1;
br_scalar gCut_delay_2;
br_actor* gDont_render_actor;
br_scalar gCut_delay_3;
br_pixelmap* gScreen;
br_pixelmap* gRender_screen;
br_actor* gRearview_camera;
br_scalar gCamera_hither;
br_pixelmap* gRearview_screen;
br_pixelmap* gBack_screen;
br_scalar gCamera_angle;
br_pixelmap* gDigits_pix;
@ -77,26 +97,16 @@ br_actor* gCamera;
br_actor* gArrow_actor;
br_pixelmap* gIcons_pix_low_res;
br_pixelmap* gDepth_buffer;
int gSound_override;
int gAustere_override;
int gInitial_net_credits[5];
float gCar_cred_value[3];
int gNo_races_yet;
int gDefault_engine_noise_index;
int gGame_to_load = -1;
int gJump_start_fine[3];
int gSausage_override;
int gAusterity_mode;
int gReal_graf_data_index;
float gCar_time_value[3];
int gTyping_slot;
int gCunning_stunt_bonus[3];
int gKnobbled_frame_period;
int gCD_is_in_drive;
int gInterface_within_race_mode;
br_actor* gNon_track_actor;
int gCut_scene_override;
int gKey_map_index;
int gWait_for_it;
int gCheck_point_cash[3];
int gPoints_per_second[3];
@ -104,25 +114,18 @@ br_actor* gUniverse_actor;
br_actor* gTrack_actor;
int gMap_mode;
int gPed_time_value[3];
int gHost_abandon_game;
int gAbandon_game;
int gLap;
int gShow_opponents;
int gPipe_reg_snap_before_new_game;
int gTotal_laps;
int gDisallow_abandon_race;
int gFree_repairs;
int gFreeze_timer;
int gRoll_over_creds[3];
int gShow_peds_on_map;
int gOn_drugs;
int gWasted_time[3];
int gAction_replay_mode;
int gPipe_reg_snap_after_our_car;
int gRecover_car;
int gCheckpoint;
int gRoll_over_time[3];
int gPipe_reg_snap_before_our_car;
int gWasted_creds[3];
int gTimer;
int gCheckpoint_count;
@ -130,10 +133,7 @@ int gCountdown;
int gFrame_rate;
int gNumber_of_racers;
int gSound_enabled;
int gInfo_on;
int gGraf_spec_index = 0;
int gTyping;
int gGraf_spec_index;
int gSound_available;
int gNumber_of_races;
int gArrow_mode;
char gDir_separator[3] = "";

View File

@ -4,19 +4,47 @@
#include "br_types.h"
#include "dr_types.h"
extern int gTyping;
extern int gArrow_mode;
extern int gInfo_on;
extern int gHost_abandon_game;
extern int gRecover_car;
extern int gDisallow_abandon_race;
extern int gPipe_reg_snap_before_new_game;
extern int gPipe_reg_snap_before_our_car;
extern int gPipe_reg_snap_after_our_car;
extern int gAction_replay_mode;
extern int gDefault_engine_noise_index;
extern int gAusterity_mode;
extern int gSausage_override;
extern int gAustere_override;
extern int gSound_override;
extern int gKey_map_index;
extern int gInterface_within_race_mode;
extern int gCut_scene_override;
extern int gGame_to_load;
extern int gCD_is_in_drive;
extern br_pixelmap* gRearview_screen;
extern br_scalar gCut_delay_1;
extern br_scalar gCut_delay_2;
extern br_scalar gCut_delay_3;
extern br_scalar gCut_delay_4;
extern br_scalar gYon_multiplier;
extern tSave_game* gPre_race_saved_game;
extern FILE* gDiagnostic_file;
extern br_vector3 gDisabled_vector;
extern tU32 gI_am_cheating;
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;
@ -40,15 +68,12 @@ 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];
@ -57,17 +82,12 @@ 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;
@ -80,26 +100,16 @@ 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];
@ -107,25 +117,18 @@ 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;
@ -133,12 +136,9 @@ 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

View File

@ -1,6 +1,7 @@
#include "globvrbm.h"
#include <stdlib.h>
br_scalar gYon_factor;
br_material* gMaterial[2];
int g16bit_palette_valid;
tException_list gExceptions;
@ -29,7 +30,6 @@ int gPerspective_is_fast;
int gUse_mip_maps;
int gBlitting_is_slow;
int gTextures_need_powers_of_2;
br_scalar gYon_factor;
int gMax_texture_side;
int gDevious_2d;
int gMax_texture_aspect_ratio;

View File

@ -4,6 +4,7 @@
#include "br_types.h"
#include "dr_types.h"
extern br_scalar gYon_factor;
extern br_material* gMaterial[2];
extern int g16bit_palette_valid;
extern tException_list gExceptions;
@ -32,7 +33,6 @@ extern int gPerspective_is_fast;
extern int gUse_mip_maps;
extern int gBlitting_is_slow;
extern int gTextures_need_powers_of_2;
extern br_scalar gYon_factor;
extern int gMax_texture_side;
extern int gDevious_2d;
extern int gMax_texture_aspect_ratio;

View File

@ -1,16 +1,16 @@
#include "globvrkm.h"
#include <stdlib.h>
br_scalar gCamera_zoom = 0.2f;
br_angle gCamera_yaw;
br_vector3 gView_direction = { { 0.0, 0.0, -1.0 } };
int gCamera_sign;
int gCar_flying;
int gCamera_reset;
tCar_spec* gCar_to_view;
br_actor* gCamera_list[2];
tCar_spec* gActive_car_list[25];
int gNum_active_cars;
tCar_spec* gCar_to_view;
float gRecovery_cost[3];
br_scalar gCamera_zoom = 0.2f;
br_scalar gCamera_height;
br_vector3 gView_direction = { { 0.0, 0.0, -1.0 } };
br_scalar gMin_camera_car_distance;
int gCar_flying;
int gCamera_sign;
int gCamera_reset;
br_angle gCamera_yaw;

View File

@ -4,18 +4,18 @@
#include "br_types.h"
#include "dr_types.h"
extern br_scalar gCamera_zoom;
extern br_angle gCamera_yaw;
extern br_vector3 gView_direction;
extern int gCamera_sign;
extern int gCar_flying;
extern int gCamera_reset;
extern tCar_spec* gCar_to_view;
extern br_actor* gCamera_list[2];
extern tCar_spec* gActive_car_list[25];
extern int gNum_active_cars;
extern tCar_spec* gCar_to_view;
extern float gRecovery_cost[3];
extern br_scalar gCamera_zoom;
extern br_scalar gCamera_height;
extern br_vector3 gView_direction;
extern br_scalar gMin_camera_car_distance;
extern int gCar_flying;
extern int gCamera_sign;
extern int gCamera_reset;
extern br_angle gCamera_yaw;
#endif

View File

@ -4,4 +4,7 @@
#include "br_types.h"
#include "dr_types.h"
extern tCar_spec* gViewable_car_list[50];
extern int gNum_viewable_cars;
#endif

View File

@ -1,6 +1,7 @@
#include "globvrpb.h"
#include <stdlib.h>
tNet_mode gNet_mode;
tNet_game_player_info gNet_players[6];
br_matrix34 gRoot_to_camera;
tCar_detail_info gCar_details[60];
@ -8,7 +9,6 @@ int gThis_net_player_index;
br_scalar gPedestrian_distance_squared;
int gPending_race;
tPlayer_ID gLocal_net_ID;
tNet_mode gNet_mode = 0;
int gNumber_of_net_players;
int gStart_race_sent;
int gSynch_race_start;
@ -21,6 +21,4 @@ int gNetwork_available;
int gPedestrian_image;
int gHighest_pedestrian_value;
int gNeed_to_send_start_race;
int gRendering_mirror;
int dword_551424;
int gRendering_mirror;

View File

@ -4,6 +4,7 @@
#include "br_types.h"
#include "dr_types.h"
extern tNet_mode gNet_mode;
extern tNet_game_player_info gNet_players[6];
extern br_matrix34 gRoot_to_camera;
extern tCar_detail_info gCar_details[60];
@ -11,7 +12,6 @@ extern int gThis_net_player_index;
extern br_scalar gPedestrian_distance_squared;
extern int gPending_race;
extern tPlayer_ID gLocal_net_ID;
extern tNet_mode gNet_mode;
extern int gNumber_of_net_players;
extern int gStart_race_sent;
extern int gSynch_race_start;
@ -26,6 +26,4 @@ extern int gHighest_pedestrian_value;
extern int gNeed_to_send_start_race;
extern int gRendering_mirror;
extern int dword_551424;
#endif

Some files were not shown because too many files have changed in this diff Show More