Handmade Hero»Episode Guide
Removing Records and Translation Units from the Debug Code
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
1:05Recap where we left last time and set the stage for the day
1:05Recap where we left last time and set the stage for the day
1:05Recap where we left last time and set the stage for the day
2:54handmade_debug_interface.h: Throw all of the debug annotation code into this new header file
2:54handmade_debug_interface.h: Throw all of the debug annotation code into this new header file
2:54handmade_debug_interface.h: Throw all of the debug annotation code into this new header file
4:01handmade_debug.h: Remove debug_variable entirely and give its functionality to debug_event
4:01handmade_debug.h: Remove debug_variable entirely and give its functionality to debug_event
4:01handmade_debug.h: Remove debug_variable entirely and give its functionality to debug_event
6:15handmade_debug.cpp: Rename DEBUGVariableToText to DEBUGEventToText
6:15handmade_debug.cpp: Rename DEBUGVariableToText to DEBUGEventToText
6:15handmade_debug.cpp: Rename DEBUGVariableToText to DEBUGEventToText
6:30handmade_debug.cpp: Introduce GetName
6:30handmade_debug.cpp: Introduce GetName
6:30handmade_debug.cpp: Introduce GetName
8:02handmade_debug.cpp: Replace Var->Event. with Event->
8:02handmade_debug.cpp: Replace Var->Event. with Event->
8:02handmade_debug.cpp: Replace Var->Event. with Event->
8:10"Everyone's happy and fine and dancing around..."α
8:10"Everyone's happy and fine and dancing around..."α
8:10"Everyone's happy and fine and dancing around..."α
12:14handmade_debug_interface.h: Consider extending the concept of debug_event to support an additional Name and stop storing DebugRecordIndex
12:14handmade_debug_interface.h: Consider extending the concept of debug_event to support an additional Name and stop storing DebugRecordIndex
12:14handmade_debug_interface.h: Consider extending the concept of debug_event to support an additional Name and stop storing DebugRecordIndex
15:10handmade_debug.cpp: Comment out Var->Name in CollateCreateVariable and ZeroStruct *Var
15:10handmade_debug.cpp: Comment out Var->Name in CollateCreateVariable and ZeroStruct *Var
15:10handmade_debug.cpp: Comment out Var->Name in CollateCreateVariable and ZeroStruct *Var
15:45handmade_debug.cpp: Continue moving debug_variable functionality to debug_event
15:45handmade_debug.cpp: Continue moving debug_variable functionality to debug_event
15:45handmade_debug.cpp: Continue moving debug_variable functionality to debug_event
16:45Debugger: Notice that we don't currently support some of the DebugTypes
16:45Debugger: Notice that we don't currently support some of the DebugTypes
16:45Debugger: Notice that we don't currently support some of the DebugTypes
18:06handmade_debug.cpp: Assert that the Type != EndBlock
18:06handmade_debug.cpp: Assert that the Type != EndBlock
18:06handmade_debug.cpp: Assert that the Type != EndBlock
18:47handmade_debug_interface.h: Remove DebugType_FirstUIType from debug_type
18:47handmade_debug_interface.h: Remove DebugType_FirstUIType from debug_type
18:47handmade_debug_interface.h: Remove DebugType_FirstUIType from debug_type
19:19Run the game and see that it's all good
19:19Run the game and see that it's all good
19:19Run the game and see that it's all good
19:28handmade_debug_interface.h: Replace DebugRecordIndex with *Name and remove TranslationUnit from debug_event
19:28handmade_debug_interface.h: Replace DebugRecordIndex with *Name and remove TranslationUnit from debug_event
19:28handmade_debug_interface.h: Replace DebugRecordIndex with *Name and remove TranslationUnit from debug_event
22:23Pig Hat Timeβ
22:23Pig Hat Timeβ
22:23Pig Hat Timeβ
22:31handmade_debug_interface.h: Stuff *FileName, *BlockName and LineNumber into debug_event and remove the concept of debug_record
22:31handmade_debug_interface.h: Stuff *FileName, *BlockName and LineNumber into debug_event and remove the concept of debug_record
22:31handmade_debug_interface.h: Stuff *FileName, *BlockName and LineNumber into debug_event and remove the concept of debug_record
28:25"Sometimes you're dumb"γ
28:25"Sometimes you're dumb"γ
28:25"Sometimes you're dumb"γ
28:54handmade_debug.cpp: Change Source to Event
28:54handmade_debug.cpp: Change Source to Event
28:54handmade_debug.cpp: Change Source to Event
30:40handmade_debug.h and .cpp: Change ScopeToRecord to be a char and change how it is used in DebugType_EndBlock
30:40handmade_debug.h and .cpp: Change ScopeToRecord to be a char and change how it is used in DebugType_EndBlock
30:40handmade_debug.h and .cpp: Change ScopeToRecord to be a char and change how it is used in DebugType_EndBlock
32:58handmade_debug.cpp: Remove GetRecordFrom
32:58handmade_debug.cpp: Remove GetRecordFrom
32:58handmade_debug.cpp: Remove GetRecordFrom
33:26handmade_debug.h: Add *Event to debug_frame_region
33:26handmade_debug.h: Add *Event to debug_frame_region
33:26handmade_debug.h: Add *Event to debug_frame_region
34:27handmade_debug.cpp: Set ColorIndex to OpeningEvent->BlockName
34:27handmade_debug.cpp: Set ColorIndex to OpeningEvent->BlockName
34:27handmade_debug.cpp: Set ColorIndex to OpeningEvent->BlockName
35:15handmade_debug.cpp: Rename Source to Event
35:15handmade_debug.cpp: Rename Source to Event
35:15handmade_debug.cpp: Rename Source to Event
35:26handmade_debug.cpp: Change HotRecord to HotEvent
35:26handmade_debug.cpp: Change HotRecord to HotEvent
35:26handmade_debug.cpp: Change HotRecord to HotEvent
36:10handmade_debug.cpp: Remove the check on GlobalDebugTable
36:10handmade_debug.cpp: Remove the check on GlobalDebugTable
36:10handmade_debug.cpp: Remove the check on GlobalDebugTable
36:25Run the game and see that we're getting a lot closer
36:25Run the game and see that we're getting a lot closer
36:25Run the game and see that we're getting a lot closer
37:00build.bat: Remove TRANSLATION_UNIT_INDEX
37:00build.bat: Remove TRANSLATION_UNIT_INDEX
37:00build.bat: Remove TRANSLATION_UNIT_INDEX
37:22Run the game and check that it's still okay
37:22Run the game and check that it's still okay
37:22Run the game and check that it's still okay
37:25handmade_debug_interface.h: Remove debug_record and put GetController back into handmade_platform.h
37:25handmade_debug_interface.h: Remove debug_record and put GetController back into handmade_platform.h
37:25handmade_debug_interface.h: Remove debug_record and put GetController back into handmade_platform.h
38:08handmade_debug_interface.h: Move ThreadID and CoreIndex from threadid_coreindex to debug_event
38:08handmade_debug_interface.h: Move ThreadID and CoreIndex from threadid_coreindex to debug_event
38:08handmade_debug_interface.h: Move ThreadID and CoreIndex from threadid_coreindex to debug_event
39:07Run the game and see that all is working nicely
39:07Run the game and see that all is working nicely
39:07Run the game and see that all is working nicely
39:19handmade_debug_interface.h: Remove #define MAX_DEBUG_TRANSLATION_UNITS
39:19handmade_debug_interface.h: Remove #define MAX_DEBUG_TRANSLATION_UNITS
39:19handmade_debug_interface.h: Remove #define MAX_DEBUG_TRANSLATION_UNITS
39:50handmade_optimized.cpp: Remove DebugRecords_Optimized_Count
39:50handmade_optimized.cpp: Remove DebugRecords_Optimized_Count
39:50handmade_optimized.cpp: Remove DebugRecords_Optimized_Count
40:08handmade_debug.cpp: Remove DebugRecords nonsense
40:08handmade_debug.cpp: Remove DebugRecords nonsense
40:08handmade_debug.cpp: Remove DebugRecords nonsense
40:34handmade_debug_interface.h: Consider packing debug_event a little more
40:34handmade_debug_interface.h: Consider packing debug_event a little more
40:34handmade_debug_interface.h: Consider packing debug_event a little more
42:18handmade_debug.cpp: Add Var->BlockName back in to CollateCreateVariable
42:18handmade_debug.cpp: Add Var->BlockName back in to CollateCreateVariable
42:18handmade_debug.cpp: Add Var->BlockName back in to CollateCreateVariable
42:42Run the game and see "Hot Entity" again
42:42Run the game and see "Hot Entity" again
42:42Run the game and see "Hot Entity" again
43:03handmade_debug.cpp: Remove debug_event *Var
43:03handmade_debug.cpp: Remove debug_event *Var
43:03handmade_debug.cpp: Remove debug_event *Var
44:06handmade_debug.cpp: Do CollateAddVariableGroup rather than CollateCreateGroupedVariable
44:06handmade_debug.cpp: Do CollateAddVariableGroup rather than CollateCreateGroupedVariable
44:06handmade_debug.cpp: Do CollateAddVariableGroup rather than CollateCreateGroupedVariable
45:10handmade_debug.h: Remove DebugType_VarGroup from debug_type and call it OpenDataBlock everywhere
45:10handmade_debug.h: Remove DebugType_VarGroup from debug_type and call it OpenDataBlock everywhere
45:10handmade_debug.h: Remove DebugType_VarGroup from debug_type and call it OpenDataBlock everywhere
45:55Debugger: Investigate why BeginBlock is happening
45:55Debugger: Investigate why BeginBlock is happening
45:55Debugger: Investigate why BeginBlock is happening
48:42handmade_debug.cpp: Remove CollateCreateGroupedVariable
48:42handmade_debug.cpp: Remove CollateCreateGroupedVariable
48:42handmade_debug.cpp: Remove CollateCreateGroupedVariable
48:48handmade_debug.cpp: Assert that Link->Event->Type != DebugType_BeginBlock in CollateAddVariableToGroup
48:48handmade_debug.cpp: Assert that Link->Event->Type != DebugType_BeginBlock in CollateAddVariableToGroup
48:48handmade_debug.cpp: Assert that Link->Event->Type != DebugType_BeginBlock in CollateAddVariableToGroup
49:14Debugger: Inspect Stack and Depth
49:14Debugger: Inspect Stack and Depth
49:14Debugger: Inspect Stack and Depth
50:34handmade_debug.cpp: Try doing RestartCollation on every frame
50:34handmade_debug.cpp: Try doing RestartCollation on every frame
50:34handmade_debug.cpp: Try doing RestartCollation on every frame
52:02Run the game and find that it was an overwriting problem
52:02Run the game and find that it was an overwriting problem
52:02Run the game and find that it was an overwriting problem
52:50Q&A
🗩
52:50Q&A
🗩
52:50Q&A
🗩
53:59hwd2ro Will you get back to game related coding next week?
🗪
53:59hwd2ro Will you get back to game related coding next week?
🗪
53:59hwd2ro Will you get back to game related coding next week?
🗪
54:34fierydrake Do you ever wear the piggie hat at work?
🗪
54:34fierydrake Do you ever wear the piggie hat at work?
🗪
54:34fierydrake Do you ever wear the piggie hat at work?
🗪
54:57elxenoaizd What would be the thing that would impress you on a programmer's resume?
🗪
54:57elxenoaizd What would be the thing that would impress you on a programmer's resume?
🗪
54:57elxenoaizd What would be the thing that would impress you on a programmer's resume?
🗪
55:32thordurA Bit off-topic, but when will you do the ODE stuff?
🗪
55:32thordurA Bit off-topic, but when will you do the ODE stuff?
🗪
55:32thordurA Bit off-topic, but when will you do the ODE stuff?
🗪
56:08Blackboard: Ordinary Differential Equation
56:08Blackboard: Ordinary Differential Equation
56:08Blackboard: Ordinary Differential Equation
59:22culver_fly I think he meant e^kt
🗪
59:22culver_fly I think he meant e^kt
🗪
59:22culver_fly I think he meant e^kt
🗪
1:01:36xDeadBringerx I see a lot of branching in your code. Aren't you trashing the caches and the branch predictor?
🗪
1:01:36xDeadBringerx I see a lot of branching in your code. Aren't you trashing the caches and the branch predictor?
🗪
1:01:36xDeadBringerx I see a lot of branching in your code. Aren't you trashing the caches and the branch predictor?
🗪
1:05:16Angrycrow 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:16Angrycrow 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:16Angrycrow 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:35ChronalDragon 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:05:35ChronalDragon 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:05:35ChronalDragon 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:59culver_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:06:59culver_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:06:59culver_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:37Mr4thDimention Well if you would just replace the branches with polymorphism...
🗪
1:08:37Mr4thDimention Well if you would just replace the branches with polymorphism...
🗪
1:08:37Mr4thDimention Well if you would just replace the branches with polymorphism...
🗪
1:08:49elxenoaizd What's more impressive: previous projects + practical experience vs college degree?
🗪
1:08:49elxenoaizd What's more impressive: previous projects + practical experience vs college degree?
🗪
1:08:49elxenoaizd What's more impressive: previous projects + practical experience vs college degree?
🗪
1:09:40JamesWidman Compilers generally ignore the 'register' keyword
🗪
1:09:40JamesWidman Compilers generally ignore the 'register' keyword
🗪
1:09:40JamesWidman Compilers generally ignore the 'register' keyword
🗪
1:10:54xDeadBringerx Ever thinking about running Handmade Hero through cachegrind?
🗪
1:10:54xDeadBringerx Ever thinking about running Handmade Hero through cachegrind?
🗪
1:10:54xDeadBringerx Ever thinking about running Handmade Hero through cachegrind?
🗪
1:13:05Wind it down
🗩
1:13:05Wind it down
🗩
1:13:05Wind it down
🗩