From 25eeef2010249c87074144e27f5544950cf40f50 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Tue, 17 Dec 2019 23:04:46 -0800 Subject: [PATCH] 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)