Advertisement
luckytyphlosion

register is cheating (GetItemEffectType fakematch)

Sep 7th, 2018
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.65 KB | None | 0 0
  1. u8 GetItemEffectType(u16 item)
  2. {
  3.     const u8 *itemEffect;
  4.     register u8 itemEffect0 asm("r1");
  5.     register u8 itemEffect3 asm("r3");
  6.     register u32 itemEffect0_r0 asm("r0"); // u32 to prevent shifting when transferring itemEffect0 to this
  7.     u8 mask;
  8.  
  9.     // Read the item's effect properties.
  10.     if (item == ITEM_ENIGMA_BERRY)
  11.     {
  12.         itemEffect = gSaveBlock1.enigmaBerry.itemEffect;
  13.     }
  14.     else
  15.     {
  16.         itemEffect = gItemEffectTable[item - ITEM_POTION];
  17.     }
  18.  
  19.     itemEffect0 = itemEffect[0];
  20.     mask = 0x3F;
  21.  
  22.     if ((itemEffect0 & mask) || itemEffect[1] || itemEffect[2])
  23.     {
  24.         return 0;
  25.     }
  26.     itemEffect3 = itemEffect[3];
  27.     if (itemEffect3 & 0x80)
  28.     {
  29.         return 0;
  30.     }
  31.     else if (itemEffect0 & 0x40)
  32.     {
  33.         return 10;
  34.     }
  35.     else if (itemEffect3 & 0x40)
  36.     {
  37.         return 1;
  38.     }
  39.     else if ((itemEffect3 & mask) || (itemEffect0 >> 7))
  40.     {
  41.         if ((itemEffect3 & mask) == 0x20)
  42.         {
  43.             return 4;
  44.         }
  45.         else if ((itemEffect3 & mask) == 0x10)
  46.         {
  47.             return 3;
  48.         }
  49.         else if ((itemEffect3 & mask) == 0x8)
  50.         {
  51.             return 5;
  52.         }
  53.         else if ((itemEffect3 & mask) == 0x4)
  54.         {
  55.             return 6;
  56.         }
  57.         else if ((itemEffect3 & mask) == 0x2)
  58.         {
  59.             return 7;
  60.         }
  61.         else if ((itemEffect3 & mask) == 0x1)
  62.         {
  63.             return 8;
  64.         }
  65.         // alternate fakematching
  66.         // itemEffect0_r0 = itemEffect0 >> 7;
  67.         // asm(""); // increase live length for greg
  68.         // if ((itemEffect0_r0 != 0) && (itemEffect3 & mask) == 0)
  69.         else if (((itemEffect0_r0 = itemEffect0 >> 7) != 0) && (itemEffect3 & mask) == 0)
  70.         {
  71.             return 9;
  72.         }
  73.         else
  74.         {
  75.             return 11;
  76.         }
  77.     }
  78.     else if (itemEffect[4] & 0x44)
  79.     {
  80.         return 2;
  81.     }
  82.     else if (itemEffect[4] & 0x2)
  83.     {
  84.         return 12;
  85.     }
  86.     else if (itemEffect[4] & 0x1)
  87.     {
  88.         return 13;
  89.     }
  90.     else if (itemEffect[5] & 0x8)
  91.     {
  92.         return 14;
  93.     }
  94.     else if (itemEffect[5] & 0x4)
  95.     {
  96.         return 15;
  97.     }
  98.     else if (itemEffect[5] & 0x2)
  99.     {
  100.         return 16;
  101.     }
  102.     else if (itemEffect[5] & 0x1)
  103.     {
  104.         return 17;
  105.     }
  106.     else if (itemEffect[4] & 0x80)
  107.     {
  108.         return 18;
  109.     }
  110.     else if (itemEffect[4] & 0x20)
  111.     {
  112.         return 19;
  113.     }
  114.     else if (itemEffect[5] & 0x10)
  115.     {
  116.         return 20;
  117.     }
  118.     else if (itemEffect[4] & 0x18)
  119.     {
  120.         return 21;
  121.     }
  122.     else
  123.     {
  124.         return 22;
  125.     }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement