move data to C

This commit is contained in:
DizzyEggg
2017-08-01 15:21:54 +02:00
parent f246b05d99
commit b14554c6ae
4 changed files with 192 additions and 153 deletions

View File

@@ -1,11 +0,0 @@
.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
.align 2, 0 @ Don't pad with nop.

View File

@@ -1,122 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
EggPalette:: @ 8209AD8
.incbin "graphics/pokemon/egg/palette.gbapal"
EggHatchTiles:: @ 8209AF8
.incbin "graphics/misc/egg_hatch.4bpp"
EggShardTiles:: @ 820A2F8
.incbin "graphics/misc/egg_shard.4bpp"
.align 2
gOamData_820A378:: @ 820A378
.2byte 0x0000
.2byte 0x8000
.2byte 0x0400
.align 2
gSpriteAnim_820A380:: @ 820A380
obj_image_anim_frame 0, 5
obj_image_anim_end
.align 2
gSpriteAnim_820A388:: @ 820A388
obj_image_anim_frame 16, 5
obj_image_anim_end
.align 2
gSpriteAnim_820A390:: @ 820A390
obj_image_anim_frame 32, 5
obj_image_anim_end
.align 2
gSpriteAnim_820A398:: @ 820A398
obj_image_anim_frame 48, 5
obj_image_anim_end
.align 2
gSpriteAnimTable_820A3A0:: @ 820A3A0
.4byte gSpriteAnim_820A380
.4byte gSpriteAnim_820A388
.4byte gSpriteAnim_820A390
.4byte gSpriteAnim_820A398
.align 2
gUnknown_0820A3B0:: @ 820A3B0
obj_tiles EggHatchTiles, 2048, 12345
.align 2
gUnknown_0820A3B8:: @ 820A3B8
obj_tiles EggShardTiles, 128, 23456
.align 2
gUnknown_0820A3C0:: @ 820A3C0
obj_pal EggPalette, 54321
.align 2
gSpriteTemplate_820A3C8:: @ 820A3C8
spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gOamData_820A3E0:: @ 820A3E0
.2byte 0x0000
.2byte 0x0000
.2byte 0x0800
.align 2
gSpriteAnim_820A3E8:: @ 820A3E8
obj_image_anim_frame 0, 5
obj_image_anim_end
.align 2
gSpriteAnim_820A3F0:: @ 820A3F0
obj_image_anim_frame 1, 5
obj_image_anim_end
.align 2
gSpriteAnim_820A3F8:: @ 820A3F8
obj_image_anim_frame 2, 5
obj_image_anim_end
.align 2
gSpriteAnim_820A400:: @ 820A400
obj_image_anim_frame 3, 5
obj_image_anim_end
.align 2
gSpriteAnimTable_820A408:: @ 820A408
.4byte gSpriteAnim_820A3E8
.4byte gSpriteAnim_820A3F0
.4byte gSpriteAnim_820A3F8
.4byte gSpriteAnim_820A400
.align 2
gSpriteTemplate_820A418:: @ 820A418
spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard
@ The values are Q8.8 fixed-point numbers.
.align 1
gEggShardVelocities:: @ 820A430
.2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
.2byte 0xFB00, 0xFD00 @ (-5, -3)
.2byte 0x0380, 0xFD00 @ (3.5, -3)
.2byte 0xFC00, 0xFC40 @ (-4, -3.75)
.2byte 0x0200, 0xFE80 @ (2, -1.5)
.2byte 0xFF80, 0xF940 @ (-0.5, -6.75)
.2byte 0x0500, 0xFDC0 @ (5, -2.25)
.2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
.2byte 0x0480, 0xFE80 @ (4.5, -1.5)
.2byte 0xFF00, 0xF940 @ (-1, -6.75)
.2byte 0x0400, 0xFDC0 @ (4, -2.25)
.2byte 0xFC80, 0xFC40 @ (-3.5, -3.75)
.2byte 0x0100, 0xFE80 @ (1, -1.5)
.2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75)
.2byte 0x0480, 0xFDC0 @ (4.5, -2.25)
.2byte 0xFF80, 0xF880 @ (-0.5, -7.5)
.2byte 0x0100, 0xFB80 @ (1, -4.5)
.2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25)
.2byte 0x0280, 0xF880 @ (2.5, -7.5)

View File

@@ -74,7 +74,6 @@ SECTIONS {
src/daycare.o(.text);
asm/daycare.o(.text);
src/egg_hatch.o(.text);
asm/egg_hatch.o(.text);
src/battle_interface.o(.text);
src/smokescreen.o(.text);
src/pokeball.o(.text);
@@ -338,7 +337,7 @@ SECTIONS {
src/trig.o(.rodata);
src/util.o(.rodata);
data/daycare.o(.rodata);
data/egg_hatch.o(.rodata);
src/egg_hatch.o(.rodata);
data/battle_interface.o(.rodata);
src/pokeball.o(.rodata);
data/trade.o(.rodata);

View File

@@ -43,12 +43,9 @@ 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];
extern const struct SpriteSheet sUnknown_0820A3B0;
extern const struct SpriteSheet sUnknown_0820A3B8;
extern const struct SpritePalette sUnknown_0820A3C0;
bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID);
u8* GetMonNick(struct Pokemon* mon, u8* dst);
@@ -65,12 +62,162 @@ 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 SpriteCB_EggShard(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);
// graphics
static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/palette.gbapal");
static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
static const struct OamData sOamData_820A378 =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = 0,
.x = 0,
.matrixNum = 0,
.size = 2,
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
.affineParam = 0,
};
static const union AnimCmd sSpriteAnim_820A380[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_820A388[] =
{
ANIMCMD_FRAME(16, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_820A390[] =
{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_820A398[] =
{
ANIMCMD_FRAME(48, 5),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnimTable_820A3A0[] =
{
sSpriteAnim_820A380,
sSpriteAnim_820A388,
sSpriteAnim_820A390,
sSpriteAnim_820A398,
};
static const struct SpriteSheet sUnknown_0820A3B0 =
{
.data = sEggHatchTiles,
.size = 2048,
.tag = 12345,
};
static const struct SpriteSheet sUnknown_0820A3B8 =
{
.data = sEggShardTiles,
.size = 128,
.tag = 23456,
};
static const struct SpritePalette sUnknown_0820A3C0 =
{
.data = sEggPalette,
.tag = 54321
};
static const struct SpriteTemplate sSpriteTemplate_820A3C8 =
{
.tileTag = 12345,
.paletteTag = 54321,
.oam = &sOamData_820A378,
.anims = sSpriteAnimTable_820A3A0,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const struct OamData sOamData_820A3E0 =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = 0,
.x = 0,
.matrixNum = 0,
.size = 0,
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
.affineParam = 0,
};
static const union AnimCmd sSpriteAnim_820A3E8[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_820A3F0[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_820A3F8[] =
{
ANIMCMD_FRAME(2, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_820A400[] =
{
ANIMCMD_FRAME(3, 5),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnimTable_820A408[] =
{
sSpriteAnim_820A3E8,
sSpriteAnim_820A3F0,
sSpriteAnim_820A3F8,
sSpriteAnim_820A400,
};
static const struct SpriteTemplate sSpriteTemplate_820A418 =
{
.tileTag = 23456,
.paletteTag = 54321,
.oam = &sOamData_820A3E0,
.anims = sSpriteAnimTable_820A408,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_EggShard
};
// actual code
static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
u16 species;
@@ -308,7 +455,7 @@ static void Task_EggHatch(u8 taskID)
}
}
void CB2_EggHatch_0(void)
static void CB2_EggHatch_0(void)
{
switch (gMain.state)
{
@@ -339,13 +486,13 @@ void CB2_EggHatch_0(void)
gMain.state++;
break;
case 3:
LoadSpriteSheet(&gUnknown_0820A3B0);
LoadSpriteSheet(&gUnknown_0820A3B8);
LoadSpritePalette(&gUnknown_0820A3C0);
LoadSpriteSheet(&sUnknown_0820A3B0);
LoadSpriteSheet(&sUnknown_0820A3B8);
LoadSpritePalette(&sUnknown_0820A3C0);
gMain.state++;
break;
case 4:
sEggHatchData->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
AddHatchedMonToParty(sEggHatchData->eggPartyID);
gMain.state++;
break;
@@ -406,13 +553,13 @@ void CB2_EggHatch_0(void)
}
}
void EggHatchSetMonNickname(void)
static void EggHatchSetMonNickname(void)
{
SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
void Task_EggHatchPlayBGM(u8 taskID)
static void Task_EggHatchPlayBGM(u8 taskID)
{
if (gTasks[taskID].data[0] == 0)
StopMapMusic();
@@ -427,7 +574,7 @@ void Task_EggHatchPlayBGM(u8 taskID)
gTasks[taskID].data[0]++;
}
void CB2_EggHatch_1(void)
static void CB2_EggHatch_1(void)
{
switch (sEggHatchData->CB2_state)
{
@@ -640,7 +787,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
sprite->data0++;
}
void SpriteCB_EggShard(struct Sprite* sprite)
static void SpriteCB_EggShard(struct Sprite* sprite)
{
sprite->data4 += sprite->data1;
sprite->data5 += sprite->data2;
@@ -654,12 +801,38 @@ void SpriteCB_EggShard(struct Sprite* sprite)
DestroySprite(sprite);
}
// Converts a number to Q8.8 fixed-point format
#define Q_8_8(n) ((s16)((n) * 256))
static const s16 sEggShardVelocities[][2] =
{
{Q_8_8(-1.5), Q_8_8(-3.75)},
{Q_8_8(-5), Q_8_8(-3)},
{Q_8_8(3.5), Q_8_8(-3)},
{Q_8_8(-4), Q_8_8(-3.75)},
{Q_8_8(2), Q_8_8(-1.5)},
{Q_8_8(-0.5), Q_8_8(-6.75)},
{Q_8_8(5), Q_8_8(-2.25)},
{Q_8_8(-1.5), Q_8_8(-3.75)},
{Q_8_8(4.5), Q_8_8(-1.5)},
{Q_8_8(-1), Q_8_8(-6.75)},
{Q_8_8(4), Q_8_8(-2.25)},
{Q_8_8(-3.5), Q_8_8(-3.75)},
{Q_8_8(1), Q_8_8(-1.5)},
{Q_8_8(-3.515625), Q_8_8(-6.75)},
{Q_8_8(4.5), Q_8_8(-2.25)},
{Q_8_8(-0.5), Q_8_8(-7.5)},
{Q_8_8(1), Q_8_8(-4.5)},
{Q_8_8(-2.5), Q_8_8(-2.25)},
{Q_8_8(2.5), Q_8_8(-7.5)},
};
static void CreateRandomEggShardSprite(void)
{
u16 spriteAnimIndex;
s16 velocity1 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][0];
s16 velocity2 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][1];
s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0];
s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1];
sEggHatchData->eggShardVelocityID++;
spriteAnimIndex = Random() % 4;
CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex);
@@ -667,7 +840,7 @@ static void CreateRandomEggShardSprite(void)
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
{
u8 spriteID = CreateSprite(&gSpriteTemplate_820A418, x, y, 4);
u8 spriteID = CreateSprite(&sSpriteTemplate_820A418, x, y, 4);
gSprites[spriteID].data1 = data1;
gSprites[spriteID].data2 = data2;
gSprites[spriteID].data3 = data3;