mirror of
https://github.com/pret/pokeruby.git
synced 2026-09-13 21:48:03 -05:00
move data to C
This commit is contained in:
@@ -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.
|
||||
122
data/egg_hatch.s
122
data/egg_hatch.s
@@ -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)
|
||||
@@ -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);
|
||||
|
||||
209
src/egg_hatch.c
209
src/egg_hatch.c
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user