Handmade Hero»Episode Guide
Asset Tag Usage 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)
0:00Recap and set the stage for the day working on asset tag matching
🗩
0:00Recap and set the stage for the day working on asset tag matching
🗩
0:00Recap and set the stage for the day working on asset tag matching
🗩
0:23Plug the Meow the Infinite sale1
📖
0:23Plug the Meow the Infinite sale1
📖
0:23Plug the Meow the Infinite sale1
📖
1:33i___d___k Q: Is international shipping included?
🗪
1:33i___d___k Q: Is international shipping included?
🗪
1:33i___d___k Q: Is international shipping included?
🗪
2:56Set up to continue work on our new TagHash and MatchVector asset matching scheme
📖
2:56Set up to continue work on our new TagHash and MatchVector asset matching scheme
📖
2:56Set up to continue work on our new TagHash and MatchVector asset matching scheme
📖
7:12Compress out the old asset matching code for the TagHash and MatchVector matching
7:12Compress out the old asset matching code for the TagHash and MatchVector matching
7:12Compress out the old asset matching code for the TagHash and MatchVector matching
11:12Determine to clarify GetAssetFrom()
📖
11:12Determine to clarify GetAssetFrom()
📖
11:12Determine to clarify GetAssetFrom()
📖
12:48Describe Hash32(), in particular _mm_aesdec_si128()2
📖
12:48Describe Hash32(), in particular _mm_aesdec_si128()2
📖
12:48Describe Hash32(), in particular _mm_aesdec_si128()2
📖
15:36Introduce hashable_value for Hash32() to operate on and asset_hash_entry to contain, creating handmade_hash.cpp and .h
15:36Introduce hashable_value for Hash32() to operate on and asset_hash_entry to contain, creating handmade_hash.cpp and .h
15:36Introduce hashable_value for Hash32() to operate on and asset_hash_entry to contain, creating handmade_hash.cpp and .h
26:59Consider simplifying game_assets and storing the asset data structure directly in the hash
📖
26:59Consider simplifying game_assets and storing the asset data structure directly in the hash
📖
26:59Consider simplifying game_assets and storing the asset data structure directly in the hash
📖
31:09Revert the hashable_value introduction and handmade_hash.cpp and .h creation, and instead augment asset_hash_entry with an MatchVector
31:09Revert the hashable_value introduction and handmade_hash.cpp and .h creation, and instead augment asset_hash_entry with an MatchVector
31:09Revert the hashable_value introduction and handmade_hash.cpp and .h creation, and instead augment asset_hash_entry with an MatchVector
34:59Invoke fleury_toggle_power_mode and fleury_toggle_battery_saver
🗹
34:59Invoke fleury_toggle_power_mode and fleury_toggle_battery_saver
🗹
34:59Invoke fleury_toggle_power_mode and fleury_toggle_battery_saver
🗹
35:09Implement our new TagHash and MatchVector matching scheme in GetAssetFrom(), augmenting asset with NextInTagHash, TagHash, MatchVector and MatchAnyFlags
35:09Implement our new TagHash and MatchVector matching scheme in GetAssetFrom(), augmenting asset with NextInTagHash, TagHash, MatchVector and MatchAnyFlags
35:09Implement our new TagHash and MatchVector matching scheme in GetAssetFrom(), augmenting asset with NextInTagHash, TagHash, MatchVector and MatchAnyFlags
48:25Fix compile errors, replacing asset_hash_entry with u32 in game_assets
48:25Fix compile errors, replacing asset_hash_entry with u32 in game_assets
48:25Fix compile errors, replacing asset_hash_entry with u32 in game_assets
51:12Make InitParticleCache() and ExecuteBrainHero() call GetTagHash(), and default to zero the MatchVector in all the GetBestMatch*() function
51:12Make InitParticleCache() and ExecuteBrainHero() call GetTagHash(), and default to zero the MatchVector in all the GetBestMatch*() function
51:12Make InitParticleCache() and ExecuteBrainHero() call GetTagHash(), and default to zero the MatchVector in all the GetBestMatch*() function
55:40Begin to make UpdateAndRenderEntities() prepare the MatchVector to pass to GetBestMatchBitmapFrom(), introducing an asset_match_vector_element enum
55:40Begin to make UpdateAndRenderEntities() prepare the MatchVector to pass to GetBestMatchBitmapFrom(), introducing an asset_match_vector_element enum
55:40Begin to make UpdateAndRenderEntities() prepare the MatchVector to pass to GetBestMatchBitmapFrom(), introducing an asset_match_vector_element enum
1:05:28tarriest_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:05:28tarriest_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:05:28tarriest_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:58Make UpdateAndRenderEntities() map the MatchVector's FacingDirection octant to the nearest quadrant
1:06:58Make UpdateAndRenderEntities() map the MatchVector's FacingDirection octant to the nearest quadrant
1:06:58Make UpdateAndRenderEntities() map the MatchVector's FacingDirection octant to the nearest quadrant
1:14:51Consider our support for variant picking in FillUnpackedEntity()
📖
1:14:51Consider our support for variant picking in FillUnpackedEntity()
📖
1:14:51Consider our support for variant picking in FillUnpackedEntity()
📖
1:19:50Fix UpdateAndRenderEntities() only keep the bottom two bits of the FacingDirIndex
1:19:50Fix UpdateAndRenderEntities() only keep the bottom two bits of the FacingDirIndex
1:19:50Fix UpdateAndRenderEntities() only keep the bottom two bits of the FacingDirIndex
1:20:14Update FillUnpackedEntity() to use GetTagHash()
1:20:14Update FillUnpackedEntity() to use GetTagHash()
1:20:14Update FillUnpackedEntity() to use GetTagHash()
1:23:31Prepare FillUnpackedEntity() to call GetVariantCount() for random picking
1:23:31Prepare FillUnpackedEntity() to call GetVariantCount() for random picking
1:23:31Prepare FillUnpackedEntity() to call GetVariantCount() for random picking
1:25:09Introduce a sizing tag, Tag_Large
1:25:09Introduce a sizing tag, Tag_Large
1:25:09Introduce a sizing tag, Tag_Large
1:30:30Introduce a stubbed out GetVariantCount()
1:30:30Introduce a stubbed out GetVariantCount()
1:30:30Introduce a stubbed out GetVariantCount()
1:32:19Update AddPiece() to take an asset_tag_hash
1:32:19Update AddPiece() to take an asset_tag_hash
1:32:19Update AddPiece() to take an asset_tag_hash
1:33:18Introduce ShotIndex* and LayerIndex* for use in intro_cutscene.hht
🗹
🖮
1:33:18Introduce ShotIndex* and LayerIndex* for use in intro_cutscene.hht
🗹
🖮
1:33:18Introduce ShotIndex* and LayerIndex* for use in intro_cutscene.hht
🗹
🖮
1:38:37A few thoughts on Ron Gilbert as a brilliant programming architect
🖮
🗩
1:38:37A few thoughts on Ron Gilbert as a brilliant programming architect
🖮
🗩
1:38:37A few thoughts on Ron Gilbert as a brilliant programming architect
🖮
🗩
1:49:48Update RenderLayeredScene() to use GetTagHash()
1:49:48Update RenderLayeredScene() to use GetTagHash()
1:49:48Update RenderLayeredScene() to use GetTagHash()
1:53:17Consider (but decide against) supporting order-independent tag matching
🗩
1:53:17Consider (but decide against) supporting order-independent tag matching
🗩
1:53:17Consider (but decide against) supporting order-independent tag matching
🗩
1:55:10Continue to update RenderLayeredScene() to use the new matching scheme
1:55:10Continue to update RenderLayeredScene() to use the new matching scheme
1:55:10Continue to update RenderLayeredScene() to use the new matching scheme
1:57:45Update InitializeUI() to use GetTagHash(), removing asset_font_type and FontType(10) for a newly-introduced Tag_DebugFont tag
1:57:45Update InitializeUI() to use GetTagHash(), removing asset_font_type and FontType(10) for a newly-introduced Tag_DebugFont tag
1:57:45Update InitializeUI() to use GetTagHash(), removing asset_font_type and FontType(10) for a newly-introduced Tag_DebugFont tag
2:02:45Update 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
2:02:45Update 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
2:02:45Update 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
2:09:34Seek to bind "~" to Shift-Tick in 4coder
🗹
2:09:34Seek to bind "~" to Shift-Tick in 4coder
🗹
2:09:34Seek to bind "~" to Shift-Tick in 4coder
🗹
2:11:33ryanfleury write_text_input, handmade_hero
🗪
2:11:33ryanfleury write_text_input, handmade_hero
🗪
2:11:33ryanfleury write_text_input, handmade_hero
🗪
2:11:40Bind write_text_input to Shift-Tick in 4coder
🗹
2:11:40Bind write_text_input to Shift-Tick in 4coder
🗹
2:11:40Bind write_text_input to Shift-Tick in 4coder
🗹
2:11:59Try unsuccessfully to type a "~"
🗹
2:11:59Try unsuccessfully to type a "~"
🗹
2:11:59Try unsuccessfully to type a "~"
🗹
2:12:36ryanfleury I am not sure why it's not just working
🗪
2:12:36ryanfleury I am not sure why it's not just working
🗪
2:12:36ryanfleury I am not sure why it's not just working
🗪
2:12:43Leave a note in GetTagHash() to INSERT TILDE HERE
2:12:43Leave a note in GetTagHash() to INSERT TILDE HERE
2:12:43Leave a note in GetTagHash() to INSERT TILDE HERE
2:12:53xxthebigfoxx Ctrl-c Ctrl-v one
🗪
2:12:53xxthebigfoxx Ctrl-c Ctrl-v one
🗪
2:12:53xxthebigfoxx Ctrl-c Ctrl-v one
🗪
2:13:17Obtain a "~" from handmade_intrinsics.h
2:13:17Obtain a "~" from handmade_intrinsics.h
2:13:17Obtain a "~" from handmade_intrinsics.h
2:13:53Determine to update everyone else to use GetTagHash() next time
📖
2:13:53Determine to update everyone else to use GetTagHash() next time
📖
2:13:53Determine to update everyone else to use GetTagHash() next time
📖
2:14:49Double-check the 4coder bindings regarding the "~"
🗹
2:14:49Double-check the 4coder bindings regarding the "~"
🗹
2:14:49Double-check the 4coder bindings regarding the "~"
🗹
2:15:51Thank you, with a plug of the redesigned site,3 Meow the Infinite4 and Star Code Galaxy5
🗩
2:15:51Thank you, with a plug of the redesigned site,3 Meow the Infinite4 and Star Code Galaxy5
🗩
2:15:51Thank you, with a plug of the redesigned site,3 Meow the Infinite4 and Star Code Galaxy5
🗩