From 25eeef2010249c87074144e27f5544950cf40f50 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Tue, 17 Dec 2019 23:04:46 -0800 Subject: [PATCH 1/5] wip --- .clang-format | 4 +- src/BRSRC13/CORE/FW/brbegin.c | 15 +- src/BRSRC13/CORE/FW/brlists.c | 43 +- src/BRSRC13/CORE/FW/brlists.h | 24 +- src/BRSRC13/CORE/FW/diag.c | 35 +- src/BRSRC13/CORE/FW/fwsetup.c | 94 +++- src/BRSRC13/CORE/FW/mem.c | 23 +- src/BRSRC13/CORE/FW/register.c | 55 ++- src/BRSRC13/CORE/FW/resource.c | 125 ++++-- src/BRSRC13/CORE/FW/resreg.c | 40 +- src/BRSRC13/CORE/STD/brstddiag.h | 7 +- src/BRSRC13/CORE/STD/brstdfile.h | 24 +- src/BRSRC13/CORE/STD/brstdlib.c | 42 +- src/BRSRC13/CORE/STD/brstdmem.h | 5 +- src/BRSRC13/CORE/V1DB/dbsetup.c | 88 +++- src/BRSRC13/CORE/V1DB/def_mdl.h | 2 + src/BRSRC13/Makefile | 2 +- src/BRSRC13/br_types.h | 742 +++++++++++++++++-------------- src/DETHRACE/dr_types.h | 592 ++++++++++++------------ test/BRSRC13/test_brlists.c | 42 ++ test/BRSRC13/test_fwsetup.c | 12 + test/BRSRC13/test_resource.c | 29 ++ test/BRSRC13/test_resreg.c | 4 + test/main.c | 24 +- tools/watcom-codegen/codegen.py | 53 ++- 25 files changed, 1256 insertions(+), 870 deletions(-) create mode 100644 test/BRSRC13/test_brlists.c create mode 100644 test/BRSRC13/test_fwsetup.c create mode 100644 test/BRSRC13/test_resource.c create mode 100644 test/BRSRC13/test_resreg.c diff --git a/.clang-format b/.clang-format index 95f7eb56..03f98ce7 100644 --- a/.clang-format +++ b/.clang-format @@ -24,7 +24,7 @@ BraceWrapping: AfterClass: false AfterControlStatement: false AfterEnum: false - AfterFunction: true + AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false @@ -33,7 +33,7 @@ BraceWrapping: BeforeElse: false IndentBraces: false BreakBeforeBinaryOperators: All -BreakBeforeBraces: WebKit +BreakBeforeBraces: Custom BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: true BreakAfterJavaFieldAnnotations: false diff --git a/src/BRSRC13/CORE/FW/brbegin.c b/src/BRSRC13/CORE/FW/brbegin.c index 9e3b763e..ec477108 100644 --- a/src/BRSRC13/CORE/FW/brbegin.c +++ b/src/BRSRC13/CORE/FW/brbegin.c @@ -1,15 +1,28 @@ #include "brbegin.h" +#include "CORE/HOST/himage.h" +#include "CORE/PIXELMAP/pmsetup.h" +#include "fwsetup.h" + br_boolean active; char rscid[54]; // Offset: 8 // Size: 88 br_error BrBegin() { + if (active) { + return 4103; + } else { + BrFwBegin(); + HostImageLoad("unk?"); + BrPixelmapBegin(); + active = 1; + //nullsub_28(); + return 0; + } } // Offset: 102 // Size: 126 br_error BrEnd() { } - diff --git a/src/BRSRC13/CORE/FW/brlists.c b/src/BRSRC13/CORE/FW/brlists.c index 303ee362..d2f4ae5a 100644 --- a/src/BRSRC13/CORE/FW/brlists.c +++ b/src/BRSRC13/CORE/FW/brlists.c @@ -1,67 +1,78 @@ #include "brlists.h" +#include + char rscid[49]; // Offset: 10 // Size: 60 -void BrNewList(br_list *list) { +void BrNewList(br_list* list) { + list->_null = NULL; + list->tail = (br_node*)list; + list->head = list->_null; } // Offset: 80 // Size: 68 -void BrAddHead(br_list *list, br_node *node) { +void BrAddHead(br_list* list, br_node* node) { } // Offset: 158 // Size: 73 -void BrAddTail(br_list *list, br_node *node) { +void BrAddTail(br_list* list, br_node* node) { } // Offset: 241 // Size: 77 -br_node* BrRemHead(br_list *list) { - br_node *n; +br_node* BrRemHead(br_list* list) { + br_node* n; } // Offset: 328 // Size: 77 -br_node* BrRemTail(br_list *list) { - br_node *n; +br_node* BrRemTail(br_list* list) { + br_node* n; } // Offset: 414 // Size: 68 -void BrInsert(br_list *list, br_node *here, br_node *node) { +void BrInsert(br_list* list, br_node* here, br_node* node) { } // Offset: 491 // Size: 66 -br_node* BrRemove(br_node *node) { +br_node* BrRemove(br_node* node) { } // Offset: 573 // Size: 39 -void BrSimpleNewList(br_simple_list *list) { +void BrSimpleNewList(br_simple_list* list) { + list->head = NULL; } // Offset: 628 // Size: 76 -void BrSimpleAddHead(br_simple_list *list, br_simple_node *node) { +void BrSimpleAddHead(br_simple_list* list, br_simple_node* node) { + node->next = list->head; + node->prev = &list->head; + if (node->next) { + node->next->prev = &node; + } + list->head = node; } // Offset: 720 // Size: 65 -br_simple_node* BrSimpleRemHead(br_simple_list *list) { - br_simple_node *node; +br_simple_node* BrSimpleRemHead(br_simple_list* list) { + br_simple_node* node; } // Offset: 800 // Size: 76 -void BrSimpleInsert(br_simple_list *list, br_simple_node *here, br_simple_node *node) { +void BrSimpleInsert(br_simple_list* list, br_simple_node* here, br_simple_node* node) { } // Offset: 891 // Size: 93 -br_simple_node* BrSimpleRemove(br_simple_node *node) { +br_simple_node* BrSimpleRemove(br_simple_node* node) { } - diff --git a/src/BRSRC13/CORE/FW/brlists.h b/src/BRSRC13/CORE/FW/brlists.h index b189c88f..ec6363a8 100644 --- a/src/BRSRC13/CORE/FW/brlists.h +++ b/src/BRSRC13/CORE/FW/brlists.h @@ -5,50 +5,50 @@ // Offset: 10 // Size: 60 -void BrNewList(br_list *list); +void BrNewList(br_list* list); // Offset: 80 // Size: 68 -void BrAddHead(br_list *list, br_node *node); +void BrAddHead(br_list* list, br_node* node); // Offset: 158 // Size: 73 -void BrAddTail(br_list *list, br_node *node); +void BrAddTail(br_list* list, br_node* node); // Offset: 241 // Size: 77 -br_node* BrRemHead(br_list *list); +br_node* BrRemHead(br_list* list); // Offset: 328 // Size: 77 -br_node* BrRemTail(br_list *list); +br_node* BrRemTail(br_list* list); // Offset: 414 // Size: 68 -void BrInsert(br_list *list, br_node *here, br_node *node); +void BrInsert(br_list* list, br_node* here, br_node* node); // Offset: 491 // Size: 66 -br_node* BrRemove(br_node *node); +br_node* BrRemove(br_node* node); // Offset: 573 // Size: 39 -void BrSimpleNewList(br_simple_list *list); +void BrSimpleNewList(br_simple_list* list); // Offset: 628 // Size: 76 -void BrSimpleAddHead(br_simple_list *list, br_simple_node *node); +void BrSimpleAddHead(br_simple_list* list, br_simple_node* node); // Offset: 720 // Size: 65 -br_simple_node* BrSimpleRemHead(br_simple_list *list); +br_simple_node* BrSimpleRemHead(br_simple_list* list); // Offset: 800 // Size: 76 -void BrSimpleInsert(br_simple_list *list, br_simple_node *here, br_simple_node *node); +void BrSimpleInsert(br_simple_list* list, br_simple_node* here, br_simple_node* node); // Offset: 891 // Size: 93 -br_simple_node* BrSimpleRemove(br_simple_node *node); +br_simple_node* BrSimpleRemove(br_simple_node* node); #endif diff --git a/src/BRSRC13/CORE/FW/diag.c b/src/BRSRC13/CORE/FW/diag.c index 35e8a683..1b875532 100644 --- a/src/BRSRC13/CORE/FW/diag.c +++ b/src/BRSRC13/CORE/FW/diag.c @@ -1,7 +1,7 @@ #include "diag.h" -#include "fwsetup.h" -#include "brprintf.h" #include "CORE/STD/brstdlib.h" +#include "brprintf.h" +#include "fwsetup.h" #include // Global variables @@ -10,7 +10,7 @@ char rscid[49]; // Offset: 10 // Size: 118 -void BrFailure(const char *s, ...) { +void BrFailure(const char* s, ...) { va_list args; const char failure_header[10] = "Failure: "; @@ -18,17 +18,17 @@ void BrFailure(const char *s, ...) { BrStrCpy(_diag_scratch, failure_header); BrVSprintf(&_diag_scratch[sizeof(failure_header) - 1], s, args); - if (fw.err->error == NULL) { + if (fw.diag->failure == NULL) { BrAbort(); } - fw.err->error(_diag_scratch); + fw.diag->failure(_diag_scratch); va_end(args); } // Offset: 138 // Size: 118 -void BrWarning(const char *s, ...) { +void BrWarning(const char* s, ...) { va_list args; const char warning_header[10] = "Warning: "; @@ -36,50 +36,49 @@ void BrWarning(const char *s, ...) { BrStrCpy(_diag_scratch, warning_header); BrVSprintf(&_diag_scratch[sizeof(warning_header) - 1], s, args); - if (fw.err->message == NULL) { + if (fw.diag->warning == NULL) { BrAbort(); } - fw.err->message(_diag_scratch); + fw.diag->warning(_diag_scratch); va_end(args); } // Offset: 264 // Size: 132 -void BrFatal(const char *name, int line, const char *s, ...) { +void BrFatal(const char* name, int line, const char* s, ...) { va_list args; int n; va_start(args, s); n = BrSprintf(_diag_scratch, "FATAL %s:%d\n", name, line); BrVSprintf(&_diag_scratch[n], s, args); - if (fw.err->error == NULL) { + if (fw.diag->failure == NULL) { BrAbort(); } - fw.err->error(_diag_scratch); + fw.diag->failure(_diag_scratch); va_end(args); } // Offset: 406 // Size: 95 -void _BrAssert(const char *condition, const char *file, unsigned int line) { - if (fw.err->error == NULL) { +void _BrAssert(const char* condition, const char* file, unsigned int line) { + if (fw.diag->failure == NULL) { BrAbort(); } BrSprintf(_diag_scratch, "ASSERTION FAILED %s:%d: \"%s\"\n", file, line, condition); - fw.err->error(_diag_scratch); + fw.diag->failure(_diag_scratch); } // Offset: 512 // Size: 95 -void _BrUAssert(const char *condition, const char *file, unsigned int line) { - if (fw.err->error == NULL) { +void _BrUAssert(const char* condition, const char* file, unsigned int line) { + if (fw.diag->failure == NULL) { BrAbort(); } BrSprintf(_diag_scratch, "ASSERTION FAILED %s:%d: \"%s\"\n", file, line, condition); - fw.err->error(_diag_scratch); + fw.diag->failure(_diag_scratch); } - diff --git a/src/BRSRC13/CORE/FW/fwsetup.c b/src/BRSRC13/CORE/FW/fwsetup.c index 4bc7e88d..819d60ed 100644 --- a/src/BRSRC13/CORE/FW/fwsetup.c +++ b/src/BRSRC13/CORE/FW/fwsetup.c @@ -1,16 +1,91 @@ #include "fwsetup.h" +#include "CORE/FW/brlists.h" +#include "CORE/FW/file.h" +#include "CORE/FW/image.h" +#include "CORE/FW/object.h" +#include "CORE/FW/register.h" +#include "CORE/FW/resource.h" +#include "CORE/FW/resreg.h" +#include "CORE/FW/sys_conf.h" +#include "CORE/FW/token.h" +#include "CORE/STD/brstddiag.h" +#include "CORE/STD/brstdfile.h" +#include "CORE/STD/brstdmem.h" +#include +#include + br_image Image_BRCORE1; br_framework_state fw; -void *functionPointers_BRCORE1[185]; -char *namePointers_BRCORE1[185]; -br_resource_class resourceClasses[25]; +void* functionPointers_BRCORE1[185]; +char* namePointers_BRCORE1[185]; +br_resource_class fw_resourceClasses[25] = { + { 0u, "REGISTRY", BR_MEMORY_REGISTRY, NULL, 0u }, + { 0u, "ANCHOR", BR_MEMORY_ANCHOR, NULL, 0u }, + { 0u, "RESOURCE_CLASS", BR_MEMORY_RESOURCE_CLASS, NULL, 0u }, + { 0u, "SCRATCH,", BR_MEMORY_SCRATCH, NULL, 16u }, + { 0u, "STRING", BR_MEMORY_STRING, NULL, 1u }, + { 0u, "FILE", BR_MEMORY_FILE, &_BrFileFree, 0u }, + { 0u, "POOL", BR_MEMORY_POOL, NULL, 16u }, + { 0u, "EXCEPTION_HANDLER", BR_MEMORY_EXCEPTION_HANDLER, NULL, 0u }, + { 0u, "TOKEN", BR_MEMORY_TOKEN, NULL, 0u }, + { 0u, "TOKEN_MAP", BR_MEMORY_TOKEN_MAP, NULL, 8u }, + { 0u, "DATAFILE", BR_MEMORY_DATAFILE, NULL, 0u }, + { 0u, "LEXER", BR_MEMORY_LEXER, NULL, 0u }, + { 0u, "OBJECT_LIST", BR_MEMORY_OBJECT_LIST, NULL, 0u }, + { 0u, "OBJECT_LIST_ENTRY", BR_MEMORY_OBJECT_LIST_ENTRY, NULL, 0u }, + { 0u, "APPLICATION", BR_MEMORY_APPLICATION, NULL, 0u }, + { 0u, "IMAGE", BR_MEMORY_IMAGE, &_BrImageFree, 0u }, + { 0u, "IMAGE_ARENA", BR_MEMORY_IMAGE_ARENA, NULL, 0u }, + { 0u, "IMAGE_SECTIONS", BR_MEMORY_IMAGE_SECTIONS, NULL, 0u }, + { 0u, "IMAGE_NAMES", BR_MEMORY_IMAGE_NAMES, NULL, 0u }, + { 0u, "OBJECT", BR_MEMORY_OBJECT, &_BrObjectFree, 16u }, + { 0u, "OBJECT_DATA", BR_MEMORY_OBJECT_DATA, NULL, 16u }, + { 0u, "DRIVER", BR_MEMORY_DRIVER, NULL, 0u }, + { 0u, "FMT_RESULTS", BR_MEMORY_FMT_RESULTS, NULL, 0u }, + { 0u, "TOKEN_VALUE", BR_MEMORY_TOKEN_VALUE, NULL, 0u }, + { 0u, "TOKEN_TEMPLATE", BR_MEMORY_TOKEN_TEMPLATE, NULL, 0u } +}; + br_uint_16 nameOrdinals_BRCORE1[185]; char rscid[53]; +#define NBR_DEV_SLOTS 16 + // Offset: 10 // Size: 324 br_error BrFwBegin() { + int i; + + if (fw.active) { + return 4103; + } + + if (!fw.diag) + fw.diag = _BrDefaultDiagHandler; + if (!fw.fsys) + fw.fsys = _BrDefaultFilesystem; + if (!fw.mem) + fw.mem = _BrDefaultAllocator; + fw.open_mode = 0; + BrRegistryNew(&fw.reg_resource_classes); + + printf("here21\n"); + fw.resource_class_index[BR_MEMORY_REGISTRY] = &fw_resourceClasses[0]; + fw.resource_class_index[BR_MEMORY_ANCHOR] = &fw_resourceClasses[1]; + fw.res = BrResAllocate(0, 0, BR_MEMORY_ANCHOR); + for (i = 0; i < 25; i++) { + BrResClassAdd(&fw_resourceClasses[i]); + } + BrNewList(&fw.images); + fw.dev_slots = (br_open_device*)BrResAllocate(fw.res, sizeof(br_open_device) * NBR_DEV_SLOTS, BR_MEMORY_OBJECT_DATA); + fw.ndev_slots = NBR_DEV_SLOTS; + fw.active = 1; + BrTokenBegin(); + BrSystemConfigBegin(); + fw.bAlreadyLoadedDrivers = 0; + BrImageAdd(&Image_BRCORE1); + return 0; } // Offset: 342 @@ -20,19 +95,18 @@ br_error BrFwEnd() { // Offset: 466 // Size: 73 -br_diaghandler* BrDiagHandlerSet(br_diaghandler *newdh) { - br_diaghandler *old; +br_diaghandler* BrDiagHandlerSet(br_diaghandler* newdh) { + br_diaghandler* old; } // Offset: 555 // Size: 73 -br_filesystem* BrFilesystemSet(br_filesystem *newfs) { - br_filesystem *old; +br_filesystem* BrFilesystemSet(br_filesystem* newfs) { + br_filesystem* old; } // Offset: 643 // Size: 73 -br_allocator* BrAllocatorSet(br_allocator *newal) { - br_allocator *old; +br_allocator* BrAllocatorSet(br_allocator* newal) { + br_allocator* old; } - diff --git a/src/BRSRC13/CORE/FW/mem.c b/src/BRSRC13/CORE/FW/mem.c index 8d5bc3a9..4a3bb3d0 100644 --- a/src/BRSRC13/CORE/FW/mem.c +++ b/src/BRSRC13/CORE/FW/mem.c @@ -1,16 +1,22 @@ #include "mem.h" +#include "CORE/FW/fwsetup.h" +#include "CORE/STD/brstdlib.h" + char rscid[45]; // Offset: 14 // Size: 153 void* BrMemAllocate(br_size_t size, br_uint_8 type) { - void *b; + void* b; + b = fw.mem->allocate(size, type); + BrMemSet(b, 0, size); + return b; } // Offset: 177 // Size: 106 -void BrMemFree(void *block) { +void BrMemFree(void* block) { } // Offset: 296 @@ -22,19 +28,22 @@ br_size_t BrMemInquire(br_uint_8 type) { // Offset: 438 // Size: 116 br_int_32 BrMemAlign(br_uint_8 type) { - br_int_32 i; + br_int_32 i = 0; + if (fw.mem->align) { + i = fw.mem->align(type); + } + return i; } // Offset: 566 // Size: 161 void* BrMemCalloc(int nelems, br_size_t size, br_uint_8 type) { - void *b; + void* b; } // Offset: 739 // Size: 120 -char* BrMemStrDup(char *str) { +char* BrMemStrDup(char* str) { int l; - char *nstr; + char* nstr; } - diff --git a/src/BRSRC13/CORE/FW/register.c b/src/BRSRC13/CORE/FW/register.c index 265a0343..66a176c0 100644 --- a/src/BRSRC13/CORE/FW/register.c +++ b/src/BRSRC13/CORE/FW/register.c @@ -1,26 +1,38 @@ #include "register.h" +#include "brlists.h" +#include "fwsetup.h" +#include "resource.h" + char rscid[50]; // Offset: 14 // Size: 96 // EAX: reg -void* BrRegistryNew(br_registry *reg) { +void* BrRegistryNew(br_registry* reg) { + BrNewList((br_list*)reg); + reg->count = 0; } // Offset: 126 // Size: 126 // EAX: reg -void* BrRegistryClear(br_registry *reg) { - br_registry_entry *e; +void* BrRegistryClear(br_registry* reg) { + br_registry_entry* e; } // Offset: 266 // Size: 159 // EAX: reg // EDX: item -void* BrRegistryAdd(br_registry *reg, void *item) { - br_registry_entry *e; +void* BrRegistryAdd(br_registry* reg, void* item) { + br_registry_entry* e; + + e = (br_registry_entry*)BrResAllocate(fw.res, sizeof(br_registry_entry), BR_MEMORY_REGISTRY); + e->item = (void**)&item; + BrAddHead(®->list, &e->node); + reg->count++; + return item; } // Offset: 443 @@ -28,7 +40,7 @@ void* BrRegistryAdd(br_registry *reg, void *item) { // EAX: reg // EDX: items // EBX: n -int BrRegistryAddMany(br_registry *reg, void **items, int n) { +int BrRegistryAddMany(br_registry* reg, void** items, int n) { int i; } @@ -36,9 +48,9 @@ int BrRegistryAddMany(br_registry *reg, void **items, int n) { // Size: 198 // EAX: reg // EDX: item -void* BrRegistryRemove(br_registry *reg, void *item) { - br_registry_entry *e; - void *r; +void* BrRegistryRemove(br_registry* reg, void* item) { + br_registry_entry* e; + void* r; } // Offset: 827 @@ -46,7 +58,7 @@ void* BrRegistryRemove(br_registry *reg, void *item) { // EAX: reg // EDX: items // EBX: n -int BrRegistryRemoveMany(br_registry *reg, void **items, int n) { +int BrRegistryRemoveMany(br_registry* reg, void** items, int n) { int i; int r; } @@ -55,8 +67,8 @@ int BrRegistryRemoveMany(br_registry *reg, void **items, int n) { // Size: 172 // EAX: reg // EDX: pattern -void* BrRegistryFind(br_registry *reg, char *pattern) { - br_registry_entry *e; +void* BrRegistryFind(br_registry* reg, char* pattern) { + br_registry_entry* e; } // Offset: 1204 @@ -65,8 +77,8 @@ void* BrRegistryFind(br_registry *reg, char *pattern) { // EDX: pattern // EBX: items // ECX: max -int BrRegistryFindMany(br_registry *reg, char *pattern, void **items, int max) { - br_registry_entry *e; +int BrRegistryFindMany(br_registry* reg, char* pattern, void** items, int max) { + br_registry_entry* e; int n; } @@ -74,8 +86,8 @@ int BrRegistryFindMany(br_registry *reg, char *pattern, void **items, int max) { // Size: 163 // EAX: reg // EDX: pattern -int BrRegistryCount(br_registry *reg, char *pattern) { - br_registry_entry *e; +int BrRegistryCount(br_registry* reg, char* pattern) { + br_registry_entry* e; int n; } @@ -85,8 +97,8 @@ int BrRegistryCount(br_registry *reg, char *pattern) { // EDX: pattern // EBX: callback // ECX: arg -int BrRegistryEnum(br_registry *reg, char *pattern, br_enum_cbfn *callback, void *arg) { - br_registry_entry *e; +int BrRegistryEnum(br_registry* reg, char* pattern, br_enum_cbfn* callback, void* arg) { + br_registry_entry* e; int r; } @@ -95,7 +107,7 @@ int BrRegistryEnum(br_registry *reg, char *pattern, br_enum_cbfn *callback, void // EAX: reg // EDX: base // EBX: limit -void* BrRegistryNewStatic(br_registry *reg, br_registry_entry *base, int limit) { +void* BrRegistryNewStatic(br_registry* reg, br_registry_entry* base, int limit) { } // Offset: 1907 @@ -103,13 +115,12 @@ void* BrRegistryNewStatic(br_registry *reg, br_registry_entry *base, int limit) // EAX: reg // EDX: base // EBX: item -void* BrRegistryAddStatic(br_registry *reg, br_registry_entry *base, void *item) { +void* BrRegistryAddStatic(br_registry* reg, br_registry_entry* base, void* item) { } // Offset: 1979 // Size: 48 // EAX: reg // EDX: item -void* BrRegistryRemoveStatic(br_registry *reg, void *item) { +void* BrRegistryRemoveStatic(br_registry* reg, void* item) { } - diff --git a/src/BRSRC13/CORE/FW/resource.c b/src/BRSRC13/CORE/FW/resource.c index adfa7934..e0255e9c 100644 --- a/src/BRSRC13/CORE/FW/resource.c +++ b/src/BRSRC13/CORE/FW/resource.c @@ -1,114 +1,160 @@ #include "resource.h" +#include "brlists.h" +#include "fwsetup.h" +#include "mem.h" +#include +#include + char rscid[51]; // Offset: 10 // Size: 188 // EAX: r -void* ResToUser(resource_header *r) { +void* ResToUser(resource_header* r) { br_int_32 align; } // Offset: 208 // Size: 72 // EAX: r -resource_header* UserToRes(void *r) { - br_uint_8 *p; +resource_header* UserToRes(void* r) { + br_uint_8* p; } // Offset: 294 // Size: 459 -void* BrResAllocate(void *vparent, br_size_t size, br_uint_8 res_class) { - resource_header *res; - resource_header *parent; +void* BrResAllocate(void* vparent, br_size_t size, br_uint_8 res_class) { + resource_header* res; + resource_header* parent; br_int_32 malign; br_int_32 calign; br_int_32 pad; br_int_32 actual_pad; + + br_int_32 actual_pad_2; + + char* tmp; + + malign = BrMemAlign(res_class) - 1; + //LOWORD(size_plus_header_plus_3) = (size + 27) & 0xFFFC; + printf("BrResAllocate: parent: %p, size: %d, class: %d, class_index: %p\n", vparent, size, res_class, fw.resource_class_index[res_class]); + calign = fw.resource_class_index[res_class]->alignment; + if (calign <= 0) { + calign = 4; + } + malign--; + calign--; + + pad = (~malign & calign) + 3; + actual_pad = (sizeof(resource_header) + pad) & 0xFFFC; + actual_pad_2 = (size + sizeof(resource_header) + 3) & 0xFFFC; + printf("pad: %d, %d, %d\n", malign, calign, pad); + res = (resource_header*)BrMemAllocate(size + actual_pad, res_class); + // if ((signed int)(((unsigned int)((char*)allocated + res_align_1) & ~res_align_1) - (_DWORD)allocated) > v8) + // BrFailure((int)"Memory allocator broke alignment", v14); + res->class = res_class; + res->size_l = actual_pad_2 >> 2; + res->size_m = actual_pad_2 >> 10; + res->size_h = actual_pad_2 >> 18; + BrSimpleNewList(&res->children); + res->magic_ptr = res; + res->magic_num = 0xDEADBEEF; + + if (vparent) { + tmp = vparent; + while (*(tmp - 1) == 0) { + tmp--; + } + parent = (resource_header*)(tmp - sizeof(resource_header)); + BrSimpleAddHead(&parent->children, &res->node); + } + printf("BrResAllocate returning res: %p, pad: %d, result: %p\n", res, pad, ((char*)res) + actual_pad); + return ((char*)res) + actual_pad; } // Offset: 771 // Size: 367 // EAX: res // EDX: callback -void BrResInternalFree(resource_header *res, br_boolean callback) { +void BrResInternalFree(resource_header* res, br_boolean callback) { int c; - void *r; + void* r; } // Offset: 1148 // Size: 79 -void BrResFree(void *vres) { +void BrResFree(void* vres) { } // Offset: 1247 // Size: 76 -void BrResFreeNoCallback(void *vres) { +void BrResFreeNoCallback(void* vres) { } // Offset: 1332 // Size: 259 -void* BrResAdd(void *vparent, void *vres) { - resource_header *res; - resource_header *parent; +void* BrResAdd(void* vparent, void* vres) { + resource_header* res; + resource_header* parent; } // Offset: 1603 // Size: 141 -void* BrResRemove(void *vres) { - resource_header *res; +void* BrResRemove(void* vres) { + resource_header* res; } // Offset: 1755 // Size: 132 -br_uint_8 BrResClass(void *vres) { - resource_header *res; +br_uint_8 BrResClass(void* vres) { + resource_header* res; } // Offset: 1900 // Size: 266 -br_boolean BrResIsChild(void *vparent, void *vchild) { - resource_header *parent; - resource_header *child; - resource_header *cp; +br_boolean BrResIsChild(void* vparent, void* vchild) { + resource_header* parent; + resource_header* child; + resource_header* cp; } // Offset: 2176 // Size: 177 -br_uint_32 BrResSize(void *vres) { - resource_header *res; +br_uint_32 BrResSize(void* vres) { + resource_header* res; } // Offset: 2366 // Size: 80 -br_uint_32 ResSizeTotal(void *vres, br_uint_32 *ptotal) { +br_uint_32 ResSizeTotal(void* vres, br_uint_32* ptotal) { } // Offset: 2461 // Size: 62 -br_uint_32 BrResSizeTotal(void *vres) { +br_uint_32 BrResSizeTotal(void* vres) { br_uint_32 total; } // Offset: 2538 // Size: 226 -br_uint_32 BrResChildEnum(void *vres, br_resenum_cbfn *callback, void *arg) { - resource_header *res; - resource_header *rp; +br_uint_32 BrResChildEnum(void* vres, br_resenum_cbfn* callback, void* arg) { + resource_header* res; + resource_header* rp; br_uint_32 r; } // Offset: 2775 // Size: 91 -br_uint_32 BrResCheck(void *vres, int no_tag) { - resource_header *res; +br_uint_32 BrResCheck(void* vres, int no_tag) { + resource_header* res; } // Offset: 2878 // Size: 127 -char* BrResStrDup(void *vparent, char *str) { +char* BrResStrDup(void* vparent, char* str) { int l; - char *nstr; + char* nstr; } // Offset: 3026 @@ -117,22 +163,21 @@ char* BrResStrDup(void *vparent, char *str) { // EDX: putline // EBX: arg // ECX: level -void InternalResourceDump(resource_header *res, br_putline_cbfn *putline, void *arg, int level) { +void InternalResourceDump(resource_header* res, br_putline_cbfn* putline, void* arg, int level) { int i; - char *cp; - resource_header *child; - br_resource_class *rclass; + char* cp; + resource_header* child; + br_resource_class* rclass; } // Offset: 3349 // Size: 57 -void BrResDump(void *vres, br_putline_cbfn *putline, void *arg) { - resource_header *res; +void BrResDump(void* vres, br_putline_cbfn* putline, void* arg) { + resource_header* res; } // Offset: 3427 // Size: 80 char* BrResClassIdentifier(br_uint_8 res_class) { - br_resource_class *rclass; + br_resource_class* rclass; } - diff --git a/src/BRSRC13/CORE/FW/resreg.c b/src/BRSRC13/CORE/FW/resreg.c index 6d7450f5..b52d272e 100644 --- a/src/BRSRC13/CORE/FW/resreg.c +++ b/src/BRSRC13/CORE/FW/resreg.c @@ -1,55 +1,69 @@ #include "resreg.h" +#include "CORE/FW/fwsetup.h" +#include "CORE/FW/register.h" +#include +#include + char rscid[48]; // Offset: 14 // Size: 176 -br_resource_class* BrResClassAdd(br_resource_class *rclass) { - br_resource_class *r; +br_resource_class* BrResClassAdd(br_resource_class* rclass) { + br_resource_class* r; + + printf("BrResClassAdd (1) id: %s, %d = %p\n", rclass->identifier, rclass->res_class, fw.resource_class_index[rclass->res_class]); + + r = BrRegistryAdd(&fw.reg_resource_classes, rclass); + if (!r) { + return NULL; + } + printf("BrResClassAdd (2) %d = %p\n", rclass->res_class, r); + fw.resource_class_index[rclass->res_class] = r; + return r; } // Offset: 207 // Size: 158 -br_resource_class* BrResClassRemove(br_resource_class *rclass) { - br_resource_class *r; +br_resource_class* BrResClassRemove(br_resource_class* rclass) { + br_resource_class* r; } // Offset: 380 // Size: 49 -br_resource_class* BrResClassFind(char *pattern) { +br_resource_class* BrResClassFind(char* pattern) { } // Offset: 448 // Size: 55 -br_resclass_find_cbfn* BrResClassFindHook(br_resclass_find_cbfn *hook) { - br_resclass_find_cbfn *old; +br_resclass_find_cbfn* BrResClassFindHook(br_resclass_find_cbfn* hook) { + br_resclass_find_cbfn* old; } // Offset: 521 // Size: 83 -br_uint_32 BrResClassAddMany(br_resource_class **items, int n) { +br_uint_32 BrResClassAddMany(br_resource_class** items, int n) { int i; } // Offset: 625 // Size: 100 -br_uint_32 BrResClassRemoveMany(br_resource_class **items, int n) { +br_uint_32 BrResClassRemoveMany(br_resource_class** items, int n) { int i; int r; } // Offset: 744 // Size: 55 -br_uint_32 BrResClassFindMany(char *pattern, br_resource_class **items, int max) { +br_uint_32 BrResClassFindMany(char* pattern, br_resource_class** items, int max) { } // Offset: 815 // Size: 49 -br_uint_32 BrResClassCount(char *pattern) { +br_uint_32 BrResClassCount(char* pattern) { } // Offset: 879 // Size: 55 -br_uint_32 BrResClassEnum(char *pattern, br_resclass_enum_cbfn *callback, void *arg) { +br_uint_32 BrResClassEnum(char* pattern, br_resclass_enum_cbfn* callback, void* arg) { } - diff --git a/src/BRSRC13/CORE/STD/brstddiag.h b/src/BRSRC13/CORE/STD/brstddiag.h index 319eaefa..2fa47247 100644 --- a/src/BRSRC13/CORE/STD/brstddiag.h +++ b/src/BRSRC13/CORE/STD/brstddiag.h @@ -3,12 +3,15 @@ #include "br_types.h" +extern br_diaghandler BrStdioDiagHandler; +extern br_diaghandler* _BrDefaultDiagHandler; + // Offset: 15 // Size: 78 -void BrStdioWarning(char *message); +void BrStdioWarning(char* message); // Offset: 108 // Size: 93 -void BrStdioFailure(char *message); +void BrStdioFailure(char* message); #endif diff --git a/src/BRSRC13/CORE/STD/brstdfile.h b/src/BRSRC13/CORE/STD/brstdfile.h index 314ad26a..731feb0e 100644 --- a/src/BRSRC13/CORE/STD/brstdfile.h +++ b/src/BRSRC13/CORE/STD/brstdfile.h @@ -3,7 +3,7 @@ #include "br_types.h" -extern br_filesystem *_BrDefaultFilesystem; +extern br_filesystem* _BrDefaultFilesystem; // Offset: 18 // Size: 40 @@ -11,46 +11,46 @@ br_uint_32 BrStdioAttributes(); // Offset: 74 // Size: 595 -void* BrStdioOpenRead(char *name, br_size_t n_magics, br_mode_test_cbfn *identify, int *mode_result); +void* BrStdioOpenRead(char* name, br_size_t n_magics, br_mode_test_cbfn* identify, int* mode_result); // Offset: 686 // Size: 82 -void* BrStdioOpenWrite(char *name, int mode); +void* BrStdioOpenWrite(char* name, int mode); // Offset: 781 // Size: 38 -void BrStdioClose(void *f); +void BrStdioClose(void* f); // Offset: 830 // Size: 45 -int BrStdioEof(void *f); +int BrStdioEof(void* f); // Offset: 890 // Size: 117 -int BrStdioGetChar(void *f); +int BrStdioGetChar(void* f); // Offset: 1022 // Size: 41 -void BrStdioPutChar(int c, void *f); +void BrStdioPutChar(int c, void* f); // Offset: 1075 // Size: 53 -br_size_t BrStdioRead(void *buf, br_size_t size, unsigned int n, void *f); +br_size_t BrStdioRead(void* buf, br_size_t size, unsigned int n, void* f); // Offset: 1141 // Size: 53 -br_size_t BrStdioWrite(void *buf, br_size_t size, unsigned int n, void *f); +br_size_t BrStdioWrite(void* buf, br_size_t size, unsigned int n, void* f); // Offset: 1209 // Size: 141 -br_size_t BrStdioGetLine(char *buf, br_size_t buf_len, void *f); +br_size_t BrStdioGetLine(char* buf, br_size_t buf_len, void* f); // Offset: 1365 // Size: 54 -void BrStdioPutLine(char *buf, void *f); +void BrStdioPutLine(char* buf, void* f); // Offset: 1434 // Size: 46 -void BrStdioAdvance(br_size_t count, void *f); +void BrStdioAdvance(br_size_t count, void* f); #endif diff --git a/src/BRSRC13/CORE/STD/brstdlib.c b/src/BRSRC13/CORE/STD/brstdlib.c index 49a22788..528dbe62 100644 --- a/src/BRSRC13/CORE/STD/brstdlib.c +++ b/src/BRSRC13/CORE/STD/brstdlib.c @@ -5,44 +5,43 @@ #include #include - // 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]; // Offset: 9 // Size: 50 -int BrMemCmp(void *s1, void *s2, size_t n) { +int BrMemCmp(void* s1, void* s2, size_t n) { return memcmp(s1, s2, n); } // Offset: 68 // Size: 50 -void* BrMemCpy(void *s1, void *s2, size_t n) { +void* BrMemCpy(void* s1, void* s2, size_t n) { memcpy(s1, s2, n); } // Offset: 127 // Size: 50 -void* BrMemSet(void *s, int c, size_t n) { +void* BrMemSet(void* s, int c, size_t n) { memset(s, c, n); } // Offset: 186 // Size: 47 -char* BrStrCat(char *s1, char *s2) { +char* BrStrCat(char* s1, char* s2) { return strcat(s1, s2); } // Offset: 242 // Size: 47 -int BrStrCmp(char *s1, char *s2) { +int BrStrCmp(char* s1, char* s2) { return strcmp(s1, s2); } // Offset: 299 // Size: 47 -int BrStrICmp(char *s1, char *s2) { +int BrStrICmp(char* s1, char* s2) { // Windows is stricmp, while posix is strcasecmp #ifdef _WIN32 return stricmp(s1, s2); @@ -53,25 +52,25 @@ int BrStrICmp(char *s1, char *s2) { // Offset: 355 // Size: 47 -char* BrStrCpy(char *s1, const char *s2) { +char* BrStrCpy(char* s1, const char* s2) { return strcpy(s1, s2); } // Offset: 411 // Size: 44 -br_size_t BrStrLen(char *s) { +br_size_t BrStrLen(char* s) { return strlen(s); } // Offset: 465 // Size: 50 -int BrStrNCmp(char *s1, char *s2, size_t n) { +int BrStrNCmp(char* s1, char* s2, size_t n) { return strncmp(s1, s2, n); } // Offset: 526 // Size: 50 -int BrStrNICmp(char *s1, char *s2, size_t n) { +int BrStrNICmp(char* s1, char* s2, size_t n) { // Windows is strnicmp, while posix is strncasecmp #ifdef _WIN32 return strnicmp(s1, s2, n); @@ -82,13 +81,13 @@ int BrStrNICmp(char *s1, char *s2, size_t n) { // Offset: 586 // Size: 50 -char* BrStrNCpy(char *s1, char *s2, size_t n) { +char* BrStrNCpy(char* s1, char* s2, size_t n) { return strncpy(s1, s2, n); } // Offset: 646 // Size: 49 -char* BrStrRChr(char *s1, char c) { +char* BrStrRChr(char* s1, char c) { return strrchr(s1, c); } @@ -100,31 +99,31 @@ void BrAbort(void) { // Offset: 747 // Size: 44 -char* BrGetEnv(char *name) { +char* BrGetEnv(char* name) { return getenv(name); } // Offset: 800 // Size: 58 -float BrStrToF(char *nptr, char **endptr) { +float BrStrToF(char* nptr, char** endptr) { return strtof(nptr, endptr); } // Offset: 867 // Size: 67 -double BrStrToD(char *nptr, char **endptr) { +double BrStrToD(char* nptr, char** endptr) { return strtod(nptr, endptr); } // Offset: 943 // Size: 50 -long BrStrToL(char *nptr, char **endptr, int base) { +long BrStrToL(char* nptr, char** endptr, int base) { return strtol(nptr, endptr, base); } // Offset: 1003 // Size: 50 -unsigned long BrStrToUL(char *nptr, char **endptr, int base) { +unsigned long BrStrToUL(char* nptr, char** endptr, int base) { return strtoul(nptr, endptr, base); } @@ -154,13 +153,13 @@ br_boolean BrIsPrint(int c) { // Offset: 1340 // Size: 50 -br_int_32 BrVSprintf(char *buf, const char *fmt, va_list args) { +br_int_32 BrVSprintf(char* buf, const char* fmt, va_list args) { return vsprintf(buf, fmt, args); } // Offset: 1402 // Size: 101 -br_int_32 BrVSprintfN(char *buf, br_size_t buf_size, const char *fmt, va_list args) { +br_int_32 BrVSprintfN(char* buf, br_size_t buf_size, const char* fmt, va_list args) { // Most C libs have vsnprintf these days that can replace this. unsigned int n; char tmp[512]; @@ -177,7 +176,6 @@ br_int_32 BrVSprintfN(char *buf, br_size_t buf_size, const char *fmt, va_list ar // Offset: 1513 // Size: 50 -br_int_32 BrVSScanf(char *buf, const char *fmt, va_list args) { +br_int_32 BrVSScanf(char* buf, const char* fmt, va_list args) { return vsscanf(buf, fmt, args); } - diff --git a/src/BRSRC13/CORE/STD/brstdmem.h b/src/BRSRC13/CORE/STD/brstdmem.h index 2b877543..5c7ff58b 100644 --- a/src/BRSRC13/CORE/STD/brstdmem.h +++ b/src/BRSRC13/CORE/STD/brstdmem.h @@ -3,13 +3,16 @@ #include "br_types.h" +extern br_allocator BrStdlibAllocator; +extern br_allocator* _BrDefaultAllocator; + // Offset: 17 // Size: 80 void* BrStdlibAllocate(br_size_t size, br_uint_8 type); // Offset: 110 // Size: 38 -void BrStdlibFree(void *mem); +void BrStdlibFree(void* mem); // Offset: 164 // Size: 40 diff --git a/src/BRSRC13/CORE/V1DB/dbsetup.c b/src/BRSRC13/CORE/V1DB/dbsetup.c index 74be8bdc..d2cceb92 100644 --- a/src/BRSRC13/CORE/V1DB/dbsetup.c +++ b/src/BRSRC13/CORE/V1DB/dbsetup.c @@ -1,13 +1,72 @@ #include "dbsetup.h" -br_resource_class resourceClasses[14]; +#include "CORE/FW/brbegin.h" +#include "CORE/FW/register.h" +#include "CORE/FW/resource.h" +#include "CORE/FW/resreg.h" +#include "CORE/STD/brstdlib.h" +#include "CORE/V1DB/def_mat.h" +#include "CORE/V1DB/def_mdl.h" +#include +#include + +br_resource_class v1db_resourceClasses[14] = { + { 0u, "VERTICES", BR_MEMORY_VERTICES, NULL, 0u }, + { 0u, "FACES", BR_MEMORY_FACES, NULL, 0u }, + { 0u, "MODEL", BR_MEMORY_MODEL, NULL, 0u }, + { 0u, "MATERIAL", BR_MEMORY_MATERIAL, NULL, 0u }, + { 0u, "MATERIAL_INDEX", BR_MEMORY_MATERIAL_INDEX, NULL, 0u }, + { 0u, "ACTOR", BR_MEMORY_ACTOR, NULL, 0u }, + { 0u, "LIGHT", BR_MEMORY_LIGHT, NULL, 0u }, + { 0u, "CAMERA", BR_MEMORY_CAMERA, NULL, 0u }, + { 0u, "BOUNDS", BR_MEMORY_BOUNDS, NULL, 0u }, + { 0u, "CLIP_PLANE", BR_MEMORY_CLIP_PLANE, NULL, 0u }, + { 0u, "TRANSFORM", BR_MEMORY_TRANSFORM, NULL, 0u }, + { 0u, "ENABLED_ACTORS", BR_MEMORY_ENABLED_ACTORS, NULL, 0u }, + { 0u, "PREPARED_MODEL", BR_MEMORY_PREPARED_MODEL, NULL, 32u }, + { 0u, "ORDER_TABLE", BR_MEMORY_ORDER_TABLE, NULL, 32u } +}; + br_v1db_state v1db; // Offset: 12 // Size: 345 br_error BrV1dbBegin() { - char *devstr; + char* devstr; br_size_t s; + int i; + + if (v1db.active) { + return 4103; + } + + printf("BrV1dbBegin\n"); + + BrMemSet(&v1db, 0, sizeof(br_v1db_state)); + v1db.active = 1; + BrRegistryNew(&v1db.reg_models); + BrRegistryNew(&v1db.reg_materials); + BrRegistryNew(&v1db.reg_textures); + BrRegistryNew(&v1db.reg_tables); + v1db.res = BrResAllocate(NULL, 0, BR_MEMORY_ANCHOR); + + for (i = 0; i < 14; i++) { + BrResClassAdd(&v1db_resourceClasses[i]); + } + + v1db.default_model = (br_model*)BrResAllocate(v1db.res, sizeof(br_model), BR_MEMORY_MODEL); + memcpy(v1db.default_model, &_BrDefaultModel, sizeof(br_model)); + v1db.default_material = SetupDefaultMaterial(); + v1db.enabled_lights.type = 2; + v1db.enabled_clip_planes.name = "clip plane"; + v1db.enabled_clip_planes.type = 7; + v1db.enabled_lights.max = 16; + v1db.enabled_lights.name = "light"; + v1db.enabled_clip_planes.max = 6; + v1db.enabled_horizon_planes.max = 6; + v1db.enabled_horizon_planes.name = "horizon plane"; + v1db.enabled_horizon_planes.type = 8; + return 0; } // Offset: 367 @@ -17,48 +76,48 @@ br_error BrV1dbEnd() { // Offset: 482 // Size: 89 -br_uint_32 updateTable(br_pixelmap *item, void *arg) { +br_uint_32 updateTable(br_pixelmap* item, void* arg) { } // Offset: 581 // Size: 89 -br_uint_32 updateMap(br_pixelmap *item, void *arg) { +br_uint_32 updateMap(br_pixelmap* item, void* arg) { } // Offset: 685 // Size: 89 -br_uint_32 updateMaterial(br_material *item, void *arg) { +br_uint_32 updateMaterial(br_material* item, void* arg) { } // Offset: 786 // Size: 89 -br_uint_32 updateModel(br_model *item, void *arg) { +br_uint_32 updateModel(br_model* item, void* arg) { } // Offset: 886 // Size: 79 -br_uint_32 clearTable(br_pixelmap *item, void *arg) { +br_uint_32 clearTable(br_pixelmap* item, void* arg) { } // Offset: 974 // Size: 79 -br_uint_32 clearMap(br_pixelmap *item, void *arg) { +br_uint_32 clearMap(br_pixelmap* item, void* arg) { } // Offset: 1067 // Size: 79 -br_uint_32 clearMaterial(br_material *item, void *arg) { +br_uint_32 clearMaterial(br_material* item, void* arg) { } // Offset: 1157 // Size: 79 -br_uint_32 clearModel(br_model *item, void *arg) { +br_uint_32 clearModel(br_model* item, void* arg) { } // Offset: 1256 // Size: 462 -br_error BrV1dbRendererBegin(br_device_pixelmap *destination, br_renderer *renderer) { - br_renderer_facility *renderer_facility; +br_error BrV1dbRendererBegin(br_device_pixelmap* destination, br_renderer* renderer) { + br_renderer_facility* renderer_facility; br_error r; br_token_value tv[2]; } @@ -80,7 +139,7 @@ void BrZbBegin(br_uint_8 colour_type, br_uint_8 depth_type) { // Offset: 2133 // Size: 141 -void BrZsBegin(br_uint_8 colour_type, void *primitive, br_uint_32 size) { +void BrZsBegin(br_uint_8 colour_type, void* primitive, br_uint_32 size) { } // Offset: 2282 @@ -96,10 +155,11 @@ void BrZsEnd() { // Offset: 2445 // Size: 40 void BrV1dbBeginWrapper_Float() { + BrBegin(); + BrV1dbBegin(); } // Offset: 2502 // Size: 40 void BrV1dbEndWrapper() { } - diff --git a/src/BRSRC13/CORE/V1DB/def_mdl.h b/src/BRSRC13/CORE/V1DB/def_mdl.h index 933718bf..5069ac93 100644 --- a/src/BRSRC13/CORE/V1DB/def_mdl.h +++ b/src/BRSRC13/CORE/V1DB/def_mdl.h @@ -3,4 +3,6 @@ #include "br_types.h" +extern br_model _BrDefaultModel; + #endif diff --git a/src/BRSRC13/Makefile b/src/BRSRC13/Makefile index 0b25ecae..40ffc4dd 100644 --- a/src/BRSRC13/Makefile +++ b/src/BRSRC13/Makefile @@ -10,7 +10,7 @@ DEPS := $(OBJS:.o=.d) INC_DIRS := $(shell find $(SRC_DIR) -type d) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) -CFLAGS ?= $(INC_FLAGS) -Wno-return-type -Wno-missing-declarations -Werror=implicit-function-declaration +CFLAGS ?= $(INC_FLAGS) -g -Wno-return-type -Wno-missing-declarations -Werror=implicit-function-declaration .PHONY: clean build diff --git a/src/BRSRC13/br_types.h b/src/BRSRC13/br_types.h index aee77fc9..3427cbd3 100644 --- a/src/BRSRC13/br_types.h +++ b/src/BRSRC13/br_types.h @@ -2,24 +2,25 @@ #define BR_TYPES_H #include +#include -typedef long br_int_32; -typedef unsigned long br_uint_32; -typedef short br_int_16; -typedef unsigned short br_uint_16; +typedef int32_t br_int_32; +typedef uint32_t br_uint_32; +typedef int16_t br_int_16; +typedef uint16_t br_uint_16; typedef signed char br_int_8; typedef unsigned char br_uint_8; -typedef unsigned int br_size_t; -typedef int br_boolean; +typedef uint32_t br_size_t; +typedef int32_t br_boolean; typedef float br_float; typedef br_uint_32 br_error; -typedef long br_fixed_ls; -typedef short br_fixed_lsf; -typedef unsigned long br_fixed_lu; -typedef unsigned short br_fixed_luf; -typedef short br_fixed_ss; +typedef int32_t br_fixed_ls; +typedef int16_t br_fixed_lsf; +typedef uint32_t br_fixed_lu; +typedef uint16_t br_fixed_luf; +typedef int16_t br_fixed_ss; typedef char br_fixed_ssf; -typedef unsigned short br_fixed_su; +typedef uint16_t br_fixed_su; typedef unsigned char br_fixed_suf; typedef float br_scalar; typedef float br_fraction; @@ -30,7 +31,7 @@ typedef br_fixed_luf br_ufraction_x; typedef float br_scalar_f; typedef float br_fraction_f; typedef float br_ufraction_f; -typedef unsigned long br_colour; +typedef uint32_t br_colour; typedef struct br_bounds3 br_bounds; typedef struct br_bounds2_i br_bounds2i; typedef struct br_bounds3_i br_bounds3i; @@ -683,49 +684,69 @@ typedef struct br_matrix34 br_matrix34; typedef int br_pick3d_cbfn(br_actor*, br_model*, br_material*, br_matrix34*, br_bounds*, void*); typedef struct br_vector2 br_vector2; typedef int br_modelpick2d_cbfn(br_model*, br_material*, br_vector3*, br_vector3*, br_scalar, int, int, int, br_vector3*, br_vector2*, void*); -typedef struct br_resource_class -{ - br_uint_32 reserved; - char *identifier; - br_uint_8 res_class; - br_resourcefree_cbfn *free_cb; - br_uint_32 alignment; + +typedef enum view_to_screen_type { + BR_VTOS_PARALLEL = 0, + BR_VTOS_PERSPECTIVE = 1, + BR_VTOS_4X4 = 2 +} view_to_screen_type; + +typedef void dev_fill_cbfn(br_device*, br_pixelmap*, br_uint_32); +typedef void dev_rectangle_copy_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16); +typedef void dev_rectangle_fill_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16, br_uint_32); +typedef void dev_dirty_rectangle_copy_cbfn(br_device*, br_pixelmap*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16); +typedef void dev_dirty_rectangle_fill_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16, br_uint_32); +typedef void dev_plot_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_32); +typedef void dev_copy_cbfn(br_device*, br_pixelmap*, br_pixelmap*); +typedef void dev_line_cbfn(br_device*, br_pixelmap*, br_int_16, br_int_16, br_int_16, br_int_16, br_uint_32); +typedef void dev_copy_bits_cbfn(br_device*, br_pixelmap*, br_int_16, br_int_16, br_uint_8*, br_uint_16, br_uint_16, br_uint_16, br_uint_16, br_uint_32); +typedef br_pixelmap* dev_double_buffer_cbfn(br_device*, br_pixelmap*, br_pixelmap*); +typedef br_pixelmap* dev_match_cbfn(br_device*, br_pixelmap*, br_uint_8); +typedef br_pixelmap* dev_clone_cbfn(br_device*, br_pixelmap*); +typedef void dev_free_cbfn(br_device*, br_pixelmap*); + +typedef struct br_resource_class { // size: 20 + br_uint_32 reserved; // @0 + char* identifier; // @4 + br_uint_8 res_class; // @8 + br_resourcefree_cbfn* free_cb; // @12 + br_uint_32 alignment; // @16 } br_resource_class; typedef struct br_filesystem { - char *identifier; - brfile_attributes_cbfn *attributes; - brfile_open_read_cbfn *open_read; - brfile_open_write_cbfn *open_write; - brfile_close_cbfn *close; - brfile_eof_cbfn *eof; - brfile_getchr_cbfn *getchr; - brfile_putchr_cbfn *putchr; - brfile_read_cbfn *read; - brfile_write_cbfn *write; - brfile_getline_cbfn *getline; - brfile_putline_cbfn *putline; - brfile_advance_cbfn *advance; + char* identifier; + brfile_attributes_cbfn* attributes; + brfile_open_read_cbfn* open_read; + brfile_open_write_cbfn* open_write; + brfile_close_cbfn* close; + brfile_eof_cbfn* eof; + brfile_getchr_cbfn* getchr; + brfile_putchr_cbfn* putchr; + brfile_read_cbfn* read; + brfile_write_cbfn* write; + brfile_getline_cbfn* getline; + brfile_putline_cbfn* putline; + brfile_advance_cbfn* advance; } br_filesystem; typedef struct br_allocator { - char *identifier; - brmem_allocate_cbfn *allocate; - brmem_free_cbfn *free; - brmem_inquire_cbfn *inquire; - brmem_align_cbfn *align; + char* identifier; + brmem_allocate_cbfn* allocate; + brmem_free_cbfn* free; + brmem_inquire_cbfn* inquire; + brmem_align_cbfn* align; } br_allocator; typedef struct br_diaghandler { - char *identifier; - br_diag_warning_cbfn *warning; - br_diag_failure_cbfn *failure; + char* identifier; + br_diag_warning_cbfn* warning; + br_diag_failure_cbfn* failure; } br_diaghandler; typedef struct br_errorhandler { - char *identifier; - br_diag_warning_cbfn *message; - br_diag_failure_cbfn *error; + char* identifier; + br_diag_warning_cbfn* message; + br_diag_failure_cbfn* error; } br_errorhandler; typedef struct br_colour_range { @@ -935,31 +956,31 @@ typedef struct br_transform { br_euler e; br_scalar _pad[7]; br_vector3 t; - }a; + } a; struct { br_quat q; br_scalar _pad[5]; br_vector3 t; - }b; + } b; struct { br_vector3 look; br_vector3 up; br_scalar _pad[3]; br_vector3 t; - }c; + } c; struct { br_scalar _pad[9]; br_vector3 t; - }d; + } d; }; } br_transform; typedef struct br_pixelmap { br_uint_32 _reserved; - char *identifier; - void *pixels; + char* identifier; + void* pixels; br_uint_32 pixels_qualifier; - br_pixelmap *map; + br_pixelmap* map; br_colour_range src_key; br_colour_range dst_key; br_uint_32 key; @@ -974,8 +995,8 @@ typedef struct br_pixelmap { br_uint_16 height; br_int_16 origin_x; br_int_16 origin_y; - void *user; - void *stored; + void* user; + void* stored; } br_pixelmap; typedef struct br_point { @@ -996,9 +1017,9 @@ typedef struct br_font { br_uint_16 glyph_y; br_int_16 spacing_x; br_int_16 spacing_y; - br_int_8 *width; - br_uint_16 *encoding; - br_uint_8 *glyphs; + br_int_8* width; + br_uint_16* encoding; + br_uint_8* glyphs; } br_font; typedef struct br_object { @@ -1008,7 +1029,7 @@ typedef struct br_token_value br_token_value; typedef struct br_value_tag { br_uint_32 u32; br_boolean b; - void *p; + void* p; br_token t; br_int_8 i8; br_uint_8 u8; @@ -1020,28 +1041,28 @@ typedef struct br_value_tag { br_scalar s; br_angle a; br_colour rgb; - br_object *o; - br_vector2_i *v2_i; - br_vector3_i *v3_i; - br_vector4_i *v4_i; - br_vector2_x *v2_x; - br_vector3_x *v3_x; - br_vector4_x *v4_x; - br_vector2_f *v2_f; - br_vector3_f *v3_f; - br_vector4_f *v4_f; - br_matrix23_x *m23_x; - br_matrix34_x *m34_x; - br_matrix4_x *m4_x; - br_matrix23_f *m23_f; - br_matrix34_f *m34_f; - br_matrix4_f *m4_f; - char *str; - char *cstr; - br_object **hl; - br_token *tl; - void **pl; - br_token_value *tvl; + br_object* o; + br_vector2_i* v2_i; + br_vector3_i* v3_i; + br_vector4_i* v4_i; + br_vector2_x* v2_x; + br_vector3_x* v3_x; + br_vector4_x* v4_x; + br_vector2_f* v2_f; + br_vector3_f* v3_f; + br_vector4_f* v4_f; + br_matrix23_x* m23_x; + br_matrix34_x* m34_x; + br_matrix4_x* m4_x; + br_matrix23_f* m23_f; + br_matrix34_f* m34_f; + br_matrix4_f* m4_f; + char* str; + char* cstr; + br_object** hl; + br_token* tl; + void** pl; + br_token_value* tvl; } br_value; typedef struct br_token_value { @@ -1051,27 +1072,27 @@ typedef struct br_token_value { typedef struct br_pool_block br_pool_block; typedef struct br_pool_block { - br_pool_block *next; + br_pool_block* next; } br_pool_block; typedef struct br_pool { - br_pool_block *free; + br_pool_block* free; br_uint_32 block_size; br_uint_32 chunk_size; int mem_type; } br_pool; typedef struct br_primitive { - br_primitive *next; + br_primitive* next; br_uint_32 type; - void *stored; - void *v[3]; + void* stored; + void* v[3]; } br_primitive; typedef struct br_order_table { - br_primitive **table; + br_primitive** table; br_uint_16 size; - br_order_table *next; + br_order_table* next; br_scalar min_z; br_scalar max_z; br_scalar sort_z; @@ -1082,18 +1103,35 @@ typedef struct br_order_table { } br_order_table; typedef struct br_primitive_heap { - br_uint_8 *base; + br_uint_8* base; br_size_t size; - br_uint_8 *current; + br_uint_8* current; } br_primitive_heap; typedef struct br_associative_array_tag { - br_token_value *tv; + br_token_value* tv; br_uint_16 num_elements; br_uint_16 max_elements; } br_associative_array; -typedef struct br_device { +typedef struct br_device { // size: 68 + br_uint_32 magic; // @0 + char* identifier; // @4 + br_font* default_font; // @8 + br_uint_32 qualifier; // @12 + dev_fill_cbfn* fill; // @16 + dev_rectangle_copy_cbfn* rectangle_copy; // @20 + dev_rectangle_fill_cbfn* rectangle_fill; // @24 + dev_dirty_rectangle_copy_cbfn* dirty_rectangle_copy; // @28 + dev_dirty_rectangle_fill_cbfn* dirty_rectangle_fill; // @32 + dev_plot_cbfn* plot; // @36 + dev_copy_cbfn* copy; // @40 + dev_line_cbfn* line; // @44 + dev_copy_bits_cbfn* copy_bits; // @48 + dev_double_buffer_cbfn* double_buffer; // @52 + dev_match_cbfn* match; // @56 + dev_clone_cbfn* clone; // @60 + dev_free_cbfn* free; // @64 } br_device; typedef struct br_outfcty_desc { @@ -1126,7 +1164,7 @@ typedef struct br_renderer { typedef struct br_material { br_uint_32 _reserved; - char *identifier; + char* identifier; br_colour colour; br_uint_8 opacity; br_ufraction ka; @@ -1137,18 +1175,18 @@ typedef struct br_material { br_matrix23 map_transform; br_uint_8 index_base; br_uint_8 index_range; - br_pixelmap *colour_map; - br_pixelmap *screendoor; - br_pixelmap *index_shade; - br_pixelmap *index_blend; - br_pixelmap *index_fog; - br_token_value *extra_surf; - br_token_value *extra_prim; + br_pixelmap* colour_map; + br_pixelmap* screendoor; + br_pixelmap* index_shade; + br_pixelmap* index_blend; + br_pixelmap* index_fog; + br_token_value* extra_surf; + br_token_value* extra_prim; br_scalar fog_min; br_scalar fog_max; br_colour fog_colour; br_uint_32 flags_ext; - br_pixelmap *colour_map_1; + br_pixelmap* colour_map_1; br_matrix23 map_transform_1; br_int_8 mip_modifier; br_uint_8 min_mip; @@ -1157,8 +1195,8 @@ typedef struct br_material { br_uint_8 zbuffer_mode; br_uint_8 zbuffer_compare; br_int_32 subdivide_tolerance; - void *user; - void *stored; + void* user; + void* stored; } br_material; typedef struct br_vertex { @@ -1175,7 +1213,7 @@ typedef struct br_vertex { typedef struct br_face { br_uint_16 vertices[3]; br_uint_16 smoothing; - br_material *material; + br_material* material; br_uint_8 index; br_uint_8 red; br_uint_8 grn; @@ -1189,12 +1227,12 @@ typedef struct br_face { typedef struct br_primitive_list br_primitive_list; typedef struct br_primitive_list { - br_primitive_list *next; + br_primitive_list* next; br_uint_32 prim_type; br_uint_16 nprims; br_uint_16 nspares; - void *prim; - void *spare; + void* prim; + void* spare; } br_primitive_list; typedef struct br_vertex_single { @@ -1225,12 +1263,12 @@ typedef struct br_vertex_double { typedef struct br_point_prim { br_uint_16 vertices[1]; - br_material *material; + br_material* material; } br_point_prim; typedef struct br_line { br_uint_16 vertices[2]; - br_material *material; + br_material* material; br_uint_8 alpha0; br_uint_8 red0; br_uint_8 grn0; @@ -1244,7 +1282,7 @@ typedef struct br_line { typedef struct br_triangle { br_uint_16 vertices[3]; br_uint_16 smoothing; - br_material *material; + br_material* material; br_uint_8 alpha0; br_uint_8 red0; br_uint_8 grn0; @@ -1261,7 +1299,7 @@ typedef struct br_triangle { typedef struct br_quad { br_uint_16 vertices[4]; br_uint_16 smoothing; - br_material *material; + br_material* material; br_uint_8 alpha0; br_uint_8 red0; br_uint_8 grn0; @@ -1292,50 +1330,50 @@ typedef struct br_strip_face_data { typedef struct br_tri_strip { br_uint_16 nvertices; - br_uint_16 *vertices; - br_material *material; - br_strip_face_data *face_data; + br_uint_16* vertices; + br_material* material; + br_strip_face_data* face_data; } br_tri_strip; typedef struct br_actor { - br_actor *next; - br_actor **prev; - br_actor *children; - br_actor *parent; + br_actor* next; + br_actor** prev; + br_actor* children; + br_actor* parent; br_uint_16 depth; br_uint_8 type; - char *identifier; - br_model *model; - br_material *material; + char* identifier; + br_model* model; + br_material* material; br_uint_8 render_style; - void *render_data; + void* render_data; br_transform t; - void *type_data; - void *user; + void* type_data; + void* user; } br_actor; typedef struct br_model { br_uint_32 _reserved; - char *identifier; - br_vertex *vertices; - br_face *faces; + char* identifier; + br_vertex* vertices; + br_face* faces; br_uint_16 nvertices; br_uint_16 nfaces; br_vector3 pivot; br_uint_16 flags; - br_model_custom_cbfn *custom; - void *user; + br_model_custom_cbfn* custom; + void* user; br_angle crease_angle; br_scalar radius; br_bounds bounds; - void *prepared; - void *stored; + void* prepared; + void* stored; br_uint_16 nprimitive_lists; - br_primitive_list *primitive_list; + br_primitive_list* primitive_list; } br_model; typedef struct br_camera { - char *identifier; + char* identifier; br_uint_8 type; br_angle field_of_view; br_scalar hither_z; @@ -1344,11 +1382,11 @@ typedef struct br_camera { br_scalar width; br_scalar height; br_scalar distance; - void *user; + void* user; } br_camera; typedef struct br_light { - char *identifier; + char* identifier; br_uint_8 type; br_colour colour; br_scalar attenuation_c; @@ -1356,19 +1394,19 @@ typedef struct br_light { br_scalar attenuation_q; br_angle cone_outer; br_angle cone_inner; - void *user; + void* user; } br_light; typedef struct br_fmt_results { - br_actor **actors; - br_model **models; - br_light **lights; - br_camera **cameras; - br_vector4 **clip_planes; - br_bounds3 **bounds; - br_bounds3 **bounds_correct; - br_material **materials; - br_pixelmap **pixelmaps; + br_actor** actors; + br_model** models; + br_light** lights; + br_camera** cameras; + br_vector4** clip_planes; + br_bounds3** bounds; + br_bounds3** bounds_correct; + br_material** materials; + br_pixelmap** pixelmaps; br_uint_32 nactors; br_uint_32 nmodels; br_uint_32 nlights; @@ -1389,7 +1427,7 @@ typedef struct br_3ds_options { br_scalar hither; br_scalar yon; br_scalar scale; - br_fmt_report_cbfn *report; + br_fmt_report_cbfn* report; } br_3ds_options; typedef struct br_registery br_registry; @@ -1405,35 +1443,35 @@ typedef void br_table_update_cbfn(br_pixelmap*, br_uint_16); typedef void br_map_update_cbfn(br_pixelmap*, br_uint_16); typedef struct br_node br_node; typedef struct br_node { - br_node *next; - br_node *prev; + br_node* next; + br_node* prev; } br_node; typedef struct br_list { - br_node *head; - br_node *_null; - br_node *tail; + br_node* head; + br_node* _null; + br_node* tail; } br_list; typedef struct br_simple_node br_simple_node; typedef struct br_simple_node { - br_simple_node *next; - br_simple_node **prev; + br_simple_node* next; + br_simple_node** prev; } br_simple_node; typedef struct br_simple_list { - br_simple_node *head; + br_simple_node* head; } br_simple_list; -typedef struct br_registry_entry { - br_node node; - char **item; +typedef struct br_registry_entry { // size: 12 + br_node node; // @0 + char** item; // @8 } br_registry_entry; -typedef struct br_registery { - br_list list; - int count; - br_find_failed_cbfn *find_failed_hook; +typedef struct br_registery { // size: 20 + br_list list; // @0 + int count; // @12 + br_find_failed_cbfn* find_failed_hook; // @16 } br_registry; typedef struct br_active_light { @@ -1447,7 +1485,7 @@ typedef struct br_active_light { br_scalar spot_cosine_inner; void (*light_sub_function)(br_vector3*, br_fvector3*, br_active_light*, br_scalar*); int type; - br_light *light; + br_light* light; } br_active_light; typedef struct br_active_clip_plane { @@ -1455,23 +1493,81 @@ typedef struct br_active_clip_plane { } br_active_clip_plane; typedef struct fw_fn_table { - br_surface_fn *light; - br_surface_fn *light_material; - br_surface_fn *light_vertex; - br_surface_fn *light_texture; - br_face_surface_fn *face_light; - br_light_sub_fn *direct; - br_light_sub_fn *point; - br_light_sub_fn *point_attn; - br_light_sub_fn *spot; - br_light_sub_fn *spot_attn; + br_surface_fn* light; + br_surface_fn* light_material; + br_surface_fn* light_vertex; + br_surface_fn* light_texture; + br_face_surface_fn* face_light; + br_light_sub_fn* direct; + br_light_sub_fn* point; + br_light_sub_fn* point_attn; + br_light_sub_fn* spot; + br_light_sub_fn* spot_attn; } fw_fn_table; -typedef struct br_framework_state { - br_surface_fn *surface_fn; - br_surface_fn *surface_fn_after_map; - br_surface_fn *surface_fn_after_copy; - br_face_surface_fn *face_surface_fn; +typedef struct br_image_section { + char* name; + void* base; + br_size_t mem_offset; + br_size_t mem_size; + br_uint_32 data_offset; + br_uint_32 data_size; +} br_image_section; + +typedef struct br_image br_image; +typedef struct br_image { + br_node node; + char* identifier; + br_int_32 type; + br_int_32 ref_count; + br_uint_32 ordinal_base; + br_uint_32 n_functions; + void** functions; + br_uint_32 n_names; + char** names; + br_uint_16* name_ordinals; + br_uint_16 n_imports; + br_image** imports; + br_uint_16 n_sections; + br_image_section* sections; + void* type_pointer; +} br_image; + +typedef struct br_open_device { + br_device* dev; + br_image* image; +} br_open_device; + +typedef struct br_framework_state { // size: 1136 + br_boolean active; // @0 + br_registry reg_resource_classes; // @4 + br_resource_class* resource_class_index[256]; // @24 + br_list tokens; // @1048 + br_token next_free_token; // @1060 + br_filesystem* fsys; // @1064 + br_allocator* mem; // @1068 + br_diaghandler* diag; // @1072 + int open_mode; // @1076 + void* res; // @1080 + void* scratch_ptr; // @1084 + br_size_t scratch_size; // @1088 + br_size_t scratch_last; // @1092 + int scratch_inuse; // @1096 + br_error last_error_type; // @1100 + void** last_error_value; // @1104 + br_list images; // @1108 + br_open_device* dev_slots; // @1120 + br_int_32 ndev_slots; // @1124 + br_associative_array* sys_config; // @1128 + br_boolean bAlreadyLoadedDrivers; // @1132 +} br_framework_state; + +// br_framework_state defined by "C:\DETHRACE\source\common\finteray.c" module +typedef struct br_framework_state_2 { + br_surface_fn* surface_fn; + br_surface_fn* surface_fn_after_map; + br_surface_fn* surface_fn_after_copy; + br_face_surface_fn* face_surface_fn; br_matrix23 map_transform; br_scalar index_base; br_scalar index_range; @@ -1482,12 +1578,12 @@ typedef struct br_framework_state { br_matrix34 model_to_environment; struct { br_matrix34 m; - br_actor *a; + br_actor* a; }; int vtos_type; br_vector3 eye_m; br_vector3 eye_m_normalised; - br_material *material; + br_material* material; br_active_light active_lights_model[16]; br_active_light active_lights_view[16]; br_uint_16 nactive_lights_model; @@ -1496,10 +1592,10 @@ typedef struct br_framework_state { br_vector3 eye_l; br_active_clip_plane active_clip_planes[6]; br_uint_16 nactive_clip_planes; - br_actor *enabled_lights[16]; - br_actor *enabled_clip_planes[6]; - br_actor *enabled_environment; - br_pixelmap *output; + br_actor* enabled_lights[16]; + br_actor* enabled_clip_planes[6]; + br_actor* enabled_environment; + br_pixelmap* output; br_scalar vp_width; br_scalar vp_height; br_scalar vp_ox; @@ -1510,30 +1606,30 @@ typedef struct br_framework_state { br_registry reg_textures; br_registry reg_tables; br_registry reg_resource_classes; - br_resource_class *resource_class_index[256]; - br_model_update_cbfn *model_update; - br_material_update_cbfn *material_update; - br_table_update_cbfn *table_update; - br_map_update_cbfn *map_update; - br_filesystem *fsys; - br_allocator *mem; - br_errorhandler *err; + br_resource_class* resource_class_index[256]; + br_model_update_cbfn* model_update; + br_material_update_cbfn* material_update; + br_table_update_cbfn* table_update; + br_map_update_cbfn* map_update; + br_filesystem* fsys; + br_allocator* mem; + br_errorhandler* err; int open_mode; - void *res; - br_model *default_model; - br_material *default_material; + void* res; + br_model* default_model; + br_material* default_material; fw_fn_table fn_table; - void *scratch_ptr; + void* scratch_ptr; br_size_t scratch_size; br_size_t scratch_last; int scratch_inuse; -} br_framework_state; +} br_framework_state_2; typedef br_error br_exception; typedef void br_resident_fn(); typedef struct br_tv_template_entry { br_token token; - char *name; + char* name; br_int_32 offset; br_int_16 flags; br_int_16 conv; @@ -1543,18 +1639,18 @@ typedef struct br_tv_template_entry { typedef struct br_tv_template { int n_entries; - br_tv_template_entry *entries; + br_tv_template_entry* entries; br_int_32 map_base; br_int_32 n_map_entries; - br_tv_template_entry **map_query_entry; - br_tv_template_entry **map_set_entry; + br_tv_template_entry** map_query_entry; + br_tv_template_entry** map_set_entry; br_boolean names_resolved; - void *res; + void* res; } br_tv_template; typedef struct br_object_container_dispatch br_object_container_dispatch; typedef struct br_object_container { - br_object_container_dispatch *dispatch; + br_object_container_dispatch* dispatch; } br_object_container; typedef struct br_object_container_dispatch { @@ -1617,6 +1713,11 @@ typedef struct br_device_dispatch { br_error (*_count)(br_object_container*, br_int_32*, br_token, char*, br_token_value*); } br_device_dispatch; +// br_device. Not sure when this is used +typedef struct br_device_2 { + br_device_dispatch* dispatch; +} br_device_2; + typedef struct br_object_dispatch { void (*__reserved0)(br_object*); void (*__reserved1)(br_object*); @@ -1639,7 +1740,7 @@ typedef struct br_object_dispatch { typedef struct br_geometry_stored_dispatch br_geometry_stored_dispatch; typedef struct br_geometry_stored { - br_geometry_stored_dispatch *dispatch; + br_geometry_stored_dispatch* dispatch; } br_geometry_stored; typedef struct br_renderer_state_stored_dispatch { @@ -1663,12 +1764,12 @@ typedef struct br_renderer_state_stored_dispatch { } br_renderer_state_stored_dispatch; typedef struct br_renderer_state_stored { - br_renderer_state_stored_dispatch *dispatch; + br_renderer_state_stored_dispatch* dispatch; } br_renderer_state_stored; typedef struct br_buffer_stored_dispatch br_buffer_stored_dispatch; typedef struct br_buffer_stored { - br_buffer_stored_dispatch *dispatch; + br_buffer_stored_dispatch* dispatch; } br_buffer_stored; typedef struct br_device_pixelmap_dispatch { @@ -1851,19 +1952,19 @@ typedef struct br_datafile br_datafile; typedef struct br_file_struct_member { br_uint_16 type; br_uint_32 offset; - char *name; - void *extra; + char* name; + void* extra; } br_file_struct_member; typedef struct br_file_struct { - char *name; + char* name; br_uint_32 nmembers; - br_file_struct_member *members; + br_file_struct_member* members; int mem_size; } br_file_struct; typedef struct br_file_primitives { - char *identifier; + char* identifier; int (*skip)(br_datafile*, br_uint_32); int (*chunk_write)(br_datafile*, br_uint_32, br_uint_32); int (*chunk_read)(br_datafile*, br_uint_32*); @@ -1889,22 +1990,22 @@ typedef struct br_chunks_table_entry { typedef struct br_chunks_table { int nentries; - br_chunks_table_entry *entries; + br_chunks_table_entry* entries; } br_chunks_table; typedef struct br_file_enum_member { int value; - char *name; + char* name; } br_file_enum_member; typedef struct br_file_enum { br_uint_32 nmembers; - br_file_enum_member *members; + br_file_enum_member* members; } br_file_enum; typedef struct br_device_clut_dispatch br_device_clut_dispatch; typedef struct br_device_clut { - br_device_clut_dispatch *dispatch; + br_device_clut_dispatch* dispatch; } br_device_clut; typedef struct br_device_clut_dispatch { @@ -1931,39 +2032,6 @@ typedef struct br_device_clut_dispatch { br_error (*_entryQueryMany)(br_device_clut*, br_colour*, br_int_32, br_int_32); } br_device_clut_dispatch; -typedef struct br_image_section { - char *name; - void *base; - br_size_t mem_offset; - br_size_t mem_size; - br_uint_32 data_offset; - br_uint_32 data_size; -} br_image_section; - -typedef struct br_image br_image; -typedef struct br_image { - br_node node; - char *identifier; - br_int_32 type; - br_int_32 ref_count; - br_uint_32 ordinal_base; - br_uint_32 n_functions; - void **functions; - br_uint_32 n_names; - char **names; - br_uint_16 *name_ordinals; - br_uint_16 n_imports; - br_image **imports; - br_uint_16 n_sections; - br_image_section *sections; - void *type_pointer; -} br_image; - -typedef struct br_open_device { - br_device *dev; - br_image *image; -} br_open_device; - typedef struct br_geometry_dispatch { void (*__reserved0)(br_object*); void (*__reserved1)(br_object*); @@ -1986,7 +2054,7 @@ typedef struct br_geometry_dispatch { typedef struct br_geometry_lighting_dispatch br_geometry_lighting_dispatch; typedef struct br_geometry_lighting { - br_geometry_lighting_dispatch *dispatch; + br_geometry_lighting_dispatch* dispatch; } br_geometry_lighting; typedef struct br_geometry_lighting_dispatch { @@ -2015,8 +2083,8 @@ typedef struct br_v1db_enable { br_int_32 max; br_int_32 count; br_int_32 type; - char *name; - br_actor **enabled; + char* name; + br_actor** enabled; } br_v1db_enable; typedef struct br_v1db_state { @@ -2024,19 +2092,19 @@ typedef struct br_v1db_state { br_boolean zs_active; br_boolean zb_active; br_int_32 rendering; - br_renderer *renderer; - br_renderer *query_renderer; - br_geometry *format_model; - br_geometry *format_buckets; - br_geometry_lighting *format_lighting; + br_renderer* renderer; + br_renderer* query_renderer; + br_geometry* format_model; + br_geometry* format_buckets; + br_geometry_lighting* format_lighting; br_matrix4 model_to_screen; br_matrix34 model_to_view; br_boolean model_to_screen_valid; br_uint_32 ttype; - br_actor *render_root; + br_actor* render_root; struct { br_matrix34 m; - br_actor *a; + br_actor* a; br_uint_8 transform_type; }; br_v1db_enable enabled_lights; @@ -2044,27 +2112,27 @@ typedef struct br_v1db_state { br_v1db_enable enabled_horizon_planes; br_int_32 max_light; br_int_32 max_clip; - br_actor *enabled_environment; + br_actor* enabled_environment; br_registry reg_models; br_registry reg_materials; br_registry reg_textures; br_registry reg_tables; - void *res; - br_model *default_model; - br_material *default_material; - void *default_render_data; - br_order_table *default_order_table; - br_order_table *primary_order_table; - br_order_table *order_table_list; + void* res; + br_model* default_model; + br_material* default_material; + void* default_render_data; + br_order_table* default_order_table; + br_order_table* primary_order_table; + br_order_table* order_table_list; br_primitive_heap heap; - br_primitive_cbfn *primitive_call; - br_renderbounds_cbfn *bounds_call; + br_primitive_cbfn* primitive_call; + br_renderbounds_cbfn* bounds_call; br_vector2 origin; br_scalar vp_ox; br_scalar vp_oy; br_scalar vp_width; br_scalar vp_height; - br_pixelmap *colour_buffer; + br_pixelmap* colour_buffer; } br_v1db_state; typedef struct br_renderer_facility_dispatch { @@ -2101,7 +2169,7 @@ typedef struct br_renderer_facility_dispatch { typedef struct br_output_facility_dispatch br_output_facility_dispatch; typedef struct br_output_facility { - br_output_facility_dispatch *dispatch; + br_output_facility_dispatch* dispatch; } br_output_facility; typedef struct br_output_facility_dispatch { @@ -2140,7 +2208,7 @@ typedef struct br_output_facility_dispatch { typedef struct br_primitive_state_dispatch br_primitive_state_dispatch; typedef struct br_primitive_state { - br_primitive_state_dispatch *dispatch; + br_primitive_state_dispatch* dispatch; } br_primitive_state; typedef struct brp_block { @@ -2220,13 +2288,12 @@ typedef struct br_primitive_library_dispatch { } br_primitive_library_dispatch; typedef struct br_file { - void *raw_file; + void* raw_file; br_boolean writing; int mode; char name[1]; } br_file; - typedef enum br_lexer_token_id { T_EOF = 0, T_ERROR = 1, @@ -2273,12 +2340,12 @@ typedef void br_lexer_getchar_cbfn(br_lexer_source*); typedef struct br_lexer br_lexer; typedef void br_lexer_error_cbfn(br_lexer*, char*); typedef struct br_lexer_source { - br_lexer_source *prev; - char *name; + br_lexer_source* prev; + char* name; br_int_32 line; br_int_32 next; - br_lexer_getchar_cbfn *getchar; - void *ptr; + br_lexer_getchar_cbfn* getchar; + void* ptr; } br_lexer_source; typedef struct br_lexer_token { @@ -2286,57 +2353,56 @@ typedef struct br_lexer_token { struct { br_int_32 integer; float real; - char *string; + char* string; }; } br_lexer_token; typedef struct br_lexer_keyword { - char *name; + char* name; br_int_32 id; } br_lexer_keyword; typedef struct br_lexer { - br_lexer_source *source; + br_lexer_source* source; br_lexer_token current; - br_lexer_keyword *keywords; + br_lexer_keyword* keywords; br_int_32 nkeywords; char eol_comment; void (*advance)(br_lexer*); - br_putline_cbfn *putline; - void *putline_arg; - char *string_buffer; + br_putline_cbfn* putline; + void* putline_arg; + char* string_buffer; br_int_32 string_buffer_size; - br_lexer_error_cbfn *error; + br_lexer_error_cbfn* error; } br_lexer; typedef br_error br_tv_custom_query_cbfn(br_uint_32*, void**, br_size_t*, void*, br_tv_template_entry*); typedef br_error br_tv_custom_set_cbfn(void*, br_uint_32*, br_tv_template_entry*); typedef br_size_t br_tv_custom_extra_size_cbfn(void*, br_tv_template_entry*); typedef struct br_tv_custom { - br_tv_custom_query_cbfn *query; - br_tv_custom_set_cbfn *set; - br_tv_custom_extra_size_cbfn *extra_size; + br_tv_custom_query_cbfn* query; + br_tv_custom_set_cbfn* set; + br_tv_custom_extra_size_cbfn* extra_size; } br_tv_custom; -typedef struct br_token_entry { - br_node node; - char *identifier; - br_int_32 type; - br_token token; - br_int_32 base_length; +typedef struct br_token_entry { // size: 24 + br_node node; // @0 + char* identifier; // @8 + br_int_32 type; // @12 + br_token token; // @16 + br_int_32 base_length; // @20 } br_token_entry; - typedef struct br_exception_handler br_exception_handler; typedef struct br_exception_handler { - br_exception_handler *prev; + br_exception_handler* prev; jmp_buf context; } br_exception_handler; typedef struct br_pixelmap_state { - void *res; - br_tv_template *device_pixelmap_template; - br_tv_template *pixelmap_match_template; + void* res; + br_tv_template* device_pixelmap_template; + br_tv_template* pixelmap_match_template; } br_pixelmap_state; typedef struct pm_type_info { @@ -2352,7 +2418,7 @@ typedef struct match_tokens { br_int_32 pixel_bits; br_int_32 width; br_int_32 height; - br_object *renderer; + br_object* renderer; } match_tokens; typedef struct host_info { @@ -2397,7 +2463,7 @@ typedef struct host_regs { br_uint_16 cs; br_uint_16 sp; br_uint_16 ss; - }a; + } a; struct { br_uint_16 di; br_uint_16 _pad0; @@ -2424,7 +2490,7 @@ typedef struct host_regs { br_uint_16 cs; br_uint_16 sp; br_uint_16 ss; - }b; + } b; struct { br_uint_32 _pad0[4]; br_uint_8 bl; @@ -2443,23 +2509,23 @@ typedef struct host_regs { br_uint_8 ah; br_uint_8 _pad7; br_uint_8 _pad8; - }c; + } c; } host_regs; typedef struct ldt { - unsigned long limit_0: 10; - unsigned long base_0: 10; - unsigned long base_1: 8; - unsigned long type: 4; - unsigned long application: 1; - unsigned long dpl: 2; - unsigned long present: 1; - unsigned long limit_1: 4; - unsigned long system: 1; - unsigned long reserved: 1; - unsigned long use32: 1; - unsigned long granularity: 1; - unsigned long base_2: 8; + unsigned long limit_0 : 10; + unsigned long base_0 : 10; + unsigned long base_1 : 8; + unsigned long type : 4; + unsigned long application : 1; + unsigned long dpl : 2; + unsigned long present : 1; + unsigned long limit_1 : 4; + unsigned long system : 1; + unsigned long reserved : 1; + unsigned long use32 : 1; + unsigned long granularity : 1; + unsigned long base_2 : 8; } ldt; typedef struct msdos_header { @@ -2544,16 +2610,18 @@ typedef struct section_header { br_uint_32 flags; } section_header; -typedef struct resource_header { - br_simple_node node; - br_simple_list children; - br_uint_8 size_l; - br_uint_8 size_m; - br_uint_8 size_h; - br_uint_8 class; - void *magic_ptr; - int magic_num; +#pragma pack(push, 1) +typedef struct resource_header { // size: 24 + br_simple_node node; // @0 + br_simple_list children; // @8 + br_uint_8 size_l; // @12 + br_uint_8 size_m; // @13 + br_uint_8 size_h; // @14 + br_uint_8 class; // @15 + void* magic_ptr; // @16 + br_uint_32 magic_num; // @20 } resource_header; +#pragma pack(pop) typedef struct host_real_memory { br_uint_32 pm_off; @@ -2574,19 +2642,19 @@ typedef struct object_list { typedef struct object_list_entry { br_simple_node n; - br_object *h; + br_object* h; } object_list_entry; typedef struct token_match { - br_token_value *original; - br_token_value *query; + br_token_value* original; + br_token_value* query; br_int_32 n; - void *extra; + void* extra; br_size_t extra_size; } token_match; typedef struct token_type { - char *identifier; + char* identifier; br_token type; int length; } token_type; @@ -2627,7 +2695,7 @@ typedef struct order_info { typedef struct transform_type { br_uint_32 id; - br_file_struct *fs; + br_file_struct* fs; } transform_type; typedef enum dosio_event_type { @@ -2665,7 +2733,7 @@ typedef struct dosio_event_queue { } dosio_event_queue; typedef struct pm_temp_edge { - struct pm_temp_edge *next; + struct pm_temp_edge* next; br_uint_16 first; br_uint_16 last; char other; @@ -2690,13 +2758,13 @@ typedef struct v11face { } DR_FACE, v11face; typedef struct v11group { - void *stored; - DR_FACE *faces; - br_colour *face_colours; - br_uint_16 *face_user; - DR_VERTEX *vertices; - br_colour *vertex_colours; - br_uint_16 *vertex_user; + void* stored; + DR_FACE* faces; + br_colour* face_colours; + br_uint_16* face_user; + DR_VERTEX* vertices; + br_colour* vertex_colours; + br_uint_16* vertex_user; br_uint_16 nfaces; br_uint_16 nvertices; br_uint_16 nedges; @@ -2707,7 +2775,7 @@ typedef struct v11model { br_uint_32 flags; br_uint_16 ngroups; br_vector3 pivot; - v11group *groups; + v11group* groups; } v11model; #endif diff --git a/src/DETHRACE/dr_types.h b/src/DETHRACE/dr_types.h index 765ecf90..093406c6 100644 --- a/src/DETHRACE/dr_types.h +++ b/src/DETHRACE/dr_types.h @@ -3,9 +3,9 @@ #include "br_types.h" #include -#include #include #include +#include /* typedef char * va_list[1]; @@ -27,22 +27,22 @@ typedef unsigned int W32; typedef unsigned short W16; typedef long LONG; typedef unsigned long DWORD; -typedef BYTE * PBYTE; -typedef char * PSTR; -typedef WORD * PWORD; -typedef unsigned short * PSHORT; -typedef LONG * PLONG; -typedef void * PVOID; -typedef BYTE * LPBYTE; -typedef BYTE * LPSTR; -typedef WORD * LPWORD; -typedef W32 * LPW32; -typedef LONG * LPLONG; -typedef void * LPVOID; -typedef BYTE * HPBYTE; -typedef BYTE * HPSTR; -typedef LONG * HPLONG; -typedef void * HPVOID; +typedef BYTE* PBYTE; +typedef char* PSTR; +typedef WORD* PWORD; +typedef unsigned short* PSHORT; +typedef LONG* PLONG; +typedef void* PVOID; +typedef BYTE* LPBYTE; +typedef BYTE* LPSTR; +typedef WORD* LPWORD; +typedef W32* LPW32; +typedef LONG* LPLONG; +typedef void* LPVOID; +typedef BYTE* HPBYTE; +typedef BYTE* HPSTR; +typedef LONG* HPLONG; +typedef void* HPVOID; typedef unsigned int HANDLE; typedef struct _tagRMI_REGS _RMI_REGS; typedef struct _tagBREGS _HMI_BREGS; @@ -71,7 +71,7 @@ typedef double tF64; typedef int16_t tX88; typedef int32_t tX1616; typedef tU8 tNet_message_type; -typedef char * tS3_sound_source_ptr; +typedef char* tS3_sound_source_ptr; typedef int tS3_sound_tag; typedef struct tCar_spec_struct tCar_spec; typedef struct tPath_node_struct tPath_node; @@ -85,19 +85,19 @@ typedef int tS3_effect_tag; typedef long tS3_priority; typedef long tS3_pitch; typedef long tS3_speed; -typedef char * tS3_outlet_ptr; -typedef void * tPipe_reset_proc(); +typedef char* tS3_outlet_ptr; +typedef void* tPipe_reset_proc(); typedef struct tPowerup tPowerup; -typedef int * tGot_proc(tPowerup*, tCar_spec*); -typedef void * tLose_proc(tPowerup*, tCar_spec*); -typedef void * tPeriodic_proc(tPowerup*, tU32); +typedef int* tGot_proc(tPowerup*, tCar_spec*); +typedef void* tLose_proc(tPowerup*, tCar_spec*); +typedef void* tPeriodic_proc(tPowerup*, tU32); typedef char tPath_name[256]; -typedef struct tFlic_descriptor * tFlic_descriptor_ptr; -typedef struct exception_struct * tException_list; +typedef struct tFlic_descriptor* tFlic_descriptor_ptr; +typedef struct exception_struct* tException_list; typedef struct exception_struct tException_node; typedef int tKey_array[123]; typedef tS32 tJoy_array[8]; -typedef void * tPMFM2CB(br_material*); +typedef void* tPMFM2CB(br_material*); typedef struct v11face DR_FACE; typedef struct fmt_vertex DR_VERTEX; @@ -489,7 +489,7 @@ typedef void tS3_sample_filter(tS3_effect_tag, tS3_sound_tag); // Make gcc happy typedef struct exception_ { int type; - char *name; + char* name; double arg1; double arg2; double retval; @@ -639,8 +639,8 @@ typedef struct _tagIPX_ELEMENT { USHORT wOffset; _IPX_HEADER sHeader; _IPX_ECB sECB; - _IPX_ECB *pECB; - _IPX_HEADER *pIPXHeader; + _IPX_ECB* pECB; + _IPX_HEADER* pIPXHeader; PSTR pHeader; USHORT wHSize; } _IPX_ELEMENT; @@ -715,7 +715,7 @@ typedef struct _tagNETBIOS_ELEMENT { USHORT wFlags; USHORT wOffset; _NETBIOS_NCB sNCB; - _NETBIOS_NCB *pNCB; + _NETBIOS_NCB* pNCB; PSTR pHeader; USHORT wHSize; } _NETBIOS_ELEMENT; @@ -749,12 +749,12 @@ typedef struct tTrack_spec { br_scalar column_size_z; br_scalar origin_x; br_scalar origin_z; - br_actor *the_actor; - br_actor ***columns; - br_actor ***lollipops; - br_actor ***blends; + br_actor* the_actor; + br_actor*** columns; + br_actor*** lollipops; + br_actor*** blends; int ampersand_digits; - br_actor **non_car_list; + br_actor** non_car_list; } tTrack_spec; typedef struct tCrush_neighbour { @@ -769,7 +769,7 @@ typedef struct tCrush_point_spec { br_vector3 limits_pos; br_vector3 softness_neg; br_vector3 softness_pos; - tCrush_neighbour *neighbours; + tCrush_neighbour* neighbours; } tCrush_point_spec; typedef struct tCrush_data { @@ -781,7 +781,7 @@ typedef struct tCrush_data { float limit_deviant; float split_chance; br_scalar min_y_fold_down; - tCrush_point_spec *crush_points; + tCrush_point_spec* crush_points; } tCrush_data; typedef struct tSpecial_volume { @@ -798,7 +798,7 @@ typedef struct tSpecial_volume { int entry_noise; int exit_noise; int engine_noise_index; - br_material *screen_material; + br_material* screen_material; int material_modifier_index; } tSpecial_volume; @@ -809,20 +809,20 @@ typedef struct tReduced_matrix { } tReduced_matrix; typedef struct tCar_controls { - int joystick_acc: 8; - int joystick_dec: 8; - unsigned int left: 1; - unsigned int right: 1; - unsigned int acc: 1; - unsigned int dec: 1; - unsigned int brake: 1; - unsigned int up: 1; - unsigned int down: 1; - unsigned int holdw: 1; - unsigned int backwards: 1; - unsigned int change_up: 1; - unsigned int change_down: 1; - unsigned int horn: 1; + int joystick_acc : 8; + int joystick_dec : 8; + unsigned int left : 1; + unsigned int right : 1; + unsigned int acc : 1; + unsigned int dec : 1; + unsigned int brake : 1; + unsigned int up : 1; + unsigned int down : 1; + unsigned int holdw : 1; + unsigned int backwards : 1; + unsigned int change_up : 1; + unsigned int change_down : 1; + unsigned int horn : 1; } tCar_controls; typedef struct tNet_message_mechanics_info { @@ -853,7 +853,7 @@ typedef struct tDamage_unit { int last_level; int smoke_last_level; int periods[5]; - br_pixelmap *images; + br_pixelmap* images; } tDamage_unit; typedef struct tDamage_condition { @@ -876,7 +876,7 @@ typedef struct tDamage_clause { typedef struct tDamage_program { int clause_count; - tDamage_clause *clauses; + tDamage_clause* clauses; } tDamage_program; typedef struct tHeadup_slot { @@ -894,7 +894,7 @@ typedef struct tHeadup_slot { typedef struct tPart_info { char part_name[14]; - tU8 *data_ptr; + tU8* data_ptr; tU32 data_length; int rank_required; int prices[3]; @@ -906,10 +906,10 @@ typedef struct tParts_spec { } tParts_spec; typedef struct tCar_actor { - br_actor *actor; + br_actor* actor; br_scalar min_distance_squared; tCrush_data crush_data; - br_vertex *undamaged_vertices; + br_vertex* undamaged_vertices; } tCar_actor; typedef struct tJoystick { @@ -933,7 +933,7 @@ typedef struct tCar_spec_struct { int index; int disabled; tDriver driver; - br_actor *car_master_actor; + br_actor* car_master_actor; br_scalar min_torque_squared; br_scalar break_off_radians_squared; br_vector3 v; @@ -961,15 +961,15 @@ typedef struct tCar_spec_struct { br_matrix34 last_box_inv_mat; br_bounds last_box; int doing_nothing_flag; - tSpecial_volume *last_special_volume; - tSpecial_volume *auto_special_volume; + tSpecial_volume* last_special_volume; + tSpecial_volume* auto_special_volume; int frame_collision_flag; int collision_flag; int max_shrapnel_material; br_vector3 direction; float speed; tU16 car_ID; - br_material *shrapnel_material[3]; + br_material* shrapnel_material[3]; br_bounds bounds_world_space; tBounds_type bounds_ws_type; tU16 fire_vertex[12]; @@ -980,23 +980,23 @@ typedef struct tCar_spec_struct { tNet_message_mechanics_info message; tU32 last_car_car_collision; br_scalar dt; - struct tCar_spec_struct *who_last_hit_me; + struct tCar_spec_struct* who_last_hit_me; char name[32]; char driver_name[32]; char grid_icon_names[3][14]; - tS8 *cockpit_images[3]; - br_pixelmap *prat_cam_left; - br_pixelmap *prat_cam_top; - br_pixelmap *prat_cam_right; - br_pixelmap *prat_cam_bottom; - br_pixelmap *prat_cam_dummy; - br_pixelmap *speedo_image[2]; - br_pixelmap *tacho_image[2]; - br_pixelmap *damage_background; - br_pixelmap *lhands_images[7]; - br_pixelmap *rhands_images[7]; - br_pixelmap *grid_icon_image; - br_pixelmap *gears_image; + tS8* cockpit_images[3]; + br_pixelmap* prat_cam_left; + br_pixelmap* prat_cam_top; + br_pixelmap* prat_cam_right; + br_pixelmap* prat_cam_bottom; + br_pixelmap* prat_cam_dummy; + br_pixelmap* speedo_image[2]; + br_pixelmap* tacho_image[2]; + br_pixelmap* damage_background; + br_pixelmap* lhands_images[7]; + br_pixelmap* rhands_images[7]; + br_pixelmap* grid_icon_image; + br_pixelmap* gears_image; int fg_index; int underwater_ability; int invulnerable; @@ -1108,8 +1108,8 @@ typedef struct tCar_spec_struct { tParts_spec power_ups[3]; int car_actor_pipe_ref; tCar_actor car_model_actors[5]; - br_material *screen_material; - br_material *screen_material_source; + br_material* screen_material; + br_material* screen_material_source; br_matrix34 last_safe_positions[5]; int wheel_slip; br_scalar damping; @@ -1142,7 +1142,7 @@ typedef struct tCar_spec_struct { tJoystick joystick; int pedals_xy; int number_of_wheels_on_ground; - br_actor *wheel_actors[6]; + br_actor* wheel_actors[6]; float wheel_rot_pos[4]; br_scalar wheel_dam_offset[4]; br_scalar damage_magnitude_accumulator; @@ -1168,8 +1168,8 @@ typedef struct tCar_spec_struct { float last_col_prop_z; tU32 time_last_hit; tU32 time_last_victim; - struct tCar_spec_struct *last_hit_by; - struct tCar_spec_struct *last_culprit; + struct tCar_spec_struct* last_hit_by; + struct tCar_spec_struct* last_culprit; int no_of_processes_recording_my_trail; tPursuee_trail my_trail; unsigned int grudge_raised_recently; @@ -1181,10 +1181,10 @@ typedef struct tCar_spec_struct { tU32 end_trans_damage_effect; int false_key_left; int false_key_right; - struct tCar_spec_struct *last_person_to_hit_us; - struct tCar_spec_struct *last_person_we_hit; + struct tCar_spec_struct* last_person_to_hit_us; + struct tCar_spec_struct* last_person_we_hit; br_vector3 engine_pos; - br_model *last_wheel_models[4]; + br_model* last_wheel_models[4]; int last_wheel_faces[4]; tU32 shadow_intersection_flags; tU32 last_bounce; @@ -1240,7 +1240,7 @@ typedef struct tPath_section_struct { } tPath_section; typedef struct tPursue_car_data { - tCar_spec *pursuee; + tCar_spec* pursuee; tU32 time_of_next_visibility_check; tU32 start_backup_time; tU32 time_last_twatted_em; @@ -1264,12 +1264,12 @@ typedef struct tFollow_path_data { tS16 section_no; tS16 first_section_no; tS16 last_struggle_section; - unsigned int number_of_struggles: 8; - unsigned int has_moved_during_this_task: 1; - unsigned int made_it: 1; - unsigned int cheating: 1; - unsigned int cornering: 1; - unsigned int left_not_right: 1; + unsigned int number_of_struggles : 8; + unsigned int has_moved_during_this_task : 1; + unsigned int made_it : 1; + unsigned int cheating : 1; + unsigned int cornering : 1; + unsigned int left_not_right : 1; unsigned int off_path_toggle; unsigned int moving_to_intersect; br_vector2 turning_cent; @@ -1282,7 +1282,7 @@ typedef struct tFollow_path_data { typedef struct tLevitate_data { br_scalar initial_y; tU32 time_started; - unsigned int waiting_to_levitate: 1; + unsigned int waiting_to_levitate : 1; } tLevitate_data; typedef struct tRun_away_data { @@ -1297,7 +1297,7 @@ typedef struct tRoute_section { typedef struct tOpponent_spec { int index; tOpponent_objective_type current_objective; - tCar_spec *car_spec; + tCar_spec* car_spec; float nastiness; br_scalar distance_to_camera; br_scalar distance_from_home; @@ -1318,18 +1318,18 @@ typedef struct tOpponent_spec { tS16 players_section_when_last_calced_full_path; int nnext_sections; tRoute_section next_sections[10]; - unsigned int new_objective_required: 1; - unsigned int finished_for_this_race: 1; - unsigned int knackeredness_detected: 1; - unsigned int physics_me: 1; - unsigned int pursue_from_start: 1; - unsigned int cheating: 1; - unsigned int last_cheating_value: 1; - unsigned int pursuing_player_before_freeze: 1; - unsigned int has_moved_at_some_point: 1; - unsigned int player_in_view_now: 1; - unsigned int acknowledged_piv: 1; - unsigned int murder_reported: 1; + unsigned int new_objective_required : 1; + unsigned int finished_for_this_race : 1; + unsigned int knackeredness_detected : 1; + unsigned int physics_me : 1; + unsigned int pursue_from_start : 1; + unsigned int cheating : 1; + unsigned int last_cheating_value : 1; + unsigned int pursuing_player_before_freeze : 1; + unsigned int has_moved_at_some_point : 1; + unsigned int player_in_view_now : 1; + unsigned int acknowledged_piv : 1; + unsigned int murder_reported : 1; tComplete_race_data complete_race_data; tFollow_path_data follow_path_data; tPursue_car_data pursue_car_data; @@ -1347,12 +1347,12 @@ typedef struct tIntelligent_vehicles { br_vector3 cop_start_vectors[10]; tOpponent_spec opponents[5]; tOpponent_spec cops[10]; - tPath_node *path_nodes; - tPath_section *path_sections; + tPath_node* path_nodes; + tPath_section* path_sections; } tIntelligent_vehicles; typedef struct tBounds { - br_matrix34 *mat; + br_matrix34* mat; br_bounds original_bounds; br_vector3 box_centre; br_scalar radius; @@ -1360,9 +1360,9 @@ typedef struct tBounds { } tBounds; typedef struct tFace_ref { - br_material *material; + br_material* material; br_vector3 v[3]; - br_vector2 *map[3]; + br_vector2* map[3]; br_vector3 normal; int flags; br_scalar d; @@ -1395,7 +1395,7 @@ typedef struct tNet_game_player_info { int games_score; int last_score_index; br_matrix34 initial_position; - tCar_spec *car; + tCar_spec* car; } tNet_game_player_info; typedef struct tNet_game_options { @@ -1761,19 +1761,19 @@ typedef struct tPowerup { tU32 duration; tU32 lose_time; tU16 group_inclusion; - br_pixelmap *icon; + br_pixelmap* icon; int fizzle_type; int number_of_float_params; int number_of_integer_params; - int *integer_params; + int* integer_params; int current_value; int prat_cam_event; tNet_powerup_type net_type; - tGot_proc *got_proc; - tLose_proc *lose_proc; - tPeriodic_proc *periodic_proc; - float *float_params; - tCar_spec *car; + tGot_proc* got_proc; + tLose_proc* lose_proc; + tPeriodic_proc* periodic_proc; + float* float_params; + tCar_spec* car; char message[64]; } tPowerup; @@ -1781,7 +1781,7 @@ typedef struct tDepth_effect { tDepth_effect_type type; int start; int end; - br_pixelmap *sky_texture; + br_pixelmap* sky_texture; } tDepth_effect; typedef struct tPlane_spec { @@ -1800,11 +1800,11 @@ typedef struct tMaterial_modifiers { int scrape_noise_index; br_scalar sparkiness; int smoke_type; - br_material *skid_mark_material; + br_material* skid_mark_material; } tMaterial_modifiers; typedef struct tSpecial_screen { - br_material *material; + br_material* material; br_scalar min_x; br_scalar min_z; br_scalar max_x; @@ -1831,19 +1831,19 @@ typedef struct tGraf_spec { int total_height; long black_value; int colour_index; - char *data_dir_name; - char *gfx_init_string; + char* data_dir_name; + char* gfx_init_string; int row_bytes; int phys_width; int phys_height; - void *base_addr; + void* base_addr; } tGraf_spec; typedef struct tCollision_info { int index; int disabled; tDriver driver; - br_actor *car_master_actor; + br_actor* car_master_actor; br_scalar min_torque_squared; br_scalar break_off_radians_squared; br_vector3 v; @@ -1871,15 +1871,15 @@ typedef struct tCollision_info { br_matrix34 last_box_inv_mat; br_bounds last_box; int doing_nothing_flag; - tSpecial_volume *last_special_volume; - tSpecial_volume *auto_special_volume; + tSpecial_volume* last_special_volume; + tSpecial_volume* auto_special_volume; int frame_collision_flag; int collision_flag; int max_shrapnel_material; br_vector3 direction; float speed; tU16 car_ID; - br_material *shrapnel_material[3]; + br_material* shrapnel_material[3]; br_bounds bounds_world_space; tBounds_type bounds_ws_type; tU16 fire_vertex[12]; @@ -1890,7 +1890,7 @@ typedef struct tCollision_info { tNet_message_mechanics_info message; tU32 last_car_car_collision; br_scalar dt; - tCar_spec *who_last_hit_me; + tCar_spec* who_last_hit_me; } tCollision_info; typedef struct tNon_car_spec { @@ -1908,7 +1908,7 @@ typedef struct tOpp_spec { int index; int ranking; int net_player_index; - tCar_spec *car_spec; + tCar_spec* car_spec; } tOpp_spec; typedef struct tCheckpoint { @@ -1933,7 +1933,7 @@ typedef struct tText_chunk { int x_coord; int y_coord; int line_count; - char *text[8]; + char* text[8]; } tText_chunk; typedef struct tRace_info { @@ -1952,17 +1952,17 @@ typedef struct tRace_info { tNet_starts net_starts[24]; tCheckpoint checkpoints[10]; tOpp_spec opponent_list[30]; - tU8 *scene_image_data; - tU8 *map_image_data; - tU8 *info_image_data; + tU8* scene_image_data; + tU8* map_image_data; + tU8* info_image_data; tU32 scene_image_data_length; tU32 map_image_data_length; tU32 info_image_data_length; br_vector3 initial_position; br_scalar initial_yaw; - br_pixelmap *map_image; + br_pixelmap* map_image; br_matrix34 map_transformation; - tText_chunk *text_chunks; + tText_chunk* text_chunks; tMaterial_modifiers material_modifiers[11]; } tRace_info; @@ -1976,8 +1976,8 @@ typedef struct tOpponent { char mug_shot_name[14]; char car_file_name[14]; char stolen_car_flic_name[14]; - tU8 *mug_shot_image_data; - tU8 *stolen_car_image_data; + tU8* mug_shot_image_data; + tU8* stolen_car_image_data; tU32 mug_shot_image_data_length; tU32 stolen_car_image_data_length; int car_number; @@ -1986,9 +1986,9 @@ typedef struct tOpponent { int dead; int text_chunk_count; tNet_avail network_availability; - br_pixelmap *grid_icon_image; + br_pixelmap* grid_icon_image; tOppo_psyche psyche; - tText_chunk *text_chunks; + tText_chunk* text_chunks; } tOpponent; typedef struct tProgram_state { @@ -2047,19 +2047,19 @@ typedef struct tProgram_state { tDepth_effect default_depth_effect; tDepth_effect current_depth_effect; int special_volume_count; - tSpecial_volume *special_volumes; - br_material *standard_screen; - br_material *standard_screen_dark; - br_material *standard_screen_fog; + tSpecial_volume* special_volumes; + br_material* standard_screen; + br_material* standard_screen_dark; + br_material* standard_screen_fog; int special_screens_count; - tSpecial_screen *special_screens; + tSpecial_screen* special_screens; tIntelligent_vehicles AI_vehicles; - tNon_car_spec *non_cars; + tNon_car_spec* non_cars; int num_non_car_spaces; } tProgram_state; typedef struct tDR_font { - br_pixelmap *images; + br_pixelmap* images; int file_read_once; int height; int width; @@ -2321,14 +2321,14 @@ typedef struct tRolling_letter { } tRolling_letter; typedef struct tFlic_descriptor { - char *data; - char *data_start; + char* data; + char* data_start; char file_name[32]; - tU8 *first_pixel; + tU8* first_pixel; tU32 bytes_remaining; tU32 frame_period; tU32 last_frame; - br_pixelmap *the_pixelmap; + br_pixelmap* the_pixelmap; int x_offset; int y_offset; int width; @@ -2340,7 +2340,7 @@ typedef struct tFlic_descriptor { int must_finish; int bytes_still_to_be_read; int bytes_in_buffer; - FILE *f; + FILE* f; tFlic_descriptor_ptr next; } tFlic_descriptor; @@ -2353,11 +2353,11 @@ typedef struct tBrender_storage { int max_shade_tables; int max_materials; int max_models; - br_model **models; - br_pixelmap **pixelmaps; - br_pixelmap **shade_tables; - br_material **materials; - br_pixelmap **saved_colour_maps; + br_model** models; + br_pixelmap** pixelmaps; + br_pixelmap** shade_tables; + br_material** materials; + br_pixelmap** saved_colour_maps; } tBrender_storage; typedef struct tSave_game { @@ -2395,7 +2395,7 @@ typedef struct tRadio_bastards { typedef struct exception_struct { tException_list next; - char *name; + char* name; int flags; } tException_node; @@ -2405,8 +2405,8 @@ typedef struct tPixelmap_user_data { } tPixelmap_user_data; typedef struct tMatrix_and_actor { - br_matrix34 *m; - br_actor *a; + br_matrix34* m; + br_actor* a; } tMatrix_and_actor; typedef tU16 tChunk_subject_index; @@ -2488,12 +2488,12 @@ typedef struct tReduced_pos { typedef struct tIncident_info { struct { - tCar_spec *car; + tCar_spec* car; br_vector3 impact_point; }; struct { - br_actor *ped_actor; - br_actor *murderer_actor; + br_actor* ped_actor; + br_actor* murderer_actor; }; struct { br_vector3 pos; @@ -2569,7 +2569,7 @@ typedef struct tPipe_pedestrian_data { tU16 parent; br_vector3 new_translation; float spin_period; - br_actor *parent_actor; + br_actor* parent_actor; br_vector3 offset; br_scalar jump_magnitude; } tPipe_pedestrian_data; @@ -2622,7 +2622,7 @@ typedef struct tPipe_incident_data { }; struct { tU16 ped_index; - br_actor *actor; + br_actor* actor; }; struct { br_vector3 pos; @@ -2638,7 +2638,7 @@ typedef struct tPipe_spark_data { typedef struct tPipe_shrapnel_data { br_vector3 pos; tU16 age; - br_material *material; + br_material* material; } tPipe_shrapnel_data; typedef struct tPipe_screen_shake_data { @@ -2647,7 +2647,7 @@ typedef struct tPipe_screen_shake_data { } tPipe_screen_shake_data; typedef struct tPipe_non_car_data { - br_actor *actor; + br_actor* actor; br_matrix34 mat; } tPipe_non_car_data; @@ -2688,9 +2688,9 @@ typedef struct tPipe_oil_spill_data { br_scalar grow_rate; tU32 spill_time; tU32 previous_stop_time; - tCar_spec *car; + tCar_spec* car; br_vector3 original_pos; - br_pixelmap *pixelmap; + br_pixelmap* pixelmap; } tPipe_oil_spill_data; typedef struct tPipe_groove_stop_data { @@ -2752,7 +2752,7 @@ typedef struct tPipe_session { typedef struct tCollison_data { int ref; - tCollision_info *car; + tCollision_info* car; } tCollison_data; typedef struct tSave_camera { @@ -2761,7 +2761,7 @@ typedef struct tSave_camera { br_angle yaw; } tSave_camera; -typedef void * tEdit_func(); +typedef void* tEdit_func(); typedef enum tEdit_mode { eEdit_mode_cheat = 0, @@ -2795,25 +2795,25 @@ typedef struct tCheat { typedef struct _tag_sos_evds_struct _SOS_EVDS_STRUCT; typedef struct _tag_sos_vds_struct _SOS_VDS_STRUCT; typedef struct _tag_sos_sample _SOS_SAMPLE; -typedef _SOS_SAMPLE * PSOSSAMPLE; +typedef _SOS_SAMPLE* PSOSSAMPLE; typedef struct _tagCAPABILITIES _SOS_CAPABILITIES; -typedef _SOS_CAPABILITIES * PSOSCAPABILITIES; -typedef struct _SOS_HARDWARE * PSOSHARDWARE; +typedef _SOS_CAPABILITIES* PSOSCAPABILITIES; +typedef struct _SOS_HARDWARE* PSOSHARDWARE; typedef struct _tag_sos_driver _SOS_DIGI_DRIVER; -typedef _SOS_DIGI_DRIVER * PSOSDIGIDRIVER; -typedef struct _SOS_DRV_FILEHEADER * PSOSDRVFILEHEADER; -typedef struct _SOS_DRV_DRIVERHEADER * PSOSDRVDRIVERHEADER; +typedef _SOS_DIGI_DRIVER* PSOSDIGIDRIVER; +typedef struct _SOS_DRV_FILEHEADER* PSOSDRVFILEHEADER; +typedef struct _SOS_DRV_DRIVERHEADER* PSOSDRVDRIVERHEADER; typedef struct _tag_sos_system _SOS_SYSTEM; -typedef _SOS_SYSTEM * PSOSSYSTEM; +typedef _SOS_SYSTEM* PSOSSYSTEM; typedef struct _tag_sos_det_system _SOS_DET_SYSTEM; -typedef _SOS_DET_SYSTEM * PSOSDETSYSTEM; +typedef _SOS_DET_SYSTEM* PSOSDETSYSTEM; typedef struct _tag_sos_timer_system _SOS_TIMER_SYSTEM; -typedef _SOS_TIMER_SYSTEM * PSOSTIMERSYSTEM; +typedef _SOS_TIMER_SYSTEM* PSOSTIMERSYSTEM; typedef struct SmackTag Smack; typedef struct SmackSumTag SmackSum; -typedef void * SmackTimerSetupType(); -typedef unsigned long * SmackTimerReadType(); -typedef void * SmackTimerDoneType(); +typedef void* SmackTimerSetupType(); +typedef unsigned long* SmackTimerReadType(); +typedef void* SmackTimerDoneType(); typedef struct _heapinfo _HEAPINFO; typedef struct _tag_sos_evds_struct { unsigned int region_size; @@ -2861,8 +2861,8 @@ typedef struct _tag_sos_sample { void (*pfnSampleLoop)(PSOSSAMPLE*); DWORD wSystem[16]; DWORD wUser[16]; - PSOSSAMPLE *pLink; - PSOSSAMPLE *pNext; + PSOSSAMPLE* pLink; + PSOSSAMPLE* pNext; } _SOS_SAMPLE; typedef struct _tagCAPABILITIES { @@ -2875,10 +2875,10 @@ typedef struct _tagCAPABILITIES { W32 wMixerOnBoard; W32 wMixerFlags; W32 wFlags; - short *lpPortList; - short *lpDMAList; - short *lpIRQList; - short *lpRateList; + short* lpPortList; + short* lpDMAList; + short* lpIRQList; + short* lpRateList; W32 fBackground; W32 wID; W32 wTimerID; @@ -2904,7 +2904,7 @@ typedef struct _tag_sos_driver { DWORD wDMADistance; PSTR pXFERPosition; DWORD wXFERJumpAhead; - _SOS_SAMPLE *pSampleList; + _SOS_SAMPLE* pSampleList; void (*pfnPseudoDMAFunction)(); PSTR pDMABuffer; PSTR pDMABufferEnd; @@ -2913,7 +2913,7 @@ typedef struct _tag_sos_driver { PSTR pMixingBufferEnd; DWORD wMixingBufferSize; DWORD wActiveChannels; - _SOS_SAMPLE *pSamples; + _SOS_SAMPLE* pSamples; _SOS_HARDWARE sHardware; _SOS_CAPABILITIES sCaps; LPSTR lpDriverDS; @@ -2951,7 +2951,8 @@ typedef struct _tag_sos_system { _SOS_VDS_STRUCT sVDS; _SOS_DRV_FILEHEADER sFileHeader; _SOS_DRV_DRIVERHEADER sDriverHeader; - PSTR (*pMemAllocFunction)(DWORD); + PSTR(*pMemAllocFunction) + (DWORD); void (*pMemFreeFunction)(PSTR, W32); } _SOS_SYSTEM; @@ -3040,12 +3041,11 @@ typedef struct SmackSumTag { } SmackSum; typedef struct _heapinfo { - void *_pentry; + void* _pentry; size_t _size; int _useflag; } _HEAPINFO; - typedef enum tSpec_vol_depth_effect { eSpec_dep_acid = 0, eSpec_dep_water = 1, @@ -3097,23 +3097,23 @@ typedef struct tHeadup { struct { char text[250]; int colour; - br_font *font; - }a; + br_font* font; + } a; struct { char text[250]; - tDR_font *coloured_font; - }b; + tDR_font* coloured_font; + } b; struct { - br_pixelmap *image; - }c; + br_pixelmap* image; + } c; struct { - br_pixelmap *image; + br_pixelmap* image; int offset; int shear_amount; int end_offset; tFancy_stage fancy_stage; tU32 start_time; - }d; + } d; }; } tHeadup; @@ -3194,52 +3194,33 @@ typedef struct tInterface_spec { int escape_code; int dont_save_or_load; int number_of_button_flics; - tFlicette *flicker_on_flics; - tFlicette *flicker_off_flics; - tFlicette *pushed_flics; + tFlicette* flicker_on_flics; + tFlicette* flicker_off_flics; + tFlicette* pushed_flics; int number_of_mouse_areas; - tMouse_area *mouse_areas; + tMouse_area* mouse_areas; int number_of_recopy_areas; - tRectile *recopy_areas; + tRectile* recopy_areas; } tInterface_spec; - -typedef enum view_to_screen_type { - BR_VTOS_PARALLEL = 0, - BR_VTOS_PERSPECTIVE = 1, - BR_VTOS_4X4 = 2 -} view_to_screen_type; -typedef void dev_fill_cbfn(br_device*, br_pixelmap*, br_uint_32); -typedef void dev_rectangle_copy_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16); -typedef void dev_rectangle_fill_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16, br_uint_32); -typedef void dev_dirty_rectangle_copy_cbfn(br_device*, br_pixelmap*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16); -typedef void dev_dirty_rectangle_fill_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_16, br_uint_16, br_uint_32); -typedef void dev_plot_cbfn(br_device*, br_pixelmap*, br_uint_16, br_uint_16, br_uint_32); -typedef void dev_copy_cbfn(br_device*, br_pixelmap*, br_pixelmap*); -typedef void dev_line_cbfn(br_device*, br_pixelmap*, br_int_16, br_int_16, br_int_16, br_int_16, br_uint_32); -typedef void dev_copy_bits_cbfn(br_device*, br_pixelmap*, br_int_16, br_int_16, br_uint_8*, br_uint_16, br_uint_16, br_uint_16, br_uint_16, br_uint_32); -typedef br_pixelmap* dev_double_buffer_cbfn(br_device*, br_pixelmap*, br_pixelmap*); -typedef br_pixelmap* dev_match_cbfn(br_device*, br_pixelmap*, br_uint_8); -typedef br_pixelmap* dev_clone_cbfn(br_device*, br_pixelmap*); -typedef void dev_free_cbfn(br_device*, br_pixelmap*); typedef int dr_modelpick2d_cbfn(br_model*, br_material*, br_vector3*, br_vector3*, br_scalar, int, int, int, br_vector3*, br_vector2*, void*); typedef int dr_pick3d_cbfn(br_actor*, br_model*, br_material*, br_matrix34*, br_bounds*, void*); typedef struct tFlic_spec { - char *file_name; + char* file_name; int interruptable; int queued; int frame_rate; int repeat; int x_offset; int y_offset; - tS8 *data_ptr; + tS8* data_ptr; tU32 the_size; } tFlic_spec; typedef struct tFlic_bunch { char count; - int *indexes; + int* indexes; } tFlic_bunch; typedef struct tTranslation_record { @@ -3250,7 +3231,7 @@ typedef struct tTranslation_record { int global; int every_frame; tJustification justification; - char *text; + char* text; } tTranslation_record; /* Changed due to conflict with tVehicle_type enum */ @@ -3262,7 +3243,7 @@ typedef enum tVehicle_category { } tVehicle_category; typedef struct tTransient_bm { - br_pixelmap *pixmap; + br_pixelmap* pixmap; int in_use; int x_coord; int y_coord; @@ -3300,16 +3281,15 @@ typedef struct tConcussion { } tConcussion; typedef struct tSaved_table { - br_pixelmap *original; - br_pixelmap *copy; + br_pixelmap* original; + br_pixelmap* copy; } tSaved_table; typedef struct tClip_details { - br_actor *clip; + br_actor* clip; br_scalar length; } tClip_details; - typedef enum tS3_sound_type { eS3_ST_sample = 0, eS3_ST_midi = 1, @@ -3339,23 +3319,23 @@ typedef struct tS3_channel { tS3_volume initial_volume; tS3_pitch initial_pitch; float pMax_distance_squared; - tS3_outlet *owner_outlet; - tS3_descriptor *descriptor; - tS3_channel *next; - char *type_struct_sample; - char *type_struct_midi; - char *type_struct_cda; - tS3_sound_source *sound_source_ptr; + tS3_outlet* owner_outlet; + tS3_descriptor* descriptor; + tS3_channel* next; + char* type_struct_sample; + char* type_struct_midi; + char* type_struct_cda; + tS3_sound_source* sound_source_ptr; } tS3_channel; typedef struct tS3_outlet { int id; int max_channels; int independent_pitch; - tS3_channel *channel_list; - tS3_outlet *prev; - tS3_outlet *next; - tS3_outlet_callback *callback; + tS3_channel* channel_list; + tS3_outlet* prev; + tS3_outlet* next; + tS3_outlet_callback* callback; } tS3_outlet; typedef struct tS3_descriptor { @@ -3369,24 +3349,24 @@ typedef struct tS3_descriptor { tS3_pitch max_pitch; tS3_speed min_speed; tS3_speed max_speed; - tS3_descriptor *prev; - tS3_descriptor *next; + tS3_descriptor* prev; + tS3_descriptor* next; int flags; int midi_song_handle; int special_fx; int memory_proxy; - char *sound_data; - char *filename; + char* sound_data; + char* filename; } tS3_descriptor; typedef struct tS3_sound_source { - tS3_channel *channel; + tS3_channel* channel; int brender_vector; - void *position_ptr; - void *velocity_ptr; - tS3_outlet *bound_outlet; - tS3_sound_source *prev; - tS3_sound_source *next; + void* position_ptr; + void* velocity_ptr; + tS3_outlet* bound_outlet; + tS3_sound_source* prev; + tS3_sound_source* next; int ambient; tS3_repeats ambient_repeats; int time_since_last_played; @@ -3404,8 +3384,8 @@ typedef struct tS3_sample { int rate; int resolution; int channels; - char *dataptr; - void *freeptr; + char* dataptr; + void* freeptr; } tS3_sample; typedef struct tS3_hardware_info { @@ -3419,7 +3399,6 @@ typedef struct tS3_hardware_info { int independent_pitch; } tS3_hardware_info; - typedef enum tNet_head_avail { eNet_or_otherwise = 0, eNet_only = 1, @@ -3427,16 +3406,15 @@ typedef enum tNet_head_avail { eNot_ever_ever_ever = 3 } tNet_head_avail; typedef struct tModel_pool { - br_model **model_array; + br_model** model_array; int model_count; } tModel_pool; typedef struct tHeadup_info { - char *name; + char* name; tNet_head_avail avail; } tHeadup_info; - typedef enum tTime_bonus_state { eTime_bonus_none = 0, eTime_bonus_initial_pause = 1, @@ -3472,7 +3450,7 @@ typedef struct tMin_message { } tMin_message; typedef struct tGuaranteed_message { - tNet_message *message; + tNet_message* message; tU32 send_time; tU32 next_resend_time; tU32 resend_period; @@ -3482,20 +3460,19 @@ typedef struct tGuaranteed_message { tU32 guarantee_number; } tGuaranteed_message; - typedef enum tJoin_or_host_result { eJoin_or_host_cancel = 0, eJoin_or_host_join = 1, eJoin_or_host_host = 2 } tJoin_or_host_result; typedef struct tJoinable_game { - tNet_game_details *game; + tNet_game_details* game; tU32 time; } tJoinable_game; typedef struct tOil_spill_info { - br_actor *actor; - tCar_spec *car; + br_actor* actor; + tCar_spec* car; tU32 spill_time; tU32 stop_time; br_scalar full_size; @@ -3505,7 +3482,6 @@ typedef struct tOil_spill_info { br_vector3 pos; } tOil_spill_info; - typedef enum tJoy_calib_stage { eJoy_calib_tl_1 = 0, eJoy_calib_br_1 = 1, @@ -3595,7 +3571,7 @@ typedef struct tPedestrian_action { typedef struct tPed_frame_info { br_vector2 offset; int flipped; - br_pixelmap *pixelmap; + br_pixelmap* pixelmap; } tPed_frame_info; typedef struct tPedestrian_sequence { @@ -3623,11 +3599,11 @@ typedef struct tPedestrian_data { tU16 killers_ID; br_scalar width; br_scalar height2; - tCar_spec *fate; - br_actor *actor; + tCar_spec* fate; + br_actor* actor; tPlayer_ID murderer; - tPedestrian_instruction *instruction_list; - tPedestrian_action *action_list; + tPedestrian_instruction* instruction_list; + tPedestrian_action* action_list; tU8 ref_number; tU8 active; tU8 munged; @@ -3671,14 +3647,14 @@ typedef struct tPedestrian_data { br_vector3 to_pos; br_vector3 offset; float falling_speed; - tSpecial_volume *last_special_volume; - tPedestrian_sequence *sequences; + tSpecial_volume* last_special_volume; + tPedestrian_sequence* sequences; tS3_sound_tag last_sound; - br_pixelmap *colour_map; + br_pixelmap* colour_map; } tPedestrian_data; typedef struct tPed_gib { - br_actor *actor; + br_actor* actor; br_scalar x_speed; br_scalar y_speed; int size; @@ -3692,12 +3668,12 @@ typedef struct tPed_gib { typedef struct tPed_gib_materials { int count; - br_material *materials[5]; + br_material* materials[5]; } tPed_gib_materials; typedef struct tProximity_ray { - tCar_spec *car; - tPedestrian_data *ped; + tCar_spec* car; + tPedestrian_data* ped; tU32 start_time; } tProximity_ray; @@ -3709,14 +3685,14 @@ typedef struct tPiped_registration_snapshot { } tPiped_registration_snapshot; typedef struct tHeadup_icon { - tPowerup *powerup; + tPowerup* powerup; int fizzle_stage; int fizzle_direction; tU32 fizzle_start; } tHeadup_icon; typedef struct tPrat_flic_spec { - char *data; + char* data; tU32 data_length; } tPrat_flic_spec; @@ -3740,7 +3716,6 @@ typedef struct tPrat_sequence { tPrat_flic_chunk chunks[6]; } tPrat_sequence; - typedef enum tGrid_draw { eGrid_draw_none = 0, eGrid_draw_icons_only = 1, @@ -3753,7 +3728,7 @@ typedef enum tNet_synch_mode { eNet_synch_client = 2 } tNet_synch_mode; typedef struct tWreck_info { - br_actor *actor; + br_actor* actor; br_matrix34 rotation; br_matrix34 original_matrix; int customised; @@ -3772,7 +3747,7 @@ typedef struct tRectangle { } tRectangle; typedef struct tSkid { - br_actor *actor; + br_actor* actor; br_vector3 normal; br_vector3 pos; } tSkid; @@ -3784,12 +3759,12 @@ typedef struct tSpark { br_vector3 length; br_vector3 normal; tU32 time_sync; - tCar_spec *car; + tCar_spec* car; tU8 colour; } tSpark; typedef struct tShrapnel { - br_actor *actor; + br_actor* actor; br_vector3 v; tU32 time_sync; tU32 age; @@ -3810,13 +3785,13 @@ typedef struct tSmoke { } tSmoke; typedef struct tSmoke_column { - tCar_spec *car; + tCar_spec* car; tU32 time; tU32 lifetime; tU32 count; int colour; int whiter; - br_actor *flame_actor; + br_actor* flame_actor; int frame_count[3]; br_vector3 pos; br_scalar scale_x[3]; @@ -3829,7 +3804,7 @@ typedef struct tSmoke_column { } tSmoke_column; typedef struct tSplash { - br_actor *actor; + br_actor* actor; br_vector3 v; int just_done; br_scalar size; @@ -3850,7 +3825,7 @@ typedef struct tRGB_colour { int blue; } tRGB_colour; -typedef br_material* * tPMFMCB(br_model*, tU16); +typedef br_material** tPMFMCB(br_model*, tU16); typedef enum tMatrix_mod_type { eMatrix_mod_none = 255, @@ -3934,20 +3909,20 @@ typedef enum tScale_mode { } tScale_mode; typedef struct tFunkotronic_spec { int owner; - br_material *material; + br_material* material; tFunk_trigger_mode mode; tMatrix_mod_type matrix_mod_type; tMove_mode matrix_mode; struct { struct { float period; - }a; + } a; struct { float period; br_scalar x_centre; br_scalar y_centre; float rock_angle; - }b; + } b; struct { float x_period; float y_period; @@ -3955,17 +3930,17 @@ typedef struct tFunkotronic_spec { br_scalar y_centre; float x_magnitude; float y_magnitude; - }c; + } c; struct { float x_period; float y_period; float x_magnitude; float y_magnitude; - }d; + } d; struct { float x_period; float y_period; - }e; + } e; }; tMove_mode lighting_animation_type; float lighting_animation_period; @@ -3984,22 +3959,22 @@ typedef struct tFunkotronic_spec { float period; int texture_count; int current_frame; - br_pixelmap *textures[8]; - }f; + br_pixelmap* textures[8]; + } f; struct { - tU8 *flic_data; + tU8* flic_data; tU32 flic_data_length; tFlic_descriptor flic_descriptor; - }g; + } g; }; int proximity_count; - br_vector3 *proximity_array; + br_vector3* proximity_array; } tFunkotronic_spec; typedef struct tGroovidelic_spec { int owner; int done_this_frame; - br_actor *actor; + br_actor* actor; tLollipop_mode lollipop_mode; tGroove_trigger_mode mode; tGroove_path_mode path_type; @@ -4013,13 +3988,13 @@ typedef struct tGroovidelic_spec { float y_delta; float z_delta; br_vector3 centre; - }a; + } a; struct { float period; float radius; br_vector3 centre; tGroove_axis_mode axis; - }b; + } b; }; br_vector3 object_centre; br_vector3 object_position; @@ -4031,13 +4006,13 @@ typedef struct tGroovidelic_spec { struct { float period; tGroove_axis_mode axis; - }c; + } c; struct { float period; float max_angle; float current_angle; tGroove_axis_mode axis; - }d; + } d; struct { float x_period; float y_period; @@ -4045,7 +4020,7 @@ typedef struct tGroovidelic_spec { float x_magnitude; float y_magnitude; float z_magnitude; - }e; + } e; struct { float x_period; float y_period; @@ -4053,7 +4028,7 @@ typedef struct tGroovidelic_spec { float x_magnitude; float y_magnitude; float z_magnitude; - }f; + } f; }; } tGroovidelic_spec; @@ -4328,5 +4303,4 @@ typedef struct tMem_info { unsigned int reserved[3]; } tMem_info; - #endif diff --git a/test/BRSRC13/test_brlists.c b/test/BRSRC13/test_brlists.c new file mode 100644 index 00000000..ad6c57f6 --- /dev/null +++ b/test/BRSRC13/test_brlists.c @@ -0,0 +1,42 @@ +#include "framework/unity.h" + +#include "CORE/FW/brlists.h" +#include + +void test_brlists_BrSimpleList() { + br_simple_list list; + br_simple_node one; + br_simple_node two; + br_simple_node three; + + BrSimpleNewList(&list); + TEST_ASSERT_NULL(list.head); + + BrSimpleAddHead(&list, &one); + TEST_ASSERT_EQUAL_PTR(&one, list.head); + TEST_ASSERT_NULL(list.head->next); + + //TODO: should be null? + TEST_ASSERT_EQUAL_PTR(&one, *list.head->prev); + + BrSimpleAddHead(&list, &two); + TEST_ASSERT_EQUAL_PTR(&two, list.head); + TEST_ASSERT_EQUAL_PTR(&one, list.head->next); + + //TODO: this should be "2" IMO + TEST_ASSERT_EQUAL_PTR(&one, *list.head->next->prev); + + BrSimpleAddHead(&list, &three); + TEST_ASSERT_EQUAL_PTR(&three, list.head); + TEST_ASSERT_EQUAL_PTR(&two, list.head->next); + TEST_ASSERT_EQUAL_PTR(&one, list.head->next->next); + + //TODO: this doesnt look right + //TEST_ASSERT_EQUAL_PTR(&three, *list.head->prev); + TEST_ASSERT_EQUAL_PTR(&one, *list.head->next->prev); + TEST_ASSERT_EQUAL_PTR(&one, *list.head->next->next->prev); +} + +void test_brlists_suite() { + RUN_TEST(test_brlists_BrSimpleList); +} \ No newline at end of file diff --git a/test/BRSRC13/test_fwsetup.c b/test/BRSRC13/test_fwsetup.c new file mode 100644 index 00000000..35b9410c --- /dev/null +++ b/test/BRSRC13/test_fwsetup.c @@ -0,0 +1,12 @@ +#include "framework/unity.h" + +#include "CORE/FW/fwsetup.h" +#include + +void test_fwsetup_BrFwBegin() { + TEST_ASSERT_TRUE(fw.active); +} + +void test_fwsetup_suite() { + RUN_TEST(test_fwsetup_BrFwBegin); +} \ No newline at end of file diff --git a/test/BRSRC13/test_resource.c b/test/BRSRC13/test_resource.c new file mode 100644 index 00000000..02cbe3f1 --- /dev/null +++ b/test/BRSRC13/test_resource.c @@ -0,0 +1,29 @@ +#include "framework/unity.h" + +#include "CORE/FW/resource.h" +#include + +void test_resource_BrResAllocate() { + void* parent; + void* child; + resource_header* parent_header; + resource_header* child_header; + + parent = BrResAllocate(NULL, 0, BR_MEMORY_ANCHOR); + TEST_ASSERT_NOT_NULL(parent); + parent_header = (resource_header*)(((char*)parent) - sizeof(resource_header) - 4); + TEST_ASSERT_EQUAL_UINT32(0xDEADBEEF, parent_header->magic_num); + TEST_ASSERT_NULL(parent_header->children.head); + TEST_ASSERT_EQUAL_CHAR(BR_MEMORY_ANCHOR, parent_header->class); + TEST_ASSERT_EQUAL_PTR(parent_header, parent_header->magic_ptr); + + child = BrResAllocate(parent, 0, BR_MEMORY_ANCHOR); + child_header = (resource_header*)(((char*)child) - sizeof(resource_header) - 4); + TEST_ASSERT_EQUAL_PTR(&child_header->node, parent_header->children.head); + TEST_ASSERT_NULL(parent_header->children.head->next); + // ? TEST_ASSERT_NULL(parent_header->children.head->prev); +} + +void test_resource_suite() { + RUN_TEST(test_resource_BrResAllocate); +} \ No newline at end of file diff --git a/test/BRSRC13/test_resreg.c b/test/BRSRC13/test_resreg.c new file mode 100644 index 00000000..c6f98f69 --- /dev/null +++ b/test/BRSRC13/test_resreg.c @@ -0,0 +1,4 @@ +#include "framework/unity.h" + +#include "CORE/FW/resource.h" +#include diff --git a/test/main.c b/test/main.c index 69a31e2a..14bd6c6e 100644 --- a/test/main.c +++ b/test/main.c @@ -1,11 +1,15 @@ #include -#include #include +#include #include "framework/unity.h" +#include "CORE/V1DB/dbsetup.h" + #include "common/globvars.h" +#define debug(format_, ...) fprintf(stderr, format_, __VA_ARGS__) + extern void test_utility_suite(); extern void test_loading_suite(); extern void test_controls_suite(); @@ -13,18 +17,32 @@ extern void test_input_suite(); extern void test_errors_suite(); extern void test_dossys_suite(); +extern void test_brlists_suite(); +extern void test_fwsetup_suite(); +extern void test_resource_suite(); + void setUp(void) { strcpy(gApplication_path, "/tmp"); strcpy(gDir_separator, "/"); + + BrV1dbBeginWrapper_Float(); } void tearDown(void) { - } -int main(int pArgc, char **pArgv) { +int main(int pArgc, char** pArgv) { + + debug("hi %d\n", 3); + UNITY_BEGIN(); + // BRSRC13 + test_brlists_suite(); + test_fwsetup_suite(); + test_resource_suite(); + + // DETHRACE test_utility_suite(); test_loading_suite(); test_controls_suite(); diff --git a/tools/watcom-codegen/codegen.py b/tools/watcom-codegen/codegen.py index 86d5fcd9..28886e97 100755 --- a/tools/watcom-codegen/codegen.py +++ b/tools/watcom-codegen/codegen.py @@ -178,22 +178,6 @@ def read_file(): #os.exit(1) -# def process_type_names(): -# for m in modules: -# for type_idx in m['types']: -# t = m['types'][type_idx] -# if t['type'] == 'NAME': - -# target_type = t['type_idx'] -# if m['types'][target_type]['type'] != 'NAME': -# #print m['types'][target_type]['type'], t['value'], t['name'] -# m['types'][target_type]['type_name'] = t['value'] -# else: -# pass -# #print (t) -# #print (m['types'][target_type]) -# #print () - def process_global_var(): glob = {} line = read_line() @@ -305,6 +289,7 @@ def process_type(current_module, type_name): # number of fields = 000D size = 00000034 match = re.match(FIELD_LIST_REGEX, line) nbr_fields = int(match.group(1), 16) + struct_size = int(match.group(2), 16) fields = [] for i in range(nbr_fields): line = read_line() @@ -321,7 +306,7 @@ def process_type(current_module, type_name): field['bit_size'] = int(match.group(2)) #print field fields.append(field) - return { 'size': int(match.group(2), 16), 'fields': fields } + return { 'size': struct_size, 'fields': fields } elif type_name == 'ENUM_LIST': match = re.match(ENUM_LIST_REGEX, line) nbr_fields = int(match.group(1), 16) @@ -547,6 +532,7 @@ def get_type_declaration(module, t, name): if tag_name is not None: s += ' ' + tag_name s += ' {' + s += '\t\t// size: ' + str(t['size']) first_elem = True for e in reversed(t['fields']): s += '\n' @@ -555,6 +541,7 @@ def get_type_declaration(module, t, name): if e['type'] == 'BIT_BYTE': s += ': ' + str(e['bit_size']) s += ';' + s += '\t\t// @' + str(e['offset']) first_elem = False s += '\n' + ' ' * (indent * INDENT_SPACES) + '}' return s @@ -692,23 +679,33 @@ def generate_types_header(module): if t['type'] != 'NAME': continue type_name = t['value'] - if type_name in generated_type_names: - # skip duplicates - continue - - - if type_name == 'br_value_tag': - print ('!!br_value_tag', type_name in generated_type_names) - if type_name == 'br_value': - print ('!!br_value', type_name in generated_type_names) - + cache_type_name = type_name + # get type that this name references t = module['types'][t['type_idx']] if t is None: continue - generated_type_names[type_name] = 1 + if t['type'] == 'FIELD_LIST': + if len(t['fields']) == 0: + print("skipping", type_name, "it has no fields") + continue + cache_type_name = '+' + cache_type_name + '|' + str(len(t['fields'])) + found_prefix = False + found = '' + for x in generated_type_names: + if '+' + type_name + '|' in x: + found_prefix=True + found = x + if found_prefix and cache_type_name not in generated_type_names: + print('CACHEFOUND:', found, cache_type_name) + + if cache_type_name in generated_type_names: + # skip duplicates + continue + + generated_type_names[cache_type_name] = 1 if t['type'] == 'ENUM_LIST': s = '\ntypedef enum {} {{'.format(type_name) From 53de41f556a3cd6906facc8ce5de7a78ed9cded1 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Mon, 30 Dec 2019 12:52:18 -0800 Subject: [PATCH 2/5] tests pass with *prev --- src/BRSRC13/CORE/FW/brlists.c | 8 +++-- src/BRSRC13/br_types.h | 2 +- test/BRSRC13/test_brlists.c | 56 ++++++++++++++++++++--------------- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/src/BRSRC13/CORE/FW/brlists.c b/src/BRSRC13/CORE/FW/brlists.c index d2f4ae5a..19cca364 100644 --- a/src/BRSRC13/CORE/FW/brlists.c +++ b/src/BRSRC13/CORE/FW/brlists.c @@ -1,5 +1,6 @@ #include "brlists.h" +#include #include char rscid[49]; @@ -53,10 +54,13 @@ void BrSimpleNewList(br_simple_list* list) { // Offset: 628 // Size: 76 void BrSimpleAddHead(br_simple_list* list, br_simple_node* node) { + printf("BrSimpleAddHead %p\n", &node); node->next = list->head; - node->prev = &list->head; + printf("setting me %p ->prev = %p\n", node, &list->head); + node->prev = list; if (node->next) { - node->next->prev = &node; + printf("setting %p ->prev = %p\n", node->next, node); + node->next->prev = node; } list->head = node; } diff --git a/src/BRSRC13/br_types.h b/src/BRSRC13/br_types.h index 3427cbd3..a63a78d0 100644 --- a/src/BRSRC13/br_types.h +++ b/src/BRSRC13/br_types.h @@ -1456,7 +1456,7 @@ typedef struct br_list { typedef struct br_simple_node br_simple_node; typedef struct br_simple_node { br_simple_node* next; - br_simple_node** prev; + br_simple_node* prev; } br_simple_node; typedef struct br_simple_list { diff --git a/test/BRSRC13/test_brlists.c b/test/BRSRC13/test_brlists.c index ad6c57f6..ac5e7bfa 100644 --- a/test/BRSRC13/test_brlists.c +++ b/test/BRSRC13/test_brlists.c @@ -1,40 +1,48 @@ #include "framework/unity.h" #include "CORE/FW/brlists.h" +#include #include void test_brlists_BrSimpleList() { - br_simple_list list; - br_simple_node one; - br_simple_node two; - br_simple_node three; + br_simple_list* list = calloc(1, sizeof(br_simple_list)); + br_simple_node* one = calloc(1, sizeof(br_simple_node)); + br_simple_node* two = calloc(1, sizeof(br_simple_node)); + br_simple_node* three = calloc(1, sizeof(br_simple_node)); - BrSimpleNewList(&list); - TEST_ASSERT_NULL(list.head); + printf("lisr %p, 1 %p, 2 %p, 3 %p\n", list, one, two, three); - BrSimpleAddHead(&list, &one); - TEST_ASSERT_EQUAL_PTR(&one, list.head); - TEST_ASSERT_NULL(list.head->next); + BrSimpleNewList(list); + TEST_ASSERT_NULL(list->head); - //TODO: should be null? - TEST_ASSERT_EQUAL_PTR(&one, *list.head->prev); + BrSimpleAddHead(list, one); + TEST_ASSERT_EQUAL_PTR(one, list->head); + TEST_ASSERT_NULL(one->next); + TEST_ASSERT_EQUAL_PTR(list, one->prev); - BrSimpleAddHead(&list, &two); - TEST_ASSERT_EQUAL_PTR(&two, list.head); - TEST_ASSERT_EQUAL_PTR(&one, list.head->next); + BrSimpleAddHead(list, two); + // expected 2->1 + TEST_ASSERT_EQUAL_PTR(two, list->head); + TEST_ASSERT_EQUAL_PTR(one, two->next); + TEST_ASSERT_EQUAL_PTR(list, two->prev); - //TODO: this should be "2" IMO - TEST_ASSERT_EQUAL_PTR(&one, *list.head->next->prev); + TEST_ASSERT_EQUAL_PTR(two, one->prev); + TEST_ASSERT_NULL(one->next); - BrSimpleAddHead(&list, &three); - TEST_ASSERT_EQUAL_PTR(&three, list.head); - TEST_ASSERT_EQUAL_PTR(&two, list.head->next); - TEST_ASSERT_EQUAL_PTR(&one, list.head->next->next); + BrSimpleAddHead(list, three); + // expected 3->2->1 + //printf("prevs: %p, %p, %p\n", one.prev, two.prev, three.prev); + TEST_ASSERT_EQUAL_PTR(two, one->prev); - //TODO: this doesnt look right - //TEST_ASSERT_EQUAL_PTR(&three, *list.head->prev); - TEST_ASSERT_EQUAL_PTR(&one, *list.head->next->prev); - TEST_ASSERT_EQUAL_PTR(&one, *list.head->next->next->prev); + TEST_ASSERT_EQUAL_PTR(three, list->head); + TEST_ASSERT_EQUAL_PTR(two, three->next); + TEST_ASSERT_EQUAL_PTR(list, three->prev); + + TEST_ASSERT_EQUAL_PTR(three, two->prev); + TEST_ASSERT_EQUAL_PTR(one, two->next); + + TEST_ASSERT_EQUAL_PTR(two, one->prev); + TEST_ASSERT_NULL(one->next); } void test_brlists_suite() { From 2ae8c4bc8d27f530aa91c96206c7ff355ab116aa Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Thu, 2 Jan 2020 21:40:49 -0800 Subject: [PATCH 3/5] Implements BrV1dbBeginWrapper_Float tree calls --- src/BRSRC13/CORE/FW/brlists.c | 3 - src/BRSRC13/CORE/FW/fwsetup.c | 21 +- src/BRSRC13/CORE/FW/resource.c | 9 +- src/BRSRC13/CORE/FW/resreg.c | 3 +- src/BRSRC13/CORE/FW/sys_conf.c | 17 +- src/BRSRC13/CORE/PIXELMAP/pmsetup.c | 24 +- src/BRSRC13/br_types.h | 1 + src/DETHRACE/common/drmem.c | 25 +- src/DETHRACE/common/graphics.c | 236 ++++++++--------- src/DETHRACE/common/loading.c | 378 ++++++++++++++-------------- test/BRSRC13/test_brlists.c | 13 +- test/main.c | 2 - tools/watcom-codegen/codegen.py | 92 ++++--- 13 files changed, 441 insertions(+), 383 deletions(-) diff --git a/src/BRSRC13/CORE/FW/brlists.c b/src/BRSRC13/CORE/FW/brlists.c index 19cca364..edde8903 100644 --- a/src/BRSRC13/CORE/FW/brlists.c +++ b/src/BRSRC13/CORE/FW/brlists.c @@ -54,12 +54,9 @@ void BrSimpleNewList(br_simple_list* list) { // Offset: 628 // Size: 76 void BrSimpleAddHead(br_simple_list* list, br_simple_node* node) { - printf("BrSimpleAddHead %p\n", &node); node->next = list->head; - printf("setting me %p ->prev = %p\n", node, &list->head); node->prev = list; if (node->next) { - printf("setting %p ->prev = %p\n", node->next, node); node->next->prev = node; } list->head = node; diff --git a/src/BRSRC13/CORE/FW/fwsetup.c b/src/BRSRC13/CORE/FW/fwsetup.c index 819d60ed..60866b80 100644 --- a/src/BRSRC13/CORE/FW/fwsetup.c +++ b/src/BRSRC13/CORE/FW/fwsetup.c @@ -15,7 +15,6 @@ #include #include -br_image Image_BRCORE1; br_framework_state fw; void* functionPointers_BRCORE1[185]; char* namePointers_BRCORE1[185]; @@ -48,6 +47,25 @@ br_resource_class fw_resourceClasses[25] = { }; br_uint_16 nameOrdinals_BRCORE1[185]; + +br_image Image_BRCORE1 = { + {}, + "BRCORE1", + 2, + 0, + 1, + 185, + &functionPointers_BRCORE1, + 185, + &namePointers_BRCORE1, + nameOrdinals_BRCORE1, + 0, + NULL, + 0, + NULL, + NULL +}; + char rscid[53]; #define NBR_DEV_SLOTS 16 @@ -70,7 +88,6 @@ br_error BrFwBegin() { fw.open_mode = 0; BrRegistryNew(&fw.reg_resource_classes); - printf("here21\n"); fw.resource_class_index[BR_MEMORY_REGISTRY] = &fw_resourceClasses[0]; fw.resource_class_index[BR_MEMORY_ANCHOR] = &fw_resourceClasses[1]; fw.res = BrResAllocate(0, 0, BR_MEMORY_ANCHOR); diff --git a/src/BRSRC13/CORE/FW/resource.c b/src/BRSRC13/CORE/FW/resource.c index e0255e9c..cb4530a0 100644 --- a/src/BRSRC13/CORE/FW/resource.c +++ b/src/BRSRC13/CORE/FW/resource.c @@ -33,12 +33,10 @@ void* BrResAllocate(void* vparent, br_size_t size, br_uint_8 res_class) { br_int_32 actual_pad; br_int_32 actual_pad_2; - char* tmp; malign = BrMemAlign(res_class) - 1; - //LOWORD(size_plus_header_plus_3) = (size + 27) & 0xFFFC; - printf("BrResAllocate: parent: %p, size: %d, class: %d, class_index: %p\n", vparent, size, res_class, fw.resource_class_index[res_class]); + //printf("BrResAllocate: parent: %p, size: %d, class: %d, class_index: %p\n", vparent, size, res_class, fw.resource_class_index[res_class]); calign = fw.resource_class_index[res_class]->alignment; if (calign <= 0) { calign = 4; @@ -49,8 +47,9 @@ void* BrResAllocate(void* vparent, br_size_t size, br_uint_8 res_class) { pad = (~malign & calign) + 3; actual_pad = (sizeof(resource_header) + pad) & 0xFFFC; actual_pad_2 = (size + sizeof(resource_header) + 3) & 0xFFFC; - printf("pad: %d, %d, %d\n", malign, calign, pad); + res = (resource_header*)BrMemAllocate(size + actual_pad, res_class); + // TOOD: ? // if ((signed int)(((unsigned int)((char*)allocated + res_align_1) & ~res_align_1) - (_DWORD)allocated) > v8) // BrFailure((int)"Memory allocator broke alignment", v14); res->class = res_class; @@ -69,7 +68,7 @@ void* BrResAllocate(void* vparent, br_size_t size, br_uint_8 res_class) { parent = (resource_header*)(tmp - sizeof(resource_header)); BrSimpleAddHead(&parent->children, &res->node); } - printf("BrResAllocate returning res: %p, pad: %d, result: %p\n", res, pad, ((char*)res) + actual_pad); + //printf("BrResAllocate returning res: %p, pad: %d, result: %p\n", res, pad, ((char*)res) + actual_pad); return ((char*)res) + actual_pad; } diff --git a/src/BRSRC13/CORE/FW/resreg.c b/src/BRSRC13/CORE/FW/resreg.c index b52d272e..26aa4099 100644 --- a/src/BRSRC13/CORE/FW/resreg.c +++ b/src/BRSRC13/CORE/FW/resreg.c @@ -12,13 +12,12 @@ char rscid[48]; br_resource_class* BrResClassAdd(br_resource_class* rclass) { br_resource_class* r; - printf("BrResClassAdd (1) id: %s, %d = %p\n", rclass->identifier, rclass->res_class, fw.resource_class_index[rclass->res_class]); + //printf("BrResClassAdd: id: %s, %d = %p\n", rclass->identifier, rclass->res_class, fw.resource_class_index[rclass->res_class]); r = BrRegistryAdd(&fw.reg_resource_classes, rclass); if (!r) { return NULL; } - printf("BrResClassAdd (2) %d = %p\n", rclass->res_class, r); fw.resource_class_index[rclass->res_class] = r; return r; } diff --git a/src/BRSRC13/CORE/FW/sys_conf.c b/src/BRSRC13/CORE/FW/sys_conf.c index 6c93f559..38214e5a 100644 --- a/src/BRSRC13/CORE/FW/sys_conf.c +++ b/src/BRSRC13/CORE/FW/sys_conf.c @@ -16,7 +16,7 @@ br_boolean Is_Valid_Sys_Config_Token(br_token t) { // EDX: section_name // EBX: t // ECX: Entry -br_boolean LoadIniEntry(char *ini_file, char *section_name, br_token t, char *Entry) { +br_boolean LoadIniEntry(char* ini_file, char* section_name, br_token t, char* Entry) { char Temp[255]; br_uint_16 size; br_value v; @@ -27,7 +27,7 @@ br_boolean LoadIniEntry(char *ini_file, char *section_name, br_token t, char *En // Size: 213 // EAX: ini_file // EDX: section_name -br_error LoadIniConfig(char *ini_file, char *section_name) { +br_error LoadIniConfig(char* ini_file, char* section_name) { } // Offset: 520 @@ -36,7 +36,7 @@ br_error LoadIniConfig(char *ini_file, char *section_name) { // EDX: hKey // EBX: t // ECX: Entry -br_boolean LoadRegistryEntry(char *Reg_Path, void *hKey, br_token t, char *Entry) { +br_boolean LoadRegistryEntry(char* Reg_Path, void* hKey, br_token t, char* Entry) { char Temp[255]; br_uint_16 size; br_value v; @@ -47,14 +47,14 @@ br_boolean LoadRegistryEntry(char *Reg_Path, void *hKey, br_token t, char *Entry // Size: 224 // EAX: Reg_Path // EDX: hKey -br_error LoadRegistryConfig(char *Reg_Path, void *hKey) { +br_error LoadRegistryConfig(char* Reg_Path, void* hKey) { } // Offset: 912 // Size: 193 // EAX: t // EDX: Entry -br_error BrSetDefaultConfig(br_token t, char *Entry) { +br_error BrSetDefaultConfig(br_token t, char* Entry) { char Reg_Path[255]; int v0; int v1; @@ -71,20 +71,19 @@ br_error BrSystemConfigBegin() { // Offset: 1472 // Size: 188 -br_error BrSystemConfigLoad(br_token t, char *Param1, void *Param2) { +br_error BrSystemConfigLoad(br_token t, char* Param1, void* Param2) { br_error r; } // Offset: 1684 // Size: 158 -br_error BrSystemConfigSetString(br_token t, char *string) { +br_error BrSystemConfigSetString(br_token t, char* string) { br_value v; } // Offset: 1868 // Size: 175 -br_error BrSystemConfigQueryString(br_token t, char *string, int max_size) { +br_error BrSystemConfigQueryString(br_token t, char* string, int max_size) { br_error r; br_value v; } - diff --git a/src/BRSRC13/CORE/PIXELMAP/pmsetup.c b/src/BRSRC13/CORE/PIXELMAP/pmsetup.c index 0495a9bc..8f64aefa 100644 --- a/src/BRSRC13/CORE/PIXELMAP/pmsetup.c +++ b/src/BRSRC13/CORE/PIXELMAP/pmsetup.c @@ -1,19 +1,35 @@ #include "pmsetup.h" +#include "CORE/FW/resource.h" +#include "CORE/FW/resreg.h" +#include "CORE/STD/brstdlib.h" +#include "image.h" +#include +#include br_image Image_BRPMAP1; -br_resource_class resourceClasses[2]; -void *functionPointers_BRPMAP1[77]; -char *namePointers_BRPMAP1[77]; +br_resource_class pm_resourceClasses[2] = { + { 0u, "PIXELMAP", BR_MEMORY_PIXELMAP, NULL, 0u }, + { 0u, "PIXELS", BR_MEMORY_PIXELS, NULL, 32u } +}; +void* functionPointers_BRPMAP1[77]; +char* namePointers_BRPMAP1[77]; br_pixelmap_state _pixelmap; br_uint_16 nameOrdinals_BRPMAP1[77]; // Offset: 16 // Size: 130 void BrPixelmapBegin() { + int i; + + BrMemSet(&_pixelmap, 0, sizeof(br_pixelmap_state)); + _pixelmap.res = BrResAllocate(0, 0, BR_MEMORY_ANCHOR); + for (i = 0; i < 2; i++) { + BrResClassAdd(&pm_resourceClasses[i]); + } + return BrImageAdd(&Image_BRPMAP1); } // Offset: 160 // Size: 76 void BrPixelmapEnd() { } - diff --git a/src/BRSRC13/br_types.h b/src/BRSRC13/br_types.h index a63a78d0..c2982cca 100644 --- a/src/BRSRC13/br_types.h +++ b/src/BRSRC13/br_types.h @@ -1456,6 +1456,7 @@ typedef struct br_list { typedef struct br_simple_node br_simple_node; typedef struct br_simple_node { br_simple_node* next; + // TODO: We changed this from "** prev" to "*prev". Is this really correct? br_simple_node* prev; } br_simple_node; diff --git a/src/DETHRACE/common/drmem.c b/src/DETHRACE/common/drmem.c index b0b18dc6..20112981 100644 --- a/src/DETHRACE/common/drmem.c +++ b/src/DETHRACE/common/drmem.c @@ -1,7 +1,9 @@ #include "drmem.h" +#include "CORE/FW/resreg.h" +#include "errors.h" br_resource_class gStainless_classes[118]; -char *gMem_names[247]; +char* gMem_names[247]; int gNon_fatal_allocation_errors; br_allocator gAllocator; @@ -23,7 +25,7 @@ int AllocationErrorsAreFatal() { // Offset: 156 // Size: 34 void MAMSInitMem() { - FILE *f; + FILE* f; tPath_name the_path; } @@ -31,20 +33,20 @@ void MAMSInitMem() { // Size: 38 // EAX: pFlags // EDX: pTitle -void PrintMemoryDump(int pFlags, char *pTitle) { +void PrintMemoryDump(int pFlags, char* pTitle) { } // Offset: 232 // Size: 169 void* DRStdlibAllocate(br_size_t size, br_uint_8 type) { - void *p; + void* p; int i; char s[256]; } // Offset: 404 // Size: 38 -void DRStdlibFree(void *mem) { +void DRStdlibFree(void* mem) { int i; } @@ -66,22 +68,29 @@ void InstallDRMemCalls() { // Offset: 572 // Size: 59 // EAX: pPtr -void MAMSUnlock(void **pPtr) { +void MAMSUnlock(void** pPtr) { } // Offset: 632 // Size: 37 // EAX: pPtr -void MAMSLock(void **pPtr) { +void MAMSLock(void** pPtr) { } // Offset: 672 // Size: 124 void CreateStainlessClasses() { + int i; + + for (i = 0; i < 118; i++) { + gStainless_classes[i + 129].res_class = i; + if (!BrResClassAdd(&gStainless_classes[i + 129])) { + FatalError(94); + } + } } // Offset: 796 // Size: 34 void CheckMemory() { } - diff --git a/src/DETHRACE/common/graphics.c b/src/DETHRACE/common/graphics.c index 9ae34511..22b4dbf5 100644 --- a/src/DETHRACE/common/graphics.c +++ b/src/DETHRACE/common/graphics.c @@ -1,16 +1,18 @@ #include "graphics.h" +#include + int gArrows[2][4][60]; int gMap_colours[4]; br_vector3 gShadow_points[8]; tConcussion gConcussion; tClip_details gShadow_clip_planes[8]; br_matrix34 gSheer_mat; -br_actor *gLollipops[100]; +br_actor* gLollipops[100]; tWobble_spec gWobble_array[5]; br_matrix34 gIdentity34; tSaved_table gSaved_shade_tables[100]; -int *gCursor_giblet_sequences[4]; +int* gCursor_giblet_sequences[4]; int gCursor_y_offsets[8]; int gCursor_x_offsets[8]; tCursor_giblet gCursor_giblets[45]; @@ -18,11 +20,11 @@ int gCursor_gib_x_offsets[8]; int gCursor_gib_y_offsets[8]; tTransient_bm gTransient_bitmaps[50]; float gCosine_array[64]; -br_pixelmap *gCursors[8]; -br_pixelmap *gCursor_giblet_images[18]; +br_pixelmap* gCursors[8]; +br_pixelmap* gCursor_giblet_images[18]; br_scalar gShadow_hither_min_move; -br_pixelmap *gEval_1; -br_pixelmap *gEval_2; +br_pixelmap* gEval_1; +br_pixelmap* gEval_2; br_vector3 gShadow_light_z; br_vector3 gShadow_light_x; int gShadow_dim_amount; @@ -32,36 +34,36 @@ br_vector3 gShadow_light_ray; br_scalar gShadow_hither_z_move; int gFancy_shadow; tShadow_level gShadow_level; -br_model *gShadow_model; -br_actor *gShadow_actor; +br_model* gShadow_model; +br_actor* gShadow_actor; int gShadow_clip_plane_count; -br_pixelmap *gPalette_conversion_table; -br_material *gShadow_material; +br_pixelmap* gPalette_conversion_table; +br_material* gShadow_material; int gSaved_table_count; int gCursor_giblet_sequence3[5]; int gCursor_giblet_sequence2[5]; -char *gFont_names[21]; +char* gFont_names[21]; int gCurrent_cursor_index; int gCursor_giblet_sequence1[5]; int gCursor_giblet_sequence0[7]; int gPalette_index; int gCursor_transient_index; -char *gScratch_pixels; -br_pixelmap *gScratch_palette; +char* gScratch_pixels; +br_pixelmap* gScratch_palette; int gPalette_munged; int gLast_palette_change; int gColourValues[1]; -br_pixelmap *gOrig_render_palette; +br_pixelmap* gOrig_render_palette; int gNext_transient; -br_pixelmap *gCurrent_palette; -br_pixelmap *gRender_palette; -br_pixelmap *gCurrent_splash; -br_pixelmap *gCurrent_conversion_table; +br_pixelmap* gCurrent_palette; +br_pixelmap* gRender_palette; +br_pixelmap* gCurrent_splash; +br_pixelmap* gCurrent_conversion_table; float gCamera_to_horiz_angle; int gColours[9]; -br_pixelmap *gFlic_palette; +br_pixelmap* gFlic_palette; tDR_font gFonts[21]; -char *gCurrent_palette_pixels; +char* gCurrent_palette_pixels; int gAR_fudge_headups; float gMap_render_x; float gMap_render_y; @@ -106,15 +108,15 @@ void ResetLollipopQueue() { // Size: 124 // EAX: pActor // EDX: pIndex -int AddToLollipopQueue(br_actor *pActor, int pIndex) { +int AddToLollipopQueue(br_actor* pActor, int pIndex) { } // Offset: 256 // Size: 237 void RenderLollipops() { int must_relink; - br_actor **the_actor; - br_actor *old_parent; + br_actor** the_actor; + br_actor* old_parent; } // Offset: 496 @@ -123,8 +125,8 @@ void RenderLollipops() { // EDX: pX1 // EBX: pY1 // ECX: pX2 -void DRDrawLine(br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pColour) { - tU8 *d_ptr; +void DRDrawLine(br_pixelmap* pDestn, int pX1, int pY1, int pX2, int pY2, int pColour) { + tU8* d_ptr; tS32 y_delta; tS32 x_delta; tU32 current_y; @@ -141,7 +143,7 @@ void DRDrawLine(br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pCo // EDX: pX // EBX: pY // ECX: pY_pitch -void DrawDigitAt(br_pixelmap *gImage, int pX, int pY, int pY_pitch, int pValue) { +void DrawDigitAt(br_pixelmap* gImage, int pX, int pY, int pY_pitch, int pValue) { } // Offset: 696 @@ -150,7 +152,7 @@ void DrawDigitAt(br_pixelmap *gImage, int pX, int pY, int pY_pitch, int pValue) // EDX: pX // EBX: pY // ECX: pX_pitch -void DrawNumberAt(br_pixelmap *gImage, int pX, int pY, int pX_pitch, int pY_pitch, int pValue, int pDigit_count, int pLeading_zeroes) { +void DrawNumberAt(br_pixelmap* gImage, int pX, int pY, int pX_pitch, int pY_pitch, int pValue, int pDigit_count, int pLeading_zeroes) { int i; int the_value; } @@ -158,7 +160,7 @@ void DrawNumberAt(br_pixelmap *gImage, int pX, int pY, int pX_pitch, int pY_pitc // Offset: 852 // Size: 350 // EAX: pPalette -void BuildColourTable(br_pixelmap *pPalette) { +void BuildColourTable(br_pixelmap* pPalette) { int i; int j; int nearest_index; @@ -178,7 +180,7 @@ void ClearConcussion() { // Size: 137 // EAX: pSource // EDX: pCount -tS8* SkipLines(tS8 *pSource, int pCount) { +tS8* SkipLines(tS8* pSource, int pCount) { int i; int j; int number_of_chunks; @@ -190,9 +192,9 @@ tS8* SkipLines(tS8 *pSource, int pCount) { // EAX: pDst // EDX: pSrc // EBX: pN -void CopyWords(char *pDst, char *pSrc, int pN) { - tU16 *dst; - tU16 *src; +void CopyWords(char* pDst, char* pSrc, int pN) { + tU16* dst; + tU16* src; } // Offset: 1516 @@ -201,7 +203,7 @@ void CopyWords(char *pDst, char *pSrc, int pN) { // EDX: pDest_x // EBX: pOffset_x // ECX: pDest_y -void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8 *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight) { +void Copy8BitStripImageTo16Bit(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight) { int i; int j; int height; @@ -211,8 +213,8 @@ void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 int off_the_left; int destn_width; int chunk_length; - char *destn_ptr; - char *destn_ptr2; + char* destn_ptr; + char* destn_ptr2; } // Offset: 2124 @@ -221,7 +223,7 @@ void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 // EDX: pDest_x // EBX: pOffset_x // ECX: pDest_y -void CopyStripImage(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8 *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight) { +void CopyStripImage(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight) { int i; int j; int height; @@ -231,8 +233,8 @@ void CopyStripImage(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, int off_the_left; int destn_width; int chunk_length; - char *destn_ptr; - char *destn_ptr2; + char* destn_ptr; + char* destn_ptr2; } // Offset: 2776 @@ -269,27 +271,27 @@ void ScreenLarger() { // EAX: pPalette // EDX: pFirst_colour // EBX: pCount -void DRSetPaletteEntries(br_pixelmap *pPalette, int pFirst_colour, int pCount) { +void DRSetPaletteEntries(br_pixelmap* pPalette, int pFirst_colour, int pCount) { } // Offset: 4144 // Size: 128 // EAX: pThe_palette // EDX: pSet_current_palette -void DRSetPalette3(br_pixelmap *pThe_palette, int pSet_current_palette) { +void DRSetPalette3(br_pixelmap* pThe_palette, int pSet_current_palette) { } // Offset: 4272 // Size: 140 // EAX: pThe_palette // EDX: pSet_current_palette -void DRSetPalette2(br_pixelmap *pThe_palette, int pSet_current_palette) { +void DRSetPalette2(br_pixelmap* pThe_palette, int pSet_current_palette) { } // Offset: 4412 // Size: 50 // EAX: pThe_palette -void DRSetPalette(br_pixelmap *pThe_palette) { +void DRSetPalette(br_pixelmap* pThe_palette) { } // Offset: 4464 @@ -301,8 +303,8 @@ void InitializePalettes() { // Offset: 4880 // Size: 66 // EAX: pPal_name -void SwitchToPalette(char *pPal_name) { - br_pixelmap *the_palette; +void SwitchToPalette(char* pPal_name) { + br_pixelmap* the_palette; } // Offset: 4948 @@ -318,6 +320,15 @@ void ClearWobbles() { // Offset: 5128 // Size: 108 void InitWobbleStuff() { + int i; + + for (i = 0; i < 5; i++) { + gWobble_array[i].amplitude_x = 0; + } + + for (i = 0; i < 64; i++) { + gCosine_array[i] = cosf((double)i * 0.015625f * 3.141592653589793f * 0.5f); + } } // Offset: 5236 @@ -377,7 +388,7 @@ void SufferFromConcussion(float pSeriousness) { // EDX: pDepth_buffer // EBX: pCamera // ECX: pCamera_to_world -void ProcessNonTrackActors(br_pixelmap *pRender_buffer, br_pixelmap *pDepth_buffer, br_actor *pCamera, br_matrix34 *pCamera_to_world, br_matrix34 *pOld_camera_matrix) { +void ProcessNonTrackActors(br_pixelmap* pRender_buffer, br_pixelmap* pDepth_buffer, br_actor* pCamera, br_matrix34* pCamera_to_world, br_matrix34* pOld_camera_matrix) { } // Offset: 7188 @@ -393,10 +404,10 @@ int OppositeColour(int pColour) { // EDX: pTime // EBX: pTrans // ECX: pPos -void DrawMapBlip(tCar_spec *pCar, tU32 pTime, br_matrix34 *pTrans, br_vector3 *pPos, int pColour) { +void DrawMapBlip(tCar_spec* pCar, tU32 pTime, br_matrix34* pTrans, br_vector3* pPos, int pColour) { br_vector3 map_pos; int offset; - int *arrow_ptr; + int* arrow_ptr; int point_count; int colours[2]; int x; @@ -423,7 +434,7 @@ void DrawMapBlip(tCar_spec *pCar, tU32 pTime, br_matrix34 *pTrans, br_vector3 *p // EAX: pTime // EDX: pPos // EBX: pColour -void DrawMapSmallBlip(tU32 pTime, br_vector3 *pPos, int pColour) { +void DrawMapSmallBlip(tU32 pTime, br_vector3* pPos, int pColour) { br_vector3 map_pos; int offset; tU32 time_diff; @@ -435,13 +446,13 @@ void DrawMapSmallBlip(tU32 pTime, br_vector3 *pPos, int pColour) { // EDX: pCar // EBX: p1 // ECX: p2 -void MungeClipPlane(br_vector3 *pLight, tCar_spec *pCar, br_vector3 *p1, br_vector3 *p2, br_scalar pY_offset) { +void MungeClipPlane(br_vector3* pLight, tCar_spec* pCar, br_vector3* p1, br_vector3* p2, br_scalar pY_offset) { br_vector3 v1; br_vector3 v2; br_vector3 v3; br_vector3 v4; br_scalar length; - br_actor *new_clip; + br_actor* new_clip; } // Offset: 10024 @@ -449,7 +460,7 @@ void MungeClipPlane(br_vector3 *pLight, tCar_spec *pCar, br_vector3 *p1, br_vect // EAX: pCar // EDX: pLight // EBX: pIndex_1 -void TryThisEdge(tCar_spec *pCar, br_vector3 *pLight, int pIndex_1, br_scalar pSign_1, int pIndex_2, br_scalar pSign_2, int pPoint_index_1, int pPoint_index_2, br_scalar pY_offset) { +void TryThisEdge(tCar_spec* pCar, br_vector3* pLight, int pIndex_1, br_scalar pSign_1, int pIndex_2, br_scalar pSign_2, int pPoint_index_1, int pPoint_index_2, br_scalar pY_offset) { br_scalar dot_1; br_scalar dot_2; br_scalar mult; @@ -458,7 +469,7 @@ void TryThisEdge(tCar_spec *pCar, br_vector3 *pLight, int pIndex_1, br_scalar pS // Offset: 10204 // Size: 104 // EAX: pPos -br_scalar DistanceFromPlane(br_vector3 *pPos, br_scalar pA, br_scalar pB, br_scalar pC, br_scalar pD) { +br_scalar DistanceFromPlane(br_vector3* pPos, br_scalar pA, br_scalar pB, br_scalar pC, br_scalar pD) { br_vector3 normal; } @@ -478,7 +489,7 @@ void EnableLights() { // EDX: pWorld // EBX: pTrack_spec // ECX: pCamera -void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform, br_scalar pDistance_factor) { +void ProcessShadow(tCar_spec* pCar, br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform, br_scalar pDistance_factor) { int i; int j; int face_count; @@ -498,10 +509,10 @@ void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, br_vector3 normal; br_vector3 the_normal; br_vector3 pos_cam_space; - br_vector3 *v0; - br_vector3 *v1; - br_vector3 *v2; - br_vector4 *clip_normal; + br_vector3* v0; + br_vector3* v1; + br_vector3* v2; + br_vector4* clip_normal; br_scalar bounds_x_min; br_scalar bounds_x_max; br_scalar bounds_y_min; @@ -522,13 +533,13 @@ void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, br_scalar ray_length; tBounds kev_bounds; tFace_ref the_list[100]; - tFace_ref *face_ref; - tFace_ref *list_ptr; - br_renderbounds_cbfn *old_call_back; - br_camera *camera_ptr; - br_actor *oily_actor; - br_model *model; - br_material *material; + tFace_ref* face_ref; + tFace_ref* list_ptr; + br_renderbounds_cbfn* old_call_back; + br_camera* camera_ptr; + br_actor* oily_actor; + br_model* model; + br_material* material; br_vertex verts[48]; br_face faces[16]; } @@ -539,11 +550,11 @@ void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, // EDX: pTrack_spec // EBX: pCamera // ECX: pCamera_to_world_transform -void RenderShadows(br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform) { +void RenderShadows(br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform) { int i; int cat; int car_count; - tCar_spec *the_car; + tCar_spec* the_car; br_vector3 camera_to_car; br_scalar distance_factor; } @@ -553,7 +564,7 @@ void RenderShadows(br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera // EAX: pIndex // EDX: pTime void FlashyMapCheckpoint(int pIndex, tU32 pTime) { - tCheckpoint *cp; + tCheckpoint* cp; static tU32 last_flash; static int flash_state; } @@ -561,7 +572,7 @@ void FlashyMapCheckpoint(int pIndex, tU32 pTime) { // Offset: 15908 // Size: 252 // EAX: pPixelmap -int ConditionallyFillWithSky(br_pixelmap *pPixelmap) { +int ConditionallyFillWithSky(br_pixelmap* pPixelmap) { int bgnd_col; } @@ -583,14 +594,14 @@ void RenderAFrame(int pDepth_mask_on) { int map_timer_x; int map_timer_width; int ped_type; - char *old_pixels; + char* old_pixels; br_matrix34 old_camera_matrix; br_matrix34 old_mirror_cam_matrix; tU32 the_time; - br_vector3 *car_pos; + br_vector3* car_pos; br_vector3 pos; char the_text[256]; - tCar_spec *car; + tCar_spec* car; } // Offset: 19912 @@ -606,7 +617,7 @@ void RevertPalette() { // Offset: 20044 // Size: 34 void MungePalette() { - tU8 *q; + tU8* q; int i; float damage; float throb_start; @@ -631,7 +642,7 @@ void ResetPalette() { // Size: 65 // EAX: pPtr // EDX: pDarken_amount -void Darken(tU8 *pPtr, unsigned int pDarken_amount) { +void Darken(tU8* pPtr, unsigned int pDarken_amount) { unsigned int value; } @@ -640,8 +651,8 @@ void Darken(tU8 *pPtr, unsigned int pDarken_amount) { // EAX: pDegree void SetFadedPalette(int pDegree) { int j; - br_pixelmap *the_palette; - char *the_pixels; + br_pixelmap* the_palette; + char* the_pixels; } // Offset: 20396 @@ -671,8 +682,8 @@ void EnsureRenderPalette() { // Offset: 20812 // Size: 248 // EAX: pPixmap_name -void SplashScreenWith(char *pPixmap_name) { - br_pixelmap *the_map; +void SplashScreenWith(char* pPixmap_name) { + br_pixelmap* the_map; } // Offset: 21060 @@ -682,7 +693,7 @@ void EnsurePaletteUp() { // Offset: 21108 // Size: 103 -br_uint_32 AmbientificateMaterial(br_material *pMat, void *pArg) { +br_uint_32 AmbientificateMaterial(br_material* pMat, void* pArg) { float a; } @@ -702,16 +713,16 @@ void InitAmbience() { // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleMaskedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight) { +void DRPixelmapRectangleMaskedCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight) { int y_count; int x_count; int dest_row_wrap; int source_row_wrap; int x_delta; tU8 the_byte; - tU8 *source_ptr; - tU8 *dest_ptr; - tU8 *conv_table; + tU8* source_ptr; + tU8* dest_ptr; + tU8* conv_table; } // Offset: 22120 @@ -719,7 +730,7 @@ void DRPixelmapRectangleMaskedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int // EAX: pDest_x // EDX: pDest_y // EBX: pSource -void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource) { +void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource) { } // Offset: 22208 @@ -728,16 +739,16 @@ void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource) { // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleOnscreenCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight) { +void DRPixelmapRectangleOnscreenCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight) { int y_count; int x_count; int dest_row_wrap; int source_row_wrap; int x_delta; tU8 the_byte; - tU8 *source_ptr; - tU8 *dest_ptr; - tU8 *conv_table; + tU8* source_ptr; + tU8* dest_ptr; + tU8* conv_table; } // Offset: 22540 @@ -746,7 +757,7 @@ void DRPixelmapRectangleOnscreenCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_i // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight, tX1616 pShear) { +void DRPixelmapRectangleShearedCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight, tX1616 pShear) { int y_count; int x_count; int dest_row_wrap; @@ -756,9 +767,9 @@ void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_in int current_shear_x; int shear_x_difference; tU8 the_byte; - tU8 *source_ptr; - tU8 *dest_ptr; - tU8 *conv_table; + tU8* source_ptr; + tU8* dest_ptr; + tU8* conv_table; tX1616 current_shear; } @@ -768,15 +779,15 @@ void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_in // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleVScaledCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight) { +void DRPixelmapRectangleVScaledCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight) { int y_count; int x_count; int dest_row_wrap; int source_row_wrap; int x_delta; tU8 the_byte; - tU8 *source_ptr; - tU8 *dest_ptr; + tU8* source_ptr; + tU8* dest_ptr; tU32 source_y; tU32 source_y_delta; tU32 old_source_y; @@ -826,8 +837,8 @@ void SaveTransient(int pIndex, int pX_coord, int pY_coord) { // Offset: 24592 // Size: 214 // EAX: pGib -void DrawCursorGiblet(tCursor_giblet *pGib) { - br_pixelmap *the_image; +void DrawCursorGiblet(tCursor_giblet* pGib) { + br_pixelmap* the_image; } // Offset: 24808 @@ -837,7 +848,7 @@ void ProcessCursorGiblets(int pPeriod) { int i; int kill_the_giblet; tU32 time_now; - tCursor_giblet *gib; + tCursor_giblet* gib; } // Offset: 25552 @@ -897,7 +908,7 @@ void LoadFont(int pFont_ID) { tPath_name the_path; int i; int number_of_chars; - FILE *f; + FILE* f; tU32 the_size; } @@ -918,7 +929,7 @@ void InitDRFonts() { // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DrawDropImage(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip, int pOffset) { +void DrawDropImage(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip, int pOffset) { int y; int src_y; int src_height; @@ -931,7 +942,7 @@ void DrawDropImage(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropInImageFromTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { +void DropInImageFromTop(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { tS32 start_time; tS32 the_time; int drop_distance; @@ -943,7 +954,7 @@ void DropInImageFromTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropOutImageThruBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { +void DropOutImageThruBottom(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { tS32 start_time; tS32 the_time; int drop_distance; @@ -955,7 +966,7 @@ void DropOutImageThruBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_c // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropInImageFromBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { +void DropInImageFromBottom(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { tS32 start_time; tS32 the_time; int drop_distance; @@ -967,7 +978,7 @@ void DropInImageFromBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_cl // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropOutImageThruTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { +void DropOutImageThruTop(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip) { tS32 start_time; tS32 the_time; int drop_distance; @@ -979,7 +990,7 @@ void DropOutImageThruTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip // EDX: pLeft // EBX: pTop // ECX: pPercentage -void DrawTellyLine(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage) { +void DrawTellyLine(br_pixelmap* pImage, int pLeft, int pTop, int pPercentage) { int the_width; int the_height; } @@ -990,7 +1001,7 @@ void DrawTellyLine(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage) { // EDX: pLeft // EBX: pTop // ECX: pPercentage -void DrawTellyImage(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage) { +void DrawTellyImage(br_pixelmap* pImage, int pLeft, int pTop, int pPercentage) { int the_height; } @@ -999,7 +1010,7 @@ void DrawTellyImage(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage) { // EAX: pImage // EDX: pLeft // EBX: pTop -void TellyInImage(br_pixelmap *pImage, int pLeft, int pTop) { +void TellyInImage(br_pixelmap* pImage, int pLeft, int pTop) { tS32 start_time; tS32 the_time; } @@ -1009,7 +1020,7 @@ void TellyInImage(br_pixelmap *pImage, int pLeft, int pTop) { // EAX: pImage // EDX: pLeft // EBX: pTop -void TellyOutImage(br_pixelmap *pImage, int pLeft, int pTop) { +void TellyOutImage(br_pixelmap* pImage, int pLeft, int pTop) { tS32 start_time; tS32 the_time; int drop_distance; @@ -1040,7 +1051,7 @@ void InitShadow() { // Offset: 31320 // Size: 140 -br_uint_32 SaveShadeTable(br_pixelmap *pTable, void *pArg) { +br_uint_32 SaveShadeTable(br_pixelmap* pTable, void* pArg) { } // Offset: 31460 @@ -1074,11 +1085,11 @@ int SwitchToLoresMode() { // EDX: pSource // EBX: pSource_width // ECX: pSource_height -void DRPixelmapDoubledCopy(br_pixelmap *pDestn, br_pixelmap *pSource, int pSource_width, int pSource_height, int pX_offset, int pY_offset) { - tU16 *sptr; +void DRPixelmapDoubledCopy(br_pixelmap* pDestn, br_pixelmap* pSource, int pSource_width, int pSource_height, int pX_offset, int pY_offset) { + tU16* sptr; tU16 pixels; - tU8 *dptr; - tU8 *dptr2; + tU8* dptr; + tU8* dptr2; tU8 pixel_1; tU8 pixel_2; int i; @@ -1087,4 +1098,3 @@ void DRPixelmapDoubledCopy(br_pixelmap *pDestn, br_pixelmap *pSource, int pSourc int src_row_skip; int width_over_2; } - diff --git a/src/DETHRACE/common/loading.c b/src/DETHRACE/common/loading.c index 4b3a1f85..b5a97ad1 100644 --- a/src/DETHRACE/common/loading.c +++ b/src/DETHRACE/common/loading.c @@ -5,19 +5,19 @@ #include "globvars.h" #include "utility.h" -char *gWheel_actor_names[6]; +char* gWheel_actor_names[6]; int gFunk_groove_flags[30]; -char *gNet_avail_names[4]; -char *gDamage_names[12]; -char *gDrivable_car_names[6]; -char *gYour_car_names[2][6]; +char* gNet_avail_names[4]; +char* gDamage_names[12]; +char* gDrivable_car_names[6]; +char* gYour_car_names[2][6]; char gDef_def_water_screen_name[32]; tHeadup_info gHeadup_image_info[31]; int gAllow_open_to_fail; -br_material *gDestn_screen_mat; -br_material *gSource_screen_mat; -char *gRaces_file_names[9]; -char *gFloorpan_names[5]; +br_material* gDestn_screen_mat; +br_material* gSource_screen_mat; +char* gRaces_file_names[9]; +char* gFloorpan_names[5]; int gCurrent_race_file_index; int gGroove_funk_offset; int gDemo_armour; @@ -26,47 +26,47 @@ int gDecode_thing = '@'; int gDemo_opponents[5]; int gDemo_power; int gDemo_offensive; -char gDecode_string[14]; +char gDecode_string[14] = { 0x9B, 0x52, 0x93, 0x9F, 0x52, 0x98, 0x9B, 0x96, 0x96, 0x9E, 0x9B, 0xA0, 0x99, 0x0 }; // Offset: 0 // Size: 67 // EAX: pF -tU32 ReadU32(FILE *pF) { +tU32 ReadU32(FILE* pF) { tU32 raw_long; } // Offset: 68 // Size: 67 // EAX: pF -tU16 ReadU16(FILE *pF) { +tU16 ReadU16(FILE* pF) { tU16 raw_short; } // Offset: 136 // Size: 67 // EAX: pF -tU8 ReadU8(FILE *pF) { +tU8 ReadU8(FILE* pF) { tU8 raw_byte; } // Offset: 204 // Size: 67 // EAX: pF -tS32 ReadS32(FILE *pF) { +tS32 ReadS32(FILE* pF) { tS32 raw_long; } // Offset: 272 // Size: 67 // EAX: pF -tS16 ReadS16(FILE *pF) { +tS16 ReadS16(FILE* pF) { tS16 raw_short; } // Offset: 340 // Size: 67 // EAX: pF -tS8 ReadS8(FILE *pF) { +tS8 ReadS8(FILE* pF) { tS8 raw_byte; } @@ -74,7 +74,7 @@ tS8 ReadS8(FILE *pF) { // Size: 65 // EAX: pF // EDX: pNumber -void WriteU32L(FILE *pF, tU32 pNumber) { +void WriteU32L(FILE* pF, tU32 pNumber) { tU32 raw_long; } @@ -82,7 +82,7 @@ void WriteU32L(FILE *pF, tU32 pNumber) { // Size: 65 // EAX: pF // EDX: pNumber -void WriteU16L(FILE *pF, tU16 pNumber) { +void WriteU16L(FILE* pF, tU16 pNumber) { tU16 raw_short; } @@ -90,7 +90,7 @@ void WriteU16L(FILE *pF, tU16 pNumber) { // Size: 65 // EAX: pF // EDX: pNumber -void WriteU8L(FILE *pF, tU8 pNumber) { +void WriteU8L(FILE* pF, tU8 pNumber) { tU8 raw_byte; } @@ -98,7 +98,7 @@ void WriteU8L(FILE *pF, tU8 pNumber) { // Size: 65 // EAX: pF // EDX: pNumber -void WriteS32L(FILE *pF, tS32 pNumber) { +void WriteS32L(FILE* pF, tS32 pNumber) { tS32 raw_long; } @@ -106,7 +106,7 @@ void WriteS32L(FILE *pF, tS32 pNumber) { // Size: 65 // EAX: pF // EDX: pNumber -void WriteS16L(FILE *pF, tS16 pNumber) { +void WriteS16L(FILE* pF, tS16 pNumber) { tS16 raw_short; } @@ -114,7 +114,7 @@ void WriteS16L(FILE *pF, tS16 pNumber) { // Size: 65 // EAX: pF // EDX: pNumber -void WriteS8L(FILE *pF, tS8 pNumber) { +void WriteS8L(FILE* pF, tS8 pNumber) { tS8 raw_byte; } @@ -122,47 +122,47 @@ void WriteS8L(FILE *pF, tS8 pNumber) { // Size: 54 // EAX: pF // EDX: pBytes_to_skip -void SkipBytes(FILE *pF, int pBytes_to_skip) { +void SkipBytes(FILE* pF, int pBytes_to_skip) { } // Offset: 872 // Size: 70 // EAX: pPtr -tU32 MemReadU32(char **pPtr) { +tU32 MemReadU32(char** pPtr) { tU32 raw_long; } // Offset: 944 // Size: 70 // EAX: pPtr -tU16 MemReadU16(char **pPtr) { +tU16 MemReadU16(char** pPtr) { tU16 raw_short; } // Offset: 1016 // Size: 55 // EAX: pPtr -tU8 MemReadU8(char **pPtr) { +tU8 MemReadU8(char** pPtr) { } // Offset: 1072 // Size: 70 // EAX: pPtr -tS32 MemReadS32(char **pPtr) { +tS32 MemReadS32(char** pPtr) { tS32 raw_long; } // Offset: 1144 // Size: 70 // EAX: pPtr -tS16 MemReadS16(char **pPtr) { +tS16 MemReadS16(char** pPtr) { tS16 raw_short; } // Offset: 1216 // Size: 55 // EAX: pPtr -tS8 MemReadS8(char **pPtr) { +tS8 MemReadS8(char** pPtr) { tS8 raw_byte; } @@ -170,17 +170,18 @@ tS8 MemReadS8(char **pPtr) { // Size: 46 // EAX: pPtr // EDX: pBytes_to_skip -void MemSkipBytes(char **pPtr, int pBytes_to_skip) { +void MemSkipBytes(char** pPtr, int pBytes_to_skip) { } // Offset: 1320 // Size: 2149 void LoadGeneralParameters() { + FILE* f; tPath_name the_path; int i; int temp; char s[256]; - char *str; + char* str; } // Offset: 3472 @@ -191,10 +192,10 @@ void FinishLoadingGeneral() { // Offset: 3528 // Size: 292 // EAX: pName -br_pixelmap* LoadPixelmap(char *pName) { +br_pixelmap* LoadPixelmap(char* pName) { tPath_name the_path; - br_pixelmap *pm; - char *end; + br_pixelmap* pm; + char* end; } // Offset: 3820 @@ -202,7 +203,7 @@ br_pixelmap* LoadPixelmap(char *pName) { // EAX: pFile_name // EDX: pPixelmaps // EBX: pNum -br_uint_32 LoadPixelmaps(char *pFile_name, br_pixelmap **pPixelmaps, br_uint_16 pNum) { +br_uint_32 LoadPixelmaps(char* pFile_name, br_pixelmap** pPixelmaps, br_uint_16 pNum) { tPath_name path; int count; } @@ -210,46 +211,46 @@ br_uint_32 LoadPixelmaps(char *pFile_name, br_pixelmap **pPixelmaps, br_uint_16 // Offset: 4044 // Size: 99 // EAX: pName -br_pixelmap* LoadShadeTable(char *pName) { +br_pixelmap* LoadShadeTable(char* pName) { tPath_name the_path; } // Offset: 4144 // Size: 129 // EAX: pName -br_material* LoadMaterial(char *pName) { +br_material* LoadMaterial(char* pName) { tPath_name the_path; - br_material *result; + br_material* result; } // Offset: 4276 // Size: 123 // EAX: pName -br_model* LoadModel(char *pName) { +br_model* LoadModel(char* pName) { tPath_name the_path; - br_model *model; + br_model* model; } // Offset: 4400 // Size: 104 // EAX: pName -br_actor* LoadActor(char *pName) { +br_actor* LoadActor(char* pName) { tPath_name the_path; } // Offset: 4504 // Size: 78 // EAX: pPath_name -void DRLoadPalette(char *pPath_name) { - br_pixelmap *palette_array[100]; +void DRLoadPalette(char* pPath_name) { + br_pixelmap* palette_array[100]; int number_of_palettes; } // Offset: 4584 // Size: 78 // EAX: pPath_name -void DRLoadShadeTable(char *pPath_name) { - br_pixelmap *table_array[100]; +void DRLoadShadeTable(char* pPath_name) { + br_pixelmap* table_array[100]; int number_of_tables; } @@ -257,38 +258,38 @@ void DRLoadShadeTable(char *pPath_name) { // Size: 84 // EAX: pPixelmap_array // EDX: pCount -void RezeroPixelmaps(br_pixelmap **pPixelmap_array, int pCount) { +void RezeroPixelmaps(br_pixelmap** pPixelmap_array, int pCount) { } // Offset: 4748 // Size: 97 // EAX: pPath_name -void DRLoadPixelmaps(char *pPath_name) { - br_pixelmap *pixelmap_array[100]; +void DRLoadPixelmaps(char* pPath_name) { + br_pixelmap* pixelmap_array[100]; int number_of_pixelmaps; } // Offset: 4848 // Size: 103 // EAX: pPath_name -void DRLoadMaterials(char *pPath_name) { - br_material *material_array[100]; +void DRLoadMaterials(char* pPath_name) { + br_material* material_array[100]; int number_of_materials; } // Offset: 4952 // Size: 103 // EAX: pPath_name -void DRLoadModels(char *pPath_name) { - br_model *model_array[100]; +void DRLoadModels(char* pPath_name) { + br_model* model_array[100]; int number_of_models; } // Offset: 5056 // Size: 134 // EAX: pPath_name -void DRLoadActors(char *pPath_name) { - br_actor *actor_array[100]; +void DRLoadActors(char* pPath_name) { + br_actor* actor_array[100]; int number_of_actors; int i; } @@ -296,8 +297,8 @@ void DRLoadActors(char *pPath_name) { // Offset: 5192 // Size: 134 // EAX: pPath_name -void DRLoadLights(char *pPath_name) { - br_actor *light_array[100]; +void DRLoadLights(char* pPath_name) { + br_actor* light_array[100]; int number_of_lights; int i; } @@ -307,14 +308,14 @@ void DRLoadLights(char *pPath_name) { // EAX: pThe_base_path // EDX: pThe_dir_name // EBX: pLoad_routine -void LoadInFiles(char *pThe_base_path, char *pThe_dir_name, void (*pLoad_routine)(char*)) { +void LoadInFiles(char* pThe_base_path, char* pThe_dir_name, void (*pLoad_routine)(char*)) { tPath_name the_path; } // Offset: 5400 // Size: 208 // EAX: pThe_dir_path -void LoadInRegisteeDir(char *pThe_dir_path) { +void LoadInRegisteeDir(char* pThe_dir_path) { tPath_name the_path; } @@ -351,7 +352,7 @@ void InitInterfaceLoadState() { // Offset: 6456 // Size: 627 // EAX: pBr_map -tS8* ConvertPixTo16BitStripMap(br_pixelmap *pBr_map) { +tS8* ConvertPixTo16BitStripMap(br_pixelmap* pBr_map) { int i; int j; int new_line_length; @@ -360,19 +361,19 @@ tS8* ConvertPixTo16BitStripMap(br_pixelmap *pBr_map) { int counter; int chunk_counter; int max_line_bytes; - tU8 *next_byte; - tU8 *strip_image; - tU8 *current_strip_pointer; - tU8 *temp_strip_image; - tU8 *new_line; + tU8* next_byte; + tU8* strip_image; + tU8* current_strip_pointer; + tU8* temp_strip_image; + tU8* new_line; tU8 byte; - tU16 *palette_entry; + tU16* palette_entry; } // Offset: 7084 // Size: 578 // EAX: pThe_br_map -tS8* ConvertPixToStripMap(br_pixelmap *pThe_br_map) { +tS8* ConvertPixToStripMap(br_pixelmap* pThe_br_map) { int i; int j; int new_line_length; @@ -380,10 +381,10 @@ tS8* ConvertPixToStripMap(br_pixelmap *pThe_br_map) { int counting_blanks; int counter; int chunk_counter; - tU8 *next_byte; - tU8 *the_strip_image; - tU8 *current_strip_pointer; - tU8 *temp_strip_image; + tU8* next_byte; + tU8* the_strip_image; + tU8* current_strip_pointer; + tU8* temp_strip_image; tU8 new_line[800]; tU8 the_byte; } @@ -392,24 +393,24 @@ tS8* ConvertPixToStripMap(br_pixelmap *pThe_br_map) { // Size: 147 // EAX: pModel // EDX: pMaterial -void KillWindscreen(br_model *pModel, br_material *pMaterial) { - br_face *face; +void KillWindscreen(br_model* pModel, br_material* pMaterial) { + br_face* face; int i; } // Offset: 7812 // Size: 103 // EAX: pCar -void DropOffDyingPeds(tCar_spec *pCar) { - br_actor *child; - br_actor *next; +void DropOffDyingPeds(tCar_spec* pCar) { + br_actor* child; + br_actor* next; } // Offset: 7916 // Size: 1113 // EAX: pCar_spec // EDX: pOwner -void DisposeCar(tCar_spec *pCar_spec, int pOwner) { +void DisposeCar(tCar_spec* pCar_spec, int pOwner) { int i; int j; } @@ -417,7 +418,7 @@ void DisposeCar(tCar_spec *pCar_spec, int pOwner) { // Offset: 9032 // Size: 626 // EAX: pCar -void AdjustCarCoordinates(tCar_spec *pCar) { +void AdjustCarCoordinates(tCar_spec* pCar) { int i; } @@ -426,10 +427,10 @@ void AdjustCarCoordinates(tCar_spec *pCar) { // EAX: pF // EDX: pIndex // EBX: pCar_spec -void LoadSpeedo(FILE *pF, int pIndex, tCar_spec *pCar_spec) { +void LoadSpeedo(FILE* pF, int pIndex, tCar_spec* pCar_spec) { tPath_name the_path; char s[256]; - char *str; + char* str; char the_char1; char the_char2; } @@ -439,10 +440,10 @@ void LoadSpeedo(FILE *pF, int pIndex, tCar_spec *pCar_spec) { // EAX: pF // EDX: pIndex // EBX: pCar_spec -void LoadTacho(FILE *pF, int pIndex, tCar_spec *pCar_spec) { +void LoadTacho(FILE* pF, int pIndex, tCar_spec* pCar_spec) { tPath_name the_path; char s[256]; - char *str; + char* str; char the_char1; char the_char2; } @@ -452,9 +453,9 @@ void LoadTacho(FILE *pF, int pIndex, tCar_spec *pCar_spec) { // EAX: pF // EDX: pIndex // EBX: pCar_spec -void LoadHeadups(FILE *pF, int pIndex, tCar_spec *pCar_spec) { +void LoadHeadups(FILE* pF, int pIndex, tCar_spec* pCar_spec) { char s[256]; - char *str; + char* str; int j; int number_of_slots; } @@ -463,12 +464,12 @@ void LoadHeadups(FILE *pF, int pIndex, tCar_spec *pCar_spec) { // Size: 1819 // EAX: pF // EDX: non_car -void ReadNonCarMechanicsData(FILE *pF, tNon_car_spec *non_car) { +void ReadNonCarMechanicsData(FILE* pF, tNon_car_spec* non_car) { int number; int i; int j; char s[256]; - tCollision_info *c; + tCollision_info* c; br_scalar wid; br_scalar het; br_scalar len; @@ -481,7 +482,7 @@ void ReadNonCarMechanicsData(FILE *pF, tNon_car_spec *non_car) { // Size: 3476 // EAX: pF // EDX: c -void ReadMechanicsData(FILE *pF, tCar_spec *c) { +void ReadMechanicsData(FILE* pF, tCar_spec* c) { char s[256]; char version; int i; @@ -494,7 +495,7 @@ void ReadMechanicsData(FILE *pF, tCar_spec *c) { br_scalar wid; br_scalar het; br_scalar len; - br_vector3 *actor_offset; + br_vector3* actor_offset; br_scalar speed; br_scalar force; } @@ -504,16 +505,16 @@ void ReadMechanicsData(FILE *pF, tCar_spec *c) { // EAX: pF // EDX: pIndex // EBX: pCar_spec -void LoadGear(FILE *pF, int pIndex, tCar_spec *pCar_spec) { +void LoadGear(FILE* pF, int pIndex, tCar_spec* pCar_spec) { tPath_name the_path; char s[256]; - char *str; + char* str; } // Offset: 17664 // Size: 56 // EAX: pRef_holder -void AddRefOffset(int *pRef_holder) { +void AddRefOffset(int* pRef_holder) { } // Offset: 17720 @@ -521,20 +522,20 @@ void AddRefOffset(int *pRef_holder) { // EAX: pF // EDX: pCar_spec // EBX: pImpact_location -void GetDamageProgram(FILE *pF, tCar_spec *pCar_spec, tImpact_location pImpact_location) { - tDamage_clause *the_clause; +void GetDamageProgram(FILE* pF, tCar_spec* pCar_spec, tImpact_location pImpact_location) { + tDamage_clause* the_clause; int i; int j; int k; int count; char s[256]; char delim[64]; - char *str; + char* str; } // Offset: 18420 // Size: 178 -br_uint_32 LinkModel(br_actor *pActor, tModel_pool *pModel_pool) { +br_uint_32 LinkModel(br_actor* pActor, tModel_pool* pModel_pool) { int i; } @@ -542,7 +543,7 @@ br_uint_32 LinkModel(br_actor *pActor, tModel_pool *pModel_pool) { // Size: 198 // EAX: pModel_array // EDX: pModel_count -void FreeUpBonnetModels(br_model **pModel_array, int pModel_count) { +void FreeUpBonnetModels(br_model** pModel_array, int pModel_count) { int i; } @@ -551,7 +552,7 @@ void FreeUpBonnetModels(br_model **pModel_array, int pModel_count) { // EAX: pActor // EDX: pModel_array // EBX: pModel_count -void LinkModelsToActor(br_actor *pActor, br_model **pModel_array, int pModel_count) { +void LinkModelsToActor(br_actor* pActor, br_model** pModel_array, int pModel_count) { tModel_pool model_pool; } @@ -559,7 +560,7 @@ void LinkModelsToActor(br_actor *pActor, br_model **pModel_array, int pModel_cou // Size: 132 // EAX: pF // EDX: pCar_spec -void ReadShrapnelMaterials(FILE *pF, tCollision_info *pCar_spec) { +void ReadShrapnelMaterials(FILE* pF, tCollision_info* pCar_spec) { char s[256]; char version; int i; @@ -569,22 +570,22 @@ void ReadShrapnelMaterials(FILE *pF, tCollision_info *pCar_spec) { // Size: 200 // EAX: pOutput_car // EDX: pInput_car -void CloneCar(tCar_spec **pOutput_car, tCar_spec *pInput_car) { +void CloneCar(tCar_spec** pOutput_car, tCar_spec* pInput_car) { int i; } // Offset: 19200 // Size: 65 // EAX: pCar -void DisposeClonedCar(tCar_spec *pCar) { +void DisposeClonedCar(tCar_spec* pCar) { } // Offset: 19268 // Size: 523 // EAX: pModel -int RemoveDoubleSided(br_model *pModel) { - br_face *faces; - br_face *face; +int RemoveDoubleSided(br_model* pModel) { + br_face* faces; + br_face* face; int temp; int num_double_sided_faces; int i; @@ -595,8 +596,8 @@ int RemoveDoubleSided(br_model *pModel) { // Offset: 19792 // Size: 201 // EAX: pModel -void MungeWindscreen(br_model *pModel) { - br_face *face; +void MungeWindscreen(br_model* pModel) { + br_face* face; int i; } @@ -604,7 +605,7 @@ void MungeWindscreen(br_model *pModel) { // Size: 141 // EAX: pModel // EDX: pOwner -void SetModelFlags(br_model *pModel, int pOwner) { +void SetModelFlags(br_model* pModel, int pOwner) { } // Offset: 20140 @@ -613,10 +614,10 @@ void SetModelFlags(br_model *pModel, int pOwner) { // EDX: pDriver // EBX: pCar_spec // ECX: pOwner -void LoadCar(char *pCar_name, tDriver pDriver, tCar_spec *pCar_spec, int pOwner, char *pDriver_name, tBrender_storage *pStorage_space) { - FILE *f; - FILE *g; - FILE *h; +void LoadCar(char* pCar_name, tDriver pDriver, tCar_spec* pCar_spec, int pOwner, char* pDriver_name, tBrender_storage* pStorage_space) { + FILE* f; + FILE* g; + FILE* h; tPath_name the_path; int i; int j; @@ -630,11 +631,11 @@ void LoadCar(char *pCar_name, tDriver pDriver, tCar_spec *pCar_spec, int pOwner, int temp_index; int vertex_array_size; char s[256]; - char *str; - br_pixelmap *the_image; + char* str; + br_pixelmap* the_image; float rate; float temp_float; - br_model *model; + br_model* model; br_vector3 tv; int v; int v_num; @@ -663,7 +664,7 @@ FILE* OpenRaceFile() { // Offset: 28740 // Size: 219 // EAX: pF -void SkipRestOfRace(FILE *pF) { +void SkipRestOfRace(FILE* pF) { int j; int k; int text_chunk_count; @@ -676,15 +677,15 @@ void SkipRestOfRace(FILE *pF) { // EAX: pRace_list // EDX: pCount // EBX: pRace_type_index -void LoadRaces(tRace_list_spec *pRace_list, int *pCount, int pRace_type_index) { - FILE *f; +void LoadRaces(tRace_list_spec* pRace_list, int* pCount, int pRace_type_index) { + FILE* f; int i; int j; int k; int number_of_racers; int last_race; char s[256]; - char *str; + char* str; } // Offset: 29372 @@ -703,22 +704,22 @@ void LoadOpponentMugShot(int pIndex) { // Size: 136 // EAX: pRace_info // EDX: pIndex -void DisposeOpponentGridIcon(tRace_info *pRace_info, int pIndex) { +void DisposeOpponentGridIcon(tRace_info* pRace_info, int pIndex) { } // Offset: 29764 // Size: 155 // EAX: pRace_info // EDX: pIndex -void LoadOpponentGridIcon(tRace_info *pRace_info, int pIndex) { +void LoadOpponentGridIcon(tRace_info* pRace_info, int pIndex) { } // Offset: 29920 // Size: 804 // EAX: pRace_index // EDX: pRace_info -void LoadRaceInfo(int pRace_index, tRace_info *pRace_info) { - FILE *f; +void LoadRaceInfo(int pRace_index, tRace_info* pRace_info) { + FILE* f; int i; int j; int k; @@ -728,32 +729,32 @@ void LoadRaceInfo(int pRace_index, tRace_info *pRace_info) { int old_index; int temp_index; char s[256]; - char *str; + char* str; float temp_float; - tText_chunk *the_chunk; + tText_chunk* the_chunk; } // Offset: 30724 // Size: 351 // EAX: pRace_info -void DisposeRaceInfo(tRace_info *pRace_info) { +void DisposeRaceInfo(tRace_info* pRace_info) { int i; int j; int k; - tText_chunk *the_chunk; + tText_chunk* the_chunk; } // Offset: 31076 // Size: 122 // EAX: pRace_info -void LoadGridIcons(tRace_info *pRace_info) { +void LoadGridIcons(tRace_info* pRace_info) { int i; } // Offset: 31200 // Size: 119 // EAX: pRace_info -void DisposeGridIcons(tRace_info *pRace_info) { +void DisposeGridIcons(tRace_info* pRace_info) { int i; } @@ -765,17 +766,17 @@ void LoadOpponents() { int j; int k; char s[256]; - char *str; - tText_chunk *the_chunk; + char* str; + tText_chunk* the_chunk; } // Offset: 32396 // Size: 647 // EAX: pName -br_font* LoadBRFont(char *pName) { - FILE *f; +br_font* LoadBRFont(char* pName) { + FILE* f; tPath_name the_path; - br_font *the_font; + br_font* the_font; tU32 data_size; int i; } @@ -800,7 +801,7 @@ br_pixelmap* LoadChromeFont() { // Offset: 33532 // Size: 49 // EAX: pThe_font -void DisposeChromeFont(br_pixelmap *pThe_font) { +void DisposeChromeFont(br_pixelmap* pThe_font) { } // Offset: 33584 @@ -808,36 +809,36 @@ void DisposeChromeFont(br_pixelmap *pThe_font) { // EAX: pF // EDX: pString_list // EBX: pCount -int GetALineAndInterpretCommand(FILE *pF, char **pString_list, int pCount) { +int GetALineAndInterpretCommand(FILE* pF, char** pString_list, int pCount) { int i; char s[256]; - char *str; + char* str; } // Offset: 33724 // Size: 101 // EAX: pF -int GetAnInt(FILE *pF) { +int GetAnInt(FILE* pF) { char s[256]; - char *str; + char* str; int result; } // Offset: 33828 // Size: 101 // EAX: pF -float GetAFloat(FILE *pF) { +float GetAFloat(FILE* pF) { char s[256]; - char *str; + char* str; float result; } // Offset: 33932 // Size: 107 // EAX: pF -float GetAFloatPercent(FILE *pF) { +float GetAFloatPercent(FILE* pF) { char s[256]; - char *str; + char* str; float result; } @@ -846,9 +847,9 @@ float GetAFloatPercent(FILE *pF) { // EAX: pF // EDX: pF1 // EBX: pF2 -void GetPairOfFloats(FILE *pF, float *pF1, float *pF2) { +void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) { char s[256]; - char *str; + char* str; } // Offset: 34172 @@ -857,9 +858,9 @@ void GetPairOfFloats(FILE *pF, float *pF1, float *pF2) { // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetThreeFloats(FILE *pF, float *pF1, float *pF2, float *pF3) { +void GetThreeFloats(FILE* pF, float* pF1, float* pF2, float* pF3) { char s[256]; - char *str; + char* str; } // Offset: 34344 @@ -867,9 +868,9 @@ void GetThreeFloats(FILE *pF, float *pF1, float *pF2, float *pF3) { // EAX: pF // EDX: pF1 // EBX: pF2 -void GetPairOfInts(FILE *pF, int *pF1, int *pF2) { +void GetPairOfInts(FILE* pF, int* pF1, int* pF2) { char s[256]; - char *str; + char* str; } // Offset: 34476 @@ -878,9 +879,9 @@ void GetPairOfInts(FILE *pF, int *pF1, int *pF2) { // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetThreeInts(FILE *pF, int *pF1, int *pF2, int *pF3) { +void GetThreeInts(FILE* pF, int* pF1, int* pF2, int* pF3) { char s[256]; - char *str; + char* str; } // Offset: 34648 @@ -889,9 +890,9 @@ void GetThreeInts(FILE *pF, int *pF1, int *pF2, int *pF3) { // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetThreeIntsAndAString(FILE *pF, int *pF1, int *pF2, int *pF3, char *pS) { +void GetThreeIntsAndAString(FILE* pF, int* pF1, int* pF2, int* pF3, char* pS) { char s[256]; - char *str; + char* str; } // Offset: 34848 @@ -900,15 +901,15 @@ void GetThreeIntsAndAString(FILE *pF, int *pF1, int *pF2, int *pF3, char *pS) { // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetFourInts(FILE *pF, int *pF1, int *pF2, int *pF3, int *pF4) { +void GetFourInts(FILE* pF, int* pF1, int* pF2, int* pF3, int* pF4) { char s[256]; - char *str; + char* str; } // Offset: 35056 // Size: 51 // EAX: pF -br_scalar GetAScalar(FILE *pF) { +br_scalar GetAScalar(FILE* pF) { } // Offset: 35108 @@ -916,7 +917,7 @@ br_scalar GetAScalar(FILE *pF) { // EAX: pF // EDX: pS1 // EBX: pS2 -void GetPairOfScalars(FILE *pF, br_scalar *pS1, br_scalar *pS2) { +void GetPairOfScalars(FILE* pF, br_scalar* pS1, br_scalar* pS2) { } // Offset: 35180 @@ -925,7 +926,7 @@ void GetPairOfScalars(FILE *pF, br_scalar *pS1, br_scalar *pS2) { // EDX: pS1 // EBX: pS2 // ECX: pS3 -void GetThreeScalars(FILE *pF, br_scalar *pS1, br_scalar *pS2, br_scalar *pS3) { +void GetThreeScalars(FILE* pF, br_scalar* pS1, br_scalar* pS2, br_scalar* pS3) { } // Offset: 35264 @@ -934,9 +935,9 @@ void GetThreeScalars(FILE *pF, br_scalar *pS1, br_scalar *pS2, br_scalar *pS3) { // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetFourScalars(FILE *pF, br_scalar *pF1, br_scalar *pF2, br_scalar *pF3, br_scalar *pF4) { +void GetFourScalars(FILE* pF, br_scalar* pF1, br_scalar* pF2, br_scalar* pF3, br_scalar* pF4) { char s[256]; - char *str; + char* str; float f1; float f2; float f3; @@ -949,9 +950,9 @@ void GetFourScalars(FILE *pF, br_scalar *pF1, br_scalar *pF2, br_scalar *pF3, br // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetFiveScalars(FILE *pF, br_scalar *pF1, br_scalar *pF2, br_scalar *pF3, br_scalar *pF4, br_scalar *pF5) { +void GetFiveScalars(FILE* pF, br_scalar* pF1, br_scalar* pF2, br_scalar* pF3, br_scalar* pF4, br_scalar* pF5) { char s[256]; - char *str; + char* str; float f1; float f2; float f3; @@ -964,9 +965,9 @@ void GetFiveScalars(FILE *pF, br_scalar *pF1, br_scalar *pF2, br_scalar *pF3, br // EAX: pF // EDX: pNumber // EBX: pScalars -void GetNScalars(FILE *pF, int pNumber, br_scalar *pScalars) { +void GetNScalars(FILE* pF, int pNumber, br_scalar* pScalars) { char s[256]; - char *str; + char* str; float fleurting_point_numero; int i; } @@ -976,9 +977,9 @@ void GetNScalars(FILE *pF, int pNumber, br_scalar *pScalars) { // EAX: pF // EDX: pF1 // EBX: pF2 -void GetPairOfFloatPercents(FILE *pF, float *pF1, float *pF2) { +void GetPairOfFloatPercents(FILE* pF, float* pF1, float* pF2) { char s[256]; - char *str; + char* str; } // Offset: 36104 @@ -987,18 +988,18 @@ void GetPairOfFloatPercents(FILE *pF, float *pF1, float *pF2) { // EDX: pF1 // EBX: pF2 // ECX: pF3 -void GetThreeFloatPercents(FILE *pF, float *pF1, float *pF2, float *pF3) { +void GetThreeFloatPercents(FILE* pF, float* pF1, float* pF2, float* pF3) { char s[256]; - char *str; + char* str; } // Offset: 36312 // Size: 82 // EAX: pF // EDX: pString -void GetAString(FILE *pF, char *pString) { +void GetAString(FILE* pF, char* pString) { char s[256]; - char *str; + char* str; } // Offset: 36396 @@ -1009,21 +1010,21 @@ void AboutToLoadFirstCar() { // Offset: 36448 // Size: 275 // EAX: pRace_info -void LoadOpponentsCars(tRace_info *pRace_info) { +void LoadOpponentsCars(tRace_info* pRace_info) { int i; } // Offset: 36724 // Size: 184 // EAX: pRace_info -void DisposeOpponentsCars(tRace_info *pRace_info) { +void DisposeOpponentsCars(tRace_info* pRace_info) { int i; } // Offset: 36908 // Size: 211 void LoadMiscStrings() { - FILE *f; + FILE* f; char s[256]; tPath_name the_path; } @@ -1031,19 +1032,19 @@ void LoadMiscStrings() { // Offset: 37120 // Size: 53 // EAX: pThe_race -void FillInRaceInfo(tRace_info *pThe_race) { +void FillInRaceInfo(tRace_info* pThe_race) { } // Offset: 37176 // Size: 1156 // EAX: pFilename // EDX: pMode -FILE* OldDRfopen(char *pFilename, char *pMode) { - FILE *fp; - FILE *file_ptr; - FILE *test1; - FILE *test2; - char *data_dir; +FILE* OldDRfopen(char* pFilename, char* pMode) { + FILE* fp; + FILE* file_ptr; + FILE* test1; + FILE* test2; + char* data_dir; tPath_name CD_dir; tPath_name path_file; tPath_name source_check; @@ -1065,8 +1066,8 @@ void DoNotAllowOpenToFail() { // Size: 189 // EAX: pFilename // EDX: pMode -FILE* DRfopen(char *pFilename, char *pMode) { - FILE *result; +FILE* DRfopen(char* pFilename, char* pMode) { + FILE* result; tPath_name CD_dir; char msg[336]; } @@ -1074,16 +1075,16 @@ FILE* DRfopen(char *pFilename, char *pMode) { // Offset: 38604 // Size: 178 // EAX: pPath_name -int GetCDPathFromPathsTxtFile(char *pPath_name) { +int GetCDPathFromPathsTxtFile(char* pPath_name) { static int got_it_already = 0; static tPath_name cd_pathname; - FILE *paths_txt_fp; + FILE* paths_txt_fp; tPath_name paths_txt; - if ( !got_it_already ) { + if (!got_it_already) { sprintf(paths_txt, "%s%s%s", gApplication_path, gDir_separator, "PATHS.TXT"); paths_txt_fp = fopen(paths_txt, "rt"); - if ( !paths_txt_fp ) { + if (!paths_txt_fp) { return 0; } GetALineAndDontArgue(paths_txt_fp, cd_pathname); @@ -1113,29 +1114,29 @@ int CarmaCDinDriveOrFullGameInstalled() { // Size: 191 // EAX: pF // EDX: pOptions -void ReadNetworkSettings(FILE *pF, tNet_game_options *pOptions) { +void ReadNetworkSettings(FILE* pF, tNet_game_options* pOptions) { } // Offset: 39132 // Size: 378 // EAX: pF // EDX: pIndex -int PrintNetOptions(FILE *pF, int pIndex) { +int PrintNetOptions(FILE* pF, int pIndex) { } // Offset: 39512 // Size: 1398 int SaveOptions() { - FILE *f; + FILE* f; } // Offset: 40912 // Size: 1643 int RestoreOptions() { - FILE *f; + FILE* f; char line[80]; char token[80]; - char *s; + char* s; float arg; } @@ -1143,4 +1144,3 @@ int RestoreOptions() { // Size: 75 void InitFunkGrooveFlags() { } - diff --git a/test/BRSRC13/test_brlists.c b/test/BRSRC13/test_brlists.c index ac5e7bfa..bd31ebb4 100644 --- a/test/BRSRC13/test_brlists.c +++ b/test/BRSRC13/test_brlists.c @@ -10,18 +10,17 @@ void test_brlists_BrSimpleList() { br_simple_node* two = calloc(1, sizeof(br_simple_node)); br_simple_node* three = calloc(1, sizeof(br_simple_node)); - printf("lisr %p, 1 %p, 2 %p, 3 %p\n", list, one, two, three); - BrSimpleNewList(list); TEST_ASSERT_NULL(list->head); BrSimpleAddHead(list, one); + // expected 1->null TEST_ASSERT_EQUAL_PTR(one, list->head); TEST_ASSERT_NULL(one->next); TEST_ASSERT_EQUAL_PTR(list, one->prev); BrSimpleAddHead(list, two); - // expected 2->1 + // expected 2->1->null TEST_ASSERT_EQUAL_PTR(two, list->head); TEST_ASSERT_EQUAL_PTR(one, two->next); TEST_ASSERT_EQUAL_PTR(list, two->prev); @@ -30,8 +29,7 @@ void test_brlists_BrSimpleList() { TEST_ASSERT_NULL(one->next); BrSimpleAddHead(list, three); - // expected 3->2->1 - //printf("prevs: %p, %p, %p\n", one.prev, two.prev, three.prev); + // expected 3->2->1->null TEST_ASSERT_EQUAL_PTR(two, one->prev); TEST_ASSERT_EQUAL_PTR(three, list->head); @@ -43,6 +41,11 @@ void test_brlists_BrSimpleList() { TEST_ASSERT_EQUAL_PTR(two, one->prev); TEST_ASSERT_NULL(one->next); + + free(list); + free(one); + free(two); + free(three); } void test_brlists_suite() { diff --git a/test/main.c b/test/main.c index 14bd6c6e..115bcce2 100644 --- a/test/main.c +++ b/test/main.c @@ -33,8 +33,6 @@ void tearDown(void) { int main(int pArgc, char** pArgv) { - debug("hi %d\n", 3); - UNITY_BEGIN(); // BRSRC13 diff --git a/tools/watcom-codegen/codegen.py b/tools/watcom-codegen/codegen.py index 28886e97..c8f162e0 100755 --- a/tools/watcom-codegen/codegen.py +++ b/tools/watcom-codegen/codegen.py @@ -84,6 +84,7 @@ def unread_line(): def read_file(): state = STATE_NONE + current_module = None while eof == 0: line = read_line() @@ -96,10 +97,8 @@ def read_file(): match = re.match(module_start_regex, line) if match: - if len(modules) > 0: - m = modules[len(modules)-1] - # if 'depth.c' in m['name']: - # break + if current_module is not None: + cleanup_function_args(current_module) current_module = { 'name': match.group(1), @@ -131,7 +130,7 @@ def read_file(): last_fn = None elif local_type == 'NEAR_RTN_386' or local_type == 'FAR_RTN_386': - fn = process_function() + fn = process_function(current_module) last_fn = fn current_module['functions'].append(fn) @@ -187,7 +186,7 @@ def process_global_var(): glob['type'] = match.group(3) return glob -def process_function(): +def process_function(module): fn = { 'args': [], 'local_vars': [] } #start off = 00000000, code size = 000000C9, parent off = 0000 @@ -380,31 +379,6 @@ def resolve_type_str(module, type_idx, var_name, decl=True): #print 'resolved to', type_idx, t #return resolve_name_for_type(module, type_idx) + ' ' + indirections + '{}' + bounds - -# def resolve_type(module, type_idx): -# result='' -# t = module['types'][type_idx] -# while 'base_type' in t: -# if t['type'] == 'NEAR386 PTR' or t['type'] == 'FAR386 PTR': -# result = '*' + result -# t = module['types'][t['base_type']] -# elif t['type'] == 'WORD_INDEX ARRAY' or t['type'] == 'BYTE_INDEX ARRAY': -# inner_type = resolve_type(module, t['base_type']) -# return inner_type + '[' + str(t['upper_bound']) + ']' - -# if t['type'] == 'NEAR386 PROC': -# return resolve_type(module, t['return_type']) + '(*' + describe_args(module, t, False) + result -# if 'value' in t: -# return t['value'] + result -# else: -# t2 = get_child_reference(module, type_idx) -# if t2 is not None: -# return t2['value'] + result - -# print (t) -# return t['type_name'] + result - - def resolve_function_header(module, fn): text = '' text += '// Offset: ' + str(fn['offset']) + '\n// Size: ' + str(fn['size']) @@ -413,8 +387,20 @@ def resolve_function_header(module, fn): text += '\n' name = fn['local_vars'][i]['name'] text += '// ' + fn['args'][i] + ': ' + name + text += '\n//IDA: ' + resolve_function_ida_signature(module, fn) return text +def cleanup_function_args(module): + # if theres a single "void" argument for a function, we just remove it + for fn in module['functions']: + type_idx = fn['type'] + fn_type = module['types'][type_idx] + if len(fn_type['args']) == 1: + arg_type = resolve_type_str(module, fn_type['args'][0], '') + if arg_type == 'void': + fn_type['args'] = [] + + def get_function_arg_count(module, fn): type_idx = fn['type'] fn_type = module['types'][type_idx] @@ -441,13 +427,9 @@ def resolve_function_signature(module, fn): continue else: arg_type = module['types'][arg] - if 'value' in arg_type and arg_type['value'] == 'void': - continue name = fn['local_vars'][i]['name'] arg_type = resolve_type_str(module, arg, name, False) - if arg_type == 'void ?no_name?': - continue if len(args) != 0: args += ', ' args += arg_type @@ -457,13 +439,45 @@ def resolve_function_signature(module, fn): return return_type + ' ' + fn['name'] + '(' + args + ')' +def resolve_function_ida_signature(module, fn): + type_idx = fn['type'] + fn_type = module['types'][type_idx] + return_type = resolve_type_str(module, fn_type['return_type'], "") + args = '' + for i in range(len(fn_type['args'])): + arg = fn_type['args'][i] + + if arg not in module['types']: + continue + else: + arg_type = module['types'][arg] + + name = fn['local_vars'][i]['name'] + arg_type = resolve_type_str(module, arg, name, False) + if len(args) != 0: + args += ', ' + args += arg_type + if i < len(fn['args']): + args += '@<' + fn['args'][i] + '>' + + if is_function_vararg(module, fn): + args += ', ...' + + # void __usercall PathCat(char *pDestn_str@, char *pStr_1@, char *pStr_2@) + # float __usercall GetAFloat@(FILE *pF@) + return_reg = '' + if len(fn['args']) > 0 and 'return_value' in fn: + return_reg = '@<' + fn['return_value'] + '>' + call_type = '__cdecl' + if len(fn['args']) > 0: + call_type = '__usercall' + return return_type + ' ' + call_type + ' ' + fn['name'] + return_reg + '(' + args + ')' + def describe_args(module, fn_type, resolve_names): args = '' for i in range(len(fn_type['args'])): arg = fn_type['args'][i] arg_type = resolve_type_str(module, arg, '') - if arg_type == 'void': - continue if resolve_names: name = fn['local_vars'][i]['name'] @@ -643,10 +657,6 @@ def generate_c_file(module): # skip local variables that were passed in as arguments arg_count = get_function_arg_count(module, fn) - # if fn['name'] == 'DrawColumns': - # print 'xxxx' - # print fn - # print module['types'][fn['type']] for v in fn['local_vars'][arg_count:]: c_file.write(' ' * INDENT_SPACES) if 'CONST' in v['addr_type']: From 7d1789a6efa18b52600942a215cdde2b6dbb5887 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Fri, 10 Jan 2020 14:56:03 -0800 Subject: [PATCH 4/5] Adds LoadGeneralParameters function --- Makefile | 3 +- src/BRSRC13/CORE/V1DB/dbsetup.c | 2 - src/DETHRACE/Makefile | 4 +- src/DETHRACE/common/displays.h | 48 +- src/DETHRACE/common/globvrkm.h | 4 +- src/DETHRACE/common/graphics.h | 90 +- src/DETHRACE/common/init.c | 174 +-- src/DETHRACE/common/init.h | 12 +- src/DETHRACE/common/loading.c | 308 ++++- src/DETHRACE/common/newgame.c | 89 +- src/DETHRACE/common/newgame.h | 83 +- src/DETHRACE/common/opponent.h | 156 +-- src/DETHRACE/common/pedestrn.h | 90 +- src/DETHRACE/common/utility.c | 424 +++--- src/DETHRACE/common/utility.h | 133 +- src/DETHRACE/common/world.c | 519 ++++---- src/DETHRACE/new/stack_trace_handler.h | 316 +++++ src/DETHRACE/pc-dos/main.c | 6 +- test/DETHRACE/test_dossys.c | 6 - test/DETHRACE/test_loading.c | 43 +- test/DETHRACE/test_utility.c | 23 +- test/Makefile | 4 +- test/assets/DATA/ACTORS/PROG.ACT | 1 + test/assets/DATA/GENERAL.TXT | 83 ++ test/assets/DATA/KEYBOARD.COK | 1 + test/assets/DATA/MINICD/DATA/GENERAL.TXT | 1 + test/assets/DATA/PATHS.TXT | 5 + test/framework/unity.c | 1525 +++++++++------------- test/framework/unity_internals.h | 6 +- test/main.c | 27 +- 30 files changed, 2415 insertions(+), 1771 deletions(-) create mode 100644 src/DETHRACE/new/stack_trace_handler.h create mode 100644 test/assets/DATA/ACTORS/PROG.ACT create mode 100644 test/assets/DATA/GENERAL.TXT create mode 100644 test/assets/DATA/KEYBOARD.COK create mode 100644 test/assets/DATA/MINICD/DATA/GENERAL.TXT create mode 100644 test/assets/DATA/PATHS.TXT diff --git a/Makefile b/Makefile index 24aec177..74877dbf 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ clean: test: build @echo "Building tests" @$(MAKE) -C test build - test/build/c1tests + @cp -r test/assets/DATA test/build + @(cd test/build && ./c1tests) run: build @echo "Running dethrace" diff --git a/src/BRSRC13/CORE/V1DB/dbsetup.c b/src/BRSRC13/CORE/V1DB/dbsetup.c index d2cceb92..c79b308f 100644 --- a/src/BRSRC13/CORE/V1DB/dbsetup.c +++ b/src/BRSRC13/CORE/V1DB/dbsetup.c @@ -40,8 +40,6 @@ br_error BrV1dbBegin() { return 4103; } - printf("BrV1dbBegin\n"); - BrMemSet(&v1db, 0, sizeof(br_v1db_state)); v1db.active = 1; BrRegistryNew(&v1db.reg_models); diff --git a/src/DETHRACE/Makefile b/src/DETHRACE/Makefile index 6b16d5c6..a5eb2385 100644 --- a/src/DETHRACE/Makefile +++ b/src/DETHRACE/Makefile @@ -12,8 +12,8 @@ DEPS := $(OBJS:.o=.d) INC_DIRS := $(shell find $(SRC_DIR) -type d) $(BR_SRC_DIR) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) -CFLAGS ?= $(INC_FLAGS) -Wno-return-type -Wno-missing-declarations -Werror=implicit-function-declaration -LDFLAGS ?= -lm +CFLAGS ?= $(INC_FLAGS) -g -Wno-return-type -Wno-missing-declarations -Werror=implicit-function-declaration +LDFLAGS ?= -lm -fno-pie .PHONY: clean build test diff --git a/src/DETHRACE/common/displays.h b/src/DETHRACE/common/displays.h index dc885784..d737b997 100644 --- a/src/DETHRACE/common/displays.h +++ b/src/DETHRACE/common/displays.h @@ -1,14 +1,16 @@ #ifndef _DISPLAYS_H_ #define _DISPLAYS_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern int gDim_amount; // Offset: 0 // Size: 56 // EAX: pStr // EDX: pFudge_colon -void GetTimerString(char *pStr, int pFudge_colon); +void GetTimerString(char* pStr, int pFudge_colon); // Offset: 56 // Size: 116 @@ -39,7 +41,7 @@ int HeadupActive(int pIndex); // EDX: pX // EBX: pY // ECX: pFont -void DRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText, int pRight_edge); +void DRPixelmapText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText, int pRight_edge); // Offset: 1032 // Size: 550 @@ -47,7 +49,7 @@ void DRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, cha // EDX: pX // EBX: pY // ECX: pFont -void DRPixelmapCleverText2(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, signed char *pText, int pRight_edge); +void DRPixelmapCleverText2(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, signed char* pText, int pRight_edge); // Offset: 1584 // Size: 248 @@ -55,11 +57,11 @@ void DRPixelmapCleverText2(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFo // EDX: pLeft // EBX: pTop // ECX: pRight -void DeviouslyDimRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); +void DeviouslyDimRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); // Offset: 1832 // Size: 461 -void DimRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); +void DimRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); // Offset: 2296 // Size: 352 @@ -82,7 +84,7 @@ void DubreyBar(int pX_index, int pY, int pColour); // EDX: pLevel // EBX: pName // ECX: pBar_colour -void DoPSPowerHeadup(int pY, int pLevel, char *pName, int pBar_colour); +void DoPSPowerHeadup(int pY, int pLevel, char* pName, int pBar_colour); // Offset: 3168 // Size: 163 @@ -102,13 +104,13 @@ int FindAHeadupHoleWoofBarkSoundsABitRude(int pSlot_index); // Size: 144 // EAX: pFont // EDX: pText -int DRTextWidth(tDR_font *pFont, char *pText); +int DRTextWidth(tDR_font* pFont, char* pText); // Offset: 5952 // Size: 206 // EAX: pFont // EDX: pText -int DRTextCleverWidth(tDR_font *pFont, signed char *pText); +int DRTextCleverWidth(tDR_font* pFont, signed char* pText); // Offset: 6160 // Size: 98 @@ -116,17 +118,17 @@ int DRTextCleverWidth(tDR_font *pFont, signed char *pText); // EDX: pX // EBX: pY // ECX: pFont -void DRPixelmapCentredText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText); +void DRPixelmapCentredText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText); // Offset: 6260 // Size: 77 // EAX: pText -int IsHeadupTextClever(signed char *pText); +int IsHeadupTextClever(signed char* pText); // Offset: 6340 // Size: 562 // EAX: pHeadup -int MungeHeadupWidth(tHeadup *pHeadup); +int MungeHeadupWidth(tHeadup* pHeadup); // Offset: 6904 // Size: 605 @@ -134,7 +136,7 @@ int MungeHeadupWidth(tHeadup *pHeadup); // EDX: pFlash_rate // EBX: pLifetime // ECX: pFont_index -int NewTextHeadupSlot2(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char *pText, int pQueue_it); +int NewTextHeadupSlot2(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char* pText, int pQueue_it); // Offset: 7512 // Size: 71 @@ -142,7 +144,7 @@ int NewTextHeadupSlot2(int pSlot_index, int pFlash_rate, int pLifetime, int pFon // EDX: pFlash_rate // EBX: pLifetime // ECX: pFont_index -int NewTextHeadupSlot(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char *pText); +int NewTextHeadupSlot(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char* pText); // Offset: 7584 // Size: 496 @@ -172,7 +174,7 @@ void MoveHeadupTo(int pHeadup_index, int pNew_x, int pNew_y); // Size: 83 // EAX: pHeadup_index // EDX: pNew_text -void ChangeHeadupText(int pHeadup_index, char *pNew_text); +void ChangeHeadupText(int pHeadup_index, char* pNew_text); // Offset: 8964 // Size: 199 @@ -193,7 +195,7 @@ void DoDamageScreen(tU32 pThe_time); // Offset: 9664 // Size: 404 -void PoshDrawLine(float pAngle, br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); +void PoshDrawLine(float pAngle, br_pixelmap* pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); // Offset: 10068 // Size: 3133 @@ -213,7 +215,7 @@ void ChangingView(); // Size: 445 // EAX: pAmount // EDX: pPrefix_text -void EarnCredits2(int pAmount, char *pPrefix_text); +void EarnCredits2(int pAmount, char* pPrefix_text); // Offset: 14600 // Size: 50 @@ -236,7 +238,7 @@ void AwardTime(tU32 pTime); // EDX: pLeft // EBX: pTop // ECX: pRight -void DrawRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); +void DrawRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); // Offset: 15208 // Size: 178 @@ -244,7 +246,7 @@ void DrawRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int // EDX: pLeft // EBX: pTop // ECX: pRight -void DrawRRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); +void DrawRRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); // Offset: 15388 // Size: 620 @@ -252,7 +254,7 @@ void DrawRRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int // EDX: pText // EBX: pPixelmap // ECX: pLeft -void OoerrIveGotTextInMeBoxMissus(int pFont_index, char *pText, br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pCentred); +void OoerrIveGotTextInMeBoxMissus(int pFont_index, char* pText, br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pCentred); // Offset: 16008 // Size: 117 @@ -260,7 +262,7 @@ void OoerrIveGotTextInMeBoxMissus(int pFont_index, char *pText, br_pixelmap *pPi // EDX: pX // EBX: pY // ECX: pColour -void TransBrPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, br_uint_32 pColour, br_font *pFont, signed char *pText); +void TransBrPixelmapText(br_pixelmap* pPixelmap, int pX, int pY, br_uint_32 pColour, br_font* pFont, signed char* pText); // Offset: 16128 // Size: 250 @@ -268,7 +270,7 @@ void TransBrPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, br_uint_32 pCol // EDX: pX // EBX: pY // ECX: pFont -void TransDRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText, int pRight_edge); +void TransDRPixelmapText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText, int pRight_edge); // Offset: 16380 // Size: 250 @@ -276,6 +278,6 @@ void TransDRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont // EDX: pX // EBX: pY // ECX: pFont -void TransDRPixelmapCleverText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText, int pRight_edge); +void TransDRPixelmapCleverText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText, int pRight_edge); #endif diff --git a/src/DETHRACE/common/globvrkm.h b/src/DETHRACE/common/globvrkm.h index 585787cc..adf6a733 100644 --- a/src/DETHRACE/common/globvrkm.h +++ b/src/DETHRACE/common/globvrkm.h @@ -1,7 +1,9 @@ #ifndef _GLOBVRKM_H_ #define _GLOBVRKM_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern float gRecovery_cost[3]; #endif diff --git a/src/DETHRACE/common/graphics.h b/src/DETHRACE/common/graphics.h index ece4fc3d..35715e06 100644 --- a/src/DETHRACE/common/graphics.h +++ b/src/DETHRACE/common/graphics.h @@ -1,8 +1,10 @@ #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern br_scalar gAmbient_adjustment; // Offset: 0 // Size: 44 @@ -20,7 +22,7 @@ void ResetLollipopQueue(); // Size: 124 // EAX: pActor // EDX: pIndex -int AddToLollipopQueue(br_actor *pActor, int pIndex); +int AddToLollipopQueue(br_actor* pActor, int pIndex); // Offset: 256 // Size: 237 @@ -32,7 +34,7 @@ void RenderLollipops(); // EDX: pX1 // EBX: pY1 // ECX: pX2 -void DRDrawLine(br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); +void DRDrawLine(br_pixelmap* pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); // Offset: 604 // Size: 90 @@ -40,7 +42,7 @@ void DRDrawLine(br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pCo // EDX: pX // EBX: pY // ECX: pY_pitch -void DrawDigitAt(br_pixelmap *gImage, int pX, int pY, int pY_pitch, int pValue); +void DrawDigitAt(br_pixelmap* gImage, int pX, int pY, int pY_pitch, int pValue); // Offset: 696 // Size: 156 @@ -48,12 +50,12 @@ void DrawDigitAt(br_pixelmap *gImage, int pX, int pY, int pY_pitch, int pValue); // EDX: pX // EBX: pY // ECX: pX_pitch -void DrawNumberAt(br_pixelmap *gImage, int pX, int pY, int pX_pitch, int pY_pitch, int pValue, int pDigit_count, int pLeading_zeroes); +void DrawNumberAt(br_pixelmap* gImage, int pX, int pY, int pX_pitch, int pY_pitch, int pValue, int pDigit_count, int pLeading_zeroes); // Offset: 852 // Size: 350 // EAX: pPalette -void BuildColourTable(br_pixelmap *pPalette); +void BuildColourTable(br_pixelmap* pPalette); // Offset: 1204 // Size: 44 @@ -63,14 +65,14 @@ void ClearConcussion(); // Size: 137 // EAX: pSource // EDX: pCount -tS8* SkipLines(tS8 *pSource, int pCount); +tS8* SkipLines(tS8* pSource, int pCount); // Offset: 1388 // Size: 126 // EAX: pDst // EDX: pSrc // EBX: pN -void CopyWords(char *pDst, char *pSrc, int pN); +void CopyWords(char* pDst, char* pSrc, int pN); // Offset: 1516 // Size: 606 @@ -78,7 +80,7 @@ void CopyWords(char *pDst, char *pSrc, int pN); // EDX: pDest_x // EBX: pOffset_x // ECX: pDest_y -void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8 *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); +void Copy8BitStripImageTo16Bit(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); // Offset: 2124 // Size: 651 @@ -86,7 +88,7 @@ void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 // EDX: pDest_x // EBX: pOffset_x // ECX: pDest_y -void CopyStripImage(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8 *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); +void CopyStripImage(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); // Offset: 2776 // Size: 507 @@ -117,24 +119,24 @@ void ScreenLarger(); // EAX: pPalette // EDX: pFirst_colour // EBX: pCount -void DRSetPaletteEntries(br_pixelmap *pPalette, int pFirst_colour, int pCount); +void DRSetPaletteEntries(br_pixelmap* pPalette, int pFirst_colour, int pCount); // Offset: 4144 // Size: 128 // EAX: pThe_palette // EDX: pSet_current_palette -void DRSetPalette3(br_pixelmap *pThe_palette, int pSet_current_palette); +void DRSetPalette3(br_pixelmap* pThe_palette, int pSet_current_palette); // Offset: 4272 // Size: 140 // EAX: pThe_palette // EDX: pSet_current_palette -void DRSetPalette2(br_pixelmap *pThe_palette, int pSet_current_palette); +void DRSetPalette2(br_pixelmap* pThe_palette, int pSet_current_palette); // Offset: 4412 // Size: 50 // EAX: pThe_palette -void DRSetPalette(br_pixelmap *pThe_palette); +void DRSetPalette(br_pixelmap* pThe_palette); // Offset: 4464 // Size: 415 @@ -143,7 +145,7 @@ void InitializePalettes(); // Offset: 4880 // Size: 66 // EAX: pPal_name -void SwitchToPalette(char *pPal_name); +void SwitchToPalette(char* pPal_name); // Offset: 4948 // Size: 104 @@ -191,7 +193,7 @@ void SufferFromConcussion(float pSeriousness); // EDX: pDepth_buffer // EBX: pCamera // ECX: pCamera_to_world -void ProcessNonTrackActors(br_pixelmap *pRender_buffer, br_pixelmap *pDepth_buffer, br_actor *pCamera, br_matrix34 *pCamera_to_world, br_matrix34 *pOld_camera_matrix); +void ProcessNonTrackActors(br_pixelmap* pRender_buffer, br_pixelmap* pDepth_buffer, br_actor* pCamera, br_matrix34* pCamera_to_world, br_matrix34* pOld_camera_matrix); // Offset: 7188 // Size: 119 @@ -204,14 +206,14 @@ int OppositeColour(int pColour); // EDX: pTime // EBX: pTrans // ECX: pPos -void DrawMapBlip(tCar_spec *pCar, tU32 pTime, br_matrix34 *pTrans, br_vector3 *pPos, int pColour); +void DrawMapBlip(tCar_spec* pCar, tU32 pTime, br_matrix34* pTrans, br_vector3* pPos, int pColour); // Offset: 9112 // Size: 257 // EAX: pTime // EDX: pPos // EBX: pColour -void DrawMapSmallBlip(tU32 pTime, br_vector3 *pPos, int pColour); +void DrawMapSmallBlip(tU32 pTime, br_vector3* pPos, int pColour); // Offset: 9372 // Size: 651 @@ -219,19 +221,19 @@ void DrawMapSmallBlip(tU32 pTime, br_vector3 *pPos, int pColour); // EDX: pCar // EBX: p1 // ECX: p2 -void MungeClipPlane(br_vector3 *pLight, tCar_spec *pCar, br_vector3 *p1, br_vector3 *p2, br_scalar pY_offset); +void MungeClipPlane(br_vector3* pLight, tCar_spec* pCar, br_vector3* p1, br_vector3* p2, br_scalar pY_offset); // Offset: 10024 // Size: 180 // EAX: pCar // EDX: pLight // EBX: pIndex_1 -void TryThisEdge(tCar_spec *pCar, br_vector3 *pLight, int pIndex_1, br_scalar pSign_1, int pIndex_2, br_scalar pSign_2, int pPoint_index_1, int pPoint_index_2, br_scalar pY_offset); +void TryThisEdge(tCar_spec* pCar, br_vector3* pLight, int pIndex_1, br_scalar pSign_1, int pIndex_2, br_scalar pSign_2, int pPoint_index_1, int pPoint_index_2, br_scalar pY_offset); // Offset: 10204 // Size: 104 // EAX: pPos -br_scalar DistanceFromPlane(br_vector3 *pPos, br_scalar pA, br_scalar pB, br_scalar pC, br_scalar pD); +br_scalar DistanceFromPlane(br_vector3* pPos, br_scalar pA, br_scalar pB, br_scalar pC, br_scalar pD); // Offset: 10308 // Size: 84 @@ -247,7 +249,7 @@ void EnableLights(); // EDX: pWorld // EBX: pTrack_spec // ECX: pCamera -void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform, br_scalar pDistance_factor); +void ProcessShadow(tCar_spec* pCar, br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform, br_scalar pDistance_factor); // Offset: 15140 // Size: 519 @@ -255,7 +257,7 @@ void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, // EDX: pTrack_spec // EBX: pCamera // ECX: pCamera_to_world_transform -void RenderShadows(br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform); +void RenderShadows(br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform); // Offset: 15660 // Size: 247 @@ -266,7 +268,7 @@ void FlashyMapCheckpoint(int pIndex, tU32 pTime); // Offset: 15908 // Size: 252 // EAX: pPixelmap -int ConditionallyFillWithSky(br_pixelmap *pPixelmap); +int ConditionallyFillWithSky(br_pixelmap* pPixelmap); // Offset: 16160 // Size: 3751 @@ -293,7 +295,7 @@ void ResetPalette(); // Size: 65 // EAX: pPtr // EDX: pDarken_amount -void Darken(tU8 *pPtr, unsigned int pDarken_amount); +void Darken(tU8* pPtr, unsigned int pDarken_amount); // Offset: 20200 // Size: 194 @@ -319,7 +321,7 @@ void EnsureRenderPalette(); // Offset: 20812 // Size: 248 // EAX: pPixmap_name -void SplashScreenWith(char *pPixmap_name); +void SplashScreenWith(char* pPixmap_name); // Offset: 21060 // Size: 48 @@ -327,7 +329,7 @@ void EnsurePaletteUp(); // Offset: 21108 // Size: 103 -br_uint_32 AmbientificateMaterial(br_material *pMat, void *pArg); +br_uint_32 AmbientificateMaterial(br_material* pMat, void* pArg); // Offset: 21212 // Size: 60 @@ -343,14 +345,14 @@ void InitAmbience(); // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleMaskedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); +void DRPixelmapRectangleMaskedCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); // Offset: 22120 // Size: 86 // EAX: pDest_x // EDX: pDest_y // EBX: pSource -void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource); +void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource); // Offset: 22208 // Size: 332 @@ -358,7 +360,7 @@ void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource); // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleOnscreenCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); +void DRPixelmapRectangleOnscreenCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); // Offset: 22540 // Size: 823 @@ -366,7 +368,7 @@ void DRPixelmapRectangleOnscreenCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_i // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight, tX1616 pShear); +void DRPixelmapRectangleShearedCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight, tX1616 pShear); // Offset: 23364 // Size: 341 @@ -374,7 +376,7 @@ void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_in // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleVScaledCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); +void DRPixelmapRectangleVScaledCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); // Offset: 23708 // Size: 87 @@ -411,7 +413,7 @@ void SaveTransient(int pIndex, int pX_coord, int pY_coord); // Offset: 24592 // Size: 214 // EAX: pGib -void DrawCursorGiblet(tCursor_giblet *pGib); +void DrawCursorGiblet(tCursor_giblet* pGib); // Offset: 24808 // Size: 743 @@ -460,7 +462,7 @@ void InitDRFonts(); // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DrawDropImage(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip, int pOffset); +void DrawDropImage(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip, int pOffset); // Offset: 28956 // Size: 161 @@ -468,7 +470,7 @@ void DrawDropImage(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropInImageFromTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropInImageFromTop(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29120 // Size: 150 @@ -476,7 +478,7 @@ void DropInImageFromTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropOutImageThruBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropOutImageThruBottom(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29272 // Size: 152 @@ -484,7 +486,7 @@ void DropOutImageThruBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_c // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropInImageFromBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropInImageFromBottom(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29424 // Size: 161 @@ -492,7 +494,7 @@ void DropInImageFromBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_cl // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropOutImageThruTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropOutImageThruTop(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29588 // Size: 262 @@ -500,7 +502,7 @@ void DropOutImageThruTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip // EDX: pLeft // EBX: pTop // ECX: pPercentage -void DrawTellyLine(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage); +void DrawTellyLine(br_pixelmap* pImage, int pLeft, int pTop, int pPercentage); // Offset: 29852 // Size: 203 @@ -508,21 +510,21 @@ void DrawTellyLine(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage); // EDX: pLeft // EBX: pTop // ECX: pPercentage -void DrawTellyImage(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage); +void DrawTellyImage(br_pixelmap* pImage, int pLeft, int pTop, int pPercentage); // Offset: 30056 // Size: 194 // EAX: pImage // EDX: pLeft // EBX: pTop -void TellyInImage(br_pixelmap *pImage, int pLeft, int pTop); +void TellyInImage(br_pixelmap* pImage, int pLeft, int pTop); // Offset: 30252 // Size: 220 // EAX: pImage // EDX: pLeft // EBX: pTop -void TellyOutImage(br_pixelmap *pImage, int pLeft, int pTop); +void TellyOutImage(br_pixelmap* pImage, int pLeft, int pTop); // Offset: 30472 // Size: 45 @@ -543,7 +545,7 @@ void InitShadow(); // Offset: 31320 // Size: 140 -br_uint_32 SaveShadeTable(br_pixelmap *pTable, void *pArg); +br_uint_32 SaveShadeTable(br_pixelmap* pTable, void* pArg); // Offset: 31460 // Size: 71 @@ -571,6 +573,6 @@ int SwitchToLoresMode(); // EDX: pSource // EBX: pSource_width // ECX: pSource_height -void DRPixelmapDoubledCopy(br_pixelmap *pDestn, br_pixelmap *pSource, int pSource_width, int pSource_height, int pX_offset, int pY_offset); +void DRPixelmapDoubledCopy(br_pixelmap* pDestn, br_pixelmap* pSource, int pSource_width, int pSource_height, int pX_offset, int pY_offset); #endif diff --git a/src/DETHRACE/common/init.c b/src/DETHRACE/common/init.c index e6f80c18..2cfc4888 100644 --- a/src/DETHRACE/common/init.c +++ b/src/DETHRACE/common/init.c @@ -2,26 +2,26 @@ #include -#include "pc-dos/dossys.h" -#include "common/globvars.h" -#include "common/errors.h" -#include "common/drmem.h" -#include "common/graphics.h" +#include "common/depth.h" +#include "common/displays.h" #include "common/drdebug.h" +#include "common/drmem.h" +#include "common/errors.h" +#include "common/flicplay.h" +#include "common/globvars.h" +#include "common/grafdata.h" +#include "common/graphics.h" #include "common/loading.h" #include "common/netgame.h" -#include "common/replay.h" -#include "common/grafdata.h" -#include "common/flicplay.h" -#include "common/sound.h" -#include "common/displays.h" +#include "common/oil.h" +#include "common/pedestrn.h" #include "common/powerup.h" #include "common/raycast.h" -#include "common/depth.h" -#include "common/world.h" -#include "common/oil.h" +#include "common/replay.h" #include "common/skidmark.h" -#include "common/pedestrn.h" +#include "common/sound.h" +#include "common/world.h" +#include "pc-dos/dossys.h" #include "brender.h" @@ -35,7 +35,7 @@ int gRender_indent; int gCredits_per_rank[3]; int gInitial_credits[3]; int gNet_mode_of_last_game; -br_material *gDefault_track_material; +br_material* gDefault_track_material; // Offset: 0 // Size: 115 @@ -80,7 +80,7 @@ void InstallFindFailedHooks() { // Offset: 1992 // Size: 158 void AllocateStandardLamp() { - br_actor *lamp; + br_actor* lamp; int i; } @@ -123,82 +123,83 @@ void Init2DStuff() { // Size: 671 // EAX: pArgc // EDX: pArgv -void InitialiseApplication(int pArgc, char **pArgv) { - gProgram_state.sausage_eater_mode = gSausage_override; - DrDebugLog(gSausage_override, *pArgv); - if (gAustere_override || PDDoWeLeadAnAustereExistance() != 0) { - gAusterity_mode = 1; - } - - srand(time(NULL)); - BrV1dbBeginWrapper_Float(); - CreateStainlessClasses(); - InitWobbleStuff(); - LoadGeneralParameters(); - DefaultNetName(); - strcpy(gProgram_state.player_name[0], "MAX DAMAGE"); - strcpy(gProgram_state.player_name[1], "DIE ANNA"); - - RestoreOptions(); - LoadKeyMapping(); - if (!PDInitScreenVars(pArgc, pArgv)) { - FatalError(0); - } - CalcGrafDataIndex(); - InitializeBRenderEnvironment(); - InitDRFonts(); - InitBRFonts(); - LoadMiscStrings(); - LoadInRegistees(); - FinishLoadingGeneral(); - InitializePalettes(); - AustereWarning(); - LoadInterfaceStrings(); - InitializeActionReplay(); - FlicPaletteAllocate(); - InitInterfaceLoadState(); - InitTransientBitmaps(); - InitSound(); - InitHeadups(); - gDefault_track_material = BrMaterialAllocate("gDefault_track_material"); - //TODO: - //BYTE2(gDefault_track_material->map_transform.m[2][1]) = -29; - //BYTE3(gDefault_track_material->map_transform.m[2][1]) = 1; - BrMaterialAdd(gDefault_track_material); - InitShadow(); - InitFlics(); - AllocateStandardLamp(); - InitAmbience(); - LoadOpponents(); - LoadPowerups(); - LoadRaces(gRace_list, &gNumber_of_races, -1); - RevertPalette(); - InitRayCasting(); - InitDepthEffects(); - InitialiseStorageSpace(&gOur_car_storage_space, 40, 2, 40, 30); - InitialiseStorageSpace(&gTheir_cars_storage_space, 300, 50, 500, 200); - InitialiseStorageSpace(&gPedestrians_storage_space, 500, 10, 0, 0); - InitialiseStorageSpace(&gTrack_storage_space, 400, 50, 400, 1000); - InitOilSpills(); - if (gAustere_time) { - while (PDGetTotalTime() - gAustere_time < 2000) { - } - } - ClearEntireScreen(); - InitSkids(); - InitPeds(); - gProgram_state.cars_available[42] = 0; - gCD_is_in_drive = TestForOriginalCarmaCDinDrive(); - SwitchToLoresMode(); - DrDebugLog(0, "AFTER APPLICATION INITIALISATION"); +void InitialiseApplication(int pArgc, char** pArgv) { + gProgram_state.sausage_eater_mode = gSausage_override; + DrDebugLog(gSausage_override, *pArgv); + if (gAustere_override || PDDoWeLeadAnAustereExistance() != 0) { + gAusterity_mode = 1; + } + + srand(time(NULL)); + BrV1dbBeginWrapper_Float(); + CreateStainlessClasses(); + InitWobbleStuff(); + LoadGeneralParameters(); + DefaultNetName(); + strcpy(gProgram_state.player_name[0], "MAX DAMAGE"); + strcpy(gProgram_state.player_name[1], "DIE ANNA"); + + RestoreOptions(); + LoadKeyMapping(); + if (!PDInitScreenVars(pArgc, pArgv)) { + FatalError(0); + } + CalcGrafDataIndex(); + InitializeBRenderEnvironment(); + InitDRFonts(); + InitBRFonts(); + LoadMiscStrings(); + LoadInRegistees(); + FinishLoadingGeneral(); + InitializePalettes(); + AustereWarning(); + LoadInterfaceStrings(); + InitializeActionReplay(); + FlicPaletteAllocate(); + InitInterfaceLoadState(); + InitTransientBitmaps(); + InitSound(); + InitHeadups(); + gDefault_track_material = BrMaterialAllocate("gDefault_track_material"); + //TODO: + //BYTE2(gDefault_track_material->map_transform.m[2][1]) = -29; + //BYTE3(gDefault_track_material->map_transform.m[2][1]) = 1; + BrMaterialAdd(gDefault_track_material); + InitShadow(); + InitFlics(); + AllocateStandardLamp(); + InitAmbience(); + LoadOpponents(); + LoadPowerups(); + LoadRaces(gRace_list, &gNumber_of_races, -1); + RevertPalette(); + InitRayCasting(); + InitDepthEffects(); + InitialiseStorageSpace(&gOur_car_storage_space, 40, 2, 40, 30); + InitialiseStorageSpace(&gTheir_cars_storage_space, 300, 50, 500, 200); + InitialiseStorageSpace(&gPedestrians_storage_space, 500, 10, 0, 0); + InitialiseStorageSpace(&gTrack_storage_space, 400, 50, 400, 1000); + InitOilSpills(); + if (gAustere_time) { + while (PDGetTotalTime() - gAustere_time < 2000) { + } + } + ClearEntireScreen(); + InitSkids(); + InitPeds(); + gProgram_state.cars_available[42] = 0; + gCD_is_in_drive = TestForOriginalCarmaCDinDrive(); + SwitchToLoresMode(); + DrDebugLog(0, "AFTER APPLICATION INITIALISATION"); } // Offset: 6004 // Size: 64 // EAX: pArgc // EDX: pArgv -void InitialiseDeathRace(int pArgc, char **pArgv) { +void InitialiseDeathRace(int pArgc, char** pArgv) { PDInitialiseSystem(); + InitialiseApplication(pArgc, pArgv); //dword_112DF8 = 1; // never checked by game } @@ -228,7 +229,7 @@ void DisposeTrack() { // Offset: 6788 // Size: 97 // EAX: pMaterial -void CopyMaterialColourFromIndex(br_material *pMaterial) { +void CopyMaterialColourFromIndex(br_material* pMaterial) { } // Offset: 6888 @@ -251,4 +252,3 @@ int GetScreenSize() { // EAX: pNew_size void SetScreenSize(int pNew_size) { } - diff --git a/src/DETHRACE/common/init.h b/src/DETHRACE/common/init.h index 52eb40f4..b508787f 100644 --- a/src/DETHRACE/common/init.h +++ b/src/DETHRACE/common/init.h @@ -1,8 +1,12 @@ #ifndef _INIT_H_ #define _INIT_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern int gCredits_per_rank[3]; +extern int gInitial_credits[3]; +extern int gInitial_rank; // Offset: 0 // Size: 115 @@ -64,13 +68,13 @@ void Init2DStuff(); // Size: 671 // EAX: pArgc // EDX: pArgv -void InitialiseApplication(int pArgc, char **pArgv); +void InitialiseApplication(int pArgc, char** pArgv); // Offset: 6004 // Size: 64 // EAX: pArgc // EDX: pArgv -void InitialiseDeathRace(int pArgc, char **pArgv); +void InitialiseDeathRace(int pArgc, char** pArgv); // Offset: 6068 // Size: 427 @@ -92,7 +96,7 @@ void DisposeTrack(); // Offset: 6788 // Size: 97 // EAX: pMaterial -void CopyMaterialColourFromIndex(br_material *pMaterial); +void CopyMaterialColourFromIndex(br_material* pMaterial); // Offset: 6888 // Size: 1230 diff --git a/src/DETHRACE/common/loading.c b/src/DETHRACE/common/loading.c index b5a97ad1..4f893e78 100644 --- a/src/DETHRACE/common/loading.c +++ b/src/DETHRACE/common/loading.c @@ -1,9 +1,24 @@ #include "loading.h" +#include #include +#include "displays.h" +#include "errors.h" #include "globvars.h" +#include "globvrkm.h" +#include "graphics.h" +#include "init.h" +#include "newgame.h" +#include "opponent.h" +#include "pc-dos/dossys.h" +#include "pedestrn.h" +#include "sound.h" #include "utility.h" +#include "world.h" + +#define HITHER_MULTIPLIER 2.0f +#define AMBIENT_MULTIPLIER 0.0099999998f char* gWheel_actor_names[6]; int gFunk_groove_flags[30]; @@ -13,7 +28,7 @@ char* gDrivable_car_names[6]; char* gYour_car_names[2][6]; char gDef_def_water_screen_name[32]; tHeadup_info gHeadup_image_info[31]; -int gAllow_open_to_fail; +int gAllow_open_to_fail = 1; br_material* gDestn_screen_mat; br_material* gSource_screen_mat; char* gRaces_file_names[9]; @@ -182,6 +197,146 @@ void LoadGeneralParameters() { int temp; char s[256]; char* str; + + PathCat(the_path, gApplication_path, "ACTORS"); + PathCat(the_path, the_path, "PROG.ACT"); + f = fopen(the_path, "rb"); + if (f) { + fgets(s, 255, f); + fclose(f); + for (i = 0; i < strlen(gDecode_string); i++) { + gDecode_string[i] -= 50; + } + + // trim trailing CRLF etc + while (s[0] != '\0' && s[strlen(s) - 1] < 0x20) { + s[strlen(s) - 1] = 0; + } + + if (strcmp(s, gDecode_string) == 0) { + gDecode_thing = 0; + printf("Expecting decrypted text files!\n"); + } + + for (i = 0; i < strlen(gDecode_string); i++) { + gDecode_string[i] -= 50; + } + } + PathCat(the_path, gApplication_path, "GENERAL.TXT"); + f = DRfopen(the_path, "rt"); + if (!f) { + FatalError(8); + } + gCamera_hither = GetAFloat(f) * HITHER_MULTIPLIER; + gCamera_yon = GetAFloat(f); + gCamera_angle = GetAFloat(f); + gAmbient_adjustment = GetAFloat(f) * AMBIENT_MULTIPLIER; + gDim_amount = GetAnInt(f); + gInitial_rank = GetAnInt(f); + GetThreeInts(f, &gInitial_credits[0], &gInitial_credits[1], &gInitial_credits[2]); + GetThreeInts(f, &gCredits_per_rank[0], &gCredits_per_rank[1], &gCredits_per_rank[2]); + gCar_crush_min_fold = GetAFloat(f); + gCar_crush_max_fold = GetAFloat(f); + gCar_crush_wibble = GetAFloat(f); + gCar_crush_limit_deviant = GetAFloat(f); + gCar_crush_split_chance = GetAFloat(f); + gCar_crush_softness = GetAFloat(f); + GetThreeFloats(f, &gRepair_cost[0], &gRepair_cost[1], &gRepair_cost[2]); + GetThreeFloats(f, &gRecovery_cost[0], &gRecovery_cost[1], &gRecovery_cost[2]); + GetThreeInts(f, &gPed_time_value[0], &gPed_time_value[1], &gPed_time_value[2]); + if (gProgram_state.sausage_eater_mode) { + for (i = 0; i < 7; i++) { + GetALineAndDontArgue(f, s); + } + + GetThreeFloats(f, gCar_time_value, &gCar_time_value[1], &gCar_time_value[2]); + GetThreeFloats(f, gCar_cred_value, &gCar_cred_value[1], &gCar_cred_value[2]); + GetThreeInts(f, gWasted_time, &gWasted_time[1], &gWasted_time[2]); + GetThreeInts(f, gWasted_creds, &gWasted_creds[1], &gWasted_creds[2]); + GetThreeInts(f, gRoll_over_time, &gRoll_over_time[1], &gRoll_over_time[2]); + GetThreeInts(f, gRoll_over_creds, &gRoll_over_creds[1], &gRoll_over_creds[2]); + GetThreeInts(f, gCheck_point_cash, &gCheck_point_cash[1], &gCheck_point_cash[2]); + } else { + GetThreeFloats(f, gCar_time_value, &gCar_time_value[1], &gCar_time_value[2]); + GetThreeFloats(f, gCar_cred_value, &gCar_cred_value[1], &gCar_cred_value[2]); + GetThreeInts(f, gWasted_time, &gWasted_time[1], &gWasted_time[2]); + GetThreeInts(f, gWasted_creds, &gWasted_creds[1], &gWasted_creds[2]); + GetThreeInts(f, gRoll_over_time, &gRoll_over_time[1], &gRoll_over_time[2]); + GetThreeInts(f, gRoll_over_creds, &gRoll_over_creds[1], &gRoll_over_creds[2]); + GetThreeInts(f, gCheck_point_cash, &gCheck_point_cash[1], &gCheck_point_cash[2]); + for (i = 0; i < 7; i++) { + GetALineAndDontArgue(f, s); + } + } + GetThreeInts(f, gJump_start_fine, &gJump_start_fine[1], &gJump_start_fine[2]); + GetThreeInts(f, gPoints_per_second, &gPoints_per_second[1], &gPoints_per_second[2]); + GetThreeInts(f, gCunning_stunt_bonus, &gCunning_stunt_bonus[1], &gCunning_stunt_bonus[2]); + GetAString(f, gBasic_car_names[0]); + GetAString(f, gBasic_car_names[1]); + gKnobbled_frame_period = GetAnInt(f); + if (gKnobbled_frame_period) { + gKnobbled_frame_period = 1000 / gKnobbled_frame_period; + } + gOpponent_nastyness_frigger = GetAFloat(f); + ParseSpecialVolume(f, &gDefault_default_water_spec_vol, gDef_def_water_screen_name); + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 5; i++) { + sscanf(str, "%d", &gInitial_net_credits[i]); + str = strtok(NULL, "\t ,/"); + } + + gTag_start_time = 1000 * GetAnInt(f); + gFox_start_time = 1000 * GetAnInt(f); + + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_repair_cost[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_recovery_cost[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_softness[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_offensive[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%d", &gNet_target[i]); + str = strtok(NULL, "\t ,/"); + } + + gMin_respawn_time = 1000 * GetAnInt(f); + gRespawn_variance = 1000 * GetAnInt(f); + gDemo_rank = GetAnInt(f); + gDemo_armour = GetAnInt(f); + gDemo_power = GetAnInt(f); + gDemo_offensive = GetAnInt(f); + for (i = 0; i < 5; i++) { + gDemo_opponents[i] = GetAnInt(f); + } + + gGravity_multiplier = GetAFloat(f); + gZombie_factor = GetAFloat(f); + gCut_delay_1 = GetAFloat(f); + gCut_delay_2 = GetAFloat(f); + gCut_delay_3 = GetAFloat(f); + gCut_delay_4 = 1.0f; + fclose(f); } // Offset: 3472 @@ -822,6 +977,11 @@ int GetAnInt(FILE* pF) { char s[256]; char* str; int result; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", &result); + return result; } // Offset: 33828 @@ -831,6 +991,11 @@ float GetAFloat(FILE* pF) { char s[256]; char* str; float result; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%f", &result); + return result; } // Offset: 33932 @@ -850,6 +1015,12 @@ float GetAFloatPercent(FILE* pF) { void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%f", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%f", pF2); } // Offset: 34172 @@ -861,6 +1032,14 @@ void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) { void GetThreeFloats(FILE* pF, float* pF1, float* pF2, float* pF3) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%f", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%f", pF2); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%f", pF3); } // Offset: 34344 @@ -871,6 +1050,12 @@ void GetThreeFloats(FILE* pF, float* pF1, float* pF2, float* pF3) { void GetPairOfInts(FILE* pF, int* pF1, int* pF2) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF2); } // Offset: 34476 @@ -882,6 +1067,14 @@ void GetPairOfInts(FILE* pF, int* pF1, int* pF2) { void GetThreeInts(FILE* pF, int* pF1, int* pF2, int* pF3) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF2); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF3); } // Offset: 34648 @@ -904,12 +1097,23 @@ void GetThreeIntsAndAString(FILE* pF, int* pF1, int* pF2, int* pF3, char* pS) { void GetFourInts(FILE* pF, int* pF1, int* pF2, int* pF3, int* pF4) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF2); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF3); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF4); } // Offset: 35056 // Size: 51 // EAX: pF br_scalar GetAScalar(FILE* pF) { + return GetAFloat(pF); } // Offset: 35108 @@ -1000,6 +1204,10 @@ void GetThreeFloatPercents(FILE* pF, float* pF1, float* pF2, float* pF3) { void GetAString(FILE* pF, char* pString) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + strcpy(pString, str); } // Offset: 36396 @@ -1048,8 +1256,89 @@ FILE* OldDRfopen(char* pFilename, char* pMode) { tPath_name CD_dir; tPath_name path_file; tPath_name source_check; - static int source_exists; + static int source_exists = 1; int len; + int c; + + fp = fopen(pFilename, pMode); + + if (fp) { + len = strlen(pFilename) + 1; + if (gDecode_thing != 0) { + if (strcmp(&pFilename[len - 4], ".TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP0.TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP1.TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP2.TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP3.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_0.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_1.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_2.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_3.TXT") != 0 + && strcmp(&pFilename[len - 11], "OPTIONS.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYNAMES.TXT") != 0 + && strcmp(&pFilename[len - 10], "KEYMAP.TXT") != 0 + && strcmp(&pFilename[len - 9], "PATHS.TXT") != 0 + && strcmp(&pFilename[len - 11], "PRATCAM.TXT") != 0) { + + c = fgetc(fp); + if (c != gDecode_thing) { + fclose(fp); + return NULL; + } + ungetc(c, fp); + return fp; + } + } + } + if (gCD_fully_installed) { + return fp; + } + if (source_exists == 1) { + strcpy(path_file, "DATA"); + strcat(path_file, gDir_separator); + strcat(path_file, "PATHS.TXT"); + + if (!PDCheckDriveExists(path_file)) { + source_exists = 0; + return NULL; + } + test1 = fopen(path_file, "rt"); + if (!test1) { + source_exists = 0; + return NULL; + } + + GetALineAndDontArgue(test1, source_check); + strcat(source_check, gDir_separator); + strcat(source_check, "DATA"); + strcat(source_check, gDir_separator); + strcat(source_check, "GENERAL.TXT"); + + fclose(test1); + if (PDCheckDriveExists(source_check)) { + source_exists++; + } else { + PDFatalError("Carmageddon CD not in drive."); + if (gCD_fully_installed) { + source_exists = 0; + } + } + } + if (!source_exists) { + return fp; + } + + data_dir = strstr(pFilename, "DATA"); + if (data_dir != NULL) { + if (GetCDPathFromPathsTxtFile(CD_dir)) { + strcat(CD_dir, gDir_separator); + strcat(CD_dir, data_dir); + if (PDCheckDriveExists(CD_dir)) { + fp = fopen(CD_dir, pMode); + } + } + } + return fp; } // Offset: 38332 @@ -1070,6 +1359,20 @@ FILE* DRfopen(char* pFilename, char* pMode) { FILE* result; tPath_name CD_dir; char msg[336]; + + result = OldDRfopen(pFilename, pMode); + if (!result && !gAllow_open_to_fail) { + if (GetCDPathFromPathsTxtFile(CD_dir) && !PDCheckDriveExists(CD_dir)) { + if (gMisc_strings[0]) { + PDFatalError(GetMiscString(243)); + } else { + PDFatalError("Could not find the Carmageddon CD"); + } + sprintf(msg, "DRfopen( \"%s\", \"%s\" ) failed", pFilename, pMode); + PDFatalError(msg); + } + } + return result; } // Offset: 38604 @@ -1083,6 +1386,7 @@ int GetCDPathFromPathsTxtFile(char* pPath_name) { if (!got_it_already) { sprintf(paths_txt, "%s%s%s", gApplication_path, gDir_separator, "PATHS.TXT"); + printf("%s\n", paths_txt); paths_txt_fp = fopen(paths_txt, "rt"); if (!paths_txt_fp) { return 0; diff --git a/src/DETHRACE/common/newgame.c b/src/DETHRACE/common/newgame.c index 13698b6e..f561f883 100644 --- a/src/DETHRACE/common/newgame.c +++ b/src/DETHRACE/common/newgame.c @@ -1,23 +1,25 @@ #include "newgame.h" -char *gBasic_car_names[2]; +char x[] = "xxxxxxxx.TXT"; +char y[] = "yyyyyyyy.TXT"; +char* gBasic_car_names[2] = { x, y }; tNet_game_options gNet_settings[8]; tRadio_bastards gRadio_bastards[11]; tJoinable_game gGames_to_join[6]; -tNet_game_options *gOptions; +tNet_game_options* gOptions; int gNet_target[7]; int gLast_graph_sel; -tInterface_spec *gThe_interface_spec; +tInterface_spec* gThe_interface_spec; tNet_sequence_type gNet_race_sequence; tNet_game_type gLast_game_type; int gCurrent_net_game_count; tU32 gAnne_flic_data_length; int gShifted_default_yet; int gNet_storage_allocated; -tU8 *gFrank_flic_data; -char *gNet_name; +tU8* gFrank_flic_data; +char* gNet_name; tU32 gFrank_flic_data_length; -tU8 *gAnne_flic_data; +tU8* gAnne_flic_data; int gLast_net_choose_box; int gCurrent_game_selection; int gRace_index; @@ -44,7 +46,7 @@ void FrankAnneStart2() { // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length) { +void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length) { } // Offset: 688 @@ -94,7 +96,7 @@ int DoOnePlayerStart() { // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameUp(int *pCurrent_choice, int *pCurrent_mode) { +int NewNetGameUp(int* pCurrent_choice, int* pCurrent_mode) { int new_sel; int i; } @@ -103,7 +105,7 @@ int NewNetGameUp(int *pCurrent_choice, int *pCurrent_mode) { // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameDown(int *pCurrent_choice, int *pCurrent_mode) { +int NewNetGameDown(int* pCurrent_choice, int* pCurrent_mode) { int new_sel; int i; } @@ -120,7 +122,7 @@ void DisposeJoinableGame(int pIndex) { // EDX: pY_index // EBX: pFont_index // ECX: pText -void DrawAnItem(int pX, int pY_index, int pFont_index, char *pText) { +void DrawAnItem(int pX, int pY_index, int pFont_index, char* pText) { } // Offset: 2292 @@ -141,8 +143,8 @@ void DrawGames(int pCurrent_choice, int pCurrent_mode) { int x_coord; int y_coord; char s[256]; - char *s2; - char *s3; + char* s2; + char* s3; } // Offset: 4236 @@ -160,7 +162,7 @@ void DisposeJoinList(int pExemption) { // Offset: 4420 // Size: 227 // EAX: pGame -void AddToJoinList(tNet_game_details *pGame) { +void AddToJoinList(tNet_game_details* pGame) { int i; int slot_to_use; tU32 this_game_ID; @@ -182,7 +184,7 @@ void NewNetStart2() { // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length) { +void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length) { } // Offset: 4888 @@ -198,13 +200,13 @@ int NewNetDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscap // Size: 72 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGoAhead(int *pCurrent_choice, int *pCurrent_mode) { +int NewNetGoAhead(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 5032 // Size: 287 // EAX: pGame_to_join -tJoin_or_host_result JoinOrHostGame(tNet_game_details **pGame_to_join) { +tJoin_or_host_result JoinOrHostGame(tNet_game_details** pGame_to_join) { static tFlicette flicker_on[2]; static tFlicette flicker_off[2]; static tFlicette push[2]; @@ -217,13 +219,13 @@ tJoin_or_host_result JoinOrHostGame(tNet_game_details **pGame_to_join) { // Offset: 5320 // Size: 223 // EAX: pGame_options -void GetNetOptions(tNet_game_options *pGame_options) { +void GetNetOptions(tNet_game_options* pGame_options) { } // Offset: 5544 // Size: 234 // EAX: pGame_options -void SetNetOptions(tNet_game_options *pGame_options) { +void SetNetOptions(tNet_game_options* pGame_options) { } // Offset: 5780 @@ -301,7 +303,7 @@ void NetCheckboxChanged(int pIndex) { // Size: 153 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptLeft(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptLeft(int* pCurrent_choice, int* pCurrent_mode) { int new_value; } @@ -309,7 +311,7 @@ int NetOptLeft(int *pCurrent_choice, int *pCurrent_mode) { // Size: 157 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptRight(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptRight(int* pCurrent_choice, int* pCurrent_mode) { int new_value; } @@ -317,14 +319,14 @@ int NetOptRight(int *pCurrent_choice, int *pCurrent_mode) { // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptUp(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptUp(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 7300 // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptDown(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptDown(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 7448 @@ -333,14 +335,14 @@ int NetOptDown(int *pCurrent_choice, int *pCurrent_mode) { // EDX: pCurrent_mode // EBX: pX_offset // ECX: pY_offset -int NetRadioClick(int *pCurrent_choice, int *pCurrent_mode, int pX_offset, int pY_offset) { +int NetRadioClick(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset) { int i; } // Offset: 7664 // Size: 142 void RevertToDefaults() { - FILE *f; + FILE* f; tNet_game_options net_options; int i; } @@ -348,7 +350,7 @@ void RevertToDefaults() { // Offset: 7808 // Size: 156 void DefaultNetSettings() { - FILE *f; + FILE* f; int i; } @@ -356,7 +358,7 @@ void DefaultNetSettings() { // Size: 98 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptGoAhead(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptGoAhead(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 8064 @@ -388,7 +390,7 @@ void DrawNetOptBox(int pCurrent_choice, int pCurrent_mode) { // Offset: 8448 // Size: 111 // EAX: pGame_options -void DoNetOptions(tNet_game_options *pGame_options) { +void DoNetOptions(tNet_game_options* pGame_options) { static tFlicette flicker_on[14]; static tFlicette flicker_off[14]; static tFlicette push[14]; @@ -400,7 +402,7 @@ void DoNetOptions(tNet_game_options *pGame_options) { // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetOptions(tNet_game_type pGame_type, tNet_game_options *pGame_options) { +void SetOptions(tNet_game_type pGame_type, tNet_game_options* pGame_options) { } // Offset: 8992 @@ -412,7 +414,7 @@ void DrawNetChooseInitial() { // Size: 250 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseGoAhead(int *pCurrent_choice, int *pCurrent_mode) { +int NetChooseGoAhead(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 9288 @@ -440,7 +442,7 @@ void EraseAGraphBox(int pIndex) { // EDX: pCurrent_mode void DrawNetChoose(int pCurrent_choice, int pCurrent_mode) { char s[256]; - tU32 *k; + tU32* k; int i; } @@ -448,14 +450,14 @@ void DrawNetChoose(int pCurrent_choice, int pCurrent_mode) { // Size: 61 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseLR(int *pCurrent_choice, int *pCurrent_mode) { +int NetChooseLR(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 10356 // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetGameTarget(tNet_game_type *pGame_type, tNet_game_options *pGame_options) { +void SetGameTarget(tNet_game_type* pGame_type, tNet_game_options* pGame_options) { } // Offset: 10548 @@ -463,7 +465,7 @@ void SetGameTarget(tNet_game_type *pGame_type, tNet_game_options *pGame_options) // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -int NetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index) { +int NetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index) { static tFlicette flicker_on[11]; static tFlicette flicker_off[11]; static tFlicette push[11]; @@ -477,26 +479,26 @@ int NetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -void ReadNetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index) { +void ReadNetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index) { } // Offset: 11028 // Size: 56 // EAX: pRank -int ChooseStartRace(int *pRank) { +int ChooseStartRace(int* pRank) { } // Offset: 11084 // Size: 63 // EAX: pNet_game -void SetUpOtherNetThings(tNet_game_details *pNet_game) { +void SetUpOtherNetThings(tNet_game_details* pNet_game) { } // Offset: 11148 // Size: 97 // EAX: pNet_game -void RequestCarDetails(tNet_game_details *pNet_game) { - tNet_message *message; +void RequestCarDetails(tNet_game_details* pNet_game) { + tNet_message* message; } // Offset: 11248 @@ -509,13 +511,13 @@ int PickARandomCar() { // Offset: 11432 // Size: 54 // EAX: pNet_game -void PollCarDetails(tNet_game_details *pNet_game) { +void PollCarDetails(tNet_game_details* pNet_game) { } // Offset: 11488 // Size: 278 // EAX: pOptions -void SetNetAvailability(tNet_game_options *pOptions) { +void SetNetAvailability(tNet_game_options* pOptions) { int i; } @@ -525,7 +527,7 @@ void SetNetAvailability(tNet_game_options *pOptions) { // EDX: pOptions // EBX: pCar_index // ECX: pIm_the_host_so_fuck_off -int ChooseNetCar(tNet_game_details *pNet_game, tNet_game_options *pOptions, int *pCar_index, int pIm_the_host_so_fuck_off) { +int ChooseNetCar(tNet_game_details* pNet_game, tNet_game_options* pOptions, int* pCar_index, int pIm_the_host_so_fuck_off) { tS32 start_time; int i; int result; @@ -546,12 +548,11 @@ void DisposeNetStorageSpace() { // Offset: 12344 // Size: 793 int DoMultiPlayerStart() { - tNet_game_details *game_to_join; + tNet_game_details* game_to_join; char s[256]; - char *s2; + char* s2; tNet_game_type new_game_type; tNet_game_options new_game_options; int start_rank; int car_index; } - diff --git a/src/DETHRACE/common/newgame.h b/src/DETHRACE/common/newgame.h index d9539bb5..d3d08b7b 100644 --- a/src/DETHRACE/common/newgame.h +++ b/src/DETHRACE/common/newgame.h @@ -1,8 +1,31 @@ #ifndef _NEWGAME_H_ #define _NEWGAME_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern char* gBasic_car_names[2]; +extern tNet_game_options gNet_settings[8]; +extern tRadio_bastards gRadio_bastards[11]; +extern tJoinable_game gGames_to_join[6]; +extern tNet_game_options* gOptions; +extern int gNet_target[7]; +extern int gLast_graph_sel; +extern tInterface_spec* gThe_interface_spec; +extern tNet_sequence_type gNet_race_sequence; +extern tNet_game_type gLast_game_type; +extern int gCurrent_net_game_count; +extern tU32 gAnne_flic_data_length; +extern int gShifted_default_yet; +extern int gNet_storage_allocated; +extern tU8* gFrank_flic_data; +extern char* gNet_name; +extern tU32 gFrank_flic_data_length; +extern tU8* gAnne_flic_data; +extern int gLast_net_choose_box; +extern int gCurrent_game_selection; +extern int gRace_index; +extern int gRadio_selected; // Offset: 0 // Size: 149 @@ -22,7 +45,7 @@ void FrankAnneStart2(); // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length); +void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length); // Offset: 688 // Size: 203 @@ -54,13 +77,13 @@ int DoOnePlayerStart(); // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameUp(int *pCurrent_choice, int *pCurrent_mode); +int NewNetGameUp(int* pCurrent_choice, int* pCurrent_mode); // Offset: 1832 // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameDown(int *pCurrent_choice, int *pCurrent_mode); +int NewNetGameDown(int* pCurrent_choice, int* pCurrent_mode); // Offset: 2096 // Size: 70 @@ -73,7 +96,7 @@ void DisposeJoinableGame(int pIndex); // EDX: pY_index // EBX: pFont_index // ECX: pText -void DrawAnItem(int pX, int pY_index, int pFont_index, char *pText); +void DrawAnItem(int pX, int pY_index, int pFont_index, char* pText); // Offset: 2292 // Size: 119 @@ -99,7 +122,7 @@ void DisposeJoinList(int pExemption); // Offset: 4420 // Size: 227 // EAX: pGame -void AddToJoinList(tNet_game_details *pGame); +void AddToJoinList(tNet_game_details* pGame); // Offset: 4648 // Size: 111 @@ -115,7 +138,7 @@ void NewNetStart2(); // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length); +void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length); // Offset: 4888 // Size: 72 @@ -129,22 +152,22 @@ int NewNetDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscap // Size: 72 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGoAhead(int *pCurrent_choice, int *pCurrent_mode); +int NewNetGoAhead(int* pCurrent_choice, int* pCurrent_mode); // Offset: 5032 // Size: 287 // EAX: pGame_to_join -tJoin_or_host_result JoinOrHostGame(tNet_game_details **pGame_to_join); +tJoin_or_host_result JoinOrHostGame(tNet_game_details** pGame_to_join); // Offset: 5320 // Size: 223 // EAX: pGame_options -void GetNetOptions(tNet_game_options *pGame_options); +void GetNetOptions(tNet_game_options* pGame_options); // Offset: 5544 // Size: 234 // EAX: pGame_options -void SetNetOptions(tNet_game_options *pGame_options); +void SetNetOptions(tNet_game_options* pGame_options); // Offset: 5780 // Size: 72 @@ -209,25 +232,25 @@ void NetCheckboxChanged(int pIndex); // Size: 153 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptLeft(int *pCurrent_choice, int *pCurrent_mode); +int NetOptLeft(int* pCurrent_choice, int* pCurrent_mode); // Offset: 6992 // Size: 157 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptRight(int *pCurrent_choice, int *pCurrent_mode); +int NetOptRight(int* pCurrent_choice, int* pCurrent_mode); // Offset: 7152 // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptUp(int *pCurrent_choice, int *pCurrent_mode); +int NetOptUp(int* pCurrent_choice, int* pCurrent_mode); // Offset: 7300 // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptDown(int *pCurrent_choice, int *pCurrent_mode); +int NetOptDown(int* pCurrent_choice, int* pCurrent_mode); // Offset: 7448 // Size: 213 @@ -235,7 +258,7 @@ int NetOptDown(int *pCurrent_choice, int *pCurrent_mode); // EDX: pCurrent_mode // EBX: pX_offset // ECX: pY_offset -int NetRadioClick(int *pCurrent_choice, int *pCurrent_mode, int pX_offset, int pY_offset); +int NetRadioClick(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset); // Offset: 7664 // Size: 142 @@ -249,7 +272,7 @@ void DefaultNetSettings(); // Size: 98 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptGoAhead(int *pCurrent_choice, int *pCurrent_mode); +int NetOptGoAhead(int* pCurrent_choice, int* pCurrent_mode); // Offset: 8064 // Size: 202 @@ -276,13 +299,13 @@ void DrawNetOptBox(int pCurrent_choice, int pCurrent_mode); // Offset: 8448 // Size: 111 // EAX: pGame_options -void DoNetOptions(tNet_game_options *pGame_options); +void DoNetOptions(tNet_game_options* pGame_options); // Offset: 8560 // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetOptions(tNet_game_type pGame_type, tNet_game_options *pGame_options); +void SetOptions(tNet_game_type pGame_type, tNet_game_options* pGame_options); // Offset: 8992 // Size: 44 @@ -292,7 +315,7 @@ void DrawNetChooseInitial(); // Size: 250 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseGoAhead(int *pCurrent_choice, int *pCurrent_mode); +int NetChooseGoAhead(int* pCurrent_choice, int* pCurrent_mode); // Offset: 9288 // Size: 182 @@ -320,42 +343,42 @@ void DrawNetChoose(int pCurrent_choice, int pCurrent_mode); // Size: 61 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseLR(int *pCurrent_choice, int *pCurrent_mode); +int NetChooseLR(int* pCurrent_choice, int* pCurrent_mode); // Offset: 10356 // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetGameTarget(tNet_game_type *pGame_type, tNet_game_options *pGame_options); +void SetGameTarget(tNet_game_type* pGame_type, tNet_game_options* pGame_options); // Offset: 10548 // Size: 383 // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -int NetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index); +int NetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index); // Offset: 10932 // Size: 95 // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -void ReadNetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index); +void ReadNetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index); // Offset: 11028 // Size: 56 // EAX: pRank -int ChooseStartRace(int *pRank); +int ChooseStartRace(int* pRank); // Offset: 11084 // Size: 63 // EAX: pNet_game -void SetUpOtherNetThings(tNet_game_details *pNet_game); +void SetUpOtherNetThings(tNet_game_details* pNet_game); // Offset: 11148 // Size: 97 // EAX: pNet_game -void RequestCarDetails(tNet_game_details *pNet_game); +void RequestCarDetails(tNet_game_details* pNet_game); // Offset: 11248 // Size: 181 @@ -364,12 +387,12 @@ int PickARandomCar(); // Offset: 11432 // Size: 54 // EAX: pNet_game -void PollCarDetails(tNet_game_details *pNet_game); +void PollCarDetails(tNet_game_details* pNet_game); // Offset: 11488 // Size: 278 // EAX: pOptions -void SetNetAvailability(tNet_game_options *pOptions); +void SetNetAvailability(tNet_game_options* pOptions); // Offset: 11768 // Size: 396 @@ -377,7 +400,7 @@ void SetNetAvailability(tNet_game_options *pOptions); // EDX: pOptions // EBX: pCar_index // ECX: pIm_the_host_so_fuck_off -int ChooseNetCar(tNet_game_details *pNet_game, tNet_game_options *pOptions, int *pCar_index, int pIm_the_host_so_fuck_off); +int ChooseNetCar(tNet_game_details* pNet_game, tNet_game_options* pOptions, int* pCar_index, int pIm_the_host_so_fuck_off); // Offset: 12164 // Size: 115 diff --git a/src/DETHRACE/common/opponent.h b/src/DETHRACE/common/opponent.h index e2a7e390..809219e5 100644 --- a/src/DETHRACE/common/opponent.h +++ b/src/DETHRACE/common/opponent.h @@ -1,20 +1,22 @@ #ifndef _OPPONENT_H_ #define _OPPONENT_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern float gOpponent_nastyness_frigger; // Offset: 0 // Size: 137 // EAX: pThe_actor // EDX: pThe_vector -void PointActorAlongThisBloodyVector(br_actor *pThe_actor, br_vector3 *pThe_vector); +void PointActorAlongThisBloodyVector(br_actor* pThe_actor, br_vector3* pThe_vector); // Offset: 140 // Size: 301 // EAX: pOpponent_spec // EDX: pCommand -void ProcessCurrentObjective(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessCurrentObjective(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 444 // Size: 190 @@ -30,13 +32,13 @@ tS16 ReallocExtraPathSections(int pHow_many_then); // Size: 186 // EAX: pFrom // EDX: pTo -int PointVisibleFromHere(br_vector3 *pFrom, br_vector3 *pTo); +int PointVisibleFromHere(br_vector3* pFrom, br_vector3* pTo); // Offset: 1012 // Size: 276 // EAX: pActor_coords // EDX: pDistance -tS16 FindNearestPathNode(br_vector3 *pActor_coords, br_scalar *pDistance); +tS16 FindNearestPathNode(br_vector3* pActor_coords, br_scalar* pDistance); // Offset: 1288 // Size: 66 @@ -44,7 +46,7 @@ tS16 FindNearestPathNode(br_vector3 *pActor_coords, br_scalar *pDistance); // EDX: pPath_direction // EBX: pIntersect // ECX: pDistance -tS16 FindNearestPathSection(br_vector3 *pActor_coords, br_vector3 *pPath_direction, br_vector3 *pIntersect, br_scalar *pDistance); +tS16 FindNearestPathSection(br_vector3* pActor_coords, br_vector3* pPath_direction, br_vector3* pIntersect, br_scalar* pDistance); // Offset: 1356 // Size: 1187 @@ -52,37 +54,37 @@ tS16 FindNearestPathSection(br_vector3 *pActor_coords, br_vector3 *pPath_directi // EDX: pActor_coords // EBX: pPath_direction // ECX: pIntersect -tS16 FindNearestGeneralSection(tCar_spec *pPursuee, br_vector3 *pActor_coords, br_vector3 *pPath_direction, br_vector3 *pIntersect, br_scalar *pDistance); +tS16 FindNearestGeneralSection(tCar_spec* pPursuee, br_vector3* pActor_coords, br_vector3* pPath_direction, br_vector3* pIntersect, br_scalar* pDistance); // Offset: 2544 // Size: 171 // EAX: pCar_spec -void DeadStopCar(tCar_spec *pCar_spec); +void DeadStopCar(tCar_spec* pCar_spec); // Offset: 2716 // Size: 69 // EAX: pOpponent_spec -void TurnOpponentPhysicsOn(tOpponent_spec *pOpponent_spec); +void TurnOpponentPhysicsOn(tOpponent_spec* pOpponent_spec); // Offset: 2788 // Size: 80 // EAX: pOpponent_spec -void TurnOpponentPhysicsOff(tOpponent_spec *pOpponent_spec); +void TurnOpponentPhysicsOff(tOpponent_spec* pOpponent_spec); // Offset: 2868 // Size: 247 -void NewObjective(tOpponent_spec *pOpponent_spec, tOpponent_objective_type pObjective_type, ...); +void NewObjective(tOpponent_spec* pOpponent_spec, tOpponent_objective_type pObjective_type, ...); // Offset: 3116 // Size: 929 // EAX: pOpponent_spec -void CalcRaceRoute(tOpponent_spec *pOpponent_spec); +void CalcRaceRoute(tOpponent_spec* pOpponent_spec); // Offset: 4048 // Size: 790 // EAX: pOpponent_spec // EDX: pSections_to_add -void TopUpRandomRoute(tOpponent_spec *pOpponent_spec, int pSections_to_add); +void TopUpRandomRoute(tOpponent_spec* pOpponent_spec, int pSections_to_add); // Offset: 4840 // Size: 942 @@ -90,63 +92,63 @@ void TopUpRandomRoute(tOpponent_spec *pOpponent_spec, int pSections_to_add); // EDX: pPerm_store // EBX: pNum_of_perm_store_sections // ECX: pTarget_section -int SearchForSection(tRoute_section *pTemp_store, tRoute_section *pPerm_store, int *pNum_of_perm_store_sections, tS16 pTarget_section, int pDepth, br_scalar pDistance_so_far, tOpponent_spec *pOpponent_spec); +int SearchForSection(tRoute_section* pTemp_store, tRoute_section* pPerm_store, int* pNum_of_perm_store_sections, tS16 pTarget_section, int pDepth, br_scalar pDistance_so_far, tOpponent_spec* pOpponent_spec); // Offset: 5784 // Size: 796 // EAX: pOpponent_spec // EDX: pPlayer -void CalcGetNearPlayerRoute(tOpponent_spec *pOpponent_spec, tCar_spec *pPlayer); +void CalcGetNearPlayerRoute(tOpponent_spec* pOpponent_spec, tCar_spec* pPlayer); // Offset: 6580 // Size: 575 // EAX: pOpponent_spec -void CalcReturnToStartPointRoute(tOpponent_spec *pOpponent_spec); +void CalcReturnToStartPointRoute(tOpponent_spec* pOpponent_spec); // Offset: 7156 // Size: 47 // EAX: pOpponent_spec -void ClearOpponentsProjectedRoute(tOpponent_spec *pOpponent_spec); +void ClearOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec); // Offset: 7204 // Size: 114 // EAX: pOpponent_spec // EDX: pSection_no // EBX: pDirection -int AddToOpponentsProjectedRoute(tOpponent_spec *pOpponent_spec, tS16 pSection_no, int pDirection); +int AddToOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec, tS16 pSection_no, int pDirection); // Offset: 7320 // Size: 177 // EAX: pOpponent_spec // EDX: pPlaces -int ShiftOpponentsProjectedRoute(tOpponent_spec *pOpponent_spec, int pPlaces); +int ShiftOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec, int pPlaces); // Offset: 7500 // Size: 134 // EAX: pOpponent_spec // EDX: pMilliseconds -void StunTheBugger(tOpponent_spec *pOpponent_spec, int pMilliseconds); +void StunTheBugger(tOpponent_spec* pOpponent_spec, int pMilliseconds); // Offset: 7636 // Size: 47 // EAX: pOpponent_spec -void UnStunTheBugger(tOpponent_spec *pOpponent_spec); +void UnStunTheBugger(tOpponent_spec* pOpponent_spec); // Offset: 7684 // Size: 436 // EAX: pOpponent_spec // EDX: pCommand -void ProcessCompleteRace(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessCompleteRace(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 8120 // Size: 337 // EAX: pPursuee -void StartRecordingTrail(tCar_spec *pPursuee); +void StartRecordingTrail(tCar_spec* pPursuee); // Offset: 8460 // Size: 1039 // EAX: pPursuee -void RecordNextTrailNode(tCar_spec *pPursuee); +void RecordNextTrailNode(tCar_spec* pPursuee); // Offset: 9500 // Size: 78 @@ -154,102 +156,102 @@ void RecordNextTrailNode(tCar_spec *pPursuee); // EDX: pPursuee // EBX: pSection_v // ECX: pIntersect -tS16 FindNearestTrailSection(tOpponent_spec *pOpponent_spec, tCar_spec *pPursuee, br_vector3 *pSection_v, br_vector3 *pIntersect, br_scalar *pDistance); +tS16 FindNearestTrailSection(tOpponent_spec* pOpponent_spec, tCar_spec* pPursuee, br_vector3* pSection_v, br_vector3* pIntersect, br_scalar* pDistance); // Offset: 9580 // Size: 111 // EAX: pOpponent_spec // EDX: pSection -tS16 CalcNextTrailSection(tOpponent_spec *pOpponent_spec, int pSection); +tS16 CalcNextTrailSection(tOpponent_spec* pOpponent_spec, int pSection); // Offset: 9692 // Size: 2515 // EAX: pOpponent_spec // EDX: pCommand -void ProcessPursueAndTwat(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessPursueAndTwat(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 12208 // Size: 638 // EAX: pOpponent_spec // EDX: pCommand -void ProcessRunAway(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessRunAway(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 12848 // Size: 126 // EAX: pOpponent_spec // EDX: pCommand -void ProcessWaitForSomeHaplessSod(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessWaitForSomeHaplessSod(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 12976 // Size: 629 // EAX: pOpponent_spec // EDX: pCommand -void ProcessReturnToStart(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessReturnToStart(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 13608 // Size: 921 // EAX: pOpponent_spec // EDX: pCommand -void ProcessLevitate(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessLevitate(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 14532 // Size: 543 // EAX: pOpponent_spec // EDX: pCommand -void ProcessGetNearPlayer(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessGetNearPlayer(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 15076 // Size: 230 // EAX: pOpponent_spec // EDX: pCommand -void ProcessFrozen(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessFrozen(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 15308 // Size: 355 // EAX: pOpponent_spec -int HeadOnWithPlayerPossible(tOpponent_spec *pOpponent_spec); +int HeadOnWithPlayerPossible(tOpponent_spec* pOpponent_spec); // Offset: 15664 // Size: 88 // EAX: pOpponent_spec // EDX: pPursuee -int AlreadyPursuingCar(tOpponent_spec *pOpponent_spec, tCar_spec *pPursuee); +int AlreadyPursuingCar(tOpponent_spec* pOpponent_spec, tCar_spec* pPursuee); // Offset: 15752 // Size: 97 // EAX: pOpponent_spec -int LastTwatteeAPlayer(tOpponent_spec *pOpponent_spec); +int LastTwatteeAPlayer(tOpponent_spec* pOpponent_spec); // Offset: 15852 // Size: 97 // EAX: pOpponent_spec -int LastTwatterAPlayer(tOpponent_spec *pOpponent_spec); +int LastTwatterAPlayer(tOpponent_spec* pOpponent_spec); // Offset: 15952 // Size: 130 // EAX: pOpponent_spec -void ObjectiveComplete(tOpponent_spec *pOpponent_spec); +void ObjectiveComplete(tOpponent_spec* pOpponent_spec); // Offset: 16084 // Size: 542 // EAX: pOpponent_spec -void TeleportOpponentToNearestSafeLocation(tOpponent_spec *pOpponent_spec); +void TeleportOpponentToNearestSafeLocation(tOpponent_spec* pOpponent_spec); // Offset: 16628 // Size: 4057 // EAX: pOpponent_spec // EDX: pMust_choose_one -void ChooseNewObjective(tOpponent_spec *pOpponent_spec, int pMust_choose_one); +void ChooseNewObjective(tOpponent_spec* pOpponent_spec, int pMust_choose_one); // Offset: 20688 // Size: 365 // EAX: pOpponent_spec -void ProcessThisOpponent(tOpponent_spec *pOpponent_spec); +void ProcessThisOpponent(tOpponent_spec* pOpponent_spec); // Offset: 21056 // Size: 256 // EAX: pPoint -int IsNetCarActive(br_vector3 *pPoint); +int IsNetCarActive(br_vector3* pPoint); // Offset: 21312 // Size: 692 @@ -262,53 +264,53 @@ void ForceRebuildActiveCarList(); // Offset: 22064 // Size: 138 // EAX: pOpponent_spec -void StartToCheat(tOpponent_spec *pOpponent_spec); +void StartToCheat(tOpponent_spec* pOpponent_spec); // Offset: 22204 // Size: 138 // EAX: pOpponent_spec -void OiStopCheating(tOpponent_spec *pOpponent_spec); +void OiStopCheating(tOpponent_spec* pOpponent_spec); // Offset: 22344 // Size: 326 // EAX: pOpponent_spec -int TeleportCopToStart(tOpponent_spec *pOpponent_spec); +int TeleportCopToStart(tOpponent_spec* pOpponent_spec); // Offset: 22672 // Size: 139 // EAX: pOpponent_spec -void CalcDistanceFromHome(tOpponent_spec *pOpponent_spec); +void CalcDistanceFromHome(tOpponent_spec* pOpponent_spec); // Offset: 22812 // Size: 767 // EAX: pOpponent_spec // EDX: pMassage_count -int MassageOpponentPosition(tOpponent_spec *pOpponent_spec, int pMassage_count); +int MassageOpponentPosition(tOpponent_spec* pOpponent_spec, int pMassage_count); // Offset: 23580 // Size: 821 // EAX: pOpponent_spec -int RematerialiseOpponentOnThisSection(tOpponent_spec *pOpponent_spec, br_scalar pSpeed, tS16 pSection_no); +int RematerialiseOpponentOnThisSection(tOpponent_spec* pOpponent_spec, br_scalar pSpeed, tS16 pSection_no); // Offset: 24404 // Size: 482 // EAX: pOpponent_spec -int RematerialiseOpponentOnNearestSection(tOpponent_spec *pOpponent_spec, br_scalar pSpeed); +int RematerialiseOpponentOnNearestSection(tOpponent_spec* pOpponent_spec, br_scalar pSpeed); // Offset: 24888 // Size: 2365 // EAX: pOpponent_spec -int RematerialiseOpponent(tOpponent_spec *pOpponent_spec, br_scalar pSpeed); +int RematerialiseOpponent(tOpponent_spec* pOpponent_spec, br_scalar pSpeed); // Offset: 27256 // Size: 434 // EAX: pOpponent_spec -void CalcPlayerConspicuousness(tOpponent_spec *pOpponent_spec); +void CalcPlayerConspicuousness(tOpponent_spec* pOpponent_spec); // Offset: 27692 // Size: 192 // EAX: pOpponent_spec -void CalcOpponentConspicuousnessWithAViewToCheatingLikeFuck(tOpponent_spec *pOpponent_spec); +void CalcOpponentConspicuousnessWithAViewToCheatingLikeFuck(tOpponent_spec* pOpponent_spec); // Offset: 27884 // Size: 52 @@ -323,7 +325,7 @@ void LoadCopCars(); // Offset: 28168 // Size: 2460 // EAX: pF -void LoadInOppoPaths(FILE *pF); +void LoadInOppoPaths(FILE* pF); // Offset: 30628 // Size: 153 @@ -341,7 +343,7 @@ void SetInitialCopPositions(); // Offset: 31988 // Size: 2545 // EAX: pRace_info -void InitOpponents(tRace_info *pRace_info); +void InitOpponents(tRace_info* pRace_info); // Offset: 34536 // Size: 142 @@ -355,7 +357,7 @@ void WakeUpOpponentsToTheFactThatTheStartHasBeenJumped(int pWhat_the_countdown_w // Offset: 34992 // Size: 91 // EAX: pCar_spec -void ReportMurderToPoliceDepartment(tCar_spec *pCar_spec); +void ReportMurderToPoliceDepartment(tCar_spec* pCar_spec); // Offset: 35084 // Size: 178 @@ -377,7 +379,7 @@ char* GetDriverName(tVehicle_type pCategory, int pIndex); // Offset: 35676 // Size: 240 // EAX: pCar_spec -tOpponent_spec* GetOpponentSpecFromCarSpec(tCar_spec *pCar_spec); +tOpponent_spec* GetOpponentSpecFromCarSpec(tCar_spec* pCar_spec); // Offset: 35916 // Size: 113 @@ -388,62 +390,62 @@ tCar_spec* GetCarSpecFromGlobalOppoIndex(int pIndex); // Size: 95 // EAX: pOpponent_spec // EDX: pSection_no -int GetOpponentsRealSection(tOpponent_spec *pOpponent_spec, int pSection_no); +int GetOpponentsRealSection(tOpponent_spec* pOpponent_spec, int pSection_no); // Offset: 36128 // Size: 106 // EAX: pOpponent_spec -int GetOpponentsFirstSection(tOpponent_spec *pOpponent_spec); +int GetOpponentsFirstSection(tOpponent_spec* pOpponent_spec); // Offset: 36236 // Size: 185 // EAX: pOpponent_spec // EDX: pCurrent_section -int GetOpponentsNextSection(tOpponent_spec *pOpponent_spec, tS16 pCurrent_section); +int GetOpponentsNextSection(tOpponent_spec* pOpponent_spec, tS16 pCurrent_section); // Offset: 36424 // Size: 239 // EAX: pOpponent_spec // EDX: pSection -tS16 GetOpponentsSectionStartNode(tOpponent_spec *pOpponent_spec, tS16 pSection); +tS16 GetOpponentsSectionStartNode(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 36664 // Size: 185 // EAX: pOpponent_spec // EDX: pSection -tS16 GetOpponentsSectionFinishNode(tOpponent_spec *pOpponent_spec, tS16 pSection); +tS16 GetOpponentsSectionFinishNode(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 36852 // Size: 284 // EAX: pOpponent_spec // EDX: pSection -br_vector3* GetOpponentsSectionStartNodePoint(tOpponent_spec *pOpponent_spec, tS16 pSection); +br_vector3* GetOpponentsSectionStartNodePoint(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 37136 // Size: 266 // EAX: pOpponent_spec // EDX: pSection -br_vector3* GetOpponentsSectionFinishNodePoint(tOpponent_spec *pOpponent_spec, tS16 pSection); +br_vector3* GetOpponentsSectionFinishNodePoint(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 37404 // Size: 165 // EAX: pOpponent_spec // EDX: pSection -br_scalar GetOpponentsSectionWidth(tOpponent_spec *pOpponent_spec, tS16 pSection); +br_scalar GetOpponentsSectionWidth(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 37572 // Size: 262 // EAX: pOpponent_spec // EDX: pSection // EBX: pTowards_finish -int GetOpponentsSectionMinSpeed(tOpponent_spec *pOpponent_spec, tS16 pSection, int pTowards_finish); +int GetOpponentsSectionMinSpeed(tOpponent_spec* pOpponent_spec, tS16 pSection, int pTowards_finish); // Offset: 37836 // Size: 262 // EAX: pOpponent_spec // EDX: pSection // EBX: pTowards_finish -int GetOpponentsSectionMaxSpeed(tOpponent_spec *pOpponent_spec, tS16 pSection, int pTowards_finish); +int GetOpponentsSectionMaxSpeed(tOpponent_spec* pOpponent_spec, tS16 pSection, int pTowards_finish); // Offset: 38100 // Size: 59 @@ -453,19 +455,19 @@ void InitOpponentPsyche(int pOpponent_index); // Offset: 38160 // Size: 108 // EAX: pOpponent_spec -void ClearTwattageOccurrenceVariables(tOpponent_spec *pOpponent_spec); +void ClearTwattageOccurrenceVariables(tOpponent_spec* pOpponent_spec); // Offset: 38268 // Size: 86 // EAX: pA_car // EDX: pAnother_car -void TwoCarsHitEachOther(tCar_spec *pA_car, tCar_spec *pAnother_car); +void TwoCarsHitEachOther(tCar_spec* pA_car, tCar_spec* pAnother_car); // Offset: 38356 // Size: 1166 // EAX: pTwatter // EDX: pTwattee -void RecordOpponentTwattageOccurrence(tCar_spec *pTwatter, tCar_spec *pTwattee); +void RecordOpponentTwattageOccurrence(tCar_spec* pTwatter, tCar_spec* pTwattee); // Offset: 39524 // Size: 67 @@ -503,7 +505,7 @@ void DeleteOrphanNodes(); // EAX: pInserted_node // EDX: pSection_no // EBX: pWhere -void InsertThisNodeInThisSectionHere(tS16 pInserted_node, tS16 pSection_no, br_vector3 *pWhere); +void InsertThisNodeInThisSectionHere(tS16 pInserted_node, tS16 pSection_no, br_vector3* pWhere); // Offset: 42752 // Size: 254 @@ -524,13 +526,13 @@ void RecalcNearestPathSectionWidth(br_scalar pAdjustment); // EAX: pNegative_x_vector // EDX: pStart // EBX: pFinish -void CalcNegativeXVector(br_vector3 *pNegative_x_vector, br_vector3 *pStart, br_vector3 *pFinish, br_scalar pLength); +void CalcNegativeXVector(br_vector3* pNegative_x_vector, br_vector3* pStart, br_vector3* pFinish, br_scalar pLength); // Offset: 44700 // Size: 162 // EAX: pModel // EDX: pVertex_num -void MakeVertexAndOffsetIt(br_model *pModel, int pVertex_num, br_scalar pX, br_scalar pY, br_scalar pZ, br_vector3 *pOffset); +void MakeVertexAndOffsetIt(br_model* pModel, int pVertex_num, br_scalar pX, br_scalar pY, br_scalar pZ, br_vector3* pOffset); // Offset: 44864 // Size: 134 @@ -538,7 +540,7 @@ void MakeVertexAndOffsetIt(br_model *pModel, int pVertex_num, br_scalar pX, br_s // EDX: pFace_num // EBX: pV0 // ECX: pV1 -void MakeFaceAndTextureIt(br_model *pModel, int pFace_num, int pV0, int pV1, int pV2, br_material *pMaterial); +void MakeFaceAndTextureIt(br_model* pModel, int pFace_num, int pV0, int pV1, int pV2, br_material* pMaterial); // Offset: 45000 // Size: 942 @@ -546,7 +548,7 @@ void MakeFaceAndTextureIt(br_model *pModel, int pFace_num, int pV0, int pV1, int // EDX: pFirst_face // EBX: pStart // ECX: pFinish -void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3 *pStart, br_vector3 *pFinish, br_scalar pWidth, br_material *pMaterial_centre_lt, br_material *pMaterial_centre_dk, br_material *pMaterial_edges_start_lt, br_material *pMaterial_edges_start_dk, br_material *pMaterial_edges_finish_lt, br_material *pMaterial_edges_finish_dk); +void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3* pStart, br_vector3* pFinish, br_scalar pWidth, br_material* pMaterial_centre_lt, br_material* pMaterial_centre_dk, br_material* pMaterial_edges_start_lt, br_material* pMaterial_edges_start_dk, br_material* pMaterial_edges_finish_lt, br_material* pMaterial_edges_finish_dk); // Offset: 45944 // Size: 1235 @@ -554,20 +556,20 @@ void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3 *p // EDX: pFirst_face // EBX: pPoint // ECX: pMaterial_1 -void MakeCube(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3 *pPoint, br_material *pMaterial_1, br_material *pMaterial_2, br_material *pMaterial_3); +void MakeCube(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3* pPoint, br_material* pMaterial_1, br_material* pMaterial_2, br_material* pMaterial_3); // Offset: 47180 // Size: 88 // EAX: pFace_index_ptr // EDX: pVertex_index_ptr -void CalcNumberOfFacesAndVerticesForOppoPathModel(br_uint_16 *pFace_index_ptr, br_uint_16 *pVertex_index_ptr); +void CalcNumberOfFacesAndVerticesForOppoPathModel(br_uint_16* pFace_index_ptr, br_uint_16* pVertex_index_ptr); // Offset: 47268 // Size: 433 // EAX: pModel // EDX: pNum_faces // EBX: pNum_vertices -void ReallocModelFacesAndVertices(br_model *pModel, int pNum_faces, int pNum_vertices); +void ReallocModelFacesAndVertices(br_model* pModel, int pNum_faces, int pNum_vertices); // Offset: 47704 // Size: 127 diff --git a/src/DETHRACE/common/pedestrn.h b/src/DETHRACE/common/pedestrn.h index 2a7fe7b6..267b5529 100644 --- a/src/DETHRACE/common/pedestrn.h +++ b/src/DETHRACE/common/pedestrn.h @@ -1,33 +1,37 @@ #ifndef _PEDESTRN_H_ #define _PEDESTRN_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern int gMin_respawn_time; +extern int gRespawn_variance; +extern float gZombie_factor; // Offset: 0 // Size: 152 // EAX: pModel -void PedModelUpdate(br_model *pModel, br_scalar x0, br_scalar y0, br_scalar x1, br_scalar y1, br_scalar x2, br_scalar y2, br_scalar x3, br_scalar y3); +void PedModelUpdate(br_model* pModel, br_scalar x0, br_scalar y0, br_scalar x1, br_scalar y1, br_scalar x2, br_scalar y2, br_scalar x3, br_scalar y3); // Offset: 152 // Size: 98 // EAX: pActor -int ActorIsPedestrian(br_actor *pActor); +int ActorIsPedestrian(br_actor* pActor); // Offset: 252 // Size: 79 // EAX: pActor -br_scalar PedHeightFromActor(br_actor *pActor); +br_scalar PedHeightFromActor(br_actor* pActor); // Offset: 332 // Size: 52 // EAX: pActor -int GetPedestrianValue(br_actor *pActor); +int GetPedestrianValue(br_actor* pActor); // Offset: 384 // Size: 88 // EAX: pActor -int PedestrianActorIsPerson(br_actor *pActor); +int PedestrianActorIsPerson(br_actor* pActor); // Offset: 472 // Size: 87 @@ -38,7 +42,7 @@ br_actor* GetPedestrianActor(int pIndex); // Size: 97 // EAX: pActor // EDX: pFlipped -br_pixelmap* GetPedestrianTexture(br_actor *pActor, int *pFlipped); +br_pixelmap* GetPedestrianTexture(br_actor* pActor, int* pFlipped); // Offset: 660 // Size: 153 @@ -51,11 +55,11 @@ void InitPedGibs(); // Offset: 1736 // Size: 240 // EAX: pActor -void SetPedMaterialForRender(br_actor *pActor); +void SetPedMaterialForRender(br_actor* pActor); // Offset: 1976 // Size: 158 -void PedCallBack(br_actor *pActor, br_model *pModel, br_material *pMaterial, void *pRender_data, br_uint_8 pStyle, int pOn_screen); +void PedCallBack(br_actor* pActor, br_model* pModel, br_material* pMaterial, void* pRender_data, br_uint_8 pStyle, int pOn_screen); // Offset: 2136 // Size: 516 @@ -64,12 +68,12 @@ void InitPeds(); // Offset: 2652 // Size: 275 // EAX: pActor -void MungeModelSize(br_actor *pActor, br_scalar pScaling_factor); +void MungeModelSize(br_actor* pActor, br_scalar pScaling_factor); // Offset: 2928 // Size: 1468 // EAX: pPedestrian -int BurstPedestrian(tPedestrian_data *pPedestrian, float pSplattitudinalitude, int pAllow_explosion); +int BurstPedestrian(tPedestrian_data* pPedestrian, float pSplattitudinalitude, int pAllow_explosion); // Offset: 4396 // Size: 137 @@ -81,7 +85,7 @@ void ResetAllPedGibs(); // EDX: pSize // EBX: pGib_index // ECX: pPed_index -void AdjustPedGib(int pIndex, int pSize, int pGib_index, int pPed_index, br_matrix34 *pTrans); +void AdjustPedGib(int pIndex, int pSize, int pGib_index, int pPed_index, br_matrix34* pTrans); // Offset: 4736 // Size: 810 @@ -91,7 +95,7 @@ void MungePedGibs(tU32 pFrame_period); // Offset: 5548 // Size: 267 // EAX: pPedestrian -void KillPedestrian(tPedestrian_data *pPedestrian); +void KillPedestrian(tPedestrian_data* pPedestrian); // Offset: 5816 // Size: 302 @@ -99,55 +103,55 @@ void KillPedestrian(tPedestrian_data *pPedestrian); // EDX: pPixelmap // EBX: pHeight // ECX: pWidth -void CalcPedWidthNHeight(tPedestrian_data *pPedestrian, br_pixelmap *pPixelmap, br_scalar *pHeight, br_scalar *pWidth); +void CalcPedWidthNHeight(tPedestrian_data* pPedestrian, br_pixelmap* pPixelmap, br_scalar* pHeight, br_scalar* pWidth); // Offset: 6120 // Size: 1942 // EAX: pPedestrian -int PedestrianNextInstruction(tPedestrian_data *pPedestrian, float pDanger_level, int pPosition_explicitly, int pMove_pc); +int PedestrianNextInstruction(tPedestrian_data* pPedestrian, float pDanger_level, int pPosition_explicitly, int pMove_pc); // Offset: 8064 // Size: 464 // EAX: pPedestrian // EDX: pAction_changed -void MungePedestrianSequence(tPedestrian_data *pPedestrian, int pAction_changed); +void MungePedestrianSequence(tPedestrian_data* pPedestrian, int pAction_changed); // Offset: 8528 // Size: 166 // EAX: pPedestrian -void DetachPedFromCar(tPedestrian_data *pPedestrian); +void DetachPedFromCar(tPedestrian_data* pPedestrian); // Offset: 8696 // Size: 117 // EAX: pPedestrian -void SetPedPos(tPedestrian_data *pPedestrian); +void SetPedPos(tPedestrian_data* pPedestrian); // Offset: 8816 // Size: 59 // EAX: pActor -void DetachPedActorFromCar(br_actor *pActor); +void DetachPedActorFromCar(br_actor* pActor); // Offset: 8876 // Size: 1317 // EAX: pPedestrian -void MungePedestrianFrames(tPedestrian_data *pPedestrian); +void MungePedestrianFrames(tPedestrian_data* pPedestrian); // Offset: 10196 // Size: 1288 // EAX: pPedestrian -void MungePedModel(tPedestrian_data *pPedestrian); +void MungePedModel(tPedestrian_data* pPedestrian); // Offset: 11484 // Size: 408 // EAX: pPedestrian // EDX: pAction_index // EBX: pRedo_frames_etc -void ChangeActionTo(tPedestrian_data *pPedestrian, int pAction_index, int pRedo_frames_etc); +void ChangeActionTo(tPedestrian_data* pPedestrian, int pAction_index, int pRedo_frames_etc); // Offset: 11892 // Size: 589 // EAX: pPedestrian -int MungePedestrianAction(tPedestrian_data *pPedestrian, float pDanger_level); +int MungePedestrianAction(tPedestrian_data* pPedestrian, float pDanger_level); // Offset: 12484 // Size: 105 @@ -156,20 +160,20 @@ void MakeFlagWavingBastardWaveHisFlagWhichIsTheProbablyTheLastThingHeWillEverDo( // Offset: 12592 // Size: 2334 // EAX: pPedestrian -void MungePedestrianPath(tPedestrian_data *pPedestrian, float pDanger_level, br_vector3 *pDanger_direction); +void MungePedestrianPath(tPedestrian_data* pPedestrian, float pDanger_level, br_vector3* pDanger_direction); // Offset: 14928 // Size: 764 // EAX: pPedestrian // EDX: pDanger_direction -float CalcPedestrianDangerLevel(tPedestrian_data *pPedestrian, br_vector3 *pDanger_direction); +float CalcPedestrianDangerLevel(tPedestrian_data* pPedestrian, br_vector3* pDanger_direction); // Offset: 15692 // Size: 972 // EAX: pPedestrian // EDX: pCar // EBX: pCar_actor -tPed_hit_position MoveToEdgeOfCar(tPedestrian_data *pPedestrian, tCollision_info *pCar, br_actor *pCar_actor, br_scalar pPed_x, br_scalar pPed_z, br_scalar pCar_bounds_min_x, br_scalar pCar_bounds_max_x, br_scalar pCar_bounds_min_z, br_scalar pCar_bounds_max_z, br_vector3 *pMin_ped_bounds_car, br_vector3 *pMax_ped_bounds_car); +tPed_hit_position MoveToEdgeOfCar(tPedestrian_data* pPedestrian, tCollision_info* pCar, br_actor* pCar_actor, br_scalar pPed_x, br_scalar pPed_z, br_scalar pCar_bounds_min_x, br_scalar pCar_bounds_max_x, br_scalar pCar_bounds_min_z, br_scalar pCar_bounds_max_z, br_vector3* pMin_ped_bounds_car, br_vector3* pMax_ped_bounds_car); // Offset: 16664 // Size: 101 @@ -179,30 +183,30 @@ void CheckLastPed(); // Size: 319 // EAX: pCar // EDX: pPed_car -int BloodyWheels(tCar_spec *pCar, br_vector3 *pPed_car, br_scalar pSize, br_vector3 *pPed_glob); +int BloodyWheels(tCar_spec* pCar, br_vector3* pPed_car, br_scalar pSize, br_vector3* pPed_glob); // Offset: 17088 // Size: 142 // EAX: pPedestrian // EDX: pCar -int FancyATossOffMate(tPedestrian_data *pPedestrian, tCollision_info *pCar, float pImpact_speed); +int FancyATossOffMate(tPedestrian_data* pPedestrian, tCollision_info* pCar, float pImpact_speed); // Offset: 17232 // Size: 5870 // EAX: pPedestrian -void CheckPedestrianDeathScenario(tPedestrian_data *pPedestrian); +void CheckPedestrianDeathScenario(tPedestrian_data* pPedestrian); // Offset: 23104 // Size: 769 // EAX: pPedestrian // EDX: pIndex -void SendPedestrian(tPedestrian_data *pPedestrian, int pIndex); +void SendPedestrian(tPedestrian_data* pPedestrian, int pIndex); // Offset: 23876 // Size: 1162 // EAX: pPedestrian // EDX: pIndex -void DoPedestrian(tPedestrian_data *pPedestrian, int pIndex); +void DoPedestrian(tPedestrian_data* pPedestrian, int pIndex); // Offset: 25040 // Size: 767 @@ -210,13 +214,13 @@ void DoPedestrian(tPedestrian_data *pPedestrian, int pIndex); // EDX: pAction_index // EBX: pFrame_index // ECX: pHit_points -void AdjustPedestrian(int pIndex, int pAction_index, int pFrame_index, int pHit_points, int pDone_initial, tU16 pParent, br_actor *pParent_actor, float pSpin_period, br_scalar pJump_magnitude, br_vector3 *pOffset, br_vector3 *pTrans); +void AdjustPedestrian(int pIndex, int pAction_index, int pFrame_index, int pHit_points, int pDone_initial, tU16 pParent, br_actor* pParent_actor, float pSpin_period, br_scalar pJump_magnitude, br_vector3* pOffset, br_vector3* pTrans); // Offset: 25808 // Size: 194 // EAX: pFirst_vertex // EDX: pPoint -void SquirtPathVertex(br_vertex *pFirst_vertex, br_vector3 *pPoint); +void SquirtPathVertex(br_vertex* pFirst_vertex, br_vector3* pPoint); // Offset: 26004 // Size: 92 @@ -225,13 +229,13 @@ void ResetAllPedestrians(); // Offset: 26096 // Size: 476 // EAX: pPedestrian -void GroundPedestrian(tPedestrian_data *pPedestrian); +void GroundPedestrian(tPedestrian_data* pPedestrian); // Offset: 26572 // Size: 483 // EAX: pPedestrian // EDX: pAnimate -void RevivePedestrian(tPedestrian_data *pPedestrian, int pAnimate); +void RevivePedestrian(tPedestrian_data* pPedestrian, int pAnimate); // Offset: 27056 // Size: 1078 @@ -250,7 +254,7 @@ int GetPedCount(); // Size: 260 // EAX: pIndex // EDX: pPos -int GetPedPosition(int pIndex, br_vector3 *pPos); +int GetPedPosition(int pIndex, br_vector3* pPos); // Offset: 28648 // Size: 2930 @@ -258,7 +262,7 @@ int GetPedPosition(int pIndex, br_vector3 *pPos); // EDX: pInstructions // EBX: pInstruc_count // ECX: pInit_instruc -void CreatePedestrian(FILE *pG, tPedestrian_instruction *pInstructions, int pInstruc_count, int pInit_instruc, int pRef_num, int pForce_read); +void CreatePedestrian(FILE* pG, tPedestrian_instruction* pInstructions, int pInstruc_count, int pInit_instruc, int pRef_num, int pForce_read); // Offset: 31580 // Size: 73 @@ -277,14 +281,14 @@ void ResetPedMaterial(); // EAX: pF // EDX: pSubs_count // EBX: pSubs_array -void LoadInPedestrians(FILE *pF, int pSubs_count, tPed_subs *pSubs_array); +void LoadInPedestrians(FILE* pF, int pSubs_count, tPed_subs* pSubs_array); // Offset: 33608 // Size: 1313 // EAX: pInstructions // EDX: pInstruc_count // EBX: pInit_instruc -br_actor* BuildPedPaths(tPedestrian_instruction *pInstructions, int pInstruc_count, int pInit_instruc); +br_actor* BuildPedPaths(tPedestrian_instruction* pInstructions, int pInstruc_count, int pInit_instruc); // Offset: 34924 // Size: 1161 @@ -421,7 +425,7 @@ void DropInitPedPointAir(); // Offset: 38452 // Size: 77 -br_uint_32 KillActorsModel(br_actor *pActor, void *pArg); +br_uint_32 KillActorsModel(br_actor* pActor, void* pArg); // Offset: 38532 // Size: 154 @@ -431,7 +435,7 @@ void DisposePedPaths(); // Size: 417 // EAX: pPed_index // EDX: pPoint_index -void GetPedPos(int *pPed_index, int *pPoint_index); +void GetPedPos(int* pPed_index, int* pPoint_index); // Offset: 39108 // Size: 105 @@ -471,7 +475,7 @@ void DoPedReport(); // EDX: pDepth_buffer // EBX: pCamera // ECX: pCamera_to_world -void RenderProximityRays(br_pixelmap *pRender_screen, br_pixelmap *pDepth_buffer, br_actor *pCamera, br_matrix34 *pCamera_to_world, tU32 pTime); +void RenderProximityRays(br_pixelmap* pRender_screen, br_pixelmap* pDepth_buffer, br_actor* pCamera, br_matrix34* pCamera_to_world, tU32 pTime); // Offset: 42256 // Size: 145 @@ -486,7 +490,7 @@ void AdjustProxRay(int pRay_index, tU16 pCar_ID, tU16 pPed_index, tU32 pTime); // EAX: pContents // EDX: pMessage // EBX: pReceive_time -void ReceivedPedestrian(tNet_contents *pContents, tNet_message *pMessage, tU32 pReceive_time); +void ReceivedPedestrian(tNet_contents* pContents, tNet_message* pMessage, tU32 pReceive_time); // Offset: 43604 // Size: 115 diff --git a/src/DETHRACE/common/utility.c b/src/DETHRACE/common/utility.c index ee6fd1bb..e3d04909 100644 --- a/src/DETHRACE/common/utility.c +++ b/src/DETHRACE/common/utility.c @@ -1,30 +1,30 @@ #include "utility.h" -#include "loading.h" -#include "errors.h" #include "dossys.h" +#include "errors.h" #include "globvars.h" -#include "sound.h" +#include "loading.h" #include "network.h" +#include "sound.h" -#include -#include -#include #include +#include +#include +#include // Added >> #define MIN_SERVICE_INTERVAL 200 // << -tU32 gLong_key[] = { 0x5F991B6C, 0x135FCDB9, 0x0E2004CB, 0x0EA11C5E }; -tU32 gOther_long_key[] = { 0x26D6A867, 0x1B45DDB6, 0x13227E32, 0x3794C215 }; +tU32 gLong_key[] = { 0x5F991B6C, 0x135FCDB9, 0x0E2004CB, 0x0EA11C5E }; +tU32 gOther_long_key[] = { 0x26D6A867, 0x1B45DDB6, 0x13227E32, 0x3794C215 }; -char *gMisc_strings[250]; +char* gMisc_strings[250]; int gIn_check_quit; tU32 gLost_time; -int gEncryption_method = 1; -br_pixelmap *g16bit_palette; -br_pixelmap *gSource_for_16bit_palette; +int gEncryption_method = 0; +br_pixelmap* g16bit_palette; +br_pixelmap* gSource_for_16bit_palette; // Offset: 0 // Size: 144 @@ -32,21 +32,90 @@ int CheckQuit() { int got_as_far_as_verify; } -// Offset: 144 -// Size: 50 -double sqr(double pN) { -} - // Offset: 196 // Size: 542 // EAX: pS -void EncodeLine(char *pS) { +void EncodeLine(char* pS) { int len; int seed; int i; - char *key; + char* key; unsigned char c; - FILE *test; + FILE* test; + + tPath_name test_path; + char temp[256]; + + len = strlen(pS); + key = (char*)gLong_key; + if (!gEncryption_method) { + strcpy(test_path, gApplication_path); + strcat(test_path, gDir_separator); + strcat(test_path, "GENERAL.TXT"); + + test = fopen(test_path, "rt"); + if (test) { + fgets(temp, 256, test); + if (temp[0] != '@') { + gEncryption_method = 2; + } else { + gEncryption_method = 1; + EncodeLine(&temp[1]); + temp[7] = '\0'; + if (strcmp(&temp[1], "0.01\t\t") != 0) { + gEncryption_method = 2; + } + } + fclose(test); + } else { + gEncryption_method = 2; + } + } + while (len > 0 && (pS[len - 1] == '\r' || pS[len - 1] == '\n')) { + --len; + pS[len] = 0; + } + + seed = len % 16; + for (i = 0; i < len; i++) { + c = pS[i]; + if (i >= 2) { + if (pS[i - 1] == '/' && pS[i - 2] == '/') { + key = (char*)gOther_long_key; + } + } + if (gEncryption_method == 1) { + if (c == '\t') { + c = 0x80; + } + c -= 0x20; + if (!(c & 0x80)) { + c = (c ^ key[seed]) & 0x7f; + c += 0x20; + } + seed += 7; + seed = seed % 16; + + if (c == 0x80) { + c = '\t'; + } + } else { + if (c == '\t') { + c = 0x9f; + } + c -= 0x20; + c = (c ^ key[seed]) & 0x7f; + c += 0x20; + + seed += 7; + seed = seed % 16; + + if (c == 0x9f) { + c = '\t'; + } + } + pS[i] = c; + } } // Offset: 740 @@ -94,31 +163,29 @@ br_scalar SRandomPosNeg(br_scalar pN) { // Size: 506 // EAX: pF // EDX: pS -char* GetALineWithNoPossibleService(FILE *pF, /*unsigned*/ char *pS) { +char* GetALineWithNoPossibleService(FILE* pF, /*unsigned*/ char* pS) { // JeffH removed "signed' to avoid compiler warnings.. - /*signed*/ char *result; + /*signed*/ char* result; /*signed*/ char s[256]; int ch; int len; int i; - do - { + do { result = fgets(s, 256, pF); - if ( !result ) { + if (!result) { break; } - if ( s[0] == '@' ) - { + + if (s[0] == '@') { EncodeLine(&s[1]); goto LABEL_5; } - while ( 1 ) - { - if ( s[0] != ' ' && s[0] != '\t' ){ + while (1) { + if (s[0] != ' ' && s[0] != '\t') { break; } -LABEL_5: + LABEL_5: len = strlen(s); memmove(s, &s[1], len); } @@ -129,10 +196,10 @@ LABEL_5: break; } } - if ( ch != -1 ) + if (ch != -1) { ungetc(ch, pF); - } - while (!isalnum(s[0]) + } + } while (!isalnum(s[0]) && s[0] != '-' && s[0] != '.' && s[0] != '!' @@ -140,14 +207,14 @@ LABEL_5: && s[0] != '(' && s[0] != '\'' && s[0] != '\"' - && s[0] >= 0 ); + && s[0] >= 0); if (result) { len = strlen(result); - if ( len != 0 && (result[len - 1] == '\r' || result[len - 1] == '\n' )) { + if (len != 0 && (result[len - 1] == '\r' || result[len - 1] == '\n')) { result[len - 1] = 0; } - if ( len != 1 && (result[len - 2] == '\r' || result[len - 2] == '\n' )) { + if (len != 1 && (result[len - 2] == '\r' || result[len - 2] == '\n')) { result[len - 2] = 0; } } @@ -165,7 +232,7 @@ LABEL_5: // Size: 60 // EAX: pF // EDX: pS -char* GetALineAndDontArgue(FILE *pF, char *pS) { +char* GetALineAndDontArgue(FILE* pF, char* pS) { PossibleService(pF, pS); return GetALineWithNoPossibleService(pF, pS); } @@ -175,8 +242,10 @@ char* GetALineAndDontArgue(FILE *pF, char *pS) { // EAX: pDestn_str // EDX: pStr_1 // EBX: pStr_2 -void PathCat(char *pDestn_str, char *pStr_1, char *pStr_2) { - strcpy(pDestn_str, pStr_1); +void PathCat(char* pDestn_str, char* pStr_1, char* pStr_2) { + if (pDestn_str != pStr_1) { // Added to avoid strcpy overlap checks + strcpy(pDestn_str, pStr_1); + } if (strlen(pStr_2) != 0) { strcat(pDestn_str, gDir_separator); strcat(pDestn_str, pStr_2); @@ -196,7 +265,7 @@ float tandeg(float pAngle) { // Offset: 2084 // Size: 80 // EAX: pF -tU32 GetFileLength(FILE *pF) { +tU32 GetFileLength(FILE* pF) { tU32 the_size; } @@ -212,8 +281,8 @@ int BooleanTo1Or0(int pB) { // EDX: pW // EBX: pH // ECX: pPixels -br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void *pPixels, int pFlags) { - br_pixelmap *the_map; +br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void* pPixels, int pFlags) { + br_pixelmap* the_map; } // Offset: 2348 @@ -222,8 +291,8 @@ br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, v // EDX: pX // EBX: pY // ECX: pW -br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH) { - br_pixelmap *the_map; +br_pixelmap* DRPixelmapAllocateSub(br_pixelmap* pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH) { + br_pixelmap* the_map; } // Offset: 2468 @@ -232,8 +301,8 @@ br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 p // EDX: pMatch_type // EBX: pWidth // ECX: pHeight -br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight) { - br_pixelmap *result; +br_pixelmap* DRPixelmapMatchSized(br_pixelmap* pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight) { + br_pixelmap* result; } // Offset: 2664 @@ -242,13 +311,13 @@ br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidt // EDX: pSrc // EBX: pSrc_width // ECX: pSrc_height -void CopyDoubled8BitTo16BitRectangle(br_pixelmap *pDst, br_pixelmap *pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap *pPalette) { +void CopyDoubled8BitTo16BitRectangle(br_pixelmap* pDst, br_pixelmap* pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start0; - tU16 *dst_start1; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start0; + tU16* dst_start1; + tU16* palette_entry; } // Offset: 3024 @@ -256,42 +325,42 @@ void CopyDoubled8BitTo16BitRectangle(br_pixelmap *pDst, br_pixelmap *pSrc, int p // EAX: pSrc // EDX: pWidth // EBX: pHeight -br_pixelmap* Scale8BitPixelmap(br_pixelmap *pSrc, int pWidth, int pHeight) { - br_pixelmap *result; +br_pixelmap* Scale8BitPixelmap(br_pixelmap* pSrc, int pWidth, int pHeight) { + br_pixelmap* result; int x; int y; - tU8 *src_pixels; - tU8 *dst_pixels; + tU8* src_pixels; + tU8* dst_pixels; } // Offset: 3288 // Size: 390 // EAX: pSrc // EDX: pN -br_pixelmap* Tile8BitPixelmap(br_pixelmap *pSrc, int pN) { - br_pixelmap *result; +br_pixelmap* Tile8BitPixelmap(br_pixelmap* pSrc, int pN) { + br_pixelmap* result; int new_width; int new_height; int x; int y2; int y; - tU8 *src_pixels; - tU8 *dst_pixels; + tU8* src_pixels; + tU8* dst_pixels; } // Offset: 3680 // Size: 83 // EAX: pName // EDX: pList -tException_list FindExceptionInList(char *pName, tException_list pList) { +tException_list FindExceptionInList(char* pName, tException_list pList) { } // Offset: 3764 // Size: 492 // EAX: pSrc -br_pixelmap* PurifiedPixelmap(br_pixelmap *pSrc) { - br_pixelmap *intermediate; - br_pixelmap *result; +br_pixelmap* PurifiedPixelmap(br_pixelmap* pSrc) { + br_pixelmap* intermediate; + br_pixelmap* result; int new_width; int new_height; tException_list e; @@ -300,8 +369,8 @@ br_pixelmap* PurifiedPixelmap(br_pixelmap *pSrc) { // Offset: 4256 // Size: 105 // EAX: pFile_name -br_pixelmap* DRPixelmapLoad(char *pFile_name) { - br_pixelmap *the_map; +br_pixelmap* DRPixelmapLoad(char* pFile_name) { + br_pixelmap* the_map; } // Offset: 4364 @@ -309,8 +378,8 @@ br_pixelmap* DRPixelmapLoad(char *pFile_name) { // EAX: pFile_name // EDX: pPixelmaps // EBX: pNum -br_uint_32 DRPixelmapLoadMany(char *pFile_name, br_pixelmap **pPixelmaps, br_uint_16 pNum) { - br_pixelmap *the_map; +br_uint_32 DRPixelmapLoadMany(char* pFile_name, br_pixelmap** pPixelmaps, br_uint_16 pNum) { + br_pixelmap* the_map; int number_loaded; int i; } @@ -327,20 +396,20 @@ void WaitFor(tU32 pDelay) { // EAX: pActor // EDX: callback // EBX: arg -br_uint_32 DRActorEnumRecurse(br_actor *pActor, br_actor_enum_cbfn *callback, void *arg) { +br_uint_32 DRActorEnumRecurse(br_actor* pActor, br_actor_enum_cbfn* callback, void* arg) { br_uint_32 result; } // Offset: 4744 // Size: 77 -br_uint_32 CompareActorID(br_actor *pActor, void *pArg) { +br_uint_32 CompareActorID(br_actor* pActor, void* pArg) { } // Offset: 4824 // Size: 60 // EAX: pSearch_root // EDX: pName -br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName) { +br_actor* DRActorFindRecurse(br_actor* pSearch_root, char* pName) { } // Offset: 4884 @@ -349,7 +418,7 @@ br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName) { // EDX: pMat // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void *pArg) { +br_uint_32 DRActorEnumRecurseWithMat(br_actor* pActor, br_material* pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void* pArg) { br_uint_32 result; } @@ -359,7 +428,7 @@ br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uin // EDX: pMatrix // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithTrans(br_actor *pActor, br_matrix34 *pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void *pArg) { +br_uint_32 DRActorEnumRecurseWithTrans(br_actor* pActor, br_matrix34* pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void* pArg) { br_uint_32 result; br_matrix34 combined_transform; } @@ -379,32 +448,32 @@ float fsign(float pNumber) { // Size: 210 // EAX: pPrefix // EDX: pExtension -FILE* OpenUniqueFileB(char *pPrefix, char *pExtension) { +FILE* OpenUniqueFileB(char* pPrefix, char* pExtension) { int index; - FILE *f; + FILE* f; tPath_name the_path; } // Offset: 5632 // Size: 572 // EAX: pF -void PrintScreenFile(FILE *pF) { +void PrintScreenFile(FILE* pF) { int i; int j; int bit_map_size; int offset; - tU8 *pixel_ptr; + tU8* pixel_ptr; } // Offset: 6204 // Size: 554 // EAX: pF -void PrintScreenFile16(FILE *pF) { +void PrintScreenFile16(FILE* pF) { int i; int j; int bit_map_size; int offset; - tU8 *pixel_ptr; + tU8* pixel_ptr; tU16 pixel; } @@ -435,7 +504,7 @@ void AddLostTime(tU32 pLost_time) { // EDX: pStr // EBX: pFudge_colon // ECX: pForce_colon -void TimerString(tU32 pTime, char *pStr, int pFudge_colon, int pForce_colon) { +void TimerString(tU32 pTime, char* pStr, int pFudge_colon, int pForce_colon) { int seconds; } @@ -449,7 +518,7 @@ char* GetMiscString(int pIndex) { // Size: 58 // EAX: pIndex // EDX: pStr -void GetCopyOfMiscString(int pIndex, char *pStr) { +void GetCopyOfMiscString(int pIndex, char* pStr) { } // Offset: 7372 @@ -457,7 +526,7 @@ void GetCopyOfMiscString(int pIndex, char *pStr) { // EAX: pPeriod // EDX: pLast_change // EBX: pCurrent_state -int Flash(tU32 pPeriod, tU32 *pLast_change, int *pCurrent_state) { +int Flash(tU32 pPeriod, tU32* pLast_change, int* pCurrent_state) { tU32 the_time; } @@ -465,27 +534,27 @@ int Flash(tU32 pPeriod, tU32 *pLast_change, int *pCurrent_state) { // Size: 225 // EAX: pDst // EDX: pSrc -void MaterialCopy(br_material *pDst, br_material *pSrc) { +void MaterialCopy(br_material* pDst, br_material* pSrc) { } // Offset: 7716 // Size: 139 // EAX: pColour_1 // EDX: pColour_2 -double RGBDifferenceSqr(tRGB_colour *pColour_1, tRGB_colour *pColour_2) { +double RGBDifferenceSqr(tRGB_colour* pColour_1, tRGB_colour* pColour_2) { } // Offset: 7856 // Size: 200 // EAX: pRGB_colour // EDX: pPalette -int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette) { +int FindBestMatch(tRGB_colour* pRGB_colour, br_pixelmap* pPalette) { int n; int near_c; double min_d; double d; tRGB_colour trial_RGB; - br_colour *dp; + br_colour* dp; } // Offset: 8056 @@ -494,7 +563,7 @@ int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette) { // EDX: pR // EBX: pG // ECX: pB -void BuildShadeTablePath(char *pThe_path, int pR, int pG, int pB) { +void BuildShadeTablePath(char* pThe_path, int pR, int pG, int pB) { char s[32]; } @@ -513,7 +582,7 @@ br_pixelmap* LoadGeneratedShadeTable(int pR, int pG, int pB) { // EDX: pR // EBX: pG // ECX: pB -void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB) { +void SaveGeneratedShadeTable(br_pixelmap* pThe_table, int pR, int pG, int pB) { char the_path[256]; } @@ -523,7 +592,7 @@ void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB) { // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter) { +br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter) { } // Offset: 8556 @@ -532,14 +601,14 @@ br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken) { - br_pixelmap *the_table; +br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken) { + br_pixelmap* the_table; tRGB_colour the_RGB; tRGB_colour new_RGB; tRGB_colour ref_col; - br_colour *cp; - char *tab_ptr; - char *shade_ptr; + br_colour* cp; + char* tab_ptr; + char* shade_ptr; double f_i; double f_total_minus_1; double ratio1; @@ -570,7 +639,7 @@ void PossibleService() { // EAX: pA // EDX: pB // EBX: pC -void DRMatrix34TApplyP(br_vector3 *pA, br_vector3 *pB, br_matrix34 *pC) { +void DRMatrix34TApplyP(br_vector3* pA, br_vector3* pB, br_matrix34* pC) { br_scalar t1; br_scalar t2; br_scalar t3; @@ -580,8 +649,8 @@ void DRMatrix34TApplyP(br_vector3 *pA, br_vector3 *pB, br_matrix34 *pC) { // Size: 132 // EAX: pPal // EDX: pEntry -tU16 PaletteEntry16Bit(br_pixelmap *pPal, int pEntry) { - tU32 *src_entry; +tU16 PaletteEntry16Bit(br_pixelmap* pPal, int pEntry) { + tU32* src_entry; int red; int green; int blue; @@ -590,8 +659,8 @@ tU16 PaletteEntry16Bit(br_pixelmap *pPal, int pEntry) { // Offset: 9736 // Size: 210 // EAX: pSrc -br_pixelmap* PaletteOf16Bits(br_pixelmap *pSrc) { - tU16 *dst_entry; +br_pixelmap* PaletteOf16Bits(br_pixelmap* pSrc) { + tU16* dst_entry; int value; } @@ -600,12 +669,12 @@ br_pixelmap* PaletteOf16Bits(br_pixelmap *pSrc) { // EAX: pDst // EDX: pSrc // EBX: pPalette -void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette) { +void Copy8BitTo16Bit(br_pixelmap* pDst, br_pixelmap* pSrc, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 10168 @@ -614,12 +683,12 @@ void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette) { +void Copy8BitTo16BitRectangle(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 10728 @@ -628,12 +697,12 @@ void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pi // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette) { +void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 11248 @@ -642,12 +711,12 @@ void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette) { +void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 11528 @@ -656,12 +725,12 @@ void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pD // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap *pPalette) { +void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; tX1616 total_shear; tS16 sheared_x; tS16 clipped_src_x; @@ -674,14 +743,14 @@ void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDs // EDX: dx // EBX: dy // ECX: src -void DRPixelmapRectangleCopy(br_pixelmap *dst, br_int_16 dx, br_int_16 dy, br_pixelmap *src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h) { +void DRPixelmapRectangleCopy(br_pixelmap* dst, br_int_16 dx, br_int_16 dy, br_pixelmap* src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h) { } // Offset: 12308 // Size: 107 // EAX: dst // EDX: src -void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src) { +void DRPixelmapCopy(br_pixelmap* dst, br_pixelmap* src) { } // Offset: 12416 @@ -690,14 +759,14 @@ void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src) { // EDX: x // EBX: y // ECX: w -void DRPixelmapRectangleFill(br_pixelmap *dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour) { +void DRPixelmapRectangleFill(br_pixelmap* dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour) { } // Offset: 12500 // Size: 156 // EAX: pPoint // EDX: pNormal -int NormalSideOfPlane(br_vector3 *pPoint, br_vector3 *pNormal, br_scalar pD) { +int NormalSideOfPlane(br_vector3* pPoint, br_vector3* pNormal, br_scalar pD) { br_scalar numer; br_scalar denom; } @@ -705,8 +774,8 @@ int NormalSideOfPlane(br_vector3 *pPoint, br_vector3 *pNormal, br_scalar pD) { // Offset: 12656 // Size: 351 // EAX: pMaterial -br_material* DRMaterialClone(br_material *pMaterial) { - br_material *the_material; +br_material* DRMaterialClone(br_material* pMaterial) { + br_material* the_material; char s[256]; static int name_suffix; } @@ -714,8 +783,8 @@ br_material* DRMaterialClone(br_material *pMaterial) { // Offset: 13008 // Size: 93 // EAX: s -void StripCR(char *s) { - char *pos; +void StripCR(char* s) { + char* pos; pos = s; while (*pos != 0) { if (*pos == '\r' || *pos == '\n') { @@ -728,42 +797,39 @@ void StripCR(char *s) { // Offset: 13104 // Size: 132 -void SubsStringJob(char *pStr, ...) { - char *sub_str; +void SubsStringJob(char* pStr, ...) { + char* sub_str; char temp_str[256]; - char *sub_pt; + char* sub_pt; va_list ap; } // Offset: 13236 // Size: 454 // EAX: pS -void DecodeLine2(char *pS) { +void DecodeLine2(char* pS) { int len; int seed; int i; unsigned char c; - char *key; + char* key; len = strlen(pS); key = (char*)gLong_key; - while ( len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) - { + while (len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) { --len; pS[len] = 0; } seed = len % 16; - for ( i = 0; i < len; i++) - { + for (i = 0; i < len; i++) { c = pS[i]; if (i >= 2) { if (pS[i - 1] == '/' && pS[i - 2] == '/') { key = (char*)gOther_long_key; } } - if (gEncryption_method == 1) - { - if ( c == '\t' ) { + if (gEncryption_method == 1) { + if (c == '\t') { c = 0x80; } c -= 0x20; @@ -774,11 +840,10 @@ void DecodeLine2(char *pS) { seed += 7; seed = seed % 16; - if ( c == 0x80 ) { + if (c == 0x80) { c = '\t'; } - } - else { + } else { if (c == '\t') { c = 0x9f; } @@ -789,7 +854,7 @@ void DecodeLine2(char *pS) { seed += 7; seed = seed % 16; - if ( c == 0x9f ) { + if (c == 0x9f) { c = '\t'; } } @@ -800,37 +865,33 @@ void DecodeLine2(char *pS) { // Offset: 13692 // Size: 304 // EAX: pS -void EncodeLine2(char *pS) { +void EncodeLine2(char* pS) { int len; int seed; int i; int count; unsigned char c; - char *key; + char* key; len = strlen(pS); count = 0; key = (char*)gLong_key; - while ( len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) - { + while (len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) { --len; pS[len] = 0; } seed = len % 16; - for ( i = 0; i < len; ++pS ) - { - if ( count == 2 ) + for (i = 0; i < len; ++pS) { + if (count == 2) key = (char*)gOther_long_key; - if ( *pS == '/' ) - { + if (*pS == '/') { ++count; - } - else { + } else { count = 0; } - if ( *pS == '\t' ) { + if (*pS == '\t') { *pS = 0x80; } c = *pS - 0x20; @@ -841,7 +902,7 @@ void EncodeLine2(char *pS) { seed += 7; seed = seed % 16; - if ( c == 0x80 ) { + if (c == 0x80) { c = '\t'; } *pS = c; @@ -852,13 +913,13 @@ void EncodeLine2(char *pS) { // Offset: 13996 // Size: 553 // EAX: pThe_path -void EncodeFile(char *pThe_path) { - FILE *f; - FILE *d; +void EncodeFile(char* pThe_path) { + FILE* f; + FILE* d; char line[257]; char new_file[256]; - char *s; - char *result; + char* s; + char* result; int ch; int decode; int len; @@ -908,7 +969,7 @@ void EncodeFile(char *pThe_path) { } line[0] = '@'; - fputs(&line[decode*2], d); + fputs(&line[decode * 2], d); count = -1; ch = fgetc(f); while (ch == '\r' || ch == '\n') { @@ -936,7 +997,7 @@ void EncodeFile(char *pThe_path) { // Offset: 14552 // Size: 513 // EAX: pThe_path -void EncodeFileWrapper (char *pThe_path) { +void EncodeFileWrapper(char* pThe_path) { int len = strlen(pThe_path); if (strcmp(&pThe_path[len - 4], ".TXT") == 0) { @@ -985,14 +1046,14 @@ void EncodeFileWrapper (char *pThe_path) { // Offset: 15068 // Size: 72 // EAX: pThe_path -void EncodeAllFilesInDirectory(char *pThe_path) { +void EncodeAllFilesInDirectory(char* pThe_path) { char s[256]; } // Offset: 15140 // Size: 89 // EAX: pF -void SkipNLines(FILE *pF) { +void SkipNLines(FILE* pF) { int i; int count; char s[256]; @@ -1002,7 +1063,7 @@ void SkipNLines(FILE *pF) { // Size: 118 // EAX: p1 // EDX: p2 -int DRStricmp(char *p1, char *p2) { +int DRStricmp(char* p1, char* p2) { int val; } @@ -1010,10 +1071,10 @@ int DRStricmp(char *p1, char *p2) { // Size: 559 // EAX: pArray // EDX: pCount -void GlorifyMaterial(br_material **pArray, int pCount) { +void GlorifyMaterial(br_material** pArray, int pCount) { int i; int c; - br_pixelmap *big_tile; + br_pixelmap* big_tile; tException_list e; } @@ -1021,32 +1082,32 @@ void GlorifyMaterial(br_material **pArray, int pCount) { // Size: 178 // EAX: pArray // EDX: pN -void WhitenVertexRGB(br_model **pArray, int pN) { +void WhitenVertexRGB(br_model** pArray, int pN) { int m; int v; - br_vertex *vertex; + br_vertex* vertex; } // Offset: 16092 // Size: 239 // EAX: pPalette -void NobbleNonzeroBlacks(br_pixelmap *pPalette) { +void NobbleNonzeroBlacks(br_pixelmap* pPalette) { tU32 red; tU32 green; tU32 blue; tU32 value; - tU32 *palette_entry; + tU32* palette_entry; tU32 frobbed; } // Offset: 16332 // Size: 55 // EAX: pThe_path -int PDCheckDriveExists(char *pThe_path) { +int PDCheckDriveExists(char* pThe_path) { // Added: force unix dir separator for now >> - char *rep = pThe_path; - while((rep = strchr(rep, '\\')) != NULL) { + char* rep = pThe_path; + while ((rep = strchr(rep, '\\')) != NULL) { *rep++ = '/'; } // << @@ -1060,28 +1121,28 @@ int PDCheckDriveExists(char *pThe_path) { // Offset: 16388 // Size: 102 // EAX: pPrims -int OpacityInPrims(br_token_value *pPrims) { +int OpacityInPrims(br_token_value* pPrims) { } // Offset: 16492 // Size: 97 // EAX: pMaterial -int AlreadyBlended(br_material *pMaterial) { +int AlreadyBlended(br_material* pMaterial) { } // Offset: 16592 // Size: 148 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialTablishly(br_material *pMaterial, int pPercent) { - char *s; +void BlendifyMaterialTablishly(br_material* pMaterial, int pPercent) { + char* s; } // Offset: 16740 // Size: 110 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialPrimitively(br_material *pMaterial, int pPercent) { +void BlendifyMaterialPrimitively(br_material* pMaterial, int pPercent) { static br_token_value alpha25[3]; static br_token_value alpha50[3]; static br_token_value alpha75[3]; @@ -1091,6 +1152,5 @@ void BlendifyMaterialPrimitively(br_material *pMaterial, int pPercent) { // Size: 73 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterial(br_material *pMaterial, int pPercent) { +void BlendifyMaterial(br_material* pMaterial, int pPercent) { } - diff --git a/src/DETHRACE/common/utility.h b/src/DETHRACE/common/utility.h index d5efbef6..7c69fd5d 100644 --- a/src/DETHRACE/common/utility.h +++ b/src/DETHRACE/common/utility.h @@ -1,8 +1,11 @@ #ifndef _UTILITY_H_ #define _UTILITY_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern char* gMisc_strings[250]; +extern int gEncryption_method; // Offset: 0 // Size: 144 @@ -15,7 +18,7 @@ double sqr(double pN); // Offset: 196 // Size: 542 // EAX: pS -void EncodeLine(char *pS); +void EncodeLine(char* pS); // Offset: 740 // Size: 73 @@ -53,20 +56,20 @@ br_scalar SRandomPosNeg(br_scalar pN); // Size: 506 // EAX: pF // EDX: pS -char* GetALineWithNoPossibleService(FILE *pF, /*unsigned*/ char *pS); +char* GetALineWithNoPossibleService(FILE* pF, /*unsigned*/ char* pS); // Offset: 1744 // Size: 60 // EAX: pF // EDX: pS -char* GetALineAndDontArgue(FILE *pF, char *pS); +char* GetALineAndDontArgue(FILE* pF, char* pS); // Offset: 1804 // Size: 86 // EAX: pDestn_str // EDX: pStr_1 // EBX: pStr_2 -void PathCat(char *pDestn_str, char *pStr_1, char *pStr_2); +void PathCat(char* pDestn_str, char* pStr_1, char* pStr_2); // Offset: 1892 // Size: 96 @@ -79,7 +82,7 @@ float tandeg(float pAngle); // Offset: 2084 // Size: 80 // EAX: pF -tU32 GetFileLength(FILE *pF); +tU32 GetFileLength(FILE* pF); // Offset: 2164 // Size: 68 @@ -92,7 +95,7 @@ int BooleanTo1Or0(int pB); // EDX: pW // EBX: pH // ECX: pPixels -br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void *pPixels, int pFlags); +br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void* pPixels, int pFlags); // Offset: 2348 // Size: 118 @@ -100,7 +103,7 @@ br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, v // EDX: pX // EBX: pY // ECX: pW -br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH); +br_pixelmap* DRPixelmapAllocateSub(br_pixelmap* pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH); // Offset: 2468 // Size: 195 @@ -108,7 +111,7 @@ br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 p // EDX: pMatch_type // EBX: pWidth // ECX: pHeight -br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight); +br_pixelmap* DRPixelmapMatchSized(br_pixelmap* pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight); // Offset: 2664 // Size: 357 @@ -116,43 +119,43 @@ br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidt // EDX: pSrc // EBX: pSrc_width // ECX: pSrc_height -void CopyDoubled8BitTo16BitRectangle(br_pixelmap *pDst, br_pixelmap *pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap *pPalette); +void CopyDoubled8BitTo16BitRectangle(br_pixelmap* pDst, br_pixelmap* pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap* pPalette); // Offset: 3024 // Size: 262 // EAX: pSrc // EDX: pWidth // EBX: pHeight -br_pixelmap* Scale8BitPixelmap(br_pixelmap *pSrc, int pWidth, int pHeight); +br_pixelmap* Scale8BitPixelmap(br_pixelmap* pSrc, int pWidth, int pHeight); // Offset: 3288 // Size: 390 // EAX: pSrc // EDX: pN -br_pixelmap* Tile8BitPixelmap(br_pixelmap *pSrc, int pN); +br_pixelmap* Tile8BitPixelmap(br_pixelmap* pSrc, int pN); // Offset: 3680 // Size: 83 // EAX: pName // EDX: pList -tException_list FindExceptionInList(char *pName, tException_list pList); +tException_list FindExceptionInList(char* pName, tException_list pList); // Offset: 3764 // Size: 492 // EAX: pSrc -br_pixelmap* PurifiedPixelmap(br_pixelmap *pSrc); +br_pixelmap* PurifiedPixelmap(br_pixelmap* pSrc); // Offset: 4256 // Size: 105 // EAX: pFile_name -br_pixelmap* DRPixelmapLoad(char *pFile_name); +br_pixelmap* DRPixelmapLoad(char* pFile_name); // Offset: 4364 // Size: 174 // EAX: pFile_name // EDX: pPixelmaps // EBX: pNum -br_uint_32 DRPixelmapLoadMany(char *pFile_name, br_pixelmap **pPixelmaps, br_uint_16 pNum); +br_uint_32 DRPixelmapLoadMany(char* pFile_name, br_pixelmap** pPixelmaps, br_uint_16 pNum); // Offset: 4540 // Size: 67 @@ -164,17 +167,17 @@ void WaitFor(tU32 pDelay); // EAX: pActor // EDX: callback // EBX: arg -br_uint_32 DRActorEnumRecurse(br_actor *pActor, br_actor_enum_cbfn *callback, void *arg); +br_uint_32 DRActorEnumRecurse(br_actor* pActor, br_actor_enum_cbfn* callback, void* arg); // Offset: 4744 // Size: 77 -br_uint_32 CompareActorID(br_actor *pActor, void *pArg); +br_uint_32 CompareActorID(br_actor* pActor, void* pArg); // Offset: 4824 // Size: 60 // EAX: pSearch_root // EDX: pName -br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName); +br_actor* DRActorFindRecurse(br_actor* pSearch_root, char* pName); // Offset: 4884 // Size: 156 @@ -182,7 +185,7 @@ br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName); // EDX: pMat // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void *pArg); +br_uint_32 DRActorEnumRecurseWithMat(br_actor* pActor, br_material* pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void* pArg); // Offset: 5040 // Size: 188 @@ -190,7 +193,7 @@ br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uin // EDX: pMatrix // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithTrans(br_actor *pActor, br_matrix34 *pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void *pArg); +br_uint_32 DRActorEnumRecurseWithTrans(br_actor* pActor, br_matrix34* pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void* pArg); // Offset: 5228 // Size: 89 @@ -205,17 +208,17 @@ float fsign(float pNumber); // Size: 210 // EAX: pPrefix // EDX: pExtension -FILE* OpenUniqueFileB(char *pPrefix, char *pExtension); +FILE* OpenUniqueFileB(char* pPrefix, char* pExtension); // Offset: 5632 // Size: 572 // EAX: pF -void PrintScreenFile(FILE *pF); +void PrintScreenFile(FILE* pF); // Offset: 6204 // Size: 554 // EAX: pF -void PrintScreenFile16(FILE *pF); +void PrintScreenFile16(FILE* pF); // Offset: 6760 // Size: 95 @@ -240,7 +243,7 @@ void AddLostTime(tU32 pLost_time); // EDX: pStr // EBX: pFudge_colon // ECX: pForce_colon -void TimerString(tU32 pTime, char *pStr, int pFudge_colon, int pForce_colon); +void TimerString(tU32 pTime, char* pStr, int pFudge_colon, int pForce_colon); // Offset: 7256 // Size: 55 @@ -251,32 +254,32 @@ char* GetMiscString(int pIndex); // Size: 58 // EAX: pIndex // EDX: pStr -void GetCopyOfMiscString(int pIndex, char *pStr); +void GetCopyOfMiscString(int pIndex, char* pStr); // Offset: 7372 // Size: 113 // EAX: pPeriod // EDX: pLast_change // EBX: pCurrent_state -int Flash(tU32 pPeriod, tU32 *pLast_change, int *pCurrent_state); +int Flash(tU32 pPeriod, tU32* pLast_change, int* pCurrent_state); // Offset: 7488 // Size: 225 // EAX: pDst // EDX: pSrc -void MaterialCopy(br_material *pDst, br_material *pSrc); +void MaterialCopy(br_material* pDst, br_material* pSrc); // Offset: 7716 // Size: 139 // EAX: pColour_1 // EDX: pColour_2 -double RGBDifferenceSqr(tRGB_colour *pColour_1, tRGB_colour *pColour_2); +double RGBDifferenceSqr(tRGB_colour* pColour_1, tRGB_colour* pColour_2); // Offset: 7856 // Size: 200 // EAX: pRGB_colour // EDX: pPalette -int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette); +int FindBestMatch(tRGB_colour* pRGB_colour, br_pixelmap* pPalette); // Offset: 8056 // Size: 232 @@ -284,7 +287,7 @@ int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette); // EDX: pR // EBX: pG // ECX: pB -void BuildShadeTablePath(char *pThe_path, int pR, int pG, int pB); +void BuildShadeTablePath(char* pThe_path, int pR, int pG, int pB); // Offset: 8288 // Size: 80 @@ -299,7 +302,7 @@ br_pixelmap* LoadGeneratedShadeTable(int pR, int pG, int pB); // EDX: pR // EBX: pG // ECX: pB -void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB); +void SaveGeneratedShadeTable(br_pixelmap* pThe_table, int pR, int pG, int pB); // Offset: 8448 // Size: 106 @@ -307,7 +310,7 @@ void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB); // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter); +br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter); // Offset: 8556 // Size: 761 @@ -315,7 +318,7 @@ br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken); +br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken); // Offset: 9320 // Size: 92 @@ -326,25 +329,25 @@ void PossibleService(); // EAX: pA // EDX: pB // EBX: pC -void DRMatrix34TApplyP(br_vector3 *pA, br_vector3 *pB, br_matrix34 *pC); +void DRMatrix34TApplyP(br_vector3* pA, br_vector3* pB, br_matrix34* pC); // Offset: 9604 // Size: 132 // EAX: pPal // EDX: pEntry -tU16 PaletteEntry16Bit(br_pixelmap *pPal, int pEntry); +tU16 PaletteEntry16Bit(br_pixelmap* pPal, int pEntry); // Offset: 9736 // Size: 210 // EAX: pSrc -br_pixelmap* PaletteOf16Bits(br_pixelmap *pSrc); +br_pixelmap* PaletteOf16Bits(br_pixelmap* pSrc); // Offset: 9948 // Size: 219 // EAX: pDst // EDX: pSrc // EBX: pPalette -void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette); +void Copy8BitTo16Bit(br_pixelmap* pDst, br_pixelmap* pSrc, br_pixelmap* pPalette); // Offset: 10168 // Size: 558 @@ -352,7 +355,7 @@ void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette); +void Copy8BitTo16BitRectangle(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette); // Offset: 10728 // Size: 518 @@ -360,7 +363,7 @@ void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pi // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette); +void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette); // Offset: 11248 // Size: 279 @@ -368,7 +371,7 @@ void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette); +void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette); // Offset: 11528 // Size: 601 @@ -376,7 +379,7 @@ void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pD // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap *pPalette); +void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap* pPalette); // Offset: 12132 // Size: 173 @@ -384,13 +387,13 @@ void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDs // EDX: dx // EBX: dy // ECX: src -void DRPixelmapRectangleCopy(br_pixelmap *dst, br_int_16 dx, br_int_16 dy, br_pixelmap *src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h); +void DRPixelmapRectangleCopy(br_pixelmap* dst, br_int_16 dx, br_int_16 dy, br_pixelmap* src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h); // Offset: 12308 // Size: 107 // EAX: dst // EDX: src -void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src); +void DRPixelmapCopy(br_pixelmap* dst, br_pixelmap* src); // Offset: 12416 // Size: 82 @@ -398,112 +401,112 @@ void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src); // EDX: x // EBX: y // ECX: w -void DRPixelmapRectangleFill(br_pixelmap *dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour); +void DRPixelmapRectangleFill(br_pixelmap* dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour); // Offset: 12500 // Size: 156 // EAX: pPoint // EDX: pNormal -int NormalSideOfPlane(br_vector3 *pPoint, br_vector3 *pNormal, br_scalar pD); +int NormalSideOfPlane(br_vector3* pPoint, br_vector3* pNormal, br_scalar pD); // Offset: 12656 // Size: 351 // EAX: pMaterial -br_material* DRMaterialClone(br_material *pMaterial); +br_material* DRMaterialClone(br_material* pMaterial); // Offset: 13008 // Size: 93 // EAX: s -void StripCR(char *s); +void StripCR(char* s); // Offset: 13104 // Size: 132 -void SubsStringJob(char *pStr, ...); +void SubsStringJob(char* pStr, ...); // Offset: 13236 // Size: 454 // EAX: pS -void DecodeLine2(char *pS); +void DecodeLine2(char* pS); // Offset: 13692 // Size: 304 // EAX: pS -void EncodeLine2(char *pS); +void EncodeLine2(char* pS); // Offset: 13996 // Size: 553 // EAX: pThe_path -void EncodeFile(char *pThe_path); +void EncodeFile(char* pThe_path); // Offset: 14552 // Size: 513 // EAX: pThe_path -void EncodeFileWrapper(char *pThe_path); +void EncodeFileWrapper(char* pThe_path); // Offset: 15068 // Size: 72 // EAX: pThe_path -void EncodeAllFilesInDirectory(char *pThe_path); +void EncodeAllFilesInDirectory(char* pThe_path); // Offset: 15140 // Size: 89 // EAX: pF -void SkipNLines(FILE *pF); +void SkipNLines(FILE* pF); // Offset: 15232 // Size: 118 // EAX: p1 // EDX: p2 -int DRStricmp(char *p1, char *p2); +int DRStricmp(char* p1, char* p2); // Offset: 15352 // Size: 559 // EAX: pArray // EDX: pCount -void GlorifyMaterial(br_material **pArray, int pCount); +void GlorifyMaterial(br_material** pArray, int pCount); // Offset: 15912 // Size: 178 // EAX: pArray // EDX: pN -void WhitenVertexRGB(br_model **pArray, int pN); +void WhitenVertexRGB(br_model** pArray, int pN); // Offset: 16092 // Size: 239 // EAX: pPalette -void NobbleNonzeroBlacks(br_pixelmap *pPalette); +void NobbleNonzeroBlacks(br_pixelmap* pPalette); // Offset: 16332 // Size: 55 // EAX: pThe_path -int PDCheckDriveExists(char *pThe_path); +int PDCheckDriveExists(char* pThe_path); // Offset: 16388 // Size: 102 // EAX: pPrims -int OpacityInPrims(br_token_value *pPrims); +int OpacityInPrims(br_token_value* pPrims); // Offset: 16492 // Size: 97 // EAX: pMaterial -int AlreadyBlended(br_material *pMaterial); +int AlreadyBlended(br_material* pMaterial); // Offset: 16592 // Size: 148 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialTablishly(br_material *pMaterial, int pPercent); +void BlendifyMaterialTablishly(br_material* pMaterial, int pPercent); // Offset: 16740 // Size: 110 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialPrimitively(br_material *pMaterial, int pPercent); +void BlendifyMaterialPrimitively(br_material* pMaterial, int pPercent); // Offset: 16852 // Size: 73 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterial(br_material *pMaterial, int pPercent); +void BlendifyMaterial(br_material* pMaterial, int pPercent); #endif diff --git a/src/DETHRACE/common/world.c b/src/DETHRACE/common/world.c index ab96dd27..d2cc0a55 100644 --- a/src/DETHRACE/common/world.c +++ b/src/DETHRACE/common/world.c @@ -1,20 +1,25 @@ #include "world.h" -br_actor *gActor_array[500]; -float *gGroove_funk_bindings[960]; -br_actor *gDelete_list[500]; -br_actor *gLight_array[50]; -br_model *gAdditional_models[1000]; -br_actor *gSpec_vol_actors[100]; -char *gDepth_effect_names[2]; -char *gFunk_nature_names[4]; -char *gGroove_object_names[4]; -char *gGroove_path_names[2]; -char *gGroove_nature_names[2]; -char *gFunk_anim_names[2]; -char *gFunk_move_names[6]; +#include "brender.h" +#include "loading.h" + +#include + +br_actor* gActor_array[500]; +float* gGroove_funk_bindings[960]; +br_actor* gDelete_list[500]; +br_actor* gLight_array[50]; +br_model* gAdditional_models[1000]; +br_actor* gSpec_vol_actors[100]; +char* gDepth_effect_names[2]; +char* gFunk_nature_names[4]; +char* gGroove_object_names[4]; +char* gGroove_path_names[2]; +char* gGroove_nature_names[2]; +char* gFunk_anim_names[2]; +char* gFunk_move_names[6]; tPath_name gAdditional_actor_path; -char *gTime_mode_names[2]; +char* gTime_mode_names[2]; tPath_name gAdditional_model_path; tU32 gPrevious_groove_times[2]; int gRace_file_version; @@ -23,28 +28,28 @@ tWall_texturing_level gWall_texturing_level; int gNumber_of_additional_models; int gNumber_of_actors; float gTemp; -br_actor *gLast_actor; -br_actor *gKnown_actor; -br_actor *gAdditional_actors; -br_actor *gGroove_by_proxy_actor; +br_actor* gLast_actor; +br_actor* gKnown_actor; +br_actor* gAdditional_actors; +br_actor* gGroove_by_proxy_actor; int gRendering_accessories; tScale_mode gCurrent_scale_mode; int gNumber_of_lights; tRoad_texturing_level gRoad_texturing_level; int gDelete_count; br_scalar gNearest_distance; -br_actor *gNearest_actor; -br_actor *gStandard_lamp; +br_actor* gNearest_actor; +br_actor* gStandard_lamp; tRotate_mode gCurrent_rotate_mode; tCar_texturing_level gCar_texturing_level; br_scalar gSight_distance_squared; -char *gLollipop_names[3]; -char *gAxis_names[3]; +char* gLollipop_names[3]; +char* gAxis_names[3]; int gGroovidelics_array_size; -tGroovidelic_spec *gGroovidelics_array; +tGroovidelic_spec* gGroovidelics_array; int gSpec_vol_mode; -char *gFunk_type_names[5]; -tFunkotronic_spec *gFunkotronics_array; +char* gFunk_type_names[5]; +tFunkotronic_spec* gFunkotronics_array; int gFunkotronics_array_size; // Offset: 0 @@ -60,24 +65,24 @@ void SetSightDistance(br_scalar pYon) { // Offset: 152 // Size: 121 // EAX: pThe_name -br_actor* FindActorInArray(char *pThe_name) { +br_actor* FindActorInArray(char* pThe_name) { int i; } // Offset: 276 // Size: 121 // EAX: pThe_name -br_actor* FindLightInArray(char *pThe_name) { +br_actor* FindLightInArray(char* pThe_name) { int i; } // Offset: 400 // Size: 223 // EAX: pSource_actor -br_actor* CloneActor(br_actor *pSource_actor) { - br_actor *new_actor; - br_actor *child_actor; - br_actor *new_child_actor; +br_actor* CloneActor(br_actor* pSource_actor) { + br_actor* new_actor; + br_actor* child_actor; + br_actor* new_child_actor; } // Offset: 624 @@ -86,19 +91,19 @@ br_actor* CloneActor(br_actor *pSource_actor) { // EDX: pMax_pixelmaps // EBX: pMax_shade_tables // ECX: pMax_materials -void InitialiseStorageSpace(tBrender_storage *pStorage_space, int pMax_pixelmaps, int pMax_shade_tables, int pMax_materials, int pMax_models) { +void InitialiseStorageSpace(tBrender_storage* pStorage_space, int pMax_pixelmaps, int pMax_shade_tables, int pMax_materials, int pMax_models) { } // Offset: 872 // Size: 107 // EAX: pStorage_space -void DisposeStorageSpace(tBrender_storage *pStorage_space) { +void DisposeStorageSpace(tBrender_storage* pStorage_space) { } // Offset: 980 // Size: 463 // EAX: pStorage_space -void ClearOutStorageSpace(tBrender_storage *pStorage_space) { +void ClearOutStorageSpace(tBrender_storage* pStorage_space) { int i; } @@ -106,7 +111,7 @@ void ClearOutStorageSpace(tBrender_storage *pStorage_space) { // Size: 232 // EAX: pStorage_space // EDX: pThe_pm -tAdd_to_storage_result AddPixelmapToStorage(tBrender_storage *pStorage_space, br_pixelmap **pThe_pm) { +tAdd_to_storage_result AddPixelmapToStorage(tBrender_storage* pStorage_space, br_pixelmap** pThe_pm) { int i; } @@ -114,7 +119,7 @@ tAdd_to_storage_result AddPixelmapToStorage(tBrender_storage *pStorage_space, br // Size: 211 // EAX: pStorage_space // EDX: pThe_st -tAdd_to_storage_result AddShadeTableToStorage(tBrender_storage *pStorage_space, br_pixelmap *pThe_st) { +tAdd_to_storage_result AddShadeTableToStorage(tBrender_storage* pStorage_space, br_pixelmap* pThe_st) { int i; } @@ -122,7 +127,7 @@ tAdd_to_storage_result AddShadeTableToStorage(tBrender_storage *pStorage_space, // Size: 234 // EAX: pStorage_space // EDX: pThe_mat -tAdd_to_storage_result AddMaterialToStorage(tBrender_storage *pStorage_space, br_material *pThe_mat) { +tAdd_to_storage_result AddMaterialToStorage(tBrender_storage* pStorage_space, br_material* pThe_mat) { int i; } @@ -130,7 +135,7 @@ tAdd_to_storage_result AddMaterialToStorage(tBrender_storage *pStorage_space, br // Size: 231 // EAX: pStorage_space // EDX: pThe_mod -tAdd_to_storage_result AddModelToStorage(tBrender_storage *pStorage_space, br_model *pThe_mod) { +tAdd_to_storage_result AddModelToStorage(tBrender_storage* pStorage_space, br_model* pThe_mod) { int i; } @@ -139,31 +144,31 @@ tAdd_to_storage_result AddModelToStorage(tBrender_storage *pStorage_space, br_mo // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNPixelmaps(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNPixelmaps(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_pixelmap *temp_array[200]; + char* str; + br_pixelmap* temp_array[200]; } // Offset: 2864 // Size: 195 // EAX: pStorage_space // EDX: pName -br_pixelmap* LoadSinglePixelmap(tBrender_storage *pStorage_space, char *pName) { - br_pixelmap *temp; +br_pixelmap* LoadSinglePixelmap(tBrender_storage* pStorage_space, char* pName) { + br_pixelmap* temp; } // Offset: 3060 // Size: 195 // EAX: pStorage_space // EDX: pName -br_material* LoadSingleMaterial(tBrender_storage *pStorage_space, char *pName) { - br_material *temp; +br_material* LoadSingleMaterial(tBrender_storage* pStorage_space, char* pName) { + br_material* temp; } // Offset: 3256 @@ -171,23 +176,23 @@ br_material* LoadSingleMaterial(tBrender_storage *pStorage_space, char *pName) { // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNShadeTables(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNShadeTables(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_pixelmap *temp_array[50]; + char* str; + br_pixelmap* temp_array[50]; } // Offset: 3652 // Size: 195 // EAX: pStorage_space // EDX: pName -br_pixelmap* LoadSingleShadeTable(tBrender_storage *pStorage_space, char *pName) { - br_pixelmap *temp; +br_pixelmap* LoadSingleShadeTable(tBrender_storage* pStorage_space, char* pName) { + br_pixelmap* temp; } // Offset: 3848 @@ -195,15 +200,15 @@ br_pixelmap* LoadSingleShadeTable(tBrender_storage *pStorage_space, char *pName) // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNMaterials(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNMaterials(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_material *temp_array[200]; + char* str; + br_material* temp_array[200]; } // Offset: 4264 @@ -211,39 +216,39 @@ int LoadNMaterials(tBrender_storage *pStorage_space, FILE *pF, int pCount) { // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNModels(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNModels(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_model *temp_array[2000]; - v11model *prepared; + char* str; + br_model* temp_array[2000]; + v11model* prepared; int group; } // Offset: 4716 // Size: 103 // EAX: pM -void DodgyModelUpdate(br_model *pM) { +void DodgyModelUpdate(br_model* pM) { } // Offset: 4820 // Size: 197 // EAX: pOld // EDX: pSuffix -br_material* SuffixedMaterial(br_material *pOld, char *pSuffix) { - br_material *new_mat; - char *new_id; +br_material* SuffixedMaterial(br_material* pOld, char* pSuffix) { + br_material* new_mat; + char* new_id; } // Offset: 5020 // Size: 656 // EAX: pModel // EDX: pFace -int FaceIsRoad(br_model *pModel, tU16 pFace) { +int FaceIsRoad(br_model* pModel, tU16 pFace) { br_vector3 v0; br_vector3 v1; br_vector3 cross; @@ -253,47 +258,47 @@ int FaceIsRoad(br_model *pModel, tU16 pFace) { // Size: 161 // EAX: pModel // EDX: pFace -br_material* RoadPerspToUntex(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* RoadPerspToUntex(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 5840 // Size: 169 // EAX: pModel // EDX: pFace -br_material* WallPerspToLinear(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallPerspToLinear(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 6012 // Size: 188 // EAX: pModel // EDX: pFace -br_material* WallPerspToUntex(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallPerspToUntex(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 6200 // Size: 260 // EAX: pModel // EDX: pCallback -void ProcessModelFaceMaterials2(br_model *pModel, tPMFM2CB pCallback) { +void ProcessModelFaceMaterials2(br_model* pModel, tPMFM2CB pCallback) { tU16 f; tU16 group; - br_material *old_mat; + br_material* old_mat; } // Offset: 6460 // Size: 173 // EAX: pModel // EDX: pCallback -void ProcessModelFaceMaterials(br_model *pModel, tPMFMCB pCallback) { +void ProcessModelFaceMaterials(br_model* pModel, tPMFMCB pCallback) { tU16 f; - br_material *possible_mat; - br_material *new_mat; + br_material* possible_mat; + br_material* new_mat; } // Offset: 6636 @@ -301,7 +306,7 @@ void ProcessModelFaceMaterials(br_model *pModel, tPMFMCB pCallback) { // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNTrackModels(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNTrackModels(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; @@ -309,91 +314,91 @@ int LoadNTrackModels(tBrender_storage *pStorage_space, FILE *pF, int pCount) { int total; int group; char s[256]; - char *str; - br_model *temp_array[2000]; - v11model *prepared; + char* str; + br_model* temp_array[2000]; + v11model* prepared; } // Offset: 7192 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomePixelmaps(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomePixelmaps(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_pixelmap *temp_array[200]; + char* str; + br_pixelmap* temp_array[200]; } // Offset: 7300 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeShadeTables(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeShadeTables(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_pixelmap *temp_array[50]; + char* str; + br_pixelmap* temp_array[50]; } // Offset: 7408 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeMaterials(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeMaterials(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_material *temp_array[200]; + char* str; + br_material* temp_array[200]; } // Offset: 7516 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeModels(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeModels(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_model *temp_array[2000]; + char* str; + br_model* temp_array[2000]; } // Offset: 7624 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeTrackModels(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeTrackModels(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_model *temp_array[2000]; + char* str; + br_model* temp_array[2000]; } // Offset: 7732 // Size: 87 // EAX: pSlot_number // EDX: pPeriod_address -void AddFunkGrooveBinding(int pSlot_number, float *pPeriod_address) { +void AddFunkGrooveBinding(int pSlot_number, float* pPeriod_address) { } // Offset: 7820 @@ -413,7 +418,7 @@ float ControlBoundFunkGroovePlus(int pSlot_number, float pValue) { // EAX: pStart // EDX: pEnd // EBX: pDelta -void ShiftBoundGrooveFunks(char *pStart, char *pEnd, int pDelta) { +void ShiftBoundGrooveFunks(char* pStart, char* pEnd, int pDelta) { int i; } @@ -428,19 +433,19 @@ tFunkotronic_spec* AddNewFunkotronic() { // EAX: pOwner void DisposeFunkotronics(int pOwner) { int i; - tFunkotronic_spec *the_funk; + tFunkotronic_spec* the_funk; } // Offset: 8788 // Size: 76 // EAX: pV // EDX: pThe_funk -void AddProximityVertex(br_vector3 *pV, tFunkotronic_spec *pThe_funk) { +void AddProximityVertex(br_vector3* pV, tFunkotronic_spec* pThe_funk) { } // Offset: 8864 // Size: 65 -void AddProximityVertexXYZ(br_scalar pX, br_scalar pY, br_scalar pZ, tFunkotronic_spec *pThe_funk) { +void AddProximityVertexXYZ(br_scalar pX, br_scalar pY, br_scalar pZ, tFunkotronic_spec* pThe_funk) { br_vector3 v; } @@ -449,8 +454,8 @@ void AddProximityVertexXYZ(br_scalar pX, br_scalar pY, br_scalar pZ, tFunkotroni // EAX: pActor // EDX: pMat // EBX: pThe_funk -br_uint_32 CalcProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spec *pThe_funk) { - br_face *the_face; +br_uint_32 CalcProximities(br_actor* pActor, br_material* pMat, tFunkotronic_spec* pThe_funk) { + br_face* the_face; int i; } @@ -459,8 +464,8 @@ br_uint_32 CalcProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spe // EAX: pActor // EDX: pMat // EBX: pThe_funk -br_uint_32 AddProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spec *pThe_funk) { - br_face *the_face; +br_uint_32 AddProximities(br_actor* pActor, br_material* pMat, tFunkotronic_spec* pThe_funk) { + br_face* the_face; int i; } @@ -469,7 +474,7 @@ br_uint_32 AddProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spec // EAX: pVictim1 // EDX: pVictim2 // EBX: pCulprit -void Adjust2FloatsForExceptions(float *pVictim1, float *pVictim2, br_pixelmap *pCulprit) { +void Adjust2FloatsForExceptions(float* pVictim1, float* pVictim2, br_pixelmap* pCulprit) { tException_list e; } @@ -478,13 +483,13 @@ void Adjust2FloatsForExceptions(float *pVictim1, float *pVictim2, br_pixelmap *p // EAX: pF // EDX: pOwner // EBX: pRef_offset -void AddFunkotronics(FILE *pF, int pOwner, int pRef_offset) { +void AddFunkotronics(FILE* pF, int pOwner, int pRef_offset) { char s[256]; - char *str; + char* str; int first_time; int i; int j; - tFunkotronic_spec *the_funk; + tFunkotronic_spec* the_funk; float speed1; float speed2; float a_min; @@ -493,8 +498,8 @@ void AddFunkotronics(FILE *pF, int pOwner, int pRef_offset) { float a_max; float d_max; float s_max; - void *the_pixels; - br_pixelmap *the_pixelmap; + void* the_pixels; + br_pixelmap* the_pixelmap; } // Offset: 13060 @@ -502,7 +507,7 @@ void AddFunkotronics(FILE *pF, int pOwner, int pRef_offset) { // EAX: pOwner void DisposeGroovidelics(int pOwner) { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 13180 @@ -517,13 +522,13 @@ tGroovidelic_spec* AddNewGroovidelic() { // EDX: pOwner // EBX: pParent_actor // ECX: pRef_offset -void AddGroovidelics(FILE *pF, int pOwner, br_actor *pParent_actor, int pRef_offset, int pAllowed_to_be_absent) { +void AddGroovidelics(FILE* pF, int pOwner, br_actor* pParent_actor, int pRef_offset, int pAllowed_to_be_absent) { char s[256]; - char *str; + char* str; int first_time; int i; int j; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 16148 @@ -531,7 +536,7 @@ void AddGroovidelics(FILE *pF, int pOwner, br_actor *pParent_actor, int pRef_off // EAX: pOwner void KillGroovadelic(int pOwner) { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 16312 @@ -539,7 +544,7 @@ void KillGroovadelic(int pOwner) { // EAX: pOwner void KillFunkotronic(int pOwner) { int i; - tFunkotronic_spec *the_funk; + tFunkotronic_spec* the_funk; } // Offset: 16500 @@ -547,7 +552,7 @@ void KillFunkotronic(int pOwner) { // EAX: pActor // EDX: pMatrix // EBX: pArg -br_uint_32 DeleteBastards(br_actor *pActor, br_matrix34 *pMatrix, void *pArg) { +br_uint_32 DeleteBastards(br_actor* pActor, br_matrix34* pMatrix, void* pArg) { int i; int parent_already_doomed; } @@ -562,7 +567,7 @@ void DeleteAnyZeroBastards() { // EAX: pActor // EDX: pMatrix // EBX: pArg -br_uint_32 ApplyTransToModels(br_actor *pActor, br_matrix34 *pMatrix, void *pArg) { +br_uint_32 ApplyTransToModels(br_actor* pActor, br_matrix34* pMatrix, void* pArg) { int i; br_vector3 temp_point; } @@ -570,9 +575,9 @@ br_uint_32 ApplyTransToModels(br_actor *pActor, br_matrix34 *pMatrix, void *pArg // Offset: 17068 // Size: 120 // EAX: pActor -int FindSpecVolIndex(br_actor *pActor) { +int FindSpecVolIndex(br_actor* pActor) { int i; - tSpecial_volume *v; + tSpecial_volume* v; } // Offset: 17188 @@ -581,20 +586,20 @@ int FindSpecVolIndex(br_actor *pActor) { // EDX: pMat_1 // EBX: pMat_2 // ECX: pAxis_0 -void MungeMaterial(br_matrix34 *pMat, br_material *pMat_1, br_material *pMat_2, int pAxis_0, int pAxis_1) { +void MungeMaterial(br_matrix34* pMat, br_material* pMat_1, br_material* pMat_2, int pAxis_0, int pAxis_1) { } // Offset: 17432 // Size: 166 // EAX: pActor -void SetSpecVolMatSize(br_actor *pActor) { - br_model *model; +void SetSpecVolMatSize(br_actor* pActor) { + br_model* model; } // Offset: 17600 // Size: 115 // EAX: pSpec -void FindInverseAndWorldBox(tSpecial_volume *pSpec) { +void FindInverseAndWorldBox(tSpecial_volume* pSpec) { br_bounds bnds; } @@ -602,15 +607,15 @@ void FindInverseAndWorldBox(tSpecial_volume *pSpec) { // Size: 109 void UpdateSpecVol() { int index; - tSpecial_volume *v; + tSpecial_volume* v; } // Offset: 17828 // Size: 834 void SaveSpecialVolumes() { - FILE *f; + FILE* f; int i; - tSpecial_volume *v; + tSpecial_volume* v; } // Offset: 18664 @@ -620,18 +625,18 @@ void SaveAdditionalStuff() { // Offset: 18804 // Size: 110 -br_uint_32 ProcessMaterials(br_actor *pActor, tPMFM2CB pCallback) { +br_uint_32 ProcessMaterials(br_actor* pActor, tPMFM2CB pCallback) { } // Offset: 18916 // Size: 123 -br_uint_32 ProcessFaceMaterials2(br_actor *pActor, tPMFM2CB pCallback) { +br_uint_32 ProcessFaceMaterials2(br_actor* pActor, tPMFM2CB pCallback) { } // Offset: 19040 // Size: 91 // EAX: pMaterial -void ChangePerspToSubdivCB(br_material *pMaterial) { +void ChangePerspToSubdivCB(br_material* pMaterial) { } // Offset: 19132 @@ -642,7 +647,7 @@ void ChangePerspToSubdiv() { // Offset: 19188 // Size: 78 // EAX: pMaterial -void ChangeSubdivToPerspCB(br_material *pMaterial) { +void ChangeSubdivToPerspCB(br_material* pMaterial) { } // Offset: 19268 @@ -652,52 +657,52 @@ void ChangeSubdivToPersp() { // Offset: 19324 // Size: 123 -br_uint_32 ProcessFaceMaterials(br_actor *pActor, tPMFMCB pCallback) { +br_uint_32 ProcessFaceMaterials(br_actor* pActor, tPMFMCB pCallback) { } // Offset: 19448 // Size: 236 // EAX: pm -int DRPixelmapHasZeros(br_pixelmap *pm) { +int DRPixelmapHasZeros(br_pixelmap* pm) { int x; int y; - char *row_ptr; - char *pp; + char* row_ptr; + char* pp; } // Offset: 19684 // Size: 125 // EAX: pStorage // EDX: pMap -int StorageContainsPixelmap(tBrender_storage *pStorage, br_pixelmap *pMap) { +int StorageContainsPixelmap(tBrender_storage* pStorage, br_pixelmap* pMap) { int i; } // Offset: 19812 // Size: 266 // EAX: pStorage -void HideStoredOpaqueTextures(tBrender_storage *pStorage) { +void HideStoredOpaqueTextures(tBrender_storage* pStorage) { int i; } // Offset: 20080 // Size: 224 // EAX: pStorage -void RevealStoredTransparentTextures(tBrender_storage *pStorage) { +void RevealStoredTransparentTextures(tBrender_storage* pStorage) { int i; } // Offset: 20304 // Size: 236 // EAX: pStorage -void HideStoredTextures(tBrender_storage *pStorage) { +void HideStoredTextures(tBrender_storage* pStorage) { int i; } // Offset: 20540 // Size: 197 // EAX: pStorage -void RevealStoredTextures(tBrender_storage *pStorage) { +void RevealStoredTextures(tBrender_storage* pStorage) { int i; } @@ -706,7 +711,7 @@ void RevealStoredTextures(tBrender_storage *pStorage) { // EAX: pStorage // EDX: pNew // EBX: pOld -void SetCarStorageTexturingLevel(tBrender_storage *pStorage, tCar_texturing_level pNew, tCar_texturing_level pOld) { +void SetCarStorageTexturingLevel(tBrender_storage* pStorage, tCar_texturing_level pNew, tCar_texturing_level pOld) { } // Offset: 20864 @@ -724,7 +729,7 @@ void SetCarTexturingLevel(tCar_texturing_level pLevel) { // Size: 138 // EAX: pIdent // EDX: pSuffix -int HasThisSuffix(char *pIdent, char *pSuffix) { +int HasThisSuffix(char* pIdent, char* pSuffix) { size_t len_ident; size_t len_suffix; } @@ -733,55 +738,55 @@ int HasThisSuffix(char *pIdent, char *pSuffix) { // Size: 145 // EAX: pOld_ident // EDX: pSuffix -br_material* UnsuffixedMaterial(char *pOld_ident, char *pSuffix) { - br_material *result; +br_material* UnsuffixedMaterial(char* pOld_ident, char* pSuffix) { + br_material* result; int unsuffixed_len; - char *new_id; + char* new_id; } // Offset: 21340 // Size: 118 // EAX: pModel // EDX: pFace -br_material* RoadUntexToPersp(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* RoadUntexToPersp(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 21460 // Size: 240 // EAX: pModel // EDX: pFace -br_material* WallLinearToUntex(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallLinearToUntex(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 21700 // Size: 203 // EAX: pModel // EDX: pFace -br_material* WallUntexToLinear(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallUntexToLinear(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 21904 // Size: 153 // EAX: pModel // EDX: pFace -br_material* WallUntexToPersp(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallUntexToPersp(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 22060 // Size: 112 // EAX: pModel // EDX: pFace -br_material* WallLinearToPersp(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallLinearToPersp(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 22172 @@ -816,20 +821,20 @@ void SetWallTexturingLevel(tWall_texturing_level pLevel) { // Size: 82 // EAX: pLevel void ReallySetWallTexturingLevel(tWall_texturing_level pLevel) { - static tPMFMCB *tweaker[3][3]; + static tPMFMCB* tweaker[3][3]; } // Offset: 22536 // Size: 297 // EAX: pModel // EDX: pFace -br_material* DisposeSuffixedMaterials(br_model *pModel, tU16 pFace) { +br_material* DisposeSuffixedMaterials(br_model* pModel, tU16 pFace) { size_t max_suffix_len; - br_material *mat; - br_material *victim; - static char *suffixes[3]; + br_material* mat; + br_material* victim; + static char* suffixes[3]; int s; - char *id; + char* id; } // Offset: 22836 @@ -839,7 +844,7 @@ void DisposeTexturingMaterials() { // Offset: 23000 // Size: 73 -br_uint_32 SetAccessoryRenderingCB(br_actor *pActor, void *pFlag) { +br_uint_32 SetAccessoryRenderingCB(br_actor* pActor, void* pFlag) { } // Offset: 23076 @@ -870,24 +875,41 @@ int GetCarSimplificationLevel() { // EAX: pF // EDX: pSpec // EBX: pScreen_name_str -void ParseSpecialVolume(FILE *pF, tSpecial_volume *pSpec, char *pScreen_name_str) { +void ParseSpecialVolume(FILE* pF, tSpecial_volume* pSpec, char* pScreen_name_str) { char s[256]; + pSpec->gravity_multiplier = GetAScalar(pF); + pSpec->viscosity_multiplier = GetAScalar(pF); + pSpec->car_damage_per_ms = GetAScalar(pF); + pSpec->ped_damage_per_ms = GetAScalar(pF); + pSpec->camera_special_effect_index = GetAnInt(pF); + pSpec->sky_col = GetAnInt(pF); + + GetAString(pF, s); + if (pScreen_name_str) { + strcpy(pScreen_name_str, s); + } else { + pSpec->screen_material = BrMaterialFind(s); + } + pSpec->entry_noise = GetAnInt(pF); + pSpec->exit_noise = GetAnInt(pF); + pSpec->engine_noise_index = GetAnInt(pF); + pSpec->material_modifier_index = GetAnInt(pF); } // Offset: 23584 // Size: 56 // EAX: pDst // EDX: pNew -void AddExceptionToList(tException_list *pDst, tException_list pNew) { +void AddExceptionToList(tException_list* pDst, tException_list pNew) { } // Offset: 23640 // Size: 527 // EAX: pName -void LoadExceptionsFile(char *pName) { - FILE *f; +void LoadExceptionsFile(char* pName) { + FILE* f; char line[256]; - char *tok; + char* tok; int file_version; tException_list e; char delimiters[4]; @@ -896,7 +918,7 @@ void LoadExceptionsFile(char *pName) { // Offset: 24168 // Size: 91 // EAX: pTrack_file_name -void LoadExceptionsFileForTrack(char *pTrack_file_name) { +void LoadExceptionsFileForTrack(char* pTrack_file_name) { tPath_name exceptions_file_name; } @@ -911,11 +933,11 @@ void FreeExceptions() { // EAX: pFile_name // EDX: pTrack_spec // EBX: pRace_info -void LoadTrack(char *pFile_name, tTrack_spec *pTrack_spec, tRace_info *pRace_info) { +void LoadTrack(char* pFile_name, tTrack_spec* pTrack_spec, tRace_info* pRace_info) { char temp_name[14]; - FILE *f; - FILE *non_car_f; - FILE *g; + FILE* f; + FILE* non_car_f; + FILE* g; int i; int j; int k; @@ -934,41 +956,41 @@ void LoadTrack(char *pFile_name, tTrack_spec *pTrack_spec, tRace_info *pRace_inf tPath_name the_path; tPath_name general_file_path; char s[256]; - char *str; + char* str; float temp_float; - br_actor *new_root; + br_actor* new_root; br_vector3 a; br_vector3 b; tU16 sky_pixels_high; - tNon_car_spec *non_car; - tSpecial_volume *spec; + tNon_car_spec* non_car; + tSpecial_volume* spec; br_vector3 p[3]; br_vector3 v1; br_vector3 v2; br_vector3 temp_v; br_bounds temp_bounds; - tPed_subs *ped_subs; - br_pixelmap *sky; - br_material *material; + tPed_subs* ped_subs; + br_pixelmap* sky; + br_material* material; } // Offset: 31676 // Size: 82 -br_uint_32 RemoveBounds(br_actor *pActor, void *pArg) { +br_uint_32 RemoveBounds(br_actor* pActor, void* pArg) { } // Offset: 31760 // Size: 52 // EAX: pActor -void RemoveBoundsStructures(br_actor *pActor) { +void RemoveBoundsStructures(br_actor* pActor) { } // Offset: 31812 // Size: 439 // EAX: pTrack_spec -void FreeTrack(tTrack_spec *pTrack_spec) { +void FreeTrack(tTrack_spec* pTrack_spec) { int i; - tNon_car_spec *non_car; + tNon_car_spec* non_car; } // Offset: 32252 @@ -977,7 +999,7 @@ void FreeTrack(tTrack_spec *pTrack_spec) { // EDX: pTrack_spec // EBX: pCamera // ECX: pCamera_to_world_transform -void ProcessTrack(br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform, int pRender_blends) { +void ProcessTrack(br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform, int pRender_blends) { } // Offset: 32348 @@ -991,17 +1013,17 @@ void FunkThoseTronics() { int j; int iteration_count; int finished; - tFunkotronic_spec *the_funk; - br_vector3 *the_proximity; + tFunkotronic_spec* the_funk; + br_vector3* the_proximity; tS32 the_time; tS32 old_last_time; tS32 time_diff; - br_matrix23 *mat_matrix; - br_material *the_material; + br_matrix23* mat_matrix; + br_material* the_material; float f_the_time; float rot_amount; float f_time_diff; - br_pixelmap *old_colour_map; + br_pixelmap* old_colour_map; } // Offset: 41796 @@ -1009,7 +1031,7 @@ void FunkThoseTronics() { // EAX: pSubject_actor // EDX: ref_to_world // EBX: pWhich_axis -void LollipopizeActor(br_actor *pSubject_actor, br_matrix34 *ref_to_world, tLollipop_mode pWhich_axis) { +void LollipopizeActor(br_actor* pSubject_actor, br_matrix34* ref_to_world, tLollipop_mode pWhich_axis) { br_vector3 ref_to_subject; br_vector3 fixed_axis; br_vector3 vector_a; @@ -1022,13 +1044,13 @@ void LollipopizeActor(br_actor *pSubject_actor, br_matrix34 *ref_to_world, tLoll // Size: 140 // EAX: pResult // EDX: pActor -void CalcActorGlobalPos(br_vector3 *pResult, br_actor *pActor) { +void CalcActorGlobalPos(br_vector3* pResult, br_actor* pActor) { } // Offset: 42740 // Size: 320 // EAX: pPoint -int PointOutOfSight(br_vector3 *pPoint, br_scalar pMax_distance) { +int PointOutOfSight(br_vector3* pPoint, br_scalar pMax_distance) { br_vector3 distance_vector; } @@ -1038,7 +1060,7 @@ int PointOutOfSight(br_vector3 *pPoint, br_scalar pMax_distance) { // EDX: pTime // EBX: pMat // ECX: pInterrupt_it -void PathGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pMat, int pInterrupt_it) { +void PathGrooveBastard(tGroovidelic_spec* pGroove, tU32 pTime, br_matrix34* pMat, int pInterrupt_it) { br_scalar pos; } @@ -1048,13 +1070,13 @@ void PathGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pMat // EDX: pTime // EBX: pMat // ECX: pInterrupt_it -void ObjectGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pMat, int pInterrupt_it) { +void ObjectGrooveBastard(tGroovidelic_spec* pGroove, tU32 pTime, br_matrix34* pMat, int pInterrupt_it) { int rock_it; br_scalar x_size; br_scalar y_size; br_scalar z_size; br_scalar pos; - br_bounds *bounds; + br_bounds* bounds; } // Offset: 56176 @@ -1062,10 +1084,10 @@ void ObjectGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pM // EAX: pGroove // EDX: pTime // EBX: pInterrupt_it -void GrooveThisDelic(tGroovidelic_spec *pGroove, tU32 pTime, int pInterrupt_it) { - br_actor *the_actor; +void GrooveThisDelic(tGroovidelic_spec* pGroove, tU32 pTime, int pInterrupt_it) { + br_actor* the_actor; br_vector3 actor_pos; - br_matrix34 *the_mat; + br_matrix34* the_mat; tInterrupt_status old_path_interrupt; tInterrupt_status old_object_interrupt; } @@ -1073,16 +1095,16 @@ void GrooveThisDelic(tGroovidelic_spec *pGroove, tU32 pTime, int pInterrupt_it) // Offset: 56788 // Size: 191 void GrooveThoseDelics() { - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; float f_the_time; } // Offset: 56980 // Size: 137 // EAX: pActor -void StopGroovidelic(br_actor *pActor) { +void StopGroovidelic(br_actor* pActor) { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 57120 @@ -1091,15 +1113,15 @@ void StopGroovidelic(br_actor *pActor) { // EDX: pMatrix // EBX: pPath_interrupt // ECX: pObject_interrupt -void SetGrooveInterrupt(int pGroove_index, br_matrix34 *pMatrix, int pPath_interrupt, int pObject_interrupt, float pPath_resumption, float pObject_resumption) { - tGroovidelic_spec *the_groove; +void SetGrooveInterrupt(int pGroove_index, br_matrix34* pMatrix, int pPath_interrupt, int pObject_interrupt, float pPath_resumption, float pObject_resumption) { + tGroovidelic_spec* the_groove; } // Offset: 57240 // Size: 92 void ResetGrooveFlags() { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 57332 @@ -1111,9 +1133,9 @@ tSpecial_volume* GetDefaultSpecialVolumeForWater() { // Size: 342 // EAX: pP // EDX: pLast_vol -tSpecial_volume* FindSpecialVolume(br_vector3 *pP, tSpecial_volume *pLast_vol) { +tSpecial_volume* FindSpecialVolume(br_vector3* pP, tSpecial_volume* pLast_vol) { int i; - tSpecial_volume *v; + tSpecial_volume* v; br_vector3 p; } @@ -1126,20 +1148,20 @@ void SaveAdditionalActors() { // Size: 89 // EAX: pPos // EDX: pFace -br_scalar DistanceFromFace(br_vector3 *pPos, tFace_ref *pFace) { +br_scalar DistanceFromFace(br_vector3* pPos, tFace_ref* pFace) { br_vector3 normal; } // Offset: 57864 // Size: 166 -br_uint_32 CalcHighestID(br_actor *pActor, int *pHighest) { +br_uint_32 CalcHighestID(br_actor* pActor, int* pHighest) { char s[256]; int number; } // Offset: 58032 // Size: 182 -br_uint_32 SetID(br_actor *pActor, void *pArg) { +br_uint_32 SetID(br_actor* pActor, void* pArg) { char s[256]; } @@ -1147,7 +1169,7 @@ br_uint_32 SetID(br_actor *pActor, void *pArg) { // Size: 100 // EAX: pUniverse_actor // EDX: pActor -void UniquificateActorsName(br_actor *pUniverse_actor, br_actor *pActor) { +void UniquificateActorsName(br_actor* pUniverse_actor, br_actor* pActor) { int highest; } @@ -1155,31 +1177,31 @@ void UniquificateActorsName(br_actor *pUniverse_actor, br_actor *pActor) { // Size: 107 // EAX: pActor // EDX: pPrefix -void AccessoryHeadup(br_actor *pActor, char *pPrefix) { +void AccessoryHeadup(br_actor* pActor, char* pPrefix) { char s[256]; int i; - br_actor *original_actor; + br_actor* original_actor; } // Offset: 58424 // Size: 132 -br_uint_32 CalcHighestNonAmID(br_actor *pActor, int *pHighest) { +br_uint_32 CalcHighestNonAmID(br_actor* pActor, int* pHighest) { char s[256]; int number; } // Offset: 58556 // Size: 443 -br_uint_32 SetIDAndDupModel(br_actor *pActor, void *pArg) { +br_uint_32 SetIDAndDupModel(br_actor* pActor, void* pArg) { char s[256]; char s2[256]; - br_model *new_model; + br_model* new_model; } // Offset: 59000 // Size: 100 // EAX: pActor -void DuplicateIfNotAmpersand(br_actor *pActor) { +void DuplicateIfNotAmpersand(br_actor* pActor) { int highest; } @@ -1187,7 +1209,7 @@ void DuplicateIfNotAmpersand(br_actor *pActor) { // Size: 1246 // EAX: pIndex void DropActor(int pIndex) { - FILE *f; + FILE* f; tPath_name the_path; char s[256]; int i; @@ -1202,8 +1224,8 @@ void DropActor(int pIndex) { br_angle phi; br_matrix34 mat; br_transform new_transform; - br_actor *a; - br_actor *last_non_ampersand; + br_actor* a; + br_actor* last_non_ampersand; } // Offset: 60348 @@ -1258,7 +1280,7 @@ void DropActor9() { // Offset: 60788 // Size: 273 -br_uint_32 IdentifyAccCB(br_actor *pActor, void *pArg) { +br_uint_32 IdentifyAccCB(br_actor* pActor, void* pArg) { br_scalar distance; char s[256]; br_vector3 v; @@ -1271,15 +1293,15 @@ void IdentifyAcc() { // Offset: 61172 // Size: 108 -br_uint_32 DelGrooveRef(br_actor *pActor, void *pArg) { - tGroovidelic_spec *the_groove; +br_uint_32 DelGrooveRef(br_actor* pActor, void* pArg) { + tGroovidelic_spec* the_groove; int i; } // Offset: 61280 // Size: 177 -br_uint_32 DelReferencedModels(br_actor *pActor, void *pArg) { - tGroovidelic_spec *the_groove; +br_uint_32 DelReferencedModels(br_actor* pActor, void* pArg) { + tGroovidelic_spec* the_groove; int i; } @@ -1290,7 +1312,7 @@ void DeleteAcc() { // Offset: 61596 // Size: 170 -br_uint_32 OffsetModel(br_actor *pActor, void *pArg) { +br_uint_32 OffsetModel(br_actor* pActor, void* pArg) { int i; } @@ -1298,14 +1320,14 @@ br_uint_32 OffsetModel(br_actor *pActor, void *pArg) { // Size: 54 // EAX: pActor // EDX: pOffset -void OffsetActor(br_actor *pActor, br_vector3 *pOffset) { +void OffsetActor(br_actor* pActor, br_vector3* pOffset) { } // Offset: 61824 // Size: 286 // EAX: pActor // EDX: pOffset -void CentreActor(br_actor *pActor, br_vector3 *pOffset) { +void CentreActor(br_actor* pActor, br_vector3* pOffset) { } // Offset: 62112 @@ -1548,25 +1570,25 @@ br_material* GetExternalMat() { // EDX: pIndex // EBX: pInt_mat // ECX: pExt_mat -void BuildSpecVolModel(tSpecial_volume *pSpec, int pIndex, br_material *pInt_mat, br_material *pExt_mat) { +void BuildSpecVolModel(tSpecial_volume* pSpec, int pIndex, br_material* pInt_mat, br_material* pExt_mat) { int i; int j; int temp; - tSpecial_volume *v; - br_actor *actor; - br_model *model; + tSpecial_volume* v; + br_actor* actor; + br_model* model; } // Offset: 67484 // Size: 427 // EAX: pIndex void DropSpecVol(int pIndex) { - FILE *f; + FILE* f; tPath_name the_path; int i; int spec_count; tSpecial_volume spec; - tSpecial_volume *new_specs; + tSpecial_volume* new_specs; char s[256]; } @@ -1624,10 +1646,10 @@ void DropSpecVol9() { // Size: 344 void IdentifySpecVol() { int min_index; - tSpecial_volume *v; + tSpecial_volume* v; br_scalar min_d; br_scalar d; - br_vector3 *p; + br_vector3* p; char s[256]; } @@ -1635,8 +1657,8 @@ void IdentifySpecVol() { // Size: 349 // EAX: pIndex void DelSpecVolumeGraph(int pIndex) { - br_actor *actor; - br_model *model; + br_actor* actor; + br_model* model; } // Offset: 69040 @@ -1854,16 +1876,15 @@ void SnapSpecVolToVertical() { void ShowSpecialVolumes() { int j; int temp; - tSpecial_volume *v; - br_actor *actor; - br_model *model; - br_material *internal_mat; - br_material *external_mat; + tSpecial_volume* v; + br_actor* actor; + br_model* model; + br_material* internal_mat; + br_material* external_mat; } // Offset: 71100 // Size: 112 void HideSpecialVolumes() { - tSpecial_volume *v; + tSpecial_volume* v; } - diff --git a/src/DETHRACE/new/stack_trace_handler.h b/src/DETHRACE/new/stack_trace_handler.h new file mode 100644 index 00000000..2d377456 --- /dev/null +++ b/src/DETHRACE/new/stack_trace_handler.h @@ -0,0 +1,316 @@ +// Based on https://gist.github.com/jvranish/4441299 + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#include +#include +#else +#include +#include +#endif + +static int stack_nbr = 0; +static char _program_name[1024]; + +/* Resolve symbol name and source location given the path to the executable + and an address */ +int addr2line(char const* const program_name, void const* const addr) { + char addr2line_cmd[512] = { 0 }; + +/* have addr2line map the address to the relent line in the code */ +#ifdef __APPLE__ + /* apple does things differently... */ + sprintf(addr2line_cmd, "atos -o %.256s %p", program_name, addr); +#else + sprintf(addr2line_cmd, "addr2line -f -p -e %.256s %p", program_name, addr); +#endif + + fprintf(stderr, "%d: ", stack_nbr++); + return system(addr2line_cmd); +} + +#ifdef _WIN32 +void windows_print_stacktrace(CONTEXT* context) { + SymInitialize(GetCurrentProcess(), 0, true); + + STACKFRAME frame = { 0 }; + + /* setup initial stack frame */ + frame.AddrPC.Offset = context->Eip; + frame.AddrPC.Mode = AddrModeFlat; + frame.AddrStack.Offset = context->Esp; + frame.AddrStack.Mode = AddrModeFlat; + frame.AddrFrame.Offset = context->Ebp; + frame.AddrFrame.Mode = AddrModeFlat; + + while (StackWalk(IMAGE_FILE_MACHINE_I386, + GetCurrentProcess(), + GetCurrentThread(), + &frame, + context, + 0, + SymFunctionTableAccess, + SymGetModuleBase, + 0)) { + addr2line(_program_name, (void*)frame.AddrPC.Offset); + } + + SymCleanup(GetCurrentProcess()); +} + +LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS* ExceptionInfo) { + switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { + case EXCEPTION_ACCESS_VIOLATION: + fputs("Error: EXCEPTION_ACCESS_VIOLATION\n", stderr); + break; + case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: + fputs("Error: EXCEPTION_ARRAY_BOUNDS_EXCEEDED\n", stderr); + break; + case EXCEPTION_BREAKPOINT: + fputs("Error: EXCEPTION_BREAKPOINT\n", stderr); + break; + case EXCEPTION_DATATYPE_MISALIGNMENT: + fputs("Error: EXCEPTION_DATATYPE_MISALIGNMENT\n", stderr); + break; + case EXCEPTION_FLT_DENORMAL_OPERAND: + fputs("Error: EXCEPTION_FLT_DENORMAL_OPERAND\n", stderr); + break; + case EXCEPTION_FLT_DIVIDE_BY_ZERO: + fputs("Error: EXCEPTION_FLT_DIVIDE_BY_ZERO\n", stderr); + break; + case EXCEPTION_FLT_INEXACT_RESULT: + fputs("Error: EXCEPTION_FLT_INEXACT_RESULT\n", stderr); + break; + case EXCEPTION_FLT_INVALID_OPERATION: + fputs("Error: EXCEPTION_FLT_INVALID_OPERATION\n", stderr); + break; + case EXCEPTION_FLT_OVERFLOW: + fputs("Error: EXCEPTION_FLT_OVERFLOW\n", stderr); + break; + case EXCEPTION_FLT_STACK_CHECK: + fputs("Error: EXCEPTION_FLT_STACK_CHECK\n", stderr); + break; + case EXCEPTION_FLT_UNDERFLOW: + fputs("Error: EXCEPTION_FLT_UNDERFLOW\n", stderr); + break; + case EXCEPTION_ILLEGAL_INSTRUCTION: + fputs("Error: EXCEPTION_ILLEGAL_INSTRUCTION\n", stderr); + break; + case EXCEPTION_IN_PAGE_ERROR: + fputs("Error: EXCEPTION_IN_PAGE_ERROR\n", stderr); + break; + case EXCEPTION_INT_DIVIDE_BY_ZERO: + fputs("Error: EXCEPTION_INT_DIVIDE_BY_ZERO\n", stderr); + break; + case EXCEPTION_INT_OVERFLOW: + fputs("Error: EXCEPTION_INT_OVERFLOW\n", stderr); + break; + case EXCEPTION_INVALID_DISPOSITION: + fputs("Error: EXCEPTION_INVALID_DISPOSITION\n", stderr); + break; + case EXCEPTION_NONCONTINUABLE_EXCEPTION: + fputs("Error: EXCEPTION_NONCONTINUABLE_EXCEPTION\n", stderr); + break; + case EXCEPTION_PRIV_INSTRUCTION: + fputs("Error: EXCEPTION_PRIV_INSTRUCTION\n", stderr); + break; + case EXCEPTION_SINGLE_STEP: + fputs("Error: EXCEPTION_SINGLE_STEP\n", stderr); + break; + case EXCEPTION_STACK_OVERFLOW: + fputs("Error: EXCEPTION_STACK_OVERFLOW\n", stderr); + break; + default: + fputs("Error: Unrecognized Exception\n", stderr); + break; + } + fflush(stderr); + /* If this is a stack overflow then we can't walk the stack, so just show + where the error happened */ + if (EXCEPTION_STACK_OVERFLOW != ExceptionInfo->ExceptionRecord->ExceptionCode) { + windows_print_stacktrace(ExceptionInfo->ContextRecord); + } else { + addr2line(_program_name, (void*)ExceptionInfo->ContextRecord->Eip); + } + + return EXCEPTION_EXECUTE_HANDLER; +} + +void set_signal_handler(char* program_name) { + strcpy(_program_name, program_name); + SetUnhandledExceptionFilter(windows_exception_handler); +} +#else + +#define MAX_STACK_FRAMES 64 +static void* stack_traces[MAX_STACK_FRAMES]; + +void posix_print_stack_trace() { + int i, trace_size = 0; + char** messages = (char**)NULL; + + fputs("\nStack trace:\n", stderr); + + trace_size = backtrace(stack_traces, MAX_STACK_FRAMES); + messages = backtrace_symbols(stack_traces, trace_size); + + /* skip the first couple stack frames (as they are this function and + our handler) and also skip the last frame as it's (always?) junk. */ + for (i = 3; i < (trace_size - 1); ++i) { + if (addr2line(_program_name, stack_traces[i]) != 0) { + printf(" error determining line # for: %s\n", messages[i]); + } + } + if (messages) { + free(messages); + } +} + +void posix_signal_handler(int sig, siginfo_t* siginfo, void* context) { + (void)context; + fputs("\n******************\n", stderr); + + switch (sig) { + case SIGSEGV: + fputs("Caught SIGSEGV\n", stderr); + break; + case SIGINT: + fputs("Caught SIGINT\n", stderr); + break; + case SIGFPE: + switch (siginfo->si_code) { + case FPE_INTDIV: + fputs("Caught SIGFPE: FPE_INTDIV\n", stderr); + break; + case FPE_INTOVF: + fputs("Caught SIGFPE: FPE_INTOVF\n", stderr); + break; + case FPE_FLTDIV: + fputs("Caught SIGFPE: FPE_FLTDIV\n", stderr); + break; + case FPE_FLTOVF: + fputs("Caught SIGFPE: FPE_FLTOVF\n", stderr); + break; + case FPE_FLTUND: + fputs("Caught SIGFPE: FPE_FLTUND\n", stderr); + break; + case FPE_FLTRES: + fputs("Caught SIGFPE: FPE_FLTRES\n", stderr); + break; + case FPE_FLTINV: + fputs("Caught SIGFPE: FPE_FLTINV\n", stderr); + break; + case FPE_FLTSUB: + fputs("Caught SIGFPE: FPE_FLTSUB\n", stderr); + break; + default: + fputs("Caught SIGFPE: Arithmetic Exception\n", stderr); + break; + } + case SIGILL: + switch (siginfo->si_code) { + case ILL_ILLOPC: + fputs("Caught SIGILL: ILL_ILLOPC\n", stderr); + break; + case ILL_ILLOPN: + fputs("Caught SIGILL: ILL_ILLOPN\n", stderr); + break; + case ILL_ILLADR: + fputs("Caught SIGILL: ILL_ILLADR\n", stderr); + break; + case ILL_ILLTRP: + fputs("Caught SIGILL: ILL_ILLTRP\n", stderr); + break; + case ILL_PRVOPC: + fputs("Caught SIGILL: ILL_PRVOPC\n", stderr); + break; + case ILL_PRVREG: + fputs("Caught SIGILL: ILL_PRVREG\n", stderr); + break; + case ILL_COPROC: + fputs("Caught SIGILL: ILL_COPROC\n", stderr); + break; + case ILL_BADSTK: + fputs("Caught SIGILL: ILL_BADSTK\n", stderr); + break; + default: + fputs("Caught SIGILL: Illegal Instruction\n", stderr); + break; + } + break; + case SIGTERM: + fputs("Caught SIGTERM\n", stderr); + break; + case SIGABRT: + fputs("Caught SIGABRT\n", stderr); + break; + default: + break; + } + fputs("******************\n", stderr); + posix_print_stack_trace(); + exit(1); +} + +static uint8_t alternate_stack[SIGSTKSZ]; +void set_signal_handler(char* program_name) { + + strcpy(_program_name, program_name); + + /* setup alternate stack */ + { + stack_t ss = {}; + /* malloc is usually used here, I'm not 100% sure my static allocation + is valid but it seems to work just fine. */ + ss.ss_sp = (void*)alternate_stack; + ss.ss_size = SIGSTKSZ; + ss.ss_flags = 0; + + if (sigaltstack(&ss, NULL) != 0) { + err(1, "sigaltstack"); + } + } + + /* register our signal handlers */ + { + struct sigaction sig_action = {}; + sig_action.sa_sigaction = posix_signal_handler; + sigemptyset(&sig_action.sa_mask); + +#ifdef __APPLE__ + /* for some reason we backtrace() doesn't work on osx + when we use an alternate stack */ + sig_action.sa_flags = SA_SIGINFO; +#else + sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK; +#endif + + if (sigaction(SIGSEGV, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGFPE, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGINT, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGILL, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGTERM, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGABRT, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + } +} +#endif \ No newline at end of file diff --git a/src/DETHRACE/pc-dos/main.c b/src/DETHRACE/pc-dos/main.c index 55d784cd..fbbc7fc2 100644 --- a/src/DETHRACE/pc-dos/main.c +++ b/src/DETHRACE/pc-dos/main.c @@ -1,3 +1,4 @@ +#include "new/stack_trace_handler.h" #include "pc-dos/dossys.h" extern int _main(int pArgc, char* pArgv[]); @@ -5,6 +6,7 @@ extern int _main(int pArgc, char* pArgv[]); // EAX: pArgc // EDX: pArgv // Moved from pc-dos/dossys.c to enable unit testing -int main(int pArgc, char* pArgv[]) { - return _main(pArgc, pArgv); +int main(int argc, char* argv[]) { + set_signal_handler(argv[0]); + return _main(argc, argv); } diff --git a/test/DETHRACE/test_dossys.c b/test/DETHRACE/test_dossys.c index c8fd1c19..520c94c2 100644 --- a/test/DETHRACE/test_dossys.c +++ b/test/DETHRACE/test_dossys.c @@ -6,13 +6,7 @@ #include "common/globvars.h" #include "pc-dos/dossys.h" - void test_dossys_PDInitialiseSystem() { - - FILE *file = fopen("/tmp/KEYBOARD.COK", "wt"); - fprintf(file,"abcdef"); - fclose(file); - PDInitialiseSystem(); TEST_ASSERT_EQUAL_STRING("abc", gASCII_table); TEST_ASSERT_EQUAL_STRING("def", gASCII_shift_table); diff --git a/test/DETHRACE/test_loading.c b/test/DETHRACE/test_loading.c index 28a0226f..17035c3d 100644 --- a/test/DETHRACE/test_loading.c +++ b/test/DETHRACE/test_loading.c @@ -4,28 +4,47 @@ #include #include "common/globvars.h" +#include "common/init.h" #include "common/loading.h" - +#include "common/newgame.h" void test_loading_GetCDPathFromPathsTxtFile() { int result; tPath_name cd_path; - unlink("/tmp/PATHS.TXT"); - - // should return false, path does not exist - result = GetCDPathFromPathsTxtFile(cd_path); - TEST_ASSERT_EQUAL_INT(0, result); - - FILE *file = fopen("/tmp/PATHS.TXT","wt"); - fprintf(file,"test_cd_path\r\n"); - fclose(file); - result = GetCDPathFromPathsTxtFile(cd_path); TEST_ASSERT_EQUAL_INT(1, result); - TEST_ASSERT_EQUAL_STRING("test_cd_path", cd_path); + TEST_ASSERT_EQUAL_STRING(".\\DATA\\MINICD", cd_path); +} + +void test_loading_OldDRfopen() { + FILE* f; + + f = OldDRfopen("DATA/i-dont-exist", "rt"); + TEST_ASSERT_NULL(f); + + f = OldDRfopen("DATA/GENERAL.TXT", "rt"); + TEST_ASSERT_NOT_NULL(f); +} + +void test_loading_LoadGeneralParameters() { + + LoadGeneralParameters(); + TEST_ASSERT_EQUAL_FLOAT(0.02f, gCamera_hither); + TEST_ASSERT_EQUAL_INT(7500, gInitial_credits[0]); + TEST_ASSERT_EQUAL_INT(5000, gInitial_credits[1]); + TEST_ASSERT_EQUAL_INT(3000, gInitial_credits[2]); + TEST_ASSERT_EQUAL_STRING("BLKEAGLE.TXT", gBasic_car_names[0]); + TEST_ASSERT_EQUAL_FLOAT(0.2f, gDefault_default_water_spec_vol.gravity_multiplier); + TEST_ASSERT_EQUAL_FLOAT(50.0f, gDefault_default_water_spec_vol.viscosity_multiplier); + + TEST_ASSERT_EQUAL_INT(0, gInitial_net_credits[0]); + TEST_ASSERT_EQUAL_INT(2000, gInitial_net_credits[1]); + TEST_ASSERT_EQUAL_INT(1, gGravity_multiplier); } void test_loading_suite() { RUN_TEST(test_loading_GetCDPathFromPathsTxtFile); + RUN_TEST(test_loading_OldDRfopen); + RUN_TEST(test_loading_LoadGeneralParameters); } diff --git a/test/DETHRACE/test_utility.c b/test/DETHRACE/test_utility.c index 33025904..2375a8c5 100644 --- a/test/DETHRACE/test_utility.c +++ b/test/DETHRACE/test_utility.c @@ -1,10 +1,22 @@ #include "framework/unity.h" -#include #include "common/utility.h" +#include + +void test_utility_EncodeLinex() { + char buf[50]; + // first line of GENERAL.TXT, "@" prefix and line ending stripped + char input[] = "\x29\x2a\x9c\x22\x61\x4d\x5e\x5f\x60\x34\x64\x57\x8d\x2b\x82\x7b\x33\x4c"; + strcpy(buf, input); + EncodeLine(buf); + //TEST_ASSERT_EQUAL_INT(2, gEncryption_method); + char expected[] = "0.01\t\t\t\t\t// Hither"; + TEST_ASSERT_EQUAL_STRING(expected, buf); +} void test_utility_DecodeLine2() { char buf[50]; + gEncryption_method = 1; // first line of GENERAL.TXT, "@" prefix and line ending stripped char input[] = "\x29\x2a\x9c\x22\x61\x4d\x5e\x5f\x60\x34\x64\x57\x8d\x2b\x82\x7b\x33\x4c"; strcpy(buf, input); @@ -32,14 +44,14 @@ void test_utility_StripCR() { } void test_utility_GetALineWithNoPossibleService() { - FILE *file = fopen("/tmp/testfile","wt"); - fprintf(file,"hello world\r\n space_prefixed\r\n\r\n\ttab_prefixed\r\n$ignored_prefix\r\nlast_line"); + FILE* file = fopen("/tmp/testfile", "wt"); + fprintf(file, "hello world\r\n space_prefixed\r\n\r\n\ttab_prefixed\r\n$ignored_prefix\r\nlast_line"); fclose(file); - file = fopen("/tmp/testfile","rt"); + file = fopen("/tmp/testfile", "rt"); char s[256]; - char *result = GetALineWithNoPossibleService(file, s); + char* result = GetALineWithNoPossibleService(file, s); TEST_ASSERT_NOT_NULL(result); TEST_ASSERT_EQUAL_STRING("hello world", s); @@ -69,6 +81,7 @@ void test_utility_PathCat() { } void test_utility_suite() { + RUN_TEST(test_utility_EncodeLinex); RUN_TEST(test_utility_DecodeLine2); RUN_TEST(test_utility_EncodeLine2); RUN_TEST(test_utility_StripCR); diff --git a/test/Makefile b/test/Makefile index 49bb5f14..e49de68d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -16,8 +16,8 @@ DEPS := $(OBJS:.o=.d) INC_DIRS := $(shell find $(SRC_DIR) -type d) $(BR_SRC_DIR) $(DR_SRC_DIR) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) -CFLAGS ?= $(INC_FLAGS) -LDFLAGS ?= -lm +CFLAGS ?= $(INC_FLAGS) -g +LDFLAGS ?= -lm -fno-pie .PHONY: clean build run diff --git a/test/assets/DATA/ACTORS/PROG.ACT b/test/assets/DATA/ACTORS/PROG.ACT new file mode 100644 index 00000000..7167e786 --- /dev/null +++ b/test/assets/DATA/ACTORS/PROG.ACT @@ -0,0 +1 @@ + ******************************************************************************************************************************************************************************************************************************************************************** \ No newline at end of file diff --git a/test/assets/DATA/GENERAL.TXT b/test/assets/DATA/GENERAL.TXT new file mode 100644 index 00000000..5f7fd824 --- /dev/null +++ b/test/assets/DATA/GENERAL.TXT @@ -0,0 +1,83 @@ +@)*œ"aM^_`4dW+‚{3L +@Ÿ&O}n_`›KŽp3VJ9P +@1™=Tx^_`›K!pb5r;[Uz4<{Ž +@n_`›KŽ_3V3—SErq3aFƒŒ˜‚66›v8J +@+yŽ™„,“Nb5.‡‰–‚5b”r5U@i{({‚BŠ ž"*‚}3MT;u0z“Œœ +@*XM^_`›K!pb?}?JNzx}g‡Œƒ +@|;o,U;)4œ?R}no`›K!pb?}?JNzx}v”‡Œ›ƒ6b|$žBzw55•‰ž›e.“e3R +@<)4œ#M~koP+g:o,I>™„ƒ<4žgƒ††„e2“avLFu}s‰H—–&*V`=WKw41p‡„ +@z oœyŽ™„,™„,“aMqpB/ž˜'#š35LRh|‚y†(!' z7PS;r}‡Œ‹—W##•g9L +@{ hœyŽ™„,56œ?R}^_`›K!pb$v&_Ni4>z•–H”˜7b“r5V‡h4yŠB„— .V;5LB4-p”BMR“$/—t3— +@"Q}ns@){>o0Y:)4œ“abqF0‘˜3'„jv]Hh`}s‰H—–&*V`=WKw41p‡„ +@mP7s"jœyŽ™+ƒ;@4xƒB˜—…e2“wvUNwx}s‰H—–&*V`=WKw41p‡„ +@>q+L")*™?Qclj`›K!pb%v5QIg}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@5?Yak_`›K!pb5a3ZNog}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@-K>5=œ?W}^_`›d!e–Ÿ~3žFlu/qƒ†H”˜7br%JNus}v‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@J>)4 !Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}b‡‘œ›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@hoL({"n)yŽ™„ƒ<4‰|‹‡H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@H>)4 "Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@){>o0L>)(™#aM^pOH1… &Ÿg%žFlu/qƒ†H”˜7b•{3]Lk{4{’‘H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@>q+L")*™?Qclj`›K!pb%v5QIg}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@5?Yak_`›K!pb5a3ZNog}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@-K>5=œ?W}^_`›d!e–Ÿ~3žFlu/qƒ†H”˜7br%JNus}v‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@J>)4 !Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}b‡‘œ›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@hoL({"n)yŽ™„ƒ<4‰|‹‡H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@H>)4 "Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@){>o0L>)(™#aM^pOH1… &Ÿg%žFlu/qƒ†H”˜7b•{3]Lk{4{’‘H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@nP+{"n,I>55œ#QM^_`4dW7›cvMSzf)5 ‹†—W#-„33_Ds41p‡„ +@PxrnP7~Ž_œy!6ždiq9|’‘H‚’7b…v5QI42sF–Ÿ’e ™}#M +@<)4œ?P}noL.{>_œy!6ždnz3|ˆ…Hƒ0,‚34QIng}s‰H—–&*V`=WKw41p‡„ +@!6ždzf.5’H‡„ b—`vZB}u(y’‘R +@œ“+^ŠI“YWZAP +@Ÿ‘.RŽMžNWZAP +@)„,“abqF$š“š b„r"[‡pz2w„Ž W#-„37]Sr{35”‡˜ž–p”NHNWtbK38WD~fq5XBYRJe,—`"WBi4uc‡Ž—„e “g![Bu4m;WB‰œ“esF3%VHnx95‚A +@!pb2v0_Rw`}`ˆ† $6“avMW~w4tŠBž›0/“3&_Uzy8aƒ› +@+e<_œyŽ™„,“abqF…š“,63;KKo}-y‡š +@,4,“aM^_`›K!pb z%]Hh})lFžƒ,2šz3L +@#aM^_`›KŽ_3V3•_U;po.yŽ™„,“aMqpB8—“ 1‚a?_I;p™„,“aM^_O4R$*7˜wvwc;{;5ƒŒœ Že,™z%[ +@xooP›KŽ_œyŽ™+ƒ;G2`ˆ†H;3e-33FNo43z‘ +@<_œyŽ™„,“abqF'†•ž+'V}9WT~44{‚‡ +@>™„,“aM^_`4dW(#‚v$WFw44{‚‡ +@)(ž#Q}rjP+{"n,I>)(ž#Q}n_`›d!e‘‚r$JNus}x‰Œ‹W,,V}3JPtf65‹Œ—Wm$™av[Fx|}f‹„žW)' v:— +@=oœyŽ™„,o,U?)4œ?P}noL*{>o0H>)4 +@3V3•_U;g2s’Œ„e$—p"QU;r2gF‡‰‘Ÿe,“gvYFvq}aŸ’ +@?74 "OxrnN.g?q)U?71 "OxrnN. +@p3VMxvgŽ`=>’;/o2}žk9iY•$.3‰~9.9s‹.|eO{A#;+@|*c:™„,“aMqpB,—š*b„r5[‡iu3~F‡™‡ž3#šv8J +@<™„,“aMqpB,—š*b—a;QRi41p‡„ +@Q›KŽ_œy!6žc~y25–Ÿ—…e.“e3R +@SM^_`›K!pb2v;Q‡tr;pˆ‘„’e.“e3R +@bqF-˜‚˜+'˜g%žSsu)5‡’˜—–7bŸ}vZBv{}r‡ +@(2 +@(6 +@+6 +@(= +@, +@3V32[Aza1aF%š“,63›KKo}-y‡š +@* +@V!vxKrw}f‰—†–W!'šr/M +@>_œyŽ™„ƒ<4™pŠƒ‘R_,,V`3]Hup.%SFx}sŠ‹‹ +@œ“aM^_`4dW'šr/žrz}fƒ‡œ“6kVq3XHiq}f‰—†–W!7„z8Y‡k{.aK‘…“”.b?] +@o`›KŽ_œV!vzBwu$5N‹†R„ !™}2MŽ;v8s‰R„*7˜wvZRi}3rFE†ƒe+˜32[Jt3}sŠ‹‹ +@4,“aM^_O4R3 .—jv–Nu4.p…†–„lb”v0QU~4.z“ŒŒR“00Ÿ}1žWtg)8‚‡…W6.Ÿw3MOtc}sŠ‹‹ diff --git a/test/assets/DATA/KEYBOARD.COK b/test/assets/DATA/KEYBOARD.COK new file mode 100644 index 00000000..d96dc957 --- /dev/null +++ b/test/assets/DATA/KEYBOARD.COK @@ -0,0 +1 @@ +abcdef \ No newline at end of file diff --git a/test/assets/DATA/MINICD/DATA/GENERAL.TXT b/test/assets/DATA/MINICD/DATA/GENERAL.TXT new file mode 100644 index 00000000..0f745c88 --- /dev/null +++ b/test/assets/DATA/MINICD/DATA/GENERAL.TXT @@ -0,0 +1 @@ +Placeholder file for CD check... \ No newline at end of file diff --git a/test/assets/DATA/PATHS.TXT b/test/assets/DATA/PATHS.TXT new file mode 100644 index 00000000..fc5b668a --- /dev/null +++ b/test/assets/DATA/PATHS.TXT @@ -0,0 +1,5 @@ +.\DATA\MINICD +. +Full +English +..\CARMA diff --git a/test/framework/unity.c b/test/framework/unity.c index d23c73d0..1c561ecc 100755 --- a/test/framework/unity.c +++ b/test/framework/unity.c @@ -19,55 +19,67 @@ void UNITY_OUTPUT_CHAR(int); #endif /* Helpful macros for us to use here in Assert functions */ -#define UNITY_FAIL_AND_BAIL { Unity.CurrentTestFailed = 1; UNITY_OUTPUT_FLUSH(); TEST_ABORT(); } -#define UNITY_IGNORE_AND_BAIL { Unity.CurrentTestIgnored = 1; UNITY_OUTPUT_FLUSH(); TEST_ABORT(); } -#define RETURN_IF_FAIL_OR_IGNORE if (Unity.CurrentTestFailed || Unity.CurrentTestIgnored) return +#define UNITY_FAIL_AND_BAIL \ + { \ + Unity.CurrentTestFailed = 1; \ + UNITY_OUTPUT_FLUSH(); \ + TEST_ABORT(); \ + } +#define UNITY_IGNORE_AND_BAIL \ + { \ + Unity.CurrentTestIgnored = 1; \ + UNITY_OUTPUT_FLUSH(); \ + TEST_ABORT(); \ + } +#define RETURN_IF_FAIL_OR_IGNORE \ + if (Unity.CurrentTestFailed || Unity.CurrentTestIgnored) \ + return struct UNITY_STORAGE_T Unity; #ifdef UNITY_OUTPUT_COLOR -const char PROGMEM UnityStrOk[] = "\033[42mOK\033[00m"; -const char PROGMEM UnityStrPass[] = "\033[42mPASS\033[00m"; -const char PROGMEM UnityStrFail[] = "\033[41mFAIL\033[00m"; -const char PROGMEM UnityStrIgnore[] = "\033[43mIGNORE\033[00m"; +const char PROGMEM UnityStrOk[] = "\033[42mOK\033[00m"; +const char PROGMEM UnityStrPass[] = "\033[42mPASS\033[00m"; +const char PROGMEM UnityStrFail[] = "\033[41mFAIL\033[00m"; +const char PROGMEM UnityStrIgnore[] = "\033[43mIGNORE\033[00m"; #else -const char PROGMEM UnityStrOk[] = "OK"; -const char PROGMEM UnityStrPass[] = "PASS"; -const char PROGMEM UnityStrFail[] = "FAIL"; -const char PROGMEM UnityStrIgnore[] = "IGNORE"; +const char PROGMEM UnityStrOk[] = "OK"; +const char PROGMEM UnityStrPass[] = "PASS"; +const char PROGMEM UnityStrFail[] = "FAIL"; +const char PROGMEM UnityStrIgnore[] = "IGNORE"; #endif -static const char PROGMEM UnityStrNull[] = "NULL"; -static const char PROGMEM UnityStrSpacer[] = ". "; -static const char PROGMEM UnityStrExpected[] = " Expected "; -static const char PROGMEM UnityStrWas[] = " Was "; -static const char PROGMEM UnityStrGt[] = " to be greater than "; -static const char PROGMEM UnityStrLt[] = " to be less than "; -static const char PROGMEM UnityStrOrEqual[] = "or equal to "; -static const char PROGMEM UnityStrElement[] = " Element "; -static const char PROGMEM UnityStrByte[] = " Byte "; -static const char PROGMEM UnityStrMemory[] = " Memory Mismatch."; -static const char PROGMEM UnityStrDelta[] = " Values Not Within Delta "; -static const char PROGMEM UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless."; +static const char PROGMEM UnityStrNull[] = "NULL"; +static const char PROGMEM UnityStrSpacer[] = ". "; +static const char PROGMEM UnityStrExpected[] = " Expected "; +static const char PROGMEM UnityStrWas[] = " Was "; +static const char PROGMEM UnityStrGt[] = " to be greater than "; +static const char PROGMEM UnityStrLt[] = " to be less than "; +static const char PROGMEM UnityStrOrEqual[] = "or equal to "; +static const char PROGMEM UnityStrElement[] = " Element "; +static const char PROGMEM UnityStrByte[] = " Byte "; +static const char PROGMEM UnityStrMemory[] = " Memory Mismatch."; +static const char PROGMEM UnityStrDelta[] = " Values Not Within Delta "; +static const char PROGMEM UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless."; static const char PROGMEM UnityStrNullPointerForExpected[] = " Expected pointer to be NULL"; -static const char PROGMEM UnityStrNullPointerForActual[] = " Actual pointer was NULL"; +static const char PROGMEM UnityStrNullPointerForActual[] = " Actual pointer was NULL"; #ifndef UNITY_EXCLUDE_FLOAT -static const char PROGMEM UnityStrNot[] = "Not "; -static const char PROGMEM UnityStrInf[] = "Infinity"; -static const char PROGMEM UnityStrNegInf[] = "Negative Infinity"; -static const char PROGMEM UnityStrNaN[] = "NaN"; -static const char PROGMEM UnityStrDet[] = "Determinate"; -static const char PROGMEM UnityStrInvalidFloatTrait[] = "Invalid Float Trait"; +static const char PROGMEM UnityStrNot[] = "Not "; +static const char PROGMEM UnityStrInf[] = "Infinity"; +static const char PROGMEM UnityStrNegInf[] = "Negative Infinity"; +static const char PROGMEM UnityStrNaN[] = "NaN"; +static const char PROGMEM UnityStrDet[] = "Determinate"; +static const char PROGMEM UnityStrInvalidFloatTrait[] = "Invalid Float Trait"; #endif -const char PROGMEM UnityStrErrShorthand[] = "Unity Shorthand Support Disabled"; -const char PROGMEM UnityStrErrFloat[] = "Unity Floating Point Disabled"; -const char PROGMEM UnityStrErrDouble[] = "Unity Double Precision Disabled"; -const char PROGMEM UnityStrErr64[] = "Unity 64-bit Support Disabled"; -static const char PROGMEM UnityStrBreaker[] = "-----------------------"; -static const char PROGMEM UnityStrResultsTests[] = " Tests "; -static const char PROGMEM UnityStrResultsFailures[] = " Failures "; -static const char PROGMEM UnityStrResultsIgnored[] = " Ignored "; -static const char PROGMEM UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " "; -static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " "; +const char PROGMEM UnityStrErrShorthand[] = "Unity Shorthand Support Disabled"; +const char PROGMEM UnityStrErrFloat[] = "Unity Floating Point Disabled"; +const char PROGMEM UnityStrErrDouble[] = "Unity Double Precision Disabled"; +const char PROGMEM UnityStrErr64[] = "Unity 64-bit Support Disabled"; +static const char PROGMEM UnityStrBreaker[] = "-----------------------"; +static const char PROGMEM UnityStrResultsTests[] = " Tests "; +static const char PROGMEM UnityStrResultsFailures[] = " Failures "; +static const char PROGMEM UnityStrResultsIgnored[] = " Ignored "; +static const char PROGMEM UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " "; +static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " "; /*----------------------------------------------- * Pretty Printers & Test Result Output Handlers @@ -75,28 +87,23 @@ static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_N /*-----------------------------------------------*/ /* Local helper function to print characters. */ -static void UnityPrintChar(const char* pch) -{ +static void UnityPrintChar(const char* pch) { /* printable characters plus CR & LF are printed */ - if ((*pch <= 126) && (*pch >= 32)) - { + if ((*pch <= 126) && (*pch >= 32)) { UNITY_OUTPUT_CHAR(*pch); } /* write escaped carriage returns */ - else if (*pch == 13) - { + else if (*pch == 13) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('r'); } /* write escaped line feeds */ - else if (*pch == 10) - { + else if (*pch == 10) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('n'); } /* unprintable characters are shown as codes */ - else - { + else { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)*pch, 2); @@ -106,13 +113,11 @@ static void UnityPrintChar(const char* pch) /*-----------------------------------------------*/ /* Local helper function to print ANSI escape strings e.g. "\033[42m". */ #ifdef UNITY_OUTPUT_COLOR -static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) -{ +static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) { const char* pch = string; UNITY_UINT count = 0; - while (*pch && (*pch != 'm')) - { + while (*pch && (*pch != 'm')) { UNITY_OUTPUT_CHAR(*pch); pch++; count++; @@ -125,18 +130,14 @@ static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) #endif /*-----------------------------------------------*/ -void UnityPrint(const char* string) -{ +void UnityPrint(const char* string) { const char* pch = string; - if (pch != NULL) - { - while (*pch) - { + if (pch != NULL) { + while (*pch) { #ifdef UNITY_OUTPUT_COLOR /* print ANSI escape code */ - if ((*pch == 27) && (*(pch + 1) == '[')) - { + if ((*pch == 27) && (*(pch + 1) == '[')) { pch += UnityPrintAnsiEscapeString(pch); continue; } @@ -149,107 +150,88 @@ void UnityPrint(const char* string) /*-----------------------------------------------*/ #ifdef UNITY_INCLUDE_PRINT_FORMATTED -void UnityPrintFormatted(const char* format, ...) -{ +void UnityPrintFormatted(const char* format, ...) { const char* pch = format; va_list va; va_start(va, format); - if (pch != NULL) - { - while (*pch) - { + if (pch != NULL) { + while (*pch) { /* format identification character */ - if (*pch == '%') - { + if (*pch == '%') { pch++; - if (pch != NULL) - { - switch (*pch) - { - case 'd': - case 'i': - { - const int number = va_arg(va, int); - UnityPrintNumber((UNITY_INT)number); - break; - } + if (pch != NULL) { + switch (*pch) { + case 'd': + case 'i': { + const int number = va_arg(va, int); + UnityPrintNumber((UNITY_INT)number); + break; + } #ifndef UNITY_EXCLUDE_FLOAT_PRINT - case 'f': - case 'g': - { - const double number = va_arg(va, double); - UnityPrintFloat((UNITY_DOUBLE)number); - break; - } + case 'f': + case 'g': { + const double number = va_arg(va, double); + UnityPrintFloat((UNITY_DOUBLE)number); + break; + } #endif - case 'u': - { - const unsigned int number = va_arg(va, unsigned int); - UnityPrintNumberUnsigned((UNITY_UINT)number); - break; - } - case 'b': - { - const unsigned int number = va_arg(va, unsigned int); - const UNITY_UINT mask = (UNITY_UINT)0 - (UNITY_UINT)1; - UNITY_OUTPUT_CHAR('0'); - UNITY_OUTPUT_CHAR('b'); - UnityPrintMask(mask, (UNITY_UINT)number); - break; - } - case 'x': - case 'X': - case 'p': - { - const unsigned int number = va_arg(va, unsigned int); - UNITY_OUTPUT_CHAR('0'); - UNITY_OUTPUT_CHAR('x'); - UnityPrintNumberHex((UNITY_UINT)number, 8); - break; - } - case 'c': - { - const int ch = va_arg(va, int); - UnityPrintChar((const char *)&ch); - break; - } - case 's': - { - const char * string = va_arg(va, const char *); - UnityPrint(string); - break; - } - case '%': - { - UnityPrintChar(pch); - break; - } - default: - { - /* print the unknown format character */ - UNITY_OUTPUT_CHAR('%'); - UnityPrintChar(pch); - break; - } + case 'u': { + const unsigned int number = va_arg(va, unsigned int); + UnityPrintNumberUnsigned((UNITY_UINT)number); + break; + } + case 'b': { + const unsigned int number = va_arg(va, unsigned int); + const UNITY_UINT mask = (UNITY_UINT)0 - (UNITY_UINT)1; + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('b'); + UnityPrintMask(mask, (UNITY_UINT)number); + break; + } + case 'x': + case 'X': + case 'p': { + const unsigned int number = va_arg(va, unsigned int); + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)number, 8); + break; + } + case 'c': { + const int ch = va_arg(va, int); + UnityPrintChar((const char*)&ch); + break; + } + case 's': { + const char* string = va_arg(va, const char*); + UnityPrint(string); + break; + } + case '%': { + UnityPrintChar(pch); + break; + } + default: { + /* print the unknown format character */ + UNITY_OUTPUT_CHAR('%'); + UnityPrintChar(pch); + break; + } } } } #ifdef UNITY_OUTPUT_COLOR /* print ANSI escape code */ - else if ((*pch == 27) && (*(pch + 1) == '[')) - { + else if ((*pch == 27) && (*(pch + 1) == '[')) { pch += UnityPrintAnsiEscapeString(pch); continue; } #endif - else if (*pch == '\n') - { + else if (*pch == '\n') { UNITY_PRINT_EOL(); - } - else - { + } else { UnityPrintChar(pch); } @@ -262,34 +244,27 @@ void UnityPrintFormatted(const char* format, ...) #endif /* ! UNITY_INCLUDE_PRINT_FORMATTED */ /*-----------------------------------------------*/ -void UnityPrintLen(const char* string, const UNITY_UINT32 length) -{ +void UnityPrintLen(const char* string, const UNITY_UINT32 length) { const char* pch = string; - if (pch != NULL) - { - while (*pch && ((UNITY_UINT32)(pch - string) < length)) - { + if (pch != NULL) { + while (*pch && ((UNITY_UINT32)(pch - string) < length)) { /* printable characters plus CR & LF are printed */ - if ((*pch <= 126) && (*pch >= 32)) - { + if ((*pch <= 126) && (*pch >= 32)) { UNITY_OUTPUT_CHAR(*pch); } /* write escaped carriage returns */ - else if (*pch == 13) - { + else if (*pch == 13) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('r'); } /* write escaped line feeds */ - else if (*pch == 10) - { + else if (*pch == 10) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('n'); } /* unprintable characters are shown as codes */ - else - { + else { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)*pch, 2); @@ -300,50 +275,37 @@ void UnityPrintLen(const char* string, const UNITY_UINT32 length) } /*-----------------------------------------------*/ -void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style) -{ - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if (style == UNITY_DISPLAY_STYLE_CHAR) - { +void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style) { + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if (style == UNITY_DISPLAY_STYLE_CHAR) { /* printable characters plus CR & LF are printed */ UNITY_OUTPUT_CHAR('\''); - if ((number <= 126) && (number >= 32)) - { + if ((number <= 126) && (number >= 32)) { UNITY_OUTPUT_CHAR((int)number); } /* write escaped carriage returns */ - else if (number == 13) - { + else if (number == 13) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('r'); } /* write escaped line feeds */ - else if (number == 10) - { + else if (number == 10) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('n'); } /* unprintable characters are shown as codes */ - else - { + else { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)number, 2); } UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrintNumber(number); } - } - else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) - { + } else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) { UnityPrintNumberUnsigned((UNITY_UINT)number); - } - else - { + } else { UNITY_OUTPUT_CHAR('0'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)number, (char)((style & 0xF) * 2)); @@ -351,12 +313,10 @@ void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T } /*-----------------------------------------------*/ -void UnityPrintNumber(const UNITY_INT number_to_print) -{ +void UnityPrintNumber(const UNITY_INT number_to_print) { UNITY_UINT number = (UNITY_UINT)number_to_print; - if (number_to_print < 0) - { + if (number_to_print < 0) { /* A negative number, including MIN negative */ UNITY_OUTPUT_CHAR('-'); number = (~number) + 1; @@ -366,71 +326,54 @@ void UnityPrintNumber(const UNITY_INT number_to_print) /*----------------------------------------------- * basically do an itoa using as little ram as possible */ -void UnityPrintNumberUnsigned(const UNITY_UINT number) -{ +void UnityPrintNumberUnsigned(const UNITY_UINT number) { UNITY_UINT divisor = 1; /* figure out initial divisor */ - while (number / divisor > 9) - { + while (number / divisor > 9) { divisor *= 10; } /* now mod and print, then divide divisor */ - do - { + do { UNITY_OUTPUT_CHAR((char)('0' + (number / divisor % 10))); divisor /= 10; } while (divisor > 0); } /*-----------------------------------------------*/ -void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print) -{ +void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print) { int nibble; char nibbles = nibbles_to_print; - if ((unsigned)nibbles > UNITY_MAX_NIBBLES) - { + if ((unsigned)nibbles > UNITY_MAX_NIBBLES) { nibbles = UNITY_MAX_NIBBLES; } - while (nibbles > 0) - { + while (nibbles > 0) { nibbles--; nibble = (int)(number >> (nibbles * 4)) & 0x0F; - if (nibble <= 9) - { + if (nibble <= 9) { UNITY_OUTPUT_CHAR((char)('0' + nibble)); - } - else - { + } else { UNITY_OUTPUT_CHAR((char)('A' - 10 + nibble)); } } } /*-----------------------------------------------*/ -void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) -{ +void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) { UNITY_UINT current_bit = (UNITY_UINT)1 << (UNITY_INT_WIDTH - 1); UNITY_INT32 i; - for (i = 0; i < UNITY_INT_WIDTH; i++) - { - if (current_bit & mask) - { - if (current_bit & number) - { + for (i = 0; i < UNITY_INT_WIDTH; i++) { + if (current_bit & mask) { + if (current_bit & number) { UNITY_OUTPUT_CHAR('1'); - } - else - { + } else { UNITY_OUTPUT_CHAR('0'); } - } - else - { + } else { UNITY_OUTPUT_CHAR('X'); } current_bit = current_bit >> 1; @@ -446,8 +389,7 @@ void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) * in single-precision operation (for that level of accuracy, a more * complicated algorithm would be needed). */ -void UnityPrintFloat(const UNITY_DOUBLE input_number) -{ +void UnityPrintFloat(const UNITY_DOUBLE input_number) { #ifdef UNITY_INCLUDE_DOUBLE static const int sig_digits = 9; static const UNITY_INT32 min_scaled = 100000000; @@ -461,31 +403,23 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) UNITY_DOUBLE number = input_number; /* print minus sign (does not handle negative zero) */ - if (number < 0.0f) - { + if (number < 0.0f) { UNITY_OUTPUT_CHAR('-'); number = -number; } /* handle zero, NaN, and +/- infinity */ - if (number == 0.0f) - { + if (number == 0.0f) { UnityPrint("0"); - } - else if (isnan(number)) - { + } else if (isnan(number)) { UnityPrint("nan"); - } - else if (isinf(number)) - { + } else if (isinf(number)) { UnityPrint("inf"); - } - else - { + } else { UNITY_INT32 n_int = 0, n; int exponent = 0; int decimals, digits; - char buf[16] = {0}; + char buf[16] = { 0 }; /* * Scale up or down by powers of 10. To minimize rounding error, @@ -494,26 +428,33 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) * (exactly) the remaining power of 10 and perform one more * multiplication or division. */ - if (number < 1.0f) - { + if (number < 1.0f) { UNITY_DOUBLE factor = 1.0f; - while (number < (UNITY_DOUBLE)max_scaled / 1e10f) { number *= 1e10f; exponent -= 10; } - while (number * factor < (UNITY_DOUBLE)min_scaled) { factor *= 10.0f; exponent--; } + while (number < (UNITY_DOUBLE)max_scaled / 1e10f) { + number *= 1e10f; + exponent -= 10; + } + while (number * factor < (UNITY_DOUBLE)min_scaled) { + factor *= 10.0f; + exponent--; + } number *= factor; - } - else if (number > (UNITY_DOUBLE)max_scaled) - { + } else if (number > (UNITY_DOUBLE)max_scaled) { UNITY_DOUBLE divisor = 1.0f; - while (number > (UNITY_DOUBLE)min_scaled * 1e10f) { number /= 1e10f; exponent += 10; } - while (number / divisor > (UNITY_DOUBLE)max_scaled) { divisor *= 10.0f; exponent++; } + while (number > (UNITY_DOUBLE)min_scaled * 1e10f) { + number /= 1e10f; + exponent += 10; + } + while (number / divisor > (UNITY_DOUBLE)max_scaled) { + divisor *= 10.0f; + exponent++; + } number /= divisor; - } - else - { + } else { /* * In this range, we can split off the integer part before * doing any multiplications. This reduces rounding error by @@ -523,7 +464,11 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) n_int = (UNITY_INT32)number; number -= (UNITY_DOUBLE)n_int; - while (n_int < min_scaled) { n_int *= 10; factor *= 10.0f; exponent--; } + while (n_int < min_scaled) { + n_int *= 10; + factor *= 10.0f; + exponent--; + } number *= factor; } @@ -539,8 +484,7 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) n += n_int; - if (n >= max_scaled) - { + if (n >= max_scaled) { n = min_scaled; exponent++; } @@ -550,48 +494,41 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) exponent += decimals; /* truncate trailing zeroes after decimal point */ - while ((decimals > 0) && ((n % 10) == 0)) - { + while ((decimals > 0) && ((n % 10) == 0)) { n /= 10; decimals--; } /* build up buffer in reverse order */ digits = 0; - while ((n != 0) || (digits < (decimals + 1))) - { + while ((n != 0) || (digits < (decimals + 1))) { buf[digits++] = (char)('0' + n % 10); n /= 10; } - while (digits > 0) - { - if (digits == decimals) { UNITY_OUTPUT_CHAR('.'); } + while (digits > 0) { + if (digits == decimals) { + UNITY_OUTPUT_CHAR('.'); + } UNITY_OUTPUT_CHAR(buf[--digits]); } /* print exponent if needed */ - if (exponent != 0) - { + if (exponent != 0) { UNITY_OUTPUT_CHAR('e'); - if (exponent < 0) - { + if (exponent < 0) { UNITY_OUTPUT_CHAR('-'); exponent = -exponent; - } - else - { + } else { UNITY_OUTPUT_CHAR('+'); } digits = 0; - while ((exponent != 0) || (digits < 2)) - { + while ((exponent != 0) || (digits < 2)) { buf[digits++] = (char)('0' + exponent % 10); exponent /= 10; } - while (digits > 0) - { + while (digits > 0) { UNITY_OUTPUT_CHAR(buf[--digits]); } } @@ -600,8 +537,7 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) #endif /* ! UNITY_EXCLUDE_FLOAT_PRINT */ /*-----------------------------------------------*/ -static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) -{ +static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) { #ifdef UNITY_OUTPUT_FOR_ECLIPSE UNITY_OUTPUT_CHAR('('); UnityPrint(file); @@ -643,27 +579,20 @@ static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) } /*-----------------------------------------------*/ -static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line) -{ +static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line) { UnityTestResultsBegin(Unity.TestFile, line); UnityPrint(UnityStrFail); UNITY_OUTPUT_CHAR(':'); } /*-----------------------------------------------*/ -void UnityConcludeTest(void) -{ - if (Unity.CurrentTestIgnored) - { +void UnityConcludeTest(void) { + if (Unity.CurrentTestIgnored) { Unity.TestIgnores++; - } - else if (!Unity.CurrentTestFailed) - { + } else if (!Unity.CurrentTestFailed) { UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber); UnityPrint(UnityStrPass); - } - else - { + } else { Unity.TestFailures++; } @@ -675,18 +604,14 @@ void UnityConcludeTest(void) } /*-----------------------------------------------*/ -static void UnityAddMsgIfSpecified(const char* msg) -{ - if (msg) - { +static void UnityAddMsgIfSpecified(const char* msg) { + if (msg) { UnityPrint(UnityStrSpacer); #ifndef UNITY_EXCLUDE_DETAILS - if (Unity.CurrentDetail1) - { + if (Unity.CurrentDetail1) { UnityPrint(UnityStrDetail1Name); UnityPrint(Unity.CurrentDetail1); - if (Unity.CurrentDetail2) - { + if (Unity.CurrentDetail2) { UnityPrint(UnityStrDetail2Name); UnityPrint(Unity.CurrentDetail2); } @@ -698,57 +623,43 @@ static void UnityAddMsgIfSpecified(const char* msg) } /*-----------------------------------------------*/ -static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual) -{ +static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual) { UnityPrint(UnityStrExpected); - if (expected != NULL) - { + if (expected != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrint(expected); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } UnityPrint(UnityStrWas); - if (actual != NULL) - { + if (actual != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrint(actual); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } } /*-----------------------------------------------*/ static void UnityPrintExpectedAndActualStringsLen(const char* expected, - const char* actual, - const UNITY_UINT32 length) -{ + const char* actual, + const UNITY_UINT32 length) { UnityPrint(UnityStrExpected); - if (expected != NULL) - { + if (expected != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrintLen(expected, length); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } UnityPrint(UnityStrWas); - if (actual != NULL) - { + if (actual != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrintLen(actual, length); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } } @@ -759,16 +670,16 @@ static void UnityPrintExpectedAndActualStringsLen(const char* expected, /*-----------------------------------------------*/ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_LINE_TYPE lineNumber, - const char* msg) -{ + UNITY_INTERNAL_PTR actual, + const UNITY_LINE_TYPE lineNumber, + const char* msg) { /* Both are NULL or same pointer */ - if (expected == actual) { return 0; } + if (expected == actual) { + return 0; + } /* print and return true if just expected is NULL */ - if (expected == NULL) - { + if (expected == NULL) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrNullPointerForExpected); UnityAddMsgIfSpecified(msg); @@ -776,8 +687,7 @@ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, } /* print and return true if just actual is NULL */ - if (actual == NULL) - { + if (actual == NULL) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrNullPointerForActual); UnityAddMsgIfSpecified(msg); @@ -793,15 +703,13 @@ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ void UnityAssertBits(const UNITY_INT mask, - const UNITY_INT expected, - const UNITY_INT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { RETURN_IF_FAIL_OR_IGNORE; - if ((mask & expected) != (mask & actual)) - { + if ((mask & expected) != (mask & actual)) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); UnityPrintMask((UNITY_UINT)mask, (UNITY_UINT)expected); @@ -814,15 +722,13 @@ void UnityAssertBits(const UNITY_INT mask, /*-----------------------------------------------*/ void UnityAssertEqualNumber(const UNITY_INT expected, - const UNITY_INT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style) -{ + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) { RETURN_IF_FAIL_OR_IGNORE; - if (expected != actual) - { + if (expected != actual) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); UnityPrintNumberByStyle(expected, style); @@ -835,120 +741,127 @@ void UnityAssertEqualNumber(const UNITY_INT expected, /*-----------------------------------------------*/ void UnityAssertGreaterOrLessOrEqualNumber(const UNITY_INT threshold, - const UNITY_INT actual, - const UNITY_COMPARISON_T compare, - const char *msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style) -{ + const UNITY_INT actual, + const UNITY_COMPARISON_T compare, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) { int failed = 0; RETURN_IF_FAIL_OR_IGNORE; - if ((threshold == actual) && (compare & UNITY_EQUAL_TO)) { return; } - if ((threshold == actual)) { failed = 1; } - - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } - if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + if ((threshold == actual) && (compare & UNITY_EQUAL_TO)) { + return; } - else /* UINT or HEX */ - { - if (((UNITY_UINT)actual > (UNITY_UINT)threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } - if (((UNITY_UINT)actual < (UNITY_UINT)threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + if ((threshold == actual)) { + failed = 1; } - if (failed) + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) { + failed = 1; + } + if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) { + failed = 1; + } + } else /* UINT or HEX */ { + if (((UNITY_UINT)actual > (UNITY_UINT)threshold) && (compare & UNITY_SMALLER_THAN)) { + failed = 1; + } + if (((UNITY_UINT)actual < (UNITY_UINT)threshold) && (compare & UNITY_GREATER_THAN)) { + failed = 1; + } + } + + if (failed) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); UnityPrintNumberByStyle(actual, style); - if (compare & UNITY_GREATER_THAN) { UnityPrint(UnityStrGt); } - if (compare & UNITY_SMALLER_THAN) { UnityPrint(UnityStrLt); } - if (compare & UNITY_EQUAL_TO) { UnityPrint(UnityStrOrEqual); } + if (compare & UNITY_GREATER_THAN) { + UnityPrint(UnityStrGt); + } + if (compare & UNITY_SMALLER_THAN) { + UnityPrint(UnityStrLt); + } + if (compare & UNITY_EQUAL_TO) { + UnityPrint(UnityStrOrEqual); + } UnityPrintNumberByStyle(threshold, style); UnityAddMsgIfSpecified(msg); UNITY_FAIL_AND_BAIL; } } -#define UnityPrintPointlessAndBail() \ -{ \ - UnityTestResultsFailBegin(lineNumber); \ - UnityPrint(UnityStrPointless); \ - UnityAddMsgIfSpecified(msg); \ - UNITY_FAIL_AND_BAIL; } +#define UnityPrintPointlessAndBail() \ + { \ + UnityTestResultsFailBegin(lineNumber); \ + UnityPrint(UnityStrPointless); \ + UnityAddMsgIfSpecified(msg); \ + UNITY_FAIL_AND_BAIL; \ + } /*-----------------------------------------------*/ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style, - const UNITY_FLAGS_T flags) -{ - UNITY_UINT32 elements = num_elements; - unsigned int length = style & 0xF; + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags) { + UNITY_UINT32 elements = num_elements; + unsigned int length = style & 0xF; unsigned int increment = 0; RETURN_IF_FAIL_OR_IGNORE; - if (num_elements == 0) - { + if (num_elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while ((elements > 0) && (elements--)) - { + while ((elements > 0) && (elements--)) { UNITY_INT expect_val; UNITY_INT actual_val; - switch (length) - { - case 1: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; - increment = sizeof(UNITY_INT8); - break; + switch (length) { + case 1: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; + increment = sizeof(UNITY_INT8); + break; - case 2: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; - increment = sizeof(UNITY_INT16); - break; + case 2: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; + increment = sizeof(UNITY_INT16); + break; #ifdef UNITY_SUPPORT_64 - case 8: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; - increment = sizeof(UNITY_INT64); - break; + case 8: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; + increment = sizeof(UNITY_INT64); + break; #endif - default: /* default is length 4 bytes */ - case 4: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; - increment = sizeof(UNITY_INT32); - length = 4; - break; + default: /* default is length 4 bytes */ + case 4: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; + increment = sizeof(UNITY_INT32); + length = 4; + break; } - if (expect_val != actual_val) - { - if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) - { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ + if (expect_val != actual_val) { + if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ UNITY_INT mask = 1; mask = (mask << 8 * length) - 1; expect_val &= mask; @@ -965,8 +878,7 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, UNITY_FAIL_AND_BAIL; } /* Walk through array by incrementing the pointers */ - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment); } actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment); @@ -976,72 +888,70 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ #ifndef UNITY_EXCLUDE_FLOAT /* Wrap this define in a function with variable types as float or double */ -#define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff) \ - if (isinf(expected) && isinf(actual) && (((expected) < 0) == ((actual) < 0))) return 1; \ - if (UNITY_NAN_CHECK) return 1; \ - (diff) = (actual) - (expected); \ - if ((diff) < 0) (diff) = -(diff); \ - if ((delta) < 0) (delta) = -(delta); \ +#define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff) \ + if (isinf(expected) && isinf(actual) && (((expected) < 0) == ((actual) < 0))) \ + return 1; \ + if (UNITY_NAN_CHECK) \ + return 1; \ + (diff) = (actual) - (expected); \ + if ((diff) < 0) \ + (diff) = -(diff); \ + if ((delta) < 0) \ + (delta) = -(delta); \ return !(isnan(diff) || isinf(diff) || ((diff) > (delta))) - /* This first part of this condition will catch any NaN or Infinite values */ +/* This first part of this condition will catch any NaN or Infinite values */ #ifndef UNITY_NAN_NOT_EQUAL_NAN - #define UNITY_NAN_CHECK isnan(expected) && isnan(actual) +#define UNITY_NAN_CHECK isnan(expected) && isnan(actual) #else - #define UNITY_NAN_CHECK 0 +#define UNITY_NAN_CHECK 0 #endif #ifndef UNITY_EXCLUDE_FLOAT_PRINT - #define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ - { \ - UnityPrint(UnityStrExpected); \ - UnityPrintFloat(expected); \ - UnityPrint(UnityStrWas); \ - UnityPrintFloat(actual); } +#define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ + { \ + UnityPrint(UnityStrExpected); \ + UnityPrintFloat(expected); \ + UnityPrint(UnityStrWas); \ + UnityPrintFloat(actual); \ + } #else - #define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ +#define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ UnityPrint(UnityStrDelta) #endif /* UNITY_EXCLUDE_FLOAT_PRINT */ /*-----------------------------------------------*/ -static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) -{ +static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) { UNITY_FLOAT diff; UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff); } /*-----------------------------------------------*/ void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, - UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_UINT32 elements = num_elements; UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_expected = expected; UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_actual = actual; RETURN_IF_FAIL_OR_IGNORE; - if (elements == 0) - { + if (elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while (elements--) - { - if (!UnityFloatsWithin(*ptr_expected * UNITY_FLOAT_PRECISION, *ptr_expected, *ptr_actual)) - { + while (elements--) { + if (!UnityFloatsWithin(*ptr_expected * UNITY_FLOAT_PRECISION, *ptr_expected, *ptr_actual)) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(num_elements - elements - 1); @@ -1049,8 +959,7 @@ void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, UnityAddMsgIfSpecified(msg); UNITY_FAIL_AND_BAIL; } - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { ptr_expected++; } ptr_actual++; @@ -1059,16 +968,13 @@ void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, /*-----------------------------------------------*/ void UnityAssertFloatsWithin(const UNITY_FLOAT delta, - const UNITY_FLOAT expected, - const UNITY_FLOAT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const UNITY_FLOAT expected, + const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { RETURN_IF_FAIL_OR_IGNORE; - - if (!UnityFloatsWithin(delta, expected, actual)) - { + if (!UnityFloatsWithin(delta, expected, actual)) { UnityTestResultsFailBegin(lineNumber); UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT((UNITY_DOUBLE)expected, (UNITY_DOUBLE)actual); UnityAddMsgIfSpecified(msg); @@ -1078,50 +984,46 @@ void UnityAssertFloatsWithin(const UNITY_FLOAT delta, /*-----------------------------------------------*/ void UnityAssertFloatSpecial(const UNITY_FLOAT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLOAT_TRAIT_T style) -{ - const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet}; + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style) { + const char* trait_names[] = { UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet }; UNITY_INT should_be_trait = ((UNITY_INT)style & 1); - UNITY_INT is_trait = !should_be_trait; - UNITY_INT trait_index = (UNITY_INT)(style >> 1); + UNITY_INT is_trait = !should_be_trait; + UNITY_INT trait_index = (UNITY_INT)(style >> 1); RETURN_IF_FAIL_OR_IGNORE; - switch (style) - { - case UNITY_FLOAT_IS_INF: - case UNITY_FLOAT_IS_NOT_INF: - is_trait = isinf(actual) && (actual > 0); - break; - case UNITY_FLOAT_IS_NEG_INF: - case UNITY_FLOAT_IS_NOT_NEG_INF: - is_trait = isinf(actual) && (actual < 0); - break; + switch (style) { + case UNITY_FLOAT_IS_INF: + case UNITY_FLOAT_IS_NOT_INF: + is_trait = isinf(actual) && (actual > 0); + break; + case UNITY_FLOAT_IS_NEG_INF: + case UNITY_FLOAT_IS_NOT_NEG_INF: + is_trait = isinf(actual) && (actual < 0); + break; - case UNITY_FLOAT_IS_NAN: - case UNITY_FLOAT_IS_NOT_NAN: - is_trait = isnan(actual) ? 1 : 0; - break; + case UNITY_FLOAT_IS_NAN: + case UNITY_FLOAT_IS_NOT_NAN: + is_trait = isnan(actual) ? 1 : 0; + break; - case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ - case UNITY_FLOAT_IS_NOT_DET: - is_trait = !isinf(actual) && !isnan(actual); - break; + case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ + case UNITY_FLOAT_IS_NOT_DET: + is_trait = !isinf(actual) && !isnan(actual); + break; - default: - trait_index = 0; - trait_names[0] = UnityStrInvalidFloatTrait; - break; + default: + trait_index = 0; + trait_names[0] = UnityStrInvalidFloatTrait; + break; } - if (is_trait != should_be_trait) - { + if (is_trait != should_be_trait) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); - if (!should_be_trait) - { + if (!should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1129,8 +1031,7 @@ void UnityAssertFloatSpecial(const UNITY_FLOAT actual, #ifndef UNITY_EXCLUDE_FLOAT_PRINT UnityPrintFloat((UNITY_DOUBLE)actual); #else - if (should_be_trait) - { + if (should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1144,45 +1045,38 @@ void UnityAssertFloatSpecial(const UNITY_FLOAT actual, /*-----------------------------------------------*/ #ifndef UNITY_EXCLUDE_DOUBLE -static int UnityDoublesWithin(UNITY_DOUBLE delta, UNITY_DOUBLE expected, UNITY_DOUBLE actual) -{ +static int UnityDoublesWithin(UNITY_DOUBLE delta, UNITY_DOUBLE expected, UNITY_DOUBLE actual) { UNITY_DOUBLE diff; UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff); } /*-----------------------------------------------*/ void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected, - UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_UINT32 elements = num_elements; UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_expected = expected; UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_actual = actual; RETURN_IF_FAIL_OR_IGNORE; - if (elements == 0) - { + if (elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while (elements--) - { - if (!UnityDoublesWithin(*ptr_expected * UNITY_DOUBLE_PRECISION, *ptr_expected, *ptr_actual)) - { + while (elements--) { + if (!UnityDoublesWithin(*ptr_expected * UNITY_DOUBLE_PRECISION, *ptr_expected, *ptr_actual)) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(num_elements - elements - 1); @@ -1190,8 +1084,7 @@ void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expecte UnityAddMsgIfSpecified(msg); UNITY_FAIL_AND_BAIL; } - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { ptr_expected++; } ptr_actual++; @@ -1200,15 +1093,13 @@ void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expecte /*-----------------------------------------------*/ void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, - const UNITY_DOUBLE expected, - const UNITY_DOUBLE actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const UNITY_DOUBLE expected, + const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { RETURN_IF_FAIL_OR_IGNORE; - if (!UnityDoublesWithin(delta, expected, actual)) - { + if (!UnityDoublesWithin(delta, expected, actual)) { UnityTestResultsFailBegin(lineNumber); UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual); UnityAddMsgIfSpecified(msg); @@ -1218,50 +1109,46 @@ void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, /*-----------------------------------------------*/ void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLOAT_TRAIT_T style) -{ - const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet}; + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style) { + const char* trait_names[] = { UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet }; UNITY_INT should_be_trait = ((UNITY_INT)style & 1); - UNITY_INT is_trait = !should_be_trait; - UNITY_INT trait_index = (UNITY_INT)(style >> 1); + UNITY_INT is_trait = !should_be_trait; + UNITY_INT trait_index = (UNITY_INT)(style >> 1); RETURN_IF_FAIL_OR_IGNORE; - switch (style) - { - case UNITY_FLOAT_IS_INF: - case UNITY_FLOAT_IS_NOT_INF: - is_trait = isinf(actual) && (actual > 0); - break; - case UNITY_FLOAT_IS_NEG_INF: - case UNITY_FLOAT_IS_NOT_NEG_INF: - is_trait = isinf(actual) && (actual < 0); - break; + switch (style) { + case UNITY_FLOAT_IS_INF: + case UNITY_FLOAT_IS_NOT_INF: + is_trait = isinf(actual) && (actual > 0); + break; + case UNITY_FLOAT_IS_NEG_INF: + case UNITY_FLOAT_IS_NOT_NEG_INF: + is_trait = isinf(actual) && (actual < 0); + break; - case UNITY_FLOAT_IS_NAN: - case UNITY_FLOAT_IS_NOT_NAN: - is_trait = isnan(actual) ? 1 : 0; - break; + case UNITY_FLOAT_IS_NAN: + case UNITY_FLOAT_IS_NOT_NAN: + is_trait = isnan(actual) ? 1 : 0; + break; - case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ - case UNITY_FLOAT_IS_NOT_DET: - is_trait = !isinf(actual) && !isnan(actual); - break; + case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ + case UNITY_FLOAT_IS_NOT_DET: + is_trait = !isinf(actual) && !isnan(actual); + break; - default: - trait_index = 0; - trait_names[0] = UnityStrInvalidFloatTrait; - break; + default: + trait_index = 0; + trait_names[0] = UnityStrInvalidFloatTrait; + break; } - if (is_trait != should_be_trait) - { + if (is_trait != should_be_trait) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); - if (!should_be_trait) - { + if (!should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1269,8 +1156,7 @@ void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, #ifndef UNITY_EXCLUDE_FLOAT_PRINT UnityPrintFloat(actual); #else - if (should_be_trait) - { + if (should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1284,39 +1170,28 @@ void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, /*-----------------------------------------------*/ void UnityAssertNumbersWithin(const UNITY_UINT delta, - const UNITY_INT expected, - const UNITY_INT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style) -{ + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) { RETURN_IF_FAIL_OR_IGNORE; - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if (actual > expected) - { + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if (actual > expected) { Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta); } - } - else - { - if ((UNITY_UINT)actual > (UNITY_UINT)expected) - { + } else { + if ((UNITY_UINT)actual > (UNITY_UINT)expected) { Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta); } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrDelta); UnityPrintNumberByStyle((UNITY_INT)delta, style); @@ -1331,98 +1206,81 @@ void UnityAssertNumbersWithin(const UNITY_UINT delta, /*-----------------------------------------------*/ void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, - UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style, - const UNITY_FLAGS_T flags) -{ + UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags) { UNITY_UINT32 elements = num_elements; - unsigned int length = style & 0xF; + unsigned int length = style & 0xF; unsigned int increment = 0; RETURN_IF_FAIL_OR_IGNORE; - if (num_elements == 0) - { + if (num_elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while ((elements > 0) && (elements--)) - { + while ((elements > 0) && (elements--)) { UNITY_INT expect_val; UNITY_INT actual_val; - switch (length) - { - case 1: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; - increment = sizeof(UNITY_INT8); - break; + switch (length) { + case 1: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; + increment = sizeof(UNITY_INT8); + break; - case 2: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; - increment = sizeof(UNITY_INT16); - break; + case 2: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; + increment = sizeof(UNITY_INT16); + break; #ifdef UNITY_SUPPORT_64 - case 8: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; - increment = sizeof(UNITY_INT64); - break; + case 8: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; + increment = sizeof(UNITY_INT64); + break; #endif - default: /* default is length 4 bytes */ - case 4: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; - increment = sizeof(UNITY_INT32); - length = 4; - break; + default: /* default is length 4 bytes */ + case 4: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; + increment = sizeof(UNITY_INT32); + length = 4; + break; } - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if (actual_val > expect_val) - { + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if (actual_val > expect_val) { Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta); } - } - else - { - if ((UNITY_UINT)actual_val > (UNITY_UINT)expect_val) - { + } else { + if ((UNITY_UINT)actual_val > (UNITY_UINT)expect_val) { Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta); } } - if (Unity.CurrentTestFailed) - { - if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) - { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ + if (Unity.CurrentTestFailed) { + if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ UNITY_INT mask = 1; mask = (mask << 8 * length) - 1; expect_val &= mask; @@ -1441,8 +1299,7 @@ void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, UNITY_FAIL_AND_BAIL; } /* Walk through array by incrementing the pointers */ - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment); } actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment); @@ -1451,36 +1308,28 @@ void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, /*-----------------------------------------------*/ void UnityAssertEqualString(const char* expected, - const char* actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const char* actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { UNITY_UINT32 i; RETURN_IF_FAIL_OR_IGNORE; /* if both pointers not null compare the strings */ - if (expected && actual) - { - for (i = 0; expected[i] || actual[i]; i++) - { - if (expected[i] != actual[i]) - { + if (expected && actual) { + for (i = 0; expected[i] || actual[i]; i++) { + if (expected[i] != actual[i]) { Unity.CurrentTestFailed = 1; break; } } - } - else - { /* handle case of one pointers being null (if both null, test should pass) */ - if (expected != actual) - { + } else { /* handle case of one pointers being null (if both null, test should pass) */ + if (expected != actual) { Unity.CurrentTestFailed = 1; } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); UnityPrintExpectedAndActualStrings(expected, actual); UnityAddMsgIfSpecified(msg); @@ -1490,37 +1339,29 @@ void UnityAssertEqualString(const char* expected, /*-----------------------------------------------*/ void UnityAssertEqualStringLen(const char* expected, - const char* actual, - const UNITY_UINT32 length, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const char* actual, + const UNITY_UINT32 length, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { UNITY_UINT32 i; RETURN_IF_FAIL_OR_IGNORE; /* if both pointers not null compare the strings */ - if (expected && actual) - { - for (i = 0; (i < length) && (expected[i] || actual[i]); i++) - { - if (expected[i] != actual[i]) - { + if (expected && actual) { + for (i = 0; (i < length) && (expected[i] || actual[i]); i++) { + if (expected[i] != actual[i]) { Unity.CurrentTestFailed = 1; break; } } - } - else - { /* handle case of one pointers being null (if both null, test should pass) */ - if (expected != actual) - { + } else { /* handle case of one pointers being null (if both null, test should pass) */ + if (expected != actual) { Unity.CurrentTestFailed = 1; } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); UnityPrintExpectedAndActualStringsLen(expected, actual, length); UnityAddMsgIfSpecified(msg); @@ -1530,12 +1371,11 @@ void UnityAssertEqualStringLen(const char* expected, /*-----------------------------------------------*/ void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, - const char** actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + const char** actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_UINT32 i = 0; UNITY_UINT32 j = 0; const char* expd = NULL; @@ -1544,59 +1384,45 @@ void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, RETURN_IF_FAIL_OR_IGNORE; /* if no elements, it's an error */ - if (num_elements == 0) - { + if (num_elements == 0) { UnityPrintPointlessAndBail(); } - if ((const void*)expected == (const void*)actual) - { + if ((const void*)expected == (const void*)actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - if (flags != UNITY_ARRAY_TO_ARRAY) - { + if (flags != UNITY_ARRAY_TO_ARRAY) { expd = (const char*)expected; } - do - { + do { act = actual[j]; - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { expd = ((const char* const*)expected)[j]; } /* if both pointers not null compare the strings */ - if (expd && act) - { - for (i = 0; expd[i] || act[i]; i++) - { - if (expd[i] != act[i]) - { + if (expd && act) { + for (i = 0; expd[i] || act[i]; i++) { + if (expd[i] != act[i]) { Unity.CurrentTestFailed = 1; break; } } - } - else - { /* handle case of one pointers being null (if both null, test should pass) */ - if (expd != act) - { + } else { /* handle case of one pointers being null (if both null, test should pass) */ + if (expd != act) { Unity.CurrentTestFailed = 1; } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); - if (num_elements > 1) - { + if (num_elements > 1) { UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(j); } @@ -1609,13 +1435,12 @@ void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_UINT32 length, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 length, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_PTR_ATTRIBUTE const unsigned char* ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected; UNITY_PTR_ATTRIBUTE const unsigned char* ptr_act = (UNITY_PTR_ATTRIBUTE const unsigned char*)actual; UNITY_UINT32 elements = num_elements; @@ -1623,32 +1448,25 @@ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, RETURN_IF_FAIL_OR_IGNORE; - if ((elements == 0) || (length == 0)) - { + if ((elements == 0) || (length == 0)) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while (elements--) - { + while (elements--) { bytes = length; - while (bytes--) - { - if (*ptr_exp != *ptr_act) - { + while (bytes--) { + if (*ptr_exp != *ptr_act) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrMemory); - if (num_elements > 1) - { + if (num_elements > 1) { UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(num_elements - elements - 1); } @@ -1664,8 +1482,7 @@ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, ptr_exp++; ptr_act++; } - if (flags == UNITY_ARRAY_TO_VAL) - { + if (flags == UNITY_ARRAY_TO_VAL) { ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected; } } @@ -1673,8 +1490,7 @@ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ -static union -{ +static union { UNITY_INT8 i8; UNITY_INT16 i16; UNITY_INT32 i32; @@ -1689,34 +1505,31 @@ static union #endif } UnityQuickCompare; -UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size) -{ - switch(size) - { - case 1: - UnityQuickCompare.i8 = (UNITY_INT8)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8); +UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size) { + switch (size) { + case 1: + UnityQuickCompare.i8 = (UNITY_INT8)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8); - case 2: - UnityQuickCompare.i16 = (UNITY_INT16)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16); + case 2: + UnityQuickCompare.i16 = (UNITY_INT16)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16); #ifdef UNITY_SUPPORT_64 - case 8: - UnityQuickCompare.i64 = (UNITY_INT64)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64); + case 8: + UnityQuickCompare.i64 = (UNITY_INT64)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64); #endif - default: /* 4 bytes */ - UnityQuickCompare.i32 = (UNITY_INT32)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32); + default: /* 4 bytes */ + UnityQuickCompare.i32 = (UNITY_INT32)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32); } } #ifndef UNITY_EXCLUDE_FLOAT /*-----------------------------------------------*/ -UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) -{ +UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) { UnityQuickCompare.f = num; return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.f); } @@ -1724,8 +1537,7 @@ UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) #ifndef UNITY_EXCLUDE_DOUBLE /*-----------------------------------------------*/ -UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) -{ +UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) { UnityQuickCompare.d = num; return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.d); } @@ -1736,31 +1548,26 @@ UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) *-----------------------------------------------*/ /*-----------------------------------------------*/ -void UnityFail(const char* msg, const UNITY_LINE_TYPE line) -{ +void UnityFail(const char* msg, const UNITY_LINE_TYPE line) { RETURN_IF_FAIL_OR_IGNORE; UnityTestResultsBegin(Unity.TestFile, line); UnityPrint(UnityStrFail); - if (msg != NULL) - { + if (msg != NULL) { UNITY_OUTPUT_CHAR(':'); #ifndef UNITY_EXCLUDE_DETAILS - if (Unity.CurrentDetail1) - { + if (Unity.CurrentDetail1) { UnityPrint(UnityStrDetail1Name); UnityPrint(Unity.CurrentDetail1); - if (Unity.CurrentDetail2) - { + if (Unity.CurrentDetail2) { UnityPrint(UnityStrDetail2Name); UnityPrint(Unity.CurrentDetail2); } UnityPrint(UnityStrSpacer); } #endif - if (msg[0] != ' ') - { + if (msg[0] != ' ') { UNITY_OUTPUT_CHAR(' '); } UnityPrint(msg); @@ -1770,14 +1577,12 @@ void UnityFail(const char* msg, const UNITY_LINE_TYPE line) } /*-----------------------------------------------*/ -void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) -{ +void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) { RETURN_IF_FAIL_OR_IGNORE; UnityTestResultsBegin(Unity.TestFile, line); UnityPrint(UnityStrIgnore); - if (msg != NULL) - { + if (msg != NULL) { UNITY_OUTPUT_CHAR(':'); UNITY_OUTPUT_CHAR(' '); UnityPrint(msg); @@ -1786,34 +1591,31 @@ void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) } /*-----------------------------------------------*/ -void UnityMessage(const char* msg, const UNITY_LINE_TYPE line) -{ +void UnityMessage(const char* msg, const UNITY_LINE_TYPE line) { UnityTestResultsBegin(Unity.TestFile, line); UnityPrint("INFO"); - if (msg != NULL) - { - UNITY_OUTPUT_CHAR(':'); - UNITY_OUTPUT_CHAR(' '); - UnityPrint(msg); + if (msg != NULL) { + UNITY_OUTPUT_CHAR(':'); + UNITY_OUTPUT_CHAR(' '); + UnityPrint(msg); } UNITY_PRINT_EOL(); } /*-----------------------------------------------*/ -void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum) -{ +void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum) { Unity.CurrentTestName = FuncName; Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)FuncLineNum; + if (!UnityTestMatches()) + return; Unity.NumberOfTests++; UNITY_CLR_DETAILS(); UNITY_EXEC_TIME_START(); - if (TEST_PROTECT()) - { + if (TEST_PROTECT()) { setUp(); Func(); } - if (TEST_PROTECT()) - { + if (TEST_PROTECT()) { tearDown(); } UNITY_EXEC_TIME_STOP(); @@ -1821,14 +1623,12 @@ void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int } /*-----------------------------------------------*/ -void UnitySetTestFile(const char* filename) -{ +void UnitySetTestFile(const char* filename) { Unity.TestFile = filename; } /*-----------------------------------------------*/ -void UnityBegin(const char* filename) -{ +void UnityBegin(const char* filename) { Unity.TestFile = filename; Unity.CurrentTestName = NULL; Unity.CurrentTestLineNumber = 0; @@ -1843,8 +1643,7 @@ void UnityBegin(const char* filename) } /*-----------------------------------------------*/ -int UnityEnd(void) -{ +int UnityEnd(void) { UNITY_PRINT_EOL(); UnityPrint(UnityStrBreaker); UNITY_PRINT_EOL(); @@ -1855,15 +1654,13 @@ int UnityEnd(void) UnityPrintNumber((UNITY_INT)(Unity.TestIgnores)); UnityPrint(UnityStrResultsIgnored); UNITY_PRINT_EOL(); - if (Unity.TestFailures == 0U) - { + if (Unity.TestFailures == 0U) { UnityPrint(UnityStrOk); - } - else - { + } else { UnityPrint(UnityStrFail); #ifdef UNITY_DIFFERENTIATE_FINAL_FAIL - UNITY_OUTPUT_CHAR('E'); UNITY_OUTPUT_CHAR('D'); + UNITY_OUTPUT_CHAR('E'); + UNITY_OUTPUT_CHAR('D'); #endif } UNITY_PRINT_EOL(); @@ -1875,71 +1672,57 @@ int UnityEnd(void) /*----------------------------------------------- * Command Line Argument Support *-----------------------------------------------*/ -#ifdef UNITY_USE_COMMAND_LINE_ARGS +// #ifdef UNITY_USE_COMMAND_LINE_ARGS char* UnityOptionIncludeNamed = NULL; char* UnityOptionExcludeNamed = NULL; -int UnityVerbosity = 1; +int UnityVerbosity = 1; /*-----------------------------------------------*/ -int UnityParseOptions(int argc, char** argv) -{ +int UnityParseOptions(int argc, char** argv) { int i; UnityOptionIncludeNamed = NULL; UnityOptionExcludeNamed = NULL; - for (i = 1; i < argc; i++) - { - if (argv[i][0] == '-') - { - switch (argv[i][1]) - { - case 'l': /* list tests */ - return -1; - case 'n': /* include tests with name including this string */ - case 'f': /* an alias for -n */ - if (argv[i][2] == '=') - { - UnityOptionIncludeNamed = &argv[i][3]; - } - else if (++i < argc) - { - UnityOptionIncludeNamed = argv[i]; - } - else - { - UnityPrint("ERROR: No Test String to Include Matches For"); - UNITY_PRINT_EOL(); - return 1; - } - break; - case 'q': /* quiet */ - UnityVerbosity = 0; - break; - case 'v': /* verbose */ - UnityVerbosity = 2; - break; - case 'x': /* exclude tests with name including this string */ - if (argv[i][2] == '=') - { - UnityOptionExcludeNamed = &argv[i][3]; - } - else if (++i < argc) - { - UnityOptionExcludeNamed = argv[i]; - } - else - { - UnityPrint("ERROR: No Test String to Exclude Matches For"); - UNITY_PRINT_EOL(); - return 1; - } - break; - default: - UnityPrint("ERROR: Unknown Option "); - UNITY_OUTPUT_CHAR(argv[i][1]); + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { + case 'l': /* list tests */ + return -1; + case 'n': /* include tests with name including this string */ + case 'f': /* an alias for -n */ + if (argv[i][2] == '=') { + UnityOptionIncludeNamed = &argv[i][3]; + } else if (++i < argc) { + UnityOptionIncludeNamed = argv[i]; + } else { + UnityPrint("ERROR: No Test String to Include Matches For"); UNITY_PRINT_EOL(); return 1; + } + break; + case 'q': /* quiet */ + UnityVerbosity = 0; + break; + case 'v': /* verbose */ + UnityVerbosity = 2; + break; + case 'x': /* exclude tests with name including this string */ + if (argv[i][2] == '=') { + UnityOptionExcludeNamed = &argv[i][3]; + } else if (++i < argc) { + UnityOptionExcludeNamed = argv[i]; + } else { + UnityPrint("ERROR: No Test String to Exclude Matches For"); + UNITY_PRINT_EOL(); + return 1; + } + break; + default: + UnityPrint("ERROR: Unknown Option "); + UNITY_OUTPUT_CHAR(argv[i][1]); + UNITY_PRINT_EOL(); + return 1; } } } @@ -1948,24 +1731,20 @@ int UnityParseOptions(int argc, char** argv) } /*-----------------------------------------------*/ -int IsStringInBiggerString(const char* longstring, const char* shortstring) -{ +int IsStringInBiggerString(const char* longstring, const char* shortstring) { const char* lptr = longstring; const char* sptr = shortstring; const char* lnext = lptr; - if (*sptr == '*') - { + if (*sptr == '*') { return 1; } - while (*lptr) - { + while (*lptr) { lnext = lptr + 1; /* If they current bytes match, go on to the next bytes */ - while (*lptr && *sptr && (*lptr == *sptr)) - { + while (*lptr && *sptr && (*lptr == *sptr)) { lptr++; sptr++; @@ -1993,8 +1772,7 @@ int IsStringInBiggerString(const char* longstring, const char* shortstring) } /*-----------------------------------------------*/ -int UnityStringArgumentMatches(const char* str) -{ +int UnityStringArgumentMatches(const char* str) { int retval; const char* ptr1; const char* ptr2; @@ -2002,49 +1780,40 @@ int UnityStringArgumentMatches(const char* str) /* Go through the options and get the substrings for matching one at a time */ ptr1 = str; - while (ptr1[0] != 0) - { - if ((ptr1[0] == '"') || (ptr1[0] == '\'')) - { + while (ptr1[0] != 0) { + if ((ptr1[0] == '"') || (ptr1[0] == '\'')) { ptr1++; } /* look for the start of the next partial */ ptr2 = ptr1; ptrf = 0; - do - { + do { ptr2++; - if ((ptr2[0] == ':') && (ptr2[1] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')) - { + if ((ptr2[0] == ':') && (ptr2[1] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')) { ptrf = &ptr2[1]; } } while ((ptr2[0] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')); - while ((ptr2[0] != 0) && ((ptr2[0] == ':') || (ptr2[0] == '\'') || (ptr2[0] == '"') || (ptr2[0] == ','))) - { + while ((ptr2[0] != 0) && ((ptr2[0] == ':') || (ptr2[0] == '\'') || (ptr2[0] == '"') || (ptr2[0] == ','))) { ptr2++; } /* done if complete filename match */ retval = IsStringInBiggerString(Unity.TestFile, ptr1); - if (retval == 1) - { + if (retval == 1) { return retval; } /* done if testname match after filename partial match */ - if ((retval == 2) && (ptrf != 0)) - { - if (IsStringInBiggerString(Unity.CurrentTestName, ptrf)) - { + if ((retval == 2) && (ptrf != 0)) { + if (IsStringInBiggerString(Unity.CurrentTestName, ptrf)) { return 1; } } /* done if complete testname match */ - if (IsStringInBiggerString(Unity.CurrentTestName, ptr1) == 1) - { + if (IsStringInBiggerString(Unity.CurrentTestName, ptr1) == 1) { return 1; } @@ -2056,24 +1825,18 @@ int UnityStringArgumentMatches(const char* str) } /*-----------------------------------------------*/ -int UnityTestMatches(void) -{ +int UnityTestMatches(void) { /* Check if this test name matches the included test pattern */ int retval; - if (UnityOptionIncludeNamed) - { + if (UnityOptionIncludeNamed) { retval = UnityStringArgumentMatches(UnityOptionIncludeNamed); - } - else - { + } else { retval = 1; } /* Check if this test name matches the excluded test pattern */ - if (UnityOptionExcludeNamed) - { - if (UnityStringArgumentMatches(UnityOptionExcludeNamed)) - { + if (UnityOptionExcludeNamed) { + if (UnityStringArgumentMatches(UnityOptionExcludeNamed)) { retval = 0; } } @@ -2081,5 +1844,5 @@ int UnityTestMatches(void) return retval; } -#endif /* UNITY_USE_COMMAND_LINE_ARGS */ +//#endif /* UNITY_USE_COMMAND_LINE_ARGS */ /*-----------------------------------------------*/ diff --git a/test/framework/unity_internals.h b/test/framework/unity_internals.h index a9a7ea23..7dc6b5d9 100755 --- a/test/framework/unity_internals.h +++ b/test/framework/unity_internals.h @@ -719,6 +719,10 @@ extern const char UnityStrErrShorthand[]; #define UNITY_BEGIN() UnityBegin(__FILE__) #endif +#ifndef UNITY_PARSE_OPTS +#define UNITY_PARSE_OPTS() UnityParseOptions(argc, argv) +#endif + #ifndef UNITY_END #define UNITY_END() UnityEnd() #endif @@ -737,10 +741,8 @@ extern const char UnityStrErrShorthand[]; * Command Line Argument Support *-----------------------------------------------*/ -#ifdef UNITY_USE_COMMAND_LINE_ARGS int UnityParseOptions(int argc, char** argv); int UnityTestMatches(void); -#endif /*------------------------------------------------------- * Basic Fail and Ignore diff --git a/test/main.c b/test/main.c index 115bcce2..203a1ea3 100644 --- a/test/main.c +++ b/test/main.c @@ -1,12 +1,17 @@ #include #include #include +#include +#include + +#define UNITY_USE_COMMAND_LINE_ARGS 1 #include "framework/unity.h" #include "CORE/V1DB/dbsetup.h" #include "common/globvars.h" +#include "new/stack_trace_handler.h" #define debug(format_, ...) fprintf(stderr, format_, __VA_ARGS__) @@ -22,19 +27,31 @@ extern void test_fwsetup_suite(); extern void test_resource_suite(); void setUp(void) { - strcpy(gApplication_path, "/tmp"); - strcpy(gDir_separator, "/"); - - BrV1dbBeginWrapper_Float(); } void tearDown(void) { } -int main(int pArgc, char** pArgv) { +void setupGlobalVars() { + strcpy(gDir_separator, "/"); + getcwd(gApplication_path, 256); + strcat(gApplication_path, "/DATA"); +} + +int main(int argc, char** argv) { UNITY_BEGIN(); + if (UnityParseOptions(argc, argv) != 0) { + exit(1); + } + + set_signal_handler(argv[0]); + + setupGlobalVars(); + + BrV1dbBeginWrapper_Float(); + // BRSRC13 test_brlists_suite(); test_fwsetup_suite(); From 25159947f95e606309313d0fdfddaf94d570da34 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Sat, 11 Jan 2020 09:35:01 -0800 Subject: [PATCH 5/5] Removes sqr function --- src/DETHRACE/common/utility.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/DETHRACE/common/utility.h b/src/DETHRACE/common/utility.h index 7c69fd5d..6df93262 100644 --- a/src/DETHRACE/common/utility.h +++ b/src/DETHRACE/common/utility.h @@ -11,10 +11,6 @@ extern int gEncryption_method; // Size: 144 int CheckQuit(); -// Offset: 144 -// Size: 50 -double sqr(double pN); - // Offset: 196 // Size: 542 // EAX: pS