[video output=day211 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]
[39:19][handmade_debug_interface.h: Remove #define MAX_DEBUG_TRANSLATION_UNITS]
[39:50][handmade_optimized.cpp: Remove DebugRecords_Optimized_Count]
[40:08][handmade_debug.cpp: Remove DebugRecords nonsense]
[40:34][handmade_debug_interface.h: Consider packing debug_event a little more]
[42:18][handmade_debug.cpp: Add Var->BlockName back in to CollateCreateVariable]
[42:42][Run the game and see "Hot Entity" again]
[43:03][handmade_debug.cpp: Remove debug_event *Var]
[44:06][handmade_debug.cpp: Do CollateAddVariableGroup rather than CollateCreateGroupedVariable]
[45:10][handmade_debug.h: Remove DebugType_VarGroup from debug_type and call it OpenDataBlock everywhere]
[45:55][Debugger: Investigate why BeginBlock is happening]
[48:42][handmade_debug.cpp: Remove CollateCreateGroupedVariable]
[48:48][handmade_debug.cpp: Assert that Link->Event->Type != DebugType_BeginBlock in CollateAddVariableToGroup]
[49:14][Debugger: Inspect Stack and Depth]
[50:34][handmade_debug.cpp: Try doing RestartCollation on every frame]
[52:02][Run the game and find that it was an overwriting problem]
[52:50][Q&A][:speech]
[53:59][@hwd2ro][Will you get back to game related coding next week?]
[54:34][@fierydrake][Do you ever wear the piggie hat at work?]
[54:57][@elxenoaizd][What would be the thing that would impress you on a programmer's resume?]
[55:32][@thordurA][Bit off-topic, but when will you do the ODE stuff?]
[56:08][Blackboard: Ordinary Differential Equation]
[59:22][@culver_fly][I think he meant e^kt]
[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?]
[1:13:05][Wind it down][:speech]
[/video]
