yhtz - a yahtzee CLI game with 8 bytes of state
Inspired by The Bitwise Gamedev Challenge. Not sure if this technically counts since there aren't really "frames", but the spirit of the challenge is there -- the game should be able to be picked up at any point using the single 8 byte state struct.
State layout
Byte 1
- Roll count: 2 bits (high)
- "Top" section flags: 6 bits, one for each number, indicating whether we've played it yet
00 000000
roll ^^ ^^^^^^
count---|| ||||||
654321
Byte 2
- "Top" rolling score: 7 bits (low)
- High bit is ignored
Byte 3
- "Bottom" section flags: 7 bits (low), one for each category
- High bit is ignored
Byte 4
- "Bottom" rolling score: 8 bits
Bytes 5-6
- Dice: 5 total dice, each die has 3 bits, representing their current value
- High bit is ignored
x 000 000 000 000 000
D4. D3. D2. D1. D0.
Bytes 7-8
- Seed: a 16-bit unsigned integer representing the seed for the random number generator. Uses Dr. Lemire's 16-bit WyHash example.
