Handmade Hero»Episode Guide
Extracting Asset Tiles from Gridded PNGs
?
?

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:04Recap and set the stage for the day
🗩
0:04Recap and set the stage for the day
🗩
0:04Recap and set the stage for the day
🗩
1:57Dive into implementing UpdateAssetPackageFromPNG(), adding an Errors stream to asset_source_file
1:57Dive into implementing UpdateAssetPackageFromPNG(), adding an Errors stream to asset_source_file
1:57Dive into implementing UpdateAssetPackageFromPNG(), adding an Errors stream to asset_source_file
9:52Introduce MakeReadStream()
9:52Introduce MakeReadStream()
9:52Introduce MakeReadStream()
11:09Note the flexibility of having the first Contents buffer within the stream struct, rather than making everything go through a stream_chunk
🗩
11:09Note the flexibility of having the first Contents buffer within the stream struct, rather than making everything go through a stream_chunk
🗩
11:09Note the flexibility of having the first Contents buffer within the stream struct, rather than making everything go through a stream_chunk
🗩
12:42Fix compile errors
12:42Fix compile errors
12:42Fix compile errors
14:17A few words on memory arenas
🗩
14:17A few words on memory arenas
🗩
14:17A few words on memory arenas
🗩
15:53Set up to enable UpdateAssetPackageFromPNG() to break assets up into tiles
15:53Set up to enable UpdateAssetPackageFromPNG() to break assets up into tiles
15:53Set up to enable UpdateAssetPackageFromPNG() to break assets up into tiles
18:17Note the need to handle non-tiled assets, with a mention of mom's misremembrance of Krampus as "Krumpus"1
🗩
🎲
18:17Note the need to handle non-tiled assets, with a mention of mom's misremembrance of Krampus as "Krumpus"1
🗩
🎲
18:17Note the need to handle non-tiled assets, with a mention of mom's misremembrance of Krampus as "Krumpus"1
🗩
🎲
19:43Introduce ProcessTiledImport() to split up assets into 1024×1024 tiles, for UpdateAssetPackageFromPNG() to call
19:43Introduce ProcessTiledImport() to split up assets into 1024×1024 tiles, for UpdateAssetPackageFromPNG() to call
19:43Introduce ProcessTiledImport() to split up assets into 1024×1024 tiles, for UpdateAssetPackageFromPNG() to call
31:10Note the need to invalidate the texture memory, determining first to load the stuff in before switching to fixed size blocks
🗩
31:10Note the need to invalidate the texture memory, determining first to load the stuff in before switching to fixed size blocks
🗩
31:10Note the need to invalidate the texture memory, determining first to load the stuff in before switching to fixed size blocks
🗩
33:44Consider resizing our title_screen.png down to fit into one of our fixed blocks, with some general thoughts on texture memory
🗩
33:44Consider resizing our title_screen.png down to fit into one of our fixed blocks, with some general thoughts on texture memory
🗩
33:44Consider resizing our title_screen.png down to fit into one of our fixed blocks, with some general thoughts on texture memory
🗩
40:23Consult the Steam Hardware and & Software Survey2 for VRAM availability statistics
📖
40:23Consult the Steam Hardware and & Software Survey2 for VRAM availability statistics
📖
40:23Consult the Steam Hardware and & Software Survey2 for VRAM availability statistics
📖
44:16Enable ProcessTiledImport() to load the asset-tile into a provisional bitmap
44:16Enable ProcessTiledImport() to load the asset-tile into a provisional bitmap
44:16Enable ProcessTiledImport() to load the asset-tile into a provisional bitmap
47:25Texture Borders, for sub-pixel rendering
🖌
47:25Texture Borders, for sub-pixel rendering
🖌
47:25Texture Borders, for sub-pixel rendering
🖌
51:33Where the 1-pixel border approach falls down: Mipmapping
🖌
51:33Where the 1-pixel border approach falls down: Mipmapping
🖌
51:33Where the 1-pixel border approach falls down: Mipmapping
🖌
54:14Border thickening
🖌
🎨
54:14Border thickening
🖌
🎨
54:14Border thickening
🖌
🎨
59:14Make ProcessTiledImport() enforce an 8-pixel border, and warn about encroachments into this border
59:14Make ProcessTiledImport() enforce an 8-pixel border, and warn about encroachments into this border
59:14Make ProcessTiledImport() enforce an 8-pixel border, and warn about encroachments into this border
1:08:01Set up to store our tiles in the pack file
🗩
1:08:01Set up to store our tiles in the pack file
🗩
1:08:01Set up to store our tiles in the pack file
🗩
1:10:15Make ProcessTiledImport() write our tiles into Bitmap->Memory
1:10:15Make ProcessTiledImport() write our tiles into Bitmap->Memory
1:10:15Make ProcessTiledImport() write our tiles into Bitmap->Memory
1:13:09Consider writing our tiles into a backing store before compacting down into the .hha file
🗩
1:13:09Consider writing our tiles into a backing store before compacting down into the .hha file
🗩
1:13:09Consider writing our tiles into a backing store before compacting down into the .hha file
🗩
1:18:03Introduce WriteAssetBitmap()
1:18:03Introduce WriteAssetBitmap()
1:18:03Introduce WriteAssetBitmap()
1:23:45Change ProcessTiledImport() to load our tiles into a provisional bitmap before writing out to the .hha file
1:23:45Change ProcessTiledImport() to load our tiles into a provisional bitmap before writing out to the .hha file
1:23:45Change ProcessTiledImport() to load our tiles into a provisional bitmap before writing out to the .hha file
1:43:03Fix compile errors and stub out ReserveAsset(), ReserveData(), WriteAssetData() and WriteAsset()
1:43:03Fix compile errors and stub out ReserveAsset(), ReserveData(), WriteAssetData() and WriteAsset()
1:43:03Fix compile errors and stub out ReserveAsset(), ReserveData(), WriteAssetData() and WriteAsset()
1:47:33Q&A
🗩
1:47:33Q&A
🗩
1:47:33Q&A
🗩
1:48:11sratke Q: Will you rewrite the software rasterizer with SSE4?
🗪
1:48:11sratke Q: Will you rewrite the software rasterizer with SSE4?
🗪
1:48:11sratke Q: Will you rewrite the software rasterizer with SSE4?
🗪
1:50:05hark85 I don't have AVX512
🗪
1:50:05hark85 I don't have AVX512
🗪
1:50:05hark85 I don't have AVX512
🗪
1:50:51frostyninja Q: You still haven't bounded HashValue in CheckForAssetChanges(). Thought I’d mention
🗪
1:50:51frostyninja Q: You still haven't bounded HashValue in CheckForAssetChanges(). Thought I’d mention
🗪
1:50:51frostyninja Q: You still haven't bounded HashValue in CheckForAssetChanges(). Thought I’d mention
🗪
1:51:06Make CheckForAssetChanges() bound the HashValue
1:51:06Make CheckForAssetChanges() bound the HashValue
1:51:06Make CheckForAssetChanges() bound the HashValue
1:52:37json__bourne Q: How long until Microsoft tries to force win32 to become obsolete, and what comes after win32 for games?
🗪
1:52:37json__bourne Q: How long until Microsoft tries to force win32 to become obsolete, and what comes after win32 for games?
🗪
1:52:37json__bourne Q: How long until Microsoft tries to force win32 to become obsolete, and what comes after win32 for games?
🗪
1:53:27Trying to play PUBG with Anna and Matt
💢
🗩
1:53:27Trying to play PUBG with Anna and Matt
💢
🗩
1:53:27Trying to play PUBG with Anna and Matt
💢
🗩
2:01:57centhusiast Q: If I remember correctly, stb_lib was used in one of the episodes. Was it for loading PNG assets?3
🗪
2:01:57centhusiast Q: If I remember correctly, stb_lib was used in one of the episodes. Was it for loading PNG assets?3
🗪
2:01:57centhusiast Q: If I remember correctly, stb_lib was used in one of the episodes. Was it for loading PNG assets?3
🗪
2:04:21sopvop Q: Since you already have deflate decoder implemented in PNG reader, will you implement deflate compressor for asset files?
🗪
2:04:21sopvop Q: Since you already have deflate decoder implemented in PNG reader, will you implement deflate compressor for asset files?
🗪
2:04:21sopvop Q: Since you already have deflate decoder implemented in PNG reader, will you implement deflate compressor for asset files?
🗪
2:04:33frostyninja Q: Speaking of stupid driver distribution, Sony only have DualShock 3 drivers for PC packaged with their PS Now software. Ridiculous
🗪
2:04:33frostyninja Q: Speaking of stupid driver distribution, Sony only have DualShock 3 drivers for PC packaged with their PS Now software. Ridiculous
🗪
2:04:33frostyninja Q: Speaking of stupid driver distribution, Sony only have DualShock 3 drivers for PC packaged with their PS Now software. Ridiculous
🗪
2:05:03frostyninja Q: Spent ages struggling with getting that damned controller to work
🗪
2:05:03frostyninja Q: Spent ages struggling with getting that damned controller to work
🗪
2:05:03frostyninja Q: Spent ages struggling with getting that damned controller to work
🗪
2:05:07ivereadthesequel Q: My poor friend said when Windows last updated for her it took four hours
🗪
2:05:07ivereadthesequel Q: My poor friend said when Windows last updated for her it took four hours
🗪
2:05:07ivereadthesequel Q: My poor friend said when Windows last updated for her it took four hours
🗪
2:05:14toolegit2quit_ Q: Do you think Linux will take over? Seems unlikely. Also remember when the PlayStation 3 had Linux support?
🗪
2:05:14toolegit2quit_ Q: Do you think Linux will take over? Seems unlikely. Also remember when the PlayStation 3 had Linux support?
🗪
2:05:14toolegit2quit_ Q: Do you think Linux will take over? Seems unlikely. Also remember when the PlayStation 3 had Linux support?
🗪
2:06:15thestalkingwolf Q: What would it take to make it more designer friendly to develop on an Ubuntu or Fedora platform first?
🗪
2:06:15thestalkingwolf Q: What would it take to make it more designer friendly to develop on an Ubuntu or Fedora platform first?
🗪
2:06:15thestalkingwolf Q: What would it take to make it more designer friendly to develop on an Ubuntu or Fedora platform first?
🗪
2:08:37puremouron Q: MSVC does a terrible job with mod,4 clang seems to do better5
🗪
2:08:37puremouron Q: MSVC does a terrible job with mod,4 clang seems to do better5
🗪
2:08:37puremouron Q: MSVC does a terrible job with mod,4 clang seems to do better5
🗪
2:09:19enemymouse Q: Are you going to support more complex languages. Coding your own HarfBuzz text shaping equivalent?
🗪
2:09:19enemymouse Q: Are you going to support more complex languages. Coding your own HarfBuzz text shaping equivalent?
🗪
2:09:19enemymouse Q: Are you going to support more complex languages. Coding your own HarfBuzz text shaping equivalent?
🗪
2:09:54frostyninja Q: Sixaxis / PS3 controller
🗪
2:09:54frostyninja Q: Sixaxis / PS3 controller
🗪
2:09:54frostyninja Q: Sixaxis / PS3 controller
🗪
2:10:21ivereadthesequel Q: So is our plan to infiltrate Microsoft and make Handmade Windows?
🗪
2:10:21ivereadthesequel Q: So is our plan to infiltrate Microsoft and make Handmade Windows?
🗪
2:10:21ivereadthesequel Q: So is our plan to infiltrate Microsoft and make Handmade Windows?
🗪
2:11:32frostyninja Q: Yeah they need a handshake thingy. You get past that with the driver though. That's exactly why I struggled with it. Writing a rawinput thingy for controllers
🗪
2:11:32frostyninja Q: Yeah they need a handshake thingy. You get past that with the driver though. That's exactly why I struggled with it. Writing a rawinput thingy for controllers
🗪
2:11:32frostyninja Q: Yeah they need a handshake thingy. You get past that with the driver though. That's exactly why I struggled with it. Writing a rawinput thingy for controllers
🗪
2:11:47frostyninja Q: Cant enable the controller through userland win32, sadly
🗪
2:11:47frostyninja Q: Cant enable the controller through userland win32, sadly
🗪
2:11:47frostyninja Q: Cant enable the controller through userland win32, sadly
🗪
2:12:38Brief continuation of the PUBG story
🗩
2:12:38Brief continuation of the PUBG story
🗩
2:12:38Brief continuation of the PUBG story
🗩
2:13:10toolegit2quit_ Q: Isn't a big part of the issue that the operating system would need a lot of traction. If Jonathan or someone like you build an OS it would need a very significant amount of traction to incentivize game developers to build for that platform
🗪
2:13:10toolegit2quit_ Q: Isn't a big part of the issue that the operating system would need a lot of traction. If Jonathan or someone like you build an OS it would need a very significant amount of traction to incentivize game developers to build for that platform
🗪
2:13:10toolegit2quit_ Q: Isn't a big part of the issue that the operating system would need a lot of traction. If Jonathan or someone like you build an OS it would need a very significant amount of traction to incentivize game developers to build for that platform
🗪
2:15:08That's it, with a mention of the new site6 and a glimpse into the future
🗩
2:15:08That's it, with a mention of the new site6 and a glimpse into the future
🗩
2:15:08That's it, with a mention of the new site6 and a glimpse into the future
🗩