Handmade Hero Notes
      Foreword -     Appendix. Glossary and References
Day 1. Setting Up the Windows Build
  1. Set up Visual Studio.
  2. Configure Command Prompt.
  3. Set up a Text Editor (4coder/vscode).
  4. Create the First Code File (win32_handmade.cpp).
  5. build.bat philosophy.
  6. Intro to debugging in Visual Studio and RemedyBG.
Day 2. Opening a Win32 Window

  1. Create and Register the WindowClass.
  2. Create Main Windows Callback, Start Processing Basic Messages.
  3. Create a Window.
  4. Start the Message Loop with GetMessageA.
Day 3. Allocating a Back Buffer

  1. Create a Bitmap using CreateDIBSection.
  2. Output the Bitmap to the Window using StretchDIBits.
Day 4. Animating the Back Buffer

  1. Custom Bitmap Memory Allocation.
  2. Render a Gradient to the Bitmap.
  3. Animate the Bitmap on Each Frame.
  4. RGB Color Packing in Windows.
Day 5. Windows Graphics Review

  1. Pack the Bitmap-related Globals Into a Struct
  2. The Stack
  3. Full Program Step-through
Day 6. Gamepad and Keyboard Input

  1. XInput
  2. Direct Library Loading
  3. Process Keyboard Messages
Day 7. Initializing DirectSound

  1. Load Direct Sound
  2. Initialize the Buffers
  3. Deep Dive: COM, Vtables, Disassembly
Day 8. Writing a Square Wave to DirectSound

  1. Write to a Circular Buffer
  2. Square Wave
  3. Play Sound through DirectSound
Day 9. Variable-Pitch Sine Wave Output

  1. Generate a Sine Wave
  2. Debug Sample Writing
  3. Link Sound Pitch to User Input

Day 10. QueryPerformanceCounter and RDTSC

  1. Time the frame using QueryPerformanceCounter and RDTSC
  2. String formatting tools in the C Standard Library
  3. Intro to Dimensional Analysis
Day 11. The Basics of Platform API Design

  1. About Code Architecture
  2. Platform Usage Philosophies
  3. Start Implementing Game as Service System Style
Day 12. Platform-Independent Sound Output

  1. Intro to our API Design Approach
  2. Start Generating Sounds on the Game Layer
  3. Make Use of Sound Generation in the Platform Layer
Day 13. Platform-Independent User Input

  1. Think of a Possible Input System Usage
  2. Make a First Pass on the Input System
Day 14. Platform-Independent Game Memory

  1. Intro to Memory Management
  2. Design and Implementation of Our Approach
  3. Assertions
Day 15. Platform-Independent Debug Game I/O

  1. About File I/O in Games
  2. Platform Implementation of the Debug I/O
  3. Safe Truncation
Day 16. Visual Studio Compiler Switches

  1. Enable Compiler Warnings
  2. Set Other Compiler Switches
  3. Try a 32-bit Build
Day 17. Unified Keyboard and Gamepad Input

  1. Move Keyboard Input to WinMain
  2. Finish Gamepad Stick Code
  3. Improve Keyboard Input Processing
Day 18. Enforcing a Video Frame Rate

  1. Define frame rate problem
  2. Implement first pass solution
  3. Some Cleanup and Refactoring
Day 19. Improving Audio Synchronization

  1. Visualize the DirectSound Cursors
  2. Deep-dive Debugging: Audio Skipping
  3. Increase Audio Latency
Day 20. Debugging the Audio Sync

  1. Deep Dive into Audio Latency Issue
  2. Implement Two Audio Paths
  3. Introduce GameGetSoundSamples
  4. More Debug Work
Day 21. Loading Game Code Dynamically

  1. Separate Game From Platform
  2. Build Game DLL
  3. Reload Game DLL at Runtime
Day 22. Instantaneous Live Code Editing

  1. Variable PDB Name
  2. Re-enable Debugger Support
  3. Remove Delay Between Reloads
Day 23. Looped Live Code Editing

  1. Add a Test Player
  2. Implement Live Loop
  3. Showcase Live Loop Editing
Day 24. Win32 Platform Layer Cleanup

  1. Various Code Improvements
  2. String Building Routines
Day 25. Finishing the Win32 Prototyping Layer

  1. Capture Mouse Input
  2. Improve Replay Handling
  3. Clean Up Platform Debug Code
Day 26. Introduction to Game Architecture

  1. About Software Architecture
  2. Game Architecture for Handmade Hero
Day 27. Exploration-based Architecture

  1. Explore and Lock architecture approach
  2. Game Design for Handmade Hero
  3. Test Code Cleanup
  4. DrawRectangle Function
Day 28. Drawing a Tile Map

  1. Floating-point Color
  2. Basic Tile Map
  3. Getting a Player on the Screen
  4. Aside: A bit of Color Theory
About the Notes and the Code Blocks

You will see many special call outs spread around the page. These are made both to break the text down and to insert some variety into it. Aside from pictures, code, tables and graphs, you will find the following:

Note

This is a note.

Warning

This is an important thing to note. Read this part very carefully.

Tip

This is a useful tip.

Trivia

This is an interesting fact or some historical trivia.

As for the code blocks, these would have the following markings:

// This is a comment for C/C++ code chunks
This is a line which was already present in the code (introduced earlier)
and remains without a change. 
This is a deleted line.
This is a new line.
This is a previously existing line which was edited.

formatted by Markdeep 1.10