mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-28 03:34:22 -05:00
99.09% matching for sub_807CB3C
This commit is contained in:
@@ -1,266 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_807CB3C
|
||||
sub_807CB3C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x30
|
||||
adds r6, r0, 0
|
||||
ldr r7, [r6, 0x70]
|
||||
movs r1, 0
|
||||
movs r2, 0x15
|
||||
bl sub_8044D90
|
||||
adds r2, r0, 0
|
||||
ldr r5, [r2]
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0807CB80
|
||||
ldr r0, _0807CB78
|
||||
adds r1, r2, 0
|
||||
bl sub_8045BF8
|
||||
ldr r0, _0807CB7C
|
||||
ldr r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl SendMessage
|
||||
b _0807CD54
|
||||
.align 2, 0
|
||||
_0807CB78: .4byte gUnknown_202DE58
|
||||
_0807CB7C: .4byte gUnknown_80FE3E8
|
||||
_0807CB80:
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r1, 0x44
|
||||
ldm r1!, {r2-r4}
|
||||
stm r0!, {r2-r4}
|
||||
ldm r1!, {r2-r4}
|
||||
stm r0!, {r2-r4}
|
||||
bl IsBossFight
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807CBAC
|
||||
ldr r0, _0807CBA8
|
||||
ldr r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl SendMessage
|
||||
movs r4, 0x1
|
||||
b _0807CCDE
|
||||
.align 2, 0
|
||||
_0807CBA8: .4byte gPtrMysteriousPowerPreventedUseMessage
|
||||
_0807CBAC:
|
||||
movs r0, 0x1
|
||||
mov r8, r0
|
||||
add r4, sp, 0x20
|
||||
lsls r5, 8
|
||||
lsrs r0, r5, 24
|
||||
bl GetItemMoveID
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
adds r0, r4, 0
|
||||
bl InitPokemonMove
|
||||
ldrb r0, [r7, 0x7]
|
||||
mov r10, r4
|
||||
mov r9, r5
|
||||
cmp r0, 0
|
||||
bne _0807CC08
|
||||
ldr r1, _0807CC20
|
||||
ldr r0, [sp, 0x28]
|
||||
ands r0, r1
|
||||
mov r1, r8
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x28]
|
||||
movs r0, 0xA
|
||||
add r4, sp, 0x28
|
||||
str r0, [r4, 0x4]
|
||||
movs r3, 0x8C
|
||||
lsls r3, 1
|
||||
adds r2, r7, r3
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl AIConsiderMove
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _0807CC08
|
||||
ldrb r1, [r4, 0x1]
|
||||
movs r0, 0x7
|
||||
ands r0, r1
|
||||
adds r1, r7, 0
|
||||
adds r1, 0x46
|
||||
strb r0, [r1]
|
||||
adds r0, r6, 0
|
||||
bl TargetTileInFront
|
||||
_0807CC08:
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xBC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0807CC2C
|
||||
ldr r0, _0807CC24
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _0807CC28
|
||||
b _0807CC3C
|
||||
.align 2, 0
|
||||
_0807CC20: .4byte 0xffffff00
|
||||
_0807CC24: .4byte gAvailablePokemonNames
|
||||
_0807CC28: .4byte gUnknown_80FC714
|
||||
_0807CC2C:
|
||||
cmp r0, 0x7
|
||||
bne _0807CC50
|
||||
ldr r0, _0807CC48
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _0807CC4C
|
||||
_0807CC3C:
|
||||
ldr r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl SendMessage
|
||||
b _0807CCDC
|
||||
.align 2, 0
|
||||
_0807CC48: .4byte gAvailablePokemonNames
|
||||
_0807CC4C: .4byte gUnknown_80FC718
|
||||
_0807CC50:
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xAC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _0807CC72
|
||||
ldr r0, _0807CCB8
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _0807CCBC
|
||||
ldr r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl SendMessage
|
||||
movs r4, 0
|
||||
mov r8, r4
|
||||
_0807CC72:
|
||||
mov r0, r8
|
||||
cmp r0, 0
|
||||
beq _0807CCDC
|
||||
mov r5, r9
|
||||
lsrs r0, r5, 24
|
||||
cmp r0, 0xB6
|
||||
beq _0807CC84
|
||||
cmp r0, 0xBF
|
||||
bne _0807CCC0
|
||||
_0807CC84:
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x7A
|
||||
bl sub_8044DF0
|
||||
mov r2, r10
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x8
|
||||
movs r4, 0
|
||||
orrs r0, r1
|
||||
add r3, sp, 0x20
|
||||
movs r1, 0x4
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
movs r0, 0xA
|
||||
strb r0, [r3, 0x4]
|
||||
lsrs r2, r5, 24
|
||||
str r4, [sp]
|
||||
str r3, [sp, 0x4]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
movs r3, 0
|
||||
bl sub_8055FA0
|
||||
b _0807CCDE
|
||||
.align 2, 0
|
||||
_0807CCB8: .4byte gAvailablePokemonNames
|
||||
_0807CCBC: .4byte gUnknown_80FC6A8
|
||||
_0807CCC0:
|
||||
mov r3, r9
|
||||
lsrs r2, r3, 24
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
mov r4, r10
|
||||
str r4, [sp, 0x4]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
movs r3, 0
|
||||
bl sub_8055FA0
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
b _0807CCDE
|
||||
_0807CCDC:
|
||||
movs r4, 0
|
||||
_0807CCDE:
|
||||
adds r0, r6, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807CD38
|
||||
cmp r4, 0
|
||||
beq _0807CCF8
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x7A
|
||||
bl sub_8044DF0
|
||||
_0807CCF8:
|
||||
adds r0, r6, 0
|
||||
bl sub_8071DA4
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x8
|
||||
bl sub_806CE68
|
||||
ldrb r0, [r7, 0x7]
|
||||
cmp r0, 0
|
||||
beq _0807CD18
|
||||
adds r0, r6, 0x4
|
||||
bl sub_804AC20
|
||||
movs r0, 0
|
||||
bl sub_807EC28
|
||||
_0807CD18:
|
||||
adds r0, r6, 0
|
||||
bl sub_806A5B8
|
||||
ldr r0, _0807CD30
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0807CD34
|
||||
adds r0, r1
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8075900
|
||||
b _0807CD44
|
||||
.align 2, 0
|
||||
_0807CD30: .4byte gDungeon
|
||||
_0807CD34: .4byte 0x00003a08
|
||||
_0807CD38:
|
||||
cmp r4, 0
|
||||
beq _0807CD44
|
||||
add r0, sp, 0x8
|
||||
movs r1, 0
|
||||
bl sub_8044D40
|
||||
_0807CD44:
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807CD54
|
||||
adds r0, r6, 0
|
||||
bl sub_806A1B0
|
||||
_0807CD54:
|
||||
add sp, 0x30
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_807CB3C
|
||||
|
||||
.align 2, 0
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#define RANGED_ATTACK_RANGE 10
|
||||
|
||||
// size: 0x8
|
||||
struct AIPossibleMove
|
||||
{
|
||||
bool8 canBeUsed;
|
||||
|
||||
@@ -233,7 +233,6 @@ SECTIONS {
|
||||
asm/code_8077274_1.o(.text);
|
||||
src/dungeon_ai_movement.o(.text);
|
||||
src/dungeon_ai_attack.o(.text);
|
||||
asm/code_807CABC.o(.text);
|
||||
src/targeting_flags.o(.text);
|
||||
asm/code_807CD9C.o(.text);
|
||||
src/code_807CD9C.o(.text);
|
||||
|
||||
@@ -102,7 +102,7 @@ extern u8 sub_8044B28(void);
|
||||
extern u8 sub_803F428(struct Position *pos);
|
||||
extern void IncreaseEntityPixelPos(struct Entity *, u32, u32);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_807EC28(u32);
|
||||
extern void sub_807EC28(bool8);
|
||||
extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
void sub_8075900(struct Entity *pokemon, u8 r1);
|
||||
extern void sub_804535C(struct Entity *, u32);
|
||||
@@ -1219,7 +1219,7 @@ _0805AA5E:
|
||||
}
|
||||
if (target->info->isTeamLeader) {
|
||||
sub_804AC20(r9);
|
||||
sub_807EC28(0);
|
||||
sub_807EC28(FALSE);
|
||||
}
|
||||
sub_806A5B8(target);
|
||||
sub_8075900(target,gDungeon->unk3A08);
|
||||
|
||||
@@ -172,7 +172,7 @@ extern void SetMessageArgument(u8 *buffer, struct Entity *r1, u32);
|
||||
extern void sub_80522F4(struct Entity *pokemon, struct Entity *r1, const char[]);
|
||||
extern void EntityUpdateStatusSprites(struct Entity *);
|
||||
extern void sub_8042A74(struct Entity *r0);
|
||||
extern void sub_807EC28(u32);
|
||||
extern void sub_807EC28(bool8);
|
||||
extern s32 sub_8069F54(struct Entity *param_1, s16 param_2);
|
||||
extern void sub_806A898(struct Entity *, u32, u32);
|
||||
extern void HealTargetHP(struct Entity *pokemon, struct Entity *r1, s16, s16, u32);
|
||||
@@ -1515,7 +1515,7 @@ void SendTransformEndMessage(struct Entity * pokemon, struct Entity *target)
|
||||
entityInfo->transformStatus = STATUS_NONE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
if (isInvisible) {
|
||||
sub_807EC28(1);
|
||||
sub_807EC28(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8
|
||||
extern void sub_80694C0(struct Entity *, s32, s32, u32);
|
||||
extern void sub_804535C(struct Entity *, u32);
|
||||
extern void sub_804AC20(struct Position *);
|
||||
extern void sub_807EC28(u32);
|
||||
extern void sub_807EC28(bool8);
|
||||
extern void sub_806A5B8(struct Entity *);
|
||||
|
||||
extern u32 gUnknown_80F5FAC[];
|
||||
@@ -101,7 +101,7 @@ void sub_807E254(struct Entity *pokemon,struct Entity *target)
|
||||
if (EntityExists(pokemon)) {
|
||||
if (pokemon->info->isTeamLeader) {
|
||||
sub_804AC20(&pokemon->pos);
|
||||
sub_807EC28(0);
|
||||
sub_807EC28(FALSE);
|
||||
}
|
||||
sub_806A5B8(pokemon);
|
||||
sub_8075900(pokemon,gDungeon->unk3A08);
|
||||
@@ -110,7 +110,7 @@ void sub_807E254(struct Entity *pokemon,struct Entity *target)
|
||||
if (EntityExists(target)) {
|
||||
if (target->info->isTeamLeader) {
|
||||
sub_804AC20(&target->pos);
|
||||
sub_807EC28(0);
|
||||
sub_807EC28(FALSE);
|
||||
}
|
||||
sub_806A5B8(target);
|
||||
sub_8075900(target,gDungeon->unk3A08);
|
||||
|
||||
@@ -45,7 +45,8 @@ extern void sub_806A9B4(struct Entity *, u8);
|
||||
extern bool8 sub_8044B28(void);
|
||||
extern void sub_8057588(struct Entity *, u32);
|
||||
extern void sub_806A1B0(struct Entity *);
|
||||
|
||||
extern struct Item *sub_8044D90(struct Entity *, s32, u32);
|
||||
extern bool8 sub_8044D40(struct ActionContainer *, u32);
|
||||
|
||||
void DecideAttack(struct Entity *pokemon)
|
||||
{
|
||||
@@ -932,23 +933,387 @@ bool8 IsTargetInRange(struct Entity *pokemon, struct Entity *targetPokemon, s32
|
||||
|
||||
void sub_807CABC(struct Entity *target)
|
||||
{
|
||||
struct EntityInfo *entityInfo;
|
||||
s32 counter;
|
||||
struct EntityInfo *entityInfo;
|
||||
s32 counter;
|
||||
|
||||
counter = 0;
|
||||
while (1) {
|
||||
if(counter >= sub_8070828(target, TRUE)) break;
|
||||
counter = 0;
|
||||
while (TRUE) {
|
||||
if (counter >= sub_8070828(target, TRUE))
|
||||
break;
|
||||
entityInfo = target->info;
|
||||
sub_8055A00(target,(entityInfo->action).actionUseIndex,1,0,0);
|
||||
if(!EntityExists(target)) break;
|
||||
if(sub_8044B28()) break;
|
||||
if(entityInfo->unk159) break;
|
||||
sub_8055A00(target, entityInfo->action.actionUseIndex, 1, 0, 0);
|
||||
if (!EntityExists(target))
|
||||
break;
|
||||
if (sub_8044B28())
|
||||
break;
|
||||
if (entityInfo->unk159)
|
||||
break;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
sub_8057588(target,1);
|
||||
if (EntityExists(target)) {
|
||||
sub_806A9B4(target,(target->info->action).actionUseIndex);
|
||||
}
|
||||
sub_806A1B0(target);
|
||||
sub_8057588(target, 1);
|
||||
if (EntityExists(target))
|
||||
sub_806A9B4(target, target->info->action.actionUseIndex);
|
||||
|
||||
sub_806A1B0(target);
|
||||
}
|
||||
|
||||
#if NONMATCHING // 99.09% https://decomp.me/scratch/rpwXh
|
||||
void sub_807CB3C(struct Entity *pokemon)
|
||||
{
|
||||
bool8 r4;
|
||||
struct Item *item;
|
||||
struct Item IVar5;
|
||||
struct EntityInfo *entityInfo; // r7
|
||||
struct ActionContainer act;
|
||||
struct Move move;
|
||||
struct AIPossibleMove sp28;
|
||||
bool8 r8;
|
||||
|
||||
entityInfo = pokemon->info;
|
||||
item = sub_8044D90(pokemon, 0, 21);
|
||||
IVar5 = *item;
|
||||
|
||||
if (item->flags & ITEM_FLAG_STICKY) {
|
||||
sub_8045BF8(gUnknown_202DE58, item);
|
||||
SendMessage(pokemon, *gUnknown_80FE3E8);
|
||||
return;
|
||||
}
|
||||
|
||||
act = entityInfo->action;
|
||||
|
||||
if (IsBossFight()) {
|
||||
SendMessage(pokemon, *gPtrMysteriousPowerPreventedUseMessage);
|
||||
r4 = TRUE;
|
||||
}
|
||||
else {
|
||||
r8 = TRUE;
|
||||
InitPokemonMove(&move, GetItemMoveID(IVar5.id));
|
||||
|
||||
if (!entityInfo->isTeamLeader) {
|
||||
sp28.canBeUsed = r8;
|
||||
sp28.weight = 10;
|
||||
AIConsiderMove(&sp28, pokemon, entityInfo->moves);
|
||||
|
||||
if (sp28.canBeUsed) {
|
||||
entityInfo->action.direction = sp28.direction & 7;
|
||||
TargetTileInFront(pokemon);
|
||||
}
|
||||
}
|
||||
|
||||
if (entityInfo->volatileStatus == 1) {
|
||||
SetMessageArgument(gAvailablePokemonNames, pokemon, 0);
|
||||
SendMessage(pokemon, *gUnknown_80FC714);
|
||||
r4 = FALSE;
|
||||
}
|
||||
else if (entityInfo->volatileStatus == 7) {
|
||||
SetMessageArgument(gAvailablePokemonNames, pokemon, 0);
|
||||
SendMessage(pokemon, *gUnknown_80FC718);
|
||||
r4 = FALSE;
|
||||
}
|
||||
else {
|
||||
if (entityInfo->nonVolatileStatus == 4) {
|
||||
SetMessageArgument(gAvailablePokemonNames, pokemon, 0);
|
||||
SendMessage(pokemon, *gUnknown_80FC6A8);
|
||||
r4 = FALSE;
|
||||
r8 = FALSE;
|
||||
}
|
||||
if (r8) {
|
||||
if ((IVar5.id == ITEM_SWITCHER_ORB) || (IVar5.id == ITEM_POUNCE_ORB)) {
|
||||
sub_8044DF0(pokemon, 0, 122);
|
||||
move.moveFlags |= MOVE_FLAG_SET;
|
||||
move.moveFlags |= MOVE_FLAG_ENABLED_FOR_AI;
|
||||
move.PP = 10;
|
||||
sub_8055FA0(pokemon, 0, IVar5.id, 0, 0, &move);
|
||||
r4 = FALSE;
|
||||
}
|
||||
else
|
||||
r4 = sub_8055FA0(pokemon, 0, IVar5.id, 0, 0, &move);
|
||||
}
|
||||
else
|
||||
r4 = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (EntityExists(pokemon)) {
|
||||
if (r4)
|
||||
sub_8044DF0(pokemon, 0, 122);
|
||||
|
||||
sub_8071DA4(pokemon);
|
||||
sub_806CE68(pokemon, 8);
|
||||
|
||||
if (entityInfo->isTeamLeader) {
|
||||
sub_804AC20(&pokemon->pos);
|
||||
sub_807EC28(FALSE);
|
||||
}
|
||||
|
||||
sub_806A5B8(pokemon);
|
||||
sub_8075900(pokemon, gDungeon->unk3A08);
|
||||
}
|
||||
else if (r4)
|
||||
sub_8044D40(&act, 0);
|
||||
|
||||
if (!sub_8044B28())
|
||||
sub_806A1B0(pokemon);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_807CB3C(struct Entity *pokemon)
|
||||
{
|
||||
asm_unified(
|
||||
"push {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x30\n"
|
||||
"\tadds r6, r0, 0\n"
|
||||
"\tldr r7, [r6, 0x70]\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0x15\n"
|
||||
"\tbl sub_8044D90\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tldr r5, [r2]\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0807CB80\n"
|
||||
"\tldr r0, _0807CB78\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tbl sub_8045BF8\n"
|
||||
"\tldr r0, _0807CB7C\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl SendMessage\n"
|
||||
"\tb _0807CD54\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0807CB78: .4byte gUnknown_202DE58\n"
|
||||
"_0807CB7C: .4byte gUnknown_80FE3E8\n"
|
||||
"_0807CB80:\n"
|
||||
"\tadd r0, sp, 0x8\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tadds r1, 0x44\n"
|
||||
"\tldm r1!, {r2-r4}\n"
|
||||
"\tstm r0!, {r2-r4}\n"
|
||||
"\tldm r1!, {r2-r4}\n"
|
||||
"\tstm r0!, {r2-r4}\n"
|
||||
"\tbl IsBossFight\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0807CBAC\n"
|
||||
"\tldr r0, _0807CBA8\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl SendMessage\n"
|
||||
"\tmovs r4, 0x1\n"
|
||||
"\tb _0807CCDE\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0807CBA8: .4byte gPtrMysteriousPowerPreventedUseMessage\n"
|
||||
"_0807CBAC:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tadd r4, sp, 0x20\n"
|
||||
"\tlsls r5, 8\n"
|
||||
"\tlsrs r0, r5, 24\n"
|
||||
"\tbl GetItemMoveID\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tlsls r1, 16\n"
|
||||
"\tlsrs r1, 16\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl InitPokemonMove\n"
|
||||
"\tldrb r0, [r7, 0x7]\n"
|
||||
"\tmov r10, r4\n"
|
||||
"\tmov r9, r5\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0807CC08\n"
|
||||
"\tldr r1, _0807CC20\n"
|
||||
"\tldr r0, [sp, 0x28]\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\torrs r0, r1\n"
|
||||
"\tstr r0, [sp, 0x28]\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tadd r4, sp, 0x28\n"
|
||||
"\tstr r0, [r4, 0x4]\n"
|
||||
"\tmovs r3, 0x8C\n"
|
||||
"\tlsls r3, 1\n"
|
||||
"\tadds r2, r7, r3\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tbl AIConsiderMove\n"
|
||||
"\tldrb r0, [r4]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0807CC08\n"
|
||||
"\tldrb r1, [r4, 0x1]\n"
|
||||
"\tmovs r0, 0x7\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tadds r1, 0x46\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl TargetTileInFront\n"
|
||||
"_0807CC08:\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tadds r0, 0xBC\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _0807CC2C\n"
|
||||
"\tldr r0, _0807CC24\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl SetMessageArgument\n"
|
||||
"\tldr r0, _0807CC28\n"
|
||||
"\tb _0807CC3C\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0807CC20: .4byte 0xffffff00\n"
|
||||
"_0807CC24: .4byte gAvailablePokemonNames\n"
|
||||
"_0807CC28: .4byte gUnknown_80FC714\n"
|
||||
"_0807CC2C:\n"
|
||||
"\tcmp r0, 0x7\n"
|
||||
"\tbne _0807CC50\n"
|
||||
"\tldr r0, _0807CC48\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl SetMessageArgument\n"
|
||||
"\tldr r0, _0807CC4C\n"
|
||||
"_0807CC3C:\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl SendMessage\n"
|
||||
"\tb _0807CCDC\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0807CC48: .4byte gAvailablePokemonNames\n"
|
||||
"_0807CC4C: .4byte gUnknown_80FC718\n"
|
||||
"_0807CC50:\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tadds r0, 0xAC\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x4\n"
|
||||
"\tbne _0807CC72\n"
|
||||
"\tldr r0, _0807CCB8\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl SetMessageArgument\n"
|
||||
"\tldr r0, _0807CCBC\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl SendMessage\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tmov r8, r4\n"
|
||||
"_0807CC72:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0807CCDC\n"
|
||||
"\tmov r5, r9\n"
|
||||
"\tlsrs r0, r5, 24\n"
|
||||
"\tcmp r0, 0xB6\n"
|
||||
"\tbeq _0807CC84\n"
|
||||
"\tcmp r0, 0xBF\n"
|
||||
"\tbne _0807CCC0\n"
|
||||
"_0807CC84:\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0x7A\n"
|
||||
"\tbl sub_8044DF0\n"
|
||||
"\tmov r2, r10\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\torrs r0, r1\n"
|
||||
"\tadd r3, sp, 0x20\n"
|
||||
"\tmovs r1, 0x4\n"
|
||||
"\torrs r0, r1\n"
|
||||
"\tstrb r0, [r3]\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tstrb r0, [r3, 0x4]\n"
|
||||
"\tlsrs r2, r5, 24\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tstr r3, [sp, 0x4]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl sub_8055FA0\n"
|
||||
"\tb _0807CCDE\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0807CCB8: .4byte gAvailablePokemonNames\n"
|
||||
"_0807CCBC: .4byte gUnknown_80FC6A8\n"
|
||||
"_0807CCC0:\n"
|
||||
"\tmov r3, r9\n"
|
||||
"\tlsrs r2, r3, 24\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmov r4, r10\n"
|
||||
"\tstr r4, [sp, 0x4]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl sub_8055FA0\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"\tb _0807CCDE\n"
|
||||
"_0807CCDC:\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"_0807CCDE:\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl EntityExists\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0807CD38\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _0807CCF8\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0x7A\n"
|
||||
"\tbl sub_8044DF0\n"
|
||||
"_0807CCF8:\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl sub_8071DA4\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0x8\n"
|
||||
"\tbl sub_806CE68\n"
|
||||
"\tldrb r0, [r7, 0x7]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0807CD18\n"
|
||||
"\tadds r0, r6, 0x4\n"
|
||||
"\tbl sub_804AC20\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_807EC28\n"
|
||||
"_0807CD18:\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl sub_806A5B8\n"
|
||||
"\tldr r0, _0807CD30\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tldr r1, _0807CD34\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl sub_8075900\n"
|
||||
"\tb _0807CD44\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0807CD30: .4byte gDungeon\n"
|
||||
"_0807CD34: .4byte 0x00003a08\n"
|
||||
"_0807CD38:\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _0807CD44\n"
|
||||
"\tadd r0, sp, 0x8\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl sub_8044D40\n"
|
||||
"_0807CD44:\n"
|
||||
"\tbl sub_8044B28\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0807CD54\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl sub_806A1B0\n"
|
||||
"_0807CD54:\n"
|
||||
"\tadd sp, 0x30\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
Reference in New Issue
Block a user