Updating the Game to HHA Version 1
?
?

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:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:33Check out our testfonts.hha in TabView
🏃
0:33Check out our testfonts.hha in TabView
🏃
0:33Check out our testfonts.hha in TabView
🏃
2:13Introduce WriteHHA_V1()
2:13Introduce WriteHHA_V1()
2:13Introduce WriteHHA_V1()
6:19Make WriteHHA_V1() clear the Header, with a few words on maintaining an updatable binary file format
6:19Make WriteHHA_V1() clear the Header, with a few words on maintaining an updatable binary file format
6:19Make WriteHHA_V1() clear the Header, with a few words on maintaining an updatable binary file format
8:21Continue to implement WriteHHA_V1()
8:21Continue to implement WriteHHA_V1()
8:21Continue to implement WriteHHA_V1()
25:42Introduce WriteBlock() and WriteString()
25:42Introduce WriteBlock() and WriteString()
25:42Introduce WriteBlock() and WriteString()
28:47Implement ReadHHA_V1(), introducing RefString()
28:47Implement ReadHHA_V1(), introducing RefString()
28:47Implement ReadHHA_V1(), introducing RefString()
37:20Try to check out test1.hha in TabView
🏃
37:20Try to check out test1.hha in TabView
🏃
37:20Try to check out test1.hha in TabView
🏃
39:34Document -dump and handle unsupported program invocations
39:34Document -dump and handle unsupported program invocations
39:34Document -dump and handle unsupported program invocations
40:20Check out test1.hha in TabView
🏃
40:20Check out test1.hha in TabView
🏃
40:20Check out test1.hha in TabView
🏃
40:41Test rewriting test1.hha into test1_v1.hha
🏃
40:41Test rewriting test1.hha into test1_v1.hha
🏃
40:41Test rewriting test1.hha into test1_v1.hha
🏃
41:27Check out our dump of test1_v1.hha in TabView to see that it looks right, but for the absence of the asset name
🏃
41:27Check out our dump of test1_v1.hha in TabView to see that it looks right, but for the absence of the asset name
🏃
41:27Check out our dump of test1_v1.hha in TabView to see that it looks right, but for the absence of the asset name
🏃
44:48Fix WriteHHA_V1() to correctly write the asset name
44:48Fix WriteHHA_V1() to correctly write the asset name
44:48Fix WriteHHA_V1() to correctly write the asset name
45:06Rewrite test1.hha as test1_v1.hha and check out its dump in TabView, to see that it all looks right
🏃
45:06Rewrite test1.hha as test1_v1.hha and check out its dump in TabView, to see that it all looks right
🏃
45:06Rewrite test1.hha as test1_v1.hha and check out its dump in TabView, to see that it all looks right
🏃
45:46Enable querying assets by their type for full backwards compatibility
45:46Enable querying assets by their type for full backwards compatibility
45:46Enable querying assets by their type for full backwards compatibility
49:41Introduce TruncateBeforeExtension() for ReadHHA_V0() to omit ".hha" from the asset name
49:41Introduce TruncateBeforeExtension() for ReadHHA_V0() to omit ".hha" from the asset name
49:41Introduce TruncateBeforeExtension() for ReadHHA_V0() to omit ".hha" from the asset name
52:11Rewrite test1.hha as test1_v1.hha and check out its dump in TabView, to see that it all looks right
🏃
52:11Rewrite test1.hha as test1_v1.hha and check out its dump in TabView, to see that it all looks right
🏃
52:11Rewrite test1.hha as test1_v1.hha and check out its dump in TabView, to see that it all looks right
🏃
52:41Remove TruncateBeforeExtension() to RemoveExtension() and introduce RemovePath()
52:41Remove TruncateBeforeExtension() to RemoveExtension() and introduce RemovePath()
52:41Remove TruncateBeforeExtension() to RemoveExtension() and introduce RemovePath()
54:25Rewrite ..\data\test1.hha as test1_v1.hha and check out its dump to see our asset names without the full path
🏃
54:25Rewrite ..\data\test1.hha as test1_v1.hha and check out its dump to see our asset names without the full path
🏃
54:25Rewrite ..\data\test1.hha as test1_v1.hha and check out its dump to see our asset names without the full path
🏃
55:16Enable ReadHHA_V0() to load in all the old tags
55:16Enable ReadHHA_V0() to load in all the old tags
55:16Enable ReadHHA_V0() to load in all the old tags
59:04Rewrite test1.hha as test1_v1.hha and check out its dump to see some UNKNOWN tag names
🏃
59:04Rewrite test1.hha as test1_v1.hha and check out its dump to see some UNKNOWN tag names
🏃
59:04Rewrite test1.hha as test1_v1.hha and check out its dump to see some UNKNOWN tag names
🏃
59:35Add "BasicCategory" to TagNameFromID
59:35Add "BasicCategory" to TagNameFromID
59:35Add "BasicCategory" to TagNameFromID
59:56Rewrite test1.hha as test1_v1.hha and check out its dump to see fewer UNKNOWN tag names
🏃
59:56Rewrite test1.hha as test1_v1.hha and check out its dump to see fewer UNKNOWN tag names
🏃
59:56Rewrite test1.hha as test1_v1.hha and check out its dump to see fewer UNKNOWN tag names
🏃
1:00:04Prevent ReadHHA_V0() from processing the tag of the zero asset
1:00:04Prevent ReadHHA_V0() from processing the tag of the zero asset
1:00:04Prevent ReadHHA_V0() from processing the tag of the zero asset
1:00:38Rewrite test1.hha as test1_v1.hha and check out its dump to see all of our information
🏃
1:00:38Rewrite test1.hha as test1_v1.hha and check out its dump to see all of our information
🏃
1:00:38Rewrite test1.hha as test1_v1.hha and check out its dump to see all of our information
🏃
1:00:51Organise our dump files, wondering why 4coder is not a drop target
🗹
1:00:51Organise our dump files, wondering why 4coder is not a drop target
🗹
1:00:51Organise our dump files, wondering why 4coder is not a drop target
🗹
1:02:21Rewrite all of our .hha assets to v1 versions, and check out their dumps to see that everything seems kosher
🏃
1:02:21Rewrite all of our .hha assets to v1 versions, and check out their dumps to see that everything seems kosher
🏃
1:02:21Rewrite all of our .hha assets to v1 versions, and check out their dumps to see that everything seems kosher
🏃
1:04:13Run the game to see that it breaks failing to load our v1 .hha assets
🏃
1:04:13Run the game to see that it breaks failing to load our v1 .hha assets
🏃
1:04:13Run the game to see that it breaks failing to load our v1 .hha assets
🏃
1:04:57Enable WriteModificationsToHHA() and everyone else in the game to handle v1 .hha files
1:04:57Enable WriteModificationsToHHA() and everyone else in the game to handle v1 .hha files
1:04:57Enable WriteModificationsToHHA() and everyone else in the game to handle v1 .hha files
1:12:47Make AllocateGameAssets() straight up set FontBitmapIDOffset
1:12:47Make AllocateGameAssets() straight up set FontBitmapIDOffset
1:12:47Make AllocateGameAssets() straight up set FontBitmapIDOffset
1:15:45Investigate why AllocateGameAssets() checked each asset to see if it is a font glyph before setting FontBitmapIDOffset
🏃
1:15:45Investigate why AllocateGameAssets() checked each asset to see if it is a font glyph before setting FontBitmapIDOffset
🏃
1:15:45Investigate why AllocateGameAssets() checked each asset to see if it is a font glyph before setting FontBitmapIDOffset
🏃
1:18:26Replace FontBitmapIDOffset with AssetBase in asset_file, and propagate this change
1:18:26Replace FontBitmapIDOffset with AssetBase in asset_file, and propagate this change
1:18:26Replace FontBitmapIDOffset with AssetBase in asset_file, and propagate this change
1:22:24Continue to enable AllocateGameAssets() to handle v1 .hha files
1:22:24Continue to enable AllocateGameAssets() to handle v1 .hha files
1:22:24Continue to enable AllocateGameAssets() to handle v1 .hha files
1:28:10Step in to AllocateGameAssets() and inspect our Assets to see that everything seems pretty good
🏃
1:28:10Step in to AllocateGameAssets() and inspect our Assets to see that everything seems pretty good
🏃
1:28:10Step in to AllocateGameAssets() and inspect our Assets to see that everything seems pretty good
🏃
1:31:38Run through to the game to see that everything imported correctly, except that the fonts are messed up
🏃
1:31:38Run through to the game to see that everything imported correctly, except that the fonts are messed up
🏃
1:31:38Run through to the game to see that everything imported correctly, except that the fonts are messed up
🏃
1:34:05Make AllocateGameAssets() offset the AssetBase by -1 to account for the initial null asset
1:34:05Make AllocateGameAssets() offset the AssetBase by -1 to account for the initial null asset
1:34:05Make AllocateGameAssets() offset the AssetBase by -1 to account for the initial null asset
1:34:52Run the game to see that the fonts are now good
🏃
1:34:52Run the game to see that the fonts are now good
🏃
1:34:52Run the game to see that the fonts are now good
🏃
1:36:24Consider the next step: populating our asset source file information directly out of the .hha file
🗩
1:36:24Consider the next step: populating our asset source file information directly out of the .hha file
🗩
1:36:24Consider the next step: populating our asset source file information directly out of the .hha file
🗩
1:40:43Q&A
🗩
1:40:43Q&A
🗩
1:40:43Q&A
🗩
1:41:03macielda Q: Have you tried lldb? I use that at work and it seems to be stable
🗪
1:41:03macielda Q: Have you tried lldb? I use that at work and it seems to be stable
🗪
1:41:03macielda Q: Have you tried lldb? I use that at work and it seems to be stable
🗪
1:42:20Rounin Q: How come the shaded debug window with the graphs makes transparent pixels around the main character white?
🗪
1:42:20Rounin Q: How come the shaded debug window with the graphs makes transparent pixels around the main character white?
🗪
1:42:20Rounin Q: How come the shaded debug window with the graphs makes transparent pixels around the main character white?
🗪
1:42:45mallesbixie Q: Why is the "there is no file" there if it's in the way all the time?
🗪
1:42:45mallesbixie Q: Why is the "there is no file" there if it's in the way all the time?
🗪
1:42:45mallesbixie Q: Why is the "there is no file" there if it's in the way all the time?
🗪
1:43:00jimerinorustlerino handmade_hero If you need to run a bunch of regexp substitutions on huge chunks of your codebase, how you go about it?
🗪
1:43:00jimerinorustlerino handmade_hero If you need to run a bunch of regexp substitutions on huge chunks of your codebase, how you go about it?
🗪
1:43:00jimerinorustlerino handmade_hero If you need to run a bunch of regexp substitutions on huge chunks of your codebase, how you go about it?
🗪
1:45:55ivereadthesequel JimerinoRustlerino you need Q:
🗪
1:45:55ivereadthesequel JimerinoRustlerino you need Q:
🗪
1:45:55ivereadthesequel JimerinoRustlerino you need Q:
🗪
1:46:33somebody_took_my_name Q: There was this issue with the glyph count printed the wrong way around
🗪
1:46:33somebody_took_my_name Q: There was this issue with the glyph count printed the wrong way around
🗪
1:46:33somebody_took_my_name Q: There was this issue with the glyph count printed the wrong way around
🗪
1:46:56Fix the font printout in PrintContents()
1:46:56Fix the font printout in PrintContents()
1:46:56Fix the font printout in PrintContents()
1:47:18vtlmks Q: Not really a question, but why EFI? What problem did they make up to have EFI solve?
🗪
1:47:18vtlmks Q: Not really a question, but why EFI? What problem did they make up to have EFI solve?
🗪
1:47:18vtlmks Q: Not really a question, but why EFI? What problem did they make up to have EFI solve?
🗪
1:47:56vtlmks Q: Yes, the BIOS standard
🗪
1:47:56vtlmks Q: Yes, the BIOS standard
🗪
1:47:56vtlmks Q: Yes, the BIOS standard
🗪
1:48:19BIOS, EFI (Extensible Firmware Interface) and UEFI (Unified EFI)
🗩
1:48:19BIOS, EFI (Extensible Firmware Interface) and UEFI (Unified EFI)
🗩
1:48:19BIOS, EFI (Extensible Firmware Interface) and UEFI (Unified EFI)
🗩
1:53:23darksprites Q: Bit of an off-topic question: I found your talk about GJK (which was really great!) and implemented it for my project but now I don't know what to do to "resolve" collisions when I detect them. What should I do?
🗪
1:53:23darksprites Q: Bit of an off-topic question: I found your talk about GJK (which was really great!) and implemented it for my project but now I don't know what to do to "resolve" collisions when I detect them. What should I do?
🗪
1:53:23darksprites Q: Bit of an off-topic question: I found your talk about GJK (which was really great!) and implemented it for my project but now I don't know what to do to "resolve" collisions when I detect them. What should I do?
🗪
1:54:54pythno Q: Can you give advice for someone who wants to drop out of college (CS undergrad) and just finally get a programming job? Or is it a big no-no nowadays to do so?
🗪
1:54:54pythno Q: Can you give advice for someone who wants to drop out of college (CS undergrad) and just finally get a programming job? Or is it a big no-no nowadays to do so?
🗪
1:54:54pythno Q: Can you give advice for someone who wants to drop out of college (CS undergrad) and just finally get a programming job? Or is it a big no-no nowadays to do so?
🗪
2:03:17longboolean Q: I am a bit confused by your answer, because I have booted from USB on pre UEFI systems. Am I missing something?
🗪
2:03:17longboolean Q: I am a bit confused by your answer, because I have booted from USB on pre UEFI systems. Am I missing something?
🗪
2:03:17longboolean Q: I am a bit confused by your answer, because I have booted from USB on pre UEFI systems. Am I missing something?
🗪
2:05:12ivereadthesequel Q: Can you give an overview of how you have structured your web programming in C? I've heard you mention it in some stream on how you made certain components behind the Handmade Hero website in C or at least more-sanely programmed than most web frameworks. It really interests me, could you give some more info?
🗪
2:05:12ivereadthesequel Q: Can you give an overview of how you have structured your web programming in C? I've heard you mention it in some stream on how you made certain components behind the Handmade Hero website in C or at least more-sanely programmed than most web frameworks. It really interests me, could you give some more info?
🗪
2:05:12ivereadthesequel Q: Can you give an overview of how you have structured your web programming in C? I've heard you mention it in some stream on how you made certain components behind the Handmade Hero website in C or at least more-sanely programmed than most web frameworks. It really interests me, could you give some more info?
🗪
2:10:39jimerinorustlerino handmade_hero How about learning some online courses at python or something, and contributing to open source at GitHub (documentation fixes)?
🗪
2:10:39jimerinorustlerino handmade_hero How about learning some online courses at python or something, and contributing to open source at GitHub (documentation fixes)?
🗪
2:10:39jimerinorustlerino handmade_hero How about learning some online courses at python or something, and contributing to open source at GitHub (documentation fixes)?
🗪
2:10:46jim0_o Q: You talked about people needing to know C++ to be hired for programming jobs these days. Did you mean OOP C++ with compile times linked to lunch-breaks? Do you think you would need to bone-up on newer C++ to do such a job?
🗪
2:10:46jim0_o Q: You talked about people needing to know C++ to be hired for programming jobs these days. Did you mean OOP C++ with compile times linked to lunch-breaks? Do you think you would need to bone-up on newer C++ to do such a job?
🗪
2:10:46jim0_o Q: You talked about people needing to know C++ to be hired for programming jobs these days. Did you mean OOP C++ with compile times linked to lunch-breaks? Do you think you would need to bone-up on newer C++ to do such a job?
🗪
2:14:02cylvtwitch2 handmade_hero How can you create a interesting portfolio for backend developers? I can't make fancy sites because I know nothing about design
🗪
2:14:02cylvtwitch2 handmade_hero How can you create a interesting portfolio for backend developers? I can't make fancy sites because I know nothing about design
🗪
2:14:02cylvtwitch2 handmade_hero How can you create a interesting portfolio for backend developers? I can't make fancy sites because I know nothing about design
🗪
2:14:13Gauge the performance of Mailjet's newsletter sign-up form1
📖
2:14:13Gauge the performance of Mailjet's newsletter sign-up form1
📖
2:14:13Gauge the performance of Mailjet's newsletter sign-up form1
📖
2:21:05Compare the performance of Molly Rocket's mailing list sign-up form2
📖
2:21:05Compare the performance of Molly Rocket's mailing list sign-up form2
📖
2:21:05Compare the performance of Molly Rocket's mailing list sign-up form2
📖
2:22:42Portfolio creation tips
🗩
2:22:42Portfolio creation tips
🗩
2:22:42Portfolio creation tips
🗩
2:25:02jimerinorustlerino handmade_hero Have you read "Out of the Tar Pit"?3 It seems to resurface lately for some reason
🗪
2:25:02jimerinorustlerino handmade_hero Have you read "Out of the Tar Pit"?3 It seems to resurface lately for some reason
🗪
2:25:02jimerinorustlerino handmade_hero Have you read "Out of the Tar Pit"?3 It seems to resurface lately for some reason
🗪
2:25:09grimjoey Q: Have you checked out kore.io (web server written in C)?
🗪
2:25:09grimjoey Q: Have you checked out kore.io (web server written in C)?
🗪
2:25:09grimjoey Q: Have you checked out kore.io (web server written in C)?
🗪
2:25:42uplinkcoder handmade_hero: libmicrohttpd is pretty good, as far as I can tell
🗪
2:25:42uplinkcoder handmade_hero: libmicrohttpd is pretty good, as far as I can tell
🗪
2:25:42uplinkcoder handmade_hero: libmicrohttpd is pretty good, as far as I can tell
🗪
2:25:49vikingcoder Q: Do you have any advice for a programmer having trouble to adjust to a OOP way of thinking on the job and how to cope with or handle patterns. Thank you
🗪
2:25:49vikingcoder Q: Do you have any advice for a programmer having trouble to adjust to a OOP way of thinking on the job and how to cope with or handle patterns. Thank you
🗪
2:25:49vikingcoder Q: Do you have any advice for a programmer having trouble to adjust to a OOP way of thinking on the job and how to cope with or handle patterns. Thank you
🗪
2:26:28pythno Q: Follow-up question: What kind of projects would be interesting for recruiters to look at? For example, at the moment I am working on a 3D rasterizer in x86 assembly using mode 13h with a DOS emulator. I don't know if that is interesting, because it is so legacy-like but I like doing it and reading the Michael Abrash stuff about it
🗪
2:26:28pythno Q: Follow-up question: What kind of projects would be interesting for recruiters to look at? For example, at the moment I am working on a 3D rasterizer in x86 assembly using mode 13h with a DOS emulator. I don't know if that is interesting, because it is so legacy-like but I like doing it and reading the Michael Abrash stuff about it
🗪
2:26:28pythno Q: Follow-up question: What kind of projects would be interesting for recruiters to look at? For example, at the moment I am working on a 3D rasterizer in x86 assembly using mode 13h with a DOS emulator. I don't know if that is interesting, because it is so legacy-like but I like doing it and reading the Michael Abrash stuff about it
🗪
2:28:19uplinkcoder handmade_hero They can't tell you because then you could just try mails and see if they are subscribed, leading to data breach
🗪
2:28:19uplinkcoder handmade_hero They can't tell you because then you could just try mails and see if they are subscribed, leading to data breach
🗪
2:28:19uplinkcoder handmade_hero They can't tell you because then you could just try mails and see if they are subscribed, leading to data breach
🗪
2:29:36mattiamanzati Q: Your subscribe form is not GDPR compliant. You need to add an unchecked-by-default checkbox with "I want to subscribe" text and add double verification emails
🗪
2:29:36mattiamanzati Q: Your subscribe form is not GDPR compliant. You need to add an unchecked-by-default checkbox with "I want to subscribe" text and add double verification emails
🗪
2:29:36mattiamanzati Q: Your subscribe form is not GDPR compliant. You need to add an unchecked-by-default checkbox with "I want to subscribe" text and add double verification emails
🗪
2:33:00thecodedragon GDPR has a section dedicated to it4
🗪
2:33:00thecodedragon GDPR has a section dedicated to it4
🗪
2:33:00thecodedragon GDPR has a section dedicated to it4
🗪
2:36:57jecosm "If you have not previously unsubscribed, a confirmation email will be sent"
🗪
2:36:57jecosm "If you have not previously unsubscribed, a confirmation email will be sent"
🗪
2:36:57jecosm "If you have not previously unsubscribed, a confirmation email will be sent"
🗪
2:37:45maccod Q: If he unsubscribes, he has to accept the terms again (a checkbox) when he enters the email address and wants to subscribe again
🗪
2:37:45maccod Q: If he unsubscribes, he has to accept the terms again (a checkbox) when he enters the email address and wants to subscribe again
🗪
2:37:45maccod Q: If he unsubscribes, he has to accept the terms again (a checkbox) when he enters the email address and wants to subscribe again
🗪
2:39:03vateferfout Q: Why not just have an FAQ with the fact that if you don't receive the subscription mail and have unsubscribed before, you have to send a mail?
🗪
2:39:03vateferfout Q: Why not just have an FAQ with the fact that if you don't receive the subscription mail and have unsubscribed before, you have to send a mail?
🗪
2:39:03vateferfout Q: Why not just have an FAQ with the fact that if you don't receive the subscription mail and have unsubscribed before, you have to send a mail?
🗪
2:39:26Propose responding identically to email addresses which have already been put on the mailing list or unsubscribed
🗩
2:39:26Propose responding identically to email addresses which have already been put on the mailing list or unsubscribed
🗩
2:39:26Propose responding identically to email addresses which have already been put on the mailing list or unsubscribed
🗩
2:41:11Close it up
🗩
2:41:11Close it up
🗩
2:41:11Close it up
🗩