Handmade Hero»Episode Guide
Cleaning Up Import Tag Grids
?
?

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:00Recap and set the stage for the day finishing up our WAV file importing
🗩
0:00Recap and set the stage for the day finishing up our WAV file importing
🗩
0:00Recap and set the stage for the day finishing up our WAV file importing
🗩
4:23“Entropy is the mother of invention”α
🗩
4:23“Entropy is the mother of invention”α
🗩
4:23“Entropy is the mother of invention”α
🗩
5:03Set up to upgrade remedybg
🗩
5:03Set up to upgrade remedybg
🗩
5:03Set up to upgrade remedybg
🗩
6:13Unpack the backpack from the back room
🗹
6:13Unpack the backpack from the back room
🗹
6:13Unpack the backpack from the back room
🗹
11:10Upgrade to remedybg 0.2.0.11
🗹
11:10Upgrade to remedybg 0.2.0.11
🗹
11:10Upgrade to remedybg 0.2.0.11
🗹
14:52Set up to tag our audio assets
📖
14:52Set up to tag our audio assets
📖
14:52Set up to tag our audio assets
📖
20:18Make SynchronizeAssetFileChanges() call a new CreateAudioChannelTagGrid()
20:18Make SynchronizeAssetFileChanges() call a new CreateAudioChannelTagGrid()
20:18Make SynchronizeAssetFileChanges() call a new CreateAudioChannelTagGrid()
21:00Determine to replace the tag grid building in ParsePieces() with the Context containing import_grid_tags directly
🗩
21:00Determine to replace the tag grid building in ParsePieces() with the Context containing import_grid_tags directly
🗩
21:00Determine to replace the tag grid building in ParsePieces() with the Context containing import_grid_tags directly
🗩
22:38Distinguishing between TagGrid and Hagrid
🗩
22:38Distinguishing between TagGrid and Hagrid
🗩
22:38Distinguishing between TagGrid and Hagrid
🗩
23:45Augment hht_context with import_grid_tags for ParseTopLevelBlock() to set
23:45Augment hht_context with import_grid_tags for ParseTopLevelBlock() to set
23:45Augment hht_context with import_grid_tags for ParseTopLevelBlock() to set
38:56Make SynchronizeAssetFileChanges() initialise all of our Context's import_grid_tags, catching an out-of-memory error early
38:56Make SynchronizeAssetFileChanges() initialise all of our Context's import_grid_tags, catching an out-of-memory error early
38:56Make SynchronizeAssetFileChanges() initialise all of our Context's import_grid_tags, catching an out-of-memory error early
47:59Relieve ImportBody() and ImportHead() of taking the tokenizer, and split ParsePieces() out into various CreateArt*TagGrid() functions
47:59Relieve ImportBody() and ImportHead() of taking the tokenizer, and split ParsePieces() out into various CreateArt*TagGrid() functions
47:59Relieve ImportBody() and ImportHead() of taking the tokenizer, and split ParsePieces() out into various CreateArt*TagGrid() functions
51:55Introduce CreateAudioChannelTagGrid()
51:55Introduce CreateAudioChannelTagGrid()
51:55Introduce CreateAudioChannelTagGrid()
55:42Fix compile errors
55:42Fix compile errors
55:42Fix compile errors
58:53Move the import_grid_tags from hht_context to game_assets, for AllocateGameAssets() to initialise once at startup
58:53Move the import_grid_tags from hht_context to game_assets, for AllocateGameAssets() to initialise once at startup
58:53Move the import_grid_tags from hht_context to game_assets, for AllocateGameAssets() to initialise once at startup
1:06:09Step through AllocateGameAssets() to see how it all behaves
🏃
1:06:09Step through AllocateGameAssets() to see how it all behaves
🏃
1:06:09Step through AllocateGameAssets() to see how it all behaves
🏃
1:07:59remedybg bug: Tree expansion IDs
🗹
1:07:59remedybg bug: Tree expansion IDs
🗹
1:07:59remedybg bug: Tree expansion IDs
🗹
1:08:57Step through CreateAudioChannelTagGrid()
🏃
1:08:57Step through CreateAudioChannelTagGrid()
🏃
1:08:57Step through CreateAudioChannelTagGrid()
🏃
1:09:14remedybg love: Resolution of enum item names
🗹
1:09:14remedybg love: Resolution of enum item names
🗹
1:09:14remedybg love: Resolution of enum item names
🗹
1:09:38Continue to step through CreateAudioChannelTagGrid()
🏃
1:09:38Continue to step through CreateAudioChannelTagGrid()
🏃
1:09:38Continue to step through CreateAudioChannelTagGrid()
🏃
1:10:09remedybg love: Locking of out-of-scope variables, and sheer responsiveness
🗹
1:10:09remedybg love: Locking of out-of-scope variables, and sheer responsiveness
🗹
1:10:09remedybg love: Locking of out-of-scope variables, and sheer responsiveness
🗹
1:12:29Step on through SynchronizeAssetFileChanges() to ParseHHT()
🏃
1:12:29Step on through SynchronizeAssetFileChanges() to ParseHHT()
🏃
1:12:29Step on through SynchronizeAssetFileChanges() to ParseHHT()
🏃
1:14:02Fix typos in ParseTopLevelBlock()
1:14:02Fix typos in ParseTopLevelBlock()
1:14:02Fix typos in ParseTopLevelBlock()
1:14:26Step through ParseTopLevelBlock()
🏃
1:14:26Step through ParseTopLevelBlock()
🏃
1:14:26Step through ParseTopLevelBlock()
🏃
1:14:59remedybg bug: Disassembly stepping with F10 switches focus back to the source view after stepping
🗹
1:14:59remedybg bug: Disassembly stepping with F10 switches focus back to the source view after stepping
🗹
1:14:59remedybg bug: Disassembly stepping with F10 switches focus back to the source view after stepping
🗹
1:16:00Continue to step through ParseTopLevelBlock()
🏃
1:16:00Continue to step through ParseTopLevelBlock()
🏃
1:16:00Continue to step through ParseTopLevelBlock()
🏃
1:20:13Step through the parsing of our "music" and "sound" blocks
🏃
1:20:13Step through the parsing of our "music" and "sound" blocks
🏃
1:20:13Step through the parsing of our "music" and "sound" blocks
🏃
1:21:10remedybg feature request: Display of long strings in the Watch window, potentially in a manner flexible enough to allow for displaying of images, waveforms, etc., and even the contents of other windows like Threads
🗹
1:21:10remedybg feature request: Display of long strings in the Watch window, potentially in a manner flexible enough to allow for displaying of images, waveforms, etc., and even the contents of other windows like Threads
🗹
1:21:10remedybg feature request: Display of long strings in the Watch window, potentially in a manner flexible enough to allow for displaying of images, waveforms, etc., and even the contents of other windows like Threads
🗹
1:25:58Organise music_test.wav into the correct directory
🗹
1:25:58Organise music_test.wav into the correct directory
🗹
1:25:58Organise music_test.wav into the correct directory
🗹
1:26:50Step back in to the parsing of a "music" block
🏃
1:26:50Step back in to the parsing of a "music" block
🏃
1:26:50Step back in to the parsing of a "music" block
🏃
1:29:29remedybg bug: Incorrect cursor position
🗹
1:29:29remedybg bug: Incorrect cursor position
🗹
1:29:29remedybg bug: Incorrect cursor position
🗹
1:29:40Continue to step through ParseWAV()
🏃
1:29:40Continue to step through ParseWAV()
🏃
1:29:40Continue to step through ParseWAV()
🏃
1:31:09remedybg love: Expression parsing, casting and relative scope variable resolution
🗹
1:31:09remedybg love: Expression parsing, casting and relative scope variable resolution
🗹
1:31:09remedybg love: Expression parsing, casting and relative scope variable resolution
🗹
1:36:01Continue to step through ParseWAV()
🏃
1:36:01Continue to step through ParseWAV()
🏃
1:36:01Continue to step through ParseWAV()
🏃
1:36:46Prevent ParseWAV() from iterating past the already departed initial chunk
1:36:46Prevent ParseWAV() from iterating past the already departed initial chunk
1:36:46Prevent ParseWAV() from iterating past the already departed initial chunk
1:37:54Step back through ParseWAV() to ProcessAudioImport()
🏃
1:37:54Step back through ParseWAV() to ProcessAudioImport()
🏃
1:37:54Step back through ParseWAV() to ProcessAudioImport()
🏃
1:43:17Fix ProcessAudioImport() to write the correct AssetIndex into our AssetIndexSlot
1:43:17Fix ProcessAudioImport() to write the correct AssetIndex into our AssetIndexSlot
1:43:17Fix ProcessAudioImport() to write the correct AssetIndex into our AssetIndexSlot
1:46:48Step back through ProcessAudioImport()
🏃
1:46:48Step back through ProcessAudioImport()
🏃
1:46:48Step back through ProcessAudioImport()
🏃
1:49:30Hit assertion in SetAssetType()
🏃
1:49:30Hit assertion in SetAssetType()
🏃
1:49:30Hit assertion in SetAssetType()
🏃
1:49:40remedybg feature request: Status line colourisation
🗹
1:49:40remedybg feature request: Status line colourisation
🗹
1:49:40remedybg feature request: Status line colourisation
🗹
1:50:28Investigate our !Asset->NextOfType assertion
🏃
1:50:28Investigate our !Asset->NextOfType assertion
🏃
1:50:28Investigate our !Asset->NextOfType assertion
🏃
1:53:32Make AllocateGameAssets() check for a TypeID before calling SetAssetType()
1:53:32Make AllocateGameAssets() check for a TypeID before calling SetAssetType()
1:53:32Make AllocateGameAssets() check for a TypeID before calling SetAssetType()
1:55:46Break into our !TypeID test path in AllocateGameAssets() to find that we follow it often
🏃
1:55:46Break into our !TypeID test path in AllocateGameAssets() to find that we follow it often
🏃
1:55:46Break into our !TypeID test path in AllocateGameAssets() to find that we follow it often
🏃
1:58:18Check out the existing "plate" processing code in ParsePieces()2
📖
1:58:18Check out the existing "plate" processing code in ParsePieces()2
📖
1:58:18Check out the existing "plate" processing code in ParsePieces()2
📖
2:01:04Dump base_game.hha and intro_cutscene.hha
🗹
2:01:04Dump base_game.hha and intro_cutscene.hha
🗹
2:01:04Dump base_game.hha and intro_cutscene.hha
🗹
2:03:41Check out our dumps of base_game.hha and intro_cutscene.hha in TabView
🗹
2:03:41Check out our dumps of base_game.hha and intro_cutscene.hha in TabView
🗹
2:03:41Check out our dumps of base_game.hha and intro_cutscene.hha in TabView
🗹
2:03:58Make PrintContents() print each asset's basic type tag at a higher, more visible level
2:03:58Make PrintContents() print each asset's basic type tag at a higher, more visible level
2:03:58Make PrintContents() print each asset's basic type tag at a higher, more visible level
2:06:31Introduce CategoryTags[] and CategoryNameFromID()
2:06:31Introduce CategoryTags[] and CategoryNameFromID()
2:06:31Introduce CategoryTags[] and CategoryNameFromID()
2:12:59Finish enabling PrintContents() to print each asset's basic type tag
2:12:59Finish enabling PrintContents() to print each asset's basic type tag
2:12:59Finish enabling PrintContents() to print each asset's basic type tag
2:15:30Check out the new .hha dumps in TabView to determine that intro_cutscene.hha is our culprit
🗹
2:15:30Check out the new .hha dumps in TabView to determine that intro_cutscene.hha is our culprit
🗹
2:15:30Check out the new .hha dumps in TabView to determine that intro_cutscene.hha is our culprit
🗹
2:17:35Reimport intro_cutscene.hha (in our debug build)
🏃
2:17:35Reimport intro_cutscene.hha (in our debug build)
🏃
2:17:35Reimport intro_cutscene.hha (in our debug build)
🏃
2:21:20Check out the new intro_cutscene.hha dump in TabView to see many chained audio assets (correctly) tagged basic type "None"
🗹
2:21:20Check out the new intro_cutscene.hha dump in TabView to see many chained audio assets (correctly) tagged basic type "None"
🗹
2:21:20Check out the new intro_cutscene.hha dump in TabView to see many chained audio assets (correctly) tagged basic type "None"
🗹
2:23:07Re-run the game and no longer hit our plate export conflict
🏃
2:23:07Re-run the game and no longer hit our plate export conflict
🏃
2:23:07Re-run the game and no longer hit our plate export conflict
🏃
2:23:42Consider how to tag chained audio assets
🗩
2:23:42Consider how to tag chained audio assets
🗩
2:23:42Consider how to tag chained audio assets
🗩
2:26:31Document hha_sound
2:26:31Document hha_sound
2:26:31Document hha_sound
2:27:45Re-run in an optimised build
🏃
2:27:45Re-run in an optimised build
🏃
2:27:45Re-run in an optimised build
🏃
2:28:19Q&A
🗩
2:28:19Q&A
🗩
2:28:19Q&A
🗩
2:28:43ivereadthesequel Q: Have you tried running TabVew with the --no-hermeneutics flag?
🗪
2:28:43ivereadthesequel Q: Have you tried running TabVew with the --no-hermeneutics flag?
🗪
2:28:43ivereadthesequel Q: Have you tried running TabVew with the --no-hermeneutics flag?
🗪
2:29:2990 / 125 sub points
🗹
2:29:2990 / 125 sub points
🗹
2:29:2990 / 125 sub points
🗹
2:32:30pythno Q: You never went to university yet you seem to be very literate in mathematics. How did you get to this level?
🗪
2:32:30pythno Q: You never went to university yet you seem to be very literate in mathematics. How did you get to this level?
🗪
2:32:30pythno Q: You never went to university yet you seem to be very literate in mathematics. How did you get to this level?
🗪
2:36:12Miblo Q: I got a call from Gary Walsh – Selina Meyer's bag man – while you were unpacking the backpack. He said he's jealous and wants to compare bag layouts...
🗪
2:36:12Miblo Q: I got a call from Gary Walsh – Selina Meyer's bag man – while you were unpacking the backpack. He said he's jealous and wants to compare bag layouts...
🗪
2:36:12Miblo Q: I got a call from Gary Walsh – Selina Meyer's bag man – while you were unpacking the backpack. He said he's jealous and wants to compare bag layouts...
🗪
2:36:31devsigner Q: What are your thoughts on code introspection or adding metadata to things like structs? Useful, or yet another bad object-oriented idea?
🗪
2:36:31devsigner Q: What are your thoughts on code introspection or adding metadata to things like structs? Useful, or yet another bad object-oriented idea?
🗪
2:36:31devsigner Q: What are your thoughts on code introspection or adding metadata to things like structs? Useful, or yet another bad object-oriented idea?
🗪
2:37:50jkfsda Q: Favorite code design learning resources?
🗪
2:37:50jkfsda Q: Favorite code design learning resources?
🗪
2:37:50jkfsda Q: Favorite code design learning resources?
🗪
2:37:55hexadecimalinteger Q: Would you use your "from scratch / low level" approach for machine learning? Or just use a library like TensorFlow?
🗪
2:37:55hexadecimalinteger Q: Would you use your "from scratch / low level" approach for machine learning? Or just use a library like TensorFlow?
🗪
2:37:55hexadecimalinteger Q: Would you use your "from scratch / low level" approach for machine learning? Or just use a library like TensorFlow?
🗪
2:41:07ivereadthesequel QuickShift_ asked in the pre-stream: "I guess Dear ImGui is a good example of a properly used global state?"
🗪
2:41:07ivereadthesequel QuickShift_ asked in the pre-stream: "I guess Dear ImGui is a good example of a properly used global state?"
🗪
2:41:07ivereadthesequel QuickShift_ asked in the pre-stream: "I guess Dear ImGui is a good example of a properly used global state?"
🗪
2:41:32xxy_yxx Q: Do you have any book recommendations for programming or mathematics?
🗪
2:41:32xxy_yxx Q: Do you have any book recommendations for programming or mathematics?
🗪
2:41:32xxy_yxx Q: Do you have any book recommendations for programming or mathematics?
🗪
2:42:13vapenir Q: Are you exclusively a C++ guy or have you worked with other languages over the years?
🗪
2:42:13vapenir Q: Are you exclusively a C++ guy or have you worked with other languages over the years?
🗪
2:42:13vapenir Q: Are you exclusively a C++ guy or have you worked with other languages over the years?
🗪
2:44:00theomarest Q: What's your favorite fairly-new language? Like the last 10 years
🗪
2:44:00theomarest Q: What's your favorite fairly-new language? Like the last 10 years
🗪
2:44:00theomarest Q: What's your favorite fairly-new language? Like the last 10 years
🗪
2:44:31ivereadthesequel Q: What's your impression of Seattle after living there for as long as you have? Where did you live before then?
🗪
2:44:31ivereadthesequel Q: What's your impression of Seattle after living there for as long as you have? Where did you live before then?
🗪
2:44:31ivereadthesequel Q: What's your impression of Seattle after living there for as long as you have? Where did you live before then?
🗪
2:45:55jbcgannon Q: Come back to Boston
🗪
2:45:55jbcgannon Q: Come back to Boston
🗪
2:45:55jbcgannon Q: Come back to Boston
🗪
2:46:49hexadecimalinteger Q: If given a virtually infinite budget, what would you dedicate your time to?
🗪
2:46:49hexadecimalinteger Q: If given a virtually infinite budget, what would you dedicate your time to?
🗪
2:46:49hexadecimalinteger Q: If given a virtually infinite budget, what would you dedicate your time to?
🗪
2:47:12insobot It's still valve
🗪
2:47:12insobot It's still valve
🗪
2:47:12insobot It's still valve
🗪
2:48:14victorn Oh wow, Casey is not using Visual Studio debugger anymore! So just the compiler is being used on Handmade Hero?
🗪
2:48:14victorn Oh wow, Casey is not using Visual Studio debugger anymore! So just the compiler is being used on Handmade Hero?
🗪
2:48:14victorn Oh wow, Casey is not using Visual Studio debugger anymore! So just the compiler is being used on Handmade Hero?
🗪
2:49:08That's all, folks
🗩
2:49:08That's all, folks
🗩
2:49:08That's all, folks
🗩