Advertisement
r57shell

Ex-Ranza bitswap

Nov 29th, 2013
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3.  
  4. unsigned char rom[0x100000];
  5. int count[256];
  6. int idx[256];
  7.  
  8. char str[] = "hdebcgfa";
  9.  
  10. bool cmp(int a, int b)
  11. {
  12.     return count[a]<count[b];
  13. }
  14.  
  15. int convert(int a)
  16. {
  17.     int r = 0;
  18.     for (int i=0; i<8; ++i)
  19.     {
  20.         if (a&(1<<(7-i)))
  21.             r|=(1<<(7-(strchr(str,'a'+i)-str)));
  22.     }
  23.     return r;
  24. }
  25.  
  26. char str2[] = "akcdspgoilbjmnhfqret";
  27.  
  28. int convert2(int a)
  29. {
  30.     int r = 0;
  31.     for (int i=0; i<20; ++i)
  32.     {
  33.         if (a&(1<<(19-(strchr(str2,'a'+i)-str2))))
  34.             r|=(1<<(19-i));
  35.     }
  36.     return r;
  37. }
  38.  
  39. int main()
  40. {
  41.     FILE *f = fopen("Ex-Ranza.bin","rb");
  42.     fread(rom,1,sizeof(rom),f);
  43.     fclose(f);
  44.  
  45.     for (int i=0; i<sizeof(rom); ++i)
  46.     {
  47.         rom[i] = convert(rom[i]);
  48.         ++count[rom[i]];
  49.     }
  50.  
  51.     f = fopen("Ex-Ranza__.bin","wb");
  52.     for (int i=0; i<sizeof(rom); ++i)
  53.     {
  54.         unsigned char q = rom[convert2(i)];
  55.         fwrite(&q,1,1,f);
  56.     }
  57.     fclose(f);
  58.  
  59.     for (int i=0; i<256; ++i)
  60.         idx[i]=i;
  61.     std::sort(idx,idx+256, cmp);
  62.     for (int j=0; j<256; ++j)
  63.     {
  64.         int i = idx[j];
  65.         printf("%02X: %d\n",i,count[i]);
  66.     }
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement