Decomped SetWalkAction()

This commit is contained in:
AnonymousRandomPerson 2022-01-13 23:18:59 -05:00
parent 453618864e
commit afbc7deaea
6 changed files with 29 additions and 35 deletions

View File

@ -1,34 +1,10 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start SetWalkAction
SetWalkAction:
push {r4,lr}
adds r4, r0, 0
lsls r0, r1, 16
asrs r0, 16
bl GetIsMoving
lsls r0, 24
cmp r0, 0
beq _08044CB6
movs r0, 0x2
b _08044CB8
_08044CB6:
movs r0, 0x1
_08044CB8:
strh r0, [r4]
movs r0, 0
strb r0, [r4, 0x4]
strb r0, [r4, 0xC]
pop {r4}
pop {r0}
bx r0
thumb_func_end SetWalkAction
.syntax unified
.text
thumb_func_start sub_8044CC8
sub_8044CC8:
push {lr}

View File

@ -5,5 +5,7 @@
// 0x44C94
void SetAction(struct DungeonActionContainer *actionPointer, u16 action);
// 0x44CA0
void SetWalkAction(struct DungeonActionContainer *actionPointer, s16 species);
#endif

View File

@ -187,7 +187,7 @@ SECTIONS {
src/code_80428A0.o(.text);
asm/code_80428A0.o(.text);
src/dungeon_action.o(.text);
asm/code_804ACA0.o(.text);
asm/code_8044CC8.o(.text);
src/dungeon_util.o(.text);
asm/code_80450F8.o(.text);
src/dungeon_visibility.o(.text);

View File

@ -1,6 +1,9 @@
#include "global.h"
#include "dungeon_action.h"
#include "constants/dungeon_action.h"
#include "dungeon_entity.h"
#include "pokemon.h"
void SetAction(struct DungeonActionContainer *actionPointer, u16 action)
{
@ -8,3 +11,17 @@ void SetAction(struct DungeonActionContainer *actionPointer, u16 action)
actionPointer->actionUseIndex = 0;
actionPointer->unkC = 0;
}
void SetWalkAction(struct DungeonActionContainer *actionPointer, s16 species)
{
if (GetIsMoving(species))
{
actionPointer->action = DUNGEON_ACTION_WALK;
}
else
{
actionPointer->action = DUNGEON_ACTION_WAIT;
}
actionPointer->actionUseIndex = 0;
actionPointer->unkC = 0;
}

View File

@ -7,6 +7,7 @@
#include "constants/status.h"
#include "constants/targeting.h"
#include "code_80521D0.h"
#include "dungeon_action.h"
#include "dungeon_ai_items.h"
#include "dungeon_capabilities_1.h"
#include "dungeon_global_data.h"
@ -26,7 +27,6 @@ extern char *gPtrItsaMonsterHouseMessage;
extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*);
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
extern void ResetAction(u16*);
extern void SetWalkAction(u16*, s16);
extern void DecideAttack(struct DungeonEntity*);
extern void MoveIfPossible(struct DungeonEntity*, bool8);
extern u8 sub_8044B28(void);
@ -209,7 +209,7 @@ void DecideAction(struct DungeonEntity *pokemon)
ResetAction(&pokemonData->action.action);
if (pokemonData->clientType == CLIENT_TYPE_CLIENT)
{
SetWalkAction(&pokemonData->action.action, pokemonData->entityID);
SetWalkAction(&pokemonData->action, pokemonData->entityID);
pokemonData->action.facingDir = DungeonRandomCapped(NUM_DIRECTIONS);
pokemonData->targetPosition.x = pokemon->posWorld.x;
pokemonData->targetPosition.y = pokemon->posWorld.y - 1;
@ -228,7 +228,7 @@ void DecideAction(struct DungeonEntity *pokemon)
}
if (pokemonData->volatileStatus == VOLATILE_STATUS_CONFUSED)
{
SetWalkAction(&pokemonData->action.action, pokemonData->entityID);
SetWalkAction(&pokemonData->action, pokemonData->entityID);
}
else
{
@ -243,7 +243,7 @@ void DecideAction(struct DungeonEntity *pokemon)
{
if (pokemonData->volatileStatus == VOLATILE_STATUS_CONFUSED)
{
SetWalkAction(&pokemonData->action.action, pokemonData->entityID);
SetWalkAction(&pokemonData->action, pokemonData->entityID);
}
else
{

View File

@ -14,10 +14,9 @@ extern char *gPtrWrappedByMessage;
extern char *gPtrBideMessage;
extern char *gPtrPausedMessage;
extern char *gPtrInfatuatedMessage;
extern char gAvailablePokemonNames[];
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
extern void SetWalkAction(struct DungeonActionContainer*, s16);
extern bool8 CanMoveForward2(struct DungeonEntity*, u8);
extern void DecideAttack(struct DungeonEntity*);