more code_2 work

This commit is contained in:
Seth Barberee 2024-12-15 10:08:29 -08:00
parent cd2c46d027
commit 0776e271cc
4 changed files with 37 additions and 39 deletions

View File

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

View File

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

View File

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

View File

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