mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
more code_2 work
This commit is contained in:
parent
cd2c46d027
commit
0776e271cc
|
|
@ -1,8 +1,9 @@
|
|||
#ifndef GUARD_CODE_2_H
|
||||
#define GUARD_CODE_2_H
|
||||
|
||||
// code_2.s
|
||||
extern void sub_8001024(u32 *);
|
||||
extern void sub_8001044(u32 *);
|
||||
#include "personality_test1.h"
|
||||
|
||||
#endif // GUARD_CODE_2_H
|
||||
void sub_8001024(struct PersonalityRelated *);
|
||||
void sub_8001044(struct PersonalityRelated *);
|
||||
|
||||
#endif // GUARD_CODE_2_H
|
||||
|
|
|
|||
|
|
@ -14,14 +14,19 @@ typedef struct PersonalityQuestion
|
|||
/* 0x8 */ const PersonalityEffects *effects;
|
||||
} PersonalityQuestion;
|
||||
|
||||
struct PersonalityRelated
|
||||
{
|
||||
u32 unk4;
|
||||
s16 StarterID;
|
||||
s16 PartnerID;
|
||||
u8 StarterName[0x14];
|
||||
u8 PartnerNick[0x14];
|
||||
};
|
||||
|
||||
struct PersonalityTestTracker
|
||||
{
|
||||
/* 0x0 */ s32 FrameCounter;
|
||||
u32 unk4;
|
||||
/* 0x8 */ s16 StarterID;
|
||||
/* 0xA */ s16 PartnerID;
|
||||
u8 fillC[0x20 - 0xC];
|
||||
/* 0x20 */ u8 PartnerNick[20];
|
||||
struct PersonalityRelated unk4;
|
||||
/* 0x34 */ u32 TestState;
|
||||
/* 0x38 */ s32 QuestionCounter;
|
||||
/* 0x3C */ u32 currQuestionIndex;
|
||||
|
|
|
|||
38
src/code.c
38
src/code.c
|
|
@ -7,6 +7,7 @@
|
|||
#include "event_flag.h"
|
||||
#include "items.h"
|
||||
#include "memory.h"
|
||||
#include "personality_test1.h"
|
||||
#include "pokemon.h"
|
||||
#include "quick_save_read.h"
|
||||
#include "quick_save_write.h"
|
||||
|
|
@ -42,17 +43,8 @@ struct unkTalkTable
|
|||
extern struct unkTalkTable gTalkKindTable[];
|
||||
extern struct unkTalkTable gBaseKindTable[];
|
||||
|
||||
// size: 0x30
|
||||
struct PersonalityRelated
|
||||
{
|
||||
u8 fill0[4];
|
||||
s16 speciesID1;
|
||||
s16 speciesID2;
|
||||
u8 speciesName1[0x14];
|
||||
u8 speciesName2[0x14];
|
||||
};
|
||||
struct PersonalityRelated gPersonalityRelated_203B040;
|
||||
extern u32 gUnknown_203B03C;
|
||||
EWRAM_DATA_2 u32 gUnknown_203B03C = {0};
|
||||
EWRAM_DATA_2 struct PersonalityRelated gPersonalityRelated_203B040 = {0};
|
||||
|
||||
void SaveLoadRelated_8000EDC(struct UnkStruct_xxx_dungeon_8042F6C *param_1)
|
||||
{
|
||||
|
|
@ -145,35 +137,35 @@ void sub_8001064(void)
|
|||
u8 buffer1 [20];
|
||||
|
||||
if (GetPlayerPokemonStruct() == NULL) {
|
||||
if (gPersonalityRelated_203B040.speciesName1[0] == '\0') {
|
||||
CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.speciesID1);
|
||||
if (gPersonalityRelated_203B040.StarterName[0] == '\0') {
|
||||
CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.StarterID);
|
||||
CopyStringtoBuffer(buffer2,buffer1);
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID1,TRUE,buffer2);
|
||||
sub_808CE74(gPersonalityRelated_203B040.StarterID,TRUE,buffer2);
|
||||
}
|
||||
else {
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID1,TRUE,gPersonalityRelated_203B040.speciesName1);
|
||||
sub_808CE74(gPersonalityRelated_203B040.StarterID,TRUE,gPersonalityRelated_203B040.StarterName);
|
||||
}
|
||||
}
|
||||
if (sub_808D378() == NULL) {
|
||||
if (gPersonalityRelated_203B040.speciesName2[0] == '\0') {
|
||||
CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.speciesID2);
|
||||
if (gPersonalityRelated_203B040.PartnerNick[0] == '\0') {
|
||||
CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.PartnerID);
|
||||
CopyStringtoBuffer(buffer2,buffer1);
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID2,FALSE,buffer2);
|
||||
sub_808CE74(gPersonalityRelated_203B040.PartnerID,FALSE,buffer2);
|
||||
}
|
||||
else {
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID2,FALSE,gPersonalityRelated_203B040.speciesName2);
|
||||
sub_808CE74(gPersonalityRelated_203B040.PartnerID,FALSE,gPersonalityRelated_203B040.PartnerNick);
|
||||
}
|
||||
}
|
||||
if (gPersonalityRelated_203B040.speciesID1 != MONSTER_NONE) {
|
||||
if (gPersonalityRelated_203B040.StarterID != MONSTER_NONE) {
|
||||
psVar2 = &gBaseKindTable[0];
|
||||
while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.speciesID1 != psVar2->species))) {
|
||||
while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.StarterID != psVar2->species))) {
|
||||
psVar2++;
|
||||
}
|
||||
SetScriptVarValue(NULL,BASE_KIND,psVar2->unk0);
|
||||
}
|
||||
if (gPersonalityRelated_203B040.speciesID2 != MONSTER_NONE) {
|
||||
if (gPersonalityRelated_203B040.PartnerID != MONSTER_NONE) {
|
||||
psVar2 = &gTalkKindTable[0];
|
||||
while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.speciesID2 != psVar2->species))) {
|
||||
while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.PartnerID != psVar2->species))) {
|
||||
psVar2++;
|
||||
}
|
||||
SetScriptVarValue(NULL,PARTNER_TALK_KIND,psVar2->unk0);
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ static void RevealPersonality(void)
|
|||
sPersonalityTestTracker->playerNature = currentNature;
|
||||
}
|
||||
|
||||
sPersonalityTestTracker->StarterID = gStarters[sPersonalityTestTracker->playerNature][sPersonalityTestTracker->playerGender];
|
||||
sPersonalityTestTracker->unk4.StarterID = gStarters[sPersonalityTestTracker->playerNature][sPersonalityTestTracker->playerGender];
|
||||
PrintPersonalityTypeDescription();
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_STARTER_REVEAL;
|
||||
}
|
||||
|
|
@ -313,7 +313,7 @@ static void AdvanceToPartnerSelection(void)
|
|||
|
||||
static void CallCreatePartnerSelectionMenu(void)
|
||||
{
|
||||
CreatePartnerSelectionMenu(sPersonalityTestTracker->StarterID);
|
||||
CreatePartnerSelectionMenu(sPersonalityTestTracker->unk4.StarterID);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_1;
|
||||
}
|
||||
|
||||
|
|
@ -326,7 +326,7 @@ static void PromptForPartnerNickname(void)
|
|||
if (selectedPartner != 0xFFFF) {
|
||||
if (selectedPartner != 0xFFFE) {
|
||||
sub_803CE6C();
|
||||
sPersonalityTestTracker->PartnerID = selectedPartner;
|
||||
sPersonalityTestTracker->unk4.PartnerID = selectedPartner;
|
||||
CreateDialogueBoxAndPortrait(gPartnerNickPrompt, 0, 0, 0x301);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_ADVANCE_TO_PARTNER_NICKNAME_2;
|
||||
}
|
||||
|
|
@ -343,8 +343,8 @@ static void AdvanceToPartnerNicknameScreen(void)
|
|||
|
||||
static void NicknamePartner(void)
|
||||
{
|
||||
CopyStringtoBuffer(sPersonalityTestTracker->PartnerNick, GetMonSpecies(sPersonalityTestTracker->PartnerID));
|
||||
CreateConfirmNameMenu(3, sPersonalityTestTracker->PartnerNick);
|
||||
CopyStringtoBuffer(sPersonalityTestTracker->unk4.PartnerNick, GetMonSpecies(sPersonalityTestTracker->unk4.PartnerID));
|
||||
CreateConfirmNameMenu(3, sPersonalityTestTracker->unk4.PartnerNick);
|
||||
sPersonalityTestTracker->TestState = PERSONALITY_END_INTRO;
|
||||
}
|
||||
|
||||
|
|
@ -375,7 +375,7 @@ static void PromptNewQuestion(void)
|
|||
|
||||
static void PrintPersonalityTypeDescription(void)
|
||||
{
|
||||
CopyMonsterNameToBuffer(gFormatBuffer_Monsters[0], sPersonalityTestTracker->StarterID);
|
||||
CopyMonsterNameToBuffer(gFormatBuffer_Monsters[0], sPersonalityTestTracker->unk4.StarterID);
|
||||
CreateDialogueBoxAndPortrait(sPersonalityTypeDescriptionTable[sPersonalityTestTracker->playerNature], 0, 0, 0x101);
|
||||
}
|
||||
|
||||
|
|
@ -388,7 +388,7 @@ static void PersonalityTest_DisplayStarterSprite(void)
|
|||
const u8 *gfx;
|
||||
UnkTextStruct2 stackArray[4];
|
||||
|
||||
starterID = sPersonalityTestTracker->StarterID;
|
||||
starterID = sPersonalityTestTracker->unk4.StarterID;
|
||||
RestoreUnkTextStruct_8006518(stackArray);
|
||||
stackArray[1] = sUnknown_80F4244;
|
||||
ResetUnusedInputStruct();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user