UVSGXOR

From Prevue Guide Wiki
Jump to navigation Jump to search

This code simply returns the initial checksum of a UVSG command, provided you (1) give it a sample command that ends in $00 <checksum> and (2) strip off the 55 AA at the beginning. It's probably poorly written, but it works.

#import <stdio.h>

int main(int argc, char *argv[]) {
   int i=0, j, checksum;
   char *buf = "<PUT AN EXAMPLE COMMAND HERE>";
   char *hexPtr = buf;
   
   unsigned int *result = calloc(strlen(buf)/2 + 1, sizeof *result);
   while (sscanf(hexPtr, "%02x", &result[i++])) {
       hexPtr += 2;
       if (hexPtr >= buf + strlen(buf)) break;
   }
   
   for (j = i; j > -1; j--) {
       if (j == (i-1)) {
           checksum = (int)result[j];
       }
       if (j < (i-1)) {
           checksum = checksum ^ (int)result[j];            
       }
   }
   
   printf("\n%02x\n", checksum);
}