mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 23:17:03 -05:00
sub_8056F80
This commit is contained in:
parent
80e20f5c09
commit
f28ab41acb
|
|
@ -1,139 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_8056F80
|
||||
sub_8056F80:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, 0
|
||||
mov r8, r1
|
||||
adds r4, r3, 0
|
||||
ldr r7, [sp, 0x18]
|
||||
ldr r0, [sp, 0x20]
|
||||
lsls r2, 16
|
||||
asrs r2, 16
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r12, r0
|
||||
movs r6, 0
|
||||
ldr r1, [r7, 0x70]
|
||||
ldr r3, [sp, 0x1C]
|
||||
ldrh r0, [r3, 0x2]
|
||||
cmp r0, 0xFC
|
||||
bne _08056FAA
|
||||
cmp r4, r7
|
||||
beq _08057060
|
||||
_08056FAA:
|
||||
ldrb r0, [r1, 0x8]
|
||||
cmp r0, 0x1
|
||||
beq _08057060
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
beq _08057060
|
||||
cmp r0, 0x1
|
||||
beq _08057060
|
||||
mov r0, r12
|
||||
cmp r0, 0
|
||||
bne _0805702C
|
||||
movs r0, 0xF
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08056FD0
|
||||
cmp r0, 0x4
|
||||
bne _08056FE6
|
||||
_08056FD0:
|
||||
adds r0, r4, 0
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
movs r3, 0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _0805702E
|
||||
b _0805702C
|
||||
_08056FE6:
|
||||
cmp r0, 0x1
|
||||
bne _08056FFE
|
||||
adds r0, r4, 0
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
movs r3, 0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0805702E
|
||||
b _0805702C
|
||||
_08056FFE:
|
||||
cmp r0, 0x2
|
||||
beq _0805702C
|
||||
cmp r0, 0x5
|
||||
bne _0805700C
|
||||
cmp r4, r7
|
||||
beq _0805702E
|
||||
b _0805702C
|
||||
_0805700C:
|
||||
cmp r0, 0x6
|
||||
bne _08057028
|
||||
adds r0, r4, 0
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
movs r3, 0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0805702E
|
||||
cmp r4, r7
|
||||
beq _0805702E
|
||||
b _0805702C
|
||||
_08057028:
|
||||
cmp r0, 0x3
|
||||
bne _0805702E
|
||||
_0805702C:
|
||||
movs r6, 0x1
|
||||
_0805702E:
|
||||
adds r0, r7, 0
|
||||
ldr r1, [sp, 0x1C]
|
||||
bl sub_80571F0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805703E
|
||||
movs r6, 0
|
||||
_0805703E:
|
||||
cmp r6, 0
|
||||
beq _08057060
|
||||
cmp r5, 0x3F
|
||||
bgt _08057060
|
||||
lsls r0, r5, 2
|
||||
add r0, r8
|
||||
str r7, [r0]
|
||||
ldr r0, [r7, 0x70]
|
||||
ldrb r0, [r0, 0x6]
|
||||
cmp r0, 0
|
||||
bne _0805705E
|
||||
ldr r1, _0805706C
|
||||
ldr r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _0805705E
|
||||
str r7, [r1]
|
||||
_0805705E:
|
||||
adds r5, 0x1
|
||||
_08057060:
|
||||
adds r0, r5, 0
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805706C: .4byte gUnknown_203B438
|
||||
thumb_func_end sub_8056F80
|
||||
|
||||
.align 2, 0
|
||||
|
|
@ -235,7 +235,6 @@ SECTIONS {
|
|||
src/code_804AFAC.o(.text);
|
||||
asm/code_804FD30.o(.text);
|
||||
src/dungeon_message.o(.text);
|
||||
asm/dungeon_message.o(.text);
|
||||
src/charge_move.o(.text);
|
||||
src/move_util.o(.text);
|
||||
src/move_actions.o(.text);
|
||||
|
|
|
|||
|
|
@ -1106,6 +1106,100 @@ static void CreateMessageLogArrow(bool8 upArrow, s32 y)
|
|||
#include "text_util.h"
|
||||
#include "dungeon_visibility.h"
|
||||
|
||||
extern void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *dmgStruct, bool32 isFalseSwipe, bool32 giveExp, s16 arg4, bool32 arg8, s32 argC);
|
||||
extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, struct DamageStruct *dmgStruct, u32, u16, u32);
|
||||
extern s16 sub_8057600(Move *move, s32 itemID);
|
||||
extern void sub_803ED30(s32, Entity *r0, u8, s32);
|
||||
extern void sub_8042238(Entity *pokemon, Entity *target);
|
||||
extern void sub_806A1E8(Entity *pokemon);
|
||||
extern void sub_80574C4(Entity **a0, Entity *a1);
|
||||
extern bool8 sub_8044B28(void);
|
||||
extern void sub_804178C(u32);
|
||||
extern void sub_8071DA4(Entity *);
|
||||
extern void sub_80428A0(Entity *r0);
|
||||
extern bool8 sub_8040BB0(Entity *entity, Move *move, bool8);
|
||||
extern void sub_8040DA0(Entity *entity, Move *move);
|
||||
extern u16 sub_80412E0(u16 moveId, u8 weather, u8 a2);
|
||||
extern void sub_800569C(Position *, EntitySpriteInfo *, u8);
|
||||
extern u8 GetBodySize(s16 index);
|
||||
extern void sub_800EF10(u16 r0);
|
||||
extern s32 sub_800E710(s16 a0, u16 a1);
|
||||
extern void sub_800E3AC(s32 a0, Position *pos, s32 a2);
|
||||
extern void sub_8041168(Entity *entity, Entity *entity2, Move *,Position *);
|
||||
extern Entity *sub_80696A8(Entity *a0);
|
||||
extern Entity *sub_804AD0C(Position *pos);
|
||||
extern Entity *sub_80696FC(Entity *);
|
||||
extern Entity *sub_806977C(Entity *);
|
||||
extern void sub_806F2BC(Entity *attacker, Entity *target, u8 moveType, s32 a2, struct DamageStruct *dmgStruct);
|
||||
extern void sub_806ACE8(Entity *entity, Move *move);
|
||||
extern s32 sub_8057070(Move *move);
|
||||
extern bool8 sub_805755C(Entity* pokemon,u16 param_2);
|
||||
extern s32 sub_800ED20(u16 param_1);
|
||||
|
||||
s32 sub_8055640(Entity *, Entity *, Move *, s32, s32);
|
||||
s32 sub_8055728(Entity *attacker, Entity *target, Move *move, struct DamageStruct *dmgStruct, s16 unk);
|
||||
static bool8 CalcIfMoveHits(Entity *attacker, Entity *target, Move *move, s32 accuracyType, bool8 selfAlwaysHits);
|
||||
bool8 sub_8055FA0(struct Entity *entity, u32 r6, s32 itemId, u32 var_30, u32 arg_0, struct Move *move);
|
||||
bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray, bool32 itemId, bool8 arg_4, bool32 unused);
|
||||
bool8 sub_805744C(Entity * pokemon, Move *move, bool8 param_3);
|
||||
void sub_8056CE8(Entity **, Entity * pokemon, Move *move);
|
||||
void sub_80566F8(Entity*, Move *, s32 a2, bool8 a3, s32 a4, s32 a5);
|
||||
s32 sub_8056F80(s32 a0, Entity **entitiesArray, s32 target, Entity *entity1, Entity *entity2, Move *move, bool32 arg8);
|
||||
|
||||
extern const s32 gUnknown_80F519C;
|
||||
extern const s32 gUnknown_80F51A0;
|
||||
extern const s32 gUnknown_80F50F4[2][21];
|
||||
extern const s32 gUnknown_81069D4[];
|
||||
extern const s32 gUnknown_81069BC[];
|
||||
extern const s16 gUnknown_80F4E70[];
|
||||
extern const s16 gUnknown_80F4E74[];
|
||||
extern const u16 gUnknown_80F5004;
|
||||
extern const u8 *const gUnknown_80FEEA4;
|
||||
extern const u8 *const gUnknown_80FEEC8;
|
||||
extern const u8 *const gUnknown_80FEEEC;
|
||||
extern const u8 *const gUnknown_80FEF0C;
|
||||
extern const u8 *const gUnknown_80FEF30;
|
||||
extern const u8 *const gUnknown_80FEF4C;
|
||||
extern const u8 *const gUnknown_80FEF50;
|
||||
extern const u8 *const gUnknown_80FEF54;
|
||||
extern const u8 *const gUnknown_80FEF74;
|
||||
extern const u8 *const gUnknown_80FEF98;
|
||||
extern const u8 *const gUnknown_80FEFD0;
|
||||
extern const u8 *const gUnknown_80FECA4;
|
||||
extern const u8 *const gUnknown_80F9158;
|
||||
extern const u8 *const gUnknown_80FC72C;
|
||||
extern const u8 *const gUnknown_80FC700;
|
||||
extern const u8 *const gUnknown_80FC6D0;
|
||||
extern const u8 *const gUnknown_80FC710;
|
||||
extern const u8 *const gUnknown_80FC6FC;
|
||||
extern const u8 *const gUnknown_80FECBC;
|
||||
extern const u8 *const gUnknown_80FECE0;
|
||||
extern const u8 *const gUnknown_80F9688;
|
||||
extern const u8 *const gUnknown_80FC714;
|
||||
extern const u8 *const gUnknown_80FC718;
|
||||
extern const u8 *const gUnknown_80FC6A8;
|
||||
extern const u8 *const gUnknown_80FD2D0;
|
||||
extern const u8 *const gUnknown_80FD2DC;
|
||||
extern const u8 *const gUnknown_80F93C8;
|
||||
extern const u8 *const gUnknown_80FC690;
|
||||
extern const u8 *const gUnknown_80FC6A4;
|
||||
|
||||
extern u8 gFormatItems[];
|
||||
extern u8 gUnknown_202F221;
|
||||
extern u8 gUnknown_202F222;
|
||||
extern s32 gUnknown_202F208;
|
||||
extern s32 gMetronomeCalledArrayId;
|
||||
extern s32 gUnknown_202F214;
|
||||
extern s32 gUnknown_202F20C;
|
||||
extern s32 gUnknown_202F210;
|
||||
extern s32 gUnknown_202F21C;
|
||||
extern Entity *gUnknown_203B438;
|
||||
extern u8 gUnknown_202F218;
|
||||
extern u8 gUnknown_202F219;
|
||||
extern u8 gUnknown_202F21A;
|
||||
extern u8 gUnknown_202F220;
|
||||
extern u8 gUnknown_202F221;
|
||||
|
||||
NAKED void sub_8053704(Entity **unkArray, Entity *entity, Move *move, s32 itemId, s32 a4)
|
||||
{
|
||||
asm_unified("\n"
|
||||
|
|
@ -4515,26 +4609,11 @@ NAKED void sub_8053704(Entity **unkArray, Entity *entity, Move *move, s32 itemId
|
|||
"_0805561C: .4byte gUnknown_8106A50\n");
|
||||
}
|
||||
|
||||
s32 sub_8055640(Entity *, Entity *, Move *, s32, s32);
|
||||
s32 sub_8055728(Entity *attacker, Entity *target, Move *move, struct DamageStruct *dmgStruct, s16 unk);
|
||||
static bool8 CalcIfMoveHits(Entity *attacker, Entity *target, Move *move, s32 accuracyType, bool8 selfAlwaysHits);
|
||||
bool8 sub_8055FA0(struct Entity *entity, u32 r6, s32 itemId, u32 var_30, u32 arg_0, struct Move *move);
|
||||
|
||||
UNUSED bool32 sub_8055620(Entity *a0, Entity *a1, Move *a2, s32 a3)
|
||||
{
|
||||
return (sub_8055640(a0, a1, a2, 0x100, a3) != FALSE);
|
||||
}
|
||||
|
||||
extern void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *dmgStruct, bool32 isFalseSwipe, bool32 giveExp, s16 arg4, bool32 arg8, s32 argC);
|
||||
extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, struct DamageStruct *dmgStruct, u32, u16, u32);
|
||||
extern s16 sub_8057600(Move *move, s32 itemID);
|
||||
extern void sub_803ED30(s32, Entity *r0, u8, s32);
|
||||
extern void sub_8042238(Entity *pokemon, Entity *target);
|
||||
extern void sub_806A1E8(Entity *pokemon);
|
||||
extern void sub_80574C4(Entity **a0, Entity *a1);
|
||||
|
||||
extern const u8 *const gUnknown_80F9688;
|
||||
|
||||
s32 sub_8055640(Entity *attacker, Entity *target, Move *move, s32 r9, s32 itemId)
|
||||
{
|
||||
struct DamageStruct dmgStruct;
|
||||
|
|
@ -4598,8 +4677,6 @@ s32 sub_8055728(Entity *attacker, Entity *target, Move *move, struct DamageStruc
|
|||
return dmgStruct->dmg;
|
||||
}
|
||||
|
||||
extern void sub_806F2BC(Entity *attacker, Entity *target, u8 moveType, s32 a2, struct DamageStruct *dmgStruct);
|
||||
|
||||
s32 sub_8055864(Entity *attacker, Entity *target, Move *move, s32 param_4, s32 itemId)
|
||||
{
|
||||
struct DamageStruct dmgStruct;
|
||||
|
|
@ -4617,8 +4694,6 @@ s32 sub_8055864(Entity *attacker, Entity *target, Move *move, s32 param_4, s32 i
|
|||
return dmgStruct.dmg;
|
||||
}
|
||||
|
||||
extern const s32 gUnknown_81069BC[];
|
||||
|
||||
// This unused function returns FALSE if target's typing makes it immune to move's type.
|
||||
UNUSED bool32 TargetNotImmuneTo(Move *move, Entity *target)
|
||||
{
|
||||
|
|
@ -4673,29 +4748,6 @@ void sub_80559DC(Entity *entity1, Entity *entity2)
|
|||
sub_806CE68(entity1, direction);
|
||||
}
|
||||
|
||||
extern const u8 *const gUnknown_80FC714;
|
||||
extern const u8 *const gUnknown_80FC718;
|
||||
extern const u8 *const gUnknown_80FC6A8;
|
||||
extern const u8 *const gUnknown_80FD2D0;
|
||||
extern const u8 *const gUnknown_80FD2DC;
|
||||
extern const u8 *const gUnknown_80F93C8;
|
||||
extern const u8 *const gUnknown_80FC690;
|
||||
extern const u8 *const gUnknown_80FC6A4;
|
||||
|
||||
extern const s16 gUnknown_80F4E70[];
|
||||
extern const s16 gUnknown_80F4E74[];
|
||||
|
||||
extern u8 gFormatItems[];
|
||||
extern u8 gUnknown_202F221;
|
||||
extern u8 gUnknown_202F222;
|
||||
extern s32 gUnknown_202F208;
|
||||
|
||||
|
||||
extern bool8 sub_8044B28(void);
|
||||
extern void sub_804178C(u32);
|
||||
extern void sub_8071DA4(Entity *);
|
||||
extern void sub_80428A0(Entity *r0);
|
||||
|
||||
bool32 sub_8055A00(Entity *entity, s32 firstMoveId, s32 var_34, s32 itemId, s32 arg_0)
|
||||
{
|
||||
s32 i, j;
|
||||
|
|
@ -4865,28 +4917,6 @@ bool32 sub_8055A00(Entity *entity, s32 firstMoveId, s32 var_34, s32 itemId, s32
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
extern const u16 gUnknown_80F5004;
|
||||
extern const u8 *const gUnknown_80FEEA4;
|
||||
extern const u8 *const gUnknown_80FEEC8;
|
||||
extern const u8 *const gUnknown_80FEEEC;
|
||||
extern const u8 *const gUnknown_80FEF0C;
|
||||
extern const u8 *const gUnknown_80FEF30;
|
||||
extern const u8 *const gUnknown_80FEF4C;
|
||||
extern const u8 *const gUnknown_80FEF50;
|
||||
extern const u8 *const gUnknown_80FEF54;
|
||||
extern const u8 *const gUnknown_80FEF74;
|
||||
extern const u8 *const gUnknown_80FEF98;
|
||||
extern const u8 *const gUnknown_80FEFD0;
|
||||
extern const u8 *const gUnknown_80FECA4;
|
||||
extern const u8 *const gUnknown_80F9158;
|
||||
extern const u8 *const gUnknown_80FC72C;
|
||||
extern const u8 *const gUnknown_80FC700;
|
||||
extern const u8 *const gUnknown_80FC6D0;
|
||||
extern const u8 *const gUnknown_80FC710;
|
||||
extern const u8 *const gUnknown_80FC6FC;
|
||||
extern const u8 *const gUnknown_80FECBC;
|
||||
extern const u8 *const gUnknown_80FECE0;
|
||||
|
||||
void TriggerAbilityEffect(Entity *entity)
|
||||
{
|
||||
if (EntityExists(entity)) {
|
||||
|
|
@ -4943,29 +4973,6 @@ void TriggerAbilityEffect(Entity *entity)
|
|||
}
|
||||
}
|
||||
|
||||
extern s32 gMetronomeCalledArrayId;
|
||||
|
||||
extern void sub_806ACE8(Entity *entity, Move *move);
|
||||
extern s32 sub_8057070(Move *move);
|
||||
|
||||
bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray, bool32 itemId, bool8 arg_4, bool32 unused);
|
||||
bool8 sub_805744C(Entity * pokemon, Move *move, bool8 param_3);
|
||||
void sub_8056CE8(Entity **, Entity * pokemon, Move *move);
|
||||
void sub_80566F8(Entity*, Move *, s32 a2, bool8 a3, s32 a4, s32 a5);
|
||||
|
||||
extern s32 gUnknown_202F214;
|
||||
extern s32 gUnknown_202F20C;
|
||||
extern s32 gUnknown_202F210;
|
||||
extern s32 gUnknown_202F21C;
|
||||
extern Entity *gUnknown_203B438;
|
||||
extern u8 gUnknown_202F218;
|
||||
extern u8 gUnknown_202F219;
|
||||
extern u8 gUnknown_202F21A;
|
||||
extern u8 gUnknown_202F220;
|
||||
extern u8 gUnknown_202F221;
|
||||
|
||||
bool8 sub_805755C(Entity* pokemon,u16 param_2);
|
||||
|
||||
bool8 sub_8055FA0(struct Entity *entity, u32 r6, s32 itemId, u32 var_30, u32 arg_0, struct Move *move)
|
||||
{
|
||||
s32 i;
|
||||
|
|
@ -5160,9 +5167,6 @@ bool8 sub_8055FA0(struct Entity *entity, u32 r6, s32 itemId, u32 var_30, u32 arg
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
extern bool8 sub_8040BB0(Entity *entity, Move *move, bool8);
|
||||
extern void sub_8040DA0(Entity *entity, Move *move);
|
||||
|
||||
bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray, bool32 itemId, bool8 arg_4, bool32 unused)
|
||||
{
|
||||
s32 i;
|
||||
|
|
@ -5214,9 +5218,6 @@ bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray,
|
|||
return ret;
|
||||
}
|
||||
|
||||
extern u16 sub_80412E0(u16 moveId, u8 weather, u8 a2);
|
||||
extern void sub_800569C(Position *, EntitySpriteInfo *, u8);
|
||||
|
||||
struct UnkStruct_sub_800E308_1
|
||||
{
|
||||
s16 unk0;
|
||||
|
|
@ -5235,9 +5236,6 @@ struct UnkStruct_sub_800E308_2
|
|||
};
|
||||
|
||||
extern s32 sub_800E308(struct UnkStruct_sub_800E308_1 *, struct UnkStruct_sub_800E308_2 *);
|
||||
extern u8 GetBodySize(s16 index);
|
||||
extern void sub_800EF10(u16 r0);
|
||||
extern s32 sub_800E710(s16 a0, u16 a1);
|
||||
|
||||
#ifdef NONMATCHING // https://decomp.me/scratch/fTUsI
|
||||
s32 sub_8056564(Entity *entity, Position *pos, Move *move, s32 r4)
|
||||
|
|
@ -5480,15 +5478,6 @@ NAKED s32 sub_8056564(Entity *entity, Position *pos, Move *move, s32 r4)
|
|||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
extern s32 sub_800ED20(u16 param_1);
|
||||
|
||||
extern const s32 gUnknown_81069D4[];
|
||||
|
||||
extern void sub_800E3AC(s32 a0, Position *pos, s32 a2);
|
||||
extern void sub_8041168(Entity *entity, Entity *entity2, Move *,Position *);
|
||||
|
||||
s32 sub_8056F80(s32 a0, Entity **entitiesArray, s32 target, Entity *entity1, Entity *entity2, Move *move, bool8 arg8);
|
||||
|
||||
// This function looks important, but what does it do?
|
||||
void sub_80566F8(Entity *entity, Move *move, s32 a2, bool8 a3, s32 itemId, s32 a5)
|
||||
{
|
||||
|
|
@ -5652,10 +5641,6 @@ void sub_80566F8(Entity *entity, Move *move, s32 a2, bool8 a3, s32 itemId, s32 a
|
|||
}
|
||||
}
|
||||
|
||||
extern const s32 gUnknown_80F519C;
|
||||
extern const s32 gUnknown_80F51A0;
|
||||
extern const s32 gUnknown_80F50F4[2][21];
|
||||
|
||||
static bool8 CalcIfMoveHits(Entity *attacker, Entity *target, Move *move, s32 accuracyType, bool8 selfAlwaysHits)
|
||||
{
|
||||
s32 statStageAccuracy, statStageEvasion;
|
||||
|
|
@ -5736,11 +5721,6 @@ static bool8 CalcIfMoveHits(Entity *attacker, Entity *target, Move *move, s32 ac
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
extern Entity *sub_80696A8(Entity *a0);
|
||||
extern Entity *sub_804AD0C(Position *pos);
|
||||
extern Entity *sub_80696FC(Entity *);
|
||||
extern Entity *sub_806977C(Entity *);
|
||||
|
||||
void sub_8056CE8(Entity **entitiesArray, Entity *entity, Move *move)
|
||||
{
|
||||
s32 target;
|
||||
|
|
@ -5853,4 +5833,68 @@ void sub_8056CE8(Entity **entitiesArray, Entity *entity, Move *move)
|
|||
entitiesArray[arrId] = NULL;
|
||||
}
|
||||
|
||||
//
|
||||
s32 sub_8056F80(s32 a0, Entity **entitiesArray, s32 target_, Entity *entity1, Entity *entity2, Move *move, bool32 arg8_)
|
||||
{
|
||||
bool32 r6;
|
||||
EntityInfo *ent2Info;
|
||||
|
||||
// It's happening again, all over the codebase there are problems with s16 arguments, where the lsl/asr asm can't be matched. What is going on with that?
|
||||
s32 target = (s16)target_;
|
||||
bool8 arg8 = arg8_;
|
||||
r6 = FALSE;
|
||||
ent2Info = GetEntInfo(entity2);
|
||||
|
||||
if (move->id == MOVE_BATON_PASS && entity1 == entity2)
|
||||
return a0;
|
||||
if (ent2Info->shopkeeper == SHOPKEEPER_MODE_SHOPKEEPER)
|
||||
return a0;
|
||||
if (ent2Info->clientType == CLIENT_TYPE_DONT_MOVE || ent2Info->clientType == CLIENT_TYPE_CLIENT)
|
||||
return a0;
|
||||
|
||||
if (arg8) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
else {
|
||||
s32 targetFlags = target & 0xF;
|
||||
if (targetFlags == 0 || targetFlags == 4) {
|
||||
if (GetTreatmentBetweenMonsters(entity1, entity2, TRUE, FALSE) == 1) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
}
|
||||
else if (targetFlags == 1) {
|
||||
if (GetTreatmentBetweenMonsters(entity1, entity2, TRUE, FALSE) == 0) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
}
|
||||
else if (targetFlags == 2) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
else if (targetFlags == 5) {
|
||||
if (entity1 != entity2) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
}
|
||||
else if (targetFlags == 6) {
|
||||
if (GetTreatmentBetweenMonsters(entity1, entity2, TRUE, FALSE) == 0 && entity1 != entity2) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
}
|
||||
else if (targetFlags == 3) {
|
||||
r6 = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (sub_80571F0(entity2, move)) {
|
||||
r6 = FALSE;
|
||||
}
|
||||
|
||||
if (r6 && a0 < 64) {
|
||||
entitiesArray[a0] = entity2;
|
||||
if (!GetEntInfo(entity2)->isNotTeamMember && gUnknown_203B438 == NULL) {
|
||||
gUnknown_203B438 = entity2;
|
||||
}
|
||||
a0++;
|
||||
}
|
||||
|
||||
return a0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user