mirror of
https://github.com/pret/pokeruby.git
synced 2026-09-29 23:14:31 -04:00
Decompile even even more pokenav
This commit is contained in:
-1918
File diff suppressed because it is too large
Load Diff
+33
-13
@@ -42,6 +42,11 @@ struct UnkUsePokeblockSub {
|
||||
/*0x3*/ u8 unk4:1;
|
||||
};
|
||||
|
||||
struct UnkPokenav11 {
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
};
|
||||
|
||||
struct UnkPokenavStruct {
|
||||
/*0x0000*/ u16 unk0[6][0x40];
|
||||
/*0x0300*/ u8 filler0300[0x6];
|
||||
@@ -115,13 +120,16 @@ struct UnkPokenavStruct {
|
||||
/*0x87C8*/ u8 unk87C8;
|
||||
/*0x87C9*/ u8 unk87C9;
|
||||
/*0x87CA*/ u8 unk87CA;
|
||||
/*0x87CB*/ u8 unk87CB;
|
||||
/*0x87CC*/ struct Sprite *unk87CC;
|
||||
/*0x87D0*/ struct Sprite *unk87D0[2];
|
||||
/*0x87D8*/ u8 filler87D8[0x2];
|
||||
/*0x87D8*/ u8 unk87D8;
|
||||
/*0x87D9*/ u8 filler87D9[0x1];
|
||||
/*0x87DA*/ s16 unk87DA;
|
||||
/*0x87DC*/ s16 unk87DC;
|
||||
/*0x87DE*/ s16 unk87DE;
|
||||
/*0x87E0*/ void *unk87E0;
|
||||
/*0x87DE*/ u8 unk87DE;
|
||||
/*0x87DF*/ u8 filler87DF[0x1];
|
||||
/*0x87E0*/ bool8 (*unk87E0)(void);
|
||||
/*0x87E4*/ struct Sprite *unk87E4[7];
|
||||
/*0x8800*/ struct Sprite *unk8800[10];
|
||||
/*0x8828*/ u8 unk8828;
|
||||
@@ -130,14 +138,25 @@ struct UnkPokenavStruct {
|
||||
/*0x8931*/ u8 unk8931[3];
|
||||
/*0x8934*/ u8 unk8934[3];
|
||||
/*0x8937*/ u8 unk8937[5];
|
||||
/*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab];
|
||||
/*0x8fe8*/ u8 fil8fe8[1];
|
||||
/*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1AA];
|
||||
/*0x8FE4*/ u16 unk8FE4;
|
||||
/*0x8FE6*/ u8 unk8FE6;
|
||||
/*0x8FE7*/ u8 unk8FE7;
|
||||
/*0x8FE8*/ u8 filler8FE8[0x1];
|
||||
/*0x8fe9*/ s8 unk8fe9;
|
||||
/*0x8fea*/ u8 fil8fea[6];
|
||||
/*0x8ff0*/ u8 unk8ff0;
|
||||
/*0x8ff1*/ u8 filler8ff1[0x13];
|
||||
/*0x9004*/ u8 unk9004[3][20];
|
||||
/*0x9040*/ u8 unk9040[0x304];
|
||||
/*0x8fea*/ s8 unk8FEA;
|
||||
/*0x8feb*/ s8 unk8FEB;
|
||||
/*0x8fec*/ s8 unk8FEC;
|
||||
/*0x8FED*/ u8 filler8FED[0x1];
|
||||
/*0x8fee*/ u16 unk8FEE;
|
||||
/*0x8ff0*/ u8 unk8ff0[4][5];
|
||||
/*0x9004*/ struct UnkPokenav11 unk9004[3][5];
|
||||
/*0x9040*/ struct UnkPokenav11 unk9040[5];
|
||||
/*0x9054*/ struct UnkPokenav11 unk9054[9][5];
|
||||
/*0x9108*/ u8 unk9108[0x14];
|
||||
/*0x911C*/ struct UnkPokenav11 unk911C[5];
|
||||
/*0x9130*/ u8 filler9130[0x212];
|
||||
/*0x9342*/ u16 unk9342;
|
||||
/*0x9344*/ u8 unk9344;
|
||||
/*0x9345*/ u8 filler9345[3];
|
||||
/*0x9348*/ struct Sprite *unk9348;
|
||||
@@ -174,7 +193,8 @@ struct UnkPokenavStruct {
|
||||
/*0xD160*/ u16 unkD160;
|
||||
/*0xD162*/ u8 unkD162;
|
||||
/*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164;
|
||||
/*0xD1D4*/ u8 fillerD1D4[0x8];
|
||||
/*0xD1D4*/ u8 fillerD1D6[0x2];
|
||||
/*0xD1D6*/ u16 unkD1D6[3];
|
||||
/*0xD1DC*/ u16 unkD1DC;
|
||||
/*0xD1DE*/ u16 unkD1DE;
|
||||
/*0xD1E0*/ u8 *unkD1E0;
|
||||
@@ -196,7 +216,7 @@ void sub_80F33A8(void);
|
||||
void sub_80F3C94(void);
|
||||
void sub_80F3D00(void);
|
||||
void sub_80F4BD0(void);
|
||||
void sub_80F556C(void *);
|
||||
void sub_80F556C(struct UnkPokenav11*);
|
||||
void sub_80F567C(void *, void *);
|
||||
void sub_80F5B38(void);
|
||||
bool8 sub_80F5B50(void);
|
||||
@@ -205,7 +225,7 @@ void sub_80EBA5C(void);
|
||||
void sub_80F5060(bool8);
|
||||
void move_anim_execute(void);
|
||||
bool8 gpu_sync_bg_show(void);
|
||||
void sub_80F5550(void *, void *);
|
||||
void sub_80F5550(struct UnkPokenav11*, struct UnkPokenav11*);
|
||||
bool8 sub_80F555C(void);
|
||||
void sub_80F7224(u8);
|
||||
void sub_80F5BDC(void);
|
||||
|
||||
+596
-7
@@ -5,6 +5,7 @@
|
||||
#include "battle.h"
|
||||
#include "data2.h"
|
||||
#include "de_rom_8040FE0.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "constants/flags.h"
|
||||
#include "landmark.h"
|
||||
@@ -281,7 +282,7 @@ void sub_80F13FC(void);
|
||||
void sub_80F1438(void);
|
||||
static void sub_80F1494(void);
|
||||
bool8 sub_80F162C(u8);
|
||||
void sub_80F01E0(u16);
|
||||
static void sub_80F01E0(u16);
|
||||
static void sub_80F19FC(void);
|
||||
static void sub_80F1A74(void);
|
||||
static void sub_80F1A80(void);
|
||||
@@ -347,6 +348,15 @@ static void sub_80F42C4(u8*);
|
||||
static void sub_80F4394(void);
|
||||
u8 *sub_80F6514(u8*, u16, u8);
|
||||
static u8 *sub_80F443C(u8 *, u16);
|
||||
void sub_80F55AC(u8*, struct UnkPokenav11 *);
|
||||
static void sub_80F4CF0(void);
|
||||
static void sub_80F4D44(void);
|
||||
static bool8 sub_80F4D88(void);
|
||||
static void sub_80F53EC(struct UnkPokenav11*, struct UnkPokenav11*);
|
||||
static bool8 sub_80F5504(void);
|
||||
static bool8 sub_80F5264(void);
|
||||
static bool8 sub_80F52F8(void);
|
||||
static bool8 sub_80F5364(void);
|
||||
|
||||
extern void sub_80F0900(void);
|
||||
extern void sub_80F01A4(void);
|
||||
@@ -375,13 +385,10 @@ extern u8 sub_80F68E8();
|
||||
extern void sub_80F66E0();
|
||||
extern void sub_80F638C();
|
||||
extern bool8 sub_80F63D0();
|
||||
extern void sub_80F4CF0();
|
||||
extern void sub_80EFF34();
|
||||
extern bool8 sub_80EFF68();
|
||||
extern void sub_80F6134();
|
||||
extern u8 sub_80F5DD4();
|
||||
extern void sub_80F4D44();
|
||||
extern bool8 sub_80F4D88();
|
||||
extern void sub_80F0264(u8);
|
||||
extern bool8 sub_80F02A0();
|
||||
extern void sub_80EF9F8(void);
|
||||
@@ -4676,7 +4683,7 @@ void sub_80F01A4(void)
|
||||
REG_WINOUT = 0x001B;
|
||||
}
|
||||
|
||||
void sub_80F01E0(u16 a)
|
||||
static void sub_80F01E0(u16 a)
|
||||
{
|
||||
Menu_PrintText(gUnknown_083DFEC4->unk8829[a], 13, 1);
|
||||
|
||||
@@ -8100,7 +8107,7 @@ static u8 *sub_80F445C(u8 *arg0, u16 arg1)
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
|
||||
u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
|
||||
{
|
||||
if (box == 14)
|
||||
{
|
||||
@@ -8126,7 +8133,7 @@ static void SetMonMarkings(u16 box, u16 monIndex, u8 markings)
|
||||
SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings);
|
||||
}
|
||||
|
||||
void sub_80F45A0(s16 arg0, u8 arg1)
|
||||
static void sub_80F45A0(s16 arg0, u8 arg1)
|
||||
{
|
||||
u8 box;
|
||||
u8 var0 = gUnknown_083DFEC4->unk893c[arg0].unk4;
|
||||
@@ -8148,3 +8155,585 @@ void sub_80F45A0(s16 arg0, u8 arg1)
|
||||
gUnknown_083DFEC4->unk8937[arg1] = var0;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80F468C(s16 arg0, u8 arg1)
|
||||
{
|
||||
u16 i;
|
||||
u16 box;
|
||||
u16 monIndex;
|
||||
|
||||
if (gUnknown_083DFEC4->unk893c[arg0].unk4)
|
||||
{
|
||||
box = gUnknown_083DFEC4->unk893c[arg0].unk1;
|
||||
monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx;
|
||||
gUnknown_083DFEC4->unk8ff0[arg1][0] = sub_80F44B0(box, monIndex, MON_DATA_COOL, NULL);
|
||||
gUnknown_083DFEC4->unk8ff0[arg1][1] = sub_80F44B0(box, monIndex, MON_DATA_TOUGH, NULL);
|
||||
gUnknown_083DFEC4->unk8ff0[arg1][2] = sub_80F44B0(box, monIndex, MON_DATA_SMART, NULL);
|
||||
gUnknown_083DFEC4->unk8ff0[arg1][3] = sub_80F44B0(box, monIndex, MON_DATA_CUTE, NULL);
|
||||
gUnknown_083DFEC4->unk8ff0[arg1][4] = sub_80F44B0(box, monIndex, MON_DATA_BEAUTY, NULL);
|
||||
|
||||
gUnknown_083DFEC4->unk8931[arg1] = sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) != 255
|
||||
? sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) / 29
|
||||
: 9;
|
||||
|
||||
gUnknown_083DFEC4->unk8934[arg1] = sub_80F44B0(box, monIndex, MON_DATA_MARKINGS, NULL);
|
||||
sub_80F55AC(gUnknown_083DFEC4->unk8ff0[arg1], gUnknown_083DFEC4->unk9004[arg1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
gUnknown_083DFEC4->unk8ff0[arg1][i] = 0;
|
||||
gUnknown_083DFEC4->unk9004[arg1][i].unk0 = 0x9B;
|
||||
gUnknown_083DFEC4->unk9004[arg1][i].unk2 = 0x5B;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80F4824(s16 arg0, u8 arg1)
|
||||
{
|
||||
u16 species;
|
||||
u32 otId;
|
||||
u32 personality;
|
||||
u16 box;
|
||||
u16 monIndex;
|
||||
|
||||
if (gUnknown_083DFEC4->unk893c[arg0].unk4)
|
||||
{
|
||||
box = gUnknown_083DFEC4->unk893c[arg0].unk1;
|
||||
monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx;
|
||||
species = sub_80F44B0(box, monIndex, MON_DATA_SPECIES2, NULL);
|
||||
otId = sub_80F44B0(box, monIndex, MON_DATA_OT_ID, NULL);
|
||||
personality = sub_80F44B0(box, monIndex, MON_DATA_PERSONALITY, NULL);
|
||||
|
||||
HandleLoadSpecialPokePic(
|
||||
&gMonFrontPicTable[species],
|
||||
gMonFrontPicCoords[species].coords,
|
||||
1,
|
||||
(intptr_t)gUnknown_083DFEC4->unk131E4,
|
||||
gUnknown_083DFEC4->unkD1E4[arg1],
|
||||
species,
|
||||
personality);
|
||||
|
||||
LZ77UnCompWram(GetMonSpritePalFromOtIdPersonality(species, otId, personality), gUnknown_083DFEC4->unk0[arg1]);
|
||||
gUnknown_083DFEC4->unkD1D6[arg1] = species;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F4900(s16 arg0, u8 arg1)
|
||||
{
|
||||
sub_80F45A0(arg0, arg1);
|
||||
sub_80F468C(arg0, arg1);
|
||||
sub_80F4824(arg0, arg1);
|
||||
}
|
||||
|
||||
void sub_80F492C(void)
|
||||
{
|
||||
gUnknown_083DFEC4->unk8FE4 = 0;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
// registers r3/r4 are swapped
|
||||
void sub_80F4944(struct UnkUsePokeblockSub *arg0)
|
||||
{
|
||||
u16 i;
|
||||
u16 r3;
|
||||
u16 r4;
|
||||
|
||||
i = 0;
|
||||
r4 = gUnknown_083DFEC4->unk8FE4;
|
||||
r3 = r4 / 2;
|
||||
while (r3 != r4)
|
||||
{
|
||||
if (arg0->unk0 > gUnknown_083DFEC4->unk893c[r3].unk0)
|
||||
r4 = r3;
|
||||
else
|
||||
i = r3 + 1;
|
||||
|
||||
r3 = ((r4 - i) / 2) + i;
|
||||
}
|
||||
|
||||
r4 = gUnknown_083DFEC4->unk8FE4;
|
||||
while (r4 > r3)
|
||||
{
|
||||
gUnknown_083DFEC4->unk893c[r4] = gUnknown_083DFEC4->unk893c[r4 - 1];
|
||||
r4--;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk893c[r3] = *arg0;
|
||||
gUnknown_083DFEC4->unk8FE4++;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_80F4944(struct UnkUsePokeblockSub *arg0)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
mov r12, r0\n\
|
||||
movs r2, 0\n\
|
||||
ldr r1, _080F4978 @ =gUnknown_083DFEC4\n\
|
||||
ldr r5, [r1]\n\
|
||||
ldr r3, _080F497C @ =0x00008fe4\n\
|
||||
adds r0, r5, r3\n\
|
||||
ldrh r4, [r0]\n\
|
||||
lsrs r3, r4, 1\n\
|
||||
mov r8, r1\n\
|
||||
cmp r4, r3\n\
|
||||
beq _080F499C\n\
|
||||
adds r6, r5, 0\n\
|
||||
mov r0, r12\n\
|
||||
ldrb r5, [r0]\n\
|
||||
ldr r7, _080F4980 @ =0x0000893c\n\
|
||||
_080F4968:\n\
|
||||
lsls r0, r3, 2\n\
|
||||
adds r0, r6, r0\n\
|
||||
adds r0, r7\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r5, r0\n\
|
||||
bls _080F4984\n\
|
||||
adds r4, r3, 0\n\
|
||||
b _080F498A\n\
|
||||
.align 2, 0\n\
|
||||
_080F4978: .4byte gUnknown_083DFEC4\n\
|
||||
_080F497C: .4byte 0x00008fe4\n\
|
||||
_080F4980: .4byte 0x0000893c\n\
|
||||
_080F4984:\n\
|
||||
adds r0, r3, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r2, r0, 16\n\
|
||||
_080F498A:\n\
|
||||
subs r0, r4, r2\n\
|
||||
lsrs r1, r0, 31\n\
|
||||
adds r0, r1\n\
|
||||
asrs r0, 1\n\
|
||||
adds r0, r2, r0\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r3, r0, 16\n\
|
||||
cmp r4, r3\n\
|
||||
bne _080F4968\n\
|
||||
_080F499C:\n\
|
||||
mov r1, r8\n\
|
||||
ldr r2, [r1]\n\
|
||||
ldr r1, _080F49EC @ =0x00008fe4\n\
|
||||
adds r0, r2, r1\n\
|
||||
ldrh r4, [r0]\n\
|
||||
lsls r6, r3, 2\n\
|
||||
cmp r4, r3\n\
|
||||
bls _080F49C6\n\
|
||||
ldr r0, _080F49F0 @ =0x0000893c\n\
|
||||
adds r5, r2, r0\n\
|
||||
_080F49B0:\n\
|
||||
lsls r2, r4, 2\n\
|
||||
adds r2, r5, r2\n\
|
||||
subs r1, r4, 0x1\n\
|
||||
lsls r0, r1, 2\n\
|
||||
adds r0, r5, r0\n\
|
||||
ldr r0, [r0]\n\
|
||||
str r0, [r2]\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r4, r1, 16\n\
|
||||
cmp r4, r3\n\
|
||||
bhi _080F49B0\n\
|
||||
_080F49C6:\n\
|
||||
mov r1, r8\n\
|
||||
ldr r2, [r1]\n\
|
||||
ldr r3, _080F49F0 @ =0x0000893c\n\
|
||||
adds r0, r2, r3\n\
|
||||
adds r0, r6\n\
|
||||
mov r3, r12\n\
|
||||
ldr r1, [r3]\n\
|
||||
str r1, [r0]\n\
|
||||
ldr r0, _080F49EC @ =0x00008fe4\n\
|
||||
adds r2, r0\n\
|
||||
ldrh r0, [r2]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r2]\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.align 2, 0\n\
|
||||
_080F49EC: .4byte 0x00008fe4\n\
|
||||
_080F49F0: .4byte 0x0000893c\n\
|
||||
.syntax divided\n");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
void sub_80F49F4(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
gUnknown_083DFEC4->unk893c[0].unk2 = 1;
|
||||
for (i = 1; i < gUnknown_083DFEC4->unk8FE4; i++)
|
||||
{
|
||||
if (gUnknown_083DFEC4->unk893c[i].unk0 == gUnknown_083DFEC4->unk893c[i - 1].unk0)
|
||||
gUnknown_083DFEC4->unk893c[i].unk2 = gUnknown_083DFEC4->unk893c[i - 1].unk2;
|
||||
else
|
||||
gUnknown_083DFEC4->unk893c[i].unk2 = i + 1;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk876C = 0;
|
||||
gUnknown_083DFEC4->unk8770 = 0;
|
||||
gUnknown_083DFEC4->unk876E = 0;
|
||||
gUnknown_083DFEC4->unk8772 = gUnknown_083DFEC4->unk8FE4 < 9 ? (gUnknown_083DFEC4->unk8FE4 - 1) : 7;
|
||||
gUnknown_083DFEC4->unk8774 = gUnknown_083DFEC4->unk8FE4 - 1;
|
||||
gUnknown_083DFEC4->unk87C9 = gUnknown_083DFEC4->unk8774 > 7;
|
||||
}
|
||||
|
||||
void sub_80F4B20(void)
|
||||
{
|
||||
s16 var0;
|
||||
s16 var1;
|
||||
|
||||
sub_80F4900(gUnknown_083DFEC4->unk87DC, 0);
|
||||
sub_80F2E18(0);
|
||||
if (gUnknown_083DFEC4->unk87DA == 1)
|
||||
{
|
||||
gUnknown_083DFEC4->unk8fe9 = 0;
|
||||
gUnknown_083DFEC4->unk8FEA = 0;
|
||||
gUnknown_083DFEC4->unk8FEB = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_083DFEC4->unk8fe9 = 0;
|
||||
gUnknown_083DFEC4->unk8FEA = 1;
|
||||
gUnknown_083DFEC4->unk8FEB = 2;
|
||||
|
||||
var0 = gUnknown_083DFEC4->unk87DC + 1;
|
||||
if (var0 >= gUnknown_083DFEC4->unk87DA)
|
||||
var0 = 0;
|
||||
|
||||
var1 = gUnknown_083DFEC4->unk87DC - 1;
|
||||
if (var1 < 0)
|
||||
var1 = gUnknown_083DFEC4->unk87DA - 1;
|
||||
|
||||
sub_80F4900(var0, 1);
|
||||
sub_80F4900(var1, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F4BD0(void)
|
||||
{
|
||||
u16 i, j;
|
||||
|
||||
for (i = 0, j = 0; i < gUnknown_083DFEC4->unk8828; i++)
|
||||
{
|
||||
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
|
||||
{
|
||||
gUnknown_083DFEC4->unk893c[j].unk1 = 14;
|
||||
gUnknown_083DFEC4->unk893c[j].partyIdx = i;
|
||||
gUnknown_083DFEC4->unk893c[j].unk2 = j + 1;
|
||||
gUnknown_083DFEC4->unk893c[j].unk4 = 1;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk893c[j].unk1 = 0;
|
||||
gUnknown_083DFEC4->unk893c[j].partyIdx = 0;
|
||||
gUnknown_083DFEC4->unk893c[j].unk2 = 0;
|
||||
gUnknown_083DFEC4->unk893c[j].unk4 = 0;
|
||||
gUnknown_083DFEC4->unk87DC = 0;
|
||||
gUnknown_083DFEC4->unk87DA = j + 1;
|
||||
sub_80F4B20();
|
||||
gUnknown_083DFEC4->unk87CB = 1;
|
||||
}
|
||||
|
||||
static void sub_80F4CF0(void)
|
||||
{
|
||||
gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk876E;
|
||||
sub_80F4B20();
|
||||
|
||||
if (gUnknown_083DFEC4->unk8774 == 0)
|
||||
gUnknown_083DFEC4->unk87CB = 0;
|
||||
else
|
||||
gUnknown_083DFEC4->unk87CB = 1;
|
||||
}
|
||||
|
||||
static void sub_80F4D44(void)
|
||||
{
|
||||
gUnknown_083DFEC4->unk8FE6 = 0;
|
||||
gUnknown_083DFEC4->unk8FE7 = 0;
|
||||
sub_80F492C();
|
||||
|
||||
if (!gUnknown_083DFEC4->unk6DAC)
|
||||
while (sub_80F4D88());
|
||||
}
|
||||
|
||||
static bool8 sub_80F4D88(void)
|
||||
{
|
||||
u16 i;
|
||||
register int mask asm("r3"); // FIXME
|
||||
int nextValue;
|
||||
struct UnkUsePokeblockSub var0;
|
||||
|
||||
switch (gUnknown_083DFEC4->unk8FE6)
|
||||
{
|
||||
default:
|
||||
var0.unk4 = 1;
|
||||
for (i = 0; i < 15; i++)
|
||||
{
|
||||
|
||||
if (GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_SPECIES)
|
||||
&& !GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_IS_EGG))
|
||||
{
|
||||
var0.unk1 = gUnknown_083DFEC4->unk8FE6;
|
||||
var0.partyIdx = gUnknown_083DFEC4->unk8FE7;
|
||||
var0.unk0 = GetBoxMonData(
|
||||
&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7],
|
||||
gUnknown_083DFEC4->unk87D8);
|
||||
sub_80F4944(&var0);
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk8FE7++;
|
||||
mask = 0xFF;
|
||||
if (gUnknown_083DFEC4->unk8FE7 == 30)
|
||||
{
|
||||
gUnknown_083DFEC4->unk8FE7 = 0;
|
||||
nextValue = gUnknown_083DFEC4->unk8FE6 + 1;
|
||||
gUnknown_083DFEC4->unk8FE6 = nextValue;
|
||||
if ((nextValue & mask) == 14)
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
var0.unk4 = 1;
|
||||
var0.unk1 = 14;
|
||||
for (i = 0; i < gUnknown_083DFEC4->unk8828; i++)
|
||||
{
|
||||
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
|
||||
{
|
||||
var0.partyIdx = i;
|
||||
var0.unk0 = GetMonData(&gPlayerParty[i], gUnknown_083DFEC4->unk87D8);
|
||||
sub_80F4944(&var0);
|
||||
}
|
||||
}
|
||||
|
||||
sub_80F49F4();
|
||||
gUnknown_083DFEC4->unk87DA = gUnknown_083DFEC4->unk8FE4;
|
||||
gUnknown_083DFEC4->unk8FE6++;
|
||||
break;
|
||||
case 15:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_80F4F78(void)
|
||||
{
|
||||
sub_80F53EC(gUnknown_083DFEC4->unk9040, gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9]);
|
||||
sub_80F5504();
|
||||
}
|
||||
|
||||
bool8 sub_80F4FB4(void)
|
||||
{
|
||||
bool8 var0 = sub_80F5504();
|
||||
bool8 var1 = sub_80F170C();
|
||||
return var0 || var1;
|
||||
}
|
||||
|
||||
void sub_80F4FDC(void)
|
||||
{
|
||||
if (gUnknown_083DFEC4->unk76AA || gUnknown_083DFEC4->unk87DC != gUnknown_083DFEC4->unk8828)
|
||||
sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040);
|
||||
}
|
||||
|
||||
bool8 sub_80F5038(void)
|
||||
{
|
||||
bool8 var0 = sub_80F5504();
|
||||
bool8 var1 = sub_80F173C();
|
||||
return var0 || var1;
|
||||
}
|
||||
|
||||
void sub_80F5060(u8 arg0)
|
||||
{
|
||||
u16 var0;
|
||||
u8 var1;
|
||||
u8 var2;
|
||||
|
||||
if (arg0)
|
||||
var0 = gUnknown_083DFEC4->unk8FEB;
|
||||
else
|
||||
var0 = gUnknown_083DFEC4->unk8FEA;
|
||||
|
||||
sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9004[var0]);
|
||||
var1 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4;
|
||||
if (arg0)
|
||||
{
|
||||
gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8FEA;
|
||||
gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8fe9;
|
||||
gUnknown_083DFEC4->unk8fe9 = var0;
|
||||
gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEB;
|
||||
|
||||
gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk87DC
|
||||
? gUnknown_083DFEC4->unk87DC - 1
|
||||
: gUnknown_083DFEC4->unk87DA - 1;
|
||||
gUnknown_083DFEC4->unk8FEE = gUnknown_083DFEC4->unk87DC
|
||||
? gUnknown_083DFEC4->unk87DC - 1
|
||||
: gUnknown_083DFEC4->unk87DA - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8FEB;
|
||||
gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8fe9;
|
||||
gUnknown_083DFEC4->unk8fe9 = var0;
|
||||
gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEA;
|
||||
|
||||
gUnknown_083DFEC4->unk87DC = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1)
|
||||
? gUnknown_083DFEC4->unk87DC + 1
|
||||
: 0;
|
||||
gUnknown_083DFEC4->unk8FEE = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1)
|
||||
? gUnknown_083DFEC4->unk87DC + 1
|
||||
: 0;
|
||||
}
|
||||
|
||||
var2 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4;
|
||||
if (!var1)
|
||||
gUnknown_083DFEC4->unk87E0 = sub_80F5264;
|
||||
else if (!var2)
|
||||
gUnknown_083DFEC4->unk87E0 = sub_80F52F8;
|
||||
else
|
||||
gUnknown_083DFEC4->unk87E0 = sub_80F5364;
|
||||
|
||||
gUnknown_083DFEC4->unk87DE = 0;
|
||||
}
|
||||
|
||||
bool8 gpu_sync_bg_show(void)
|
||||
{
|
||||
return gUnknown_083DFEC4->unk87E0();
|
||||
}
|
||||
|
||||
static bool8 sub_80F5264(void)
|
||||
{
|
||||
switch (gUnknown_083DFEC4->unk87DE)
|
||||
{
|
||||
case 0:
|
||||
sub_80F2E18(gUnknown_083DFEC4->unk8fe9);
|
||||
sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
|
||||
gUnknown_083DFEC4->unk87DE++;
|
||||
// fall through
|
||||
case 1:
|
||||
if (!sub_80F4FB4())
|
||||
{
|
||||
sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
|
||||
gUnknown_083DFEC4->unk87DE++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 sub_80F52F8(void)
|
||||
{
|
||||
switch (gUnknown_083DFEC4->unk87DE)
|
||||
{
|
||||
case 0:
|
||||
if (!sub_80F5038())
|
||||
{
|
||||
sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
|
||||
sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
|
||||
gUnknown_083DFEC4->unk87DE++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 sub_80F5364(void)
|
||||
{
|
||||
switch (gUnknown_083DFEC4->unk87DE)
|
||||
{
|
||||
case 0:
|
||||
sub_80F5504();
|
||||
if (!sub_80F173C())
|
||||
{
|
||||
sub_80F2E18(gUnknown_083DFEC4->unk8fe9);
|
||||
sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
|
||||
gUnknown_083DFEC4->unk87DE++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_80F4FB4())
|
||||
gUnknown_083DFEC4->unk87DE++;
|
||||
break;
|
||||
case 2:
|
||||
sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void sub_80F53EC(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
|
||||
{
|
||||
u16 i, j;
|
||||
int r5;
|
||||
int r6;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
r5 = arg0[i].unk0 << 8;
|
||||
r6 = ((arg1[i].unk0 - arg0[i].unk0) << 8) / 10;
|
||||
for (j = 0; j < 9; j++)
|
||||
{
|
||||
gUnknown_083DFEC4->unk9054[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
|
||||
r5 += r6;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk9054[j][i].unk0 = arg1[i].unk0;
|
||||
r5 = arg0[i].unk2 << 8;
|
||||
r6 = ((arg1[i].unk2 - arg0[i].unk2) << 8) / 10;
|
||||
for (j = 0; j < 9; j++)
|
||||
{
|
||||
gUnknown_083DFEC4->unk9054[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
|
||||
r5 += r6;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk9054[j][i].unk2 = arg1[i].unk2;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk9342 = 0;
|
||||
}
|
||||
|
||||
static bool8 sub_80F5504(void)
|
||||
{
|
||||
if (gUnknown_083DFEC4->unk9342 < 10)
|
||||
{
|
||||
sub_80F556C(gUnknown_083DFEC4->unk9054[gUnknown_083DFEC4->unk9342++]);
|
||||
return gUnknown_083DFEC4->unk9342 != 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F5550(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
|
||||
{
|
||||
sub_80F53EC(arg0, arg1);
|
||||
}
|
||||
|
||||
bool8 sub_80F555C(void)
|
||||
{
|
||||
return sub_80F5504();
|
||||
}
|
||||
|
||||
void sub_80F556C(struct UnkPokenav11 *arg0)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
gUnknown_083DFEC4->unk911C[i] = arg0[i];
|
||||
|
||||
gUnknown_083DFEC4->unk9344 = 1;
|
||||
}
|
||||
|
||||
+1
-1
@@ -317,7 +317,7 @@ static void sub_8136294(void)
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
sub_80F556C(gUnknown_083DFEC4->unk9004);
|
||||
sub_80F556C(gUnknown_083DFEC4->unk9004[0]);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 20:
|
||||
|
||||
Reference in New Issue
Block a user