summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiegoisawesome <Diegoisawesome@users.noreply.github.com>2019-12-20 15:49:05 -0800
committerGitHub <noreply@github.com>2019-12-20 15:49:05 -0800
commit929a093fc1dfa8786be6add4119abbf5357382db (patch)
treebb32930a181f2cacfe0213e5c3d5a3d237a91860 /src
parent3b240b2ad4d02a14be9828f0be949131f6a8e58d (diff)
parent4d8ea3a2d93f8b08a498cb2afd11721938f6c2e4 (diff)
Merge pull request #943 from jiangzhengwenjz/CanSpinTradeMon
real match CanSpinTradeMon
Diffstat (limited to 'src')
-rw-r--r--src/trade.c163
1 files changed, 8 insertions, 155 deletions
diff --git a/src/trade.c b/src/trade.c
index 91b514067..6f5bf3603 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -2541,10 +2541,8 @@ int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuP
return CANT_REGISTER_MON;
}
-// r6/r7 flip. Ugh.
// Spin Trade wasnt fully implemented, but this checks if a mon would be valid to Spin Trade
// Unlike later generations, this version of Spin Trade isnt only for Eggs
-#ifdef NONMATCHING
int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
{
int i, version, versions, canTradeAnyMon, numMonsLeft;
@@ -2560,8 +2558,8 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
}
}
- canTradeAnyMon = TRUE;
versions = 0;
+ canTradeAnyMon = TRUE;
for (i = 0; i < GetLinkPlayerCount(); i++)
{
version = gLinkPlayers[i].version & 0xFF;
@@ -2581,11 +2579,14 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
struct LinkPlayer *player = &gLinkPlayers[i];
// Does player not have National Dex
- if (!(player->progressFlags & 0xF))
- canTradeAnyMon = FALSE;
+ do
+ {
+ if (!(player->progressFlags & 0xF))
+ canTradeAnyMon = FALSE;
- if (versions && (player->progressFlags / 16))
- canTradeAnyMon = FALSE;
+ if (versions && (player->progressFlags / 16))
+ canTradeAnyMon = FALSE;
+ } while (0);
}
if (canTradeAnyMon == FALSE)
@@ -2611,154 +2612,6 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
else
return CAN_TRADE_MON;
}
-#else
-NAKED
-int CanSpinTradeMon(struct Pokemon *mon, u16 a1)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0x18\n\
- adds r6, r0, 0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r8, r1\n\
- movs r5, 0\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- bge _0807A95A\n\
- mov r4, sp\n\
-_0807A934:\n\
- movs r0, 0x64\n\
- muls r0, r5\n\
- adds r0, r6, r0\n\
- movs r1, 0x41\n\
- bl GetMonData\n\
- str r0, [r4]\n\
- movs r1, 0xCE\n\
- lsls r1, 1\n\
- cmp r0, r1\n\
- bne _0807A94E\n\
- movs r0, 0\n\
- str r0, [r4]\n\
-_0807A94E:\n\
- adds r4, 0x4\n\
- adds r5, 0x1\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- blt _0807A934\n\
-_0807A95A:\n\
- movs r7, 0\n\
- movs r6, 0x1\n\
- movs r5, 0\n\
- ldr r4, =gLinkPlayers\n\
- b _0807A980\n\
- .pool\n\
-_0807A96C:\n\
- ldrb r0, [r4]\n\
- subs r0, 0x4\n\
- cmp r0, 0x1\n\
- bhi _0807A978\n\
- movs r7, 0\n\
- b _0807A97C\n\
-_0807A978:\n\
- movs r0, 0x1\n\
- orrs r7, r0\n\
-_0807A97C:\n\
- adds r4, 0x1C\n\
- adds r5, 0x1\n\
-_0807A980:\n\
- bl GetLinkPlayerCount\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r5, r0\n\
- blt _0807A96C\n\
- movs r5, 0\n\
- movs r4, 0\n\
- b _0807A9B4\n\
-_0807A992:\n\
- ldr r0, =gLinkPlayers\n\
- adds r2, r4, r0\n\
- ldrb r1, [r2, 0x10]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0807A9A2\n\
- movs r6, 0\n\
-_0807A9A2:\n\
- cmp r7, 0\n\
- beq _0807A9B0\n\
- ldrb r0, [r2, 0x10]\n\
- lsrs r0, 4\n\
- cmp r0, 0\n\
- beq _0807A9B0\n\
- movs r6, 0\n\
-_0807A9B0:\n\
- adds r4, 0x1C\n\
- adds r5, 0x1\n\
-_0807A9B4:\n\
- bl GetLinkPlayerCount\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r5, r0\n\
- blt _0807A992\n\
- cmp r6, 0\n\
- bne _0807A9EA\n\
- mov r1, r8\n\
- lsls r0, r1, 2\n\
- mov r1, sp\n\
- adds r4, r1, r0\n\
- ldrh r0, [r4]\n\
- bl IsSpeciesInHoennDex\n\
- cmp r0, 0\n\
- bne _0807A9E0\n\
- movs r0, 0x2\n\
- b _0807AA1A\n\
- .pool\n\
-_0807A9E0:\n\
- ldr r0, [r4]\n\
- cmp r0, 0\n\
- bne _0807A9EA\n\
- movs r0, 0x3\n\
- b _0807AA1A\n\
-_0807A9EA:\n\
- movs r2, 0\n\
- movs r5, 0\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- cmp r2, r0\n\
- bge _0807AA0A\n\
- adds r3, r0, 0\n\
- mov r1, sp\n\
-_0807A9FA:\n\
- cmp r8, r5\n\
- beq _0807AA02\n\
- ldr r0, [r1]\n\
- adds r2, r0\n\
-_0807AA02:\n\
- adds r1, 0x4\n\
- adds r5, 0x1\n\
- cmp r5, r3\n\
- blt _0807A9FA\n\
-_0807AA0A:\n\
- cmp r2, 0\n\
- beq _0807AA18\n\
- movs r0, 0\n\
- b _0807AA1A\n\
- .pool\n\
-_0807AA18:\n\
- movs r0, 0x1\n\
-_0807AA1A:\n\
- add sp, 0x18\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1");
-}
-#endif // NONMATCHING
static void sub_807AA28(struct Sprite *sprite)
{