Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- u8 GetItemEffectType(u16 item)
- {
- const u8 *itemEffect;
- #ifndef NONMATCHING
- register u8 itemEffect0 asm("r1");
- register u8 itemEffect3 asm("r3");
- register u32 itemEffect0_r0 asm("r0"); // u32 to prevent shifting when transferring itemEffect0 to this
- u8 mask;
- #else
- #define itemEffect0 itemEffect[0]
- #define itemEffect3 itemEffect[3]
- #define mask 0x3F
- #endif
- // Read the item's effect properties.
- if (item == ITEM_ENIGMA_BERRY)
- {
- itemEffect = gSaveBlock1.enigmaBerry.itemEffect;
- }
- else
- {
- itemEffect = gItemEffectTable[item - ITEM_POTION];
- }
- #ifndef NONMATCHING
- itemEffect0 = itemEffect[0];
- mask = 0x3F;
- #endif
- if ((itemEffect0 & mask) || itemEffect[1] || itemEffect[2])
- {
- return 0;
- }
- #ifndef NONMATCHING
- itemEffect3 = itemEffect[3];
- #endif
- if (itemEffect3 & 0x80)
- {
- return 0;
- }
- else if (itemEffect0 & 0x40)
- {
- return 10;
- }
- else if (itemEffect3 & 0x40)
- {
- return 1;
- }
- else if ((itemEffect3 & mask) || (itemEffect0 >> 7))
- {
- if ((itemEffect3 & mask) == 0x20)
- {
- return 4;
- }
- else if ((itemEffect3 & mask) == 0x10)
- {
- return 3;
- }
- else if ((itemEffect3 & mask) == 0x8)
- {
- return 5;
- }
- else if ((itemEffect3 & mask) == 0x4)
- {
- return 6;
- }
- else if ((itemEffect3 & mask) == 0x2)
- {
- return 7;
- }
- else if ((itemEffect3 & mask) == 0x1)
- {
- return 8;
- }
- // alternate fakematching
- // itemEffect0_r0 = itemEffect0 >> 7;
- // asm(""); // increase live length for greg
- // if ((itemEffect0_r0 != 0) && (itemEffect3 & mask) == 0)
- #ifndef NONMATCHING
- else if (((itemEffect0_r0 = itemEffect0 >> 7) != 0) && (itemEffect3 & mask) == 0)
- #else
- else if (((itemEffect[0] >> 7) != 0) && (itemEffect[3] & 0x3F) == 0)
- #endif
- {
- return 9;
- }
- else
- {
- return 11;
- }
- }
- else if (itemEffect[4] & 0x44)
- {
- return 2;
- }
- else if (itemEffect[4] & 0x2)
- {
- return 12;
- }
- else if (itemEffect[4] & 0x1)
- {
- return 13;
- }
- else if (itemEffect[5] & 0x8)
- {
- return 14;
- }
- else if (itemEffect[5] & 0x4)
- {
- return 15;
- }
- else if (itemEffect[5] & 0x2)
- {
- return 16;
- }
- else if (itemEffect[5] & 0x1)
- {
- return 17;
- }
- else if (itemEffect[4] & 0x80)
- {
- return 18;
- }
- else if (itemEffect[4] & 0x20)
- {
- return 19;
- }
- else if (itemEffect[5] & 0x10)
- {
- return 20;
- }
- else if (itemEffect[4] & 0x18)
- {
- return 21;
- }
- else
- {
- return 22;
- }
- #ifdef NONMATCHING
- #undef itemEffect0
- #undef itemEffect3
- #undef mask
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement