diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-09-01 13:31:39 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-01 13:31:39 -0400 |
commit | 83806d0f95f9298bfa6d8775f5ea79a8204cc910 (patch) | |
tree | 1af34f57c2a11723c5a99a5638a7c6ae0376721a /src/battle_script_commands.c | |
parent | 4ac1b3fec52d4f09dd3b4d36c2d6d941b4e89343 (diff) | |
parent | 26ac9c5faf74fe9ea3a14f5c87ede78d077db118 (diff) |
Merge pull request #353 from PokeCodec/MatchFirered
Match (Most of) Firered
Diffstat (limited to 'src/battle_script_commands.c')
-rw-r--r-- | src/battle_script_commands.c | 276 |
1 files changed, 17 insertions, 259 deletions
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dd82a4aab..a56163180 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5155,20 +5155,19 @@ static void atk5C_hitanimation(void) } } -#ifdef NONMATCHING static void atk5D_getmoneyreward(void) { u32 i = 0; - u32 lastMonLevel = 0; - u32 moneyReward = 0; - u32 value; + u32 moneyReward; + u8 lastMonLevel = 0; + + const struct TrainerMonItemCustomMoves *party4; //This needs to be out here - // The whole function is using wrong registers. if (gBattleOutcome == B_OUTCOME_WON) { if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) { - moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier; + moneyReward = gBattleResources->secretBase->party.levels[0] * 20 * gBattleStruct->moneyMultiplier; } else { @@ -5176,45 +5175,40 @@ static void atk5D_getmoneyreward(void) { case 0: { - const struct TrainerMonNoItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemDefaultMoves; + const struct TrainerMonNoItemDefaultMoves *party1 = gTrainers[gTrainerBattleOpponent_A].party.NoItemDefaultMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party1[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; case F_TRAINER_PARTY_CUSTOM_MOVESET: { - const struct TrainerMonNoItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemCustomMoves; + const struct TrainerMonNoItemCustomMoves *party2 = gTrainers[gTrainerBattleOpponent_A].party.NoItemCustomMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party2[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; case F_TRAINER_PARTY_HELD_ITEM: { - const struct TrainerMonItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemDefaultMoves; + const struct TrainerMonItemDefaultMoves *party3 = gTrainers[gTrainerBattleOpponent_A].party.ItemDefaultMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party3[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; - case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + case (F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM): { - const struct TrainerMonItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; + party4 = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party4[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; } - for (; gTrainerMoneyTable[i].classId != 0xFF; ++i) + for (; gTrainerMoneyTable[i].classId != 0xFF; i++) { if (gTrainerMoneyTable[i].classId == gTrainers[gTrainerBattleOpponent_A].trainerClass) break; } - moneyReward = 4 * lastMonLevel; - moneyReward *= gBattleStruct->moneyMultiplier; - value = gTrainerMoneyTable[i].value; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - moneyReward *= (value << 1); - else - moneyReward *= value; + party4 = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; // Needed to Match. Has no effect. + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * (gBattleTypeFlags & BATTLE_TYPE_DOUBLE ? 2 : 1) * gTrainerMoneyTable[i].value; } AddMoney(&gSaveBlock1Ptr->money, moneyReward); } @@ -5228,242 +5222,6 @@ static void atk5D_getmoneyreward(void) else gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -#else -NAKED -static void atk5D_getmoneyreward(void) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - movs r6, 0\n\ - movs r5, 0\n\ - ldr r0, _080258F0 @ =gBattleOutcome\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - beq _080258C0\n\ - b _080259FA\n\ - _080258C0:\n\ - ldr r0, _080258F4 @ =gTrainerBattleOpponent_A\n\ - ldrh r2, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 3\n\ - cmp r2, r1\n\ - bne _08025904\n\ - ldr r0, _080258F8 @ =gBattleResources\n\ - ldr r0, [r0]\n\ - ldr r0, [r0]\n\ - adds r0, 0x94\n\ - ldrb r2, [r0]\n\ - ldr r0, _080258FC @ =gBattleStruct\n\ - ldr r0, [r0]\n\ - adds r0, 0x4A\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r4, r2, 0\n\ - muls r4, r0\n\ - ldr r0, _08025900 @ =gSaveBlock1Ptr\n\ - mov r8, r0\n\ - b _080259E8\n\ - .align 2, 0\n\ - _080258F0: .4byte gBattleOutcome\n\ - _080258F4: .4byte gTrainerBattleOpponent_A\n\ - _080258F8: .4byte gBattleResources\n\ - _080258FC: .4byte gBattleStruct\n\ - _08025900: .4byte gSaveBlock1Ptr\n\ - _08025904:\n\ - ldr r2, _08025920 @ =gTrainers\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r3, r0, 3\n\ - adds r4, r3, r2\n\ - ldrb r1, [r4]\n\ - cmp r1, 0x1\n\ - beq _0802595A\n\ - cmp r1, 0x1\n\ - bgt _08025924\n\ - cmp r1, 0\n\ - beq _0802592E\n\ - b _08025970\n\ - .align 2, 0\n\ - _08025920: .4byte gTrainers\n\ - _08025924:\n\ - cmp r1, 0x2\n\ - beq _08025944\n\ - cmp r1, 0x3\n\ - beq _0802595A\n\ - b _08025970\n\ - _0802592E:\n\ - adds r0, r2, 0\n\ - adds r0, 0x24\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - subs r0, 0x8\n\ - b _0802596E\n\ - _08025944:\n\ - adds r0, r2, 0\n\ - adds r0, 0x24\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - subs r0, 0x8\n\ - b _0802596E\n\ - _0802595A:\n\ - adds r0, r2, 0\n\ - adds r0, 0x24\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - subs r0, 0x10\n\ - _0802596E:\n\ - ldrb r5, [r0, 0x2]\n\ - _08025970:\n\ - ldr r0, _080259CC @ =gTrainerMoneyTable\n\ - lsls r1, r6, 2\n\ - adds r3, r1, r0\n\ - ldrb r1, [r3]\n\ - ldr r7, _080259D0 @ =gBattleStruct\n\ - mov r12, r0\n\ - lsls r4, r5, 2\n\ - ldr r5, _080259D4 @ =gBattleTypeFlags\n\ - ldr r0, _080259D8 @ =gSaveBlock1Ptr\n\ - mov r8, r0\n\ - cmp r1, 0xFF\n\ - beq _080259AA\n\ - ldr r2, _080259DC @ =gTrainers\n\ - ldr r0, _080259E0 @ =gTrainerBattleOpponent_A\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - ldrb r2, [r0, 0x1]\n\ - adds r1, r3, 0\n\ - _0802599A:\n\ - ldrb r0, [r1]\n\ - cmp r0, r2\n\ - beq _080259AA\n\ - adds r1, 0x4\n\ - adds r6, 0x1\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFF\n\ - bne _0802599A\n\ - _080259AA:\n\ - ldr r0, [r7]\n\ - adds r0, 0x4A\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0\n\ - muls r3, r0\n\ - lsls r0, r6, 2\n\ - add r0, r12\n\ - ldrb r2, [r0, 0x1]\n\ - ldr r0, [r5]\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080259E4\n\ - lsls r0, r2, 1\n\ - adds r4, r3, 0\n\ - muls r4, r0\n\ - b _080259E8\n\ - .align 2, 0\n\ - _080259CC: .4byte gTrainerMoneyTable\n\ - _080259D0: .4byte gBattleStruct\n\ - _080259D4: .4byte gBattleTypeFlags\n\ - _080259D8: .4byte gSaveBlock1Ptr\n\ - _080259DC: .4byte gTrainers\n\ - _080259E0: .4byte gTrainerBattleOpponent_A\n\ - _080259E4:\n\ - adds r4, r3, 0\n\ - muls r4, r2\n\ - _080259E8:\n\ - mov r1, r8\n\ - ldr r0, [r1]\n\ - movs r1, 0xA4\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - adds r1, r4, 0\n\ - bl AddMoney\n\ - b _08025A00\n\ - _080259FA:\n\ - bl ComputeWhiteOutMoneyLoss\n\ - adds r4, r0, 0\n\ - _08025A00:\n\ - ldr r1, _08025A40 @ =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x1\n\ - strb r0, [r1, 0x1]\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x2]\n\ - movs r0, 0x5\n\ - strb r0, [r1, 0x3]\n\ - strb r4, [r1, 0x4]\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r4\n\ - lsrs r0, 8\n\ - strb r0, [r1, 0x5]\n\ - movs r0, 0xFF\n\ - lsls r0, 16\n\ - ands r0, r4\n\ - lsrs r0, 16\n\ - strb r0, [r1, 0x6]\n\ - lsrs r0, r4, 24\n\ - strb r0, [r1, 0x7]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x8]\n\ - cmp r4, 0\n\ - beq _08025A48\n\ - ldr r1, _08025A44 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r1]\n\ - adds r0, 0x5\n\ - str r0, [r1]\n\ - b _08025A62\n\ - .align 2, 0\n\ - _08025A40: .4byte gBattleTextBuff1\n\ - _08025A44: .4byte gBattlescriptCurrInstr\n\ - _08025A48:\n\ - ldr r3, _08025A6C @ =gBattlescriptCurrInstr\n\ - ldr r2, [r3]\n\ - ldrb r1, [r2, 0x1]\n\ - ldrb r0, [r2, 0x2]\n\ - lsls r0, 8\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x3]\n\ - lsls r0, 16\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x4]\n\ - lsls r0, 24\n\ - orrs r1, r0\n\ - str r1, [r3]\n\ - _08025A62:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ - _08025A6C: .4byte gBattlescriptCurrInstr\n\ - "); -} -#endif static void atk5E(void) { |