Skip to content

Fix carrying between bytes when saving and loading a checkpoint#118

Open
scribblemaniac wants to merge 1 commit intocathugger:masterfrom
scribblemaniac:fix-carry
Open

Fix carrying between bytes when saving and loading a checkpoint#118
scribblemaniac wants to merge 1 commit intocathugger:masterfrom
scribblemaniac:fix-carry

Conversation

@scribblemaniac
Copy link
Contributor

The current logic for going between determseed and checkpoint is flawed. When it applies the checkpoint to determseed, carry = 1 only if determseed[i] < checkpoint[i]. However, if checkpoint[i] = 0xFF and carry was already 1, then determseed[i] += 0xFF + 0x01 and determseed[i] overflows to the same value. Since the value is the same, carry is set to false despite the fact that it did overflow. A similar issue affects the code going from determseed to checkpoint.

There are multiple ways to fix this, but I think this solution is the most intuitive. This basically just does the math in 16-bit, using the bottom 8 bits for the result and the top 8 bits to determine the carry.

I don't believe this is a breaking change. Missing a carry when saving or loading a checkpoint will just result in some redundant work being performed. Using a deterministic seed should still find all the same matches.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments