summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-12-18 16:43:24 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-12-18 16:43:24 -0500
commitae881a3623eae7cf61702e73ead7c2343af0bda3 (patch)
tree9344e79fcc6db84ac12d65adfd119f1a6375b80d /src
parent7984a91c0892e0bd96ace89405d565ec0b43e084 (diff)
Start implementing LG and 1.1
Diffstat (limited to 'src')
-rw-r--r--src/main.c4
-rw-r--r--src/title_screen.c37
2 files changed, 40 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 9294c80ce..394a1f42a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -57,8 +57,10 @@ static void IntrDummy(void);
#if defined(FIRERED)
#define GAME_VERSION VERSION_FIRE_RED
-#elif defined(LEAF_GREEN)
+#elif defined(LEAFGREEN)
#define GAME_VERSION VERSION_LEAF_GREEN
+#else
+#error unknown version
#endif
const u8 gGameVersion = GAME_VERSION;
diff --git a/src/title_screen.c b/src/title_screen.c
index 2d6b6cf15..5955ea3a3 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -60,6 +60,7 @@ static void UpdateScanlineEffectRegBuffer(s16 a0);
static void ScheduleStopScanlineEffect(void);
static void LoadMainTitleScreenPalsAndResetBgs(void);
static void CB2_FadeOutTransitionToSaveClearScreen(void);
+static void SpriteCallback_TitleScreenFlameOrLeaf(struct Sprite * sprite);
static void CB2_FadeOutTransitionToBerryFix(void);
static void LoadSpriteGfxAndPals(void);
static void Task_FlameOrLeafSpawner(u8 taskId);
@@ -238,6 +239,12 @@ static const u8 gUnknown_83BFBD4[] = {
0x04, 0x10, 0x1a, 0x20, 0x30, 0xc8, 0xd8, 0xe0, 0xe8, 0x3c, 0x4c, 0x5c, 0x6c, 0x80, 0x90
};
+#if defined(LEAFGREEN)
+static const u16 gUnknown_LG_83BFA10[] = {
+ 50, 80, 110, 60, 90, 70, 100, 50
+};
+#endif
+
void CB2_InitTitleScreen(void)
{
switch (gMain.state)
@@ -876,6 +883,7 @@ static void SpriteCallback_TitleScreenFlameOrLeaf(struct Sprite * sprite)
#endif
}
+#if defined(FIRERED)
static bool32 CreateFlameOrLeafSprite(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId)
{
u8 spriteId;
@@ -901,6 +909,35 @@ static bool32 CreateFlameOrLeafSprite(s32 x, s32 y, s32 xspeed, s32 yspeed, bool
}
return FALSE;
}
+#elif defined(LEAFGREEN)
+void _CreateFlameOrLeafSprite(s32 y0, s32 x1, s32 y1)
+{
+ u8 spriteId = CreateSprite(&sSpriteTemplate_FlameOrLeaf_State0, 0xF0, y0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 0xF00;
+ gSprites[spriteId].data[1] = x1;
+ gSprites[spriteId].data[2] = y0 << 4;
+ gSprites[spriteId].data[3] = y1;
+ gSprites[spriteId].callback = SpriteCallback_TitleScreenFlameOrLeaf;
+ }
+}
+
+void SpriteCallback_LG_8079800(struct Sprite * sprite)
+{
+ sprite->pos1.x -= 7;
+ if (sprite->pos1.x < -16)
+ {
+ sprite->pos1.x = 0x100;
+ sprite->data[7]++;
+ if (sprite->data[7] >= NELEMS(gUnknown_LG_83BFA10))
+ sprite->data[7] = 0;
+ sprite->pos1.y = gUnknown_LG_83BFA10[sprite->data[7]];
+ }
+}
+
+#define CreateFlameOrLeafSprite ((bool32 (*)())_CreateFlameOrLeafSprite)
+#endif //FRLG
static void Task_FlameOrLeafSpawner(u8 taskId)
{