Investigating a Lighting Bug
?
?

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
🗩
1:22Reacquaint ourselves with the lighting bug
🏃
1:22Reacquaint ourselves with the lighting bug
🏃
1:22Reacquaint ourselves with the lighting bug
🏃
2:11The lighting works in -Od
🏃
2:11The lighting works in -Od
🏃
2:11The lighting works in -Od
🏃
2:41Check out the lighting and asset bugs manifested in -O2
🏃
2:41Check out the lighting and asset bugs manifested in -O2
🏃
2:41Check out the lighting and asset bugs manifested in -O2
🏃
4:20Investigate the monstar asset absence
📖
4:20Investigate the monstar asset absence
📖
4:20Investigate the monstar asset absence
📖
7:16Make PlaceSnake() add the Undead tag
7:16Make PlaceSnake() add the Undead tag
7:16Make PlaceSnake() add the Undead tag
7:32Our monstar's head asset now appears
🏃
7:32Our monstar's head asset now appears
🏃
7:32Our monstar's head asset now appears
🏃
8:11Our downward-facing asset direction is not working
🏃
8:11Our downward-facing asset direction is not working
🏃
8:11Our downward-facing asset direction is not working
🏃
9:09Refamiliarise ourselves with the facing direction code in GetAsetFrom()
📖
9:09Refamiliarise ourselves with the facing direction code in GetAsetFrom()
📖
9:09Refamiliarise ourselves with the facing direction code in GetAsetFrom()
📖
11:30We are unexpectedly in power mode
🗹
11:30We are unexpectedly in power mode
🗹
11:30We are unexpectedly in power mode
🗹
12:15ryanfleury handmade_hero Hahaha sorry, probably a bug. You can disallow it if you want to turn it off
🗪
12:15ryanfleury handmade_hero Hahaha sorry, probably a bug. You can disallow it if you want to turn it off
🗪
12:15ryanfleury handmade_hero Hahaha sorry, probably a bug. You can disallow it if you want to turn it off
🗪
13:28Continue to reacquaint ourselves with GetAssetFrom()
📖
13:28Continue to reacquaint ourselves with GetAssetFrom()
📖
13:28Continue to reacquaint ourselves with GetAssetFrom()
📖
15:24Make GetAssetFrom() set D1 equal to D0
15:24Make GetAssetFrom() set D1 equal to D0
15:24Make GetAssetFrom() set D1 equal to D0
15:47See no difference in the asset picking
🏃
15:47See no difference in the asset picking
🏃
15:47See no difference in the asset picking
🏃
16:33Remove the tag range mapping from GetAssetFrom() and game_assets
16:33Remove the tag range mapping from GetAssetFrom() and game_assets
16:33Remove the tag range mapping from GetAssetFrom() and game_assets
17:43Our asset picking is still fine
🏃
17:43Our asset picking is still fine
🏃
17:43Our asset picking is still fine
🏃
17:55False alarm with our tau-based facing direction computation
📖
17:55False alarm with our tau-based facing direction computation
📖
17:55False alarm with our tau-based facing direction computation
📖
21:094coder feature request: Line overflow indicators
🗹
21:094coder feature request: Line overflow indicators
🗹
21:094coder feature request: Line overflow indicators
🗹
21:31Plug the circle stuff in Star Code Galaxy1
🗩
21:31Plug the circle stuff in Star Code Galaxy1
🗩
21:31Plug the circle stuff in Star Code Galaxy1
🗩
21:48Map the facing direction to 0–1 when adding the asset tags
21:48Map the facing direction to 0–1 when adding the asset tags
21:48Map the facing direction to 0–1 when adding the asset tags
24:54Change base_game.hht to try and trigger a rebuild
🗹
24:54Change base_game.hht to try and trigger a rebuild
🗹
24:54Change base_game.hht to try and trigger a rebuild
🗹
25:03Run the game
🏃
25:03Run the game
🏃
25:03Run the game
🏃
25:16Make UpdateAndRenderEntities() import the facing directions in the correct tau space
25:16Make UpdateAndRenderEntities() import the facing directions in the correct tau space
25:16Make UpdateAndRenderEntities() import the facing directions in the correct tau space
25:45Our facing directions are now remapped, still without downward
🏃
25:45Our facing directions are now remapped, still without downward
🏃
25:45Our facing directions are now remapped, still without downward
🏃
26:09Pushing Alt provokes a flash
🏃
26:09Pushing Alt provokes a flash
🏃
26:09Pushing Alt provokes a flash
🏃
26:52Reacquaint ourselves with the facing directions art
🗹
26:52Reacquaint ourselves with the facing directions art
🗹
26:52Reacquaint ourselves with the facing directions art
🗹
27:57vaualbus handmade_hero There are some "big" codegen bug reported and fixed lately
🗪
27:57vaualbus handmade_hero There are some "big" codegen bug reported and fixed lately
🗪
27:57vaualbus handmade_hero There are some "big" codegen bug reported and fixed lately
🗪
28:13Consider our possible problems causing the downward facing bug
📖
28:13Consider our possible problems causing the downward facing bug
📖
28:13Consider our possible problems causing the downward facing bug
📖
31:00The downward facing bug exists in -Od
🏃
31:00The downward facing bug exists in -Od
🏃
31:00The downward facing bug exists in -Od
🏃
31:28Add a BreakHere in UpdateAndRenderEntities() for facing direction > 0.6
31:28Add a BreakHere in UpdateAndRenderEntities() for facing direction > 0.6
31:28Add a BreakHere in UpdateAndRenderEntities() for facing direction > 0.6
32:11Try to break in to UpdateAndRenderEntities()
🏃
32:11Try to break in to UpdateAndRenderEntities()
🏃
32:11Try to break in to UpdateAndRenderEntities()
🏃
33:30vaualbus Then they broke old vs new version ability to debug programs because they fucked the pdb somehow. That has been fixed in preview 4 after I reported it
🗪
33:30vaualbus Then they broke old vs new version ability to debug programs because they fucked the pdb somehow. That has been fixed in preview 4 after I reported it
🗪
33:30vaualbus Then they broke old vs new version ability to debug programs because they fucked the pdb somehow. That has been fixed in preview 4 after I reported it
🗪
33:46A few words on not updating MSVC
🗩
33:46A few words on not updating MSVC
🗩
33:46A few words on not updating MSVC
🗩
34:10x13pixels This one seems like a RemedyBG bug. Probably not MSVC this time!
🗪
34:10x13pixels This one seems like a RemedyBG bug. Probably not MSVC this time!
🗪
34:10x13pixels This one seems like a RemedyBG bug. Probably not MSVC this time!
🗪
34:31x13pixels Should be able to, yes
🗪
34:31x13pixels Should be able to, yes
🗪
34:31x13pixels Should be able to, yes
🗪
34:49Update RemedyBG to v0.3.3.3
🗹
34:49Update RemedyBG to v0.3.3.3
🗹
34:49Update RemedyBG to v0.3.3.3
🗹
39:19Try unsuccessfully to break in to UpdateAndRenderEntities()
🏃
39:19Try unsuccessfully to break in to UpdateAndRenderEntities()
🏃
39:19Try unsuccessfully to break in to UpdateAndRenderEntities()
🏃
40:03Try adding a __debugbreak() in UpdateAndRenderEntities()
40:03Try adding a __debugbreak() in UpdateAndRenderEntities()
40:03Try adding a __debugbreak() in UpdateAndRenderEntities()
40:48Weird things are happening, and the __debugbreak() did not trigger
🏃
40:48Weird things are happening, and the __debugbreak() did not trigger
🏃
40:48Weird things are happening, and the __debugbreak() did not trigger
🏃
41:33Add a more general __debugbreak() in UpdateAndRenderEntities()
41:33Add a more general __debugbreak() in UpdateAndRenderEntities()
41:33Add a more general __debugbreak() in UpdateAndRenderEntities()
41:44Successfully break in to UpdateAndRenderEntities()
🏃
41:44Successfully break in to UpdateAndRenderEntities()
🏃
41:44Successfully break in to UpdateAndRenderEntities()
🏃
42:04Investigate our settings of FacingDirection
📖
42:04Investigate our settings of FacingDirection
📖
42:04Investigate our settings of FacingDirection
📖
43:31Our orphans are not drawn
🏃
43:31Our orphans are not drawn
🏃
43:31Our orphans are not drawn
🏃
44:13PlaceOrphan() sets FacingDirection to 0.75*Tau32, and ExecuteBrainHero() uses ATan2()
📖
44:13PlaceOrphan() sets FacingDirection to 0.75*Tau32, and ExecuteBrainHero() uses ATan2()
📖
44:13PlaceOrphan() sets FacingDirection to 0.75*Tau32, and ExecuteBrainHero() uses ATan2()
📖
46:48Make UpdateAndRenderEntities() shift negative facing directions to the 0.5–1.0 range
46:48Make UpdateAndRenderEntities() shift negative facing directions to the 0.5–1.0 range
46:48Make UpdateAndRenderEntities() shift negative facing directions to the 0.5–1.0 range
48:50Our hero's downward facing direction now works
🏃
48:50Our hero's downward facing direction now works
🏃
48:50Our hero's downward facing direction now works
🏃
49:29Investigate our orphan absence
📖
49:29Investigate our orphan absence
📖
49:29Investigate our orphan absence
📖
52:46Tag the orphan bodies in line with the heads in base_game.hht
🗹
52:46Tag the orphan bodies in line with the heads in base_game.hht
🗹
52:46Tag the orphan bodies in line with the heads in base_game.hht
🗹
54:55Our orphans are back, but facing the wrong direction
🏃
54:55Our orphans are back, but facing the wrong direction
🏃
54:55Our orphans are back, but facing the wrong direction
🏃
57:18See if our orphans' facing direction may be overwritten
📖
57:18See if our orphans' facing direction may be overwritten
📖
57:18See if our orphans' facing direction may be overwritten
📖
1:01:14Break in to PlaceOrphan()
🏃
1:01:14Break in to PlaceOrphan()
🏃
1:01:14Break in to PlaceOrphan()
🏃
1:02:30Add a __debugbreak() in UpdateAndRenderEntities() if Facing > 0.5
1:02:30Add a __debugbreak() in UpdateAndRenderEntities() if Facing > 0.5
1:02:30Add a __debugbreak() in UpdateAndRenderEntities() if Facing > 0.5
1:03:11Break in to UpdateAndRenderEntities() on Facing > 0.5
🏃
1:03:11Break in to UpdateAndRenderEntities() on Facing > 0.5
🏃
1:03:11Break in to UpdateAndRenderEntities() on Facing > 0.5
🏃
1:04:03Break in to PlaceOrphan() and add a data break point on FacingDirection
🏃
1:04:03Break in to PlaceOrphan() and add a data break point on FacingDirection
🏃
1:04:03Break in to PlaceOrphan() and add a data break point on FacingDirection
🏃
1:05:12Recall the Clear in entity
1:05:12Recall the Clear in entity
1:05:12Recall the Clear in entity
1:05:44Our orphan's original entity memory is being reclaimed
🏃
1:05:44Our orphan's original entity memory is being reclaimed
🏃
1:05:44Our orphan's original entity memory is being reclaimed
🏃
1:06:45Consult EnsureRegionIsUnpacked() for bugs
📖
1:06:45Consult EnsureRegionIsUnpacked() for bugs
📖
1:06:45Consult EnsureRegionIsUnpacked() for bugs
📖
1:07:51Each orphan is not a full entity, but a gen_entity
📖
1:07:51Each orphan is not a full entity, but a gen_entity
📖
1:07:51Each orphan is not a full entity, but a gen_entity
📖
1:10:46Fix GenerateRoom() to copy the FacingDirection of pending entities
1:10:46Fix GenerateRoom() to copy the FacingDirection of pending entities
1:10:46Fix GenerateRoom() to copy the FacingDirection of pending entities
1:11:40Break in to UpdateAndRenderEntities() on Facing > 0.5
🏃
1:11:40Break in to UpdateAndRenderEntities() on Facing > 0.5
🏃
1:11:40Break in to UpdateAndRenderEntities() on Facing > 0.5
🏃
1:12:38Check out our orphans in -O2
🏃
1:12:38Check out our orphans in -O2
🏃
1:12:38Check out our orphans in -O2
🏃
1:13:26Align our orphans' head and body
🏃
1:13:26Align our orphans' head and body
🏃
1:13:26Align our orphans' head and body
🏃
1:23:08Our lighting now appears to work in -O2
🏃
1:23:08Our lighting now appears to work in -O2
🏃
1:23:08Our lighting now appears to work in -O2
🏃
1:24:52Provoke our lighting bug
🏃
1:24:52Provoke our lighting bug
🏃
1:24:52Provoke our lighting bug
🏃
1:27:07redunlocked Q: If I remember correctly, this bug was introduced when you added the fade on load. Maybe it's a race condition with that on-load fade?
🗪
1:27:07redunlocked Q: If I remember correctly, this bug was introduced when you added the fade on load. Maybe it's a race condition with that on-load fade?
🗪
1:27:07redunlocked Q: If I remember correctly, this bug was introduced when you added the fade on load. Maybe it's a race condition with that on-load fade?
🗪
1:27:32Traverse the orphanage
🏃
1:27:32Traverse the orphanage
🏃
1:27:32Traverse the orphanage
🏃
1:28:19Scour the entity system for our lighting bug
📖
1:28:19Scour the entity system for our lighting bug
📖
1:28:19Scour the entity system for our lighting bug
📖
1:30:16Scour the lighting system itself for our bug
📖
1:30:16Scour the lighting system itself for our bug
📖
1:30:16Scour the lighting system itself for our bug
📖
1:33:16Make UpdateLighting() single-thread the lighting
1:33:16Make UpdateLighting() single-thread the lighting
1:33:16Make UpdateLighting() single-thread the lighting
1:33:24Provoke our lighting bug single-threaded
🏃
1:33:24Provoke our lighting bug single-threaded
🏃
1:33:24Provoke our lighting bug single-threaded
🏃
1:35:04insobot feature request: Auto-timeout on mentioning rust
1:35:04insobot feature request: Auto-timeout on mentioning rust
1:35:04insobot feature request: Auto-timeout on mentioning rust
1:35:30Continue to investigate our lighting bug
📖
1:35:30Continue to investigate our lighting bug
📖
1:35:30Continue to investigate our lighting bug
📖
1:38:32Introduce ValidateAtlas()
1:38:32Introduce ValidateAtlas()
1:38:32Introduce ValidateAtlas()
1:44:33Trigger ValidateAtlas()
🏃
1:44:33Trigger ValidateAtlas()
🏃
1:44:33Trigger ValidateAtlas()
🏃
1:45:06Change ValidateAtlas() to return a bool, so that UpdateLighting() may continue despite invalidation
1:45:06Change ValidateAtlas() to return a bool, so that UpdateLighting() may continue despite invalidation
1:45:06Change ValidateAtlas() to return a bool, so that UpdateLighting() may continue despite invalidation
1:49:00Our SpecValid and DiffuseValid values do not align with the actual bug
🏃
1:49:00Our SpecValid and DiffuseValid values do not align with the actual bug
🏃
1:49:00Our SpecValid and DiffuseValid values do not align with the actual bug
🏃
1:49:22Why our validation and the bug may not align: 1) Too tight bounds; 2) Invalid values that don't normally contaminate things
📖
1:49:22Why our validation and the bug may not align: 1) Too tight bounds; 2) Invalid values that don't normally contaminate things
📖
1:49:22Why our validation and the bug may not align: 1) Too tight bounds; 2) Invalid values that don't normally contaminate things
📖
1:50:03Widen the bounds in ValidateTexelComponent()
1:50:03Widen the bounds in ValidateTexelComponent()
1:50:03Widen the bounds in ValidateTexelComponent()
1:50:24Our lighting atlases still fail validation
🏃
1:50:24Our lighting atlases still fail validation
🏃
1:50:24Our lighting atlases still fail validation
🏃
1:51:42Tighten the bounds in ValidateTexelComponent()
1:51:42Tighten the bounds in ValidateTexelComponent()
1:51:42Tighten the bounds in ValidateTexelComponent()
1:51:57Watch our lighting validation
🏃
1:51:57Watch our lighting validation
🏃
1:51:57Watch our lighting validation
🏃
1:53:35Our intro cutscene doesn't work
🏃
1:53:35Our intro cutscene doesn't work
🏃
1:53:35Our intro cutscene doesn't work
🏃
1:54:25Q&A
🗩
1:54:25Q&A
🗩
1:54:25Q&A
🗩
1:55:13mextroxtm Q: Do you render the computed light bounces into a texture?
🗪
1:55:13mextroxtm Q: Do you render the computed light bounces into a texture?
🗪
1:55:13mextroxtm Q: Do you render the computed light bounces into a texture?
🗪
1:58:51guybru5h_vi Q: Do you ever suffer from decision paralysis when making a new feature?
🗪
1:58:51guybru5h_vi Q: Do you ever suffer from decision paralysis when making a new feature?
🗪
1:58:51guybru5h_vi Q: Do you ever suffer from decision paralysis when making a new feature?
🗪
2:01:08stuntcoder Q: When do you plan on releasing Star Code Galaxy2?
🗪
2:01:08stuntcoder Q: When do you plan on releasing Star Code Galaxy2?
🗪
2:01:08stuntcoder Q: When do you plan on releasing Star Code Galaxy2?
🗪
2:01:14rooctag Q: Was the bug mostly in the start area? Once you start walking it was better
🗪
2:01:14rooctag Q: Was the bug mostly in the start area? Once you start walking it was better
🗪
2:01:14rooctag Q: Was the bug mostly in the start area? Once you start walking it was better
🗪
2:01:32x13pixels Q: For the breakpoint at handmade_entity.cpp line 295 I believe what we were seeing was that the DLL wasn't yet loaded and the breakpoint wasn't yet resolved (hence the "?" icon). I think letting Handmade Hero run will eventually resolve the breakpoint and hit it. At least that is what I'm seeing here
🗪
2:01:32x13pixels Q: For the breakpoint at handmade_entity.cpp line 295 I believe what we were seeing was that the DLL wasn't yet loaded and the breakpoint wasn't yet resolved (hence the "?" icon). I think letting Handmade Hero run will eventually resolve the breakpoint and hit it. At least that is what I'm seeing here
🗪
2:01:32x13pixels Q: For the breakpoint at handmade_entity.cpp line 295 I believe what we were seeing was that the DLL wasn't yet loaded and the breakpoint wasn't yet resolved (hence the "?" icon). I think letting Handmade Hero run will eventually resolve the breakpoint and hit it. At least that is what I'm seeing here
🗪
2:02:04Break successfully in to UpdateAndRenderEntities()
🏃
2:02:04Break successfully in to UpdateAndRenderEntities()
🏃
2:02:04Break successfully in to UpdateAndRenderEntities()
🏃
2:02:49xamolxix Q: Can you please go into more detail about the lighting floating point and cache inefficiency?
🗪
2:02:49xamolxix Q: Can you please go into more detail about the lighting floating point and cache inefficiency?
🗪
2:02:49xamolxix Q: Can you please go into more detail about the lighting floating point and cache inefficiency?
🗪
2:04:47centhusiast Q: What is the best game sound track you have ever listened to?
🗪
2:04:47centhusiast Q: What is the best game sound track you have ever listened to?
🗪
2:04:47centhusiast Q: What is the best game sound track you have ever listened to?
🗪
2:05:46vironacorus Q: Hey, you mentioned programs used to debug port usage. Could you name some, so I can check them out? Also, can you explain execution port "notation" on uops, e.g. 1*p06 for CMOVL (conditional move)? Thanks!
🗪
2:05:46vironacorus Q: Hey, you mentioned programs used to debug port usage. Could you name some, so I can check them out? Also, can you explain execution port "notation" on uops, e.g. 1*p06 for CMOVL (conditional move)? Thanks!
🗪
2:05:46vironacorus Q: Hey, you mentioned programs used to debug port usage. Could you name some, so I can check them out? Also, can you explain execution port "notation" on uops, e.g. 1*p06 for CMOVL (conditional move)? Thanks!
🗪
2:06:15Understanding uops.info3
📖
2:06:15Understanding uops.info3
📖
2:06:15Understanding uops.info3
📖
2:12:52Understanding uops analysis in Compiler Explorer4
📖
2:12:52Understanding uops analysis in Compiler Explorer4
📖
2:12:52Understanding uops analysis in Compiler Explorer4
📖
2:19:03Example loop uops analysis in Compiler Explorer5,6
📖
2:19:03Example loop uops analysis in Compiler Explorer5,6
📖
2:19:03Example loop uops analysis in Compiler Explorer5,6
📖
2:26:58peterfors Q: Has to be inside the scope
🗪
2:26:58peterfors Q: Has to be inside the scope
🗪
2:26:58peterfors Q: Has to be inside the scope
🗪
2:27:22Example manual goto loop uops analysis in Compiler Explorer7,8
📖
2:27:22Example manual goto loop uops analysis in Compiler Explorer7,8
📖
2:27:22Example manual goto loop uops analysis in Compiler Explorer7,8
📖
2:39:01internationalizationist Q: So what tool do you use on your projects? IACA?
🗪
2:39:01internationalizationist Q: So what tool do you use on your projects? IACA?
🗪
2:39:01internationalizationist Q: So what tool do you use on your projects? IACA?
🗪
2:40:00gnarlyquack Looks like there's an open-source tool called OSACA9 that's meant to be a replacement for IACA
🗪
2:40:00gnarlyquack Looks like there's an open-source tool called OSACA9 that's meant to be a replacement for IACA
🗪
2:40:00gnarlyquack Looks like there's an open-source tool called OSACA9 that's meant to be a replacement for IACA
🗪
2:41:22Wrap it up
🗩
2:41:22Wrap it up
🗩
2:41:22Wrap it up
🗩