Advertisement
Guest User

dragon warrior checksum?

a guest
Dec 18th, 2016
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. uint8_t cl = 0x1D, ch = 0x1D, carry = 0;
  2. uint8_t al, bl, temp;
  3.  
  4. for (int i = len; i >=0; --i){
  5. al = data[i];
  6. for (int j = 8; j > 0; --j) {
  7.  
  8. bl = al ^ ch;
  9. //printf("BL %02x | CH %02x \n", al, ch);
  10.  
  11. carry = (cl & 0x80) ? 1 : 0;
  12. cl <<= 1;
  13.  
  14. temp = (ch & 0x80) ? 1 : 0;
  15. ch = (ch << 1) | carry;
  16. carry = temp;
  17.  
  18. carry = (al & 0x80) ? 1 : 0;
  19. al <<= 1;
  20.  
  21. carry = (bl & 0x80) ? 1 : 0;
  22. bl <<= 1;
  23.  
  24. if (carry) {
  25. cl ^= 0x21;
  26. ch ^= 0x10;
  27. }
  28. }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement