[video output=day201 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Isolating the Debug Code" vod_platform=youtube id=Nb9ObiFvw3I annotator=Miblo]
[1:47][Recap and hit a first-chance exception]
[2:38][Investigate this exception]
[6:02][win32_handmade.cpp: Move DebugCollation above FramerateWait and pass NewInput and &Buffer to DEBUGFrameEnd]
[7:30][handmade.cpp: Remove DEBUGStart and DEBUGEnd]
[7:54][handmade_debug.cpp: Call DEBUGStart and DEBUGEnd in DEBUGGameFrameEnd]
[11:06][handmade.cpp: Introduce DEBUGGetGameAssets to enable the debug system to get the TranState->Assets out]
[12:37][handmade_platform.h: Give DEBUG_GAME_FRAME_END the same call structure as GAME_UPDATE_AND_RENDER]
[13:23][handmade_debug.cpp: Create a DrawBuffer for the debug system]
[15:00][Debugger: Step into DEBUGGetState]
[15:32][handmade_debug.cpp: Paste DEBUGGetState into DEBUGGameFrameEnd]
[16:50][Run the game and find that we're in better shape]
[18:31][handmade.debug.h: Consider getting rid of this header file entirely]
[19:52][handmade.cpp: Add conditional on HANDMADE_INTERNAL to enable us to toggle the debug system]
[21:12][build.bat: Turn off HANDMADE_INTERNAL]
[21:27][handmade_platform.h and win32_handmade.cpp: Add conditionals on HANDMADE_INTERNAL]
[22:47][handmade_platform: Remove HANDMADE_PROFILE in favour of HANDMADE_INTERNAL]
[25:05][Run the game successfully]
[25:17][build.bat: Toggle HANDMADE_INTERNAL and still run successfully]
[26:46][Think about how to proceed]
[29:00][handmade_debug.h: Move the contents of debug_variable_group into debug_variable_reference]
[30:52][handmade_debug.h: Consider splitting the variables up]
[33:03][handmade_debug.h: Rename debug_variable_ structs to debug_tree and debug_tree_entry]
[33:53][handmade_debug.h: Introduce debug_tree_entry_group]
[34:41][handmade_debug.h: Rewrite debug_tree]
[36:44][handmade_debug.h: Introduce debug_tree_entry_window]
[37:58][handmade_debug.h: Introduce debug_tree_entry_type]
[38:45][Recap these changes]
[39:52][handmade_debug.h and handmade_debug_variables.h: Clean up the compile errors]
[41:51][Consider using a caching-centric system]
[44:41][handmade_debug.h and handmade_debug_variables.h: Start to implement a caching-centric system]
[1:04:17][Pause this temporarily and turn off HANDMADE_INTERNAL]
[1:04:57][Q&A][:speech]
[1:05:25][@insofaras][Now that the amount of debug code is getting larger, will you create a debug debug system to debug the debug code?]
[1:06:04][@Manicthenobody][Is this the link you were looking for earlier for MartinCohen?[ref
    site="infocobuild"
    page="ArsDigita University - How Computer Works"
    url="http://www.infocobuild.com/education/audio-video-courses/computer-science/how-computer-works-arsdigita.html"]]
[1:07:07][@garryjohanson][What do you think about the use of pre-fetch cache instructions? Are they a viable option for general purpose programming to get maximum performance?]
[1:08:28][@Connor_Rentz][After the two year period, will we be able to mod the game?]
[1:08:37][@CaptainKraft][Does the architecture of your target system have a big effect on how you design your debug system?]
[1:09:51][@Kelimion][Would be it an idea to pass build.bat a parameter which you would use to switch optimisation on and off on the different build units? Like IF %1 == opt, do this, otherwise do that]
[1:10:29][@vivek12895][What do you think about "No Man's Sky"? I can't even think about how it works now. Will I get some idea after learning from you?]
[1:11:28][@Connor_Rentz][I mean, after you release the source code. Will we be able to create our own bosses, worlds, etc.?]
[1:11:48][@Stiegosaurus][Will you be returning to game specific coding soon?]
[1:13:41][@CaptainKraft][Could something like a Raspberry Pi or other ARM desktop PC run Handmade Hero well enough, and is that the kind of system where you would want to do the debugging on a separate machine?]
[1:14:47][@Kelimion][I meant for usage inside the game, so you could switch optimisation on and off from the debug menu]
[1:15:26][@garryjohanson][Do you think it would be totz baller to make a GUI visual language for game scripting like what Unreal has?]
[1:16:14][Blackboard: Visual Scripting]
[1:18:35][@quartertron][Couldn't you collate just the last frame every frame instead of doing all of them in chunks?]
[1:20:22][Close this down][:speech]
[/video]
