Set the FONTCONFIG_PATH environment variable on Windows so it can find the custom fonts
Set FONTCONFIG_PATH to the fonts folder instead of the current working folder... oversight
Update TODO.md
Add new g_keys module
Stop printing duplicate messages to console

Use I_GetTicks instead of I_GetTime; avoids crash in server because
I_GetTime isn't initialized yet
Fix the other player messaging functions to use I_GetTicks instead of I_GetTime

Only print out to STDOUT if nodrawers AND writing to the console's message
widget

Player messaging functions should only write to console if they're
intended for the consoleplayer

Fix memory leak in P_ClearMessages
Read player messages as player_message_t arrays instead of string arrays

Add lots of sanity checks in the player message functions

Make message length limit in M_PBufReadString optional by passing 0

Skip non-playing players when ticking message widgets

Allocate player message contents with Doom's allocator instead of GLib's

Initialize overlay widgets in HU_Init instead of HU_Start

Reset overlay widgets in HU_Start instead of initializing them

Clear Pango layout attributes before setting text

Use memmove explicitly in W_CoalesceMarkedResource; fixes valgrind warning
Assign actors IDs to avoid problems with dangling actor pointers

Fix problems reading and writing game options, which caused desyncs

Totally remove the old actor save pointer system and replace it with
actor IDs; it's slower, but it solves dangling actor pointer problems; I
could keep the actor buffer during load, which would save some hash
lookups, but the overhead seems to be minimal; requires more testing on
larger maps

Save sound origin IDs (because they're always actors) and restore them
after save file load if possible.

Fix a few memory problems discovered by valgrind and address sanitizer

Take a stab at running commands during the finale and intermission,
which would fix the problem where the game gets stuck in intermission;
untested

Let the game engine naturally respawn players who connect/disconnect;
solves problems with ghost players

Lots of reformatting
Rebuild tags
Fix remaining dangling sound pointer problems

Use IDs instead of pointers in s_sound

Use mobj_t pointers in s_sound instead of void pointers; I know that
degenmobj_t pointers get passed too, and I might switch the code over,
but boo type-punning in general; the real fix is to generalize the
functions in s_sound to take an ID and coordinate pointers... but not
right now.

Assign sector and line sound origins an ID

Start serializing sector and line sound origins

Remove outdated check in p_saveg

Remove some old doom_printf calls when INSTRUMENTED is defined
Rebuild tags
Drastically improve coop sync

Service the network while wiping the screen; avoids huge command backlog
which causes sync problems down the road

Serialize basetic separately, rather than as a delta between it and
gametic

Serialize numspechit; probably not necessary but for the sake of
completeness...

Break i_sound into i_sound, i_music and i_emusic

Pull the checks for snd_card, nosfxparm, mus_card and nomusicparm down
into i_sound/music/emusic; avoids RNG sync problems

Use a different RNG for sound randomness; avoids RNG sync problems

Make N_GetMessageRecipientBuffer static

Add HAVE_MIXER to config.h and CMakeLists.txt; this really ought to be
consolidated with HAVE_LIBSDL_MIXER though

Update style guide with some guidance on blocks after
return/continue/etc.

Reformat random number table in m_random.c; due to the bad initial
re-indentation, the alignment got roasted; fixed

Reformatting
Add some checks to prevent loading invalid numbers of sectors and lines

Fix crash loading a new map with sound disabled

Break debugging options out separately; goodbye PRBOOM_DEBUG

Switch screen wipe PRNG to non-sync-critical

Add D_RandomRange function; D_Random returns a huge range and is
therefore slow.

Only make the PRNG changes in s_sound and f_wipe in DELTASYNC mode;
otherwise demos will desync
Use a local RNG instance instead of the global GLib one
Fix intermission problems in netgames
Only service the network in MULTINET mode; fixes sp crash

Fix floor spawning bug introduced by reformatting (bad transcription...)
Fix SP intermission
Use an obuf_t for the corpse queue and serialize it; fixes MP crashes when too many corpses pile up
Don't print console messages while predicting clientside

Disable console input when console is scrolling up
Re-enable HU_Ticker