mirror of
https://github.com/pret/pmd-red.git
synced 2025-02-06 21:07:49 +00:00
Clean/split pokemon_mail and personality_test
This commit is contained in:
parent
276fa5ad0a
commit
4c41a29719
@ -239,6 +239,8 @@
|
||||
'カ' = 83 4A
|
||||
'ナ' = 83 69
|
||||
|
||||
UNK_ICON_81_69 = 81 69
|
||||
UNK_ICON_81_6A = 81 6A
|
||||
RIGHT_ARROW = 81 A8
|
||||
LEFT_ARROW = 81 A9
|
||||
UP_ARROW = 81 AA
|
||||
|
2682
data/data_80E7D40.s
2682
data/data_80E7D40.s
File diff suppressed because it is too large
Load Diff
@ -664,7 +664,7 @@
|
||||
"probability": 2000
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 15,
|
||||
"probability": 2000
|
||||
},
|
||||
|
@ -63,7 +63,7 @@
|
||||
"probability": 3334
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 15,
|
||||
"probability": 3333
|
||||
},
|
||||
|
@ -2299,7 +2299,7 @@
|
||||
"probability": 800
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1200
|
||||
},
|
||||
@ -2349,7 +2349,7 @@
|
||||
"probability": 2105
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1579
|
||||
},
|
||||
@ -2404,7 +2404,7 @@
|
||||
"probability": 1333
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1000
|
||||
},
|
||||
@ -2459,7 +2459,7 @@
|
||||
"probability": 1380
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1034
|
||||
},
|
||||
|
@ -969,7 +969,7 @@
|
||||
"probability": 816
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1224
|
||||
},
|
||||
@ -1029,7 +1029,7 @@
|
||||
"probability": 1510
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1132
|
||||
},
|
||||
@ -1074,7 +1074,7 @@
|
||||
"probability": 1861
|
||||
},
|
||||
{
|
||||
"species": "MONSTER_ILLIMISE",
|
||||
"species": "MONSTER_ILLUMISE",
|
||||
"level": 20,
|
||||
"probability": 1395
|
||||
},
|
||||
|
File diff suppressed because it is too large
Load Diff
8
include/code_2.h
Normal file
8
include/code_2.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_CODE_2_H
|
||||
#define GUARD_CODE_2_H
|
||||
|
||||
// code_2.s
|
||||
extern void sub_8001024(u32 *);
|
||||
extern void sub_8001044(u32 *);
|
||||
|
||||
#endif // GUARD_CODE_2_H
|
@ -3,28 +3,6 @@
|
||||
|
||||
#include "structs/str_802C39C.h"
|
||||
|
||||
// size: 0x8
|
||||
typedef struct unkStruct_80E9920
|
||||
{
|
||||
/* 0x0 */ s16 unkA;
|
||||
/* 0x2 */ s16 unkB;
|
||||
/* 0x4 */ u8 *text;
|
||||
} unkStruct_80E9920;
|
||||
|
||||
// size: 0xC
|
||||
typedef struct unkStruct_80E9F8C
|
||||
{
|
||||
/* 0x0 */ s16 unkA;
|
||||
/* 0x2 */ s16 unkB;
|
||||
/* 0x4 */ u8 *text1;
|
||||
/* 0x8 */ u8 *text2;
|
||||
} unkStruct_80E9F8C;
|
||||
|
||||
void CreateRescueDescription(unkStruct_802C39C *);
|
||||
void CreateRescueTitle(unkStruct_802C39C *);
|
||||
|
||||
void sub_803B6B0(s32 x, s32 y, u8 index, u32);
|
||||
|
||||
// code_803B050.s
|
||||
extern unkStruct_803B344 *sub_803B344(u8);
|
||||
extern void sub_803B35C(WonderMail *, unkStruct_802C39C *);
|
||||
|
@ -4,6 +4,8 @@
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
// code_803C1D0.s
|
||||
extern u8 sub_803C1D0(DungeonLocation *, u8);
|
||||
extern u8 *sub_803C1F0(u8);
|
||||
extern void sub_803C21C(WonderMail *, unkStruct_802F204 *);
|
||||
|
||||
#endif // GUARD_CODE_803C1D0_H
|
9
include/code_803D110.h
Normal file
9
include/code_803D110.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_CODE_803D110_H
|
||||
#define GUARD_CODE_803D110_H
|
||||
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
// code_803D110.s
|
||||
extern void sub_803D414(u8 *, WonderMail *);
|
||||
|
||||
#endif // GUARD_CODE_803D110_H
|
8
include/code_8094D28.h
Normal file
8
include/code_8094D28.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_CODE_8094D28_H
|
||||
#define GUARD_CODE_8094D28_H
|
||||
|
||||
// code_8094D28.s
|
||||
extern void sub_8094D28(s32);
|
||||
extern s32 sub_8094E4C(void);
|
||||
|
||||
#endif // GUARD_CODE_8094D28_H
|
@ -341,7 +341,7 @@
|
||||
#define MONSTER_PLUSLE 336
|
||||
#define MONSTER_MINUN 337
|
||||
#define MONSTER_VOLBEAT 338
|
||||
#define MONSTER_ILLIMISE 339
|
||||
#define MONSTER_ILLUMISE 339
|
||||
#define MONSTER_ROSELIA 340
|
||||
#define MONSTER_GULPIN 341
|
||||
#define MONSTER_SWALOT 342
|
||||
|
@ -1,7 +1,8 @@
|
||||
#ifndef GUARD_CONSTANTS_PERSONALITY_TEST_H
|
||||
#define GUARD_CONSTANTS_PERSONALITY_TEST_H
|
||||
|
||||
enum NaturePersonalities {
|
||||
enum NaturePersonalities
|
||||
{
|
||||
HARDY,
|
||||
DOCILE,
|
||||
BRAVE,
|
||||
@ -25,4 +26,4 @@ enum NaturePersonalities {
|
||||
|
||||
#define BRAVE_2B_TRIGGER 99
|
||||
|
||||
#endif
|
||||
#endif // GUARD_CONSTANTS_PERSONALITY_TEST_H
|
@ -42,6 +42,7 @@ u32 GetMaxItemsAllowed(u8 dungeon);
|
||||
s8 GetRescuesAllowed(u8 dungeon);
|
||||
bool8 HasCheckpoint(u8 dungeon);
|
||||
void PrintYellowDungeonNametoBuffer(u8 *buffer, DungeonLocation *dungeonLocation);
|
||||
void PrintDungeonLocationtoBuffer(u8 *buffer, DungeonLocation *dungeonLocation);
|
||||
|
||||
u32 sub_80908D8(DungeonLocation *dungeon);
|
||||
u8 sub_8090910(DungeonLocation *dungeon, u32 param_2);
|
||||
|
@ -1,87 +0,0 @@
|
||||
#ifndef GUARD_PERSONALITY_TEST_H
|
||||
#define GUARD_PERSONALITY_TEST_H
|
||||
|
||||
#include "constants/personality_test.h"
|
||||
#include "structs/menu.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// Definitely wrong but need to figure out better structure later
|
||||
struct FaceData
|
||||
{
|
||||
/* 0x0 */ u8 *unk0[5];
|
||||
};
|
||||
|
||||
struct PersonalityAnswer
|
||||
{
|
||||
const char * text;
|
||||
int effect;
|
||||
};
|
||||
|
||||
struct PersonalityQuestion
|
||||
{
|
||||
const char * question;
|
||||
const struct PersonalityAnswer * answers;
|
||||
const u8 (*effects);
|
||||
};
|
||||
|
||||
struct PersonalityTestTracker
|
||||
{
|
||||
/* 0x0 */ s32 FrameCounter;
|
||||
/* 0x4 */ u32 unk4;
|
||||
/* 0x8 */ s16 StarterID;
|
||||
/* 0xA */ s16 PartnerID;
|
||||
u8 padding[0x20 - 0xC];
|
||||
/* 0x20 */ char PartnerNick[0x14];
|
||||
/* 0x34 */ u32 TestState;
|
||||
/* 0x38 */ s32 QuestionCounter;
|
||||
/* 0x3C */ u32 currQuestionIndex;
|
||||
/* 0x40 */ u8 playerNature;
|
||||
/* 0x44 */ s32 NatureTotals[NUM_PERSONALITIES];
|
||||
/* 0x78 */ u8 QuestionTracker[NUM_QUIZ_QUESTIONS];
|
||||
/* 0xB0 */ u32 playerGender; // 1 = Female, 0 = Male
|
||||
/* 0xB4 */ MenuInputStructSub input;
|
||||
};
|
||||
|
||||
struct PersonalityStruct_203B404
|
||||
{
|
||||
// Size: 0xB8
|
||||
/* 0x0 */ s16 StarterID;
|
||||
/* 0x2 */ s16 PartnerArray[NUM_PARTNERS];
|
||||
u8 unk16;
|
||||
/* 0x18 */ MenuInputStruct input;
|
||||
u32 unk4C;
|
||||
/* 0x50 */ UnkTextStruct2 *unk50;
|
||||
/* 0x54 */ UnkTextStruct2 unk54[4];
|
||||
/* 0xB4 */ u8 unkb4[4];
|
||||
};
|
||||
|
||||
void InitializeTestStats(void);
|
||||
void GenerateNewQuestionOrGender(void);
|
||||
void CallPromptNewQuestion(void);
|
||||
void PrintPersonalityTypeDescription(void);
|
||||
void SetPlayerGender(void);
|
||||
void RevealPersonality(void);
|
||||
void RevealStarter(void);
|
||||
void AdvanceToPickPartnerPrompt(void);
|
||||
void PromptPickPartner(void);
|
||||
void AdvanceToPartnerSelection(void);
|
||||
void CallCreatePartnerSelectionMenu(void);
|
||||
void PromptForPartnerNickname(void);
|
||||
void AdvanceToPartnerNickhameScreen(void);
|
||||
void NicknamePartner(void);
|
||||
void PrintEndIntroText(void);
|
||||
void AdvanceToTestEnd(void);
|
||||
s32 GetValidPartners(void);
|
||||
void UpdateNatureTotals(void);
|
||||
void PromptNewQuestion(void);
|
||||
void PersonalityTest_DisplayPartnerSprite(void);
|
||||
u16 HandlePartnerSelectionInput(void);
|
||||
void PersonalityTest_DisplayStarterSprite(void);
|
||||
void CreatePartnerSelectionMenu(s16);
|
||||
void sub_803CE6C(void);
|
||||
void sub_803CEAC(void);
|
||||
void sub_803CECC(void);
|
||||
void nullsub_135(void);
|
||||
|
||||
|
||||
#endif
|
37
include/personality_test1.h
Normal file
37
include/personality_test1.h
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef GUARD_PERSONALITY_TEST1_H
|
||||
#define GUARD_PERSONALITY_TEST1_H
|
||||
|
||||
#include "constants/personality_test.h"
|
||||
#include "structs/menu.h"
|
||||
|
||||
// size: 0xC
|
||||
typedef struct PersonalityQuestion
|
||||
{
|
||||
/* 0x0 */ const u8 *question;
|
||||
/* 0x4 */ const MenuItem *answers;
|
||||
/* 0x8 */ const u8 *effects;
|
||||
} PersonalityQuestion;
|
||||
|
||||
struct PersonalityTestTracker
|
||||
{
|
||||
/* 0x0 */ s32 FrameCounter;
|
||||
u32 unk4;
|
||||
/* 0x8 */ s16 StarterID;
|
||||
/* 0xA */ s16 PartnerID;
|
||||
u8 fillC[0x20 - 0xC];
|
||||
/* 0x20 */ u8 PartnerNick[20];
|
||||
/* 0x34 */ u32 TestState;
|
||||
/* 0x38 */ s32 QuestionCounter;
|
||||
/* 0x3C */ u32 currQuestionIndex;
|
||||
/* 0x40 */ u8 playerNature;
|
||||
/* 0x44 */ s32 NatureTotals[NUM_PERSONALITIES];
|
||||
/* 0x78 */ u8 QuestionTracker[NUM_QUIZ_QUESTIONS];
|
||||
/* 0xB0 */ u32 playerGender; // 1 = Female, 0 = Male
|
||||
/* 0xB4 */ MenuInputStructSub input;
|
||||
};
|
||||
|
||||
bool8 CreateTestTracker(void);
|
||||
void DeleteTestTracker(void);
|
||||
u8 HandleTestTrackerState(void);
|
||||
|
||||
#endif // GUARD_PERSONALITY_TEST1_H
|
26
include/personality_test2.h
Normal file
26
include/personality_test2.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef GUARD_PERSONALITY_TEST2_H
|
||||
#define GUARD_PERSONALITY_TEST2_H
|
||||
|
||||
#include "constants/personality_test.h"
|
||||
#include "structs/menu.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// Size: 0xB8
|
||||
struct PersonalityStruct_203B404
|
||||
{
|
||||
/* 0x0 */ s16 StarterID;
|
||||
/* 0x2 */ s16 PartnerArray[NUM_PARTNERS];
|
||||
u8 unk16;
|
||||
/* 0x18 */ MenuInputStruct input;
|
||||
u32 unk4C;
|
||||
UnkTextStruct2 *unk50;
|
||||
UnkTextStruct2 unk54[4];
|
||||
u8 unkb4[4];
|
||||
};
|
||||
|
||||
void CreatePartnerSelectionMenu(s16 starterID);
|
||||
u16 HandlePartnerSelectionInput(void);
|
||||
|
||||
void sub_803CE6C(void);
|
||||
|
||||
#endif // GUARD_PERSONALITY_TEST2_H
|
@ -92,6 +92,7 @@ s32 sub_808E218(unkStruct_808E218_arg *, PokemonStruct1 *pokemon);
|
||||
extern PokemonStruct1 *GetPlayerPokemonStruct(void);
|
||||
extern void sub_808CFD0(u8 *, s16, u8 *, u8, u32 *, u16 *);
|
||||
extern u32 sub_808D1DC(u8 *);
|
||||
extern PokemonStruct1 *sub_808D378(void);
|
||||
extern PokemonStruct1 *sub_808D3BC(void);
|
||||
extern PokemonStruct1 *sub_808D3F8(void);
|
||||
extern s32 sub_808D544(u32);
|
||||
|
@ -1,15 +1,41 @@
|
||||
#ifndef POKEMON_MAIL_H
|
||||
#define POKEMON_MAIL_H
|
||||
|
||||
struct PokemonMail
|
||||
#include "structs/str_802C39C.h"
|
||||
|
||||
// size: 0x8
|
||||
typedef struct PokemonMail
|
||||
{
|
||||
const u8 *headline;
|
||||
const u8 *text;
|
||||
};
|
||||
} PokemonMail;
|
||||
|
||||
// size: 0x8
|
||||
typedef struct unkStruct_80E9920
|
||||
{
|
||||
/* 0x0 */ s16 parentSpecies;
|
||||
/* 0x2 */ s16 childSpecies;
|
||||
/* 0x4 */ const u8 *text;
|
||||
} unkStruct_80E9920;
|
||||
|
||||
// size: 0xC
|
||||
typedef struct unkStruct_80E9F8C
|
||||
{
|
||||
/* 0x0 */ s16 speciesA;
|
||||
/* 0x2 */ s16 speciesB;
|
||||
/* 0x4 */ const u8 *headline;
|
||||
/* 0x8 */ const u8 *text;
|
||||
} unkStruct_80E9F8C;
|
||||
|
||||
#define NUM_POKEMON_MAIL 56
|
||||
|
||||
void CreateRescueDescription(unkStruct_802C39C *);
|
||||
void CreateRescueTitle(unkStruct_802C39C *);
|
||||
const u8 *GetPokemonMailHeadline(u8 index);
|
||||
const u8 *GetPokemonMailText(u8 index);
|
||||
|
||||
void sub_803B6B0(s32 x, s32 y, u8 index, u32);
|
||||
bool8 sub_803C0DC(s16 species);
|
||||
bool8 sub_803C110(s16 index);
|
||||
|
||||
#endif // POKEMON_MAIL_H
|
||||
|
38
include/pokemon_mail_pre.h
Normal file
38
include/pokemon_mail_pre.h
Normal file
@ -0,0 +1,38 @@
|
||||
#ifndef POKEMON_MAIL_PRE_H
|
||||
#define POKEMON_MAIL_PRE_H
|
||||
|
||||
extern const s16 gUnknown_80E80E0[35];
|
||||
extern const s16 gUnknown_80E8126[33];
|
||||
extern const u8 gMankeyMission[];
|
||||
extern const u8 gSmeargleMission[];
|
||||
extern const u8 gMedichamMission[];
|
||||
extern const u8 gUnknown_80E8830[];
|
||||
extern const u8 gUnknown_80E8848[];
|
||||
extern const u8 gUnknown_80E885C[];
|
||||
extern const u8 gUnknown_80E886C[];
|
||||
extern const u8 gUnknown_80E8884[];
|
||||
extern const u8 gUnknown_80E888C[];
|
||||
extern const u8 gMankeyMissionDescription[];
|
||||
extern const u8 gSmeargleMissionDescription[];
|
||||
extern const u8 gMedichamMissionDescription[];
|
||||
extern const u8 gUnknown_80E8968[];
|
||||
extern const u8 gUnknown_80E89B0[];
|
||||
extern const u8 gUnknown_80E89FC[];
|
||||
extern const u8 gUnknown_80E8A40[];
|
||||
extern const u8 gUnknown_80E8A7C[];
|
||||
extern const u8 gUnknown_80E8AC8[];
|
||||
extern const u8 gUnknown_80E8AD0[];
|
||||
extern const u8 gUnknown_80E8AE0[];
|
||||
extern const u8 gUnknown_80E8AEC[];
|
||||
extern const u8 gUnknown_80E8AFC[];
|
||||
extern const u8 gUnknown_80E8B10[];
|
||||
extern const u8 gUnknown_80E8B20[];
|
||||
extern const u8 gUnknown_80E8B2C[];
|
||||
extern const u8 gUnknown_80E8B40[];
|
||||
extern const u8 gSpecialMissionText[];
|
||||
extern const u8 gPlaceText[];
|
||||
extern const u8 gDifficultyText[];
|
||||
extern const u8 gRewardText[];
|
||||
extern const u8 gUnknown_80E8B7C[];
|
||||
|
||||
#endif // POKEMON_MAIL_PRE_H
|
@ -164,4 +164,10 @@ typedef struct LevelData
|
||||
u16 fillA;
|
||||
} LevelData;
|
||||
|
||||
// Definitely wrong but need to figure out better structure later
|
||||
struct FaceData
|
||||
{
|
||||
u8 *unk0[5];
|
||||
};
|
||||
|
||||
#endif // GUARD_STR_POKEMON_H
|
@ -44,6 +44,7 @@ void sub_8007E20(u32, u32, u32, u32, u32, u8 *, u32);
|
||||
// text.s
|
||||
extern struct unkChar *GetCharacter(u32);
|
||||
extern void InitGraphics(void);
|
||||
extern void sub_800836C(u32, u8 *, u32);
|
||||
extern void sub_800898C(void);
|
||||
extern void sub_80089AC(const UnkTextStruct2 *, UnkTextStruct2_sub *);
|
||||
extern void sub_8008C54(u32);
|
||||
|
@ -183,11 +183,11 @@ SECTIONS {
|
||||
src/debug_menu3.o(.text);
|
||||
src/debug_menu4.o(.text);
|
||||
asm/code_803B050.o(.text);
|
||||
src/code_803B050.o(.text);
|
||||
src/pokemon_mail.o(.text);
|
||||
src/code_803C1B4.o(.text);
|
||||
asm/code_803C1D0.o(.text);
|
||||
src/personality_test.o(.text);
|
||||
src/personality_test1.o(.text);
|
||||
src/personality_test2.o(.text);
|
||||
src/code_803D0D8.o(.text);
|
||||
asm/code_803D110.o(.text);
|
||||
src/code_8040094.o(.text);
|
||||
@ -499,10 +499,10 @@ SECTIONS {
|
||||
src/debug_menu3.o(.rodata);
|
||||
src/debug_menu4.o(.rodata);
|
||||
data/data_80E7D40.o(.rodata);
|
||||
src/pokemon_mail_pre.o(.rodata);
|
||||
src/pokemon_mail.o(.rodata);
|
||||
src/code_803C1B4.o(.rodata);
|
||||
data/personality_test.o(.rodata);
|
||||
src/personality_test.o(.rodata);
|
||||
src/personality_test1.o(.rodata);
|
||||
src/personality_test2.o(.rodata);
|
||||
src/code_803D0D8.o(.rodata);
|
||||
data/data_80F4278.o(.rodata);
|
||||
src/dungeon_util.o(.rodata);
|
||||
|
@ -2,10 +2,10 @@
|
||||
#include "globaldata.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_802DE84.h"
|
||||
#include "code_803B050.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
|
@ -1,484 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "code_8012A18_1.h"
|
||||
#include "code_803B050.h"
|
||||
#include "constants/colors.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "event_flag.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "text_util.h"
|
||||
#include "text2.h"
|
||||
#include "code_800D090.h"
|
||||
#include "menu_input.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
// This file was originally 7 files. Check data_80E7D40.s
|
||||
|
||||
extern s16 gUnknown_80E80E0[];
|
||||
extern s16 gUnknown_80E8126[];
|
||||
extern u8 gUnknown_80E888C[];
|
||||
extern u8 *gUnknown_80E8BCC[];
|
||||
extern u8 gMankeyMissionDescription[];
|
||||
extern u8 gSmeargleMissionDescription[];
|
||||
extern u8 gMedichamMissionDescription[];
|
||||
extern u8 gUnknown_202DE58[];
|
||||
extern u8 gUnknown_80E8968[];
|
||||
extern u8 gUnknown_80E89B0[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern u8 gDifficultyText[];
|
||||
extern u8 gPlaceText[];
|
||||
extern u8 gUnknown_80E8AD0[];
|
||||
extern u8 gUnknown_80E8AE0[];
|
||||
extern u8 gUnknown_80E8AEC[];
|
||||
extern u8 gUnknown_80E8B10[];
|
||||
extern u8 gUnknown_80E8AFC[];
|
||||
extern u8 gUnknown_80E8B20[];
|
||||
extern u8 gUnknown_80E8B40[];
|
||||
extern u8 gUnknown_80E8B2C[];
|
||||
extern u8 *gUnknown_80EB220[];
|
||||
extern u8 gRewardText[];
|
||||
extern u8 *gMissionRewardText[];
|
||||
extern u8 gUnknown_80E8B7C[];
|
||||
extern u8 *gUnknown_80EB2F0[];
|
||||
extern u8 gUnknown_80E89FC[];
|
||||
extern u8 gUnknown_80E8A40[];
|
||||
extern u8 gUnknown_80E8A7C[];
|
||||
extern u8 *gUnknown_80E8DE4[];
|
||||
extern u8 *gUnknown_80E8FB0[];
|
||||
extern u8 *gUnknown_80E91D4[];
|
||||
extern u8 *gUnknown_80E9820[10];
|
||||
extern u8 *gUnknown_80EAEB8[];
|
||||
extern u8 gSpecialMissionText[];
|
||||
extern u8 *gUnknown_80EB198[];
|
||||
extern u8 *gUnknown_80EB3F8[];
|
||||
extern u8 *gUnknown_80EB72C[22];
|
||||
extern u8 gUnknown_80E8AC8[];
|
||||
extern u8 gUnknown_80E8884[];
|
||||
extern u8 gMankeyMission[];
|
||||
extern u8 gSmeargleMission[];
|
||||
extern u8 gMedichamMission[];
|
||||
extern u8 gUnknown_80E8830[];
|
||||
extern u8 gUnknown_80E8848[];
|
||||
extern u8 gUnknown_80E885C[];
|
||||
extern u8 gUnknown_80E8AC8[];
|
||||
extern u8 *gUnknown_80E910C[];
|
||||
extern u8 *gUnknown_80E8C98[];
|
||||
extern u8 gUnknown_80E886C[];
|
||||
extern u8 *gUnknown_80EAE5C[];
|
||||
extern unkStruct_80E9F8C gUnknown_80E9F8C[10];
|
||||
extern unkStruct_80E9920 gUnknown_80E9920[10];
|
||||
extern u8 *gUnknown_80E8B94[];
|
||||
|
||||
extern PokemonStruct1 *sub_808D378(void);
|
||||
|
||||
extern void PrintDungeonLocationtoBuffer(u8 *, void *);
|
||||
extern u8 sub_803C1D0(WonderMailSub *, u8);
|
||||
extern u8 *sub_803C1F0(u8);
|
||||
void sub_803D414(u8 *, WonderMail *);
|
||||
|
||||
void sub_803B6B0(s32 x, s32 y, u8 index, u32 param_4)
|
||||
{
|
||||
xxx_call_draw_string(x,y,gUnknown_80E8B94[index],param_4,0);
|
||||
}
|
||||
|
||||
void CreateRescueTitle(unkStruct_802C39C *param_1)
|
||||
{
|
||||
u8 buf_1[200];
|
||||
u8 buf_2[20];
|
||||
u8 buf_3[100];
|
||||
u8 *monName;
|
||||
u8 uVar1;
|
||||
|
||||
sub_803B6B0(10,param_1->y,param_1->unk43,param_1->unk0[0]);
|
||||
switch(param_1->mailTitleType) {
|
||||
case 3:
|
||||
xxx_call_draw_string(0x15,param_1->y,param_1->unk4C,param_1->unk0[0],0);
|
||||
break;
|
||||
case 0:
|
||||
xxx_call_draw_string(0x15,param_1->y,gMankeyMission,param_1->unk0[0],0);
|
||||
break;
|
||||
case 1:
|
||||
xxx_call_draw_string(0x15,param_1->y,gSmeargleMission,param_1->unk0[0],0);
|
||||
break;
|
||||
case 2:
|
||||
xxx_call_draw_string(0x15,param_1->y,gMedichamMission,param_1->unk0[0],0);
|
||||
break;
|
||||
case 7:
|
||||
PrintYellowDungeonNametoBuffer(buf_1, ¶m_1->unk8->dungeon);
|
||||
xxx_call_draw_string(0x15,param_1->y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 12:
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80E8830,gUnknown_202DE58);
|
||||
xxx_call_draw_string(0x15,param_1->y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 11:
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80E8848,gUnknown_202DE58);
|
||||
xxx_call_draw_string(0x15,param_1->y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 4:
|
||||
xxx_call_draw_string(0x15,param_1->y,gUnknown_80E885C,param_1->unk0[0],0);
|
||||
break;
|
||||
case 5:
|
||||
xxx_call_draw_string(0x15,param_1->y,gUnknown_80E9F8C[param_1->unk0[1]].text1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 6:
|
||||
xxx_call_draw_string(0x15,param_1->y,gUnknown_80E886C,param_1->unk0[0],0);
|
||||
break;
|
||||
case 10: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80EAE5C[(bVar2 & 3)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(0x15,param_1->y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
}
|
||||
case 9: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E910C[(bVar2 % 0xA)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(0x15,param_1->y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E8C98[(bVar2 % 0xf)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(0x15,param_1->y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (param_1->mailTitleType == 7) {
|
||||
if (param_1->playerName == NULL) {
|
||||
xxx_call_draw_string(0xb2 - sub_8016028(),param_1->y,GetMonSpecies(param_1->clientSpecies),param_1->unk0[0],0);
|
||||
}
|
||||
else {
|
||||
sub_80922B4(buf_2,param_1->playerName,POKEMON_NAME_LENGTH);
|
||||
xxx_call_draw_string(0xb2 - sub_8016028(),param_1->y,buf_2,param_1->unk0[0],0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (param_1->mailMissionType == MISSION_TYPE_FIND_ITEM) {
|
||||
PrintDungeonLocationtoBuffer(buf_3, param_1->unk8);
|
||||
sprintfStatic(buf_1,gUnknown_80E8884,buf_3); // Near %s
|
||||
}
|
||||
else {
|
||||
PrintDungeonLocationtoBuffer(buf_1, param_1->unk8);
|
||||
}
|
||||
xxx_call_draw_string(0x1d,param_1->y + 0xc,buf_1,param_1->unk0[0],0);
|
||||
}
|
||||
if (param_1->mailTitleType == 7) {
|
||||
uVar1 = sub_803C1D0(param_1->unk8,0);
|
||||
}
|
||||
else {
|
||||
uVar1 = sub_803C1D0(param_1->unk8,param_1->mail->missionType);
|
||||
}
|
||||
xxx_call_draw_string(0xb4,param_1->y,sub_803C1F0(uVar1),param_1->unk0[0],0);
|
||||
}
|
||||
|
||||
void CreateRescueDescription(unkStruct_802C39C *param_1)
|
||||
{
|
||||
u8 uVar3;
|
||||
int x;
|
||||
int counter;
|
||||
u32 color;
|
||||
s32 y;
|
||||
char buf_1 [300];
|
||||
char buf_2 [40];
|
||||
char buf_3 [20];
|
||||
char buf_4 [20];
|
||||
char buf_5 [100];
|
||||
u8 local_34 [24];
|
||||
u8 *monName;
|
||||
|
||||
y = 0;
|
||||
|
||||
xxx_call_draw_string(10,y,gUnknown_80E888C,param_1->unk0[0],0);
|
||||
xxx_call_draw_string(0x6c,y,gUnknown_80E8BCC[param_1->mailStatus],param_1->unk0[0],0);
|
||||
y += 0x10;
|
||||
switch(param_1->mailDescriptionType) {
|
||||
case 3:
|
||||
xxx_call_draw_string(10,y,param_1->unk50,param_1->unk0[0],0);
|
||||
break;
|
||||
case 0:
|
||||
xxx_call_draw_string(10,y,gMankeyMissionDescription,param_1->unk0[0],0);
|
||||
break;
|
||||
case 1:
|
||||
xxx_call_draw_string(10,y,gSmeargleMissionDescription,param_1->unk0[0],0);
|
||||
break;
|
||||
case 2:
|
||||
xxx_call_draw_string(10,y,gMedichamMissionDescription,param_1->unk0[0],0);
|
||||
break;
|
||||
case 4:
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80E8968,gUnknown_202DE58);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 5:
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80E89B0,gUnknown_202DE58);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 6:
|
||||
xxx_call_draw_string(10,y,gUnknown_80E9920[param_1->unk0[1]].text,param_1->unk0[0],0);
|
||||
break;
|
||||
case 7:
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E9F8C[param_1->unk0[1]].text2,gAvailablePokemonNames,gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 9:
|
||||
xxx_call_draw_string(10,y,gUnknown_80E89FC,param_1->unk0[0],0); // This is a rescue through communication. Get a friend to help you!
|
||||
break;
|
||||
case 10:
|
||||
xxx_call_draw_string(10,y,gUnknown_80E8A40,param_1->unk0[0],0); // This is a rescue through communication. Rescue a friend!
|
||||
break;
|
||||
case 11:
|
||||
xxx_call_draw_string(10,y,gUnknown_80E8A7C,param_1->unk0[0],0); // This is a rescue through communication. Send your thanks to a friend!
|
||||
break;
|
||||
case 15:
|
||||
case 16: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80EB3F8[(bVar2 % 0x16)],gUnknown_202DE58);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y += 0xC;
|
||||
sprintfStatic(buf_1,gUnknown_80EB72C[(bVar3 % 0x16)],gUnknown_202DE58);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y -= 0xC;
|
||||
break;
|
||||
}
|
||||
case 14: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80EAEB8[(bVar2 % 0x14)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y += 0xC;
|
||||
sprintfStatic(buf_1,(gUnknown_80EB198)[(bVar3 & 3)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y -= 0xC;
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80EB220[(bVar2 % 6)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y += 0xC;
|
||||
sprintfStatic(buf_1,gUnknown_80EB2F0[(bVar3 % 0x6)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y -= 0xC;
|
||||
break;
|
||||
}
|
||||
case 13: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E91D4[(bVar2 % 0x2d)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y += 0xC;
|
||||
sprintfStatic(buf_1,gUnknown_80E9820[(bVar3 % 10)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y -= 0xC;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->clientSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E8DE4[(bVar2 % 0xd)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y += 0xC;
|
||||
sprintfStatic(buf_1,gUnknown_80E8FB0[(bVar3 % 0xd)],gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10,y,buf_1,param_1->unk0[0],0);
|
||||
y -= 0xC;
|
||||
break;
|
||||
}
|
||||
}
|
||||
y += 0x1C;
|
||||
xxx_call_draw_string(10,y,gUnknown_80E8AC8,param_1->unk0[0],0);
|
||||
if (param_1->playerName == NULL) {
|
||||
xxx_call_draw_string(0x44,y,GetMonSpecies(param_1->clientSpecies),param_1->unk0[0],0);
|
||||
}
|
||||
else {
|
||||
sub_80922B4(buf_3,param_1->playerName,POKEMON_NAME_LENGTH);
|
||||
sub_808D930(buf_4,param_1->clientSpecies);
|
||||
sprintfStatic(buf_2,gUnknown_80E8AD0,buf_3,buf_4);
|
||||
xxx_call_draw_string(0x44,y,buf_2,param_1->unk0[0],0);
|
||||
}
|
||||
|
||||
y += 0xC;
|
||||
xxx_call_draw_string(10,y,gUnknown_80E8AE0,param_1->unk0[0],0);
|
||||
switch(param_1->mailMissionType) {
|
||||
case MISSION_TYPE_FRIEND_RESCUE:
|
||||
xxx_call_draw_string(0x44,y,gUnknown_80E8AEC,param_1->unk0[0],0); // Friend Rescue
|
||||
break;
|
||||
case MISSION_TYPE_DELIVER_ITEM:
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80E8AFC,gUnknown_202DE58); // Deliver #C4%s#R.
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case MISSION_TYPE_FIND_ITEM:
|
||||
BufferItemName(gUnknown_202DE58,param_1->targetItem,NULL);
|
||||
sprintfStatic(buf_1,gUnknown_80E8B10,gUnknown_202DE58); // Find #C4%s#R.
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case MISSION_TYPE_RESCUE_CLIENT:
|
||||
xxx_call_draw_string(0x44,y,gUnknown_80E8B20,param_1->unk0[0],0); // Help me.
|
||||
break;
|
||||
case MISSION_TYPE_ESCORT_CLIENT:
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E8B2C,gAvailablePokemonNames); // Escort to #C6%s#R.
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case MISSION_TYPE_RESCUE_TARGET:
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames,monName);
|
||||
sprintfStatic(buf_1,gUnknown_80E8B40,gAvailablePokemonNames);
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case MISSION_TYPE_SPECIAL_MISSION:
|
||||
default:
|
||||
xxx_call_draw_string(0x44,y,gSpecialMissionText,param_1->unk0[0],0);
|
||||
break;
|
||||
}
|
||||
y += 0xC;
|
||||
xxx_call_draw_string(10,y,gPlaceText,param_1->unk0[0],0);
|
||||
|
||||
// NOTE: check with TRUE is needed to match
|
||||
if (param_1->mailMissionType == MISSION_TYPE_FIND_ITEM) {
|
||||
PrintDungeonLocationtoBuffer(buf_5,param_1->unk8);
|
||||
sprintfStatic(buf_1,gUnknown_80E8884,buf_5); // Near %s
|
||||
}
|
||||
else {
|
||||
PrintDungeonLocationtoBuffer(buf_1,param_1->unk8);
|
||||
}
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
if (param_1->mailMissionType == MISSION_TYPE_FRIEND_RESCUE) {
|
||||
uVar3 = sub_803C1D0(param_1->unk8, 0);
|
||||
}
|
||||
else {
|
||||
uVar3 = sub_803C1D0(param_1->unk8,param_1->mail->missionType);
|
||||
}
|
||||
|
||||
y += 0xC;
|
||||
xxx_call_draw_string(10,y,gDifficultyText,param_1->unk0[0],0);
|
||||
xxx_call_draw_string(0x44,y,sub_803C1F0(uVar3),param_1->unk0[0],0);
|
||||
y += 0xC;
|
||||
xxx_call_draw_string(10,y,gRewardText,param_1->unk0[0],0);
|
||||
|
||||
switch(param_1->rewardType) {
|
||||
case 0:
|
||||
sprintfStatic(buf_1,gMissionRewardText[param_1->rewardType],param_1->unk30);
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 1:
|
||||
sprintfStatic(buf_1,gMissionRewardText[param_1->rewardType],param_1->unk30);
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 2: // Item
|
||||
case 3: // Item + ?
|
||||
BufferItemName(gUnknown_202DE58,param_1->rewardItem,NULL);
|
||||
sprintfStatic(buf_1,gMissionRewardText[param_1->rewardType],gUnknown_202DE58);
|
||||
xxx_call_draw_string(0x44,y,buf_1,param_1->unk0[0],0);
|
||||
break;
|
||||
case 4: // Friend Area
|
||||
xxx_call_draw_string(0x44,y,gMissionRewardText[param_1->rewardType],param_1->unk0[0],0);
|
||||
break;
|
||||
default:
|
||||
xxx_call_draw_string(0x44,y,gMissionRewardText[param_1->rewardType],param_1->unk0[0],0);
|
||||
break;
|
||||
}
|
||||
|
||||
// Draw the Password
|
||||
y += 0xC;
|
||||
if (((2 < (u8)(param_1->mailDescriptionType - 9)) && (param_1->mailDescriptionType != 3)) && (param_1->mail->mailType == 5))
|
||||
{
|
||||
xxx_call_draw_string(10,y,gUnknown_80E8B7C,param_1->unk0[0],0); // Wonder Mail:
|
||||
sub_803D414(local_34,param_1->mail);
|
||||
for(counter = 0; counter < 24; counter++)
|
||||
{
|
||||
if (counter == 12) {
|
||||
y += 12;
|
||||
}
|
||||
color = COLOR_WHITE_2;
|
||||
if (((3 < counter) && (color = COLOR_YELLOW, 7 < counter)) && ((color = COLOR_WHITE_2)))
|
||||
{
|
||||
if(counter > 15)
|
||||
{
|
||||
if(counter < 20)
|
||||
{
|
||||
color = COLOR_YELLOW;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
x = counter % 12;
|
||||
sub_8012C60(x * 10 + 0x54,y,local_34[counter],color,param_1->unk0[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_803C0DC(s16 species)
|
||||
{
|
||||
s32 baseSpecies;
|
||||
s32 index;
|
||||
|
||||
baseSpecies = GetBaseSpecies(species);
|
||||
index = 0;
|
||||
if (gUnknown_80E80E0[index] != MONSTER_NONE)
|
||||
{
|
||||
while(gUnknown_80E80E0[index] != MONSTER_NONE) {
|
||||
if (gUnknown_80E80E0[index] == baseSpecies) {
|
||||
return FALSE;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_803C110(s16 index)
|
||||
{
|
||||
PokemonStruct1 *pokeStruct;
|
||||
s16 *psVar5;
|
||||
s16 *psVar6;
|
||||
s32 species_s32;
|
||||
|
||||
species_s32 = (s32)index;
|
||||
if ((!sub_8098134(index)) || (index != GetBaseSpecies(index)) || (!sub_803C0DC(index))) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
if (!sub_80023E4(6)) {
|
||||
psVar5 = &gUnknown_80E8126[0];
|
||||
if (*psVar5 != 0) {
|
||||
psVar6 = &gUnknown_80E8126[0];
|
||||
do {
|
||||
if (*psVar6 == species_s32) return FALSE;
|
||||
psVar5++;
|
||||
psVar6++;
|
||||
} while (*psVar5 != MONSTER_NONE);
|
||||
}
|
||||
pokeStruct = GetPlayerPokemonStruct();
|
||||
if ((pokeStruct->speciesNum == species_s32) ||
|
||||
(pokeStruct = sub_808D378(), pokeStruct->speciesNum == species_s32)) return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
u32 sub_803C1B4(DungeonLocation *dungeon, u8 r1)
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "code_8094D28.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "dungeon.h"
|
||||
@ -25,9 +26,6 @@ extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC);
|
||||
extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
|
||||
|
||||
extern s32 sub_8094E4C(void);
|
||||
extern void sub_8094D28(s32);
|
||||
|
||||
void sub_80950BC(void)
|
||||
{
|
||||
gUnknown_203B480 = gUnknown_2038C88;
|
||||
|
@ -1,20 +1,20 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "items.h"
|
||||
#include "friend_area.h"
|
||||
#include "code_803C1D0.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "code_80958E8_1.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "dungeon.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "code_80958E8_1.h"
|
||||
#include "friend_area.h"
|
||||
#include "items.h"
|
||||
#include "mailbox_8095F8C.h"
|
||||
#include "memory.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "mailbox_8095F8C.h"
|
||||
#include "pokemon_mail.h"
|
||||
|
||||
extern bool8 sub_809017C(DungeonLocation *);
|
||||
extern u8 sub_803C1D0(DungeonLocation *, u8);
|
||||
extern bool8 sub_803C0DC(s16);
|
||||
extern void ResetPelipperBoardSlot(u8);
|
||||
extern bool8 ValidateWonderMail(WonderMail *);
|
||||
|
||||
|
@ -1,233 +0,0 @@
|
||||
ALIGNED(4) const char gQuirkyDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The quirky type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}People consider you an eccentric\n"
|
||||
"{CENTER_ALIGN}who does things at your own pace.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You never break tempo.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Your carefree nature makes you\n"
|
||||
"{CENTER_ALIGN}attractive. But you also happen\n"
|
||||
"{CENTER_ALIGN}to be somewhat childish...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You are fickle and cause problems for the\n"
|
||||
"{CENTER_ALIGN}people who have to go along with you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Maybe people are even upset\n"
|
||||
"{CENTER_ALIGN}with you for being so fickle?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}If you realize how selfishly\n"
|
||||
"{CENTER_ALIGN}you{APOSTROPHE}re behaving{COMMA} try to think\n"
|
||||
"{CENTER_ALIGN}before you do anything rash.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A quirky person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gLonelyDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The lonely type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You always act cheerful and\n"
|
||||
"{CENTER_ALIGN}jocular around other people.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But that{APOSTROPHE}s only because\n"
|
||||
"{CENTER_ALIGN}you are with other people.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}However{COMMA} when you get alone...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Do you find yourself\n"
|
||||
"{CENTER_ALIGN}feeling oddly depressed?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}That{APOSTROPHE}s why you always\n"
|
||||
"{CENTER_ALIGN}want to be with others.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But if you go around feeling\n"
|
||||
"{CENTER_ALIGN}depressed too much...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Your nutritional balance goes out\n"
|
||||
"{CENTER_ALIGN}of wack. Eat more vegetables!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}However...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}It{APOSTROPHE}s not a bad thing\n"
|
||||
"{CENTER_ALIGN}to feel lonely.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You know what it{APOSTROPHE}s like when you aren{APOSTROPHE}t\n"
|
||||
"{CENTER_ALIGN}alone{COMMA} so that{APOSTROPHE}s why you feel lonesome.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}And that{APOSTROPHE}s why you aren{APOSTROPHE}t really alone.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A lonely person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gRelaxedDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The relaxed type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Do you occasionally\n"
|
||||
"{CENTER_ALIGN}zone out and miss a bus?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Or do you find yourself dozing off?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Or is your reaction time\n"
|
||||
"{CENTER_ALIGN}a little slower than others?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But that{APOSTROPHE}s not necessarily\n"
|
||||
"{CENTER_ALIGN}a bad thing.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You can do things at your own\n"
|
||||
"{CENTER_ALIGN}tempo without feeling pressured.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You can live in a relaxed and\n"
|
||||
"{CENTER_ALIGN}unhurried manner without worries.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}I think that{APOSTROPHE}s a happy\n"
|
||||
"{CENTER_ALIGN}lifestyle to be envied{COMMA} even.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re also surprisingly popular.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}The way you vacantly stare\n"
|
||||
"{CENTER_ALIGN}off into the distance...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}It should make that someone\n"
|
||||
"{CENTER_ALIGN}special{APOSTROPHE}s pulse race.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A relaxed person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gCalmDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The calm type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re capable of giving advice\n"
|
||||
"{CENTER_ALIGN}to friends with worries.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You don{APOSTROPHE}t like to fight.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re a warm{COMMA} kindhearted\n"
|
||||
"{CENTER_ALIGN}person who cares.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You must have many friends\n"
|
||||
"{CENTER_ALIGN}who look up to you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}However...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}You may also be somewhat gullible...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}As well as a little careless...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}And even a little sloppy.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You might want to keep\n"
|
||||
"{CENTER_ALIGN}those points in mind.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A calm person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gSassyDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The sassy type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You tend to be somewhat cynical.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Despite that{COMMA} there is something\n"
|
||||
"{CENTER_ALIGN}appealing and lovable about you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But do you occasionally say something\n"
|
||||
"{CENTER_ALIGN}arrogant that angers others?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Do you make that mistake?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Or have people called you\n"
|
||||
"{CENTER_ALIGN}conceited{COMMA} vain{COMMA} or selfish?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Have people said that about you?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Huh?{WAIT_PRESS} You{APOSTROPHE}re telling me to get lost?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Why{COMMA} you... Come here and say that!{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}......Gasp!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}...I{APOSTROPHE}m sorry.\n"
|
||||
"{CENTER_ALIGN}I let my feelings run away.\n"
|
||||
"{CENTER_ALIGN}I truly regret this{COMMA} really.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Anyway{COMMA} your cool and aloof\n"
|
||||
"{CENTER_ALIGN}attitude is what defines you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}It makes you exasperating and\n"
|
||||
"{CENTER_ALIGN}appealing at the same time.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A sassy person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gHastyDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The hasty type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You like to take charge\n"
|
||||
"{CENTER_ALIGN}and get things done.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re a real go-getter.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But are you also stressed out?{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You get irritated when your\n"
|
||||
"{CENTER_ALIGN}friends don{APOSTROPHE}t show up on time.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You get frustrated when things\n"
|
||||
"{CENTER_ALIGN}don{APOSTROPHE}t turn out the way you expect.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Maybe you jab the elevator button\n"
|
||||
"{CENTER_ALIGN}if the elevator is slow to arrive.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}...Maybe you{APOSTROPHE}re already jabbing\n"
|
||||
"{CENTER_ALIGN}the A Button repeatedly now.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Beware--getting too easily irritated\n"
|
||||
"{CENTER_ALIGN}just isn{APOSTROPHE}t good for your well-being.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A hasty person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gTimidDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The timid type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You may find it hard to go\n"
|
||||
"{CENTER_ALIGN}to the washroom at night.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You may also find it too frightening\n"
|
||||
"{CENTER_ALIGN}to go back to school to get something\n"
|
||||
"{CENTER_ALIGN}you left behind in class.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}If you{APOSTROPHE}re ever walking on a dark\n"
|
||||
"{CENTER_ALIGN}street at night{COMMA} you probably turn\n"
|
||||
"{CENTER_ALIGN}around often to check behind you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But your timid nature is\n"
|
||||
"{CENTER_ALIGN}also your good point!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Because those who know fear are\n"
|
||||
"{CENTER_ALIGN}those who know true courage.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A timid person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gNaiveDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The naive type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You are highly curious{COMMA}\n"
|
||||
"{CENTER_ALIGN}and you love rare things.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Your cheerful and carefree\n"
|
||||
"{CENTER_ALIGN}attitude should make things fun\n"
|
||||
"{CENTER_ALIGN}for the people around you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But you do have one flaw.\n"
|
||||
"{CENTER_ALIGN}You can be childish.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You can never sit still.\n"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re always on the move.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You can also be selfish{COMMA}\n"
|
||||
"{CENTER_ALIGN}so you should watch yourself.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A naive person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gImpishDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The impish type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re playful{COMMA} cheerful{COMMA}\n"
|
||||
"{CENTER_ALIGN}and you love pranks.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re also kindhearted.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}That{APOSTROPHE}s why the people around\n"
|
||||
"{CENTER_ALIGN}you find you so irresistible.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You must be the most\n"
|
||||
"{CENTER_ALIGN}popular person around!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Oh?{WAIT_PRESS} You{APOSTROPHE}re not that popular?{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re either being modest...\n"
|
||||
"{CENTER_ALIGN}or you just don{APOSTROPHE}t notice it.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}I bet people are just too shy\n"
|
||||
"{CENTER_ALIGN}to let their feelings be known.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}There{APOSTROPHE}s someone out there who{APOSTROPHE}s\n"
|
||||
"{CENTER_ALIGN}afraid to declare their love for you!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}An impish person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gJollyDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The jolly type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Always laughing and smiling{COMMA}\n"
|
||||
"{CENTER_ALIGN}you uplift everyone around you.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You love jokes!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You have lots of friends{COMMA} and\n"
|
||||
"{CENTER_ALIGN}you{APOSTROPHE}re popular wherever you go.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But sometimes you get carried away\n"
|
||||
"{CENTER_ALIGN}and say things that get you in trouble.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You should learn to think before\n"
|
||||
"{CENTER_ALIGN}saying or doing anything.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A jolly person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gBraveDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The brave type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You have a strong sense of justice.{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}You hate evil.{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}You will take on any opponent.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You are truly a hero!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Go forth!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}For justice...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}For peace on earth...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}Fight the forces of evil!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}......{WAIT_PRESS}If I{APOSTROPHE}m wrong...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}Work at becoming a true hero!{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A brave person like you should be...");
|
||||
|
||||
ALIGNED(4) const char gDocileDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The docile type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re very kindhearted.{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}Very helpful.{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}You can make friends with anyone.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You{APOSTROPHE}re a wonderful person.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}......{WAIT_PRESS}Is that going overboard?{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}I don{APOSTROPHE}t think so.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You yourself should be\n"
|
||||
"{CENTER_ALIGN}the best judge of that.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A docile person like you should be...");
|
||||
|
||||
|
||||
ALIGNED(4) const char gHardyDescription[] = _(
|
||||
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
|
||||
"{CENTER_ALIGN}The hardy type.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You do your homework diligently{COMMA}\n"
|
||||
"{CENTER_ALIGN}and you know to eat properly.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}You have strong willpower that lets\n"
|
||||
"{CENTER_ALIGN}you complete tasks{COMMA} however tough.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}But{COMMA} you can also be stubborn to the\n"
|
||||
"{CENTER_ALIGN}point of even feuding with friends...{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}Nothing will go right for you when you{APOSTROPHE}re\n"
|
||||
"{CENTER_ALIGN}irritated{COMMA} so learn to laugh it off.{EXTRA_MSG}"
|
||||
"{CENTER_ALIGN}A hardy person like you should be...");
|
1509
src/data/personality_test1.h
Normal file
1509
src/data/personality_test1.h
Normal file
File diff suppressed because it is too large
Load Diff
45
src/data/personality_test2.h
Normal file
45
src/data/personality_test2.h
Normal file
@ -0,0 +1,45 @@
|
||||
const s16 gPartners[NUM_PARTNERS] =
|
||||
{
|
||||
MONSTER_CHARMANDER,
|
||||
MONSTER_BULBASAUR,
|
||||
MONSTER_SQUIRTLE,
|
||||
MONSTER_PIKACHU,
|
||||
MONSTER_CHIKORITA,
|
||||
MONSTER_TOTODILE,
|
||||
MONSTER_CYNDAQUIL,
|
||||
MONSTER_TORCHIC,
|
||||
MONSTER_TREECKO,
|
||||
MONSTER_MUDKIP
|
||||
};
|
||||
|
||||
const UnkTextStruct2 gUnknown_80F4278 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const UnkTextStruct2 gUnknown_80F4290 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x02,
|
||||
0x09, 0x0B,
|
||||
0x0D, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const UnkTextStruct2 gUnknown_80F42A8 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x05,
|
||||
0x0E, 0x04,
|
||||
0x05, 0x05,
|
||||
0x05, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const char gPartnerSelectionHeaderText[] = _("Pokémon");
|
File diff suppressed because it is too large
Load Diff
573
src/data/pokemon_mail_pre.h
Normal file
573
src/data/pokemon_mail_pre.h
Normal file
@ -0,0 +1,573 @@
|
||||
// TODO: Make things static once the code is moved out of asm
|
||||
|
||||
const s32 gUnknown_80E80A0[16] = {
|
||||
1,
|
||||
5,
|
||||
10,
|
||||
20,
|
||||
40,
|
||||
60,
|
||||
80,
|
||||
100,
|
||||
150,
|
||||
200,
|
||||
300,
|
||||
500,
|
||||
700,
|
||||
1000,
|
||||
1500,
|
||||
2000
|
||||
};
|
||||
|
||||
// A list of Pokémon that are banned from appearing in rescue mail regardless of game progress
|
||||
const s16 gUnknown_80E80E0[35] = {
|
||||
MONSTER_UNOWN_A,
|
||||
MONSTER_CASTFORM,
|
||||
MONSTER_KECLEON,
|
||||
MONSTER_SILCOON,
|
||||
MONSTER_CASCOON,
|
||||
MONSTER_KAKUNA,
|
||||
MONSTER_MAGNEMITE,
|
||||
MONSTER_MAGNETON,
|
||||
MONSTER_GARDEVOIR,
|
||||
MONSTER_GENGAR,
|
||||
MONSTER_ZAPDOS,
|
||||
MONSTER_MOLTRES,
|
||||
MONSTER_ARTICUNO,
|
||||
MONSTER_RAYQUAZA,
|
||||
MONSTER_ENTEI,
|
||||
MONSTER_RAIKOU,
|
||||
MONSTER_SUICUNE,
|
||||
MONSTER_HO_OH,
|
||||
MONSTER_MEWTWO,
|
||||
MONSTER_LATIOS,
|
||||
MONSTER_LATIAS,
|
||||
MONSTER_JIRACHI,
|
||||
MONSTER_LUGIA,
|
||||
MONSTER_CELEBI,
|
||||
MONSTER_REGIROCK,
|
||||
MONSTER_REGICE,
|
||||
MONSTER_REGISTEEL,
|
||||
MONSTER_MEW,
|
||||
MONSTER_GROUDON,
|
||||
MONSTER_KYOGRE,
|
||||
MONSTER_DEOXYS_NORMAL,
|
||||
MONSTER_MUNCHLAX,
|
||||
MONSTER_DECOY,
|
||||
MONSTER_STATUE,
|
||||
MONSTER_NONE
|
||||
};
|
||||
|
||||
// A list of Pokémon that are banned from appearing in rescue mail before the post-game
|
||||
const s16 gUnknown_80E8126[33] = {
|
||||
MONSTER_KECLEON,
|
||||
MONSTER_PERSIAN,
|
||||
MONSTER_WIGGLYTUFF,
|
||||
MONSTER_KANGASKHAN,
|
||||
MONSTER_GULPIN,
|
||||
MONSTER_PELIPPER,
|
||||
MONSTER_LOMBRE,
|
||||
MONSTER_BELLSPROUT,
|
||||
MONSTER_SNUBBULL,
|
||||
MONSTER_WHISCASH,
|
||||
MONSTER_ABSOL,
|
||||
MONSTER_CATERPIE,
|
||||
MONSTER_METAPOD,
|
||||
MONSTER_BUTTERFREE,
|
||||
MONSTER_DUGTRIO,
|
||||
MONSTER_DIGLETT,
|
||||
MONSTER_SKARMORY,
|
||||
MONSTER_JUMPLUFF,
|
||||
MONSTER_SHIFTRY,
|
||||
MONSTER_ALAKAZAM,
|
||||
MONSTER_CHARIZARD,
|
||||
MONSTER_TYRANITAR,
|
||||
MONSTER_EKANS,
|
||||
MONSTER_MEDICHAM,
|
||||
MONSTER_XATU,
|
||||
MONSTER_NINETALES,
|
||||
MONSTER_BLASTOISE,
|
||||
MONSTER_OCTILLERY,
|
||||
MONSTER_GOLEM,
|
||||
MONSTER_WYNAUT,
|
||||
MONSTER_WOBBUFFET,
|
||||
MONSTER_MANKEY,
|
||||
MONSTER_NONE
|
||||
};
|
||||
|
||||
const s16 gUnknown_80E8168[6][2] = {
|
||||
{ MONSTER_NIDORAN_M, MONSTER_NIDORAN_F },
|
||||
{ MONSTER_NIDORINO, MONSTER_NIDORINA },
|
||||
{ MONSTER_NIDOKING, MONSTER_NIDOQUEEN },
|
||||
{ MONSTER_TAUROS, MONSTER_MILTANK },
|
||||
{ MONSTER_VOLBEAT, MONSTER_ILLUMISE },
|
||||
{ MONSTER_MINUN, MONSTER_PLUSLE }
|
||||
};
|
||||
|
||||
const s16 gUnknown_80E8180[21][2] = {
|
||||
{ MONSTER_GLOOM, ITEM_LEAF_STONE },
|
||||
{ MONSTER_WEEPINBELL, ITEM_LEAF_STONE },
|
||||
{ MONSTER_EXEGGCUTE, ITEM_LEAF_STONE },
|
||||
{ MONSTER_NUZLEAF, ITEM_LEAF_STONE },
|
||||
{ MONSTER_GLOOM, ITEM_SUN_STONE },
|
||||
{ MONSTER_SUNKERN, ITEM_SUN_STONE },
|
||||
{ MONSTER_PIKACHU, ITEM_THUNDERSTONE },
|
||||
{ MONSTER_EEVEE, ITEM_THUNDERSTONE },
|
||||
{ MONSTER_VULPIX, ITEM_FIRE_STONE },
|
||||
{ MONSTER_GROWLITHE, ITEM_FIRE_STONE },
|
||||
{ MONSTER_EEVEE, ITEM_FIRE_STONE },
|
||||
{ MONSTER_POLIWHIRL, ITEM_WATER_STONE },
|
||||
{ MONSTER_SHELLDER, ITEM_WATER_STONE },
|
||||
{ MONSTER_STARYU, ITEM_WATER_STONE },
|
||||
{ MONSTER_EEVEE, ITEM_WATER_STONE },
|
||||
{ MONSTER_LOMBRE, ITEM_WATER_STONE },
|
||||
{ MONSTER_NIDORINA, ITEM_MOON_STONE },
|
||||
{ MONSTER_NIDORINO, ITEM_MOON_STONE },
|
||||
{ MONSTER_CLEFAIRY, ITEM_MOON_STONE },
|
||||
{ MONSTER_JIGGLYPUFF, ITEM_MOON_STONE },
|
||||
{ MONSTER_SKITTY, ITEM_MOON_STONE }
|
||||
};
|
||||
|
||||
// List of preferred gummis
|
||||
const s16 gUnknown_80E81D4[386][2] = {
|
||||
{ MONSTER_EKANS, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_ARBOK, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_ARMALDO, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_BEAUTIFLY, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_MEDITITE, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_SEAKING, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_TORCHIC, ITEM_RED_GUMMI },
|
||||
{ MONSTER_ANORITH, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_ABSOL, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_SURSKIT, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_MASQUERAIN, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_ARIADOS, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_CROCONAW, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_UNOWN_QMARK, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_EEVEE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_GEODUDE, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_SPINARAK, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_PILOSWINE, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_ILLUMISE, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_ONIX, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_ARCANINE, ITEM_RED_GUMMI },
|
||||
{ MONSTER_SUDOWOODO, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_WEEPINBELL, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_VICTREEBEL, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_WOOPER, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SWINUB, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_SKARMORY, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_AIPOM, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_ESPEON, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_SKITTY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_DELCATTY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_HITMONCHAN, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_ELEKID, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_ELECTABUZZ, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_ENTEI, ITEM_RED_GUMMI },
|
||||
{ MONSTER_SWELLOW, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_FERALIGATR, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_FURRET, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_OCTILLERY, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_PRIMEAPE, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_SENTRET, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_STANTLER, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_GLALIE, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_SPEAROW, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_FEAROW, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_OMASTAR, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_OMANYTE, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_GROWLITHE, ITEM_RED_GUMMI },
|
||||
{ MONSTER_KYOGRE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MACHAMP, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_DRAGONITE, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_PINSIR, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_KECLEON, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_SHUPPET, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_SNORLAX, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_KABUTO, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_KABUTOPS, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_HITMONTOP, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_WARTORTLE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_BLASTOISE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_FARFETCHD, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CUBONE, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_MAROWAK, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_SILCOON, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_KANGASKHAN, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_BRELOOM, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_SHROOMISH, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_CARVANHA, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SUNFLORA, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_TREECKO, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_CATERPIE, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_WINGULL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_GYARADOS, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_RAPIDASH, ITEM_RED_GUMMI },
|
||||
{ MONSTER_NINETALES, ITEM_RED_GUMMI },
|
||||
{ MONSTER_GIRAFARIG, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_KIRLIA, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_BELLOSSOM, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_KINGDRA, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_KINGLER, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_GLOOM, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_MAWILE, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_PINECO, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_GROUDON, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_GLIGAR, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_MIGHTYENA, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_KRABBY, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_GRANBULL, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CROBAT, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_ABRA, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_SLAKING, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_WURMPLE, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_GENGAR, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_TAUROS, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_MAGIKARP, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MAGNEMITE, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_GASTLY, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_HAUNTER, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_TORKOAL, ITEM_RED_GUMMI },
|
||||
{ MONSTER_MACHOKE, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_KAKUNA, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_GULPIN, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_ARON, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_PSYDUCK, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_LAIRON, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_WHISMUR, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_NUZLEAF, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_PHANPY, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_SHELGON, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_RATTATA, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_GOLDUCK, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_GOLBAT, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_GOLEM, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_GRAVELER, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_VENONAT, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_GARDEVOIR, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_RHYDON, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_RHYHORN, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_GOREBYSS, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_PUPITAR, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_CORSOLA, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_CACNEA, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_DUSCLOPS, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_SHARPEDO, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_HITMONLEE, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_ZANGOOSE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_ZAPDOS, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_JOLTEON, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_SANDSHREW, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_SANDSLASH, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_SEADRA, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_RELICANTH, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SHELLDER, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_ZIGZAGOON, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CRAWDAUNT, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_VAPOREON, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SCEPTILE, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_DEWGONG, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_GROVYLE, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_BANETTE, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_JIRACHI, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_SUICUNE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_STARMIE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SCYTHER, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_ZUBAT, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_TAILLOW, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_BEEDRILL, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_HYPNO, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_DROWZEE, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_SQUIRTLE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_CELEBI, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_WYNAUT, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_WOBBUFFET, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_SOLROCK, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_SHIFTRY, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_DUGTRIO, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_HORSEA, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_BAGON, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_SEEDOT, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_SPHEAL, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_EXEGGCUTE, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_BELDUM, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_CHIKORITA, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_MEDICHAM, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_CHINCHOU, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_CHIMECHO, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_ALTARIA, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_SWABLU, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_NINCADA, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_SHUCKLE, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_DIGLETT, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_DEOXYS_SPEED, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_NINJASK, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_REMORAID, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_DELIBIRD, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_HOUNDOUR, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_AMPHAROS, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_DODUO, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_DODRIO, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_SMEARGLE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_KOFFING, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_TENTACRUEL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_DUSTOX, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_TOGETIC, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_TOGEPI, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_LOUDRED, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_GOLDEEN, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_BARBOACH, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SEALEO, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_WALREIN, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_METAPOD, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_TROPIUS, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_DONPHAN, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_NUMEL, ITEM_RED_GUMMI },
|
||||
{ MONSTER_ODDISH, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_TRAPINCH, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_EXEGGUTOR, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_SLAKOTH, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_WHISCASH, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_NIDOKING, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_NIDOQUEEN, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_NIDORAN_F, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_NIDORAN_M, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_NIDORINA, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_NIDORINO, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_MEOWTH, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_SNEASEL, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_POLIWHIRL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_POLITOED, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_POLIWRATH, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_POLIWAG, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_QUAGSIRE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SHEDINJA, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_MARSHTOMP, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_NATU, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_XATU, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_CLAYDOL, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_CACTURNE, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_DUNSPARCE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_NOSEPASS, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_CLAMPERL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SEEL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_STEELIX, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_CAMERUPT, ITEM_RED_GUMMI },
|
||||
{ MONSTER_EXPLOUD, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_TYPHLOSION, ITEM_RED_GUMMI },
|
||||
{ MONSTER_DRAGONAIR, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_BLAZIKEN, ITEM_RED_GUMMI },
|
||||
{ MONSTER_LOMBRE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_LOTAD, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_BUTTERFREE, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_SCIZOR, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_SPINDA, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_HOPPIP, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_SPOINK, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_BLISSEY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_SEVIPER, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_PARAS, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_PARASECT, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_QWILFISH, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_HARIYAMA, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_MR_MIME, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_TYROGUE, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_CLOYSTER, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_VOLBEAT, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_TYRANITAR, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_HUNTAIL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_CLEFFA, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_WEEDLE, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_PIKACHU, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_CLEFABLE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_PIDGEOT, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_PIDGEOTTO, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_PICHU, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_CLEFAIRY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CHARMANDER, ITEM_RED_GUMMI },
|
||||
{ MONSTER_STARYU, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_CYNDAQUIL, ITEM_RED_GUMMI },
|
||||
{ MONSTER_VIBRAVA, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_SUNKERN, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_TEDDIURSA, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_VOLTORB, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_FEEBAS, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MOLTRES, ITEM_RED_GUMMI },
|
||||
{ MONSTER_FLAREON, ITEM_RED_GUMMI },
|
||||
{ MONSTER_ALAKAZAM, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_MAGMAR, ITEM_RED_GUMMI },
|
||||
{ MONSTER_GRUMPIG, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_FORRETRESS, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_WIGGLYTUFF, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_IVYSAUR, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_BULBASAUR, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_VENUSAUR, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_AERODACTYL, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_MAGBY, ITEM_RED_GUMMI },
|
||||
{ MONSTER_IGGLYBUFF, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_FLYGON, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_PLUSLE, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_UMBREON, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_ARTICUNO, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_JIGGLYPUFF, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_SNUBBULL, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CORPHISH, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_BAYLEEF, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_GRIMER, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_MUK, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_HERACROSS, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_PELIPPER, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_HOUNDOOM, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_PERSIAN, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_LICKITUNG, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_HO_OH, ITEM_RED_GUMMI },
|
||||
{ MONSTER_WAILORD, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_WAILMER, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_HOOTHOOT, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_SALAMENCE, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_AGGRON, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_POOCHYENA, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_PIDGEY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_PONYTA, ITEM_RED_GUMMI },
|
||||
{ MONSTER_SKIPLOOM, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_PORYGON, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_PORYGON2, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CASTFORM_RAINY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_MINUN, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_MAGCARGO, ITEM_RED_GUMMI },
|
||||
{ MONSTER_MAKUHITA, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_SLUGMA, ITEM_RED_GUMMI },
|
||||
{ MONSTER_QUILAVA, ITEM_RED_GUMMI },
|
||||
{ MONSTER_BELLSPROUT, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_WEEZING, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_LINOONE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_CASCOON, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_MARILL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_AZUMARILL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SWALOT, ITEM_PINK_GUMMI },
|
||||
{ MONSTER_ELECTRODE, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_MANKEY, ITEM_ORANGE_GUMMI },
|
||||
{ MONSTER_MANTINE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MUDKIP, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_DRATINI, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_MEW, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_MEWTWO, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_MILTANK, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_MILOTIC, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MISDREAVUS, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_SMOOCHUM, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_MEGANIUM, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_METAGROSS, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_DITTO, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_METANG, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_TENTACOOL, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MAREEP, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_FLAAFFY, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_VENOMOTH, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_TANGELA, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_BALTOY, ITEM_BROWN_GUMMI },
|
||||
{ MONSTER_SLOWKING, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SLOWBRO, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_SLOWPOKE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MURKROW, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_SABLEYE, ITEM_BLACK_GUMMI },
|
||||
{ MONSTER_VIGOROTH, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_YANMA, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_SNORUNT, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_CRADILY, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_KADABRA, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_LARVITAR, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_DUSKULL, ITEM_PURPLE_GUMMI },
|
||||
{ MONSTER_NOCTOWL, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_RAIKOU, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_RAICHU, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_MANECTRIC, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_SWAMPERT, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_ELECTRIKE, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_CHANSEY, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_RATICATE, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_LATIAS, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_LATIOS, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_LUVDISC, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_LAPRAS, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_VILEPLUME, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_RALTS, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_LANTURN, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_CHARMELEON, ITEM_RED_GUMMI },
|
||||
{ MONSTER_CHARIZARD, ITEM_RED_GUMMI },
|
||||
{ MONSTER_LILEEP, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_URSARING, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_JYNX, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_LUGIA, ITEM_GOLD_GUMMI },
|
||||
{ MONSTER_LUNATONE, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_AZURILL, ITEM_WHITE_GUMMI },
|
||||
{ MONSTER_LUDICOLO, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MAGNETON, ITEM_YELLOW_GUMMI },
|
||||
{ MONSTER_REGICE, ITEM_CLEAR_GUMMI },
|
||||
{ MONSTER_REGISTEEL, ITEM_SILVER_GUMMI },
|
||||
{ MONSTER_REGIROCK, ITEM_GRAY_GUMMI },
|
||||
{ MONSTER_RAYQUAZA, ITEM_ROYAL_GUMMI },
|
||||
{ MONSTER_LEDIAN, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_LEDYBA, ITEM_GREEN_GUMMI },
|
||||
{ MONSTER_VULPIX, ITEM_RED_GUMMI },
|
||||
{ MONSTER_ROSELIA, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_COMBUSKEN, ITEM_RED_GUMMI },
|
||||
{ MONSTER_JUMPLUFF, ITEM_GRASS_GUMMI },
|
||||
{ MONSTER_TOTODILE, ITEM_BLUE_GUMMI },
|
||||
{ MONSTER_MACHOP, ITEM_ORANGE_GUMMI }
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gMankeyMission[] = _("Punish bad {COLOR_1 YELLOW}Mankey{END_COLOR_TEXT_1}!");
|
||||
ALIGNED(4) const u8 gSmeargleMission[] = _("{COLOR_1 YELLOW}Smeargle{END_COLOR_TEXT_1}{APOSTROPHE}s desperate plea!");
|
||||
ALIGNED(4) const u8 gMedichamMission[] = _("{COLOR_1 YELLOW}Medicham{END_COLOR_TEXT_1}: Help me!");
|
||||
ALIGNED(4) const u8 gUnknown_80E8830[] = _("Deliver one {COLOR_1 GREEN}%s{END_COLOR_TEXT_1}.");
|
||||
ALIGNED(4) const u8 gUnknown_80E8848[] = _("One {COLOR_1 GREEN}%s{END_COLOR_TEXT_1} wanted!");
|
||||
ALIGNED(4) const u8 gUnknown_80E885C[] = _("Save my child!");
|
||||
ALIGNED(4) const u8 gUnknown_80E886C[] = _("Escort me to my love!");
|
||||
ALIGNED(4) const u8 gUnknown_80E8884[] = _("Near %s");
|
||||
ALIGNED(4) const u8 gUnknown_80E888C[] = _("Rescue Description");
|
||||
ALIGNED(4) const u8 gMankeyMissionDescription[] = _("Please punish bad {COLOR_1 YELLOW}Mankey{END_COLOR_TEXT_1}{APOSTROPHE}s gang.");
|
||||
|
||||
ALIGNED(4) const u8 gSmeargleMissionDescription[] = _(
|
||||
"I didn{APOSTROPHE}t want to become a grown-up{COMMA} so I\n"
|
||||
"fled{COMMA} but now I{APOSTROPHE}ve lost my way! Help!");
|
||||
|
||||
ALIGNED(4) const u8 gMedichamMissionDescription[] = _(
|
||||
"This is {COLOR_1 YELLOW}Medicham{END_COLOR_TEXT_1}. Rescue me{COMMA} please!\n"
|
||||
"The reward is a secret〜♪ ");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E8968[] = _(
|
||||
"With the item {COLOR_1 GREEN}%s{END_COLOR_TEXT_1}{COMMA} I can\n"
|
||||
"evolve! I{APOSTROPHE}m yearning to evolve! Help!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E89B0[] = _(
|
||||
"The {COLOR_1 GREEN}%s{END_COLOR_TEXT_1}! What I love to eat\n"
|
||||
"and can{APOSTROPHE}t live without! Please get one!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E89FC[] = _(
|
||||
"This is a rescue through communication.\n"
|
||||
"Get a friend to help you!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E8A40[] = _(
|
||||
"This is a rescue through communication.\n"
|
||||
"Rescue a friend!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E8A7C[] = _(
|
||||
"This is a rescue through communication.\n"
|
||||
"Send your thanks to your friend!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E8AC8[] = _("Client:");
|
||||
ALIGNED(4) const u8 gUnknown_80E8AD0[] = _("%s{COLOR_1 GREEN}{UNK_ICON_81_69}%s{UNK_ICON_81_6A}{END_COLOR_TEXT_1}");
|
||||
ALIGNED(4) const u8 gUnknown_80E8AE0[] = _("Objective:");
|
||||
ALIGNED(4) const u8 gUnknown_80E8AEC[] = _("Friend Rescue");
|
||||
ALIGNED(4) const u8 gUnknown_80E8AFC[] = _("Deliver {COLOR_1 GREEN}%s{END_COLOR_TEXT_1}.");
|
||||
ALIGNED(4) const u8 gUnknown_80E8B10[] = _("Find {COLOR_1 GREEN}%s{END_COLOR_TEXT_1}.");
|
||||
ALIGNED(4) const u8 gUnknown_80E8B20[] = _("Help me.");
|
||||
ALIGNED(4) const u8 gUnknown_80E8B2C[] = _("Escort to {COLOR_1 YELLOW}%s{END_COLOR_TEXT_1}.");
|
||||
ALIGNED(4) const u8 gUnknown_80E8B40[] = _("Find {COLOR_1 YELLOW}%s{END_COLOR_TEXT_1}.");
|
||||
ALIGNED(4) const u8 gSpecialMissionText[] = _("Special mission");
|
||||
ALIGNED(4) const u8 gPlaceText[] = _("Place:");
|
||||
ALIGNED(4) const u8 gDifficultyText[] = _("Difficulty:");
|
||||
ALIGNED(4) const u8 gRewardText[] = _("Reward:");
|
||||
ALIGNED(4) const u8 gUnknown_80E8B7C[] = _("Wonder Mail:");
|
@ -7,6 +7,7 @@
|
||||
#include "code_8097670.h"
|
||||
#include "constants/main_menu.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "dungeon.h"
|
||||
#include "event_flag.h"
|
||||
#include "file_system.h"
|
||||
#include "ground_main.h"
|
||||
@ -50,7 +51,6 @@ void DrawLoadScreenText(void);
|
||||
void sub_80397B4(void);
|
||||
|
||||
extern void sub_80920D8(u8 *);
|
||||
extern void PrintDungeonLocationtoBuffer(u8 *, DungeonLocation *);
|
||||
|
||||
const UnkTextStruct2 gUnknown_80E75F8 = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
File diff suppressed because it is too large
Load Diff
412
src/personality_test1.c
Normal file
412
src/personality_test1.c
Normal file
@ -0,0 +1,412 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "bg_palette_buffer.h"
|
||||
#include "code_2.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "code_801602C.h"
|
||||
#include "code_8094D28.h"
|
||||
#include "code_8098BDC.h"
|
||||
#include "constants/emotions.h"
|
||||
#include "game_options.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "personality_test1.h"
|
||||
#include "personality_test2.h"
|
||||
#include "random.h"
|
||||
#include "save.h"
|
||||
#include "text_util.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
enum
|
||||
{
|
||||
PERSONALITY_GENERATE_NEW_QUESTION,
|
||||
PERSONALITY_ASK_QUESTION,
|
||||
PERSONALITY_UPDATE_TOTALS,
|
||||
PERSONALITY_PLAYER_GENDER,
|
||||
PERSONALITY_REVEAL,
|
||||
PERSONALITY_STARTER_REVEAL,
|
||||
PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_1,
|
||||
PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_2,
|
||||
PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_3,
|
||||
PERSONALITY_PARTNER_SELECTION,
|
||||
PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_1,
|
||||
PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_2,
|
||||
PERSONALITY_PARTNER_NICKNAME,
|
||||
PERSONALITY_END_INTRO,
|
||||
PERSONALITY_ADVANCE_TO_TEST_END,
|
||||
PERSONALITY_TEST_END,
|
||||
};
|
||||
|
||||
extern u8 gAvailablePokemonNames[]; // 202DF98
|
||||
|
||||
static EWRAM_DATA_2 struct PersonalityTestTracker *sPersonalityTestTracker = {0};
|
||||
|
||||
#include "data/personality_test1.h"
|
||||
|
||||
static void AdvanceToPartnerNicknameScreen(void);
|
||||
static void AdvanceToPartnerSelection(void);
|
||||
static void AdvanceToPickPartnerPrompt(void);
|
||||
static void AdvanceToTestEnd(void);
|
||||
static void CallCreatePartnerSelectionMenu(void);
|
||||
static void CallPromptNewQuestion(void);
|
||||
static void GenerateNewQuestionOrGender(void);
|
||||
static void InitializeTestStats(void);
|
||||
static void NicknamePartner(void);
|
||||
static void PersonalityTest_DisplayStarterSprite(void);
|
||||
static void PrintEndIntroText(void);
|
||||
static void PrintPersonalityTypeDescription(void);
|
||||
static void PromptForPartnerNickname(void);
|
||||
static void PromptNewQuestion(void);
|
||||
static void PromptPickPartner(void);
|
||||
static void RevealPersonality(void);
|
||||
static void RevealStarter(void);
|
||||
static void SetPlayerGender(void);
|
||||
static void UpdateNatureTotals(void);
|
||||
|
||||
bool8 CreateTestTracker(void)
|
||||
{
|
||||
sPersonalityTestTracker = MemoryAlloc(sizeof(struct PersonalityTestTracker), 8);
|
||||
sub_801317C(&sPersonalityTestTracker->input);
|
||||
InitializeTestStats();
|
||||
sub_8099690(1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void InitializeTestStats(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sub_8001024(&sPersonalityTestTracker->unk4);
|
||||
sPersonalityTestTracker->FrameCounter = 0;
|
||||
sPersonalityTestTracker->TestState = 0;
|
||||
sPersonalityTestTracker->QuestionCounter = 0;
|
||||
|
||||
for (i = 0; i < NUM_PERSONALITIES; i++)
|
||||
sPersonalityTestTracker->NatureTotals[i] = 0;
|
||||
|
||||
sPersonalityTestTracker->currQuestionIndex = 0;
|
||||
|
||||
for (i = 0; i < NUM_QUIZ_QUESTIONS; i++)
|
||||
sPersonalityTestTracker->QuestionTracker[i] = 0;
|
||||
|
||||
sPersonalityTestTracker->playerNature = 0;
|
||||
sPersonalityTestTracker->playerGender = 0;
|
||||
}
|
||||
|
||||
u8 HandleTestTrackerState(void)
|
||||
{
|
||||
s32 counter;
|
||||
s32 iVar1;
|
||||
|
||||
sPersonalityTestTracker->FrameCounter++;
|
||||
|
||||
switch (sPersonalityTestTracker->TestState) {
|
||||
case PERSONALITY_GENERATE_NEW_QUESTION:
|
||||
GenerateNewQuestionOrGender();
|
||||
break;
|
||||
case PERSONALITY_ASK_QUESTION:
|
||||
CallPromptNewQuestion();
|
||||
break;
|
||||
case PERSONALITY_UPDATE_TOTALS:
|
||||
UpdateNatureTotals();
|
||||
break;
|
||||
case PERSONALITY_PLAYER_GENDER:
|
||||
SetPlayerGender();
|
||||
break;
|
||||
case PERSONALITY_REVEAL:
|
||||
RevealPersonality();
|
||||
break;
|
||||
case PERSONALITY_STARTER_REVEAL:
|
||||
RevealStarter();
|
||||
break;
|
||||
case PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_1:
|
||||
AdvanceToPickPartnerPrompt();
|
||||
break;
|
||||
case PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_2:
|
||||
PromptPickPartner();
|
||||
break;
|
||||
case PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_3:
|
||||
AdvanceToPartnerSelection();
|
||||
break;
|
||||
case PERSONALITY_PARTNER_SELECTION:
|
||||
CallCreatePartnerSelectionMenu();
|
||||
break;
|
||||
case PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_1:
|
||||
PromptForPartnerNickname();
|
||||
break;
|
||||
case PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_2:
|
||||
AdvanceToPartnerNicknameScreen();
|
||||
break;
|
||||
case PERSONALITY_PARTNER_NICKNAME:
|
||||
NicknamePartner();
|
||||
break;
|
||||
case PERSONALITY_END_INTRO:
|
||||
PrintEndIntroText();
|
||||
break;
|
||||
case PERSONALITY_ADVANCE_TO_TEST_END:
|
||||
AdvanceToTestEnd();
|
||||
break;
|
||||
case PERSONALITY_TEST_END:
|
||||
iVar1 = Rand32Bit() * sPersonalityTestTracker->FrameCounter;
|
||||
sub_8094D28(Rand32Bit());
|
||||
|
||||
for (counter = 0; counter < NUM_PERSONALITIES; counter++)
|
||||
iVar1 *= sPersonalityTestTracker->NatureTotals[counter] + counter + 3;
|
||||
|
||||
iVar1 += sub_8094E4C();
|
||||
while (iVar1 == -1)
|
||||
iVar1 += sub_8094E4C();
|
||||
|
||||
sub_8011C40(iVar1);
|
||||
return 3;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DeleteTestTracker(void)
|
||||
{
|
||||
sub_8001044(&sPersonalityTestTracker->unk4);
|
||||
MemoryFree(sPersonalityTestTracker);
|
||||
sPersonalityTestTracker = NULL;
|
||||
}
|
||||
|
||||
static void GenerateNewQuestionOrGender(void)
|
||||
{
|
||||
u8 category;
|
||||
s32 i;
|
||||
s32 newQuestion;
|
||||
|
||||
sPersonalityTestTracker->QuestionCounter++;
|
||||
|
||||
if (sPersonalityTestTracker->QuestionCounter > MAX_ASKED_QUESTIONS) {
|
||||
sub_8014248(gGenderText, 0, 0, gGenderMenu, 0, 3, 0, 0, 257);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_PLAYER_GENDER;
|
||||
}
|
||||
else {
|
||||
do {
|
||||
// Generate new question number and make sure we haven't done it
|
||||
newQuestion = RandInt(NUM_QUIZ_QUESTIONS);
|
||||
sPersonalityTestTracker->currQuestionIndex = newQuestion;
|
||||
} while (sPersonalityTestTracker->QuestionTracker[newQuestion] == 1);
|
||||
|
||||
// Found one so let's get the category
|
||||
category = gNatureQuestionTable[sPersonalityTestTracker->currQuestionIndex];
|
||||
|
||||
// Mark all of the questions in the category as used
|
||||
for (i = 0; i < NUM_QUIZ_QUESTIONS; i++) {
|
||||
if (gNatureQuestionTable[i] == category)
|
||||
sPersonalityTestTracker->QuestionTracker[i] = 1;
|
||||
}
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ASK_QUESTION;
|
||||
}
|
||||
}
|
||||
|
||||
static void CallPromptNewQuestion(void)
|
||||
{
|
||||
PromptNewQuestion();
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_UPDATE_TOTALS;
|
||||
}
|
||||
|
||||
static void UpdateNatureTotals(void)
|
||||
{
|
||||
s32 answerIndex;
|
||||
s32 natureIndex;
|
||||
const u8 *pointArray;
|
||||
|
||||
if (sub_80144A4(&answerIndex))
|
||||
return;
|
||||
|
||||
// This is for the second part of Brave 2 Question if you fight..
|
||||
if (answerIndex == BRAVE_2B_TRIGGER) {
|
||||
// Set question to BRAVE_2B and ask the question..
|
||||
sPersonalityTestTracker->currQuestionIndex = NUM_QUIZ_QUESTIONS;
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ASK_QUESTION;
|
||||
}
|
||||
else {
|
||||
pointArray = gPersonalityQuestionPointerTable[sPersonalityTestTracker->currQuestionIndex]->effects;
|
||||
// Skip until we get to the one for our answer
|
||||
// Each Answer has 16 bytes. 13 are currently used with 3 remaining
|
||||
pointArray += (NUM_PERSONALITIES + 3) * answerIndex;
|
||||
for (natureIndex = 0; natureIndex < NUM_PERSONALITIES; natureIndex++)
|
||||
sPersonalityTestTracker->NatureTotals[natureIndex] += pointArray[natureIndex];
|
||||
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_GENERATE_NEW_QUESTION;
|
||||
}
|
||||
}
|
||||
|
||||
static void SetPlayerGender(void)
|
||||
{
|
||||
s32 gender;
|
||||
|
||||
if (sub_80144A4(&gender) != 0)
|
||||
return;
|
||||
|
||||
if (gender == MALE) {
|
||||
sPersonalityTestTracker->playerGender = MALE;
|
||||
gGameOptionsRef->playerGender = MALE;
|
||||
}
|
||||
else {
|
||||
sPersonalityTestTracker->playerGender = FEMALE;
|
||||
gGameOptionsRef->playerGender = FEMALE;
|
||||
}
|
||||
|
||||
sub_8099690(0);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_REVEAL;
|
||||
}
|
||||
|
||||
static void RevealPersonality(void)
|
||||
{
|
||||
s32 currentNature;
|
||||
s32 i;
|
||||
|
||||
sPersonalityTestTracker->playerNature = RandInt(NUM_PERSONALITIES);
|
||||
currentNature = sPersonalityTestTracker->playerNature;
|
||||
|
||||
for (i = 0; i < NUM_PERSONALITIES - 1; i++) {
|
||||
currentNature++;
|
||||
|
||||
// Wraparound check
|
||||
if (currentNature > QUIRKY)
|
||||
currentNature = HARDY;
|
||||
|
||||
if (sPersonalityTestTracker->NatureTotals[currentNature] > sPersonalityTestTracker->NatureTotals[sPersonalityTestTracker->playerNature])
|
||||
sPersonalityTestTracker->playerNature = currentNature;
|
||||
}
|
||||
|
||||
sPersonalityTestTracker->StarterID = gStarters[sPersonalityTestTracker->playerNature][sPersonalityTestTracker->playerGender];
|
||||
PrintPersonalityTypeDescription();
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_STARTER_REVEAL;
|
||||
}
|
||||
|
||||
static void RevealStarter(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_80141B4(gStarterReveal, 0, 0, 0x101);
|
||||
PersonalityTest_DisplayStarterSprite();
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_1;
|
||||
}
|
||||
}
|
||||
|
||||
static void AdvanceToPickPartnerPrompt(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0)
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_2;
|
||||
}
|
||||
|
||||
static void PromptPickPartner(void)
|
||||
{
|
||||
sub_80141B4(gPartnerPrompt, 0, 0, 0x301);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_SELECTION_3;
|
||||
}
|
||||
|
||||
static void AdvanceToPartnerSelection(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0)
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_PARTNER_SELECTION;
|
||||
}
|
||||
|
||||
static void CallCreatePartnerSelectionMenu(void)
|
||||
{
|
||||
CreatePartnerSelectionMenu(sPersonalityTestTracker->StarterID);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_1;
|
||||
}
|
||||
|
||||
static void PromptForPartnerNickname(void)
|
||||
{
|
||||
u16 selectedPartner;
|
||||
|
||||
selectedPartner = HandlePartnerSelectionInput();
|
||||
|
||||
if (selectedPartner != 0xFFFF) {
|
||||
if (selectedPartner != 0xFFFE) {
|
||||
sub_803CE6C();
|
||||
sPersonalityTestTracker->PartnerID = selectedPartner;
|
||||
sub_80141B4(gPartnerNickPrompt, 0, 0, 0x301);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void AdvanceToPartnerNicknameScreen(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0)
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_PARTNER_NICKNAME;
|
||||
}
|
||||
|
||||
static void NicknamePartner(void)
|
||||
{
|
||||
CopyStringtoBuffer(sPersonalityTestTracker->PartnerNick, GetMonSpecies(sPersonalityTestTracker->PartnerID));
|
||||
sub_801602C(3, sPersonalityTestTracker->PartnerNick);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_END_INTRO;
|
||||
}
|
||||
|
||||
static void PrintEndIntroText(void)
|
||||
{
|
||||
if (sub_8016080()) {
|
||||
sub_80160D8();
|
||||
sub_80141B4(gEndIntroText, 0, 0, 0x301);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_TEST_END;
|
||||
}
|
||||
}
|
||||
|
||||
static void AdvanceToTestEnd(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0)
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_TEST_END;
|
||||
}
|
||||
|
||||
static void PromptNewQuestion(void)
|
||||
{
|
||||
sub_8014248(gPersonalityQuestionPointerTable[sPersonalityTestTracker->currQuestionIndex]->question,
|
||||
0, 0,
|
||||
gPersonalityQuestionPointerTable[sPersonalityTestTracker->currQuestionIndex]->answers,
|
||||
0, 3, 0, 0, 0x101);
|
||||
}
|
||||
|
||||
static void PrintPersonalityTypeDescription(void)
|
||||
{
|
||||
CopyMonsterNametoBuffer(gAvailablePokemonNames, sPersonalityTestTracker->StarterID);
|
||||
sub_80141B4(sPersonalityTypeDescriptionTable[sPersonalityTestTracker->playerNature], 0, 0, 0x101);
|
||||
}
|
||||
|
||||
static void PersonalityTest_DisplayStarterSprite(void)
|
||||
{
|
||||
s32 starterID;
|
||||
OpenedFile *faceFile;
|
||||
s32 palleteIndex;
|
||||
u8 *r6;
|
||||
u32 faceIndex;
|
||||
UnkTextStruct2 stackArray[4];
|
||||
|
||||
starterID = sPersonalityTestTracker->StarterID;
|
||||
sub_8006518(stackArray);
|
||||
stackArray[1] = sUnknown_80F4244;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(stackArray, TRUE, FALSE);
|
||||
sub_8008C54(1);
|
||||
sub_80073B8(1);
|
||||
|
||||
faceFile = GetDialogueSpriteDataPtr(starterID);
|
||||
r6 = ((struct FaceData *)faceFile->data)->unk0[1 + EMOTION_HAPPY];
|
||||
faceIndex = EMOTION_HAPPY;
|
||||
for (palleteIndex = 0; palleteIndex < 0x10; palleteIndex++)
|
||||
SetBGPaletteBufferColorArray(palleteIndex + 0xE0, &((struct FaceData *)faceFile->data)->unk0[faceIndex][palleteIndex * 4]);
|
||||
|
||||
sub_800836C(1, r6, 14);
|
||||
CloseFile(faceFile);
|
||||
sub_80073E0(1);
|
||||
}
|
303
src/personality_test2.c
Normal file
303
src/personality_test2.c
Normal file
@ -0,0 +1,303 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "bg_palette_buffer.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "constants/emotions.h"
|
||||
#include "constants/input.h"
|
||||
#include "constants/type.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "personality_test2.h"
|
||||
#include "pokemon.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
EWRAM_DATA_2 struct PersonalityStruct_203B404 *gUnknown_203B404 = {0};
|
||||
|
||||
#include "data/personality_test2.h"
|
||||
|
||||
static s32 GetValidPartners(void);
|
||||
static void nullsub_135(void);
|
||||
static void PersonalityTest_DisplayPartnerSprite(void);
|
||||
static void RedrawPartnerSelectionMenu(void);
|
||||
|
||||
static void sub_803CEAC(void);
|
||||
static void sub_803CECC(void);
|
||||
|
||||
void CreatePartnerSelectionMenu(s16 starterID)
|
||||
{
|
||||
s32 starterID_s32;
|
||||
starterID_s32 = starterID; // force an asr shift.. does lsr without it
|
||||
|
||||
sub_803CEAC();
|
||||
gUnknown_203B404->StarterID = starterID_s32;
|
||||
gUnknown_203B404->unk4C = 0;
|
||||
gUnknown_203B404->unk50 = gUnknown_203B404->unk54;
|
||||
|
||||
gUnknown_203B404->unk54[0] = gUnknown_80F4290;
|
||||
gUnknown_203B404->unk54[1] = gUnknown_80F42A8;
|
||||
gUnknown_203B404->unk54[2] = gUnknown_80F4278;
|
||||
gUnknown_203B404->unk54[3] = gUnknown_80F4278;
|
||||
|
||||
gUnknown_203B404->unk50->unk14 = gUnknown_203B404->unkb4;
|
||||
|
||||
gUnknown_203B404->unkb4[0] = 1;
|
||||
gUnknown_203B404->unkb4[1] = 0;
|
||||
gUnknown_203B404->unkb4[2] = 6;
|
||||
gUnknown_203B404->unkb4[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B404->input, GetValidPartners(), 10, gUnknown_203B404->unk4C);
|
||||
RedrawPartnerSelectionMenu();
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
}
|
||||
|
||||
u16 HandlePartnerSelectionInput(void)
|
||||
{
|
||||
s32 partnerID;
|
||||
|
||||
partnerID = gUnknown_203B404->input.menuIndex;
|
||||
gUnknown_203B404->unk16 = 0;
|
||||
|
||||
if (GetKeyPress(&gUnknown_203B404->input) == INPUT_A_BUTTON) {
|
||||
PlayMenuSoundEffect(0);
|
||||
return gUnknown_203B404->PartnerArray[gUnknown_203B404->input.menuIndex];
|
||||
}
|
||||
|
||||
if (sub_80138B8(&gUnknown_203B404->input, TRUE))
|
||||
RedrawPartnerSelectionMenu();
|
||||
|
||||
if (partnerID != gUnknown_203B404->input.menuIndex)
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
|
||||
if (gUnknown_203B404->unk16 != 0) {
|
||||
return -2;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
UNUSED static void sub_803CE34(bool8 cursorSprite)
|
||||
{
|
||||
gUnknown_203B404->input.unk22 = GetValidPartners();
|
||||
sub_8013984(&gUnknown_203B404->input);
|
||||
RedrawPartnerSelectionMenu();
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
|
||||
if (cursorSprite)
|
||||
AddMenuCursorSprite(&gUnknown_203B404->input);
|
||||
}
|
||||
|
||||
void sub_803CE6C(void)
|
||||
{
|
||||
gUnknown_203B404->unk54[gUnknown_203B404->unk4C] = gUnknown_80F4278;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, TRUE, TRUE);
|
||||
sub_803CECC();
|
||||
}
|
||||
|
||||
static void sub_803CEAC(void)
|
||||
{
|
||||
gUnknown_203B404 = MemoryAlloc(sizeof(struct PersonalityStruct_203B404), 8);
|
||||
nullsub_135();
|
||||
}
|
||||
|
||||
static void nullsub_135(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void sub_803CECC(void)
|
||||
{
|
||||
if (gUnknown_203B404 != NULL) {
|
||||
nullsub_135();
|
||||
MemoryFree(gUnknown_203B404);
|
||||
gUnknown_203B404 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING // sub_80095E4 memes
|
||||
static void RedrawPartnerSelectionMenu(void)
|
||||
{
|
||||
s32 sVar1;
|
||||
u32 yCoord;
|
||||
const u8 *monName;
|
||||
s32 monCounter;
|
||||
|
||||
sVar1 = sub_80095E4(gUnknown_203B404->unk32, 12);
|
||||
|
||||
// Have a feeling this is some graphical thing but
|
||||
// still not sure structure so it's not matching yet bc of that
|
||||
// and some casting stuff
|
||||
sVar1 += 2;
|
||||
sVar1 <<= 16;
|
||||
gUnknown_203B404->unk54[gUnknown_203B404->unk4C].unk0[7] = sVar1;
|
||||
gUnknown_203B404->unk54[gUnknown_203B404->unk4C].unk0[8] = sVar1 + 2;
|
||||
|
||||
// Everything after this matches
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, TRUE, TRUE);
|
||||
sub_8008C54(gUnknown_203B404->unk4C);
|
||||
sub_80073B8(gUnknown_203B404->unk4C);
|
||||
xxx_call_draw_string(12, 0, gPartnerSelectionHeaderText, gUnknown_203B404->unk4C, 0);
|
||||
|
||||
monCounter = 0;
|
||||
while (monCounter < gUnknown_203B404->unk32) {
|
||||
yCoord = sub_8013800(&gUnknown_203B404->unk18, monCounter);
|
||||
monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]);
|
||||
xxx_call_draw_string(8, yCoord, monName, gUnknown_203B404->unk4C, 0);
|
||||
monCounter++;
|
||||
}
|
||||
sub_80073E0(gUnknown_203B404->unk4C);
|
||||
gUnknown_203B404->unk16 = 1;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static void RedrawPartnerSelectionMenu(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r6,lr}\n"
|
||||
"\tsub sp, 0x4\n"
|
||||
"\tldr r6, _0803CF60\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tmovs r1, 0x32\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r6]\n"
|
||||
"\tldr r3, [r2, 0x4C]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x62\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x4C]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x64\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, 0x54\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tldr r0, [r0, 0x4C]\n"
|
||||
"\tbl sub_8008C54\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tldr r0, [r0, 0x4C]\n"
|
||||
"\tbl sub_80073B8\n"
|
||||
"\tldr r2, _0803CF64\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tldr r3, [r0, 0x4C]\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0xC\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"\tb _0803CF98\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803CF60: .4byte gUnknown_203B404\n"
|
||||
"_0803CF64: .4byte gPartnerSelectionHeaderText\n"
|
||||
"_0803CF68:\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, 0x18\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tbl sub_8013800\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tlsls r1, r5, 1\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tbl GetMonSpecies\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tldr r3, [r0, 0x4C]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tadds r1, r4, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tadds r5, 0x1\n"
|
||||
"_0803CF98:\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tmovs r1, 0x32\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tcmp r5, r0\n"
|
||||
"\tblt _0803CF68\n"
|
||||
"\tldr r4, _0803CFBC\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r0, [r0, 0x4C]\n"
|
||||
"\tbl sub_80073E0\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrb r0, [r1, 0x16]\n"
|
||||
"\tadd sp, 0x4\n"
|
||||
"\tpop {r4-r6}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803CFBC: .4byte gUnknown_203B404");
|
||||
}
|
||||
#endif
|
||||
|
||||
static void PersonalityTest_DisplayPartnerSprite(void)
|
||||
{
|
||||
s32 partnerID;
|
||||
OpenedFile *faceFile;
|
||||
s32 palleteIndex;
|
||||
u8 *r6;
|
||||
u32 faceIndex;
|
||||
|
||||
partnerID = gUnknown_203B404->PartnerArray[gUnknown_203B404->input.menuIndex];
|
||||
sub_8008C54(1);
|
||||
sub_80073B8(1);
|
||||
faceFile = GetDialogueSpriteDataPtr(partnerID);
|
||||
r6 = ((struct FaceData *)faceFile->data)->unk0[1 + EMOTION_NORMAL];
|
||||
faceIndex = EMOTION_NORMAL;
|
||||
|
||||
for (palleteIndex = 0; palleteIndex < 0x10; palleteIndex++)
|
||||
SetBGPaletteBufferColorArray(palleteIndex + 0xE0, &((struct FaceData *)faceFile->data)->unk0[faceIndex][palleteIndex * 4]);
|
||||
|
||||
sub_800836C(1, r6, 14);
|
||||
CloseFile(faceFile);
|
||||
sub_80073E0(1);
|
||||
gUnknown_203B404->unk16 = 1;
|
||||
}
|
||||
|
||||
static s32 GetValidPartners(void)
|
||||
{
|
||||
u8 PlayerType[2];
|
||||
u8 currentPartnerTypes[2];
|
||||
s32 i;
|
||||
s32 ValidPartnerCounter;
|
||||
s32 CurrentPartnerID;
|
||||
|
||||
ValidPartnerCounter = 0;
|
||||
PlayerType[0] = GetPokemonType(gUnknown_203B404->StarterID, 0);
|
||||
PlayerType[1] = GetPokemonType(gUnknown_203B404->StarterID, 1);
|
||||
|
||||
for (i = 0; i < NUM_PARTNERS; i++) {
|
||||
CurrentPartnerID = gPartners[i];
|
||||
currentPartnerTypes[0] = GetPokemonType(CurrentPartnerID, 0);
|
||||
currentPartnerTypes[1] = GetPokemonType(CurrentPartnerID, 1);
|
||||
|
||||
if ((currentPartnerTypes[0] == TYPE_NONE || (currentPartnerTypes[0] != PlayerType[0] && currentPartnerTypes[0] != PlayerType[1]))
|
||||
&& ((currentPartnerTypes[1] == TYPE_NONE || (currentPartnerTypes[1] != PlayerType[0] && currentPartnerTypes[1] != PlayerType[1])))) {
|
||||
gUnknown_203B404->PartnerArray[ValidPartnerCounter] = CurrentPartnerID;
|
||||
ValidPartnerCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
return ValidPartnerCounter;
|
||||
}
|
@ -1,14 +1,451 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_8012A18_1.h"
|
||||
#include "code_803C1D0.h"
|
||||
#include "code_803D110.h"
|
||||
#include "constants/colors.h"
|
||||
#include "dungeon.h"
|
||||
#include "event_flag.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "items.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "pokemon_mail_pre.h"
|
||||
#include "text_util.h"
|
||||
#include "text2.h"
|
||||
|
||||
extern u8 gUnknown_202DE58[];
|
||||
extern u8 gAvailablePokemonNames[]; // 202DF98
|
||||
|
||||
#include "data/pokemon_mail.h"
|
||||
|
||||
// There are possibly more funcs in asm currently that belong to this file...
|
||||
|
||||
void sub_803B6B0(s32 x, s32 y, u8 index, u32 a3)
|
||||
{
|
||||
xxx_call_draw_string(x, y, sUnknown_80E8B94[index], a3, 0);
|
||||
}
|
||||
|
||||
void CreateRescueTitle(unkStruct_802C39C *param_1)
|
||||
{
|
||||
u8 buf_1[200];
|
||||
u8 buf_2[20];
|
||||
u8 buf_3[100];
|
||||
u8 *monName;
|
||||
u8 uVar1;
|
||||
|
||||
sub_803B6B0(10, param_1->y, param_1->unk43, param_1->unk0[0]);
|
||||
|
||||
switch (param_1->mailTitleType) {
|
||||
case 3:
|
||||
xxx_call_draw_string(21, param_1->y, param_1->unk4C, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 0:
|
||||
xxx_call_draw_string(21, param_1->y, gMankeyMission, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 1:
|
||||
xxx_call_draw_string(21, param_1->y, gSmeargleMission, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 2:
|
||||
xxx_call_draw_string(21, param_1->y, gMedichamMission, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 7:
|
||||
PrintYellowDungeonNametoBuffer(buf_1, ¶m_1->unk8->dungeon);
|
||||
xxx_call_draw_string(21, param_1->y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 12:
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80E8830, gUnknown_202DE58);
|
||||
xxx_call_draw_string(21, param_1->y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 11:
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80E8848, gUnknown_202DE58);
|
||||
xxx_call_draw_string(21, param_1->y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 4:
|
||||
xxx_call_draw_string(21, param_1->y, gUnknown_80E885C, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 5:
|
||||
xxx_call_draw_string(21, param_1->y, gUnknown_80E9F8C[param_1->unk0[1]].headline, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 6:
|
||||
xxx_call_draw_string(21, param_1->y, gUnknown_80E886C, param_1->unk0[0],0);
|
||||
break;
|
||||
case 10: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80EAE5C[bVar2 % 4], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(21, param_1->y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
}
|
||||
case 9: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E910C[bVar2 % 10], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(21, param_1->y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E8C98[bVar2 % 15], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(21, param_1->y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (param_1->mailTitleType == 7) {
|
||||
if (param_1->playerName == NULL)
|
||||
xxx_call_draw_string(178 - sub_8016028(), param_1->y, GetMonSpecies(param_1->clientSpecies), param_1->unk0[0], 0);
|
||||
else {
|
||||
sub_80922B4(buf_2, param_1->playerName, POKEMON_NAME_LENGTH);
|
||||
xxx_call_draw_string(178 - sub_8016028(), param_1->y, buf_2, param_1->unk0[0], 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (param_1->mailMissionType == MISSION_TYPE_FIND_ITEM) {
|
||||
PrintDungeonLocationtoBuffer(buf_3, ¶m_1->unk8->dungeon);
|
||||
sprintfStatic(buf_1, gUnknown_80E8884, buf_3);
|
||||
}
|
||||
else
|
||||
PrintDungeonLocationtoBuffer(buf_1, ¶m_1->unk8->dungeon);
|
||||
|
||||
xxx_call_draw_string(29, param_1->y + 12, buf_1, param_1->unk0[0], 0);
|
||||
}
|
||||
|
||||
if (param_1->mailTitleType == 7)
|
||||
uVar1 = sub_803C1D0(¶m_1->unk8->dungeon, 0);
|
||||
else
|
||||
uVar1 = sub_803C1D0(¶m_1->unk8->dungeon, param_1->mail->missionType);
|
||||
|
||||
xxx_call_draw_string(180, param_1->y, sub_803C1F0(uVar1), param_1->unk0[0], 0);
|
||||
}
|
||||
|
||||
void CreateRescueDescription(unkStruct_802C39C *param_1)
|
||||
{
|
||||
u8 uVar3;
|
||||
s32 x;
|
||||
s32 counter;
|
||||
u32 color;
|
||||
s32 y;
|
||||
u8 buf_1[300];
|
||||
u8 buf_2[40];
|
||||
u8 buf_3[20];
|
||||
u8 buf_4[20];
|
||||
u8 buf_5[100];
|
||||
u8 local_34[24];
|
||||
u8 *monName;
|
||||
|
||||
y = 0;
|
||||
|
||||
xxx_call_draw_string(10, y, gUnknown_80E888C, param_1->unk0[0], 0);
|
||||
xxx_call_draw_string(108, y, sUnknown_80E8BCC[param_1->mailStatus], param_1->unk0[0], 0);
|
||||
y += 16;
|
||||
|
||||
switch (param_1->mailDescriptionType) {
|
||||
case 3:
|
||||
xxx_call_draw_string(10, y, param_1->unk50, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 0:
|
||||
xxx_call_draw_string(10, y, gMankeyMissionDescription, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 1:
|
||||
xxx_call_draw_string(10, y, gSmeargleMissionDescription, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 2:
|
||||
xxx_call_draw_string(10, y, gMedichamMissionDescription, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 4:
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80E8968, gUnknown_202DE58);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 5:
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80E89B0, gUnknown_202DE58);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 6:
|
||||
xxx_call_draw_string(10, y, gUnknown_80E9920[param_1->unk0[1]].text, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 7:
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E9F8C[param_1->unk0[1]].text, gAvailablePokemonNames, gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 9:
|
||||
xxx_call_draw_string(10, y, gUnknown_80E89FC, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 10:
|
||||
xxx_call_draw_string(10, y, gUnknown_80E8A40, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 11:
|
||||
xxx_call_draw_string(10, y, gUnknown_80E8A7C, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 15:
|
||||
case 16: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80EB3F8[bVar2 % 22], gUnknown_202DE58);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y += 12;
|
||||
|
||||
sprintfStatic(buf_1, gUnknown_80EB72C[bVar3 % 22], gUnknown_202DE58);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y -= 12;
|
||||
break;
|
||||
}
|
||||
case 14: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80EAEB8[bVar2 % 20], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y += 12;
|
||||
|
||||
sprintfStatic(buf_1, gUnknown_80EB198[bVar3 % 4], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y -= 12;
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80EB220[bVar2 % 6], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y += 12;
|
||||
|
||||
sprintfStatic(buf_1, gUnknown_80EB2F0[bVar3 % 6], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y -= 12;
|
||||
break;
|
||||
}
|
||||
case 13: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E91D4[bVar2 % 45], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y += 12;
|
||||
|
||||
sprintfStatic(buf_1, gUnknown_80E9820[bVar3 % 10], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y -= 12;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
u8 bVar2 = param_1->unk8->seed + param_1->unk8->dungeon.id;
|
||||
u8 bVar3 = param_1->unk8->seed + param_1->unk8->dungeon.floor;
|
||||
monName = GetMonSpecies(param_1->clientSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E8DE4[bVar2 % 13], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y += 12;
|
||||
|
||||
sprintfStatic(buf_1, gUnknown_80E8FB0[bVar3 % 13], gAvailablePokemonNames);
|
||||
xxx_call_draw_string(10, y, buf_1, param_1->unk0[0], 0);
|
||||
y -= 12;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
y += 28;
|
||||
xxx_call_draw_string(10, y, gUnknown_80E8AC8, param_1->unk0[0], 0);
|
||||
|
||||
if (param_1->playerName == NULL)
|
||||
xxx_call_draw_string(68, y, GetMonSpecies(param_1->clientSpecies), param_1->unk0[0], 0);
|
||||
else {
|
||||
sub_80922B4(buf_3, param_1->playerName, POKEMON_NAME_LENGTH);
|
||||
sub_808D930(buf_4, param_1->clientSpecies);
|
||||
sprintfStatic(buf_2, gUnknown_80E8AD0, buf_3, buf_4);
|
||||
xxx_call_draw_string(68, y, buf_2, param_1->unk0[0], 0);
|
||||
}
|
||||
|
||||
y += 12;
|
||||
xxx_call_draw_string(10, y, gUnknown_80E8AE0, param_1->unk0[0], 0);
|
||||
|
||||
switch (param_1->mailMissionType) {
|
||||
case MISSION_TYPE_FRIEND_RESCUE:
|
||||
xxx_call_draw_string(68, y, gUnknown_80E8AEC, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MISSION_TYPE_DELIVER_ITEM:
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80E8AFC, gUnknown_202DE58);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MISSION_TYPE_FIND_ITEM:
|
||||
BufferItemName(gUnknown_202DE58, param_1->targetItem, NULL);
|
||||
sprintfStatic(buf_1, gUnknown_80E8B10, gUnknown_202DE58);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MISSION_TYPE_RESCUE_CLIENT:
|
||||
xxx_call_draw_string(68, y, gUnknown_80E8B20, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MISSION_TYPE_ESCORT_CLIENT:
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E8B2C, gAvailablePokemonNames);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MISSION_TYPE_RESCUE_TARGET:
|
||||
monName = GetMonSpecies(param_1->targetSpecies);
|
||||
strcpy(gAvailablePokemonNames, monName);
|
||||
sprintfStatic(buf_1, gUnknown_80E8B40, gAvailablePokemonNames);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MISSION_TYPE_SPECIAL_MISSION:
|
||||
default:
|
||||
xxx_call_draw_string(68, y, gSpecialMissionText, param_1->unk0[0], 0);
|
||||
break;
|
||||
}
|
||||
|
||||
y += 12;
|
||||
xxx_call_draw_string(10, y, gPlaceText, param_1->unk0[0], 0);
|
||||
|
||||
if (param_1->mailMissionType == MISSION_TYPE_FIND_ITEM) {
|
||||
PrintDungeonLocationtoBuffer(buf_5, ¶m_1->unk8->dungeon);
|
||||
sprintfStatic(buf_1, gUnknown_80E8884, buf_5);
|
||||
}
|
||||
else
|
||||
PrintDungeonLocationtoBuffer(buf_1, ¶m_1->unk8->dungeon);
|
||||
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
|
||||
if (param_1->mailMissionType == MISSION_TYPE_FRIEND_RESCUE)
|
||||
uVar3 = sub_803C1D0(¶m_1->unk8->dungeon, 0);
|
||||
else
|
||||
uVar3 = sub_803C1D0(¶m_1->unk8->dungeon, param_1->mail->missionType);
|
||||
|
||||
y += 12;
|
||||
xxx_call_draw_string(10, y, gDifficultyText, param_1->unk0[0], 0);
|
||||
xxx_call_draw_string(68, y, sub_803C1F0(uVar3), param_1->unk0[0], 0);
|
||||
|
||||
y += 12;
|
||||
xxx_call_draw_string(10, y, gRewardText, param_1->unk0[0], 0);
|
||||
|
||||
switch (param_1->rewardType) {
|
||||
case 0:
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->rewardType], param_1->unk30);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 1:
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->rewardType], param_1->unk30);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 2: // Item
|
||||
case 3: // Item + ?
|
||||
BufferItemName(gUnknown_202DE58, param_1->rewardItem, NULL);
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->rewardType], gUnknown_202DE58);
|
||||
xxx_call_draw_string(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 4: // Friend Area
|
||||
xxx_call_draw_string(68, y, gMissionRewardText[param_1->rewardType], param_1->unk0[0], 0);
|
||||
break;
|
||||
default:
|
||||
xxx_call_draw_string(68, y, gMissionRewardText[param_1->rewardType], param_1->unk0[0], 0);
|
||||
break;
|
||||
}
|
||||
|
||||
// Draw the Password
|
||||
y += 12;
|
||||
if ((2 < (u8)(param_1->mailDescriptionType - 9)) && param_1->mailDescriptionType != 3 && param_1->mail->mailType == 5) {
|
||||
xxx_call_draw_string(10, y, gUnknown_80E8B7C, param_1->unk0[0], 0);
|
||||
sub_803D414(local_34, param_1->mail);
|
||||
|
||||
for (counter = 0; counter < 24; counter++) {
|
||||
if (counter == 12)
|
||||
y += 12;
|
||||
|
||||
color = COLOR_WHITE_2;
|
||||
if (counter > 3) {
|
||||
color = COLOR_YELLOW;
|
||||
if (counter > 7 && (color = COLOR_WHITE_2)) { // ?
|
||||
if (counter > 15) {
|
||||
if (counter < 20)
|
||||
color = COLOR_YELLOW;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
x = counter % 12;
|
||||
sub_8012C60((x * 10) + 84, y, local_34[counter], color, param_1->unk0[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_803C0DC(s16 species)
|
||||
{
|
||||
s32 baseSpecies;
|
||||
s32 index;
|
||||
|
||||
baseSpecies = GetBaseSpecies(species);
|
||||
index = 0;
|
||||
|
||||
//if (gUnknown_80E80E0[index] != MONSTER_NONE) {
|
||||
while (gUnknown_80E80E0[index] != MONSTER_NONE) {
|
||||
if (gUnknown_80E80E0[index] == baseSpecies)
|
||||
return FALSE;
|
||||
|
||||
index++;
|
||||
}
|
||||
//}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_803C110(s16 index)
|
||||
{
|
||||
PokemonStruct1 *pokeStruct;
|
||||
const s16 *psVar5;
|
||||
const s16 *psVar6;
|
||||
s32 species_s32;
|
||||
|
||||
species_s32 = (s32)index;
|
||||
|
||||
if (!sub_8098134(index) || index != GetBaseSpecies(index) || !sub_803C0DC(index))
|
||||
return FALSE;
|
||||
|
||||
if (!sub_80023E4(6)) {
|
||||
psVar5 = &gUnknown_80E8126[0]; // TODO: Un-ugly this
|
||||
if (*psVar5 != MONSTER_NONE) {
|
||||
psVar6 = &gUnknown_80E8126[0];
|
||||
do {
|
||||
if (*psVar6 == species_s32)
|
||||
return FALSE;
|
||||
psVar5++;
|
||||
psVar6++;
|
||||
} while (*psVar5 != MONSTER_NONE);
|
||||
}
|
||||
|
||||
pokeStruct = GetPlayerPokemonStruct();
|
||||
if (pokeStruct->speciesNum == species_s32)
|
||||
return FALSE;
|
||||
pokeStruct = sub_808D378();
|
||||
if (pokeStruct->speciesNum == species_s32)
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const u8 *GetPokemonMailHeadline(u8 index)
|
||||
{
|
||||
return gPokemonMail[index].headline;
|
||||
return sPokemonMail[index].headline;
|
||||
}
|
||||
|
||||
const u8 *GetPokemonMailText(u8 index)
|
||||
{
|
||||
return gPokemonMail[index].text;
|
||||
}
|
||||
return sPokemonMail[index].text;
|
||||
}
|
6
src/pokemon_mail_pre.c
Normal file
6
src/pokemon_mail_pre.c
Normal file
@ -0,0 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "constants/item.h"
|
||||
#include "pokemon_mail_pre.h"
|
||||
|
||||
#include "data/pokemon_mail_pre.h"
|
@ -2,7 +2,6 @@
|
||||
#include "globaldata.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "code_803B050.h"
|
||||
#include "code_8096AF8.h"
|
||||
#include "constants/input.h"
|
||||
#include "input.h"
|
||||
|
@ -2,7 +2,6 @@
|
||||
#include "globaldata.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_803B050.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "code_80958E8_1.h"
|
||||
#include "code_80972F4.h"
|
||||
@ -13,6 +12,7 @@
|
||||
#include "items.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "post_office_guide2.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
@ -1,18 +1,18 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "constants/input.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "memory.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "input.h"
|
||||
#include "items.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_803B050.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
struct unkStruct_203B320
|
||||
{
|
||||
|
@ -1,17 +1,18 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "dungeon.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "input.h"
|
||||
#include "dungeon.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "code_800D090.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "menu_input.h"
|
||||
#include "code_80118A4.h"
|
||||
|
||||
struct unkStruct_203B324
|
||||
{
|
||||
@ -22,6 +23,7 @@ struct unkStruct_203B324
|
||||
UnkTextStruct2 *unk14;
|
||||
UnkTextStruct2 unk18[4];
|
||||
};
|
||||
|
||||
static EWRAM_DATA_2 struct unkStruct_203B324 *gUnknown_203B324 = {0};
|
||||
|
||||
extern unkStruct_203B480 *gUnknown_203B480;
|
||||
@ -51,7 +53,6 @@ const u8 gUnknown_80E0934[] = "ID:";
|
||||
const u8 gUnknown_80E0938[] = "%-4d";
|
||||
|
||||
extern void sub_8030DD4(void);
|
||||
extern void CreateRescueDescription(unkStruct_802C39C *);
|
||||
|
||||
void sub_8030E2C(void);
|
||||
void sub_8030E48(void);
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "wonder_mail_802C10C.h"
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
#include "text1.h"
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_mail.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
#include "text1.h"
|
||||
|
@ -231,7 +231,8 @@ gUnknown_203B314: /* 203B314 (sub_802F73C - sub_802FA50) */
|
||||
gUnknown_203B3FC: /* 203B3FC (sub_803B050 - sub_803B284) */
|
||||
.space 0x4
|
||||
|
||||
.include "src/personality_test.o"
|
||||
.include "src/personality_test1.o"
|
||||
.include "src/personality_test2.o"
|
||||
.include "src/code_803D0D8.o"
|
||||
.space 0x3
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user