mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-01 00:04:59 -05:00
1317 lines
31 KiB
C
1317 lines
31 KiB
C
#include "global.h"
|
|
#include "gUnknown_203B418.h"
|
|
#include "code_8041D5C.h"
|
|
#include "friend_area.h"
|
|
#include "constants/friend_area.h"
|
|
#include "pokemon.h"
|
|
|
|
extern struct unkDungeon_8041D5C *sub_8085480(void);
|
|
extern struct unkDungeon_8041D5C *sub_8085680(u32);
|
|
extern char gUnknown_202E038[0x50];
|
|
extern struct unkStruct_203B418 *gUnknown_203B418;
|
|
extern u32 gUnknown_202EDC8;
|
|
|
|
extern u32 gUnknown_81062A8;
|
|
extern u32 gUnknown_8106074;
|
|
extern u32 gUnknown_81060BC;
|
|
extern u32 gUnknown_8106104;
|
|
extern u32 gUnknown_8106140;
|
|
extern u32 gUnknown_8106214;
|
|
extern u32 gUnknown_8106244;
|
|
extern u32 gUnknown_810627C;
|
|
extern u32 gUnknown_810697C;
|
|
extern u64 gUnknown_8107544[];
|
|
extern u32 gUnknown_8106778;
|
|
extern u32 gUnknown_81067BC;
|
|
extern u32 gUnknown_81067E0;
|
|
extern u32 gUnknown_8106834;
|
|
extern u32 gUnknown_810688C;
|
|
extern u32 gUnknown_81068D0;
|
|
extern u32 gUnknown_8106918;
|
|
extern u32 gUnknown_8106934;
|
|
extern u32 gUnknown_8106720;
|
|
|
|
extern u32 gUnknown_810663C;
|
|
extern u32 gUnknown_81063D0;
|
|
extern u32 gUnknown_8106400;
|
|
extern u32 gUnknown_810643C;
|
|
extern u32 gUnknown_8106468;
|
|
extern u32 gUnknown_810648C;
|
|
extern u32 gUnknown_81064BC;
|
|
extern u32 gUnknown_8106500;
|
|
extern u32 gUnknown_8106534;
|
|
extern u32 gUnknown_8106560;
|
|
extern u32 *gPtrPurityForestAllowCelebiToJoinText;
|
|
extern u32 gPurityForestAllowCelebiToJoinPrompt;
|
|
extern u32 *gPtrPurityForestRefuseCelebiConfirmText;
|
|
extern u32 gPurityForestRefuseCelebiConfirmPrompt;
|
|
extern u32 gUnknown_81062B4;
|
|
extern u32 gUnknown_81062E8;
|
|
extern u32 gUnknown_8106368;
|
|
extern u32 gUnknown_8106390;
|
|
extern u32 gUnknown_81063C4;
|
|
extern u32 gUnknown_8106068;
|
|
extern u32 gUnknown_8105E88;
|
|
extern u32 gUnknown_8105EF8;
|
|
extern u32 gUnknown_8105F38;
|
|
extern u32 gUnknown_8105F74;
|
|
extern u32 gUnknown_8105FA0;
|
|
extern u32 gUnknown_8105FD8;
|
|
extern u32 gUnknown_8106024;
|
|
|
|
extern u32 gUnknown_81058C4;
|
|
extern u32 gUnknown_81058A8;
|
|
extern u8 sub_800E9A8(u32);
|
|
extern void sub_800DC14(u32);
|
|
extern void sub_808BAA4();
|
|
|
|
extern void sub_8086A3C(struct unkDungeon_8041D5C *r0);
|
|
extern void sub_8083E88(u32);
|
|
extern void sub_80854D4(void);
|
|
extern void sub_80855E4(void *);
|
|
extern void sub_8085930(u32);
|
|
extern void sub_8068FE0(struct unkDungeon_8041D5C *, u32, u32);
|
|
extern void sub_8085860(s16 r0, u32 r1);
|
|
extern void sub_80866C4(u32 *);
|
|
extern void sub_8083EA8(u32, u32);
|
|
extern void sub_8086448();
|
|
extern void sub_80866C4(u32 *r0);
|
|
|
|
extern void sub_803E708(u32, u32);
|
|
extern void sub_8086448(void);
|
|
extern void sub_8086598(void);
|
|
extern void SpriteLookAroundEffect(struct unkDungeon_8041D5C *);
|
|
extern void sub_80862BC(struct unkDungeon_8041D5C *);
|
|
extern void PlaySoundEffect(u32);
|
|
extern void sub_806CDD4(struct unkDungeon_8041D5C *, u32, u32);
|
|
extern void sub_80869E4(struct unkDungeon_8041D5C *, u32, u32, u32);
|
|
extern void sub_806CE68(struct unkDungeon_8041D5C *, u32);
|
|
extern void sub_804539C(struct unkDungeon_8041D5C *, u32, u32);
|
|
extern void sub_803E46C(u32);
|
|
extern void sub_8042B0C(struct unkDungeon_8041D5C *);
|
|
extern void sub_8085918(struct unkDungeon_8041D5C *, u32);
|
|
extern void sub_806CE68(struct unkDungeon_8041D5C *r0, u32);
|
|
extern void sub_8052910(u32 *);
|
|
extern void sub_803E708(u32, u32);
|
|
extern u8 sub_80450E0(struct unkDungeon_8041D5C *);
|
|
extern u8 HasRecruitedMon(u32);
|
|
extern u8 sub_806FD18(struct unkDungeon_8041D5C *);
|
|
extern u8 sub_8083E74(u32);
|
|
extern s32 sub_8052C68(u32 *, u32 *, u32 *, u32);
|
|
extern void sub_8083F14();
|
|
extern void sub_80861D4(struct unkDungeon_8041D5C *, u32, u32);
|
|
extern void sub_806FDF4(struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C **);
|
|
extern u32 sub_80861F8(u32, struct unkDungeon_8041D5C *, u32);
|
|
extern void sub_8083ED8(u32);
|
|
extern u32 sub_803F994();
|
|
extern s32 sub_803F9B0();
|
|
extern void sub_803F878(u32, s32);
|
|
extern void sub_8086A70(struct unkDungeon_8041D5C *, u32, u32);
|
|
extern void sub_8085C54(u32, u32, u32, u32, u32);
|
|
extern void sub_803E9D0(void);
|
|
extern void DeoxysScreenFlash(void);
|
|
extern void sub_8085EB0();
|
|
extern void sub_808563C(void *);
|
|
extern void sub_80858AC(u32 *, u32);
|
|
|
|
void sub_808C5AC(struct unkDungeon_8041D5C *r0);
|
|
void sub_808C550(void);
|
|
void sub_808C590(struct unkDungeon_8041D5C *r0);
|
|
void sub_808C5A0(struct unkDungeon_8041D5C *r0);
|
|
void sub_808C9B0();
|
|
void sub_808C8E0(struct unkDungeon_8041D5C *param_1);
|
|
void sub_808C360(void);
|
|
void KyogreScreenFlash();
|
|
|
|
void sub_808C0CC();
|
|
void sub_808BFA0();
|
|
void sub_808C02C();
|
|
extern void sub_80861B8(struct unkDungeon_8041D5C *, u32, u32);
|
|
|
|
void nullsub_99();
|
|
extern u32 sub_8084100(s32);
|
|
extern bool8 *gFriendAreas;
|
|
|
|
extern void sub_8049884();
|
|
extern void sub_8049B8C();
|
|
extern void sub_8049ED4();
|
|
extern void sub_8040A84();
|
|
extern void sub_8086A54(struct unkDungeon_8041D5C *);
|
|
|
|
struct unk8049590
|
|
{
|
|
u16 unk0;
|
|
u16 fill2;
|
|
u16 unk4;
|
|
u16 unk6;
|
|
u8 unk8;
|
|
};
|
|
|
|
extern struct unk8049590 *sub_8049590(u32, u32);
|
|
extern void sub_806BFC0(struct subStruct_8048524 *, u32);
|
|
|
|
void sub_808BBA8(struct unkDungeon_8041D5C *param_1)
|
|
{
|
|
sub_806BFC0(param_1->unk70,0);
|
|
}
|
|
|
|
void sub_808BBB8(struct unkDungeon_8041D5C *param_1)
|
|
{
|
|
s32 iVar1;
|
|
s32 iVar2;
|
|
|
|
sub_80861F8(0x1b,param_1,0);
|
|
sub_8086A54(param_1);
|
|
sub_80861B8(param_1,0xe,0);
|
|
iVar1 = 0xa000;
|
|
iVar2 = 0x200;
|
|
PlaySoundEffect(0x1f8);
|
|
while( 1 ) {
|
|
iVar1 = iVar1 - iVar2;
|
|
if (iVar1 < 0x1800) {
|
|
iVar2 = 0x100;
|
|
}
|
|
if (iVar1 < 0) break;
|
|
param_1->unk70->unk174 = iVar1;
|
|
sub_803E46C(0x46);
|
|
}
|
|
param_1->unk70->unk174 = 0;
|
|
}
|
|
|
|
void sub_808BC20(struct unkDungeon_8041D5C * param_1)
|
|
{
|
|
s32 uVar1;
|
|
|
|
PlaySoundEffect(0x298);
|
|
for(uVar1 = 0; uVar1 < 0x19; uVar1++){
|
|
sub_8085918(param_1,uVar1 & 7);
|
|
sub_803E708(3,0x46);
|
|
}
|
|
param_1->unk70->unk15E = 1;
|
|
PlaySoundEffect(0x27f);
|
|
sub_80861F8(99,param_1,1);
|
|
}
|
|
|
|
void JirachiWishGrantDialogue(struct unkDungeon_8041D5C *param_1)
|
|
{
|
|
u32 uVar2;
|
|
|
|
param_1->unk70->unk15D = 1;
|
|
// Nnnnnnnnnn!
|
|
sub_8052910(&gUnknown_81058A8);
|
|
PlaySoundEffect(0x375);
|
|
sub_80861F8(0x67,param_1,1);
|
|
PlaySoundEffect(0x2a8);
|
|
uVar2 = sub_80861F8(0x68,param_1,0);
|
|
// Taaaaaaaah!
|
|
sub_8052910(&gUnknown_81058C4);
|
|
if (sub_800E9A8(uVar2) != 0) {
|
|
sub_800DC14(uVar2);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
sub_808BAA4();
|
|
}
|
|
|
|
void sub_808BCE4(void)
|
|
{
|
|
struct unk8049590 *puVar1;
|
|
|
|
puVar1 = sub_8049590(gUnknown_203B418->unkE23C, gUnknown_203B418->unkE23E);
|
|
puVar1->unk0 &= 0xfffc;
|
|
puVar1->unk0 |= 16;
|
|
puVar1->unk0 &= 0xfdff;
|
|
sub_8049884();
|
|
sub_8049B8C();
|
|
sub_8049ED4();
|
|
sub_8040A84();
|
|
}
|
|
|
|
void sub_808BD38(void)
|
|
{
|
|
struct unk8049590 *puVar1;
|
|
|
|
puVar1 = sub_8049590(gUnknown_203B418->unkE23C, gUnknown_203B418->unkE23E);
|
|
puVar1->unk0 &= 0xfffc;
|
|
puVar1->unk0 |= 1;
|
|
puVar1->unk0 &= 0xffef;
|
|
puVar1->unk0 |= (0x200);
|
|
puVar1->unk8 = 1;
|
|
sub_8049884();
|
|
sub_8049B8C();
|
|
sub_8049ED4();
|
|
sub_8040A84();
|
|
}
|
|
|
|
u8 JirachiFriendAreaSearch(void)
|
|
{
|
|
u8 unlockCondition;
|
|
s32 friendAreaCounter;
|
|
s32 numUnlockableAreas;
|
|
u8 friendAreas[NUM_FRIEND_AREAS];
|
|
u32 friendAreaIndex;
|
|
|
|
// Build a copy of friend area list and keep track of
|
|
// how many are only Story Unlockable
|
|
numUnlockableAreas = 0;
|
|
for(friendAreaCounter = 1; friendAreaCounter < NUM_FRIEND_AREAS; friendAreaCounter++){
|
|
unlockCondition = GetFriendAreaUnlockCondition(friendAreaCounter);
|
|
if (!(unlockCondition == UNLOCK_LEGENDARY_REQUEST)){
|
|
if (!(unlockCondition == UNLOCK_WONDER_MAIL)){
|
|
if(!gFriendAreas[friendAreaCounter]) {
|
|
friendAreas[numUnlockableAreas] = friendAreaCounter;
|
|
numUnlockableAreas++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (numUnlockableAreas == 0) {
|
|
return NUM_FRIEND_AREAS;
|
|
}
|
|
else {
|
|
// Randomly pick 1
|
|
friendAreaIndex = sub_8084100(numUnlockableAreas);
|
|
return friendAreas[friendAreaIndex];
|
|
}
|
|
}
|
|
|
|
void sub_808BDEC(void)
|
|
{
|
|
struct unkDungeon_8041D5C * iVar2;
|
|
struct unkDungeon_8041D5C * uVar3;
|
|
|
|
iVar2 = sub_8085480();
|
|
uVar3 = sub_8085680(0x1b);
|
|
sub_8083F14();
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_80855E4(sub_8086A3C);
|
|
if (HasRecruitedMon(SPECIES_LUGIA)) {
|
|
sub_8083E88(0x23);
|
|
sub_8068FE0(uVar3,0x21c,0);
|
|
}
|
|
else {
|
|
gUnknown_203B418->unk7 = 1;
|
|
sub_8085918(uVar3,0);
|
|
}
|
|
sub_8085860(iVar2->unk4,iVar2->unk6 - 3);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LUGIA);
|
|
}
|
|
|
|
void sub_808BE70(u8 param_1,u8 param_2)
|
|
{
|
|
if ((param_2 == 0x33) && (param_1 == 0x1B)) {
|
|
gUnknown_203B418->unk2 = 1;
|
|
}
|
|
}
|
|
|
|
|
|
void LugiaPreFightDialogue(void)
|
|
{
|
|
struct unkDungeon_8041D5C * iVar2;
|
|
struct unkDungeon_8041D5C * uVar3;
|
|
|
|
iVar2 = sub_8085480();
|
|
uVar3 = sub_8085680(0x1b);
|
|
if (HasRecruitedMon(SPECIES_LUGIA)) {
|
|
sub_8086448();
|
|
sub_80866C4(&gUnknown_8106068);
|
|
}
|
|
else {
|
|
sub_8083F14();
|
|
sub_8086448();
|
|
sub_8052910(&gUnknown_8105E88);
|
|
sub_8083EA8(0x23,0x3c);
|
|
sub_808C0CC();
|
|
sub_8052910(&gUnknown_8105EF8);
|
|
sub_808BFA0();
|
|
sub_8052910(&gUnknown_8105F38);
|
|
sub_803E708(10,0x46);
|
|
sub_8052910(&gUnknown_8105F74);
|
|
PlaySoundEffect(0x1f8);
|
|
sub_80861D4(uVar3,0xd,0);
|
|
sub_803E708(0x2b,0x46);
|
|
sub_80861B8(uVar3,0,0);
|
|
sub_8052910(&gUnknown_8105FA0);
|
|
sub_808BFA0();
|
|
sub_8052910(&gUnknown_8105FD8);
|
|
sub_808C02C();
|
|
sub_8085C54(0xffffff06,0xffffff06,0xffffff06,1,0);
|
|
sub_8083F14();
|
|
sub_80861D4(uVar3,7,0);
|
|
sub_8052910(&gUnknown_8106024);
|
|
sub_808BFA0();
|
|
sub_8086A70(uVar3,800,0x20);
|
|
sub_8083E88(0x23);
|
|
sub_80858AC(&iVar2->unkC,0x10);
|
|
}
|
|
}
|
|
|
|
void sub_808BFA0(void)
|
|
{
|
|
s32 iVar1;
|
|
|
|
PlaySoundEffect(0x1f6);
|
|
for(iVar1 = 250; iVar1 > 149; iVar1 -= 10){
|
|
sub_8085C54(0,0,iVar1,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
for(iVar1 = 250; iVar1 > 199; iVar1 -= 10){
|
|
sub_8085C54(0,iVar1,iVar1,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10){
|
|
sub_8085C54(0,0,iVar1,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
sub_8085EB0();
|
|
}
|
|
|
|
void sub_808C02C(void)
|
|
{
|
|
s32 iVar1;
|
|
|
|
PlaySoundEffect(0x1f6);
|
|
|
|
for(iVar1 = 0; iVar1 < 200; iVar1 += 100){
|
|
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
|
sub_803E46C(0x46);
|
|
}
|
|
|
|
for(iVar1 = 200; iVar1 >= 0; iVar1 -= 100){
|
|
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
|
sub_803E46C(0x46);
|
|
}
|
|
|
|
sub_803E708(4,0x46);
|
|
|
|
for(iVar1 = 0; iVar1 < 200; iVar1 += 100){
|
|
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
|
sub_803E46C(0x46);
|
|
}
|
|
|
|
for(iVar1 = 200; iVar1 >= 0; iVar1 -= 100){
|
|
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
|
sub_803E46C(0x46);
|
|
}
|
|
|
|
sub_803E708(10,0x46);
|
|
sub_8085EB0();
|
|
}
|
|
|
|
void sub_808C0CC(void)
|
|
{
|
|
gUnknown_202EDC8 = 0x1f;
|
|
sub_8085C54(0,0,0,1,1);
|
|
sub_803E9D0();
|
|
sub_803E46C(0x46);
|
|
gUnknown_203B418->unk7 = 0;
|
|
sub_808BFA0();
|
|
}
|
|
|
|
void sub_808C10C(void)
|
|
{
|
|
struct unkDungeon_8041D5C * iVar1;
|
|
struct unkDungeon_8041D5C * uVar2;
|
|
|
|
u32 uVar3;
|
|
s32 iVar2;
|
|
|
|
iVar1 = sub_8085480();
|
|
uVar2 = sub_8085680(0x1c);
|
|
sub_8083F14();
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
if (HasRecruitedMon(SPECIES_KYOGRE)) {
|
|
sub_8068FE0(uVar2,0x21c,0);
|
|
}
|
|
else {
|
|
gUnknown_203B418->unk7 = 1;
|
|
sub_8085918(uVar2,0);
|
|
}
|
|
sub_8085860(iVar1->unk4,iVar1->unk6);
|
|
uVar3 = sub_803F994();
|
|
iVar2 = sub_803F9B0();
|
|
sub_803F878(uVar3,iVar2 + -0x1000);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_KYOGRE);
|
|
// TODO: gUnknown_202E088 doesn't match but gUnknown_202E038 + 0x50 does
|
|
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_GROUDON);
|
|
}
|
|
|
|
void sub_808C1A4(u8 param_1,u8 param_2)
|
|
{
|
|
if ((param_2 == 0x34) && (param_1 == 0x1C)) {
|
|
gUnknown_203B418->unk2 = 1;
|
|
sub_8083E88(0x23);
|
|
}
|
|
}
|
|
|
|
void KyogrePreFightDialogue(void)
|
|
{
|
|
struct unkDungeon_8041D5C *iVar2;
|
|
struct unkDungeon_8041D5C *uVar3;
|
|
|
|
iVar2 = sub_8085480();
|
|
uVar3 = sub_8085680(0x1c);
|
|
sub_8083F14();
|
|
if (HasRecruitedMon(SPECIES_KYOGRE)) {
|
|
sub_8083EA8(0x23,0x3c);
|
|
SpriteLookAroundEffect(iVar2);
|
|
sub_803E708(10,0x46);
|
|
sub_8052910(&gUnknown_81062A8);
|
|
sub_803E708(10,0x46);
|
|
gUnknown_203B418->unk2 = 1;
|
|
}
|
|
else {
|
|
sub_8052910(&gUnknown_8106074);
|
|
sub_803E708(10,0x46);
|
|
sub_8052910(&gUnknown_81060BC);
|
|
sub_803E708(10,0x46);
|
|
nullsub_99();
|
|
sub_803E708(10,0x46);
|
|
// Gwwwwwooooooooh
|
|
sub_8052910(&gUnknown_8106104);
|
|
sub_803E708(10,0x46);
|
|
sub_8083EA8(0x23,0x3c);
|
|
sub_808C360();
|
|
// My duels agaisnt $m3 (Groudon) left us both exhausted
|
|
sub_8052910(&gUnknown_8106140);
|
|
KyogreScreenFlash();
|
|
// I am $m2 (Kyogre)!
|
|
// The lord of the sea!
|
|
sub_8052910(&gUnknown_8106214);
|
|
KyogreScreenFlash();
|
|
// Witness the destructive force of my waves!
|
|
sub_8052910(&gUnknown_8106244);
|
|
KyogreScreenFlash();
|
|
// Marvel at my awesome
|
|
// power!
|
|
sub_8052910(&gUnknown_810627C);
|
|
sub_803E708(10,0x46);
|
|
sub_8086A70(uVar3,600,0xb);
|
|
sub_8083E88(0x23);
|
|
sub_80858AC(&iVar2->unkC,0x10);
|
|
}
|
|
}
|
|
|
|
void nullsub_99(void)
|
|
{
|
|
}
|
|
|
|
void KyogreScreenFlash(void)
|
|
{
|
|
s32 iVar1;
|
|
|
|
PlaySoundEffect(0x1f8);
|
|
for(iVar1 = 250; iVar1 > 149; iVar1 -= 10){
|
|
sub_8085C54(0,0,iVar1,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
for(iVar1 = 250; iVar1 > 199; iVar1 -= 10){
|
|
sub_8085C54(0,iVar1,iVar1,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10){
|
|
sub_8085C54(0,0,iVar1,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
sub_8085EB0();
|
|
}
|
|
|
|
void sub_808C360(void)
|
|
{
|
|
gUnknown_202EDC8 = 0x1f;
|
|
sub_8085C54(0,0,0,1,1);
|
|
sub_803E9D0();
|
|
sub_803E46C(0x46);
|
|
gUnknown_203B418->unk7 = 0;
|
|
KyogreScreenFlash();
|
|
}
|
|
|
|
void sub_808C3A0(void)
|
|
{
|
|
struct unkDungeon_8041D5C * iVar2;
|
|
|
|
iVar2 = sub_8085480();
|
|
sub_8083F14();
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_80855E4(sub_8086A3C);
|
|
if (HasRecruitedMon(SPECIES_DEOXYS_NORMAL)) {
|
|
sub_808563C(sub_808C590);
|
|
}
|
|
else {
|
|
gUnknown_203B418->unk7 = 1;
|
|
sub_808563C(sub_808C5A0);
|
|
}
|
|
sub_8085860(iVar2->unk4,iVar2->unk6 - 3);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_DEOXYS_NORMAL);
|
|
}
|
|
|
|
void sub_808C414(u8 param_1,u8 param_2)
|
|
{
|
|
if ((param_2 == 0x35) && (param_1 == 0x1D)) {
|
|
gUnknown_203B418->unk2 = 1;
|
|
sub_8083E88(0x1a);
|
|
}
|
|
}
|
|
|
|
void DeoxysPreFightDialogue(void)
|
|
{
|
|
struct unkDungeon_8041D5C * iVar2;
|
|
|
|
iVar2 = sub_8085480();
|
|
sub_8086448();
|
|
if (HasRecruitedMon(SPECIES_DEOXYS_NORMAL)) {
|
|
// There appears to be no one here.
|
|
// It's impossible to go any further
|
|
sub_80866C4(&gUnknown_81063C4);
|
|
}
|
|
else {
|
|
sub_8052910(&gUnknown_81062B4);
|
|
sub_8083EA8(0x1a,0x3c);
|
|
sub_808C550();
|
|
sub_8052910(&gUnknown_81062E8);
|
|
DeoxysScreenFlash();
|
|
sub_8052910(&gUnknown_8106368);
|
|
DeoxysScreenFlash();
|
|
sub_8052910(&gUnknown_8106390);
|
|
sub_803E708(10,0x46);
|
|
sub_808563C(sub_808C5AC);
|
|
sub_80858AC(&iVar2->unkC,0x10);
|
|
}
|
|
}
|
|
|
|
void DeoxysScreenFlash(void)
|
|
{
|
|
s32 iVar1;
|
|
|
|
PlaySoundEffect(0x2c1);
|
|
for(iVar1 = 250; iVar1 > 149; iVar1 -= 10){
|
|
sub_8085C54(iVar1,0,0,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
for(iVar1 = 250; iVar1 > 199; iVar1 -= 10){
|
|
sub_8085C54(iVar1,iVar1,0,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10){
|
|
sub_8085C54(iVar1,0,0,1,1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_803E708(10,0x46);
|
|
sub_8085EB0();
|
|
}
|
|
|
|
void sub_808C550(void)
|
|
{
|
|
gUnknown_202EDC8 = 0x1f;
|
|
sub_8085C54(0,0,0,1,1);
|
|
sub_803E9D0();
|
|
sub_803E46C(0x46);
|
|
gUnknown_203B418->unk7 = 0;
|
|
DeoxysScreenFlash();
|
|
}
|
|
|
|
void sub_808C590(struct unkDungeon_8041D5C *r0)
|
|
{
|
|
sub_8068FE0(r0, 0x21C, 0);
|
|
}
|
|
|
|
void sub_808C5A0(struct unkDungeon_8041D5C *r0)
|
|
{
|
|
sub_8085918(r0, 0);
|
|
}
|
|
|
|
void sub_808C5AC(struct unkDungeon_8041D5C *r0)
|
|
{
|
|
sub_8086A70(r0, 0x3b6, 0x20);
|
|
}
|
|
|
|
void sub_808C5C0(void)
|
|
{
|
|
struct unkDungeon_8041D5C * iVar1;
|
|
struct unkDungeon_8041D5C * uVar2;
|
|
|
|
u32 uVar3;
|
|
s32 iVar2;
|
|
|
|
iVar1 = sub_8085480();
|
|
uVar2 = sub_8085680(0x1e);
|
|
sub_8083E88(0x7f);
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_8085918(uVar2,0);
|
|
sub_8085860(iVar1->unk4,iVar1->unk6);
|
|
uVar3 = sub_803F994();
|
|
iVar2 = sub_803F9B0();
|
|
sub_803F878(uVar3,iVar2 + 0xfffff000);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_CELEBI);
|
|
}
|
|
|
|
// Dummy Celebi Fight Dialogue??
|
|
void nullsub_100(void)
|
|
{
|
|
}
|
|
|
|
#ifdef NONMATCHING
|
|
void CelebiJoinDialogue(void)
|
|
{
|
|
struct unkDungeon_8041D5C *uVar2;
|
|
s32 state;
|
|
s32 menuChoice;
|
|
struct unkDungeon_8041D5C *local_1c;
|
|
|
|
uVar2 = sub_8085480();
|
|
local_1c = sub_8085680(0x1e);
|
|
if ((HasRecruitedMon(SPECIES_CELEBI)) || (sub_806FD18(local_1c) == '\0'))
|
|
{
|
|
sub_8068FE0(local_1c,0x21c,0);
|
|
SpriteLookAroundEffect(uVar2);
|
|
sub_803E708(10,0x46);
|
|
// .........
|
|
sub_8052910(&gUnknown_810663C);
|
|
}
|
|
else
|
|
{
|
|
SpriteLookAroundEffect(uVar2);
|
|
sub_803E708(10,0x46);
|
|
sub_80862BC(uVar2);
|
|
sub_803E708(10,0x46);
|
|
// Oh? There's someone there.
|
|
sub_8052910(&gUnknown_81063D0);
|
|
sub_803E708(10,0x46);
|
|
sub_8086598();
|
|
sub_8086598();
|
|
sub_8086598();
|
|
sub_8086598();
|
|
// The Time-Traveling Pokemon $m2 (Celebi)!
|
|
sub_8052910(&gUnknown_8106400);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_806CDD4(local_1c,10,0);
|
|
sub_803E708(0x14,0x46);
|
|
sub_806CE68(local_1c,0);
|
|
sub_803E708(4,0x46);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_806CDD4(local_1c,10,0);
|
|
sub_8052910(&gUnknown_810643C);
|
|
sub_803E708(10,0x46);
|
|
state = 0;
|
|
do {
|
|
switch(state)
|
|
{
|
|
case 0:
|
|
do {
|
|
// NOTE: 0 and Load of ptr switch order in compiler but else matches
|
|
menuChoice = sub_8052C68(0,gPtrPurityForestAllowCelebiToJoinText,
|
|
&gPurityForestAllowCelebiToJoinPrompt,0x701);
|
|
} while (menuChoice < 1);
|
|
sub_803E708(10,0x46);
|
|
if (menuChoice == 1)
|
|
{
|
|
sub_8083F14();
|
|
PlaySoundEffect(0xcc);
|
|
while (sub_8083E74(0xcc) != 0) {
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_8083E88(0x7f);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_80861D4(local_1c,0xd,0);
|
|
sub_803E708(0x37,0x46);
|
|
PlaySoundEffect(0x1d5);
|
|
sub_803E708(0x1a,0x46);
|
|
PlaySoundEffect(0x1d5);
|
|
sub_803E708(0x1c,0x46);
|
|
sub_8052910(&gUnknown_8106468);
|
|
sub_803E708(10,0x46);
|
|
sub_806FDF4(uVar2,local_1c,&local_1c);
|
|
sub_8083E88(0x7f);
|
|
sub_8052910(&gUnknown_810648C);
|
|
sub_803E708(10,0x46);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_80861D4(local_1c,0xd,0);
|
|
sub_803E708(0x37,0x46);
|
|
PlaySoundEffect(0x1d5);
|
|
sub_803E708(0x1a,0x46);
|
|
PlaySoundEffect(0x1d5);
|
|
sub_803E708(0x1b,0x46);
|
|
sub_8052910(&gUnknown_81064BC);
|
|
sub_803E708(10,0x46);
|
|
state = 2;
|
|
}
|
|
else
|
|
{
|
|
state = 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
do {
|
|
// NOTE: 0 and Load of ptr switch order in compiler but else matches
|
|
menuChoice = sub_8052C68(0,gPtrPurityForestRefuseCelebiConfirmText,
|
|
&gPurityForestRefuseCelebiConfirmPrompt,0x701);
|
|
} while (menuChoice < 1);
|
|
if (menuChoice == 1)
|
|
state = 0;
|
|
else
|
|
{
|
|
sub_803E708(10,0x46);
|
|
sub_8052910(&gUnknown_8106500);
|
|
sub_80861F8(0x3e,local_1c,1);
|
|
sub_803E708(0x18,0x46);
|
|
sub_80861F8(0x3e,local_1c,1);
|
|
sub_803E708(0xe,0x46);
|
|
sub_8052910(&gUnknown_8106534);
|
|
sub_803E708(10,0x46);
|
|
sub_808C8E0(local_1c);
|
|
sub_8052910(&gUnknown_8106560);
|
|
sub_803E708(10,0x46);
|
|
state = 2;
|
|
}
|
|
break;
|
|
}
|
|
} while (state != 2);
|
|
}
|
|
sub_8083ED8(0x1e);
|
|
sub_803E708(0x1e,0x46);
|
|
gUnknown_203B418->unk2 = 1;
|
|
}
|
|
#else
|
|
NAKED
|
|
void CelebiJoinDialogue(void)
|
|
{
|
|
asm_unified(
|
|
"\tpush {r4-r7,lr}\n"
|
|
"\tmov r7, r8\n"
|
|
"\tpush {r7}\n"
|
|
"\tsub sp, 0x4\n"
|
|
"\tbl sub_8085480\n"
|
|
"\tadds r7, r0, 0\n"
|
|
"\tmovs r0, 0x1E\n"
|
|
"\tbl sub_8085680\n"
|
|
"\tstr r0, [sp]\n"
|
|
"\tmovs r0, 0x8A\n"
|
|
"\tlsls r0, 1\n"
|
|
"\tbl HasRecruitedMon\n"
|
|
"\tlsls r0, 24\n"
|
|
"\tcmp r0, 0\n"
|
|
"\tbne _0808C658\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tbl sub_806FD18\n"
|
|
"\tlsls r0, 24\n"
|
|
"\tcmp r0, 0\n"
|
|
"\tbne _0808C680\n"
|
|
"_0808C658:\n"
|
|
"\tmovs r1, 0x87\n"
|
|
"\tlsls r1, 2\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tmovs r2, 0\n"
|
|
"\tbl sub_8068FE0\n"
|
|
"\tadds r0, r7, 0\n"
|
|
"\tbl SpriteLookAroundEffect\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C67C\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tb _0808C8AC\n"
|
|
"\t.align 2, 0\n"
|
|
"_0808C67C: .4byte gUnknown_810663C\n"
|
|
"_0808C680:\n"
|
|
"\tadds r0, r7, 0\n"
|
|
"\tbl SpriteLookAroundEffect\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tadds r0, r7, 0\n"
|
|
"\tbl sub_80862BC\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C71C\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tbl sub_8086598\n"
|
|
"\tbl sub_8086598\n"
|
|
"\tbl sub_8086598\n"
|
|
"\tbl sub_8086598\n"
|
|
"\tldr r0, _0808C720\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tldr r4, _0808C724\n"
|
|
"\tadds r0, r4, 0\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tmovs r1, 0xA\n"
|
|
"\tmovs r2, 0\n"
|
|
"\tbl sub_806CDD4\n"
|
|
"\tmovs r0, 0x14\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tmovs r1, 0\n"
|
|
"\tbl sub_806CE68\n"
|
|
"\tmovs r0, 0x4\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tadds r0, r4, 0\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tmovs r1, 0xA\n"
|
|
"\tmovs r2, 0\n"
|
|
"\tbl sub_806CDD4\n"
|
|
"\tldr r0, _0808C728\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tmovs r0, 0\n"
|
|
"\tmov r8, r4\n"
|
|
"\tldr r6, _0808C72C\n"
|
|
"_0808C70E:\n"
|
|
"\tcmp r0, 0\n"
|
|
"\tbeq _0808C730\n"
|
|
"\tcmp r0, 0x1\n"
|
|
"\tbne _0808C718\n"
|
|
"\tb _0808C828\n"
|
|
"_0808C718:\n"
|
|
"\tb _0808C8A6\n"
|
|
"\t.align 2, 0\n"
|
|
"_0808C71C: .4byte gUnknown_81063D0\n"
|
|
"_0808C720: .4byte gUnknown_8106400\n"
|
|
"_0808C724: .4byte 0x000001c7\n"
|
|
"_0808C728: .4byte gUnknown_810643C\n"
|
|
"_0808C72C: .4byte 0x000001d5\n"
|
|
"_0808C730:\n"
|
|
"\tldr r5, _0808C75C\n"
|
|
"_0808C732:\n"
|
|
"\tmovs r0, 0\n"
|
|
"\tldr r1, [r5]\n"
|
|
"\tldr r2, _0808C760\n"
|
|
"\tldr r3, _0808C764\n"
|
|
"\tbl sub_8052C68\n"
|
|
"\tadds r4, r0, 0\n"
|
|
"\tcmp r4, 0\n"
|
|
"\tble _0808C732\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tcmp r4, 0x1\n"
|
|
"\tbne _0808C824\n"
|
|
"\tbl sub_8083F14\n"
|
|
"\tmovs r0, 0xCC\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tb _0808C76E\n"
|
|
"\t.align 2, 0\n"
|
|
"_0808C75C: .4byte gPtrPurityForestAllowCelebiToJoinText\n"
|
|
"_0808C760: .4byte gPurityForestAllowCelebiToJoinPrompt\n"
|
|
"_0808C764: .4byte 0x00000701\n"
|
|
"_0808C768:\n"
|
|
"\tmovs r0, 0x46\n"
|
|
"\tbl sub_803E46C\n"
|
|
"_0808C76E:\n"
|
|
"\tmovs r0, 0xCC\n"
|
|
"\tbl sub_8083E74\n"
|
|
"\tlsls r0, 24\n"
|
|
"\tcmp r0, 0\n"
|
|
"\tbne _0808C768\n"
|
|
"\tmovs r0, 0x7F\n"
|
|
"\tbl sub_8083E88\n"
|
|
"\tmov r0, r8\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tmovs r1, 0xD\n"
|
|
"\tmovs r2, 0\n"
|
|
"\tbl sub_80861D4\n"
|
|
"\tmovs r0, 0x37\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tadds r0, r6, 0\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tmovs r0, 0x1A\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tadds r0, r6, 0\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tmovs r0, 0x1C\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C818\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r1, [sp]\n"
|
|
"\tadds r0, r7, 0\n"
|
|
"\tmov r2, sp\n"
|
|
"\tbl sub_806FDF4\n"
|
|
"\tmovs r0, 0x7F\n"
|
|
"\tbl sub_8083E88\n"
|
|
"\tldr r0, _0808C81C\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tmov r0, r8\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tmovs r1, 0xD\n"
|
|
"\tmovs r2, 0\n"
|
|
"\tbl sub_80861D4\n"
|
|
"\tmovs r0, 0x37\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tadds r0, r6, 0\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tmovs r0, 0x1A\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tadds r0, r6, 0\n"
|
|
"\tbl PlaySoundEffect\n"
|
|
"\tmovs r0, 0x1B\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C820\n"
|
|
"\tb _0808C898\n"
|
|
"\t.align 2, 0\n"
|
|
"_0808C818: .4byte gUnknown_8106468\n"
|
|
"_0808C81C: .4byte gUnknown_810648C\n"
|
|
"_0808C820: .4byte gUnknown_81064BC\n"
|
|
"_0808C824:\n"
|
|
"movs r0, 0x1\n"
|
|
"b _0808C8A6\n"
|
|
"_0808C828:\n"
|
|
"\tldr r5, _0808C844\n"
|
|
"_0808C82A:\n"
|
|
"\tmovs r0, 0\n"
|
|
"\tldr r1, [r5]\n"
|
|
"\tldr r2, _0808C848\n"
|
|
"\tldr r3, _0808C84C\n"
|
|
"\tbl sub_8052C68\n"
|
|
"\tadds r4, r0, 0\n"
|
|
"\tcmp r4, 0\n"
|
|
"\tble _0808C82A\n"
|
|
"\tcmp r4, 0x1\n"
|
|
"\tbne _0808C850\n"
|
|
"\tmovs r0, 0\n"
|
|
"\tb _0808C8A6\n"
|
|
"\t.align 2, 0\n"
|
|
"_0808C844: .4byte gPtrPurityForestRefuseCelebiConfirmText\n"
|
|
"_0808C848: .4byte gPurityForestRefuseCelebiConfirmPrompt\n"
|
|
"_0808C84C: .4byte 0x00000701\n"
|
|
"_0808C850:\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C8D0\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tldr r1, [sp]\n"
|
|
"\tmovs r0, 0x3E\n"
|
|
"\tmovs r2, 0x1\n"
|
|
"\tbl sub_80861F8\n"
|
|
"\tmovs r0, 0x18\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r1, [sp]\n"
|
|
"\tmovs r0, 0x3E\n"
|
|
"\tmovs r2, 0x1\n"
|
|
"\tbl sub_80861F8\n"
|
|
"\tmovs r0, 0xE\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C8D4\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, [sp]\n"
|
|
"\tbl sub_808C8E0\n"
|
|
"\tldr r0, _0808C8D8\n"
|
|
"_0808C898:\n"
|
|
"\tbl sub_8052910\n"
|
|
"\tmovs r0, 0xA\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tmovs r0, 0x2\n"
|
|
"_0808C8A6:\n"
|
|
"\tcmp r0, 0x2\n"
|
|
"\tbeq _0808C8AC\n"
|
|
"\tb _0808C70E\n"
|
|
"_0808C8AC:\n"
|
|
"\tmovs r0, 0x1E\n"
|
|
"\tbl sub_8083ED8\n"
|
|
"\tmovs r0, 0x1E\n"
|
|
"\tmovs r1, 0x46\n"
|
|
"\tbl sub_803E708\n"
|
|
"\tldr r0, _0808C8DC\n"
|
|
"\tldr r1, [r0]\n"
|
|
"\tmovs r0, 0x1\n"
|
|
"\tstrb r0, [r1, 0x2]\n"
|
|
"\tadd sp, 0x4\n"
|
|
"\tpop {r3}\n"
|
|
"\tmov r8, r3\n"
|
|
"\tpop {r4-r7}\n"
|
|
"\tpop {r0}\n"
|
|
"\tbx r0\n"
|
|
"\t.align 2, 0\n"
|
|
"_0808C8D0: .4byte gUnknown_8106500\n"
|
|
"_0808C8D4: .4byte gUnknown_8106534\n"
|
|
"_0808C8D8: .4byte gUnknown_8106560\n"
|
|
"_0808C8DC: .4byte gUnknown_203B418");
|
|
}
|
|
#endif
|
|
|
|
void sub_808C8E0(struct unkDungeon_8041D5C *param_1)
|
|
{
|
|
s32 iVar1;
|
|
|
|
PlaySoundEffect(0x1a5);
|
|
sub_806CDD4(param_1, 0, 0);
|
|
for(iVar1 = 0; iVar1 < 16; iVar1++){
|
|
param_1->unk70->unk174 = iVar1 << 8;
|
|
sub_803E46C(0x46);
|
|
}
|
|
for(iVar1 = 16; iVar1 < 200; iVar1 += 4){
|
|
param_1->unk70->unk174 = iVar1 << 8;
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_8086A3C(param_1);
|
|
}
|
|
|
|
void sub_808C938(void)
|
|
{
|
|
sub_80855E4(sub_808C9B0);
|
|
}
|
|
|
|
void sub_808C948(struct unkDungeon_8041D5C *param_1, u8 param_2)
|
|
{
|
|
bool8 flag;
|
|
s32 iVar3;
|
|
struct unkDungeon_8041D5C *iVar2;
|
|
|
|
if (param_2 == 0x37) {
|
|
flag = FALSE;
|
|
for(iVar3 = 0; iVar3 < 0x10; iVar3++){
|
|
iVar2 = gUnknown_203B418->unk1358C[iVar3];
|
|
if ((iVar2 != param_1) && (sub_80450E0(iVar2) != 0)) {
|
|
flag = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
if (!flag) {
|
|
gUnknown_203B418->unk2 = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
void sub_808C998(void)
|
|
{
|
|
// Defeat the opposing team to win
|
|
// Be careful, your opponents are tough
|
|
sub_8052910(&gUnknown_8106720);
|
|
sub_803E708(0xA, 0x46);
|
|
}
|
|
|
|
void sub_808C9B0(struct unkDungeon_8041D5C *param_1)
|
|
{
|
|
param_1->unk70->unk46 = 4;
|
|
sub_806CE68(param_1, 4);
|
|
}
|
|
|
|
void sub_808C9C4(void)
|
|
{
|
|
struct unkDungeon_8041D5C *temp;
|
|
struct unkDungeon_8041D5C *temp_2;
|
|
|
|
temp = sub_8085480();
|
|
temp_2 = sub_8085680(7);
|
|
sub_8083E88(0x72);
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_80855E4(sub_8086A3C);
|
|
sub_8085918(temp_2, 0);
|
|
sub_8085860(temp->unk4, temp->unk6 - 3);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM);
|
|
}
|
|
|
|
// Medicham Rescue Dialogue?
|
|
void MedichamRescueDialogue(void)
|
|
{
|
|
struct unkDungeon_8041D5C *temp;
|
|
s32 counter;
|
|
|
|
temp = sub_8085680(7);
|
|
SpriteLookAroundEffect(temp);
|
|
sub_803E708(0xA, 0x46);
|
|
// Oh my I can't seem to find a way out...
|
|
sub_8052910(&gUnknown_8106778);
|
|
sub_803E708(0xA, 0x46);
|
|
sub_80869E4(temp, 4, 2, 4);
|
|
sub_803E708(0xA, 0x46);
|
|
// What am I to do...?
|
|
sub_8052910(&gUnknown_81067BC);
|
|
sub_803E708(0xA, 0x46);
|
|
sub_8086448();
|
|
sub_8086598();
|
|
sub_803E708(0x20, 0x46);
|
|
sub_80862BC(temp);
|
|
sub_803E708(0x20, 0x46);
|
|
sub_80869E4(temp, 4, 2, 0);
|
|
sub_8052910(&gUnknown_81067E0);
|
|
sub_803E708(0xA, 0x46);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_806CDD4(temp, 0xA, 0);
|
|
sub_803E708(0x14, 0x46);
|
|
sub_806CE68(temp, 0);
|
|
sub_803E708(0x4, 0x46);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_806CDD4(temp, 0xA, 0);
|
|
sub_803E708(0x14, 0x46);
|
|
// Yes Yes
|
|
// I am so lucky
|
|
//
|
|
// There appears to be no one here
|
|
sub_8052910(&gUnknown_8106834);
|
|
sub_803E708(0xA, 0x46);
|
|
sub_806CDD4(temp, 0, 0);
|
|
for(counter = 0x17; counter >= 0; counter--)
|
|
{
|
|
sub_804539C(temp, 0, 0x80 << 1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_806CE68(temp, 0);
|
|
sub_803E708(0x20, 0x46);
|
|
sub_8042B0C(temp);
|
|
sub_8068FE0(temp, 0x21C, 0);
|
|
gUnknown_203B418->unk4 = 1;
|
|
gUnknown_203B418->unk11 = 4;
|
|
}
|
|
|
|
void sub_808CB5C(void)
|
|
{
|
|
struct unkDungeon_8041D5C *temp;
|
|
struct unkDungeon_8041D5C *temp_2;
|
|
|
|
temp = sub_8085480();
|
|
temp_2 = sub_8085680(7);
|
|
sub_8083E88(0x72);
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_8068FE0(temp_2, 0x21C, 0);
|
|
sub_8085860(temp->unk4, temp->unk6);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM);
|
|
}
|
|
|
|
void DummyFightDialogue(void)
|
|
{
|
|
}
|
|
|
|
void sub_808CBB0(void)
|
|
{
|
|
struct unkDungeon_8041D5C *temp;
|
|
struct unkDungeon_8041D5C *temp_2;
|
|
|
|
temp = sub_8085480();
|
|
temp_2 = sub_8085680(0x1F);
|
|
sub_8083E88(0x72);
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_80855E4(sub_8086A3C);
|
|
sub_8085918(temp_2, 0);
|
|
sub_8085860(temp->unk4, temp->unk6 - 3);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE);
|
|
}
|
|
|
|
// Smeargle Rescue dialogue scene
|
|
void SmeargleRescueDialogue(void)
|
|
{
|
|
struct unkDungeon_8041D5C *temp;
|
|
s32 counter;
|
|
|
|
temp = sub_8085680(0x1F);
|
|
SpriteLookAroundEffect(temp);
|
|
sub_803E708(0xA, 0x46);
|
|
// Ohhh...
|
|
// I've lost my bearings
|
|
sub_8052910(&gUnknown_810688C);
|
|
sub_803E708(0xA, 0x46);
|
|
sub_80869E4(temp, 4, 2, 4);
|
|
sub_803E708(0xA, 0x46);
|
|
// I can't get out...
|
|
// I'm hungry...
|
|
// I'm in trouble
|
|
sub_8052910(&gUnknown_81068D0);
|
|
sub_803E708(0xA, 0x46);
|
|
sub_8086448();
|
|
sub_8086598();
|
|
sub_803E708(0x20, 0x46);
|
|
sub_80862BC(temp);
|
|
sub_803E708(0x20, 0x46);
|
|
sub_80869E4(temp, 4, 2, 0);
|
|
// Oh! You are?
|
|
sub_8052910(&gUnknown_8106918);
|
|
sub_803E708(0xA, 0x46);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_806CDD4(temp, 0xA, 0);
|
|
sub_803E708(0x14, 0x46);
|
|
sub_806CE68(temp, 0);
|
|
sub_803E708(0x4, 0x46);
|
|
PlaySoundEffect(0x1c7);
|
|
sub_806CDD4(temp, 0xA, 0);
|
|
sub_803E708(0x14, 0x46);
|
|
// Did you maybe come to rescue me?
|
|
// Am I glad to see you
|
|
sub_8052910(&gUnknown_8106934);
|
|
sub_803E708(0xA, 0x46);
|
|
sub_806CDD4(temp, 0, 0);
|
|
for(counter = 0x17; counter >= 0; counter--)
|
|
{
|
|
sub_804539C(temp, 0, 0x80 << 1);
|
|
sub_803E46C(0x46);
|
|
}
|
|
sub_806CE68(temp, 0);
|
|
sub_803E708(0x20, 0x46);
|
|
sub_8042B0C(temp);
|
|
sub_8068FE0(temp, 0x21C, 0);
|
|
gUnknown_203B418->unk4 = 1;
|
|
gUnknown_203B418->unk11 = 4;
|
|
|
|
}
|
|
|
|
void sub_808CD44(void)
|
|
{
|
|
struct unkDungeon_8041D5C *temp;
|
|
struct unkDungeon_8041D5C *temp_2;
|
|
|
|
temp = sub_8085480();
|
|
temp_2 = sub_8085680(0x1F);
|
|
sub_8083E88(0x72);
|
|
sub_80854D4();
|
|
sub_8085930(4);
|
|
sub_80855E4(sub_8086A3C);
|
|
sub_8068FE0(temp_2, 0x21C, 0);
|
|
sub_8085860(temp->unk4, temp->unk6 - 3);
|
|
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE);
|
|
}
|
|
|
|
void sub_808CD9C(u8 r0)
|
|
{
|
|
sub_8086448();
|
|
// There appears to be no one here.
|
|
// It's impossible to go any further
|
|
sub_80866C4(&gUnknown_810697C);
|
|
}
|
|
|
|
u64 *sub_808CDB0(u8 r0)
|
|
{
|
|
return &gUnknown_8107544[r0];
|
|
}
|