From 22a84a5504b3650c9ca4482964ae59fc15e8a97c Mon Sep 17 00:00:00 2001 From: Indev Date: Sat, 26 Aug 2023 15:05:21 +0300 Subject: [PATCH 01/10] Bring sprite scale and rotation mobj fields back. Hopefully this wouldn't cause synch failures --- src/lua_mobjlib.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c index 9788e9a83..91c2158e8 100644 --- a/src/lua_mobjlib.c +++ b/src/lua_mobjlib.c @@ -36,8 +36,8 @@ int mobj_snext_noset(lua_State *L); int mobj_z_setter(lua_State *L); int mobj_sprev_unimplemented(lua_State *L); int mobj_angle_setter(lua_State *L); -//int mobj_sloperoll_noset(lua_State *L); -//int mobj_spritescale_setter(lua_State *L); +int mobj_sloperoll_noop(lua_State *L); +int mobj_spritescale_setter(lua_State *L); int mobj_touching_sectorlist_unimplemented(lua_State *L); int mobj_radius_setter(lua_State *L); int mobj_height_setter(lua_State *L); @@ -76,15 +76,15 @@ static const udata_field_t mobj_fields[] = { FIELD(mobj_t, snext, udatalib_getter_mobj, mobj_snext_noset), FIELD(mobj_t, sprev, mobj_sprev_unimplemented, mobj_sprev_unimplemented), FIELD(mobj_t, angle, udatalib_getter_angle, mobj_angle_setter), - //FIELD(mobj_t, rollangle, udatalib_getter_angle, udatalib_setter_angle), - //FIELD(mobj_t, sloperoll, udatalib_getter_angle, mobj_sloperoll_noset), + FIELD(mobj_t, rollangle, udatalib_getter_angle, udatalib_setter_angle), + FIELD(mobj_t, sloperoll, udatalib_getter_angle, mobj_sloperoll_noop), FIELD(mobj_t, sprite, udatalib_getter_spritenum, udatalib_setter_spritenum), FIELD(mobj_t, frame, udatalib_getter_uint32, udatalib_setter_uint32), FIELD(mobj_t, anim_duration, udatalib_getter_uint16, udatalib_setter_uint16), - //FIELD(mobj_t, spritexscale, udatalib_getter_fixed, mobj_spritescale_setter), - //FIELD(mobj_t, spriteyscale, udatalib_getter_fixed, mobj_spritescale_setter), - //FIELD(mobj_t, spritexoffset, udatalib_getter_fixed, udatalib_setter_fixed), - //FIELD(mobj_t, spriteyoffset, udatalib_getter_fixed, udatalib_setter_fixed), + FIELD(mobj_t, spritexscale, udatalib_getter_fixed, mobj_spritescale_setter), + FIELD(mobj_t, spriteyscale, udatalib_getter_fixed, mobj_spritescale_setter), + FIELD(mobj_t, spritexoffset, udatalib_getter_fixed, udatalib_setter_fixed), + FIELD(mobj_t, spriteyoffset, udatalib_getter_fixed, udatalib_setter_fixed), FIELD(mobj_t, touching_sectorlist, mobj_touching_sectorlist_unimplemented, mobj_touching_sectorlist_unimplemented), FIELD(mobj_t, subsector, udatalib_getter_subsector, mobj_nosetpos_subsector), FIELD(mobj_t, floorz, udatalib_getter_fixed, mobj_nosetpos_floorz), @@ -133,7 +133,7 @@ static const udata_field_t mobj_fields[] = { FIELD(mobj_t, cvmem, udatalib_getter_int32, udatalib_setter_int32), FIELD(mobj_t, standingslope, udatalib_getter_slope, mobj_standingslope_noset), FIELD(mobj_t, colorized, udatalib_getter_boolean, udatalib_setter_boolean), - //FIELD(mobj_t, rollmodel, udatalib_getter_boolean, udatalib_setter_boolean), + FIELD(mobj_t, rollmodel, udatalib_getter_boolean, udatalib_setter_boolean), { NULL }, }; #undef FIELD @@ -174,7 +174,6 @@ int mobj_ ## field ## _noset(lua_State *L) \ return luaL_error(L, LUA_QL("mobj_t") " field " LUA_QS " should not be set directly.", #field); \ } -//NOSET(sloperoll) NOSET(snext) NOSET(bnext) NOSET(info) @@ -198,6 +197,10 @@ UNIMPLEMENTED(mobjnum) #undef UNIMPLEMENTED +// For some dumb reason it is valid to set sloperoll, even though it is read +// only +int mobj_sloperoll_noop(lua_State *L) { return 0; } + // Now other getters/setters with arbitary logic // Getters get light userdata, which in this case is just mobj_t pointer @@ -233,7 +236,7 @@ int mobj_angle_setter(lua_State *L) return 0; } -/*int mobj_spritescale_setter(lua_State *L) +int mobj_spritescale_setter(lua_State *L) { mobj_t *mo = GETMO(); @@ -251,7 +254,7 @@ int mobj_angle_setter(lua_State *L) mo->realyscale = luaL_checkfixed(L, 2); } return 0; -}*/ +} int mobj_radius_setter(lua_State *L) { -- 2.54.0 From d5f1b744bb9ddb370abc3641ee99e82ec8b63738 Mon Sep 17 00:00:00 2001 From: Indev Date: Tue, 29 Aug 2023 11:18:08 +0300 Subject: [PATCH 02/10] Fix few warnings regarding udatalib. Use size_t and uint8_t* instead of intptr_t since all offsets are >= 0 anyway --- src/lua_playerlib.c | 2 ++ src/lua_udatalib.c | 2 +- src/lua_udatalib.h | 8 +++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 91f094b81..c687921ec 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -516,7 +516,9 @@ static int player_get(lua_State *L) } lua_getfield(L, -1, field); if (lua_isnil(L, -1)) // no value for this field + { CONS_Debug(DBG_LUA, M_GetText("'%s' has no field named '%s'; returning nil.\n"), "player_t", field); + } return 1; } diff --git a/src/lua_udatalib.c b/src/lua_udatalib.c index 239e56e13..d7cd68278 100644 --- a/src/lua_udatalib.c +++ b/src/lua_udatalib.c @@ -87,7 +87,7 @@ int udatalib_setter_boolean_nocheck(lua_State *L) UDATALIB_SIMPLE_SETTER(boolean, lua_toboolean) int udatalib_setter_spritenum(lua_State *L) -UDATALIB_SIMPLE_SETTER(spritenum_t, (spritenum_t)luaL_checkinteger) +UDATALIB_SIMPLE_SETTER(spritenum_t, luaL_checkinteger) int udatalib_setter_tic(lua_State *L) UDATALIB_SIMPLE_SETTER(tic_t, (tic_t)luaL_checkinteger) diff --git a/src/lua_udatalib.h b/src/lua_udatalib.h index 30fb0d3a9..36d1ef5ff 100644 --- a/src/lua_udatalib.h +++ b/src/lua_udatalib.h @@ -1,8 +1,6 @@ #ifndef __LUA_UDATALIB_H__ #define __LUA_UDATALIB_H__ -#include - #ifdef HAVE_BLUA #include "doomdef.h" @@ -16,7 +14,7 @@ typedef struct udata_field_s { const char *name; - intptr_t offset; + size_t offset; lua_CFunction getter; lua_CFunction setter; } udata_field_t; @@ -82,8 +80,8 @@ void udatalib_addfields(lua_State *L, int mt, const udata_field_t fields[]); // Get pointer to field value within getter or setter #define UDATALIB_GETFIELD(type, field) \ { \ - intptr_t offset = lua_tointeger(L, lua_upvalueindex(1)); \ - field = (type*)((intptr_t)lua_touserdata(L, 1) + offset); \ + size_t offset = lua_tointeger(L, lua_upvalueindex(1)); \ + field = (type*)((uint8_t*)lua_touserdata(L, 1) + offset); \ } // Creates implementation for simple getter and setter. Super lazy, yes. -- 2.54.0 From 76685068fe701188ed0349b6c50ec7cf58c53aa9 Mon Sep 17 00:00:00 2001 From: alufolie91 Date: Tue, 29 Aug 2023 10:43:16 +0200 Subject: [PATCH 03/10] Add Toggle to satlyhop squish effect just for those who may dislike it --- src/d_netcmd.c | 9 +++------ src/g_game.h | 1 + src/k_kart.c | 12 +++++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 76eef7d47..b50b2b81c 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -469,11 +469,9 @@ consvar_t cv_showping = {"showping", "Always", CV_SAVE, showping_cons_t, NULL, 0 static CV_PossibleValue_t pingmeasurement_cons_t[] = {{0, "Frames"}, {1, "Milliseconds"}, {0, NULL}}; consvar_t cv_pingmeasurement = {"pingmeasurement", "Frames", CV_SAVE, pingmeasurement_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; - -//consvar_t cv_smallpos = {"smallpositionnumber", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_minihead = {"smallminimapplayers", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_showminimapnames = {"showminimapnames", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_minihead = {"smallminimapplayers", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_showlapemblem = {"showlapemblem", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -779,10 +777,8 @@ void D_RegisterServerCommands(void) CV_RegisterVar(&cv_showping); CV_RegisterVar(&cv_pingmeasurement); - - //CV_RegisterVar(&cv_smallpos); - CV_RegisterVar(&cv_showminimapnames); CV_RegisterVar(&cv_minihead); + CV_RegisterVar(&cv_showminimapnames); CV_RegisterVar(&cv_showlapemblem); @@ -979,6 +975,7 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_saltyhop); CV_RegisterVar(&cv_saltyhopsfx); + CV_RegisterVar(&cv_saltysquish); //CV_RegisterVar(&cv_crosshair); //CV_RegisterVar(&cv_crosshair2); diff --git a/src/g_game.h b/src/g_game.h index 1d34484f2..67618296f 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -150,6 +150,7 @@ extern consvar_t cv_newspeedometer; extern consvar_t cv_saltyhop; extern consvar_t cv_saltyhopsfx; +extern consvar_t cv_saltysquish; extern consvar_t cv_driftsparkpulse; extern consvar_t cv_gravstretch; diff --git a/src/k_kart.c b/src/k_kart.c index 6c31fa28a..36bb9a57a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -59,6 +59,7 @@ consvar_t cv_newspeedometer = {"newspeedometer", "Off", CV_SAVE, CV_OnOff, NULL, consvar_t cv_saltyhop = {"hardcodehop", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_saltyhopsfx = {"hardcodehopsfx", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_saltysquish = {"hardcodehopsquish", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: // gamespeed is cc (0 for easy, 1 for normal, 2 for hard) @@ -3007,7 +3008,7 @@ static void K_StretchPlayerGravity(player_t *p) I_Assert(p != NULL); I_Assert(p->mo != NULL); I_Assert(!P_MobjWasRemoved(p->mo)); - + if (p->mo->slamsoundtimer) p->mo->slamsoundtimer--; @@ -3049,6 +3050,7 @@ static void K_StretchPlayerGravity(player_t *p) p->mo->stretchslam -= (4*mos); else p->mo->stretchslam = 0; + } } @@ -3074,8 +3076,8 @@ static void K_QuiteSaltyHop(player_t *p) p->mo->salty_zoffset = 0; p->mo->salty_momz = 0; p->mo->init_salty = true; - } - else if (p->mo->salty_jump) { + } + else if ((p->mo->salty_jump)) { if (p->mo->eflags & MFE_JUSTHITFLOOR) { p->mo->salty_zoffset = 0; } else if (P_IsObjectOnGround(p->mo)) { @@ -3092,8 +3094,8 @@ static void K_QuiteSaltyHop(player_t *p) p->mo->salty_zoffset = 0; p->mo->salty_momz = 0; // shlamma damma - p->mo->stretchslam += (8*mos); - } else if (p->mo->salty_zoffset >= 0) { + p->mo->stretchslam += cv_saltysquish.value ? (8*mos) : 0; + } else if (p->mo->salty_zoffset >= 0 && cv_saltysquish.value) { // goofy ahh hack p->mo->spriteyscale += (mos/8); p->mo->spritexscale -= (mos/8); -- 2.54.0 From f6da608402238efb85715603d80b39007d8eca20 Mon Sep 17 00:00:00 2001 From: alufolie91 Date: Tue, 29 Aug 2023 10:44:00 +0200 Subject: [PATCH 04/10] Menu stuff add missing things rearrange saturn menu make saturn menu and player distortion menu prettier finally --- src/m_menu.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index c3f6e2fbb..7cf9bb27b 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1695,20 +1695,17 @@ static menuitem_t OP_SaturnMenu[] = { {IT_HEADER, NULL, "Saturn Options", NULL, 0}, {IT_STRING | IT_CVAR, NULL, "Serverqueue waittime", &cv_connectawaittime, 20}, + {IT_STRING | IT_CVAR, NULL, "Skin Select Spinning Speed", &cv_skinselectspin, 40}, + {IT_STRING | IT_CVAR, NULL, "Input Display outside of RA", &cv_showinput, 50}, + {IT_STRING | IT_CVAR, NULL, "V2-ish Speedometer", &cv_newspeedometer, 60}, + {IT_STRING | IT_CVAR, NULL, "Show Lap Emblem", &cv_showlapemblem, 70}, + {IT_STRING | IT_CVAR, NULL, "Show Minimap Names", &cv_showminimapnames, 80}, + {IT_STRING | IT_CVAR, NULL, "Small Minimap Players", &cv_minihead, 90}, + {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 110}, + {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 130}, + {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 145}, - //{IT_STRING | IT_CVAR, NULL, "Addon Download Speed", &cv_downloadspeed, 55}, //no idea why you would wanna change it anyways - - {IT_STRING | IT_CVAR, NULL, "Show Minimap Names", &cv_showminimapnames, 30}, - {IT_STRING | IT_CVAR, NULL, "Skin Select Spinning Speed", &cv_skinselectspin, 50}, - {IT_STRING | IT_CVAR, NULL, "Input Display outside of RA", &cv_showinput, 60}, - {IT_STRING | IT_CVAR, NULL, "V2-ish Speedometer", &cv_newspeedometer, 70}, - {IT_STRING | IT_CVAR, NULL, "Show Lap Emblem", &cv_showlapemblem, 80}, -// {IT_STRING | IT_CVAR, NULL, "Small Position Number", &cv_smallpos, 90}, - {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 90}, - {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 105}, - {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 120}, - - {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 135}, // uwu + {IT_SUBMENU|IT_STRING, NULL, "Saturn Credits", &OP_SaturnCreditsDef, 170}, // uwu }; enum @@ -1718,6 +1715,9 @@ enum sm_skinselspeed, sm_input, sm_speedometer, + sm_lapemblem, + sm_mapnames, + sm_smallmap, sm_pisschannel, sm_distortionmenu, sm_hudoffsets, @@ -1733,6 +1733,9 @@ static menuitem_t OP_PlayerDistortMenu[] = {IT_STRING | IT_CVAR, NULL, "Rotate players when sliptiding", &cv_sliptideroll, 50}, {IT_STRING | IT_CVAR, NULL, "Player stretch factor", &cv_gravstretch, 65}, {IT_STRING | IT_CVAR, NULL, "Squish Sound Effect", &cv_slamsound, 80}, + {IT_STRING | IT_CVAR, NULL, "Saltyhop", &cv_saltyhop, 110}, + {IT_STRING | IT_CVAR, NULL, "Saltyhop Sound Effect", &cv_saltyhopsfx, 125}, + {IT_STRING | IT_CVAR, NULL, "Saltyhop Squish", &cv_saltysquish, 140}, }; enum @@ -2363,8 +2366,8 @@ menu_t OP_DiscordOptionsDef = DEFAULTMENUSTYLE(NULL, OP_DiscordOptionsMenu, &OP_ #endif menu_t OP_EraseDataDef = DEFAULTMENUSTYLE("M_DATA", OP_EraseDataMenu, &OP_DataOptionsDef, 30, 30); -menu_t OP_SaturnDef = DEFAULTMENUSTYLE(NULL, OP_SaturnMenu, &OP_MainDef, 30, 30); -menu_t OP_PlayerDistortDef = DEFAULTMENUSTYLE("M_VIDEO", OP_PlayerDistortMenu, &OP_SaturnDef, 30, 60); +menu_t OP_SaturnDef = DEFAULTMENUSTYLE(NULL, OP_SaturnMenu, &OP_MainDef, 30, 15); +menu_t OP_PlayerDistortDef = DEFAULTMENUSTYLE("M_VIDEO", OP_PlayerDistortMenu, &OP_SaturnDef, 30, 30); menu_t OP_HudOffsetDef = DEFAULTMENUSTYLE(NULL, OP_HudOffsetMenu, &OP_SaturnDef, 30, 20); menu_t OP_SaturnCreditsDef = DEFAULTMENUSTYLE(NULL, OP_SaturnCreditsMenu, &OP_SaturnDef, 30, 10); -- 2.54.0 From 050ae2ab6d7d51b26fdde2f28a6ca2f09f4946d1 Mon Sep 17 00:00:00 2001 From: Indev Date: Tue, 29 Aug 2023 12:09:46 +0300 Subject: [PATCH 05/10] Add vote hud hook for lua. Use FEATURE_VOTEHUD global to check if this feature is available --- src/dehacked.c | 1 + src/lua_hud.h | 1 + src/lua_hudlib.c | 44 +++++++++++++++++++++++++++++++++++++++++--- src/y_inter.c | 33 ++++++++++++++++++++++++--------- 4 files changed, 67 insertions(+), 12 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 52b2785c3..925d69042 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -8735,6 +8735,7 @@ struct { // Custom client features exposed to lua {"FEATURE_INTERMISSIONHUD",1}, + {"FEATURE_VOTEHUD",1}, #endif {NULL,0} diff --git a/src/lua_hud.h b/src/lua_hud.h index 06ba0169b..26b8cf0b0 100644 --- a/src/lua_hud.h +++ b/src/lua_hud.h @@ -44,5 +44,6 @@ boolean LUA_HudEnabled(enum hud option); void LUAh_GameHUD(player_t *stplyr, huddrawlist_h list); void LUAh_ScoresHUD(huddrawlist_h list); void LUAh_IntermissionHUD(huddrawlist_h list); +void LUAh_VoteHUD(huddrawlist_h list); #endif // __LUA_HUD_H__ diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c index f2eeae4c9..470fad9b7 100644 --- a/src/lua_hudlib.c +++ b/src/lua_hudlib.c @@ -86,11 +86,13 @@ enum hudhook { hudhook_game = 0, hudhook_scores = 1, hudhook_intermission = 2, + hudhook_vote = 3, }; static const char *const hudhook_opt[] = { "game", "scores", "intermission", + "vote", NULL}; // alignment types for v.drawString @@ -993,6 +995,9 @@ int LUA_HudLib(lua_State *L) lua_newtable(L); lua_rawseti(L, -2, 4); // HUD[4] = intermission rendering functions array + + lua_newtable(L); + lua_rawseti(L, -2, 5); // HUD[5] = vote rendering functions array lua_setfield(L, LUA_REGISTRYINDEX, "HUD"); luaL_newmetatable(L, META_HUDINFO); @@ -1061,7 +1066,7 @@ void LUAh_GameHUD(player_t *stplayr, huddrawlist_h list) lua_getfield(gL, LUA_REGISTRYINDEX, "HUD"); I_Assert(lua_istable(gL, -1)); - lua_rawgeti(gL, -1, 2); // HUD[2] = rendering funcs + lua_rawgeti(gL, -1, hudhook_game+2); // HUD[2] = rendering funcs I_Assert(lua_istable(gL, -1)); lua_rawgeti(gL, -2, 1); // HUD[1] = lib_draw @@ -1119,7 +1124,7 @@ void LUAh_ScoresHUD(huddrawlist_h list) lua_getfield(gL, LUA_REGISTRYINDEX, "HUD"); I_Assert(lua_istable(gL, -1)); - lua_rawgeti(gL, -1, 3); // HUD[3] = rendering funcs + lua_rawgeti(gL, -1, hudhook_scores+2); // HUD[3] = rendering funcs I_Assert(lua_istable(gL, -1)); lua_rawgeti(gL, -2, 1); // HUD[1] = lib_draw @@ -1152,7 +1157,40 @@ void LUAh_IntermissionHUD(huddrawlist_h list) lua_getfield(gL, LUA_REGISTRYINDEX, "HUD"); I_Assert(lua_istable(gL, -1)); - lua_rawgeti(gL, -1, 4); // HUD[4] = rendering funcs + lua_rawgeti(gL, -1, hudhook_intermission+2); // HUD[4] = rendering funcs + I_Assert(lua_istable(gL, -1)); + + lua_rawgeti(gL, -2, 1); // HUD[1] = lib_draw + I_Assert(lua_istable(gL, -1)); + lua_remove(gL, -3); // pop HUD + lua_pushnil(gL); + while (lua_next(gL, -3) != 0) { + lua_pushvalue(gL, -3); // graphics library (HUD[1]) + LUA_Call(gL, 1, 0, 1); + } + lua_settop(gL, 0); + hud_running = false; + + lua_pushlightuserdata(gL, NULL); + lua_setfield(gL, LUA_REGISTRYINDEX, "HUD_DRAW_LIST"); +} + +void LUAh_VoteHUD(huddrawlist_h list) +{ + if (!gL || !(hudAvailable & (1< Date: Tue, 29 Aug 2023 11:42:51 +0200 Subject: [PATCH 06/10] Show which renderer youre using on main menu cause some ppl dont know how to check and we cant switch the game --- src/m_menu.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/m_menu.c b/src/m_menu.c index 7cf9bb27b..57745e122 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3463,6 +3463,18 @@ void M_Drawer(void) #else // Regular build V_DrawThinString(vid.dupx, vid.height - 10*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, va("%s", VERSIONSTRING)); #endif + +#ifdef HWRENDER + if (rendermode == render_opengl) + { + V_DrawThinString(0, 0, V_GREENMAP|V_SNAPTOTOP|V_SNAPTOLEFT|V_TRANSLUCENT|V_ALLOWLOWERCASE, ("Opengl")); + } +#endif + if (rendermode == render_soft) + { + V_DrawThinString(0, 0, V_REDMAP|V_SNAPTOTOP|V_SNAPTOLEFT|V_TRANSLUCENT|V_ALLOWLOWERCASE, ("Software")); + } + } } } -- 2.54.0 From 6c22b1e01a38e503afb919799003459c1f5ca50a Mon Sep 17 00:00:00 2001 From: Indev Date: Tue, 29 Aug 2023 13:07:15 +0300 Subject: [PATCH 07/10] Fix 'All GPU textures' showing incorrect value in memfree command --- src/z_zone.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/z_zone.c b/src/z_zone.c index 428ca721e..33ec67482 100644 --- a/src/z_zone.c +++ b/src/z_zone.c @@ -637,7 +637,7 @@ void Command_Memfree_f(void) CONS_Printf(M_GetText("Mipmap patches : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPATCHCOLMIPMAP)>>10)); CONS_Printf(M_GetText("HW Texture cache : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRCACHE)>>10)); CONS_Printf(M_GetText("Plane polygons : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPLANE)>>10)); - CONS_Printf(M_GetText("All GPU textures : %7d KB\n"), sizeu1(Z_TagUsage(HWR_GetTextureUsed())>>10)); + CONS_Printf(M_GetText("All GPU textures : %7s KB\n"), sizeu1(Z_TagUsage(HWR_GetTextureUsed())>>10)); } #endif -- 2.54.0 From c6d0627f083fc9d8049429cc4f876a3d61da3827 Mon Sep 17 00:00:00 2001 From: Indev Date: Tue, 29 Aug 2023 13:17:09 +0300 Subject: [PATCH 08/10] Actually fix memfree for gpu textures --- src/hardware/hw_main.h | 3 +++ src/z_zone.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hardware/hw_main.h b/src/hardware/hw_main.h index 737956671..51a362c9e 100644 --- a/src/hardware/hw_main.h +++ b/src/hardware/hw_main.h @@ -98,6 +98,9 @@ UINT8 HWR_FogBlockAlpha(INT32 light, extracolormap_t *colormap); // Let's see if FBITFIELD HWR_TranstableToAlpha(INT32 transtablenum, FSurfaceInfo *pSurf); +// Get amount of memory used by gpu textures in bytes +INT32 HWR_GetTextureUsed(void); + // hw_main.c: Post-rendering void HWR_DoPostProcessor(player_t *player); void HWR_StartScreenWipe(void); diff --git a/src/z_zone.c b/src/z_zone.c index 33ec67482..b92707ef4 100644 --- a/src/z_zone.c +++ b/src/z_zone.c @@ -637,7 +637,7 @@ void Command_Memfree_f(void) CONS_Printf(M_GetText("Mipmap patches : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPATCHCOLMIPMAP)>>10)); CONS_Printf(M_GetText("HW Texture cache : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRCACHE)>>10)); CONS_Printf(M_GetText("Plane polygons : %7s KB\n"), sizeu1(Z_TagUsage(PU_HWRPLANE)>>10)); - CONS_Printf(M_GetText("All GPU textures : %7s KB\n"), sizeu1(Z_TagUsage(HWR_GetTextureUsed())>>10)); + CONS_Printf(M_GetText("All GPU textures : %7s KB\n"), sizeu1(HWR_GetTextureUsed()>>10)); } #endif -- 2.54.0 From cc2bab7736d510fc451030a280e73322156e17bd Mon Sep 17 00:00:00 2001 From: alufolie91 Date: Wed, 30 Aug 2023 12:41:22 +0200 Subject: [PATCH 09/10] rename some things for obvious reasons :p --- src/m_menu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 57745e122..3c67d86ce 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1697,11 +1697,11 @@ static menuitem_t OP_SaturnMenu[] = {IT_STRING | IT_CVAR, NULL, "Serverqueue waittime", &cv_connectawaittime, 20}, {IT_STRING | IT_CVAR, NULL, "Skin Select Spinning Speed", &cv_skinselectspin, 40}, {IT_STRING | IT_CVAR, NULL, "Input Display outside of RA", &cv_showinput, 50}, - {IT_STRING | IT_CVAR, NULL, "V2-ish Speedometer", &cv_newspeedometer, 60}, + {IT_STRING | IT_CVAR, NULL, "Small Speedometer", &cv_newspeedometer, 60}, {IT_STRING | IT_CVAR, NULL, "Show Lap Emblem", &cv_showlapemblem, 70}, {IT_STRING | IT_CVAR, NULL, "Show Minimap Names", &cv_showminimapnames, 80}, {IT_STRING | IT_CVAR, NULL, "Small Minimap Players", &cv_minihead, 90}, - {IT_STRING | IT_CVAR, NULL, "No Midnight Channel Flicker", &cv_lessflicker, 110}, + {IT_STRING | IT_CVAR, NULL, "Less Midnight Channel Flicker", &cv_lessflicker, 110}, {IT_SUBMENU|IT_STRING, NULL, "Player distortion...", &OP_PlayerDistortDef, 130}, {IT_SUBMENU|IT_STRING, NULL, "Hud Offsets...", &OP_HudOffsetDef, 145}, -- 2.54.0 From c0e24c11192c352fd70ee14c245139df37acbd3d Mon Sep 17 00:00:00 2001 From: Indev Date: Wed, 30 Aug 2023 14:09:28 +0300 Subject: [PATCH 10/10] Fix cv_grrenderdistance not changing current_bsp_culling_distance back after it was changed from max to any other value --- src/hardware/hw_main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index c0e703ab5..834f617bf 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5815,6 +5815,8 @@ void HWR_RenderFrame(INT32 viewnumber, player_t *player, boolean skybox) if (skybox) drewsky = true; + current_bsp_culling_distance = 0; + if (!skybox && cv_grrenderdistance.value) { HWD.pfnGClipRect((INT32)gr_viewwindowx, -- 2.54.0