Handmade Hero»Episode Guide
Matching Periodic Tags
?
?

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)
1:48Demo a bug in the asset system
1:48Demo a bug in the asset system
1:48Demo a bug in the asset system
3:05Blackboard: Periodic Tag Matching
3:05Blackboard: Periodic Tag Matching
3:05Blackboard: Periodic Tag Matching
7:21Blackboard: "Neighbourhood operator"
7:21Blackboard: "Neighbourhood operator"
7:21Blackboard: "Neighbourhood operator"
10:20Blackboard: "Neighbourhood distance"
10:20Blackboard: "Neighbourhood distance"
10:20Blackboard: "Neighbourhood distance"
13:30Blackboard: Changing the sign of a point in the negative range in order to compute the distance of it from a point in the positive range
13:30Blackboard: Changing the sign of a point in the negative range in order to compute the distance of it from a point in the positive range
13:30Blackboard: Changing the sign of a point in the negative range in order to compute the distance of it from a point in the positive range
15:23Blackboard: Moving a positive number into the negative
15:23Blackboard: Moving a positive number into the negative
15:23Blackboard: Moving a positive number into the negative
16:21Blackboard: The whole equation for doing this neighbourhood calculation
16:21Blackboard: The whole equation for doing this neighbourhood calculation
16:21Blackboard: The whole equation for doing this neighbourhood calculation
20:11handmade_asset.h: Add HalfTagRange to game_assets
20:11handmade_asset.h: Add HalfTagRange to game_assets
20:11handmade_asset.h: Add HalfTagRange to game_assets
21:08handmade_asset.cpp: Set the HalfTagRange for each TagType
21:08handmade_asset.cpp: Set the HalfTagRange for each TagType
21:08handmade_asset.cpp: Set the HalfTagRange for each TagType
22:11Use the HalfTagRange in BestMatchAsset
22:11Use the HalfTagRange in BestMatchAsset
22:11Use the HalfTagRange in BestMatchAsset
23:26handmade_intrinsics.h: Write a real32 version of SignOf
23:26handmade_intrinsics.h: Write a real32 version of SignOf
23:26handmade_intrinsics.h: Write a real32 version of SignOf
23:37handmade_asset.cpp: Continue adding (Half)TagRange to BestMatchAsset
23:37handmade_asset.cpp: Continue adding (Half)TagRange to BestMatchAsset
23:37handmade_asset.cpp: Continue adding (Half)TagRange to BestMatchAsset
25:22Debugger: Step into BestMatchAsset
25:22Debugger: Step into BestMatchAsset
25:22Debugger: Step into BestMatchAsset
26:11Play the game and check out our new functionality
26:11Play the game and check out our new functionality
26:11Play the game and check out our new functionality
26:43We're kind of done
26:43We're kind of done
26:43We're kind of done
28:00handmade_asset.cpp: Add *FileName[] in order to loop over the bitmaps and set TopDownAlign
28:00handmade_asset.cpp: Add *FileName[] in order to loop over the bitmaps and set TopDownAlign
28:00handmade_asset.cpp: Add *FileName[] in order to loop over the bitmaps and set TopDownAlign
30:19Debugger: Look at the alignments
30:19Debugger: Look at the alignments
30:19Debugger: Look at the alignments
32:50handmade_asset.cpp: Bake that calculated alignment into the hero bitmaps
32:50handmade_asset.cpp: Bake that calculated alignment into the hero bitmaps
32:50handmade_asset.cpp: Bake that calculated alignment into the hero bitmaps
33:34Run the game and check out the correct alignments
33:34Run the game and check out the correct alignments
33:34Run the game and check out the correct alignments
34:02Start talking about the asset file format
34:02Start talking about the asset file format
34:02Start talking about the asset file format
35:36handmade.h: Add two items to the Asset streaming TODOs, and prioritise Audio
35:36handmade.h: Add two items to the Asset streaming TODOs, and prioritise Audio
35:36handmade.h: Add two items to the Asset streaming TODOs, and prioritise Audio
37:11handmade_asset.cpp: Introduce LoadSound
37:11handmade_asset.cpp: Introduce LoadSound
37:11handmade_asset.cpp: Introduce LoadSound
43:59Introduce DEBUGLoadWAV
43:59Introduce DEBUGLoadWAV
43:59Introduce DEBUGLoadWAV
44:57Internet: Bring up the WAVE specifications
44:57Internet: Bring up the WAVE specifications
44:57Internet: Bring up the WAVE specifications
45:43Blackboard: "IFF" file format
45:43Blackboard: "IFF" file format
45:43Blackboard: "IFF" file format
48:45handmade_asset.cpp: Introduce WAVE_header
48:45handmade_asset.cpp: Introduce WAVE_header
48:45handmade_asset.cpp: Introduce WAVE_header
50:32Introduce WAVE_fmt
50:32Introduce WAVE_fmt
50:32Introduce WAVE_fmt
52:38Introduce WAVE_chunk
52:38Introduce WAVE_chunk
52:38Introduce WAVE_chunk
53:03#define RIFF_CODE
53:03#define RIFF_CODE
53:03#define RIFF_CODE
55:12Parse the WAVE_header for its IDs
55:12Parse the WAVE_header for its IDs
55:12Parse the WAVE_header for its IDs
56:34Leave it there and glimpse into the future
56:34Leave it there and glimpse into the future
56:34Leave it there and glimpse into the future
57:58Q&A
🗩
57:58Q&A
🗩
57:58Q&A
🗩
58:30cubercaleb For getting the character sprite couldn't you just do the following? int sprite_to_load = (angle + (180 / sprites)) / (360 / sprites) % sprites
🗪
58:30cubercaleb For getting the character sprite couldn't you just do the following? int sprite_to_load = (angle + (180 / sprites)) / (360 / sprites) % sprites
🗪
58:30cubercaleb For getting the character sprite couldn't you just do the following? int sprite_to_load = (angle + (180 / sprites)) / (360 / sprites) % sprites
🗪
59:59kelimion ChronalDragon and I had a combined question about the audio asset struct. Will it need a SoundLoopable, or LoopStart / LoopEnd (with LoopEnd == -1 meaning a one-shot sound)
🗪
59:59kelimion ChronalDragon and I had a combined question about the audio asset struct. Will it need a SoundLoopable, or LoopStart / LoopEnd (with LoopEnd == -1 meaning a one-shot sound)
🗪
59:59kelimion ChronalDragon and I had a combined question about the audio asset struct. Will it need a SoundLoopable, or LoopStart / LoopEnd (with LoopEnd == -1 meaning a one-shot sound)
🗪
1:00:40soysaucethekid Plans for implementing other audio formats like MP3?
🗪
1:00:40soysaucethekid Plans for implementing other audio formats like MP3?
🗪
1:00:40soysaucethekid Plans for implementing other audio formats like MP3?
🗪
1:03:05cubercaleb Wait, how exactly is MP3 patented?
🗪
1:03:05cubercaleb Wait, how exactly is MP3 patented?
🗪
1:03:05cubercaleb Wait, how exactly is MP3 patented?
🗪
1:04:48cubercaleb Yeah, but why would people patent a file extension?
🗪
1:04:48cubercaleb Yeah, but why would people patent a file extension?
🗪
1:04:48cubercaleb Yeah, but why would people patent a file extension?
🗪
1:05:32stelar7 FLAC is 50% the size of WAV, so it's useful for lossless compression
🗪
1:05:32stelar7 FLAC is 50% the size of WAV, so it's useful for lossless compression
🗪
1:05:32stelar7 FLAC is 50% the size of WAV, so it's useful for lossless compression
🗪
1:08:36cubercaleb So is that why RAD doesn't patent any of their stuff?
🗪
1:08:36cubercaleb So is that why RAD doesn't patent any of their stuff?
🗪
1:08:36cubercaleb So is that why RAD doesn't patent any of their stuff?
🗪
1:08:56Wind things down
🗩
1:08:56Wind things down
🗩
1:08:56Wind things down
🗩