summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-08-01 12:47:03 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-08-01 12:47:03 +0200
commitf246b05d996dba1249393e9219f0c32337feac02 (patch)
treea53fb1799bba042699988889b6f609e7abb0af44
parentd413187fa82e19ceea5ff1b2437891329781a814 (diff)
finish up egg hatch, make it compile
-rw-r--r--asm/egg_hatch.s300
-rw-r--r--include/pokemon.h2
-rw-r--r--src/egg_hatch.c265
-rw-r--r--sym_common.txt2
4 files changed, 169 insertions, 400 deletions
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
index 51e688998..1e7bffa77 100644
--- a/asm/egg_hatch.s
+++ b/asm/egg_hatch.s
@@ -8,304 +8,4 @@
- thumb_func_start SpriteCB_Egg_5
-SpriteCB_Egg_5: @ 8043504
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08043540
- ldr r4, _08043594 @ =gSprites
- ldr r3, _08043598 @ =gUnknown_0300481C
- ldr r0, [r3]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, [r3]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_08043540:
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- bne _0804355A
- movs r1, 0x1
- negs r1, r1
- ldr r0, _0804359C @ =0x0000ffff
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0804355A:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x9
- bgt _08043578
- ldr r2, _08043594 @ =gSprites
- ldr r0, _08043598 @ =gUnknown_0300481C
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
-_08043578:
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x28
- ble _08043586
- ldr r0, _080435A0 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_08043586:
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08043594: .4byte gSprites
-_08043598: .4byte gUnknown_0300481C
-_0804359C: .4byte 0x0000ffff
-_080435A0: .4byte SpriteCallbackDummy
- thumb_func_end SpriteCB_Egg_5
-
- thumb_func_start SpriteCB_EggShard
-SpriteCB_EggShard: @ 80435A4
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x32]
- ldrh r3, [r2, 0x38]
- adds r0, r1, r3
- strh r0, [r2, 0x38]
- movs r4, 0x36
- ldrsh r0, [r2, r4]
- cmp r0, 0
- bge _080435C2
- adds r0, 0xFF
-_080435C2:
- asrs r0, 8
- strh r0, [r2, 0x24]
- movs r3, 0x38
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bge _080435D0
- adds r0, 0xFF
-_080435D0:
- asrs r0, 8
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r3, r1, r0
- strh r3, [r2, 0x32]
- movs r4, 0x22
- ldrsh r1, [r2, r4]
- movs r4, 0x26
- ldrsh r0, [r2, r4]
- adds r0, r1, r0
- adds r1, 0x14
- cmp r0, r1
- ble _080435F6
- lsls r0, r3, 16
- cmp r0, 0
- ble _080435F6
- adds r0, r2, 0
- bl DestroySprite
-_080435F6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_EggShard
-
- thumb_func_start CreateRandomEggShardSprite
-CreateRandomEggShardSprite: @ 80435FC
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r3, _0804364C @ =gEggShardVelocities
- ldr r0, _08043650 @ =gUnknown_0300481C
- ldr r4, [r0]
- adds r4, 0x3A
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r1, r0, r3
- ldrh r6, [r1]
- adds r3, 0x2
- adds r0, r3
- ldrh r5, [r0]
- adds r2, 0x1
- strb r2, [r4]
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- movs r0, 0x64
- str r0, [sp]
- lsrs r1, 16
- str r1, [sp, 0x4]
- movs r0, 0x78
- movs r1, 0x3C
- adds r2, r6, 0
- adds r3, r5, 0
- bl CreateEggShardSprite
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804364C: .4byte gEggShardVelocities
-_08043650: .4byte gUnknown_0300481C
- thumb_func_end CreateRandomEggShardSprite
-
- thumb_func_start CreateEggShardSprite
-CreateEggShardSprite: @ 8043654
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r0, [sp, 0x1C]
- mov r9, r0
- ldr r1, [sp, 0x20]
- mov r10, r1
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- mov r1, r9
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _080436CC @ =gSpriteTemplate_820A418
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x4
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080436D0 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x30]
- mov r1, r8
- strh r1, [r0, 0x32]
- mov r1, r9
- strh r1, [r0, 0x34]
- mov r1, r10
- bl StartSpriteAnim
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080436CC: .4byte gSpriteTemplate_820A418
-_080436D0: .4byte gSprites
- thumb_func_end CreateEggShardSprite
-
- thumb_func_start EggHatchPrintMessage1
-EggHatchPrintMessage1: @ 80436D4
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _080436F8 @ =gUnknown_0300481C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x8
- adds r2, 0x38
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x3
- bl sub_8002EB0
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080436F8: .4byte gUnknown_0300481C
- thumb_func_end EggHatchPrintMessage1
-
- thumb_func_start EggHatchPrintMessage2
-EggHatchPrintMessage2: @ 80436FC
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _08043720 @ =gUnknown_0300481C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x8
- adds r2, 0x38
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x3
- bl sub_8003460
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08043720: .4byte gUnknown_0300481C
- thumb_func_end EggHatchPrintMessage2
-
- thumb_func_start EggHatchUpdateWindowText
-EggHatchUpdateWindowText: @ 8043724
- push {lr}
- ldr r0, _08043738 @ =gUnknown_0300481C
- ldr r0, [r0]
- adds r0, 0x8
- bl sub_80035AC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08043738: .4byte gUnknown_0300481C
- thumb_func_end EggHatchUpdateWindowText
-
.align 2, 0 @ Don't pad with nop.
diff --git a/include/pokemon.h b/include/pokemon.h
index 2cc8e9ac4..21173d503 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -542,7 +542,7 @@ union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality,
u32 GetMonData();
u32 GetBoxMonData();
-void SetMonData(struct Pokemon *mon, s32 field, const void *data);
+void SetMonData(struct Pokemon *mon, s32 field, const u8 *data);
void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data);
void CopyMon(void *dest, void *src, size_t size);
u8 GiveMonToPlayer(struct Pokemon *mon);
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 70d206a06..f518fdb84 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -17,21 +17,61 @@
#include "menu.h"
#include "naming_screen.h"
#include "trig.h"
+#include "rng.h"
-extern u8 gStringVar1[];
extern u8 ewram[];
extern struct SpriteTemplate gUnknown_02024E8C;
+struct EggHatchData
+{
+ u8 eggSpriteID;
+ u8 pokeSpriteID;
+ u8 CB2_state;
+ u8 CB2_PalCounter;
+ u8 eggPartyID;
+ struct Window window;
+ u8 tileDataStartOffset;
+ u8 unused_39;
+ u8 eggShardVelocityID;
+};
+
+extern struct EggHatchData* sEggHatchData;
+
+extern const u32 gUnknown_08D00000[];
+extern const u32 gUnknown_08D00524[];
+extern const u32 gUnknown_0820CA98[];
+extern const u32 gUnknown_0820F798[];
+extern const u16 gUnknown_08D004E0[]; //palette
+extern const u16 gUnknown_0820C9F8[]; //palette
+extern const struct SpriteSheet gUnknown_0820A3B0;
+extern const struct SpriteSheet gUnknown_0820A3B8;
+extern const struct SpritePalette gUnknown_0820A3C0;
+extern const struct SpriteTemplate gSpriteTemplate_820A3C8;
+extern const struct SpriteTemplate gSpriteTemplate_820A418;
+extern const s16 gEggShardVelocities[][2];
+
bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID);
u8* GetMonNick(struct Pokemon* mon, u8* dst);
u8 sav1_map_get_name(void);
const struct CompressedSpritePalette* sub_8040990(struct Pokemon* mon); //gets pokemon palette address
void sub_8080990(void);
-void Task_EggHatch(u8 taskID);
-void CB2_EggHatch_0(void);
-
-void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
+static void Task_EggHatch(u8 taskID);
+static void CB2_EggHatch_0(void);
+static void CB2_EggHatch_1(void);
+static void SpriteCB_Egg_0(struct Sprite* sprite);
+static void SpriteCB_Egg_1(struct Sprite* sprite);
+static void SpriteCB_Egg_2(struct Sprite* sprite);
+static void SpriteCB_Egg_3(struct Sprite* sprite);
+static void SpriteCB_Egg_4(struct Sprite* sprite);
+static void SpriteCB_Egg_5(struct Sprite* sprite);
+static void EggHatchPrintMessage2(u8* src);
+static void EggHatchPrintMessage1(u8* src);
+static bool8 EggHatchUpdateWindowText(void);
+static void CreateRandomEggShardSprite(void);
+static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
+
+static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
u16 species;
u32 personality, pokerus;
@@ -82,7 +122,7 @@ void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
*egg = *temp;
}
-void AddHatchedMonToParty(u8 id)
+static void AddHatchedMonToParty(u8 id)
{
u8 isEgg;
u16 pokeNum;
@@ -107,10 +147,10 @@ void AddHatchedMonToParty(u8 id)
GetMonNick(mon, gStringVar1);
ball = ITEM_POKE_BALL;
- SetMonData(mon, MON_DATA_POKEBALL, &ball);
+ SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball);
caughtLvl = 0;
- SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl);
+ SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl);
mapNameID = sav1_map_get_name();
SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
@@ -124,8 +164,15 @@ void ScriptHatchMon(void)
AddHatchedMonToParty(gSpecialVar_0x8004);
}
+#ifdef NONMATCHING
+static bool8 sub_8042ABC(void* a, u8 b)
+{
+
+}
+
+#else
__attribute__((naked))
-bool8 sub_8042ABC(void* a, u8 b)
+static bool8 sub_8042ABC(void* a, u8 b)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
@@ -194,12 +241,14 @@ _08042B42:\n\
.syntax divided");
}
+#endif // NONMATCHING
+
bool8 sub_8042B4C(void)
{
return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
}
-u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
+static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
{
u8 r5 = 0;
u8 spriteID = 0;
@@ -235,7 +284,7 @@ u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
return spriteID;
}
-void VBlankCB_EggHatch(void)
+static void VBlankCB_EggHatch(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -249,7 +298,7 @@ void EggHatch(void)
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
}
-void Task_EggHatch(u8 taskID)
+static void Task_EggHatch(u8 taskID)
{
if (!gPaletteFade.active)
{
@@ -259,48 +308,15 @@ void Task_EggHatch(u8 taskID)
}
}
-void CB2_EggHatch_1(void);
-
-struct Struct_2018000
-{
- u8 eggSpriteID;
- u8 pokeSpriteID;
- u8 field_2;
- u8 field_3;
- u8 eggPartyID;
- u8 field_5;
- u8 field_6;
- u8 field_7;
- struct Window window;
- u8 field_38;
- u8 field_39;
- u8 field_3A;
-};
-
-extern struct Struct_2018000* gUnknown_0300481C;
-extern const u32 gUnknown_08D00000[];
-extern const u32 gUnknown_08D00524[];
-extern const u32 gUnknown_0820CA98[];
-extern const u32 gUnknown_0820F798[];
-extern const u16 gUnknown_08D004E0[]; //palette
-
-extern const u16 gUnknown_0820C9F8[]; //palette
-
-extern const struct SpriteSheet gUnknown_0820A3B0;
-extern const struct SpriteSheet gUnknown_0820A3B8;
-extern const struct SpritePalette gUnknown_0820A3C0;
-
-extern const struct SpriteTemplate gSpriteTemplate_820A3C8;
-
void CB2_EggHatch_0(void)
{
switch (gMain.state)
{
case 0:
REG_DISPCNT = 0;
- gUnknown_0300481C = (struct Struct_2018000*)(&ewram[0x18000]);
- gUnknown_0300481C->eggPartyID = gSpecialVar_0x8004;
- gUnknown_0300481C->field_3A = 0;
+ sEggHatchData = (struct EggHatchData*)(&ewram[0x18000]);
+ sEggHatchData->eggPartyID = gSpecialVar_0x8004;
+ sEggHatchData->eggShardVelocityID = 0;
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -310,9 +326,9 @@ void CB2_EggHatch_0(void)
break;
case 1:
SetUpWindowConfig(&gWindowConfig_81E6F84);
- InitWindowFromConfig(&gUnknown_0300481C->window, &gWindowConfig_81E6F84);
- gUnknown_0300481C->field_38 = SetTextWindowBaseTileNum(20);
- LoadTextWindowGraphics(&gUnknown_0300481C->window);
+ InitWindowFromConfig(&sEggHatchData->window, &gWindowConfig_81E6F84);
+ sEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20);
+ LoadTextWindowGraphics(&sEggHatchData->window);
gMain.state++;
break;
case 2:
@@ -329,16 +345,16 @@ void CB2_EggHatch_0(void)
gMain.state++;
break;
case 4:
- gUnknown_0300481C->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
- AddHatchedMonToParty(gUnknown_0300481C->eggPartyID);
+ sEggHatchData->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
+ AddHatchedMonToParty(sEggHatchData->eggPartyID);
gMain.state++;
break;
case 5:
- EggHatchCreateMonSprite(0, 0, gUnknown_0300481C->eggPartyID);
+ EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID);
gMain.state++;
break;
case 6:
- gUnknown_0300481C->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gUnknown_0300481C->eggPartyID);
+ sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID);
gMain.state++;
break;
case 7:
@@ -385,7 +401,7 @@ void CB2_EggHatch_0(void)
REG_BG2VOFS = 0;
SetMainCallback2(CB2_EggHatch_1);
- gUnknown_0300481C->field_2 = 0;
+ sEggHatchData->CB2_state = 0;
break;
}
}
@@ -411,73 +427,61 @@ void Task_EggHatchPlayBGM(u8 taskID)
gTasks[taskID].data[0]++;
}
-void SpriteCB_Egg_0(struct Sprite* sprite);
-void SpriteCB_Egg_1(struct Sprite* sprite);
-void SpriteCB_Egg_2(struct Sprite* sprite);
-void SpriteCB_Egg_3(struct Sprite* sprite);
-void SpriteCB_Egg_4(struct Sprite* sprite);
-void SpriteCB_Egg_5(struct Sprite* sprite);
-
-void EggHatchPrintMessage2(u8* src);
-void EggHatchPrintMessage1(u8* src);
-bool8 EggHatchUpdateWindowText(void);
-void CreateRandomEggShardSprite(void);
-
void CB2_EggHatch_1(void)
{
- switch (gUnknown_0300481C->field_2)
+ switch (sEggHatchData->CB2_state)
{
case 0:
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
REG_DISPCNT = 0x1740;
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
CreateTask(Task_EggHatchPlayBGM, 5);
break;
case 1:
if (!gPaletteFade.active)
{
- gUnknown_0300481C->field_3 = 0;
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_PalCounter = 0;
+ sEggHatchData->CB2_state++;
}
break;
case 2:
- if (++gUnknown_0300481C->field_3 > 30)
+ if (++sEggHatchData->CB2_PalCounter > 30)
{
- gUnknown_0300481C->field_2++;
- gSprites[gUnknown_0300481C->eggSpriteID].callback = SpriteCB_Egg_0;
+ sEggHatchData->CB2_state++;
+ gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0;
}
break;
case 3:
- if (gSprites[gUnknown_0300481C->eggSpriteID].callback == SpriteCallbackDummy)
- gUnknown_0300481C->field_2++;
+ if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy)
+ sEggHatchData->CB2_state++;
break;
case 4:
- GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar1);
+ GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg);
EggHatchPrintMessage2(gStringVar4);
PlayFanfare(371);
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
break;
case 5:
if (IsFanfareTaskInactive())
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
break;
case 6:
if (IsFanfareTaskInactive())
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
break;
case 7:
- GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar1);
+ GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt);
EggHatchPrintMessage1(gStringVar4);
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
break;
case 8:
if (EggHatchUpdateWindowText())
{
MenuDrawTextWindow(22, 8, 27, 13);
InitYesNoMenu(22, 8, 4);
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
}
break;
case 9:
@@ -491,20 +495,20 @@ void CB2_EggHatch_1(void)
u8 gender;
u32 personality;
- GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar3);
- species = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_SPECIES);
- gender = GetMonGender(&gPlayerParty[gUnknown_0300481C->eggPartyID]);
- personality = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_PERSONALITY, 0);
+ GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
+ species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
+ gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
+ personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
}
else
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
}
}
break;
case 10:
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gUnknown_0300481C->field_2++;
+ sEggHatchData->CB2_state++;
break;
case 11:
if (!gPaletteFade.active)
@@ -517,7 +521,7 @@ void CB2_EggHatch_1(void)
UpdatePaletteFade();
}
-void SpriteCB_Egg_0(struct Sprite* sprite)
+static void SpriteCB_Egg_0(struct Sprite* sprite)
{
if (++sprite->data0 > 20)
{
@@ -537,7 +541,7 @@ void SpriteCB_Egg_0(struct Sprite* sprite)
}
}
-void SpriteCB_Egg_1(struct Sprite* sprite)
+static void SpriteCB_Egg_1(struct Sprite* sprite)
{
if (++sprite->data2 > 30)
{
@@ -560,7 +564,7 @@ void SpriteCB_Egg_1(struct Sprite* sprite)
}
}
-void SpriteCB_Egg_2(struct Sprite* sprite)
+static void SpriteCB_Egg_2(struct Sprite* sprite)
{
if (++sprite->data2 > 30)
{
@@ -570,9 +574,9 @@ void SpriteCB_Egg_2(struct Sprite* sprite)
sprite->callback = SpriteCB_Egg_3;
sprite->data0 = 0;
- species = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_SPECIES);
- gSprites[gUnknown_0300481C->pokeSpriteID].pos2.x = 0;
- gSprites[gUnknown_0300481C->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
+ species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
+ gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
+ gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
}
else
{
@@ -591,7 +595,7 @@ void SpriteCB_Egg_2(struct Sprite* sprite)
}
}
-void SpriteCB_Egg_3(struct Sprite* sprite)
+static void SpriteCB_Egg_3(struct Sprite* sprite)
{
if (++sprite->data0 > 50)
{
@@ -600,7 +604,7 @@ void SpriteCB_Egg_3(struct Sprite* sprite)
}
}
-void SpriteCB_Egg_4(struct Sprite* sprite)
+static void SpriteCB_Egg_4(struct Sprite* sprite)
{
s16 i;
if (sprite->data0 == 0)
@@ -619,3 +623,68 @@ void SpriteCB_Egg_4(struct Sprite* sprite)
sprite->data0 = 0;
}
}
+
+static void SpriteCB_Egg_5(struct Sprite* sprite)
+{
+ if (sprite->data0 == 0)
+ {
+ gSprites[sEggHatchData->pokeSpriteID].invisible = 0;
+ StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
+ }
+ if (sprite->data0 == 8)
+ BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
+ if (sprite->data0 <= 9)
+ gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
+ if (sprite->data0 > 40)
+ sprite->callback = SpriteCallbackDummy;
+ sprite->data0++;
+}
+
+void SpriteCB_EggShard(struct Sprite* sprite)
+{
+ sprite->data4 += sprite->data1;
+ sprite->data5 += sprite->data2;
+
+ sprite->pos2.x = sprite->data4 / 256;
+ sprite->pos2.y = sprite->data5 / 256;
+
+ sprite->data2 += sprite->data3;
+
+ if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0)
+ DestroySprite(sprite);
+}
+
+static void CreateRandomEggShardSprite(void)
+{
+ u16 spriteAnimIndex;
+
+ s16 velocity1 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][0];
+ s16 velocity2 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][1];
+ sEggHatchData->eggShardVelocityID++;
+ spriteAnimIndex = Random() % 4;
+ CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex);
+}
+
+static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
+{
+ u8 spriteID = CreateSprite(&gSpriteTemplate_820A418, x, y, 4);
+ gSprites[spriteID].data1 = data1;
+ gSprites[spriteID].data2 = data2;
+ gSprites[spriteID].data3 = data3;
+ StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
+}
+
+static void EggHatchPrintMessage1(u8* src)
+{
+ sub_8002EB0(&sEggHatchData->window, src, sEggHatchData->tileDataStartOffset, 3, 15);
+}
+
+static void EggHatchPrintMessage2(u8* src)
+{
+ sub_8003460(&sEggHatchData->window, src, sEggHatchData->tileDataStartOffset, 3, 15);
+}
+
+static bool8 EggHatchUpdateWindowText(void)
+{
+ return sub_80035AC(&sEggHatchData->window);
+}
diff --git a/sym_common.txt b/sym_common.txt
index fc729a587..ec482a6d9 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -110,7 +110,7 @@ gUnknown_0300434C: @ 300434C
@ egg_hatch
.align 2
-gUnknown_0300481C: @ 300481C
+sEggHatchData: @ 300481C
.space 0x4
.include "load_save.o"