Handmade Hero»Episode Guide
Cleaning Up Some Win32 Issues
?
?

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)
0:22Set the stage for the day
0:22Set the stage for the day
0:22Set the stage for the day
1:59build.bat: Introduce and check for HANDMADE_STREAMING environment variable
1:59build.bat: Introduce and check for HANDMADE_STREAMING environment variable
1:59build.bat: Introduce and check for HANDMADE_STREAMING environment variable
6:55"Where are you, Mr. Environment Variables?"α
6:55"Where are you, Mr. Environment Variables?"α
6:55"Where are you, Mr. Environment Variables?"α
8:53Double check to make sure that we can still streamβ
8:53Double check to make sure that we can still streamβ
8:53Double check to make sure that we can still streamβ
9:35Delete a bunch of stuff we no longer use
9:35Delete a bunch of stuff we no longer use
9:35Delete a bunch of stuff we no longer use
14:13handmade_platform.h: Rename PointerToU32 to U32FromPointer and call it where needed, in order to prevent GCC and clang from complaining
14:13handmade_platform.h: Rename PointerToU32 to U32FromPointer and call it where needed, in order to prevent GCC and clang from complaining
14:13handmade_platform.h: Rename PointerToU32 to U32FromPointer and call it where needed, in order to prevent GCC and clang from complaining
18:00Run the game and ensure that it does run
18:00Run the game and ensure that it does run
18:00Run the game and ensure that it does run
19:13win32_handmade.cpp: Remove the fader
19:13win32_handmade.cpp: Remove the fader
19:13win32_handmade.cpp: Remove the fader
23:31Consider removing the multi-threaded OpenGL contexts
23:31Consider removing the multi-threaded OpenGL contexts
23:31Consider removing the multi-threaded OpenGL contexts
25:23Run the game and point out a bug in the profiler upon hot-reloading
25:23Run the game and point out a bug in the profiler upon hot-reloading
25:23Run the game and point out a bug in the profiler upon hot-reloading
30:23Debugger: Manually write xor instructions into memoryγ
30:23Debugger: Manually write xor instructions into memoryγ
30:23Debugger: Manually write xor instructions into memoryγ
32:45Run the game and verify that the strings are getting messed up
32:45Run the game and verify that the strings are getting messed up
32:45Run the game and verify that the strings are getting messed up
34:25handmade_debug.cpp: Fix the string handling
34:25handmade_debug.cpp: Fix the string handling
34:25handmade_debug.cpp: Fix the string handling
40:50Run the game, test the hot-reloading to see that the strings do remain stable, but crash
40:50Run the game, test the hot-reloading to see that the strings do remain stable, but crash
40:50Run the game, test the hot-reloading to see that the strings do remain stable, but crash
42:04Debugger: Inspect the Thread and find that the OpeningEvent does not have to be valid
42:04Debugger: Inspect the Thread and find that the OpeningEvent does not have to be valid
42:04Debugger: Inspect the Thread and find that the OpeningEvent does not have to be valid
43:19Q: Why did we make the GlobalDebugTable a static buffer?
43:19Q: Why did we make the GlobalDebugTable a static buffer?
43:19Q: Why did we make the GlobalDebugTable a static buffer?
45:45win32_handmade.cpp: Make the GlobalDebugTable in here be the authoritative one and rewrite how it gets collated
45:45win32_handmade.cpp: Make the GlobalDebugTable in here be the authoritative one and rewrite how it gets collated
45:45win32_handmade.cpp: Make the GlobalDebugTable in here be the authoritative one and rewrite how it gets collated
52:43Run the game and twiddle it a little bitδ
52:43Run the game and twiddle it a little bitδ
52:43Run the game and twiddle it a little bitδ
54:04Investigate what is wrong with our profile
54:04Investigate what is wrong with our profile
54:04Investigate what is wrong with our profile
1:01:30win32_handmade.cpp: Conditionally clear the debug event array if the game failed to load
1:01:30win32_handmade.cpp: Conditionally clear the debug event array if the game failed to load
1:01:30win32_handmade.cpp: Conditionally clear the debug event array if the game failed to load
1:02:39Run the game and resume our investigations
1:02:39Run the game and resume our investigations
1:02:39Run the game and resume our investigations
1:04:04Debugger: Step into BeginBlock and inspect the DebugState
1:04:04Debugger: Step into BeginBlock and inspect the DebugState
1:04:04Debugger: Step into BeginBlock and inspect the DebugState
1:09:41Debugger: Inspect the events' GUIDs and break into EventsMatch
1:09:41Debugger: Inspect the events' GUIDs and break into EventsMatch
1:09:41Debugger: Inspect the events' GUIDs and break into EventsMatch
1:10:18"I don't care about you"ε
1:10:18"I don't care about you"ε
1:10:18"I don't care about you"ε
1:11:13handmade_debug.cpp: Temporarily Assert that EventsMatch and inspect the Events when we hit that assertion
1:11:13handmade_debug.cpp: Temporarily Assert that EventsMatch and inspect the Events when we hit that assertion
1:11:13handmade_debug.cpp: Temporarily Assert that EventsMatch and inspect the Events when we hit that assertion
1:14:24handmade_debug.cpp: Note that the Event is transitory and instead use StoredEvent for now
1:14:24handmade_debug.cpp: Note that the Event is transitory and instead use StoredEvent for now
1:14:24handmade_debug.cpp: Note that the Event is transitory and instead use StoredEvent for now
1:16:16Debugger: Inspect the Events and StoredEvent
1:16:16Debugger: Inspect the Events and StoredEvent
1:16:16Debugger: Inspect the Events and StoredEvent
1:16:35"Something very strange is afoot"ζ
1:16:35"Something very strange is afoot"ζ
1:16:35"Something very strange is afoot"ζ
1:17:32"So complicated. I rather enjoy it, though"η
1:17:32"So complicated. I rather enjoy it, though"η
1:17:32"So complicated. I rather enjoy it, though"η
1:17:36handmade_debug.h: Make open_debug_block not store the entire debug_event but instead just store the data we want
1:17:36handmade_debug.h: Make open_debug_block not store the entire debug_event but instead just store the data we want
1:17:36handmade_debug.h: Make open_debug_block not store the entire debug_event but instead just store the data we want
1:20:24Run the game and see that we're still losing our profile
1:20:24Run the game and see that we're still losing our profile
1:20:24Run the game and see that we're still losing our profile
1:21:19Q&A
🗩
1:21:19Q&A
🗩
1:21:19Q&A
🗩
1:21:36desuused Would it be reasonable to separate the debug UI into a separate program that communicates with the game over pipes / sockets? The game won't hold the debug data and won't waste cycles on debug collation, debug rendering; if game crashes, you can still inspect frames, or even save them to the disk independently of the game running
🗪
1:21:36desuused Would it be reasonable to separate the debug UI into a separate program that communicates with the game over pipes / sockets? The game won't hold the debug data and won't waste cycles on debug collation, debug rendering; if game crashes, you can still inspect frames, or even save them to the disk independently of the game running
🗪
1:21:36desuused Would it be reasonable to separate the debug UI into a separate program that communicates with the game over pipes / sockets? The game won't hold the debug data and won't waste cycles on debug collation, debug rendering; if game crashes, you can still inspect frames, or even save them to the disk independently of the game running
🗪
1:23:09badflydog You are referring to GlobalDebugTable outside a HANDMADE_INTERNAL guard, when you initialize it in UpdateAndRender
🗪
1:23:09badflydog You are referring to GlobalDebugTable outside a HANDMADE_INTERNAL guard, when you initialize it in UpdateAndRender
🗪
1:23:09badflydog You are referring to GlobalDebugTable outside a HANDMADE_INTERNAL guard, when you initialize it in UpdateAndRender
🗪
1:23:25Miblo Casey, your stream overlay disappeared at some point this evening. I'm pretty darn sure it might have happened out of protest when you removed the beautiful fade, so it could be worth reimplementing that, if only in the interest of overlay stability
🗪
1:23:25Miblo Casey, your stream overlay disappeared at some point this evening. I'm pretty darn sure it might have happened out of protest when you removed the beautiful fade, so it could be worth reimplementing that, if only in the interest of overlay stability
🗪
1:23:25Miblo Casey, your stream overlay disappeared at some point this evening. I'm pretty darn sure it might have happened out of protest when you removed the beautiful fade, so it could be worth reimplementing that, if only in the interest of overlay stability
🗪
1:23:39elxenoaizd How are you finding modular editing so far?
🗪
1:23:39elxenoaizd How are you finding modular editing so far?
🗪
1:23:39elxenoaizd How are you finding modular editing so far?
🗪
1:24:39handmade.cpp: Initialise GlobalDebugTable inside HANDMADE_INTERNAL
1:24:39handmade.cpp: Initialise GlobalDebugTable inside HANDMADE_INTERNAL
1:24:39handmade.cpp: Initialise GlobalDebugTable inside HANDMADE_INTERNAL
1:25:10cubercaleb Why not use DebugBreak instead of *(int*)0=0 which will allow you to step over the assertion if you really want but will still trigger the breakpoint
🗪
1:25:10cubercaleb Why not use DebugBreak instead of *(int*)0=0 which will allow you to step over the assertion if you really want but will still trigger the breakpoint
🗪
1:25:10cubercaleb Why not use DebugBreak instead of *(int*)0=0 which will allow you to step over the assertion if you really want but will still trigger the breakpoint
🗪
1:25:31erdomina The Handmade twitter account says tomorrow is an off day
🗪
1:25:31erdomina The Handmade twitter account says tomorrow is an off day
🗪
1:25:31erdomina The Handmade twitter account says tomorrow is an off day
🗪
1:25:37badflydog What exactly is modular editing?
🗪
1:25:37badflydog What exactly is modular editing?
🗪
1:25:37badflydog What exactly is modular editing?
🗪
1:26:09elxenoaizd When you're writing your own renderers and stuff, do you go for a left-handed coordinate system or right-handed (for vector-matrix multiplications, etc.), and why?
🗪
1:26:09elxenoaizd When you're writing your own renderers and stuff, do you go for a left-handed coordinate system or right-handed (for vector-matrix multiplications, etc.), and why?
🗪
1:26:09elxenoaizd When you're writing your own renderers and stuff, do you go for a left-handed coordinate system or right-handed (for vector-matrix multiplications, etc.), and why?
🗪
1:26:36longboolean Something I noticed when you disabled the trees rendering, the white dot used to resize the profiler view is hard to see over a light background, like the text was hard to read before adding a shadow
🗪
1:26:36longboolean Something I noticed when you disabled the trees rendering, the white dot used to resize the profiler view is hard to see over a light background, like the text was hard to read before adding a shadow
🗪
1:26:36longboolean Something I noticed when you disabled the trees rendering, the white dot used to resize the profiler view is hard to see over a light background, like the text was hard to read before adding a shadow
🗪
1:27:42zach211w Do you find that commentating as you work helps you reason or helps you overall when programming?
🗪
1:27:42zach211w Do you find that commentating as you work helps you reason or helps you overall when programming?
🗪
1:27:42zach211w Do you find that commentating as you work helps you reason or helps you overall when programming?
🗪
1:28:03elxenoaizd Do you think 4coder is good enough to switch to coming from emacs? Or are you finding it's missing some stuff yet?
🗪
1:28:03elxenoaizd Do you think 4coder is good enough to switch to coming from emacs? Or are you finding it's missing some stuff yet?
🗪
1:28:03elxenoaizd Do you think 4coder is good enough to switch to coming from emacs? Or are you finding it's missing some stuff yet?
🗪
1:29:59elxenoaizd And vertical- / block-kill / -selection?
🗪
1:29:59elxenoaizd And vertical- / block-kill / -selection?
🗪
1:29:59elxenoaizd And vertical- / block-kill / -selection?
🗪
1:30:32cubercaleb Off topic: I noticed that pragma pack will change the alignment of the struct. Is there a way of keeping the original alignment?
🗪
1:30:32cubercaleb Off topic: I noticed that pragma pack will change the alignment of the struct. Is there a way of keeping the original alignment?
🗪
1:30:32cubercaleb Off topic: I noticed that pragma pack will change the alignment of the struct. Is there a way of keeping the original alignment?
🗪
1:30:48badflydog Could you share your 4coder_custom.cpp?
🗪
1:30:48badflydog Could you share your 4coder_custom.cpp?
🗪
1:30:48badflydog Could you share your 4coder_custom.cpp?
🗪
1:32:22btngames Do you think it would be neat to save a DebugUI "layout" with torn elements open as they were last?
🗪
1:32:22btngames Do you think it would be neat to save a DebugUI "layout" with torn elements open as they were last?
🗪
1:32:22btngames Do you think it would be neat to save a DebugUI "layout" with torn elements open as they were last?
🗪
1:33:02mr4thdimention I include it in 4coder at the $10 level
🗪
1:33:02mr4thdimention I include it in 4coder at the $10 level
🗪
1:33:02mr4thdimention I include it in 4coder at the $10 level
🗪
1:33:30badflydog Is it possible to use with the $5 build?
🗪
1:33:30badflydog Is it possible to use with the $5 build?
🗪
1:33:30badflydog Is it possible to use with the $5 build?
🗪
1:33:49Call it a day
🗩
1:33:49Call it a day
🗩
1:33:49Call it a day
🗩
1:34:26Promote 4coder
🗩
1:34:26Promote 4coder
🗩
1:34:26Promote 4coder
🗩