summaryrefslogtreecommitdiff
path: root/src/battle_ai.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_ai.c')
-rw-r--r--src/battle_ai.c1709
1 files changed, 751 insertions, 958 deletions
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 19ccfef99..e60bf478f 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -12,28 +12,28 @@
enum
{
- TARGET,
- USER
+ TARGET,
+ USER
};
+extern void move_effectiveness_something(u16, u8, u8);
+
extern u16 gBattleTypeFlags;
extern u8 gUnknown_02024A60;
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u16 gUnknown_02024BE6;
+extern u32 gUnknown_02024BEC;
+extern u8 gUnknown_02024C07; // something player?
+extern u8 gUnknown_02024C08; // something opponent?
extern u8 gUnknown_02024C0C;
-extern u16 gUnknown_02024DEC;
extern u8 gUnknown_02024C68;
-extern u32 gUnknown_02024BEC;
-extern u8 gUnknown_0201601C;
-extern u8 gUnknown_0201601F;
-extern u16 gUnknown_02024BE6;
-extern u8 gCritMultiplier;
+extern u16 gUnknown_02024DEC;
extern u16 gUnknown_02024C34[];
extern u32 gUnknown_02024ACC[];
extern u32 gUnknown_02024C98[];
extern u16 gUnknown_02024C7A[];
extern struct BattlePokemon gUnknown_02024A8C[];
extern u8 gUnknown_030042E0[];
+extern u8 gCritMultiplier;
extern u16 gTrainerBattleOpponent;
extern u32 gBitTable[];
extern u8 *BattleAIs[];
@@ -43,10 +43,10 @@ extern struct BattleMove gBattleMoves[];
extern struct BaseStats gBaseStats[];
extern void (*gBattleAICmdTable[])(void);
-/*
-gAIScriptPtr is a pointer to the next battle AI cmd command to read.
-when a command finishes processing, gAIScriptPtr is incremented by
-the number of bytes that the current command had reserved for arguments
+/*
+gAIScriptPtr is a pointer to the next battle AI cmd command to read.
+when a command finishes processing, gAIScriptPtr is incremented by
+the number of bytes that the current command had reserved for arguments
in order to read the next command correctly. refer to battle_ai_scripts.s for the
AI scripts.
*/
@@ -61,43 +61,12 @@ struct UnknownStruct1
/* 0x2C */ u8 unk8;
};
-struct AI_ThinkingStruct /* 0x2016800 */
-{
-/* 0x00 */ u8 unk0;
-/* 0x01 */ u8 moveConsidered;
-/* 0x02 */ u16 unk2;
-/* 0x04 */ s8 score[4]; // score?
-/* 0x08 */ u32 unk8;
-/* 0x0C */ u32 aiFlags;
-/* 0x10 */ u8 unk10;
-/* 0x11 */ u8 aiLogicId;
-/* 0x12 */ u8 filler12[6];
-/* 0x18 */ u8 unk18[4];
-};
-
struct UnknownStruct3
{
u8 filler0[0x20];
u8 unk20;
};
-struct SmallBattleStruct1
-{
- u8 unk1;
- u8 unk2;
- u8 unk3;
- u8 unk4;
-};
-
-// move to battle.h before PR.
-struct BattleStruct /* 0x2000000 */
-{
- u8 filler0[0x1601C];
- struct SmallBattleStruct1 unk;
-};
-
-extern struct BattleStruct unk_2000000;
-extern struct AI_ThinkingStruct gAIThinkingSpace;
extern struct UnknownStruct1 unk_2016A00;
extern struct UnknownStruct3 unk_2016C00;
@@ -110,10 +79,10 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
{
s32 i;
u8 *data = (u8 *)&unk_2016A00;
-
+
for (i = 0; (u32)i < 48; i++)
data[i] = 0;
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 0x400
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
@@ -147,7 +116,7 @@ void BattleAI_SetupAIData(void)
for(i = 0; i < 4; i++)
{
u16 rand;
-
+
if(gBitTable[i] & r7)
gAIThinkingSpace.score[i] = 0;
rand = Random();
@@ -156,11 +125,11 @@ void BattleAI_SetupAIData(void)
unk_2016C00.unk20 = 0;
gUnknown_02024C07 = gUnknown_02024A60;
-
+
if(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
gUnknown_02024C08 = Random() & 2;
-
+
if(gUnknown_02024C0C & gBitTable[gUnknown_02024C08])
gUnknown_02024C08 ^= 2;
}
@@ -184,7 +153,7 @@ u8 BattleAI_GetAIActionToUse(void)
u8 arr2[4];
u8 r5;
s32 i;
-
+
sub_810745C();
while(gAIThinkingSpace.aiFlags != 0)
{
@@ -263,68 +232,25 @@ void BattleAI_DoAIProcessing(void)
}
}
-#ifdef NONMATCHING
void sub_810745C(void)
{
s32 i;
-
+
for(i = 0; i < 8; i++)
{
- if(unk_2016A00.unk0[gUnknown_02024C08 / 2][i] == 0)
+ // this is the same as dividing it by 2, but for some reason, >> 1 is needed to match the asm.
+ if(unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] == 0)
{
- //gUnknown_02024C34[gUnknown_02024C08] += 0;
- unk_2016A00.unk0[gUnknown_02024C08 / 2][i] = gUnknown_02024C34[gUnknown_02024C08];
+ unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] = gUnknown_02024C34[gUnknown_02024C08];
return;
}
}
}
-#else
-__attribute__((naked))
-void sub_810745C(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- movs r2, 0\n\
- ldr r3, _08107488 @ =gUnknown_02024C08\n\
- ldr r5, _0810748C @ =0x02016a00\n\
- ldr r6, _08107490 @ =gUnknown_02024C34\n\
- adds r4, r3, 0\n\
-_08107468:\n\
- lsls r0, r2, 1\n\
- ldrb r1, [r4]\n\
- lsrs r1, 1\n\
- lsls r1, 4\n\
- adds r0, r1\n\
- adds r1, r0, r5\n\
- ldrh r0, [r1]\n\
- cmp r0, 0\n\
- bne _08107494\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- b _0810749A\n\
- .align 2, 0\n\
-_08107488: .4byte gUnknown_02024C08\n\
-_0810748C: .4byte 0x02016a00\n\
-_08107490: .4byte gUnknown_02024C34\n\
-_08107494:\n\
- adds r2, 0x1\n\
- cmp r2, 0x7\n\
- ble _08107468\n\
-_0810749A:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided");
-}
-#endif
void unref_sub_81074A0(u8 a)
{
s32 i;
-
+
for(i = 0; i < 8; i++)
unk_2016A00.unk0[a / 2][i] = 0;
}
@@ -343,358 +269,358 @@ void sub_81074F8(u8 a, u8 b)
void BattleAICmd_if_random(void)
{
- u16 random = Random();
-
- if (!(random % 256 >= gAIScriptPtr[1])) // roll a random value. is it less than the parameter of the if_random call? (96 on if_random 80 will return true)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ u16 random = Random();
+
+ if (!(random % 256 >= gAIScriptPtr[1])) // roll a random value. is it less than the parameter of the if_random call? (96 on if_random 80 will return true)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_not_random(void)
{
- u16 random = Random();
-
- if (!(random % 256 <= gAIScriptPtr[1])) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ u16 random = Random();
+
+ if (!(random % 256 <= gAIScriptPtr[1])) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_random_1(void) // if RNG Value equal to
{
- u16 random = Random();
-
- if (random % 256 == gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ u16 random = Random();
+
+ if (random % 256 == gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_not_random_1(void) // if RNG value not equal to
{
- u16 random = Random();
-
- if (random % 256 != gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ u16 random = Random();
+
+ if (random % 256 != gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_score(void)
{
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
-
- if(gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] < 0) // if the score is negative, flatten it to 0.
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] = 0;
+ gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
- gAIScriptPtr += 2; // AI return.
+ if(gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] < 0) // if the score is negative, flatten it to 0.
+ gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] = 0;
+
+ gAIScriptPtr += 2; // AI return.
}
void BattleAICmd_if_hp_less_than(void)
{
- u16 var;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) < gAIScriptPtr[2])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
- else
- gAIScriptPtr += 7;
+ u16 var;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) < gAIScriptPtr[2])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
}
void BattleAICmd_if_hp_more_than(void)
{
- u16 var;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) > gAIScriptPtr[2])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
- else
- gAIScriptPtr += 7;
+ u16 var;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) > gAIScriptPtr[2])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
}
void BattleAICmd_if_hp_equal(void)
{
- u16 var;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) == gAIScriptPtr[2])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
- else
- gAIScriptPtr += 7;
+ u16 var;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) == gAIScriptPtr[2])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
}
void BattleAICmd_if_hp_not_equal(void)
{
- u16 var;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) != gAIScriptPtr[2])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
- else
- gAIScriptPtr += 7;
+ u16 var;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) != gAIScriptPtr[2])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
}
void BattleAICmd_if_status(void)
{
- u16 var;
- u32 temp;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = AIScriptRead32(gAIScriptPtr + 2);
-
- if (gBattleMons[var].status1 & temp)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u16 var;
+ u32 temp;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = AIScriptRead32(gAIScriptPtr + 2);
+
+ if (gBattleMons[var].status1 & temp)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_not_status(void)
{
- u16 var;
- u32 temp;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = AIScriptRead32(gAIScriptPtr + 2);
-
- if (!(gBattleMons[var].status1 & temp))
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u16 var;
+ u32 temp;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = AIScriptRead32(gAIScriptPtr + 2);
+
+ if (!(gBattleMons[var].status1 & temp))
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_status2(void)
{
- u8 var;
- u32 temp;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = AIScriptRead32(gAIScriptPtr + 2);
-
- if (gBattleMons[var].status2 & temp)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u8 var;
+ u32 temp;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = AIScriptRead32(gAIScriptPtr + 2);
+
+ if (gBattleMons[var].status2 & temp)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_not_status2(void)
{
- u8 var;
- u32 temp;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = AIScriptRead32(gAIScriptPtr + 2);
-
- if (!(gBattleMons[var].status2 & temp))
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u8 var;
+ u32 temp;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = AIScriptRead32(gAIScriptPtr + 2);
+
+ if (!(gBattleMons[var].status2 & temp))
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_status3(void)
{
- u8 var;
- u32 temp;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = AIScriptRead32(gAIScriptPtr + 2);
-
- if ( gUnknown_02024C98[var] & temp )
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u8 var;
+ u32 temp;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = AIScriptRead32(gAIScriptPtr + 2);
+
+ if ( gUnknown_02024C98[var] & temp )
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_not_status3(void)
{
- u8 var;
- u32 temp;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = AIScriptRead32(gAIScriptPtr + 2);
-
- if (!(gUnknown_02024C98[var] & temp))
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u8 var;
+ u32 temp;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = AIScriptRead32(gAIScriptPtr + 2);
+
+ if (!(gUnknown_02024C98[var] & temp))
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_status4(void)
{
- u8 var;
- u32 temp;
- u32 temp2;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = battle_get_per_side_status(var) & 1;
- temp2 = AIScriptRead32(gAIScriptPtr + 2);
-
- if ( gUnknown_02024C7A[temp] & temp2 )
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u8 var;
+ u32 temp;
+ u32 temp2;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = battle_get_per_side_status(var) & 1;
+ temp2 = AIScriptRead32(gAIScriptPtr + 2);
+
+ if ( gUnknown_02024C7A[temp] & temp2 )
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_not_status4(void)
{
- u8 var;
- u32 temp;
- u32 temp2;
-
- if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
- else
- var = gUnknown_02024C08;
-
- temp = battle_get_per_side_status(var) & 1;
- temp2 = AIScriptRead32(gAIScriptPtr + 2);
-
- if (!(gUnknown_02024C7A[temp] & temp2))
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- else
- gAIScriptPtr += 10;
+ u8 var;
+ u32 temp;
+ u32 temp2;
+
+ if (gAIScriptPtr[1] == USER)
+ var = gUnknown_02024C07;
+ else
+ var = gUnknown_02024C08;
+
+ temp = battle_get_per_side_status(var) & 1;
+ temp2 = AIScriptRead32(gAIScriptPtr + 2);
+
+ if (!(gUnknown_02024C7A[temp] & temp2))
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ else
+ gAIScriptPtr += 10;
}
void BattleAICmd_if_less_than(void)
{
- if (gAIThinkingSpace.unk8 < gAIScriptPtr[1])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if (gAIThinkingSpace.unk8 < gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_more_than(void)
{
- if (gAIThinkingSpace.unk8 > gAIScriptPtr[1])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if (gAIThinkingSpace.unk8 > gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_equal(void)
{
- if (gAIThinkingSpace.unk8 == gAIScriptPtr[1])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if (gAIThinkingSpace.unk8 == gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_not_equal(void)
{
- if (gAIThinkingSpace.unk8 != gAIScriptPtr[1])
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if (gAIThinkingSpace.unk8 != gAIScriptPtr[1])
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_less_than_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 < *temp)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
- else
- gAIScriptPtr += 9;
+ if (gAIThinkingSpace.unk8 < *temp)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ else
+ gAIScriptPtr += 9;
}
void BattleAICmd_if_more_than_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 > *temp)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
- else
- gAIScriptPtr += 9;
+ if (gAIThinkingSpace.unk8 > *temp)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ else
+ gAIScriptPtr += 9;
}
void BattleAICmd_if_equal_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 == *temp)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
- else
- gAIScriptPtr += 9;
+ if (gAIThinkingSpace.unk8 == *temp)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ else
+ gAIScriptPtr += 9;
}
void BattleAICmd_if_not_equal_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk8 != *temp)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
- else
- gAIScriptPtr += 9;
+ if (gAIThinkingSpace.unk8 != *temp)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
+ else
+ gAIScriptPtr += 9;
}
void BattleAICmd_if_move(void)
{
- u16 move = AIScriptRead16(gAIScriptPtr + 1);
+ u16 move = AIScriptRead16(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk2 == move)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
- else
- gAIScriptPtr += 7;
+ if (gAIThinkingSpace.unk2 == move)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
}
void BattleAICmd_if_not_move(void)
{
- u16 move = AIScriptRead16(gAIScriptPtr + 1);
+ u16 move = AIScriptRead16(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk2 != move)
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
- else
- gAIScriptPtr += 7;
+ if (gAIThinkingSpace.unk2 != move)
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
}
void BattleAICmd_if_in_bytes(void)
{
u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
-
+
while(*ptr != 0xFF)
{
if(gAIThinkingSpace.unk8 == *ptr)
@@ -710,7 +636,7 @@ void BattleAICmd_if_in_bytes(void)
void BattleAICmd_if_not_in_bytes(void)
{
u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
-
+
while(*ptr != 0xFF)
{
if(gAIThinkingSpace.unk8 == *ptr)
@@ -726,7 +652,7 @@ void BattleAICmd_if_not_in_bytes(void)
void BattleAICmd_if_in_words(void)
{
u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
-
+
while(*ptr != 0xFFFF)
{
if(gAIThinkingSpace.unk8 == *ptr)
@@ -742,7 +668,7 @@ void BattleAICmd_if_in_words(void)
void BattleAICmd_if_not_in_words(void)
{
u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
-
+
while(*ptr != 0xFFFF)
{
if(gAIThinkingSpace.unk8 == *ptr)
@@ -758,7 +684,7 @@ void BattleAICmd_if_not_in_words(void)
void BattleAICmd_if_user_can_damage(void)
{
s32 i;
-
+
for(i = 0; i < 4; i++)
{
if (gBattleMons[gUnknown_02024C07].moves[i] != 0
@@ -774,7 +700,7 @@ void BattleAICmd_if_user_can_damage(void)
void BattleAICmd_if_user_cant_damage(void)
{
s32 i;
-
+
for(i = 0; i < 4; i++)
{
if (gBattleMons[gUnknown_02024C07].moves[i] != 0
@@ -789,204 +715,204 @@ void BattleAICmd_if_user_cant_damage(void)
void BattleAICmd_unk_21(void)
{
- gAIThinkingSpace.unk8 = gUnknown_030042E0[19];
- gAIScriptPtr += 1;
+ gAIThinkingSpace.unk8 = gUnknown_030042E0[19];
+ gAIScriptPtr += 1;
}
void BattleAICmd_get_type(void)
{
- u8 typeVar = gAIScriptPtr[1];
-
- switch(typeVar)
- {
- case 1:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C07].type1;
- break;
- case 0:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C08].type1;
- break;
- case 3:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C07].type2;
- break;
- case 2:
- gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C08].type2;
- break;
- case 4:
- gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].type;
- break;
- }
- gAIScriptPtr += 2;
+ u8 typeVar = gAIScriptPtr[1];
+
+ switch(typeVar)
+ {
+ case 1:
+ gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C07].type1;
+ break;
+ case 0:
+ gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C08].type1;
+ break;
+ case 3:
+ gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C07].type2;
+ break;
+ case 2:
+ gAIThinkingSpace.unk8 = gBattleMons[gUnknown_02024C08].type2;
+ break;
+ case 4:
+ gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].type;
+ break;
+ }
+ gAIScriptPtr += 2;
}
void BattleAICmd_unk_23(void)
{
- gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].power;
- gAIScriptPtr += 1;
+ gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].power;
+ gAIScriptPtr += 1;
}
__attribute__((naked))
void BattleAICmd_unk_24(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- movs r3, 0\n\
- ldr r0, _08108328 @ =gUnknown_083F62BC\n\
- ldrh r1, [r0]\n\
- ldr r4, _0810832C @ =0x0000ffff\n\
- ldr r6, _08108330 @ =gBattleMoves\n\
- ldr r5, _08108334 @ =0x02016800\n\
- cmp r1, r4\n\
- beq _0810822E\n\
- ldrh r1, [r5, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r2, [r0]\n\
- ldr r1, _08108328 @ =gUnknown_083F62BC\n\
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ movs r3, 0\n\
+ ldr r0, _08108328 @ =gUnknown_083F62BC\n\
+ ldrh r1, [r0]\n\
+ ldr r4, _0810832C @ =0x0000ffff\n\
+ ldr r6, _08108330 @ =gBattleMoves\n\
+ ldr r5, _08108334 @ =0x02016800\n\
+ cmp r1, r4\n\
+ beq _0810822E\n\
+ ldrh r1, [r5, 0x2]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r2, [r0]\n\
+ ldr r1, _08108328 @ =gUnknown_083F62BC\n\
_0810821E:\n\
- ldrh r0, [r1]\n\
- cmp r2, r0\n\
- beq _0810822E\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r4\n\
- bne _0810821E\n\
+ ldrh r0, [r1]\n\
+ cmp r2, r0\n\
+ beq _0810822E\n\
+ adds r1, 0x2\n\
+ adds r3, 0x1\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r4\n\
+ bne _0810821E\n\
_0810822E:\n\
- ldrh r0, [r5, 0x2]\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r6\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0x1\n\
- bhi _08108240\n\
- b _081083B2\n\
+ ldrh r0, [r5, 0x2]\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0x1\n\
+ bhi _08108240\n\
+ b _081083B2\n\
_08108240:\n\
- lsls r0, r3, 1\n\
- ldr r1, _08108328 @ =gUnknown_083F62BC\n\
- adds r0, r1\n\
- ldrh r3, [r0]\n\
- ldr r0, _0810832C @ =0x0000ffff\n\
- cmp r3, r0\n\
- beq _08108250\n\
- b _081083B2\n\
+ lsls r0, r3, 1\n\
+ ldr r1, _08108328 @ =gUnknown_083F62BC\n\
+ adds r0, r1\n\
+ ldrh r3, [r0]\n\
+ ldr r0, _0810832C @ =0x0000ffff\n\
+ cmp r3, r0\n\
+ beq _08108250\n\
+ b _081083B2\n\
_08108250:\n\
- ldr r0, _08108338 @ =gUnknown_02024DEC\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- ldr r2, _0810833C @ =0xfffff81c\n\
- adds r0, r5, r2\n\
- strb r1, [r0]\n\
- adds r2, 0x3\n\
- adds r0, r5, r2\n\
- movs r2, 0x1\n\
- strb r2, [r0]\n\
- ldr r0, _08108340 @ =gUnknown_02024C68\n\
- strb r1, [r0]\n\
- ldr r0, _08108344 @ =gCritMultiplier\n\
- strb r2, [r0]\n\
- movs r6, 0\n\
- mov r9, r3\n\
- ldr r0, _08108328 @ =gUnknown_083F62BC\n\
- ldrh r0, [r0]\n\
- str r0, [sp, 0x10]\n\
+ ldr r0, _08108338 @ =gUnknown_02024DEC\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ ldr r2, _0810833C @ =0xfffff81c\n\
+ adds r0, r5, r2\n\
+ strb r1, [r0]\n\
+ adds r2, 0x3\n\
+ adds r0, r5, r2\n\
+ movs r2, 0x1\n\
+ strb r2, [r0]\n\
+ ldr r0, _08108340 @ =gUnknown_02024C68\n\
+ strb r1, [r0]\n\
+ ldr r0, _08108344 @ =gCritMultiplier\n\
+ strb r2, [r0]\n\
+ movs r6, 0\n\
+ mov r9, r3\n\
+ ldr r0, _08108328 @ =gUnknown_083F62BC\n\
+ ldrh r0, [r0]\n\
+ str r0, [sp, 0x10]\n\
_08108276:\n\
- movs r3, 0\n\
- ldr r5, _08108348 @ =gBattleMons\n\
- lsls r4, r6, 1\n\
- ldr r7, _0810834C @ =gUnknown_02024C07\n\
- lsls r1, r6, 2\n\
- mov r8, r1\n\
- adds r2, r6, 0x1\n\
- mov r10, r2\n\
- ldr r0, [sp, 0x10]\n\
- cmp r0, r9\n\
- beq _081082BA\n\
- ldr r2, _08108330 @ =gBattleMoves\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r2, [r0]\n\
- ldr r1, _08108328 @ =gUnknown_083F62BC\n\
+ movs r3, 0\n\
+ ldr r5, _08108348 @ =gBattleMons\n\
+ lsls r4, r6, 1\n\
+ ldr r7, _0810834C @ =gUnknown_02024C07\n\
+ lsls r1, r6, 2\n\
+ mov r8, r1\n\
+ adds r2, r6, 0x1\n\
+ mov r10, r2\n\
+ ldr r0, [sp, 0x10]\n\
+ cmp r0, r9\n\
+ beq _081082BA\n\
+ ldr r2, _08108330 @ =gBattleMoves\n\
+ ldrb r1, [r7]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r4, r0\n\
+ adds r1, r5, 0\n\
+ adds r1, 0xC\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r2, [r0]\n\
+ ldr r1, _08108328 @ =gUnknown_083F62BC\n\
_081082AA:\n\
- ldrh r0, [r1]\n\
- cmp r2, r0\n\
- beq _081082BA\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r9\n\
- bne _081082AA\n\
+ ldrh r0, [r1]\n\
+ cmp r2, r0\n\
+ beq _081082BA\n\
+ adds r1, 0x2\n\
+ adds r3, 0x1\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r9\n\
+ bne _081082AA\n\
_081082BA:\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1]\n\
- cmp r0, 0\n\
- beq _0810835C\n\
- lsls r0, r3, 1\n\
- ldr r2, _08108328 @ =gUnknown_083F62BC\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- cmp r0, r9\n\
- bne _0810835C\n\
- ldr r0, _08108330 @ =gBattleMoves\n\
- ldrh r2, [r1]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0x1\n\
- bls _0810835C\n\
- ldr r5, _08108350 @ =gUnknown_02024BE6\n\
- strh r2, [r5]\n\
- ldrb r0, [r7]\n\
- ldr r4, _08108354 @ =gUnknown_02024C08\n\
- ldrb r1, [r4]\n\
- bl sub_801CAF8\n\
- ldrh r0, [r5]\n\
- ldrb r1, [r7]\n\
- ldrb r2, [r4]\n\
- bl move_effectiveness_something\n\
- mov r4, sp\n\
- add r4, r8\n\
- ldr r2, _08108358 @ =gUnknown_02024BEC\n\
- ldr r0, _08108334 @ =0x02016800\n\
- adds r0, 0x18\n\
- adds r0, r6, r0\n\
- ldrb r1, [r0]\n\
- ldr r0, [r2]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- str r0, [r4]\n\
- cmp r0, 0\n\
- bne _08108364\n\
- movs r0, 0x1\n\
- str r0, [r4]\n\
- b _08108364\n\
- .align 2, 0\n\
+ ldrb r1, [r7]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r4, r0\n\
+ adds r1, r5, 0\n\
+ adds r1, 0xC\n\
+ adds r1, r0, r1\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0\n\
+ beq _0810835C\n\
+ lsls r0, r3, 1\n\
+ ldr r2, _08108328 @ =gUnknown_083F62BC\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r9\n\
+ bne _0810835C\n\
+ ldr r0, _08108330 @ =gBattleMoves\n\
+ ldrh r2, [r1]\n\
+ lsls r1, r2, 1\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0x1\n\
+ bls _0810835C\n\
+ ldr r5, _08108350 @ =gUnknown_02024BE6\n\
+ strh r2, [r5]\n\
+ ldrb r0, [r7]\n\
+ ldr r4, _08108354 @ =gUnknown_02024C08\n\
+ ldrb r1, [r4]\n\
+ bl sub_801CAF8\n\
+ ldrh r0, [r5]\n\
+ ldrb r1, [r7]\n\
+ ldrb r2, [r4]\n\
+ bl move_effectiveness_something\n\
+ mov r4, sp\n\
+ add r4, r8\n\
+ ldr r2, _08108358 @ =gUnknown_02024BEC\n\
+ ldr r0, _08108334 @ =0x02016800\n\
+ adds r0, 0x18\n\
+ adds r0, r6, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [r2]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _08108364\n\
+ movs r0, 0x1\n\
+ str r0, [r4]\n\
+ b _08108364\n\
+ .align 2, 0\n\
_08108328: .4byte gUnknown_083F62BC\n\
_0810832C: .4byte 0x0000ffff\n\
_08108330: .4byte gBattleMoves\n\
@@ -1001,113 +927,113 @@ _08108350: .4byte gUnknown_02024BE6\n\
_08108354: .4byte gUnknown_02024C08\n\
_08108358: .4byte gUnknown_02024BEC\n\
_0810835C:\n\
- mov r1, sp\n\
- add r1, r8\n\
- movs r0, 0\n\
- str r0, [r1]\n\
+ mov r1, sp\n\
+ add r1, r8\n\
+ movs r0, 0\n\
+ str r0, [r1]\n\
_08108364:\n\
- mov r6, r10\n\
- cmp r6, 0x3\n\
- ble _08108276\n\
- movs r6, 0\n\
- ldr r1, _081083A4 @ =0x02016800\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r2, [sp]\n\
- ldr r0, [r0]\n\
- adds r5, r1, 0\n\
- ldr r4, _081083A8 @ =gAIScriptPtr\n\
- cmp r2, r0\n\
- bgt _0810839A\n\
- adds r3, r5, 0\n\
- mov r2, sp\n\
+ mov r6, r10\n\
+ cmp r6, 0x3\n\
+ ble _08108276\n\
+ movs r6, 0\n\
+ ldr r1, _081083A4 @ =0x02016800\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r2, [sp]\n\
+ ldr r0, [r0]\n\
+ adds r5, r1, 0\n\
+ ldr r4, _081083A8 @ =gAIScriptPtr\n\
+ cmp r2, r0\n\
+ bgt _0810839A\n\
+ adds r3, r5, 0\n\
+ mov r2, sp\n\
_08108384:\n\
- adds r2, 0x4\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _0810839A\n\
- ldrb r0, [r3, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [r2]\n\
- ldr r0, [r0]\n\
- cmp r1, r0\n\
- ble _08108384\n\
+ adds r2, 0x4\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3\n\
+ bgt _0810839A\n\
+ ldrb r0, [r3, 0x1]\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r1, [r2]\n\
+ ldr r0, [r0]\n\
+ cmp r1, r0\n\
+ ble _08108384\n\
_0810839A:\n\
- cmp r6, 0x4\n\
- bne _081083AC\n\
- movs r0, 0x2\n\
- str r0, [r5, 0x8]\n\
- b _081083B8\n\
- .align 2, 0\n\
+ cmp r6, 0x4\n\
+ bne _081083AC\n\
+ movs r0, 0x2\n\
+ str r0, [r5, 0x8]\n\
+ b _081083B8\n\
+ .align 2, 0\n\
_081083A4: .4byte 0x02016800\n\
_081083A8: .4byte gAIScriptPtr\n\
_081083AC:\n\
- movs r0, 0x1\n\
- str r0, [r5, 0x8]\n\
- b _081083B8\n\
+ movs r0, 0x1\n\
+ str r0, [r5, 0x8]\n\
+ b _081083B8\n\
_081083B2:\n\
- movs r0, 0\n\
- str r0, [r5, 0x8]\n\
- ldr r4, _081083D0 @ =gAIScriptPtr\n\
+ movs r0, 0\n\
+ str r0, [r5, 0x8]\n\
+ ldr r4, _081083D0 @ =gAIScriptPtr\n\
_081083B8:\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- str r0, [r4]\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ str r0, [r4]\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081083D0: .4byte gAIScriptPtr\n\
- .syntax divided\n");
+ .syntax divided\n");
}
void BattleAICmd_get_move(void)
{
- if (gAIScriptPtr[1] == USER)
- gAIThinkingSpace.unk8 = gUnknown_02024C34[gUnknown_02024C07];
- else
- gAIThinkingSpace.unk8 = gUnknown_02024C34[gUnknown_02024C08];
+ if (gAIScriptPtr[1] == USER)
+ gAIThinkingSpace.unk8 = gUnknown_02024C34[gUnknown_02024C07];
+ else
+ gAIThinkingSpace.unk8 = gUnknown_02024C34[gUnknown_02024C08];
- gAIScriptPtr += 2;
+ gAIScriptPtr += 2;
}
void BattleAICmd_if_type(void)
{
- if ( gAIScriptPtr[1] == gAIThinkingSpace.unk8 )
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if ( gAIScriptPtr[1] == gAIThinkingSpace.unk8 )
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_unk_27(void) // if_not_type
{
- if ( gAIScriptPtr[1] != gAIThinkingSpace.unk8 )
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if ( gAIScriptPtr[1] != gAIThinkingSpace.unk8 )
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_would_go_first(void)
{
- if ( b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) == gAIScriptPtr[1] )
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if ( b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) == gAIScriptPtr[1] )
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_if_would_not_go_first(void)
{
- if ( b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) != gAIScriptPtr[1] )
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
- else
- gAIScriptPtr += 6;
+ if ( b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) != gAIScriptPtr[1] )
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
}
void BattleAICmd_unk_2A(void)
@@ -1119,143 +1045,143 @@ void BattleAICmd_unk_2B(void)
__attribute__((naked))
void BattleAICmd_count_alive_pokemon(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, _08108550 @ =0x02016800\n\
- movs r0, 0\n\
- str r0, [r1, 0x8]\n\
- ldr r0, _08108554 @ =gAIScriptPtr\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0x1\n\
- bne _0810855C\n\
- ldr r0, _08108558 @ =gUnknown_02024C07\n\
- b _0810855E\n\
- .align 2, 0\n\
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r1, _08108550 @ =0x02016800\n\
+ movs r0, 0\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, _08108554 @ =gAIScriptPtr\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x1]\n\
+ cmp r0, 0x1\n\
+ bne _0810855C\n\
+ ldr r0, _08108558 @ =gUnknown_02024C07\n\
+ b _0810855E\n\
+ .align 2, 0\n\
_08108550: .4byte 0x02016800\n\
_08108554: .4byte gAIScriptPtr\n\
_08108558: .4byte gUnknown_02024C07\n\
_0810855C:\n\
- ldr r0, _081085A8 @ =gUnknown_02024C08\n\
+ ldr r0, _081085A8 @ =gUnknown_02024C08\n\
_0810855E:\n\
- ldrb r5, [r0]\n\
- adds r0, r5, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- ldr r1, _081085AC @ =gEnemyParty\n\
- mov r9, r1\n\
- cmp r0, 0\n\
- bne _08108574\n\
- ldr r0, _081085B0 @ =gPlayerParty\n\
- mov r9, r0\n\
+ ldrb r5, [r0]\n\
+ adds r0, r5, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ ldr r1, _081085AC @ =gEnemyParty\n\
+ mov r9, r1\n\
+ cmp r0, 0\n\
+ bne _08108574\n\
+ ldr r0, _081085B0 @ =gPlayerParty\n\
+ mov r9, r0\n\
_08108574:\n\
- ldr r0, _081085B4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _081085BC\n\
- ldr r4, _081085B8 @ =gUnknown_02024A6A\n\
- lsls r0, r5, 1\n\
- adds r0, r4\n\
- ldrb r0, [r0]\n\
- mov r8, r0\n\
- adds r0, r5, 0\n\
- bl battle_get_per_side_status\n\
- movs r1, 0x2\n\
- eors r0, r1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl battle_get_side_with_given_state\n\
- lsls r0, 24\n\
- lsrs r0, 23\n\
- adds r0, r4\n\
- ldrb r6, [r0]\n\
- b _081085C6\n\
- .align 2, 0\n\
+ ldr r0, _081085B4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _081085BC\n\
+ ldr r4, _081085B8 @ =gUnknown_02024A6A\n\
+ lsls r0, r5, 1\n\
+ adds r0, r4\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ adds r0, r5, 0\n\
+ bl battle_get_per_side_status\n\
+ movs r1, 0x2\n\
+ eors r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl battle_get_side_with_given_state\n\
+ lsls r0, 24\n\
+ lsrs r0, 23\n\
+ adds r0, r4\n\
+ ldrb r6, [r0]\n\
+ b _081085C6\n\
+ .align 2, 0\n\
_081085A8: .4byte gUnknown_02024C08\n\
_081085AC: .4byte gEnemyParty\n\
_081085B0: .4byte gPlayerParty\n\
_081085B4: .4byte gBattleTypeFlags\n\
_081085B8: .4byte gUnknown_02024A6A\n\
_081085BC:\n\
- ldr r1, _08108624 @ =gUnknown_02024A6A\n\
- lsls r0, r5, 1\n\
- adds r0, r1\n\
- ldrb r6, [r0]\n\
- mov r8, r6\n\
+ ldr r1, _08108624 @ =gUnknown_02024A6A\n\
+ lsls r0, r5, 1\n\
+ adds r0, r1\n\
+ ldrb r6, [r0]\n\
+ mov r8, r6\n\
_081085C6:\n\
- movs r5, 0\n\
- ldr r7, _08108628 @ =0x02016800\n\
+ movs r5, 0\n\
+ ldr r7, _08108628 @ =0x02016800\n\
_081085CA:\n\
- cmp r5, r8\n\
- beq _08108608\n\
- cmp r5, r6\n\
- beq _08108608\n\
- movs r0, 0x64\n\
- muls r0, r5\n\
- mov r1, r9\n\
- adds r4, r1, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _08108608\n\
- adds r0, r4, 0\n\
- movs r1, 0x41\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _08108608\n\
- adds r0, r4, 0\n\
- movs r1, 0x41\n\
- bl GetMonData\n\
- movs r1, 0xCE\n\
- lsls r1, 1\n\
- cmp r0, r1\n\
- beq _08108608\n\
- ldr r0, [r7, 0x8]\n\
- adds r0, 0x1\n\
- str r0, [r7, 0x8]\n\
+ cmp r5, r8\n\
+ beq _08108608\n\
+ cmp r5, r6\n\
+ beq _08108608\n\
+ movs r0, 0x64\n\
+ muls r0, r5\n\
+ mov r1, r9\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08108608\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08108608\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ movs r1, 0xCE\n\
+ lsls r1, 1\n\
+ cmp r0, r1\n\
+ beq _08108608\n\
+ ldr r0, [r7, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [r7, 0x8]\n\
_08108608:\n\
- adds r5, 0x1\n\
- cmp r5, 0x5\n\
- ble _081085CA\n\
- ldr r1, _0810862C @ =gAIScriptPtr\n\
- ldr r0, [r1]\n\
- adds r0, 0x2\n\
- str r0, [r1]\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _081085CA\n\
+ ldr r1, _0810862C @ =gAIScriptPtr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x2\n\
+ str r0, [r1]\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08108624: .4byte gUnknown_02024A6A\n\
_08108628: .4byte 0x02016800\n\
_0810862C: .4byte gAIScriptPtr\n\
- .syntax divided");
+ .syntax divided");
}
void BattleAICmd_unk_2D(void)
{
- gAIThinkingSpace.unk8 = gAIThinkingSpace.unk2;
- gAIScriptPtr += 1;
+ gAIThinkingSpace.unk8 = gAIThinkingSpace.unk2;
+ gAIScriptPtr += 1;
}
void BattleAICmd_unk_2E(void)
{
- gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].effect;
- gAIScriptPtr += 1;
+ gAIThinkingSpace.unk8 = gBattleMoves[gAIThinkingSpace.unk2].effect;
+ gAIScriptPtr += 1;
}
void BattleAICmd_get_ability(void)
{
u8 var;
-
+
if(gAIScriptPtr[1] == USER)
var = gUnknown_02024C07;
else
@@ -1321,270 +1247,137 @@ void BattleAICmd_get_ability(void)
}
}
-// this should probably be in battle.h after this file is fully decompiled.
-extern struct
-{
- u8 unknownStuff[0x16000];
- struct
- {
- u8 filler0[0x1C];
- u8 unk1C;
- u8 filler1D[2];
- u8 unk1F;
- u8 filler16020[0x7E0];
- } unk_2016000;
- struct AI_ThinkingStruct gAIThinkingSpace;
-} ewram; //0x02000000
-
-#ifdef NONMATCHING
void BattleAICmd_unk_30(void)
{
- s32 loopCounter;
-
- gUnknown_02024DEC = 0;
- ewram.unk_2016000.unk1C = 0;
- ewram.unk_2016000.unk1F = 1;
- gUnknown_02024C68 = 0;
- gCritMultiplier = 1;
- ewram.gAIThinkingSpace.unk8 = 0;
-
- for(loopCounter = 0; loopCounter <= 3; loopCounter++)
- {
- gUnknown_02024BEC = 40;
- gUnknown_02024BE6 = gBattleMons[gUnknown_02024C07].moves[loopCounter];
-
- if (gUnknown_02024BE6)
- {
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
-
- // reduce by 1/3.
- if (gUnknown_02024BEC == 120)
- gUnknown_02024BEC = 80;
- if(gUnknown_02024BEC == 240)
- gUnknown_02024BEC = 160;
- if(gUnknown_02024BEC == 30)
- gUnknown_02024BEC = 20;
- if(gUnknown_02024BEC == 15)
- gUnknown_02024BEC = 10;
-
- if(gUnknown_02024C68 & 8)
- gUnknown_02024BEC = 0;
-
- if (ewram.gAIThinkingSpace.unk8 < gUnknown_02024BEC)
- ewram.gAIThinkingSpace.unk8 = gUnknown_02024BEC;
- }
- }
- gAIScriptPtr += 1;
-}
-#else
-__attribute__((naked))
-void BattleAICmd_unk_30(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- ldr r0, _0810885C @ =gUnknown_02024DEC\n\
- movs r2, 0\n\
- strh r2, [r0]\n\
- ldr r1, _08108860 @ =0x02000000\n\
- ldr r3, _08108864 @ =0x0001601c\n\
- adds r0, r1, r3\n\
- movs r4, 0\n\
- strb r2, [r0]\n\
- adds r3, 0x3\n\
- adds r0, r1, r3\n\
- movs r3, 0x1\n\
- strb r3, [r0]\n\
- ldr r0, _08108868 @ =gUnknown_02024C68\n\
- strb r2, [r0]\n\
- ldr r0, _0810886C @ =gCritMultiplier\n\
- strb r3, [r0]\n\
- movs r0, 0xB4\n\
- lsls r0, 9\n\
- adds r1, r0\n\
- str r4, [r1, 0x8]\n\
- movs r5, 0\n\
- ldr r4, _08108870 @ =gUnknown_02024BEC\n\
- ldr r7, _08108874 @ =gUnknown_02024BE6\n\
- ldr r3, _08108878 @ =gUnknown_02024A8C\n\
- mov r8, r3\n\
- ldr r6, _0810887C @ =gUnknown_02024C07\n\
-_081087DA:\n\
- movs r0, 0x28\n\
- str r0, [r4]\n\
- lsls r1, r5, 1\n\
- ldrb r2, [r6]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, r0\n\
- add r1, r8\n\
- ldrh r0, [r1]\n\
- strh r0, [r7]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08108844\n\
- ldrh r0, [r7]\n\
- ldrb r1, [r6]\n\
- ldr r2, _08108880 @ =gUnknown_02024C08\n\
- ldrb r2, [r2]\n\
- bl move_effectiveness_something\n\
- ldr r0, [r4]\n\
- cmp r0, 0x78\n\
- bne _0810880A\n\
- movs r0, 0x50\n\
- str r0, [r4]\n\
-_0810880A:\n\
- ldr r0, [r4]\n\
- cmp r0, 0xF0\n\
- bne _08108814\n\
- movs r0, 0xA0\n\
- str r0, [r4]\n\
-_08108814:\n\
- ldr r0, [r4]\n\
- cmp r0, 0x1E\n\
- bne _0810881E\n\
- movs r0, 0x14\n\
- str r0, [r4]\n\
-_0810881E:\n\
- ldr r0, [r4]\n\
- cmp r0, 0xF\n\
- bne _08108828\n\
- movs r0, 0xA\n\
- str r0, [r4]\n\
-_08108828:\n\
- ldr r0, _08108868 @ =gUnknown_02024C68\n\
- ldrb r1, [r0]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08108838\n\
- movs r0, 0\n\
- str r0, [r4]\n\
-_08108838:\n\
- ldr r2, _08108884 @ =0x02016800\n\
- ldr r0, [r2, 0x8]\n\
- ldr r1, [r4]\n\
- cmp r0, r1\n\
- bcs _08108844\n\
- str r1, [r2, 0x8]\n\
-_08108844:\n\
- adds r5, 0x1\n\
- cmp r5, 0x3\n\
- ble _081087DA\n\
- ldr r1, _08108888 @ =gAIScriptPtr\n\
- ldr r0, [r1]\n\
- adds r0, 0x1\n\
- str r0, [r1]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0810885C: .4byte gUnknown_02024DEC\n\
-_08108860: .4byte 0x02000000\n\
-_08108864: .4byte 0x0001601c\n\
-_08108868: .4byte gUnknown_02024C68\n\
-_0810886C: .4byte gCritMultiplier\n\
-_08108870: .4byte gUnknown_02024BEC\n\
-_08108874: .4byte gUnknown_02024BE6\n\
-_08108878: .4byte gUnknown_02024A8C\n\
-_0810887C: .4byte gUnknown_02024C07\n\
-_08108880: .4byte gUnknown_02024C08\n\
-_08108884: .4byte 0x02016800\n\
-_08108888: .4byte gAIScriptPtr\n\
- .syntax divided\n");
+ s32 i;
+ struct AI_ThinkingStruct *ai;
+ struct AI_ThinkingStruct *ai2;
+
+ gUnknown_02024DEC = 0;
+ battle_2000000.unk.unk1 = 0;
+ battle_2000000.unk.unk4 = 1;
+ gUnknown_02024C68 = 0;
+ gCritMultiplier = 1;
+ ai = &battle_2000000.ai;
+ ai->unk8 = 0;
+
+ for(i = 0; i < 4; i++)
+ {
+ gUnknown_02024BEC = 40;
+ gUnknown_02024BE6 = gBattleMons[gUnknown_02024C07].moves[i];
+
+ if (gUnknown_02024BE6)
+ {
+ move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
+
+ // reduce by 1/3.
+ if (gUnknown_02024BEC == 120)
+ gUnknown_02024BEC = 80;
+ if(gUnknown_02024BEC == 240)
+ gUnknown_02024BEC = 160;
+ if(gUnknown_02024BEC == 30)
+ gUnknown_02024BEC = 20;
+ if(gUnknown_02024BEC == 15)
+ gUnknown_02024BEC = 10;
+
+ if(gUnknown_02024C68 & 8)
+ gUnknown_02024BEC = 0;
+
+ ai2 = &battle_2000000.ai;
+ if (ai2->unk8 < gUnknown_02024BEC)
+ ai2->unk8 = gUnknown_02024BEC;
+ }
+ }
+ gAIScriptPtr += 1;
}
-#endif
// same function as above but no for loop.
__attribute__((naked))
void BattleAICmd_if_damage_bonus(void)
{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r0, _08108928 @ =gUnknown_02024DEC\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- ldr r2, _0810892C @ =0x02000000\n\
- ldr r3, _08108930 @ =0x0001601c\n\
- adds r0, r2, r3\n\
- strb r1, [r0]\n\
- adds r3, 0x3\n\
- adds r0, r2, r3\n\
- movs r3, 0x1\n\
- strb r3, [r0]\n\
- ldr r5, _08108934 @ =gUnknown_02024C68\n\
- strb r1, [r5]\n\
- ldr r0, _08108938 @ =gCritMultiplier\n\
- strb r3, [r0]\n\
- ldr r4, _0810893C @ =gUnknown_02024BEC\n\
- movs r0, 0x28\n\
- str r0, [r4]\n\
- ldr r1, _08108940 @ =gUnknown_02024BE6\n\
- movs r0, 0xB4\n\
- lsls r0, 9\n\
- adds r2, r0\n\
- ldrh r0, [r2, 0x2]\n\
- strh r0, [r1]\n\
- ldrh r0, [r1]\n\
- ldr r1, _08108944 @ =gUnknown_02024C07\n\
- ldrb r1, [r1]\n\
- ldr r2, _08108948 @ =gUnknown_02024C08\n\
- ldrb r2, [r2]\n\
- bl move_effectiveness_something\n\
- ldr r0, [r4]\n\
- cmp r0, 0x78\n\
- bne _081088D6\n\
- movs r0, 0x50\n\
- str r0, [r4]\n\
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r0, _08108928 @ =gUnknown_02024DEC\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ ldr r2, _0810892C @ =0x02000000\n\
+ ldr r3, _08108930 @ =0x0001601c\n\
+ adds r0, r2, r3\n\
+ strb r1, [r0]\n\
+ adds r3, 0x3\n\
+ adds r0, r2, r3\n\
+ movs r3, 0x1\n\
+ strb r3, [r0]\n\
+ ldr r5, _08108934 @ =gUnknown_02024C68\n\
+ strb r1, [r5]\n\
+ ldr r0, _08108938 @ =gCritMultiplier\n\
+ strb r3, [r0]\n\
+ ldr r4, _0810893C @ =gUnknown_02024BEC\n\
+ movs r0, 0x28\n\
+ str r0, [r4]\n\
+ ldr r1, _08108940 @ =gUnknown_02024BE6\n\
+ movs r0, 0xB4\n\
+ lsls r0, 9\n\
+ adds r2, r0\n\
+ ldrh r0, [r2, 0x2]\n\
+ strh r0, [r1]\n\
+ ldrh r0, [r1]\n\
+ ldr r1, _08108944 @ =gUnknown_02024C07\n\
+ ldrb r1, [r1]\n\
+ ldr r2, _08108948 @ =gUnknown_02024C08\n\
+ ldrb r2, [r2]\n\
+ bl move_effectiveness_something\n\
+ ldr r0, [r4]\n\
+ cmp r0, 0x78\n\
+ bne _081088D6\n\
+ movs r0, 0x50\n\
+ str r0, [r4]\n\
_081088D6:\n\
- ldr r0, [r4]\n\
- cmp r0, 0xF0\n\
- bne _081088E0\n\
- movs r0, 0xA0\n\
- str r0, [r4]\n\
+ ldr r0, [r4]\n\
+ cmp r0, 0xF0\n\
+ bne _081088E0\n\
+ movs r0, 0xA0\n\
+ str r0, [r4]\n\
_081088E0:\n\
- ldr r0, [r4]\n\
- cmp r0, 0x1E\n\
- bne _081088EA\n\
- movs r0, 0x14\n\
- str r0, [r4]\n\
+ ldr r0, [r4]\n\
+ cmp r0, 0x1E\n\
+ bne _081088EA\n\
+ movs r0, 0x14\n\
+ str r0, [r4]\n\
_081088EA:\n\
- ldr r0, [r4]\n\
- cmp r0, 0xF\n\
- bne _081088F4\n\
- movs r0, 0xA\n\
- str r0, [r4]\n\
+ ldr r0, [r4]\n\
+ cmp r0, 0xF\n\
+ bne _081088F4\n\
+ movs r0, 0xA\n\
+ str r0, [r4]\n\
_081088F4:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08108902\n\
- movs r0, 0\n\
- str r0, [r4]\n\
+ ldrb r1, [r5]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08108902\n\
+ movs r0, 0\n\
+ str r0, [r4]\n\
_08108902:\n\
- ldrb r0, [r4]\n\
- ldr r3, _0810894C @ =gAIScriptPtr\n\
- ldr r2, [r3]\n\
- ldrb r1, [r2, 0x1]\n\
- cmp r0, r1\n\
- bne _08108950\n\
- ldrb r1, [r2, 0x2]\n\
- ldrb r0, [r2, 0x3]\n\
- lsls r0, 8\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x4]\n\
- lsls r0, 16\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x5]\n\
- lsls r0, 24\n\
- orrs r1, r0\n\
- str r1, [r3]\n\
- b _08108954\n\
- .align 2, 0\n\
+ ldrb r0, [r4]\n\
+ ldr r3, _0810894C @ =gAIScriptPtr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ cmp r0, r1\n\
+ bne _08108950\n\
+ ldrb r1, [r2, 0x2]\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+ b _08108954\n\
+ .align 2, 0\n\
_08108928: .4byte gUnknown_02024DEC\n\
_0810892C: .4byte 0x02000000\n\
_08108930: .4byte 0x0001601c\n\
@@ -1596,13 +1389,13 @@ _08108944: .4byte gUnknown_02024C07\n\
_08108948: .4byte gUnknown_02024C08\n\
_0810894C: .4byte gAIScriptPtr\n\
_08108950:\n\
- adds r0, r2, 0x6\n\
- str r0, [r3]\n\
+ adds r0, r2, 0x6\n\
+ str r0, [r3]\n\
_08108954:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
void BattleAICmd_unk_32(void)