From 51de77ee31bb3d88701d30a2bab96dfa6ee34d61 Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Mon, 15 Apr 2019 20:18:45 +0100 Subject: [PATCH] Annotate hero/code525 --- cmuratori/hero/code/code525.hmml | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 cmuratori/hero/code/code525.hmml diff --git a/cmuratori/hero/code/code525.hmml b/cmuratori/hero/code/code525.hmml new file mode 100644 index 0000000..50fc993 --- /dev/null +++ b/cmuratori/hero/code/code525.hmml @@ -0,0 +1,82 @@ +[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Cleaning Up Import Tag Grids" vod_platform=youtube id=t81mqx7rf1k annotator=Miblo] +[0:00][Recap and set the stage for the day finishing up our WAV file importing][:"asset system" :speech] +[4:23][][:speech][quote 645] +[5:03][Set up to upgrade ~remedybg][:speech] +[6:13][Unpack the backpack from the back room][:admin] +[10:48][Fetch a thumb drive from the other room][:afk] +[11:10][Upgrade to ~remedybg 0.2.0.1[ref + site=RemedyBG + url=https://remedybg.itch.io/remedybg]][:admin] +[14:52][Set up to tag our audio assets][:"asset system" :research] +[20:18][Make SynchronizeAssetFileChanges() call a new CreateAudioChannelTagGrid()][:"asset system"] +[21:00][Determine to replace the tag grid building in ParsePieces() with the Context containing import_grid_tags directly][:"asset system" :speech] +[22:38][Distinguishing between TagGrid and Hagrid][:speech] +[23:45][Augment hht_context with import_grid_tags for ParseTopLevelBlock() to set][:"asset system"] +[38:56][Make SynchronizeAssetFileChanges() initialise all of our Context's import_grid_tags, catching an out-of-memory error early][:"asset system" :"error handling"] +[47:59][Relieve ImportBody() and ImportHead() of taking the tokenizer, and split ParsePieces() out into various CreateArt*TagGrid() functions][:"asset system"] +[51:55][Introduce CreateAudioChannelTagGrid()][:"asset system"] +[55:42][Fix compile errors][:"asset system"] +[58:53][Move the import_grid_tags from hht_context to game_assets, for AllocateGameAssets() to initialise once at startup][:"asset system"] +[1:06:09][Step through AllocateGameAssets() to see how it all behaves][:"asset system" :run] +[1:07:59][~remedybg bug: Tree expansion IDs][:admin] +[1:08:57][Step through CreateAudioChannelTagGrid()][:"asset system" :run] +[1:09:14][~remedybg love: Resolution of enum item names][:admin] +[1:09:38][Continue to step through CreateAudioChannelTagGrid()][:"asset system" :run] +[1:10:09][~remedybg love: Locking of out-of-scope variables, and sheer responsiveness][:admin] +[1:12:29][Step on through SynchronizeAssetFileChanges() to ParseHHT()][:"asset system" :parsing :run] +[1:14:02][Fix typos in ParseTopLevelBlock()][:"asset system" :parsing] +[1:14:26][Step through ParseTopLevelBlock()][:"asset system" :parsing :run] +[1:14:59][~remedybg bug: Disassembly stepping with F10 switches focus back to the source view after stepping][:admin] +[1:16:00][Continue to step through ParseTopLevelBlock()][:"asset system" :parsing :run] +[1:20:13][Step through the :parsing of our "music" and "sound" blocks][:"asset system" :run] +[1:21:10][~remedybg 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][:admin :ui] +[1:25:58][Organise music_test.wav into the correct directory][:admin] +[1:26:50][Step back in to the :parsing of a "music" block][:"asset system" :run] +[1:29:29][~remedybg bug: Incorrect cursor position][:admin] +[1:29:40][Continue to step through ParseWAV()][:"asset system" :parsing :run] +[1:31:09][~remedybg love: Expression :parsing, casting and relative scope variable resolution][:admin] +[1:36:01][Continue to step through ParseWAV()][:"asset system" :parsing :run] +[1:36:46][Prevent ParseWAV() from iterating past the already departed initial chunk][:"asset system" :parsing] +[1:37:54][Step back through ParseWAV() to ProcessAudioImport()][:"asset system" :parsing :run] +[1:43:17][Fix ProcessAudioImport() to write the correct AssetIndex into our AssetIndexSlot][:"asset system"] +[1:46:48][Step back through ProcessAudioImport()][:"asset system" :parsing :run] +[1:49:30][Hit assertion in SetAssetType()][:"asset system" :run] +[1:49:40][~remedybg feature request: Status line colourisation][:admin] +[1:50:28][Investigate our !Asset->NextOfType assertion][:"asset system" :run] +[1:53:32][Make AllocateGameAssets() check for a TypeID before calling SetAssetType()][:"asset system"] +[1:55:46][Break into our !TypeID test path in AllocateGameAssets() to find that we follow it often][:"asset system" :run] +[1:58:18][Check out the existing "plate" processing code in ParsePieces()[ref + site=GitHub + page="HandmadeHero / cpp / code / handmade_import.cpp" + url=https://github.com/HandmadeHero/cpp/blob/day524/code/handmade_import.cpp]][:"asset system" :parsing :research] +[2:01:04][Dump base_game.hha and intro_cutscene.hha][:admin :"asset system"] +[2:03:41][Check out our dumps of base_game.hha and intro_cutscene.hha in TabView][:admin :"asset system"] +[2:03:58][Make PrintContents() print each asset's basic type tag at a higher, more visible level][:"asset system"] +[2:06:31][Introduce CategoryTags\[\] and CategoryNameFromID()][:"asset system"] +[2:12:59][Finish enabling PrintContents() to print each asset's basic type tag][:"asset system"] +[2:15:30][Check out the new .hha dumps in TabView to determine that intro_cutscene.hha is our culprit][:admin :"asset system"] +[2:17:35][Reimport intro_cutscene.hha (in our debug build)][:"asset system" :run] +[2:21:20][Check out the new intro_cutscene.hha dump in TabView to see many chained audio assets (correctly) tagged basic type "None"][:admin :"asset system"] +[2:23:07][Re-run the game and no longer hit our plate export conflict][:"asset system" :run] +[2:23:42][Consider how to tag chained audio assets][:"asset system" :speech] +[2:26:31][Document hha_sound][:"asset system" :documentation] +[2:27:45][Re-run in an optimised build][:run] +[2:28:19][Q&A][:speech] +[2:28:43][@ivereadthesequel][Q: Have you tried running TabVew with the --no-hermeneutics flag?] +[2:29:29][90 / 125 sub points][:admin] +[2:32:30][@pythno][Q: You never went to university yet you seem to be very literate in :mathematics. How did you get to this level?] +[2:36:12][@Miblo][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:31][@devsigner][Q: What are your thoughts on code introspection or adding metadata to things like structs? Useful, or yet another bad object-oriented idea?][:language] +[2:37:50][@jkfsda][Q: Favorite code design learning resources?] +[2:37:55][@hexadecimalinteger][Q: Would you use your "from scratch / low level" approach for :"machine learning"? Or just use a :library like TensorFlow?] +[2:41:07][@ivereadthesequel][@QuickShift_ asked in the pre-stream: "I guess Dear ImGui is a good example of a properly used global state?"][:language] +[2:41:32][@xxy_yxx][Q: Do you have any book recommendations for programming or :mathematics?] +[2:42:13][@vapenir][Q: Are you exclusively a C++ guy or have you worked with other languages over the years?][:language] +[2:44:00][@theomarest][Q: What's your favorite fairly-new :language? Like the last 10 years] +[2:44:31][@ivereadthesequel][Q: What's your impression of Seattle after living there for as long as you have? Where did you live before then?] +[2:45:55][@jbcgannon][Q: Come back to Boston] +[2:46:49][@hexadecimalinteger][Q: If given a virtually infinite budget, what would you dedicate your time to?] +[2:47:12][@insobot][It's still valve] +[2:48:14][@victorn][Oh wow, [@cmuratori Casey] is not using Visual Studio debugger anymore! So just the compiler is being used on [~hero Handmade Hero]?] +[2:49:08][That's all, folks][:speech] +[/video]