[video output=day620 member=cmuratori stream_platform=twitch stream_username=handmade_hero  project=code title="Asset Tag Usage Code" vod_platform=youtube id=cucU4MuIVQI annotator=Miblo]
[0:00][Recap and set the stage for the day working on asset tag matching][:"asset system" :speech]
[0:23][Plug the Meow the Infinite sale[ref
    site="Meow the Infinite"
    url=https://meowtheinfinite.com/]][:research]
[1:33][@i___d___k][Q: Is international shipping included?]
[2:56][Set up to continue work on our new TagHash and MatchVector asset matching scheme][:"asset system" :research]
[7:12][Compress out the old asset matching code for the TagHash and MatchVector matching][:"asset system" :"data structure"]
[11:12][Determine to clarify GetAssetFrom()][:"asset system" :research]
[12:48][Describe Hash32(), in particular _mm_aesdec_si128()[ref
    site=Intel
    page="Intel Intrinsics Guide"
    url=https://software.intel.com/sites/landingpage/IntrinsicsGuide/]][:"asset system" :hashing :research]
[15:36][Introduce hashable_value for Hash32() to operate on and asset_hash_entry to contain, creating handmade_hash.cpp and .h][:"asset system" :"data structure" :hashing]
[26:59][Consider simplifying game_assets and storing the asset :"data structure" directly in the hash][:"asset system" :hashing :research]
[31:09][Revert the hashable_value introduction and handmade_hash.cpp and .h creation, and instead augment asset_hash_entry with an MatchVector][:"asset system" :"data structure" :hashing]
[34:59][Invoke fleury_toggle_power_mode and fleury_toggle_battery_saver][:admin]
[35:09][Implement our new TagHash and MatchVector matching scheme in GetAssetFrom(), augmenting asset with NextInTagHash, TagHash, MatchVector and MatchAnyFlags][:"asset system" :"data structure"]
[48:25][Fix compile errors, replacing asset_hash_entry with u32 in game_assets][:"asset system" :"data structure"]
[51:12][Make InitParticleCache() and ExecuteBrainHero() call GetTagHash(), and default to zero the MatchVector in all the GetBestMatch*() function][:"asset system"]
[55:40][Begin to make UpdateAndRenderEntities() prepare the MatchVector to pass to GetBestMatchBitmapFrom(), introducing an asset_match_vector_element enum][:"asset system"]
[1:05:28][@tarriest_python][Is the indentation broken because virtual whitespace is disabled? The fact that you can edit the leading whitespace on a line tells me you have virtual whitespace turned off. Is this intentional?]
[1:06:58][Make UpdateAndRenderEntities() map the MatchVector's FacingDirection octant to the nearest quadrant][:"asset system"]
[1:14:51][Consider our support for variant picking in FillUnpackedEntity()][:"asset system" :research]
[1:19:50][Fix UpdateAndRenderEntities() only keep the bottom two bits of the FacingDirIndex][:"asset system"]
[1:20:14][Update FillUnpackedEntity() to use GetTagHash()][:"asset system"]
[1:23:31][Prepare FillUnpackedEntity() to call GetVariantCount() for random picking][:"asset system"]
[1:25:09][Introduce a sizing tag, Tag_Large][:"asset system"]
[1:30:30][Introduce a stubbed out GetVariantCount()][:"asset system"]
[1:32:19][Update AddPiece() to take an asset_tag_hash][:"asset system"]
[1:33:18][Introduce ShotIndex* and LayerIndex* for use in intro_cutscene.hht][:admin :"asset system" :programming]
[1:38:37][A few thoughts on Ron Gilbert as a brilliant :programming architect][:speech]
[1:49:48][Update RenderLayeredScene() to use GetTagHash()][:"asset system"]
[1:53:17][Consider (but decide against) supporting order-independent tag matching][:"asset system" :speech]
[1:55:10][Continue to update RenderLayeredScene() to use the new matching scheme][:"asset system"]
[1:57:45][Update InitializeUI() to use GetTagHash(), removing asset_font_type and FontType(10) for a newly-introduced Tag_DebugFont tag][:"asset system"]
[2:02:45][Update all definitions of AddPiece() to take asset_tag_hash and their call sites to use GetTagHash(), introducing a version of GetTagHash() that takes an asset_tag_hash for merging in][:"asset system"]
[2:09:34][Seek to bind "\~" to Shift-Tick in ~4coder][:admin]
[2:11:33][@ryanfleury][write_text_input, @handmade_hero]
[2:11:40][Bind write_text_input to Shift-Tick in ~4coder][:admin]
[2:11:59][Try unsuccessfully to type a "\~"][:admin]
[2:12:36][@ryanfleury][I am not sure why it's not just working]
[2:12:43][Leave a note in GetTagHash() to INSERT TILDE HERE]
[2:12:53][@xxthebigfoxx][Ctrl-c Ctrl-v one]
[2:13:17][Obtain a "\~" from handmade_intrinsics.h]
[2:13:53][Determine to update everyone else to use GetTagHash() next time][:"asset system" :research]
[2:14:49][Double-check the ~4coder bindings regarding the "\~"][:admin]
[2:15:51][Thank you, with a plug of the redesigned site,[ref
    site="Handmade Hero"
    url=https://handmadehero.org/] Meow the Infinite[ref
    site="Meow the Infinite"
    url=https://meowtheinfinite.com/] and Star Code Galaxy[ref
    site="Star Code Galaxy"
    url=https://starcodegalaxy.com/]][:speech]
[/video]
