one more menu decomp and EncoreMoveAction/StatusTarget decomped

This commit is contained in:
Seth Barberee
2023-05-22 11:44:13 -07:00
parent 5cf2c9effc
commit caaee60187
9 changed files with 93 additions and 259 deletions

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -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];
};

View File

@@ -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 {

View File

@@ -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);
}
}
}