[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Removing Records and Translation Units from the Debug Code" vod_platform=youtube id=hwLSZuxK6aU annotator=Miblo]
[1:05][Recap where we left last time and set the stage for the day]
[2:54][handmade_debug_interface.h: Throw all of the debug annotation code into this new header file]
[4:01][handmade_debug.h: Remove debug_variable entirely and give its functionality to debug_event]
[6:15][handmade_debug.cpp: Rename DEBUGVariableToText to DEBUGEventToText]
[6:30][handmade_debug.cpp: Introduce GetName]
[8:02][handmade_debug.cpp: Replace Var->Event. with Event->]
[8:10]["Everyone's happy and fine and dancing around..."][quote 284]
[12:14][handmade_debug_interface.h: Consider extending the concept of debug_event to support an additional Name and stop storing DebugRecordIndex]
[15:10][handmade_debug.cpp: Comment out Var->Name in CollateCreateVariable and ZeroStruct *Var]
[15:45][handmade_debug.cpp: Continue moving debug_variable functionality to debug_event]
[16:45][Debugger: Notice that we don't currently support some of the DebugTypes]
[18:06][handmade_debug.cpp: Assert that the Type != EndBlock]
[18:47][handmade_debug_interface.h: Remove DebugType_FirstUIType from debug_type]
[19:19][Run the game and see that it's all good]
[19:28][handmade_debug_interface.h: Replace DebugRecordIndex with *Name and remove TranslationUnit from debug_event]
[22:23][Pig Hat Time][quote 285]
[22:31][handmade_debug_interface.h: Stuff *FileName, *BlockName and LineNumber into debug_event and remove the concept of debug_record]
[28:25]["Sometimes you're dumb"][quote 283]
[28:54][handmade_debug.cpp: Change Source to Event]
[30:40][handmade_debug.h and .cpp: Change ScopeToRecord to be a char and change how it is used in DebugType_EndBlock]
[32:58][handmade_debug.cpp: Remove GetRecordFrom]
[33:26][handmade_debug.h: Add *Event to debug_frame_region]
[34:27][handmade_debug.cpp: Set ColorIndex to OpeningEvent->BlockName]
[35:15][handmade_debug.cpp: Rename Source to Event]
[35:26][handmade_debug.cpp: Change HotRecord to HotEvent]
[36:10][handmade_debug.cpp: Remove the check on GlobalDebugTable]
[36:25][Run the game and see that we're getting a lot closer]
[37:00][build.bat: Remove TRANSLATION_UNIT_INDEX]
[37:22][Run the game and check that it's still okay]
[37:25][handmade_debug_interface.h: Remove debug_record and put GetController back into handmade_platform.h]
[38:08][handmade_debug_interface.h: Move ThreadID and CoreIndex from threadid_coreindex to debug_event]
[39:07][Run the game and see that all is working nicely]
[1:01:36][@xDeadBringerx][I see a lot of branching in your code. Aren't you trashing the caches and the branch predictor?]
[1:05:16][@Angrycrow][Been soaking up so much of this stream as I catch up. I realized that I'm writing the usage code first nowadays. It's really streamlined my implementation brain. Just wanted to say thanks. Debate was great too]
[1:05:35][@ChronalDragon][Been learning about x86 assembly in one of my CS classes. Is there any way to force the compiler to use a register for a certain variable instead of a place on the stack?]
[1:06:59][@culver_fly][Just asking, but is it worthwhile to put so much effort on the debug system at this stage? There's a lot of things you're doing right now that I'm not sure how it will help in the future (maybe just because I have never programmed games before), but if I as a newbie game programmer were to work on this, do you suggest going as far as you're going right now or proceed on the gaming part to see what I need first before doing it?]
[1:08:37][@Mr4thDimention][Well if you would just replace the branches with polymorphism...]
[1:08:49][@elxenoaizd][What's more impressive: previous projects + practical experience vs college degree?]
[1:09:40][@JamesWidman][Compilers generally ignore the 'register' keyword]
[1:10:54][@xDeadBringerx][Ever thinking about running Handmade Hero through cachegrind?]