Advertisement
luckytyphlosion

GetItemEffectType fakematching.

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