summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-08-03 16:13:21 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-08-03 16:13:21 +0200
commitba8734d45940190a08767acd4ab9999f8c6b774c (patch)
tree31f60ebc57daa4cac05fc6eafd1ba8e6e32f62bc /src
parentedcacd232abe2d5dda4bc5b6a6d74817a42fdc45 (diff)
all functions decompiled
Diffstat (limited to 'src')
-rw-r--r--src/hall_of_fame.c106
1 files changed, 80 insertions, 26 deletions
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 93f32ec88..550cb0ebe 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -14,6 +14,8 @@
#include "m4a.h"
#include "data2.h"
#include "decompress.h"
+#include "rng.h"
+#include "trig.h"
extern u32 gUnknown_0203931C;
extern bool8 gUnknown_02039324; // has hall of fame records
@@ -24,6 +26,15 @@ extern struct SpriteTemplate gUnknown_02024E8C;
extern const s16 gUnknown_0840B534[][4];
extern const s16 gUnknown_0840B564[][4];
+extern const struct SpriteTemplate gSpriteTemplate_840B7A4;
+extern const struct HallofFameMon sDummyFameMon;
+extern const u8 gHallOfFame_Gfx[];
+extern const u16 gHallOfFame_Pal[];
+extern const struct CompressedSpriteSheet gUnknown_0840B514;
+extern const struct CompressedSpritePalette gUnknown_0840B524;
+extern const struct SpriteTemplate gUnknown_0840B6B8;
+extern const struct SpriteFrameImage* gUnknown_0840B69C[];
+extern void* gUnknown_0840B5A0[];
struct HallofFameMon
{
@@ -77,11 +88,11 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1);
static void sub_81433E0(void);
static void sub_8143570(void);
static void sub_81435B8(void);
-static u32 sub_81436BC(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid);
+static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid);
+static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3);
+static bool8 sub_81438C4(void);
// functions from different files
-void sub_81438C4(void);
-u32 sub_81437A4(u16 gender, u16 a1, u16 a2, u16 a3);
void sub_81439D0(void);
void sub_80C5CD4(void*); // ?
void sub_80C5E38(void*); // ?
@@ -236,17 +247,17 @@ static void sub_814217C(u8 taskID)
else
sub_8125EC8(3);
- for (i = 0; i < 50; i++, lastSavedTeam++)
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
{
if (lastSavedTeam->mons[0].species == 0)
break;
}
- if (i >= 50)
+ if (i >= HALL_OF_FAME_MAX_TEAMS)
{
struct HallofFameMons* r5 = (struct HallofFameMons*)(&ewram[0x1E000]);
struct HallofFameMons* r6 = (struct HallofFameMons*)(&ewram[0x1E000]);
r5++;
- for (i = 0; i < 49; i++, r6++, r5++)
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, r6++, r5++)
{
*r6 = *r5;
}
@@ -306,7 +317,7 @@ static void sub_8142320(u8 taskID)
field6 = gUnknown_0840B564[currPokeID][3];
}
- spriteID = sub_81436BC(currMon->species, xPos, yPos, currPokeID, currMon->tid, currMon->personality);
+ spriteID = HallOfFame_LoadPokemonPic(currMon->species, xPos, yPos, currPokeID, currMon->tid, currMon->personality);
gSprites[spriteID].data1 = field4;
gSprites[spriteID].data2 = field6;
gSprites[spriteID].data0 = 0;
@@ -412,7 +423,7 @@ static void sub_8142738(u8 taskID)
SetUpWindowConfig(&gWindowConfig_81E71B4);
InitMenuWindow(&gWindowConfig_81E71B4);
- gTasks[taskID].tPlayerSpriteID = sub_81437A4(gSaveBlock2.playerGender, 120, 72, 6);
+ gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6);
gTasks[taskID].tFrameCount = 120;
gTasks[taskID].func = sub_8142794;
}
@@ -467,8 +478,6 @@ static void sub_81428A0(u8 taskID)
#undef tPlayerSpriteID
#undef tMonSpriteID
-extern const struct HallofFameMon sDummyFameMon;
-
void sub_81428CC(void)
{
switch (gMain.state)
@@ -545,15 +554,15 @@ static void sub_8142A28(u8 taskID)
u16 i;
struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
- for (i = 0; i < 50; i++, savedTeams++)
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
{
if (savedTeams->mons[0].species == 0)
break;
}
- if (i < 50)
+ if (i < HALL_OF_FAME_MAX_TEAMS)
gTasks[taskID].tCurrTeamNo = i - 1;
else
- gTasks[taskID].tCurrTeamNo = 49;
+ gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1;
gTasks[taskID].tCurrPageNo = GetGameStat(10);
for (i = 0, vram1 = (u16*)(VRAM + 0x381A), vram2 = (u16*)(VRAM + 0x385A); i <= 16; i++)
@@ -606,7 +615,7 @@ static void sub_8142B04(u8 taskID)
posX = gUnknown_0840B564[i][2];
posY = gUnknown_0840B564[i][3];
}
- spriteID = sub_81436BC(currMon->species, posX, posY, i, currMon->tid, currMon->personality);
+ spriteID = HallOfFame_LoadPokemonPic(currMon->species, posX, posY, i, currMon->tid, currMon->personality);
gSprites[spriteID].oam.priority = 1;
gTasks[taskID].tMonSpriteID(i) = spriteID;
}
@@ -894,9 +903,6 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1)
MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 5);
}
-extern const u8 gHallOfFame_Gfx[];
-extern const u16 gHallOfFame_Pal[];
-
static void sub_81433E0(void)
{
u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4;
@@ -976,9 +982,6 @@ static void sub_81433E0(void)
LoadPalette(gHallOfFame_Pal, 0, 0x20);
}
-extern const struct CompressedSpriteSheet gUnknown_0840B514;
-extern const struct CompressedSpritePalette gUnknown_0840B524;
-
static void sub_8143570(void)
{
remove_some_task();
@@ -1027,9 +1030,6 @@ void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite)
}
-extern const struct SpriteTemplate gUnknown_0840B6B8;
-extern const struct SpriteFrameImage* gUnknown_0840B69C[];
-
void sub_8143648(u16 paletteTag, u8 animID)
{
gUnknown_02024E8C = gUnknown_0840B6B8;
@@ -1046,9 +1046,7 @@ void sub_8143680(u16 paletteTag, u8 animID)
gUnknown_02024E8C.anims = gUnknown_081EC2A4[0];
}
-extern void* gUnknown_0840B5A0[];
-
-static u32 sub_81436BC(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid)
+static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid)
{
u8 spriteID;
const u8* pokePal;
@@ -1063,3 +1061,59 @@ static u32 sub_81436BC(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32
gSprites[spriteID].oam.paletteNum = pokeID;
return spriteID;
}
+
+static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3)
+{
+ u8 spriteID;
+
+ DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*) 0x2000000, gUnknown_0840B5A0[a3], trainerPicID);
+
+ LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20);
+ sub_8143680(a3, a3);
+
+ spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 1);
+ gSprites[spriteID].oam.paletteNum = a3;
+
+ return spriteID;
+}
+
+void sub_814386C(struct Sprite* sprite)
+{
+ if (sprite->pos2.y > 120)
+ DestroySprite(sprite);
+ else
+ {
+ u16 rand;
+ u8 tableID;
+
+ sprite->pos2.y++;
+ sprite->pos2.y += sprite->data1;
+
+ tableID = sprite->data0;
+ rand = (Random() % 4) + 8;
+ sprite->pos2.x = rand * gSineTable[tableID] / 256;
+
+ sprite->data0 += 4;
+ }
+}
+
+bool8 sub_81438C4(void)
+{
+ u8 spriteID;
+ struct Sprite* sprite;
+
+ s16 posX = Random() % 240;
+ s16 posY = -(Random() % 8);
+
+ spriteID = CreateSprite(&gSpriteTemplate_840B7A4, posX, posY, 0);
+ sprite = &gSprites[spriteID];
+
+ StartSpriteAnim(sprite, Random() % 17);
+
+ if (Random() & 3)
+ sprite->data1 = 0;
+ else
+ sprite->data1 = 1;
+
+ return 0;
+}