summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_util.c440
1 files changed, 18 insertions, 422 deletions
diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c
index faa395a97..194a002d3 100644
--- a/src/battle/battle_util.c
+++ b/src/battle/battle_util.c
@@ -3439,417 +3439,6 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target
return targetBank;
}
-#if DEBUG
-__attribute__((naked))
-u8 IsMonDisobedient(void)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6, r7}\n\
- add sp, sp, #0xfffffff0\n\
- ldr r0, ._1785\n\
- ldrh r1, [r0]\n\
- mov r0, #0x2\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- bne ._1791 @cond_branch\n\
- ldr r4, ._1785 + 4\n\
- ldrb r0, [r4]\n\
- bl GetBankSide\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- beq ._1791 @cond_branch\n\
- ldr r2, ._1785 + 8\n\
- ldrb r1, [r4]\n\
- mov r0, #0x58\n\
- mul r1, r1, r0\n\
- add r0, r2, #0\n\
- add r0, r0, #0x54\n\
- add r0, r1, r0\n\
- ldr r0, [r0]\n\
- add r2, r2, #0x3c\n\
- add r1, r1, r2\n\
- bl IsOtherTrainer\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- beq ._1791 @cond_branch\n\
- ldr r0, ._1785 + 12\n\
- ldrb r1, [r0]\n\
- mov r0, #0x40\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._1783 @cond_branch\n\
- mov r0, #0xa\n\
- b ._1784\n\
-._1786:\n\
- .align 2, 0\n\
-._1785:\n\
- .word gBattleTypeFlags\n\
- .word gBankAttacker\n\
- .word gBattleMons\n\
- .word gUnknown_02023A14_50\n\
-._1783:\n\
- ldr r0, ._1794\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- bne ._1791 @cond_branch\n\
- mov r1, #0xa\n\
- mov r8, r1\n\
- ldr r0, ._1794 + 4\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- beq ._1788 @cond_branch\n\
- mov r2, #0x1e\n\
- mov r8, r2\n\
-._1788:\n\
- ldr r0, ._1794 + 8\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- beq ._1789 @cond_branch\n\
- mov r4, #0x32\n\
- mov r8, r4\n\
-._1789:\n\
- ldr r0, ._1794 + 12\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- beq ._1790 @cond_branch\n\
- mov r0, #0x46\n\
-._1784:\n\
- mov r8, r0\n\
-._1790:\n\
- ldr r5, ._1794 + 16\n\
- ldr r7, ._1794 + 20\n\
- ldrb r0, [r7]\n\
- mov r6, #0x58\n\
- mul r0, r0, r6\n\
- add r0, r0, r5\n\
- add r0, r0, #0x2a\n\
- ldrb r0, [r0]\n\
- cmp r0, r8\n\
- bls ._1791 @cond_branch\n\
- bl Random\n\
- mov r1, #0xff\n\
- and r1, r1, r0\n\
- ldrb r0, [r7]\n\
- add r2, r0, #0\n\
- mul r2, r2, r6\n\
- add r0, r2, r5\n\
- add r0, r0, #0x2a\n\
- ldrb r0, [r0]\n\
- add r0, r0, r8\n\
- mul r0, r0, r1\n\
- asr r4, r0, #0x8\n\
- cmp r4, r8\n\
- bge ._1792 @cond_branch\n\
-._1791:\n\
- mov r0, #0x0\n\
- b ._1823\n\
-._1795:\n\
- .align 2, 0\n\
-._1794:\n\
- .word 0x80e\n\
- .word 0x808\n\
- .word 0x80a\n\
- .word 0x80c\n\
- .word gBattleMons\n\
- .word gBankAttacker\n\
-._1792:\n\
- ldr r3, ._1801\n\
- ldrh r0, [r3]\n\
- cmp r0, #0x63\n\
- bne ._1796 @cond_branch\n\
- add r0, r5, #0\n\
- add r0, r0, #0x50\n\
- add r0, r2, r0\n\
- ldr r1, [r0]\n\
- ldr r2, ._1801 + 4\n\
- and r1, r1, r2\n\
- str r1, [r0]\n\
-._1796:\n\
- ldrb r0, [r7]\n\
- mul r0, r0, r6\n\
- add r1, r5, #0\n\
- add r1, r1, #0x4c\n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov r1, #0x7\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._1799 @cond_branch\n\
- ldrh r0, [r3]\n\
- cmp r0, #0xad\n\
- beq ._1798 @cond_branch\n\
- cmp r0, #0xd6\n\
- bne ._1799 @cond_branch\n\
-._1798:\n\
- ldr r1, ._1801 + 8\n\
- ldr r0, ._1801 + 12\n\
- b ._1819\n\
-._1802:\n\
- .align 2, 0\n\
-._1801:\n\
- .word gCurrentMove\n\
- .word 0xff7fffff\n\
- .word gBattlescriptCurrInstr\n\
- .word gUnknown_081D995F\n\
-._1799:\n\
- bl Random\n\
- mov r5, #0xff\n\
- add r1, r5, #0\n\
- and r1, r1, r0\n\
- ldr r6, ._1808\n\
- ldr r2, ._1808 + 4\n\
- mov r9, r2\n\
- ldrb r3, [r2]\n\
- mov r7, #0x58\n\
- add r0, r3, #0\n\
- mul r0, r0, r7\n\
- add r0, r0, r6\n\
- add r0, r0, #0x2a\n\
- ldrb r2, [r0]\n\
- mov r4, r8\n\
- add r0, r2, r4\n\
- mul r0, r0, r1\n\
- asr r4, r0, #0x8\n\
- cmp r4, r8\n\
- bge ._1803 @cond_branch\n\
- ldr r7, ._1808 + 8\n\
- ldr r5, ._1808 + 12\n\
- ldrb r0, [r5]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r7\n\
- ldrb r1, [r0]\n\
- add r0, r3, #0\n\
- mov r2, #0xff\n\
- bl CheckMoveLimitations\n\
- lsl r0, r0, #0x18\n\
- lsr r4, r0, #0x18\n\
- cmp r4, #0xf\n\
- bne ._1804 @cond_branch\n\
- b ._1805\n\
-._1804:\n\
- add r6, r5, #0\n\
- ldr r0, ._1808 + 16\n\
- mov r9, r0\n\
- mov r1, #0x3\n\
- mov r8, r1\n\
-._1806:\n\
- bl Random\n\
- mov r2, r8\n\
- and r0, r0, r2\n\
- mov r1, r9\n\
- strb r0, [r1]\n\
- strb r0, [r6]\n\
- ldrb r0, [r6]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r7\n\
- ldr r5, [r0]\n\
- and r5, r5, r4\n\
- cmp r5, #0\n\
- bne ._1806 @cond_branch\n\
- ldr r4, ._1808 + 20\n\
- ldr r3, ._1808\n\
- ldr r0, ._1808 + 12\n\
- ldrb r0, [r0]\n\
- lsl r0, r0, #0x1\n\
- ldr r1, ._1808 + 4\n\
- ldrb r2, [r1]\n\
- mov r1, #0x58\n\
- mul r1, r1, r2\n\
- add r0, r0, r1\n\
- add r3, r3, #0xc\n\
- add r0, r0, r3\n\
- ldrh r0, [r0]\n\
- strh r0, [r4]\n\
- ldr r0, ._1808 + 24\n\
- strb r5, [r0, #0x3]\n\
- ldr r0, ._1808 + 28\n\
- mov r1, #0x0\n\
- strh r5, [r0]\n\
- ldr r0, ._1808 + 32\n\
- ldr r2, ._1808 + 36\n\
- add r0, r0, r2\n\
- strb r1, [r0]\n\
- ldr r1, ._1808 + 40\n\
- ldr r0, ._1808 + 44\n\
- str r0, [r1]\n\
- ldrh r0, [r4]\n\
- mov r1, #0x0\n\
- bl GetMoveTarget\n\
- ldr r1, ._1808 + 48\n\
- strb r0, [r1]\n\
- ldr r2, ._1808 + 52\n\
- ldr r0, [r2]\n\
- mov r1, #0x80\n\
- lsl r1, r1, #0xe\n\
- b ._1807\n\
-._1809:\n\
- .align 2, 0\n\
-._1808:\n\
- .word gBattleMons\n\
- .word gBankAttacker\n\
- .word gBitTable\n\
- .word gCurrMovePos\n\
- .word gUnknown_02024BE5\n\
- .word gRandomMove\n\
- .word gBattleCommunication\n\
- .word gDynamicBasePower\n\
- .word +0x2000000\n\
- .word 0x1601c\n\
- .word gBattlescriptCurrInstr\n\
- .word BattleScript_IgnoresAndUsesRandomMove\n\
- .word gBankTarget\n\
- .word gHitMarker\n\
-._1803:\n\
- mov r4, r8\n\
- sub r0, r2, r4\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- mov r8, r0\n\
- bl Random\n\
- add r4, r5, #0\n\
- and r4, r4, r0\n\
- cmp r4, r8\n\
- bge ._1818 @cond_branch\n\
- mov r1, r9\n\
- ldrb r0, [r1]\n\
- add r1, r0, #0\n\
- mul r1, r1, r7\n\
- add r0, r6, #0\n\
- add r0, r0, #0x4c\n\
- add r0, r1, r0\n\
- ldr r0, [r0]\n\
- and r0, r0, r5\n\
- cmp r0, #0\n\
- bne ._1818 @cond_branch\n\
- add r0, r1, r6\n\
- add r0, r0, #0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x48\n\
- beq ._1818 @cond_branch\n\
- cmp r0, #0xf\n\
- beq ._1818 @cond_branch\n\
- mov r2, #0x0\n\
- ldr r0, ._1820\n\
- ldrb r3, [r0]\n\
- add r7, r0, #0\n\
- cmp r2, r3\n\
- bge ._1816 @cond_branch\n\
- ldr r0, [r6, #0x50]\n\
- mov r1, #0x70\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- bne ._1816 @cond_branch\n\
- add r1, r6, #0\n\
- add r1, r1, #0x50\n\
- mov r5, #0x70\n\
-._1817:\n\
- add r1, r1, #0x58\n\
- add r2, r2, #0x1\n\
- cmp r2, r3\n\
- bge ._1816 @cond_branch\n\
- ldr r0, [r1]\n\
- and r0, r0, r5\n\
- cmp r0, #0\n\
- beq ._1817 @cond_branch\n\
-._1816:\n\
- ldrb r7, [r7]\n\
- cmp r2, r7\n\
- bne ._1818 @cond_branch\n\
- ldr r1, ._1820 + 4\n\
- ldr r0, ._1820 + 8\n\
- b ._1819\n\
-._1821:\n\
- .align 2, 0\n\
-._1820:\n\
- .word gNoOfAllBanks\n\
- .word gBattlescriptCurrInstr\n\
- .word BattleScript_IgnoresAndFallsAsleep\n\
-._1818:\n\
- mov r2, r8\n\
- sub r4, r4, r2\n\
- cmp r4, r8\n\
- blt ._1822 @cond_branch\n\
-._1805:\n\
- bl Random\n\
- ldr r2, ._1824\n\
- mov r1, #0x3\n\
- and r1, r1, r0\n\
- strb r1, [r2, #0x5]\n\
- ldr r1, ._1824 + 4\n\
- ldr r0, ._1824 + 8\n\
-._1819:\n\
- str r0, [r1]\n\
- mov r0, #0x1\n\
- b ._1823\n\
-._1825:\n\
- .align 2, 0\n\
-._1824:\n\
- .word gBattleCommunication\n\
- .word gBattlescriptCurrInstr\n\
- .word BattleScript_MoveUsedLoafingAround\n\
-._1822:\n\
- ldr r4, ._1826\n\
- ldrb r1, [r4]\n\
- mov r0, #0x58\n\
- mul r1, r1, r0\n\
- ldr r0, ._1826 + 4\n\
- add r1, r1, r0\n\
- mov r0, #0x28\n\
- str r0, [sp]\n\
- mov r0, #0x0\n\
- str r0, [sp, #0x4]\n\
- ldrb r0, [r4]\n\
- str r0, [sp, #0x8]\n\
- ldrb r0, [r4]\n\
- str r0, [sp, #0xc]\n\
- add r0, r1, #0\n\
- mov r2, #0x1\n\
- mov r3, #0x0\n\
- bl CalculateBaseDamage\n\
- ldr r1, ._1826 + 8\n\
- str r0, [r1]\n\
- ldr r1, ._1826 + 12\n\
- ldrb r0, [r4]\n\
- strb r0, [r1]\n\
- ldr r1, ._1826 + 16\n\
- ldr r0, ._1826 + 20\n\
- str r0, [r1]\n\
- ldr r2, ._1826 + 24\n\
- ldr r0, [r2]\n\
- mov r1, #0x80\n\
- lsl r1, r1, #0xc\n\
-._1807:\n\
- orr r0, r0, r1\n\
- str r0, [r2]\n\
- mov r0, #0x2\n\
-._1823:\n\
- add sp, sp, #0x10\n\
- pop {r3, r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4, r5, r6, r7}\n\
- pop {r1}\n\
- bx r1\n\
-._1827:\n\
- .align 2, 0\n\
-._1826:\n\
- .word gBankAttacker\n\
- .word gBattleMons\n\
- .word gBattleMoveDamage\n\
- .word gBankTarget\n\
- .word gBattlescriptCurrInstr\n\
- .word gUnknown_081D99A0\n\
- .word gHitMarker");
-}
-#else
u8 IsMonDisobedient(void)
{
u8 obedienceLevel;
@@ -3858,17 +3447,25 @@ u8 IsMonDisobedient(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK
|| GetBankSide(gBankAttacker) == 1
- || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)
- || FlagGet(FLAG_BADGE08_GET))
- return 0;
+ || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName))
+ return 0;
- obedienceLevel = 10;
- if (FlagGet(FLAG_BADGE02_GET))
- obedienceLevel = 30;
- if (FlagGet(FLAG_BADGE04_GET))
- obedienceLevel = 50;
- if (FlagGet(FLAG_BADGE06_GET))
- obedienceLevel = 70;
+ if (DEBUG && (gUnknown_02023A14_50 & 0x40))
+ {
+ obedienceLevel = 10;
+ }
+ else
+ {
+ if (FlagGet(FLAG_BADGE08_GET))
+ return 0;
+ obedienceLevel = 10;
+ if (FlagGet(FLAG_BADGE02_GET))
+ obedienceLevel = 30;
+ if (FlagGet(FLAG_BADGE04_GET))
+ obedienceLevel = 50;
+ if (FlagGet(FLAG_BADGE06_GET))
+ obedienceLevel = 70;
+ }
if (gBattleMons[gBankAttacker].level <= obedienceLevel)
return 0;
@@ -3950,4 +3547,3 @@ u8 IsMonDisobedient(void)
}
}
}
-#endif