From 7d1789a6efa18b52600942a215cdde2b6dbb5887 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Fri, 10 Jan 2020 14:56:03 -0800 Subject: [PATCH] Adds LoadGeneralParameters function --- Makefile | 3 +- src/BRSRC13/CORE/V1DB/dbsetup.c | 2 - src/DETHRACE/Makefile | 4 +- src/DETHRACE/common/displays.h | 48 +- src/DETHRACE/common/globvrkm.h | 4 +- src/DETHRACE/common/graphics.h | 90 +- src/DETHRACE/common/init.c | 174 +-- src/DETHRACE/common/init.h | 12 +- src/DETHRACE/common/loading.c | 308 ++++- src/DETHRACE/common/newgame.c | 89 +- src/DETHRACE/common/newgame.h | 83 +- src/DETHRACE/common/opponent.h | 156 +-- src/DETHRACE/common/pedestrn.h | 90 +- src/DETHRACE/common/utility.c | 424 +++--- src/DETHRACE/common/utility.h | 133 +- src/DETHRACE/common/world.c | 519 ++++---- src/DETHRACE/new/stack_trace_handler.h | 316 +++++ src/DETHRACE/pc-dos/main.c | 6 +- test/DETHRACE/test_dossys.c | 6 - test/DETHRACE/test_loading.c | 43 +- test/DETHRACE/test_utility.c | 23 +- test/Makefile | 4 +- test/assets/DATA/ACTORS/PROG.ACT | 1 + test/assets/DATA/GENERAL.TXT | 83 ++ test/assets/DATA/KEYBOARD.COK | 1 + test/assets/DATA/MINICD/DATA/GENERAL.TXT | 1 + test/assets/DATA/PATHS.TXT | 5 + test/framework/unity.c | 1525 +++++++++------------- test/framework/unity_internals.h | 6 +- test/main.c | 27 +- 30 files changed, 2415 insertions(+), 1771 deletions(-) create mode 100644 src/DETHRACE/new/stack_trace_handler.h create mode 100644 test/assets/DATA/ACTORS/PROG.ACT create mode 100644 test/assets/DATA/GENERAL.TXT create mode 100644 test/assets/DATA/KEYBOARD.COK create mode 100644 test/assets/DATA/MINICD/DATA/GENERAL.TXT create mode 100644 test/assets/DATA/PATHS.TXT diff --git a/Makefile b/Makefile index 24aec177..74877dbf 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ clean: test: build @echo "Building tests" @$(MAKE) -C test build - test/build/c1tests + @cp -r test/assets/DATA test/build + @(cd test/build && ./c1tests) run: build @echo "Running dethrace" diff --git a/src/BRSRC13/CORE/V1DB/dbsetup.c b/src/BRSRC13/CORE/V1DB/dbsetup.c index d2cceb92..c79b308f 100644 --- a/src/BRSRC13/CORE/V1DB/dbsetup.c +++ b/src/BRSRC13/CORE/V1DB/dbsetup.c @@ -40,8 +40,6 @@ br_error BrV1dbBegin() { return 4103; } - printf("BrV1dbBegin\n"); - BrMemSet(&v1db, 0, sizeof(br_v1db_state)); v1db.active = 1; BrRegistryNew(&v1db.reg_models); diff --git a/src/DETHRACE/Makefile b/src/DETHRACE/Makefile index 6b16d5c6..a5eb2385 100644 --- a/src/DETHRACE/Makefile +++ b/src/DETHRACE/Makefile @@ -12,8 +12,8 @@ DEPS := $(OBJS:.o=.d) INC_DIRS := $(shell find $(SRC_DIR) -type d) $(BR_SRC_DIR) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) -CFLAGS ?= $(INC_FLAGS) -Wno-return-type -Wno-missing-declarations -Werror=implicit-function-declaration -LDFLAGS ?= -lm +CFLAGS ?= $(INC_FLAGS) -g -Wno-return-type -Wno-missing-declarations -Werror=implicit-function-declaration +LDFLAGS ?= -lm -fno-pie .PHONY: clean build test diff --git a/src/DETHRACE/common/displays.h b/src/DETHRACE/common/displays.h index dc885784..d737b997 100644 --- a/src/DETHRACE/common/displays.h +++ b/src/DETHRACE/common/displays.h @@ -1,14 +1,16 @@ #ifndef _DISPLAYS_H_ #define _DISPLAYS_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern int gDim_amount; // Offset: 0 // Size: 56 // EAX: pStr // EDX: pFudge_colon -void GetTimerString(char *pStr, int pFudge_colon); +void GetTimerString(char* pStr, int pFudge_colon); // Offset: 56 // Size: 116 @@ -39,7 +41,7 @@ int HeadupActive(int pIndex); // EDX: pX // EBX: pY // ECX: pFont -void DRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText, int pRight_edge); +void DRPixelmapText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText, int pRight_edge); // Offset: 1032 // Size: 550 @@ -47,7 +49,7 @@ void DRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, cha // EDX: pX // EBX: pY // ECX: pFont -void DRPixelmapCleverText2(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, signed char *pText, int pRight_edge); +void DRPixelmapCleverText2(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, signed char* pText, int pRight_edge); // Offset: 1584 // Size: 248 @@ -55,11 +57,11 @@ void DRPixelmapCleverText2(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFo // EDX: pLeft // EBX: pTop // ECX: pRight -void DeviouslyDimRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); +void DeviouslyDimRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); // Offset: 1832 // Size: 461 -void DimRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); +void DimRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pKnock_out_corners); // Offset: 2296 // Size: 352 @@ -82,7 +84,7 @@ void DubreyBar(int pX_index, int pY, int pColour); // EDX: pLevel // EBX: pName // ECX: pBar_colour -void DoPSPowerHeadup(int pY, int pLevel, char *pName, int pBar_colour); +void DoPSPowerHeadup(int pY, int pLevel, char* pName, int pBar_colour); // Offset: 3168 // Size: 163 @@ -102,13 +104,13 @@ int FindAHeadupHoleWoofBarkSoundsABitRude(int pSlot_index); // Size: 144 // EAX: pFont // EDX: pText -int DRTextWidth(tDR_font *pFont, char *pText); +int DRTextWidth(tDR_font* pFont, char* pText); // Offset: 5952 // Size: 206 // EAX: pFont // EDX: pText -int DRTextCleverWidth(tDR_font *pFont, signed char *pText); +int DRTextCleverWidth(tDR_font* pFont, signed char* pText); // Offset: 6160 // Size: 98 @@ -116,17 +118,17 @@ int DRTextCleverWidth(tDR_font *pFont, signed char *pText); // EDX: pX // EBX: pY // ECX: pFont -void DRPixelmapCentredText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText); +void DRPixelmapCentredText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText); // Offset: 6260 // Size: 77 // EAX: pText -int IsHeadupTextClever(signed char *pText); +int IsHeadupTextClever(signed char* pText); // Offset: 6340 // Size: 562 // EAX: pHeadup -int MungeHeadupWidth(tHeadup *pHeadup); +int MungeHeadupWidth(tHeadup* pHeadup); // Offset: 6904 // Size: 605 @@ -134,7 +136,7 @@ int MungeHeadupWidth(tHeadup *pHeadup); // EDX: pFlash_rate // EBX: pLifetime // ECX: pFont_index -int NewTextHeadupSlot2(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char *pText, int pQueue_it); +int NewTextHeadupSlot2(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char* pText, int pQueue_it); // Offset: 7512 // Size: 71 @@ -142,7 +144,7 @@ int NewTextHeadupSlot2(int pSlot_index, int pFlash_rate, int pLifetime, int pFon // EDX: pFlash_rate // EBX: pLifetime // ECX: pFont_index -int NewTextHeadupSlot(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char *pText); +int NewTextHeadupSlot(int pSlot_index, int pFlash_rate, int pLifetime, int pFont_index, char* pText); // Offset: 7584 // Size: 496 @@ -172,7 +174,7 @@ void MoveHeadupTo(int pHeadup_index, int pNew_x, int pNew_y); // Size: 83 // EAX: pHeadup_index // EDX: pNew_text -void ChangeHeadupText(int pHeadup_index, char *pNew_text); +void ChangeHeadupText(int pHeadup_index, char* pNew_text); // Offset: 8964 // Size: 199 @@ -193,7 +195,7 @@ void DoDamageScreen(tU32 pThe_time); // Offset: 9664 // Size: 404 -void PoshDrawLine(float pAngle, br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); +void PoshDrawLine(float pAngle, br_pixelmap* pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); // Offset: 10068 // Size: 3133 @@ -213,7 +215,7 @@ void ChangingView(); // Size: 445 // EAX: pAmount // EDX: pPrefix_text -void EarnCredits2(int pAmount, char *pPrefix_text); +void EarnCredits2(int pAmount, char* pPrefix_text); // Offset: 14600 // Size: 50 @@ -236,7 +238,7 @@ void AwardTime(tU32 pTime); // EDX: pLeft // EBX: pTop // ECX: pRight -void DrawRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); +void DrawRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); // Offset: 15208 // Size: 178 @@ -244,7 +246,7 @@ void DrawRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int // EDX: pLeft // EBX: pTop // ECX: pRight -void DrawRRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); +void DrawRRectangle(br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pColour); // Offset: 15388 // Size: 620 @@ -252,7 +254,7 @@ void DrawRRectangle(br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int // EDX: pText // EBX: pPixelmap // ECX: pLeft -void OoerrIveGotTextInMeBoxMissus(int pFont_index, char *pText, br_pixelmap *pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pCentred); +void OoerrIveGotTextInMeBoxMissus(int pFont_index, char* pText, br_pixelmap* pPixelmap, int pLeft, int pTop, int pRight, int pBottom, int pCentred); // Offset: 16008 // Size: 117 @@ -260,7 +262,7 @@ void OoerrIveGotTextInMeBoxMissus(int pFont_index, char *pText, br_pixelmap *pPi // EDX: pX // EBX: pY // ECX: pColour -void TransBrPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, br_uint_32 pColour, br_font *pFont, signed char *pText); +void TransBrPixelmapText(br_pixelmap* pPixelmap, int pX, int pY, br_uint_32 pColour, br_font* pFont, signed char* pText); // Offset: 16128 // Size: 250 @@ -268,7 +270,7 @@ void TransBrPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, br_uint_32 pCol // EDX: pX // EBX: pY // ECX: pFont -void TransDRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText, int pRight_edge); +void TransDRPixelmapText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText, int pRight_edge); // Offset: 16380 // Size: 250 @@ -276,6 +278,6 @@ void TransDRPixelmapText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont // EDX: pX // EBX: pY // ECX: pFont -void TransDRPixelmapCleverText(br_pixelmap *pPixelmap, int pX, int pY, tDR_font *pFont, char *pText, int pRight_edge); +void TransDRPixelmapCleverText(br_pixelmap* pPixelmap, int pX, int pY, tDR_font* pFont, char* pText, int pRight_edge); #endif diff --git a/src/DETHRACE/common/globvrkm.h b/src/DETHRACE/common/globvrkm.h index 585787cc..adf6a733 100644 --- a/src/DETHRACE/common/globvrkm.h +++ b/src/DETHRACE/common/globvrkm.h @@ -1,7 +1,9 @@ #ifndef _GLOBVRKM_H_ #define _GLOBVRKM_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern float gRecovery_cost[3]; #endif diff --git a/src/DETHRACE/common/graphics.h b/src/DETHRACE/common/graphics.h index ece4fc3d..35715e06 100644 --- a/src/DETHRACE/common/graphics.h +++ b/src/DETHRACE/common/graphics.h @@ -1,8 +1,10 @@ #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern br_scalar gAmbient_adjustment; // Offset: 0 // Size: 44 @@ -20,7 +22,7 @@ void ResetLollipopQueue(); // Size: 124 // EAX: pActor // EDX: pIndex -int AddToLollipopQueue(br_actor *pActor, int pIndex); +int AddToLollipopQueue(br_actor* pActor, int pIndex); // Offset: 256 // Size: 237 @@ -32,7 +34,7 @@ void RenderLollipops(); // EDX: pX1 // EBX: pY1 // ECX: pX2 -void DRDrawLine(br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); +void DRDrawLine(br_pixelmap* pDestn, int pX1, int pY1, int pX2, int pY2, int pColour); // Offset: 604 // Size: 90 @@ -40,7 +42,7 @@ void DRDrawLine(br_pixelmap *pDestn, int pX1, int pY1, int pX2, int pY2, int pCo // EDX: pX // EBX: pY // ECX: pY_pitch -void DrawDigitAt(br_pixelmap *gImage, int pX, int pY, int pY_pitch, int pValue); +void DrawDigitAt(br_pixelmap* gImage, int pX, int pY, int pY_pitch, int pValue); // Offset: 696 // Size: 156 @@ -48,12 +50,12 @@ void DrawDigitAt(br_pixelmap *gImage, int pX, int pY, int pY_pitch, int pValue); // EDX: pX // EBX: pY // ECX: pX_pitch -void DrawNumberAt(br_pixelmap *gImage, int pX, int pY, int pX_pitch, int pY_pitch, int pValue, int pDigit_count, int pLeading_zeroes); +void DrawNumberAt(br_pixelmap* gImage, int pX, int pY, int pX_pitch, int pY_pitch, int pValue, int pDigit_count, int pLeading_zeroes); // Offset: 852 // Size: 350 // EAX: pPalette -void BuildColourTable(br_pixelmap *pPalette); +void BuildColourTable(br_pixelmap* pPalette); // Offset: 1204 // Size: 44 @@ -63,14 +65,14 @@ void ClearConcussion(); // Size: 137 // EAX: pSource // EDX: pCount -tS8* SkipLines(tS8 *pSource, int pCount); +tS8* SkipLines(tS8* pSource, int pCount); // Offset: 1388 // Size: 126 // EAX: pDst // EDX: pSrc // EBX: pN -void CopyWords(char *pDst, char *pSrc, int pN); +void CopyWords(char* pDst, char* pSrc, int pN); // Offset: 1516 // Size: 606 @@ -78,7 +80,7 @@ void CopyWords(char *pDst, char *pSrc, int pN); // EDX: pDest_x // EBX: pOffset_x // ECX: pDest_y -void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8 *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); +void Copy8BitStripImageTo16Bit(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); // Offset: 2124 // Size: 651 @@ -86,7 +88,7 @@ void Copy8BitStripImageTo16Bit(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 // EDX: pDest_x // EBX: pOffset_x // ECX: pDest_y -void CopyStripImage(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8 *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); +void CopyStripImage(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pOffset_x, br_int_16 pDest_y, br_int_16 pOffset_y, tS8* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_uint_16 pWidth, br_uint_16 pHeight); // Offset: 2776 // Size: 507 @@ -117,24 +119,24 @@ void ScreenLarger(); // EAX: pPalette // EDX: pFirst_colour // EBX: pCount -void DRSetPaletteEntries(br_pixelmap *pPalette, int pFirst_colour, int pCount); +void DRSetPaletteEntries(br_pixelmap* pPalette, int pFirst_colour, int pCount); // Offset: 4144 // Size: 128 // EAX: pThe_palette // EDX: pSet_current_palette -void DRSetPalette3(br_pixelmap *pThe_palette, int pSet_current_palette); +void DRSetPalette3(br_pixelmap* pThe_palette, int pSet_current_palette); // Offset: 4272 // Size: 140 // EAX: pThe_palette // EDX: pSet_current_palette -void DRSetPalette2(br_pixelmap *pThe_palette, int pSet_current_palette); +void DRSetPalette2(br_pixelmap* pThe_palette, int pSet_current_palette); // Offset: 4412 // Size: 50 // EAX: pThe_palette -void DRSetPalette(br_pixelmap *pThe_palette); +void DRSetPalette(br_pixelmap* pThe_palette); // Offset: 4464 // Size: 415 @@ -143,7 +145,7 @@ void InitializePalettes(); // Offset: 4880 // Size: 66 // EAX: pPal_name -void SwitchToPalette(char *pPal_name); +void SwitchToPalette(char* pPal_name); // Offset: 4948 // Size: 104 @@ -191,7 +193,7 @@ void SufferFromConcussion(float pSeriousness); // EDX: pDepth_buffer // EBX: pCamera // ECX: pCamera_to_world -void ProcessNonTrackActors(br_pixelmap *pRender_buffer, br_pixelmap *pDepth_buffer, br_actor *pCamera, br_matrix34 *pCamera_to_world, br_matrix34 *pOld_camera_matrix); +void ProcessNonTrackActors(br_pixelmap* pRender_buffer, br_pixelmap* pDepth_buffer, br_actor* pCamera, br_matrix34* pCamera_to_world, br_matrix34* pOld_camera_matrix); // Offset: 7188 // Size: 119 @@ -204,14 +206,14 @@ int OppositeColour(int pColour); // EDX: pTime // EBX: pTrans // ECX: pPos -void DrawMapBlip(tCar_spec *pCar, tU32 pTime, br_matrix34 *pTrans, br_vector3 *pPos, int pColour); +void DrawMapBlip(tCar_spec* pCar, tU32 pTime, br_matrix34* pTrans, br_vector3* pPos, int pColour); // Offset: 9112 // Size: 257 // EAX: pTime // EDX: pPos // EBX: pColour -void DrawMapSmallBlip(tU32 pTime, br_vector3 *pPos, int pColour); +void DrawMapSmallBlip(tU32 pTime, br_vector3* pPos, int pColour); // Offset: 9372 // Size: 651 @@ -219,19 +221,19 @@ void DrawMapSmallBlip(tU32 pTime, br_vector3 *pPos, int pColour); // EDX: pCar // EBX: p1 // ECX: p2 -void MungeClipPlane(br_vector3 *pLight, tCar_spec *pCar, br_vector3 *p1, br_vector3 *p2, br_scalar pY_offset); +void MungeClipPlane(br_vector3* pLight, tCar_spec* pCar, br_vector3* p1, br_vector3* p2, br_scalar pY_offset); // Offset: 10024 // Size: 180 // EAX: pCar // EDX: pLight // EBX: pIndex_1 -void TryThisEdge(tCar_spec *pCar, br_vector3 *pLight, int pIndex_1, br_scalar pSign_1, int pIndex_2, br_scalar pSign_2, int pPoint_index_1, int pPoint_index_2, br_scalar pY_offset); +void TryThisEdge(tCar_spec* pCar, br_vector3* pLight, int pIndex_1, br_scalar pSign_1, int pIndex_2, br_scalar pSign_2, int pPoint_index_1, int pPoint_index_2, br_scalar pY_offset); // Offset: 10204 // Size: 104 // EAX: pPos -br_scalar DistanceFromPlane(br_vector3 *pPos, br_scalar pA, br_scalar pB, br_scalar pC, br_scalar pD); +br_scalar DistanceFromPlane(br_vector3* pPos, br_scalar pA, br_scalar pB, br_scalar pC, br_scalar pD); // Offset: 10308 // Size: 84 @@ -247,7 +249,7 @@ void EnableLights(); // EDX: pWorld // EBX: pTrack_spec // ECX: pCamera -void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform, br_scalar pDistance_factor); +void ProcessShadow(tCar_spec* pCar, br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform, br_scalar pDistance_factor); // Offset: 15140 // Size: 519 @@ -255,7 +257,7 @@ void ProcessShadow(tCar_spec *pCar, br_actor *pWorld, tTrack_spec *pTrack_spec, // EDX: pTrack_spec // EBX: pCamera // ECX: pCamera_to_world_transform -void RenderShadows(br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform); +void RenderShadows(br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform); // Offset: 15660 // Size: 247 @@ -266,7 +268,7 @@ void FlashyMapCheckpoint(int pIndex, tU32 pTime); // Offset: 15908 // Size: 252 // EAX: pPixelmap -int ConditionallyFillWithSky(br_pixelmap *pPixelmap); +int ConditionallyFillWithSky(br_pixelmap* pPixelmap); // Offset: 16160 // Size: 3751 @@ -293,7 +295,7 @@ void ResetPalette(); // Size: 65 // EAX: pPtr // EDX: pDarken_amount -void Darken(tU8 *pPtr, unsigned int pDarken_amount); +void Darken(tU8* pPtr, unsigned int pDarken_amount); // Offset: 20200 // Size: 194 @@ -319,7 +321,7 @@ void EnsureRenderPalette(); // Offset: 20812 // Size: 248 // EAX: pPixmap_name -void SplashScreenWith(char *pPixmap_name); +void SplashScreenWith(char* pPixmap_name); // Offset: 21060 // Size: 48 @@ -327,7 +329,7 @@ void EnsurePaletteUp(); // Offset: 21108 // Size: 103 -br_uint_32 AmbientificateMaterial(br_material *pMat, void *pArg); +br_uint_32 AmbientificateMaterial(br_material* pMat, void* pArg); // Offset: 21212 // Size: 60 @@ -343,14 +345,14 @@ void InitAmbience(); // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleMaskedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); +void DRPixelmapRectangleMaskedCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); // Offset: 22120 // Size: 86 // EAX: pDest_x // EDX: pDest_y // EBX: pSource -void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource); +void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource); // Offset: 22208 // Size: 332 @@ -358,7 +360,7 @@ void DRMaskedStamp(br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource); // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleOnscreenCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); +void DRPixelmapRectangleOnscreenCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); // Offset: 22540 // Size: 823 @@ -366,7 +368,7 @@ void DRPixelmapRectangleOnscreenCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_i // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight, tX1616 pShear); +void DRPixelmapRectangleShearedCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight, tX1616 pShear); // Offset: 23364 // Size: 341 @@ -374,7 +376,7 @@ void DRPixelmapRectangleShearedCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_in // EDX: pDest_x // EBX: pDest_y // ECX: pSource -void DRPixelmapRectangleVScaledCopy(br_pixelmap *pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap *pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); +void DRPixelmapRectangleVScaledCopy(br_pixelmap* pDest, br_int_16 pDest_x, br_int_16 pDest_y, br_pixelmap* pSource, br_int_16 pSource_x, br_int_16 pSource_y, br_int_16 pWidth, br_int_16 pHeight); // Offset: 23708 // Size: 87 @@ -411,7 +413,7 @@ void SaveTransient(int pIndex, int pX_coord, int pY_coord); // Offset: 24592 // Size: 214 // EAX: pGib -void DrawCursorGiblet(tCursor_giblet *pGib); +void DrawCursorGiblet(tCursor_giblet* pGib); // Offset: 24808 // Size: 743 @@ -460,7 +462,7 @@ void InitDRFonts(); // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DrawDropImage(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip, int pOffset); +void DrawDropImage(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip, int pOffset); // Offset: 28956 // Size: 161 @@ -468,7 +470,7 @@ void DrawDropImage(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropInImageFromTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropInImageFromTop(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29120 // Size: 150 @@ -476,7 +478,7 @@ void DropInImageFromTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropOutImageThruBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropOutImageThruBottom(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29272 // Size: 152 @@ -484,7 +486,7 @@ void DropOutImageThruBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_c // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropInImageFromBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropInImageFromBottom(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29424 // Size: 161 @@ -492,7 +494,7 @@ void DropInImageFromBottom(br_pixelmap *pImage, int pLeft, int pTop, int pTop_cl // EDX: pLeft // EBX: pTop // ECX: pTop_clip -void DropOutImageThruTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); +void DropOutImageThruTop(br_pixelmap* pImage, int pLeft, int pTop, int pTop_clip, int pBottom_clip); // Offset: 29588 // Size: 262 @@ -500,7 +502,7 @@ void DropOutImageThruTop(br_pixelmap *pImage, int pLeft, int pTop, int pTop_clip // EDX: pLeft // EBX: pTop // ECX: pPercentage -void DrawTellyLine(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage); +void DrawTellyLine(br_pixelmap* pImage, int pLeft, int pTop, int pPercentage); // Offset: 29852 // Size: 203 @@ -508,21 +510,21 @@ void DrawTellyLine(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage); // EDX: pLeft // EBX: pTop // ECX: pPercentage -void DrawTellyImage(br_pixelmap *pImage, int pLeft, int pTop, int pPercentage); +void DrawTellyImage(br_pixelmap* pImage, int pLeft, int pTop, int pPercentage); // Offset: 30056 // Size: 194 // EAX: pImage // EDX: pLeft // EBX: pTop -void TellyInImage(br_pixelmap *pImage, int pLeft, int pTop); +void TellyInImage(br_pixelmap* pImage, int pLeft, int pTop); // Offset: 30252 // Size: 220 // EAX: pImage // EDX: pLeft // EBX: pTop -void TellyOutImage(br_pixelmap *pImage, int pLeft, int pTop); +void TellyOutImage(br_pixelmap* pImage, int pLeft, int pTop); // Offset: 30472 // Size: 45 @@ -543,7 +545,7 @@ void InitShadow(); // Offset: 31320 // Size: 140 -br_uint_32 SaveShadeTable(br_pixelmap *pTable, void *pArg); +br_uint_32 SaveShadeTable(br_pixelmap* pTable, void* pArg); // Offset: 31460 // Size: 71 @@ -571,6 +573,6 @@ int SwitchToLoresMode(); // EDX: pSource // EBX: pSource_width // ECX: pSource_height -void DRPixelmapDoubledCopy(br_pixelmap *pDestn, br_pixelmap *pSource, int pSource_width, int pSource_height, int pX_offset, int pY_offset); +void DRPixelmapDoubledCopy(br_pixelmap* pDestn, br_pixelmap* pSource, int pSource_width, int pSource_height, int pX_offset, int pY_offset); #endif diff --git a/src/DETHRACE/common/init.c b/src/DETHRACE/common/init.c index e6f80c18..2cfc4888 100644 --- a/src/DETHRACE/common/init.c +++ b/src/DETHRACE/common/init.c @@ -2,26 +2,26 @@ #include -#include "pc-dos/dossys.h" -#include "common/globvars.h" -#include "common/errors.h" -#include "common/drmem.h" -#include "common/graphics.h" +#include "common/depth.h" +#include "common/displays.h" #include "common/drdebug.h" +#include "common/drmem.h" +#include "common/errors.h" +#include "common/flicplay.h" +#include "common/globvars.h" +#include "common/grafdata.h" +#include "common/graphics.h" #include "common/loading.h" #include "common/netgame.h" -#include "common/replay.h" -#include "common/grafdata.h" -#include "common/flicplay.h" -#include "common/sound.h" -#include "common/displays.h" +#include "common/oil.h" +#include "common/pedestrn.h" #include "common/powerup.h" #include "common/raycast.h" -#include "common/depth.h" -#include "common/world.h" -#include "common/oil.h" +#include "common/replay.h" #include "common/skidmark.h" -#include "common/pedestrn.h" +#include "common/sound.h" +#include "common/world.h" +#include "pc-dos/dossys.h" #include "brender.h" @@ -35,7 +35,7 @@ int gRender_indent; int gCredits_per_rank[3]; int gInitial_credits[3]; int gNet_mode_of_last_game; -br_material *gDefault_track_material; +br_material* gDefault_track_material; // Offset: 0 // Size: 115 @@ -80,7 +80,7 @@ void InstallFindFailedHooks() { // Offset: 1992 // Size: 158 void AllocateStandardLamp() { - br_actor *lamp; + br_actor* lamp; int i; } @@ -123,82 +123,83 @@ void Init2DStuff() { // Size: 671 // EAX: pArgc // EDX: pArgv -void InitialiseApplication(int pArgc, char **pArgv) { - gProgram_state.sausage_eater_mode = gSausage_override; - DrDebugLog(gSausage_override, *pArgv); - if (gAustere_override || PDDoWeLeadAnAustereExistance() != 0) { - gAusterity_mode = 1; - } - - srand(time(NULL)); - BrV1dbBeginWrapper_Float(); - CreateStainlessClasses(); - InitWobbleStuff(); - LoadGeneralParameters(); - DefaultNetName(); - strcpy(gProgram_state.player_name[0], "MAX DAMAGE"); - strcpy(gProgram_state.player_name[1], "DIE ANNA"); - - RestoreOptions(); - LoadKeyMapping(); - if (!PDInitScreenVars(pArgc, pArgv)) { - FatalError(0); - } - CalcGrafDataIndex(); - InitializeBRenderEnvironment(); - InitDRFonts(); - InitBRFonts(); - LoadMiscStrings(); - LoadInRegistees(); - FinishLoadingGeneral(); - InitializePalettes(); - AustereWarning(); - LoadInterfaceStrings(); - InitializeActionReplay(); - FlicPaletteAllocate(); - InitInterfaceLoadState(); - InitTransientBitmaps(); - InitSound(); - InitHeadups(); - gDefault_track_material = BrMaterialAllocate("gDefault_track_material"); - //TODO: - //BYTE2(gDefault_track_material->map_transform.m[2][1]) = -29; - //BYTE3(gDefault_track_material->map_transform.m[2][1]) = 1; - BrMaterialAdd(gDefault_track_material); - InitShadow(); - InitFlics(); - AllocateStandardLamp(); - InitAmbience(); - LoadOpponents(); - LoadPowerups(); - LoadRaces(gRace_list, &gNumber_of_races, -1); - RevertPalette(); - InitRayCasting(); - InitDepthEffects(); - InitialiseStorageSpace(&gOur_car_storage_space, 40, 2, 40, 30); - InitialiseStorageSpace(&gTheir_cars_storage_space, 300, 50, 500, 200); - InitialiseStorageSpace(&gPedestrians_storage_space, 500, 10, 0, 0); - InitialiseStorageSpace(&gTrack_storage_space, 400, 50, 400, 1000); - InitOilSpills(); - if (gAustere_time) { - while (PDGetTotalTime() - gAustere_time < 2000) { - } - } - ClearEntireScreen(); - InitSkids(); - InitPeds(); - gProgram_state.cars_available[42] = 0; - gCD_is_in_drive = TestForOriginalCarmaCDinDrive(); - SwitchToLoresMode(); - DrDebugLog(0, "AFTER APPLICATION INITIALISATION"); +void InitialiseApplication(int pArgc, char** pArgv) { + gProgram_state.sausage_eater_mode = gSausage_override; + DrDebugLog(gSausage_override, *pArgv); + if (gAustere_override || PDDoWeLeadAnAustereExistance() != 0) { + gAusterity_mode = 1; + } + + srand(time(NULL)); + BrV1dbBeginWrapper_Float(); + CreateStainlessClasses(); + InitWobbleStuff(); + LoadGeneralParameters(); + DefaultNetName(); + strcpy(gProgram_state.player_name[0], "MAX DAMAGE"); + strcpy(gProgram_state.player_name[1], "DIE ANNA"); + + RestoreOptions(); + LoadKeyMapping(); + if (!PDInitScreenVars(pArgc, pArgv)) { + FatalError(0); + } + CalcGrafDataIndex(); + InitializeBRenderEnvironment(); + InitDRFonts(); + InitBRFonts(); + LoadMiscStrings(); + LoadInRegistees(); + FinishLoadingGeneral(); + InitializePalettes(); + AustereWarning(); + LoadInterfaceStrings(); + InitializeActionReplay(); + FlicPaletteAllocate(); + InitInterfaceLoadState(); + InitTransientBitmaps(); + InitSound(); + InitHeadups(); + gDefault_track_material = BrMaterialAllocate("gDefault_track_material"); + //TODO: + //BYTE2(gDefault_track_material->map_transform.m[2][1]) = -29; + //BYTE3(gDefault_track_material->map_transform.m[2][1]) = 1; + BrMaterialAdd(gDefault_track_material); + InitShadow(); + InitFlics(); + AllocateStandardLamp(); + InitAmbience(); + LoadOpponents(); + LoadPowerups(); + LoadRaces(gRace_list, &gNumber_of_races, -1); + RevertPalette(); + InitRayCasting(); + InitDepthEffects(); + InitialiseStorageSpace(&gOur_car_storage_space, 40, 2, 40, 30); + InitialiseStorageSpace(&gTheir_cars_storage_space, 300, 50, 500, 200); + InitialiseStorageSpace(&gPedestrians_storage_space, 500, 10, 0, 0); + InitialiseStorageSpace(&gTrack_storage_space, 400, 50, 400, 1000); + InitOilSpills(); + if (gAustere_time) { + while (PDGetTotalTime() - gAustere_time < 2000) { + } + } + ClearEntireScreen(); + InitSkids(); + InitPeds(); + gProgram_state.cars_available[42] = 0; + gCD_is_in_drive = TestForOriginalCarmaCDinDrive(); + SwitchToLoresMode(); + DrDebugLog(0, "AFTER APPLICATION INITIALISATION"); } // Offset: 6004 // Size: 64 // EAX: pArgc // EDX: pArgv -void InitialiseDeathRace(int pArgc, char **pArgv) { +void InitialiseDeathRace(int pArgc, char** pArgv) { PDInitialiseSystem(); + InitialiseApplication(pArgc, pArgv); //dword_112DF8 = 1; // never checked by game } @@ -228,7 +229,7 @@ void DisposeTrack() { // Offset: 6788 // Size: 97 // EAX: pMaterial -void CopyMaterialColourFromIndex(br_material *pMaterial) { +void CopyMaterialColourFromIndex(br_material* pMaterial) { } // Offset: 6888 @@ -251,4 +252,3 @@ int GetScreenSize() { // EAX: pNew_size void SetScreenSize(int pNew_size) { } - diff --git a/src/DETHRACE/common/init.h b/src/DETHRACE/common/init.h index 52eb40f4..b508787f 100644 --- a/src/DETHRACE/common/init.h +++ b/src/DETHRACE/common/init.h @@ -1,8 +1,12 @@ #ifndef _INIT_H_ #define _INIT_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern int gCredits_per_rank[3]; +extern int gInitial_credits[3]; +extern int gInitial_rank; // Offset: 0 // Size: 115 @@ -64,13 +68,13 @@ void Init2DStuff(); // Size: 671 // EAX: pArgc // EDX: pArgv -void InitialiseApplication(int pArgc, char **pArgv); +void InitialiseApplication(int pArgc, char** pArgv); // Offset: 6004 // Size: 64 // EAX: pArgc // EDX: pArgv -void InitialiseDeathRace(int pArgc, char **pArgv); +void InitialiseDeathRace(int pArgc, char** pArgv); // Offset: 6068 // Size: 427 @@ -92,7 +96,7 @@ void DisposeTrack(); // Offset: 6788 // Size: 97 // EAX: pMaterial -void CopyMaterialColourFromIndex(br_material *pMaterial); +void CopyMaterialColourFromIndex(br_material* pMaterial); // Offset: 6888 // Size: 1230 diff --git a/src/DETHRACE/common/loading.c b/src/DETHRACE/common/loading.c index b5a97ad1..4f893e78 100644 --- a/src/DETHRACE/common/loading.c +++ b/src/DETHRACE/common/loading.c @@ -1,9 +1,24 @@ #include "loading.h" +#include #include +#include "displays.h" +#include "errors.h" #include "globvars.h" +#include "globvrkm.h" +#include "graphics.h" +#include "init.h" +#include "newgame.h" +#include "opponent.h" +#include "pc-dos/dossys.h" +#include "pedestrn.h" +#include "sound.h" #include "utility.h" +#include "world.h" + +#define HITHER_MULTIPLIER 2.0f +#define AMBIENT_MULTIPLIER 0.0099999998f char* gWheel_actor_names[6]; int gFunk_groove_flags[30]; @@ -13,7 +28,7 @@ char* gDrivable_car_names[6]; char* gYour_car_names[2][6]; char gDef_def_water_screen_name[32]; tHeadup_info gHeadup_image_info[31]; -int gAllow_open_to_fail; +int gAllow_open_to_fail = 1; br_material* gDestn_screen_mat; br_material* gSource_screen_mat; char* gRaces_file_names[9]; @@ -182,6 +197,146 @@ void LoadGeneralParameters() { int temp; char s[256]; char* str; + + PathCat(the_path, gApplication_path, "ACTORS"); + PathCat(the_path, the_path, "PROG.ACT"); + f = fopen(the_path, "rb"); + if (f) { + fgets(s, 255, f); + fclose(f); + for (i = 0; i < strlen(gDecode_string); i++) { + gDecode_string[i] -= 50; + } + + // trim trailing CRLF etc + while (s[0] != '\0' && s[strlen(s) - 1] < 0x20) { + s[strlen(s) - 1] = 0; + } + + if (strcmp(s, gDecode_string) == 0) { + gDecode_thing = 0; + printf("Expecting decrypted text files!\n"); + } + + for (i = 0; i < strlen(gDecode_string); i++) { + gDecode_string[i] -= 50; + } + } + PathCat(the_path, gApplication_path, "GENERAL.TXT"); + f = DRfopen(the_path, "rt"); + if (!f) { + FatalError(8); + } + gCamera_hither = GetAFloat(f) * HITHER_MULTIPLIER; + gCamera_yon = GetAFloat(f); + gCamera_angle = GetAFloat(f); + gAmbient_adjustment = GetAFloat(f) * AMBIENT_MULTIPLIER; + gDim_amount = GetAnInt(f); + gInitial_rank = GetAnInt(f); + GetThreeInts(f, &gInitial_credits[0], &gInitial_credits[1], &gInitial_credits[2]); + GetThreeInts(f, &gCredits_per_rank[0], &gCredits_per_rank[1], &gCredits_per_rank[2]); + gCar_crush_min_fold = GetAFloat(f); + gCar_crush_max_fold = GetAFloat(f); + gCar_crush_wibble = GetAFloat(f); + gCar_crush_limit_deviant = GetAFloat(f); + gCar_crush_split_chance = GetAFloat(f); + gCar_crush_softness = GetAFloat(f); + GetThreeFloats(f, &gRepair_cost[0], &gRepair_cost[1], &gRepair_cost[2]); + GetThreeFloats(f, &gRecovery_cost[0], &gRecovery_cost[1], &gRecovery_cost[2]); + GetThreeInts(f, &gPed_time_value[0], &gPed_time_value[1], &gPed_time_value[2]); + if (gProgram_state.sausage_eater_mode) { + for (i = 0; i < 7; i++) { + GetALineAndDontArgue(f, s); + } + + GetThreeFloats(f, gCar_time_value, &gCar_time_value[1], &gCar_time_value[2]); + GetThreeFloats(f, gCar_cred_value, &gCar_cred_value[1], &gCar_cred_value[2]); + GetThreeInts(f, gWasted_time, &gWasted_time[1], &gWasted_time[2]); + GetThreeInts(f, gWasted_creds, &gWasted_creds[1], &gWasted_creds[2]); + GetThreeInts(f, gRoll_over_time, &gRoll_over_time[1], &gRoll_over_time[2]); + GetThreeInts(f, gRoll_over_creds, &gRoll_over_creds[1], &gRoll_over_creds[2]); + GetThreeInts(f, gCheck_point_cash, &gCheck_point_cash[1], &gCheck_point_cash[2]); + } else { + GetThreeFloats(f, gCar_time_value, &gCar_time_value[1], &gCar_time_value[2]); + GetThreeFloats(f, gCar_cred_value, &gCar_cred_value[1], &gCar_cred_value[2]); + GetThreeInts(f, gWasted_time, &gWasted_time[1], &gWasted_time[2]); + GetThreeInts(f, gWasted_creds, &gWasted_creds[1], &gWasted_creds[2]); + GetThreeInts(f, gRoll_over_time, &gRoll_over_time[1], &gRoll_over_time[2]); + GetThreeInts(f, gRoll_over_creds, &gRoll_over_creds[1], &gRoll_over_creds[2]); + GetThreeInts(f, gCheck_point_cash, &gCheck_point_cash[1], &gCheck_point_cash[2]); + for (i = 0; i < 7; i++) { + GetALineAndDontArgue(f, s); + } + } + GetThreeInts(f, gJump_start_fine, &gJump_start_fine[1], &gJump_start_fine[2]); + GetThreeInts(f, gPoints_per_second, &gPoints_per_second[1], &gPoints_per_second[2]); + GetThreeInts(f, gCunning_stunt_bonus, &gCunning_stunt_bonus[1], &gCunning_stunt_bonus[2]); + GetAString(f, gBasic_car_names[0]); + GetAString(f, gBasic_car_names[1]); + gKnobbled_frame_period = GetAnInt(f); + if (gKnobbled_frame_period) { + gKnobbled_frame_period = 1000 / gKnobbled_frame_period; + } + gOpponent_nastyness_frigger = GetAFloat(f); + ParseSpecialVolume(f, &gDefault_default_water_spec_vol, gDef_def_water_screen_name); + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 5; i++) { + sscanf(str, "%d", &gInitial_net_credits[i]); + str = strtok(NULL, "\t ,/"); + } + + gTag_start_time = 1000 * GetAnInt(f); + gFox_start_time = 1000 * GetAnInt(f); + + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_repair_cost[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_recovery_cost[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_softness[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%f", &gNet_offensive[i]); + str = strtok(NULL, "\t ,/"); + } + GetALineAndDontArgue(f, s); + str = strtok(s, "\t ,/"); + for (i = 0; i < 7; i++) { + sscanf(str, "%d", &gNet_target[i]); + str = strtok(NULL, "\t ,/"); + } + + gMin_respawn_time = 1000 * GetAnInt(f); + gRespawn_variance = 1000 * GetAnInt(f); + gDemo_rank = GetAnInt(f); + gDemo_armour = GetAnInt(f); + gDemo_power = GetAnInt(f); + gDemo_offensive = GetAnInt(f); + for (i = 0; i < 5; i++) { + gDemo_opponents[i] = GetAnInt(f); + } + + gGravity_multiplier = GetAFloat(f); + gZombie_factor = GetAFloat(f); + gCut_delay_1 = GetAFloat(f); + gCut_delay_2 = GetAFloat(f); + gCut_delay_3 = GetAFloat(f); + gCut_delay_4 = 1.0f; + fclose(f); } // Offset: 3472 @@ -822,6 +977,11 @@ int GetAnInt(FILE* pF) { char s[256]; char* str; int result; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", &result); + return result; } // Offset: 33828 @@ -831,6 +991,11 @@ float GetAFloat(FILE* pF) { char s[256]; char* str; float result; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%f", &result); + return result; } // Offset: 33932 @@ -850,6 +1015,12 @@ float GetAFloatPercent(FILE* pF) { void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%f", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%f", pF2); } // Offset: 34172 @@ -861,6 +1032,14 @@ void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) { void GetThreeFloats(FILE* pF, float* pF1, float* pF2, float* pF3) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%f", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%f", pF2); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%f", pF3); } // Offset: 34344 @@ -871,6 +1050,12 @@ void GetThreeFloats(FILE* pF, float* pF1, float* pF2, float* pF3) { void GetPairOfInts(FILE* pF, int* pF1, int* pF2) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF2); } // Offset: 34476 @@ -882,6 +1067,14 @@ void GetPairOfInts(FILE* pF, int* pF1, int* pF2) { void GetThreeInts(FILE* pF, int* pF1, int* pF2, int* pF3) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF2); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF3); } // Offset: 34648 @@ -904,12 +1097,23 @@ void GetThreeIntsAndAString(FILE* pF, int* pF1, int* pF2, int* pF3, char* pS) { void GetFourInts(FILE* pF, int* pF1, int* pF2, int* pF3, int* pF4) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + sscanf(str, "%d", pF1); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF2); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF3); + str = strtok(NULL, "\t ,/"); + sscanf(str, "%d", pF4); } // Offset: 35056 // Size: 51 // EAX: pF br_scalar GetAScalar(FILE* pF) { + return GetAFloat(pF); } // Offset: 35108 @@ -1000,6 +1204,10 @@ void GetThreeFloatPercents(FILE* pF, float* pF1, float* pF2, float* pF3) { void GetAString(FILE* pF, char* pString) { char s[256]; char* str; + + GetALineAndDontArgue(pF, s); + str = strtok(s, "\t ,/"); + strcpy(pString, str); } // Offset: 36396 @@ -1048,8 +1256,89 @@ FILE* OldDRfopen(char* pFilename, char* pMode) { tPath_name CD_dir; tPath_name path_file; tPath_name source_check; - static int source_exists; + static int source_exists = 1; int len; + int c; + + fp = fopen(pFilename, pMode); + + if (fp) { + len = strlen(pFilename) + 1; + if (gDecode_thing != 0) { + if (strcmp(&pFilename[len - 4], ".TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP0.TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP1.TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP2.TXT") != 0 + && strcmp(&pFilename[len - 12], "DKEYMAP3.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_0.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_1.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_2.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYMAP_3.TXT") != 0 + && strcmp(&pFilename[len - 11], "OPTIONS.TXT") != 0 + && strcmp(&pFilename[len - 12], "KEYNAMES.TXT") != 0 + && strcmp(&pFilename[len - 10], "KEYMAP.TXT") != 0 + && strcmp(&pFilename[len - 9], "PATHS.TXT") != 0 + && strcmp(&pFilename[len - 11], "PRATCAM.TXT") != 0) { + + c = fgetc(fp); + if (c != gDecode_thing) { + fclose(fp); + return NULL; + } + ungetc(c, fp); + return fp; + } + } + } + if (gCD_fully_installed) { + return fp; + } + if (source_exists == 1) { + strcpy(path_file, "DATA"); + strcat(path_file, gDir_separator); + strcat(path_file, "PATHS.TXT"); + + if (!PDCheckDriveExists(path_file)) { + source_exists = 0; + return NULL; + } + test1 = fopen(path_file, "rt"); + if (!test1) { + source_exists = 0; + return NULL; + } + + GetALineAndDontArgue(test1, source_check); + strcat(source_check, gDir_separator); + strcat(source_check, "DATA"); + strcat(source_check, gDir_separator); + strcat(source_check, "GENERAL.TXT"); + + fclose(test1); + if (PDCheckDriveExists(source_check)) { + source_exists++; + } else { + PDFatalError("Carmageddon CD not in drive."); + if (gCD_fully_installed) { + source_exists = 0; + } + } + } + if (!source_exists) { + return fp; + } + + data_dir = strstr(pFilename, "DATA"); + if (data_dir != NULL) { + if (GetCDPathFromPathsTxtFile(CD_dir)) { + strcat(CD_dir, gDir_separator); + strcat(CD_dir, data_dir); + if (PDCheckDriveExists(CD_dir)) { + fp = fopen(CD_dir, pMode); + } + } + } + return fp; } // Offset: 38332 @@ -1070,6 +1359,20 @@ FILE* DRfopen(char* pFilename, char* pMode) { FILE* result; tPath_name CD_dir; char msg[336]; + + result = OldDRfopen(pFilename, pMode); + if (!result && !gAllow_open_to_fail) { + if (GetCDPathFromPathsTxtFile(CD_dir) && !PDCheckDriveExists(CD_dir)) { + if (gMisc_strings[0]) { + PDFatalError(GetMiscString(243)); + } else { + PDFatalError("Could not find the Carmageddon CD"); + } + sprintf(msg, "DRfopen( \"%s\", \"%s\" ) failed", pFilename, pMode); + PDFatalError(msg); + } + } + return result; } // Offset: 38604 @@ -1083,6 +1386,7 @@ int GetCDPathFromPathsTxtFile(char* pPath_name) { if (!got_it_already) { sprintf(paths_txt, "%s%s%s", gApplication_path, gDir_separator, "PATHS.TXT"); + printf("%s\n", paths_txt); paths_txt_fp = fopen(paths_txt, "rt"); if (!paths_txt_fp) { return 0; diff --git a/src/DETHRACE/common/newgame.c b/src/DETHRACE/common/newgame.c index 13698b6e..f561f883 100644 --- a/src/DETHRACE/common/newgame.c +++ b/src/DETHRACE/common/newgame.c @@ -1,23 +1,25 @@ #include "newgame.h" -char *gBasic_car_names[2]; +char x[] = "xxxxxxxx.TXT"; +char y[] = "yyyyyyyy.TXT"; +char* gBasic_car_names[2] = { x, y }; tNet_game_options gNet_settings[8]; tRadio_bastards gRadio_bastards[11]; tJoinable_game gGames_to_join[6]; -tNet_game_options *gOptions; +tNet_game_options* gOptions; int gNet_target[7]; int gLast_graph_sel; -tInterface_spec *gThe_interface_spec; +tInterface_spec* gThe_interface_spec; tNet_sequence_type gNet_race_sequence; tNet_game_type gLast_game_type; int gCurrent_net_game_count; tU32 gAnne_flic_data_length; int gShifted_default_yet; int gNet_storage_allocated; -tU8 *gFrank_flic_data; -char *gNet_name; +tU8* gFrank_flic_data; +char* gNet_name; tU32 gFrank_flic_data_length; -tU8 *gAnne_flic_data; +tU8* gAnne_flic_data; int gLast_net_choose_box; int gCurrent_game_selection; int gRace_index; @@ -44,7 +46,7 @@ void FrankAnneStart2() { // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length) { +void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length) { } // Offset: 688 @@ -94,7 +96,7 @@ int DoOnePlayerStart() { // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameUp(int *pCurrent_choice, int *pCurrent_mode) { +int NewNetGameUp(int* pCurrent_choice, int* pCurrent_mode) { int new_sel; int i; } @@ -103,7 +105,7 @@ int NewNetGameUp(int *pCurrent_choice, int *pCurrent_mode) { // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameDown(int *pCurrent_choice, int *pCurrent_mode) { +int NewNetGameDown(int* pCurrent_choice, int* pCurrent_mode) { int new_sel; int i; } @@ -120,7 +122,7 @@ void DisposeJoinableGame(int pIndex) { // EDX: pY_index // EBX: pFont_index // ECX: pText -void DrawAnItem(int pX, int pY_index, int pFont_index, char *pText) { +void DrawAnItem(int pX, int pY_index, int pFont_index, char* pText) { } // Offset: 2292 @@ -141,8 +143,8 @@ void DrawGames(int pCurrent_choice, int pCurrent_mode) { int x_coord; int y_coord; char s[256]; - char *s2; - char *s3; + char* s2; + char* s3; } // Offset: 4236 @@ -160,7 +162,7 @@ void DisposeJoinList(int pExemption) { // Offset: 4420 // Size: 227 // EAX: pGame -void AddToJoinList(tNet_game_details *pGame) { +void AddToJoinList(tNet_game_details* pGame) { int i; int slot_to_use; tU32 this_game_ID; @@ -182,7 +184,7 @@ void NewNetStart2() { // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length) { +void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length) { } // Offset: 4888 @@ -198,13 +200,13 @@ int NewNetDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscap // Size: 72 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGoAhead(int *pCurrent_choice, int *pCurrent_mode) { +int NewNetGoAhead(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 5032 // Size: 287 // EAX: pGame_to_join -tJoin_or_host_result JoinOrHostGame(tNet_game_details **pGame_to_join) { +tJoin_or_host_result JoinOrHostGame(tNet_game_details** pGame_to_join) { static tFlicette flicker_on[2]; static tFlicette flicker_off[2]; static tFlicette push[2]; @@ -217,13 +219,13 @@ tJoin_or_host_result JoinOrHostGame(tNet_game_details **pGame_to_join) { // Offset: 5320 // Size: 223 // EAX: pGame_options -void GetNetOptions(tNet_game_options *pGame_options) { +void GetNetOptions(tNet_game_options* pGame_options) { } // Offset: 5544 // Size: 234 // EAX: pGame_options -void SetNetOptions(tNet_game_options *pGame_options) { +void SetNetOptions(tNet_game_options* pGame_options) { } // Offset: 5780 @@ -301,7 +303,7 @@ void NetCheckboxChanged(int pIndex) { // Size: 153 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptLeft(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptLeft(int* pCurrent_choice, int* pCurrent_mode) { int new_value; } @@ -309,7 +311,7 @@ int NetOptLeft(int *pCurrent_choice, int *pCurrent_mode) { // Size: 157 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptRight(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptRight(int* pCurrent_choice, int* pCurrent_mode) { int new_value; } @@ -317,14 +319,14 @@ int NetOptRight(int *pCurrent_choice, int *pCurrent_mode) { // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptUp(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptUp(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 7300 // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptDown(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptDown(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 7448 @@ -333,14 +335,14 @@ int NetOptDown(int *pCurrent_choice, int *pCurrent_mode) { // EDX: pCurrent_mode // EBX: pX_offset // ECX: pY_offset -int NetRadioClick(int *pCurrent_choice, int *pCurrent_mode, int pX_offset, int pY_offset) { +int NetRadioClick(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset) { int i; } // Offset: 7664 // Size: 142 void RevertToDefaults() { - FILE *f; + FILE* f; tNet_game_options net_options; int i; } @@ -348,7 +350,7 @@ void RevertToDefaults() { // Offset: 7808 // Size: 156 void DefaultNetSettings() { - FILE *f; + FILE* f; int i; } @@ -356,7 +358,7 @@ void DefaultNetSettings() { // Size: 98 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptGoAhead(int *pCurrent_choice, int *pCurrent_mode) { +int NetOptGoAhead(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 8064 @@ -388,7 +390,7 @@ void DrawNetOptBox(int pCurrent_choice, int pCurrent_mode) { // Offset: 8448 // Size: 111 // EAX: pGame_options -void DoNetOptions(tNet_game_options *pGame_options) { +void DoNetOptions(tNet_game_options* pGame_options) { static tFlicette flicker_on[14]; static tFlicette flicker_off[14]; static tFlicette push[14]; @@ -400,7 +402,7 @@ void DoNetOptions(tNet_game_options *pGame_options) { // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetOptions(tNet_game_type pGame_type, tNet_game_options *pGame_options) { +void SetOptions(tNet_game_type pGame_type, tNet_game_options* pGame_options) { } // Offset: 8992 @@ -412,7 +414,7 @@ void DrawNetChooseInitial() { // Size: 250 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseGoAhead(int *pCurrent_choice, int *pCurrent_mode) { +int NetChooseGoAhead(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 9288 @@ -440,7 +442,7 @@ void EraseAGraphBox(int pIndex) { // EDX: pCurrent_mode void DrawNetChoose(int pCurrent_choice, int pCurrent_mode) { char s[256]; - tU32 *k; + tU32* k; int i; } @@ -448,14 +450,14 @@ void DrawNetChoose(int pCurrent_choice, int pCurrent_mode) { // Size: 61 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseLR(int *pCurrent_choice, int *pCurrent_mode) { +int NetChooseLR(int* pCurrent_choice, int* pCurrent_mode) { } // Offset: 10356 // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetGameTarget(tNet_game_type *pGame_type, tNet_game_options *pGame_options) { +void SetGameTarget(tNet_game_type* pGame_type, tNet_game_options* pGame_options) { } // Offset: 10548 @@ -463,7 +465,7 @@ void SetGameTarget(tNet_game_type *pGame_type, tNet_game_options *pGame_options) // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -int NetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index) { +int NetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index) { static tFlicette flicker_on[11]; static tFlicette flicker_off[11]; static tFlicette push[11]; @@ -477,26 +479,26 @@ int NetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -void ReadNetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index) { +void ReadNetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index) { } // Offset: 11028 // Size: 56 // EAX: pRank -int ChooseStartRace(int *pRank) { +int ChooseStartRace(int* pRank) { } // Offset: 11084 // Size: 63 // EAX: pNet_game -void SetUpOtherNetThings(tNet_game_details *pNet_game) { +void SetUpOtherNetThings(tNet_game_details* pNet_game) { } // Offset: 11148 // Size: 97 // EAX: pNet_game -void RequestCarDetails(tNet_game_details *pNet_game) { - tNet_message *message; +void RequestCarDetails(tNet_game_details* pNet_game) { + tNet_message* message; } // Offset: 11248 @@ -509,13 +511,13 @@ int PickARandomCar() { // Offset: 11432 // Size: 54 // EAX: pNet_game -void PollCarDetails(tNet_game_details *pNet_game) { +void PollCarDetails(tNet_game_details* pNet_game) { } // Offset: 11488 // Size: 278 // EAX: pOptions -void SetNetAvailability(tNet_game_options *pOptions) { +void SetNetAvailability(tNet_game_options* pOptions) { int i; } @@ -525,7 +527,7 @@ void SetNetAvailability(tNet_game_options *pOptions) { // EDX: pOptions // EBX: pCar_index // ECX: pIm_the_host_so_fuck_off -int ChooseNetCar(tNet_game_details *pNet_game, tNet_game_options *pOptions, int *pCar_index, int pIm_the_host_so_fuck_off) { +int ChooseNetCar(tNet_game_details* pNet_game, tNet_game_options* pOptions, int* pCar_index, int pIm_the_host_so_fuck_off) { tS32 start_time; int i; int result; @@ -546,12 +548,11 @@ void DisposeNetStorageSpace() { // Offset: 12344 // Size: 793 int DoMultiPlayerStart() { - tNet_game_details *game_to_join; + tNet_game_details* game_to_join; char s[256]; - char *s2; + char* s2; tNet_game_type new_game_type; tNet_game_options new_game_options; int start_rank; int car_index; } - diff --git a/src/DETHRACE/common/newgame.h b/src/DETHRACE/common/newgame.h index d9539bb5..d3d08b7b 100644 --- a/src/DETHRACE/common/newgame.h +++ b/src/DETHRACE/common/newgame.h @@ -1,8 +1,31 @@ #ifndef _NEWGAME_H_ #define _NEWGAME_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern char* gBasic_car_names[2]; +extern tNet_game_options gNet_settings[8]; +extern tRadio_bastards gRadio_bastards[11]; +extern tJoinable_game gGames_to_join[6]; +extern tNet_game_options* gOptions; +extern int gNet_target[7]; +extern int gLast_graph_sel; +extern tInterface_spec* gThe_interface_spec; +extern tNet_sequence_type gNet_race_sequence; +extern tNet_game_type gLast_game_type; +extern int gCurrent_net_game_count; +extern tU32 gAnne_flic_data_length; +extern int gShifted_default_yet; +extern int gNet_storage_allocated; +extern tU8* gFrank_flic_data; +extern char* gNet_name; +extern tU32 gFrank_flic_data_length; +extern tU8* gAnne_flic_data; +extern int gLast_net_choose_box; +extern int gCurrent_game_selection; +extern int gRace_index; +extern int gRadio_selected; // Offset: 0 // Size: 149 @@ -22,7 +45,7 @@ void FrankAnneStart2(); // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length); +void GetPlayerName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length); // Offset: 688 // Size: 203 @@ -54,13 +77,13 @@ int DoOnePlayerStart(); // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameUp(int *pCurrent_choice, int *pCurrent_mode); +int NewNetGameUp(int* pCurrent_choice, int* pCurrent_mode); // Offset: 1832 // Size: 263 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGameDown(int *pCurrent_choice, int *pCurrent_mode); +int NewNetGameDown(int* pCurrent_choice, int* pCurrent_mode); // Offset: 2096 // Size: 70 @@ -73,7 +96,7 @@ void DisposeJoinableGame(int pIndex); // EDX: pY_index // EBX: pFont_index // ECX: pText -void DrawAnItem(int pX, int pY_index, int pFont_index, char *pText); +void DrawAnItem(int pX, int pY_index, int pFont_index, char* pText); // Offset: 2292 // Size: 119 @@ -99,7 +122,7 @@ void DisposeJoinList(int pExemption); // Offset: 4420 // Size: 227 // EAX: pGame -void AddToJoinList(tNet_game_details *pGame); +void AddToJoinList(tNet_game_details* pGame); // Offset: 4648 // Size: 111 @@ -115,7 +138,7 @@ void NewNetStart2(); // EDX: pCurrent_choice // EBX: pString // ECX: pMax_length -void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char *pString, int *pMax_length); +void NewNetGetName(int pStarting_to_type, int pCurrent_choice, char* pString, int* pMax_length); // Offset: 4888 // Size: 72 @@ -129,22 +152,22 @@ int NewNetDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscap // Size: 72 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NewNetGoAhead(int *pCurrent_choice, int *pCurrent_mode); +int NewNetGoAhead(int* pCurrent_choice, int* pCurrent_mode); // Offset: 5032 // Size: 287 // EAX: pGame_to_join -tJoin_or_host_result JoinOrHostGame(tNet_game_details **pGame_to_join); +tJoin_or_host_result JoinOrHostGame(tNet_game_details** pGame_to_join); // Offset: 5320 // Size: 223 // EAX: pGame_options -void GetNetOptions(tNet_game_options *pGame_options); +void GetNetOptions(tNet_game_options* pGame_options); // Offset: 5544 // Size: 234 // EAX: pGame_options -void SetNetOptions(tNet_game_options *pGame_options); +void SetNetOptions(tNet_game_options* pGame_options); // Offset: 5780 // Size: 72 @@ -209,25 +232,25 @@ void NetCheckboxChanged(int pIndex); // Size: 153 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptLeft(int *pCurrent_choice, int *pCurrent_mode); +int NetOptLeft(int* pCurrent_choice, int* pCurrent_mode); // Offset: 6992 // Size: 157 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptRight(int *pCurrent_choice, int *pCurrent_mode); +int NetOptRight(int* pCurrent_choice, int* pCurrent_mode); // Offset: 7152 // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptUp(int *pCurrent_choice, int *pCurrent_mode); +int NetOptUp(int* pCurrent_choice, int* pCurrent_mode); // Offset: 7300 // Size: 148 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptDown(int *pCurrent_choice, int *pCurrent_mode); +int NetOptDown(int* pCurrent_choice, int* pCurrent_mode); // Offset: 7448 // Size: 213 @@ -235,7 +258,7 @@ int NetOptDown(int *pCurrent_choice, int *pCurrent_mode); // EDX: pCurrent_mode // EBX: pX_offset // ECX: pY_offset -int NetRadioClick(int *pCurrent_choice, int *pCurrent_mode, int pX_offset, int pY_offset); +int NetRadioClick(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset); // Offset: 7664 // Size: 142 @@ -249,7 +272,7 @@ void DefaultNetSettings(); // Size: 98 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetOptGoAhead(int *pCurrent_choice, int *pCurrent_mode); +int NetOptGoAhead(int* pCurrent_choice, int* pCurrent_mode); // Offset: 8064 // Size: 202 @@ -276,13 +299,13 @@ void DrawNetOptBox(int pCurrent_choice, int pCurrent_mode); // Offset: 8448 // Size: 111 // EAX: pGame_options -void DoNetOptions(tNet_game_options *pGame_options); +void DoNetOptions(tNet_game_options* pGame_options); // Offset: 8560 // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetOptions(tNet_game_type pGame_type, tNet_game_options *pGame_options); +void SetOptions(tNet_game_type pGame_type, tNet_game_options* pGame_options); // Offset: 8992 // Size: 44 @@ -292,7 +315,7 @@ void DrawNetChooseInitial(); // Size: 250 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseGoAhead(int *pCurrent_choice, int *pCurrent_mode); +int NetChooseGoAhead(int* pCurrent_choice, int* pCurrent_mode); // Offset: 9288 // Size: 182 @@ -320,42 +343,42 @@ void DrawNetChoose(int pCurrent_choice, int pCurrent_mode); // Size: 61 // EAX: pCurrent_choice // EDX: pCurrent_mode -int NetChooseLR(int *pCurrent_choice, int *pCurrent_mode); +int NetChooseLR(int* pCurrent_choice, int* pCurrent_mode); // Offset: 10356 // Size: 190 // EAX: pGame_type // EDX: pGame_options -void SetGameTarget(tNet_game_type *pGame_type, tNet_game_options *pGame_options); +void SetGameTarget(tNet_game_type* pGame_type, tNet_game_options* pGame_options); // Offset: 10548 // Size: 383 // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -int NetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index); +int NetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index); // Offset: 10932 // Size: 95 // EAX: pGame_type // EDX: pGame_options // EBX: pRace_index -void ReadNetGameChoices(tNet_game_type *pGame_type, tNet_game_options *pGame_options, int *pRace_index); +void ReadNetGameChoices(tNet_game_type* pGame_type, tNet_game_options* pGame_options, int* pRace_index); // Offset: 11028 // Size: 56 // EAX: pRank -int ChooseStartRace(int *pRank); +int ChooseStartRace(int* pRank); // Offset: 11084 // Size: 63 // EAX: pNet_game -void SetUpOtherNetThings(tNet_game_details *pNet_game); +void SetUpOtherNetThings(tNet_game_details* pNet_game); // Offset: 11148 // Size: 97 // EAX: pNet_game -void RequestCarDetails(tNet_game_details *pNet_game); +void RequestCarDetails(tNet_game_details* pNet_game); // Offset: 11248 // Size: 181 @@ -364,12 +387,12 @@ int PickARandomCar(); // Offset: 11432 // Size: 54 // EAX: pNet_game -void PollCarDetails(tNet_game_details *pNet_game); +void PollCarDetails(tNet_game_details* pNet_game); // Offset: 11488 // Size: 278 // EAX: pOptions -void SetNetAvailability(tNet_game_options *pOptions); +void SetNetAvailability(tNet_game_options* pOptions); // Offset: 11768 // Size: 396 @@ -377,7 +400,7 @@ void SetNetAvailability(tNet_game_options *pOptions); // EDX: pOptions // EBX: pCar_index // ECX: pIm_the_host_so_fuck_off -int ChooseNetCar(tNet_game_details *pNet_game, tNet_game_options *pOptions, int *pCar_index, int pIm_the_host_so_fuck_off); +int ChooseNetCar(tNet_game_details* pNet_game, tNet_game_options* pOptions, int* pCar_index, int pIm_the_host_so_fuck_off); // Offset: 12164 // Size: 115 diff --git a/src/DETHRACE/common/opponent.h b/src/DETHRACE/common/opponent.h index e2a7e390..809219e5 100644 --- a/src/DETHRACE/common/opponent.h +++ b/src/DETHRACE/common/opponent.h @@ -1,20 +1,22 @@ #ifndef _OPPONENT_H_ #define _OPPONENT_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern float gOpponent_nastyness_frigger; // Offset: 0 // Size: 137 // EAX: pThe_actor // EDX: pThe_vector -void PointActorAlongThisBloodyVector(br_actor *pThe_actor, br_vector3 *pThe_vector); +void PointActorAlongThisBloodyVector(br_actor* pThe_actor, br_vector3* pThe_vector); // Offset: 140 // Size: 301 // EAX: pOpponent_spec // EDX: pCommand -void ProcessCurrentObjective(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessCurrentObjective(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 444 // Size: 190 @@ -30,13 +32,13 @@ tS16 ReallocExtraPathSections(int pHow_many_then); // Size: 186 // EAX: pFrom // EDX: pTo -int PointVisibleFromHere(br_vector3 *pFrom, br_vector3 *pTo); +int PointVisibleFromHere(br_vector3* pFrom, br_vector3* pTo); // Offset: 1012 // Size: 276 // EAX: pActor_coords // EDX: pDistance -tS16 FindNearestPathNode(br_vector3 *pActor_coords, br_scalar *pDistance); +tS16 FindNearestPathNode(br_vector3* pActor_coords, br_scalar* pDistance); // Offset: 1288 // Size: 66 @@ -44,7 +46,7 @@ tS16 FindNearestPathNode(br_vector3 *pActor_coords, br_scalar *pDistance); // EDX: pPath_direction // EBX: pIntersect // ECX: pDistance -tS16 FindNearestPathSection(br_vector3 *pActor_coords, br_vector3 *pPath_direction, br_vector3 *pIntersect, br_scalar *pDistance); +tS16 FindNearestPathSection(br_vector3* pActor_coords, br_vector3* pPath_direction, br_vector3* pIntersect, br_scalar* pDistance); // Offset: 1356 // Size: 1187 @@ -52,37 +54,37 @@ tS16 FindNearestPathSection(br_vector3 *pActor_coords, br_vector3 *pPath_directi // EDX: pActor_coords // EBX: pPath_direction // ECX: pIntersect -tS16 FindNearestGeneralSection(tCar_spec *pPursuee, br_vector3 *pActor_coords, br_vector3 *pPath_direction, br_vector3 *pIntersect, br_scalar *pDistance); +tS16 FindNearestGeneralSection(tCar_spec* pPursuee, br_vector3* pActor_coords, br_vector3* pPath_direction, br_vector3* pIntersect, br_scalar* pDistance); // Offset: 2544 // Size: 171 // EAX: pCar_spec -void DeadStopCar(tCar_spec *pCar_spec); +void DeadStopCar(tCar_spec* pCar_spec); // Offset: 2716 // Size: 69 // EAX: pOpponent_spec -void TurnOpponentPhysicsOn(tOpponent_spec *pOpponent_spec); +void TurnOpponentPhysicsOn(tOpponent_spec* pOpponent_spec); // Offset: 2788 // Size: 80 // EAX: pOpponent_spec -void TurnOpponentPhysicsOff(tOpponent_spec *pOpponent_spec); +void TurnOpponentPhysicsOff(tOpponent_spec* pOpponent_spec); // Offset: 2868 // Size: 247 -void NewObjective(tOpponent_spec *pOpponent_spec, tOpponent_objective_type pObjective_type, ...); +void NewObjective(tOpponent_spec* pOpponent_spec, tOpponent_objective_type pObjective_type, ...); // Offset: 3116 // Size: 929 // EAX: pOpponent_spec -void CalcRaceRoute(tOpponent_spec *pOpponent_spec); +void CalcRaceRoute(tOpponent_spec* pOpponent_spec); // Offset: 4048 // Size: 790 // EAX: pOpponent_spec // EDX: pSections_to_add -void TopUpRandomRoute(tOpponent_spec *pOpponent_spec, int pSections_to_add); +void TopUpRandomRoute(tOpponent_spec* pOpponent_spec, int pSections_to_add); // Offset: 4840 // Size: 942 @@ -90,63 +92,63 @@ void TopUpRandomRoute(tOpponent_spec *pOpponent_spec, int pSections_to_add); // EDX: pPerm_store // EBX: pNum_of_perm_store_sections // ECX: pTarget_section -int SearchForSection(tRoute_section *pTemp_store, tRoute_section *pPerm_store, int *pNum_of_perm_store_sections, tS16 pTarget_section, int pDepth, br_scalar pDistance_so_far, tOpponent_spec *pOpponent_spec); +int SearchForSection(tRoute_section* pTemp_store, tRoute_section* pPerm_store, int* pNum_of_perm_store_sections, tS16 pTarget_section, int pDepth, br_scalar pDistance_so_far, tOpponent_spec* pOpponent_spec); // Offset: 5784 // Size: 796 // EAX: pOpponent_spec // EDX: pPlayer -void CalcGetNearPlayerRoute(tOpponent_spec *pOpponent_spec, tCar_spec *pPlayer); +void CalcGetNearPlayerRoute(tOpponent_spec* pOpponent_spec, tCar_spec* pPlayer); // Offset: 6580 // Size: 575 // EAX: pOpponent_spec -void CalcReturnToStartPointRoute(tOpponent_spec *pOpponent_spec); +void CalcReturnToStartPointRoute(tOpponent_spec* pOpponent_spec); // Offset: 7156 // Size: 47 // EAX: pOpponent_spec -void ClearOpponentsProjectedRoute(tOpponent_spec *pOpponent_spec); +void ClearOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec); // Offset: 7204 // Size: 114 // EAX: pOpponent_spec // EDX: pSection_no // EBX: pDirection -int AddToOpponentsProjectedRoute(tOpponent_spec *pOpponent_spec, tS16 pSection_no, int pDirection); +int AddToOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec, tS16 pSection_no, int pDirection); // Offset: 7320 // Size: 177 // EAX: pOpponent_spec // EDX: pPlaces -int ShiftOpponentsProjectedRoute(tOpponent_spec *pOpponent_spec, int pPlaces); +int ShiftOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec, int pPlaces); // Offset: 7500 // Size: 134 // EAX: pOpponent_spec // EDX: pMilliseconds -void StunTheBugger(tOpponent_spec *pOpponent_spec, int pMilliseconds); +void StunTheBugger(tOpponent_spec* pOpponent_spec, int pMilliseconds); // Offset: 7636 // Size: 47 // EAX: pOpponent_spec -void UnStunTheBugger(tOpponent_spec *pOpponent_spec); +void UnStunTheBugger(tOpponent_spec* pOpponent_spec); // Offset: 7684 // Size: 436 // EAX: pOpponent_spec // EDX: pCommand -void ProcessCompleteRace(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessCompleteRace(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 8120 // Size: 337 // EAX: pPursuee -void StartRecordingTrail(tCar_spec *pPursuee); +void StartRecordingTrail(tCar_spec* pPursuee); // Offset: 8460 // Size: 1039 // EAX: pPursuee -void RecordNextTrailNode(tCar_spec *pPursuee); +void RecordNextTrailNode(tCar_spec* pPursuee); // Offset: 9500 // Size: 78 @@ -154,102 +156,102 @@ void RecordNextTrailNode(tCar_spec *pPursuee); // EDX: pPursuee // EBX: pSection_v // ECX: pIntersect -tS16 FindNearestTrailSection(tOpponent_spec *pOpponent_spec, tCar_spec *pPursuee, br_vector3 *pSection_v, br_vector3 *pIntersect, br_scalar *pDistance); +tS16 FindNearestTrailSection(tOpponent_spec* pOpponent_spec, tCar_spec* pPursuee, br_vector3* pSection_v, br_vector3* pIntersect, br_scalar* pDistance); // Offset: 9580 // Size: 111 // EAX: pOpponent_spec // EDX: pSection -tS16 CalcNextTrailSection(tOpponent_spec *pOpponent_spec, int pSection); +tS16 CalcNextTrailSection(tOpponent_spec* pOpponent_spec, int pSection); // Offset: 9692 // Size: 2515 // EAX: pOpponent_spec // EDX: pCommand -void ProcessPursueAndTwat(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessPursueAndTwat(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 12208 // Size: 638 // EAX: pOpponent_spec // EDX: pCommand -void ProcessRunAway(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessRunAway(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 12848 // Size: 126 // EAX: pOpponent_spec // EDX: pCommand -void ProcessWaitForSomeHaplessSod(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessWaitForSomeHaplessSod(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 12976 // Size: 629 // EAX: pOpponent_spec // EDX: pCommand -void ProcessReturnToStart(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessReturnToStart(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 13608 // Size: 921 // EAX: pOpponent_spec // EDX: pCommand -void ProcessLevitate(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessLevitate(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 14532 // Size: 543 // EAX: pOpponent_spec // EDX: pCommand -void ProcessGetNearPlayer(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessGetNearPlayer(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 15076 // Size: 230 // EAX: pOpponent_spec // EDX: pCommand -void ProcessFrozen(tOpponent_spec *pOpponent_spec, tProcess_objective_command pCommand); +void ProcessFrozen(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand); // Offset: 15308 // Size: 355 // EAX: pOpponent_spec -int HeadOnWithPlayerPossible(tOpponent_spec *pOpponent_spec); +int HeadOnWithPlayerPossible(tOpponent_spec* pOpponent_spec); // Offset: 15664 // Size: 88 // EAX: pOpponent_spec // EDX: pPursuee -int AlreadyPursuingCar(tOpponent_spec *pOpponent_spec, tCar_spec *pPursuee); +int AlreadyPursuingCar(tOpponent_spec* pOpponent_spec, tCar_spec* pPursuee); // Offset: 15752 // Size: 97 // EAX: pOpponent_spec -int LastTwatteeAPlayer(tOpponent_spec *pOpponent_spec); +int LastTwatteeAPlayer(tOpponent_spec* pOpponent_spec); // Offset: 15852 // Size: 97 // EAX: pOpponent_spec -int LastTwatterAPlayer(tOpponent_spec *pOpponent_spec); +int LastTwatterAPlayer(tOpponent_spec* pOpponent_spec); // Offset: 15952 // Size: 130 // EAX: pOpponent_spec -void ObjectiveComplete(tOpponent_spec *pOpponent_spec); +void ObjectiveComplete(tOpponent_spec* pOpponent_spec); // Offset: 16084 // Size: 542 // EAX: pOpponent_spec -void TeleportOpponentToNearestSafeLocation(tOpponent_spec *pOpponent_spec); +void TeleportOpponentToNearestSafeLocation(tOpponent_spec* pOpponent_spec); // Offset: 16628 // Size: 4057 // EAX: pOpponent_spec // EDX: pMust_choose_one -void ChooseNewObjective(tOpponent_spec *pOpponent_spec, int pMust_choose_one); +void ChooseNewObjective(tOpponent_spec* pOpponent_spec, int pMust_choose_one); // Offset: 20688 // Size: 365 // EAX: pOpponent_spec -void ProcessThisOpponent(tOpponent_spec *pOpponent_spec); +void ProcessThisOpponent(tOpponent_spec* pOpponent_spec); // Offset: 21056 // Size: 256 // EAX: pPoint -int IsNetCarActive(br_vector3 *pPoint); +int IsNetCarActive(br_vector3* pPoint); // Offset: 21312 // Size: 692 @@ -262,53 +264,53 @@ void ForceRebuildActiveCarList(); // Offset: 22064 // Size: 138 // EAX: pOpponent_spec -void StartToCheat(tOpponent_spec *pOpponent_spec); +void StartToCheat(tOpponent_spec* pOpponent_spec); // Offset: 22204 // Size: 138 // EAX: pOpponent_spec -void OiStopCheating(tOpponent_spec *pOpponent_spec); +void OiStopCheating(tOpponent_spec* pOpponent_spec); // Offset: 22344 // Size: 326 // EAX: pOpponent_spec -int TeleportCopToStart(tOpponent_spec *pOpponent_spec); +int TeleportCopToStart(tOpponent_spec* pOpponent_spec); // Offset: 22672 // Size: 139 // EAX: pOpponent_spec -void CalcDistanceFromHome(tOpponent_spec *pOpponent_spec); +void CalcDistanceFromHome(tOpponent_spec* pOpponent_spec); // Offset: 22812 // Size: 767 // EAX: pOpponent_spec // EDX: pMassage_count -int MassageOpponentPosition(tOpponent_spec *pOpponent_spec, int pMassage_count); +int MassageOpponentPosition(tOpponent_spec* pOpponent_spec, int pMassage_count); // Offset: 23580 // Size: 821 // EAX: pOpponent_spec -int RematerialiseOpponentOnThisSection(tOpponent_spec *pOpponent_spec, br_scalar pSpeed, tS16 pSection_no); +int RematerialiseOpponentOnThisSection(tOpponent_spec* pOpponent_spec, br_scalar pSpeed, tS16 pSection_no); // Offset: 24404 // Size: 482 // EAX: pOpponent_spec -int RematerialiseOpponentOnNearestSection(tOpponent_spec *pOpponent_spec, br_scalar pSpeed); +int RematerialiseOpponentOnNearestSection(tOpponent_spec* pOpponent_spec, br_scalar pSpeed); // Offset: 24888 // Size: 2365 // EAX: pOpponent_spec -int RematerialiseOpponent(tOpponent_spec *pOpponent_spec, br_scalar pSpeed); +int RematerialiseOpponent(tOpponent_spec* pOpponent_spec, br_scalar pSpeed); // Offset: 27256 // Size: 434 // EAX: pOpponent_spec -void CalcPlayerConspicuousness(tOpponent_spec *pOpponent_spec); +void CalcPlayerConspicuousness(tOpponent_spec* pOpponent_spec); // Offset: 27692 // Size: 192 // EAX: pOpponent_spec -void CalcOpponentConspicuousnessWithAViewToCheatingLikeFuck(tOpponent_spec *pOpponent_spec); +void CalcOpponentConspicuousnessWithAViewToCheatingLikeFuck(tOpponent_spec* pOpponent_spec); // Offset: 27884 // Size: 52 @@ -323,7 +325,7 @@ void LoadCopCars(); // Offset: 28168 // Size: 2460 // EAX: pF -void LoadInOppoPaths(FILE *pF); +void LoadInOppoPaths(FILE* pF); // Offset: 30628 // Size: 153 @@ -341,7 +343,7 @@ void SetInitialCopPositions(); // Offset: 31988 // Size: 2545 // EAX: pRace_info -void InitOpponents(tRace_info *pRace_info); +void InitOpponents(tRace_info* pRace_info); // Offset: 34536 // Size: 142 @@ -355,7 +357,7 @@ void WakeUpOpponentsToTheFactThatTheStartHasBeenJumped(int pWhat_the_countdown_w // Offset: 34992 // Size: 91 // EAX: pCar_spec -void ReportMurderToPoliceDepartment(tCar_spec *pCar_spec); +void ReportMurderToPoliceDepartment(tCar_spec* pCar_spec); // Offset: 35084 // Size: 178 @@ -377,7 +379,7 @@ char* GetDriverName(tVehicle_type pCategory, int pIndex); // Offset: 35676 // Size: 240 // EAX: pCar_spec -tOpponent_spec* GetOpponentSpecFromCarSpec(tCar_spec *pCar_spec); +tOpponent_spec* GetOpponentSpecFromCarSpec(tCar_spec* pCar_spec); // Offset: 35916 // Size: 113 @@ -388,62 +390,62 @@ tCar_spec* GetCarSpecFromGlobalOppoIndex(int pIndex); // Size: 95 // EAX: pOpponent_spec // EDX: pSection_no -int GetOpponentsRealSection(tOpponent_spec *pOpponent_spec, int pSection_no); +int GetOpponentsRealSection(tOpponent_spec* pOpponent_spec, int pSection_no); // Offset: 36128 // Size: 106 // EAX: pOpponent_spec -int GetOpponentsFirstSection(tOpponent_spec *pOpponent_spec); +int GetOpponentsFirstSection(tOpponent_spec* pOpponent_spec); // Offset: 36236 // Size: 185 // EAX: pOpponent_spec // EDX: pCurrent_section -int GetOpponentsNextSection(tOpponent_spec *pOpponent_spec, tS16 pCurrent_section); +int GetOpponentsNextSection(tOpponent_spec* pOpponent_spec, tS16 pCurrent_section); // Offset: 36424 // Size: 239 // EAX: pOpponent_spec // EDX: pSection -tS16 GetOpponentsSectionStartNode(tOpponent_spec *pOpponent_spec, tS16 pSection); +tS16 GetOpponentsSectionStartNode(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 36664 // Size: 185 // EAX: pOpponent_spec // EDX: pSection -tS16 GetOpponentsSectionFinishNode(tOpponent_spec *pOpponent_spec, tS16 pSection); +tS16 GetOpponentsSectionFinishNode(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 36852 // Size: 284 // EAX: pOpponent_spec // EDX: pSection -br_vector3* GetOpponentsSectionStartNodePoint(tOpponent_spec *pOpponent_spec, tS16 pSection); +br_vector3* GetOpponentsSectionStartNodePoint(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 37136 // Size: 266 // EAX: pOpponent_spec // EDX: pSection -br_vector3* GetOpponentsSectionFinishNodePoint(tOpponent_spec *pOpponent_spec, tS16 pSection); +br_vector3* GetOpponentsSectionFinishNodePoint(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 37404 // Size: 165 // EAX: pOpponent_spec // EDX: pSection -br_scalar GetOpponentsSectionWidth(tOpponent_spec *pOpponent_spec, tS16 pSection); +br_scalar GetOpponentsSectionWidth(tOpponent_spec* pOpponent_spec, tS16 pSection); // Offset: 37572 // Size: 262 // EAX: pOpponent_spec // EDX: pSection // EBX: pTowards_finish -int GetOpponentsSectionMinSpeed(tOpponent_spec *pOpponent_spec, tS16 pSection, int pTowards_finish); +int GetOpponentsSectionMinSpeed(tOpponent_spec* pOpponent_spec, tS16 pSection, int pTowards_finish); // Offset: 37836 // Size: 262 // EAX: pOpponent_spec // EDX: pSection // EBX: pTowards_finish -int GetOpponentsSectionMaxSpeed(tOpponent_spec *pOpponent_spec, tS16 pSection, int pTowards_finish); +int GetOpponentsSectionMaxSpeed(tOpponent_spec* pOpponent_spec, tS16 pSection, int pTowards_finish); // Offset: 38100 // Size: 59 @@ -453,19 +455,19 @@ void InitOpponentPsyche(int pOpponent_index); // Offset: 38160 // Size: 108 // EAX: pOpponent_spec -void ClearTwattageOccurrenceVariables(tOpponent_spec *pOpponent_spec); +void ClearTwattageOccurrenceVariables(tOpponent_spec* pOpponent_spec); // Offset: 38268 // Size: 86 // EAX: pA_car // EDX: pAnother_car -void TwoCarsHitEachOther(tCar_spec *pA_car, tCar_spec *pAnother_car); +void TwoCarsHitEachOther(tCar_spec* pA_car, tCar_spec* pAnother_car); // Offset: 38356 // Size: 1166 // EAX: pTwatter // EDX: pTwattee -void RecordOpponentTwattageOccurrence(tCar_spec *pTwatter, tCar_spec *pTwattee); +void RecordOpponentTwattageOccurrence(tCar_spec* pTwatter, tCar_spec* pTwattee); // Offset: 39524 // Size: 67 @@ -503,7 +505,7 @@ void DeleteOrphanNodes(); // EAX: pInserted_node // EDX: pSection_no // EBX: pWhere -void InsertThisNodeInThisSectionHere(tS16 pInserted_node, tS16 pSection_no, br_vector3 *pWhere); +void InsertThisNodeInThisSectionHere(tS16 pInserted_node, tS16 pSection_no, br_vector3* pWhere); // Offset: 42752 // Size: 254 @@ -524,13 +526,13 @@ void RecalcNearestPathSectionWidth(br_scalar pAdjustment); // EAX: pNegative_x_vector // EDX: pStart // EBX: pFinish -void CalcNegativeXVector(br_vector3 *pNegative_x_vector, br_vector3 *pStart, br_vector3 *pFinish, br_scalar pLength); +void CalcNegativeXVector(br_vector3* pNegative_x_vector, br_vector3* pStart, br_vector3* pFinish, br_scalar pLength); // Offset: 44700 // Size: 162 // EAX: pModel // EDX: pVertex_num -void MakeVertexAndOffsetIt(br_model *pModel, int pVertex_num, br_scalar pX, br_scalar pY, br_scalar pZ, br_vector3 *pOffset); +void MakeVertexAndOffsetIt(br_model* pModel, int pVertex_num, br_scalar pX, br_scalar pY, br_scalar pZ, br_vector3* pOffset); // Offset: 44864 // Size: 134 @@ -538,7 +540,7 @@ void MakeVertexAndOffsetIt(br_model *pModel, int pVertex_num, br_scalar pX, br_s // EDX: pFace_num // EBX: pV0 // ECX: pV1 -void MakeFaceAndTextureIt(br_model *pModel, int pFace_num, int pV0, int pV1, int pV2, br_material *pMaterial); +void MakeFaceAndTextureIt(br_model* pModel, int pFace_num, int pV0, int pV1, int pV2, br_material* pMaterial); // Offset: 45000 // Size: 942 @@ -546,7 +548,7 @@ void MakeFaceAndTextureIt(br_model *pModel, int pFace_num, int pV0, int pV1, int // EDX: pFirst_face // EBX: pStart // ECX: pFinish -void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3 *pStart, br_vector3 *pFinish, br_scalar pWidth, br_material *pMaterial_centre_lt, br_material *pMaterial_centre_dk, br_material *pMaterial_edges_start_lt, br_material *pMaterial_edges_start_dk, br_material *pMaterial_edges_finish_lt, br_material *pMaterial_edges_finish_dk); +void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3* pStart, br_vector3* pFinish, br_scalar pWidth, br_material* pMaterial_centre_lt, br_material* pMaterial_centre_dk, br_material* pMaterial_edges_start_lt, br_material* pMaterial_edges_start_dk, br_material* pMaterial_edges_finish_lt, br_material* pMaterial_edges_finish_dk); // Offset: 45944 // Size: 1235 @@ -554,20 +556,20 @@ void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3 *p // EDX: pFirst_face // EBX: pPoint // ECX: pMaterial_1 -void MakeCube(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3 *pPoint, br_material *pMaterial_1, br_material *pMaterial_2, br_material *pMaterial_3); +void MakeCube(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3* pPoint, br_material* pMaterial_1, br_material* pMaterial_2, br_material* pMaterial_3); // Offset: 47180 // Size: 88 // EAX: pFace_index_ptr // EDX: pVertex_index_ptr -void CalcNumberOfFacesAndVerticesForOppoPathModel(br_uint_16 *pFace_index_ptr, br_uint_16 *pVertex_index_ptr); +void CalcNumberOfFacesAndVerticesForOppoPathModel(br_uint_16* pFace_index_ptr, br_uint_16* pVertex_index_ptr); // Offset: 47268 // Size: 433 // EAX: pModel // EDX: pNum_faces // EBX: pNum_vertices -void ReallocModelFacesAndVertices(br_model *pModel, int pNum_faces, int pNum_vertices); +void ReallocModelFacesAndVertices(br_model* pModel, int pNum_faces, int pNum_vertices); // Offset: 47704 // Size: 127 diff --git a/src/DETHRACE/common/pedestrn.h b/src/DETHRACE/common/pedestrn.h index 2a7fe7b6..267b5529 100644 --- a/src/DETHRACE/common/pedestrn.h +++ b/src/DETHRACE/common/pedestrn.h @@ -1,33 +1,37 @@ #ifndef _PEDESTRN_H_ #define _PEDESTRN_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern int gMin_respawn_time; +extern int gRespawn_variance; +extern float gZombie_factor; // Offset: 0 // Size: 152 // EAX: pModel -void PedModelUpdate(br_model *pModel, br_scalar x0, br_scalar y0, br_scalar x1, br_scalar y1, br_scalar x2, br_scalar y2, br_scalar x3, br_scalar y3); +void PedModelUpdate(br_model* pModel, br_scalar x0, br_scalar y0, br_scalar x1, br_scalar y1, br_scalar x2, br_scalar y2, br_scalar x3, br_scalar y3); // Offset: 152 // Size: 98 // EAX: pActor -int ActorIsPedestrian(br_actor *pActor); +int ActorIsPedestrian(br_actor* pActor); // Offset: 252 // Size: 79 // EAX: pActor -br_scalar PedHeightFromActor(br_actor *pActor); +br_scalar PedHeightFromActor(br_actor* pActor); // Offset: 332 // Size: 52 // EAX: pActor -int GetPedestrianValue(br_actor *pActor); +int GetPedestrianValue(br_actor* pActor); // Offset: 384 // Size: 88 // EAX: pActor -int PedestrianActorIsPerson(br_actor *pActor); +int PedestrianActorIsPerson(br_actor* pActor); // Offset: 472 // Size: 87 @@ -38,7 +42,7 @@ br_actor* GetPedestrianActor(int pIndex); // Size: 97 // EAX: pActor // EDX: pFlipped -br_pixelmap* GetPedestrianTexture(br_actor *pActor, int *pFlipped); +br_pixelmap* GetPedestrianTexture(br_actor* pActor, int* pFlipped); // Offset: 660 // Size: 153 @@ -51,11 +55,11 @@ void InitPedGibs(); // Offset: 1736 // Size: 240 // EAX: pActor -void SetPedMaterialForRender(br_actor *pActor); +void SetPedMaterialForRender(br_actor* pActor); // Offset: 1976 // Size: 158 -void PedCallBack(br_actor *pActor, br_model *pModel, br_material *pMaterial, void *pRender_data, br_uint_8 pStyle, int pOn_screen); +void PedCallBack(br_actor* pActor, br_model* pModel, br_material* pMaterial, void* pRender_data, br_uint_8 pStyle, int pOn_screen); // Offset: 2136 // Size: 516 @@ -64,12 +68,12 @@ void InitPeds(); // Offset: 2652 // Size: 275 // EAX: pActor -void MungeModelSize(br_actor *pActor, br_scalar pScaling_factor); +void MungeModelSize(br_actor* pActor, br_scalar pScaling_factor); // Offset: 2928 // Size: 1468 // EAX: pPedestrian -int BurstPedestrian(tPedestrian_data *pPedestrian, float pSplattitudinalitude, int pAllow_explosion); +int BurstPedestrian(tPedestrian_data* pPedestrian, float pSplattitudinalitude, int pAllow_explosion); // Offset: 4396 // Size: 137 @@ -81,7 +85,7 @@ void ResetAllPedGibs(); // EDX: pSize // EBX: pGib_index // ECX: pPed_index -void AdjustPedGib(int pIndex, int pSize, int pGib_index, int pPed_index, br_matrix34 *pTrans); +void AdjustPedGib(int pIndex, int pSize, int pGib_index, int pPed_index, br_matrix34* pTrans); // Offset: 4736 // Size: 810 @@ -91,7 +95,7 @@ void MungePedGibs(tU32 pFrame_period); // Offset: 5548 // Size: 267 // EAX: pPedestrian -void KillPedestrian(tPedestrian_data *pPedestrian); +void KillPedestrian(tPedestrian_data* pPedestrian); // Offset: 5816 // Size: 302 @@ -99,55 +103,55 @@ void KillPedestrian(tPedestrian_data *pPedestrian); // EDX: pPixelmap // EBX: pHeight // ECX: pWidth -void CalcPedWidthNHeight(tPedestrian_data *pPedestrian, br_pixelmap *pPixelmap, br_scalar *pHeight, br_scalar *pWidth); +void CalcPedWidthNHeight(tPedestrian_data* pPedestrian, br_pixelmap* pPixelmap, br_scalar* pHeight, br_scalar* pWidth); // Offset: 6120 // Size: 1942 // EAX: pPedestrian -int PedestrianNextInstruction(tPedestrian_data *pPedestrian, float pDanger_level, int pPosition_explicitly, int pMove_pc); +int PedestrianNextInstruction(tPedestrian_data* pPedestrian, float pDanger_level, int pPosition_explicitly, int pMove_pc); // Offset: 8064 // Size: 464 // EAX: pPedestrian // EDX: pAction_changed -void MungePedestrianSequence(tPedestrian_data *pPedestrian, int pAction_changed); +void MungePedestrianSequence(tPedestrian_data* pPedestrian, int pAction_changed); // Offset: 8528 // Size: 166 // EAX: pPedestrian -void DetachPedFromCar(tPedestrian_data *pPedestrian); +void DetachPedFromCar(tPedestrian_data* pPedestrian); // Offset: 8696 // Size: 117 // EAX: pPedestrian -void SetPedPos(tPedestrian_data *pPedestrian); +void SetPedPos(tPedestrian_data* pPedestrian); // Offset: 8816 // Size: 59 // EAX: pActor -void DetachPedActorFromCar(br_actor *pActor); +void DetachPedActorFromCar(br_actor* pActor); // Offset: 8876 // Size: 1317 // EAX: pPedestrian -void MungePedestrianFrames(tPedestrian_data *pPedestrian); +void MungePedestrianFrames(tPedestrian_data* pPedestrian); // Offset: 10196 // Size: 1288 // EAX: pPedestrian -void MungePedModel(tPedestrian_data *pPedestrian); +void MungePedModel(tPedestrian_data* pPedestrian); // Offset: 11484 // Size: 408 // EAX: pPedestrian // EDX: pAction_index // EBX: pRedo_frames_etc -void ChangeActionTo(tPedestrian_data *pPedestrian, int pAction_index, int pRedo_frames_etc); +void ChangeActionTo(tPedestrian_data* pPedestrian, int pAction_index, int pRedo_frames_etc); // Offset: 11892 // Size: 589 // EAX: pPedestrian -int MungePedestrianAction(tPedestrian_data *pPedestrian, float pDanger_level); +int MungePedestrianAction(tPedestrian_data* pPedestrian, float pDanger_level); // Offset: 12484 // Size: 105 @@ -156,20 +160,20 @@ void MakeFlagWavingBastardWaveHisFlagWhichIsTheProbablyTheLastThingHeWillEverDo( // Offset: 12592 // Size: 2334 // EAX: pPedestrian -void MungePedestrianPath(tPedestrian_data *pPedestrian, float pDanger_level, br_vector3 *pDanger_direction); +void MungePedestrianPath(tPedestrian_data* pPedestrian, float pDanger_level, br_vector3* pDanger_direction); // Offset: 14928 // Size: 764 // EAX: pPedestrian // EDX: pDanger_direction -float CalcPedestrianDangerLevel(tPedestrian_data *pPedestrian, br_vector3 *pDanger_direction); +float CalcPedestrianDangerLevel(tPedestrian_data* pPedestrian, br_vector3* pDanger_direction); // Offset: 15692 // Size: 972 // EAX: pPedestrian // EDX: pCar // EBX: pCar_actor -tPed_hit_position MoveToEdgeOfCar(tPedestrian_data *pPedestrian, tCollision_info *pCar, br_actor *pCar_actor, br_scalar pPed_x, br_scalar pPed_z, br_scalar pCar_bounds_min_x, br_scalar pCar_bounds_max_x, br_scalar pCar_bounds_min_z, br_scalar pCar_bounds_max_z, br_vector3 *pMin_ped_bounds_car, br_vector3 *pMax_ped_bounds_car); +tPed_hit_position MoveToEdgeOfCar(tPedestrian_data* pPedestrian, tCollision_info* pCar, br_actor* pCar_actor, br_scalar pPed_x, br_scalar pPed_z, br_scalar pCar_bounds_min_x, br_scalar pCar_bounds_max_x, br_scalar pCar_bounds_min_z, br_scalar pCar_bounds_max_z, br_vector3* pMin_ped_bounds_car, br_vector3* pMax_ped_bounds_car); // Offset: 16664 // Size: 101 @@ -179,30 +183,30 @@ void CheckLastPed(); // Size: 319 // EAX: pCar // EDX: pPed_car -int BloodyWheels(tCar_spec *pCar, br_vector3 *pPed_car, br_scalar pSize, br_vector3 *pPed_glob); +int BloodyWheels(tCar_spec* pCar, br_vector3* pPed_car, br_scalar pSize, br_vector3* pPed_glob); // Offset: 17088 // Size: 142 // EAX: pPedestrian // EDX: pCar -int FancyATossOffMate(tPedestrian_data *pPedestrian, tCollision_info *pCar, float pImpact_speed); +int FancyATossOffMate(tPedestrian_data* pPedestrian, tCollision_info* pCar, float pImpact_speed); // Offset: 17232 // Size: 5870 // EAX: pPedestrian -void CheckPedestrianDeathScenario(tPedestrian_data *pPedestrian); +void CheckPedestrianDeathScenario(tPedestrian_data* pPedestrian); // Offset: 23104 // Size: 769 // EAX: pPedestrian // EDX: pIndex -void SendPedestrian(tPedestrian_data *pPedestrian, int pIndex); +void SendPedestrian(tPedestrian_data* pPedestrian, int pIndex); // Offset: 23876 // Size: 1162 // EAX: pPedestrian // EDX: pIndex -void DoPedestrian(tPedestrian_data *pPedestrian, int pIndex); +void DoPedestrian(tPedestrian_data* pPedestrian, int pIndex); // Offset: 25040 // Size: 767 @@ -210,13 +214,13 @@ void DoPedestrian(tPedestrian_data *pPedestrian, int pIndex); // EDX: pAction_index // EBX: pFrame_index // ECX: pHit_points -void AdjustPedestrian(int pIndex, int pAction_index, int pFrame_index, int pHit_points, int pDone_initial, tU16 pParent, br_actor *pParent_actor, float pSpin_period, br_scalar pJump_magnitude, br_vector3 *pOffset, br_vector3 *pTrans); +void AdjustPedestrian(int pIndex, int pAction_index, int pFrame_index, int pHit_points, int pDone_initial, tU16 pParent, br_actor* pParent_actor, float pSpin_period, br_scalar pJump_magnitude, br_vector3* pOffset, br_vector3* pTrans); // Offset: 25808 // Size: 194 // EAX: pFirst_vertex // EDX: pPoint -void SquirtPathVertex(br_vertex *pFirst_vertex, br_vector3 *pPoint); +void SquirtPathVertex(br_vertex* pFirst_vertex, br_vector3* pPoint); // Offset: 26004 // Size: 92 @@ -225,13 +229,13 @@ void ResetAllPedestrians(); // Offset: 26096 // Size: 476 // EAX: pPedestrian -void GroundPedestrian(tPedestrian_data *pPedestrian); +void GroundPedestrian(tPedestrian_data* pPedestrian); // Offset: 26572 // Size: 483 // EAX: pPedestrian // EDX: pAnimate -void RevivePedestrian(tPedestrian_data *pPedestrian, int pAnimate); +void RevivePedestrian(tPedestrian_data* pPedestrian, int pAnimate); // Offset: 27056 // Size: 1078 @@ -250,7 +254,7 @@ int GetPedCount(); // Size: 260 // EAX: pIndex // EDX: pPos -int GetPedPosition(int pIndex, br_vector3 *pPos); +int GetPedPosition(int pIndex, br_vector3* pPos); // Offset: 28648 // Size: 2930 @@ -258,7 +262,7 @@ int GetPedPosition(int pIndex, br_vector3 *pPos); // EDX: pInstructions // EBX: pInstruc_count // ECX: pInit_instruc -void CreatePedestrian(FILE *pG, tPedestrian_instruction *pInstructions, int pInstruc_count, int pInit_instruc, int pRef_num, int pForce_read); +void CreatePedestrian(FILE* pG, tPedestrian_instruction* pInstructions, int pInstruc_count, int pInit_instruc, int pRef_num, int pForce_read); // Offset: 31580 // Size: 73 @@ -277,14 +281,14 @@ void ResetPedMaterial(); // EAX: pF // EDX: pSubs_count // EBX: pSubs_array -void LoadInPedestrians(FILE *pF, int pSubs_count, tPed_subs *pSubs_array); +void LoadInPedestrians(FILE* pF, int pSubs_count, tPed_subs* pSubs_array); // Offset: 33608 // Size: 1313 // EAX: pInstructions // EDX: pInstruc_count // EBX: pInit_instruc -br_actor* BuildPedPaths(tPedestrian_instruction *pInstructions, int pInstruc_count, int pInit_instruc); +br_actor* BuildPedPaths(tPedestrian_instruction* pInstructions, int pInstruc_count, int pInit_instruc); // Offset: 34924 // Size: 1161 @@ -421,7 +425,7 @@ void DropInitPedPointAir(); // Offset: 38452 // Size: 77 -br_uint_32 KillActorsModel(br_actor *pActor, void *pArg); +br_uint_32 KillActorsModel(br_actor* pActor, void* pArg); // Offset: 38532 // Size: 154 @@ -431,7 +435,7 @@ void DisposePedPaths(); // Size: 417 // EAX: pPed_index // EDX: pPoint_index -void GetPedPos(int *pPed_index, int *pPoint_index); +void GetPedPos(int* pPed_index, int* pPoint_index); // Offset: 39108 // Size: 105 @@ -471,7 +475,7 @@ void DoPedReport(); // EDX: pDepth_buffer // EBX: pCamera // ECX: pCamera_to_world -void RenderProximityRays(br_pixelmap *pRender_screen, br_pixelmap *pDepth_buffer, br_actor *pCamera, br_matrix34 *pCamera_to_world, tU32 pTime); +void RenderProximityRays(br_pixelmap* pRender_screen, br_pixelmap* pDepth_buffer, br_actor* pCamera, br_matrix34* pCamera_to_world, tU32 pTime); // Offset: 42256 // Size: 145 @@ -486,7 +490,7 @@ void AdjustProxRay(int pRay_index, tU16 pCar_ID, tU16 pPed_index, tU32 pTime); // EAX: pContents // EDX: pMessage // EBX: pReceive_time -void ReceivedPedestrian(tNet_contents *pContents, tNet_message *pMessage, tU32 pReceive_time); +void ReceivedPedestrian(tNet_contents* pContents, tNet_message* pMessage, tU32 pReceive_time); // Offset: 43604 // Size: 115 diff --git a/src/DETHRACE/common/utility.c b/src/DETHRACE/common/utility.c index ee6fd1bb..e3d04909 100644 --- a/src/DETHRACE/common/utility.c +++ b/src/DETHRACE/common/utility.c @@ -1,30 +1,30 @@ #include "utility.h" -#include "loading.h" -#include "errors.h" #include "dossys.h" +#include "errors.h" #include "globvars.h" -#include "sound.h" +#include "loading.h" #include "network.h" +#include "sound.h" -#include -#include -#include #include +#include +#include +#include // Added >> #define MIN_SERVICE_INTERVAL 200 // << -tU32 gLong_key[] = { 0x5F991B6C, 0x135FCDB9, 0x0E2004CB, 0x0EA11C5E }; -tU32 gOther_long_key[] = { 0x26D6A867, 0x1B45DDB6, 0x13227E32, 0x3794C215 }; +tU32 gLong_key[] = { 0x5F991B6C, 0x135FCDB9, 0x0E2004CB, 0x0EA11C5E }; +tU32 gOther_long_key[] = { 0x26D6A867, 0x1B45DDB6, 0x13227E32, 0x3794C215 }; -char *gMisc_strings[250]; +char* gMisc_strings[250]; int gIn_check_quit; tU32 gLost_time; -int gEncryption_method = 1; -br_pixelmap *g16bit_palette; -br_pixelmap *gSource_for_16bit_palette; +int gEncryption_method = 0; +br_pixelmap* g16bit_palette; +br_pixelmap* gSource_for_16bit_palette; // Offset: 0 // Size: 144 @@ -32,21 +32,90 @@ int CheckQuit() { int got_as_far_as_verify; } -// Offset: 144 -// Size: 50 -double sqr(double pN) { -} - // Offset: 196 // Size: 542 // EAX: pS -void EncodeLine(char *pS) { +void EncodeLine(char* pS) { int len; int seed; int i; - char *key; + char* key; unsigned char c; - FILE *test; + FILE* test; + + tPath_name test_path; + char temp[256]; + + len = strlen(pS); + key = (char*)gLong_key; + if (!gEncryption_method) { + strcpy(test_path, gApplication_path); + strcat(test_path, gDir_separator); + strcat(test_path, "GENERAL.TXT"); + + test = fopen(test_path, "rt"); + if (test) { + fgets(temp, 256, test); + if (temp[0] != '@') { + gEncryption_method = 2; + } else { + gEncryption_method = 1; + EncodeLine(&temp[1]); + temp[7] = '\0'; + if (strcmp(&temp[1], "0.01\t\t") != 0) { + gEncryption_method = 2; + } + } + fclose(test); + } else { + gEncryption_method = 2; + } + } + while (len > 0 && (pS[len - 1] == '\r' || pS[len - 1] == '\n')) { + --len; + pS[len] = 0; + } + + seed = len % 16; + for (i = 0; i < len; i++) { + c = pS[i]; + if (i >= 2) { + if (pS[i - 1] == '/' && pS[i - 2] == '/') { + key = (char*)gOther_long_key; + } + } + if (gEncryption_method == 1) { + if (c == '\t') { + c = 0x80; + } + c -= 0x20; + if (!(c & 0x80)) { + c = (c ^ key[seed]) & 0x7f; + c += 0x20; + } + seed += 7; + seed = seed % 16; + + if (c == 0x80) { + c = '\t'; + } + } else { + if (c == '\t') { + c = 0x9f; + } + c -= 0x20; + c = (c ^ key[seed]) & 0x7f; + c += 0x20; + + seed += 7; + seed = seed % 16; + + if (c == 0x9f) { + c = '\t'; + } + } + pS[i] = c; + } } // Offset: 740 @@ -94,31 +163,29 @@ br_scalar SRandomPosNeg(br_scalar pN) { // Size: 506 // EAX: pF // EDX: pS -char* GetALineWithNoPossibleService(FILE *pF, /*unsigned*/ char *pS) { +char* GetALineWithNoPossibleService(FILE* pF, /*unsigned*/ char* pS) { // JeffH removed "signed' to avoid compiler warnings.. - /*signed*/ char *result; + /*signed*/ char* result; /*signed*/ char s[256]; int ch; int len; int i; - do - { + do { result = fgets(s, 256, pF); - if ( !result ) { + if (!result) { break; } - if ( s[0] == '@' ) - { + + if (s[0] == '@') { EncodeLine(&s[1]); goto LABEL_5; } - while ( 1 ) - { - if ( s[0] != ' ' && s[0] != '\t' ){ + while (1) { + if (s[0] != ' ' && s[0] != '\t') { break; } -LABEL_5: + LABEL_5: len = strlen(s); memmove(s, &s[1], len); } @@ -129,10 +196,10 @@ LABEL_5: break; } } - if ( ch != -1 ) + if (ch != -1) { ungetc(ch, pF); - } - while (!isalnum(s[0]) + } + } while (!isalnum(s[0]) && s[0] != '-' && s[0] != '.' && s[0] != '!' @@ -140,14 +207,14 @@ LABEL_5: && s[0] != '(' && s[0] != '\'' && s[0] != '\"' - && s[0] >= 0 ); + && s[0] >= 0); if (result) { len = strlen(result); - if ( len != 0 && (result[len - 1] == '\r' || result[len - 1] == '\n' )) { + if (len != 0 && (result[len - 1] == '\r' || result[len - 1] == '\n')) { result[len - 1] = 0; } - if ( len != 1 && (result[len - 2] == '\r' || result[len - 2] == '\n' )) { + if (len != 1 && (result[len - 2] == '\r' || result[len - 2] == '\n')) { result[len - 2] = 0; } } @@ -165,7 +232,7 @@ LABEL_5: // Size: 60 // EAX: pF // EDX: pS -char* GetALineAndDontArgue(FILE *pF, char *pS) { +char* GetALineAndDontArgue(FILE* pF, char* pS) { PossibleService(pF, pS); return GetALineWithNoPossibleService(pF, pS); } @@ -175,8 +242,10 @@ char* GetALineAndDontArgue(FILE *pF, char *pS) { // EAX: pDestn_str // EDX: pStr_1 // EBX: pStr_2 -void PathCat(char *pDestn_str, char *pStr_1, char *pStr_2) { - strcpy(pDestn_str, pStr_1); +void PathCat(char* pDestn_str, char* pStr_1, char* pStr_2) { + if (pDestn_str != pStr_1) { // Added to avoid strcpy overlap checks + strcpy(pDestn_str, pStr_1); + } if (strlen(pStr_2) != 0) { strcat(pDestn_str, gDir_separator); strcat(pDestn_str, pStr_2); @@ -196,7 +265,7 @@ float tandeg(float pAngle) { // Offset: 2084 // Size: 80 // EAX: pF -tU32 GetFileLength(FILE *pF) { +tU32 GetFileLength(FILE* pF) { tU32 the_size; } @@ -212,8 +281,8 @@ int BooleanTo1Or0(int pB) { // EDX: pW // EBX: pH // ECX: pPixels -br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void *pPixels, int pFlags) { - br_pixelmap *the_map; +br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void* pPixels, int pFlags) { + br_pixelmap* the_map; } // Offset: 2348 @@ -222,8 +291,8 @@ br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, v // EDX: pX // EBX: pY // ECX: pW -br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH) { - br_pixelmap *the_map; +br_pixelmap* DRPixelmapAllocateSub(br_pixelmap* pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH) { + br_pixelmap* the_map; } // Offset: 2468 @@ -232,8 +301,8 @@ br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 p // EDX: pMatch_type // EBX: pWidth // ECX: pHeight -br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight) { - br_pixelmap *result; +br_pixelmap* DRPixelmapMatchSized(br_pixelmap* pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight) { + br_pixelmap* result; } // Offset: 2664 @@ -242,13 +311,13 @@ br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidt // EDX: pSrc // EBX: pSrc_width // ECX: pSrc_height -void CopyDoubled8BitTo16BitRectangle(br_pixelmap *pDst, br_pixelmap *pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap *pPalette) { +void CopyDoubled8BitTo16BitRectangle(br_pixelmap* pDst, br_pixelmap* pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start0; - tU16 *dst_start1; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start0; + tU16* dst_start1; + tU16* palette_entry; } // Offset: 3024 @@ -256,42 +325,42 @@ void CopyDoubled8BitTo16BitRectangle(br_pixelmap *pDst, br_pixelmap *pSrc, int p // EAX: pSrc // EDX: pWidth // EBX: pHeight -br_pixelmap* Scale8BitPixelmap(br_pixelmap *pSrc, int pWidth, int pHeight) { - br_pixelmap *result; +br_pixelmap* Scale8BitPixelmap(br_pixelmap* pSrc, int pWidth, int pHeight) { + br_pixelmap* result; int x; int y; - tU8 *src_pixels; - tU8 *dst_pixels; + tU8* src_pixels; + tU8* dst_pixels; } // Offset: 3288 // Size: 390 // EAX: pSrc // EDX: pN -br_pixelmap* Tile8BitPixelmap(br_pixelmap *pSrc, int pN) { - br_pixelmap *result; +br_pixelmap* Tile8BitPixelmap(br_pixelmap* pSrc, int pN) { + br_pixelmap* result; int new_width; int new_height; int x; int y2; int y; - tU8 *src_pixels; - tU8 *dst_pixels; + tU8* src_pixels; + tU8* dst_pixels; } // Offset: 3680 // Size: 83 // EAX: pName // EDX: pList -tException_list FindExceptionInList(char *pName, tException_list pList) { +tException_list FindExceptionInList(char* pName, tException_list pList) { } // Offset: 3764 // Size: 492 // EAX: pSrc -br_pixelmap* PurifiedPixelmap(br_pixelmap *pSrc) { - br_pixelmap *intermediate; - br_pixelmap *result; +br_pixelmap* PurifiedPixelmap(br_pixelmap* pSrc) { + br_pixelmap* intermediate; + br_pixelmap* result; int new_width; int new_height; tException_list e; @@ -300,8 +369,8 @@ br_pixelmap* PurifiedPixelmap(br_pixelmap *pSrc) { // Offset: 4256 // Size: 105 // EAX: pFile_name -br_pixelmap* DRPixelmapLoad(char *pFile_name) { - br_pixelmap *the_map; +br_pixelmap* DRPixelmapLoad(char* pFile_name) { + br_pixelmap* the_map; } // Offset: 4364 @@ -309,8 +378,8 @@ br_pixelmap* DRPixelmapLoad(char *pFile_name) { // EAX: pFile_name // EDX: pPixelmaps // EBX: pNum -br_uint_32 DRPixelmapLoadMany(char *pFile_name, br_pixelmap **pPixelmaps, br_uint_16 pNum) { - br_pixelmap *the_map; +br_uint_32 DRPixelmapLoadMany(char* pFile_name, br_pixelmap** pPixelmaps, br_uint_16 pNum) { + br_pixelmap* the_map; int number_loaded; int i; } @@ -327,20 +396,20 @@ void WaitFor(tU32 pDelay) { // EAX: pActor // EDX: callback // EBX: arg -br_uint_32 DRActorEnumRecurse(br_actor *pActor, br_actor_enum_cbfn *callback, void *arg) { +br_uint_32 DRActorEnumRecurse(br_actor* pActor, br_actor_enum_cbfn* callback, void* arg) { br_uint_32 result; } // Offset: 4744 // Size: 77 -br_uint_32 CompareActorID(br_actor *pActor, void *pArg) { +br_uint_32 CompareActorID(br_actor* pActor, void* pArg) { } // Offset: 4824 // Size: 60 // EAX: pSearch_root // EDX: pName -br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName) { +br_actor* DRActorFindRecurse(br_actor* pSearch_root, char* pName) { } // Offset: 4884 @@ -349,7 +418,7 @@ br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName) { // EDX: pMat // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void *pArg) { +br_uint_32 DRActorEnumRecurseWithMat(br_actor* pActor, br_material* pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void* pArg) { br_uint_32 result; } @@ -359,7 +428,7 @@ br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uin // EDX: pMatrix // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithTrans(br_actor *pActor, br_matrix34 *pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void *pArg) { +br_uint_32 DRActorEnumRecurseWithTrans(br_actor* pActor, br_matrix34* pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void* pArg) { br_uint_32 result; br_matrix34 combined_transform; } @@ -379,32 +448,32 @@ float fsign(float pNumber) { // Size: 210 // EAX: pPrefix // EDX: pExtension -FILE* OpenUniqueFileB(char *pPrefix, char *pExtension) { +FILE* OpenUniqueFileB(char* pPrefix, char* pExtension) { int index; - FILE *f; + FILE* f; tPath_name the_path; } // Offset: 5632 // Size: 572 // EAX: pF -void PrintScreenFile(FILE *pF) { +void PrintScreenFile(FILE* pF) { int i; int j; int bit_map_size; int offset; - tU8 *pixel_ptr; + tU8* pixel_ptr; } // Offset: 6204 // Size: 554 // EAX: pF -void PrintScreenFile16(FILE *pF) { +void PrintScreenFile16(FILE* pF) { int i; int j; int bit_map_size; int offset; - tU8 *pixel_ptr; + tU8* pixel_ptr; tU16 pixel; } @@ -435,7 +504,7 @@ void AddLostTime(tU32 pLost_time) { // EDX: pStr // EBX: pFudge_colon // ECX: pForce_colon -void TimerString(tU32 pTime, char *pStr, int pFudge_colon, int pForce_colon) { +void TimerString(tU32 pTime, char* pStr, int pFudge_colon, int pForce_colon) { int seconds; } @@ -449,7 +518,7 @@ char* GetMiscString(int pIndex) { // Size: 58 // EAX: pIndex // EDX: pStr -void GetCopyOfMiscString(int pIndex, char *pStr) { +void GetCopyOfMiscString(int pIndex, char* pStr) { } // Offset: 7372 @@ -457,7 +526,7 @@ void GetCopyOfMiscString(int pIndex, char *pStr) { // EAX: pPeriod // EDX: pLast_change // EBX: pCurrent_state -int Flash(tU32 pPeriod, tU32 *pLast_change, int *pCurrent_state) { +int Flash(tU32 pPeriod, tU32* pLast_change, int* pCurrent_state) { tU32 the_time; } @@ -465,27 +534,27 @@ int Flash(tU32 pPeriod, tU32 *pLast_change, int *pCurrent_state) { // Size: 225 // EAX: pDst // EDX: pSrc -void MaterialCopy(br_material *pDst, br_material *pSrc) { +void MaterialCopy(br_material* pDst, br_material* pSrc) { } // Offset: 7716 // Size: 139 // EAX: pColour_1 // EDX: pColour_2 -double RGBDifferenceSqr(tRGB_colour *pColour_1, tRGB_colour *pColour_2) { +double RGBDifferenceSqr(tRGB_colour* pColour_1, tRGB_colour* pColour_2) { } // Offset: 7856 // Size: 200 // EAX: pRGB_colour // EDX: pPalette -int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette) { +int FindBestMatch(tRGB_colour* pRGB_colour, br_pixelmap* pPalette) { int n; int near_c; double min_d; double d; tRGB_colour trial_RGB; - br_colour *dp; + br_colour* dp; } // Offset: 8056 @@ -494,7 +563,7 @@ int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette) { // EDX: pR // EBX: pG // ECX: pB -void BuildShadeTablePath(char *pThe_path, int pR, int pG, int pB) { +void BuildShadeTablePath(char* pThe_path, int pR, int pG, int pB) { char s[32]; } @@ -513,7 +582,7 @@ br_pixelmap* LoadGeneratedShadeTable(int pR, int pG, int pB) { // EDX: pR // EBX: pG // ECX: pB -void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB) { +void SaveGeneratedShadeTable(br_pixelmap* pThe_table, int pR, int pG, int pB) { char the_path[256]; } @@ -523,7 +592,7 @@ void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB) { // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter) { +br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter) { } // Offset: 8556 @@ -532,14 +601,14 @@ br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken) { - br_pixelmap *the_table; +br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken) { + br_pixelmap* the_table; tRGB_colour the_RGB; tRGB_colour new_RGB; tRGB_colour ref_col; - br_colour *cp; - char *tab_ptr; - char *shade_ptr; + br_colour* cp; + char* tab_ptr; + char* shade_ptr; double f_i; double f_total_minus_1; double ratio1; @@ -570,7 +639,7 @@ void PossibleService() { // EAX: pA // EDX: pB // EBX: pC -void DRMatrix34TApplyP(br_vector3 *pA, br_vector3 *pB, br_matrix34 *pC) { +void DRMatrix34TApplyP(br_vector3* pA, br_vector3* pB, br_matrix34* pC) { br_scalar t1; br_scalar t2; br_scalar t3; @@ -580,8 +649,8 @@ void DRMatrix34TApplyP(br_vector3 *pA, br_vector3 *pB, br_matrix34 *pC) { // Size: 132 // EAX: pPal // EDX: pEntry -tU16 PaletteEntry16Bit(br_pixelmap *pPal, int pEntry) { - tU32 *src_entry; +tU16 PaletteEntry16Bit(br_pixelmap* pPal, int pEntry) { + tU32* src_entry; int red; int green; int blue; @@ -590,8 +659,8 @@ tU16 PaletteEntry16Bit(br_pixelmap *pPal, int pEntry) { // Offset: 9736 // Size: 210 // EAX: pSrc -br_pixelmap* PaletteOf16Bits(br_pixelmap *pSrc) { - tU16 *dst_entry; +br_pixelmap* PaletteOf16Bits(br_pixelmap* pSrc) { + tU16* dst_entry; int value; } @@ -600,12 +669,12 @@ br_pixelmap* PaletteOf16Bits(br_pixelmap *pSrc) { // EAX: pDst // EDX: pSrc // EBX: pPalette -void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette) { +void Copy8BitTo16Bit(br_pixelmap* pDst, br_pixelmap* pSrc, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 10168 @@ -614,12 +683,12 @@ void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette) { +void Copy8BitTo16BitRectangle(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 10728 @@ -628,12 +697,12 @@ void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pi // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette) { +void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 11248 @@ -642,12 +711,12 @@ void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette) { +void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; } // Offset: 11528 @@ -656,12 +725,12 @@ void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pD // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap *pPalette) { +void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap* pPalette) { int x; int y; - tU8 *src_start; - tU16 *dst_start; - tU16 *palette_entry; + tU8* src_start; + tU16* dst_start; + tU16* palette_entry; tX1616 total_shear; tS16 sheared_x; tS16 clipped_src_x; @@ -674,14 +743,14 @@ void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDs // EDX: dx // EBX: dy // ECX: src -void DRPixelmapRectangleCopy(br_pixelmap *dst, br_int_16 dx, br_int_16 dy, br_pixelmap *src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h) { +void DRPixelmapRectangleCopy(br_pixelmap* dst, br_int_16 dx, br_int_16 dy, br_pixelmap* src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h) { } // Offset: 12308 // Size: 107 // EAX: dst // EDX: src -void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src) { +void DRPixelmapCopy(br_pixelmap* dst, br_pixelmap* src) { } // Offset: 12416 @@ -690,14 +759,14 @@ void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src) { // EDX: x // EBX: y // ECX: w -void DRPixelmapRectangleFill(br_pixelmap *dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour) { +void DRPixelmapRectangleFill(br_pixelmap* dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour) { } // Offset: 12500 // Size: 156 // EAX: pPoint // EDX: pNormal -int NormalSideOfPlane(br_vector3 *pPoint, br_vector3 *pNormal, br_scalar pD) { +int NormalSideOfPlane(br_vector3* pPoint, br_vector3* pNormal, br_scalar pD) { br_scalar numer; br_scalar denom; } @@ -705,8 +774,8 @@ int NormalSideOfPlane(br_vector3 *pPoint, br_vector3 *pNormal, br_scalar pD) { // Offset: 12656 // Size: 351 // EAX: pMaterial -br_material* DRMaterialClone(br_material *pMaterial) { - br_material *the_material; +br_material* DRMaterialClone(br_material* pMaterial) { + br_material* the_material; char s[256]; static int name_suffix; } @@ -714,8 +783,8 @@ br_material* DRMaterialClone(br_material *pMaterial) { // Offset: 13008 // Size: 93 // EAX: s -void StripCR(char *s) { - char *pos; +void StripCR(char* s) { + char* pos; pos = s; while (*pos != 0) { if (*pos == '\r' || *pos == '\n') { @@ -728,42 +797,39 @@ void StripCR(char *s) { // Offset: 13104 // Size: 132 -void SubsStringJob(char *pStr, ...) { - char *sub_str; +void SubsStringJob(char* pStr, ...) { + char* sub_str; char temp_str[256]; - char *sub_pt; + char* sub_pt; va_list ap; } // Offset: 13236 // Size: 454 // EAX: pS -void DecodeLine2(char *pS) { +void DecodeLine2(char* pS) { int len; int seed; int i; unsigned char c; - char *key; + char* key; len = strlen(pS); key = (char*)gLong_key; - while ( len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) - { + while (len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) { --len; pS[len] = 0; } seed = len % 16; - for ( i = 0; i < len; i++) - { + for (i = 0; i < len; i++) { c = pS[i]; if (i >= 2) { if (pS[i - 1] == '/' && pS[i - 2] == '/') { key = (char*)gOther_long_key; } } - if (gEncryption_method == 1) - { - if ( c == '\t' ) { + if (gEncryption_method == 1) { + if (c == '\t') { c = 0x80; } c -= 0x20; @@ -774,11 +840,10 @@ void DecodeLine2(char *pS) { seed += 7; seed = seed % 16; - if ( c == 0x80 ) { + if (c == 0x80) { c = '\t'; } - } - else { + } else { if (c == '\t') { c = 0x9f; } @@ -789,7 +854,7 @@ void DecodeLine2(char *pS) { seed += 7; seed = seed % 16; - if ( c == 0x9f ) { + if (c == 0x9f) { c = '\t'; } } @@ -800,37 +865,33 @@ void DecodeLine2(char *pS) { // Offset: 13692 // Size: 304 // EAX: pS -void EncodeLine2(char *pS) { +void EncodeLine2(char* pS) { int len; int seed; int i; int count; unsigned char c; - char *key; + char* key; len = strlen(pS); count = 0; key = (char*)gLong_key; - while ( len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) - { + while (len > 0 && (pS[len - 1] == 13 || pS[len - 1] == 10)) { --len; pS[len] = 0; } seed = len % 16; - for ( i = 0; i < len; ++pS ) - { - if ( count == 2 ) + for (i = 0; i < len; ++pS) { + if (count == 2) key = (char*)gOther_long_key; - if ( *pS == '/' ) - { + if (*pS == '/') { ++count; - } - else { + } else { count = 0; } - if ( *pS == '\t' ) { + if (*pS == '\t') { *pS = 0x80; } c = *pS - 0x20; @@ -841,7 +902,7 @@ void EncodeLine2(char *pS) { seed += 7; seed = seed % 16; - if ( c == 0x80 ) { + if (c == 0x80) { c = '\t'; } *pS = c; @@ -852,13 +913,13 @@ void EncodeLine2(char *pS) { // Offset: 13996 // Size: 553 // EAX: pThe_path -void EncodeFile(char *pThe_path) { - FILE *f; - FILE *d; +void EncodeFile(char* pThe_path) { + FILE* f; + FILE* d; char line[257]; char new_file[256]; - char *s; - char *result; + char* s; + char* result; int ch; int decode; int len; @@ -908,7 +969,7 @@ void EncodeFile(char *pThe_path) { } line[0] = '@'; - fputs(&line[decode*2], d); + fputs(&line[decode * 2], d); count = -1; ch = fgetc(f); while (ch == '\r' || ch == '\n') { @@ -936,7 +997,7 @@ void EncodeFile(char *pThe_path) { // Offset: 14552 // Size: 513 // EAX: pThe_path -void EncodeFileWrapper (char *pThe_path) { +void EncodeFileWrapper(char* pThe_path) { int len = strlen(pThe_path); if (strcmp(&pThe_path[len - 4], ".TXT") == 0) { @@ -985,14 +1046,14 @@ void EncodeFileWrapper (char *pThe_path) { // Offset: 15068 // Size: 72 // EAX: pThe_path -void EncodeAllFilesInDirectory(char *pThe_path) { +void EncodeAllFilesInDirectory(char* pThe_path) { char s[256]; } // Offset: 15140 // Size: 89 // EAX: pF -void SkipNLines(FILE *pF) { +void SkipNLines(FILE* pF) { int i; int count; char s[256]; @@ -1002,7 +1063,7 @@ void SkipNLines(FILE *pF) { // Size: 118 // EAX: p1 // EDX: p2 -int DRStricmp(char *p1, char *p2) { +int DRStricmp(char* p1, char* p2) { int val; } @@ -1010,10 +1071,10 @@ int DRStricmp(char *p1, char *p2) { // Size: 559 // EAX: pArray // EDX: pCount -void GlorifyMaterial(br_material **pArray, int pCount) { +void GlorifyMaterial(br_material** pArray, int pCount) { int i; int c; - br_pixelmap *big_tile; + br_pixelmap* big_tile; tException_list e; } @@ -1021,32 +1082,32 @@ void GlorifyMaterial(br_material **pArray, int pCount) { // Size: 178 // EAX: pArray // EDX: pN -void WhitenVertexRGB(br_model **pArray, int pN) { +void WhitenVertexRGB(br_model** pArray, int pN) { int m; int v; - br_vertex *vertex; + br_vertex* vertex; } // Offset: 16092 // Size: 239 // EAX: pPalette -void NobbleNonzeroBlacks(br_pixelmap *pPalette) { +void NobbleNonzeroBlacks(br_pixelmap* pPalette) { tU32 red; tU32 green; tU32 blue; tU32 value; - tU32 *palette_entry; + tU32* palette_entry; tU32 frobbed; } // Offset: 16332 // Size: 55 // EAX: pThe_path -int PDCheckDriveExists(char *pThe_path) { +int PDCheckDriveExists(char* pThe_path) { // Added: force unix dir separator for now >> - char *rep = pThe_path; - while((rep = strchr(rep, '\\')) != NULL) { + char* rep = pThe_path; + while ((rep = strchr(rep, '\\')) != NULL) { *rep++ = '/'; } // << @@ -1060,28 +1121,28 @@ int PDCheckDriveExists(char *pThe_path) { // Offset: 16388 // Size: 102 // EAX: pPrims -int OpacityInPrims(br_token_value *pPrims) { +int OpacityInPrims(br_token_value* pPrims) { } // Offset: 16492 // Size: 97 // EAX: pMaterial -int AlreadyBlended(br_material *pMaterial) { +int AlreadyBlended(br_material* pMaterial) { } // Offset: 16592 // Size: 148 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialTablishly(br_material *pMaterial, int pPercent) { - char *s; +void BlendifyMaterialTablishly(br_material* pMaterial, int pPercent) { + char* s; } // Offset: 16740 // Size: 110 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialPrimitively(br_material *pMaterial, int pPercent) { +void BlendifyMaterialPrimitively(br_material* pMaterial, int pPercent) { static br_token_value alpha25[3]; static br_token_value alpha50[3]; static br_token_value alpha75[3]; @@ -1091,6 +1152,5 @@ void BlendifyMaterialPrimitively(br_material *pMaterial, int pPercent) { // Size: 73 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterial(br_material *pMaterial, int pPercent) { +void BlendifyMaterial(br_material* pMaterial, int pPercent) { } - diff --git a/src/DETHRACE/common/utility.h b/src/DETHRACE/common/utility.h index d5efbef6..7c69fd5d 100644 --- a/src/DETHRACE/common/utility.h +++ b/src/DETHRACE/common/utility.h @@ -1,8 +1,11 @@ #ifndef _UTILITY_H_ #define _UTILITY_H_ -#include "dr_types.h" #include "br_types.h" +#include "dr_types.h" + +extern char* gMisc_strings[250]; +extern int gEncryption_method; // Offset: 0 // Size: 144 @@ -15,7 +18,7 @@ double sqr(double pN); // Offset: 196 // Size: 542 // EAX: pS -void EncodeLine(char *pS); +void EncodeLine(char* pS); // Offset: 740 // Size: 73 @@ -53,20 +56,20 @@ br_scalar SRandomPosNeg(br_scalar pN); // Size: 506 // EAX: pF // EDX: pS -char* GetALineWithNoPossibleService(FILE *pF, /*unsigned*/ char *pS); +char* GetALineWithNoPossibleService(FILE* pF, /*unsigned*/ char* pS); // Offset: 1744 // Size: 60 // EAX: pF // EDX: pS -char* GetALineAndDontArgue(FILE *pF, char *pS); +char* GetALineAndDontArgue(FILE* pF, char* pS); // Offset: 1804 // Size: 86 // EAX: pDestn_str // EDX: pStr_1 // EBX: pStr_2 -void PathCat(char *pDestn_str, char *pStr_1, char *pStr_2); +void PathCat(char* pDestn_str, char* pStr_1, char* pStr_2); // Offset: 1892 // Size: 96 @@ -79,7 +82,7 @@ float tandeg(float pAngle); // Offset: 2084 // Size: 80 // EAX: pF -tU32 GetFileLength(FILE *pF); +tU32 GetFileLength(FILE* pF); // Offset: 2164 // Size: 68 @@ -92,7 +95,7 @@ int BooleanTo1Or0(int pB); // EDX: pW // EBX: pH // ECX: pPixels -br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void *pPixels, int pFlags); +br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, void* pPixels, int pFlags); // Offset: 2348 // Size: 118 @@ -100,7 +103,7 @@ br_pixelmap* DRPixelmapAllocate(br_uint_8 pType, br_uint_16 pW, br_uint_16 pH, v // EDX: pX // EBX: pY // ECX: pW -br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH); +br_pixelmap* DRPixelmapAllocateSub(br_pixelmap* pPm, br_uint_16 pX, br_uint_16 pY, br_uint_16 pW, br_uint_16 pH); // Offset: 2468 // Size: 195 @@ -108,7 +111,7 @@ br_pixelmap* DRPixelmapAllocateSub(br_pixelmap *pPm, br_uint_16 pX, br_uint_16 p // EDX: pMatch_type // EBX: pWidth // ECX: pHeight -br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight); +br_pixelmap* DRPixelmapMatchSized(br_pixelmap* pSrc, tU8 pMatch_type, tS32 pWidth, tS32 pHeight); // Offset: 2664 // Size: 357 @@ -116,43 +119,43 @@ br_pixelmap* DRPixelmapMatchSized(br_pixelmap *pSrc, tU8 pMatch_type, tS32 pWidt // EDX: pSrc // EBX: pSrc_width // ECX: pSrc_height -void CopyDoubled8BitTo16BitRectangle(br_pixelmap *pDst, br_pixelmap *pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap *pPalette); +void CopyDoubled8BitTo16BitRectangle(br_pixelmap* pDst, br_pixelmap* pSrc, int pSrc_width, int pSrc_height, int pDst_x, int pDst_y, br_pixelmap* pPalette); // Offset: 3024 // Size: 262 // EAX: pSrc // EDX: pWidth // EBX: pHeight -br_pixelmap* Scale8BitPixelmap(br_pixelmap *pSrc, int pWidth, int pHeight); +br_pixelmap* Scale8BitPixelmap(br_pixelmap* pSrc, int pWidth, int pHeight); // Offset: 3288 // Size: 390 // EAX: pSrc // EDX: pN -br_pixelmap* Tile8BitPixelmap(br_pixelmap *pSrc, int pN); +br_pixelmap* Tile8BitPixelmap(br_pixelmap* pSrc, int pN); // Offset: 3680 // Size: 83 // EAX: pName // EDX: pList -tException_list FindExceptionInList(char *pName, tException_list pList); +tException_list FindExceptionInList(char* pName, tException_list pList); // Offset: 3764 // Size: 492 // EAX: pSrc -br_pixelmap* PurifiedPixelmap(br_pixelmap *pSrc); +br_pixelmap* PurifiedPixelmap(br_pixelmap* pSrc); // Offset: 4256 // Size: 105 // EAX: pFile_name -br_pixelmap* DRPixelmapLoad(char *pFile_name); +br_pixelmap* DRPixelmapLoad(char* pFile_name); // Offset: 4364 // Size: 174 // EAX: pFile_name // EDX: pPixelmaps // EBX: pNum -br_uint_32 DRPixelmapLoadMany(char *pFile_name, br_pixelmap **pPixelmaps, br_uint_16 pNum); +br_uint_32 DRPixelmapLoadMany(char* pFile_name, br_pixelmap** pPixelmaps, br_uint_16 pNum); // Offset: 4540 // Size: 67 @@ -164,17 +167,17 @@ void WaitFor(tU32 pDelay); // EAX: pActor // EDX: callback // EBX: arg -br_uint_32 DRActorEnumRecurse(br_actor *pActor, br_actor_enum_cbfn *callback, void *arg); +br_uint_32 DRActorEnumRecurse(br_actor* pActor, br_actor_enum_cbfn* callback, void* arg); // Offset: 4744 // Size: 77 -br_uint_32 CompareActorID(br_actor *pActor, void *pArg); +br_uint_32 CompareActorID(br_actor* pActor, void* pArg); // Offset: 4824 // Size: 60 // EAX: pSearch_root // EDX: pName -br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName); +br_actor* DRActorFindRecurse(br_actor* pSearch_root, char* pName); // Offset: 4884 // Size: 156 @@ -182,7 +185,7 @@ br_actor* DRActorFindRecurse(br_actor *pSearch_root, char *pName); // EDX: pMat // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void *pArg); +br_uint_32 DRActorEnumRecurseWithMat(br_actor* pActor, br_material* pMat, br_uint_32 (*pCall_back)(br_actor*, br_material*, void*), void* pArg); // Offset: 5040 // Size: 188 @@ -190,7 +193,7 @@ br_uint_32 DRActorEnumRecurseWithMat(br_actor *pActor, br_material *pMat, br_uin // EDX: pMatrix // EBX: pCall_back // ECX: pArg -br_uint_32 DRActorEnumRecurseWithTrans(br_actor *pActor, br_matrix34 *pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void *pArg); +br_uint_32 DRActorEnumRecurseWithTrans(br_actor* pActor, br_matrix34* pMatrix, br_uint_32 (*pCall_back)(br_actor*, br_matrix34*, void*), void* pArg); // Offset: 5228 // Size: 89 @@ -205,17 +208,17 @@ float fsign(float pNumber); // Size: 210 // EAX: pPrefix // EDX: pExtension -FILE* OpenUniqueFileB(char *pPrefix, char *pExtension); +FILE* OpenUniqueFileB(char* pPrefix, char* pExtension); // Offset: 5632 // Size: 572 // EAX: pF -void PrintScreenFile(FILE *pF); +void PrintScreenFile(FILE* pF); // Offset: 6204 // Size: 554 // EAX: pF -void PrintScreenFile16(FILE *pF); +void PrintScreenFile16(FILE* pF); // Offset: 6760 // Size: 95 @@ -240,7 +243,7 @@ void AddLostTime(tU32 pLost_time); // EDX: pStr // EBX: pFudge_colon // ECX: pForce_colon -void TimerString(tU32 pTime, char *pStr, int pFudge_colon, int pForce_colon); +void TimerString(tU32 pTime, char* pStr, int pFudge_colon, int pForce_colon); // Offset: 7256 // Size: 55 @@ -251,32 +254,32 @@ char* GetMiscString(int pIndex); // Size: 58 // EAX: pIndex // EDX: pStr -void GetCopyOfMiscString(int pIndex, char *pStr); +void GetCopyOfMiscString(int pIndex, char* pStr); // Offset: 7372 // Size: 113 // EAX: pPeriod // EDX: pLast_change // EBX: pCurrent_state -int Flash(tU32 pPeriod, tU32 *pLast_change, int *pCurrent_state); +int Flash(tU32 pPeriod, tU32* pLast_change, int* pCurrent_state); // Offset: 7488 // Size: 225 // EAX: pDst // EDX: pSrc -void MaterialCopy(br_material *pDst, br_material *pSrc); +void MaterialCopy(br_material* pDst, br_material* pSrc); // Offset: 7716 // Size: 139 // EAX: pColour_1 // EDX: pColour_2 -double RGBDifferenceSqr(tRGB_colour *pColour_1, tRGB_colour *pColour_2); +double RGBDifferenceSqr(tRGB_colour* pColour_1, tRGB_colour* pColour_2); // Offset: 7856 // Size: 200 // EAX: pRGB_colour // EDX: pPalette -int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette); +int FindBestMatch(tRGB_colour* pRGB_colour, br_pixelmap* pPalette); // Offset: 8056 // Size: 232 @@ -284,7 +287,7 @@ int FindBestMatch(tRGB_colour *pRGB_colour, br_pixelmap *pPalette); // EDX: pR // EBX: pG // ECX: pB -void BuildShadeTablePath(char *pThe_path, int pR, int pG, int pB); +void BuildShadeTablePath(char* pThe_path, int pR, int pG, int pB); // Offset: 8288 // Size: 80 @@ -299,7 +302,7 @@ br_pixelmap* LoadGeneratedShadeTable(int pR, int pG, int pB); // EDX: pR // EBX: pG // ECX: pB -void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB); +void SaveGeneratedShadeTable(br_pixelmap* pThe_table, int pR, int pG, int pB); // Offset: 8448 // Size: 106 @@ -307,7 +310,7 @@ void SaveGeneratedShadeTable(br_pixelmap *pThe_table, int pR, int pG, int pB); // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter); +br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter); // Offset: 8556 // Size: 761 @@ -315,7 +318,7 @@ br_pixelmap* GenerateShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix // EDX: pPalette // EBX: pRed_mix // ECX: pGreen_mix -br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap *pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken); +br_pixelmap* GenerateDarkenedShadeTable(int pHeight, br_pixelmap* pPalette, int pRed_mix, int pGreen_mix, int pBlue_mix, float pQuarter, float pHalf, float pThree_quarter, br_scalar pDarken); // Offset: 9320 // Size: 92 @@ -326,25 +329,25 @@ void PossibleService(); // EAX: pA // EDX: pB // EBX: pC -void DRMatrix34TApplyP(br_vector3 *pA, br_vector3 *pB, br_matrix34 *pC); +void DRMatrix34TApplyP(br_vector3* pA, br_vector3* pB, br_matrix34* pC); // Offset: 9604 // Size: 132 // EAX: pPal // EDX: pEntry -tU16 PaletteEntry16Bit(br_pixelmap *pPal, int pEntry); +tU16 PaletteEntry16Bit(br_pixelmap* pPal, int pEntry); // Offset: 9736 // Size: 210 // EAX: pSrc -br_pixelmap* PaletteOf16Bits(br_pixelmap *pSrc); +br_pixelmap* PaletteOf16Bits(br_pixelmap* pSrc); // Offset: 9948 // Size: 219 // EAX: pDst // EDX: pSrc // EBX: pPalette -void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette); +void Copy8BitTo16Bit(br_pixelmap* pDst, br_pixelmap* pSrc, br_pixelmap* pPalette); // Offset: 10168 // Size: 558 @@ -352,7 +355,7 @@ void Copy8BitTo16Bit(br_pixelmap *pDst, br_pixelmap *pSrc, br_pixelmap *pPalette // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette); +void Copy8BitTo16BitRectangle(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette); // Offset: 10728 // Size: 518 @@ -360,7 +363,7 @@ void Copy8BitTo16BitRectangle(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pi // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette); +void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette); // Offset: 11248 // Size: 279 @@ -368,7 +371,7 @@ void Copy8BitTo16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap *pPalette); +void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, br_pixelmap* pPalette); // Offset: 11528 // Size: 601 @@ -376,7 +379,7 @@ void Copy8BitToOnscreen16BitRectangleWithTransparency(br_pixelmap *pDst, tS16 pD // EDX: pDst_x // EBX: pDst_y // ECX: pSrc -void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap *pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap *pPalette); +void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap* pDst, tS16 pDst_x, tS16 pDst_y, br_pixelmap* pSrc, tS16 pSrc_x, tS16 pSrc_y, tS16 pWidth, tS16 pHeight, tX1616 pShear, br_pixelmap* pPalette); // Offset: 12132 // Size: 173 @@ -384,13 +387,13 @@ void Copy8BitRectangleTo16BitRhombusWithTransparency(br_pixelmap *pDst, tS16 pDs // EDX: dx // EBX: dy // ECX: src -void DRPixelmapRectangleCopy(br_pixelmap *dst, br_int_16 dx, br_int_16 dy, br_pixelmap *src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h); +void DRPixelmapRectangleCopy(br_pixelmap* dst, br_int_16 dx, br_int_16 dy, br_pixelmap* src, br_int_16 sx, br_int_16 sy, br_uint_16 w, br_uint_16 h); // Offset: 12308 // Size: 107 // EAX: dst // EDX: src -void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src); +void DRPixelmapCopy(br_pixelmap* dst, br_pixelmap* src); // Offset: 12416 // Size: 82 @@ -398,112 +401,112 @@ void DRPixelmapCopy(br_pixelmap *dst, br_pixelmap *src); // EDX: x // EBX: y // ECX: w -void DRPixelmapRectangleFill(br_pixelmap *dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour); +void DRPixelmapRectangleFill(br_pixelmap* dst, br_int_16 x, br_int_16 y, br_uint_16 w, br_uint_16 h, br_uint_32 colour); // Offset: 12500 // Size: 156 // EAX: pPoint // EDX: pNormal -int NormalSideOfPlane(br_vector3 *pPoint, br_vector3 *pNormal, br_scalar pD); +int NormalSideOfPlane(br_vector3* pPoint, br_vector3* pNormal, br_scalar pD); // Offset: 12656 // Size: 351 // EAX: pMaterial -br_material* DRMaterialClone(br_material *pMaterial); +br_material* DRMaterialClone(br_material* pMaterial); // Offset: 13008 // Size: 93 // EAX: s -void StripCR(char *s); +void StripCR(char* s); // Offset: 13104 // Size: 132 -void SubsStringJob(char *pStr, ...); +void SubsStringJob(char* pStr, ...); // Offset: 13236 // Size: 454 // EAX: pS -void DecodeLine2(char *pS); +void DecodeLine2(char* pS); // Offset: 13692 // Size: 304 // EAX: pS -void EncodeLine2(char *pS); +void EncodeLine2(char* pS); // Offset: 13996 // Size: 553 // EAX: pThe_path -void EncodeFile(char *pThe_path); +void EncodeFile(char* pThe_path); // Offset: 14552 // Size: 513 // EAX: pThe_path -void EncodeFileWrapper(char *pThe_path); +void EncodeFileWrapper(char* pThe_path); // Offset: 15068 // Size: 72 // EAX: pThe_path -void EncodeAllFilesInDirectory(char *pThe_path); +void EncodeAllFilesInDirectory(char* pThe_path); // Offset: 15140 // Size: 89 // EAX: pF -void SkipNLines(FILE *pF); +void SkipNLines(FILE* pF); // Offset: 15232 // Size: 118 // EAX: p1 // EDX: p2 -int DRStricmp(char *p1, char *p2); +int DRStricmp(char* p1, char* p2); // Offset: 15352 // Size: 559 // EAX: pArray // EDX: pCount -void GlorifyMaterial(br_material **pArray, int pCount); +void GlorifyMaterial(br_material** pArray, int pCount); // Offset: 15912 // Size: 178 // EAX: pArray // EDX: pN -void WhitenVertexRGB(br_model **pArray, int pN); +void WhitenVertexRGB(br_model** pArray, int pN); // Offset: 16092 // Size: 239 // EAX: pPalette -void NobbleNonzeroBlacks(br_pixelmap *pPalette); +void NobbleNonzeroBlacks(br_pixelmap* pPalette); // Offset: 16332 // Size: 55 // EAX: pThe_path -int PDCheckDriveExists(char *pThe_path); +int PDCheckDriveExists(char* pThe_path); // Offset: 16388 // Size: 102 // EAX: pPrims -int OpacityInPrims(br_token_value *pPrims); +int OpacityInPrims(br_token_value* pPrims); // Offset: 16492 // Size: 97 // EAX: pMaterial -int AlreadyBlended(br_material *pMaterial); +int AlreadyBlended(br_material* pMaterial); // Offset: 16592 // Size: 148 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialTablishly(br_material *pMaterial, int pPercent); +void BlendifyMaterialTablishly(br_material* pMaterial, int pPercent); // Offset: 16740 // Size: 110 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterialPrimitively(br_material *pMaterial, int pPercent); +void BlendifyMaterialPrimitively(br_material* pMaterial, int pPercent); // Offset: 16852 // Size: 73 // EAX: pMaterial // EDX: pPercent -void BlendifyMaterial(br_material *pMaterial, int pPercent); +void BlendifyMaterial(br_material* pMaterial, int pPercent); #endif diff --git a/src/DETHRACE/common/world.c b/src/DETHRACE/common/world.c index ab96dd27..d2cc0a55 100644 --- a/src/DETHRACE/common/world.c +++ b/src/DETHRACE/common/world.c @@ -1,20 +1,25 @@ #include "world.h" -br_actor *gActor_array[500]; -float *gGroove_funk_bindings[960]; -br_actor *gDelete_list[500]; -br_actor *gLight_array[50]; -br_model *gAdditional_models[1000]; -br_actor *gSpec_vol_actors[100]; -char *gDepth_effect_names[2]; -char *gFunk_nature_names[4]; -char *gGroove_object_names[4]; -char *gGroove_path_names[2]; -char *gGroove_nature_names[2]; -char *gFunk_anim_names[2]; -char *gFunk_move_names[6]; +#include "brender.h" +#include "loading.h" + +#include + +br_actor* gActor_array[500]; +float* gGroove_funk_bindings[960]; +br_actor* gDelete_list[500]; +br_actor* gLight_array[50]; +br_model* gAdditional_models[1000]; +br_actor* gSpec_vol_actors[100]; +char* gDepth_effect_names[2]; +char* gFunk_nature_names[4]; +char* gGroove_object_names[4]; +char* gGroove_path_names[2]; +char* gGroove_nature_names[2]; +char* gFunk_anim_names[2]; +char* gFunk_move_names[6]; tPath_name gAdditional_actor_path; -char *gTime_mode_names[2]; +char* gTime_mode_names[2]; tPath_name gAdditional_model_path; tU32 gPrevious_groove_times[2]; int gRace_file_version; @@ -23,28 +28,28 @@ tWall_texturing_level gWall_texturing_level; int gNumber_of_additional_models; int gNumber_of_actors; float gTemp; -br_actor *gLast_actor; -br_actor *gKnown_actor; -br_actor *gAdditional_actors; -br_actor *gGroove_by_proxy_actor; +br_actor* gLast_actor; +br_actor* gKnown_actor; +br_actor* gAdditional_actors; +br_actor* gGroove_by_proxy_actor; int gRendering_accessories; tScale_mode gCurrent_scale_mode; int gNumber_of_lights; tRoad_texturing_level gRoad_texturing_level; int gDelete_count; br_scalar gNearest_distance; -br_actor *gNearest_actor; -br_actor *gStandard_lamp; +br_actor* gNearest_actor; +br_actor* gStandard_lamp; tRotate_mode gCurrent_rotate_mode; tCar_texturing_level gCar_texturing_level; br_scalar gSight_distance_squared; -char *gLollipop_names[3]; -char *gAxis_names[3]; +char* gLollipop_names[3]; +char* gAxis_names[3]; int gGroovidelics_array_size; -tGroovidelic_spec *gGroovidelics_array; +tGroovidelic_spec* gGroovidelics_array; int gSpec_vol_mode; -char *gFunk_type_names[5]; -tFunkotronic_spec *gFunkotronics_array; +char* gFunk_type_names[5]; +tFunkotronic_spec* gFunkotronics_array; int gFunkotronics_array_size; // Offset: 0 @@ -60,24 +65,24 @@ void SetSightDistance(br_scalar pYon) { // Offset: 152 // Size: 121 // EAX: pThe_name -br_actor* FindActorInArray(char *pThe_name) { +br_actor* FindActorInArray(char* pThe_name) { int i; } // Offset: 276 // Size: 121 // EAX: pThe_name -br_actor* FindLightInArray(char *pThe_name) { +br_actor* FindLightInArray(char* pThe_name) { int i; } // Offset: 400 // Size: 223 // EAX: pSource_actor -br_actor* CloneActor(br_actor *pSource_actor) { - br_actor *new_actor; - br_actor *child_actor; - br_actor *new_child_actor; +br_actor* CloneActor(br_actor* pSource_actor) { + br_actor* new_actor; + br_actor* child_actor; + br_actor* new_child_actor; } // Offset: 624 @@ -86,19 +91,19 @@ br_actor* CloneActor(br_actor *pSource_actor) { // EDX: pMax_pixelmaps // EBX: pMax_shade_tables // ECX: pMax_materials -void InitialiseStorageSpace(tBrender_storage *pStorage_space, int pMax_pixelmaps, int pMax_shade_tables, int pMax_materials, int pMax_models) { +void InitialiseStorageSpace(tBrender_storage* pStorage_space, int pMax_pixelmaps, int pMax_shade_tables, int pMax_materials, int pMax_models) { } // Offset: 872 // Size: 107 // EAX: pStorage_space -void DisposeStorageSpace(tBrender_storage *pStorage_space) { +void DisposeStorageSpace(tBrender_storage* pStorage_space) { } // Offset: 980 // Size: 463 // EAX: pStorage_space -void ClearOutStorageSpace(tBrender_storage *pStorage_space) { +void ClearOutStorageSpace(tBrender_storage* pStorage_space) { int i; } @@ -106,7 +111,7 @@ void ClearOutStorageSpace(tBrender_storage *pStorage_space) { // Size: 232 // EAX: pStorage_space // EDX: pThe_pm -tAdd_to_storage_result AddPixelmapToStorage(tBrender_storage *pStorage_space, br_pixelmap **pThe_pm) { +tAdd_to_storage_result AddPixelmapToStorage(tBrender_storage* pStorage_space, br_pixelmap** pThe_pm) { int i; } @@ -114,7 +119,7 @@ tAdd_to_storage_result AddPixelmapToStorage(tBrender_storage *pStorage_space, br // Size: 211 // EAX: pStorage_space // EDX: pThe_st -tAdd_to_storage_result AddShadeTableToStorage(tBrender_storage *pStorage_space, br_pixelmap *pThe_st) { +tAdd_to_storage_result AddShadeTableToStorage(tBrender_storage* pStorage_space, br_pixelmap* pThe_st) { int i; } @@ -122,7 +127,7 @@ tAdd_to_storage_result AddShadeTableToStorage(tBrender_storage *pStorage_space, // Size: 234 // EAX: pStorage_space // EDX: pThe_mat -tAdd_to_storage_result AddMaterialToStorage(tBrender_storage *pStorage_space, br_material *pThe_mat) { +tAdd_to_storage_result AddMaterialToStorage(tBrender_storage* pStorage_space, br_material* pThe_mat) { int i; } @@ -130,7 +135,7 @@ tAdd_to_storage_result AddMaterialToStorage(tBrender_storage *pStorage_space, br // Size: 231 // EAX: pStorage_space // EDX: pThe_mod -tAdd_to_storage_result AddModelToStorage(tBrender_storage *pStorage_space, br_model *pThe_mod) { +tAdd_to_storage_result AddModelToStorage(tBrender_storage* pStorage_space, br_model* pThe_mod) { int i; } @@ -139,31 +144,31 @@ tAdd_to_storage_result AddModelToStorage(tBrender_storage *pStorage_space, br_mo // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNPixelmaps(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNPixelmaps(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_pixelmap *temp_array[200]; + char* str; + br_pixelmap* temp_array[200]; } // Offset: 2864 // Size: 195 // EAX: pStorage_space // EDX: pName -br_pixelmap* LoadSinglePixelmap(tBrender_storage *pStorage_space, char *pName) { - br_pixelmap *temp; +br_pixelmap* LoadSinglePixelmap(tBrender_storage* pStorage_space, char* pName) { + br_pixelmap* temp; } // Offset: 3060 // Size: 195 // EAX: pStorage_space // EDX: pName -br_material* LoadSingleMaterial(tBrender_storage *pStorage_space, char *pName) { - br_material *temp; +br_material* LoadSingleMaterial(tBrender_storage* pStorage_space, char* pName) { + br_material* temp; } // Offset: 3256 @@ -171,23 +176,23 @@ br_material* LoadSingleMaterial(tBrender_storage *pStorage_space, char *pName) { // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNShadeTables(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNShadeTables(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_pixelmap *temp_array[50]; + char* str; + br_pixelmap* temp_array[50]; } // Offset: 3652 // Size: 195 // EAX: pStorage_space // EDX: pName -br_pixelmap* LoadSingleShadeTable(tBrender_storage *pStorage_space, char *pName) { - br_pixelmap *temp; +br_pixelmap* LoadSingleShadeTable(tBrender_storage* pStorage_space, char* pName) { + br_pixelmap* temp; } // Offset: 3848 @@ -195,15 +200,15 @@ br_pixelmap* LoadSingleShadeTable(tBrender_storage *pStorage_space, char *pName) // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNMaterials(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNMaterials(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_material *temp_array[200]; + char* str; + br_material* temp_array[200]; } // Offset: 4264 @@ -211,39 +216,39 @@ int LoadNMaterials(tBrender_storage *pStorage_space, FILE *pF, int pCount) { // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNModels(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNModels(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; int new_ones; int total; char s[256]; - char *str; - br_model *temp_array[2000]; - v11model *prepared; + char* str; + br_model* temp_array[2000]; + v11model* prepared; int group; } // Offset: 4716 // Size: 103 // EAX: pM -void DodgyModelUpdate(br_model *pM) { +void DodgyModelUpdate(br_model* pM) { } // Offset: 4820 // Size: 197 // EAX: pOld // EDX: pSuffix -br_material* SuffixedMaterial(br_material *pOld, char *pSuffix) { - br_material *new_mat; - char *new_id; +br_material* SuffixedMaterial(br_material* pOld, char* pSuffix) { + br_material* new_mat; + char* new_id; } // Offset: 5020 // Size: 656 // EAX: pModel // EDX: pFace -int FaceIsRoad(br_model *pModel, tU16 pFace) { +int FaceIsRoad(br_model* pModel, tU16 pFace) { br_vector3 v0; br_vector3 v1; br_vector3 cross; @@ -253,47 +258,47 @@ int FaceIsRoad(br_model *pModel, tU16 pFace) { // Size: 161 // EAX: pModel // EDX: pFace -br_material* RoadPerspToUntex(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* RoadPerspToUntex(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 5840 // Size: 169 // EAX: pModel // EDX: pFace -br_material* WallPerspToLinear(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallPerspToLinear(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 6012 // Size: 188 // EAX: pModel // EDX: pFace -br_material* WallPerspToUntex(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallPerspToUntex(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 6200 // Size: 260 // EAX: pModel // EDX: pCallback -void ProcessModelFaceMaterials2(br_model *pModel, tPMFM2CB pCallback) { +void ProcessModelFaceMaterials2(br_model* pModel, tPMFM2CB pCallback) { tU16 f; tU16 group; - br_material *old_mat; + br_material* old_mat; } // Offset: 6460 // Size: 173 // EAX: pModel // EDX: pCallback -void ProcessModelFaceMaterials(br_model *pModel, tPMFMCB pCallback) { +void ProcessModelFaceMaterials(br_model* pModel, tPMFMCB pCallback) { tU16 f; - br_material *possible_mat; - br_material *new_mat; + br_material* possible_mat; + br_material* new_mat; } // Offset: 6636 @@ -301,7 +306,7 @@ void ProcessModelFaceMaterials(br_model *pModel, tPMFMCB pCallback) { // EAX: pStorage_space // EDX: pF // EBX: pCount -int LoadNTrackModels(tBrender_storage *pStorage_space, FILE *pF, int pCount) { +int LoadNTrackModels(tBrender_storage* pStorage_space, FILE* pF, int pCount) { tPath_name the_path; int i; int j; @@ -309,91 +314,91 @@ int LoadNTrackModels(tBrender_storage *pStorage_space, FILE *pF, int pCount) { int total; int group; char s[256]; - char *str; - br_model *temp_array[2000]; - v11model *prepared; + char* str; + br_model* temp_array[2000]; + v11model* prepared; } // Offset: 7192 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomePixelmaps(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomePixelmaps(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_pixelmap *temp_array[200]; + char* str; + br_pixelmap* temp_array[200]; } // Offset: 7300 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeShadeTables(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeShadeTables(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_pixelmap *temp_array[50]; + char* str; + br_pixelmap* temp_array[50]; } // Offset: 7408 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeMaterials(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeMaterials(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_material *temp_array[200]; + char* str; + br_material* temp_array[200]; } // Offset: 7516 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeModels(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeModels(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_model *temp_array[2000]; + char* str; + br_model* temp_array[2000]; } // Offset: 7624 // Size: 107 // EAX: pStorage_space // EDX: pF -void LoadSomeTrackModels(tBrender_storage *pStorage_space, FILE *pF) { +void LoadSomeTrackModels(tBrender_storage* pStorage_space, FILE* pF) { tPath_name the_path; int i; int j; int count; int new_ones; char s[256]; - char *str; - br_model *temp_array[2000]; + char* str; + br_model* temp_array[2000]; } // Offset: 7732 // Size: 87 // EAX: pSlot_number // EDX: pPeriod_address -void AddFunkGrooveBinding(int pSlot_number, float *pPeriod_address) { +void AddFunkGrooveBinding(int pSlot_number, float* pPeriod_address) { } // Offset: 7820 @@ -413,7 +418,7 @@ float ControlBoundFunkGroovePlus(int pSlot_number, float pValue) { // EAX: pStart // EDX: pEnd // EBX: pDelta -void ShiftBoundGrooveFunks(char *pStart, char *pEnd, int pDelta) { +void ShiftBoundGrooveFunks(char* pStart, char* pEnd, int pDelta) { int i; } @@ -428,19 +433,19 @@ tFunkotronic_spec* AddNewFunkotronic() { // EAX: pOwner void DisposeFunkotronics(int pOwner) { int i; - tFunkotronic_spec *the_funk; + tFunkotronic_spec* the_funk; } // Offset: 8788 // Size: 76 // EAX: pV // EDX: pThe_funk -void AddProximityVertex(br_vector3 *pV, tFunkotronic_spec *pThe_funk) { +void AddProximityVertex(br_vector3* pV, tFunkotronic_spec* pThe_funk) { } // Offset: 8864 // Size: 65 -void AddProximityVertexXYZ(br_scalar pX, br_scalar pY, br_scalar pZ, tFunkotronic_spec *pThe_funk) { +void AddProximityVertexXYZ(br_scalar pX, br_scalar pY, br_scalar pZ, tFunkotronic_spec* pThe_funk) { br_vector3 v; } @@ -449,8 +454,8 @@ void AddProximityVertexXYZ(br_scalar pX, br_scalar pY, br_scalar pZ, tFunkotroni // EAX: pActor // EDX: pMat // EBX: pThe_funk -br_uint_32 CalcProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spec *pThe_funk) { - br_face *the_face; +br_uint_32 CalcProximities(br_actor* pActor, br_material* pMat, tFunkotronic_spec* pThe_funk) { + br_face* the_face; int i; } @@ -459,8 +464,8 @@ br_uint_32 CalcProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spe // EAX: pActor // EDX: pMat // EBX: pThe_funk -br_uint_32 AddProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spec *pThe_funk) { - br_face *the_face; +br_uint_32 AddProximities(br_actor* pActor, br_material* pMat, tFunkotronic_spec* pThe_funk) { + br_face* the_face; int i; } @@ -469,7 +474,7 @@ br_uint_32 AddProximities(br_actor *pActor, br_material *pMat, tFunkotronic_spec // EAX: pVictim1 // EDX: pVictim2 // EBX: pCulprit -void Adjust2FloatsForExceptions(float *pVictim1, float *pVictim2, br_pixelmap *pCulprit) { +void Adjust2FloatsForExceptions(float* pVictim1, float* pVictim2, br_pixelmap* pCulprit) { tException_list e; } @@ -478,13 +483,13 @@ void Adjust2FloatsForExceptions(float *pVictim1, float *pVictim2, br_pixelmap *p // EAX: pF // EDX: pOwner // EBX: pRef_offset -void AddFunkotronics(FILE *pF, int pOwner, int pRef_offset) { +void AddFunkotronics(FILE* pF, int pOwner, int pRef_offset) { char s[256]; - char *str; + char* str; int first_time; int i; int j; - tFunkotronic_spec *the_funk; + tFunkotronic_spec* the_funk; float speed1; float speed2; float a_min; @@ -493,8 +498,8 @@ void AddFunkotronics(FILE *pF, int pOwner, int pRef_offset) { float a_max; float d_max; float s_max; - void *the_pixels; - br_pixelmap *the_pixelmap; + void* the_pixels; + br_pixelmap* the_pixelmap; } // Offset: 13060 @@ -502,7 +507,7 @@ void AddFunkotronics(FILE *pF, int pOwner, int pRef_offset) { // EAX: pOwner void DisposeGroovidelics(int pOwner) { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 13180 @@ -517,13 +522,13 @@ tGroovidelic_spec* AddNewGroovidelic() { // EDX: pOwner // EBX: pParent_actor // ECX: pRef_offset -void AddGroovidelics(FILE *pF, int pOwner, br_actor *pParent_actor, int pRef_offset, int pAllowed_to_be_absent) { +void AddGroovidelics(FILE* pF, int pOwner, br_actor* pParent_actor, int pRef_offset, int pAllowed_to_be_absent) { char s[256]; - char *str; + char* str; int first_time; int i; int j; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 16148 @@ -531,7 +536,7 @@ void AddGroovidelics(FILE *pF, int pOwner, br_actor *pParent_actor, int pRef_off // EAX: pOwner void KillGroovadelic(int pOwner) { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 16312 @@ -539,7 +544,7 @@ void KillGroovadelic(int pOwner) { // EAX: pOwner void KillFunkotronic(int pOwner) { int i; - tFunkotronic_spec *the_funk; + tFunkotronic_spec* the_funk; } // Offset: 16500 @@ -547,7 +552,7 @@ void KillFunkotronic(int pOwner) { // EAX: pActor // EDX: pMatrix // EBX: pArg -br_uint_32 DeleteBastards(br_actor *pActor, br_matrix34 *pMatrix, void *pArg) { +br_uint_32 DeleteBastards(br_actor* pActor, br_matrix34* pMatrix, void* pArg) { int i; int parent_already_doomed; } @@ -562,7 +567,7 @@ void DeleteAnyZeroBastards() { // EAX: pActor // EDX: pMatrix // EBX: pArg -br_uint_32 ApplyTransToModels(br_actor *pActor, br_matrix34 *pMatrix, void *pArg) { +br_uint_32 ApplyTransToModels(br_actor* pActor, br_matrix34* pMatrix, void* pArg) { int i; br_vector3 temp_point; } @@ -570,9 +575,9 @@ br_uint_32 ApplyTransToModels(br_actor *pActor, br_matrix34 *pMatrix, void *pArg // Offset: 17068 // Size: 120 // EAX: pActor -int FindSpecVolIndex(br_actor *pActor) { +int FindSpecVolIndex(br_actor* pActor) { int i; - tSpecial_volume *v; + tSpecial_volume* v; } // Offset: 17188 @@ -581,20 +586,20 @@ int FindSpecVolIndex(br_actor *pActor) { // EDX: pMat_1 // EBX: pMat_2 // ECX: pAxis_0 -void MungeMaterial(br_matrix34 *pMat, br_material *pMat_1, br_material *pMat_2, int pAxis_0, int pAxis_1) { +void MungeMaterial(br_matrix34* pMat, br_material* pMat_1, br_material* pMat_2, int pAxis_0, int pAxis_1) { } // Offset: 17432 // Size: 166 // EAX: pActor -void SetSpecVolMatSize(br_actor *pActor) { - br_model *model; +void SetSpecVolMatSize(br_actor* pActor) { + br_model* model; } // Offset: 17600 // Size: 115 // EAX: pSpec -void FindInverseAndWorldBox(tSpecial_volume *pSpec) { +void FindInverseAndWorldBox(tSpecial_volume* pSpec) { br_bounds bnds; } @@ -602,15 +607,15 @@ void FindInverseAndWorldBox(tSpecial_volume *pSpec) { // Size: 109 void UpdateSpecVol() { int index; - tSpecial_volume *v; + tSpecial_volume* v; } // Offset: 17828 // Size: 834 void SaveSpecialVolumes() { - FILE *f; + FILE* f; int i; - tSpecial_volume *v; + tSpecial_volume* v; } // Offset: 18664 @@ -620,18 +625,18 @@ void SaveAdditionalStuff() { // Offset: 18804 // Size: 110 -br_uint_32 ProcessMaterials(br_actor *pActor, tPMFM2CB pCallback) { +br_uint_32 ProcessMaterials(br_actor* pActor, tPMFM2CB pCallback) { } // Offset: 18916 // Size: 123 -br_uint_32 ProcessFaceMaterials2(br_actor *pActor, tPMFM2CB pCallback) { +br_uint_32 ProcessFaceMaterials2(br_actor* pActor, tPMFM2CB pCallback) { } // Offset: 19040 // Size: 91 // EAX: pMaterial -void ChangePerspToSubdivCB(br_material *pMaterial) { +void ChangePerspToSubdivCB(br_material* pMaterial) { } // Offset: 19132 @@ -642,7 +647,7 @@ void ChangePerspToSubdiv() { // Offset: 19188 // Size: 78 // EAX: pMaterial -void ChangeSubdivToPerspCB(br_material *pMaterial) { +void ChangeSubdivToPerspCB(br_material* pMaterial) { } // Offset: 19268 @@ -652,52 +657,52 @@ void ChangeSubdivToPersp() { // Offset: 19324 // Size: 123 -br_uint_32 ProcessFaceMaterials(br_actor *pActor, tPMFMCB pCallback) { +br_uint_32 ProcessFaceMaterials(br_actor* pActor, tPMFMCB pCallback) { } // Offset: 19448 // Size: 236 // EAX: pm -int DRPixelmapHasZeros(br_pixelmap *pm) { +int DRPixelmapHasZeros(br_pixelmap* pm) { int x; int y; - char *row_ptr; - char *pp; + char* row_ptr; + char* pp; } // Offset: 19684 // Size: 125 // EAX: pStorage // EDX: pMap -int StorageContainsPixelmap(tBrender_storage *pStorage, br_pixelmap *pMap) { +int StorageContainsPixelmap(tBrender_storage* pStorage, br_pixelmap* pMap) { int i; } // Offset: 19812 // Size: 266 // EAX: pStorage -void HideStoredOpaqueTextures(tBrender_storage *pStorage) { +void HideStoredOpaqueTextures(tBrender_storage* pStorage) { int i; } // Offset: 20080 // Size: 224 // EAX: pStorage -void RevealStoredTransparentTextures(tBrender_storage *pStorage) { +void RevealStoredTransparentTextures(tBrender_storage* pStorage) { int i; } // Offset: 20304 // Size: 236 // EAX: pStorage -void HideStoredTextures(tBrender_storage *pStorage) { +void HideStoredTextures(tBrender_storage* pStorage) { int i; } // Offset: 20540 // Size: 197 // EAX: pStorage -void RevealStoredTextures(tBrender_storage *pStorage) { +void RevealStoredTextures(tBrender_storage* pStorage) { int i; } @@ -706,7 +711,7 @@ void RevealStoredTextures(tBrender_storage *pStorage) { // EAX: pStorage // EDX: pNew // EBX: pOld -void SetCarStorageTexturingLevel(tBrender_storage *pStorage, tCar_texturing_level pNew, tCar_texturing_level pOld) { +void SetCarStorageTexturingLevel(tBrender_storage* pStorage, tCar_texturing_level pNew, tCar_texturing_level pOld) { } // Offset: 20864 @@ -724,7 +729,7 @@ void SetCarTexturingLevel(tCar_texturing_level pLevel) { // Size: 138 // EAX: pIdent // EDX: pSuffix -int HasThisSuffix(char *pIdent, char *pSuffix) { +int HasThisSuffix(char* pIdent, char* pSuffix) { size_t len_ident; size_t len_suffix; } @@ -733,55 +738,55 @@ int HasThisSuffix(char *pIdent, char *pSuffix) { // Size: 145 // EAX: pOld_ident // EDX: pSuffix -br_material* UnsuffixedMaterial(char *pOld_ident, char *pSuffix) { - br_material *result; +br_material* UnsuffixedMaterial(char* pOld_ident, char* pSuffix) { + br_material* result; int unsuffixed_len; - char *new_id; + char* new_id; } // Offset: 21340 // Size: 118 // EAX: pModel // EDX: pFace -br_material* RoadUntexToPersp(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* RoadUntexToPersp(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 21460 // Size: 240 // EAX: pModel // EDX: pFace -br_material* WallLinearToUntex(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallLinearToUntex(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 21700 // Size: 203 // EAX: pModel // EDX: pFace -br_material* WallUntexToLinear(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallUntexToLinear(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 21904 // Size: 153 // EAX: pModel // EDX: pFace -br_material* WallUntexToPersp(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallUntexToPersp(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 22060 // Size: 112 // EAX: pModel // EDX: pFace -br_material* WallLinearToPersp(br_model *pModel, tU16 pFace) { - br_material *old_mat; - br_material *new_mat; +br_material* WallLinearToPersp(br_model* pModel, tU16 pFace) { + br_material* old_mat; + br_material* new_mat; } // Offset: 22172 @@ -816,20 +821,20 @@ void SetWallTexturingLevel(tWall_texturing_level pLevel) { // Size: 82 // EAX: pLevel void ReallySetWallTexturingLevel(tWall_texturing_level pLevel) { - static tPMFMCB *tweaker[3][3]; + static tPMFMCB* tweaker[3][3]; } // Offset: 22536 // Size: 297 // EAX: pModel // EDX: pFace -br_material* DisposeSuffixedMaterials(br_model *pModel, tU16 pFace) { +br_material* DisposeSuffixedMaterials(br_model* pModel, tU16 pFace) { size_t max_suffix_len; - br_material *mat; - br_material *victim; - static char *suffixes[3]; + br_material* mat; + br_material* victim; + static char* suffixes[3]; int s; - char *id; + char* id; } // Offset: 22836 @@ -839,7 +844,7 @@ void DisposeTexturingMaterials() { // Offset: 23000 // Size: 73 -br_uint_32 SetAccessoryRenderingCB(br_actor *pActor, void *pFlag) { +br_uint_32 SetAccessoryRenderingCB(br_actor* pActor, void* pFlag) { } // Offset: 23076 @@ -870,24 +875,41 @@ int GetCarSimplificationLevel() { // EAX: pF // EDX: pSpec // EBX: pScreen_name_str -void ParseSpecialVolume(FILE *pF, tSpecial_volume *pSpec, char *pScreen_name_str) { +void ParseSpecialVolume(FILE* pF, tSpecial_volume* pSpec, char* pScreen_name_str) { char s[256]; + pSpec->gravity_multiplier = GetAScalar(pF); + pSpec->viscosity_multiplier = GetAScalar(pF); + pSpec->car_damage_per_ms = GetAScalar(pF); + pSpec->ped_damage_per_ms = GetAScalar(pF); + pSpec->camera_special_effect_index = GetAnInt(pF); + pSpec->sky_col = GetAnInt(pF); + + GetAString(pF, s); + if (pScreen_name_str) { + strcpy(pScreen_name_str, s); + } else { + pSpec->screen_material = BrMaterialFind(s); + } + pSpec->entry_noise = GetAnInt(pF); + pSpec->exit_noise = GetAnInt(pF); + pSpec->engine_noise_index = GetAnInt(pF); + pSpec->material_modifier_index = GetAnInt(pF); } // Offset: 23584 // Size: 56 // EAX: pDst // EDX: pNew -void AddExceptionToList(tException_list *pDst, tException_list pNew) { +void AddExceptionToList(tException_list* pDst, tException_list pNew) { } // Offset: 23640 // Size: 527 // EAX: pName -void LoadExceptionsFile(char *pName) { - FILE *f; +void LoadExceptionsFile(char* pName) { + FILE* f; char line[256]; - char *tok; + char* tok; int file_version; tException_list e; char delimiters[4]; @@ -896,7 +918,7 @@ void LoadExceptionsFile(char *pName) { // Offset: 24168 // Size: 91 // EAX: pTrack_file_name -void LoadExceptionsFileForTrack(char *pTrack_file_name) { +void LoadExceptionsFileForTrack(char* pTrack_file_name) { tPath_name exceptions_file_name; } @@ -911,11 +933,11 @@ void FreeExceptions() { // EAX: pFile_name // EDX: pTrack_spec // EBX: pRace_info -void LoadTrack(char *pFile_name, tTrack_spec *pTrack_spec, tRace_info *pRace_info) { +void LoadTrack(char* pFile_name, tTrack_spec* pTrack_spec, tRace_info* pRace_info) { char temp_name[14]; - FILE *f; - FILE *non_car_f; - FILE *g; + FILE* f; + FILE* non_car_f; + FILE* g; int i; int j; int k; @@ -934,41 +956,41 @@ void LoadTrack(char *pFile_name, tTrack_spec *pTrack_spec, tRace_info *pRace_inf tPath_name the_path; tPath_name general_file_path; char s[256]; - char *str; + char* str; float temp_float; - br_actor *new_root; + br_actor* new_root; br_vector3 a; br_vector3 b; tU16 sky_pixels_high; - tNon_car_spec *non_car; - tSpecial_volume *spec; + tNon_car_spec* non_car; + tSpecial_volume* spec; br_vector3 p[3]; br_vector3 v1; br_vector3 v2; br_vector3 temp_v; br_bounds temp_bounds; - tPed_subs *ped_subs; - br_pixelmap *sky; - br_material *material; + tPed_subs* ped_subs; + br_pixelmap* sky; + br_material* material; } // Offset: 31676 // Size: 82 -br_uint_32 RemoveBounds(br_actor *pActor, void *pArg) { +br_uint_32 RemoveBounds(br_actor* pActor, void* pArg) { } // Offset: 31760 // Size: 52 // EAX: pActor -void RemoveBoundsStructures(br_actor *pActor) { +void RemoveBoundsStructures(br_actor* pActor) { } // Offset: 31812 // Size: 439 // EAX: pTrack_spec -void FreeTrack(tTrack_spec *pTrack_spec) { +void FreeTrack(tTrack_spec* pTrack_spec) { int i; - tNon_car_spec *non_car; + tNon_car_spec* non_car; } // Offset: 32252 @@ -977,7 +999,7 @@ void FreeTrack(tTrack_spec *pTrack_spec) { // EDX: pTrack_spec // EBX: pCamera // ECX: pCamera_to_world_transform -void ProcessTrack(br_actor *pWorld, tTrack_spec *pTrack_spec, br_actor *pCamera, br_matrix34 *pCamera_to_world_transform, int pRender_blends) { +void ProcessTrack(br_actor* pWorld, tTrack_spec* pTrack_spec, br_actor* pCamera, br_matrix34* pCamera_to_world_transform, int pRender_blends) { } // Offset: 32348 @@ -991,17 +1013,17 @@ void FunkThoseTronics() { int j; int iteration_count; int finished; - tFunkotronic_spec *the_funk; - br_vector3 *the_proximity; + tFunkotronic_spec* the_funk; + br_vector3* the_proximity; tS32 the_time; tS32 old_last_time; tS32 time_diff; - br_matrix23 *mat_matrix; - br_material *the_material; + br_matrix23* mat_matrix; + br_material* the_material; float f_the_time; float rot_amount; float f_time_diff; - br_pixelmap *old_colour_map; + br_pixelmap* old_colour_map; } // Offset: 41796 @@ -1009,7 +1031,7 @@ void FunkThoseTronics() { // EAX: pSubject_actor // EDX: ref_to_world // EBX: pWhich_axis -void LollipopizeActor(br_actor *pSubject_actor, br_matrix34 *ref_to_world, tLollipop_mode pWhich_axis) { +void LollipopizeActor(br_actor* pSubject_actor, br_matrix34* ref_to_world, tLollipop_mode pWhich_axis) { br_vector3 ref_to_subject; br_vector3 fixed_axis; br_vector3 vector_a; @@ -1022,13 +1044,13 @@ void LollipopizeActor(br_actor *pSubject_actor, br_matrix34 *ref_to_world, tLoll // Size: 140 // EAX: pResult // EDX: pActor -void CalcActorGlobalPos(br_vector3 *pResult, br_actor *pActor) { +void CalcActorGlobalPos(br_vector3* pResult, br_actor* pActor) { } // Offset: 42740 // Size: 320 // EAX: pPoint -int PointOutOfSight(br_vector3 *pPoint, br_scalar pMax_distance) { +int PointOutOfSight(br_vector3* pPoint, br_scalar pMax_distance) { br_vector3 distance_vector; } @@ -1038,7 +1060,7 @@ int PointOutOfSight(br_vector3 *pPoint, br_scalar pMax_distance) { // EDX: pTime // EBX: pMat // ECX: pInterrupt_it -void PathGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pMat, int pInterrupt_it) { +void PathGrooveBastard(tGroovidelic_spec* pGroove, tU32 pTime, br_matrix34* pMat, int pInterrupt_it) { br_scalar pos; } @@ -1048,13 +1070,13 @@ void PathGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pMat // EDX: pTime // EBX: pMat // ECX: pInterrupt_it -void ObjectGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pMat, int pInterrupt_it) { +void ObjectGrooveBastard(tGroovidelic_spec* pGroove, tU32 pTime, br_matrix34* pMat, int pInterrupt_it) { int rock_it; br_scalar x_size; br_scalar y_size; br_scalar z_size; br_scalar pos; - br_bounds *bounds; + br_bounds* bounds; } // Offset: 56176 @@ -1062,10 +1084,10 @@ void ObjectGrooveBastard(tGroovidelic_spec *pGroove, tU32 pTime, br_matrix34 *pM // EAX: pGroove // EDX: pTime // EBX: pInterrupt_it -void GrooveThisDelic(tGroovidelic_spec *pGroove, tU32 pTime, int pInterrupt_it) { - br_actor *the_actor; +void GrooveThisDelic(tGroovidelic_spec* pGroove, tU32 pTime, int pInterrupt_it) { + br_actor* the_actor; br_vector3 actor_pos; - br_matrix34 *the_mat; + br_matrix34* the_mat; tInterrupt_status old_path_interrupt; tInterrupt_status old_object_interrupt; } @@ -1073,16 +1095,16 @@ void GrooveThisDelic(tGroovidelic_spec *pGroove, tU32 pTime, int pInterrupt_it) // Offset: 56788 // Size: 191 void GrooveThoseDelics() { - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; float f_the_time; } // Offset: 56980 // Size: 137 // EAX: pActor -void StopGroovidelic(br_actor *pActor) { +void StopGroovidelic(br_actor* pActor) { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 57120 @@ -1091,15 +1113,15 @@ void StopGroovidelic(br_actor *pActor) { // EDX: pMatrix // EBX: pPath_interrupt // ECX: pObject_interrupt -void SetGrooveInterrupt(int pGroove_index, br_matrix34 *pMatrix, int pPath_interrupt, int pObject_interrupt, float pPath_resumption, float pObject_resumption) { - tGroovidelic_spec *the_groove; +void SetGrooveInterrupt(int pGroove_index, br_matrix34* pMatrix, int pPath_interrupt, int pObject_interrupt, float pPath_resumption, float pObject_resumption) { + tGroovidelic_spec* the_groove; } // Offset: 57240 // Size: 92 void ResetGrooveFlags() { int i; - tGroovidelic_spec *the_groove; + tGroovidelic_spec* the_groove; } // Offset: 57332 @@ -1111,9 +1133,9 @@ tSpecial_volume* GetDefaultSpecialVolumeForWater() { // Size: 342 // EAX: pP // EDX: pLast_vol -tSpecial_volume* FindSpecialVolume(br_vector3 *pP, tSpecial_volume *pLast_vol) { +tSpecial_volume* FindSpecialVolume(br_vector3* pP, tSpecial_volume* pLast_vol) { int i; - tSpecial_volume *v; + tSpecial_volume* v; br_vector3 p; } @@ -1126,20 +1148,20 @@ void SaveAdditionalActors() { // Size: 89 // EAX: pPos // EDX: pFace -br_scalar DistanceFromFace(br_vector3 *pPos, tFace_ref *pFace) { +br_scalar DistanceFromFace(br_vector3* pPos, tFace_ref* pFace) { br_vector3 normal; } // Offset: 57864 // Size: 166 -br_uint_32 CalcHighestID(br_actor *pActor, int *pHighest) { +br_uint_32 CalcHighestID(br_actor* pActor, int* pHighest) { char s[256]; int number; } // Offset: 58032 // Size: 182 -br_uint_32 SetID(br_actor *pActor, void *pArg) { +br_uint_32 SetID(br_actor* pActor, void* pArg) { char s[256]; } @@ -1147,7 +1169,7 @@ br_uint_32 SetID(br_actor *pActor, void *pArg) { // Size: 100 // EAX: pUniverse_actor // EDX: pActor -void UniquificateActorsName(br_actor *pUniverse_actor, br_actor *pActor) { +void UniquificateActorsName(br_actor* pUniverse_actor, br_actor* pActor) { int highest; } @@ -1155,31 +1177,31 @@ void UniquificateActorsName(br_actor *pUniverse_actor, br_actor *pActor) { // Size: 107 // EAX: pActor // EDX: pPrefix -void AccessoryHeadup(br_actor *pActor, char *pPrefix) { +void AccessoryHeadup(br_actor* pActor, char* pPrefix) { char s[256]; int i; - br_actor *original_actor; + br_actor* original_actor; } // Offset: 58424 // Size: 132 -br_uint_32 CalcHighestNonAmID(br_actor *pActor, int *pHighest) { +br_uint_32 CalcHighestNonAmID(br_actor* pActor, int* pHighest) { char s[256]; int number; } // Offset: 58556 // Size: 443 -br_uint_32 SetIDAndDupModel(br_actor *pActor, void *pArg) { +br_uint_32 SetIDAndDupModel(br_actor* pActor, void* pArg) { char s[256]; char s2[256]; - br_model *new_model; + br_model* new_model; } // Offset: 59000 // Size: 100 // EAX: pActor -void DuplicateIfNotAmpersand(br_actor *pActor) { +void DuplicateIfNotAmpersand(br_actor* pActor) { int highest; } @@ -1187,7 +1209,7 @@ void DuplicateIfNotAmpersand(br_actor *pActor) { // Size: 1246 // EAX: pIndex void DropActor(int pIndex) { - FILE *f; + FILE* f; tPath_name the_path; char s[256]; int i; @@ -1202,8 +1224,8 @@ void DropActor(int pIndex) { br_angle phi; br_matrix34 mat; br_transform new_transform; - br_actor *a; - br_actor *last_non_ampersand; + br_actor* a; + br_actor* last_non_ampersand; } // Offset: 60348 @@ -1258,7 +1280,7 @@ void DropActor9() { // Offset: 60788 // Size: 273 -br_uint_32 IdentifyAccCB(br_actor *pActor, void *pArg) { +br_uint_32 IdentifyAccCB(br_actor* pActor, void* pArg) { br_scalar distance; char s[256]; br_vector3 v; @@ -1271,15 +1293,15 @@ void IdentifyAcc() { // Offset: 61172 // Size: 108 -br_uint_32 DelGrooveRef(br_actor *pActor, void *pArg) { - tGroovidelic_spec *the_groove; +br_uint_32 DelGrooveRef(br_actor* pActor, void* pArg) { + tGroovidelic_spec* the_groove; int i; } // Offset: 61280 // Size: 177 -br_uint_32 DelReferencedModels(br_actor *pActor, void *pArg) { - tGroovidelic_spec *the_groove; +br_uint_32 DelReferencedModels(br_actor* pActor, void* pArg) { + tGroovidelic_spec* the_groove; int i; } @@ -1290,7 +1312,7 @@ void DeleteAcc() { // Offset: 61596 // Size: 170 -br_uint_32 OffsetModel(br_actor *pActor, void *pArg) { +br_uint_32 OffsetModel(br_actor* pActor, void* pArg) { int i; } @@ -1298,14 +1320,14 @@ br_uint_32 OffsetModel(br_actor *pActor, void *pArg) { // Size: 54 // EAX: pActor // EDX: pOffset -void OffsetActor(br_actor *pActor, br_vector3 *pOffset) { +void OffsetActor(br_actor* pActor, br_vector3* pOffset) { } // Offset: 61824 // Size: 286 // EAX: pActor // EDX: pOffset -void CentreActor(br_actor *pActor, br_vector3 *pOffset) { +void CentreActor(br_actor* pActor, br_vector3* pOffset) { } // Offset: 62112 @@ -1548,25 +1570,25 @@ br_material* GetExternalMat() { // EDX: pIndex // EBX: pInt_mat // ECX: pExt_mat -void BuildSpecVolModel(tSpecial_volume *pSpec, int pIndex, br_material *pInt_mat, br_material *pExt_mat) { +void BuildSpecVolModel(tSpecial_volume* pSpec, int pIndex, br_material* pInt_mat, br_material* pExt_mat) { int i; int j; int temp; - tSpecial_volume *v; - br_actor *actor; - br_model *model; + tSpecial_volume* v; + br_actor* actor; + br_model* model; } // Offset: 67484 // Size: 427 // EAX: pIndex void DropSpecVol(int pIndex) { - FILE *f; + FILE* f; tPath_name the_path; int i; int spec_count; tSpecial_volume spec; - tSpecial_volume *new_specs; + tSpecial_volume* new_specs; char s[256]; } @@ -1624,10 +1646,10 @@ void DropSpecVol9() { // Size: 344 void IdentifySpecVol() { int min_index; - tSpecial_volume *v; + tSpecial_volume* v; br_scalar min_d; br_scalar d; - br_vector3 *p; + br_vector3* p; char s[256]; } @@ -1635,8 +1657,8 @@ void IdentifySpecVol() { // Size: 349 // EAX: pIndex void DelSpecVolumeGraph(int pIndex) { - br_actor *actor; - br_model *model; + br_actor* actor; + br_model* model; } // Offset: 69040 @@ -1854,16 +1876,15 @@ void SnapSpecVolToVertical() { void ShowSpecialVolumes() { int j; int temp; - tSpecial_volume *v; - br_actor *actor; - br_model *model; - br_material *internal_mat; - br_material *external_mat; + tSpecial_volume* v; + br_actor* actor; + br_model* model; + br_material* internal_mat; + br_material* external_mat; } // Offset: 71100 // Size: 112 void HideSpecialVolumes() { - tSpecial_volume *v; + tSpecial_volume* v; } - diff --git a/src/DETHRACE/new/stack_trace_handler.h b/src/DETHRACE/new/stack_trace_handler.h new file mode 100644 index 00000000..2d377456 --- /dev/null +++ b/src/DETHRACE/new/stack_trace_handler.h @@ -0,0 +1,316 @@ +// Based on https://gist.github.com/jvranish/4441299 + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#include +#include +#else +#include +#include +#endif + +static int stack_nbr = 0; +static char _program_name[1024]; + +/* Resolve symbol name and source location given the path to the executable + and an address */ +int addr2line(char const* const program_name, void const* const addr) { + char addr2line_cmd[512] = { 0 }; + +/* have addr2line map the address to the relent line in the code */ +#ifdef __APPLE__ + /* apple does things differently... */ + sprintf(addr2line_cmd, "atos -o %.256s %p", program_name, addr); +#else + sprintf(addr2line_cmd, "addr2line -f -p -e %.256s %p", program_name, addr); +#endif + + fprintf(stderr, "%d: ", stack_nbr++); + return system(addr2line_cmd); +} + +#ifdef _WIN32 +void windows_print_stacktrace(CONTEXT* context) { + SymInitialize(GetCurrentProcess(), 0, true); + + STACKFRAME frame = { 0 }; + + /* setup initial stack frame */ + frame.AddrPC.Offset = context->Eip; + frame.AddrPC.Mode = AddrModeFlat; + frame.AddrStack.Offset = context->Esp; + frame.AddrStack.Mode = AddrModeFlat; + frame.AddrFrame.Offset = context->Ebp; + frame.AddrFrame.Mode = AddrModeFlat; + + while (StackWalk(IMAGE_FILE_MACHINE_I386, + GetCurrentProcess(), + GetCurrentThread(), + &frame, + context, + 0, + SymFunctionTableAccess, + SymGetModuleBase, + 0)) { + addr2line(_program_name, (void*)frame.AddrPC.Offset); + } + + SymCleanup(GetCurrentProcess()); +} + +LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS* ExceptionInfo) { + switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { + case EXCEPTION_ACCESS_VIOLATION: + fputs("Error: EXCEPTION_ACCESS_VIOLATION\n", stderr); + break; + case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: + fputs("Error: EXCEPTION_ARRAY_BOUNDS_EXCEEDED\n", stderr); + break; + case EXCEPTION_BREAKPOINT: + fputs("Error: EXCEPTION_BREAKPOINT\n", stderr); + break; + case EXCEPTION_DATATYPE_MISALIGNMENT: + fputs("Error: EXCEPTION_DATATYPE_MISALIGNMENT\n", stderr); + break; + case EXCEPTION_FLT_DENORMAL_OPERAND: + fputs("Error: EXCEPTION_FLT_DENORMAL_OPERAND\n", stderr); + break; + case EXCEPTION_FLT_DIVIDE_BY_ZERO: + fputs("Error: EXCEPTION_FLT_DIVIDE_BY_ZERO\n", stderr); + break; + case EXCEPTION_FLT_INEXACT_RESULT: + fputs("Error: EXCEPTION_FLT_INEXACT_RESULT\n", stderr); + break; + case EXCEPTION_FLT_INVALID_OPERATION: + fputs("Error: EXCEPTION_FLT_INVALID_OPERATION\n", stderr); + break; + case EXCEPTION_FLT_OVERFLOW: + fputs("Error: EXCEPTION_FLT_OVERFLOW\n", stderr); + break; + case EXCEPTION_FLT_STACK_CHECK: + fputs("Error: EXCEPTION_FLT_STACK_CHECK\n", stderr); + break; + case EXCEPTION_FLT_UNDERFLOW: + fputs("Error: EXCEPTION_FLT_UNDERFLOW\n", stderr); + break; + case EXCEPTION_ILLEGAL_INSTRUCTION: + fputs("Error: EXCEPTION_ILLEGAL_INSTRUCTION\n", stderr); + break; + case EXCEPTION_IN_PAGE_ERROR: + fputs("Error: EXCEPTION_IN_PAGE_ERROR\n", stderr); + break; + case EXCEPTION_INT_DIVIDE_BY_ZERO: + fputs("Error: EXCEPTION_INT_DIVIDE_BY_ZERO\n", stderr); + break; + case EXCEPTION_INT_OVERFLOW: + fputs("Error: EXCEPTION_INT_OVERFLOW\n", stderr); + break; + case EXCEPTION_INVALID_DISPOSITION: + fputs("Error: EXCEPTION_INVALID_DISPOSITION\n", stderr); + break; + case EXCEPTION_NONCONTINUABLE_EXCEPTION: + fputs("Error: EXCEPTION_NONCONTINUABLE_EXCEPTION\n", stderr); + break; + case EXCEPTION_PRIV_INSTRUCTION: + fputs("Error: EXCEPTION_PRIV_INSTRUCTION\n", stderr); + break; + case EXCEPTION_SINGLE_STEP: + fputs("Error: EXCEPTION_SINGLE_STEP\n", stderr); + break; + case EXCEPTION_STACK_OVERFLOW: + fputs("Error: EXCEPTION_STACK_OVERFLOW\n", stderr); + break; + default: + fputs("Error: Unrecognized Exception\n", stderr); + break; + } + fflush(stderr); + /* If this is a stack overflow then we can't walk the stack, so just show + where the error happened */ + if (EXCEPTION_STACK_OVERFLOW != ExceptionInfo->ExceptionRecord->ExceptionCode) { + windows_print_stacktrace(ExceptionInfo->ContextRecord); + } else { + addr2line(_program_name, (void*)ExceptionInfo->ContextRecord->Eip); + } + + return EXCEPTION_EXECUTE_HANDLER; +} + +void set_signal_handler(char* program_name) { + strcpy(_program_name, program_name); + SetUnhandledExceptionFilter(windows_exception_handler); +} +#else + +#define MAX_STACK_FRAMES 64 +static void* stack_traces[MAX_STACK_FRAMES]; + +void posix_print_stack_trace() { + int i, trace_size = 0; + char** messages = (char**)NULL; + + fputs("\nStack trace:\n", stderr); + + trace_size = backtrace(stack_traces, MAX_STACK_FRAMES); + messages = backtrace_symbols(stack_traces, trace_size); + + /* skip the first couple stack frames (as they are this function and + our handler) and also skip the last frame as it's (always?) junk. */ + for (i = 3; i < (trace_size - 1); ++i) { + if (addr2line(_program_name, stack_traces[i]) != 0) { + printf(" error determining line # for: %s\n", messages[i]); + } + } + if (messages) { + free(messages); + } +} + +void posix_signal_handler(int sig, siginfo_t* siginfo, void* context) { + (void)context; + fputs("\n******************\n", stderr); + + switch (sig) { + case SIGSEGV: + fputs("Caught SIGSEGV\n", stderr); + break; + case SIGINT: + fputs("Caught SIGINT\n", stderr); + break; + case SIGFPE: + switch (siginfo->si_code) { + case FPE_INTDIV: + fputs("Caught SIGFPE: FPE_INTDIV\n", stderr); + break; + case FPE_INTOVF: + fputs("Caught SIGFPE: FPE_INTOVF\n", stderr); + break; + case FPE_FLTDIV: + fputs("Caught SIGFPE: FPE_FLTDIV\n", stderr); + break; + case FPE_FLTOVF: + fputs("Caught SIGFPE: FPE_FLTOVF\n", stderr); + break; + case FPE_FLTUND: + fputs("Caught SIGFPE: FPE_FLTUND\n", stderr); + break; + case FPE_FLTRES: + fputs("Caught SIGFPE: FPE_FLTRES\n", stderr); + break; + case FPE_FLTINV: + fputs("Caught SIGFPE: FPE_FLTINV\n", stderr); + break; + case FPE_FLTSUB: + fputs("Caught SIGFPE: FPE_FLTSUB\n", stderr); + break; + default: + fputs("Caught SIGFPE: Arithmetic Exception\n", stderr); + break; + } + case SIGILL: + switch (siginfo->si_code) { + case ILL_ILLOPC: + fputs("Caught SIGILL: ILL_ILLOPC\n", stderr); + break; + case ILL_ILLOPN: + fputs("Caught SIGILL: ILL_ILLOPN\n", stderr); + break; + case ILL_ILLADR: + fputs("Caught SIGILL: ILL_ILLADR\n", stderr); + break; + case ILL_ILLTRP: + fputs("Caught SIGILL: ILL_ILLTRP\n", stderr); + break; + case ILL_PRVOPC: + fputs("Caught SIGILL: ILL_PRVOPC\n", stderr); + break; + case ILL_PRVREG: + fputs("Caught SIGILL: ILL_PRVREG\n", stderr); + break; + case ILL_COPROC: + fputs("Caught SIGILL: ILL_COPROC\n", stderr); + break; + case ILL_BADSTK: + fputs("Caught SIGILL: ILL_BADSTK\n", stderr); + break; + default: + fputs("Caught SIGILL: Illegal Instruction\n", stderr); + break; + } + break; + case SIGTERM: + fputs("Caught SIGTERM\n", stderr); + break; + case SIGABRT: + fputs("Caught SIGABRT\n", stderr); + break; + default: + break; + } + fputs("******************\n", stderr); + posix_print_stack_trace(); + exit(1); +} + +static uint8_t alternate_stack[SIGSTKSZ]; +void set_signal_handler(char* program_name) { + + strcpy(_program_name, program_name); + + /* setup alternate stack */ + { + stack_t ss = {}; + /* malloc is usually used here, I'm not 100% sure my static allocation + is valid but it seems to work just fine. */ + ss.ss_sp = (void*)alternate_stack; + ss.ss_size = SIGSTKSZ; + ss.ss_flags = 0; + + if (sigaltstack(&ss, NULL) != 0) { + err(1, "sigaltstack"); + } + } + + /* register our signal handlers */ + { + struct sigaction sig_action = {}; + sig_action.sa_sigaction = posix_signal_handler; + sigemptyset(&sig_action.sa_mask); + +#ifdef __APPLE__ + /* for some reason we backtrace() doesn't work on osx + when we use an alternate stack */ + sig_action.sa_flags = SA_SIGINFO; +#else + sig_action.sa_flags = SA_SIGINFO | SA_ONSTACK; +#endif + + if (sigaction(SIGSEGV, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGFPE, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGINT, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGILL, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGTERM, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + if (sigaction(SIGABRT, &sig_action, NULL) != 0) { + err(1, "sigaction"); + } + } +} +#endif \ No newline at end of file diff --git a/src/DETHRACE/pc-dos/main.c b/src/DETHRACE/pc-dos/main.c index 55d784cd..fbbc7fc2 100644 --- a/src/DETHRACE/pc-dos/main.c +++ b/src/DETHRACE/pc-dos/main.c @@ -1,3 +1,4 @@ +#include "new/stack_trace_handler.h" #include "pc-dos/dossys.h" extern int _main(int pArgc, char* pArgv[]); @@ -5,6 +6,7 @@ extern int _main(int pArgc, char* pArgv[]); // EAX: pArgc // EDX: pArgv // Moved from pc-dos/dossys.c to enable unit testing -int main(int pArgc, char* pArgv[]) { - return _main(pArgc, pArgv); +int main(int argc, char* argv[]) { + set_signal_handler(argv[0]); + return _main(argc, argv); } diff --git a/test/DETHRACE/test_dossys.c b/test/DETHRACE/test_dossys.c index c8fd1c19..520c94c2 100644 --- a/test/DETHRACE/test_dossys.c +++ b/test/DETHRACE/test_dossys.c @@ -6,13 +6,7 @@ #include "common/globvars.h" #include "pc-dos/dossys.h" - void test_dossys_PDInitialiseSystem() { - - FILE *file = fopen("/tmp/KEYBOARD.COK", "wt"); - fprintf(file,"abcdef"); - fclose(file); - PDInitialiseSystem(); TEST_ASSERT_EQUAL_STRING("abc", gASCII_table); TEST_ASSERT_EQUAL_STRING("def", gASCII_shift_table); diff --git a/test/DETHRACE/test_loading.c b/test/DETHRACE/test_loading.c index 28a0226f..17035c3d 100644 --- a/test/DETHRACE/test_loading.c +++ b/test/DETHRACE/test_loading.c @@ -4,28 +4,47 @@ #include #include "common/globvars.h" +#include "common/init.h" #include "common/loading.h" - +#include "common/newgame.h" void test_loading_GetCDPathFromPathsTxtFile() { int result; tPath_name cd_path; - unlink("/tmp/PATHS.TXT"); - - // should return false, path does not exist - result = GetCDPathFromPathsTxtFile(cd_path); - TEST_ASSERT_EQUAL_INT(0, result); - - FILE *file = fopen("/tmp/PATHS.TXT","wt"); - fprintf(file,"test_cd_path\r\n"); - fclose(file); - result = GetCDPathFromPathsTxtFile(cd_path); TEST_ASSERT_EQUAL_INT(1, result); - TEST_ASSERT_EQUAL_STRING("test_cd_path", cd_path); + TEST_ASSERT_EQUAL_STRING(".\\DATA\\MINICD", cd_path); +} + +void test_loading_OldDRfopen() { + FILE* f; + + f = OldDRfopen("DATA/i-dont-exist", "rt"); + TEST_ASSERT_NULL(f); + + f = OldDRfopen("DATA/GENERAL.TXT", "rt"); + TEST_ASSERT_NOT_NULL(f); +} + +void test_loading_LoadGeneralParameters() { + + LoadGeneralParameters(); + TEST_ASSERT_EQUAL_FLOAT(0.02f, gCamera_hither); + TEST_ASSERT_EQUAL_INT(7500, gInitial_credits[0]); + TEST_ASSERT_EQUAL_INT(5000, gInitial_credits[1]); + TEST_ASSERT_EQUAL_INT(3000, gInitial_credits[2]); + TEST_ASSERT_EQUAL_STRING("BLKEAGLE.TXT", gBasic_car_names[0]); + TEST_ASSERT_EQUAL_FLOAT(0.2f, gDefault_default_water_spec_vol.gravity_multiplier); + TEST_ASSERT_EQUAL_FLOAT(50.0f, gDefault_default_water_spec_vol.viscosity_multiplier); + + TEST_ASSERT_EQUAL_INT(0, gInitial_net_credits[0]); + TEST_ASSERT_EQUAL_INT(2000, gInitial_net_credits[1]); + TEST_ASSERT_EQUAL_INT(1, gGravity_multiplier); } void test_loading_suite() { RUN_TEST(test_loading_GetCDPathFromPathsTxtFile); + RUN_TEST(test_loading_OldDRfopen); + RUN_TEST(test_loading_LoadGeneralParameters); } diff --git a/test/DETHRACE/test_utility.c b/test/DETHRACE/test_utility.c index 33025904..2375a8c5 100644 --- a/test/DETHRACE/test_utility.c +++ b/test/DETHRACE/test_utility.c @@ -1,10 +1,22 @@ #include "framework/unity.h" -#include #include "common/utility.h" +#include + +void test_utility_EncodeLinex() { + char buf[50]; + // first line of GENERAL.TXT, "@" prefix and line ending stripped + char input[] = "\x29\x2a\x9c\x22\x61\x4d\x5e\x5f\x60\x34\x64\x57\x8d\x2b\x82\x7b\x33\x4c"; + strcpy(buf, input); + EncodeLine(buf); + //TEST_ASSERT_EQUAL_INT(2, gEncryption_method); + char expected[] = "0.01\t\t\t\t\t// Hither"; + TEST_ASSERT_EQUAL_STRING(expected, buf); +} void test_utility_DecodeLine2() { char buf[50]; + gEncryption_method = 1; // first line of GENERAL.TXT, "@" prefix and line ending stripped char input[] = "\x29\x2a\x9c\x22\x61\x4d\x5e\x5f\x60\x34\x64\x57\x8d\x2b\x82\x7b\x33\x4c"; strcpy(buf, input); @@ -32,14 +44,14 @@ void test_utility_StripCR() { } void test_utility_GetALineWithNoPossibleService() { - FILE *file = fopen("/tmp/testfile","wt"); - fprintf(file,"hello world\r\n space_prefixed\r\n\r\n\ttab_prefixed\r\n$ignored_prefix\r\nlast_line"); + FILE* file = fopen("/tmp/testfile", "wt"); + fprintf(file, "hello world\r\n space_prefixed\r\n\r\n\ttab_prefixed\r\n$ignored_prefix\r\nlast_line"); fclose(file); - file = fopen("/tmp/testfile","rt"); + file = fopen("/tmp/testfile", "rt"); char s[256]; - char *result = GetALineWithNoPossibleService(file, s); + char* result = GetALineWithNoPossibleService(file, s); TEST_ASSERT_NOT_NULL(result); TEST_ASSERT_EQUAL_STRING("hello world", s); @@ -69,6 +81,7 @@ void test_utility_PathCat() { } void test_utility_suite() { + RUN_TEST(test_utility_EncodeLinex); RUN_TEST(test_utility_DecodeLine2); RUN_TEST(test_utility_EncodeLine2); RUN_TEST(test_utility_StripCR); diff --git a/test/Makefile b/test/Makefile index 49bb5f14..e49de68d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -16,8 +16,8 @@ DEPS := $(OBJS:.o=.d) INC_DIRS := $(shell find $(SRC_DIR) -type d) $(BR_SRC_DIR) $(DR_SRC_DIR) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) -CFLAGS ?= $(INC_FLAGS) -LDFLAGS ?= -lm +CFLAGS ?= $(INC_FLAGS) -g +LDFLAGS ?= -lm -fno-pie .PHONY: clean build run diff --git a/test/assets/DATA/ACTORS/PROG.ACT b/test/assets/DATA/ACTORS/PROG.ACT new file mode 100644 index 00000000..7167e786 --- /dev/null +++ b/test/assets/DATA/ACTORS/PROG.ACT @@ -0,0 +1 @@ + ******************************************************************************************************************************************************************************************************************************************************************** \ No newline at end of file diff --git a/test/assets/DATA/GENERAL.TXT b/test/assets/DATA/GENERAL.TXT new file mode 100644 index 00000000..5f7fd824 --- /dev/null +++ b/test/assets/DATA/GENERAL.TXT @@ -0,0 +1,83 @@ +@)*œ"aM^_`4dW+‚{3L +@Ÿ&O}n_`›KŽp3VJ9P +@1™=Tx^_`›K!pb5r;[Uz4<{Ž +@n_`›KŽ_3V3—SErq3aFƒŒ˜‚66›v8J +@+yŽ™„,“Nb5.‡‰–‚5b”r5U@i{({‚BŠ ž"*‚}3MT;u0z“Œœ +@*XM^_`›K!pb?}?JNzx}g‡Œƒ +@|;o,U;)4œ?R}no`›K!pb?}?JNzx}v”‡Œ›ƒ6b|$žBzw55•‰ž›e.“e3R +@<)4œ#M~koP+g:o,I>™„ƒ<4žgƒ††„e2“avLFu}s‰H—–&*V`=WKw41p‡„ +@z oœyŽ™„,™„,“aMqpB/ž˜'#š35LRh|‚y†(!' z7PS;r}‡Œ‹—W##•g9L +@{ hœyŽ™„,56œ?R}^_`›K!pb$v&_Ni4>z•–H”˜7b“r5V‡h4yŠB„— .V;5LB4-p”BMR“$/—t3— +@"Q}ns@){>o0Y:)4œ“abqF0‘˜3'„jv]Hh`}s‰H—–&*V`=WKw41p‡„ +@mP7s"jœyŽ™+ƒ;@4xƒB˜—…e2“wvUNwx}s‰H—–&*V`=WKw41p‡„ +@>q+L")*™?Qclj`›K!pb%v5QIg}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@5?Yak_`›K!pb5a3ZNog}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@-K>5=œ?W}^_`›d!e–Ÿ~3žFlu/qƒ†H”˜7br%JNus}v‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@J>)4 !Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}b‡‘œ›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@hoL({"n)yŽ™„ƒ<4‰|‹‡H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@H>)4 "Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@){>o0L>)(™#aM^pOH1… &Ÿg%žFlu/qƒ†H”˜7b•{3]Lk{4{’‘H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@>q+L")*™?Qclj`›K!pb%v5QIg}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@5?Yak_`›K!pb5a3ZNog}eƒH‡™,6Vp7L‡u0t‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@-K>5=œ?W}^_`›d!e–Ÿ~3žFlu/qƒ†H”˜7br%JNus}v‡H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@J>)4 !Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}b‡‘œ›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@hoL({"n)yŽ™„ƒ<4‰|‹‡H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@H>)4 "Q}nsQ+{>_œy!6ždiq9|’‘H“ $0’v2žAtf}g‰Ž„›™"b•r$žAtf}p‡ R„.+švRBmq15N•†Ÿe2“w%— +@){>o0L>)(™#aM^pOH1… &Ÿg%žFlu/qƒ†H”˜7b•{3]Lk{4{’‘H”˜7b“r5V‡h4yŠB„— .V;!WSs4-p‚‘A +@nP+{"n,I>55œ#QM^_`4dW7›cvMSzf)5 ‹†—W#-„33_Ds41p‡„ +@PxrnP7~Ž_œy!6ždiq9|’‘H‚’7b…v5QI42sF–Ÿ’e ™}#M +@<)4œ?P}noL.{>_œy!6ždnz3|ˆ…Hƒ0,‚34QIng}s‰H—–&*V`=WKw41p‡„ +@!6ždzf.5’H‡„ b—`vZB}u(y’‘R +@œ“+^ŠI“YWZAP +@Ÿ‘.RŽMžNWZAP +@)„,“abqF$š“š b„r"[‡pz2w„Ž W#-„37]Sr{35”‡˜ž–p”NHNWtbK38WD~fq5XBYRJe,—`"WBi4uc‡Ž—„e “g![Bu4m;WB‰œ“esF3%VHnx95‚A +@!pb2v0_Rw`}`ˆ† $6“avMW~w4tŠBž›0/“3&_Uzy8aƒ› +@+e<_œyŽ™„,“abqF…š“,63;KKo}-y‡š +@,4,“aM^_`›K!pb z%]Hh})lFžƒ,2šz3L +@#aM^_`›KŽ_3V3•_U;po.yŽ™„,“aMqpB8—“ 1‚a?_I;p™„,“aM^_O4R$*7˜wvwc;{;5ƒŒœ Že,™z%[ +@xooP›KŽ_œyŽ™+ƒ;G2`ˆ†H;3e-33FNo43z‘ +@<_œyŽ™„,“abqF'†•ž+'V}9WT~44{‚‡ +@>™„,“aM^_`4dW(#‚v$WFw44{‚‡ +@)(ž#Q}rjP+{"n,I>)(ž#Q}n_`›d!e‘‚r$JNus}x‰Œ‹W,,V}3JPtf65‹Œ—Wm$™av[Fx|}f‹„žW)' v:— +@=oœyŽ™„,o,U?)4œ?P}noL*{>o0H>)4 +@3V3•_U;g2s’Œ„e$—p"QU;r2gF‡‰‘Ÿe,“gvYFvq}aŸ’ +@?74 "OxrnN.g?q)U?71 "OxrnN. +@p3VMxvgŽ`=>’;/o2}žk9iY•$.3‰~9.9s‹.|eO{A#;+@|*c:™„,“aMqpB,—š*b„r5[‡iu3~F‡™‡ž3#šv8J +@<™„,“aMqpB,—š*b—a;QRi41p‡„ +@Q›KŽ_œy!6žc~y25–Ÿ—…e.“e3R +@SM^_`›K!pb2v;Q‡tr;pˆ‘„’e.“e3R +@bqF-˜‚˜+'˜g%žSsu)5‡’˜—–7bŸ}vZBv{}r‡ +@(2 +@(6 +@+6 +@(= +@, +@3V32[Aza1aF%š“,63›KKo}-y‡š +@* +@V!vxKrw}f‰—†–W!'šr/M +@>_œyŽ™„ƒ<4™pŠƒ‘R_,,V`3]Hup.%SFx}sŠ‹‹ +@œ“aM^_`4dW'šr/žrz}fƒ‡œ“6kVq3XHiq}f‰—†–W!7„z8Y‡k{.aK‘…“”.b?] +@o`›KŽ_œV!vzBwu$5N‹†R„ !™}2MŽ;v8s‰R„*7˜wvZRi}3rFE†ƒe+˜32[Jt3}sŠ‹‹ +@4,“aM^_O4R3 .—jv–Nu4.p…†–„lb”v0QU~4.z“ŒŒR“00Ÿ}1žWtg)8‚‡…W6.Ÿw3MOtc}sŠ‹‹ diff --git a/test/assets/DATA/KEYBOARD.COK b/test/assets/DATA/KEYBOARD.COK new file mode 100644 index 00000000..d96dc957 --- /dev/null +++ b/test/assets/DATA/KEYBOARD.COK @@ -0,0 +1 @@ +abcdef \ No newline at end of file diff --git a/test/assets/DATA/MINICD/DATA/GENERAL.TXT b/test/assets/DATA/MINICD/DATA/GENERAL.TXT new file mode 100644 index 00000000..0f745c88 --- /dev/null +++ b/test/assets/DATA/MINICD/DATA/GENERAL.TXT @@ -0,0 +1 @@ +Placeholder file for CD check... \ No newline at end of file diff --git a/test/assets/DATA/PATHS.TXT b/test/assets/DATA/PATHS.TXT new file mode 100644 index 00000000..fc5b668a --- /dev/null +++ b/test/assets/DATA/PATHS.TXT @@ -0,0 +1,5 @@ +.\DATA\MINICD +. +Full +English +..\CARMA diff --git a/test/framework/unity.c b/test/framework/unity.c index d23c73d0..1c561ecc 100755 --- a/test/framework/unity.c +++ b/test/framework/unity.c @@ -19,55 +19,67 @@ void UNITY_OUTPUT_CHAR(int); #endif /* Helpful macros for us to use here in Assert functions */ -#define UNITY_FAIL_AND_BAIL { Unity.CurrentTestFailed = 1; UNITY_OUTPUT_FLUSH(); TEST_ABORT(); } -#define UNITY_IGNORE_AND_BAIL { Unity.CurrentTestIgnored = 1; UNITY_OUTPUT_FLUSH(); TEST_ABORT(); } -#define RETURN_IF_FAIL_OR_IGNORE if (Unity.CurrentTestFailed || Unity.CurrentTestIgnored) return +#define UNITY_FAIL_AND_BAIL \ + { \ + Unity.CurrentTestFailed = 1; \ + UNITY_OUTPUT_FLUSH(); \ + TEST_ABORT(); \ + } +#define UNITY_IGNORE_AND_BAIL \ + { \ + Unity.CurrentTestIgnored = 1; \ + UNITY_OUTPUT_FLUSH(); \ + TEST_ABORT(); \ + } +#define RETURN_IF_FAIL_OR_IGNORE \ + if (Unity.CurrentTestFailed || Unity.CurrentTestIgnored) \ + return struct UNITY_STORAGE_T Unity; #ifdef UNITY_OUTPUT_COLOR -const char PROGMEM UnityStrOk[] = "\033[42mOK\033[00m"; -const char PROGMEM UnityStrPass[] = "\033[42mPASS\033[00m"; -const char PROGMEM UnityStrFail[] = "\033[41mFAIL\033[00m"; -const char PROGMEM UnityStrIgnore[] = "\033[43mIGNORE\033[00m"; +const char PROGMEM UnityStrOk[] = "\033[42mOK\033[00m"; +const char PROGMEM UnityStrPass[] = "\033[42mPASS\033[00m"; +const char PROGMEM UnityStrFail[] = "\033[41mFAIL\033[00m"; +const char PROGMEM UnityStrIgnore[] = "\033[43mIGNORE\033[00m"; #else -const char PROGMEM UnityStrOk[] = "OK"; -const char PROGMEM UnityStrPass[] = "PASS"; -const char PROGMEM UnityStrFail[] = "FAIL"; -const char PROGMEM UnityStrIgnore[] = "IGNORE"; +const char PROGMEM UnityStrOk[] = "OK"; +const char PROGMEM UnityStrPass[] = "PASS"; +const char PROGMEM UnityStrFail[] = "FAIL"; +const char PROGMEM UnityStrIgnore[] = "IGNORE"; #endif -static const char PROGMEM UnityStrNull[] = "NULL"; -static const char PROGMEM UnityStrSpacer[] = ". "; -static const char PROGMEM UnityStrExpected[] = " Expected "; -static const char PROGMEM UnityStrWas[] = " Was "; -static const char PROGMEM UnityStrGt[] = " to be greater than "; -static const char PROGMEM UnityStrLt[] = " to be less than "; -static const char PROGMEM UnityStrOrEqual[] = "or equal to "; -static const char PROGMEM UnityStrElement[] = " Element "; -static const char PROGMEM UnityStrByte[] = " Byte "; -static const char PROGMEM UnityStrMemory[] = " Memory Mismatch."; -static const char PROGMEM UnityStrDelta[] = " Values Not Within Delta "; -static const char PROGMEM UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless."; +static const char PROGMEM UnityStrNull[] = "NULL"; +static const char PROGMEM UnityStrSpacer[] = ". "; +static const char PROGMEM UnityStrExpected[] = " Expected "; +static const char PROGMEM UnityStrWas[] = " Was "; +static const char PROGMEM UnityStrGt[] = " to be greater than "; +static const char PROGMEM UnityStrLt[] = " to be less than "; +static const char PROGMEM UnityStrOrEqual[] = "or equal to "; +static const char PROGMEM UnityStrElement[] = " Element "; +static const char PROGMEM UnityStrByte[] = " Byte "; +static const char PROGMEM UnityStrMemory[] = " Memory Mismatch."; +static const char PROGMEM UnityStrDelta[] = " Values Not Within Delta "; +static const char PROGMEM UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless."; static const char PROGMEM UnityStrNullPointerForExpected[] = " Expected pointer to be NULL"; -static const char PROGMEM UnityStrNullPointerForActual[] = " Actual pointer was NULL"; +static const char PROGMEM UnityStrNullPointerForActual[] = " Actual pointer was NULL"; #ifndef UNITY_EXCLUDE_FLOAT -static const char PROGMEM UnityStrNot[] = "Not "; -static const char PROGMEM UnityStrInf[] = "Infinity"; -static const char PROGMEM UnityStrNegInf[] = "Negative Infinity"; -static const char PROGMEM UnityStrNaN[] = "NaN"; -static const char PROGMEM UnityStrDet[] = "Determinate"; -static const char PROGMEM UnityStrInvalidFloatTrait[] = "Invalid Float Trait"; +static const char PROGMEM UnityStrNot[] = "Not "; +static const char PROGMEM UnityStrInf[] = "Infinity"; +static const char PROGMEM UnityStrNegInf[] = "Negative Infinity"; +static const char PROGMEM UnityStrNaN[] = "NaN"; +static const char PROGMEM UnityStrDet[] = "Determinate"; +static const char PROGMEM UnityStrInvalidFloatTrait[] = "Invalid Float Trait"; #endif -const char PROGMEM UnityStrErrShorthand[] = "Unity Shorthand Support Disabled"; -const char PROGMEM UnityStrErrFloat[] = "Unity Floating Point Disabled"; -const char PROGMEM UnityStrErrDouble[] = "Unity Double Precision Disabled"; -const char PROGMEM UnityStrErr64[] = "Unity 64-bit Support Disabled"; -static const char PROGMEM UnityStrBreaker[] = "-----------------------"; -static const char PROGMEM UnityStrResultsTests[] = " Tests "; -static const char PROGMEM UnityStrResultsFailures[] = " Failures "; -static const char PROGMEM UnityStrResultsIgnored[] = " Ignored "; -static const char PROGMEM UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " "; -static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " "; +const char PROGMEM UnityStrErrShorthand[] = "Unity Shorthand Support Disabled"; +const char PROGMEM UnityStrErrFloat[] = "Unity Floating Point Disabled"; +const char PROGMEM UnityStrErrDouble[] = "Unity Double Precision Disabled"; +const char PROGMEM UnityStrErr64[] = "Unity 64-bit Support Disabled"; +static const char PROGMEM UnityStrBreaker[] = "-----------------------"; +static const char PROGMEM UnityStrResultsTests[] = " Tests "; +static const char PROGMEM UnityStrResultsFailures[] = " Failures "; +static const char PROGMEM UnityStrResultsIgnored[] = " Ignored "; +static const char PROGMEM UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " "; +static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " "; /*----------------------------------------------- * Pretty Printers & Test Result Output Handlers @@ -75,28 +87,23 @@ static const char PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_N /*-----------------------------------------------*/ /* Local helper function to print characters. */ -static void UnityPrintChar(const char* pch) -{ +static void UnityPrintChar(const char* pch) { /* printable characters plus CR & LF are printed */ - if ((*pch <= 126) && (*pch >= 32)) - { + if ((*pch <= 126) && (*pch >= 32)) { UNITY_OUTPUT_CHAR(*pch); } /* write escaped carriage returns */ - else if (*pch == 13) - { + else if (*pch == 13) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('r'); } /* write escaped line feeds */ - else if (*pch == 10) - { + else if (*pch == 10) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('n'); } /* unprintable characters are shown as codes */ - else - { + else { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)*pch, 2); @@ -106,13 +113,11 @@ static void UnityPrintChar(const char* pch) /*-----------------------------------------------*/ /* Local helper function to print ANSI escape strings e.g. "\033[42m". */ #ifdef UNITY_OUTPUT_COLOR -static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) -{ +static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) { const char* pch = string; UNITY_UINT count = 0; - while (*pch && (*pch != 'm')) - { + while (*pch && (*pch != 'm')) { UNITY_OUTPUT_CHAR(*pch); pch++; count++; @@ -125,18 +130,14 @@ static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) #endif /*-----------------------------------------------*/ -void UnityPrint(const char* string) -{ +void UnityPrint(const char* string) { const char* pch = string; - if (pch != NULL) - { - while (*pch) - { + if (pch != NULL) { + while (*pch) { #ifdef UNITY_OUTPUT_COLOR /* print ANSI escape code */ - if ((*pch == 27) && (*(pch + 1) == '[')) - { + if ((*pch == 27) && (*(pch + 1) == '[')) { pch += UnityPrintAnsiEscapeString(pch); continue; } @@ -149,107 +150,88 @@ void UnityPrint(const char* string) /*-----------------------------------------------*/ #ifdef UNITY_INCLUDE_PRINT_FORMATTED -void UnityPrintFormatted(const char* format, ...) -{ +void UnityPrintFormatted(const char* format, ...) { const char* pch = format; va_list va; va_start(va, format); - if (pch != NULL) - { - while (*pch) - { + if (pch != NULL) { + while (*pch) { /* format identification character */ - if (*pch == '%') - { + if (*pch == '%') { pch++; - if (pch != NULL) - { - switch (*pch) - { - case 'd': - case 'i': - { - const int number = va_arg(va, int); - UnityPrintNumber((UNITY_INT)number); - break; - } + if (pch != NULL) { + switch (*pch) { + case 'd': + case 'i': { + const int number = va_arg(va, int); + UnityPrintNumber((UNITY_INT)number); + break; + } #ifndef UNITY_EXCLUDE_FLOAT_PRINT - case 'f': - case 'g': - { - const double number = va_arg(va, double); - UnityPrintFloat((UNITY_DOUBLE)number); - break; - } + case 'f': + case 'g': { + const double number = va_arg(va, double); + UnityPrintFloat((UNITY_DOUBLE)number); + break; + } #endif - case 'u': - { - const unsigned int number = va_arg(va, unsigned int); - UnityPrintNumberUnsigned((UNITY_UINT)number); - break; - } - case 'b': - { - const unsigned int number = va_arg(va, unsigned int); - const UNITY_UINT mask = (UNITY_UINT)0 - (UNITY_UINT)1; - UNITY_OUTPUT_CHAR('0'); - UNITY_OUTPUT_CHAR('b'); - UnityPrintMask(mask, (UNITY_UINT)number); - break; - } - case 'x': - case 'X': - case 'p': - { - const unsigned int number = va_arg(va, unsigned int); - UNITY_OUTPUT_CHAR('0'); - UNITY_OUTPUT_CHAR('x'); - UnityPrintNumberHex((UNITY_UINT)number, 8); - break; - } - case 'c': - { - const int ch = va_arg(va, int); - UnityPrintChar((const char *)&ch); - break; - } - case 's': - { - const char * string = va_arg(va, const char *); - UnityPrint(string); - break; - } - case '%': - { - UnityPrintChar(pch); - break; - } - default: - { - /* print the unknown format character */ - UNITY_OUTPUT_CHAR('%'); - UnityPrintChar(pch); - break; - } + case 'u': { + const unsigned int number = va_arg(va, unsigned int); + UnityPrintNumberUnsigned((UNITY_UINT)number); + break; + } + case 'b': { + const unsigned int number = va_arg(va, unsigned int); + const UNITY_UINT mask = (UNITY_UINT)0 - (UNITY_UINT)1; + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('b'); + UnityPrintMask(mask, (UNITY_UINT)number); + break; + } + case 'x': + case 'X': + case 'p': { + const unsigned int number = va_arg(va, unsigned int); + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)number, 8); + break; + } + case 'c': { + const int ch = va_arg(va, int); + UnityPrintChar((const char*)&ch); + break; + } + case 's': { + const char* string = va_arg(va, const char*); + UnityPrint(string); + break; + } + case '%': { + UnityPrintChar(pch); + break; + } + default: { + /* print the unknown format character */ + UNITY_OUTPUT_CHAR('%'); + UnityPrintChar(pch); + break; + } } } } #ifdef UNITY_OUTPUT_COLOR /* print ANSI escape code */ - else if ((*pch == 27) && (*(pch + 1) == '[')) - { + else if ((*pch == 27) && (*(pch + 1) == '[')) { pch += UnityPrintAnsiEscapeString(pch); continue; } #endif - else if (*pch == '\n') - { + else if (*pch == '\n') { UNITY_PRINT_EOL(); - } - else - { + } else { UnityPrintChar(pch); } @@ -262,34 +244,27 @@ void UnityPrintFormatted(const char* format, ...) #endif /* ! UNITY_INCLUDE_PRINT_FORMATTED */ /*-----------------------------------------------*/ -void UnityPrintLen(const char* string, const UNITY_UINT32 length) -{ +void UnityPrintLen(const char* string, const UNITY_UINT32 length) { const char* pch = string; - if (pch != NULL) - { - while (*pch && ((UNITY_UINT32)(pch - string) < length)) - { + if (pch != NULL) { + while (*pch && ((UNITY_UINT32)(pch - string) < length)) { /* printable characters plus CR & LF are printed */ - if ((*pch <= 126) && (*pch >= 32)) - { + if ((*pch <= 126) && (*pch >= 32)) { UNITY_OUTPUT_CHAR(*pch); } /* write escaped carriage returns */ - else if (*pch == 13) - { + else if (*pch == 13) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('r'); } /* write escaped line feeds */ - else if (*pch == 10) - { + else if (*pch == 10) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('n'); } /* unprintable characters are shown as codes */ - else - { + else { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)*pch, 2); @@ -300,50 +275,37 @@ void UnityPrintLen(const char* string, const UNITY_UINT32 length) } /*-----------------------------------------------*/ -void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style) -{ - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if (style == UNITY_DISPLAY_STYLE_CHAR) - { +void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style) { + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if (style == UNITY_DISPLAY_STYLE_CHAR) { /* printable characters plus CR & LF are printed */ UNITY_OUTPUT_CHAR('\''); - if ((number <= 126) && (number >= 32)) - { + if ((number <= 126) && (number >= 32)) { UNITY_OUTPUT_CHAR((int)number); } /* write escaped carriage returns */ - else if (number == 13) - { + else if (number == 13) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('r'); } /* write escaped line feeds */ - else if (number == 10) - { + else if (number == 10) { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('n'); } /* unprintable characters are shown as codes */ - else - { + else { UNITY_OUTPUT_CHAR('\\'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)number, 2); } UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrintNumber(number); } - } - else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) - { + } else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) { UnityPrintNumberUnsigned((UNITY_UINT)number); - } - else - { + } else { UNITY_OUTPUT_CHAR('0'); UNITY_OUTPUT_CHAR('x'); UnityPrintNumberHex((UNITY_UINT)number, (char)((style & 0xF) * 2)); @@ -351,12 +313,10 @@ void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T } /*-----------------------------------------------*/ -void UnityPrintNumber(const UNITY_INT number_to_print) -{ +void UnityPrintNumber(const UNITY_INT number_to_print) { UNITY_UINT number = (UNITY_UINT)number_to_print; - if (number_to_print < 0) - { + if (number_to_print < 0) { /* A negative number, including MIN negative */ UNITY_OUTPUT_CHAR('-'); number = (~number) + 1; @@ -366,71 +326,54 @@ void UnityPrintNumber(const UNITY_INT number_to_print) /*----------------------------------------------- * basically do an itoa using as little ram as possible */ -void UnityPrintNumberUnsigned(const UNITY_UINT number) -{ +void UnityPrintNumberUnsigned(const UNITY_UINT number) { UNITY_UINT divisor = 1; /* figure out initial divisor */ - while (number / divisor > 9) - { + while (number / divisor > 9) { divisor *= 10; } /* now mod and print, then divide divisor */ - do - { + do { UNITY_OUTPUT_CHAR((char)('0' + (number / divisor % 10))); divisor /= 10; } while (divisor > 0); } /*-----------------------------------------------*/ -void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print) -{ +void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print) { int nibble; char nibbles = nibbles_to_print; - if ((unsigned)nibbles > UNITY_MAX_NIBBLES) - { + if ((unsigned)nibbles > UNITY_MAX_NIBBLES) { nibbles = UNITY_MAX_NIBBLES; } - while (nibbles > 0) - { + while (nibbles > 0) { nibbles--; nibble = (int)(number >> (nibbles * 4)) & 0x0F; - if (nibble <= 9) - { + if (nibble <= 9) { UNITY_OUTPUT_CHAR((char)('0' + nibble)); - } - else - { + } else { UNITY_OUTPUT_CHAR((char)('A' - 10 + nibble)); } } } /*-----------------------------------------------*/ -void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) -{ +void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) { UNITY_UINT current_bit = (UNITY_UINT)1 << (UNITY_INT_WIDTH - 1); UNITY_INT32 i; - for (i = 0; i < UNITY_INT_WIDTH; i++) - { - if (current_bit & mask) - { - if (current_bit & number) - { + for (i = 0; i < UNITY_INT_WIDTH; i++) { + if (current_bit & mask) { + if (current_bit & number) { UNITY_OUTPUT_CHAR('1'); - } - else - { + } else { UNITY_OUTPUT_CHAR('0'); } - } - else - { + } else { UNITY_OUTPUT_CHAR('X'); } current_bit = current_bit >> 1; @@ -446,8 +389,7 @@ void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) * in single-precision operation (for that level of accuracy, a more * complicated algorithm would be needed). */ -void UnityPrintFloat(const UNITY_DOUBLE input_number) -{ +void UnityPrintFloat(const UNITY_DOUBLE input_number) { #ifdef UNITY_INCLUDE_DOUBLE static const int sig_digits = 9; static const UNITY_INT32 min_scaled = 100000000; @@ -461,31 +403,23 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) UNITY_DOUBLE number = input_number; /* print minus sign (does not handle negative zero) */ - if (number < 0.0f) - { + if (number < 0.0f) { UNITY_OUTPUT_CHAR('-'); number = -number; } /* handle zero, NaN, and +/- infinity */ - if (number == 0.0f) - { + if (number == 0.0f) { UnityPrint("0"); - } - else if (isnan(number)) - { + } else if (isnan(number)) { UnityPrint("nan"); - } - else if (isinf(number)) - { + } else if (isinf(number)) { UnityPrint("inf"); - } - else - { + } else { UNITY_INT32 n_int = 0, n; int exponent = 0; int decimals, digits; - char buf[16] = {0}; + char buf[16] = { 0 }; /* * Scale up or down by powers of 10. To minimize rounding error, @@ -494,26 +428,33 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) * (exactly) the remaining power of 10 and perform one more * multiplication or division. */ - if (number < 1.0f) - { + if (number < 1.0f) { UNITY_DOUBLE factor = 1.0f; - while (number < (UNITY_DOUBLE)max_scaled / 1e10f) { number *= 1e10f; exponent -= 10; } - while (number * factor < (UNITY_DOUBLE)min_scaled) { factor *= 10.0f; exponent--; } + while (number < (UNITY_DOUBLE)max_scaled / 1e10f) { + number *= 1e10f; + exponent -= 10; + } + while (number * factor < (UNITY_DOUBLE)min_scaled) { + factor *= 10.0f; + exponent--; + } number *= factor; - } - else if (number > (UNITY_DOUBLE)max_scaled) - { + } else if (number > (UNITY_DOUBLE)max_scaled) { UNITY_DOUBLE divisor = 1.0f; - while (number > (UNITY_DOUBLE)min_scaled * 1e10f) { number /= 1e10f; exponent += 10; } - while (number / divisor > (UNITY_DOUBLE)max_scaled) { divisor *= 10.0f; exponent++; } + while (number > (UNITY_DOUBLE)min_scaled * 1e10f) { + number /= 1e10f; + exponent += 10; + } + while (number / divisor > (UNITY_DOUBLE)max_scaled) { + divisor *= 10.0f; + exponent++; + } number /= divisor; - } - else - { + } else { /* * In this range, we can split off the integer part before * doing any multiplications. This reduces rounding error by @@ -523,7 +464,11 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) n_int = (UNITY_INT32)number; number -= (UNITY_DOUBLE)n_int; - while (n_int < min_scaled) { n_int *= 10; factor *= 10.0f; exponent--; } + while (n_int < min_scaled) { + n_int *= 10; + factor *= 10.0f; + exponent--; + } number *= factor; } @@ -539,8 +484,7 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) n += n_int; - if (n >= max_scaled) - { + if (n >= max_scaled) { n = min_scaled; exponent++; } @@ -550,48 +494,41 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) exponent += decimals; /* truncate trailing zeroes after decimal point */ - while ((decimals > 0) && ((n % 10) == 0)) - { + while ((decimals > 0) && ((n % 10) == 0)) { n /= 10; decimals--; } /* build up buffer in reverse order */ digits = 0; - while ((n != 0) || (digits < (decimals + 1))) - { + while ((n != 0) || (digits < (decimals + 1))) { buf[digits++] = (char)('0' + n % 10); n /= 10; } - while (digits > 0) - { - if (digits == decimals) { UNITY_OUTPUT_CHAR('.'); } + while (digits > 0) { + if (digits == decimals) { + UNITY_OUTPUT_CHAR('.'); + } UNITY_OUTPUT_CHAR(buf[--digits]); } /* print exponent if needed */ - if (exponent != 0) - { + if (exponent != 0) { UNITY_OUTPUT_CHAR('e'); - if (exponent < 0) - { + if (exponent < 0) { UNITY_OUTPUT_CHAR('-'); exponent = -exponent; - } - else - { + } else { UNITY_OUTPUT_CHAR('+'); } digits = 0; - while ((exponent != 0) || (digits < 2)) - { + while ((exponent != 0) || (digits < 2)) { buf[digits++] = (char)('0' + exponent % 10); exponent /= 10; } - while (digits > 0) - { + while (digits > 0) { UNITY_OUTPUT_CHAR(buf[--digits]); } } @@ -600,8 +537,7 @@ void UnityPrintFloat(const UNITY_DOUBLE input_number) #endif /* ! UNITY_EXCLUDE_FLOAT_PRINT */ /*-----------------------------------------------*/ -static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) -{ +static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) { #ifdef UNITY_OUTPUT_FOR_ECLIPSE UNITY_OUTPUT_CHAR('('); UnityPrint(file); @@ -643,27 +579,20 @@ static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) } /*-----------------------------------------------*/ -static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line) -{ +static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line) { UnityTestResultsBegin(Unity.TestFile, line); UnityPrint(UnityStrFail); UNITY_OUTPUT_CHAR(':'); } /*-----------------------------------------------*/ -void UnityConcludeTest(void) -{ - if (Unity.CurrentTestIgnored) - { +void UnityConcludeTest(void) { + if (Unity.CurrentTestIgnored) { Unity.TestIgnores++; - } - else if (!Unity.CurrentTestFailed) - { + } else if (!Unity.CurrentTestFailed) { UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber); UnityPrint(UnityStrPass); - } - else - { + } else { Unity.TestFailures++; } @@ -675,18 +604,14 @@ void UnityConcludeTest(void) } /*-----------------------------------------------*/ -static void UnityAddMsgIfSpecified(const char* msg) -{ - if (msg) - { +static void UnityAddMsgIfSpecified(const char* msg) { + if (msg) { UnityPrint(UnityStrSpacer); #ifndef UNITY_EXCLUDE_DETAILS - if (Unity.CurrentDetail1) - { + if (Unity.CurrentDetail1) { UnityPrint(UnityStrDetail1Name); UnityPrint(Unity.CurrentDetail1); - if (Unity.CurrentDetail2) - { + if (Unity.CurrentDetail2) { UnityPrint(UnityStrDetail2Name); UnityPrint(Unity.CurrentDetail2); } @@ -698,57 +623,43 @@ static void UnityAddMsgIfSpecified(const char* msg) } /*-----------------------------------------------*/ -static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual) -{ +static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual) { UnityPrint(UnityStrExpected); - if (expected != NULL) - { + if (expected != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrint(expected); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } UnityPrint(UnityStrWas); - if (actual != NULL) - { + if (actual != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrint(actual); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } } /*-----------------------------------------------*/ static void UnityPrintExpectedAndActualStringsLen(const char* expected, - const char* actual, - const UNITY_UINT32 length) -{ + const char* actual, + const UNITY_UINT32 length) { UnityPrint(UnityStrExpected); - if (expected != NULL) - { + if (expected != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrintLen(expected, length); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } UnityPrint(UnityStrWas); - if (actual != NULL) - { + if (actual != NULL) { UNITY_OUTPUT_CHAR('\''); UnityPrintLen(actual, length); UNITY_OUTPUT_CHAR('\''); - } - else - { + } else { UnityPrint(UnityStrNull); } } @@ -759,16 +670,16 @@ static void UnityPrintExpectedAndActualStringsLen(const char* expected, /*-----------------------------------------------*/ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_LINE_TYPE lineNumber, - const char* msg) -{ + UNITY_INTERNAL_PTR actual, + const UNITY_LINE_TYPE lineNumber, + const char* msg) { /* Both are NULL or same pointer */ - if (expected == actual) { return 0; } + if (expected == actual) { + return 0; + } /* print and return true if just expected is NULL */ - if (expected == NULL) - { + if (expected == NULL) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrNullPointerForExpected); UnityAddMsgIfSpecified(msg); @@ -776,8 +687,7 @@ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, } /* print and return true if just actual is NULL */ - if (actual == NULL) - { + if (actual == NULL) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrNullPointerForActual); UnityAddMsgIfSpecified(msg); @@ -793,15 +703,13 @@ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ void UnityAssertBits(const UNITY_INT mask, - const UNITY_INT expected, - const UNITY_INT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { RETURN_IF_FAIL_OR_IGNORE; - if ((mask & expected) != (mask & actual)) - { + if ((mask & expected) != (mask & actual)) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); UnityPrintMask((UNITY_UINT)mask, (UNITY_UINT)expected); @@ -814,15 +722,13 @@ void UnityAssertBits(const UNITY_INT mask, /*-----------------------------------------------*/ void UnityAssertEqualNumber(const UNITY_INT expected, - const UNITY_INT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style) -{ + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) { RETURN_IF_FAIL_OR_IGNORE; - if (expected != actual) - { + if (expected != actual) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); UnityPrintNumberByStyle(expected, style); @@ -835,120 +741,127 @@ void UnityAssertEqualNumber(const UNITY_INT expected, /*-----------------------------------------------*/ void UnityAssertGreaterOrLessOrEqualNumber(const UNITY_INT threshold, - const UNITY_INT actual, - const UNITY_COMPARISON_T compare, - const char *msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style) -{ + const UNITY_INT actual, + const UNITY_COMPARISON_T compare, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) { int failed = 0; RETURN_IF_FAIL_OR_IGNORE; - if ((threshold == actual) && (compare & UNITY_EQUAL_TO)) { return; } - if ((threshold == actual)) { failed = 1; } - - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } - if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + if ((threshold == actual) && (compare & UNITY_EQUAL_TO)) { + return; } - else /* UINT or HEX */ - { - if (((UNITY_UINT)actual > (UNITY_UINT)threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } - if (((UNITY_UINT)actual < (UNITY_UINT)threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + if ((threshold == actual)) { + failed = 1; } - if (failed) + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) { + failed = 1; + } + if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) { + failed = 1; + } + } else /* UINT or HEX */ { + if (((UNITY_UINT)actual > (UNITY_UINT)threshold) && (compare & UNITY_SMALLER_THAN)) { + failed = 1; + } + if (((UNITY_UINT)actual < (UNITY_UINT)threshold) && (compare & UNITY_GREATER_THAN)) { + failed = 1; + } + } + + if (failed) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); UnityPrintNumberByStyle(actual, style); - if (compare & UNITY_GREATER_THAN) { UnityPrint(UnityStrGt); } - if (compare & UNITY_SMALLER_THAN) { UnityPrint(UnityStrLt); } - if (compare & UNITY_EQUAL_TO) { UnityPrint(UnityStrOrEqual); } + if (compare & UNITY_GREATER_THAN) { + UnityPrint(UnityStrGt); + } + if (compare & UNITY_SMALLER_THAN) { + UnityPrint(UnityStrLt); + } + if (compare & UNITY_EQUAL_TO) { + UnityPrint(UnityStrOrEqual); + } UnityPrintNumberByStyle(threshold, style); UnityAddMsgIfSpecified(msg); UNITY_FAIL_AND_BAIL; } } -#define UnityPrintPointlessAndBail() \ -{ \ - UnityTestResultsFailBegin(lineNumber); \ - UnityPrint(UnityStrPointless); \ - UnityAddMsgIfSpecified(msg); \ - UNITY_FAIL_AND_BAIL; } +#define UnityPrintPointlessAndBail() \ + { \ + UnityTestResultsFailBegin(lineNumber); \ + UnityPrint(UnityStrPointless); \ + UnityAddMsgIfSpecified(msg); \ + UNITY_FAIL_AND_BAIL; \ + } /*-----------------------------------------------*/ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style, - const UNITY_FLAGS_T flags) -{ - UNITY_UINT32 elements = num_elements; - unsigned int length = style & 0xF; + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags) { + UNITY_UINT32 elements = num_elements; + unsigned int length = style & 0xF; unsigned int increment = 0; RETURN_IF_FAIL_OR_IGNORE; - if (num_elements == 0) - { + if (num_elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while ((elements > 0) && (elements--)) - { + while ((elements > 0) && (elements--)) { UNITY_INT expect_val; UNITY_INT actual_val; - switch (length) - { - case 1: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; - increment = sizeof(UNITY_INT8); - break; + switch (length) { + case 1: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; + increment = sizeof(UNITY_INT8); + break; - case 2: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; - increment = sizeof(UNITY_INT16); - break; + case 2: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; + increment = sizeof(UNITY_INT16); + break; #ifdef UNITY_SUPPORT_64 - case 8: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; - increment = sizeof(UNITY_INT64); - break; + case 8: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; + increment = sizeof(UNITY_INT64); + break; #endif - default: /* default is length 4 bytes */ - case 4: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; - increment = sizeof(UNITY_INT32); - length = 4; - break; + default: /* default is length 4 bytes */ + case 4: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; + increment = sizeof(UNITY_INT32); + length = 4; + break; } - if (expect_val != actual_val) - { - if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) - { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ + if (expect_val != actual_val) { + if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ UNITY_INT mask = 1; mask = (mask << 8 * length) - 1; expect_val &= mask; @@ -965,8 +878,7 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, UNITY_FAIL_AND_BAIL; } /* Walk through array by incrementing the pointers */ - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment); } actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment); @@ -976,72 +888,70 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ #ifndef UNITY_EXCLUDE_FLOAT /* Wrap this define in a function with variable types as float or double */ -#define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff) \ - if (isinf(expected) && isinf(actual) && (((expected) < 0) == ((actual) < 0))) return 1; \ - if (UNITY_NAN_CHECK) return 1; \ - (diff) = (actual) - (expected); \ - if ((diff) < 0) (diff) = -(diff); \ - if ((delta) < 0) (delta) = -(delta); \ +#define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff) \ + if (isinf(expected) && isinf(actual) && (((expected) < 0) == ((actual) < 0))) \ + return 1; \ + if (UNITY_NAN_CHECK) \ + return 1; \ + (diff) = (actual) - (expected); \ + if ((diff) < 0) \ + (diff) = -(diff); \ + if ((delta) < 0) \ + (delta) = -(delta); \ return !(isnan(diff) || isinf(diff) || ((diff) > (delta))) - /* This first part of this condition will catch any NaN or Infinite values */ +/* This first part of this condition will catch any NaN or Infinite values */ #ifndef UNITY_NAN_NOT_EQUAL_NAN - #define UNITY_NAN_CHECK isnan(expected) && isnan(actual) +#define UNITY_NAN_CHECK isnan(expected) && isnan(actual) #else - #define UNITY_NAN_CHECK 0 +#define UNITY_NAN_CHECK 0 #endif #ifndef UNITY_EXCLUDE_FLOAT_PRINT - #define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ - { \ - UnityPrint(UnityStrExpected); \ - UnityPrintFloat(expected); \ - UnityPrint(UnityStrWas); \ - UnityPrintFloat(actual); } +#define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ + { \ + UnityPrint(UnityStrExpected); \ + UnityPrintFloat(expected); \ + UnityPrint(UnityStrWas); \ + UnityPrintFloat(actual); \ + } #else - #define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ +#define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ UnityPrint(UnityStrDelta) #endif /* UNITY_EXCLUDE_FLOAT_PRINT */ /*-----------------------------------------------*/ -static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) -{ +static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) { UNITY_FLOAT diff; UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff); } /*-----------------------------------------------*/ void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, - UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_UINT32 elements = num_elements; UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_expected = expected; UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_actual = actual; RETURN_IF_FAIL_OR_IGNORE; - if (elements == 0) - { + if (elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while (elements--) - { - if (!UnityFloatsWithin(*ptr_expected * UNITY_FLOAT_PRECISION, *ptr_expected, *ptr_actual)) - { + while (elements--) { + if (!UnityFloatsWithin(*ptr_expected * UNITY_FLOAT_PRECISION, *ptr_expected, *ptr_actual)) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(num_elements - elements - 1); @@ -1049,8 +959,7 @@ void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, UnityAddMsgIfSpecified(msg); UNITY_FAIL_AND_BAIL; } - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { ptr_expected++; } ptr_actual++; @@ -1059,16 +968,13 @@ void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, /*-----------------------------------------------*/ void UnityAssertFloatsWithin(const UNITY_FLOAT delta, - const UNITY_FLOAT expected, - const UNITY_FLOAT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const UNITY_FLOAT expected, + const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { RETURN_IF_FAIL_OR_IGNORE; - - if (!UnityFloatsWithin(delta, expected, actual)) - { + if (!UnityFloatsWithin(delta, expected, actual)) { UnityTestResultsFailBegin(lineNumber); UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT((UNITY_DOUBLE)expected, (UNITY_DOUBLE)actual); UnityAddMsgIfSpecified(msg); @@ -1078,50 +984,46 @@ void UnityAssertFloatsWithin(const UNITY_FLOAT delta, /*-----------------------------------------------*/ void UnityAssertFloatSpecial(const UNITY_FLOAT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLOAT_TRAIT_T style) -{ - const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet}; + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style) { + const char* trait_names[] = { UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet }; UNITY_INT should_be_trait = ((UNITY_INT)style & 1); - UNITY_INT is_trait = !should_be_trait; - UNITY_INT trait_index = (UNITY_INT)(style >> 1); + UNITY_INT is_trait = !should_be_trait; + UNITY_INT trait_index = (UNITY_INT)(style >> 1); RETURN_IF_FAIL_OR_IGNORE; - switch (style) - { - case UNITY_FLOAT_IS_INF: - case UNITY_FLOAT_IS_NOT_INF: - is_trait = isinf(actual) && (actual > 0); - break; - case UNITY_FLOAT_IS_NEG_INF: - case UNITY_FLOAT_IS_NOT_NEG_INF: - is_trait = isinf(actual) && (actual < 0); - break; + switch (style) { + case UNITY_FLOAT_IS_INF: + case UNITY_FLOAT_IS_NOT_INF: + is_trait = isinf(actual) && (actual > 0); + break; + case UNITY_FLOAT_IS_NEG_INF: + case UNITY_FLOAT_IS_NOT_NEG_INF: + is_trait = isinf(actual) && (actual < 0); + break; - case UNITY_FLOAT_IS_NAN: - case UNITY_FLOAT_IS_NOT_NAN: - is_trait = isnan(actual) ? 1 : 0; - break; + case UNITY_FLOAT_IS_NAN: + case UNITY_FLOAT_IS_NOT_NAN: + is_trait = isnan(actual) ? 1 : 0; + break; - case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ - case UNITY_FLOAT_IS_NOT_DET: - is_trait = !isinf(actual) && !isnan(actual); - break; + case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ + case UNITY_FLOAT_IS_NOT_DET: + is_trait = !isinf(actual) && !isnan(actual); + break; - default: - trait_index = 0; - trait_names[0] = UnityStrInvalidFloatTrait; - break; + default: + trait_index = 0; + trait_names[0] = UnityStrInvalidFloatTrait; + break; } - if (is_trait != should_be_trait) - { + if (is_trait != should_be_trait) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); - if (!should_be_trait) - { + if (!should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1129,8 +1031,7 @@ void UnityAssertFloatSpecial(const UNITY_FLOAT actual, #ifndef UNITY_EXCLUDE_FLOAT_PRINT UnityPrintFloat((UNITY_DOUBLE)actual); #else - if (should_be_trait) - { + if (should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1144,45 +1045,38 @@ void UnityAssertFloatSpecial(const UNITY_FLOAT actual, /*-----------------------------------------------*/ #ifndef UNITY_EXCLUDE_DOUBLE -static int UnityDoublesWithin(UNITY_DOUBLE delta, UNITY_DOUBLE expected, UNITY_DOUBLE actual) -{ +static int UnityDoublesWithin(UNITY_DOUBLE delta, UNITY_DOUBLE expected, UNITY_DOUBLE actual) { UNITY_DOUBLE diff; UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff); } /*-----------------------------------------------*/ void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected, - UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_UINT32 elements = num_elements; UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_expected = expected; UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_actual = actual; RETURN_IF_FAIL_OR_IGNORE; - if (elements == 0) - { + if (elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while (elements--) - { - if (!UnityDoublesWithin(*ptr_expected * UNITY_DOUBLE_PRECISION, *ptr_expected, *ptr_actual)) - { + while (elements--) { + if (!UnityDoublesWithin(*ptr_expected * UNITY_DOUBLE_PRECISION, *ptr_expected, *ptr_actual)) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(num_elements - elements - 1); @@ -1190,8 +1084,7 @@ void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expecte UnityAddMsgIfSpecified(msg); UNITY_FAIL_AND_BAIL; } - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { ptr_expected++; } ptr_actual++; @@ -1200,15 +1093,13 @@ void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expecte /*-----------------------------------------------*/ void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, - const UNITY_DOUBLE expected, - const UNITY_DOUBLE actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const UNITY_DOUBLE expected, + const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { RETURN_IF_FAIL_OR_IGNORE; - if (!UnityDoublesWithin(delta, expected, actual)) - { + if (!UnityDoublesWithin(delta, expected, actual)) { UnityTestResultsFailBegin(lineNumber); UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual); UnityAddMsgIfSpecified(msg); @@ -1218,50 +1109,46 @@ void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, /*-----------------------------------------------*/ void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLOAT_TRAIT_T style) -{ - const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet}; + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style) { + const char* trait_names[] = { UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet }; UNITY_INT should_be_trait = ((UNITY_INT)style & 1); - UNITY_INT is_trait = !should_be_trait; - UNITY_INT trait_index = (UNITY_INT)(style >> 1); + UNITY_INT is_trait = !should_be_trait; + UNITY_INT trait_index = (UNITY_INT)(style >> 1); RETURN_IF_FAIL_OR_IGNORE; - switch (style) - { - case UNITY_FLOAT_IS_INF: - case UNITY_FLOAT_IS_NOT_INF: - is_trait = isinf(actual) && (actual > 0); - break; - case UNITY_FLOAT_IS_NEG_INF: - case UNITY_FLOAT_IS_NOT_NEG_INF: - is_trait = isinf(actual) && (actual < 0); - break; + switch (style) { + case UNITY_FLOAT_IS_INF: + case UNITY_FLOAT_IS_NOT_INF: + is_trait = isinf(actual) && (actual > 0); + break; + case UNITY_FLOAT_IS_NEG_INF: + case UNITY_FLOAT_IS_NOT_NEG_INF: + is_trait = isinf(actual) && (actual < 0); + break; - case UNITY_FLOAT_IS_NAN: - case UNITY_FLOAT_IS_NOT_NAN: - is_trait = isnan(actual) ? 1 : 0; - break; + case UNITY_FLOAT_IS_NAN: + case UNITY_FLOAT_IS_NOT_NAN: + is_trait = isnan(actual) ? 1 : 0; + break; - case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ - case UNITY_FLOAT_IS_NOT_DET: - is_trait = !isinf(actual) && !isnan(actual); - break; + case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ + case UNITY_FLOAT_IS_NOT_DET: + is_trait = !isinf(actual) && !isnan(actual); + break; - default: - trait_index = 0; - trait_names[0] = UnityStrInvalidFloatTrait; - break; + default: + trait_index = 0; + trait_names[0] = UnityStrInvalidFloatTrait; + break; } - if (is_trait != should_be_trait) - { + if (is_trait != should_be_trait) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrExpected); - if (!should_be_trait) - { + if (!should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1269,8 +1156,7 @@ void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, #ifndef UNITY_EXCLUDE_FLOAT_PRINT UnityPrintFloat(actual); #else - if (should_be_trait) - { + if (should_be_trait) { UnityPrint(UnityStrNot); } UnityPrint(trait_names[trait_index]); @@ -1284,39 +1170,28 @@ void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, /*-----------------------------------------------*/ void UnityAssertNumbersWithin(const UNITY_UINT delta, - const UNITY_INT expected, - const UNITY_INT actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style) -{ + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) { RETURN_IF_FAIL_OR_IGNORE; - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if (actual > expected) - { + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if (actual > expected) { Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta); } - } - else - { - if ((UNITY_UINT)actual > (UNITY_UINT)expected) - { + } else { + if ((UNITY_UINT)actual > (UNITY_UINT)expected) { Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta); } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrDelta); UnityPrintNumberByStyle((UNITY_INT)delta, style); @@ -1331,98 +1206,81 @@ void UnityAssertNumbersWithin(const UNITY_UINT delta, /*-----------------------------------------------*/ void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, - UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_DISPLAY_STYLE_T style, - const UNITY_FLAGS_T flags) -{ + UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags) { UNITY_UINT32 elements = num_elements; - unsigned int length = style & 0xF; + unsigned int length = style & 0xF; unsigned int increment = 0; RETURN_IF_FAIL_OR_IGNORE; - if (num_elements == 0) - { + if (num_elements == 0) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while ((elements > 0) && (elements--)) - { + while ((elements > 0) && (elements--)) { UNITY_INT expect_val; UNITY_INT actual_val; - switch (length) - { - case 1: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; - increment = sizeof(UNITY_INT8); - break; + switch (length) { + case 1: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; + increment = sizeof(UNITY_INT8); + break; - case 2: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; - increment = sizeof(UNITY_INT16); - break; + case 2: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; + increment = sizeof(UNITY_INT16); + break; #ifdef UNITY_SUPPORT_64 - case 8: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; - increment = sizeof(UNITY_INT64); - break; + case 8: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; + increment = sizeof(UNITY_INT64); + break; #endif - default: /* default is length 4 bytes */ - case 4: - expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; - actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; - increment = sizeof(UNITY_INT32); - length = 4; - break; + default: /* default is length 4 bytes */ + case 4: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; + increment = sizeof(UNITY_INT32); + length = 4; + break; } - if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) - { - if (actual_val > expect_val) - { + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + if (actual_val > expect_val) { Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta); } - } - else - { - if ((UNITY_UINT)actual_val > (UNITY_UINT)expect_val) - { + } else { + if ((UNITY_UINT)actual_val > (UNITY_UINT)expect_val) { Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta); - } - else - { + } else { Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta); } } - if (Unity.CurrentTestFailed) - { - if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) - { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ + if (Unity.CurrentTestFailed) { + if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ UNITY_INT mask = 1; mask = (mask << 8 * length) - 1; expect_val &= mask; @@ -1441,8 +1299,7 @@ void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, UNITY_FAIL_AND_BAIL; } /* Walk through array by incrementing the pointers */ - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment); } actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment); @@ -1451,36 +1308,28 @@ void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, /*-----------------------------------------------*/ void UnityAssertEqualString(const char* expected, - const char* actual, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const char* actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { UNITY_UINT32 i; RETURN_IF_FAIL_OR_IGNORE; /* if both pointers not null compare the strings */ - if (expected && actual) - { - for (i = 0; expected[i] || actual[i]; i++) - { - if (expected[i] != actual[i]) - { + if (expected && actual) { + for (i = 0; expected[i] || actual[i]; i++) { + if (expected[i] != actual[i]) { Unity.CurrentTestFailed = 1; break; } } - } - else - { /* handle case of one pointers being null (if both null, test should pass) */ - if (expected != actual) - { + } else { /* handle case of one pointers being null (if both null, test should pass) */ + if (expected != actual) { Unity.CurrentTestFailed = 1; } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); UnityPrintExpectedAndActualStrings(expected, actual); UnityAddMsgIfSpecified(msg); @@ -1490,37 +1339,29 @@ void UnityAssertEqualString(const char* expected, /*-----------------------------------------------*/ void UnityAssertEqualStringLen(const char* expected, - const char* actual, - const UNITY_UINT32 length, - const char* msg, - const UNITY_LINE_TYPE lineNumber) -{ + const char* actual, + const UNITY_UINT32 length, + const char* msg, + const UNITY_LINE_TYPE lineNumber) { UNITY_UINT32 i; RETURN_IF_FAIL_OR_IGNORE; /* if both pointers not null compare the strings */ - if (expected && actual) - { - for (i = 0; (i < length) && (expected[i] || actual[i]); i++) - { - if (expected[i] != actual[i]) - { + if (expected && actual) { + for (i = 0; (i < length) && (expected[i] || actual[i]); i++) { + if (expected[i] != actual[i]) { Unity.CurrentTestFailed = 1; break; } } - } - else - { /* handle case of one pointers being null (if both null, test should pass) */ - if (expected != actual) - { + } else { /* handle case of one pointers being null (if both null, test should pass) */ + if (expected != actual) { Unity.CurrentTestFailed = 1; } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); UnityPrintExpectedAndActualStringsLen(expected, actual, length); UnityAddMsgIfSpecified(msg); @@ -1530,12 +1371,11 @@ void UnityAssertEqualStringLen(const char* expected, /*-----------------------------------------------*/ void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, - const char** actual, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + const char** actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_UINT32 i = 0; UNITY_UINT32 j = 0; const char* expd = NULL; @@ -1544,59 +1384,45 @@ void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, RETURN_IF_FAIL_OR_IGNORE; /* if no elements, it's an error */ - if (num_elements == 0) - { + if (num_elements == 0) { UnityPrintPointlessAndBail(); } - if ((const void*)expected == (const void*)actual) - { + if ((const void*)expected == (const void*)actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - if (flags != UNITY_ARRAY_TO_ARRAY) - { + if (flags != UNITY_ARRAY_TO_ARRAY) { expd = (const char*)expected; } - do - { + do { act = actual[j]; - if (flags == UNITY_ARRAY_TO_ARRAY) - { + if (flags == UNITY_ARRAY_TO_ARRAY) { expd = ((const char* const*)expected)[j]; } /* if both pointers not null compare the strings */ - if (expd && act) - { - for (i = 0; expd[i] || act[i]; i++) - { - if (expd[i] != act[i]) - { + if (expd && act) { + for (i = 0; expd[i] || act[i]; i++) { + if (expd[i] != act[i]) { Unity.CurrentTestFailed = 1; break; } } - } - else - { /* handle case of one pointers being null (if both null, test should pass) */ - if (expd != act) - { + } else { /* handle case of one pointers being null (if both null, test should pass) */ + if (expd != act) { Unity.CurrentTestFailed = 1; } } - if (Unity.CurrentTestFailed) - { + if (Unity.CurrentTestFailed) { UnityTestResultsFailBegin(lineNumber); - if (num_elements > 1) - { + if (num_elements > 1) { UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(j); } @@ -1609,13 +1435,12 @@ void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, - UNITY_INTERNAL_PTR actual, - const UNITY_UINT32 length, - const UNITY_UINT32 num_elements, - const char* msg, - const UNITY_LINE_TYPE lineNumber, - const UNITY_FLAGS_T flags) -{ + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 length, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) { UNITY_PTR_ATTRIBUTE const unsigned char* ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected; UNITY_PTR_ATTRIBUTE const unsigned char* ptr_act = (UNITY_PTR_ATTRIBUTE const unsigned char*)actual; UNITY_UINT32 elements = num_elements; @@ -1623,32 +1448,25 @@ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, RETURN_IF_FAIL_OR_IGNORE; - if ((elements == 0) || (length == 0)) - { + if ((elements == 0) || (length == 0)) { UnityPrintPointlessAndBail(); } - if (expected == actual) - { + if (expected == actual) { return; /* Both are NULL or same pointer */ } - if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) - { + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) { UNITY_FAIL_AND_BAIL; } - while (elements--) - { + while (elements--) { bytes = length; - while (bytes--) - { - if (*ptr_exp != *ptr_act) - { + while (bytes--) { + if (*ptr_exp != *ptr_act) { UnityTestResultsFailBegin(lineNumber); UnityPrint(UnityStrMemory); - if (num_elements > 1) - { + if (num_elements > 1) { UnityPrint(UnityStrElement); UnityPrintNumberUnsigned(num_elements - elements - 1); } @@ -1664,8 +1482,7 @@ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, ptr_exp++; ptr_act++; } - if (flags == UNITY_ARRAY_TO_VAL) - { + if (flags == UNITY_ARRAY_TO_VAL) { ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected; } } @@ -1673,8 +1490,7 @@ void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, /*-----------------------------------------------*/ -static union -{ +static union { UNITY_INT8 i8; UNITY_INT16 i16; UNITY_INT32 i32; @@ -1689,34 +1505,31 @@ static union #endif } UnityQuickCompare; -UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size) -{ - switch(size) - { - case 1: - UnityQuickCompare.i8 = (UNITY_INT8)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8); +UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size) { + switch (size) { + case 1: + UnityQuickCompare.i8 = (UNITY_INT8)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8); - case 2: - UnityQuickCompare.i16 = (UNITY_INT16)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16); + case 2: + UnityQuickCompare.i16 = (UNITY_INT16)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16); #ifdef UNITY_SUPPORT_64 - case 8: - UnityQuickCompare.i64 = (UNITY_INT64)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64); + case 8: + UnityQuickCompare.i64 = (UNITY_INT64)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64); #endif - default: /* 4 bytes */ - UnityQuickCompare.i32 = (UNITY_INT32)num; - return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32); + default: /* 4 bytes */ + UnityQuickCompare.i32 = (UNITY_INT32)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32); } } #ifndef UNITY_EXCLUDE_FLOAT /*-----------------------------------------------*/ -UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) -{ +UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) { UnityQuickCompare.f = num; return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.f); } @@ -1724,8 +1537,7 @@ UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) #ifndef UNITY_EXCLUDE_DOUBLE /*-----------------------------------------------*/ -UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) -{ +UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) { UnityQuickCompare.d = num; return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.d); } @@ -1736,31 +1548,26 @@ UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) *-----------------------------------------------*/ /*-----------------------------------------------*/ -void UnityFail(const char* msg, const UNITY_LINE_TYPE line) -{ +void UnityFail(const char* msg, const UNITY_LINE_TYPE line) { RETURN_IF_FAIL_OR_IGNORE; UnityTestResultsBegin(Unity.TestFile, line); UnityPrint(UnityStrFail); - if (msg != NULL) - { + if (msg != NULL) { UNITY_OUTPUT_CHAR(':'); #ifndef UNITY_EXCLUDE_DETAILS - if (Unity.CurrentDetail1) - { + if (Unity.CurrentDetail1) { UnityPrint(UnityStrDetail1Name); UnityPrint(Unity.CurrentDetail1); - if (Unity.CurrentDetail2) - { + if (Unity.CurrentDetail2) { UnityPrint(UnityStrDetail2Name); UnityPrint(Unity.CurrentDetail2); } UnityPrint(UnityStrSpacer); } #endif - if (msg[0] != ' ') - { + if (msg[0] != ' ') { UNITY_OUTPUT_CHAR(' '); } UnityPrint(msg); @@ -1770,14 +1577,12 @@ void UnityFail(const char* msg, const UNITY_LINE_TYPE line) } /*-----------------------------------------------*/ -void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) -{ +void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) { RETURN_IF_FAIL_OR_IGNORE; UnityTestResultsBegin(Unity.TestFile, line); UnityPrint(UnityStrIgnore); - if (msg != NULL) - { + if (msg != NULL) { UNITY_OUTPUT_CHAR(':'); UNITY_OUTPUT_CHAR(' '); UnityPrint(msg); @@ -1786,34 +1591,31 @@ void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) } /*-----------------------------------------------*/ -void UnityMessage(const char* msg, const UNITY_LINE_TYPE line) -{ +void UnityMessage(const char* msg, const UNITY_LINE_TYPE line) { UnityTestResultsBegin(Unity.TestFile, line); UnityPrint("INFO"); - if (msg != NULL) - { - UNITY_OUTPUT_CHAR(':'); - UNITY_OUTPUT_CHAR(' '); - UnityPrint(msg); + if (msg != NULL) { + UNITY_OUTPUT_CHAR(':'); + UNITY_OUTPUT_CHAR(' '); + UnityPrint(msg); } UNITY_PRINT_EOL(); } /*-----------------------------------------------*/ -void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum) -{ +void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum) { Unity.CurrentTestName = FuncName; Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)FuncLineNum; + if (!UnityTestMatches()) + return; Unity.NumberOfTests++; UNITY_CLR_DETAILS(); UNITY_EXEC_TIME_START(); - if (TEST_PROTECT()) - { + if (TEST_PROTECT()) { setUp(); Func(); } - if (TEST_PROTECT()) - { + if (TEST_PROTECT()) { tearDown(); } UNITY_EXEC_TIME_STOP(); @@ -1821,14 +1623,12 @@ void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int } /*-----------------------------------------------*/ -void UnitySetTestFile(const char* filename) -{ +void UnitySetTestFile(const char* filename) { Unity.TestFile = filename; } /*-----------------------------------------------*/ -void UnityBegin(const char* filename) -{ +void UnityBegin(const char* filename) { Unity.TestFile = filename; Unity.CurrentTestName = NULL; Unity.CurrentTestLineNumber = 0; @@ -1843,8 +1643,7 @@ void UnityBegin(const char* filename) } /*-----------------------------------------------*/ -int UnityEnd(void) -{ +int UnityEnd(void) { UNITY_PRINT_EOL(); UnityPrint(UnityStrBreaker); UNITY_PRINT_EOL(); @@ -1855,15 +1654,13 @@ int UnityEnd(void) UnityPrintNumber((UNITY_INT)(Unity.TestIgnores)); UnityPrint(UnityStrResultsIgnored); UNITY_PRINT_EOL(); - if (Unity.TestFailures == 0U) - { + if (Unity.TestFailures == 0U) { UnityPrint(UnityStrOk); - } - else - { + } else { UnityPrint(UnityStrFail); #ifdef UNITY_DIFFERENTIATE_FINAL_FAIL - UNITY_OUTPUT_CHAR('E'); UNITY_OUTPUT_CHAR('D'); + UNITY_OUTPUT_CHAR('E'); + UNITY_OUTPUT_CHAR('D'); #endif } UNITY_PRINT_EOL(); @@ -1875,71 +1672,57 @@ int UnityEnd(void) /*----------------------------------------------- * Command Line Argument Support *-----------------------------------------------*/ -#ifdef UNITY_USE_COMMAND_LINE_ARGS +// #ifdef UNITY_USE_COMMAND_LINE_ARGS char* UnityOptionIncludeNamed = NULL; char* UnityOptionExcludeNamed = NULL; -int UnityVerbosity = 1; +int UnityVerbosity = 1; /*-----------------------------------------------*/ -int UnityParseOptions(int argc, char** argv) -{ +int UnityParseOptions(int argc, char** argv) { int i; UnityOptionIncludeNamed = NULL; UnityOptionExcludeNamed = NULL; - for (i = 1; i < argc; i++) - { - if (argv[i][0] == '-') - { - switch (argv[i][1]) - { - case 'l': /* list tests */ - return -1; - case 'n': /* include tests with name including this string */ - case 'f': /* an alias for -n */ - if (argv[i][2] == '=') - { - UnityOptionIncludeNamed = &argv[i][3]; - } - else if (++i < argc) - { - UnityOptionIncludeNamed = argv[i]; - } - else - { - UnityPrint("ERROR: No Test String to Include Matches For"); - UNITY_PRINT_EOL(); - return 1; - } - break; - case 'q': /* quiet */ - UnityVerbosity = 0; - break; - case 'v': /* verbose */ - UnityVerbosity = 2; - break; - case 'x': /* exclude tests with name including this string */ - if (argv[i][2] == '=') - { - UnityOptionExcludeNamed = &argv[i][3]; - } - else if (++i < argc) - { - UnityOptionExcludeNamed = argv[i]; - } - else - { - UnityPrint("ERROR: No Test String to Exclude Matches For"); - UNITY_PRINT_EOL(); - return 1; - } - break; - default: - UnityPrint("ERROR: Unknown Option "); - UNITY_OUTPUT_CHAR(argv[i][1]); + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { + case 'l': /* list tests */ + return -1; + case 'n': /* include tests with name including this string */ + case 'f': /* an alias for -n */ + if (argv[i][2] == '=') { + UnityOptionIncludeNamed = &argv[i][3]; + } else if (++i < argc) { + UnityOptionIncludeNamed = argv[i]; + } else { + UnityPrint("ERROR: No Test String to Include Matches For"); UNITY_PRINT_EOL(); return 1; + } + break; + case 'q': /* quiet */ + UnityVerbosity = 0; + break; + case 'v': /* verbose */ + UnityVerbosity = 2; + break; + case 'x': /* exclude tests with name including this string */ + if (argv[i][2] == '=') { + UnityOptionExcludeNamed = &argv[i][3]; + } else if (++i < argc) { + UnityOptionExcludeNamed = argv[i]; + } else { + UnityPrint("ERROR: No Test String to Exclude Matches For"); + UNITY_PRINT_EOL(); + return 1; + } + break; + default: + UnityPrint("ERROR: Unknown Option "); + UNITY_OUTPUT_CHAR(argv[i][1]); + UNITY_PRINT_EOL(); + return 1; } } } @@ -1948,24 +1731,20 @@ int UnityParseOptions(int argc, char** argv) } /*-----------------------------------------------*/ -int IsStringInBiggerString(const char* longstring, const char* shortstring) -{ +int IsStringInBiggerString(const char* longstring, const char* shortstring) { const char* lptr = longstring; const char* sptr = shortstring; const char* lnext = lptr; - if (*sptr == '*') - { + if (*sptr == '*') { return 1; } - while (*lptr) - { + while (*lptr) { lnext = lptr + 1; /* If they current bytes match, go on to the next bytes */ - while (*lptr && *sptr && (*lptr == *sptr)) - { + while (*lptr && *sptr && (*lptr == *sptr)) { lptr++; sptr++; @@ -1993,8 +1772,7 @@ int IsStringInBiggerString(const char* longstring, const char* shortstring) } /*-----------------------------------------------*/ -int UnityStringArgumentMatches(const char* str) -{ +int UnityStringArgumentMatches(const char* str) { int retval; const char* ptr1; const char* ptr2; @@ -2002,49 +1780,40 @@ int UnityStringArgumentMatches(const char* str) /* Go through the options and get the substrings for matching one at a time */ ptr1 = str; - while (ptr1[0] != 0) - { - if ((ptr1[0] == '"') || (ptr1[0] == '\'')) - { + while (ptr1[0] != 0) { + if ((ptr1[0] == '"') || (ptr1[0] == '\'')) { ptr1++; } /* look for the start of the next partial */ ptr2 = ptr1; ptrf = 0; - do - { + do { ptr2++; - if ((ptr2[0] == ':') && (ptr2[1] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')) - { + if ((ptr2[0] == ':') && (ptr2[1] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')) { ptrf = &ptr2[1]; } } while ((ptr2[0] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')); - while ((ptr2[0] != 0) && ((ptr2[0] == ':') || (ptr2[0] == '\'') || (ptr2[0] == '"') || (ptr2[0] == ','))) - { + while ((ptr2[0] != 0) && ((ptr2[0] == ':') || (ptr2[0] == '\'') || (ptr2[0] == '"') || (ptr2[0] == ','))) { ptr2++; } /* done if complete filename match */ retval = IsStringInBiggerString(Unity.TestFile, ptr1); - if (retval == 1) - { + if (retval == 1) { return retval; } /* done if testname match after filename partial match */ - if ((retval == 2) && (ptrf != 0)) - { - if (IsStringInBiggerString(Unity.CurrentTestName, ptrf)) - { + if ((retval == 2) && (ptrf != 0)) { + if (IsStringInBiggerString(Unity.CurrentTestName, ptrf)) { return 1; } } /* done if complete testname match */ - if (IsStringInBiggerString(Unity.CurrentTestName, ptr1) == 1) - { + if (IsStringInBiggerString(Unity.CurrentTestName, ptr1) == 1) { return 1; } @@ -2056,24 +1825,18 @@ int UnityStringArgumentMatches(const char* str) } /*-----------------------------------------------*/ -int UnityTestMatches(void) -{ +int UnityTestMatches(void) { /* Check if this test name matches the included test pattern */ int retval; - if (UnityOptionIncludeNamed) - { + if (UnityOptionIncludeNamed) { retval = UnityStringArgumentMatches(UnityOptionIncludeNamed); - } - else - { + } else { retval = 1; } /* Check if this test name matches the excluded test pattern */ - if (UnityOptionExcludeNamed) - { - if (UnityStringArgumentMatches(UnityOptionExcludeNamed)) - { + if (UnityOptionExcludeNamed) { + if (UnityStringArgumentMatches(UnityOptionExcludeNamed)) { retval = 0; } } @@ -2081,5 +1844,5 @@ int UnityTestMatches(void) return retval; } -#endif /* UNITY_USE_COMMAND_LINE_ARGS */ +//#endif /* UNITY_USE_COMMAND_LINE_ARGS */ /*-----------------------------------------------*/ diff --git a/test/framework/unity_internals.h b/test/framework/unity_internals.h index a9a7ea23..7dc6b5d9 100755 --- a/test/framework/unity_internals.h +++ b/test/framework/unity_internals.h @@ -719,6 +719,10 @@ extern const char UnityStrErrShorthand[]; #define UNITY_BEGIN() UnityBegin(__FILE__) #endif +#ifndef UNITY_PARSE_OPTS +#define UNITY_PARSE_OPTS() UnityParseOptions(argc, argv) +#endif + #ifndef UNITY_END #define UNITY_END() UnityEnd() #endif @@ -737,10 +741,8 @@ extern const char UnityStrErrShorthand[]; * Command Line Argument Support *-----------------------------------------------*/ -#ifdef UNITY_USE_COMMAND_LINE_ARGS int UnityParseOptions(int argc, char** argv); int UnityTestMatches(void); -#endif /*------------------------------------------------------- * Basic Fail and Ignore diff --git a/test/main.c b/test/main.c index 115bcce2..203a1ea3 100644 --- a/test/main.c +++ b/test/main.c @@ -1,12 +1,17 @@ #include #include #include +#include +#include + +#define UNITY_USE_COMMAND_LINE_ARGS 1 #include "framework/unity.h" #include "CORE/V1DB/dbsetup.h" #include "common/globvars.h" +#include "new/stack_trace_handler.h" #define debug(format_, ...) fprintf(stderr, format_, __VA_ARGS__) @@ -22,19 +27,31 @@ extern void test_fwsetup_suite(); extern void test_resource_suite(); void setUp(void) { - strcpy(gApplication_path, "/tmp"); - strcpy(gDir_separator, "/"); - - BrV1dbBeginWrapper_Float(); } void tearDown(void) { } -int main(int pArgc, char** pArgv) { +void setupGlobalVars() { + strcpy(gDir_separator, "/"); + getcwd(gApplication_path, 256); + strcat(gApplication_path, "/DATA"); +} + +int main(int argc, char** argv) { UNITY_BEGIN(); + if (UnityParseOptions(argc, argv) != 0) { + exit(1); + } + + set_signal_handler(argv[0]); + + setupGlobalVars(); + + BrV1dbBeginWrapper_Float(); + // BRSRC13 test_brlists_suite(); test_fwsetup_suite();