mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-30 12:58:10 -05:00
Merge pull request #339 from DizzyEggg/moltres
Match MoltresScreenFlash functions and sub_80861F8
This commit is contained in:
@@ -23,7 +23,7 @@ void sub_800EF64();
|
||||
void sub_803E46C(s32);
|
||||
s32 sub_800E700(s32);
|
||||
void sub_800569C(DungeonPos *, axdata *, u8);
|
||||
void sub_8085F44(void);
|
||||
void sub_8085F44(s32);
|
||||
|
||||
void sub_8052FB8(const u8 *);
|
||||
|
||||
@@ -74,50 +74,46 @@ void sub_80861EC(Entity *a0)
|
||||
GetEntInfo(a0)->unkFE = 0x63;
|
||||
}
|
||||
|
||||
s32 sub_80861F8(s16 param_1,Entity *param_2,bool32 param_3)
|
||||
s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3)
|
||||
{
|
||||
EntityInfo *info;
|
||||
s32 uVar2;
|
||||
s32 uStack_38;
|
||||
DungeonPos pos;
|
||||
unkStruct_80416E0 stack;
|
||||
unkStruct_2039DB0 stack1C;
|
||||
EntityInfo *info;
|
||||
s32 uVar2;
|
||||
s32 uStack_38;
|
||||
DungeonPos pos;
|
||||
unkStruct_80416E0 stack;
|
||||
unkStruct_2039DB0 stack1C;
|
||||
|
||||
#ifdef NONMATCHING
|
||||
s32 param_1_s32 = param_1;
|
||||
#else
|
||||
register s32 param_1_s32 asm("r5") = param_1;
|
||||
#endif
|
||||
// Needed to match.
|
||||
s32 param_1Copy2 = (s16) param_1;
|
||||
s32 param_1Copy = param_1Copy2;
|
||||
u8 param_3_bool32 = param_3;
|
||||
|
||||
u8 param_3_bool32 = param_3;
|
||||
sub_800EE5C(param_1Copy2);
|
||||
sub_800EF64();
|
||||
sub_803E46C(0x46);
|
||||
info = GetEntInfo(param_2);
|
||||
pos.x = 0;
|
||||
pos.y = 0;
|
||||
uStack_38 = sub_800E700(param_1Copy);
|
||||
if (uStack_38 != -1) {
|
||||
sub_800569C(&pos,¶m_2->axObj.axdata,uStack_38);
|
||||
}
|
||||
stack.unk0 = param_1Copy;
|
||||
stack.unk4 = 0;
|
||||
stack.dir = info->action.direction;
|
||||
stack.x = (param_2->pixelPos).x / 256;
|
||||
stack.y = (param_2->pixelPos).y / 256;
|
||||
|
||||
sub_800EE5C(param_1);
|
||||
sub_800EF64();
|
||||
sub_803E46C(0x46);
|
||||
info = GetEntInfo(param_2);
|
||||
pos.x = 0;
|
||||
pos.y = 0;
|
||||
uStack_38 = sub_800E700(param_1_s32);
|
||||
if (uStack_38 != -1) {
|
||||
sub_800569C(&pos,¶m_2->axObj.axdata,
|
||||
uStack_38);
|
||||
}
|
||||
stack.unk0 = param_1_s32;
|
||||
stack.unk4 = 0;
|
||||
stack.dir = (u32)(info->action).direction;
|
||||
stack.x = (param_2->pixelPos).x / 256;
|
||||
stack.y = (param_2->pixelPos).y / 256;
|
||||
stack.unk10 = pos.x;
|
||||
stack.unk12 = pos.y;
|
||||
stack.unk14 = uStack_38;
|
||||
stack.unk18 = 0xffff;
|
||||
stack1C = gUnknown_8107380;
|
||||
|
||||
stack.unk10 = pos.x;
|
||||
stack.unk12 = pos.y;
|
||||
stack.unk14 = uStack_38;
|
||||
stack.unk18 = 0xffff;
|
||||
stack1C = gUnknown_8107380;
|
||||
|
||||
uVar2 = sub_800E890(&stack);
|
||||
if (param_3_bool32 != '\0') {
|
||||
sub_8085F44();
|
||||
uVar2 = -1;
|
||||
}
|
||||
return uVar2;
|
||||
uVar2 = sub_800E890(&stack);
|
||||
if (param_3_bool32) {
|
||||
sub_8085F44(uVar2);
|
||||
uVar2 = -1;
|
||||
}
|
||||
return uVar2;
|
||||
}
|
||||
|
||||
@@ -395,6 +395,7 @@ extern void sub_80460F8(DungeonPos *, Item *, u8);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern bool8 sub_8085B80(struct_8085B80 *);
|
||||
|
||||
void sub_8085F44(s32);
|
||||
void sub_808BBA8(Entity * );
|
||||
void DeoxysScreenFlash(void);
|
||||
void sub_8086A54(Entity *);
|
||||
@@ -1264,158 +1265,53 @@ void MoltresDropInEffect(Entity * moltresEntity)
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void MoltresScreenFlash1(s32 r0, s32 r1)
|
||||
void MoltresScreenFlash1(s32 xArg, s32 yArg)
|
||||
{
|
||||
asm_unified("\tpush {lr}\n"
|
||||
"\tsub sp, 0x8\n"
|
||||
"\tadds r3, r1, 0\n"
|
||||
"\tlsls r1, r0, 1\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tlsls r1, 11\n"
|
||||
"\tmovs r2, 0xC0\n"
|
||||
"\tlsls r2, 4\n"
|
||||
"\tadds r0, r1, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _08087D98\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_08087D98:\n"
|
||||
"\tlsls r0, 8\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tldr r1, _08087DE0\n"
|
||||
"\tldr r2, [sp, 0x4]\n"
|
||||
"\tands r2, r1\n"
|
||||
"\torrs r2, r0\n"
|
||||
"\tstr r2, [sp, 0x4]\n"
|
||||
"\tlsls r0, r3, 1\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tlsls r0, 11\n"
|
||||
"\tmovs r1, 0x80\n"
|
||||
"\tlsls r1, 5\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _08087DB8\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_08087DB8:\n"
|
||||
"\tlsls r0, 8\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r1, _08087DE4\n"
|
||||
"\tands r2, r1\n"
|
||||
"\torrs r2, r0\n"
|
||||
"\tstr r2, [sp, 0x4]\n"
|
||||
"\tmovs r0, 0xB9\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tstr r1, [sp]\n"
|
||||
"\tmovs r1, 0x10\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tadd r3, sp, 0x4\n"
|
||||
"\tbl sub_8085EC8\n"
|
||||
"\tadd sp, 0x8\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08087DE0: .4byte 0xffff0000\n"
|
||||
"_08087DE4: .4byte 0x0000ffff");
|
||||
s32 x, y;
|
||||
DungeonPos newPos;
|
||||
|
||||
x = (xArg * 3) << 11;
|
||||
x += 0xC00;
|
||||
newPos.x = x / 256;
|
||||
|
||||
y = (yArg * 3) << 11;
|
||||
y += 0x1000;
|
||||
newPos.y = y / 256;
|
||||
|
||||
sub_8085EC8(370,16,0,&newPos,0);
|
||||
}
|
||||
|
||||
NAKED
|
||||
void MoltresScreenFlash2(s32 r0, s32 r1)
|
||||
void MoltresScreenFlash2(s32 xArg, s32 yArg)
|
||||
{
|
||||
asm_unified("\tpush {r4-r6,lr}\n"
|
||||
"\tsub sp, 0x8\n"
|
||||
"\tadds r3, r1, 0\n"
|
||||
"\tlsls r1, r0, 1\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tlsls r1, 11\n"
|
||||
"\tmovs r2, 0xC0\n"
|
||||
"\tlsls r2, 4\n"
|
||||
"\tadds r0, r1, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _08087E00\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_08087E00:\n"
|
||||
"\tlsls r0, 8\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tldr r1, _08087EA8\n"
|
||||
"\tldr r2, [sp, 0x4]\n"
|
||||
"\tands r2, r1\n"
|
||||
"\torrs r2, r0\n"
|
||||
"\tstr r2, [sp, 0x4]\n"
|
||||
"\tlsls r0, r3, 1\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tlsls r0, 11\n"
|
||||
"\tmovs r1, 0x80\n"
|
||||
"\tlsls r1, 5\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _08087E20\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_08087E20:\n"
|
||||
"\tlsls r0, 8\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r1, _08087EAC\n"
|
||||
"\tands r2, r1\n"
|
||||
"\torrs r2, r0\n"
|
||||
"\tstr r2, [sp, 0x4]\n"
|
||||
"\tmovs r0, 0xB9\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tstr r1, [sp]\n"
|
||||
"\tmovs r1, 0x16\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tadd r3, sp, 0x4\n"
|
||||
"\tbl sub_8085EC8\n"
|
||||
"\tadds r6, r0, 0\n"
|
||||
"\tmovs r0, 0xF6\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tbl PlaySoundEffect\n"
|
||||
"\tmovs r4, 0xFA\n"
|
||||
"\tmovs r5, 0x1\n"
|
||||
"_08087E4E:\n"
|
||||
"\tstr r5, [sp]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0x1\n"
|
||||
"\tbl SetDungeonBGColorRGB\n"
|
||||
"\tmovs r0, 0x46\n"
|
||||
"\tbl sub_803E46C\n"
|
||||
"\tsubs r4, 0xA\n"
|
||||
"\tcmp r4, 0x13\n"
|
||||
"\tbgt _08087E4E\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tmovs r4, 0xFA\n"
|
||||
"\tmovs r5, 0x1\n"
|
||||
"_08087E74:\n"
|
||||
"\tstr r5, [sp]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0x1\n"
|
||||
"\tbl SetDungeonBGColorRGB\n"
|
||||
"\tmovs r0, 0x46\n"
|
||||
"\tbl sub_803E46C\n"
|
||||
"\tsubs r4, 0xA\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbge _08087E74\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tbl sub_8085EB0\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl sub_8085F44\n"
|
||||
"\tadd sp, 0x8\n"
|
||||
"\tpop {r4-r6}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08087EA8: .4byte 0xffff0000\n"
|
||||
"_08087EAC: .4byte 0x0000ffff");
|
||||
s32 r6;
|
||||
s32 i, x, y;
|
||||
DungeonPos newPos;
|
||||
|
||||
x = (xArg * 3) << 11;
|
||||
x += 0xC00;
|
||||
newPos.x = x / 256;
|
||||
|
||||
y = (yArg * 3) << 11;
|
||||
y += 0x1000;
|
||||
newPos.y = y / 256;
|
||||
|
||||
r6 = sub_8085EC8(370,22,0,&newPos,0);
|
||||
PlaySoundEffect(0x1EC);
|
||||
|
||||
for (i = 250; i >= 20; i -= 10) {
|
||||
SetDungeonBGColorRGB(i, 0, 0, 1, 1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(0xA, 0x46);
|
||||
|
||||
for (i = 250; i >= 0; i -= 10) {
|
||||
SetDungeonBGColorRGB(i, 0, 0, 1, 1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(0xA, 0x46);
|
||||
|
||||
sub_8085EB0();
|
||||
sub_8085F44(r6);
|
||||
}
|
||||
|
||||
void MoltresScreenFlash3(void)
|
||||
|
||||
Reference in New Issue
Block a user