Merge remote-tracking branch 'upstream/master' into frontier-data
This commit is contained in:
+14
-18
@@ -36,9 +36,7 @@ extern const union AffineAnimCmd *gUnknown_082FF6C0[];
|
||||
// This file's functions.
|
||||
void sub_80A64EC(struct Sprite *sprite);
|
||||
void sub_80A653C(struct Sprite *sprite);
|
||||
void InitAnimLinearTranslation(struct Sprite *sprite);
|
||||
void sub_80A6FB4(struct Sprite *sprite);
|
||||
void sub_80A6F98(struct Sprite *sprite);
|
||||
void sub_80A7144(struct Sprite *sprite);
|
||||
void sub_80A791C(struct Sprite *sprite);
|
||||
void sub_80A8DFC(struct Sprite *sprite);
|
||||
@@ -50,8 +48,6 @@ void sub_80A7AFC(u8 taskId);
|
||||
void sub_80A8CAC(u8 taskId);
|
||||
void AnimTask_BlendMonInAndOutStep(u8 taskId);
|
||||
bool8 sub_80A7238(void);
|
||||
void sub_80A8048(s16 *bottom, s16 *top, const void *ptr);
|
||||
void *sub_80A8050(s16 bottom, s16 top);
|
||||
u8 sub_80A82E4(u8 battlerId);
|
||||
void sub_80A8D78(struct Task *task, u8 taskId);
|
||||
|
||||
@@ -532,7 +528,7 @@ void sub_80A6450(struct Sprite *sprite)
|
||||
// Simply waits until the sprite's data[0] hits zero.
|
||||
// This is used to let sprite anims or affine anims to run for a designated
|
||||
// duration.
|
||||
void sub_80A64B0(struct Sprite *sprite)
|
||||
void WaitAnimForDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] > 0)
|
||||
sprite->data[0]--;
|
||||
@@ -745,7 +741,7 @@ void sub_80A6864(struct Sprite *sprite, s16 a2)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A68D4(struct Sprite *sprite)
|
||||
void InitAnimArcTranslation(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
@@ -791,7 +787,7 @@ void sub_80A6980(struct Sprite *sprite, bool8 a2)
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
void sub_80A69CC(struct Sprite *sprite, u8 a2)
|
||||
void InitAnimSpritePos(struct Sprite *sprite, u8 a2)
|
||||
{
|
||||
if (!a2)
|
||||
{
|
||||
@@ -1004,12 +1000,12 @@ void sub_80A6DEC(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sub_80A6E14(sprite);
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->callback = sub_80A65A8;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
void sub_80A6E14(struct Sprite *sprite)
|
||||
void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
|
||||
{
|
||||
s16 x = (sprite->data[2] - sprite->data[1]) << 8;
|
||||
s16 y = (sprite->data[4] - sprite->data[3]) << 8;
|
||||
@@ -1047,7 +1043,7 @@ void InitAnimLinearTranslation(struct Sprite *sprite)
|
||||
sprite->data[3] = 0;
|
||||
}
|
||||
|
||||
void sub_80A6EEC(struct Sprite *sprite)
|
||||
void StartAnimLinearTranslation(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
@@ -1476,7 +1472,7 @@ void sub_80A77C8(struct Sprite *sprite)
|
||||
else
|
||||
var = FALSE;
|
||||
if (!gBattleAnimArgs[2])
|
||||
sub_80A69CC(sprite, var);
|
||||
InitAnimSpritePos(sprite, var);
|
||||
else
|
||||
sub_80A6980(sprite, var);
|
||||
sprite->data[0]++;
|
||||
@@ -1511,27 +1507,27 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
|
||||
else
|
||||
attributeId = BATTLER_COORD_Y;
|
||||
|
||||
sub_80A69CC(sprite, v1);
|
||||
InitAnimSpritePos(sprite, v1);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, attributeId) + gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80A6EEC;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_80A78AC(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A69CC(sprite, 1);
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sub_80A68D4(sprite);
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = sub_80A791C;
|
||||
}
|
||||
|
||||
@@ -1558,7 +1554,7 @@ void sub_80A7938(struct Sprite *sprite)
|
||||
}
|
||||
if (!gBattleAnimArgs[5])
|
||||
{
|
||||
sub_80A69CC(sprite, r4);
|
||||
InitAnimSpritePos(sprite, r4);
|
||||
battlerId = gBattleAnimAttacker;
|
||||
}
|
||||
else
|
||||
@@ -1572,7 +1568,7 @@ void sub_80A7938(struct Sprite *sprite)
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battlerId, attributeId) + gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80A6EEC;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
@@ -2454,6 +2450,6 @@ void sub_80A8EE4(struct Sprite *sprite)
|
||||
sprite->pos1.x += x;
|
||||
sprite->pos1.y = gBattleAnimArgs[5] - 80;
|
||||
}
|
||||
sprite->callback = sub_80A6EEC;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
@@ -442,7 +442,7 @@ void SlideMonToOriginalPos(struct Sprite *sprite)
|
||||
sprite->data[2] = gSprites[monSpriteId].pos1.x;
|
||||
sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
|
||||
sprite->data[4] = gSprites[monSpriteId].pos1.y;
|
||||
sub_80A6E14(sprite);
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = gSprites[monSpriteId].pos2.x;
|
||||
@@ -520,7 +520,7 @@ void SlideMonToOffset(struct Sprite *sprite)
|
||||
sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
|
||||
sprite->data[3] = gSprites[monSpriteId].pos1.y;
|
||||
sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2];
|
||||
sub_80A6E14(sprite);
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = monSpriteId;
|
||||
@@ -556,7 +556,7 @@ void sub_80D5B48(struct Sprite *sprite)
|
||||
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
|
||||
sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
|
||||
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
|
||||
sub_80A6E14(sprite);
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = gSprites[spriteId].pos2.x << 8;
|
||||
sprite->data[4] = gSprites[spriteId].pos2.y << 8;
|
||||
sprite->data[5] = spriteId;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "palette.h"
|
||||
#include "random.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
+11
-11
@@ -157,9 +157,9 @@ const struct BgTemplate gBattleBgTemplates[] =
|
||||
},
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
{
|
||||
{
|
||||
{ // 0 Standard battle message
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
@@ -168,7 +168,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x0090,
|
||||
},
|
||||
{
|
||||
{ // 1 "What will (pokemon) do?"
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 35,
|
||||
@@ -177,7 +177,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x01c0,
|
||||
},
|
||||
{
|
||||
{ // 2 "Fight/Pokemon/Bag/Run"
|
||||
.bg = 0,
|
||||
.tilemapLeft = 17,
|
||||
.tilemapTop = 35,
|
||||
@@ -186,7 +186,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0190,
|
||||
},
|
||||
{
|
||||
{ // 3 Top left move
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 55,
|
||||
@@ -195,7 +195,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0300,
|
||||
},
|
||||
{
|
||||
{ // 4 Top right move
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 55,
|
||||
@@ -204,7 +204,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0310,
|
||||
},
|
||||
{
|
||||
{ // 5 Bottom left move
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 57,
|
||||
@@ -213,7 +213,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0320,
|
||||
},
|
||||
{
|
||||
{ // 6 Bottom right move
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 57,
|
||||
@@ -378,7 +378,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_0831AAE0[] =
|
||||
static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
@@ -592,8 +592,8 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
|
||||
|
||||
const struct WindowTemplate * const gBattleWindowTemplates[] =
|
||||
{
|
||||
gUnknown_0831AA18,
|
||||
gUnknown_0831AAE0,
|
||||
gStandardBattleWindowTemplates,
|
||||
gBattleArenaWindowTemplates,
|
||||
};
|
||||
|
||||
static const struct BattleBackground gBattleTerrainTable[] =
|
||||
|
||||
@@ -1344,7 +1344,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8064470;
|
||||
}
|
||||
@@ -1706,7 +1706,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80676FC);
|
||||
|
||||
|
||||
@@ -1166,7 +1166,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_814AF54;
|
||||
}
|
||||
@@ -1532,7 +1532,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
|
||||
|
||||
@@ -1381,7 +1381,7 @@ static void OpponentHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_805F240;
|
||||
}
|
||||
@@ -1855,7 +1855,7 @@ static void OpponentHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_806280C);
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ static void MoveSelectionDisplayPpNumber(void);
|
||||
static void MoveSelectionDisplayPpString(void);
|
||||
static void MoveSelectionDisplayMoveType(void);
|
||||
static void MoveSelectionDisplayMoveNames(void);
|
||||
static void HandleMoveSwitchting(void);
|
||||
static void HandleMoveSwitching(void);
|
||||
static void sub_8058FC0(void);
|
||||
static void WaitForMonSelection(void);
|
||||
static void CompleteWhenChoseItem(void);
|
||||
@@ -617,7 +617,7 @@ static void HandleInputChooseMove(void)
|
||||
|
||||
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
|
||||
BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB);
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitchting;
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -672,7 +672,7 @@ u32 sub_8057FBC(void) // unused
|
||||
return var;
|
||||
}
|
||||
|
||||
static void HandleMoveSwitchting(void)
|
||||
static void HandleMoveSwitching(void)
|
||||
{
|
||||
u8 perMovePPBonuses[4];
|
||||
struct ChooseMoveStruct moveStruct;
|
||||
@@ -2385,7 +2385,7 @@ static void PlayerHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80588B4;
|
||||
@@ -2930,7 +2930,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
|
||||
|
||||
@@ -1361,7 +1361,7 @@ static void PlayerPartnerHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81BAE98;
|
||||
}
|
||||
@@ -1785,7 +1785,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
|
||||
|
||||
@@ -1275,7 +1275,7 @@ static void RecordedOpponentHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81865C8;
|
||||
}
|
||||
@@ -1649,7 +1649,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_818962C);
|
||||
|
||||
|
||||
@@ -1276,7 +1276,7 @@ static void RecordedPlayerHandleTrainerSlideBack(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_81899F0;
|
||||
}
|
||||
@@ -1671,7 +1671,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
|
||||
|
||||
@@ -1435,7 +1435,7 @@ static void WallyHandleIntroTrainerBallThrow(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
|
||||
|
||||
+8
-8
@@ -63,9 +63,9 @@ extern u8 GetFrontierBrainMonNature(u8);
|
||||
extern void sub_81A4C30(void);
|
||||
extern u8 sub_81A3610(void);
|
||||
extern u16 GetFrontierBrainMonSpecies(u8);
|
||||
extern void ReducePlayerPartyToThree(void);
|
||||
extern void ReducePlayerPartyToSelectedMons(void);
|
||||
|
||||
extern u8 gUnknown_0203CEF8[];
|
||||
extern u8 gSelectedOrderFromParty[];
|
||||
|
||||
extern const u16 gBattleFrontierHeldItems[];
|
||||
extern const struct FacilityMon gBattleFrontierMons[];
|
||||
@@ -2465,8 +2465,8 @@ static void sub_818EA84(void)
|
||||
break;
|
||||
case 8:
|
||||
sub_81B8558();
|
||||
gUnknown_0203CEF8[0] = gSaveBlock2Ptr->frontier.field_CB0;
|
||||
gUnknown_0203CEF8[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
|
||||
gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0;
|
||||
gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
|
||||
break;
|
||||
case 9:
|
||||
gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B;
|
||||
@@ -2535,7 +2535,7 @@ static void sub_818ED28(void)
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gUnknown_0203CEF8);
|
||||
gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gSelectedOrderFromParty);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -6070,7 +6070,7 @@ static void sub_8194D68(void)
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1;
|
||||
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
|
||||
s32 count;
|
||||
|
||||
for (moveSlot = 0; moveSlot < 4; moveSlot++)
|
||||
@@ -6096,7 +6096,7 @@ static void sub_8194E44(void)
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1;
|
||||
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
|
||||
u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL);
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item);
|
||||
}
|
||||
@@ -6104,7 +6104,7 @@ static void sub_8194E44(void)
|
||||
|
||||
static void sub_8194EB4(void)
|
||||
{
|
||||
ReducePlayerPartyToThree();
|
||||
ReducePlayerPartyToSelectedMons();
|
||||
}
|
||||
|
||||
static void sub_8194EC0(void)
|
||||
|
||||
+51
-51
@@ -168,15 +168,15 @@ extern const u8 gText_DynColor1Female[];
|
||||
// this file's functions
|
||||
|
||||
static const u8 *GetHealthboxElementGfxPtr(u8 elementId);
|
||||
static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
|
||||
static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId);
|
||||
|
||||
static void RemoveWindowOnHealthbox(u32 windowId);
|
||||
static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
|
||||
static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId);
|
||||
|
||||
static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 arg2);
|
||||
static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2);
|
||||
static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2);
|
||||
static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth);
|
||||
static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth);
|
||||
static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth);
|
||||
static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2);
|
||||
|
||||
static void sub_8073E08(u8 taskId);
|
||||
@@ -965,7 +965,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
|
||||
healthBarSpritePtr->subspriteMode = 2;
|
||||
healthBarSpritePtr->oam.priority = 1;
|
||||
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * 32), 64);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * TILE_SIZE_4BPP), 64);
|
||||
|
||||
gSprites[healthboxLeftSpriteId].hMain_HealthBarSpriteId = healthbarSpriteId;
|
||||
gSprites[healthboxLeftSpriteId].hMain_Battler = battlerId;
|
||||
@@ -1154,7 +1154,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
|
||||
xPos += var1;
|
||||
|
||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
|
||||
|
||||
if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
@@ -1182,7 +1182,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
||||
|
||||
if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle())
|
||||
{
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
|
||||
if (maxOrCurrent != HP_CURRENT) // singles, max
|
||||
{
|
||||
ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
|
||||
@@ -1243,7 +1243,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32],
|
||||
(void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
|
||||
(void*)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
|
||||
0x20);
|
||||
}
|
||||
}
|
||||
@@ -1261,7 +1261,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
|
||||
{
|
||||
if (gBattleSpritesDataPtr->battlerData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible
|
||||
{
|
||||
spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * 32;
|
||||
spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * TILE_SIZE_4BPP;
|
||||
objVram = (void*)(OBJ_VRAM0) + spriteTileNum;
|
||||
|
||||
if (maxOrCurrent != HP_CURRENT) // doubles, max hp
|
||||
@@ -1271,7 +1271,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
|
||||
HpTextIntoHealthboxObject((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
|
||||
RemoveWindowOnHealthbox(windowId);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
|
||||
(void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
|
||||
(void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP),
|
||||
0x20);
|
||||
}
|
||||
else
|
||||
@@ -1328,16 +1328,16 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
|
||||
if (maxOrCurrent == HP_CURRENT)
|
||||
{
|
||||
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224],
|
||||
(void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)),
|
||||
(void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * TILE_SIZE_4BPP)),
|
||||
0x20);
|
||||
CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20);
|
||||
CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * TILE_SIZE_4BPP)), 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Impossible to reach part, because the battlerId is from the opponent's side.
|
||||
{
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
|
||||
(void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32),
|
||||
(void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * TILE_SIZE_4BPP),
|
||||
0x20);
|
||||
}
|
||||
}
|
||||
@@ -1349,7 +1349,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
|
||||
static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
{
|
||||
u8 text[20];
|
||||
s32 j, var2;
|
||||
s32 j, spriteTileNum;
|
||||
u8 *barFontGfx;
|
||||
u8 i, var, nature, healthBarSpriteId;
|
||||
|
||||
@@ -1376,12 +1376,12 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
|
||||
for (j = 1; j < var + 1; j++)
|
||||
{
|
||||
var2 = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32;
|
||||
CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20);
|
||||
spriteTileNum = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
|
||||
CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
|
||||
barFontGfx += 0x20;
|
||||
|
||||
var2 = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32;
|
||||
CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20);
|
||||
spriteTileNum = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
|
||||
CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
|
||||
barFontGfx += 0x20;
|
||||
}
|
||||
|
||||
@@ -1398,13 +1398,13 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
if (j <= 1)
|
||||
{
|
||||
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
|
||||
(void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * 32,
|
||||
(void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * TILE_SIZE_4BPP,
|
||||
32);
|
||||
}
|
||||
else
|
||||
{
|
||||
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
|
||||
(void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * 32,
|
||||
(void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * TILE_SIZE_4BPP,
|
||||
32);
|
||||
}
|
||||
}
|
||||
@@ -1436,7 +1436,7 @@ void SwapHpBarsWithHpText(void)
|
||||
{
|
||||
healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId;
|
||||
|
||||
CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 0x100);
|
||||
CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x100);
|
||||
UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT);
|
||||
UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX);
|
||||
}
|
||||
@@ -1444,7 +1444,7 @@ void SwapHpBarsWithHpText(void)
|
||||
{
|
||||
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * 32), 32);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1970,7 +1970,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
break;
|
||||
}
|
||||
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
|
||||
|
||||
if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
|
||||
{
|
||||
@@ -2008,9 +2008,9 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
|
||||
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||
|
||||
if (noStatus)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * 32), 32);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32);
|
||||
else
|
||||
CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * 32), 32);
|
||||
CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32);
|
||||
}
|
||||
|
||||
static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
@@ -2068,10 +2068,10 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(HEALTHBOX_GFX_39);
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32);
|
||||
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * TILE_SIZE_4BPP), 32);
|
||||
|
||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 64);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 64);
|
||||
|
||||
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
|
||||
return;
|
||||
@@ -2082,13 +2082,13 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
|
||||
FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2);
|
||||
CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
|
||||
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96);
|
||||
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96);
|
||||
if (IsDoubleBattle() == TRUE || GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
|
||||
{
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 32);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * 32), 32);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 32);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * TILE_SIZE_4BPP), 32);
|
||||
}
|
||||
}
|
||||
TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
|
||||
@@ -2160,7 +2160,7 @@ static void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId)
|
||||
u8 *windowTileData;
|
||||
|
||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId);
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
|
||||
TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6);
|
||||
TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2);
|
||||
RemoveWindowOnHealthbox(windowId);
|
||||
@@ -2177,7 +2177,7 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
|
||||
ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2);
|
||||
|
||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, text, 0x2F), 3, 2, &windowId);
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
|
||||
SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x2C0) + spriteTileNum, windowTileData, 2);
|
||||
SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0xA00) + spriteTileNum, windowTileData + 0x40, 4);
|
||||
RemoveWindowOnHealthbox(windowId);
|
||||
@@ -2323,10 +2323,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||
if (i < 2)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
|
||||
(void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * 32), 32);
|
||||
(void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * TILE_SIZE_4BPP), 32);
|
||||
else
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
|
||||
(void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * 32), 32);
|
||||
(void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
|
||||
}
|
||||
break;
|
||||
case EXP_BAR:
|
||||
@@ -2345,10 +2345,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
{
|
||||
if (i < 4)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
|
||||
(void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32), 32);
|
||||
(void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
|
||||
else
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
|
||||
(void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * 32), 32);
|
||||
(void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2571,16 +2571,16 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp)
|
||||
return result;
|
||||
}
|
||||
|
||||
static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId)
|
||||
static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId)
|
||||
{
|
||||
u16 winId;
|
||||
u8 color[3];
|
||||
struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
|
||||
|
||||
winId = AddWindow(&winTemplate);
|
||||
FillWindowPixelBuffer(winId, (arg3 << 4) | (arg3));
|
||||
FillWindowPixelBuffer(winId, (bgColor << 4) | (bgColor));
|
||||
|
||||
color[0] = arg3;
|
||||
color[0] = bgColor;
|
||||
color[1] = 1;
|
||||
color[2] = 3;
|
||||
|
||||
@@ -2597,31 +2597,31 @@ static void RemoveWindowOnHealthbox(u32 windowId)
|
||||
|
||||
static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2)
|
||||
{
|
||||
CpuFill32(0x11111111 * arg1, dest, arg2 * 32);
|
||||
CpuFill32(0x11111111 * arg1, dest, arg2 * TILE_SIZE_4BPP);
|
||||
}
|
||||
|
||||
static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2)
|
||||
static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth)
|
||||
{
|
||||
CpuCopy32(windowTileData + 256, dest, arg2 * 32);
|
||||
CpuCopy32(windowTileData + 256, dest, windowWidth * TILE_SIZE_4BPP);
|
||||
}
|
||||
|
||||
static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 arg2)
|
||||
static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth)
|
||||
{
|
||||
CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32);
|
||||
|
||||
if (arg2 > 0)
|
||||
CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP);
|
||||
// + 256 as that prevents the top 4 blank rows of sHealthboxWindowTemplate from being copied
|
||||
if (windowWidth > 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
CpuCopy32(windowTileData + 20, dest + 20, 12);
|
||||
dest += 32, windowTileData += 32;
|
||||
arg2--;
|
||||
} while (arg2 != 0);
|
||||
windowWidth--;
|
||||
} while (windowWidth != 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2)
|
||||
static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth)
|
||||
{
|
||||
CpuCopy32(windowTileData, dest, arg2 * 32);
|
||||
CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32);
|
||||
CpuCopy32(windowTileData, dest, windowWidth * TILE_SIZE_4BPP);
|
||||
CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP);
|
||||
}
|
||||
|
||||
+3
-3
@@ -166,7 +166,7 @@ static void HandleAction_WatchesCarefully(void);
|
||||
static void HandleAction_SafariZoneBallThrow(void);
|
||||
static void HandleAction_ThrowPokeblock(void);
|
||||
static void HandleAction_GoNear(void);
|
||||
static void HandleAction_SafriZoneRun(void);
|
||||
static void HandleAction_SafariZoneRun(void);
|
||||
static void HandleAction_WallyBallThrow(void);
|
||||
static void HandleAction_Action11(void);
|
||||
static void HandleAction_NothingIsFainted(void);
|
||||
@@ -515,7 +515,7 @@ static void (* const sTurnActionsFuncsTable[])(void) =
|
||||
HandleAction_SafariZoneBallThrow, // B_ACTION_SAFARI_BALL
|
||||
HandleAction_ThrowPokeblock, // B_ACTION_SAFARI_POKEBLOCK
|
||||
HandleAction_GoNear, // B_ACTION_SAFARI_GO_NEAR
|
||||
HandleAction_SafriZoneRun, // B_ACTION_SAFARI_RUN
|
||||
HandleAction_SafariZoneRun, // B_ACTION_SAFARI_RUN
|
||||
HandleAction_WallyBallThrow, // B_ACTION_WALLY_THROW
|
||||
HandleAction_RunBattleScript, // B_ACTION_EXEC_SCRIPT
|
||||
HandleAction_Action11, // not sure about this one
|
||||
@@ -5783,7 +5783,7 @@ static void HandleAction_GoNear(void)
|
||||
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
|
||||
}
|
||||
|
||||
static void HandleAction_SafriZoneRun(void)
|
||||
static void HandleAction_SafariZoneRun(void)
|
||||
{
|
||||
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
|
||||
PlaySE(SE_NIGERU);
|
||||
|
||||
+29
-28
@@ -1,25 +1,25 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_message.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "constants/moves.h"
|
||||
#include "text.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "event_data.h"
|
||||
#include "link.h"
|
||||
#include "item.h"
|
||||
#include "window.h"
|
||||
#include "palette.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_setup.h"
|
||||
#include "menu.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "international_string_util.h"
|
||||
#include "frontier_util.h"
|
||||
#include "battle_tower.h"
|
||||
#include "data2.h"
|
||||
#include "event_data.h"
|
||||
#include "frontier_util.h"
|
||||
#include "international_string_util.h"
|
||||
#include "item.h"
|
||||
#include "link.h"
|
||||
#include "menu.h"
|
||||
#include "palette.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "string_util.h"
|
||||
#include "text.h"
|
||||
#include "window.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/trainers.h"
|
||||
|
||||
struct BattleWindowText
|
||||
{
|
||||
@@ -1367,7 +1367,8 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS,
|
||||
|
||||
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
{
|
||||
{ // 0
|
||||
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
|
||||
{ // 0 Standard battle message
|
||||
.fillValue = 0xFF,
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1379,7 +1380,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 15,
|
||||
.shadowColor = 6,
|
||||
},
|
||||
{ // 1
|
||||
{ // 1 "What will (pokemon) do?"
|
||||
.fillValue = 0xFF,
|
||||
.fontId = 1,
|
||||
.x = 1,
|
||||
@@ -1391,7 +1392,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 15,
|
||||
.shadowColor = 6,
|
||||
},
|
||||
{ // 2
|
||||
{ // 2 "Fight/Pokemon/Bag/Run"
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1403,7 +1404,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 3
|
||||
{ // 3 Top left move
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1415,7 +1416,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 4
|
||||
{ // 4 Top right move
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1427,7 +1428,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 5
|
||||
{ // 5 Bottom left move
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1439,7 +1440,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 6
|
||||
{ // 6 Bottom right move
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1451,7 +1452,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 7
|
||||
{ // 7 "PP"
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1475,7 +1476,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 9
|
||||
{ // 9 PP remaining
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 1,
|
||||
.x = 2,
|
||||
@@ -1487,7 +1488,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 11,
|
||||
},
|
||||
{ // 10
|
||||
{ // 10 "type"
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1499,7 +1500,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 11
|
||||
{ // 11 "switch which?"
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1511,7 +1512,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
},
|
||||
{ // 12
|
||||
{ // 12 "gText_BattleYesNoChoice"
|
||||
.fillValue = 0xEE,
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
extern u8 gUnknown_0203CEF8[3];
|
||||
extern u8 gSelectedOrderFromParty[3];
|
||||
extern void door_upload_tiles(void);
|
||||
|
||||
extern const struct MapLayout *const gMapLayouts[];
|
||||
@@ -508,14 +508,14 @@ static void sub_81A9834(void)
|
||||
SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k);
|
||||
}
|
||||
gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j];
|
||||
gUnknown_0203CEF8[j] = id + 1;
|
||||
gSelectedOrderFromParty[j] = id + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i];
|
||||
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
|
||||
}
|
||||
|
||||
static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2)
|
||||
|
||||
+3
-3
@@ -1,10 +1,13 @@
|
||||
#include "global.h"
|
||||
#include "berry.h"
|
||||
#include "event_data.h"
|
||||
#include "field_control_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "item.h"
|
||||
#include "item_menu.h"
|
||||
#include "main.h"
|
||||
#include "random.h"
|
||||
#include "string_util.h"
|
||||
#include "text.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
#include "constants/items.h"
|
||||
@@ -12,11 +15,8 @@
|
||||
extern u8 EventObjectGetBerryTreeId(u8 eventObjectId);
|
||||
extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
|
||||
extern void CB2_ChooseBerry(void);
|
||||
extern const u8* GetEventObjectScriptPointerPlayerFacing(void);
|
||||
extern bool8 IsBerryTreeSparkling(u8, u8, u8);
|
||||
|
||||
extern u16 gSpecialVar_ItemId;
|
||||
|
||||
extern const u8 BerryTreeScript[];
|
||||
|
||||
static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry);
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "trig.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void sub_8110368(struct Sprite *);
|
||||
extern void sub_8110438(struct Sprite *);
|
||||
extern void sub_81104E4(struct Sprite *);
|
||||
extern void sub_81105B4(struct Sprite *);
|
||||
extern void sub_811067C(struct Sprite *);
|
||||
extern void sub_8110720(struct Sprite *);
|
||||
extern void sub_8110850(struct Sprite *);
|
||||
extern void sub_8110994(struct Sprite *);
|
||||
void sub_8110368(struct Sprite *);
|
||||
void sub_8110438(struct Sprite *);
|
||||
void sub_81104E4(struct Sprite *);
|
||||
void sub_81105B4(struct Sprite *);
|
||||
void sub_811067C(struct Sprite *);
|
||||
void AnimTranslateStinger(struct Sprite *);
|
||||
void AnimMissileArc(struct Sprite *);
|
||||
void sub_8110994(struct Sprite *);
|
||||
static void sub_811057C(struct Sprite *);
|
||||
static void sub_8110630(struct Sprite *);
|
||||
static void sub_81106A4(struct Sprite *);
|
||||
static void sub_8110700(struct Sprite *);
|
||||
static void AnimMissileArcStep(struct Sprite *);
|
||||
|
||||
const union AffineAnimCmd gUnknown_08596938[] =
|
||||
{
|
||||
@@ -136,7 +143,7 @@ const struct SpriteTemplate gLinearStingerSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8110720,
|
||||
.callback = AnimTranslateStinger,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gPinMissileSpriteTemplate =
|
||||
@@ -147,7 +154,7 @@ const struct SpriteTemplate gPinMissileSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8110850,
|
||||
.callback = AnimMissileArc,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gIcicleSpearSpriteTemplate =
|
||||
@@ -158,7 +165,7 @@ const struct SpriteTemplate gIcicleSpearSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8110850,
|
||||
.callback = AnimMissileArc,
|
||||
};
|
||||
|
||||
const union AffineAnimCmd gUnknown_08596A8C[] =
|
||||
@@ -187,3 +194,291 @@ const struct SpriteTemplate gUnknown_08596AC8 =
|
||||
.affineAnims = gUnknown_08596AC4,
|
||||
.callback = sub_8110994,
|
||||
};
|
||||
|
||||
void sub_8110368(struct Sprite *sprite)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 2);
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
else if (!GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_8110438(struct Sprite *sprite)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
StartSpriteAffineAnim(sprite, 2);
|
||||
}
|
||||
else if (!GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_81104E4(struct Sprite *sprite)
|
||||
{
|
||||
if (IsContest())
|
||||
gBattleAnimArgs[2] /= 2;
|
||||
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
|
||||
if (!gBattleAnimArgs[4])
|
||||
{
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
|
||||
}
|
||||
|
||||
sub_80A6FD4(sprite);
|
||||
sprite->data[5] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_811057C;
|
||||
}
|
||||
|
||||
static void sub_811057C(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimLinear(sprite))
|
||||
{
|
||||
DestroyAnimSprite(sprite);
|
||||
return;
|
||||
}
|
||||
|
||||
sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
|
||||
sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
|
||||
}
|
||||
|
||||
void sub_81105B4(struct Sprite *sprite)
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
if (!GetBattlerSide(gBattleAnimTarget))
|
||||
sprite->pos1.y += 8;
|
||||
|
||||
sprite->callback = sub_8110630;
|
||||
}
|
||||
|
||||
static void sub_8110630(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 3)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->invisible ^= 1;
|
||||
}
|
||||
|
||||
if (++sprite->data[1] == 51)
|
||||
{
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811067C(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
||||
|
||||
sprite->data[0] = 16;
|
||||
sprite->callback = sub_81106A4;
|
||||
}
|
||||
|
||||
static void sub_81106A4(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[2] < 20)
|
||||
{
|
||||
sprite->data[2]++;
|
||||
}
|
||||
else if (sprite->data[1]++ & 1)
|
||||
{
|
||||
sprite->data[0]--;
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0]));
|
||||
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_8110700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8110700(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Translates a stinger sprite linearly to a destination location. The sprite is
|
||||
// initially rotated so that it appears to be traveling in a straight line.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: target x pixel offset
|
||||
// arg 3: target y pixel offset
|
||||
// arg 4: duration
|
||||
void AnimTranslateStinger(struct Sprite *sprite)
|
||||
{
|
||||
s16 lVarX, lVarY;
|
||||
u16 rot;
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT
|
||||
|| GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT)
|
||||
{
|
||||
s16 temp1, temp2;
|
||||
|
||||
temp1 = gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[2] = -temp1;
|
||||
|
||||
temp2 = gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[0] = -temp2;
|
||||
}
|
||||
}
|
||||
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
|
||||
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
|
||||
rot += 0xC000;
|
||||
sub_80A73E0(sprite, FALSE, 0x100, 0x100, rot);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = lVarX;
|
||||
sprite->data[4] = lVarY;
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Rotates sprite and moves it in an arc, so that it appears like a missle or arrow traveling.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: target x pixel offset
|
||||
// arg 3: target y pixel offset
|
||||
// arg 4: duration
|
||||
// arg 5: wave amplitude
|
||||
void AnimMissileArc(struct Sprite *sprite)
|
||||
{
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
InitAnimArcTranslation(sprite);
|
||||
|
||||
sprite->callback = AnimMissileArcStep;
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
static void AnimMissileArcStep(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
|
||||
if (TranslateAnimArc(sprite))
|
||||
{
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
s16 tempData[8];
|
||||
u16 *data = sprite->data;
|
||||
u16 x1 = sprite->pos1.x;
|
||||
s16 x2 = sprite->pos2.x;
|
||||
u16 y1 = sprite->pos1.y;
|
||||
s16 y2 = sprite->pos2.y;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
tempData[i] = data[i];
|
||||
|
||||
x2 += x1;
|
||||
y2 += y1;
|
||||
|
||||
if (!TranslateAnimArc(sprite))
|
||||
{
|
||||
u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
|
||||
sprite->pos1.y + sprite->pos2.y - y2);
|
||||
rotation += 0xC000;
|
||||
sub_80A73E0(sprite, FALSE, 0x100, 0x100, rotation);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
data[i] = tempData[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8110994(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
|
||||
}
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
sprite->callback = sub_80A67BC;
|
||||
}
|
||||
|
||||
+6
-6
@@ -31,7 +31,7 @@
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern u8 gUnknown_02032298[2];
|
||||
extern u8 gUnknown_0203CEF8[];
|
||||
extern u8 gSelectedOrderFromParty[];
|
||||
|
||||
static const struct WindowTemplate gUnknown_08550594 = {
|
||||
.bg = 0,
|
||||
@@ -358,8 +358,8 @@ static void sub_80B2918(u8 taskId)
|
||||
sub_800AA04(gFieldLinkPlayerCount);
|
||||
card = (struct TrainerCard *)gBlockSendBuffer;
|
||||
TrainerCard_GenerateCardForPlayer(card);
|
||||
card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL);
|
||||
card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
|
||||
card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
gTasks[taskId].func = sub_80B2C30;
|
||||
}
|
||||
}
|
||||
@@ -405,8 +405,8 @@ static void sub_80B2A08(u8 taskId)
|
||||
sub_800AA04(gFieldLinkPlayerCount);
|
||||
card = (struct TrainerCard *)gBlockSendBuffer;
|
||||
TrainerCard_GenerateCardForPlayer(card);
|
||||
card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL);
|
||||
card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
|
||||
card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
gTasks[taskId].func = sub_80B2C30;
|
||||
sub_800A4D8(2);
|
||||
}
|
||||
@@ -800,7 +800,7 @@ static void sub_80B3260(int a0)
|
||||
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
|
||||
break;
|
||||
case 5:
|
||||
ReducePlayerPartyToThree();
|
||||
ReducePlayerPartyToSelectedMons();
|
||||
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
|
||||
break;
|
||||
case 9:
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
#include "contest_ai.h"
|
||||
#include "contest_effect.h"
|
||||
|
||||
extern u16 gContestMonConditions[];
|
||||
|
||||
extern const u8 *gAIScriptPtr;
|
||||
extern const u8 *gContestAIs[];
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -47,211 +47,212 @@ const struct MonCoords gMonBackPicCoords[] =
|
||||
{0x66, 0x0a}, // SPECIES_GLOOM
|
||||
{0x87, 0x07}, // SPECIES_VILEPLUME
|
||||
{0x63, 0x14}, // SPECIES_PARAS
|
||||
{0x87, 0x07}, // SPECIES_VENONAT
|
||||
{0x77, 0x06}, // SPECIES_VENOMOTH
|
||||
{0x77, 0x04}, // SPECIES_DIGLETT
|
||||
{0x54, 0x10}, // SPECIES_DUGTRIO
|
||||
{0x66, 0x0b}, // SPECIES_MEOWTH
|
||||
{0x65, 0x0c}, // SPECIES_PERSIAN
|
||||
{0x87, 0x07}, // SPECIES_PSYDUCK
|
||||
{0x67, 0x07}, // SPECIES_GOLDUCK
|
||||
{0x77, 0x05}, // SPECIES_MANKEY
|
||||
{0x76, 0x0b}, // SPECIES_PRIMEAPE
|
||||
{0x77, 0x07}, // SPECIES_GROWLITHE
|
||||
{0x66, 0x08}, // SPECIES_ARCANINE
|
||||
{0x87, 0x06}, // SPECIES_POLIWAG
|
||||
{0x74, 0x10}, // SPECIES_POLIWHIRL
|
||||
{0x65, 0x0c}, // SPECIES_POLIWRATH
|
||||
{0x86, 0x0b}, // SPECIES_ABRA
|
||||
{0x66, 0x0b}, // SPECIES_KADABRA
|
||||
{0x76, 0x08}, // SPECIES_ALAKAZAM
|
||||
{0x67, 0x05}, // SPECIES_MACHOP
|
||||
{0x65, 0x0c}, // SPECIES_MACHOKE
|
||||
{0x76, 0x09}, // SPECIES_MACHAMP
|
||||
{0x67, 0x04}, // SPECIES_BELLSPROUT
|
||||
{0x66, 0x0a}, // SPECIES_WEEPINBELL
|
||||
{0x66, 0x09}, // SPECIES_VICTREEBEL
|
||||
{0x87, 0x06}, // SPECIES_TENTACOOL
|
||||
{0x56, 0x0a}, // SPECIES_TENTACRUEL
|
||||
{0x86, 0x0b}, // SPECIES_GEODUDE
|
||||
{0x66, 0x0b}, // SPECIES_GRAVELER
|
||||
{0x75, 0x0c}, // SPECIES_GOLEM
|
||||
{0x84, 0x10}, // SPECIES_PONYTA
|
||||
{0x66, 0x09}, // SPECIES_RAPIDASH
|
||||
{0x87, 0x05}, // SPECIES_SLOWPOKE
|
||||
{0x85, 0x0e}, // SPECIES_SLOWBRO
|
||||
{0x86, 0x0a}, // SPECIES_MAGNEMITE
|
||||
{0x43, 0x14}, // SPECIES_MAGNETON
|
||||
{0x87, 0x07}, // SPECIES_PARASECT
|
||||
{0x77, 0x06}, // SPECIES_VENONAT
|
||||
{0x77, 0x04}, // SPECIES_VENOMOTH
|
||||
{0x54, 0x10}, // SPECIES_DIGLETT
|
||||
{0x66, 0x0b}, // SPECIES_DUGTRIO
|
||||
{0x65, 0x0c}, // SPECIES_MEOWTH
|
||||
{0x87, 0x07}, // SPECIES_PERSIAN
|
||||
{0x67, 0x07}, // SPECIES_PSYDUCK
|
||||
{0x77, 0x05}, // SPECIES_GOLDUCK
|
||||
{0x76, 0x0b}, // SPECIES_MANKEY
|
||||
{0x77, 0x07}, // SPECIES_PRIMEAPE
|
||||
{0x66, 0x08}, // SPECIES_GROWLITHE
|
||||
{0x87, 0x06}, // SPECIES_ARCANINE
|
||||
{0x74, 0x10}, // SPECIES_POLIWAG
|
||||
{0x65, 0x0c}, // SPECIES_POLIWHIRL
|
||||
{0x86, 0x0b}, // SPECIES_POLIWRATH
|
||||
{0x66, 0x0b}, // SPECIES_ABRA
|
||||
{0x76, 0x08}, // SPECIES_KADABRA
|
||||
{0x67, 0x05}, // SPECIES_ALAKAZAM
|
||||
{0x65, 0x0c}, // SPECIES_MACHOP
|
||||
{0x76, 0x09}, // SPECIES_MACHOKE
|
||||
{0x67, 0x04}, // SPECIES_MACHAMP
|
||||
{0x66, 0x0a}, // SPECIES_BELLSPROUT
|
||||
{0x66, 0x09}, // SPECIES_WEEPINBELL
|
||||
{0x87, 0x06}, // SPECIES_VICTREEBEL
|
||||
{0x56, 0x0a}, // SPECIES_TENTACOOL
|
||||
{0x86, 0x0b}, // SPECIES_TENTACRUEL
|
||||
{0x66, 0x0b}, // SPECIES_GEODUDE
|
||||
{0x75, 0x0c}, // SPECIES_GRAVELER
|
||||
{0x84, 0x10}, // SPECIES_GOLEM
|
||||
{0x66, 0x09}, // SPECIES_PONYTA
|
||||
{0x87, 0x05}, // SPECIES_RAPIDASH
|
||||
{0x85, 0x0e}, // SPECIES_SLOWPOKE
|
||||
{0x86, 0x0a}, // SPECIES_SLOWBRO
|
||||
{0x43, 0x14}, // SPECIES_MAGNEMITE
|
||||
{0x66, 0x0a}, // SPECIES_MAGNETON
|
||||
{0x66, 0x0a}, // SPECIES_FARFETCHD
|
||||
{0x66, 0x0a}, // SPECIES_DODUO
|
||||
{0x66, 0x08}, // SPECIES_DODRIO
|
||||
{0x88, 0x01}, // SPECIES_SEEL
|
||||
{0x66, 0x0a}, // SPECIES_DEWGONG
|
||||
{0x77, 0x05}, // SPECIES_GRIMER
|
||||
{0x75, 0x0c}, // SPECIES_MUK
|
||||
{0x87, 0x05}, // SPECIES_SHELLDER
|
||||
{0x76, 0x0b}, // SPECIES_CLOYSTER
|
||||
{0x87, 0x06}, // SPECIES_GASTLY
|
||||
{0x85, 0x0e}, // SPECIES_HAUNTER
|
||||
{0x76, 0x08}, // SPECIES_GENGAR
|
||||
{0x76, 0x09}, // SPECIES_ONIX
|
||||
{0x78, 0x00}, // SPECIES_DROWZEE
|
||||
{0x65, 0x0d}, // SPECIES_HYPNO
|
||||
{0x66, 0x09}, // SPECIES_KRABBY
|
||||
{0x66, 0x0a}, // SPECIES_KINGLER
|
||||
{0x77, 0x04}, // SPECIES_VOLTORB
|
||||
{0x55, 0x0e}, // SPECIES_ELECTRODE
|
||||
{0x66, 0x08}, // SPECIES_DODUO
|
||||
{0x88, 0x01}, // SPECIES_DODRIO
|
||||
{0x66, 0x0a}, // SPECIES_SEEL
|
||||
{0x77, 0x05}, // SPECIES_DEWGONG
|
||||
{0x75, 0x0c}, // SPECIES_GRIMER
|
||||
{0x87, 0x05}, // SPECIES_MUK
|
||||
{0x76, 0x0b}, // SPECIES_SHELLDER
|
||||
{0x87, 0x06}, // SPECIES_CLOYSTER
|
||||
{0x85, 0x0e}, // SPECIES_GASTLY
|
||||
{0x76, 0x08}, // SPECIES_HAUNTER
|
||||
{0x76, 0x09}, // SPECIES_GENGAR
|
||||
{0x78, 0x00}, // SPECIES_ONIX
|
||||
{0x65, 0x0d}, // SPECIES_DROWZEE
|
||||
{0x66, 0x09}, // SPECIES_HYPNO
|
||||
{0x66, 0x0a}, // SPECIES_KRABBY
|
||||
{0x77, 0x04}, // SPECIES_KINGLER
|
||||
{0x55, 0x0e}, // SPECIES_VOLTORB
|
||||
{0x65, 0x0d}, // SPECIES_ELECTRODE
|
||||
{0x65, 0x0d}, // SPECIES_EXEGGCUTE
|
||||
{0x65, 0x0d}, // SPECIES_EXEGGUTOR
|
||||
{0x87, 0x04}, // SPECIES_CUBONE
|
||||
{0x66, 0x0a}, // SPECIES_MAROWAK
|
||||
{0x66, 0x08}, // SPECIES_HITMONLEE
|
||||
{0x87, 0x04}, // SPECIES_EXEGGUTOR
|
||||
{0x66, 0x0a}, // SPECIES_CUBONE
|
||||
{0x66, 0x08}, // SPECIES_MAROWAK
|
||||
{0x65, 0x0c}, // SPECIES_HITMONLEE
|
||||
{0x65, 0x0c}, // SPECIES_HITMONCHAN
|
||||
{0x65, 0x0c}, // SPECIES_LICKITUNG
|
||||
{0x65, 0x0e}, // SPECIES_KOFFING
|
||||
{0x66, 0x09}, // SPECIES_WEEZING
|
||||
{0x77, 0x06}, // SPECIES_RHYHORN
|
||||
{0x85, 0x0c}, // SPECIES_RHYDON
|
||||
{0x88, 0x03}, // SPECIES_CHANSEY
|
||||
{0x86, 0x0b}, // SPECIES_TANGELA
|
||||
{0x85, 0x0e}, // SPECIES_KANGASKHAN
|
||||
{0x77, 0x05}, // SPECIES_HORSEA
|
||||
{0x66, 0x09}, // SPECIES_SEADRA
|
||||
{0x65, 0x0e}, // SPECIES_LICKITUNG
|
||||
{0x66, 0x09}, // SPECIES_KOFFING
|
||||
{0x77, 0x06}, // SPECIES_WEEZING
|
||||
{0x85, 0x0c}, // SPECIES_RHYHORN
|
||||
{0x88, 0x03}, // SPECIES_RHYDON
|
||||
{0x86, 0x0b}, // SPECIES_CHANSEY
|
||||
{0x85, 0x0e}, // SPECIES_TANGELA
|
||||
{0x77, 0x05}, // SPECIES_KANGASKHAN
|
||||
{0x66, 0x09}, // SPECIES_HORSEA
|
||||
{0x66, 0x08}, // SPECIES_SEADRA
|
||||
{0x66, 0x08}, // SPECIES_GOLDEEN
|
||||
{0x66, 0x08}, // SPECIES_SEAKING
|
||||
{0x76, 0x0b}, // SPECIES_STARYU
|
||||
{0x65, 0x0d}, // SPECIES_STARMIE
|
||||
{0x85, 0x0e}, // SPECIES_MR_MIME
|
||||
{0x85, 0x0d}, // SPECIES_SCYTHER
|
||||
{0x77, 0x07}, // SPECIES_JYNX
|
||||
{0x86, 0x0a}, // SPECIES_ELECTABUZZ
|
||||
{0x76, 0x0b}, // SPECIES_SEAKING
|
||||
{0x65, 0x0d}, // SPECIES_STARYU
|
||||
{0x85, 0x0e}, // SPECIES_STARMIE
|
||||
{0x85, 0x0d}, // SPECIES_MR_MIME
|
||||
{0x77, 0x07}, // SPECIES_SCYTHER
|
||||
{0x86, 0x0a}, // SPECIES_JYNX
|
||||
{0x66, 0x08}, // SPECIES_ELECTABUZZ
|
||||
{0x66, 0x08}, // SPECIES_MAGMAR
|
||||
{0x66, 0x08}, // SPECIES_PINSIR
|
||||
{0x66, 0x09}, // SPECIES_TAUROS
|
||||
{0x85, 0x0d}, // SPECIES_MAGIKARP
|
||||
{0x76, 0x09}, // SPECIES_GYARADOS
|
||||
{0x78, 0x00}, // SPECIES_LAPRAS
|
||||
{0x77, 0x04}, // SPECIES_DITTO
|
||||
{0x54, 0x11}, // SPECIES_EEVEE
|
||||
{0x66, 0x09}, // SPECIES_PINSIR
|
||||
{0x85, 0x0d}, // SPECIES_TAUROS
|
||||
{0x76, 0x09}, // SPECIES_MAGIKARP
|
||||
{0x78, 0x00}, // SPECIES_GYARADOS
|
||||
{0x77, 0x04}, // SPECIES_LAPRAS
|
||||
{0x54, 0x11}, // SPECIES_DITTO
|
||||
{0x66, 0x0a}, // SPECIES_EEVEE
|
||||
{0x66, 0x0a}, // SPECIES_VAPOREON
|
||||
{0x66, 0x0a}, // SPECIES_JOLTEON
|
||||
{0x87, 0x06}, // SPECIES_FLAREON
|
||||
{0x67, 0x05}, // SPECIES_PORYGON
|
||||
{0x65, 0x0d}, // SPECIES_OMANYTE
|
||||
{0x66, 0x0a}, // SPECIES_OMASTAR
|
||||
{0x66, 0x08}, // SPECIES_KABUTO
|
||||
{0x65, 0x0d}, // SPECIES_KABUTOPS
|
||||
{0x77, 0x05}, // SPECIES_AERODACTYL
|
||||
{0x86, 0x08}, // SPECIES_SNORLAX
|
||||
{0x86, 0x0b}, // SPECIES_ARTICUNO
|
||||
{0x65, 0x0c}, // SPECIES_ZAPDOS
|
||||
{0x76, 0x0b}, // SPECIES_MOLTRES
|
||||
{0x87, 0x04}, // SPECIES_DRATINI
|
||||
{0x66, 0x09}, // SPECIES_DRAGONAIR
|
||||
{0x78, 0x00}, // SPECIES_DRAGONITE
|
||||
{0x87, 0x06}, // SPECIES_MEWTWO
|
||||
{0x78, 0x01}, // SPECIES_MEW
|
||||
{0x66, 0x08}, // SPECIES_CHIKORITA
|
||||
{0x56, 0x0a}, // SPECIES_BAYLEEF
|
||||
{0x66, 0x08}, // SPECIES_MEGANIUM
|
||||
{0x78, 0x00}, // SPECIES_CYNDAQUIL
|
||||
{0x76, 0x09}, // SPECIES_QUILAVA
|
||||
{0x87, 0x06}, // SPECIES_JOLTEON
|
||||
{0x67, 0x05}, // SPECIES_FLAREON
|
||||
{0x65, 0x0d}, // SPECIES_PORYGON
|
||||
{0x66, 0x0a}, // SPECIES_OMANYTE
|
||||
{0x66, 0x08}, // SPECIES_OMASTAR
|
||||
{0x65, 0x0d}, // SPECIES_KABUTO
|
||||
{0x77, 0x05}, // SPECIES_KABUTOPS
|
||||
{0x86, 0x08}, // SPECIES_AERODACTYL
|
||||
{0x86, 0x0b}, // SPECIES_SNORLAX
|
||||
{0x65, 0x0c}, // SPECIES_ARTICUNO
|
||||
{0x76, 0x0b}, // SPECIES_ZAPDOS
|
||||
{0x87, 0x04}, // SPECIES_MOLTRES
|
||||
{0x66, 0x09}, // SPECIES_DRATINI
|
||||
{0x78, 0x00}, // SPECIES_DRAGONAIR
|
||||
{0x87, 0x06}, // SPECIES_DRAGONITE
|
||||
{0x78, 0x01}, // SPECIES_MEWTWO
|
||||
{0x66, 0x08}, // SPECIES_MEW
|
||||
{0x56, 0x0a}, // SPECIES_CHIKORITA
|
||||
{0x66, 0x08}, // SPECIES_BAYLEEF
|
||||
{0x78, 0x00}, // SPECIES_MEGANIUM
|
||||
{0x76, 0x09}, // SPECIES_CYNDAQUIL
|
||||
{0x87, 0x04}, // SPECIES_QUILAVA
|
||||
{0x87, 0x04}, // SPECIES_TYPHLOSION
|
||||
{0x87, 0x04}, // SPECIES_TOTODILE
|
||||
{0x66, 0x0b}, // SPECIES_CROCONAW
|
||||
{0x67, 0x07}, // SPECIES_FERALIGATR
|
||||
{0x88, 0x01}, // SPECIES_SENTRET
|
||||
{0x67, 0x05}, // SPECIES_FURRET
|
||||
{0x66, 0x0b}, // SPECIES_TOTODILE
|
||||
{0x67, 0x07}, // SPECIES_CROCONAW
|
||||
{0x88, 0x01}, // SPECIES_FERALIGATR
|
||||
{0x67, 0x05}, // SPECIES_SENTRET
|
||||
{0x66, 0x08}, // SPECIES_FURRET
|
||||
{0x66, 0x08}, // SPECIES_HOOTHOOT
|
||||
{0x66, 0x08}, // SPECIES_NOCTOWL
|
||||
{0x68, 0x03}, // SPECIES_LEDYBA
|
||||
{0x76, 0x0b}, // SPECIES_LEDIAN
|
||||
{0x77, 0x07}, // SPECIES_SPINARAK
|
||||
{0x73, 0x15}, // SPECIES_ARIADOS
|
||||
{0x86, 0x0b}, // SPECIES_CROBAT
|
||||
{0x87, 0x05}, // SPECIES_CHINCHOU
|
||||
{0x68, 0x03}, // SPECIES_NOCTOWL
|
||||
{0x76, 0x0b}, // SPECIES_LEDYBA
|
||||
{0x77, 0x07}, // SPECIES_LEDIAN
|
||||
{0x73, 0x15}, // SPECIES_SPINARAK
|
||||
{0x86, 0x0b}, // SPECIES_ARIADOS
|
||||
{0x87, 0x05}, // SPECIES_CROBAT
|
||||
{0x86, 0x08}, // SPECIES_CHINCHOU
|
||||
{0x86, 0x08}, // SPECIES_LANTURN
|
||||
{0x86, 0x08}, // SPECIES_PICHU
|
||||
{0x66, 0x0b}, // SPECIES_CLEFFA
|
||||
{0x65, 0x0f}, // SPECIES_IGGLYBUFF
|
||||
{0x66, 0x0b}, // SPECIES_TOGEPI
|
||||
{0x54, 0x10}, // SPECIES_TOGETIC
|
||||
{0x66, 0x08}, // SPECIES_NATU
|
||||
{0x54, 0x11}, // SPECIES_XATU
|
||||
{0x76, 0x08}, // SPECIES_MAREEP
|
||||
{0x66, 0x0b}, // SPECIES_PICHU
|
||||
{0x65, 0x0f}, // SPECIES_CLEFFA
|
||||
{0x66, 0x0b}, // SPECIES_IGGLYBUFF
|
||||
{0x54, 0x10}, // SPECIES_TOGEPI
|
||||
{0x66, 0x08}, // SPECIES_TOGETIC
|
||||
{0x54, 0x11}, // SPECIES_NATU
|
||||
{0x76, 0x08}, // SPECIES_XATU
|
||||
{0x66, 0x09}, // SPECIES_MAREEP
|
||||
{0x66, 0x09}, // SPECIES_FLAAFFY
|
||||
{0x66, 0x09}, // SPECIES_AMPHAROS
|
||||
{0x88, 0x01}, // SPECIES_BELLOSSOM
|
||||
{0x66, 0x0b}, // SPECIES_MARILL
|
||||
{0x75, 0x0c}, // SPECIES_AZUMARILL
|
||||
{0x86, 0x08}, // SPECIES_SUDOWOODO
|
||||
{0x66, 0x08}, // SPECIES_POLITOED
|
||||
{0x66, 0x09}, // SPECIES_HOPPIP
|
||||
{0x66, 0x0b}, // SPECIES_SKIPLOOM
|
||||
{0x65, 0x0d}, // SPECIES_JUMPLUFF
|
||||
{0x87, 0x04}, // SPECIES_AIPOM
|
||||
{0x66, 0x09}, // SPECIES_SUNKERN
|
||||
{0x56, 0x0a}, // SPECIES_SUNFLORA
|
||||
{0x66, 0x08}, // SPECIES_YANMA
|
||||
{0x77, 0x04}, // SPECIES_WOOPER
|
||||
{0x85, 0x0f}, // SPECIES_QUAGSIRE
|
||||
{0x76, 0x08}, // SPECIES_ESPEON
|
||||
{0x76, 0x0b}, // SPECIES_UMBREON
|
||||
{0x87, 0x04}, // SPECIES_MURKROW
|
||||
{0x66, 0x09}, // SPECIES_SLOWKING
|
||||
{0x66, 0x08}, // SPECIES_MISDREAVUS
|
||||
{0x66, 0x0a}, // SPECIES_UNOWN
|
||||
{0x36, 0x08}, // SPECIES_WOBBUFFET
|
||||
{0x75, 0x0c}, // SPECIES_GIRAFARIG
|
||||
{0x87, 0x05}, // SPECIES_PINECO
|
||||
{0x65, 0x0f}, // SPECIES_FORRETRESS
|
||||
{0x84, 0x10}, // SPECIES_DUNSPARCE
|
||||
{0x85, 0x0f}, // SPECIES_GLIGAR
|
||||
{0x87, 0x05}, // SPECIES_STEELIX
|
||||
{0x88, 0x00}, // SPECIES_SNUBBULL
|
||||
{0x76, 0x0a}, // SPECIES_GRANBULL
|
||||
{0x87, 0x05}, // SPECIES_QWILFISH
|
||||
{0x77, 0x07}, // SPECIES_SCIZOR
|
||||
{0x77, 0x04}, // SPECIES_SHUCKLE
|
||||
{0x56, 0x0b}, // SPECIES_HERACROSS
|
||||
{0x77, 0x04}, // SPECIES_SNEASEL
|
||||
{0x88, 0x01}, // SPECIES_AMPHAROS
|
||||
{0x66, 0x0b}, // SPECIES_BELLOSSOM
|
||||
{0x75, 0x0c}, // SPECIES_MARILL
|
||||
{0x86, 0x08}, // SPECIES_AZUMARILL
|
||||
{0x66, 0x08}, // SPECIES_SUDOWOODO
|
||||
{0x66, 0x09}, // SPECIES_POLITOED
|
||||
{0x66, 0x0b}, // SPECIES_HOPPIP
|
||||
{0x65, 0x0d}, // SPECIES_SKIPLOOM
|
||||
{0x87, 0x04}, // SPECIES_JUMPLUFF
|
||||
{0x66, 0x09}, // SPECIES_AIPOM
|
||||
{0x56, 0x0a}, // SPECIES_SUNKERN
|
||||
{0x66, 0x08}, // SPECIES_SUNFLORA
|
||||
{0x77, 0x04}, // SPECIES_YANMA
|
||||
{0x85, 0x0f}, // SPECIES_WOOPER
|
||||
{0x76, 0x08}, // SPECIES_QUAGSIRE
|
||||
{0x76, 0x0b}, // SPECIES_ESPEON
|
||||
{0x87, 0x04}, // SPECIES_UMBREON
|
||||
{0x66, 0x09}, // SPECIES_MURKROW
|
||||
{0x66, 0x08}, // SPECIES_SLOWKING
|
||||
{0x66, 0x0a}, // SPECIES_MISDREAVUS
|
||||
{0x36, 0x08}, // SPECIES_UNOWN
|
||||
{0x75, 0x0c}, // SPECIES_WOBBUFFET
|
||||
{0x87, 0x05}, // SPECIES_GIRAFARIG
|
||||
{0x65, 0x0f}, // SPECIES_PINECO
|
||||
{0x84, 0x10}, // SPECIES_FORRETRESS
|
||||
{0x85, 0x0f}, // SPECIES_DUNSPARCE
|
||||
{0x87, 0x05}, // SPECIES_GLIGAR
|
||||
{0x88, 0x00}, // SPECIES_STEELIX
|
||||
{0x76, 0x0a}, // SPECIES_SNUBBULL
|
||||
{0x87, 0x05}, // SPECIES_GRANBULL
|
||||
{0x77, 0x07}, // SPECIES_QWILFISH
|
||||
{0x77, 0x04}, // SPECIES_SCIZOR
|
||||
{0x56, 0x0b}, // SPECIES_SHUCKLE
|
||||
{0x77, 0x04}, // SPECIES_HERACROSS
|
||||
{0x66, 0x08}, // SPECIES_SNEASEL
|
||||
{0x66, 0x08}, // SPECIES_TEDDIURSA
|
||||
{0x66, 0x08}, // SPECIES_URSARING
|
||||
{0x88, 0x03}, // SPECIES_SLUGMA
|
||||
{0x66, 0x08}, // SPECIES_MAGCARGO
|
||||
{0x76, 0x09}, // SPECIES_SWINUB
|
||||
{0x63, 0x15}, // SPECIES_PILOSWINE
|
||||
{0x75, 0x0d}, // SPECIES_CORSOLA
|
||||
{0x65, 0x0c}, // SPECIES_REMORAID
|
||||
{0x75, 0x0d}, // SPECIES_OCTILLERY
|
||||
{0x66, 0x0a}, // SPECIES_DELIBIRD
|
||||
{0x67, 0x06}, // SPECIES_MANTINE
|
||||
{0x87, 0x07}, // SPECIES_SKARMORY
|
||||
{0x87, 0x04}, // SPECIES_HOUNDOUR
|
||||
{0x55, 0x0c}, // SPECIES_HOUNDOOM
|
||||
{0x87, 0x07}, // SPECIES_KINGDRA
|
||||
{0x87, 0x06}, // SPECIES_PHANPY
|
||||
{0x65, 0x0e}, // SPECIES_DONPHAN
|
||||
{0x85, 0x0d}, // SPECIES_PORYGON2
|
||||
{0x76, 0x0a}, // SPECIES_STANTLER
|
||||
{0x78, 0x03}, // SPECIES_SMEARGLE
|
||||
{0x76, 0x0a}, // SPECIES_TYROGUE
|
||||
{0x66, 0x08}, // SPECIES_HITMONTOP
|
||||
{0x87, 0x05}, // SPECIES_SMOOCHUM
|
||||
{0x56, 0x09}, // SPECIES_ELEKID
|
||||
{0x66, 0x08}, // SPECIES_MAGBY
|
||||
{0x66, 0x0b}, // SPECIES_MILTANK
|
||||
{0x87, 0x07}, // SPECIES_BLISSEY
|
||||
{0x85, 0x0d}, // SPECIES_RAIKOU
|
||||
{0x86, 0x0a}, // SPECIES_ENTEI
|
||||
{0x87, 0x06}, // SPECIES_SUICUNE
|
||||
{0x88, 0x03}, // SPECIES_LARVITAR
|
||||
{0x66, 0x08}, // SPECIES_PUPITAR
|
||||
{0x67, 0x05}, // SPECIES_TYRANITAR
|
||||
{0x88, 0x00}, // SPECIES_LUGIA
|
||||
{0x88, 0x03}, // SPECIES_URSARING
|
||||
{0x66, 0x08}, // SPECIES_SLUGMA
|
||||
{0x76, 0x09}, // SPECIES_MAGCARGO
|
||||
{0x63, 0x15}, // SPECIES_SWINUB
|
||||
{0x75, 0x0d}, // SPECIES_PILOSWINE
|
||||
{0x65, 0x0c}, // SPECIES_CORSOLA
|
||||
{0x75, 0x0d}, // SPECIES_REMORAID
|
||||
{0x66, 0x0a}, // SPECIES_OCTILLERY
|
||||
{0x67, 0x06}, // SPECIES_DELIBIRD
|
||||
{0x87, 0x07}, // SPECIES_MANTINE
|
||||
{0x87, 0x04}, // SPECIES_SKARMORY
|
||||
{0x55, 0x0c}, // SPECIES_HOUNDOUR
|
||||
{0x87, 0x07}, // SPECIES_HOUNDOOM
|
||||
{0x87, 0x06}, // SPECIES_KINGDRA
|
||||
{0x65, 0x0e}, // SPECIES_PHANPY
|
||||
{0x85, 0x0d}, // SPECIES_DONPHAN
|
||||
{0x76, 0x0a}, // SPECIES_PORYGON2
|
||||
{0x78, 0x03}, // SPECIES_STANTLER
|
||||
{0x76, 0x0a}, // SPECIES_SMEARGLE
|
||||
{0x66, 0x08}, // SPECIES_TYROGUE
|
||||
{0x87, 0x05}, // SPECIES_HITMONTOP
|
||||
{0x56, 0x09}, // SPECIES_SMOOCHUM
|
||||
{0x66, 0x08}, // SPECIES_ELEKID
|
||||
{0x66, 0x0b}, // SPECIES_MAGBY
|
||||
{0x87, 0x07}, // SPECIES_MILTANK
|
||||
{0x85, 0x0d}, // SPECIES_BLISSEY
|
||||
{0x86, 0x0a}, // SPECIES_RAIKOU
|
||||
{0x87, 0x06}, // SPECIES_ENTEI
|
||||
{0x88, 0x03}, // SPECIES_SUICUNE
|
||||
{0x66, 0x08}, // SPECIES_LARVITAR
|
||||
{0x67, 0x05}, // SPECIES_PUPITAR
|
||||
{0x88, 0x00}, // SPECIES_TYRANITAR
|
||||
{0x88, 0x01}, // SPECIES_LUGIA
|
||||
{0x88, 0x01}, // SPECIES_HO_OH
|
||||
{0x88, 0x01}, // SPECIES_CELEBI
|
||||
{0x66, 0x08}, // SPECIES_OLD_UNOWN_B
|
||||
{0x66, 0x08}, // SPECIES_CELEBI
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_B
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_C
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_D
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_E
|
||||
@@ -276,168 +277,167 @@ const struct MonCoords gMonBackPicCoords[] =
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_X
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_Y
|
||||
{0x88, 0x02}, // SPECIES_OLD_UNOWN_Z
|
||||
{0x88, 0x02}, // SPECIES_TREECKO
|
||||
{0x87, 0x06}, // SPECIES_GROVYLE
|
||||
{0x86, 0x08}, // SPECIES_SCEPTILE
|
||||
{0x88, 0x01}, // SPECIES_TORCHIC
|
||||
{0x67, 0x05}, // SPECIES_COMBUSKEN
|
||||
{0x87, 0x06}, // SPECIES_TREECKO
|
||||
{0x86, 0x08}, // SPECIES_GROVYLE
|
||||
{0x88, 0x01}, // SPECIES_SCEPTILE
|
||||
{0x67, 0x05}, // SPECIES_TORCHIC
|
||||
{0x88, 0x00}, // SPECIES_COMBUSKEN
|
||||
{0x88, 0x00}, // SPECIES_BLAZIKEN
|
||||
{0x88, 0x00}, // SPECIES_MUDKIP
|
||||
{0x77, 0x05}, // SPECIES_MARSHTOMP
|
||||
{0x87, 0x04}, // SPECIES_SWAMPERT
|
||||
{0x87, 0x05}, // SPECIES_POOCHYENA
|
||||
{0x76, 0x09}, // SPECIES_MIGHTYENA
|
||||
{0x87, 0x04}, // SPECIES_ZIGZAGOON
|
||||
{0x76, 0x0b}, // SPECIES_LINOONE
|
||||
{0x85, 0x0f}, // SPECIES_WURMPLE
|
||||
{0x76, 0x0b}, // SPECIES_SILCOON
|
||||
{0x83, 0x15}, // SPECIES_BEAUTIFLY
|
||||
{0x88, 0x00}, // SPECIES_CASCOON
|
||||
{0x73, 0x14}, // SPECIES_DUSTOX
|
||||
{0x83, 0x14}, // SPECIES_LOTAD
|
||||
{0x75, 0x0f}, // SPECIES_LOMBRE
|
||||
{0x86, 0x08}, // SPECIES_LUDICOLO
|
||||
{0x86, 0x0a}, // SPECIES_SEEDOT
|
||||
{0x86, 0x09}, // SPECIES_NUZLEAF
|
||||
{0x76, 0x0a}, // SPECIES_SHIFTRY
|
||||
{0x86, 0x08}, // SPECIES_NINCADA
|
||||
{0x83, 0x14}, // SPECIES_NINJASK
|
||||
{0x86, 0x08}, // SPECIES_SHEDINJA
|
||||
{0x77, 0x06}, // SPECIES_TAILLOW
|
||||
{0x64, 0x11}, // SPECIES_SWELLOW
|
||||
{0x86, 0x08}, // SPECIES_SHROOMISH
|
||||
{0x85, 0x0d}, // SPECIES_BRELOOM
|
||||
{0x87, 0x04}, // SPECIES_SPINDA
|
||||
{0x77, 0x04}, // SPECIES_WINGULL
|
||||
{0x85, 0x0e}, // SPECIES_PELIPPER
|
||||
{0x87, 0x06}, // SPECIES_SURSKIT
|
||||
{0x86, 0x0b}, // SPECIES_MASQUERAIN
|
||||
{0x88, 0x00}, // SPECIES_WAILMER
|
||||
{0x83, 0x15}, // SPECIES_WAILORD
|
||||
{0x83, 0x16}, // SPECIES_SKITTY
|
||||
{0x86, 0x0a}, // SPECIES_DELCATTY
|
||||
{0x86, 0x08}, // SPECIES_KECLEON
|
||||
{0x87, 0x06}, // SPECIES_BALTOY
|
||||
{0x86, 0x08}, // SPECIES_CLAYDOL
|
||||
{0x87, 0x07}, // SPECIES_NOSEPASS
|
||||
{0x85, 0x0c}, // SPECIES_TORKOAL
|
||||
{0x86, 0x0a}, // SPECIES_SABLEYE
|
||||
{0x76, 0x08}, // SPECIES_BARBOACH
|
||||
{0x66, 0x0a}, // SPECIES_WHISCASH
|
||||
{0x86, 0x0a}, // SPECIES_LUVDISC
|
||||
{0x46, 0x0a}, // SPECIES_CORPHISH
|
||||
{0x77, 0x07}, // SPECIES_CRAWDAUNT
|
||||
{0x87, 0x05}, // SPECIES_FEEBAS
|
||||
{0x67, 0x07}, // SPECIES_MILOTIC
|
||||
{0x68, 0x02}, // SPECIES_CARVANHA
|
||||
{0x87, 0x07}, // SPECIES_SHARPEDO
|
||||
{0x88, 0x02}, // SPECIES_TRAPINCH
|
||||
{0x75, 0x0e}, // SPECIES_VIBRAVA
|
||||
{0x74, 0x11}, // SPECIES_FLYGON
|
||||
{0x88, 0x02}, // SPECIES_MAKUHITA
|
||||
{0x76, 0x0b}, // SPECIES_HARIYAMA
|
||||
{0x87, 0x07}, // SPECIES_ELECTRIKE
|
||||
{0x84, 0x10}, // SPECIES_MANECTRIC
|
||||
{0x87, 0x04}, // SPECIES_NUMEL
|
||||
{0x86, 0x0b}, // SPECIES_CAMERUPT
|
||||
{0x84, 0x13}, // SPECIES_SPHEAL
|
||||
{0x64, 0x12}, // SPECIES_SEALEO
|
||||
{0x86, 0x0a}, // SPECIES_WALREIN
|
||||
{0x87, 0x06}, // SPECIES_CACNEA
|
||||
{0x85, 0x0f}, // SPECIES_CACTURNE
|
||||
{0x87, 0x07}, // SPECIES_SNORUNT
|
||||
{0x76, 0x0a}, // SPECIES_GLALIE
|
||||
{0x85, 0x0c}, // SPECIES_LUNATONE
|
||||
{0x77, 0x05}, // SPECIES_MUDKIP
|
||||
{0x87, 0x04}, // SPECIES_MARSHTOMP
|
||||
{0x87, 0x05}, // SPECIES_SWAMPERT
|
||||
{0x76, 0x09}, // SPECIES_POOCHYENA
|
||||
{0x87, 0x04}, // SPECIES_MIGHTYENA
|
||||
{0x76, 0x0b}, // SPECIES_ZIGZAGOON
|
||||
{0x85, 0x0f}, // SPECIES_LINOONE
|
||||
{0x76, 0x0b}, // SPECIES_WURMPLE
|
||||
{0x83, 0x15}, // SPECIES_SILCOON
|
||||
{0x88, 0x00}, // SPECIES_BEAUTIFLY
|
||||
{0x73, 0x14}, // SPECIES_CASCOON
|
||||
{0x83, 0x14}, // SPECIES_DUSTOX
|
||||
{0x75, 0x0f}, // SPECIES_LOTAD
|
||||
{0x86, 0x08}, // SPECIES_LOMBRE
|
||||
{0x86, 0x0a}, // SPECIES_LUDICOLO
|
||||
{0x86, 0x09}, // SPECIES_SEEDOT
|
||||
{0x76, 0x0a}, // SPECIES_NUZLEAF
|
||||
{0x86, 0x08}, // SPECIES_SHIFTRY
|
||||
{0x83, 0x14}, // SPECIES_NINCADA
|
||||
{0x86, 0x08}, // SPECIES_NINJASK
|
||||
{0x77, 0x06}, // SPECIES_SHEDINJA
|
||||
{0x64, 0x11}, // SPECIES_TAILLOW
|
||||
{0x86, 0x08}, // SPECIES_SWELLOW
|
||||
{0x85, 0x0d}, // SPECIES_SHROOMISH
|
||||
{0x87, 0x04}, // SPECIES_BRELOOM
|
||||
{0x77, 0x04}, // SPECIES_SPINDA
|
||||
{0x85, 0x0e}, // SPECIES_WINGULL
|
||||
{0x87, 0x06}, // SPECIES_PELIPPER
|
||||
{0x86, 0x0b}, // SPECIES_SURSKIT
|
||||
{0x88, 0x00}, // SPECIES_MASQUERAIN
|
||||
{0x83, 0x15}, // SPECIES_WAILMER
|
||||
{0x83, 0x16}, // SPECIES_WAILORD
|
||||
{0x86, 0x0a}, // SPECIES_SKITTY
|
||||
{0x86, 0x08}, // SPECIES_DELCATTY
|
||||
{0x87, 0x06}, // SPECIES_KECLEON
|
||||
{0x86, 0x08}, // SPECIES_BALTOY
|
||||
{0x87, 0x07}, // SPECIES_CLAYDOL
|
||||
{0x85, 0x0c}, // SPECIES_NOSEPASS
|
||||
{0x86, 0x0a}, // SPECIES_TORKOAL
|
||||
{0x76, 0x08}, // SPECIES_SABLEYE
|
||||
{0x66, 0x0a}, // SPECIES_BARBOACH
|
||||
{0x86, 0x0a}, // SPECIES_WHISCASH
|
||||
{0x46, 0x0a}, // SPECIES_LUVDISC
|
||||
{0x77, 0x07}, // SPECIES_CORPHISH
|
||||
{0x87, 0x05}, // SPECIES_CRAWDAUNT
|
||||
{0x67, 0x07}, // SPECIES_FEEBAS
|
||||
{0x68, 0x02}, // SPECIES_MILOTIC
|
||||
{0x87, 0x07}, // SPECIES_CARVANHA
|
||||
{0x88, 0x02}, // SPECIES_SHARPEDO
|
||||
{0x75, 0x0e}, // SPECIES_TRAPINCH
|
||||
{0x74, 0x11}, // SPECIES_VIBRAVA
|
||||
{0x88, 0x02}, // SPECIES_FLYGON
|
||||
{0x76, 0x0b}, // SPECIES_MAKUHITA
|
||||
{0x87, 0x07}, // SPECIES_HARIYAMA
|
||||
{0x84, 0x10}, // SPECIES_ELECTRIKE
|
||||
{0x87, 0x04}, // SPECIES_MANECTRIC
|
||||
{0x86, 0x0b}, // SPECIES_NUMEL
|
||||
{0x84, 0x13}, // SPECIES_CAMERUPT
|
||||
{0x64, 0x12}, // SPECIES_SPHEAL
|
||||
{0x86, 0x0a}, // SPECIES_SEALEO
|
||||
{0x87, 0x06}, // SPECIES_WALREIN
|
||||
{0x85, 0x0f}, // SPECIES_CACNEA
|
||||
{0x87, 0x07}, // SPECIES_CACTURNE
|
||||
{0x76, 0x0a}, // SPECIES_SNORUNT
|
||||
{0x85, 0x0c}, // SPECIES_GLALIE
|
||||
{0x87, 0x05}, // SPECIES_LUNATONE
|
||||
{0x87, 0x05}, // SPECIES_SOLROCK
|
||||
{0x87, 0x05}, // SPECIES_AZURILL
|
||||
{0x86, 0x0a}, // SPECIES_SPOINK
|
||||
{0x56, 0x0b}, // SPECIES_GRUMPIG
|
||||
{0x87, 0x04}, // SPECIES_PLUSLE
|
||||
{0x86, 0x0a}, // SPECIES_AZURILL
|
||||
{0x56, 0x0b}, // SPECIES_SPOINK
|
||||
{0x87, 0x04}, // SPECIES_GRUMPIG
|
||||
{0x76, 0x08}, // SPECIES_PLUSLE
|
||||
{0x76, 0x08}, // SPECIES_MINUN
|
||||
{0x76, 0x08}, // SPECIES_MAWILE
|
||||
{0x87, 0x04}, // SPECIES_MEDITITE
|
||||
{0x76, 0x0b}, // SPECIES_MEDICHAM
|
||||
{0x68, 0x03}, // SPECIES_SWABLU
|
||||
{0x86, 0x09}, // SPECIES_ALTARIA
|
||||
{0x87, 0x06}, // SPECIES_WYNAUT
|
||||
{0x77, 0x07}, // SPECIES_DUSKULL
|
||||
{0x66, 0x0b}, // SPECIES_DUSCLOPS
|
||||
{0x87, 0x04}, // SPECIES_MAWILE
|
||||
{0x76, 0x0b}, // SPECIES_MEDITITE
|
||||
{0x68, 0x03}, // SPECIES_MEDICHAM
|
||||
{0x86, 0x09}, // SPECIES_SWABLU
|
||||
{0x87, 0x06}, // SPECIES_ALTARIA
|
||||
{0x77, 0x07}, // SPECIES_WYNAUT
|
||||
{0x66, 0x0b}, // SPECIES_DUSKULL
|
||||
{0x86, 0x08}, // SPECIES_DUSCLOPS
|
||||
{0x86, 0x08}, // SPECIES_ROSELIA
|
||||
{0x86, 0x08}, // SPECIES_SLAKOTH
|
||||
{0x85, 0x0f}, // SPECIES_VIGOROTH
|
||||
{0x86, 0x0a}, // SPECIES_SLAKING
|
||||
{0x86, 0x08}, // SPECIES_GULPIN
|
||||
{0x66, 0x0b}, // SPECIES_SWALOT
|
||||
{0x77, 0x06}, // SPECIES_TROPIUS
|
||||
{0x87, 0x07}, // SPECIES_WHISMUR
|
||||
{0x85, 0x0d}, // SPECIES_LOUDRED
|
||||
{0x86, 0x09}, // SPECIES_EXPLOUD
|
||||
{0x88, 0x03}, // SPECIES_CLAMPERL
|
||||
{0x85, 0x0d}, // SPECIES_HUNTAIL
|
||||
{0x68, 0x02}, // SPECIES_GOREBYSS
|
||||
{0x77, 0x05}, // SPECIES_ABSOL
|
||||
{0x78, 0x03}, // SPECIES_SHUPPET
|
||||
{0x77, 0x06}, // SPECIES_BANETTE
|
||||
{0x65, 0x0c}, // SPECIES_SEVIPER
|
||||
{0x88, 0x03}, // SPECIES_ZANGOOSE
|
||||
{0x88, 0x01}, // SPECIES_RELICANTH
|
||||
{0x86, 0x0a}, // SPECIES_ARON
|
||||
{0x54, 0x11}, // SPECIES_LAIRON
|
||||
{0x84, 0x11}, // SPECIES_AGGRON
|
||||
{0x87, 0x07}, // SPECIES_CASTFORM
|
||||
{0x45, 0x0d}, // SPECIES_VOLBEAT
|
||||
{0x76, 0x08}, // SPECIES_ILLUMISE
|
||||
{0x67, 0x06}, // SPECIES_LILEEP
|
||||
{0x86, 0x09}, // SPECIES_CRADILY
|
||||
{0x77, 0x04}, // SPECIES_ANORITH
|
||||
{0x83, 0x17}, // SPECIES_ARMALDO
|
||||
{0x77, 0x05}, // SPECIES_RALTS
|
||||
{0x45, 0x0d}, // SPECIES_KIRLIA
|
||||
{0x57, 0x06}, // SPECIES_GARDEVOIR
|
||||
{0x77, 0x04}, // SPECIES_BAGON
|
||||
{0x66, 0x08}, // SPECIES_SHELGON
|
||||
{0x85, 0x0d}, // SPECIES_SALAMENCE
|
||||
{0x77, 0x06}, // SPECIES_BELDUM
|
||||
{0x66, 0x0a}, // SPECIES_METANG
|
||||
{0x84, 0x10}, // SPECIES_METAGROSS
|
||||
{0x83, 0x14}, // SPECIES_REGIROCK
|
||||
{0x86, 0x0a}, // SPECIES_REGICE
|
||||
{0x85, 0x0f}, // SPECIES_SLAKOTH
|
||||
{0x86, 0x0a}, // SPECIES_VIGOROTH
|
||||
{0x86, 0x08}, // SPECIES_SLAKING
|
||||
{0x66, 0x0b}, // SPECIES_GULPIN
|
||||
{0x77, 0x06}, // SPECIES_SWALOT
|
||||
{0x87, 0x07}, // SPECIES_TROPIUS
|
||||
{0x85, 0x0d}, // SPECIES_WHISMUR
|
||||
{0x86, 0x09}, // SPECIES_LOUDRED
|
||||
{0x88, 0x03}, // SPECIES_EXPLOUD
|
||||
{0x85, 0x0d}, // SPECIES_CLAMPERL
|
||||
{0x68, 0x02}, // SPECIES_HUNTAIL
|
||||
{0x77, 0x05}, // SPECIES_GOREBYSS
|
||||
{0x78, 0x03}, // SPECIES_ABSOL
|
||||
{0x77, 0x06}, // SPECIES_SHUPPET
|
||||
{0x65, 0x0c}, // SPECIES_BANETTE
|
||||
{0x88, 0x03}, // SPECIES_SEVIPER
|
||||
{0x88, 0x01}, // SPECIES_ZANGOOSE
|
||||
{0x86, 0x0a}, // SPECIES_RELICANTH
|
||||
{0x54, 0x11}, // SPECIES_ARON
|
||||
{0x84, 0x11}, // SPECIES_LAIRON
|
||||
{0x87, 0x07}, // SPECIES_AGGRON
|
||||
{0x45, 0x0d}, // SPECIES_CASTFORM
|
||||
{0x76, 0x08}, // SPECIES_VOLBEAT
|
||||
{0x67, 0x06}, // SPECIES_ILLUMISE
|
||||
{0x86, 0x09}, // SPECIES_LILEEP
|
||||
{0x77, 0x04}, // SPECIES_CRADILY
|
||||
{0x83, 0x17}, // SPECIES_ANORITH
|
||||
{0x77, 0x05}, // SPECIES_ARMALDO
|
||||
{0x45, 0x0d}, // SPECIES_RALTS
|
||||
{0x57, 0x06}, // SPECIES_KIRLIA
|
||||
{0x77, 0x04}, // SPECIES_GARDEVOIR
|
||||
{0x66, 0x08}, // SPECIES_BAGON
|
||||
{0x85, 0x0d}, // SPECIES_SHELGON
|
||||
{0x77, 0x06}, // SPECIES_SALAMENCE
|
||||
{0x66, 0x0a}, // SPECIES_BELDUM
|
||||
{0x84, 0x10}, // SPECIES_METANG
|
||||
{0x83, 0x14}, // SPECIES_METAGROSS
|
||||
{0x86, 0x0a}, // SPECIES_REGIROCK
|
||||
{0x85, 0x0e}, // SPECIES_REGICE
|
||||
{0x85, 0x0e}, // SPECIES_REGISTEEL
|
||||
{0x85, 0x0e}, // SPECIES_KYOGRE
|
||||
{0x84, 0x13}, // SPECIES_GROUDON
|
||||
{0x87, 0x07}, // SPECIES_RAYQUAZA
|
||||
{0x78, 0x00}, // SPECIES_LATIAS
|
||||
{0x88, 0x02}, // SPECIES_LATIOS
|
||||
{0x88, 0x03}, // SPECIES_JIRACHI
|
||||
{0x87, 0x05}, // SPECIES_DEOXYS
|
||||
{0x86, 0x09}, // SPECIES_CHIMECHO
|
||||
{0x47, 0x07}, // SPECIES_EGG
|
||||
{0x36, 0x0a}, // SPECIES_UNOWN_B
|
||||
{0x56, 0x09}, // SPECIES_UNOWN_C
|
||||
{0x67, 0x06}, // SPECIES_UNOWN_D
|
||||
{0x56, 0x08}, // SPECIES_UNOWN_E
|
||||
{0x56, 0x0a}, // SPECIES_UNOWN_F
|
||||
{0x66, 0x0a}, // SPECIES_UNOWN_G
|
||||
{0x57, 0x05}, // SPECIES_UNOWN_H
|
||||
{0x66, 0x08}, // SPECIES_UNOWN_I
|
||||
{0x37, 0x07}, // SPECIES_UNOWN_J
|
||||
{0x46, 0x09}, // SPECIES_UNOWN_K
|
||||
{0x57, 0x07}, // SPECIES_UNOWN_L
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_M
|
||||
{0x84, 0x13}, // SPECIES_KYOGRE
|
||||
{0x87, 0x07}, // SPECIES_GROUDON
|
||||
{0x78, 0x00}, // SPECIES_RAYQUAZA
|
||||
{0x88, 0x02}, // SPECIES_LATIAS
|
||||
{0x88, 0x03}, // SPECIES_LATIOS
|
||||
{0x87, 0x05}, // SPECIES_JIRACHI
|
||||
{0x86, 0x09}, // SPECIES_DEOXYS
|
||||
{0x47, 0x07}, // SPECIES_CHIMECHO
|
||||
{0x36, 0x0a}, // SPECIES_EGG
|
||||
{0x56, 0x09}, // SPECIES_UNOWN_B
|
||||
{0x67, 0x06}, // SPECIES_UNOWN_C
|
||||
{0x56, 0x08}, // SPECIES_UNOWN_D
|
||||
{0x56, 0x0a}, // SPECIES_UNOWN_E
|
||||
{0x66, 0x0a}, // SPECIES_UNOWN_F
|
||||
{0x57, 0x05}, // SPECIES_UNOWN_G
|
||||
{0x66, 0x08}, // SPECIES_UNOWN_H
|
||||
{0x37, 0x07}, // SPECIES_UNOWN_I
|
||||
{0x46, 0x09}, // SPECIES_UNOWN_J
|
||||
{0x57, 0x07}, // SPECIES_UNOWN_K
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_L
|
||||
{0x65, 0x0d}, // SPECIES_UNOWN_M
|
||||
{0x65, 0x0d}, // SPECIES_UNOWN_N
|
||||
{0x65, 0x0d}, // SPECIES_UNOWN_O
|
||||
{0x66, 0x08}, // SPECIES_UNOWN_P
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_Q
|
||||
{0x55, 0x0f}, // SPECIES_UNOWN_R
|
||||
{0x45, 0x0c}, // SPECIES_UNOWN_S
|
||||
{0x57, 0x04}, // SPECIES_UNOWN_T
|
||||
{0x45, 0x0d}, // SPECIES_UNOWN_U
|
||||
{0x65, 0x0d}, // SPECIES_UNOWN_V
|
||||
{0x56, 0x0b}, // SPECIES_UNOWN_W
|
||||
{0x55, 0x0d}, // SPECIES_UNOWN_X
|
||||
{0x55, 0x0f}, // SPECIES_UNOWN_Y
|
||||
{0x66, 0x08}, // SPECIES_UNOWN_O
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_P
|
||||
{0x55, 0x0f}, // SPECIES_UNOWN_Q
|
||||
{0x45, 0x0c}, // SPECIES_UNOWN_R
|
||||
{0x57, 0x04}, // SPECIES_UNOWN_S
|
||||
{0x45, 0x0d}, // SPECIES_UNOWN_T
|
||||
{0x65, 0x0d}, // SPECIES_UNOWN_U
|
||||
{0x56, 0x0b}, // SPECIES_UNOWN_V
|
||||
{0x55, 0x0d}, // SPECIES_UNOWN_W
|
||||
{0x55, 0x0f}, // SPECIES_UNOWN_X
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_Y
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_Z
|
||||
{0x46, 0x0a}, // SPECIES_UNOWN_EMARK
|
||||
{0x37, 0x06}, // SPECIES_UNOWN_QMARK
|
||||
{0x47, 0x06},
|
||||
{0x37, 0x06}, // SPECIES_UNOWN_EMARK
|
||||
{0x47, 0x06}, // SPECIES_UNOWN_QMARK
|
||||
};
|
||||
|
||||
@@ -0,0 +1,416 @@
|
||||
const u8 *const gMonFootprintTable[] =
|
||||
{
|
||||
gMonFootprint_Bulbasaur,
|
||||
gMonFootprint_Bulbasaur,
|
||||
gMonFootprint_Ivysaur,
|
||||
gMonFootprint_Venusaur,
|
||||
gMonFootprint_Charmander,
|
||||
gMonFootprint_Charmeleon,
|
||||
gMonFootprint_Charizard,
|
||||
gMonFootprint_Squirtle,
|
||||
gMonFootprint_Wartortle,
|
||||
gMonFootprint_Blastoise,
|
||||
gMonFootprint_Caterpie,
|
||||
gMonFootprint_Metapod,
|
||||
gMonFootprint_Butterfree,
|
||||
gMonFootprint_Weedle,
|
||||
gMonFootprint_Kakuna,
|
||||
gMonFootprint_Beedrill,
|
||||
gMonFootprint_Pidgey,
|
||||
gMonFootprint_Pidgeotto,
|
||||
gMonFootprint_Pidgeot,
|
||||
gMonFootprint_Rattata,
|
||||
gMonFootprint_Raticate,
|
||||
gMonFootprint_Spearow,
|
||||
gMonFootprint_Fearow,
|
||||
gMonFootprint_Ekans,
|
||||
gMonFootprint_Arbok,
|
||||
gMonFootprint_Pikachu,
|
||||
gMonFootprint_Raichu,
|
||||
gMonFootprint_Sandshrew,
|
||||
gMonFootprint_Sandslash,
|
||||
gMonFootprint_NidoranF,
|
||||
gMonFootprint_Nidorina,
|
||||
gMonFootprint_Nidoqueen,
|
||||
gMonFootprint_NidoranM,
|
||||
gMonFootprint_Nidorino,
|
||||
gMonFootprint_Nidoking,
|
||||
gMonFootprint_Clefairy,
|
||||
gMonFootprint_Clefable,
|
||||
gMonFootprint_Vulpix,
|
||||
gMonFootprint_Ninetales,
|
||||
gMonFootprint_Jigglypuff,
|
||||
gMonFootprint_Wigglytuff,
|
||||
gMonFootprint_Zubat,
|
||||
gMonFootprint_Golbat,
|
||||
gMonFootprint_Oddish,
|
||||
gMonFootprint_Gloom,
|
||||
gMonFootprint_Vileplume,
|
||||
gMonFootprint_Paras,
|
||||
gMonFootprint_Parasect,
|
||||
gMonFootprint_Venonat,
|
||||
gMonFootprint_Venomoth,
|
||||
gMonFootprint_Diglett,
|
||||
gMonFootprint_Dugtrio,
|
||||
gMonFootprint_Meowth,
|
||||
gMonFootprint_Persian,
|
||||
gMonFootprint_Psyduck,
|
||||
gMonFootprint_Golduck,
|
||||
gMonFootprint_Mankey,
|
||||
gMonFootprint_Primeape,
|
||||
gMonFootprint_Growlithe,
|
||||
gMonFootprint_Arcanine,
|
||||
gMonFootprint_Poliwag,
|
||||
gMonFootprint_Poliwhirl,
|
||||
gMonFootprint_Poliwrath,
|
||||
gMonFootprint_Abra,
|
||||
gMonFootprint_Kadabra,
|
||||
gMonFootprint_Alakazam,
|
||||
gMonFootprint_Machop,
|
||||
gMonFootprint_Machoke,
|
||||
gMonFootprint_Machamp,
|
||||
gMonFootprint_Bellsprout,
|
||||
gMonFootprint_Weepinbell,
|
||||
gMonFootprint_Victreebel,
|
||||
gMonFootprint_Tentacool,
|
||||
gMonFootprint_Tentacruel,
|
||||
gMonFootprint_Geodude,
|
||||
gMonFootprint_Graveler,
|
||||
gMonFootprint_Golem,
|
||||
gMonFootprint_Ponyta,
|
||||
gMonFootprint_Rapidash,
|
||||
gMonFootprint_Slowpoke,
|
||||
gMonFootprint_Slowbro,
|
||||
gMonFootprint_Magnemite,
|
||||
gMonFootprint_Magneton,
|
||||
gMonFootprint_Farfetchd,
|
||||
gMonFootprint_Doduo,
|
||||
gMonFootprint_Dodrio,
|
||||
gMonFootprint_Seel,
|
||||
gMonFootprint_Dewgong,
|
||||
gMonFootprint_Grimer,
|
||||
gMonFootprint_Muk,
|
||||
gMonFootprint_Shellder,
|
||||
gMonFootprint_Cloyster,
|
||||
gMonFootprint_Gastly,
|
||||
gMonFootprint_Haunter,
|
||||
gMonFootprint_Gengar,
|
||||
gMonFootprint_Onix,
|
||||
gMonFootprint_Drowzee,
|
||||
gMonFootprint_Hypno,
|
||||
gMonFootprint_Krabby,
|
||||
gMonFootprint_Kingler,
|
||||
gMonFootprint_Voltorb,
|
||||
gMonFootprint_Electrode,
|
||||
gMonFootprint_Exeggcute,
|
||||
gMonFootprint_Exeggutor,
|
||||
gMonFootprint_Cubone,
|
||||
gMonFootprint_Marowak,
|
||||
gMonFootprint_Hitmonlee,
|
||||
gMonFootprint_Hitmonchan,
|
||||
gMonFootprint_Lickitung,
|
||||
gMonFootprint_Koffing,
|
||||
gMonFootprint_Weezing,
|
||||
gMonFootprint_Rhyhorn,
|
||||
gMonFootprint_Rhydon,
|
||||
gMonFootprint_Chansey,
|
||||
gMonFootprint_Tangela,
|
||||
gMonFootprint_Kangaskhan,
|
||||
gMonFootprint_Horsea,
|
||||
gMonFootprint_Seadra,
|
||||
gMonFootprint_Goldeen,
|
||||
gMonFootprint_Seaking,
|
||||
gMonFootprint_Staryu,
|
||||
gMonFootprint_Starmie,
|
||||
gMonFootprint_Mrmime,
|
||||
gMonFootprint_Scyther,
|
||||
gMonFootprint_Jynx,
|
||||
gMonFootprint_Electabuzz,
|
||||
gMonFootprint_Magmar,
|
||||
gMonFootprint_Pinsir,
|
||||
gMonFootprint_Tauros,
|
||||
gMonFootprint_Magikarp,
|
||||
gMonFootprint_Gyarados,
|
||||
gMonFootprint_Lapras,
|
||||
gMonFootprint_Ditto,
|
||||
gMonFootprint_Eevee,
|
||||
gMonFootprint_Vaporeon,
|
||||
gMonFootprint_Jolteon,
|
||||
gMonFootprint_Flareon,
|
||||
gMonFootprint_Porygon,
|
||||
gMonFootprint_Omanyte,
|
||||
gMonFootprint_Omastar,
|
||||
gMonFootprint_Kabuto,
|
||||
gMonFootprint_Kabutops,
|
||||
gMonFootprint_Aerodactyl,
|
||||
gMonFootprint_Snorlax,
|
||||
gMonFootprint_Articuno,
|
||||
gMonFootprint_Zapdos,
|
||||
gMonFootprint_Moltres,
|
||||
gMonFootprint_Dratini,
|
||||
gMonFootprint_Dragonair,
|
||||
gMonFootprint_Dragonite,
|
||||
gMonFootprint_Mewtwo,
|
||||
gMonFootprint_Mew,
|
||||
gMonFootprint_Chikorita,
|
||||
gMonFootprint_Bayleef,
|
||||
gMonFootprint_Meganium,
|
||||
gMonFootprint_Cyndaquil,
|
||||
gMonFootprint_Quilava,
|
||||
gMonFootprint_Typhlosion,
|
||||
gMonFootprint_Totodile,
|
||||
gMonFootprint_Croconaw,
|
||||
gMonFootprint_Feraligatr,
|
||||
gMonFootprint_Sentret,
|
||||
gMonFootprint_Furret,
|
||||
gMonFootprint_Hoothoot,
|
||||
gMonFootprint_Noctowl,
|
||||
gMonFootprint_Ledyba,
|
||||
gMonFootprint_Ledian,
|
||||
gMonFootprint_Spinarak,
|
||||
gMonFootprint_Ariados,
|
||||
gMonFootprint_Crobat,
|
||||
gMonFootprint_Chinchou,
|
||||
gMonFootprint_Lanturn,
|
||||
gMonFootprint_Pichu,
|
||||
gMonFootprint_Cleffa,
|
||||
gMonFootprint_Igglybuff,
|
||||
gMonFootprint_Togepi,
|
||||
gMonFootprint_Togetic,
|
||||
gMonFootprint_Natu,
|
||||
gMonFootprint_Xatu,
|
||||
gMonFootprint_Mareep,
|
||||
gMonFootprint_Flaaffy,
|
||||
gMonFootprint_Ampharos,
|
||||
gMonFootprint_Bellossom,
|
||||
gMonFootprint_Marill,
|
||||
gMonFootprint_Azumarill,
|
||||
gMonFootprint_Sudowoodo,
|
||||
gMonFootprint_Politoed,
|
||||
gMonFootprint_Hoppip,
|
||||
gMonFootprint_Skiploom,
|
||||
gMonFootprint_Jumpluff,
|
||||
gMonFootprint_Aipom,
|
||||
gMonFootprint_Sunkern,
|
||||
gMonFootprint_Sunflora,
|
||||
gMonFootprint_Yanma,
|
||||
gMonFootprint_Wooper,
|
||||
gMonFootprint_Quagsire,
|
||||
gMonFootprint_Espeon,
|
||||
gMonFootprint_Umbreon,
|
||||
gMonFootprint_Murkrow,
|
||||
gMonFootprint_Slowking,
|
||||
gMonFootprint_Misdreavus,
|
||||
gMonFootprint_Unown,
|
||||
gMonFootprint_Wobbuffet,
|
||||
gMonFootprint_Girafarig,
|
||||
gMonFootprint_Pineco,
|
||||
gMonFootprint_Forretress,
|
||||
gMonFootprint_Dunsparce,
|
||||
gMonFootprint_Gligar,
|
||||
gMonFootprint_Steelix,
|
||||
gMonFootprint_Snubbull,
|
||||
gMonFootprint_Granbull,
|
||||
gMonFootprint_Qwilfish,
|
||||
gMonFootprint_Scizor,
|
||||
gMonFootprint_Shuckle,
|
||||
gMonFootprint_Heracross,
|
||||
gMonFootprint_Sneasel,
|
||||
gMonFootprint_Teddiursa,
|
||||
gMonFootprint_Ursaring,
|
||||
gMonFootprint_Slugma,
|
||||
gMonFootprint_Magcargo,
|
||||
gMonFootprint_Swinub,
|
||||
gMonFootprint_Piloswine,
|
||||
gMonFootprint_Corsola,
|
||||
gMonFootprint_Remoraid,
|
||||
gMonFootprint_Octillery,
|
||||
gMonFootprint_Delibird,
|
||||
gMonFootprint_Mantine,
|
||||
gMonFootprint_Skarmory,
|
||||
gMonFootprint_Houndour,
|
||||
gMonFootprint_Houndoom,
|
||||
gMonFootprint_Kingdra,
|
||||
gMonFootprint_Phanpy,
|
||||
gMonFootprint_Donphan,
|
||||
gMonFootprint_Porygon2,
|
||||
gMonFootprint_Stantler,
|
||||
gMonFootprint_Smeargle,
|
||||
gMonFootprint_Tyrogue,
|
||||
gMonFootprint_Hitmontop,
|
||||
gMonFootprint_Smoochum,
|
||||
gMonFootprint_Elekid,
|
||||
gMonFootprint_Magby,
|
||||
gMonFootprint_Miltank,
|
||||
gMonFootprint_Blissey,
|
||||
gMonFootprint_Raikou,
|
||||
gMonFootprint_Entei,
|
||||
gMonFootprint_Suicune,
|
||||
gMonFootprint_Larvitar,
|
||||
gMonFootprint_Pupitar,
|
||||
gMonFootprint_Tyranitar,
|
||||
gMonFootprint_Lugia,
|
||||
gMonFootprint_HoOh,
|
||||
gMonFootprint_Celebi,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_QuestionMark,
|
||||
gMonFootprint_Treecko,
|
||||
gMonFootprint_Grovyle,
|
||||
gMonFootprint_Sceptile,
|
||||
gMonFootprint_Torchic,
|
||||
gMonFootprint_Combusken,
|
||||
gMonFootprint_Blaziken,
|
||||
gMonFootprint_Mudkip,
|
||||
gMonFootprint_Marshtomp,
|
||||
gMonFootprint_Swampert,
|
||||
gMonFootprint_Poochyena,
|
||||
gMonFootprint_Mightyena,
|
||||
gMonFootprint_Zigzagoon,
|
||||
gMonFootprint_Linoone,
|
||||
gMonFootprint_Wurmple,
|
||||
gMonFootprint_Silcoon,
|
||||
gMonFootprint_Beautifly,
|
||||
gMonFootprint_Cascoon,
|
||||
gMonFootprint_Dustox,
|
||||
gMonFootprint_Lotad,
|
||||
gMonFootprint_Lombre,
|
||||
gMonFootprint_Ludicolo,
|
||||
gMonFootprint_Seedot,
|
||||
gMonFootprint_Nuzleaf,
|
||||
gMonFootprint_Shiftry,
|
||||
gMonFootprint_Nincada,
|
||||
gMonFootprint_Ninjask,
|
||||
gMonFootprint_Shedinja,
|
||||
gMonFootprint_Taillow,
|
||||
gMonFootprint_Swellow,
|
||||
gMonFootprint_Shroomish,
|
||||
gMonFootprint_Breloom,
|
||||
gMonFootprint_Spinda,
|
||||
gMonFootprint_Wingull,
|
||||
gMonFootprint_Pelipper,
|
||||
gMonFootprint_Surskit,
|
||||
gMonFootprint_Masquerain,
|
||||
gMonFootprint_Wailmer,
|
||||
gMonFootprint_Wailord,
|
||||
gMonFootprint_Skitty,
|
||||
gMonFootprint_Delcatty,
|
||||
gMonFootprint_Kecleon,
|
||||
gMonFootprint_Baltoy,
|
||||
gMonFootprint_Claydol,
|
||||
gMonFootprint_Nosepass,
|
||||
gMonFootprint_Torkoal,
|
||||
gMonFootprint_Sableye,
|
||||
gMonFootprint_Barboach,
|
||||
gMonFootprint_Whiscash,
|
||||
gMonFootprint_Luvdisc,
|
||||
gMonFootprint_Corphish,
|
||||
gMonFootprint_Crawdaunt,
|
||||
gMonFootprint_Feebas,
|
||||
gMonFootprint_Milotic,
|
||||
gMonFootprint_Carvanha,
|
||||
gMonFootprint_Sharpedo,
|
||||
gMonFootprint_Trapinch,
|
||||
gMonFootprint_Vibrava,
|
||||
gMonFootprint_Flygon,
|
||||
gMonFootprint_Makuhita,
|
||||
gMonFootprint_Hariyama,
|
||||
gMonFootprint_Electrike,
|
||||
gMonFootprint_Manectric,
|
||||
gMonFootprint_Numel,
|
||||
gMonFootprint_Camerupt,
|
||||
gMonFootprint_Spheal,
|
||||
gMonFootprint_Sealeo,
|
||||
gMonFootprint_Walrein,
|
||||
gMonFootprint_Cacnea,
|
||||
gMonFootprint_Cacturne,
|
||||
gMonFootprint_Snorunt,
|
||||
gMonFootprint_Glalie,
|
||||
gMonFootprint_Lunatone,
|
||||
gMonFootprint_Solrock,
|
||||
gMonFootprint_Azurill,
|
||||
gMonFootprint_Spoink,
|
||||
gMonFootprint_Grumpig,
|
||||
gMonFootprint_Plusle,
|
||||
gMonFootprint_Minun,
|
||||
gMonFootprint_Mawile,
|
||||
gMonFootprint_Meditite,
|
||||
gMonFootprint_Medicham,
|
||||
gMonFootprint_Swablu,
|
||||
gMonFootprint_Altaria,
|
||||
gMonFootprint_Wynaut,
|
||||
gMonFootprint_Duskull,
|
||||
gMonFootprint_Dusclops,
|
||||
gMonFootprint_Roselia,
|
||||
gMonFootprint_Slakoth,
|
||||
gMonFootprint_Vigoroth,
|
||||
gMonFootprint_Slaking,
|
||||
gMonFootprint_Gulpin,
|
||||
gMonFootprint_Swalot,
|
||||
gMonFootprint_Tropius,
|
||||
gMonFootprint_Whismur,
|
||||
gMonFootprint_Loudred,
|
||||
gMonFootprint_Exploud,
|
||||
gMonFootprint_Clamperl,
|
||||
gMonFootprint_Huntail,
|
||||
gMonFootprint_Gorebyss,
|
||||
gMonFootprint_Absol,
|
||||
gMonFootprint_Shuppet,
|
||||
gMonFootprint_Banette,
|
||||
gMonFootprint_Seviper,
|
||||
gMonFootprint_Zangoose,
|
||||
gMonFootprint_Relicanth,
|
||||
gMonFootprint_Aron,
|
||||
gMonFootprint_Lairon,
|
||||
gMonFootprint_Aggron,
|
||||
gMonFootprint_Castform,
|
||||
gMonFootprint_Volbeat,
|
||||
gMonFootprint_Illumise,
|
||||
gMonFootprint_Lileep,
|
||||
gMonFootprint_Cradily,
|
||||
gMonFootprint_Anorith,
|
||||
gMonFootprint_Armaldo,
|
||||
gMonFootprint_Ralts,
|
||||
gMonFootprint_Kirlia,
|
||||
gMonFootprint_Gardevoir,
|
||||
gMonFootprint_Bagon,
|
||||
gMonFootprint_Shelgon,
|
||||
gMonFootprint_Salamence,
|
||||
gMonFootprint_Beldum,
|
||||
gMonFootprint_Metang,
|
||||
gMonFootprint_Metagross,
|
||||
gMonFootprint_Regirock,
|
||||
gMonFootprint_Regice,
|
||||
gMonFootprint_Registeel,
|
||||
gMonFootprint_Kyogre,
|
||||
gMonFootprint_Groudon,
|
||||
gMonFootprint_Rayquaza,
|
||||
gMonFootprint_Latias,
|
||||
gMonFootprint_Latios,
|
||||
gMonFootprint_Jirachi,
|
||||
gMonFootprint_Deoxys,
|
||||
gMonFootprint_Chimecho,
|
||||
gMonFootprint_Bulbasaur,
|
||||
};
|
||||
@@ -47,211 +47,212 @@ const struct MonCoords gMonFrontPicCoords[] =
|
||||
{0x66, 0x0a}, // SPECIES_GLOOM
|
||||
{0x77, 0x06}, // SPECIES_VILEPLUME
|
||||
{0x55, 0x0f}, // SPECIES_PARAS
|
||||
{0x86, 0x08}, // SPECIES_VENONAT
|
||||
{0x66, 0x08}, // SPECIES_VENOMOTH
|
||||
{0x88, 0x02}, // SPECIES_DIGLETT
|
||||
{0x54, 0x12}, // SPECIES_DUGTRIO
|
||||
{0x75, 0x0d}, // SPECIES_MEOWTH
|
||||
{0x55, 0x0c}, // SPECIES_PERSIAN
|
||||
{0x77, 0x07}, // SPECIES_PSYDUCK
|
||||
{0x56, 0x09}, // SPECIES_GOLDUCK
|
||||
{0x78, 0x02}, // SPECIES_MANKEY
|
||||
{0x65, 0x0e}, // SPECIES_PRIMEAPE
|
||||
{0x77, 0x07}, // SPECIES_GROWLITHE
|
||||
{0x66, 0x0b}, // SPECIES_ARCANINE
|
||||
{0x88, 0x02}, // SPECIES_POLIWAG
|
||||
{0x74, 0x13}, // SPECIES_POLIWHIRL
|
||||
{0x76, 0x0a}, // SPECIES_POLIWRATH
|
||||
{0x76, 0x08}, // SPECIES_ABRA
|
||||
{0x66, 0x0b}, // SPECIES_KADABRA
|
||||
{0x77, 0x05}, // SPECIES_ALAKAZAM
|
||||
{0x87, 0x04}, // SPECIES_MACHOP
|
||||
{0x56, 0x0b}, // SPECIES_MACHOKE
|
||||
{0x67, 0x06}, // SPECIES_MACHAMP
|
||||
{0x88, 0x01}, // SPECIES_BELLSPROUT
|
||||
{0x65, 0x0f}, // SPECIES_WEEPINBELL
|
||||
{0x66, 0x0b}, // SPECIES_VICTREEBEL
|
||||
{0x77, 0x05}, // SPECIES_TENTACOOL
|
||||
{0x46, 0x09}, // SPECIES_TENTACRUEL
|
||||
{0x87, 0x04}, // SPECIES_GEODUDE
|
||||
{0x54, 0x12}, // SPECIES_GRAVELER
|
||||
{0x87, 0x04}, // SPECIES_GOLEM
|
||||
{0x77, 0x05}, // SPECIES_PONYTA
|
||||
{0x66, 0x08}, // SPECIES_RAPIDASH
|
||||
{0x88, 0x01}, // SPECIES_SLOWPOKE
|
||||
{0x66, 0x0b}, // SPECIES_SLOWBRO
|
||||
{0x86, 0x08}, // SPECIES_MAGNEMITE
|
||||
{0x43, 0x15}, // SPECIES_MAGNETON
|
||||
{0x76, 0x08}, // SPECIES_FARFETCHD
|
||||
{0x66, 0x09}, // SPECIES_DODUO
|
||||
{0x57, 0x05}, // SPECIES_DODRIO
|
||||
{0x88, 0x00}, // SPECIES_SEEL
|
||||
{0x76, 0x0a}, // SPECIES_DEWGONG
|
||||
{0x87, 0x07}, // SPECIES_GRIMER
|
||||
{0x65, 0x0c}, // SPECIES_MUK
|
||||
{0x87, 0x04}, // SPECIES_SHELLDER
|
||||
{0x55, 0x10}, // SPECIES_CLOYSTER
|
||||
{0x87, 0x05}, // SPECIES_GASTLY
|
||||
{0x77, 0x06}, // SPECIES_HAUNTER
|
||||
{0x86, 0x08}, // SPECIES_PARASECT
|
||||
{0x66, 0x08}, // SPECIES_VENONAT
|
||||
{0x88, 0x02}, // SPECIES_VENOMOTH
|
||||
{0x54, 0x12}, // SPECIES_DIGLETT
|
||||
{0x75, 0x0d}, // SPECIES_DUGTRIO
|
||||
{0x55, 0x0c}, // SPECIES_MEOWTH
|
||||
{0x77, 0x07}, // SPECIES_PERSIAN
|
||||
{0x56, 0x09}, // SPECIES_PSYDUCK
|
||||
{0x78, 0x02}, // SPECIES_GOLDUCK
|
||||
{0x65, 0x0e}, // SPECIES_MANKEY
|
||||
{0x77, 0x07}, // SPECIES_PRIMEAPE
|
||||
{0x66, 0x0b}, // SPECIES_GROWLITHE
|
||||
{0x88, 0x02}, // SPECIES_ARCANINE
|
||||
{0x74, 0x13}, // SPECIES_POLIWAG
|
||||
{0x76, 0x0a}, // SPECIES_POLIWHIRL
|
||||
{0x76, 0x08}, // SPECIES_POLIWRATH
|
||||
{0x66, 0x0b}, // SPECIES_ABRA
|
||||
{0x77, 0x05}, // SPECIES_KADABRA
|
||||
{0x87, 0x04}, // SPECIES_ALAKAZAM
|
||||
{0x56, 0x0b}, // SPECIES_MACHOP
|
||||
{0x67, 0x06}, // SPECIES_MACHOKE
|
||||
{0x88, 0x01}, // SPECIES_MACHAMP
|
||||
{0x65, 0x0f}, // SPECIES_BELLSPROUT
|
||||
{0x66, 0x0b}, // SPECIES_WEEPINBELL
|
||||
{0x77, 0x05}, // SPECIES_VICTREEBEL
|
||||
{0x46, 0x09}, // SPECIES_TENTACOOL
|
||||
{0x87, 0x04}, // SPECIES_TENTACRUEL
|
||||
{0x54, 0x12}, // SPECIES_GEODUDE
|
||||
{0x87, 0x04}, // SPECIES_GRAVELER
|
||||
{0x77, 0x05}, // SPECIES_GOLEM
|
||||
{0x66, 0x08}, // SPECIES_PONYTA
|
||||
{0x88, 0x01}, // SPECIES_RAPIDASH
|
||||
{0x66, 0x0b}, // SPECIES_SLOWPOKE
|
||||
{0x86, 0x08}, // SPECIES_SLOWBRO
|
||||
{0x43, 0x15}, // SPECIES_MAGNEMITE
|
||||
{0x76, 0x08}, // SPECIES_MAGNETON
|
||||
{0x66, 0x09}, // SPECIES_FARFETCHD
|
||||
{0x57, 0x05}, // SPECIES_DODUO
|
||||
{0x88, 0x00}, // SPECIES_DODRIO
|
||||
{0x76, 0x0a}, // SPECIES_SEEL
|
||||
{0x87, 0x07}, // SPECIES_DEWGONG
|
||||
{0x65, 0x0c}, // SPECIES_GRIMER
|
||||
{0x87, 0x04}, // SPECIES_MUK
|
||||
{0x55, 0x10}, // SPECIES_SHELLDER
|
||||
{0x87, 0x05}, // SPECIES_CLOYSTER
|
||||
{0x77, 0x06}, // SPECIES_GASTLY
|
||||
{0x77, 0x05}, // SPECIES_HAUNTER
|
||||
{0x77, 0x05}, // SPECIES_GENGAR
|
||||
{0x77, 0x05}, // SPECIES_ONIX
|
||||
{0x78, 0x02}, // SPECIES_DROWZEE
|
||||
{0x77, 0x07}, // SPECIES_HYPNO
|
||||
{0x77, 0x04}, // SPECIES_KRABBY
|
||||
{0x65, 0x0d}, // SPECIES_KINGLER
|
||||
{0x88, 0x03}, // SPECIES_VOLTORB
|
||||
{0x44, 0x13}, // SPECIES_ELECTRODE
|
||||
{0x55, 0x0e}, // SPECIES_EXEGGCUTE
|
||||
{0x87, 0x07}, // SPECIES_EXEGGUTOR
|
||||
{0x88, 0x00}, // SPECIES_CUBONE
|
||||
{0x55, 0x0f}, // SPECIES_MAROWAK
|
||||
{0x76, 0x0b}, // SPECIES_HITMONLEE
|
||||
{0x87, 0x04}, // SPECIES_HITMONCHAN
|
||||
{0x67, 0x04}, // SPECIES_LICKITUNG
|
||||
{0x86, 0x08}, // SPECIES_KOFFING
|
||||
{0x66, 0x08}, // SPECIES_WEEZING
|
||||
{0x88, 0x02}, // SPECIES_RHYHORN
|
||||
{0x76, 0x09}, // SPECIES_RHYDON
|
||||
{0x88, 0x02}, // SPECIES_CHANSEY
|
||||
{0x76, 0x09}, // SPECIES_TANGELA
|
||||
{0x67, 0x07}, // SPECIES_KANGASKHAN
|
||||
{0x88, 0x00}, // SPECIES_HORSEA
|
||||
{0x45, 0x0f}, // SPECIES_SEADRA
|
||||
{0x67, 0x07}, // SPECIES_GOLDEEN
|
||||
{0x66, 0x0a}, // SPECIES_SEAKING
|
||||
{0x77, 0x04}, // SPECIES_STARYU
|
||||
{0x66, 0x0a}, // SPECIES_STARMIE
|
||||
{0x77, 0x06}, // SPECIES_MR_MIME
|
||||
{0x66, 0x08}, // SPECIES_SCYTHER
|
||||
{0x88, 0x00}, // SPECIES_JYNX
|
||||
{0x77, 0x04}, // SPECIES_ELECTABUZZ
|
||||
{0x78, 0x02}, // SPECIES_MAGMAR
|
||||
{0x78, 0x02}, // SPECIES_ONIX
|
||||
{0x77, 0x07}, // SPECIES_DROWZEE
|
||||
{0x77, 0x04}, // SPECIES_HYPNO
|
||||
{0x65, 0x0d}, // SPECIES_KRABBY
|
||||
{0x88, 0x03}, // SPECIES_KINGLER
|
||||
{0x44, 0x13}, // SPECIES_VOLTORB
|
||||
{0x55, 0x0e}, // SPECIES_ELECTRODE
|
||||
{0x87, 0x07}, // SPECIES_EXEGGCUTE
|
||||
{0x88, 0x00}, // SPECIES_EXEGGUTOR
|
||||
{0x55, 0x0f}, // SPECIES_CUBONE
|
||||
{0x76, 0x0b}, // SPECIES_MAROWAK
|
||||
{0x87, 0x04}, // SPECIES_HITMONLEE
|
||||
{0x67, 0x04}, // SPECIES_HITMONCHAN
|
||||
{0x86, 0x08}, // SPECIES_LICKITUNG
|
||||
{0x66, 0x08}, // SPECIES_KOFFING
|
||||
{0x88, 0x02}, // SPECIES_WEEZING
|
||||
{0x76, 0x09}, // SPECIES_RHYHORN
|
||||
{0x88, 0x02}, // SPECIES_RHYDON
|
||||
{0x76, 0x09}, // SPECIES_CHANSEY
|
||||
{0x67, 0x07}, // SPECIES_TANGELA
|
||||
{0x88, 0x00}, // SPECIES_KANGASKHAN
|
||||
{0x45, 0x0f}, // SPECIES_HORSEA
|
||||
{0x67, 0x07}, // SPECIES_SEADRA
|
||||
{0x66, 0x0a}, // SPECIES_GOLDEEN
|
||||
{0x77, 0x04}, // SPECIES_SEAKING
|
||||
{0x66, 0x0a}, // SPECIES_STARYU
|
||||
{0x77, 0x06}, // SPECIES_STARMIE
|
||||
{0x66, 0x08}, // SPECIES_MR_MIME
|
||||
{0x88, 0x00}, // SPECIES_SCYTHER
|
||||
{0x77, 0x04}, // SPECIES_JYNX
|
||||
{0x78, 0x02}, // SPECIES_ELECTABUZZ
|
||||
{0x77, 0x04}, // SPECIES_MAGMAR
|
||||
{0x77, 0x04}, // SPECIES_PINSIR
|
||||
{0x77, 0x04}, // SPECIES_TAUROS
|
||||
{0x78, 0x00}, // SPECIES_MAGIKARP
|
||||
{0x67, 0x06}, // SPECIES_GYARADOS
|
||||
{0x88, 0x08}, // SPECIES_LAPRAS
|
||||
{0x85, 0x0d}, // SPECIES_DITTO
|
||||
{0x54, 0x11}, // SPECIES_EEVEE
|
||||
{0x56, 0x09}, // SPECIES_VAPOREON
|
||||
{0x67, 0x06}, // SPECIES_JOLTEON
|
||||
{0x76, 0x09}, // SPECIES_FLAREON
|
||||
{0x66, 0x0a}, // SPECIES_PORYGON
|
||||
{0x55, 0x0d}, // SPECIES_OMANYTE
|
||||
{0x45, 0x0f}, // SPECIES_OMASTAR
|
||||
{0x67, 0x07}, // SPECIES_KABUTO
|
||||
{0x54, 0x11}, // SPECIES_KABUTOPS
|
||||
{0x88, 0x03}, // SPECIES_AERODACTYL
|
||||
{0x88, 0x01}, // SPECIES_SNORLAX
|
||||
{0x87, 0x05}, // SPECIES_ARTICUNO
|
||||
{0x88, 0x03}, // SPECIES_ZAPDOS
|
||||
{0x87, 0x04}, // SPECIES_MOLTRES
|
||||
{0x88, 0x00}, // SPECIES_DRATINI
|
||||
{0x75, 0x0e}, // SPECIES_DRAGONAIR
|
||||
{0x87, 0x06}, // SPECIES_DRAGONITE
|
||||
{0x78, 0x00}, // SPECIES_TAUROS
|
||||
{0x67, 0x06}, // SPECIES_MAGIKARP
|
||||
{0x88, 0x08}, // SPECIES_GYARADOS
|
||||
{0x85, 0x0d}, // SPECIES_LAPRAS
|
||||
{0x54, 0x11}, // SPECIES_DITTO
|
||||
{0x56, 0x09}, // SPECIES_EEVEE
|
||||
{0x67, 0x06}, // SPECIES_VAPOREON
|
||||
{0x76, 0x09}, // SPECIES_JOLTEON
|
||||
{0x66, 0x0a}, // SPECIES_FLAREON
|
||||
{0x55, 0x0d}, // SPECIES_PORYGON
|
||||
{0x45, 0x0f}, // SPECIES_OMANYTE
|
||||
{0x67, 0x07}, // SPECIES_OMASTAR
|
||||
{0x54, 0x11}, // SPECIES_KABUTO
|
||||
{0x88, 0x03}, // SPECIES_KABUTOPS
|
||||
{0x88, 0x01}, // SPECIES_AERODACTYL
|
||||
{0x87, 0x05}, // SPECIES_SNORLAX
|
||||
{0x88, 0x03}, // SPECIES_ARTICUNO
|
||||
{0x87, 0x04}, // SPECIES_ZAPDOS
|
||||
{0x88, 0x00}, // SPECIES_MOLTRES
|
||||
{0x75, 0x0e}, // SPECIES_DRATINI
|
||||
{0x87, 0x06}, // SPECIES_DRAGONAIR
|
||||
{0x88, 0x00}, // SPECIES_DRAGONITE
|
||||
{0x88, 0x00}, // SPECIES_MEWTWO
|
||||
{0x88, 0x00}, // SPECIES_MEW
|
||||
{0x55, 0x0d}, // SPECIES_CHIKORITA
|
||||
{0x75, 0x0d}, // SPECIES_BAYLEEF
|
||||
{0x77, 0x04}, // SPECIES_MEGANIUM
|
||||
{0x88, 0x00}, // SPECIES_CYNDAQUIL
|
||||
{0x55, 0x0e}, // SPECIES_QUILAVA
|
||||
{0x76, 0x08}, // SPECIES_TYPHLOSION
|
||||
{0x78, 0x00}, // SPECIES_TOTODILE
|
||||
{0x55, 0x0f}, // SPECIES_CROCONAW
|
||||
{0x67, 0x06}, // SPECIES_FERALIGATR
|
||||
{0x88, 0x00}, // SPECIES_SENTRET
|
||||
{0x47, 0x04}, // SPECIES_FURRET
|
||||
{0x67, 0x07}, // SPECIES_HOOTHOOT
|
||||
{0x55, 0x0d}, // SPECIES_NOCTOWL
|
||||
{0x58, 0x03}, // SPECIES_LEDYBA
|
||||
{0x56, 0x0c}, // SPECIES_LEDIAN
|
||||
{0x67, 0x04}, // SPECIES_SPINARAK
|
||||
{0x54, 0x13}, // SPECIES_ARIADOS
|
||||
{0x87, 0x05}, // SPECIES_CROBAT
|
||||
{0x88, 0x00}, // SPECIES_CHINCHOU
|
||||
{0x75, 0x10}, // SPECIES_LANTURN
|
||||
{0x87, 0x0b}, // SPECIES_PICHU
|
||||
{0x45, 0x0c}, // SPECIES_CLEFFA
|
||||
{0x44, 0x14}, // SPECIES_IGGLYBUFF
|
||||
{0x44, 0x12}, // SPECIES_TOGEPI
|
||||
{0x34, 0x14}, // SPECIES_TOGETIC
|
||||
{0x46, 0x09}, // SPECIES_NATU
|
||||
{0x44, 0x14}, // SPECIES_XATU
|
||||
{0x47, 0x07}, // SPECIES_MAREEP
|
||||
{0x55, 0x10}, // SPECIES_FLAAFFY
|
||||
{0x56, 0x0a}, // SPECIES_AMPHAROS
|
||||
{0x77, 0x05}, // SPECIES_BELLOSSOM
|
||||
{0x45, 0x0e}, // SPECIES_MARILL
|
||||
{0x65, 0x0e}, // SPECIES_AZUMARILL
|
||||
{0x76, 0x09}, // SPECIES_SUDOWOODO
|
||||
{0x55, 0x0d}, // SPECIES_MEW
|
||||
{0x75, 0x0d}, // SPECIES_CHIKORITA
|
||||
{0x77, 0x04}, // SPECIES_BAYLEEF
|
||||
{0x88, 0x00}, // SPECIES_MEGANIUM
|
||||
{0x55, 0x0e}, // SPECIES_CYNDAQUIL
|
||||
{0x76, 0x08}, // SPECIES_QUILAVA
|
||||
{0x78, 0x00}, // SPECIES_TYPHLOSION
|
||||
{0x55, 0x0f}, // SPECIES_TOTODILE
|
||||
{0x67, 0x06}, // SPECIES_CROCONAW
|
||||
{0x88, 0x00}, // SPECIES_FERALIGATR
|
||||
{0x47, 0x04}, // SPECIES_SENTRET
|
||||
{0x67, 0x07}, // SPECIES_FURRET
|
||||
{0x55, 0x0d}, // SPECIES_HOOTHOOT
|
||||
{0x58, 0x03}, // SPECIES_NOCTOWL
|
||||
{0x56, 0x0c}, // SPECIES_LEDYBA
|
||||
{0x67, 0x04}, // SPECIES_LEDIAN
|
||||
{0x54, 0x13}, // SPECIES_SPINARAK
|
||||
{0x87, 0x05}, // SPECIES_ARIADOS
|
||||
{0x88, 0x00}, // SPECIES_CROBAT
|
||||
{0x75, 0x10}, // SPECIES_CHINCHOU
|
||||
{0x87, 0x0b}, // SPECIES_LANTURN
|
||||
{0x45, 0x0c}, // SPECIES_PICHU
|
||||
{0x44, 0x14}, // SPECIES_CLEFFA
|
||||
{0x44, 0x12}, // SPECIES_IGGLYBUFF
|
||||
{0x34, 0x14}, // SPECIES_TOGEPI
|
||||
{0x46, 0x09}, // SPECIES_TOGETIC
|
||||
{0x44, 0x14}, // SPECIES_NATU
|
||||
{0x47, 0x07}, // SPECIES_XATU
|
||||
{0x55, 0x10}, // SPECIES_MAREEP
|
||||
{0x56, 0x0a}, // SPECIES_FLAAFFY
|
||||
{0x77, 0x05}, // SPECIES_AMPHAROS
|
||||
{0x45, 0x0e}, // SPECIES_BELLOSSOM
|
||||
{0x65, 0x0e}, // SPECIES_MARILL
|
||||
{0x76, 0x09}, // SPECIES_AZUMARILL
|
||||
{0x67, 0x06}, // SPECIES_SUDOWOODO
|
||||
{0x67, 0x06}, // SPECIES_POLITOED
|
||||
{0x67, 0x06}, // SPECIES_HOPPIP
|
||||
{0x66, 0x0a}, // SPECIES_SKIPLOOM
|
||||
{0x55, 0x0f}, // SPECIES_JUMPLUFF
|
||||
{0x77, 0x07}, // SPECIES_AIPOM
|
||||
{0x58, 0x03}, // SPECIES_SUNKERN
|
||||
{0x44, 0x10}, // SPECIES_SUNFLORA
|
||||
{0x56, 0x08}, // SPECIES_YANMA
|
||||
{0x86, 0x0a}, // SPECIES_WOOPER
|
||||
{0x54, 0x10}, // SPECIES_QUAGSIRE
|
||||
{0x77, 0x07}, // SPECIES_ESPEON
|
||||
{0x66, 0x08}, // SPECIES_UMBREON
|
||||
{0x67, 0x08}, // SPECIES_MURKROW
|
||||
{0x66, 0x0b}, // SPECIES_SLOWKING
|
||||
{0x58, 0x01}, // SPECIES_MISDREAVUS
|
||||
{0x55, 0x0c}, // SPECIES_UNOWN
|
||||
{0x35, 0x0f}, // SPECIES_WOBBUFFET
|
||||
{0x77, 0x06}, // SPECIES_GIRAFARIG
|
||||
{0x88, 0x03}, // SPECIES_PINECO
|
||||
{0x56, 0x0a}, // SPECIES_FORRETRESS
|
||||
{0x76, 0x09}, // SPECIES_DUNSPARCE
|
||||
{0x74, 0x11}, // SPECIES_GLIGAR
|
||||
{0x78, 0x03}, // SPECIES_STEELIX
|
||||
{0x88, 0x00}, // SPECIES_SNUBBULL
|
||||
{0x55, 0x0d}, // SPECIES_GRANBULL
|
||||
{0x57, 0x06}, // SPECIES_QWILFISH
|
||||
{0x56, 0x0a}, // SPECIES_SCIZOR
|
||||
{0x88, 0x00}, // SPECIES_SHUCKLE
|
||||
{0x66, 0x09}, // SPECIES_HERACROSS
|
||||
{0x88, 0x03}, // SPECIES_SNEASEL
|
||||
{0x67, 0x05}, // SPECIES_TEDDIURSA
|
||||
{0x45, 0x0d}, // SPECIES_URSARING
|
||||
{0x78, 0x01}, // SPECIES_SLUGMA
|
||||
{0x45, 0x0d}, // SPECIES_MAGCARGO
|
||||
{0x57, 0x0d}, // SPECIES_SWINUB
|
||||
{0x43, 0x14}, // SPECIES_PILOSWINE
|
||||
{0x66, 0x08}, // SPECIES_CORSOLA
|
||||
{0x65, 0x0c}, // SPECIES_REMORAID
|
||||
{0x55, 0x0e}, // SPECIES_OCTILLERY
|
||||
{0x66, 0x0a}, // SPECIES_DELIBIRD
|
||||
{0x56, 0x08}, // SPECIES_MANTINE
|
||||
{0x88, 0x01}, // SPECIES_SKARMORY
|
||||
{0x88, 0x00}, // SPECIES_HOUNDOUR
|
||||
{0x56, 0x0b}, // SPECIES_HOUNDOOM
|
||||
{0x77, 0x05}, // SPECIES_KINGDRA
|
||||
{0x78, 0x04}, // SPECIES_PHANPY
|
||||
{0x54, 0x10}, // SPECIES_DONPHAN
|
||||
{0x86, 0x08}, // SPECIES_PORYGON2
|
||||
{0x55, 0x0f}, // SPECIES_STANTLER
|
||||
{0x88, 0x00}, // SPECIES_SMEARGLE
|
||||
{0x77, 0x06}, // SPECIES_TYROGUE
|
||||
{0x46, 0x09}, // SPECIES_HITMONTOP
|
||||
{0x67, 0x05}, // SPECIES_SMOOCHUM
|
||||
{0x35, 0x0f}, // SPECIES_ELEKID
|
||||
{0x76, 0x0a}, // SPECIES_MAGBY
|
||||
{0x45, 0x0d}, // SPECIES_MILTANK
|
||||
{0x77, 0x04}, // SPECIES_BLISSEY
|
||||
{0x77, 0x06}, // SPECIES_RAIKOU
|
||||
{0x66, 0x0a}, // SPECIES_HOPPIP
|
||||
{0x55, 0x0f}, // SPECIES_SKIPLOOM
|
||||
{0x77, 0x07}, // SPECIES_JUMPLUFF
|
||||
{0x58, 0x03}, // SPECIES_AIPOM
|
||||
{0x44, 0x10}, // SPECIES_SUNKERN
|
||||
{0x56, 0x08}, // SPECIES_SUNFLORA
|
||||
{0x86, 0x0a}, // SPECIES_YANMA
|
||||
{0x54, 0x10}, // SPECIES_WOOPER
|
||||
{0x77, 0x07}, // SPECIES_QUAGSIRE
|
||||
{0x66, 0x08}, // SPECIES_ESPEON
|
||||
{0x67, 0x08}, // SPECIES_UMBREON
|
||||
{0x66, 0x0b}, // SPECIES_MURKROW
|
||||
{0x58, 0x01}, // SPECIES_SLOWKING
|
||||
{0x55, 0x0c}, // SPECIES_MISDREAVUS
|
||||
{0x35, 0x0f}, // SPECIES_UNOWN
|
||||
{0x77, 0x06}, // SPECIES_WOBBUFFET
|
||||
{0x88, 0x03}, // SPECIES_GIRAFARIG
|
||||
{0x56, 0x0a}, // SPECIES_PINECO
|
||||
{0x76, 0x09}, // SPECIES_FORRETRESS
|
||||
{0x74, 0x11}, // SPECIES_DUNSPARCE
|
||||
{0x78, 0x03}, // SPECIES_GLIGAR
|
||||
{0x88, 0x00}, // SPECIES_STEELIX
|
||||
{0x55, 0x0d}, // SPECIES_SNUBBULL
|
||||
{0x57, 0x06}, // SPECIES_GRANBULL
|
||||
{0x56, 0x0a}, // SPECIES_QWILFISH
|
||||
{0x88, 0x00}, // SPECIES_SCIZOR
|
||||
{0x66, 0x09}, // SPECIES_SHUCKLE
|
||||
{0x88, 0x03}, // SPECIES_HERACROSS
|
||||
{0x67, 0x05}, // SPECIES_SNEASEL
|
||||
{0x45, 0x0d}, // SPECIES_TEDDIURSA
|
||||
{0x78, 0x01}, // SPECIES_URSARING
|
||||
{0x45, 0x0d}, // SPECIES_SLUGMA
|
||||
{0x57, 0x0d}, // SPECIES_MAGCARGO
|
||||
{0x43, 0x14}, // SPECIES_SWINUB
|
||||
{0x66, 0x08}, // SPECIES_PILOSWINE
|
||||
{0x65, 0x0c}, // SPECIES_CORSOLA
|
||||
{0x55, 0x0e}, // SPECIES_REMORAID
|
||||
{0x66, 0x0a}, // SPECIES_OCTILLERY
|
||||
{0x56, 0x08}, // SPECIES_DELIBIRD
|
||||
{0x88, 0x01}, // SPECIES_MANTINE
|
||||
{0x88, 0x00}, // SPECIES_SKARMORY
|
||||
{0x56, 0x0b}, // SPECIES_HOUNDOUR
|
||||
{0x77, 0x05}, // SPECIES_HOUNDOOM
|
||||
{0x78, 0x04}, // SPECIES_KINGDRA
|
||||
{0x54, 0x10}, // SPECIES_PHANPY
|
||||
{0x86, 0x08}, // SPECIES_DONPHAN
|
||||
{0x55, 0x0f}, // SPECIES_PORYGON2
|
||||
{0x88, 0x00}, // SPECIES_STANTLER
|
||||
{0x77, 0x06}, // SPECIES_SMEARGLE
|
||||
{0x46, 0x09}, // SPECIES_TYROGUE
|
||||
{0x67, 0x05}, // SPECIES_HITMONTOP
|
||||
{0x35, 0x0f}, // SPECIES_SMOOCHUM
|
||||
{0x76, 0x0a}, // SPECIES_ELEKID
|
||||
{0x45, 0x0d}, // SPECIES_MAGBY
|
||||
{0x77, 0x04}, // SPECIES_MILTANK
|
||||
{0x77, 0x06}, // SPECIES_BLISSEY
|
||||
{0x88, 0x00}, // SPECIES_RAIKOU
|
||||
{0x88, 0x00}, // SPECIES_ENTEI
|
||||
{0x88, 0x00}, // SPECIES_SUICUNE
|
||||
{0x88, 0x00}, // SPECIES_LARVITAR
|
||||
{0x46, 0x09}, // SPECIES_PUPITAR
|
||||
{0x56, 0x09}, // SPECIES_TYRANITAR
|
||||
{0x46, 0x09}, // SPECIES_LARVITAR
|
||||
{0x56, 0x09}, // SPECIES_PUPITAR
|
||||
{0x88, 0x00}, // SPECIES_TYRANITAR
|
||||
{0x88, 0x00}, // SPECIES_LUGIA
|
||||
{0x88, 0x00}, // SPECIES_HO_OH
|
||||
{0x88, 0x00}, // SPECIES_CELEBI
|
||||
{0x55, 0x0e}, // SPECIES_OLD_UNOWN_B
|
||||
{0x55, 0x0e}, // SPECIES_CELEBI
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_B
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_C
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_D
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_E
|
||||
@@ -276,168 +277,167 @@ const struct MonCoords gMonFrontPicCoords[] =
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_X
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_Y
|
||||
{0x87, 0x04}, // SPECIES_OLD_UNOWN_Z
|
||||
{0x87, 0x04}, // SPECIES_TREECKO
|
||||
{0x66, 0x08}, // SPECIES_GROVYLE
|
||||
{0x87, 0x04}, // SPECIES_SCEPTILE
|
||||
{0x88, 0x00}, // SPECIES_TORCHIC
|
||||
{0x56, 0x08}, // SPECIES_COMBUSKEN
|
||||
{0x88, 0x01}, // SPECIES_BLAZIKEN
|
||||
{0x88, 0x00}, // SPECIES_MUDKIP
|
||||
{0x56, 0x0c}, // SPECIES_MARSHTOMP
|
||||
{0x67, 0x06}, // SPECIES_SWAMPERT
|
||||
{0x88, 0x00}, // SPECIES_POOCHYENA
|
||||
{0x55, 0x0c}, // SPECIES_MIGHTYENA
|
||||
{0x87, 0x04}, // SPECIES_ZIGZAGOON
|
||||
{0x85, 0x0f}, // SPECIES_LINOONE
|
||||
{0x78, 0x03}, // SPECIES_WURMPLE
|
||||
{0x45, 0x0e}, // SPECIES_SILCOON
|
||||
{0x75, 0x11}, // SPECIES_BEAUTIFLY
|
||||
{0x86, 0x09}, // SPECIES_CASCOON
|
||||
{0x74, 0x10}, // SPECIES_DUSTOX
|
||||
{0x86, 0x0f}, // SPECIES_LOTAD
|
||||
{0x65, 0x0e}, // SPECIES_LOMBRE
|
||||
{0x66, 0x09}, // SPECIES_LUDICOLO
|
||||
{0x88, 0x00}, // SPECIES_SEEDOT
|
||||
{0x46, 0x10}, // SPECIES_NUZLEAF
|
||||
{0x56, 0x08}, // SPECIES_SHIFTRY
|
||||
{0x88, 0x02}, // SPECIES_NINCADA
|
||||
{0x74, 0x12}, // SPECIES_NINJASK
|
||||
{0x86, 0x0a}, // SPECIES_SHEDINJA
|
||||
{0x66, 0x0a}, // SPECIES_TAILLOW
|
||||
{0x64, 0x10}, // SPECIES_SWELLOW
|
||||
{0x87, 0x06}, // SPECIES_SHROOMISH
|
||||
{0x54, 0x10}, // SPECIES_BRELOOM
|
||||
{0x77, 0x04}, // SPECIES_SPINDA
|
||||
{0x68, 0x08}, // SPECIES_WINGULL
|
||||
{0x84, 0x18}, // SPECIES_PELIPPER
|
||||
{0x77, 0x04}, // SPECIES_SURSKIT
|
||||
{0x65, 0x0f}, // SPECIES_MASQUERAIN
|
||||
{0x88, 0x01}, // SPECIES_WAILMER
|
||||
{0x75, 0x0f}, // SPECIES_WAILORD
|
||||
{0x87, 0x0a}, // SPECIES_SKITTY
|
||||
{0x66, 0x0b}, // SPECIES_DELCATTY
|
||||
{0x66, 0x08}, // SPECIES_KECLEON
|
||||
{0x67, 0x07}, // SPECIES_BALTOY
|
||||
{0x55, 0x10}, // SPECIES_CLAYDOL
|
||||
{0x78, 0x06}, // SPECIES_NOSEPASS
|
||||
{0x56, 0x0c}, // SPECIES_TORKOAL
|
||||
{0x88, 0x02}, // SPECIES_SABLEYE
|
||||
{0x66, 0x09}, // SPECIES_BARBOACH
|
||||
{0x46, 0x0b}, // SPECIES_WHISCASH
|
||||
{0x76, 0x09}, // SPECIES_LUVDISC
|
||||
{0x46, 0x18}, // SPECIES_CORPHISH
|
||||
{0x66, 0x0c}, // SPECIES_CRAWDAUNT
|
||||
{0x88, 0x01}, // SPECIES_FEEBAS
|
||||
{0x46, 0x0d}, // SPECIES_MILOTIC
|
||||
{0x88, 0x00}, // SPECIES_CARVANHA
|
||||
{0x67, 0x06}, // SPECIES_SHARPEDO
|
||||
{0x78, 0x03}, // SPECIES_TRAPINCH
|
||||
{0x54, 0x10}, // SPECIES_VIBRAVA
|
||||
{0x86, 0x0c}, // SPECIES_FLYGON
|
||||
{0x88, 0x01}, // SPECIES_MAKUHITA
|
||||
{0x65, 0x0c}, // SPECIES_HARIYAMA
|
||||
{0x88, 0x01}, // SPECIES_ELECTRIKE
|
||||
{0x64, 0x12}, // SPECIES_MANECTRIC
|
||||
{0x67, 0x04}, // SPECIES_NUMEL
|
||||
{0x65, 0x0f}, // SPECIES_CAMERUPT
|
||||
{0x87, 0x09}, // SPECIES_SPHEAL
|
||||
{0x65, 0x10}, // SPECIES_SEALEO
|
||||
{0x86, 0x0a}, // SPECIES_WALREIN
|
||||
{0x88, 0x01}, // SPECIES_CACNEA
|
||||
{0x74, 0x10}, // SPECIES_CACTURNE
|
||||
{0x88, 0x00}, // SPECIES_SNORUNT
|
||||
{0x56, 0x0b}, // SPECIES_GLALIE
|
||||
{0x76, 0x0a}, // SPECIES_LUNATONE
|
||||
{0x66, 0x09}, // SPECIES_SOLROCK
|
||||
{0x88, 0x01}, // SPECIES_AZURILL
|
||||
{0x55, 0x0f}, // SPECIES_SPOINK
|
||||
{0x46, 0x09}, // SPECIES_GRUMPIG
|
||||
{0x77, 0x05}, // SPECIES_PLUSLE
|
||||
{0x56, 0x0e}, // SPECIES_MINUN
|
||||
{0x66, 0x0c}, // SPECIES_MAWILE
|
||||
{0x76, 0x08}, // SPECIES_MEDITITE
|
||||
{0x65, 0x0c}, // SPECIES_MEDICHAM
|
||||
{0x68, 0x01}, // SPECIES_SWABLU
|
||||
{0x76, 0x11}, // SPECIES_ALTARIA
|
||||
{0x88, 0x02}, // SPECIES_WYNAUT
|
||||
{0x55, 0x0c}, // SPECIES_DUSKULL
|
||||
{0x66, 0x0a}, // SPECIES_DUSCLOPS
|
||||
{0x77, 0x05}, // SPECIES_ROSELIA
|
||||
{0x76, 0x08}, // SPECIES_SLAKOTH
|
||||
{0x74, 0x12}, // SPECIES_VIGOROTH
|
||||
{0x78, 0x00}, // SPECIES_SLAKING
|
||||
{0x86, 0x08}, // SPECIES_GULPIN
|
||||
{0x55, 0x12}, // SPECIES_SWALOT
|
||||
{0x66, 0x08}, // SPECIES_TROPIUS
|
||||
{0x88, 0x00}, // SPECIES_WHISMUR
|
||||
{0x55, 0x0e}, // SPECIES_LOUDRED
|
||||
{0x78, 0x03}, // SPECIES_EXPLOUD
|
||||
{0x88, 0x01}, // SPECIES_CLAMPERL
|
||||
{0x55, 0x0e}, // SPECIES_HUNTAIL
|
||||
{0x78, 0x03}, // SPECIES_GOREBYSS
|
||||
{0x86, 0x0b}, // SPECIES_ABSOL
|
||||
{0x68, 0x00}, // SPECIES_SHUPPET
|
||||
{0x56, 0x0e}, // SPECIES_BANETTE
|
||||
{0x55, 0x0c}, // SPECIES_SEVIPER
|
||||
{0x77, 0x08}, // SPECIES_ZANGOOSE
|
||||
{0x87, 0x05}, // SPECIES_RELICANTH
|
||||
{0x77, 0x0b}, // SPECIES_ARON
|
||||
{0x43, 0x14}, // SPECIES_LAIRON
|
||||
{0x75, 0x0d}, // SPECIES_AGGRON
|
||||
{0x88, 0x00}, // SPECIES_CASTFORM
|
||||
{0x34, 0x11}, // SPECIES_VOLBEAT
|
||||
{0x66, 0x08}, // SPECIES_ILLUMISE
|
||||
{0x56, 0x08}, // SPECIES_LILEEP
|
||||
{0x67, 0x07}, // SPECIES_CRADILY
|
||||
{0x78, 0x00}, // SPECIES_ANORITH
|
||||
{0x66, 0x08}, // SPECIES_ARMALDO
|
||||
{0x88, 0x00}, // SPECIES_RALTS
|
||||
{0x35, 0x0f}, // SPECIES_KIRLIA
|
||||
{0x47, 0x06}, // SPECIES_GARDEVOIR
|
||||
{0x78, 0x01}, // SPECIES_BAGON
|
||||
{0x56, 0x0b}, // SPECIES_SHELGON
|
||||
{0x66, 0x09}, // SPECIES_SALAMENCE
|
||||
{0x87, 0x04}, // SPECIES_BELDUM
|
||||
{0x55, 0x0f}, // SPECIES_METANG
|
||||
{0x87, 0x07}, // SPECIES_METAGROSS
|
||||
{0x87, 0x06}, // SPECIES_REGIROCK
|
||||
{0x78, 0x04}, // SPECIES_REGICE
|
||||
{0x88, 0x02}, // SPECIES_REGISTEEL
|
||||
{0x88, 0x03}, // SPECIES_KYOGRE
|
||||
{0x87, 0x04}, // SPECIES_GROUDON
|
||||
{0x88, 0x01}, // SPECIES_RAYQUAZA
|
||||
{0x88, 0x00}, // SPECIES_LATIAS
|
||||
{0x88, 0x01}, // SPECIES_LATIOS
|
||||
{0x88, 0x02}, // SPECIES_JIRACHI
|
||||
{0x66, 0x0d}, // SPECIES_DEOXYS
|
||||
{0x88, 0x01}, // SPECIES_CHIMECHO
|
||||
{0x37, 0x06}, // SPECIES_EGG
|
||||
{0x33, 0x14}, // SPECIES_UNOWN_B
|
||||
{0x34, 0x10}, // SPECIES_UNOWN_C
|
||||
{0x66, 0x08}, // SPECIES_TREECKO
|
||||
{0x87, 0x04}, // SPECIES_GROVYLE
|
||||
{0x88, 0x00}, // SPECIES_SCEPTILE
|
||||
{0x56, 0x08}, // SPECIES_TORCHIC
|
||||
{0x88, 0x01}, // SPECIES_COMBUSKEN
|
||||
{0x88, 0x00}, // SPECIES_BLAZIKEN
|
||||
{0x56, 0x0c}, // SPECIES_MUDKIP
|
||||
{0x67, 0x06}, // SPECIES_MARSHTOMP
|
||||
{0x88, 0x00}, // SPECIES_SWAMPERT
|
||||
{0x55, 0x0c}, // SPECIES_POOCHYENA
|
||||
{0x87, 0x04}, // SPECIES_MIGHTYENA
|
||||
{0x85, 0x0f}, // SPECIES_ZIGZAGOON
|
||||
{0x78, 0x03}, // SPECIES_LINOONE
|
||||
{0x45, 0x0e}, // SPECIES_WURMPLE
|
||||
{0x75, 0x11}, // SPECIES_SILCOON
|
||||
{0x86, 0x09}, // SPECIES_BEAUTIFLY
|
||||
{0x74, 0x10}, // SPECIES_CASCOON
|
||||
{0x86, 0x0f}, // SPECIES_DUSTOX
|
||||
{0x65, 0x0e}, // SPECIES_LOTAD
|
||||
{0x66, 0x09}, // SPECIES_LOMBRE
|
||||
{0x88, 0x00}, // SPECIES_LUDICOLO
|
||||
{0x46, 0x10}, // SPECIES_SEEDOT
|
||||
{0x56, 0x08}, // SPECIES_NUZLEAF
|
||||
{0x88, 0x02}, // SPECIES_SHIFTRY
|
||||
{0x74, 0x12}, // SPECIES_NINCADA
|
||||
{0x86, 0x0a}, // SPECIES_NINJASK
|
||||
{0x66, 0x0a}, // SPECIES_SHEDINJA
|
||||
{0x64, 0x10}, // SPECIES_TAILLOW
|
||||
{0x87, 0x06}, // SPECIES_SWELLOW
|
||||
{0x54, 0x10}, // SPECIES_SHROOMISH
|
||||
{0x77, 0x04}, // SPECIES_BRELOOM
|
||||
{0x68, 0x08}, // SPECIES_SPINDA
|
||||
{0x84, 0x18}, // SPECIES_WINGULL
|
||||
{0x77, 0x04}, // SPECIES_PELIPPER
|
||||
{0x65, 0x0f}, // SPECIES_SURSKIT
|
||||
{0x88, 0x01}, // SPECIES_MASQUERAIN
|
||||
{0x75, 0x0f}, // SPECIES_WAILMER
|
||||
{0x87, 0x0a}, // SPECIES_WAILORD
|
||||
{0x66, 0x0b}, // SPECIES_SKITTY
|
||||
{0x66, 0x08}, // SPECIES_DELCATTY
|
||||
{0x67, 0x07}, // SPECIES_KECLEON
|
||||
{0x55, 0x10}, // SPECIES_BALTOY
|
||||
{0x78, 0x06}, // SPECIES_CLAYDOL
|
||||
{0x56, 0x0c}, // SPECIES_NOSEPASS
|
||||
{0x88, 0x02}, // SPECIES_TORKOAL
|
||||
{0x66, 0x09}, // SPECIES_SABLEYE
|
||||
{0x46, 0x0b}, // SPECIES_BARBOACH
|
||||
{0x76, 0x09}, // SPECIES_WHISCASH
|
||||
{0x46, 0x18}, // SPECIES_LUVDISC
|
||||
{0x66, 0x0c}, // SPECIES_CORPHISH
|
||||
{0x88, 0x01}, // SPECIES_CRAWDAUNT
|
||||
{0x46, 0x0d}, // SPECIES_FEEBAS
|
||||
{0x88, 0x00}, // SPECIES_MILOTIC
|
||||
{0x67, 0x06}, // SPECIES_CARVANHA
|
||||
{0x78, 0x03}, // SPECIES_SHARPEDO
|
||||
{0x54, 0x10}, // SPECIES_TRAPINCH
|
||||
{0x86, 0x0c}, // SPECIES_VIBRAVA
|
||||
{0x88, 0x01}, // SPECIES_FLYGON
|
||||
{0x65, 0x0c}, // SPECIES_MAKUHITA
|
||||
{0x88, 0x01}, // SPECIES_HARIYAMA
|
||||
{0x64, 0x12}, // SPECIES_ELECTRIKE
|
||||
{0x67, 0x04}, // SPECIES_MANECTRIC
|
||||
{0x65, 0x0f}, // SPECIES_NUMEL
|
||||
{0x87, 0x09}, // SPECIES_CAMERUPT
|
||||
{0x65, 0x10}, // SPECIES_SPHEAL
|
||||
{0x86, 0x0a}, // SPECIES_SEALEO
|
||||
{0x88, 0x01}, // SPECIES_WALREIN
|
||||
{0x74, 0x10}, // SPECIES_CACNEA
|
||||
{0x88, 0x00}, // SPECIES_CACTURNE
|
||||
{0x56, 0x0b}, // SPECIES_SNORUNT
|
||||
{0x76, 0x0a}, // SPECIES_GLALIE
|
||||
{0x66, 0x09}, // SPECIES_LUNATONE
|
||||
{0x88, 0x01}, // SPECIES_SOLROCK
|
||||
{0x55, 0x0f}, // SPECIES_AZURILL
|
||||
{0x46, 0x09}, // SPECIES_SPOINK
|
||||
{0x77, 0x05}, // SPECIES_GRUMPIG
|
||||
{0x56, 0x0e}, // SPECIES_PLUSLE
|
||||
{0x66, 0x0c}, // SPECIES_MINUN
|
||||
{0x76, 0x08}, // SPECIES_MAWILE
|
||||
{0x65, 0x0c}, // SPECIES_MEDITITE
|
||||
{0x68, 0x01}, // SPECIES_MEDICHAM
|
||||
{0x76, 0x11}, // SPECIES_SWABLU
|
||||
{0x88, 0x02}, // SPECIES_ALTARIA
|
||||
{0x55, 0x0c}, // SPECIES_WYNAUT
|
||||
{0x66, 0x0a}, // SPECIES_DUSKULL
|
||||
{0x77, 0x05}, // SPECIES_DUSCLOPS
|
||||
{0x76, 0x08}, // SPECIES_ROSELIA
|
||||
{0x74, 0x12}, // SPECIES_SLAKOTH
|
||||
{0x78, 0x00}, // SPECIES_VIGOROTH
|
||||
{0x86, 0x08}, // SPECIES_SLAKING
|
||||
{0x55, 0x12}, // SPECIES_GULPIN
|
||||
{0x66, 0x08}, // SPECIES_SWALOT
|
||||
{0x88, 0x00}, // SPECIES_TROPIUS
|
||||
{0x55, 0x0e}, // SPECIES_WHISMUR
|
||||
{0x78, 0x03}, // SPECIES_LOUDRED
|
||||
{0x88, 0x01}, // SPECIES_EXPLOUD
|
||||
{0x55, 0x0e}, // SPECIES_CLAMPERL
|
||||
{0x78, 0x03}, // SPECIES_HUNTAIL
|
||||
{0x86, 0x0b}, // SPECIES_GOREBYSS
|
||||
{0x68, 0x00}, // SPECIES_ABSOL
|
||||
{0x56, 0x0e}, // SPECIES_SHUPPET
|
||||
{0x55, 0x0c}, // SPECIES_BANETTE
|
||||
{0x77, 0x08}, // SPECIES_SEVIPER
|
||||
{0x87, 0x05}, // SPECIES_ZANGOOSE
|
||||
{0x77, 0x0b}, // SPECIES_RELICANTH
|
||||
{0x43, 0x14}, // SPECIES_ARON
|
||||
{0x75, 0x0d}, // SPECIES_LAIRON
|
||||
{0x88, 0x00}, // SPECIES_AGGRON
|
||||
{0x34, 0x11}, // SPECIES_CASTFORM
|
||||
{0x66, 0x08}, // SPECIES_VOLBEAT
|
||||
{0x56, 0x08}, // SPECIES_ILLUMISE
|
||||
{0x67, 0x07}, // SPECIES_LILEEP
|
||||
{0x78, 0x00}, // SPECIES_CRADILY
|
||||
{0x66, 0x08}, // SPECIES_ANORITH
|
||||
{0x88, 0x00}, // SPECIES_ARMALDO
|
||||
{0x35, 0x0f}, // SPECIES_RALTS
|
||||
{0x47, 0x06}, // SPECIES_KIRLIA
|
||||
{0x78, 0x01}, // SPECIES_GARDEVOIR
|
||||
{0x56, 0x0b}, // SPECIES_BAGON
|
||||
{0x66, 0x09}, // SPECIES_SHELGON
|
||||
{0x87, 0x04}, // SPECIES_SALAMENCE
|
||||
{0x55, 0x0f}, // SPECIES_BELDUM
|
||||
{0x87, 0x07}, // SPECIES_METANG
|
||||
{0x87, 0x06}, // SPECIES_METAGROSS
|
||||
{0x78, 0x04}, // SPECIES_REGIROCK
|
||||
{0x88, 0x02}, // SPECIES_REGICE
|
||||
{0x88, 0x03}, // SPECIES_REGISTEEL
|
||||
{0x87, 0x04}, // SPECIES_KYOGRE
|
||||
{0x88, 0x01}, // SPECIES_GROUDON
|
||||
{0x88, 0x00}, // SPECIES_RAYQUAZA
|
||||
{0x88, 0x01}, // SPECIES_LATIAS
|
||||
{0x88, 0x02}, // SPECIES_LATIOS
|
||||
{0x66, 0x0d}, // SPECIES_JIRACHI
|
||||
{0x88, 0x01}, // SPECIES_DEOXYS
|
||||
{0x37, 0x06}, // SPECIES_CHIMECHO
|
||||
{0x33, 0x14}, // SPECIES_EGG
|
||||
{0x34, 0x10}, // SPECIES_UNOWN_B
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_C
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_D
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_E
|
||||
{0x44, 0x11}, // SPECIES_UNOWN_E
|
||||
{0x44, 0x11}, // SPECIES_UNOWN_F
|
||||
{0x44, 0x11}, // SPECIES_UNOWN_G
|
||||
{0x35, 0x0e}, // SPECIES_UNOWN_H
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_I
|
||||
{0x34, 0x10}, // SPECIES_UNOWN_J
|
||||
{0x34, 0x11}, // SPECIES_UNOWN_K
|
||||
{0x44, 0x11}, // SPECIES_UNOWN_L
|
||||
{0x34, 0x13}, // SPECIES_UNOWN_M
|
||||
{0x44, 0x13}, // SPECIES_UNOWN_N
|
||||
{0x43, 0x14}, // SPECIES_UNOWN_O
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_P
|
||||
{0x34, 0x13}, // SPECIES_UNOWN_Q
|
||||
{0x43, 0x15}, // SPECIES_UNOWN_R
|
||||
{0x34, 0x13}, // SPECIES_UNOWN_S
|
||||
{0x45, 0x0c}, // SPECIES_UNOWN_T
|
||||
{0x34, 0x12}, // SPECIES_UNOWN_U
|
||||
{0x35, 0x0e}, // SPECIES_UNOWN_G
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_H
|
||||
{0x34, 0x10}, // SPECIES_UNOWN_I
|
||||
{0x34, 0x11}, // SPECIES_UNOWN_J
|
||||
{0x44, 0x11}, // SPECIES_UNOWN_K
|
||||
{0x34, 0x13}, // SPECIES_UNOWN_L
|
||||
{0x44, 0x13}, // SPECIES_UNOWN_M
|
||||
{0x43, 0x14}, // SPECIES_UNOWN_N
|
||||
{0x44, 0x10}, // SPECIES_UNOWN_O
|
||||
{0x34, 0x13}, // SPECIES_UNOWN_P
|
||||
{0x43, 0x15}, // SPECIES_UNOWN_Q
|
||||
{0x34, 0x13}, // SPECIES_UNOWN_R
|
||||
{0x45, 0x0c}, // SPECIES_UNOWN_S
|
||||
{0x34, 0x12}, // SPECIES_UNOWN_T
|
||||
{0x44, 0x12}, // SPECIES_UNOWN_U
|
||||
{0x44, 0x12}, // SPECIES_UNOWN_V
|
||||
{0x44, 0x12}, // SPECIES_UNOWN_W
|
||||
{0x44, 0x13}, // SPECIES_UNOWN_X
|
||||
{0x33, 0x15}, // SPECIES_UNOWN_Y
|
||||
{0x34, 0x11}, // SPECIES_UNOWN_Z
|
||||
{0x34, 0x10}, // SPECIES_UNOWN_EMARK
|
||||
{0x35, 0x0f}, // SPECIES_UNOWN_QMARK
|
||||
{0x35, 0x0d},
|
||||
{0x44, 0x13}, // SPECIES_UNOWN_W
|
||||
{0x33, 0x15}, // SPECIES_UNOWN_X
|
||||
{0x34, 0x11}, // SPECIES_UNOWN_Y
|
||||
{0x34, 0x10}, // SPECIES_UNOWN_Z
|
||||
{0x35, 0x0f}, // SPECIES_UNOWN_EMARK
|
||||
{0x35, 0x0d}, // SPECIES_UNOWN_QMARK
|
||||
};
|
||||
|
||||
+2
-1
@@ -1,13 +1,14 @@
|
||||
#include "global.h"
|
||||
#include "dewford_trend.h"
|
||||
#include "easy_chat.h"
|
||||
#include "constants/easy_chat.h"
|
||||
#include "event_data.h"
|
||||
#include "link.h"
|
||||
#include "malloc.h"
|
||||
#include "random.h"
|
||||
#include "text.h"
|
||||
#include "tv.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/easy_chat.h"
|
||||
|
||||
// static functions
|
||||
static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c);
|
||||
|
||||
+263
-6
@@ -1,13 +1,21 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void sub_8113064(struct Sprite *);
|
||||
extern void sub_8113224(struct Sprite *);
|
||||
extern void sub_81131B4(struct Sprite *);
|
||||
extern void sub_8113224(struct Sprite *);
|
||||
extern void sub_8113250(struct Sprite *);
|
||||
extern void sub_81135EC(struct Sprite *);
|
||||
extern u16 gUnknown_0203A100[];
|
||||
|
||||
void sub_8113064(struct Sprite *);
|
||||
void sub_81131B4(struct Sprite *);
|
||||
void sub_8113224(struct Sprite *);
|
||||
void sub_8113250(struct Sprite *);
|
||||
void sub_81135EC(struct Sprite *);
|
||||
static void sub_81132E0(struct Sprite *);
|
||||
static void sub_81134B8(u8);
|
||||
static void sub_8113574(struct Task *);
|
||||
static void sub_811369C(struct Sprite *);
|
||||
|
||||
const union AnimCmd gUnknown_08596E60[] =
|
||||
{
|
||||
@@ -178,3 +186,252 @@ const struct SpriteTemplate gUnknown_08596FB0 =
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_81135EC,
|
||||
};
|
||||
|
||||
void sub_8113064(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[4];
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sprite->invisible = 1;
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
sprite->callback = sub_80A66DC;
|
||||
}
|
||||
|
||||
static void sub_8113100(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A6838(sprite);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[1];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[2] -= gBattleAnimArgs[2];
|
||||
sprite->data[4] += gBattleAnimArgs[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[2] += gBattleAnimArgs[2];
|
||||
sprite->data[4] += gBattleAnimArgs[3];
|
||||
StartSpriteAnim(sprite, 1);
|
||||
}
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
}
|
||||
|
||||
void sub_81131B4(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
}
|
||||
|
||||
sub_80A6864(sprite, gBattleAnimArgs[1]);
|
||||
sprite->pos1.y += gBattleAnimArgs[2];
|
||||
sprite->callback = sub_80A67D8;
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
}
|
||||
|
||||
void sub_8113224(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
|
||||
sub_8113100(sprite);
|
||||
}
|
||||
|
||||
void sub_8113250(struct Sprite *sprite)
|
||||
{
|
||||
u16 r5;
|
||||
u16 r0;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = 1;
|
||||
sprite->data[6] = gBattleAnimArgs[0];
|
||||
r5 = sub_80A861C(gBattlerAttacker, 0);
|
||||
r0 = sub_80A861C(gBattlerAttacker, 1);
|
||||
if (r5 > r0)
|
||||
sprite->data[7] = r5 / 2;
|
||||
else
|
||||
sprite->data[7] = r0 / 2;
|
||||
sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
|
||||
sprite->callback = sub_81132E0;
|
||||
}
|
||||
|
||||
static void sub_81132E0(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
|
||||
sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
|
||||
if (++sprite->data[4] > 5)
|
||||
{
|
||||
sprite->data[4] = 0;
|
||||
if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
|
||||
sprite->data[5] = 16;
|
||||
}
|
||||
if (++sprite->data[3] > 0x3C)
|
||||
{
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
|
||||
if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
|
||||
sprite->data[7] = 0x96;
|
||||
sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
|
||||
if (++sprite->data[4] > 5)
|
||||
{
|
||||
sprite->data[4] = 0;
|
||||
if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
|
||||
sprite->data[5] = 16;
|
||||
}
|
||||
if (++sprite->data[3] > 20)
|
||||
DestroyAnimSprite(sprite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81133E8(u8 taskId)
|
||||
{
|
||||
struct ScanlineEffectParams sp;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
u16 i;
|
||||
u8 r1;
|
||||
if (sub_80A8364(gBattleAnimAttacker) == 1)
|
||||
{
|
||||
sp.dmaDest = ®_BG1HOFS;
|
||||
task->data[2] = gBattle_BG1_X;
|
||||
}
|
||||
else
|
||||
{
|
||||
sp.dmaDest = ®_BG2HOFS;
|
||||
task->data[2] = gBattle_BG2_X;
|
||||
}
|
||||
|
||||
sp.dmaControl = 0xA2600001;
|
||||
sp.initState = 1;
|
||||
sp.unused9 = 0;
|
||||
r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[3] = r1 - 32;
|
||||
task->data[4] = r1 + 32;
|
||||
if (task->data[3] < 0)
|
||||
task->data[3] = 0;
|
||||
|
||||
for (i = task->data[3]; i <= task->data[4]; i++)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][i] = task->data[2];
|
||||
gScanlineEffectRegBuffers[1][i] = task->data[2];
|
||||
}
|
||||
|
||||
ScanlineEffect_SetParams(sp);
|
||||
task->func = sub_81134B8;
|
||||
}
|
||||
|
||||
static void sub_81134B8(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (++task->data[7] > 1)
|
||||
{
|
||||
task->data[7] = 0;
|
||||
if (++task->data[6] == 3)
|
||||
task->data[0]++;
|
||||
}
|
||||
sub_8113574(task);
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 0x3C)
|
||||
task->data[0]++;
|
||||
sub_8113574(task);
|
||||
break;
|
||||
case 2:
|
||||
if (++task->data[7] > 1)
|
||||
{
|
||||
task->data[7] = 0;
|
||||
if (--task->data[6] == 0)
|
||||
task->data[0]++;
|
||||
}
|
||||
sub_8113574(task);
|
||||
break;
|
||||
case 3:
|
||||
gScanlineEffect.state = 3;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 4:
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8113574(struct Task *task)
|
||||
{
|
||||
u16 r3 = task->data[5];
|
||||
u16 i;
|
||||
for (i = task->data[3]; i <= task->data[4]; i++)
|
||||
{
|
||||
gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2];
|
||||
r3 = (r3 + 8) & 0xFF;
|
||||
}
|
||||
|
||||
task->data[5] = (task->data[5] + 9) & 0xFF;
|
||||
}
|
||||
|
||||
void sub_81135EC(struct Sprite *sprite)
|
||||
{
|
||||
int r6 = (gBattleAnimArgs[2] * 3) / 5;
|
||||
int i;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
|
||||
sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
|
||||
sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
|
||||
sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
|
||||
sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_811369C;
|
||||
for (i = 0; i < 7; i++)
|
||||
gUnknown_0203A100[i] = sprite->data[i];
|
||||
}
|
||||
|
||||
static void sub_811369C(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->data[5] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[4] / 10;
|
||||
sprite->pos2.y = sprite->data[5] / 10;
|
||||
if (++sprite->data[0] > sprite->data[3])
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ extern void sub_80FED28(struct Sprite *);
|
||||
extern void sub_80FEE78(struct Sprite *);
|
||||
extern void sub_80FEF44(struct Sprite *);
|
||||
extern void sub_80FEFFC(struct Sprite *);
|
||||
extern void sub_80FF268(struct Sprite *);
|
||||
extern void AnimMoveTwisterParticle(struct Sprite *);
|
||||
extern void sub_80FF0F4(struct Sprite *);
|
||||
extern void sub_80FF374(struct Sprite *);
|
||||
extern void sub_80FF698(struct Sprite *);
|
||||
@@ -437,7 +437,7 @@ const struct SpriteTemplate gUnknown_085923A8 =
|
||||
.anims = gUnknown_08592388,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80FF268,
|
||||
.callback = AnimMoveTwisterParticle,
|
||||
};
|
||||
|
||||
const union AnimCmd gUnknown_085923C0[] =
|
||||
|
||||
+131
-181
@@ -32,6 +32,8 @@
|
||||
|
||||
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
|
||||
|
||||
extern struct CompressedSpritePalette gMonPaletteTable[]; // GF made a mistake and did not extern it as const.
|
||||
|
||||
EWRAM_DATA s32 gFieldEffectArguments[8] = {0};
|
||||
|
||||
// Static type declarations
|
||||
@@ -755,67 +757,15 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)
|
||||
return CreateSprite(&gNewGameBirchObjectTemplate, x, y, subpriority);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag);
|
||||
s32 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag);
|
||||
PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[species].tag) + 0x10);
|
||||
if (spriteId == 0xFFFF)
|
||||
return MAX_SPRITES;
|
||||
|
||||
return spriteId;
|
||||
else
|
||||
return spriteId;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
asm_unified("push {r4,r5,lr}\n\
|
||||
sub sp, 0x10\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
movs r3, 0x80\n\
|
||||
lsls r3, 8\n\
|
||||
lsls r1, 16\n\
|
||||
asrs r1, 16\n\
|
||||
str r1, [sp]\n\
|
||||
lsls r2, 16\n\
|
||||
asrs r2, 16\n\
|
||||
str r2, [sp, 0x4]\n\
|
||||
movs r1, 0\n\
|
||||
str r1, [sp, 0x8]\n\
|
||||
ldr r1, =gMonPaletteTable\n\
|
||||
lsls r4, r0, 3\n\
|
||||
adds r4, r1\n\
|
||||
ldrh r1, [r4, 0x4]\n\
|
||||
str r1, [sp, 0xC]\n\
|
||||
movs r1, 0\n\
|
||||
adds r2, r3, 0\n\
|
||||
movs r3, 0x1\n\
|
||||
bl CreateMonPicSprite_HandleDeoxys\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
ldrh r0, [r4, 0x4]\n\
|
||||
bl IndexOfSpritePaletteTag\n\
|
||||
adds r0, 0x10\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
bl PreservePaletteInWeather\n\
|
||||
ldr r0, =0x0000ffff\n\
|
||||
cmp r5, r0\n\
|
||||
beq _080B5FDC\n\
|
||||
lsls r0, r5, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
b _080B5FDE\n\
|
||||
.pool\n\
|
||||
_080B5FDC:\n\
|
||||
movs r0, 0x40\n\
|
||||
_080B5FDE:\n\
|
||||
add sp, 0x10\n\
|
||||
pop {r4,r5}\n\
|
||||
pop {r1}\n\
|
||||
bx r1");
|
||||
}
|
||||
#endif //NONMATCHING
|
||||
|
||||
u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
@@ -824,8 +774,8 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio
|
||||
PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10);
|
||||
if (spriteId == 0xFFFF)
|
||||
return 0x40;
|
||||
|
||||
return spriteId;
|
||||
else
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId)
|
||||
@@ -3123,134 +3073,134 @@ NAKED
|
||||
u8 sub_80B8F98(void)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
ldr r0, =gFieldEffectObjectTemplatePointers\n\
|
||||
adds r0, 0x90\n\
|
||||
ldr r0, [r0]\n\
|
||||
movs r2, 0x18\n\
|
||||
negs r2, r2\n\
|
||||
movs r1, 0x78\n\
|
||||
movs r3, 0x1\n\
|
||||
bl CreateSprite\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
mov r8, r0\n\
|
||||
lsls r1, r0, 4\n\
|
||||
add r1, r8\n\
|
||||
lsls r1, 2\n\
|
||||
ldr r0, =gSprites\n\
|
||||
adds r1, r0\n\
|
||||
ldrb r2, [r1, 0x5]\n\
|
||||
movs r0, 0xD\n\
|
||||
negs r0, r0\n\
|
||||
ands r0, r2\n\
|
||||
movs r2, 0x4\n\
|
||||
orrs r0, r2\n\
|
||||
movs r2, 0xF\n\
|
||||
ands r0, r2\n\
|
||||
movs r2, 0x40\n\
|
||||
orrs r0, r2\n\
|
||||
strb r0, [r1, 0x5]\n\
|
||||
movs r2, 0\n\
|
||||
strh r2, [r1, 0x2E]\n\
|
||||
strh r2, [r1, 0x30]\n\
|
||||
strh r2, [r1, 0x32]\n\
|
||||
ldr r0, =0x0000ffff\n\
|
||||
strh r0, [r1, 0x34]\n\
|
||||
ldrh r0, [r1, 0x22]\n\
|
||||
strh r0, [r1, 0x36]\n\
|
||||
strh r2, [r1, 0x38]\n\
|
||||
ldr r1, =0x00003e41\n\
|
||||
movs r0, 0x50\n\
|
||||
bl SetGpuReg\n\
|
||||
ldr r1, =0x00000e0e\n\
|
||||
movs r0, 0x52\n\
|
||||
bl SetGpuReg\n\
|
||||
ldr r1, =0x00003f3f\n\
|
||||
movs r0, 0x48\n\
|
||||
bl SetGpuReg\n\
|
||||
ldr r0, =gUnknown_0855B610\n\
|
||||
movs r1, 0xC0\n\
|
||||
movs r2, 0x20\n\
|
||||
bl LoadPalette\n\
|
||||
movs r0, 0x12\n\
|
||||
movs r1, 0x78\n\
|
||||
bl SetGpuReg\n\
|
||||
movs r4, 0x3\n\
|
||||
ldr r7, =0x0600f800\n\
|
||||
ldr r0, =0x0000bff4\n\
|
||||
adds r6, r0, 0\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
ldr r0, =gFieldEffectObjectTemplatePointers\n\
|
||||
adds r0, 0x90\n\
|
||||
ldr r0, [r0]\n\
|
||||
movs r2, 0x18\n\
|
||||
negs r2, r2\n\
|
||||
movs r1, 0x78\n\
|
||||
movs r3, 0x1\n\
|
||||
bl CreateSprite\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
mov r8, r0\n\
|
||||
lsls r1, r0, 4\n\
|
||||
add r1, r8\n\
|
||||
lsls r1, 2\n\
|
||||
ldr r0, =gSprites\n\
|
||||
adds r1, r0\n\
|
||||
ldrb r2, [r1, 0x5]\n\
|
||||
movs r0, 0xD\n\
|
||||
negs r0, r0\n\
|
||||
ands r0, r2\n\
|
||||
movs r2, 0x4\n\
|
||||
orrs r0, r2\n\
|
||||
movs r2, 0xF\n\
|
||||
ands r0, r2\n\
|
||||
movs r2, 0x40\n\
|
||||
orrs r0, r2\n\
|
||||
strb r0, [r1, 0x5]\n\
|
||||
movs r2, 0\n\
|
||||
strh r2, [r1, 0x2E]\n\
|
||||
strh r2, [r1, 0x30]\n\
|
||||
strh r2, [r1, 0x32]\n\
|
||||
ldr r0, =0x0000ffff\n\
|
||||
strh r0, [r1, 0x34]\n\
|
||||
ldrh r0, [r1, 0x22]\n\
|
||||
strh r0, [r1, 0x36]\n\
|
||||
strh r2, [r1, 0x38]\n\
|
||||
ldr r1, =0x00003e41\n\
|
||||
movs r0, 0x50\n\
|
||||
bl SetGpuReg\n\
|
||||
ldr r1, =0x00000e0e\n\
|
||||
movs r0, 0x52\n\
|
||||
bl SetGpuReg\n\
|
||||
ldr r1, =0x00003f3f\n\
|
||||
movs r0, 0x48\n\
|
||||
bl SetGpuReg\n\
|
||||
ldr r0, =gUnknown_0855B610\n\
|
||||
movs r1, 0xC0\n\
|
||||
movs r2, 0x20\n\
|
||||
bl LoadPalette\n\
|
||||
movs r0, 0x12\n\
|
||||
movs r1, 0x78\n\
|
||||
bl SetGpuReg\n\
|
||||
movs r4, 0x3\n\
|
||||
ldr r7, =0x0600f800\n\
|
||||
ldr r0, =0x0000bff4\n\
|
||||
adds r6, r0, 0\n\
|
||||
_080B901A:\n\
|
||||
movs r2, 0xC\n\
|
||||
lsls r0, r4, 1\n\
|
||||
lsls r5, r4, 5\n\
|
||||
adds r0, r4\n\
|
||||
lsls r3, r0, 1\n\
|
||||
movs r2, 0xC\n\
|
||||
lsls r0, r4, 1\n\
|
||||
lsls r5, r4, 5\n\
|
||||
adds r0, r4\n\
|
||||
lsls r3, r0, 1\n\
|
||||
_080B9024:\n\
|
||||
adds r0, r5, r2\n\
|
||||
lsls r0, 1\n\
|
||||
adds r0, r7\n\
|
||||
adds r1, r2, r6\n\
|
||||
adds r1, r3, r1\n\
|
||||
adds r1, 0x1\n\
|
||||
strh r1, [r0]\n\
|
||||
adds r0, r2, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r2, r0, 24\n\
|
||||
cmp r2, 0x11\n\
|
||||
bls _080B9024\n\
|
||||
adds r0, r4, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
cmp r4, 0xE\n\
|
||||
bls _080B901A\n\
|
||||
movs r0, 0\n\
|
||||
ldr r5, =gUnknown_0855B630\n\
|
||||
adds r0, r5, r2\n\
|
||||
lsls r0, 1\n\
|
||||
adds r0, r7\n\
|
||||
adds r1, r2, r6\n\
|
||||
adds r1, r3, r1\n\
|
||||
adds r1, 0x1\n\
|
||||
strh r1, [r0]\n\
|
||||
adds r0, r2, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r2, r0, 24\n\
|
||||
cmp r2, 0x11\n\
|
||||
bls _080B9024\n\
|
||||
adds r0, r4, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
cmp r4, 0xE\n\
|
||||
bls _080B901A\n\
|
||||
movs r0, 0\n\
|
||||
ldr r5, =gUnknown_0855B630\n\
|
||||
_080B904A:\n\
|
||||
movs r4, 0\n\
|
||||
adds r7, r0, 0x1\n\
|
||||
lsls r6, r0, 5\n\
|
||||
movs r4, 0\n\
|
||||
adds r7, r0, 0x1\n\
|
||||
lsls r6, r0, 5\n\
|
||||
_080B9050:\n\
|
||||
lsls r1, r4, 2\n\
|
||||
adds r1, r6, r1\n\
|
||||
ldr r0, =0x06008020\n\
|
||||
adds r3, r1, r0\n\
|
||||
adds r0, r1, 0x1\n\
|
||||
adds r0, r5\n\
|
||||
ldrb r2, [r0]\n\
|
||||
lsls r2, 8\n\
|
||||
adds r0, r1, r5\n\
|
||||
ldrb r0, [r0]\n\
|
||||
adds r0, r2\n\
|
||||
strh r0, [r3]\n\
|
||||
ldr r0, =0x06008022\n\
|
||||
adds r3, r1, r0\n\
|
||||
adds r0, r1, 0x3\n\
|
||||
adds r0, r5\n\
|
||||
ldrb r2, [r0]\n\
|
||||
lsls r2, 8\n\
|
||||
adds r1, 0x2\n\
|
||||
adds r1, r5\n\
|
||||
ldrb r0, [r1]\n\
|
||||
adds r0, r2\n\
|
||||
strh r0, [r3]\n\
|
||||
adds r0, r4, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
cmp r4, 0x7\n\
|
||||
bls _080B9050\n\
|
||||
lsls r0, r7, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r0, 0x59\n\
|
||||
bls _080B904A\n\
|
||||
mov r0, r8\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r1}\n\
|
||||
bx r1\n\
|
||||
.pool");
|
||||
lsls r1, r4, 2\n\
|
||||
adds r1, r6, r1\n\
|
||||
ldr r0, =0x06008020\n\
|
||||
adds r3, r1, r0\n\
|
||||
adds r0, r1, 0x1\n\
|
||||
adds r0, r5\n\
|
||||
ldrb r2, [r0]\n\
|
||||
lsls r2, 8\n\
|
||||
adds r0, r1, r5\n\
|
||||
ldrb r0, [r0]\n\
|
||||
adds r0, r2\n\
|
||||
strh r0, [r3]\n\
|
||||
ldr r0, =0x06008022\n\
|
||||
adds r3, r1, r0\n\
|
||||
adds r0, r1, 0x3\n\
|
||||
adds r0, r5\n\
|
||||
ldrb r2, [r0]\n\
|
||||
lsls r2, 8\n\
|
||||
adds r1, 0x2\n\
|
||||
adds r1, r5\n\
|
||||
ldrb r0, [r1]\n\
|
||||
adds r0, r2\n\
|
||||
strh r0, [r3]\n\
|
||||
adds r0, r4, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
cmp r4, 0x7\n\
|
||||
bls _080B9050\n\
|
||||
lsls r0, r7, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r0, 0x59\n\
|
||||
bls _080B904A\n\
|
||||
mov r0, r8\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r1}\n\
|
||||
bx r1\n\
|
||||
.pool");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
|
||||
+108
-189
@@ -142,7 +142,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
reflectionSprite->pos2.x = mainSprite->pos2.x;
|
||||
reflectionSprite->pos2.y = -mainSprite->pos2.y;
|
||||
reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
|
||||
|
||||
|
||||
if (eventObject->unk3_3 == TRUE)
|
||||
reflectionSprite->invisible = TRUE;
|
||||
|
||||
@@ -1022,19 +1022,19 @@ static void SynchroniseSurfAnim(struct EventObject *eventObject, struct Sprite *
|
||||
StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[eventObject->movementDirection]);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_81556E8(struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
u8 i;
|
||||
s16 x = eventObject->currentCoords.x;
|
||||
s16 y = eventObject->currentCoords.y;
|
||||
s32 spriteY = sprite->pos2.y;
|
||||
|
||||
x = eventObject->currentCoords.x;
|
||||
y = eventObject->currentCoords.y;
|
||||
if (sprite->pos2.y == 0 && (x != sprite->data[6] || y != sprite->data[7]))
|
||||
if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7]))
|
||||
{
|
||||
sprite->data[5] = sprite->pos2.y;
|
||||
for (sprite->data[6] = x, sprite->data[7] = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data[6], y = sprite->data[7])
|
||||
sprite->data[5] = spriteY;
|
||||
sprite->data[6] = x;
|
||||
sprite->data[7] = y;
|
||||
for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7])
|
||||
{
|
||||
MoveCoords(i, &x, &y);
|
||||
if (MapGridGetZCoordAt(x, y) == 3)
|
||||
@@ -1045,87 +1045,6 @@ void sub_81556E8(struct EventObject *eventObject, struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED void sub_81556E8(struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
sub sp, 0x4\n\
|
||||
adds r4, r1, 0\n\
|
||||
ldrh r2, [r0, 0x10]\n\
|
||||
mov r1, sp\n\
|
||||
strh r2, [r1]\n\
|
||||
ldrh r1, [r0, 0x12]\n\
|
||||
mov r0, sp\n\
|
||||
adds r0, 0x2\n\
|
||||
strh r1, [r0]\n\
|
||||
movs r2, 0x26\n\
|
||||
ldrsh r3, [r4, r2]\n\
|
||||
mov r8, r0\n\
|
||||
cmp r3, 0\n\
|
||||
bne _08155770\n\
|
||||
mov r0, sp\n\
|
||||
movs r5, 0\n\
|
||||
ldrsh r2, [r0, r5]\n\
|
||||
movs r5, 0x3A\n\
|
||||
ldrsh r0, [r4, r5]\n\
|
||||
cmp r2, r0\n\
|
||||
bne _08155724\n\
|
||||
lsls r0, r1, 16\n\
|
||||
asrs r0, 16\n\
|
||||
movs r5, 0x3C\n\
|
||||
ldrsh r1, [r4, r5]\n\
|
||||
cmp r0, r1\n\
|
||||
beq _08155770\n\
|
||||
_08155724:\n\
|
||||
strh r3, [r4, 0x38]\n\
|
||||
strh r2, [r4, 0x3A]\n\
|
||||
mov r1, r8\n\
|
||||
movs r2, 0\n\
|
||||
ldrsh r0, [r1, r2]\n\
|
||||
strh r0, [r4, 0x3C]\n\
|
||||
movs r5, 0x1\n\
|
||||
mov r7, r8\n\
|
||||
mov r6, sp\n\
|
||||
_08155736:\n\
|
||||
adds r0, r5, 0\n\
|
||||
mov r1, sp\n\
|
||||
adds r2, r7, 0\n\
|
||||
bl MoveCoords\n\
|
||||
movs r1, 0\n\
|
||||
ldrsh r0, [r6, r1]\n\
|
||||
movs r2, 0\n\
|
||||
ldrsh r1, [r7, r2]\n\
|
||||
bl MapGridGetZCoordAt\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r0, 0x3\n\
|
||||
bne _0815575C\n\
|
||||
ldrh r0, [r4, 0x38]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r4, 0x38]\n\
|
||||
b _08155770\n\
|
||||
_0815575C:\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r5, r0, 24\n\
|
||||
ldrh r0, [r4, 0x3A]\n\
|
||||
strh r0, [r6]\n\
|
||||
ldrh r0, [r4, 0x3C]\n\
|
||||
mov r1, r8\n\
|
||||
strh r0, [r1]\n\
|
||||
cmp r5, 0x4\n\
|
||||
bls _08155736\n\
|
||||
_08155770:\n\
|
||||
add sp, 0x4\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0");
|
||||
}
|
||||
#endif
|
||||
|
||||
static void CreateBobbingEffect(struct EventObject *eventObject, struct Sprite *linkedSprite, struct Sprite *sprite)
|
||||
{
|
||||
@@ -1450,7 +1369,7 @@ void sub_8155EA0(struct Sprite *sprite)
|
||||
bool8 sub_8155EA8(struct Sprite *sprite)
|
||||
{
|
||||
bool8 returnBool = FALSE;
|
||||
|
||||
|
||||
switch (sprite->data[7])
|
||||
{
|
||||
case 0:
|
||||
@@ -1470,7 +1389,7 @@ bool8 sub_8155EA8(struct Sprite *sprite)
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
|
||||
if (++sprite->data[6] == 72)
|
||||
{
|
||||
@@ -1483,14 +1402,14 @@ bool8 sub_8155EA8(struct Sprite *sprite)
|
||||
sprite->pos2.x = 0;
|
||||
returnBool = TRUE;
|
||||
}
|
||||
|
||||
|
||||
return returnBool;
|
||||
}
|
||||
|
||||
void sub_8155F80(struct Sprite *sprite)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
|
||||
switch (sprite->data[2])
|
||||
{
|
||||
case 0:
|
||||
@@ -1594,7 +1513,7 @@ void sub_8155F80(struct Sprite *sprite)
|
||||
FieldEffectStop(sprite, FLDEFF_64);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (sprite->data[2] == 1)
|
||||
{
|
||||
if ((sprite->data[1] & 7) == 0)
|
||||
@@ -1603,7 +1522,7 @@ void sub_8155F80(struct Sprite *sprite)
|
||||
sprite->data[3] = -sprite->data[3];
|
||||
sprite->data[1]++;
|
||||
}
|
||||
|
||||
|
||||
sprite->data[0]++;
|
||||
}
|
||||
|
||||
@@ -1676,102 +1595,102 @@ static void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
|
||||
NAKED void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
adds r6, r0, 0\n\
|
||||
adds r0, r1, 0\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
lsls r2, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
adds r1, r6, 0\n\
|
||||
bl SetObjectSubpriorityByZCoord\n\
|
||||
movs r7, 0\n\
|
||||
adds r6, r0, 0\n\
|
||||
adds r0, r1, 0\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
lsls r2, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
adds r1, r6, 0\n\
|
||||
bl SetObjectSubpriorityByZCoord\n\
|
||||
movs r7, 0\n\
|
||||
_08156212:\n\
|
||||
lsls r0, r7, 3\n\
|
||||
adds r0, r7\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =gEventObjects\n\
|
||||
adds r4, r0, r1\n\
|
||||
ldrb r0, [r4]\n\
|
||||
lsls r0, 31\n\
|
||||
cmp r0, 0\n\
|
||||
beq _081562B4\n\
|
||||
ldrb r0, [r4, 0x5]\n\
|
||||
bl GetEventObjectGraphicsInfo\n\
|
||||
ldrb r1, [r4, 0x4]\n\
|
||||
lsls r0, r1, 4\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =gSprites\n\
|
||||
adds r5, r0, r1\n\
|
||||
adds r0, r6, 0\n\
|
||||
adds r0, 0x28\n\
|
||||
movs r2, 0\n\
|
||||
ldrsb r2, [r0, r2]\n\
|
||||
ldrh r0, [r6, 0x20]\n\
|
||||
adds r1, r0, r2\n\
|
||||
subs r0, r2\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r4, r0, 16\n\
|
||||
lsls r1, 16\n\
|
||||
asrs r1, 16\n\
|
||||
movs r0, 0x20\n\
|
||||
ldrsh r2, [r5, r0]\n\
|
||||
cmp r1, r2\n\
|
||||
bge _081562B4\n\
|
||||
lsls r0, r4, 16\n\
|
||||
asrs r0, 16\n\
|
||||
cmp r0, r2\n\
|
||||
ble _081562B4\n\
|
||||
adds r0, r5, 0\n\
|
||||
adds r0, 0x29\n\
|
||||
movs r3, 0\n\
|
||||
ldrsb r3, [r0, r3]\n\
|
||||
ldrh r2, [r5, 0x22]\n\
|
||||
adds r2, r3\n\
|
||||
ldrh r4, [r5, 0x22]\n\
|
||||
adds r0, r6, 0\n\
|
||||
adds r0, 0x29\n\
|
||||
movs r1, 0\n\
|
||||
ldrsb r1, [r0, r1]\n\
|
||||
ldrh r0, [r6, 0x22]\n\
|
||||
subs r0, r1\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
adds r3, r0, r3\n\
|
||||
lsls r2, 16\n\
|
||||
asrs r2, 16\n\
|
||||
lsls r3, 16\n\
|
||||
asrs r3, 16\n\
|
||||
cmp r2, r3\n\
|
||||
blt _0815628C\n\
|
||||
cmp r2, r0\n\
|
||||
bge _081562B4\n\
|
||||
lsls r0, r7, 3\n\
|
||||
adds r0, r7\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =gEventObjects\n\
|
||||
adds r4, r0, r1\n\
|
||||
ldrb r0, [r4]\n\
|
||||
lsls r0, 31\n\
|
||||
cmp r0, 0\n\
|
||||
beq _081562B4\n\
|
||||
ldrb r0, [r4, 0x5]\n\
|
||||
bl GetEventObjectGraphicsInfo\n\
|
||||
ldrb r1, [r4, 0x4]\n\
|
||||
lsls r0, r1, 4\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =gSprites\n\
|
||||
adds r5, r0, r1\n\
|
||||
adds r0, r6, 0\n\
|
||||
adds r0, 0x28\n\
|
||||
movs r2, 0\n\
|
||||
ldrsb r2, [r0, r2]\n\
|
||||
ldrh r0, [r6, 0x20]\n\
|
||||
adds r1, r0, r2\n\
|
||||
subs r0, r2\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r4, r0, 16\n\
|
||||
lsls r1, 16\n\
|
||||
asrs r1, 16\n\
|
||||
movs r0, 0x20\n\
|
||||
ldrsh r2, [r5, r0]\n\
|
||||
cmp r1, r2\n\
|
||||
bge _081562B4\n\
|
||||
lsls r0, r4, 16\n\
|
||||
asrs r0, 16\n\
|
||||
cmp r0, r2\n\
|
||||
ble _081562B4\n\
|
||||
adds r0, r5, 0\n\
|
||||
adds r0, 0x29\n\
|
||||
movs r3, 0\n\
|
||||
ldrsb r3, [r0, r3]\n\
|
||||
ldrh r2, [r5, 0x22]\n\
|
||||
adds r2, r3\n\
|
||||
ldrh r4, [r5, 0x22]\n\
|
||||
adds r0, r6, 0\n\
|
||||
adds r0, 0x29\n\
|
||||
movs r1, 0\n\
|
||||
ldrsb r1, [r0, r1]\n\
|
||||
ldrh r0, [r6, 0x22]\n\
|
||||
subs r0, r1\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
adds r3, r0, r3\n\
|
||||
lsls r2, 16\n\
|
||||
asrs r2, 16\n\
|
||||
lsls r3, 16\n\
|
||||
asrs r3, 16\n\
|
||||
cmp r2, r3\n\
|
||||
blt _0815628C\n\
|
||||
cmp r2, r0\n\
|
||||
bge _081562B4\n\
|
||||
_0815628C:\n\
|
||||
lsls r0, r4, 16\n\
|
||||
asrs r0, 16\n\
|
||||
cmp r0, r3\n\
|
||||
ble _081562B4\n\
|
||||
adds r2, r6, 0\n\
|
||||
adds r2, 0x43\n\
|
||||
adds r0, r5, 0\n\
|
||||
adds r0, 0x43\n\
|
||||
ldrb r1, [r0]\n\
|
||||
ldrb r0, [r2]\n\
|
||||
cmp r0, r1\n\
|
||||
bhi _081562B4\n\
|
||||
adds r0, r1, 0x2\n\
|
||||
strb r0, [r2]\n\
|
||||
b _081562BE\n\
|
||||
.pool\n\
|
||||
lsls r0, r4, 16\n\
|
||||
asrs r0, 16\n\
|
||||
cmp r0, r3\n\
|
||||
ble _081562B4\n\
|
||||
adds r2, r6, 0\n\
|
||||
adds r2, 0x43\n\
|
||||
adds r0, r5, 0\n\
|
||||
adds r0, 0x43\n\
|
||||
ldrb r1, [r0]\n\
|
||||
ldrb r0, [r2]\n\
|
||||
cmp r0, r1\n\
|
||||
bhi _081562B4\n\
|
||||
adds r0, r1, 0x2\n\
|
||||
strb r0, [r2]\n\
|
||||
b _081562BE\n\
|
||||
.pool\n\
|
||||
_081562B4:\n\
|
||||
adds r0, r7, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r7, r0, 24\n\
|
||||
cmp r7, 0xF\n\
|
||||
bls _08156212\n\
|
||||
adds r0, r7, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r7, r0, 24\n\
|
||||
cmp r7, 0xF\n\
|
||||
bls _08156212\n\
|
||||
_081562BE:\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0");
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0");
|
||||
}
|
||||
#endif
|
||||
|
||||
+659
-22
@@ -1,25 +1,42 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "random.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void unc_080B08A0(struct Sprite *);
|
||||
extern void sub_810CE68(struct Sprite *);
|
||||
extern void sub_810CEB4(struct Sprite *);
|
||||
extern void sub_810CEE0(struct Sprite *);
|
||||
extern void sub_810CF30(struct Sprite *);
|
||||
extern void sub_810D10C(struct Sprite *);
|
||||
extern void sub_810D1B4(struct Sprite *);
|
||||
extern void sub_810D278(struct Sprite *);
|
||||
extern void sub_810D2E4(struct Sprite *);
|
||||
extern void sub_810D37C(struct Sprite *);
|
||||
extern void sub_810D40C(struct Sprite *);
|
||||
extern void sub_810D4F4(struct Sprite *);
|
||||
extern void sub_810D608(struct Sprite *);
|
||||
extern void sub_810D714(struct Sprite *);
|
||||
extern void sub_810D874(struct Sprite *);
|
||||
extern void sub_810D984(struct Sprite *);
|
||||
extern void sub_810DA10(struct Sprite *);
|
||||
extern void sub_810DA7C(struct Sprite *);
|
||||
void unc_080B08A0(struct Sprite *);
|
||||
void sub_810CE68(struct Sprite *);
|
||||
void sub_810CEB4(struct Sprite *);
|
||||
void AnimBasicFistOrFoot(struct Sprite *);
|
||||
void sub_810CF30(struct Sprite *);
|
||||
void sub_810D10C(struct Sprite *);
|
||||
void sub_810D1B4(struct Sprite *);
|
||||
void AnimSpinningKickOrPunch(struct Sprite *);
|
||||
void AnimStompFoot(struct Sprite *);
|
||||
void sub_810D37C(struct Sprite *);
|
||||
void sub_810D40C(struct Sprite *);
|
||||
void sub_810D4F4(struct Sprite *);
|
||||
void sub_810D608(struct Sprite *);
|
||||
void sub_810D714(struct Sprite *);
|
||||
void sub_810D874(struct Sprite *);
|
||||
void sub_810D984(struct Sprite *);
|
||||
void sub_810DA10(struct Sprite *);
|
||||
void sub_810DA7C(struct Sprite *);
|
||||
static void sub_810D0B8(struct Sprite *);
|
||||
static void sub_810D164(struct Sprite *);
|
||||
static void sub_810D240(struct Sprite *);
|
||||
static void AnimSpinningKickOrPunchFinish(struct Sprite *);
|
||||
static void AnimStompFootStep(struct Sprite *);
|
||||
static void AnimStompFootEnd(struct Sprite *);
|
||||
static void sub_810D47C(struct Sprite *);
|
||||
static void sub_810D5DC(struct Sprite *);
|
||||
static void sub_810D6A8(struct Sprite *);
|
||||
static void sub_810D770(struct Sprite *);
|
||||
static void sub_810D830(struct Sprite *);
|
||||
|
||||
extern struct SpriteTemplate gBasicHitSplatSpriteTemplate;
|
||||
|
||||
const struct SpriteTemplate gUnknown_08595E14 =
|
||||
{
|
||||
@@ -109,7 +126,7 @@ const struct SpriteTemplate gFistFootSpriteTemplate =
|
||||
.anims = gUnknown_08595E54,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_810CEE0,
|
||||
.callback = AnimBasicFistOrFoot,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08595EB0 =
|
||||
@@ -165,7 +182,7 @@ const struct SpriteTemplate gUnknown_08595F14 =
|
||||
.anims = gUnknown_08595E54,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_08595F10,
|
||||
.callback = sub_810D278,
|
||||
.callback = AnimSpinningKickOrPunch,
|
||||
};
|
||||
|
||||
const union AffineAnimCmd gUnknown_08595F2C[] =
|
||||
@@ -188,7 +205,7 @@ const struct SpriteTemplate gMegaPunchKickSpriteTemplate =
|
||||
.anims = gUnknown_08595E54,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_08595F44,
|
||||
.callback = sub_810D278,
|
||||
.callback = AnimSpinningKickOrPunch,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08595F60 =
|
||||
@@ -199,7 +216,7 @@ const struct SpriteTemplate gUnknown_08595F60 =
|
||||
.anims = gUnknown_08595E58,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_810D2E4,
|
||||
.callback = AnimStompFoot,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08595F78 =
|
||||
@@ -396,3 +413,623 @@ const struct SpriteTemplate gUnknown_08596104 =
|
||||
.affineAnims = gUnknown_08596100,
|
||||
.callback = sub_810DA7C,
|
||||
};
|
||||
|
||||
void unc_080B08A0(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A6864(sprite, gBattleAnimArgs[0]);
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = 15;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_810CE68(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[7] == 1 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[6]);
|
||||
gBattleAnimArgs[6] = 0;
|
||||
sub_80A7938(sprite);
|
||||
}
|
||||
|
||||
void sub_810CEB4(struct Sprite *sprite)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
sub_810CE68(sprite);
|
||||
}
|
||||
|
||||
// Displays a basic fist or foot sprite for a given duration.
|
||||
// Used by many fighting moves (and elemental "punch" moves).
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: duration
|
||||
// arg 3: ? (todo: related to initial pixel offsets)
|
||||
// arg 4: anim num
|
||||
void AnimBasicFistOrFoot(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
|
||||
if (gBattleAnimArgs[3] == 0)
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
else
|
||||
sub_80A6980(sprite, TRUE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_810CF30(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
s16 xMod, yMod;
|
||||
s16 x, y;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
if (gBattleAnimArgs[2] < 0)
|
||||
gBattleAnimArgs[2] = Random2() % 5;
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
|
||||
|
||||
xMod = sub_80A861C(battler, 1) / 2;
|
||||
yMod = sub_80A861C(battler, 0) / 4;
|
||||
|
||||
x = Random2() % xMod;
|
||||
y = Random2() % yMod;
|
||||
|
||||
if (Random2() & 1)
|
||||
x *= -1;
|
||||
if (Random2() & 1)
|
||||
y *= -1;
|
||||
|
||||
if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
y += 0xFFF0;
|
||||
|
||||
sprite->pos1.x += x;
|
||||
sprite->pos1.y += y;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[1];
|
||||
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
|
||||
if (sprite->data[7] != 64)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
|
||||
gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
|
||||
}
|
||||
|
||||
sprite->callback = sub_810D0B8;
|
||||
}
|
||||
|
||||
static void sub_810D0B8(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
if (sprite->data[7] != 64)
|
||||
{
|
||||
FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[sprite->data[7]]);
|
||||
}
|
||||
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[0]--;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810D10C(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A6980(sprite, TRUE);
|
||||
sprite->data[0] = 30;
|
||||
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x - 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x + 20;
|
||||
sprite->hFlip = 1;
|
||||
}
|
||||
|
||||
sprite->data[4] = sprite->pos1.y - 20;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, sub_810D164);
|
||||
}
|
||||
|
||||
static void sub_810D164(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[5] == 11)
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
|
||||
sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
|
||||
sprite->data[0] = 8;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810D1B4(struct Sprite *sprite)
|
||||
{
|
||||
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT)
|
||||
gBattleAnimArgs[0] *= -1;
|
||||
|
||||
sub_80A6980(sprite, TRUE);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y;
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sprite->data[6] = gBattleAnimArgs[4];
|
||||
sprite->data[7] = 0;
|
||||
|
||||
sprite->callback = sub_810D240;
|
||||
}
|
||||
|
||||
static void sub_810D240(struct Sprite *sprite)
|
||||
{
|
||||
if (!TranslateAnimLinear(sprite))
|
||||
{
|
||||
sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
|
||||
sprite->data[7] += sprite->data[6];
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
// Animates the spinning, shrinking kick or punch, which then
|
||||
// reappears at full size. Used by moves such as MOVE_MEGA_PUNCH and MOVE_MEGA_KICK.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: anim num
|
||||
// arg 3: spin duration
|
||||
void AnimSpinningKickOrPunch(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A6980(sprite, TRUE);
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, AnimSpinningKickOrPunchFinish);
|
||||
}
|
||||
|
||||
static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 0);
|
||||
sprite->affineAnimPaused = 1;
|
||||
sprite->data[0] = 20;
|
||||
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Animates MOVE_STOMP's foot that slides downward.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: initial wait duration
|
||||
void AnimStompFoot(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A6980(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
|
||||
sprite->callback = AnimStompFootStep;
|
||||
}
|
||||
|
||||
static void AnimStompFootStep(struct Sprite *sprite)
|
||||
{
|
||||
if (--sprite->data[0] == -1)
|
||||
{
|
||||
sprite->data[0] = 6;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, AnimStompFootEnd);
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimStompFootEnd(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 15;
|
||||
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_810D37C(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sub_80A6980(sprite, TRUE);
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = gBattleAnimArgs[3];
|
||||
sprite->data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
|
||||
if (sprite->data[3] > 100)
|
||||
sprite->invisible = sprite->data[3] % 2;
|
||||
|
||||
if (sprite->data[3] > 120)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810D40C(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
}
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[1];
|
||||
sprite->pos1.y += gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = sub_810D47C;
|
||||
}
|
||||
|
||||
static void sub_810D47C(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (--sprite->data[1] == 0)
|
||||
{
|
||||
if (sprite->data[2] == 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
else
|
||||
sprite->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++sprite->data[1] > 1)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[3]++;
|
||||
if (sprite->data[3] & 1)
|
||||
sprite->pos2.x = 2;
|
||||
else
|
||||
sprite->pos2.x = -2;
|
||||
}
|
||||
|
||||
if (--sprite->data[2] == 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810D4F4(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
|
||||
sprite->data[0] = 0;
|
||||
|
||||
switch (gBattleAnimArgs[1])
|
||||
{
|
||||
case 0:
|
||||
sprite->data[6] = -3;
|
||||
sprite->data[7] = -3;
|
||||
break;
|
||||
case 1:
|
||||
sprite->data[6] = 3;
|
||||
sprite->data[7] = -3;
|
||||
break;
|
||||
case 2:
|
||||
sprite->data[6] = -3;
|
||||
sprite->data[7] = 3;
|
||||
break;
|
||||
case 3:
|
||||
sprite->data[6] = 3;
|
||||
sprite->data[7] = 3;
|
||||
break;
|
||||
default:
|
||||
DestroyAnimSprite(sprite);
|
||||
return;
|
||||
}
|
||||
|
||||
sprite->callback = sub_810D5DC;
|
||||
}
|
||||
|
||||
static void sub_810D5DC(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->data[6];
|
||||
sprite->pos1.y += sprite->data[7];
|
||||
|
||||
if (++sprite->data[0] > 40)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810D608(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->oam.priority = sub_80A8328(gBattleAnimAttacker);
|
||||
sprite->data[7] = gBattleAnimTarget;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
|
||||
sprite->data[7] = gBattleAnimAttacker;
|
||||
}
|
||||
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 12;
|
||||
sprite->data[2] = 8;
|
||||
sprite->callback = sub_810D6A8;
|
||||
}
|
||||
|
||||
static void sub_810D6A8(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 180)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
sprite->callback = sub_80A6F98;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810D714(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0];
|
||||
sprite->pos1.y = 120;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sub_80A8048(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
|
||||
|
||||
sprite->data[6] = gBattleAnimArgs[1];
|
||||
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
|
||||
|
||||
sprite->callback = sub_810D770;
|
||||
}
|
||||
|
||||
static void sub_810D770(struct Sprite *sprite)
|
||||
{
|
||||
void *var0;
|
||||
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
var0 = sub_80A8050(sprite->data[4], sprite->data[5]);
|
||||
var0 -= sprite->data[6];
|
||||
sub_80A8048(&sprite->data[4], &sprite->data[5], var0);
|
||||
|
||||
var0 = (void *)(((intptr_t)var0) >> 8);
|
||||
sprite->pos1.y = (intptr_t)var0;
|
||||
if (sprite->pos1.y < -8)
|
||||
DestroyAnimSprite(sprite);
|
||||
else
|
||||
sprite->data[0]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
|
||||
sprite->data[0] = pos2 - pos0;
|
||||
sprite->data[1] = pos3 - pos1;
|
||||
sprite->data[2] = sprite->pos1.x << 4;
|
||||
sprite->data[3] = sprite->pos1.y << 4;
|
||||
|
||||
sprite->callback = sub_810D830;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_810D830(struct Sprite *sprite)
|
||||
{
|
||||
u16 edgeX;
|
||||
|
||||
sprite->data[2] += sprite->data[0];
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->pos1.x = sprite->data[2] >> 4;
|
||||
sprite->pos1.y = sprite->data[3] >> 4;
|
||||
|
||||
edgeX = sprite->pos1.x + 8;
|
||||
if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810D874(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
battler = gBattleAnimTarget;
|
||||
sprite->oam.priority = sub_80A8328(gBattleAnimAttacker);
|
||||
}
|
||||
else
|
||||
{
|
||||
battler = gBattleAnimAttacker;
|
||||
sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
|
||||
}
|
||||
|
||||
if (IsContest())
|
||||
sprite->oam.matrixNum |= 0x8;
|
||||
else if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
sprite->oam.matrixNum |= 0x18;
|
||||
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = sub_80A6F98;
|
||||
}
|
||||
|
||||
static void sub_810D960(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == sprite->data[4])
|
||||
DestroyAnimSprite(sprite);
|
||||
|
||||
sprite->data[0]++;
|
||||
}
|
||||
|
||||
void sub_810D984(struct Sprite *sprite)
|
||||
{
|
||||
u8 turn;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
sprite->data[4] = gBattleAnimArgs[2];
|
||||
|
||||
turn = gAnimMoveTurn;
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
turn++;
|
||||
|
||||
if (turn & 1)
|
||||
{
|
||||
sprite->data[2] = -sprite->data[2];
|
||||
sprite->data[1]++;
|
||||
}
|
||||
|
||||
StartSpriteAnim(sprite, sprite->data[1]);
|
||||
sprite->pos2.x = sprite->data[2];
|
||||
sprite->pos2.y = sprite->data[3];
|
||||
sprite->callback = sub_810D960;
|
||||
}
|
||||
|
||||
void sub_810DA10(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitAnimSpritePos(sprite, 0);
|
||||
else
|
||||
sub_80A6980(sprite, FALSE);
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
StartSpriteAnim(sprite, 2);
|
||||
}
|
||||
else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
StartSpriteAnim(sprite, 1);
|
||||
}
|
||||
|
||||
sprite->callback = sub_80A67D8;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_810DA7C(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->affineAnimEnded)
|
||||
{
|
||||
sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[1], 2);
|
||||
if (++sprite->data[0] > 40)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810DABC(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_80A6DAC(0);
|
||||
task->data[8] = gBattleAnimArgs[0];
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (--task->data[8] == -1)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
task->data[9] += 1280;
|
||||
break;
|
||||
}
|
||||
|
||||
task->data[10] += 2816;
|
||||
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
gBattle_BG3_X += task->data[9] >> 8;
|
||||
else
|
||||
gBattle_BG3_X -= task->data[9] >> 8;
|
||||
|
||||
gBattle_BG3_Y += task->data[10] >> 8;
|
||||
task->data[9] &= 0xFF;
|
||||
task->data[10] &= 0xFF;
|
||||
|
||||
if (gBattleAnimArgs[7] == -1)
|
||||
{
|
||||
gBattle_BG3_X = 0;
|
||||
gBattle_BG3_Y = 0;
|
||||
sub_80A6DAC(1);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
+517
-517
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -1,8 +1,8 @@
|
||||
#include "global.h"
|
||||
|
||||
const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/interface/menu.4bpp.lz");
|
||||
const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/interface/menu.gbapal.lz");
|
||||
const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/interface/menu_map.bin.lz");
|
||||
const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/battle_interface/textbox.4bpp.lz");
|
||||
const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/battle_interface/textbox.gbapal.lz");
|
||||
const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/battle_interface/textbox_map.bin.lz");
|
||||
|
||||
const u32 gMonStillFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/front_pics/circled_question_mark_still_front_pic.4bpp.lz");
|
||||
const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/back_pics/circled_question_mark_back_pic.4bpp.lz");
|
||||
|
||||
+641
-14
@@ -1,14 +1,31 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "random.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void sub_8114994(struct Sprite *);
|
||||
extern void sub_8114A7C(struct Sprite *);
|
||||
extern void sub_8114AF0(struct Sprite *);
|
||||
extern void sub_8114AF0(struct Sprite *);
|
||||
extern void sub_8114B80(struct Sprite *);
|
||||
extern void sub_81151A0(struct Sprite *);
|
||||
extern void sub_8115244(struct Sprite *);
|
||||
void AnimBonemerangProjectile(struct Sprite *);
|
||||
void AnimBoneHitProjectile(struct Sprite *);
|
||||
void AnimDirtScatter(struct Sprite *);
|
||||
void AnimMudSportDirt(struct Sprite *);
|
||||
void AnimFissureDirtPlumeParticle(struct Sprite *);
|
||||
void AnimDigDirtMound(struct Sprite *);
|
||||
static void AnimBonemerangProjectileStep(struct Sprite *);
|
||||
static void AnimBonemerangProjectileEnd(struct Sprite *);
|
||||
static void AnimMudSportDirtRising(struct Sprite *);
|
||||
static void AnimMudSportDirtFalling(struct Sprite *);
|
||||
static void sub_8114CFC(u8);
|
||||
static void sub_8114EB4(u8);
|
||||
static void sub_8114F54(u8);
|
||||
static void sub_8114FD8(u8);
|
||||
static void sub_81150E0(u8, s16, s16);
|
||||
static void AnimFissureDirtPlumeParticleStep(struct Sprite *);
|
||||
static void sub_81153AC(u8);
|
||||
static void sub_81154A4(u8);
|
||||
static void sub_8115588(struct Task *);
|
||||
static void sub_81156D0(u8);
|
||||
|
||||
const union AffineAnimCmd gUnknown_08597150[] =
|
||||
{
|
||||
@@ -40,7 +57,7 @@ const struct SpriteTemplate gUnknown_08597178 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_08597170,
|
||||
.callback = sub_8114994,
|
||||
.callback = AnimBonemerangProjectile,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08597190 =
|
||||
@@ -51,7 +68,7 @@ const struct SpriteTemplate gUnknown_08597190 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_08597174,
|
||||
.callback = sub_8114A7C,
|
||||
.callback = AnimBoneHitProjectile,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_085971A8 =
|
||||
@@ -62,7 +79,7 @@ const struct SpriteTemplate gUnknown_085971A8 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8114AF0,
|
||||
.callback = AnimDirtScatter,
|
||||
};
|
||||
|
||||
const union AnimCmd gUnknown_085971C0[] =
|
||||
@@ -84,7 +101,7 @@ const struct SpriteTemplate gUnknown_085971CC =
|
||||
.anims = gUnknown_085971C8,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8114AF0,
|
||||
.callback = AnimDirtScatter,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_085971E4 =
|
||||
@@ -95,7 +112,7 @@ const struct SpriteTemplate gUnknown_085971E4 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8114B80,
|
||||
.callback = AnimMudSportDirt,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_085971FC =
|
||||
@@ -106,7 +123,7 @@ const struct SpriteTemplate gUnknown_085971FC =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_81151A0,
|
||||
.callback = AnimFissureDirtPlumeParticle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08597214 =
|
||||
@@ -117,5 +134,615 @@ const struct SpriteTemplate gUnknown_08597214 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8115244,
|
||||
.callback = AnimDigDirtMound,
|
||||
};
|
||||
|
||||
// Moves a bone projectile towards the target mon, which moves like
|
||||
// a boomerang. After hitting the target mon, it comes back to the user.
|
||||
void AnimBonemerangProjectile(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[0] = 20;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[5] = -40;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimBonemerangProjectileStep;
|
||||
}
|
||||
|
||||
static void AnimBonemerangProjectileStep(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimArc(sprite))
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->data[0] = 20;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[5] = 40;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimBonemerangProjectileEnd;
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Moves a bone projectile towards the target mon, starting right next to
|
||||
// the target mon.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: target x pixel offset
|
||||
// arg 3: target y pixel offset
|
||||
// arg 4: duration
|
||||
void AnimBoneHitProjectile(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A6980(sprite, TRUE);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Moves a small dirt projectile towards the target mon.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: duration
|
||||
// arg 3: target x pixel offset
|
||||
// arg 4: target y pixel offset
|
||||
void AnimDirtScatter(struct Sprite *sprite)
|
||||
{
|
||||
u8 targetXPos, targetYPos;
|
||||
s16 xOffset, yOffset;
|
||||
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
|
||||
targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2);
|
||||
targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3);
|
||||
|
||||
xOffset = Random2() & 0x1F;
|
||||
yOffset = Random2() & 0x1F;
|
||||
if (xOffset > 16)
|
||||
xOffset = 16 - xOffset;
|
||||
if (yOffset > 16)
|
||||
yOffset = 16 - yOffset;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = targetXPos + xOffset;
|
||||
sprite->data[4] = targetYPos + yOffset;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
}
|
||||
|
||||
// Moves a particle of dirt in the Mud Sport animation.
|
||||
// The dirt can either be rising upward, or falling down.
|
||||
// arg 0: 0 = dirt is rising into the air, 1 = dirt is falling down
|
||||
// arg 1: initial x pixel offset
|
||||
// arg 2: initial y pixel offset
|
||||
void AnimMudSportDirt(struct Sprite *sprite)
|
||||
{
|
||||
sprite->oam.tileNum++;
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
|
||||
sprite->callback = AnimMudSportDirtRising;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[1];
|
||||
sprite->pos1.y = gBattleAnimArgs[2];
|
||||
sprite->pos2.y = -gBattleAnimArgs[2];
|
||||
sprite->callback = AnimMudSportDirtFalling;
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimMudSportDirtRising(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[1] > 1)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->pos1.x += sprite->data[0];
|
||||
}
|
||||
|
||||
sprite->pos1.y -= 4;
|
||||
if (sprite->pos1.y < -4)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void AnimMudSportDirtFalling(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y += 4;
|
||||
if (sprite->pos2.y >= 0)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++sprite->data[1] > 0)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->invisible ^= 1;
|
||||
if (++sprite->data[2] == 10)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8114CBC(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
task->func = sub_8114CFC;
|
||||
else
|
||||
task->func = sub_8114EB4;
|
||||
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_8114CFC(u8 taskId)
|
||||
{
|
||||
u8 var0;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(0);
|
||||
task->data[11] = sub_80A8364(gBattleAnimAttacker);
|
||||
if (task->data[11] == 1)
|
||||
{
|
||||
task->data[12] = gBattle_BG1_X;
|
||||
task->data[13] = gBattle_BG1_Y;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[12] = gBattle_BG2_X;
|
||||
task->data[13] = gBattle_BG2_Y;
|
||||
}
|
||||
|
||||
var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[14] = var0 - 32;
|
||||
task->data[15] = var0 + 32;
|
||||
if (task->data[14] < 0)
|
||||
task->data[14] = 0;
|
||||
|
||||
gSprites[task->data[10]].invisible = 1;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
sub_81150E0(task->data[11], task->data[14], task->data[15]);
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
task->data[2] = (task->data[2] + 6) & 0x7F;
|
||||
if (++task->data[4] > 2)
|
||||
{
|
||||
task->data[4] = 0;
|
||||
task->data[3]++;
|
||||
}
|
||||
|
||||
task->data[5] = task->data[3] + (gSineTable[task->data[2]] >> 4);
|
||||
if (task->data[11] == 1)
|
||||
gBattle_BG1_Y = task->data[13] - task->data[5];
|
||||
else
|
||||
gBattle_BG2_Y = task->data[13] - task->data[5];
|
||||
|
||||
if (task->data[5] > 63)
|
||||
{
|
||||
task->data[5] = 120 - task->data[14];
|
||||
if (task->data[11] == 1)
|
||||
gBattle_BG1_Y = task->data[13] - task->data[5];
|
||||
else
|
||||
gBattle_BG2_Y = task->data[13] - task->data[5];
|
||||
|
||||
gSprites[task->data[10]].pos2.x = 272 - gSprites[task->data[10]].pos1.x;
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
gScanlineEffect.state = 3;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 4:
|
||||
DestroyAnimVisualTask(taskId);
|
||||
gSprites[task->data[10]].invisible = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8114EB4(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(0);
|
||||
gSprites[spriteId].invisible = 1;
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
|
||||
if (sub_80A8364(gBattleAnimAttacker) == 1)
|
||||
gBattle_BG1_Y = 0;
|
||||
else
|
||||
gBattle_BG2_Y = 0;
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_8114F14(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
task->func = sub_8114F54;
|
||||
else
|
||||
task->func = sub_8114FD8;
|
||||
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_8114F54(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(0);
|
||||
gSprites[task->data[10]].invisible = 0;
|
||||
gSprites[task->data[10]].pos2.x = 0;
|
||||
gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8114FD8(u8 taskId)
|
||||
{
|
||||
u8 var0;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(0);
|
||||
task->data[11] = sub_80A8364(gBattleAnimAttacker);
|
||||
if (task->data[11] == 1)
|
||||
task->data[12] = gBattle_BG1_X;
|
||||
else
|
||||
task->data[12] = gBattle_BG2_X;
|
||||
|
||||
var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[14] = var0 - 32;
|
||||
task->data[15] = var0 + 32;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
sub_81150E0(task->data[11], 0, task->data[15]);
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
gSprites[task->data[10]].pos2.y = 96;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
gSprites[task->data[10]].pos2.y -= 8;
|
||||
if (gSprites[task->data[10]].pos2.y == 0)
|
||||
{
|
||||
gScanlineEffect.state = 3;
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81150E0(u8 useBG1, s16 y, s16 endY)
|
||||
{
|
||||
s16 bgX;
|
||||
struct ScanlineEffectParams scanlineParams;
|
||||
|
||||
if (useBG1 == 1)
|
||||
{
|
||||
bgX = gBattle_BG1_X;
|
||||
scanlineParams.dmaDest = ®_BG1HOFS;
|
||||
}
|
||||
else
|
||||
{
|
||||
bgX = gBattle_BG2_X;
|
||||
scanlineParams.dmaDest = ®_BG2HOFS;
|
||||
}
|
||||
|
||||
if (y < 0)
|
||||
y = 0;
|
||||
|
||||
while (y < endY)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][y] = bgX;
|
||||
gScanlineEffectRegBuffers[1][y] = bgX;
|
||||
y++;
|
||||
}
|
||||
|
||||
while (y < 160)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][y] = bgX + 240;
|
||||
gScanlineEffectRegBuffers[1][y] = bgX + 240;
|
||||
y++;
|
||||
}
|
||||
|
||||
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
|
||||
scanlineParams.initState = 1;
|
||||
scanlineParams.unused9 = 0;
|
||||
ScanlineEffect_SetParams(scanlineParams);
|
||||
}
|
||||
|
||||
// Moves a particle of dirt in a plume of dirt. Used in Fissure and Dig.
|
||||
// arg 0: which mon (0 = attacker, 1 = target)
|
||||
// arg 1: which side of mon (0 = left, 1 = right)
|
||||
// arg 2: target x offset
|
||||
// arg 3: target y offset
|
||||
// arg 4: wave amplitude
|
||||
// arg 5: duration
|
||||
void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
|
||||
{
|
||||
s8 battler;
|
||||
s16 xOffset;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
xOffset = 24;
|
||||
if (gBattleAnimArgs[1] == 1)
|
||||
{
|
||||
xOffset *= -1;
|
||||
gBattleAnimArgs[2] *= -1;
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset;
|
||||
sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 30;
|
||||
sprite->data[0] = gBattleAnimArgs[5];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[4];
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimFissureDirtPlumeParticleStep;
|
||||
}
|
||||
|
||||
static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Displays the dirt mound seen in the move Dig for set duration.
|
||||
// The dirt mound image is too large for a single sprite, so two
|
||||
// sprites are lined up next to each other.
|
||||
// arg 0: which mon (0 = attacker, 1 = target)
|
||||
// arg 1: oam tile num (0 = left half of image, 1 = right half of image)
|
||||
// arg 2: duration
|
||||
void AnimDigDirtMound(struct Sprite *sprite)
|
||||
{
|
||||
s8 battler;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
|
||||
sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 32;
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
}
|
||||
|
||||
void sub_81152DC(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[1])
|
||||
task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3;
|
||||
else
|
||||
task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3;
|
||||
|
||||
task->data[3] = gBattleAnimArgs[2];
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case 5:
|
||||
task->data[13] = gBattle_BG3_X;
|
||||
task->func = sub_81153AC;
|
||||
break;
|
||||
case 4:
|
||||
task->data[13] = 0;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (IsBattlerSpriteVisible(i))
|
||||
{
|
||||
task->data[task->data[13] + 9] = gBattlerSpriteIds[i];
|
||||
task->data[13]++;
|
||||
}
|
||||
}
|
||||
task->func = sub_81154A4;
|
||||
break;
|
||||
default:
|
||||
task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
if (task->data[9] == 0xFF)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[13] = 1;
|
||||
task->func = sub_81154A4;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81153AC(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (++task->data[1] > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if ((task->data[2] & 1) == 0)
|
||||
gBattle_BG3_X = task->data[13] + task->data[15];
|
||||
else
|
||||
gBattle_BG3_X = task->data[13] - task->data[15];
|
||||
|
||||
if (++task->data[2] == task->data[3])
|
||||
{
|
||||
task->data[2] = 0;
|
||||
task->data[14]--;
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if ((task->data[2] & 1) == 0)
|
||||
gBattle_BG3_X = task->data[13] + task->data[14];
|
||||
else
|
||||
gBattle_BG3_X = task->data[13] - task->data[14];
|
||||
|
||||
if (++task->data[2] == 4)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
if (--task->data[14] == 0)
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
gBattle_BG3_X = task->data[13];
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81154A4(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (++task->data[1] > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
sub_8115588(task);
|
||||
if (++task->data[2] == task->data[3])
|
||||
{
|
||||
task->data[2] = 0;
|
||||
task->data[14]--;
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
sub_8115588(task);
|
||||
if (++task->data[2] == 4)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
if (--task->data[14] == 0)
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < task->data[13]; i++)
|
||||
gSprites[task->data[9 + i]].pos2.x = 0;
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8115588(struct Task *task)
|
||||
{
|
||||
u16 i;
|
||||
u16 xOffset;
|
||||
|
||||
if ((task->data[2] & 1) == 0)
|
||||
xOffset = (task->data[14] / 2) + (task->data[14] & 1);
|
||||
else
|
||||
xOffset = -(task->data[14] / 2);
|
||||
|
||||
for (i = 0; i < task->data[13]; i++)
|
||||
{
|
||||
gSprites[task->data[9 + i]].pos2.x = xOffset;
|
||||
}
|
||||
}
|
||||
|
||||
void AnimTask_IsPowerOver99(u8 taskId)
|
||||
{
|
||||
gBattleAnimArgs[15] = gAnimMovePower > 99;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_8115628(u8 taskId)
|
||||
{
|
||||
struct Task *newTask;
|
||||
u8 battler = (gBattleAnimArgs[0] & 1) ? gBattleAnimTarget : gBattleAnimAttacker;
|
||||
|
||||
if (gBattleAnimArgs[0] > 1)
|
||||
battler ^= 2;
|
||||
|
||||
newTask = &gTasks[CreateTask(sub_81156D0, gBattleAnimArgs[1])];
|
||||
newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF;
|
||||
newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF;
|
||||
gBattle_BG3_X = newTask->data[1];
|
||||
gBattle_BG3_Y = newTask->data[2];
|
||||
newTask->data[3] = gBattleAnimArgs[2];
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
static void sub_81156D0(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[7] == task->data[3])
|
||||
{
|
||||
gBattle_BG3_X = 0;
|
||||
gBattle_BG3_Y = 0;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattle_BG3_X = task->data[1];
|
||||
gBattle_BG3_Y = task->data[2];
|
||||
}
|
||||
}
|
||||
|
||||
+30
-204
@@ -15,7 +15,6 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
|
||||
|
||||
// enums
|
||||
enum MapPopUp_Themes
|
||||
{
|
||||
@@ -33,7 +32,7 @@ static void ShowMapNamePopUpWindow(void);
|
||||
static void LoadMapNamePopUpWindowBg(void);
|
||||
|
||||
// EWRAM
|
||||
static EWRAM_DATA u8 mapNamePopupTaskId = 0;
|
||||
static EWRAM_DATA u8 sPopupTaskId = 0;
|
||||
|
||||
// .rodata
|
||||
static const u8 gMapPopUp_Table[][960] =
|
||||
@@ -202,7 +201,7 @@ bool8 sub_80D47D4(void)
|
||||
{
|
||||
HideStartMenu();
|
||||
ShowMapNamePopup();
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void ShowMapNamePopup(void)
|
||||
@@ -211,16 +210,16 @@ void ShowMapNamePopup(void)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_MapNamePopUpWindow))
|
||||
{
|
||||
mapNamePopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90);
|
||||
sPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 40);
|
||||
gTasks[mapNamePopupTaskId].data[0] = 6;
|
||||
gTasks[mapNamePopupTaskId].data[2] = 40;
|
||||
gTasks[sPopupTaskId].data[0] = 6;
|
||||
gTasks[sPopupTaskId].data[2] = 40;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gTasks[mapNamePopupTaskId].data[0] != 2)
|
||||
gTasks[mapNamePopupTaskId].data[0] = 2;
|
||||
gTasks[mapNamePopupTaskId].data[3] = 1;
|
||||
if (gTasks[sPopupTaskId].data[0] != 2)
|
||||
gTasks[sPopupTaskId].data[0] = 2;
|
||||
gTasks[sPopupTaskId].data[3] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -246,7 +245,7 @@ static void Task_MapNamePopUpWindow(u8 taskId)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
task->data[0] = 1;
|
||||
gTasks[mapNamePopupTaskId].data[1] = 0;
|
||||
gTasks[sPopupTaskId].data[1] = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
@@ -293,7 +292,7 @@ void HideMapNamePopUpWindow(void)
|
||||
sub_819746C(GetMapNamePopUpWindowId(), TRUE);
|
||||
RemoveMapNamePopUpWindow();
|
||||
SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0);
|
||||
DestroyTask(mapNamePopupTaskId);
|
||||
DestroyTask(sPopupTaskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,9 +303,9 @@ static void ShowMapNamePopUpWindow(void)
|
||||
u8 x;
|
||||
const u8* mapDisplayHeaderSource;
|
||||
|
||||
if(InBattlePyramid())
|
||||
if (InBattlePyramid())
|
||||
{
|
||||
if(gMapHeader.mapLayoutId == 0x17A)
|
||||
if (gMapHeader.mapLayoutId == 0x17A)
|
||||
{
|
||||
withoutPrefixPtr = &(mapDisplayHeader[3]);
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7];
|
||||
@@ -333,220 +332,47 @@ static void ShowMapNamePopUpWindow(void)
|
||||
CopyWindowToVram(GetMapNamePopUpWindowId(), 3);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static void sub_80D4A78(u8 bg, u8 x, u8 y, u8 deltaX, u8 deltaY, u8 unused)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for(i=0; i<=11; i++)
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
FillBgTilemapBufferRect(bg, 0x21D + i, x + i - 1, y - 1, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x21D + i, i - 1 + x, y - 1, 1, 1, 0xE);
|
||||
}
|
||||
FillBgTilemapBufferRect(bg, 0x229 + i, x - 1, y, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22A + i, deltaX + x, y, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22B + i, x - 1, y + 1 , 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22C + i, deltaX + x, y + 1, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22D + i, x - 1, y + 2, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22E + i, deltaX + x, y + 2, 1, 1, 0xE);
|
||||
for(i=0; i<=11; i++)
|
||||
FillBgTilemapBufferRect(bg, 0x229, x - 1, y, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22A, deltaX + x, y, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22B, x - 1, y + 1 , 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22C, deltaX + x, y + 1, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22D, x - 1, y + 2, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22E, deltaX + x, y + 2, 1, 1, 0xE);
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
FillBgTilemapBufferRect(bg, 0x22F + i, x + i - 1, y + deltaY, 1, 1, 0xE);
|
||||
FillBgTilemapBufferRect(bg, 0x22F + i, i - 1 + x, y + deltaY, 1, 1, 0xE);
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static void sub_80D4A78(u8 bg, u8 x, u8 y, u8 deltaX, u8 deltaY, u8 unused)
|
||||
{
|
||||
asm("\n\
|
||||
.syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, 0x1C\n\
|
||||
ldr r4, [sp, 0x3C]\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r7, r0, 24\n\
|
||||
lsls r1, 24\n\
|
||||
lsrs r1, 24\n\
|
||||
mov r10, r1\n\
|
||||
lsls r2, 24\n\
|
||||
lsls r3, 24\n\
|
||||
lsrs r3, 24\n\
|
||||
str r3, [sp, 0x10]\n\
|
||||
lsls r4, 24\n\
|
||||
lsrs r4, 24\n\
|
||||
str r4, [sp, 0x14]\n\
|
||||
movs r5, 0\n\
|
||||
lsls r0, r1, 24\n\
|
||||
asrs r1, r0, 24\n\
|
||||
lsrs r3, r2, 24\n\
|
||||
str r3, [sp, 0xC]\n\
|
||||
movs r6, 0xFF\n\
|
||||
lsls r6, 24\n\
|
||||
adds r6, r2\n\
|
||||
mov r8, r6\n\
|
||||
str r0, [sp, 0x18]\n\
|
||||
subs r4, r1, 0x1\n\
|
||||
_080D4AB4:\n\
|
||||
ldr r0, =0x0000021d\n\
|
||||
adds r1, r5, r0\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
lsls r2, r4, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
movs r3, 0x1\n\
|
||||
str r3, [sp]\n\
|
||||
str r3, [sp, 0x4]\n\
|
||||
movs r6, 0xE\n\
|
||||
mov r9, r6\n\
|
||||
str r6, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
mov r6, r8\n\
|
||||
lsrs r3, r6, 24\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
adds r4, 0x1\n\
|
||||
adds r5, 0x1\n\
|
||||
cmp r5, 0xB\n\
|
||||
ble _080D4AB4\n\
|
||||
ldr r1, =0x00000229\n\
|
||||
movs r0, 0x1\n\
|
||||
negs r0, r0\n\
|
||||
add r0, r10\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
mov r8, r0\n\
|
||||
movs r5, 0x1\n\
|
||||
str r5, [sp]\n\
|
||||
str r5, [sp, 0x4]\n\
|
||||
mov r2, r9\n\
|
||||
str r2, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
mov r2, r8\n\
|
||||
ldr r3, [sp, 0xC]\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
ldr r1, =0x0000022a\n\
|
||||
ldr r6, [sp, 0x10]\n\
|
||||
add r6, r10\n\
|
||||
lsls r6, 24\n\
|
||||
lsrs r6, 24\n\
|
||||
str r5, [sp]\n\
|
||||
str r5, [sp, 0x4]\n\
|
||||
mov r3, r9\n\
|
||||
str r3, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
adds r2, r6, 0\n\
|
||||
ldr r3, [sp, 0xC]\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
ldr r1, =0x0000022b\n\
|
||||
ldr r4, [sp, 0xC]\n\
|
||||
adds r4, 0x1\n\
|
||||
lsls r4, 24\n\
|
||||
lsrs r4, 24\n\
|
||||
str r5, [sp]\n\
|
||||
str r5, [sp, 0x4]\n\
|
||||
mov r0, r9\n\
|
||||
str r0, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
mov r2, r8\n\
|
||||
adds r3, r4, 0\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
movs r1, 0x8B\n\
|
||||
lsls r1, 2\n\
|
||||
str r5, [sp]\n\
|
||||
str r5, [sp, 0x4]\n\
|
||||
mov r2, r9\n\
|
||||
str r2, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
adds r2, r6, 0\n\
|
||||
adds r3, r4, 0\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
ldr r1, =0x0000022d\n\
|
||||
ldr r4, [sp, 0xC]\n\
|
||||
adds r4, 0x2\n\
|
||||
lsls r4, 24\n\
|
||||
lsrs r4, 24\n\
|
||||
str r5, [sp]\n\
|
||||
str r5, [sp, 0x4]\n\
|
||||
mov r3, r9\n\
|
||||
str r3, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
mov r2, r8\n\
|
||||
adds r3, r4, 0\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
ldr r1, =0x0000022e\n\
|
||||
str r5, [sp]\n\
|
||||
str r5, [sp, 0x4]\n\
|
||||
mov r0, r9\n\
|
||||
str r0, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
adds r2, r6, 0\n\
|
||||
adds r3, r4, 0\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
movs r5, 0\n\
|
||||
ldr r1, [sp, 0xC]\n\
|
||||
ldr r2, [sp, 0x14]\n\
|
||||
adds r0, r1, r2\n\
|
||||
lsls r4, r0, 24\n\
|
||||
movs r6, 0x1\n\
|
||||
_080D4B8A:\n\
|
||||
ldr r3, =0x0000022f\n\
|
||||
adds r1, r5, r3\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
subs r0, r5, 0x1\n\
|
||||
ldr r3, [sp, 0x18]\n\
|
||||
asrs r2, r3, 24\n\
|
||||
adds r2, r0\n\
|
||||
lsls r2, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
str r6, [sp]\n\
|
||||
str r6, [sp, 0x4]\n\
|
||||
movs r0, 0xE\n\
|
||||
str r0, [sp, 0x8]\n\
|
||||
adds r0, r7, 0\n\
|
||||
lsrs r3, r4, 24\n\
|
||||
bl FillBgTilemapBufferRect\n\
|
||||
adds r5, 0x1\n\
|
||||
cmp r5, 0xB\n\
|
||||
ble _080D4B8A\n\
|
||||
add sp, 0x1C\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
.syntax divided");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
static void LoadMapNamePopUpWindowBg(void)
|
||||
{
|
||||
u8 popupWindowId;
|
||||
u16 regionMapSectionId;
|
||||
u8 popUpThemeId;
|
||||
u8 popupWindowId = GetMapNamePopUpWindowId();
|
||||
u16 regionMapSectionId = gMapHeader.regionMapSectionId;
|
||||
|
||||
popupWindowId = GetMapNamePopUpWindowId();
|
||||
regionMapSectionId = gMapHeader.regionMapSectionId;
|
||||
if(regionMapSectionId > MAPSEC_DYNAMIC)
|
||||
if (regionMapSectionId > MAPSEC_DYNAMIC)
|
||||
{
|
||||
if(regionMapSectionId > MAPSEC_SPECIAL_AREA)
|
||||
if (regionMapSectionId > MAPSEC_SPECIAL_AREA)
|
||||
regionMapSectionId -= (MAPSEC_SPECIAL_AREA - MAPSEC_DYNAMIC);
|
||||
else
|
||||
regionMapSectionId = 0; //discard kanto region sections
|
||||
regionMapSectionId = 0; // Discard kanto region sections;
|
||||
}
|
||||
popUpThemeId = gRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId];
|
||||
|
||||
LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), &(gMapPopUp_Outline_Table[popUpThemeId][0]), 0x400, 0x21D);
|
||||
LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), gMapPopUp_Outline_Table[popUpThemeId], 0x400, 0x21D);
|
||||
CallWindowFunction(popupWindowId, sub_80D4A78);
|
||||
PutWindowTilemap(popupWindowId);
|
||||
if(gMapHeader.weather == WEATHER_BUBBLES)
|
||||
LoadPalette(&gUnknown_0857F444, 0xE0, 0x20);
|
||||
else
|
||||
LoadPalette(&(gMapPopUp_Palette_Table[popUpThemeId][0]), 0xE0, 0x20);
|
||||
BlitBitmapToWindow(popupWindowId, &(gMapPopUp_Table[popUpThemeId][0]), 0, 0, 80, 24);
|
||||
LoadPalette(gMapPopUp_Palette_Table[popUpThemeId], 0xE0, 0x20);
|
||||
BlitBitmapToWindow(popupWindowId, gMapPopUp_Table[popUpThemeId], 0, 0, 80, 24);
|
||||
}
|
||||
|
||||
+146
-8
@@ -1,14 +1,19 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "trig.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void sub_80A77C8(struct Sprite *);
|
||||
extern void sub_810DBAC(struct Sprite *);
|
||||
extern void sub_810DC2C(struct Sprite *);
|
||||
extern void sub_810DCD0(struct Sprite *);
|
||||
extern void sub_810DD50(struct Sprite *);
|
||||
extern void sub_810DDC4(struct Sprite *);
|
||||
extern void sub_810DDC4(struct Sprite *);
|
||||
|
||||
void sub_810DBAC(struct Sprite *);
|
||||
void sub_810DC2C(struct Sprite *);
|
||||
void sub_810DCD0(struct Sprite *);
|
||||
void sub_810DD50(struct Sprite *);
|
||||
void AnimBubbleEffect(struct Sprite *);
|
||||
static void sub_810DC10(struct Sprite *);
|
||||
static void sub_810DCB4(struct Sprite *);
|
||||
static void sub_810DD24(struct Sprite *);
|
||||
static void AnimBubbleEffectStep(struct Sprite *);
|
||||
|
||||
extern const union AnimCmd *const gUnknown_08595200[];
|
||||
|
||||
@@ -170,7 +175,7 @@ const struct SpriteTemplate gPoisonBubbleSpriteTemplate =
|
||||
.anims = gUnknown_08596164,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_0859623C,
|
||||
.callback = sub_810DDC4,
|
||||
.callback = AnimBubbleEffect,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gWaterBubbleSpriteTemplate =
|
||||
@@ -181,5 +186,138 @@ const struct SpriteTemplate gWaterBubbleSpriteTemplate =
|
||||
.anims = gUnknown_08595200,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_0859623C,
|
||||
.callback = sub_810DDC4,
|
||||
.callback = AnimBubbleEffect,
|
||||
};
|
||||
|
||||
void sub_810DBAC(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[3])
|
||||
StartSpriteAnim(sprite, 2);
|
||||
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[5] = -30;
|
||||
|
||||
InitAnimArcTranslation(sprite);
|
||||
|
||||
sprite->callback = sub_810DC10;
|
||||
}
|
||||
|
||||
static void sub_810DC10(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810DC2C(struct Sprite *sprite)
|
||||
{
|
||||
s16 l1, l2;
|
||||
if (!gBattleAnimArgs[3])
|
||||
StartSpriteAnim(sprite, 2);
|
||||
|
||||
InitAnimSpritePos(sprite, 1);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &l1, &l2);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = l1 + gBattleAnimArgs[4];
|
||||
sprite->data[4] = l2 + gBattleAnimArgs[5];
|
||||
sprite->data[5] = -30;
|
||||
|
||||
InitAnimArcTranslation(sprite);
|
||||
|
||||
sprite->callback = sub_810DCB4;
|
||||
}
|
||||
|
||||
static void sub_810DCB4(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810DCD0(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
|
||||
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
|
||||
sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
|
||||
sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
|
||||
|
||||
sprite->callback = sub_810DD24;
|
||||
}
|
||||
|
||||
static void sub_810DD24(struct Sprite *sprite)
|
||||
{
|
||||
sub_80A656C(sprite);
|
||||
|
||||
sprite->data[1] -= sprite->data[5];
|
||||
sprite->data[2] -= sprite->data[6];
|
||||
|
||||
if (!sprite->data[0])
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810DD50(struct Sprite *sprite)
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.y + sprite->data[0];
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Animates a bubble by rising upward, swaying side to side, and
|
||||
// enlarging the sprite. This is used as an after-effect by poison-type
|
||||
// moves, along with MOVE_BUBBLE, and MOVE_BUBBLEBEAM.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: 0 = single-target, 1 = multi-target
|
||||
void AnimBubbleEffect(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[2])
|
||||
{
|
||||
sub_80A6980(sprite, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
sprite->callback = AnimBubbleEffectStep;
|
||||
}
|
||||
|
||||
static void AnimBubbleEffectStep(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[0], 4);
|
||||
sprite->data[1] += 0x30;
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
|
||||
if (sprite->affineAnimEnded)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
+2
-2
@@ -402,7 +402,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
|
||||
gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_X);
|
||||
gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_Y) - 16;
|
||||
gSprites[ballSpriteId].data[5] = -40;
|
||||
sub_80A68D4(&gSprites[ballSpriteId]);
|
||||
InitAnimArcTranslation(&gSprites[ballSpriteId]);
|
||||
gSprites[ballSpriteId].oam.affineParam = taskId;
|
||||
gTasks[taskId].tOpponentBattler = gBattlerTarget;
|
||||
gTasks[taskId].func = TaskDummy;
|
||||
@@ -898,7 +898,7 @@ static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite)
|
||||
sprite->data[4] = GetBattlerSpriteCoord(sprite->sBattler, 3) + 24;
|
||||
sprite->data[5] = -30;
|
||||
sprite->oam.affineParam = sprite->sBattler;
|
||||
sub_80A68D4(sprite);
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = SpriteCB_PlayerMonSendOut_2;
|
||||
}
|
||||
|
||||
|
||||
+453
-49
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "battle_main.h"
|
||||
#include "bg.h"
|
||||
#include "data2.h"
|
||||
#include "decompress.h"
|
||||
@@ -87,35 +88,6 @@ struct UnknownStruct4
|
||||
u8 unk9;
|
||||
};
|
||||
|
||||
//TO BE CONVERTED TO C
|
||||
|
||||
extern const u8 gUnknown_0855D30C[];
|
||||
extern struct BgTemplate gUnknown_0856E630[];
|
||||
extern struct WindowTemplate gUnknown_0856E640[];
|
||||
extern const u16 gUnknown_0856E610[16];
|
||||
extern const struct PokedexEntry gPokedexEntries[];
|
||||
extern struct BgTemplate gUnknown_0856E668[];
|
||||
extern struct WindowTemplate gUnknown_0856E670[];
|
||||
extern const u8 *gMonFootprintTable[];
|
||||
extern u8 gUnknown_0856ED08[][4];
|
||||
extern struct BgTemplate gUnknown_0856EFF8[];
|
||||
extern struct WindowTemplate gUnknown_0856F008[];
|
||||
extern const u8 gUnknown_0856ED9C[][4];
|
||||
extern const u8 gUnknown_0856EDB8[][4];
|
||||
extern const u8 gUnknown_0856EDD4[][4];
|
||||
extern const u8 gUnknown_0856EDF0[][4];
|
||||
extern const struct UnknownStruct1 gUnknown_0856EFC8[];
|
||||
extern const struct UnknownStruct3 gUnknown_0856ED30[];
|
||||
extern const struct UnknownStruct4 gUnknown_0856ED48[];
|
||||
extern const struct UnknownStruct2 gUnknown_0856EE0C[];
|
||||
extern const struct UnknownStruct2 gUnknown_0856EE5C[];
|
||||
extern const struct UnknownStruct2 gUnknown_0856EEB4[];
|
||||
extern const struct UnknownStruct2 gUnknown_0856EF14[];
|
||||
extern const struct UnknownStruct2 gUnknown_0856EE24[];
|
||||
extern const u8 gUnknown_0856EFAC[];
|
||||
extern const u8 gUnknown_0856EFAE[];
|
||||
extern const u8 gUnknown_0856EFB4[];
|
||||
|
||||
#define HOENN_DEX_COUNT 202
|
||||
#define NATIONAL_DEX_COUNT 386
|
||||
|
||||
@@ -654,7 +626,7 @@ static const union AnimCmd *const sSpriteAnimTable_855D190[] =
|
||||
sSpriteAnim_855D10C
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D194 =
|
||||
static const struct SpriteTemplate gUnknown_0855D194 =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -665,7 +637,7 @@ const struct SpriteTemplate gUnknown_0855D194 =
|
||||
.callback = sub_80BE604,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D1AC =
|
||||
static const struct SpriteTemplate gUnknown_0855D1AC =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -676,7 +648,7 @@ const struct SpriteTemplate gUnknown_0855D1AC =
|
||||
.callback = sub_80BE658,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D1C4 =
|
||||
static const struct SpriteTemplate gUnknown_0855D1C4 =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -687,7 +659,7 @@ const struct SpriteTemplate gUnknown_0855D1C4 =
|
||||
.callback = sub_80BE758,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D1DC =
|
||||
static const struct SpriteTemplate gUnknown_0855D1DC =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -698,7 +670,7 @@ const struct SpriteTemplate gUnknown_0855D1DC =
|
||||
.callback = sub_80BE780,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D1F4 =
|
||||
static const struct SpriteTemplate gUnknown_0855D1F4 =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -709,7 +681,7 @@ const struct SpriteTemplate gUnknown_0855D1F4 =
|
||||
.callback = sub_80BE44C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D20C =
|
||||
static const struct SpriteTemplate gUnknown_0855D20C =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -720,7 +692,7 @@ const struct SpriteTemplate gUnknown_0855D20C =
|
||||
.callback = sub_80BE44C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D224 =
|
||||
static const struct SpriteTemplate gUnknown_0855D224 =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -731,7 +703,7 @@ const struct SpriteTemplate gUnknown_0855D224 =
|
||||
.callback = sub_80BE44C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D23C =
|
||||
static const struct SpriteTemplate gUnknown_0855D23C =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -742,7 +714,7 @@ const struct SpriteTemplate gUnknown_0855D23C =
|
||||
.callback = sub_80BE44C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_0855D254 =
|
||||
static const struct SpriteTemplate gUnknown_0855D254 =
|
||||
{
|
||||
.tileTag = 4096,
|
||||
.paletteTag = 4096,
|
||||
@@ -753,22 +725,22 @@ const struct SpriteTemplate gUnknown_0855D254 =
|
||||
.callback = sub_80BE834,
|
||||
};
|
||||
|
||||
const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] =
|
||||
static const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] =
|
||||
{
|
||||
{gPokedexMenu2_Gfx, 0x2000, 4096},
|
||||
{0}
|
||||
};
|
||||
|
||||
const struct SpritePalette gSpritePalettes_0855D26C[] =
|
||||
static const struct SpritePalette gSpritePalettes_0855D26C[] =
|
||||
{
|
||||
{gPokedexText_Pal, 4096},
|
||||
{0}
|
||||
};
|
||||
|
||||
const u8 gUnknown_0855D28C[] = {0x4, 0x8, 0x10, 0x20, 0x20};
|
||||
const u8 gUnknown_0855D291[] = {0x8, 0x4, 0x2, 0x1, 0x1};
|
||||
static const u8 gUnknown_0855D28C[] = {0x4, 0x8, 0x10, 0x20, 0x20};
|
||||
static const u8 gUnknown_0855D291[] = {0x8, 0x4, 0x2, 0x1, 0x1};
|
||||
|
||||
const struct BgTemplate gBgTemplates_0855D298[] =
|
||||
static const struct BgTemplate gBgTemplates_0855D298[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
@@ -808,15 +780,447 @@ const struct BgTemplate gBgTemplates_0855D298[] =
|
||||
}
|
||||
};
|
||||
|
||||
const struct WindowTemplate sWindowTemplates_0855D2A8[] =
|
||||
static const struct WindowTemplate sWindowTemplates_0855D2A8[] =
|
||||
{
|
||||
{2, 0, 0, 0x20, 0x20, 0, 1},
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
.width = 32,
|
||||
.height = 32,
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 1,
|
||||
},
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
const u8 gUnknown_0855D2B8[] = _("{NO}000");
|
||||
const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
|
||||
const u8 sText_TenDashes[] = _("----------");
|
||||
static const u8 gUnknown_0855D2B8[] = _("{NO}000");
|
||||
static const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
|
||||
static const u8 sText_TenDashes[] = _("----------");
|
||||
|
||||
ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
|
||||
|
||||
#include "data/pokemon/pokedex_text.h"
|
||||
#include "data/pokemon/pokedex_entries.h"
|
||||
|
||||
static const u16 gUnknown_0856E610[] = INCBIN_U16("graphics/pokedex/black.gbapal");
|
||||
|
||||
static const struct BgTemplate gUnknown_0856E630[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 12,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 3,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 1,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 13,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 0,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 14,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 1,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 3,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 15,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 2,
|
||||
.baseTile = 0
|
||||
}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_0856E640[] =
|
||||
{
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
.width = 32,
|
||||
.height = 20,
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x0001,
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 25,
|
||||
.tilemapTop = 8,
|
||||
.width = 2,
|
||||
.height = 2,
|
||||
.paletteNum = 15,
|
||||
.baseBlock = 0x0281,
|
||||
},
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 12,
|
||||
.width = 32,
|
||||
.height = 7,
|
||||
.paletteNum = 8,
|
||||
.baseBlock = 0x0285,
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 18,
|
||||
.tilemapTop = 3,
|
||||
.width = 10,
|
||||
.height = 8,
|
||||
.paletteNum = 9,
|
||||
.baseBlock = 0x0365,
|
||||
},
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static const struct BgTemplate gUnknown_0856E668[] =
|
||||
{
|
||||
{
|
||||
.bg = 2,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 14,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 2,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 3,
|
||||
.charBaseIndex = 1,
|
||||
.mapBaseIndex = 15,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 3,
|
||||
.baseTile = 0
|
||||
},
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_0856E670[] =
|
||||
{
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
.width = 32,
|
||||
.height = 20,
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x0001,
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 25,
|
||||
.tilemapTop = 8,
|
||||
.width = 2,
|
||||
.height = 2,
|
||||
.paletteNum = 15,
|
||||
.baseBlock = 0x0281,
|
||||
},
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static const u8 sText_TenDashes2[] = _("----------");
|
||||
|
||||
#include "data/pokemon_graphics/footprint_table.h"
|
||||
|
||||
static const u8 gUnknown_0856ED08[][4] =
|
||||
{
|
||||
{0x00, 0x00, 0x00, 0x00},
|
||||
{0xbb, 0x03, 0xd5, 0x03},
|
||||
{0xbe, 0x03, 0xd8, 0x03},
|
||||
{0xc1, 0x03, 0xdb, 0x03},
|
||||
{0xc4, 0x03, 0xde, 0x03},
|
||||
{0xc7, 0x03, 0xe1, 0x03},
|
||||
{0xca, 0x03, 0xe4, 0x03},
|
||||
{0xcd, 0x03, 0xe7, 0x03},
|
||||
{0xd0, 0x03, 0xea, 0x03},
|
||||
{0xd3, 0x02, 0xed, 0x02},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct3 gUnknown_0856ED30[] =
|
||||
{
|
||||
{
|
||||
.text = gUnknown_085E87A5,
|
||||
.unk4 = 0,
|
||||
.unk5 = 0,
|
||||
.unk6 = 5,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E87D6,
|
||||
.unk4 = 6,
|
||||
.unk5 = 0,
|
||||
.unk6 = 5,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E87EF,
|
||||
.unk4 = 12,
|
||||
.unk5 = 0,
|
||||
.unk6 = 5,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct4 gUnknown_0856ED48[] =
|
||||
{
|
||||
{
|
||||
.text = gUnknown_085E8840,
|
||||
.unk4 = 0,
|
||||
.unk5 = 2,
|
||||
.unk6 = 5,
|
||||
.unk7 = 5,
|
||||
.unk8 = 2,
|
||||
.unk9 = 12,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E887C,
|
||||
.unk4 = 0,
|
||||
.unk5 = 4,
|
||||
.unk6 = 5,
|
||||
.unk7 = 5,
|
||||
.unk8 = 4,
|
||||
.unk9 = 12,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E88A6,
|
||||
.unk4 = 0,
|
||||
.unk5 = 6,
|
||||
.unk6 = 5,
|
||||
.unk7 = 5,
|
||||
.unk8 = 6,
|
||||
.unk9 = 6,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E88A6,
|
||||
.unk4 = 0,
|
||||
.unk5 = 6,
|
||||
.unk6 = 5,
|
||||
.unk7 = 11,
|
||||
.unk8 = 6,
|
||||
.unk9 = 6,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E881F,
|
||||
.unk4 = 0,
|
||||
.unk5 = 8,
|
||||
.unk6 = 5,
|
||||
.unk7 = 5,
|
||||
.unk8 = 8,
|
||||
.unk9 = 12,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E8806,
|
||||
.unk4 = 0,
|
||||
.unk5 = 10,
|
||||
.unk6 = 5,
|
||||
.unk7 = 5,
|
||||
.unk8 = 10,
|
||||
.unk9 = 12,
|
||||
},
|
||||
{
|
||||
.text = gUnknown_085E88C8,
|
||||
.unk4 = 0,
|
||||
.unk5 = 12,
|
||||
.unk6 = 5,
|
||||
.unk7 = 0,
|
||||
.unk8 = 0,
|
||||
.unk9 = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0856ED9C[][4] =
|
||||
{
|
||||
{0xFF, 0xFF, 0xFF, 1},
|
||||
{0xFF, 0xFF, 0, 2},
|
||||
{0xFF, 3, 1, 4},
|
||||
{ 2, 0xFF, 1, 4},
|
||||
{0xFF, 0xFF, 2, 5},
|
||||
{0xFF, 0xFF, 4, 6},
|
||||
{0xFF, 0xFF, 5, 0xFF},
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0856EDB8[][4] =
|
||||
{
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 5},
|
||||
{0xFF, 0xFF, 4, 6},
|
||||
{0xFF, 0xFF, 5, 0xFF},
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0856EDD4[][4] =
|
||||
{
|
||||
{0xFF, 0xFF, 0xFF, 1},
|
||||
{0xFF, 0xFF, 0, 2},
|
||||
{0xFF, 3, 1, 4},
|
||||
{ 2, 0xFF, 1, 4},
|
||||
{0xFF, 0xFF, 2, 6},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 4, 0xFF},
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0856EDF0[][4] =
|
||||
{
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 0xFF, 6},
|
||||
{0xFF, 0xFF, 0xFF, 0xFF},
|
||||
{0xFF, 0xFF, 4, 0xFF},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct2 gUnknown_0856EE0C[] =
|
||||
{
|
||||
{gUnknown_085E89A4, gUnknown_085E88DF},
|
||||
{gUnknown_085E89BB, gUnknown_085E88E9},
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct2 gUnknown_0856EE24[] =
|
||||
{
|
||||
{gUnknown_085E89D4, gUnknown_085E88F6},
|
||||
{gUnknown_085E8A02, gUnknown_085E8905},
|
||||
{gUnknown_085E8A37, gUnknown_085E8911},
|
||||
{gUnknown_085E8A73, gUnknown_085E891F},
|
||||
{gUnknown_085E8AAF, gUnknown_085E892D},
|
||||
{gUnknown_085E8AEA, gUnknown_085E893A},
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct2 gUnknown_0856EE5C[] =
|
||||
{
|
||||
{gUnknown_085E8B25, gUnknown_085E8B26},
|
||||
{gUnknown_085E8B25, gUnknown_085E8948},
|
||||
{gUnknown_085E8B25, gUnknown_085E894C},
|
||||
{gUnknown_085E8B25, gUnknown_085E8950},
|
||||
{gUnknown_085E8B25, gUnknown_085E8954},
|
||||
{gUnknown_085E8B25, gUnknown_085E8958},
|
||||
{gUnknown_085E8B25, gUnknown_085E895C},
|
||||
{gUnknown_085E8B25, gUnknown_085E8960},
|
||||
{gUnknown_085E8B25, gUnknown_085E8964},
|
||||
{gUnknown_085E8B25, gUnknown_085E8968},
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct2 gUnknown_0856EEB4[] =
|
||||
{
|
||||
{gUnknown_085E8B25, gUnknown_085E8B26},
|
||||
{gUnknown_085E8B25, gUnknown_085E896B},
|
||||
{gUnknown_085E8B25, gUnknown_085E896F},
|
||||
{gUnknown_085E8B25, gUnknown_085E8974},
|
||||
{gUnknown_085E8B25, gUnknown_085E897B},
|
||||
{gUnknown_085E8B25, gUnknown_085E8981},
|
||||
{gUnknown_085E8B25, gUnknown_085E8987},
|
||||
{gUnknown_085E8B25, gUnknown_085E898D},
|
||||
{gUnknown_085E8B25, gUnknown_085E8994},
|
||||
{gUnknown_085E8B25, gUnknown_085E8999},
|
||||
{gUnknown_085E8B25, gUnknown_085E899F},
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
static const struct UnknownStruct2 gUnknown_0856EF14[] =
|
||||
{
|
||||
{gUnknown_085E8B25, gUnknown_085E8B35},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_NORMAL]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_FIGHTING]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_FLYING]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_POISON]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_GROUND]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_ROCK]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_BUG]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_GHOST]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_STEEL]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_FIRE]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_WATER]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_GRASS]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_ELECTRIC]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_PSYCHIC]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_ICE]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_DRAGON]},
|
||||
{gUnknown_085E8B25, gTypeNames[TYPE_DARK]},
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0856EFAC[] = {0x00, 0x01};
|
||||
static const u8 gUnknown_0856EFAE[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
|
||||
static const u8 gUnknown_0856EFB4[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17};
|
||||
|
||||
static const struct UnknownStruct1 gUnknown_0856EFC8[] =
|
||||
{
|
||||
{gUnknown_0856EE5C, 6, 7, 10},
|
||||
{gUnknown_0856EEB4, 8, 9, 11},
|
||||
{gUnknown_0856EF14, 10,11, 18},
|
||||
{gUnknown_0856EF14, 12, 13, 18},
|
||||
{gUnknown_0856EE24, 4, 5, 6},
|
||||
{gUnknown_0856EE0C, 2, 3, 2},
|
||||
};
|
||||
|
||||
static const struct BgTemplate gUnknown_0856EFF8[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 12,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 0,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 1,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 13,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 1,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 14,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 2,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 3,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 15,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 3,
|
||||
.baseTile = 0
|
||||
}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_0856F008[] =
|
||||
{
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
.width = 32,
|
||||
.height = 20,
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x0001,
|
||||
},
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
// .text
|
||||
|
||||
@@ -3514,7 +3918,7 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
|
||||
if (c)
|
||||
text3 = gPokedexEntries[num].description;
|
||||
else
|
||||
text3 = gUnknown_0855D30C;
|
||||
text3 = gExpandedPlaceholder_PokedexDescription;
|
||||
sub_80BE8DC(text3, GetStringCenterAlignXOffset(1, text3, 0xF0), 0x5F);
|
||||
}
|
||||
|
||||
|
||||
+600
-15
@@ -1,22 +1,37 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "graphics.h"
|
||||
#include "palette.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void sub_81109F0(struct Sprite *);
|
||||
extern void sub_8110AB4(struct Sprite *);
|
||||
extern void sub_8110B38(struct Sprite *);
|
||||
extern void sub_8110E4C(struct Sprite *);
|
||||
extern void sub_8110F30(struct Sprite *);
|
||||
extern void sub_811131C(struct Sprite *);
|
||||
extern void sub_8111388(struct Sprite *);
|
||||
extern void sub_8111418(struct Sprite *);
|
||||
extern void sub_8111444(struct Sprite *);
|
||||
extern void sub_80FF268(struct Sprite *);
|
||||
extern void sub_80A8EE4(struct Sprite *);
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern const union AnimCmd *const gUnknown_085950E0[];
|
||||
extern const union AnimCmd *const gUnknown_085954D0[];
|
||||
|
||||
extern void AnimMoveTwisterParticle(struct Sprite *);
|
||||
|
||||
void sub_81109F0(struct Sprite *);
|
||||
void sub_8110AB4(struct Sprite *);
|
||||
void AnimDirtParticleAcrossScreen(struct Sprite *);
|
||||
void AnimRaiseSprite(struct Sprite *);
|
||||
void sub_81110A4(u8 taskId);
|
||||
void sub_811131C(struct Sprite *);
|
||||
void sub_8111388(struct Sprite *);
|
||||
void sub_8111418(struct Sprite *);
|
||||
void sub_8111444(struct Sprite *);
|
||||
void sub_8110B38(struct Sprite *);
|
||||
static void sub_8110A70(struct Sprite *);
|
||||
static void sub_8110B80(struct Sprite *sprite);
|
||||
static void sub_8110CB0(u8 taskId);
|
||||
static void sub_8111214(struct Task *task);
|
||||
static u8 sub_811135C(void);
|
||||
static void sub_81113C8(struct Sprite *sprite);
|
||||
static void sub_811149C(struct Sprite *sprite);
|
||||
|
||||
const union AnimCmd gUnknown_08596AE0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 1),
|
||||
@@ -118,7 +133,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8596BA0 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8110E4C,
|
||||
.callback = AnimDirtParticleAcrossScreen,
|
||||
};
|
||||
|
||||
const struct Subsprite gUnknown_08596BB8[] =
|
||||
@@ -194,7 +209,7 @@ const struct SpriteTemplate gUnknown_08596C10 =
|
||||
.anims = gUnknown_08596BF8,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8110F30,
|
||||
.callback = AnimRaiseSprite,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08596C28 =
|
||||
@@ -278,7 +293,7 @@ const struct SpriteTemplate gUnknown_08596CC8 =
|
||||
.anims = gUnknown_08596C08,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_08596C90,
|
||||
.callback = sub_80FF268,
|
||||
.callback = AnimMoveTwisterParticle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_08596CE0 =
|
||||
@@ -291,3 +306,573 @@ const struct SpriteTemplate gUnknown_08596CE0 =
|
||||
.affineAnims = gUnknown_08596C90,
|
||||
.callback = sub_80A8EE4,
|
||||
};
|
||||
|
||||
void sub_81109F0(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[3] != 0)
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += 14;
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
|
||||
AnimateSprite(sprite);
|
||||
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = 4;
|
||||
sprite->data[3] = 16;
|
||||
sprite->data[4] = -70;
|
||||
sprite->data[5] = gBattleAnimArgs[2];
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, sub_8110A70);
|
||||
sprite->callback = sub_80A6450;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_8110A70(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->data[5];
|
||||
|
||||
sprite->data[0] = 192;
|
||||
sprite->data[1] = sprite->data[5];
|
||||
sprite->data[2] = 4;
|
||||
sprite->data[3] = 32;
|
||||
sprite->data[4] = -24;
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
sprite->callback = sub_80A6450;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
void sub_8110AB4(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[5]);
|
||||
AnimateSprite(sprite);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
|
||||
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
|
||||
sprite->callback = sub_80A656C;
|
||||
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
|
||||
}
|
||||
|
||||
void sub_8110B38(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[6] == 0)
|
||||
InitAnimSpritePos(sprite, 0);
|
||||
else
|
||||
sub_80A6980(sprite, FALSE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
|
||||
sprite->callback = sub_8110B80;
|
||||
}
|
||||
|
||||
static void sub_8110B80(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.y = -(sprite->data[4] >> 8);
|
||||
sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
|
||||
sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
|
||||
|
||||
if (--sprite->data[0] == -1)
|
||||
{
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void AnimTask_LoadSandstormBackground(u8 taskId)
|
||||
{
|
||||
int var0;
|
||||
struct UnknownAnimStruct2 unknownStruct;
|
||||
|
||||
var0 = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
|
||||
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
|
||||
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
|
||||
|
||||
if (!IsContest())
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
|
||||
|
||||
sub_80A6B30(&unknownStruct);
|
||||
sub_80A6CC0(unknownStruct.bgId, gUnknown_08D8D58C, unknownStruct.tilesOffset);
|
||||
sub_80A6D60(&unknownStruct, gUnknown_08D8D410, 0);
|
||||
LoadCompressedPalette(&gBattleAnimSpritePalette_261, unknownStruct.unk8 * 16, 32);
|
||||
|
||||
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
var0 = 1;
|
||||
|
||||
gTasks[taskId].data[0] = var0;
|
||||
gTasks[taskId].func = sub_8110CB0;
|
||||
}
|
||||
|
||||
static void sub_8110CB0(u8 taskId)
|
||||
{
|
||||
struct UnknownAnimStruct2 unknownStruct;
|
||||
|
||||
if (gTasks[taskId].data[0] == 0)
|
||||
gBattle_BG1_X += -6;
|
||||
else
|
||||
gBattle_BG1_X += 6;
|
||||
|
||||
gBattle_BG1_Y += -1;
|
||||
|
||||
switch (gTasks[taskId].data[12])
|
||||
{
|
||||
case 0:
|
||||
if (++gTasks[taskId].data[10] == 4)
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11]++;
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 7)
|
||||
{
|
||||
gTasks[taskId].data[12]++;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++gTasks[taskId].data[11] == 101)
|
||||
{
|
||||
gTasks[taskId].data[11] = 7;
|
||||
gTasks[taskId].data[12]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (++gTasks[taskId].data[10] == 4)
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11]--;
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 0)
|
||||
{
|
||||
gTasks[taskId].data[12]++;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_80A6B30(&unknownStruct);
|
||||
sub_80A6C68(unknownStruct.bgId);
|
||||
gTasks[taskId].data[12]++;
|
||||
break;
|
||||
case 4:
|
||||
if (!IsContest())
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Animates the sprites that fly diagonally across the screen
|
||||
// in Sandstorm and Heat Wave.
|
||||
// arg 0: initial y pixel offset
|
||||
// arg 1: projectile speed
|
||||
// arg 2: y pixel drop
|
||||
// arg 3: ??? unknown (possibly a color bit)
|
||||
void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = 304;
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
sprite->data[5] = 1;
|
||||
sprite->oam.matrixNum = 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = -64;
|
||||
}
|
||||
|
||||
sprite->pos1.y = gBattleAnimArgs[0];
|
||||
SetSubspriteTables(sprite, gUnknown_08596BC0);
|
||||
sprite->data[1] = gBattleAnimArgs[1];
|
||||
sprite->data[2] = gBattleAnimArgs[2];
|
||||
sprite->data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x += (sprite->data[3] >> 8);
|
||||
sprite->pos2.y += (sprite->data[4] >> 8);
|
||||
sprite->data[3] &= 0xFF;
|
||||
sprite->data[4] &= 0xFF;
|
||||
|
||||
if (sprite->data[5] == 0)
|
||||
{
|
||||
if (sprite->pos1.x + sprite->pos2.x > 272)
|
||||
{
|
||||
sprite->callback = DestroyAnimSprite;
|
||||
}
|
||||
}
|
||||
else if (sprite->pos1.x + sprite->pos2.x < -32)
|
||||
{
|
||||
sprite->callback = DestroyAnimSprite;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Animates the rising rocks in Ancient Power.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: terminal y offset
|
||||
// arg 3: duration
|
||||
// arg 4: sprite size [1,5]
|
||||
void AnimRaiseSprite(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
InitAnimSpritePos(sprite, 0);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
void sub_8110F74(u8 taskId)
|
||||
{
|
||||
u16 var0, var1, var2, var3;
|
||||
u8 var4;
|
||||
int var5;
|
||||
s16 pan1, pan2;
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
|
||||
var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24;
|
||||
var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24;
|
||||
|
||||
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget)
|
||||
var3 = var1;
|
||||
|
||||
var4 = sub_811135C();
|
||||
if (var4 == 1)
|
||||
task->data[8] = 32;
|
||||
else
|
||||
task->data[8] = 48 - (var4 * 8);
|
||||
|
||||
task->data[0] = 0;
|
||||
task->data[11] = 0;
|
||||
task->data[9] = 0;
|
||||
task->data[12] = 1;
|
||||
|
||||
var5 = task->data[8];
|
||||
if (var5 < 0)
|
||||
var5 += 7;
|
||||
|
||||
task->data[10] = (var5 >> 3) - 1;
|
||||
|
||||
task->data[2] = var0 * 8;
|
||||
task->data[3] = var1 * 8;
|
||||
task->data[4] = ((var2 - var0) * 8) / task->data[8];
|
||||
task->data[5] = ((var3 - var1) * 8) / task->data[8];
|
||||
task->data[6] = 0;
|
||||
task->data[7] = 0;
|
||||
|
||||
pan1 = BattleAnimAdjustPanning(-64);
|
||||
pan2 = BattleAnimAdjustPanning(63);
|
||||
|
||||
task->data[13] = pan1;
|
||||
task->data[14] = (pan2 - pan1) / task->data[8];
|
||||
task->data[1] = var4;
|
||||
task->data[15] = GetAnimBattlerSpriteId(0);
|
||||
|
||||
task->func = sub_81110A4;
|
||||
}
|
||||
|
||||
void sub_81110A4(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[6] -= task->data[4];
|
||||
task->data[7] -= task->data[5];
|
||||
gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
|
||||
gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
|
||||
|
||||
if (++task->data[9] == 10)
|
||||
{
|
||||
task->data[11] = 20;
|
||||
task->data[0]++;
|
||||
}
|
||||
|
||||
PlaySE12WithPanning(SE_W029, task->data[13]);
|
||||
break;
|
||||
case 1:
|
||||
if (--task->data[11] == 0)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
if (--task->data[9] != 0)
|
||||
{
|
||||
task->data[6] += task->data[4];
|
||||
task->data[7] += task->data[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[6] = 0;
|
||||
task->data[7] = 0;
|
||||
task->data[0]++;
|
||||
}
|
||||
|
||||
gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
|
||||
gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
|
||||
break;
|
||||
case 3:
|
||||
task->data[2] += task->data[4];
|
||||
task->data[3] += task->data[5];
|
||||
if (++task->data[9] >= task->data[10])
|
||||
{
|
||||
task->data[9] = 0;
|
||||
sub_8111214(task);
|
||||
task->data[13] += task->data[14];
|
||||
PlaySE12WithPanning(SE_W091, task->data[13]);
|
||||
}
|
||||
|
||||
if (--task->data[8] == 0)
|
||||
{
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (task->data[11] == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8111214(struct Task *task)
|
||||
{
|
||||
const struct SpriteTemplate *spriteTemplate;
|
||||
int var0;
|
||||
u16 x, y;
|
||||
u8 spriteId;
|
||||
|
||||
switch (task->data[1])
|
||||
{
|
||||
case 1:
|
||||
spriteTemplate = &gUnknown_08596C28;
|
||||
var0 = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
spriteTemplate = &gUnknown_08596C40;
|
||||
var0 = 80;
|
||||
break;
|
||||
case 4:
|
||||
spriteTemplate = &gUnknown_08596C40;
|
||||
var0 = 64;
|
||||
break;
|
||||
case 5:
|
||||
spriteTemplate = &gUnknown_08596C40;
|
||||
var0 = 48;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
x = task->data[2] >> 3;
|
||||
y = task->data[3] >> 3;
|
||||
x += (task->data[12] * 4);
|
||||
|
||||
spriteId = CreateSprite(spriteTemplate, x, y, 35);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[0] = 18;
|
||||
gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3);
|
||||
gSprites[spriteId].data[4] = y;
|
||||
gSprites[spriteId].data[5] = -16 - (task->data[1] * 2);
|
||||
gSprites[spriteId].oam.tileNum += var0;
|
||||
|
||||
InitAnimArcTranslation(&gSprites[spriteId]);
|
||||
task->data[11]++;
|
||||
}
|
||||
|
||||
task->data[12] *= -1;
|
||||
}
|
||||
|
||||
void sub_811131C(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimArc(sprite))
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(sub_81110A4);
|
||||
if (taskId != 0xFF)
|
||||
gTasks[taskId].data[11]--;
|
||||
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_811135C(void)
|
||||
{
|
||||
u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer;
|
||||
u8 var0 = retVal - 1;
|
||||
if (var0 > 4)
|
||||
retVal = 1;
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
void sub_8111388(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
|
||||
sprite->pos2.x = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
sprite->data[3] -= gBattleAnimArgs[2];
|
||||
sprite->data[0] = 3;
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_81113C8;
|
||||
sprite->invisible = 1;
|
||||
}
|
||||
|
||||
static void sub_81113C8(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = 0;
|
||||
if (sprite->data[3] != 0)
|
||||
{
|
||||
sprite->pos2.y = sprite->data[2] + sprite->data[3];
|
||||
sprite->data[3] += sprite->data[0];
|
||||
sprite->data[0]++;
|
||||
if (sprite->data[3] > 0)
|
||||
{
|
||||
sprite->data[3] = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (--sprite->data[1] == 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8111418(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
|
||||
TranslateAnimSpriteToTargetMonLocation(sprite);
|
||||
}
|
||||
|
||||
void sub_8111444(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[1] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
sprite->data[5] = gBattleAnimArgs[2];
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
|
||||
sprite->callback = sub_811149C;
|
||||
}
|
||||
|
||||
static void sub_811149C(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += 8;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
|
||||
sprite->pos2.x += sprite->data[3] / 40;
|
||||
sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
|
||||
|
||||
if (sprite->data[0] > 140)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void AnimTask_GetSeismicTossDamageLevel(u8 taskId)
|
||||
{
|
||||
if (gAnimMoveDmg < 33)
|
||||
gBattleAnimArgs[7] = 0;
|
||||
if ((u32)gAnimMoveDmg - 33 < 33)
|
||||
gBattleAnimArgs[7] = 1;
|
||||
if (gAnimMoveDmg > 65)
|
||||
gBattleAnimArgs[7] = 2;
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_811152C(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[0] == 0)
|
||||
{
|
||||
sub_80A6DAC(0);
|
||||
gTasks[taskId].data[1] = 200;
|
||||
}
|
||||
|
||||
gBattle_BG3_Y += gTasks[taskId].data[1] / 10;
|
||||
gTasks[taskId].data[1] -= 3;
|
||||
|
||||
if (gTasks[taskId].data[0] == 120)
|
||||
{
|
||||
sub_80A6DAC(1);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
|
||||
void sub_8111590(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[0] == 0)
|
||||
{
|
||||
sub_80A6DAC(0);
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].data[2] = gBattle_BG3_Y;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[1] += 80;
|
||||
gTasks[taskId].data[1] &= 0xFF;
|
||||
gBattle_BG3_Y = gTasks[taskId].data[2] + Cos(4, gTasks[taskId].data[1]);
|
||||
|
||||
if (gBattleAnimArgs[7] == 0xFFF)
|
||||
{
|
||||
gBattle_BG3_Y = 0;
|
||||
sub_80A6DAC(1);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -1784,7 +1784,7 @@ void sub_801440C(u8 taskId)
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
extern u8 gUnknown_0203CEF8[];
|
||||
extern u8 gSelectedOrderFromParty[];
|
||||
|
||||
void sub_8014790(u8 taskId)
|
||||
{
|
||||
@@ -1802,8 +1802,8 @@ void sub_8014790(u8 taskId)
|
||||
gLinkPlayers[0].linkType = 0x2211;
|
||||
gLinkPlayers[0].id = 0;
|
||||
gLinkPlayers[1].id = 2;
|
||||
sendBuff[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES);
|
||||
sendBuff[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
sendBuff[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES);
|
||||
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
gMain.savedCallback = NULL;
|
||||
data[0] = 4;
|
||||
sub_800E3A8();
|
||||
|
||||
Executable
+707
@@ -0,0 +1,707 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_gfx_sfx_util.h"
|
||||
#include "berry.h"
|
||||
#include "contest.h"
|
||||
#include "contest_link_80F57C4.h"
|
||||
#include "contest_painting.h"
|
||||
#include "daycare.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "international_string_util.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "overworld.h"
|
||||
#include "palette.h"
|
||||
#include "party_menu.h"
|
||||
#include "pokedex.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "script.h"
|
||||
#include "script_menu.h"
|
||||
#include "sprite.h"
|
||||
#include "string_util.h"
|
||||
#include "tv.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/vars.h"
|
||||
|
||||
extern const u16 gEventObjectPalette8[];
|
||||
extern const u16 gEventObjectPalette17[];
|
||||
extern const u16 gEventObjectPalette33[];
|
||||
extern const u16 gEventObjectPalette34[];
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
|
||||
extern u8 gSelectedOrderFromParty[];
|
||||
|
||||
static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 };
|
||||
|
||||
static void sub_80F8EE8(u8 taskId);
|
||||
static void sub_80F9088(u8 taskId);
|
||||
static void sub_80F9460(void);
|
||||
static void sub_80F94B8(void);
|
||||
|
||||
void SetContestTrainerGfxIds(void)
|
||||
{
|
||||
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
|
||||
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_1 - VARS_START] = gContestMons[1].trainerGfxId;
|
||||
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId;
|
||||
}
|
||||
|
||||
void sub_80F8814(void)
|
||||
{
|
||||
u16 var1;
|
||||
u8 var0 = gSpecialVar_0x8005;
|
||||
switch (var0)
|
||||
{
|
||||
case 0:
|
||||
var1 = 3;
|
||||
break;
|
||||
case 1:
|
||||
var1 = 4;
|
||||
break;
|
||||
case 2:
|
||||
var1 = 5;
|
||||
break;
|
||||
default:
|
||||
var1 = 100;
|
||||
break;
|
||||
}
|
||||
|
||||
gSpecialVar_0x8004 = var1;
|
||||
}
|
||||
|
||||
void sub_80F8850(void)
|
||||
{
|
||||
sub_80F8264();
|
||||
sub_80F8290();
|
||||
sub_80F8438();
|
||||
}
|
||||
|
||||
void sub_80F8864(void)
|
||||
{
|
||||
int contestWinner;
|
||||
switch (gSpecialVar_ContestCategory)
|
||||
{
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
contestWinner = 8;
|
||||
break;
|
||||
case CONTEST_CATEGORY_BEAUTY:
|
||||
contestWinner = 9;
|
||||
break;
|
||||
case CONTEST_CATEGORY_CUTE:
|
||||
contestWinner = 10;
|
||||
break;
|
||||
case CONTEST_CATEGORY_SMART:
|
||||
contestWinner = 11;
|
||||
break;
|
||||
case CONTEST_CATEGORY_TOUGH:
|
||||
default:
|
||||
contestWinner = 12;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!gSaveBlock1Ptr->contestWinners[contestWinner].species)
|
||||
gSpecialVar_0x8004 = 0;
|
||||
else
|
||||
gSpecialVar_0x8004 = 1;
|
||||
}
|
||||
|
||||
void sub_80F88DC(void)
|
||||
{
|
||||
sub_80DEDA8(0xFF);
|
||||
}
|
||||
|
||||
void sub_80F88E8(void)
|
||||
{
|
||||
if (gContestFinalStandings[gContestPlayerMonIndex] == 0
|
||||
&& gSpecialVar_ContestRank == 3
|
||||
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
||||
{
|
||||
gSpecialVar_0x8004 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_0x8004 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_80F8940(void)
|
||||
{
|
||||
int i;
|
||||
u8 var0 = 0;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->contestWinners[8 + i].species)
|
||||
var0++;
|
||||
}
|
||||
|
||||
return var0;
|
||||
}
|
||||
|
||||
void sub_80F8970(void)
|
||||
{
|
||||
s16 sp[4];
|
||||
int i, j;
|
||||
s16 condition;
|
||||
s8 var0;
|
||||
u8 var2;
|
||||
u8 r8;
|
||||
u8 r7;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
sp[i] = gContestMonConditions[i];
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
for (j = 3; j > i; j--)
|
||||
{
|
||||
if (sp[j - 1] < sp[j])
|
||||
{
|
||||
int temp = sp[j];
|
||||
sp[j] = sp[j - 1];
|
||||
sp[j - 1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
condition = sp[gSpecialVar_0x8006];
|
||||
var0 = 0;
|
||||
r8 = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (sp[i] == condition)
|
||||
{
|
||||
var0++;
|
||||
if (i == gSpecialVar_0x8006)
|
||||
r8 = var0;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (sp[i] == condition)
|
||||
break;
|
||||
}
|
||||
|
||||
r7 = i;
|
||||
var2 = r8;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (condition == gContestMonConditions[i])
|
||||
{
|
||||
if (var2 == 1)
|
||||
break;
|
||||
var2--;
|
||||
}
|
||||
}
|
||||
|
||||
StringCopy(gStringVar1, gContestMons[i].nickname);
|
||||
StringCopy(gStringVar2, gContestMons[i].trainerName);
|
||||
sub_81DB5AC(gStringVar2);
|
||||
|
||||
if (var0 == 1)
|
||||
gSpecialVar_0x8006 = r7;
|
||||
else if (r8 == var0)
|
||||
gSpecialVar_0x8006 = r7;
|
||||
else
|
||||
gSpecialVar_0x8006 = r7 + 4;
|
||||
}
|
||||
|
||||
static void ShowContestWinnerCleanup(void)
|
||||
{
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
void ShowContestWinner(void)
|
||||
{
|
||||
SetMainCallback2(sub_812FDEC);
|
||||
gMain.savedCallback = ShowContestWinnerCleanup;
|
||||
}
|
||||
|
||||
void sub_80F8AFC(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (gIsLinkContest & 1)
|
||||
{
|
||||
for (i = 0; i < gUnknown_02039F30; i++)
|
||||
{
|
||||
int version = (u8)gLinkPlayers[i].version;
|
||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||
{
|
||||
if (gLinkPlayers[i].gender == MALE)
|
||||
gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_BRENDAN;
|
||||
else
|
||||
gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_MAY;
|
||||
}
|
||||
}
|
||||
|
||||
VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId);
|
||||
VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId);
|
||||
VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId);
|
||||
VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8B94(void)
|
||||
{
|
||||
int i;
|
||||
u8 eventObjectId;
|
||||
int version;
|
||||
struct Sprite *sprite;
|
||||
|
||||
gReservedSpritePaletteCount = 12;
|
||||
if (gIsLinkContest & 1)
|
||||
{
|
||||
for (i = 0; i < gUnknown_02039F30; i++)
|
||||
{
|
||||
eventObjectId = GetEventObjectIdByLocalIdAndMap(gUnknown_0858D8EC[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
sprite = &gSprites[gEventObjects[eventObjectId].spriteId];
|
||||
sprite->oam.paletteNum = 6 + i;
|
||||
version = (u8)gLinkPlayers[i].version;
|
||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||
{
|
||||
if (gLinkPlayers[i].gender == MALE)
|
||||
LoadPalette(gEventObjectPalette33, 0x160 + i * 0x10, 0x20);
|
||||
else
|
||||
LoadPalette(gEventObjectPalette34, 0x160 + i * 0x10, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gLinkPlayers[i].gender == MALE)
|
||||
LoadPalette(gEventObjectPalette8, 0x160 + i * 0x10, 0x20);
|
||||
else
|
||||
LoadPalette(gEventObjectPalette17, 0x160 + i * 0x10, 0x20);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 GiveMonArtistRibbon(void)
|
||||
{
|
||||
u8 hasArtistRibbon;
|
||||
|
||||
hasArtistRibbon = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
|
||||
if (!hasArtistRibbon && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3
|
||||
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
||||
{
|
||||
hasArtistRibbon = 1;
|
||||
SetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
|
||||
if (GetRibbonCount(&gPlayerParty[gUnknown_02039F24]) > 4)
|
||||
sub_80EE4DC(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_80F8D24(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ShowContestEntryMonPic(void)
|
||||
{
|
||||
const struct CompressedSpritePalette *palette;
|
||||
u32 personality, otId;
|
||||
u16 species;
|
||||
u8 spriteId;
|
||||
u8 taskId;
|
||||
u8 left, top;
|
||||
|
||||
if (FindTaskIdByFunc(sub_80F8EE8) == 0xFF)
|
||||
{
|
||||
AllocateMonSpritesGfx();
|
||||
left = 10;
|
||||
top = 3;
|
||||
species = gContestMons[gSpecialVar_0x8006].species;
|
||||
personality = gContestMons[gSpecialVar_0x8006].personality;
|
||||
otId = gContestMons[gSpecialVar_0x8006].otId;
|
||||
taskId = CreateTask(sub_80F8EE8, 0x50);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = species;
|
||||
if (gSpecialVar_0x8006 == gContestPlayerMonIndex)
|
||||
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
|
||||
else
|
||||
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
|
||||
|
||||
palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
|
||||
LoadCompressedObjectPalette(palette);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, 1);
|
||||
gMultiuseSpriteTemplate.paletteTag = palette->tag;
|
||||
spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0);
|
||||
|
||||
if (gIsLinkContest & 1)
|
||||
{
|
||||
if (!(gIsLinkContest & 4))
|
||||
DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[2] = spriteId;
|
||||
gTasks[taskId].data[3] = left;
|
||||
gTasks[taskId].data[4] = top;
|
||||
gSprites[spriteId].callback = SpriteCallbackDummy;
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8EB8(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(sub_80F8EE8);
|
||||
if (taskId != 0xFF)
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
FreeMonSpritesGfx();
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80F8EE8(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
struct Sprite *sprite;
|
||||
|
||||
switch(task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
task->data[5] = CreateWindowFromRect(10, 3, 8, 8);
|
||||
SetStandardWindowBorderStyle(task->data[5], 1);
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
sprite = &gSprites[task->data[2]];
|
||||
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
|
||||
|
||||
if(sprite->oam.affineMode)
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
|
||||
DestroySprite(sprite);
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 4:
|
||||
sub_80E2A78(gTasks[taskId].data[5]);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptGetMultiplayerId(void)
|
||||
{
|
||||
if ((gIsLinkContest & 1) && gUnknown_02039F30 == 4 && !(gIsLinkContest & 2))
|
||||
gSpecialVar_Result = GetMultiplayerId();
|
||||
else
|
||||
gSpecialVar_Result = 4;
|
||||
}
|
||||
|
||||
void ScriptRandom(void)
|
||||
{
|
||||
u16 random;
|
||||
u16 *scriptPtr;
|
||||
|
||||
if (gIsLinkContest & 1)
|
||||
{
|
||||
gContestRngValue = 1103515245 * gContestRngValue + 24691;
|
||||
random = gContestRngValue >> 16;
|
||||
scriptPtr = &gSpecialVar_Result;
|
||||
}
|
||||
else
|
||||
{
|
||||
scriptPtr = &gSpecialVar_Result;
|
||||
random = Random();
|
||||
}
|
||||
*scriptPtr = random % *scriptPtr;
|
||||
}
|
||||
|
||||
u16 sub_80F903C(void)
|
||||
{
|
||||
gContestRngValue = 1103515245 * gContestRngValue + 24691;
|
||||
return gContestRngValue >> 16;
|
||||
}
|
||||
|
||||
u8 sub_80F905C(void)
|
||||
{
|
||||
if (gIsLinkContest & 2)
|
||||
{
|
||||
CreateTask(sub_80F9088, 5);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80F9088(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (sub_800A520())
|
||||
{
|
||||
sub_800ADF8();
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
default:
|
||||
if (sub_800A520() == 1)
|
||||
{
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F90DC(void)
|
||||
{
|
||||
if (gIsLinkContest & 2)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers)
|
||||
{
|
||||
sub_800E0E8();
|
||||
CreateWirelessStatusIndicatorSprite(8, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F910C(void)
|
||||
{
|
||||
if (gIsLinkContest & 2)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers)
|
||||
sub_800E084();
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_80F9134(void)
|
||||
{
|
||||
if (gIsLinkContest & 4)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_80F9154(void)
|
||||
{
|
||||
gIsLinkContest = 0;
|
||||
}
|
||||
|
||||
u8 sub_80F9160(void)
|
||||
{
|
||||
if (gIsLinkContest & 2)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HealPlayerParty(void)
|
||||
{
|
||||
u8 i, j;
|
||||
u8 ppBonuses;
|
||||
u8 arg[4];
|
||||
|
||||
// restore HP.
|
||||
for(i = 0; i < gPlayerPartyCount; i++)
|
||||
{
|
||||
u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
|
||||
arg[0] = maxHP;
|
||||
arg[1] = maxHP >> 8;
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_HP, arg);
|
||||
ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES);
|
||||
|
||||
// restore PP.
|
||||
for(j = 0; j < 4; j++)
|
||||
{
|
||||
arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j);
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg);
|
||||
}
|
||||
|
||||
// since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData.
|
||||
arg[0] = 0;
|
||||
arg[1] = 0;
|
||||
arg[2] = 0;
|
||||
arg[3] = 0;
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg);
|
||||
}
|
||||
}
|
||||
|
||||
u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
|
||||
{
|
||||
u16 nationalDexNum;
|
||||
int sentToPc;
|
||||
u8 heldItem[2];
|
||||
struct Pokemon mon;
|
||||
|
||||
CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
|
||||
heldItem[0] = item;
|
||||
heldItem[1] = item >> 8;
|
||||
SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
|
||||
sentToPc = GiveMonToPlayer(&mon);
|
||||
nationalDexNum = SpeciesToNationalPokedexNum(species);
|
||||
|
||||
switch(sentToPc)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
GetSetPokedexFlag(nationalDexNum, 2);
|
||||
GetSetPokedexFlag(nationalDexNum, 3);
|
||||
break;
|
||||
}
|
||||
return sentToPc;
|
||||
}
|
||||
|
||||
u8 ScriptGiveEgg(u16 species)
|
||||
{
|
||||
struct Pokemon mon;
|
||||
u8 isEgg;
|
||||
|
||||
CreateEgg(&mon, species, TRUE);
|
||||
isEgg = TRUE;
|
||||
SetMonData(&mon, MON_DATA_IS_EGG, &isEgg);
|
||||
|
||||
return GiveMonToPlayer(&mon);
|
||||
}
|
||||
|
||||
void HasEnoughMonsForDoubleBattle(void)
|
||||
{
|
||||
switch (GetMonsStateToDoubles())
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = 0;
|
||||
break;
|
||||
case 1:
|
||||
gSpecialVar_Result = 1;
|
||||
break;
|
||||
case 2:
|
||||
gSpecialVar_Result = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 CheckPartyMonHasHeldItem(u16 item)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
|
||||
if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80F9370(void)
|
||||
{
|
||||
bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY);
|
||||
if (hasItem == TRUE)
|
||||
GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1);
|
||||
|
||||
return hasItem;
|
||||
}
|
||||
|
||||
void CreateScriptedWildMon(u16 species, u8 level, u16 item)
|
||||
{
|
||||
u8 heldItem[2];
|
||||
|
||||
ZeroEnemyPartyMons();
|
||||
CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
|
||||
if (item)
|
||||
{
|
||||
heldItem[0] = item;
|
||||
heldItem[1] = item >> 8;
|
||||
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
|
||||
{
|
||||
if (monIndex > PARTY_SIZE)
|
||||
monIndex = gPlayerPartyCount - 1;
|
||||
|
||||
SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
|
||||
}
|
||||
|
||||
void sub_80F9438(void)
|
||||
{
|
||||
gMain.savedCallback = sub_80F9460;
|
||||
VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??)
|
||||
sub_81B8518(0);
|
||||
}
|
||||
|
||||
static void sub_80F9460(void)
|
||||
{
|
||||
switch (gSelectedOrderFromParty[0])
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = 0;
|
||||
break;
|
||||
default:
|
||||
gSpecialVar_Result = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
void sub_80F9490(void)
|
||||
{
|
||||
gMain.savedCallback = sub_80F94B8;
|
||||
sub_81B8518(gSpecialVar_0x8004 + 1);
|
||||
}
|
||||
|
||||
static void sub_80F94B8(void)
|
||||
{
|
||||
switch (gSelectedOrderFromParty[0])
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = 0;
|
||||
break;
|
||||
default:
|
||||
gSpecialVar_Result = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
void ReducePlayerPartyToSelectedMons(void)
|
||||
{
|
||||
struct Pokemon party[4];
|
||||
int i;
|
||||
|
||||
CpuFill32(0, party, sizeof party);
|
||||
|
||||
// copy the selected pokemon according to the order.
|
||||
for (i = 0; i < 4; i++)
|
||||
if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop
|
||||
party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal
|
||||
|
||||
CpuFill32(0, gPlayerParty, sizeof gPlayerParty);
|
||||
|
||||
// overwrite the first 4 with the order copied to.
|
||||
for (i = 0; i < 4; i++)
|
||||
gPlayerParty[i] = party[i];
|
||||
|
||||
CalculatePlayerPartyCount();
|
||||
}
|
||||
+117
-347
@@ -1,9 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "strings.h"
|
||||
|
||||
// Yes, all the aligns are absolutely necessary.
|
||||
// Until someone can come up with a better way to align byte arrays in C, this is what we're doing.
|
||||
asm(".align 2");
|
||||
ALIGNED(4)
|
||||
const u8 gExpandedPlaceholder_Empty[] = _("");
|
||||
const u8 gExpandedPlaceholder_Kun[] = _("");
|
||||
const u8 gExpandedPlaceholder_Chan[] = _("");
|
||||
@@ -49,24 +47,12 @@ const u8 gUnknown_085E8504[] = _("SELECT");
|
||||
const u8 gUnknown_085E850B[] = _("+ Control Pad");
|
||||
const u8 gUnknown_085E8519[] = _("L Button R Button");
|
||||
const u8 gUnknown_085E852C[] = _("CONTROLS");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085E8538[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085E8544[] = _("{A_BUTTON}NEXT");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085E854C[] = _("{A_BUTTON}NEXT {B_BUTTON}BACK");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PickNextCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}NEXT {B_BUTTON}CANCEL");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PickCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}{B_BUTTON}CANCEL");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_UnkCtrlF800Exit[] = _("{A_BUTTON}EXIT");
|
||||
ALIGNED(4) const u8 gUnknown_085E8538[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK");
|
||||
ALIGNED(4) const u8 gUnknown_085E8544[] = _("{A_BUTTON}NEXT");
|
||||
ALIGNED(4) const u8 gUnknown_085E854C[] = _("{A_BUTTON}NEXT {B_BUTTON}BACK");
|
||||
ALIGNED(4) const u8 gText_PickNextCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}NEXT {B_BUTTON}CANCEL");
|
||||
ALIGNED(4) const u8 gText_PickCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}{B_BUTTON}CANCEL");
|
||||
ALIGNED(4) const u8 gText_UnkCtrlF800Exit[] = _("{A_BUTTON}EXIT");
|
||||
const u8 gText_BirchBoy[] = _("BOY");
|
||||
const u8 gText_BirchGirl[] = _("GIRL");
|
||||
const u8 gText_DefaultNameStu[] = _("STU");
|
||||
@@ -486,30 +472,14 @@ const u8 gText_EscapeFromHere[] = _("Want to escape from here and return\nto {ST
|
||||
const u8 gText_ReturnToHealingSpot[] = _("Want to return to the healing spot\nused last in {STR_VAR_1}?");
|
||||
const u8 gText_PauseUntilPress[] = _("{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gJPText_PutVar1IntoSpinner[] = _("{STR_VAR_1}を ぐるぐるこうかんに\nだして よろしいですか?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OnlyPkmnForBattle[] = _("That’s your only\nPOKéMON for battle.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PkmnCantBeTradedNow[] = _("That POKéMON can’t be traded\nnow.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_EggCantBeTradedNow[] = _("An EGG can’t be traded now.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OtherTrainersPkmnCantBeTraded[] = _("The other TRAINER’s POKéMON\ncan’t be traded now.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OtherTrainerCantAcceptPkmn[] = _("The other TRAINER can’t accept\nthat POKéMON now.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CantTradeWithTrainer[] = _("You can’t trade with that\nTRAINER now.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_NotPkmnOtherTrainerWants[] = _("That isn’t the type of POKéMON\nthat the other TRAINER wants.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_ThatIsntAnEgg[] = _("That isn’t an EGG.");
|
||||
ALIGNED(4) const u8 gText_OnlyPkmnForBattle[] = _("That’s your only\nPOKéMON for battle.");
|
||||
ALIGNED(4) const u8 gText_PkmnCantBeTradedNow[] = _("That POKéMON can’t be traded\nnow.");
|
||||
ALIGNED(4) const u8 gText_EggCantBeTradedNow[] = _("An EGG can’t be traded now.");
|
||||
ALIGNED(4) const u8 gText_OtherTrainersPkmnCantBeTraded[] = _("The other TRAINER’s POKéMON\ncan’t be traded now.");
|
||||
ALIGNED(4) const u8 gText_OtherTrainerCantAcceptPkmn[] = _("The other TRAINER can’t accept\nthat POKéMON now.");
|
||||
ALIGNED(4) const u8 gText_CantTradeWithTrainer[] = _("You can’t trade with that\nTRAINER now.");
|
||||
ALIGNED(4) const u8 gText_NotPkmnOtherTrainerWants[] = _("That isn’t the type of POKéMON\nthat the other TRAINER wants.");
|
||||
ALIGNED(4) const u8 gText_ThatIsntAnEgg[] = _("That isn’t an EGG.");
|
||||
const u8 gText_Register[] = _("REGISTER");
|
||||
const u8 gText_Attack3[] = _("ATTACK");
|
||||
const u8 gText_Defense3[] = _("DEFENSE");
|
||||
@@ -1251,20 +1221,11 @@ const u8 gText_BattleArena[] = _("BATTLE ARENA");
|
||||
const u8 gText_BattlePike[] = _("BATTLE PIKE");
|
||||
const u8 gText_BattlePyramid[] = _("BATTLE PYRAMID");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085ED164[] = _("{STR_VAR_1} SINGLE");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085ED170[] = _("{STR_VAR_1} DOUBLE");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085ED17C[] = _("{STR_VAR_1} MULTI");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085ED188[] = _("{STR_VAR_1} LINK");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085ED190[] = _("{STR_VAR_1}");
|
||||
ALIGNED(4) const u8 gUnknown_085ED164[] = _("{STR_VAR_1} SINGLE");
|
||||
ALIGNED(4) const u8 gUnknown_085ED170[] = _("{STR_VAR_1} DOUBLE");
|
||||
ALIGNED(4) const u8 gUnknown_085ED17C[] = _("{STR_VAR_1} MULTI");
|
||||
ALIGNED(4) const u8 gUnknown_085ED188[] = _("{STR_VAR_1} LINK");
|
||||
ALIGNED(4) const u8 gUnknown_085ED190[] = _("{STR_VAR_1}");
|
||||
|
||||
const u8 gText_Give[] = _("Give");
|
||||
const u8 gText_NoNeed[] = _("No need");
|
||||
@@ -1332,93 +1293,35 @@ const u8 gMatchCall_MaySelfIntroductionText_Line1[] = _("My POKéMON and I help"
|
||||
const u8 gMatchCall_MaySelfIntroductionText_Line2[] = _("my father’s research.");
|
||||
const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!");
|
||||
const u8 gText_NickHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_RecordingGameResults[] = _("Recording your game results in the\nsave file.\lPlease wait.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PlayBerryCrushAgain[] = _("Want to play BERRY CRUSH again?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_YouHaveNoBerries[] = _("You have no BERRIES.\nThe game will be canceled.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_MemberDroppedOut[] = _("A member dropped out.\nThe game will be canceled.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_TimesUpNoGoodPowder[] = _("Time’s up.\pGood BERRY POWDER could not be\nmade…\p");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CommunicationStandby2[] = _("Communication standby…");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_1DotBlueF700[] = _("1. {COLOR BLUE}{SHADOW LIGHT_BLUE}{SPECIAL_F7 0x00}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_1DotF700[] = _("1. {SPECIAL_F7 0x00}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_SpaceTimes2[] = _(" time(s)");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_XDotY[] = _("{STR_VAR_1}.{STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Var1Berry[] = _("{STR_VAR_1} BERRY");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_TimeColon[] = _("Time:");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PressingSpeed[] = _("Pressing Speed:");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Silkiness[] = _("Silkiness:");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_StrVar1[] = _("{STR_VAR_1}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_SpaceMin[] = _(" min. ");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_XDotY2[] = _("{STR_VAR_1}.{STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_SpaceSec[] = _(" sec.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_XDotY3[] = _("{STR_VAR_1}.{STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_TimesPerSec[] = _(" Times/sec.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Var1Percent[] = _("{STR_VAR_1}%");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PressesRankings[] = _("No. of Presses Rankings");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CrushingResults[] = _("Crushing Results");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_NeatnessRankings[] = _("Neatness Rankings");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CoopRankings[] = _("Cooperative Rankings");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PressingPowerRankings[] = _("Pressing-Power Rankings");
|
||||
ALIGNED(4) const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
|
||||
ALIGNED(4) const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY.");
|
||||
ALIGNED(4) const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p");
|
||||
ALIGNED(4) const u8 gText_RecordingGameResults[] = _("Recording your game results in the\nsave file.\lPlease wait.");
|
||||
ALIGNED(4) const u8 gText_PlayBerryCrushAgain[] = _("Want to play BERRY CRUSH again?");
|
||||
ALIGNED(4) const u8 gText_YouHaveNoBerries[] = _("You have no BERRIES.\nThe game will be canceled.");
|
||||
ALIGNED(4) const u8 gText_MemberDroppedOut[] = _("A member dropped out.\nThe game will be canceled.");
|
||||
ALIGNED(4) const u8 gText_TimesUpNoGoodPowder[] = _("Time’s up.\pGood BERRY POWDER could not be\nmade…\p");
|
||||
ALIGNED(4) const u8 gText_CommunicationStandby2[] = _("Communication standby…");
|
||||
ALIGNED(4) const u8 gText_1DotBlueF700[] = _("1. {COLOR BLUE}{SHADOW LIGHT_BLUE}{SPECIAL_F7 0x00}");
|
||||
ALIGNED(4) const u8 gText_1DotF700[] = _("1. {SPECIAL_F7 0x00}");
|
||||
ALIGNED(4) const u8 gText_SpaceTimes2[] = _(" time(s)");
|
||||
ALIGNED(4) const u8 gText_XDotY[] = _("{STR_VAR_1}.{STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_Var1Berry[] = _("{STR_VAR_1} BERRY");
|
||||
ALIGNED(4) const u8 gText_TimeColon[] = _("Time:");
|
||||
ALIGNED(4) const u8 gText_PressingSpeed[] = _("Pressing Speed:");
|
||||
ALIGNED(4) const u8 gText_Silkiness[] = _("Silkiness:");
|
||||
ALIGNED(4) const u8 gText_StrVar1[] = _("{STR_VAR_1}");
|
||||
ALIGNED(4) const u8 gText_SpaceMin[] = _(" min. ");
|
||||
ALIGNED(4) const u8 gText_XDotY2[] = _("{STR_VAR_1}.{STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_SpaceSec[] = _(" sec.");
|
||||
ALIGNED(4) const u8 gText_XDotY3[] = _("{STR_VAR_1}.{STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_TimesPerSec[] = _(" Times/sec.");
|
||||
ALIGNED(4) const u8 gText_Var1Percent[] = _("{STR_VAR_1}%");
|
||||
ALIGNED(4) const u8 gText_PressesRankings[] = _("No. of Presses Rankings");
|
||||
ALIGNED(4) const u8 gText_CrushingResults[] = _("Crushing Results");
|
||||
ALIGNED(4) const u8 gText_NeatnessRankings[] = _("Neatness Rankings");
|
||||
ALIGNED(4) const u8 gText_CoopRankings[] = _("Cooperative Rankings");
|
||||
ALIGNED(4) const u8 gText_PressingPowerRankings[] = _("Pressing-Power Rankings");
|
||||
const u8 gText_BerryCrush2[] = _("BERRY CRUSH");
|
||||
const u8 gText_PressingSpeedRankings[] = _("Pressing-Speed Rankings");
|
||||
const u8 gText_Var1Players[] = _("{STR_VAR_1} PLAYERS");
|
||||
@@ -1548,29 +1451,15 @@ const u8 gText_KOsInARow[] = _("KOs in a row: {STR_VAR_1}");
|
||||
const u8 gText_TimesVar1[] = _("Times: {STR_VAR_1}");
|
||||
const u8 gText_FloorsCleared[] = _("Floors cleared: {STR_VAR_1}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_RecordsLv50[] = _("LV. 50");
|
||||
ALIGNED(4) const u8 gText_RecordsLv50[] = _("LV. 50");
|
||||
ALIGNED(4) const u8 gText_RecordsOpenLevel[] = _("OPEN LEVEL");
|
||||
ALIGNED(4) const u8 gText_FrontierFacilityWinStreak[] = _("Win streak: {STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_FrontierFacilityClearStreak[] = _("Clear streak: {STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_FrontierFacilityRoomsCleared[] = _("Rooms cleared: {STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_FrontierFacilityKOsStreak[] = _("KOs in a row: {STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_FrontierFacilityFloorsCleared[] = _("Floors cleared: {STR_VAR_2}");
|
||||
ALIGNED(4) const u8 gText_123Dot[][3] = {_("1."), _("2."), _("3.")};
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_RecordsOpenLevel[] = _("OPEN LEVEL");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_FrontierFacilityWinStreak[] = _("Win streak: {STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_FrontierFacilityClearStreak[] = _("Clear streak: {STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_FrontierFacilityRoomsCleared[] = _("Rooms cleared: {STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_FrontierFacilityKOsStreak[] = _("KOs in a row: {STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_FrontierFacilityFloorsCleared[] = _("Floors cleared: {STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_123Dot[][3] = {_("1."), _("2."), _("3.")};
|
||||
const u8 gText_SavingDontTurnOff2[] = _("SAVING…\nDON’T TURN OFF THE POWER.");
|
||||
const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!");
|
||||
const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS");
|
||||
@@ -1769,185 +1658,66 @@ const u8 *const gTextTable_Players[] = {
|
||||
gText_F703Players
|
||||
};
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderCards[] = _("WONDER CARDS");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderNews[] = _("WONDER NEWS");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WirelessCommunication[] = _("WIRELESS COMMUNICATION");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Friend2[] = _("FRIEND");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Exit3[] = _("EXIT");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Receive[] = _("RECEIVE");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Send[] = _("SEND");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Toss[] = _("TOSS");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_VarietyOfEventsImportedWireless[] = _("A variety of events will be imported\nover Wireless Communication.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderCardsInPossession[] = _("Read the WONDER CARDS in your\npossession.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_ReadNewsThatArrived[] = _("Read the NEWS that arrived.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_ReturnToTitle[] = _("Return to the title screen.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_DontHaveCardNewOneInput[] = _("You don’t have a WONDER CARD,\nso a new CARD will be input.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_DontHaveNewsNewOneInput[] = _("You don’t have any WONDER NEWS,\nso new NEWS will be input.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WhereShouldCardBeAccessed[] = _("Where should the WONDER CARD\nbe accessed?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WhereShouldNewsBeAccessed[] = _("Where should the WONDER NEWS\nbe accessed?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gUnknown_085EEFC0[] = _("Communication standby…\nB Button: Cancel");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_Communicating[] = _("Communicating…");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CommunicationCompleted[] = _("Communication completed.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CommunicationError[] = _("Communication error.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CommunicationCanceled[] = _("Communication has been canceled.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_ThrowAwayWonderCard[] = _("Throw away the WONDER CARD\nand input a new CARD?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_HaventReceivedCardsGift[] = _("You haven’t received the CARD’s gift\nyet. Input a new CARD anyway?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderCardReceivedFrom[] = _("A WONDER CARD has been received\nfrom {STR_VAR_1}.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderNewsReceivedFrom[] = _("A WONDER NEWS item has been\nreceived from {STR_VAR_1}.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderCardReceived[] = _("A new WONDER CARD has been\nreceived.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderNewsReceived[] = _("A new WONDER NEWS item has been\nreceived.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_NewStampReceived[] = _("A new STAMP has been received.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_NewTrainerReceived[] = _("A new TRAINER has arrived.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_AlreadyHadCard[] = _("You already had that\nWONDER CARD.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_AlreadyHadNews[] = _("You already had that\nWONDER NEWS item.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_AlreadyHadStamp[] = _("You already had that\nSTAMP.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_NoMoreRoomForStamps[] = _("There’s no more room for adding\nSTAMPS.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_RecordUploadedViaWireless[] = _("Your record has been uploaded via\nWIRELESS COMMUNICATION.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CantAcceptCardFromTrainer[] = _("You can’t accept a WONDER CARD\nfrom this TRAINER.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CantAcceptNewsFromTrainer[] = _("You can’t accept WONDER NEWS\nfrom this TRAINER.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_NothingSentOver[] = _("Nothing was sent over…");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WhatToDoWithCards[] = _("What would you like to do\nwith the WONDER CARDS?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WhatToDoWithNews[] = _("What would you like to do\nwith the WONDER NEWS?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_SendingWonderCard[] = _("Sending your WONDER CARD…");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_SendingWonderNews[] = _("Sending your WONDER NEWS item…");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderCardSentTo[] = _("Your WONDER CARD has been sent\nto {STR_VAR_1}.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderNewsSentTo[] = _("Your WONDER NEWS item has been\nsent to {STR_VAR_1}.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_StampSentTo[] = _("A STAMP has been sent to {STR_VAR_1}.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_GiftSentTo[] = _("A GIFT has been sent to {STR_VAR_1}.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OtherTrainerHasCard[] = _("The other TRAINER has the same\nWONDER CARD already.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OtherTrainerHasNews[] = _("The other TRAINER has the same\nWONDER NEWS already.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OtherTrainerHasStamp[] = _("The other TRAINER has the same\nSTAMP already.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OtherTrainerCanceled[] = _("The other TRAINER canceled\ncommunication.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_CantSendGiftToTrainer[] = _("You can’t send a MYSTERY GIFT to\nthis TRAINER.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_IfThrowAwayCardEventWontHappen[] = _("If you throw away the CARD,\nits event won’t happen. Okay?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_OkayToDiscardNews[] = _("Is it okay to discard this\nNEWS item?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_HaventReceivedGiftOkayToDiscard[] = _("You haven’t received the\nGIFT. Is it okay to discard?");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_DataWillBeSaved[] = _("Data will be saved.\nPlease wait.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_SaveCompletedPressA[] = _("Save completed.\nPlease press the A Button.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderCardThrownAway[] = _("The WONDER CARD was thrown away.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_WonderNewsThrownAway[] = _("The WONDER NEWS was thrown away.");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_MysteryGift[] = _("MYSTERY GIFT");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PickOKExit[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}EXIT");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_PickOKCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}CANCEL");
|
||||
ALIGNED(4) const u8 gText_WonderCards[] = _("WONDER CARDS");
|
||||
ALIGNED(4) const u8 gText_WonderNews[] = _("WONDER NEWS");
|
||||
ALIGNED(4) const u8 gText_WirelessCommunication[] = _("WIRELESS COMMUNICATION");
|
||||
ALIGNED(4) const u8 gText_Friend2[] = _("FRIEND");
|
||||
ALIGNED(4) const u8 gText_Exit3[] = _("EXIT");
|
||||
ALIGNED(4) const u8 gText_Receive[] = _("RECEIVE");
|
||||
ALIGNED(4) const u8 gText_Send[] = _("SEND");
|
||||
ALIGNED(4) const u8 gText_Toss[] = _("TOSS");
|
||||
ALIGNED(4) const u8 gText_VarietyOfEventsImportedWireless[] = _("A variety of events will be imported\nover Wireless Communication.");
|
||||
ALIGNED(4) const u8 gText_WonderCardsInPossession[] = _("Read the WONDER CARDS in your\npossession.");
|
||||
ALIGNED(4) const u8 gText_ReadNewsThatArrived[] = _("Read the NEWS that arrived.");
|
||||
ALIGNED(4) const u8 gText_ReturnToTitle[] = _("Return to the title screen.");
|
||||
ALIGNED(4) const u8 gText_DontHaveCardNewOneInput[] = _("You don’t have a WONDER CARD,\nso a new CARD will be input.");
|
||||
ALIGNED(4) const u8 gText_DontHaveNewsNewOneInput[] = _("You don’t have any WONDER NEWS,\nso new NEWS will be input.");
|
||||
ALIGNED(4) const u8 gText_WhereShouldCardBeAccessed[] = _("Where should the WONDER CARD\nbe accessed?");
|
||||
ALIGNED(4) const u8 gText_WhereShouldNewsBeAccessed[] = _("Where should the WONDER NEWS\nbe accessed?");
|
||||
ALIGNED(4) const u8 gUnknown_085EEFC0[] = _("Communication standby…\nB Button: Cancel");
|
||||
ALIGNED(4) const u8 gText_Communicating[] = _("Communicating…");
|
||||
ALIGNED(4) const u8 gText_CommunicationCompleted[] = _("Communication completed.");
|
||||
ALIGNED(4) const u8 gText_CommunicationError[] = _("Communication error.");
|
||||
ALIGNED(4) const u8 gText_CommunicationCanceled[] = _("Communication has been canceled.");
|
||||
ALIGNED(4) const u8 gText_ThrowAwayWonderCard[] = _("Throw away the WONDER CARD\nand input a new CARD?");
|
||||
ALIGNED(4) const u8 gText_HaventReceivedCardsGift[] = _("You haven’t received the CARD’s gift\nyet. Input a new CARD anyway?");
|
||||
ALIGNED(4) const u8 gText_WonderCardReceivedFrom[] = _("A WONDER CARD has been received\nfrom {STR_VAR_1}.");
|
||||
ALIGNED(4) const u8 gText_WonderNewsReceivedFrom[] = _("A WONDER NEWS item has been\nreceived from {STR_VAR_1}.");
|
||||
ALIGNED(4) const u8 gText_WonderCardReceived[] = _("A new WONDER CARD has been\nreceived.");
|
||||
ALIGNED(4) const u8 gText_WonderNewsReceived[] = _("A new WONDER NEWS item has been\nreceived.");
|
||||
ALIGNED(4) const u8 gText_NewStampReceived[] = _("A new STAMP has been received.");
|
||||
ALIGNED(4) const u8 gText_NewTrainerReceived[] = _("A new TRAINER has arrived.");
|
||||
ALIGNED(4) const u8 gText_AlreadyHadCard[] = _("You already had that\nWONDER CARD.");
|
||||
ALIGNED(4) const u8 gText_AlreadyHadNews[] = _("You already had that\nWONDER NEWS item.");
|
||||
ALIGNED(4) const u8 gText_AlreadyHadStamp[] = _("You already had that\nSTAMP.");
|
||||
ALIGNED(4) const u8 gText_NoMoreRoomForStamps[] = _("There’s no more room for adding\nSTAMPS.");
|
||||
ALIGNED(4) const u8 gText_RecordUploadedViaWireless[] = _("Your record has been uploaded via\nWIRELESS COMMUNICATION.");
|
||||
ALIGNED(4) const u8 gText_CantAcceptCardFromTrainer[] = _("You can’t accept a WONDER CARD\nfrom this TRAINER.");
|
||||
ALIGNED(4) const u8 gText_CantAcceptNewsFromTrainer[] = _("You can’t accept WONDER NEWS\nfrom this TRAINER.");
|
||||
ALIGNED(4) const u8 gText_NothingSentOver[] = _("Nothing was sent over…");
|
||||
ALIGNED(4) const u8 gText_WhatToDoWithCards[] = _("What would you like to do\nwith the WONDER CARDS?");
|
||||
ALIGNED(4) const u8 gText_WhatToDoWithNews[] = _("What would you like to do\nwith the WONDER NEWS?");
|
||||
ALIGNED(4) const u8 gText_SendingWonderCard[] = _("Sending your WONDER CARD…");
|
||||
ALIGNED(4) const u8 gText_SendingWonderNews[] = _("Sending your WONDER NEWS item…");
|
||||
ALIGNED(4) const u8 gText_WonderCardSentTo[] = _("Your WONDER CARD has been sent\nto {STR_VAR_1}.");
|
||||
ALIGNED(4) const u8 gText_WonderNewsSentTo[] = _("Your WONDER NEWS item has been\nsent to {STR_VAR_1}.");
|
||||
ALIGNED(4) const u8 gText_StampSentTo[] = _("A STAMP has been sent to {STR_VAR_1}.");
|
||||
ALIGNED(4) const u8 gText_GiftSentTo[] = _("A GIFT has been sent to {STR_VAR_1}.");
|
||||
ALIGNED(4) const u8 gText_OtherTrainerHasCard[] = _("The other TRAINER has the same\nWONDER CARD already.");
|
||||
ALIGNED(4) const u8 gText_OtherTrainerHasNews[] = _("The other TRAINER has the same\nWONDER NEWS already.");
|
||||
ALIGNED(4) const u8 gText_OtherTrainerHasStamp[] = _("The other TRAINER has the same\nSTAMP already.");
|
||||
ALIGNED(4) const u8 gText_OtherTrainerCanceled[] = _("The other TRAINER canceled\ncommunication.");
|
||||
ALIGNED(4) const u8 gText_CantSendGiftToTrainer[] = _("You can’t send a MYSTERY GIFT to\nthis TRAINER.");
|
||||
ALIGNED(4) const u8 gText_IfThrowAwayCardEventWontHappen[] = _("If you throw away the CARD,\nits event won’t happen. Okay?");
|
||||
ALIGNED(4) const u8 gText_OkayToDiscardNews[] = _("Is it okay to discard this\nNEWS item?");
|
||||
ALIGNED(4) const u8 gText_HaventReceivedGiftOkayToDiscard[] = _("You haven’t received the\nGIFT. Is it okay to discard?");
|
||||
ALIGNED(4) const u8 gText_DataWillBeSaved[] = _("Data will be saved.\nPlease wait.");
|
||||
ALIGNED(4) const u8 gText_SaveCompletedPressA[] = _("Save completed.\nPlease press the A Button.");
|
||||
ALIGNED(4) const u8 gText_WonderCardThrownAway[] = _("The WONDER CARD was thrown away.");
|
||||
ALIGNED(4) const u8 gText_WonderNewsThrownAway[] = _("The WONDER NEWS was thrown away.");
|
||||
ALIGNED(4) const u8 gText_MysteryGift[] = _("MYSTERY GIFT");
|
||||
ALIGNED(4) const u8 gText_PickOKExit[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}EXIT");
|
||||
ALIGNED(4) const u8 gText_PickOKCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}CANCEL");
|
||||
const u8 gText_PlayersBattleResults[] = _("{PLAYER}’s BATTLE RESULTS");
|
||||
const u8 gText_TotalRecordWLD[] = _("TOTAL RECORD W:{STR_VAR_1} L:{STR_VAR_2} D:{STR_VAR_3}");
|
||||
const u8 gText_WinLoseDraw[] = _("{CLEAR_TO 0x53}WIN{CLEAR_TO 0x80}LOSE{CLEAR_TO 0xB0}DRAW");
|
||||
|
||||
+213
-794
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user