decompile BattleAICmd_if_status_in_party

This commit is contained in:
YamaArashi
2017-01-08 18:14:16 -08:00
parent 42e277b298
commit 5474b260dd
2 changed files with 37 additions and 103 deletions
-103
View File
@@ -6,109 +6,6 @@
.text
thumb_func_start BattleAICmd_if_status_in_party
BattleAICmd_if_status_in_party: @ 8108964
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, _0810897C @ =gAIScriptPtr
ldr r1, [r0]
ldrb r1, [r1, 0x1]
cmp r1, 0x1
bne _081089A4
ldr r1, _08108980 @ =gEnemyParty
b _081089A6
.align 2, 0
_0810897C: .4byte gAIScriptPtr
_08108980: .4byte gEnemyParty
_08108984:
ldr r3, _081089A0 @ =gAIScriptPtr
ldr r2, [r3]
ldrb r1, [r2, 0x6]
ldrb r0, [r2, 0x7]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x8]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x9]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _08108A12
.align 2, 0
_081089A0: .4byte gAIScriptPtr
_081089A4:
ldr r1, _08108A20 @ =gPlayerParty
_081089A6:
mov r9, r1
ldr r1, [r0]
ldrb r7, [r1, 0x2]
ldrb r0, [r1, 0x3]
lsls r0, 8
orrs r7, r0
ldrb r0, [r1, 0x4]
lsls r0, 16
orrs r7, r0
ldrb r0, [r1, 0x5]
lsls r0, 24
orrs r7, r0
movs r0, 0
mov r8, r0
movs r1, 0xCE
lsls r1, 1
mov r10, r1
_081089C8:
movs r0, 0x64
mov r4, r8
muls r4, r0
add r4, r9
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
cmp r5, 0
beq _08108A00
cmp r5, r10
beq _08108A00
cmp r6, 0
beq _08108A00
cmp r0, r7
beq _08108984
_08108A00:
movs r0, 0x1
add r8, r0
mov r1, r8
cmp r1, 0x5
ble _081089C8
ldr r1, _08108A24 @ =gAIScriptPtr
ldr r0, [r1]
adds r0, 0xA
str r0, [r1]
_08108A12:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08108A20: .4byte gPlayerParty
_08108A24: .4byte gAIScriptPtr
thumb_func_end BattleAICmd_if_status_in_party
thumb_func_start BattleAICmd_if_status_not_in_party
BattleAICmd_if_status_not_in_party: @ 8108A28
push {r4-r7,lr}
+37
View File
@@ -1329,3 +1329,40 @@ void BattleAICmd_unk_32(void)
void BattleAICmd_unk_33(void)
{}
void BattleAICmd_if_status_in_party(void)
{
struct Pokemon *party;
int i;
u32 statusToCompareTo;
if (gAIScriptPtr[1] == USER)
{
party = gEnemyParty;
}
else if (0)
{
// what is going on here?
follow_jump:
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
return;
}
else
{
party = gPlayerParty;
}
statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
for (i = 0; i < 6; i++)
{
u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
u16 hp = GetMonData(&party[i], MON_DATA_HP);
u32 status = GetMonData(&party[i], MON_DATA_STATUS);
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
goto follow_jump;
}
gAIScriptPtr += 10;
}