summaryrefslogtreecommitdiff
path: root/src/personality_test.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-06-09 22:54:21 -0500
committerGitHub <noreply@github.com>2021-06-09 22:54:21 -0500
commit377bd14ea67d6177250fb401e12d7dfcf44e2cf6 (patch)
tree5440970e02a7890791b234aa233e91e5c1d65b40 /src/personality_test.c
parenteaa141c612dd1689936a21bd57018a55ff686b69 (diff)
Dungeon pokemon/Floor ID JSON Part 1 (#39)
* move Thunderwave and Tiny Woods pokemon to json * rule tweaking to actually build tool before parsing JSON * delete .inc pokemon for tiny Woods and Thunderwave * silence git complaining about br_ips and ips_patch * use defines for species and pass the header file for species * convert sinister woods * convert MtThunderPeak * convert silent chasm * add trial floor_id w/ tiny woods * change make rule name to fix compile * MtSteel converted and bugfix * convert few floor headers and great canyon pokemon * code cleanup * unify unkData into UnkTextStruct2 * more code cleanup and some text decomp * doc more funcs and decomp/split some stuff * document more save stuff * more save work and move some data * pika sniped UpdateNatureTotal * decomp a litle and convert a few more dungeons * better scanning for json files * mt freeze and peak
Diffstat (limited to 'src/personality_test.c')
-rw-r--r--src/personality_test.c169
1 files changed, 54 insertions, 115 deletions
diff --git a/src/personality_test.c b/src/personality_test.c
index ef31ec1..1ec55e2 100644
--- a/src/personality_test.c
+++ b/src/personality_test.c
@@ -9,9 +9,9 @@
#include "save.h"
#include "memory.h"
#include "gUnknown_203B46C.h"
+#include "text.h"
extern void sub_801317C(u32 *);
-extern void sub_8099690(u32);
extern void sub_8001024(u32 *);
extern s32 sub_8094E4C(void);
extern void sub_8094D28(s32);
@@ -29,8 +29,6 @@ extern u32 sub_8016080(void);
extern void sub_80160D8(void);
extern void sub_8099690(u32);
-extern void sub_8006518(void *);
-extern void sub_800641C(void *, u32, u32);
extern void sub_80073E0(u32);
extern void sub_80073B8(u32);
extern void sub_8008C54(u32);
@@ -48,36 +46,13 @@ extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(struct UnkInputStruct **r0);
u32 sub_8013800(struct UnkInputStruct **r0, u32);
extern void AddMenuCursorSprite(struct UnkInputStruct **r0);
-extern void xxx_call_draw_string(u32 size, u32, const char *text, u32, u32);
+extern void xxx_call_draw_string(u32 x, u32 y, const char *text, u32, u32);
extern u32 sub_80095E4(s16, u32);
-
-struct PersonalityAnswer
-{
- const char * text;
- int effect;
-};
-
-struct PersonalityQuestion
-{
- const char * question;
- const struct PersonalityAnswer * answers;
- const u8 (*effects[16]);
-};
-
extern struct PersonalityQuestion *gPersonalityQuestionPointerTable[NUM_QUIZ_QUESTIONS];
extern struct UnkSaveStruct1 *gUnknown_203B46C;
-struct stack_PartnerSprite
-{
- // size: 0x60
- u32 unk0;
- u8 padding[0x18 - 4];
- struct unkData data;
- u32 padding2[12];
-};
-
extern const char gStarterReveal[];
extern const char gGenderText[];
extern u32 gGenderMenu;
@@ -100,17 +75,17 @@ extern const char gRelaxedDescription[];
extern const char gLonelyDescription[];
extern const char gQuirkyDescription[];
-const char gStarterReveal[] = _("\n{CENTER_ALIGN}The Pokémon $m0!");
+ALIGNED(4) const char gStarterReveal[] = _("\n{CENTER_ALIGN}The Pokémon $m0!");
const char * const gStarterRevealPtr = gStarterReveal;
-const char gPartnerPrompt[] = _(
+ALIGNED(4) const char gPartnerPrompt[] = _(
"{CENTER_ALIGN}This is the final step.{WAIT_PRESS}\n"
"{CENTER_ALIGN}Who would you like to have as a partner?{EXTRA_MSG}"
"{CENTER_ALIGN}Choose the Pokémon you want\n"
"{CENTER_ALIGN}as your partner from this group.");
const char * const gPartnerPromptPtr = gPartnerPrompt;
-const char gPartnerNickPrompt[] = _("{CENTER_ALIGN}What is your partner~27s nickname?");
+ALIGNED(4) const char gPartnerNickPrompt[] = _("{CENTER_ALIGN}What is your partner~27s nickname?");
const char * const gPartnerNickPromptPtr = gPartnerNickPrompt;
ALIGNED(4) const char gEndIntroText[] = _(
@@ -139,13 +114,13 @@ const char * const gPersonalityTypeDescriptionTable[NUM_PERSONALITIES] =
#include "data/nature_description.h"
-struct unkData gUnknown_80F4244 =
+const struct UnkTextStruct2 gUnknown_80F4244 =
{
- 0, 0,
- 5, 0,
- 0xC, 6,
- 5, 5,
- 5,0,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x06, 0x00,
+ 0x05, 0x05,
+ 0x05, 0x00,
NULL
};
@@ -165,31 +140,31 @@ const s16 gPartners[NUM_PARTNERS] =
SPECIES_MUDKIP
};
-const struct unkData gUnknown_80F4278 =
+const struct UnkTextStruct2 gUnknown_80F4278 =
{
- 0x00, 0x00,
- 0x03, 0x00,
- 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
-const struct unkData gUnknown_80F4290 =
+const struct UnkTextStruct2 gUnknown_80F4290 =
{
- 0x00, 0x00,
- 0x06, 0x00,
- 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00,
0x09, 0x0B,
0x0D, 0x00,
NULL
};
-const struct unkData gUnknown_80F42A8 =
+const struct UnkTextStruct2 gUnknown_80F42A8 =
{
- 0x00, 0x00,
- 0x05, 0x00,
- 0x0E, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00,
+ 0x0E, 0x00, 0x04, 0x00,
0x05, 0x05,
0x05, 0x00,
NULL
@@ -344,67 +319,31 @@ void CallPromptNewQuestion(void)
gUnknown_203B400->TestState = 2;
}
-NAKED
-void UpdateNatureTotals(void)
+void UpdateNatureTotals()
{
- asm_unified(
- "\tpush {r4-r6,lr}\n"
- "\tsub sp, 0x4\n"
- "\tmov r0, sp\n"
- "\tbl sub_80144A4\n"
- "\tcmp r0, 0\n"
- "\tbne _0803C97C\n"
- "\tldr r3, [sp]\n"
- "\tcmp r3, 0x63\n"
- "\tbne _0803C944\n"
- "\tldr r0, _0803C940\n"
- "\tldr r1, [r0]\n"
- "\tmovs r0, 0x37\n"
- "\tstr r0, [r1, 0x3C]\n"
- "\tmovs r0, 0x1\n"
- "\tb _0803C97A\n"
- "\t.align 2, 0\n"
-"_0803C940: .4byte gUnknown_203B400\n"
-"_0803C944:\n"
- "\tldr r1, _0803C984\n"
- "\tldr r2, _0803C988\n"
- "\tldr r0, [r2]\n"
- "\tldr r0, [r0, 0x3C]\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r1\n"
- "\tldr r0, [r0]\n"
- "\tldr r4, [r0, 0x8]\n"
- "\tlsls r0, r3, 4\n"
- "\tadds r4, r0\n"
- "\tmovs r3, 0\n"
- "\tadds r6, r2, 0\n"
- "\tadds r5, r6, 0\n"
-"_0803C95E:\n"
- "\tldr r1, [r5]\n"
- "\tlsls r0, r3, 2\n"
- "\tadds r1, 0x44\n"
- "\tadds r1, r0\n"
- "\tadds r0, r4, r3\n"
- "\tldrb r2, [r0]\n"
- "\tldr r0, [r1]\n"
- "\tadds r0, r2\n"
- "\tstr r0, [r1]\n"
- "\tadds r3, 0x1\n"
- "\tcmp r3, 0xC\n"
- "\tble _0803C95E\n"
- "\tldr r1, [r6]\n"
- "\tmovs r0, 0\n"
-"_0803C97A:\n"
- "\tstr r0, [r1, 0x34]\n"
-"_0803C97C:\n"
- "\tadd sp, 0x4\n"
- "\tpop {r4-r6}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
-"_0803C984: .4byte gPersonalityQuestionPointerTable\n"
-"_0803C988: .4byte gUnknown_203B400"
- );
+ s32 answerIndex;
+ s32 natureIndex;
+ const u8 *pointArray;
+
+ if (!sub_80144A4(&answerIndex))
+ {
+ if (answerIndex == 99)
+ {
+ gUnknown_203B400->currQuestionIndex = NUM_QUIZ_QUESTIONS;
+ gUnknown_203B400->TestState = 1;
+ }
+ else
+ {
+ pointArray = gPersonalityQuestionPointerTable[gUnknown_203B400->currQuestionIndex]->effects;
+ // Skip until we get to the one for our answer
+ pointArray += 16 * answerIndex;
+ for (natureIndex = 0; natureIndex < NUM_PERSONALITIES; natureIndex++)
+ {
+ gUnknown_203B400->NatureTotals[natureIndex] += pointArray[natureIndex];
+ }
+ gUnknown_203B400->TestState = 0;
+ }
+ }
}
void SetPlayerGender(void)
@@ -635,13 +574,13 @@ void PersonalityTest_DisplayStarterSprite(void)
int palleteIndex;
u8 *r6;
u32 faceIndex;
- struct stack_PartnerSprite stackArray;
+ struct UnkTextStruct2 stackArray[4];
starterID = gUnknown_203B400->StarterID;
- sub_8006518(&stackArray);
- stackArray.data = gUnknown_80F4244;
+ sub_8006518(stackArray);
+ stackArray[1] = gUnknown_80F4244;
ResetUnusedInputStruct();
- sub_800641C(&stackArray, 1, 0);
+ sub_800641C(stackArray, 1, 0);
sub_8008C54(1);
sub_80073B8(1);
faceFile = GetDialogueSpriteDataPtr(starterID);
@@ -753,7 +692,7 @@ void sub_803CECC(void)
void RedrawPartnerSelectionMenu(void)
{
s32 sVar1;
- u32 uVar2;
+ u32 yCoord;
const char *monName;
s32 monCounter;
@@ -776,9 +715,9 @@ void RedrawPartnerSelectionMenu(void)
monCounter = 0;
while (monCounter < gUnknown_203B404->unk32) {
- uVar2 = sub_8013800(&gUnknown_203B404->unk18, monCounter);
+ yCoord = sub_8013800(&gUnknown_203B404->unk18, monCounter);
monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]);
- xxx_call_draw_string(8, uVar2, monName, gUnknown_203B404->unk4C, 0);
+ xxx_call_draw_string(8, yCoord, monName, gUnknown_203B404->unk4C, 0);
monCounter++;
}
sub_80073E0(gUnknown_203B404->unk4C);