Tile Map Memory
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
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 and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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:00Intro
0:00Intro
0:00Intro
4:38The more you know
4:38The more you know
4:38The more you know
8:25Time to program
8:25Time to program
8:25Time to program
9:30Adding smooth scrolling
9:30Adding smooth scrolling
9:30Adding smooth scrolling
12:22Scrolling works - next test code from yesterday
12:22Scrolling works - next test code from yesterday
12:22Scrolling works - next test code from yesterday
14:00Change position offset to be from the tile center
14:00Change position offset to be from the tile center
14:00Change position offset to be from the tile center
17:15Calculating new tile from center offset (discussion)
17:15Calculating new tile from center offset (discussion)
17:15Calculating new tile from center offset (discussion)
22:10Implement tile offset from center
22:10Implement tile offset from center
22:10Implement tile offset from center
28:10Player moves faster for testing
28:10Player moves faster for testing
28:10Player moves faster for testing
29:53Make a larger world
29:53Make a larger world
29:53Make a larger world
36:40Start creating a new tile map procedurally
36:40Start creating a new tile map procedurally
36:40Start creating a new tile map procedurally
43:30Persistent game storage
43:30Persistent game storage
43:30Persistent game storage
49:50Consider typedef'ing a size type
📖
49:50Consider typedef'ing a size type
📖
49:50Consider typedef'ing a size type
📖
50:35typedef memory_index as a size_t
50:35typedef memory_index as a size_t
50:35typedef memory_index as a size_t
52:01Implement InitializeArena() taking our new memory_index, and introduce PushStruct_() and its macro
52:01Implement InitializeArena() taking our new memory_index, and introduce PushStruct_() and its macro
52:01Implement InitializeArena() taking our new memory_index, and introduce PushStruct_() and its macro
54:16Fill in our memory_arena, and fix PushStruct_() to take a memory_index
54:16Fill in our memory_arena, and fix PushStruct_() to take a memory_index
54:16Fill in our memory_arena, and fix PushStruct_() to take a memory_index
54:58Set up to implement SetTileValue()
54:58Set up to implement SetTileValue()
54:58Set up to implement SetTileValue()
55:07Position the head camera obscurer
🗹
55:07Position the head camera obscurer
🗹
55:07Position the head camera obscurer
🗹
55:27Implement SetTileValue() based on GetTileValue()
55:27Implement SetTileValue() based on GetTileValue()
55:27Implement SetTileValue() based on GetTileValue()
58:48Hit our assertion in SetTileValue(), as expected
🏃
58:48Hit our assertion in SetTileValue(), as expected
🏃
58:48Hit our assertion in SetTileValue(), as expected
🏃
58:59Temporarily make GameUpdateAndRender() preallocate a 16×16 chunks TileMap
58:59Temporarily make GameUpdateAndRender() preallocate a 16×16 chunks TileMap
58:59Temporarily make GameUpdateAndRender() preallocate a 16×16 chunks TileMap
1:01:14Introduce PushArray() for GameUpdateAndRender() to call, and rename PushStruct_() to PushSize_()
1:01:14Introduce PushArray() for GameUpdateAndRender() to call, and rename PushStruct_() to PushSize_()
1:01:14Introduce PushArray() for GameUpdateAndRender() to call, and rename PushStruct_() to PushSize_()
1:03:05Fix compile errors
1:03:05Fix compile errors
1:03:05Fix compile errors
1:03:44Hit our assertion in PushSize_()
🏃
1:03:44Hit our assertion in PushSize_()
🏃
1:03:44Hit our assertion in PushSize_()
🏃
1:04:09Reduce the TileMap size from 16×16 to 4×4 in GameUpdateAndRender()
1:04:09Reduce the TileMap size from 16×16 to 4×4 in GameUpdateAndRender()
1:04:09Reduce the TileMap size from 16×16 to 4×4 in GameUpdateAndRender()
1:04:21Hit our assertion in SetTileValue()
🏃
1:04:21Hit our assertion in SetTileValue()
🏃
1:04:21Hit our assertion in SetTileValue()
🏃
1:04:30Going for it
1:04:30Going for it
1:04:30Going for it
1:09:10Fate
1:09:10Fate
1:09:10Fate
1:11:00Summary of the day
1:11:00Summary of the day
1:11:00Summary of the day
1:14:40Q&A
🗩
1:14:40Q&A
🗩
1:14:40Q&A
🗩
1:16:05Garlandobloom says hi.
1:16:05Garlandobloom says hi.
1:16:05Garlandobloom says hi.
1:16:18Can you explain the motivation behind controlling the page granularity.
1:16:18Can you explain the motivation behind controlling the page granularity.
1:16:18Can you explain the motivation behind controlling the page granularity.
1:22:35Is the memory arena for more temporary objects than we're storing in the game state directly?
1:22:35Is the memory arena for more temporary objects than we're storing in the game state directly?
1:22:35Is the memory arena for more temporary objects than we're storing in the game state directly?
1:25:30Why not have smooth scrolling?
1:25:30Why not have smooth scrolling?
1:25:30Why not have smooth scrolling?
1:26:20We already have the -Oi compiler flag set.
1:26:20We already have the -Oi compiler flag set.
1:26:20We already have the -Oi compiler flag set.
1:29:32Does using the memory arena still allow you to hotload your code?
1:29:32Does using the memory arena still allow you to hotload your code?
1:29:32Does using the memory arena still allow you to hotload your code?
1:31:31Will we be implementing our own trig functions?
1:31:31Will we be implementing our own trig functions?
1:31:31Will we be implementing our own trig functions?
1:32:00Will there be enough memory to store the entire sparse tile map?
1:32:00Will there be enough memory to store the entire sparse tile map?
1:32:00Will there be enough memory to store the entire sparse tile map?
1:32:43Why not just allocate a large 1D array?
1:32:43Why not just allocate a large 1D array?
1:32:43Why not just allocate a large 1D array?
1:35:40You're using a lot of pointers here. (Rant)
1:35:40You're using a lot of pointers here. (Rant)
1:35:40You're using a lot of pointers here. (Rant)
1:39:33Will the memory arena be aligning the assigned memory?
1:39:33Will the memory arena be aligning the assigned memory?
1:39:33Will the memory arena be aligning the assigned memory?
1:39:52Don't forget to disable -O2 again.
1:39:52Don't forget to disable -O2 again.
1:39:52Don't forget to disable -O2 again.
1:40:05Comment on calling sin/cos for x86
1:40:05Comment on calling sin/cos for x86
1:40:05Comment on calling sin/cos for x86
1:40:57Why don't you use lookup tables for sin/cos (Rant)
1:40:57Why don't you use lookup tables for sin/cos (Rant)
1:40:57Why don't you use lookup tables for sin/cos (Rant)
1:42:42How can you say you don't need to free up memory?
1:42:42How can you say you don't need to free up memory?
1:42:42How can you say you don't need to free up memory?
1:43:28Is memory access slower than MOV?
1:43:28Is memory access slower than MOV?
1:43:28Is memory access slower than MOV?
1:44:45Why are tiles used? What is the real benefit of tile mapping?
1:44:45Why are tiles used? What is the real benefit of tile mapping?
1:44:45Why are tiles used? What is the real benefit of tile mapping?
1:46:02Remark on x87
1:46:02Remark on x87
1:46:02Remark on x87
1:46:32Conclusion
🗩
1:46:32Conclusion
🗩
1:46:32Conclusion
🗩