From 0fddcec6986dfca6adc37e18ab02ed148cbd6da4 Mon Sep 17 00:00:00 2001 From: Dethrace Labs <78985374+dethrace-labs@users.noreply.github.com> Date: Mon, 5 Jan 2026 11:41:54 +1300 Subject: [PATCH] UseGeneralScore matching --- src/DETHRACE/common/netgame.c | 69 ++++++++++++++++------------------- src/DETHRACE/macros.h | 17 ++++++++- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/src/DETHRACE/common/netgame.c b/src/DETHRACE/common/netgame.c index d318691a..4f88cdf6 100644 --- a/src/DETHRACE/common/netgame.c +++ b/src/DETHRACE/common/netgame.c @@ -690,10 +690,8 @@ void DoNetworkHeadups(int pCredits) { case eNet_game_type_foxy: NewTextHeadupSlot(eHeadupSlot_misc, 0, 2000, -4, GetMiscString(kMiscString_THAT_HALVED_YOUR_TIME)); break; -#ifdef DETHRACE_FIX_BUGS - default: - break; -#endif + + DETHRACE_DEFAULT_BREAK } } @@ -1088,10 +1086,8 @@ void CarInContactWithItOrFox(tNet_game_player_info* pPlayer) { } } break; -#ifdef DETHRACE_FIX_BUGS - default: - break; -#endif + + DETHRACE_DEFAULT_BREAK } } @@ -1178,11 +1174,9 @@ void CalcPlayerScores(void) { } break; -#ifdef DETHRACE_FIX_BUGS - default: - break; -#endif + DETHRACE_DEFAULT_BREAK } + lowest_score = 9999; lowest_score_player = NULL; cars_left = 0; @@ -1258,10 +1252,8 @@ void CalcPlayerScores(void) { SelectRandomItOrFox(i); } break; -#ifdef DETHRACE_FIX_BUGS - default: - break; -#endif + + DETHRACE_DEFAULT_BREAK } } switch (gCurrent_net_game->type) { @@ -1342,10 +1334,8 @@ void CalcPlayerScores(void) { } } break; -#ifdef DETHRACE_FIX_BUGS - default: - continue; -#endif + + DETHRACE_DEFAULT_BREAK } } if ((gCurrent_net_game->type == eNet_game_type_sudden_death || gCurrent_net_game->type == eNet_game_type_tag) @@ -1399,10 +1389,8 @@ void SendPlayerScores(void) { case eNet_game_type_foxy: the_contents->data.scores.general_score = gNet_players[gIt_or_fox].ID; break; -#ifdef DETHRACE_FIX_BUGS - default: - break; -#endif + + DETHRACE_DEFAULT_BREAK } for (i = 0; i < gNumber_of_net_players; i++) { the_contents->data.scores.scores[i] = gNet_players[i].score; @@ -1443,10 +1431,8 @@ void InitialisePlayerScore(tNet_game_player_info* pPlayer) { case eNet_game_type_sudden_death: pPlayer->score = 0; break; -#ifdef DETHRACE_FIX_BUGS - default: - break; -#endif + + DETHRACE_DEFAULT_BREAK } pPlayer->credits = gInitial_net_credits[gCurrent_net_game->options.starting_money_index]; pPlayer->wasted = 0; @@ -1528,18 +1514,27 @@ void BuyOffense(void) { void UseGeneralScore(int pScore) { int i; - if (gCurrent_net_game->type == eNet_game_type_carnage) { + switch (gCurrent_net_game->type) { + + case eNet_game_type_carnage: gPed_target = pScore; - } else if ((gCurrent_net_game->type == eNet_game_type_tag || gCurrent_net_game->type == eNet_game_type_foxy) && gNet_players[gIt_or_fox].ID != pScore) { - for (i = 0; i < gNumber_of_net_players; i++) { - StopCarBeingIt(gNet_players[i].car); - } - for (i = 0; i < gNumber_of_net_players; i++) { - if (gNet_players[i].ID == pScore) { - MakeCarIt(gNet_players[i].car); - gIt_or_fox = i; + break; + case eNet_game_type_tag: + case eNet_game_type_foxy: + if (gNet_players[gIt_or_fox].ID != pScore) { + for (i = 0; i < gNumber_of_net_players; i++) { + StopCarBeingIt(gNet_players[i].car); + } + for (i = 0; i < gNumber_of_net_players; i++) { + if (gNet_players[i].ID == pScore) { + MakeCarIt(gNet_players[i].car); + gIt_or_fox = i; + } } } + break; + + DETHRACE_DEFAULT_BREAK } } diff --git a/src/DETHRACE/macros.h b/src/DETHRACE/macros.h index 03726d01..19901021 100644 --- a/src/DETHRACE/macros.h +++ b/src/DETHRACE/macros.h @@ -1,6 +1,12 @@ #ifndef MACROS_H #define MACROS_H +/* + * All macros contained in this file were created as part of the reverse engineering effort + * and may or may not exist (or use the same names) in the retail code. + * + */ + #define DR_JOIN2(A, B) A##B #define DR_JOIN(A, B) DR_JOIN2(A, B) #define DR_STATIC_ASSERT(V) typedef int DR_JOIN(dr_static_assert_, __COUNTER__)[(V) ? 1 : -1] @@ -8,8 +14,6 @@ #define VEHICLE_TYPE_FROM_ID(id) ((tVehicle_type)(id >> 8)) #define VEHICLE_INDEX_FROM_ID(id) ((id) & 0x00ff) -// #define VEC3_TRANSLATE(mat) (*(br_vector3*)(&mat->m[3][0])) - #define SLOBYTE(x) (*((signed char*)&(x))) #define STR_STARTS_WITH(haystack, needle) strncmp(haystack, needle, strlen(needle)) @@ -74,3 +78,12 @@ } while (0) #endif + +// Many switches in the original code did not include handling all values, causing warnings in modern compilers +#ifdef DETHRACE_FIX_BUGS +#define DETHRACE_DEFAULT_BREAK \ + default: \ + break; +#else +#define DETHRACE_DEFAULT_BREAK +#endif