mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-13 11:35:57 -05:00
one more menu decomp and EncoreMoveAction/StatusTarget decomped
This commit is contained in:
@@ -5299,7 +5299,7 @@ _080551F2:
|
||||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_8057948
|
||||
bl EncoreMoveAction
|
||||
b _080554BA
|
||||
_08055200:
|
||||
adds r0, r7, 0
|
||||
|
||||
@@ -5,124 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8078968
|
||||
sub_8078968:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r5, [r4, 0x70]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08078A4A
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x1
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08078A4A
|
||||
movs r3, 0
|
||||
ldr r0, _080789E8
|
||||
mov r8, r0
|
||||
movs r1, 0x1
|
||||
mov r12, r1
|
||||
movs r0, 0x8C
|
||||
lsls r0, 1
|
||||
adds r2, r5, r0
|
||||
movs r7, 0x10
|
||||
_080789A2:
|
||||
ldrb r1, [r2]
|
||||
mov r0, r12
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080789B4
|
||||
adds r0, r7, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080789BC
|
||||
_080789B4:
|
||||
adds r2, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x3
|
||||
ble _080789A2
|
||||
_080789BC:
|
||||
cmp r3, 0x4
|
||||
bne _080789F0
|
||||
movs r1, 0x9C
|
||||
lsls r1, 1
|
||||
adds r0, r5, r1
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080789F0
|
||||
mov r0, r8
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _080789EC
|
||||
ldr r2, [r0]
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
b _08078A4A
|
||||
.align 2, 0
|
||||
_080789E8: .4byte gAvailablePokemonNames
|
||||
_080789EC: .4byte gUnknown_80FBBD4
|
||||
_080789F0:
|
||||
mov r0, r8
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xBC
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x6
|
||||
beq _08078A38
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
ldr r1, _08078A30
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl CalculateStatusTurns
|
||||
adds r0, 0x1
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xBD
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl nullsub_83
|
||||
ldr r0, _08078A34
|
||||
ldr r2, [r0]
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
b _08078A44
|
||||
.align 2, 0
|
||||
_08078A30: .4byte gUnknown_80F4EF4
|
||||
_08078A34: .4byte gUnknown_80FBB94
|
||||
_08078A38:
|
||||
ldr r0, _08078A54
|
||||
ldr r2, [r0]
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
_08078A44:
|
||||
adds r0, r4, 0
|
||||
bl EntityUpdateStatusSprites
|
||||
_08078A4A:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08078A54: .4byte gUnknown_80FBBB8
|
||||
thumb_func_end sub_8078968
|
||||
|
||||
thumb_func_start sub_8078A58
|
||||
sub_8078A58:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -298,126 +298,4 @@ _080276A0:
|
||||
bx r0
|
||||
thumb_func_end CreateFriendActionMenu
|
||||
|
||||
thumb_func_start sub_80276A8
|
||||
sub_80276A8:
|
||||
push {r4-r7,lr}
|
||||
ldr r5, _0802775C
|
||||
ldr r0, [r5]
|
||||
movs r7, 0xB6
|
||||
lsls r7, 1
|
||||
adds r0, r7
|
||||
movs r1, 0
|
||||
movs r2, 0x14
|
||||
bl MemoryFill16
|
||||
ldr r2, [r5]
|
||||
movs r0, 0x8E
|
||||
lsls r0, 1
|
||||
adds r1, r2, r0
|
||||
ldr r0, _08027760
|
||||
str r0, [r1]
|
||||
movs r3, 0x90
|
||||
lsls r3, 1
|
||||
adds r1, r2, r3
|
||||
movs r0, 0xA
|
||||
str r0, [r1]
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r0, 0
|
||||
bne _080276E4
|
||||
ldr r0, [r5]
|
||||
adds r4, r7, 0
|
||||
adds r0, r4
|
||||
movs r1, 0x1
|
||||
strh r1, [r0]
|
||||
_080276E4:
|
||||
ldr r4, [r5]
|
||||
movs r2, 0x1
|
||||
movs r0, 0x92
|
||||
lsls r0, 1
|
||||
adds r1, r4, r0
|
||||
ldr r0, _08027764
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
movs r3, 0x94
|
||||
lsls r3, 1
|
||||
adds r1, r4, r3
|
||||
movs r0, 0x4
|
||||
str r0, [r1]
|
||||
movs r6, 0x2
|
||||
movs r0, 0x96
|
||||
lsls r0, 1
|
||||
adds r1, r4, r0
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
movs r1, 0x98
|
||||
lsls r1, 1
|
||||
adds r0, r4, r1
|
||||
str r2, [r0]
|
||||
movs r3, 0
|
||||
mov r12, r4
|
||||
movs r4, 0x90
|
||||
lsls r4, 1
|
||||
add r4, r12
|
||||
mov r0, r12
|
||||
adds r2, r0, r7
|
||||
_08027720:
|
||||
ldrh r0, [r2]
|
||||
cmp r0, 0
|
||||
bne _08027730
|
||||
ldr r1, [r4]
|
||||
mov r7, r12
|
||||
ldr r0, [r7, 0x74]
|
||||
cmp r1, r0
|
||||
beq _0802778E
|
||||
_08027730:
|
||||
adds r4, 0x8
|
||||
adds r2, 0x2
|
||||
adds r3, 0x1
|
||||
cmp r3, r6
|
||||
blt _08027720
|
||||
movs r3, 0
|
||||
cmp r3, r6
|
||||
bge _0802778E
|
||||
ldr r1, [r5]
|
||||
movs r2, 0xB6
|
||||
lsls r2, 1
|
||||
adds r0, r1, r2
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _08027768
|
||||
movs r3, 0x90
|
||||
lsls r3, 1
|
||||
adds r0, r1, r3
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x74]
|
||||
b _0802778E
|
||||
.align 2, 0
|
||||
_0802775C: .4byte gUnknown_203B2BC
|
||||
_08027760: .4byte gFriendActionGive
|
||||
_08027764: .4byte gUnknown_80D4970
|
||||
_08027768:
|
||||
adds r3, 0x1
|
||||
cmp r3, r6
|
||||
bge _0802778E
|
||||
ldr r2, [r5]
|
||||
lsls r0, r3, 1
|
||||
movs r4, 0xB6
|
||||
lsls r4, 1
|
||||
adds r1, r2, r4
|
||||
adds r1, r0
|
||||
ldrh r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _08027768
|
||||
lsls r0, r3, 3
|
||||
movs r7, 0x90
|
||||
lsls r7, 1
|
||||
adds r1, r2, r7
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
str r0, [r2, 0x74]
|
||||
_0802778E:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80276A8
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -35,5 +35,6 @@ void TauntStatusTarget(struct Entity * pokemon, struct Entity * target);
|
||||
void HandleStockpile(struct Entity * pokemon, struct Entity * target);
|
||||
void InvisibleStatusTarget(struct Entity * pokemon, struct Entity * target);
|
||||
void PerishSongTarget(struct Entity * pokemon, struct Entity * target);
|
||||
void EncoreStatusTarget(struct Entity * pokemon, struct Entity * target);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -125,7 +125,6 @@ extern u8 sub_807EAA0(u32, u32);
|
||||
extern void sub_80522F4(struct Entity *r1, struct Entity *r2, const char[]);
|
||||
extern s32 sub_80556BC(struct Entity *, struct Entity *, u8, struct Move *, u32, u32);
|
||||
extern bool8 sub_805727C(struct Entity *, struct Entity *, s16);
|
||||
extern void sub_8078968(struct Entity *r0, struct Entity *r1);
|
||||
extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
extern void SetMessageArgument(char[], struct Entity*, u32);
|
||||
extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32);
|
||||
@@ -329,9 +328,9 @@ bool32 sub_80578FC(struct Entity *pokemon, struct Entity *target, struct Move *
|
||||
return flag;
|
||||
}
|
||||
|
||||
bool32 sub_8057948(struct Entity *pokemon, struct Entity *target)
|
||||
bool32 EncoreMoveAction(struct Entity *pokemon, struct Entity *target)
|
||||
{
|
||||
sub_8078968(pokemon, target);
|
||||
EncoreStatusTarget(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -71,23 +71,60 @@ static const u8 filler[] = "pksdir0";
|
||||
|
||||
extern u8 *gUnknown_80D4920[];
|
||||
extern u8 *gUnknown_80D4928[];
|
||||
extern u8 *gUnknown_80D4970[];
|
||||
|
||||
void sub_80276A8(void)
|
||||
{
|
||||
int index;
|
||||
s32 loopMax;
|
||||
|
||||
loopMax = 0;
|
||||
MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C));
|
||||
gUnknown_203B2BC->menuItems[loopMax].text = gFriendActionGive;
|
||||
gUnknown_203B2BC->menuItems[loopMax].menuAction = 10;
|
||||
if (GetNumberOfFilledInventorySlots() == 0) {
|
||||
gUnknown_203B2BC->unk16C[loopMax] = 1;
|
||||
}
|
||||
loopMax += 1;
|
||||
gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4970;
|
||||
gUnknown_203B2BC->menuItems[loopMax].menuAction = 4;
|
||||
loopMax += 1;
|
||||
gUnknown_203B2BC->menuItems[loopMax].text = 0;
|
||||
gUnknown_203B2BC->menuItems[loopMax].menuAction = 1;
|
||||
|
||||
|
||||
for(index = 0; index < loopMax; index++)
|
||||
{
|
||||
if(gUnknown_203B2BC->unk16C[index] == 0)
|
||||
{
|
||||
if(gUnknown_203B2BC->menuItems[index].menuAction == gUnknown_203B2BC->menuAction2)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < loopMax; index++)
|
||||
{
|
||||
if(gUnknown_203B2BC->unk16C[index] == 0)
|
||||
{
|
||||
gUnknown_203B2BC->menuAction2 = gUnknown_203B2BC->menuItems[index].menuAction;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8027794(void)
|
||||
{
|
||||
struct unkStruct_203B2BC *puVar1;
|
||||
u8 *nullText;
|
||||
s32 menuAction;
|
||||
s32 loopMax = 0;
|
||||
|
||||
MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C));
|
||||
puVar1 = gUnknown_203B2BC;
|
||||
nullText = NULL;
|
||||
puVar1->menuItems[0].text = *gUnknown_80D4920;
|
||||
gUnknown_203B2BC->menuItems[0].menuAction = 0x2;
|
||||
menuAction = 1;
|
||||
gUnknown_203B2BC->menuItems[1].text = *gUnknown_80D4928;
|
||||
gUnknown_203B2BC->menuItems[1].menuAction = 3;
|
||||
gUnknown_203B2BC->menuItems[2].text = nullText;
|
||||
gUnknown_203B2BC->menuItems[2].menuAction = menuAction;
|
||||
gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4920;
|
||||
gUnknown_203B2BC->menuItems[loopMax].menuAction = 0x2;
|
||||
loopMax += 1;
|
||||
gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4928;
|
||||
gUnknown_203B2BC->menuItems[loopMax].menuAction = 3;
|
||||
loopMax += 1;
|
||||
gUnknown_203B2BC->menuItems[loopMax].text = NULL;
|
||||
gUnknown_203B2BC->menuItems[loopMax].menuAction = 1;
|
||||
}
|
||||
|
||||
void sub_80277FC(void)
|
||||
|
||||
@@ -32,8 +32,7 @@ struct unkStruct_203B2B4
|
||||
u32 menuAction1;
|
||||
s32 menuAction2;
|
||||
struct MenuStruct unk78;
|
||||
struct MenuItem unkC8[4];
|
||||
u8 fillE8[0x108 - 0xE8];
|
||||
struct MenuItem unkC8[8];
|
||||
u16 unk108[8];
|
||||
struct UnkTextStruct2 unk118[4];
|
||||
};
|
||||
|
||||
@@ -91,7 +91,7 @@ void sub_8036FDC(s32 param_1)
|
||||
}
|
||||
|
||||
gUnknown_203B35C->unk0 = param_1;
|
||||
gUnknown_203B35C->unk4 = 0;
|
||||
gUnknown_203B35C->linkStatus = 0;
|
||||
gUnknown_203B35C->state = 0;
|
||||
iVar3 = 0;
|
||||
do {
|
||||
|
||||
38
src/status.c
38
src/status.c
@@ -112,6 +112,10 @@ extern s16 gUnknown_80F4EE4[];
|
||||
extern s16 gUnknown_80F4EEC[];
|
||||
extern u8 *gUnknown_80FBB04[];
|
||||
extern u8 *gUnknown_80FBB28[];
|
||||
extern u8 *gUnknown_80FBBD4[];
|
||||
extern u8 *gUnknown_80FBBB8[];
|
||||
extern u8 *gUnknown_80FBB94[];
|
||||
extern s16 gUnknown_80F4EF4[];
|
||||
|
||||
extern s32 gUnknown_202DE30[10];
|
||||
|
||||
@@ -138,6 +142,7 @@ extern void nullsub_79(struct Entity *);
|
||||
extern void nullsub_80(struct Entity *);
|
||||
extern void nullsub_81(struct Entity *);
|
||||
extern void nullsub_82(struct Entity *);
|
||||
extern void nullsub_83(struct Entity *);
|
||||
extern void sub_803F580(u32);
|
||||
extern void sub_8040A84(void);
|
||||
extern void sub_8041CA8(struct Entity *);
|
||||
@@ -1187,3 +1192,36 @@ void PerishSongTarget(struct Entity * pokemon, struct Entity * target)
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
||||
void EncoreStatusTarget(struct Entity *pokemon,struct Entity *target)
|
||||
{
|
||||
struct Move *movePtr;
|
||||
int index;
|
||||
struct EntityInfo *EntityInfo;
|
||||
|
||||
EntityInfo = target->info;
|
||||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,TRUE))) {
|
||||
for(index = 0; index < MAX_MON_MOVES; index++)
|
||||
{
|
||||
movePtr = &EntityInfo->moves[index];
|
||||
if ((EntityInfo->moves[index].moveFlags & MOVE_FLAG_EXISTS) && (movePtr->moveFlags & MOVE_FLAG_LAST_USED)) break;
|
||||
}
|
||||
if ((index == MAX_MON_MOVES) && ((EntityInfo->struggleMoveFlags & MOVE_FLAG_LAST_USED) == 0)) {
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FBBD4);
|
||||
}
|
||||
else {
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (EntityInfo->volatileStatus != STATUS_ENCORE) {
|
||||
EntityInfo->volatileStatus = STATUS_ENCORE;
|
||||
EntityInfo->volatileStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EF4,TRUE) + 1;
|
||||
nullsub_83(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FBB94);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FBBB8);
|
||||
}
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user