mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-01 06:55:02 -05:00
Decomped SetWalkAction()
This commit is contained in:
parent
453618864e
commit
afbc7deaea
|
|
@ -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}
|
||||
|
|
@ -5,5 +5,7 @@
|
|||
|
||||
// 0x44C94
|
||||
void SetAction(struct DungeonActionContainer *actionPointer, u16 action);
|
||||
// 0x44CA0
|
||||
void SetWalkAction(struct DungeonActionContainer *actionPointer, s16 species);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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*);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user