1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#include "global.h"
#include "constants/emotions.h"
#include "constants/species.h"
#include "personality_test.h"
#include "pokemon.h"
extern void sub_80073E0(u32);
extern void sub_80073B8(u32);
extern void sub_8008C54(u32);
extern void sub_800836C(u32, u8 *r0, u32);
extern void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray);
const s16 gPartners[NUM_PARTNERS] =
{
SPECIES_CHARMANDER,
SPECIES_BULBASAUR,
SPECIES_SQUIRTLE,
SPECIES_PIKACHU,
SPECIES_CHIKORITA,
SPECIES_TOTODILE,
SPECIES_CYNDAQUIL,
SPECIES_TORCHIC,
SPECIES_TREECKO,
SPECIES_MUDKIP
};
extern u8 gUnknown_80F42D0[];
extern u8 gUnknown_80F42F0[];
extern u8 gUnknown_203B408;
// Definitely wrong but need to figure out better structure later
struct FaceData
{
/* 0x0 */ u8 *unk0[5];
};
void PersonalityTest_DisplayPartnerSprite(void)
{
s32 partnerID;
struct OpenedFile *faceFile;
int palleteIndex;
u8 *r6;
u32 faceIndex;
partnerID = gUnknown_203B404->PartnerArray[gUnknown_203B404->currPartnerSelection];
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 < 16; palleteIndex++){
SetBGPaletteBufferColorArray(palleteIndex + 224,&((struct FaceData *)(faceFile->data))->unk0[faceIndex][palleteIndex << 2]);
}
sub_800836C(1,r6,0xe);
CloseFile(faceFile);
sub_80073E0(1);
gUnknown_203B404->unk16 = 1;
}
s32 GetValidPartners(void)
{
u8 PlayerType[2];
u8 currentPartnerTypes[2];
s32 counter;
s32 ValidPartnerCounter;
s32 CurrentPartnerID;
ValidPartnerCounter = 0;
PlayerType[0] = GetPokemonType(gUnknown_203B404->StarterID,0);
PlayerType[1] = GetPokemonType(gUnknown_203B404->StarterID,1);
for(counter = 0; counter < NUM_PARTNERS; counter++){
CurrentPartnerID = gPartners[counter];
currentPartnerTypes[0] = GetPokemonType(CurrentPartnerID,0);
currentPartnerTypes[1] = GetPokemonType(CurrentPartnerID,1);
if (((currentPartnerTypes[0] == '\0') || ((currentPartnerTypes[0] != PlayerType[0] && (currentPartnerTypes[0] != PlayerType[1]))))
&& ((currentPartnerTypes[1] == '\0' || ((currentPartnerTypes[1] != PlayerType[0] && (currentPartnerTypes[1] != PlayerType[1])))
))) {
gUnknown_203B404->PartnerArray[ValidPartnerCounter] = CurrentPartnerID;
ValidPartnerCounter++;
}
}
return ValidPartnerCounter;
}
u8 sub_803D0D8()
{
return gUnknown_203B408;
}
void sub_803D0E4(u8 r0)
{
gUnknown_203B408 = r0;
}
u8 sub_803D0F0(u8 r0)
{
return gUnknown_80F42F0[r0];
}
u8 sub_803D100(u8 r0)
{
return gUnknown_80F42D0[r0];
}
|