Fix merge conflicts
This commit is contained in:
+1
-1
@@ -2283,7 +2283,7 @@ static void ScriptCmd_setalpha(void)
|
||||
sBattleAnimScriptPtr++;
|
||||
half1 = *(sBattleAnimScriptPtr++);
|
||||
half2 = *(sBattleAnimScriptPtr++) << 8;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2);
|
||||
}
|
||||
|
||||
|
||||
+31
-29
@@ -703,7 +703,7 @@ void sub_80A67F4(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_80A6814(u8 taskId)
|
||||
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -948,7 +948,7 @@ void sub_80A6C68(u32 bgId)
|
||||
CopyBgTilemapBufferToVram(unkStruct.bgId);
|
||||
}
|
||||
|
||||
void sub_80A6CC0(u32 bgId, const void *src, u32 tilesOffset)
|
||||
void sub_80A6CC0(u32 bgId, const u32 *src, u32 tilesOffset)
|
||||
{
|
||||
CpuFill32(0, gUnknown_0202305C, 0x2000);
|
||||
LZDecompressWram(src, gUnknown_0202305C);
|
||||
@@ -2092,17 +2092,17 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
void sub_80A8610(struct Sprite *sprite)
|
||||
void DestroySpriteAndFreeResources_(struct Sprite *sprite)
|
||||
{
|
||||
DestroySpriteAndFreeResources(sprite);
|
||||
}
|
||||
|
||||
s16 sub_80A861C(u8 battlerId, u8 a2)
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
|
||||
{
|
||||
u16 species;
|
||||
u32 personality;
|
||||
u16 letter;
|
||||
u16 var;
|
||||
u16 unownSpecies;
|
||||
int ret;
|
||||
const struct MonCoords *coords;
|
||||
struct BattleSpriteInfo *spriteInfo;
|
||||
@@ -2123,10 +2123,10 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
|
||||
{
|
||||
letter = GET_UNOWN_LETTER(personality);
|
||||
if (!letter)
|
||||
var = SPECIES_UNOWN;
|
||||
unownSpecies = SPECIES_UNOWN;
|
||||
else
|
||||
var = letter + SPECIES_UNOWN_B - 1;
|
||||
coords = &gMonBackPicCoords[var];
|
||||
unownSpecies = letter + SPECIES_UNOWN_B - 1;
|
||||
coords = &gMonBackPicCoords[unownSpecies];
|
||||
}
|
||||
else if (species == SPECIES_CASTFORM)
|
||||
{
|
||||
@@ -2156,16 +2156,17 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
personality = gTransformedPersonalities[battlerId];
|
||||
}
|
||||
|
||||
if (species == SPECIES_UNOWN)
|
||||
{
|
||||
letter = GET_UNOWN_LETTER(personality);
|
||||
if (!letter)
|
||||
var = SPECIES_UNOWN;
|
||||
unownSpecies = SPECIES_UNOWN;
|
||||
else
|
||||
var = letter + SPECIES_UNOWN_B - 1;
|
||||
coords = &gMonBackPicCoords[var];
|
||||
unownSpecies = letter + SPECIES_UNOWN_B - 1;
|
||||
coords = &gMonBackPicCoords[unownSpecies];
|
||||
}
|
||||
else if (species > SPECIES_EGG)
|
||||
else if (species > NUM_SPECIES)
|
||||
{
|
||||
coords = &gMonBackPicCoords[0];
|
||||
}
|
||||
@@ -2187,20 +2188,21 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
personality = gTransformedPersonalities[battlerId];
|
||||
}
|
||||
|
||||
if (species == SPECIES_UNOWN)
|
||||
{
|
||||
letter = GET_UNOWN_LETTER(personality);
|
||||
if (!letter)
|
||||
var = SPECIES_UNOWN;
|
||||
unownSpecies = SPECIES_UNOWN;
|
||||
else
|
||||
var = letter + SPECIES_UNOWN_B - 1;
|
||||
coords = &gMonFrontPicCoords[var];
|
||||
unownSpecies = letter + SPECIES_UNOWN_B - 1;
|
||||
coords = &gMonFrontPicCoords[unownSpecies];
|
||||
}
|
||||
else if (species == SPECIES_CASTFORM)
|
||||
{
|
||||
coords = &gCastformFrontSpriteCoords[gBattleMonForms[battlerId]];
|
||||
}
|
||||
else if (species > SPECIES_EGG)
|
||||
else if (species > NUM_SPECIES)
|
||||
{
|
||||
coords = &gMonFrontPicCoords[0];
|
||||
}
|
||||
@@ -2211,22 +2213,22 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
|
||||
}
|
||||
}
|
||||
|
||||
switch (a2)
|
||||
switch (attr)
|
||||
{
|
||||
case 0:
|
||||
case BATTLER_COORD_ATTR_HEIGHT:
|
||||
return (coords->coords & 0xf) * 8;
|
||||
case 1:
|
||||
case BATTLER_COORD_ATTR_WIDTH:
|
||||
return (coords->coords >> 4) * 8;
|
||||
case 4:
|
||||
return GetBattlerSpriteCoord(battlerId, 2) - ((coords->coords >> 4) * 4);
|
||||
case 5:
|
||||
return GetBattlerSpriteCoord(battlerId, 2) + ((coords->coords >> 4) * 4);
|
||||
case 2:
|
||||
return GetBattlerSpriteCoord(battlerId, 3) - ((coords->coords & 0xf) * 4);
|
||||
case 3:
|
||||
return GetBattlerSpriteCoord(battlerId, 3) + ((coords->coords & 0xf) * 4);
|
||||
case 6:
|
||||
ret = GetBattlerSpriteCoord(battlerId, 1) + 0x1f;
|
||||
case BATTLER_COORD_ATTR_LEFT:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->coords >> 4) * 4);
|
||||
case BATTLER_COORD_ATTR_RIGHT:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->coords >> 4) * 4);
|
||||
case BATTLER_COORD_ATTR_TOP:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->coords & 0xf) * 4);
|
||||
case BATTLER_COORD_ATTR_BOTTOM:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->coords & 0xf) * 4);
|
||||
case BATTLER_COORD_ATTR_RAW_BOTTOM:
|
||||
ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31;
|
||||
return ret - coords->y_offset;
|
||||
default:
|
||||
return 0;
|
||||
|
||||
@@ -388,7 +388,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_085E535C =
|
||||
};
|
||||
|
||||
extern const struct SpriteTemplate gUnknown_085CE388;
|
||||
extern const struct SpriteTemplate gUnknown_085CE3A0;
|
||||
extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate;
|
||||
|
||||
void unref_sub_8170478(u8 taskId)
|
||||
{
|
||||
@@ -428,7 +428,7 @@ void unref_sub_8170478(u8 taskId)
|
||||
sub_80A6B30(&unknownStruct);
|
||||
sub_80A6D48(unknownStruct.bgId, gUnknown_08C2EA9C);
|
||||
sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset);
|
||||
LoadCompressedPalette(gUnknown_08C2DDA4, unknownStruct.unk8 << 4, 32);
|
||||
LoadCompressedPalette(gCureBubblesPal, unknownStruct.unk8 << 4, 32);
|
||||
|
||||
gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
|
||||
gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
|
||||
@@ -2081,12 +2081,12 @@ static void sub_8172FEC(u8 taskId)
|
||||
}
|
||||
else if (state >= 0 && gTasks[taskId].data[11] < 4)
|
||||
{
|
||||
spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5);
|
||||
spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5);
|
||||
gSprites[spriteId].oam.tileNum += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5);
|
||||
spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5);
|
||||
gSprites[spriteId].oam.tileNum += 5;
|
||||
}
|
||||
|
||||
|
||||
@@ -3297,8 +3297,8 @@ void sub_80FFFC0(u8 taskId)
|
||||
task->data[4] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1;
|
||||
task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
task->data[10] = sub_80A861C(gBattleAnimTarget, 1);
|
||||
task->data[11] = sub_80A861C(gBattleAnimTarget, 0);
|
||||
task->data[10] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH);
|
||||
task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT);
|
||||
task->data[5] = (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) ? 1 : -1;
|
||||
task->data[9] = 56 - (task->data[5] * 64);
|
||||
task->data[8] = task->data[7] - task->data[9] + task->data[6];
|
||||
@@ -5452,11 +5452,11 @@ static void sub_81030B0(struct Sprite* sprite)
|
||||
void sub_810310C(u8 battler, struct Sprite* sprite)
|
||||
{
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
sprite->pos1.x = sub_80A861C(battler, 5) + 8;
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8;
|
||||
else
|
||||
sprite->pos1.x = sub_80A861C(battler, 4) - 8;
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
|
||||
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) - (s16)sub_80A861C(battler, 0) / 4;
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
||||
}
|
||||
|
||||
void sub_8103164(struct Sprite* sprite)
|
||||
@@ -5520,7 +5520,7 @@ void sub_8103284(struct Sprite* sprite)
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 0);
|
||||
sprite->pos1.y = sub_80A861C(battler, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP);
|
||||
if (sprite->pos1.y <= 9)
|
||||
sprite->pos1.y = 10;
|
||||
|
||||
|
||||
@@ -2446,7 +2446,7 @@ void sub_8104E74(u8 taskId)
|
||||
task->data[3] = 0;
|
||||
task->data[4] = 0;
|
||||
task->data[5] = 0;
|
||||
task->data[15] = sub_80A861C(gBattleAnimTarget, 0);
|
||||
task->data[15] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT);
|
||||
|
||||
if (GetBattlerSpriteBGPriorityRank(gBattleAnimTarget) == 1)
|
||||
{
|
||||
@@ -2531,7 +2531,7 @@ void sub_810501C(struct Sprite *sprite)
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = 16;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = sub_80A861C(gBattleAnimTarget, 0) + 2;
|
||||
sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) + 2;
|
||||
sprite->data[6] = BattleAnimAdjustPanning(63);
|
||||
sprite->callback = sub_8105078;
|
||||
}
|
||||
@@ -3134,7 +3134,7 @@ void sub_8105EB0(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x3F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x3F3F);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0xC8);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0x10);
|
||||
gTasks[taskId].data[0] = win0v;
|
||||
gTasks[taskId].data[1] = win0h;
|
||||
@@ -3390,8 +3390,8 @@ void sub_81064F8(u8 taskId)
|
||||
else
|
||||
sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceOpponent, 0);
|
||||
|
||||
sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C249F8, unknownStruct.tilesOffset);
|
||||
LoadCompressedPalette(&gUnknown_08C249D0, unknownStruct.unk8 << 4, 32);
|
||||
sub_80A6CC0(unknownStruct.bgId, gUnknown_08C249F8, unknownStruct.tilesOffset);
|
||||
LoadCompressedPalette(gUnknown_08C249D0, unknownStruct.unk8 << 4, 32);
|
||||
gTasks[taskId].func = sub_81065EC;
|
||||
}
|
||||
|
||||
|
||||
+936
-354
File diff suppressed because it is too large
Load Diff
@@ -767,7 +767,8 @@ void sub_81177E4(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette)
|
||||
|
||||
void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette)
|
||||
{
|
||||
u16 species;
|
||||
u8 spriteId, spriteId2;
|
||||
@@ -818,8 +819,8 @@ void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
|
||||
spriteId2 = sub_80A89C8(battler2, gBattlerSpriteIds[battler2], species);
|
||||
|
||||
sub_80A6B30(&unknownStruct);
|
||||
sub_80A6D60(&unknownStruct, arg9, 0);
|
||||
sub_80A6CC0(unknownStruct.bgId, arg8, unknownStruct.tilesOffset);
|
||||
sub_80A6D60(&unknownStruct, tilemap, 0);
|
||||
sub_80A6CC0(unknownStruct.bgId, gfx, unknownStruct.tilesOffset);
|
||||
LoadCompressedPalette(palette, unknownStruct.unk8 << 4, 32);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
|
||||
+2
-4
@@ -8,6 +8,7 @@
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "frontier_util.h"
|
||||
#include "graphics.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "item.h"
|
||||
#include "m4a.h"
|
||||
@@ -23,9 +24,6 @@
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
extern const u32 gUnknown_08D854E8[];
|
||||
extern const u16 gUnknown_08D855E8[];
|
||||
|
||||
// This file's functions.
|
||||
static void sub_81A58B4(void);
|
||||
static void sub_81A5964(void);
|
||||
@@ -784,7 +782,7 @@ static void sub_81A58B4(void)
|
||||
if (!isCurrent)
|
||||
gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = 0;
|
||||
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1092,7 +1092,7 @@ void DrawBattleEntryBackground(void)
|
||||
LZDecompressVram(gUnknown_08D778F0, (void*)(VRAM + 0x4000));
|
||||
LZDecompressVram(gUnknown_08D77B0C, (void*)(VRAM + 0x10000));
|
||||
LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_MAPBASEINDEX, 1);
|
||||
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
|
||||
CopyToBgTilemapBuffer(1, gUnknown_08D779D8, 0, 0);
|
||||
CopyToBgTilemapBuffer(2, gUnknown_08D779D8, 0, 0);
|
||||
@@ -1113,8 +1113,8 @@ void DrawBattleEntryBackground(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 2);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 2);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 2);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 2);
|
||||
CopyToBgTilemapBuffer(1, gUnknown_08D857A8, 0, 0);
|
||||
CopyToBgTilemapBuffer(2, gUnknown_08D85A1C, 0, 0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
|
||||
@@ -869,7 +869,7 @@ static void sub_80586F8(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
m4aSongNumStop(SE_HINSI);
|
||||
gMain.inBattle = 0;
|
||||
@@ -888,7 +888,7 @@ void sub_80587B0(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (gWirelessCommType == 0)
|
||||
sub_800AC34();
|
||||
|
||||
@@ -800,7 +800,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
blockSize = gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
|
||||
gTasks[taskId].data[13] = 1;
|
||||
|
||||
+1
-1
@@ -2388,7 +2388,7 @@ static void sub_818E9CC(void)
|
||||
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode]))
|
||||
gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0;
|
||||
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ static void sub_81A5E94(void)
|
||||
for (i = 0; i < 3; i++)
|
||||
gUnknown_03006298[i] |= 0xFFFF;
|
||||
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1753,7 +1753,7 @@ static void sub_8073E08(u8 taskId)
|
||||
if (--gTasks[taskId].tData15 < 0)
|
||||
return;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[15]) | ((16 - gTasks[taskId].data[15]) << 8));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[15], 16 - gTasks[taskId].data[15]));
|
||||
}
|
||||
if (gTasks[taskId].tData15 == 0)
|
||||
gTasks[taskId].func = sub_8073E64;
|
||||
@@ -1806,7 +1806,7 @@ static void sub_8073F98(u8 taskId)
|
||||
|
||||
if (--gTasks[taskId].tData15 >= 0)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].tData15) | ((16 - gTasks[taskId].tData15) << 8));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[15], 16 - gTasks[taskId].data[15]));
|
||||
}
|
||||
else if (gTasks[taskId].tData15 == -1)
|
||||
{
|
||||
|
||||
+10
-10
@@ -221,8 +221,8 @@ static void BattleIntroSlide1(u8 taskId)
|
||||
gScanlineEffect.state = 3;
|
||||
gTasks[taskId].data[0]++;
|
||||
CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
|
||||
}
|
||||
@@ -330,8 +330,8 @@ static void BattleIntroSlide2(u8 taskId)
|
||||
gScanlineEffect.state = 3;
|
||||
gTasks[taskId].data[0]++;
|
||||
CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
|
||||
}
|
||||
@@ -418,8 +418,8 @@ static void BattleIntroSlide3(u8 taskId)
|
||||
gScanlineEffect.state = 3;
|
||||
gTasks[taskId].data[0]++;
|
||||
CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
|
||||
}
|
||||
@@ -499,8 +499,8 @@ static void BattleIntroSlideLink(u8 taskId)
|
||||
{
|
||||
gScanlineEffect.state = 3;
|
||||
gTasks[taskId].data[0]++;
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
|
||||
}
|
||||
@@ -567,8 +567,8 @@ static void BattleIntroSlidePartner(u8 taskId)
|
||||
{
|
||||
CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE * 4);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_WIN1_ON);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
|
||||
gScanlineEffect.state = 3;
|
||||
|
||||
+24
-24
@@ -17,6 +17,7 @@
|
||||
#include "dma3.h"
|
||||
#include "event_data.h"
|
||||
#include "evolution_scene.h"
|
||||
#include "graphics.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "international_string_util.h"
|
||||
#include "item.h"
|
||||
@@ -60,7 +61,6 @@
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE1;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE2;
|
||||
|
||||
extern const u16 gBattleTextboxPalette[];
|
||||
extern const struct BgTemplate gBattleBgTemplates[];
|
||||
extern const struct WindowTemplate *const gBattleWindowTemplates[];
|
||||
extern const u8 *const gBattleScriptsForMoveEffects[];
|
||||
@@ -986,7 +986,7 @@ static void CB2_HandleStartBattle(void)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers != 0)
|
||||
{
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
*(&gBattleStruct->field_180) = 0;
|
||||
*(&gBattleStruct->field_181) = 3;
|
||||
@@ -1035,7 +1035,7 @@ static void CB2_HandleStartBattle(void)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1050,7 +1050,7 @@ static void CB2_HandleStartBattle(void)
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1065,7 +1065,7 @@ static void CB2_HandleStartBattle(void)
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1107,7 +1107,7 @@ static void CB2_HandleStartBattle(void)
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1194,7 +1194,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
GetBattleTowerTrainerLanguage(&language, gTrainerBattleOpponent_B);
|
||||
gLinkPlayers[3].language = language;
|
||||
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
*(&gBattleStruct->field_180) = 0;
|
||||
*(&gBattleStruct->field_181) = 3;
|
||||
@@ -1234,7 +1234,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1258,7 +1258,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1282,7 +1282,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gEnemyParty, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1300,7 +1300,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gEnemyParty + 2, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1318,7 +1318,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gEnemyParty + 4, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1360,7 +1360,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1440,7 +1440,7 @@ static void CB2_PreInitMultiBattle(void)
|
||||
switch (gBattleCommunication[MULTIUSE_STATE])
|
||||
{
|
||||
case 0:
|
||||
if (gReceivedRemoteLinkPlayers != 0 && sub_800A520())
|
||||
if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
|
||||
{
|
||||
gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct4) * 3);
|
||||
sub_80379F8(0);
|
||||
@@ -1478,7 +1478,7 @@ static void CB2_PreInitMultiBattle(void)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_800A520() && !gPaletteFade.active)
|
||||
if (IsLinkTaskFinished() && !gPaletteFade.active)
|
||||
{
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
if (gWirelessCommType)
|
||||
@@ -1581,7 +1581,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers != 0)
|
||||
{
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
*(&gBattleStruct->field_180) = 0;
|
||||
*(&gBattleStruct->field_181) = 3;
|
||||
@@ -1643,7 +1643,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
break;
|
||||
// fall through
|
||||
case 3:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1706,7 +1706,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -1802,7 +1802,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
u32* ptr = (u32*)(&gBattleStruct->field_180);
|
||||
ptr[0] = gBattleTypeFlags;
|
||||
@@ -2361,7 +2361,7 @@ static void sub_8038F34(void)
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
break;
|
||||
case 6:
|
||||
if (sub_800A520() == TRUE)
|
||||
if (IsLinkTaskFinished() == TRUE)
|
||||
{
|
||||
sub_800ADF8();
|
||||
BattlePutTextOnWindow(gText_LinkStandby3, 0);
|
||||
@@ -2371,7 +2371,7 @@ static void sub_8038F34(void)
|
||||
case 7:
|
||||
if (!IsTextPrinterActive(0))
|
||||
{
|
||||
if (sub_800A520() == TRUE)
|
||||
if (IsLinkTaskFinished() == TRUE)
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -2546,7 +2546,7 @@ static void sub_803939C(void)
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (sub_800A520() == TRUE)
|
||||
if (IsLinkTaskFinished() == TRUE)
|
||||
{
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
|
||||
if (gMain.field_439_x4)
|
||||
@@ -2596,7 +2596,7 @@ static void sub_803939C(void)
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (sub_800A520() == TRUE && !IsTextPrinterActive(0) && --gBattleCommunication[1] == 0)
|
||||
if (IsLinkTaskFinished() == TRUE && !IsTextPrinterActive(0) && --gBattleCommunication[1] == 0)
|
||||
{
|
||||
if (gMain.field_439_x4)
|
||||
{
|
||||
@@ -2612,7 +2612,7 @@ static void sub_803939C(void)
|
||||
{
|
||||
if (gMain.field_439_x4)
|
||||
{
|
||||
if (sub_800A520() == TRUE)
|
||||
if (IsLinkTaskFinished() == TRUE)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
|
||||
gBattleCommunication[1] = 0x20;
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ static void sub_8195980(void)
|
||||
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]))
|
||||
gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0;
|
||||
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1202,8 +1202,8 @@ static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2)
|
||||
{
|
||||
s32 i, j;
|
||||
u8 ret = 0;
|
||||
u16 *map = gUnknown_03005DC0.map;
|
||||
map += gUnknown_03005DC0.width * 7 + 7;
|
||||
u16 *map = gBackupMapLayout.map;
|
||||
map += gBackupMapLayout.width * 7 + 7;
|
||||
|
||||
for (i = 0; i < 32; map += 47, i++)
|
||||
{
|
||||
@@ -1493,11 +1493,11 @@ void sub_81AA078(u16 *mapArg, u8 arg1)
|
||||
const struct MapLayout *mapLayout = gMapLayouts[allocated[i] + 0x169];
|
||||
const u16 *layoutMap = mapLayout->map;
|
||||
|
||||
gUnknown_03005DC0.map = mapArg;
|
||||
gUnknown_03005DC0.width = mapLayout->width * 4 + 15;
|
||||
gUnknown_03005DC0.height = mapLayout->height * 4 + 14;
|
||||
gBackupMapLayout.map = mapArg;
|
||||
gBackupMapLayout.width = mapLayout->width * 4 + 15;
|
||||
gBackupMapLayout.height = mapLayout->height * 4 + 14;
|
||||
map = mapArg;
|
||||
heightAdd = (((i / 4 * mapLayout->height) + 7) * (gUnknown_03005DC0.width));
|
||||
heightAdd = (((i / 4 * mapLayout->height) + 7) * (gBackupMapLayout.width));
|
||||
widthAdd = ((i % 4 * mapLayout->width) + 7);
|
||||
map += heightAdd + widthAdd;
|
||||
for (j = 0; j < mapLayout->height; j++)
|
||||
|
||||
@@ -365,7 +365,7 @@ static void sub_81C4F44(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
gFieldCallback2 = hm_add_c3_without_phase_2;
|
||||
sub_81C4F98(3, CB2_ReturnToField);
|
||||
DestroyTask(taskId);
|
||||
|
||||
@@ -6237,7 +6237,7 @@ static void atk6C_drawlvlupbox(void)
|
||||
{
|
||||
case 1:
|
||||
gBattle_BG2_Y = 0x60;
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, 0);
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, 0);
|
||||
ShowBg(2);
|
||||
sub_804F17C();
|
||||
gBattleScripting.atk6C_state = 2;
|
||||
@@ -6249,8 +6249,8 @@ static void atk6C_drawlvlupbox(void)
|
||||
case 3:
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0x100;
|
||||
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 1);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 0);
|
||||
SetBgAttribute(0, BG_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 0);
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
HandleBattleWindow(0x12, 7, 0x1D, 0x13, WINDOW_x80);
|
||||
@@ -6296,7 +6296,7 @@ static void atk6C_drawlvlupbox(void)
|
||||
ClearWindowTilemap(13);
|
||||
CopyWindowToVram(13, 1);
|
||||
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, 2);
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
|
||||
ShowBg(2);
|
||||
|
||||
gBattleScripting.atk6C_state = 10;
|
||||
@@ -6305,8 +6305,8 @@ static void atk6C_drawlvlupbox(void)
|
||||
case 10:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 0);
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 1);
|
||||
SetBgAttribute(0, BG_ATTR_PRIORITY, 0);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
gBattlescriptCurrInstr++;
|
||||
@@ -10138,7 +10138,7 @@ static void atkEF_handleballthrow(void)
|
||||
ballMultiplier = 10;
|
||||
break;
|
||||
case ITEM_DIVE_BALL:
|
||||
if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER)
|
||||
if (GetCurrentMapType() == MAP_TYPE_UNDERWATER)
|
||||
ballMultiplier = 35;
|
||||
else
|
||||
ballMultiplier = 10;
|
||||
|
||||
+1
-1
@@ -349,7 +349,7 @@ static void Task_BattleStart(u8 taskId)
|
||||
case 1:
|
||||
if (IsBattleTransitionDone() == TRUE)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
RestartWildEncounterImmunitySteps();
|
||||
ClearPoisonStepCounter();
|
||||
|
||||
+3
-3
@@ -100,7 +100,7 @@ static void sub_81B99D4(void)
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
static void sub_81B9A28(void)
|
||||
@@ -162,7 +162,7 @@ static void sub_81B9BA0(void)
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
static void sub_81B9BF4(void)
|
||||
@@ -217,7 +217,7 @@ static void sub_81B9D28(void)
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
static void sub_81B9D7C(void)
|
||||
|
||||
+3
-3
@@ -1163,7 +1163,7 @@ static void sub_8161F94(void)
|
||||
gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0;
|
||||
|
||||
ValidateBattleTowerRecordChecksums();
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
@@ -2799,7 +2799,7 @@ static void sub_8164B74(void)
|
||||
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
|
||||
{
|
||||
challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7;
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), &challengeNum, sizeof(challengeNum));
|
||||
gSpecialVar_Result = 1;
|
||||
@@ -2836,7 +2836,7 @@ static void sub_8164B74(void)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gSaveBlock2Ptr->frontier.field_CB4, sizeof(gSaveBlock2Ptr->frontier.field_CB4));
|
||||
gSpecialVar_Result = 3;
|
||||
|
||||
+7
-11
@@ -857,11 +857,10 @@ const struct UnkStruct_0858AB24 gUnknown_0858AB24[] = {
|
||||
|
||||
const struct BerryTree gBlankBerryTree = {};
|
||||
|
||||
//.text
|
||||
// unused
|
||||
void ClearEnigmaBerries(void)
|
||||
{
|
||||
CpuFill16(0, &gSaveBlock1Ptr->enigmaBerry, 52);
|
||||
CpuFill16(0, &gSaveBlock1Ptr->enigmaBerry, sizeof(gSaveBlock1Ptr->enigmaBerry));
|
||||
}
|
||||
|
||||
void SetEnigmaBerry(u8 *src)
|
||||
@@ -869,7 +868,7 @@ void SetEnigmaBerry(u8 *src)
|
||||
u32 i;
|
||||
u8 *dest = (u8*)&gSaveBlock1Ptr->enigmaBerry;
|
||||
|
||||
for (i = 0; i < 52; i++)
|
||||
for (i = 0; i < sizeof(gSaveBlock1Ptr->enigmaBerry); i++)
|
||||
dest[i] = src[i];
|
||||
}
|
||||
|
||||
@@ -881,10 +880,8 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
|
||||
|
||||
dest = (u8*)enigmaBerry;
|
||||
checksum = 0;
|
||||
for (i = 0; i < 52 - sizeof(gSaveBlock1Ptr->enigmaBerry.checksum); i++)
|
||||
{
|
||||
for (i = 0; i < sizeof(gSaveBlock1Ptr->enigmaBerry) - sizeof(gSaveBlock1Ptr->enigmaBerry.checksum); i++)
|
||||
checksum += dest[i];
|
||||
}
|
||||
|
||||
return checksum;
|
||||
}
|
||||
@@ -941,10 +938,10 @@ bool32 EventObjectInteractionWaterBerryTree(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 IsPlayerFacingPlantedBerryTree(void)
|
||||
bool8 IsPlayerFacingEmptyBerryTreePatch(void)
|
||||
{
|
||||
if (GetEventObjectScriptPointerPlayerFacing() == BerryTreeScript
|
||||
&& GetStageByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject)) == 0)
|
||||
&& GetStageByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject)) == BERRY_STAGE_NO_BERRY)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -1046,10 +1043,9 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle)
|
||||
tree->berryYield = CalcBerryYield(tree);
|
||||
tree->minutesUntilNextStage *= 4;
|
||||
}
|
||||
|
||||
if (!sparkle)
|
||||
{
|
||||
tree->growthSparkle = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveBerryTree(u8 id)
|
||||
@@ -1072,7 +1068,7 @@ u8 ItemIdToBerryType(u16 item)
|
||||
u16 berry = item - FIRST_BERRY_INDEX;
|
||||
|
||||
if (berry > LAST_BERRY_INDEX - FIRST_BERRY_INDEX)
|
||||
return 1;
|
||||
return ITEM_TO_BERRY(FIRST_BERRY_INDEX);
|
||||
else
|
||||
return ITEM_TO_BERRY(item);
|
||||
}
|
||||
|
||||
+8
-8
@@ -1240,7 +1240,7 @@ static void sub_8080018(void)
|
||||
sBerryBlenderData->framesToWait = 0;
|
||||
break;
|
||||
case 9:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
ResetBlockReceivedFlags();
|
||||
if (GetMultiplayerId() == 0)
|
||||
@@ -1297,7 +1297,7 @@ static void sub_8080018(void)
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sBerryBlenderData->mainState++;
|
||||
sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
|
||||
@@ -1342,7 +1342,7 @@ static void sub_8080018(void)
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
case 20:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_800A418();
|
||||
sBerryBlenderData->mainState++;
|
||||
@@ -2412,7 +2412,7 @@ static void CB2_HandleBlenderEndGame(void)
|
||||
{
|
||||
sBerryBlenderData->gameEndState++;
|
||||
}
|
||||
else if (sub_800A520())
|
||||
else if (IsLinkTaskFinished())
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType)
|
||||
{
|
||||
@@ -2593,7 +2593,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
|
||||
sBerryBlenderData->framesToWait = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sBerryBlenderData->field_1A0++;
|
||||
gSoftResetDisabled = TRUE;
|
||||
@@ -2612,7 +2612,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_8153474())
|
||||
{
|
||||
@@ -2687,7 +2687,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void)
|
||||
sBerryBlenderData->gameEndState++;
|
||||
break;
|
||||
case 6:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sBerryBlenderData->framesToWait = 0;
|
||||
sBerryBlenderData->gameEndState++;
|
||||
@@ -2706,7 +2706,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void)
|
||||
sub_800ADF8();
|
||||
break;
|
||||
case 9:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
sBerryBlenderData->gameEndState++;
|
||||
|
||||
@@ -67,7 +67,7 @@ static const u16 sUnknown_08618138[] = {
|
||||
0x7fff, 0x7fff, 0x318c, 0x675a,
|
||||
0x043c, 0x3aff, 0x0664, 0x4bd2,
|
||||
0x6546, 0x7b14, 0x7fff, 0x318c,
|
||||
0x675a, 0x0000, 0x0000, 0x0000
|
||||
0x675a, 0, 0, 0
|
||||
};
|
||||
|
||||
static const u8 sUnknown_08618158[] = {10, 11, 12};
|
||||
@@ -124,7 +124,7 @@ void CB2_InitBerryFixProgram(void)
|
||||
ResetSpriteData();
|
||||
ResetTasks();
|
||||
ScanlineEffect_Stop();
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
berry_fix_mb_manager = AllocZeroed(0x50);
|
||||
berry_fix_mb_manager->state = 0;
|
||||
berry_fix_mb_manager->unk1 = 6;
|
||||
@@ -203,13 +203,13 @@ static void berry_fix_gpu_set(void)
|
||||
{
|
||||
s32 width, left;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
|
||||
DmaFill32(3, 0, VRAM, VRAM_SIZE);
|
||||
DmaFill32(3, 0, OAM, OAM_SIZE);
|
||||
|
||||
@@ -77,15 +77,27 @@ void ResetBgControlStructs(void)
|
||||
|
||||
void Unused_ResetBgControlStruct(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg(bg) == FALSE)
|
||||
if (!IsInvalidBg(bg))
|
||||
{
|
||||
sGpuBgConfigs.configs[bg] = sZeroedBgControlStruct;
|
||||
}
|
||||
}
|
||||
|
||||
void SetBgControlAttributes(u8 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 screenSize, u8 paletteMode, u8 priority, u8 mosaic, u8 wraparound)
|
||||
enum
|
||||
{
|
||||
if (IsInvalidBg(bg) == FALSE)
|
||||
BG_CTRL_ATTR_VISIBLE = 1,
|
||||
BG_CTRL_ATTR_CHARBASEINDEX = 2,
|
||||
BG_CTRL_ATTR_MAPBASEINDEX = 3,
|
||||
BG_CTRL_ATTR_SCREENSIZE = 4,
|
||||
BG_CTRL_ATTR_PALETTEMODE = 5,
|
||||
BG_CTRL_ATTR_PRIORITY = 6,
|
||||
BG_CTRL_ATTR_MOSAIC = 7,
|
||||
BG_CTRL_ATTR_WRAPAROUND = 8,
|
||||
};
|
||||
|
||||
static void SetBgControlAttributes(u8 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 screenSize, u8 paletteMode, u8 priority, u8 mosaic, u8 wraparound)
|
||||
{
|
||||
if (!IsInvalidBg(bg))
|
||||
{
|
||||
if (charBaseIndex != 0xFF)
|
||||
{
|
||||
@@ -129,9 +141,9 @@ void SetBgControlAttributes(u8 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 screenS
|
||||
}
|
||||
}
|
||||
|
||||
u16 GetBgControlAttribute(u8 bg, u8 attributeId)
|
||||
static u16 GetBgControlAttribute(u8 bg, u8 attributeId)
|
||||
{
|
||||
if (IsInvalidBg(bg) == FALSE && sGpuBgConfigs.configs[bg].visible != FALSE)
|
||||
if (!IsInvalidBg(bg) && sGpuBgConfigs.configs[bg].visible)
|
||||
{
|
||||
switch (attributeId)
|
||||
{
|
||||
@@ -162,7 +174,7 @@ u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode)
|
||||
u16 offset;
|
||||
s8 cursor;
|
||||
|
||||
if (IsInvalidBg(bg) == FALSE && sGpuBgConfigs.configs[bg].visible != FALSE)
|
||||
if (!IsInvalidBg(bg) && sGpuBgConfigs.configs[bg].visible)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
@@ -198,7 +210,7 @@ end:
|
||||
static void ShowBgInternal(u8 bg)
|
||||
{
|
||||
u16 value;
|
||||
if (IsInvalidBg(bg) == FALSE && sGpuBgConfigs.configs[bg].visible != FALSE)
|
||||
if (!IsInvalidBg(bg) && sGpuBgConfigs.configs[bg].visible)
|
||||
{
|
||||
value = sGpuBgConfigs.configs[bg].priority |
|
||||
(sGpuBgConfigs.configs[bg].charBaseIndex << 2) |
|
||||
@@ -217,7 +229,7 @@ static void ShowBgInternal(u8 bg)
|
||||
|
||||
static void HideBgInternal(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg(bg) == FALSE)
|
||||
if (!IsInvalidBg(bg))
|
||||
{
|
||||
sGpuBgConfigs.bgVisibilityAndMode &= ~(1 << (bg + 8));
|
||||
sGpuBgConfigs.bgVisibilityAndMode &= DISPCNT_ALL_BG_AND_MODE_BITS;
|
||||
@@ -226,12 +238,12 @@ static void HideBgInternal(u8 bg)
|
||||
|
||||
static void SyncBgVisibilityAndMode(void)
|
||||
{
|
||||
SetGpuReg(0, (GetGpuReg(0) & ~DISPCNT_ALL_BG_AND_MODE_BITS) | sGpuBgConfigs.bgVisibilityAndMode);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, (GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_ALL_BG_AND_MODE_BITS) | sGpuBgConfigs.bgVisibilityAndMode);
|
||||
}
|
||||
|
||||
void SetTextModeAndHideBgs(void)
|
||||
{
|
||||
SetGpuReg(0, GetGpuReg(0) & ~DISPCNT_ALL_BG_AND_MODE_BITS);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_ALL_BG_AND_MODE_BITS);
|
||||
}
|
||||
|
||||
static void SetBgAffineInternal(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle)
|
||||
@@ -312,7 +324,8 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT
|
||||
for (i = 0; i < numTemplates; i++)
|
||||
{
|
||||
bg = templates[i].bg;
|
||||
if (bg < 4) {
|
||||
if (bg < 4)
|
||||
{
|
||||
SetBgControlAttributes(bg,
|
||||
templates[i].charBaseIndex,
|
||||
templates[i].mapBaseIndex,
|
||||
@@ -396,9 +409,7 @@ u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset)
|
||||
|
||||
u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset)
|
||||
{
|
||||
u8 cursor;
|
||||
|
||||
cursor = LoadBgVram(bg, src, size, destOffset * 2, DISPCNT_MODE_2);
|
||||
u8 cursor = LoadBgVram(bg, src, size, destOffset * 2, DISPCNT_MODE_2);
|
||||
|
||||
if (cursor == 0xFF)
|
||||
{
|
||||
@@ -412,12 +423,11 @@ u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset)
|
||||
|
||||
u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset)
|
||||
{
|
||||
u16 paletteOffset;
|
||||
s8 cursor;
|
||||
|
||||
if (IsInvalidBg32(bg) == FALSE)
|
||||
if (!IsInvalidBg32(bg))
|
||||
{
|
||||
paletteOffset = (sGpuBgConfigs2[bg].basePalette * 0x20) + (destOffset * 2);
|
||||
u16 paletteOffset = (sGpuBgConfigs2[bg].basePalette * 0x20) + (destOffset * 2);
|
||||
cursor = RequestDma3Copy(src, (void*)(paletteOffset + BG_PLTT), size, 0);
|
||||
|
||||
if (cursor == -1)
|
||||
@@ -437,20 +447,16 @@ u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset)
|
||||
|
||||
bool8 IsDma3ManagerBusyWithBgCopy(void)
|
||||
{
|
||||
u8 mod;
|
||||
u8 div;
|
||||
s8 reqSpace;
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 0x80; i++)
|
||||
{
|
||||
div = i / 0x20;
|
||||
mod = i % 0x20;
|
||||
u8 div = i / 0x20;
|
||||
u8 mod = i % 0x20;
|
||||
|
||||
if ((sDmaBusyBitfield[div] & (1 << mod)) != FALSE)
|
||||
if ((sDmaBusyBitfield[div] & (1 << mod)))
|
||||
{
|
||||
reqSpace = CheckForSpaceForDma3Request(i);
|
||||
s8 reqSpace = CheckForSpaceForDma3Request(i);
|
||||
if (reqSpace == -1)
|
||||
{
|
||||
return TRUE;
|
||||
@@ -479,25 +485,25 @@ void SetBgAttribute(u8 bg, u8 attributeId, u8 value)
|
||||
{
|
||||
switch (attributeId)
|
||||
{
|
||||
case 1:
|
||||
case BG_ATTR_CHARBASEINDEX:
|
||||
SetBgControlAttributes(bg, value, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
case 2:
|
||||
case BG_ATTR_MAPBASEINDEX:
|
||||
SetBgControlAttributes(bg, 0xFF, value, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
case 3:
|
||||
case BG_ATTR_SCREENSIZE:
|
||||
SetBgControlAttributes(bg, 0xFF, 0xFF, value, 0xFF, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
case 4:
|
||||
case BG_ATTR_PALETTEMODE:
|
||||
SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, value, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
case 7:
|
||||
case BG_ATTR_PRIORITY:
|
||||
SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, value, 0xFF, 0xFF);
|
||||
break;
|
||||
case 5:
|
||||
case BG_ATTR_MOSAIC:
|
||||
SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, value, 0xFF);
|
||||
break;
|
||||
case 6:
|
||||
case BG_ATTR_WRAPAROUND:
|
||||
SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, value);
|
||||
break;
|
||||
}
|
||||
@@ -507,21 +513,21 @@ u16 GetBgAttribute(u8 bg, u8 attributeId)
|
||||
{
|
||||
switch (attributeId)
|
||||
{
|
||||
case 1:
|
||||
case BG_ATTR_CHARBASEINDEX:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_CHARBASEINDEX);
|
||||
case 2:
|
||||
case BG_ATTR_MAPBASEINDEX:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_MAPBASEINDEX);
|
||||
case 3:
|
||||
case BG_ATTR_SCREENSIZE:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
case 4:
|
||||
case BG_ATTR_PALETTEMODE:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE);
|
||||
case 7:
|
||||
case BG_ATTR_PRIORITY:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_PRIORITY);
|
||||
case 5:
|
||||
case BG_ATTR_MOSAIC:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_MOSAIC);
|
||||
case 6:
|
||||
case BG_ATTR_WRAPAROUND:
|
||||
return GetBgControlAttribute(bg, BG_CTRL_ATTR_WRAPAROUND);
|
||||
case 8:
|
||||
case BG_ATTR_METRIC:
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
case 0:
|
||||
@@ -531,9 +537,9 @@ u16 GetBgAttribute(u8 bg, u8 attributeId)
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
case 9:
|
||||
case BG_ATTR_TYPE:
|
||||
return GetBgType(bg);
|
||||
case 10:
|
||||
case BG_ATTR_BASETILE:
|
||||
return sGpuBgConfigs2[bg].baseTile;
|
||||
default:
|
||||
return -1;
|
||||
@@ -546,7 +552,7 @@ s32 ChangeBgX(u8 bg, s32 value, u8 op)
|
||||
u16 temp1;
|
||||
u16 temp2;
|
||||
|
||||
if (IsInvalidBg32(bg) != FALSE || GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
|
||||
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -612,9 +618,9 @@ s32 ChangeBgX(u8 bg, s32 value, u8 op)
|
||||
|
||||
s32 GetBgX(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg) != FALSE)
|
||||
if (IsInvalidBg32(bg))
|
||||
return -1;
|
||||
else if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
|
||||
else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
return -1;
|
||||
else
|
||||
return sGpuBgConfigs2[bg].bg_x;
|
||||
@@ -626,7 +632,7 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op)
|
||||
u16 temp1;
|
||||
u16 temp2;
|
||||
|
||||
if (IsInvalidBg32(bg) != FALSE || GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
|
||||
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -696,7 +702,7 @@ s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op)
|
||||
u16 temp1;
|
||||
u16 temp2;
|
||||
|
||||
if (IsInvalidBg32(bg) != FALSE || GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
|
||||
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -763,9 +769,9 @@ s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op)
|
||||
|
||||
s32 GetBgY(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg) != FALSE)
|
||||
if (IsInvalidBg32(bg))
|
||||
return -1;
|
||||
else if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
|
||||
else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
return -1;
|
||||
else
|
||||
return sGpuBgConfigs2[bg].bg_y;
|
||||
@@ -849,7 +855,7 @@ u8 Unused_AdjustBgMosaic(u8 a1, u8 a2)
|
||||
|
||||
void SetBgTilemapBuffer(u8 bg, void *tilemap)
|
||||
{
|
||||
if (IsInvalidBg32(bg) == FALSE && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) != 0x0)
|
||||
if (!IsInvalidBg32(bg) && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
sGpuBgConfigs2[bg].tilemap = tilemap;
|
||||
}
|
||||
@@ -857,7 +863,7 @@ void SetBgTilemapBuffer(u8 bg, void *tilemap)
|
||||
|
||||
void UnsetBgTilemapBuffer(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg) == FALSE && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) != 0x0)
|
||||
if (!IsInvalidBg32(bg) && GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
sGpuBgConfigs2[bg].tilemap = NULL;
|
||||
}
|
||||
@@ -865,9 +871,9 @@ void UnsetBgTilemapBuffer(u8 bg)
|
||||
|
||||
void* GetBgTilemapBuffer(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg) != FALSE)
|
||||
if (IsInvalidBg32(bg))
|
||||
return NULL;
|
||||
else if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
|
||||
else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
return NULL;
|
||||
else
|
||||
return sGpuBgConfigs2[bg].tilemap;
|
||||
@@ -875,7 +881,7 @@ void* GetBgTilemapBuffer(u8 bg)
|
||||
|
||||
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset)
|
||||
{
|
||||
if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
if (mode != 0)
|
||||
CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode);
|
||||
@@ -888,7 +894,7 @@ void CopyBgTilemapBufferToVram(u8 bg)
|
||||
{
|
||||
u16 sizeToLoad;
|
||||
|
||||
if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
@@ -908,12 +914,12 @@ void CopyBgTilemapBufferToVram(u8 bg)
|
||||
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
|
||||
{
|
||||
const void* srcCopy;
|
||||
const void *srcCopy;
|
||||
u16 destX16;
|
||||
u16 destY16;
|
||||
u16 mode;
|
||||
|
||||
if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
@@ -997,29 +1003,29 @@ void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width,
|
||||
u16 y16;
|
||||
u16 mode;
|
||||
|
||||
if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
case 0:
|
||||
for (y16 = y; y16 < (y + height); y16++)
|
||||
case 0:
|
||||
for (y16 = y; y16 < (y + height); y16++)
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
((u16*)sGpuBgConfigs2[bg].tilemap)[((y16 * 0x20) + x16)] = tileNum;
|
||||
}
|
||||
((u16*)sGpuBgConfigs2[bg].tilemap)[((y16 * 0x20) + x16)] = tileNum;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
mode = GetBgMetricAffineMode(bg, 0x1);
|
||||
for (y16 = y; y16 < (y + height); y16++)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
mode = GetBgMetricAffineMode(bg, 0x1);
|
||||
for (y16 = y; y16 < (y + height); y16++)
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
((u8*)sGpuBgConfigs2[bg].tilemap)[((y16 * mode) + x16)] = tileNum;
|
||||
}
|
||||
((u8*)sGpuBgConfigs2[bg].tilemap)[((y16 * mode) + x16)] = tileNum;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1071,12 +1077,12 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
|
||||
|
||||
u16 GetBgMetricTextMode(u8 bg, u8 whichMetric)
|
||||
{
|
||||
u8 attribute = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
u8 screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
|
||||
switch (whichMetric)
|
||||
{
|
||||
case 0:
|
||||
switch (attribute)
|
||||
switch (screenSize)
|
||||
{
|
||||
case 0:
|
||||
return 1;
|
||||
@@ -1088,7 +1094,7 @@ u16 GetBgMetricTextMode(u8 bg, u8 whichMetric)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (attribute)
|
||||
switch (screenSize)
|
||||
{
|
||||
case 0:
|
||||
return 1;
|
||||
@@ -1101,7 +1107,7 @@ u16 GetBgMetricTextMode(u8 bg, u8 whichMetric)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (attribute)
|
||||
switch (screenSize)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
@@ -1117,12 +1123,12 @@ u16 GetBgMetricTextMode(u8 bg, u8 whichMetric)
|
||||
|
||||
u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric)
|
||||
{
|
||||
u8 attribute = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
u8 screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
|
||||
switch (whichMetric)
|
||||
{
|
||||
case 0:
|
||||
switch (attribute)
|
||||
switch (screenSize)
|
||||
{
|
||||
case 0:
|
||||
return 0x1;
|
||||
@@ -1136,7 +1142,7 @@ u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric)
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
return 0x10 << attribute;
|
||||
return 0x10 << screenSize;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
+5
-5
@@ -845,7 +845,7 @@ static void sub_80B32B4(u8 taskId)
|
||||
PlayMapChosenOrBattleBGM(MUS_BATTLE20);
|
||||
|
||||
sub_80B3260(gSpecialVar_0x8004);
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
gTrainerBattleOpponent_A = 0x800;
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
gMain.savedCallback = sub_80B360C;
|
||||
@@ -898,7 +898,7 @@ static void sub_80B33BC(u8 taskId)
|
||||
data[0] = 6;
|
||||
break;
|
||||
case 6:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
data[0] = 7;
|
||||
}
|
||||
@@ -911,7 +911,7 @@ static void sub_80B33BC(u8 taskId)
|
||||
|
||||
gLinkPlayers[0].linkType = 0x2211;
|
||||
sub_80B3260(gSpecialVar_0x8004);
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
gTrainerBattleOpponent_A = 0x800;
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
gMain.savedCallback = sub_80B360C;
|
||||
@@ -1008,7 +1008,7 @@ void sub_80B36EC(void)
|
||||
LoadPlayerParty();
|
||||
SavePlayerBag();
|
||||
}
|
||||
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7F);
|
||||
SetWarpDestinationToDynamicWarp(0x7F);
|
||||
}
|
||||
|
||||
void sub_80B371C(void)
|
||||
@@ -1123,7 +1123,7 @@ static void sub_80B3894(u8 taskId)
|
||||
data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_8013F78();
|
||||
DestroyTask(taskId);
|
||||
|
||||
@@ -12,17 +12,9 @@
|
||||
#include "overworld.h"
|
||||
#include "wallclock.h"
|
||||
|
||||
// static types
|
||||
|
||||
// static declarations
|
||||
|
||||
static void UpdatePerDay(struct Time *localTime);
|
||||
static void UpdatePerMinute(struct Time *localTime);
|
||||
|
||||
// rodata
|
||||
|
||||
// text
|
||||
|
||||
static void InitTimeBasedEvents(void)
|
||||
{
|
||||
FlagSet(FLAG_SYS_CLOCK_SET);
|
||||
|
||||
+3
-4
@@ -217,7 +217,6 @@ extern const u8 gText_0827D597[];
|
||||
extern const struct ContestPokemon gContestOpponents[96];
|
||||
extern const u8 gUnknown_085898A4[96];
|
||||
extern const struct CompressedSpriteSheet gUnknown_08587C00;
|
||||
extern const u8 gContest2Pal[];
|
||||
extern const struct SpriteTemplate gSpriteTemplate_8587BE8;
|
||||
extern const struct CompressedSpriteSheet gUnknown_08587C08;
|
||||
extern const struct CompressedSpritePalette gUnknown_08587C10;
|
||||
@@ -285,7 +284,7 @@ void sub_80D779C(void)
|
||||
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, gUnknown_08587F34, ARRAY_COUNT(gUnknown_08587F34));
|
||||
SetBgAttribute(3, BG_CTRL_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(3, BG_ATTR_WRAPAROUND, 1);
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
SetBgTilemapBuffer(i, gContestResources->field_24[i]);
|
||||
@@ -474,14 +473,14 @@ void sub_80D7CB4(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
// fallthrough
|
||||
case 1:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_800ADF8();
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
return;
|
||||
case 2:
|
||||
if (sub_800A520() != TRUE)
|
||||
if (IsLinkTaskFinished() != TRUE)
|
||||
return;
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
|
||||
@@ -0,0 +1,771 @@
|
||||
#include "global.h"
|
||||
#include "contest_painting_effects.h"
|
||||
#include "contest_painting.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern u8 gUnknown_03006164;
|
||||
extern u16 (*gUnknown_03006168)[][32];
|
||||
extern u8 gUnknown_0300616C;
|
||||
extern u8 gUnknown_03006170;
|
||||
extern u8 gUnknown_03006174;
|
||||
extern u8 gUnknown_03006178;
|
||||
extern u8 gUnknown_0300617C;
|
||||
extern u8 gUnknown_03006180;
|
||||
|
||||
// this file's functions
|
||||
void sub_8125230(void);
|
||||
void sub_81252E8(void);
|
||||
void sub_81254E0(void);
|
||||
void sub_8125630(void);
|
||||
void sub_8125448(void);
|
||||
void sub_81257F8(void);
|
||||
void sub_81258A0(void);
|
||||
void sub_81256C8(void);
|
||||
void sub_8125250(void);
|
||||
void sub_81253A4(u8);
|
||||
void sub_81250B8(u8);
|
||||
void sub_8125170(u8);
|
||||
void sub_8125954(u16);
|
||||
u16 ConvertColorToGrayscale(u16*);
|
||||
u16 sub_8125E18(u16*, u16*, u16*);
|
||||
u16 ConvertCoolColor(u16*, u8);
|
||||
u16 ConvertToBlackOrWhite(u16*);
|
||||
u16 sub_8125C98(u16*, u16*);
|
||||
u16 InvertColor(u16*);
|
||||
u16 sub_8125F38(u16*, u16*, u16*);
|
||||
u16 sub_8125CF4(u16*, u16*);
|
||||
u16 GetCoolColorFromPersonality(u8);
|
||||
|
||||
void sub_8124F2C(struct Unk030061A0 *info)
|
||||
{
|
||||
gUnknown_03006168 = info->var_4;
|
||||
gUnknown_0300617C = info->var_1F;
|
||||
gUnknown_03006164 = info->var_19;
|
||||
gUnknown_03006178 = info->var_1A;
|
||||
gUnknown_03006174 = info->var_1B;
|
||||
gUnknown_0300616C = info->var_1C;
|
||||
gUnknown_03006180 = info->var_1D;
|
||||
gUnknown_03006170 = info->var_1E;
|
||||
switch (info->var_0)
|
||||
{
|
||||
case 2:
|
||||
sub_8125230();
|
||||
break;
|
||||
case 8:
|
||||
sub_81252E8();
|
||||
break;
|
||||
case 9:
|
||||
sub_81254E0();
|
||||
sub_81253A4(gUnknown_0300617C);
|
||||
break;
|
||||
case 10:
|
||||
sub_81254E0();
|
||||
sub_8125630();
|
||||
sub_8125448();
|
||||
case 31:
|
||||
sub_8125630();
|
||||
break;
|
||||
case 11:
|
||||
sub_81254E0();
|
||||
sub_81257F8();
|
||||
sub_81257F8();
|
||||
sub_81258A0();
|
||||
sub_8125448();
|
||||
break;
|
||||
case 13:
|
||||
sub_81256C8();
|
||||
break;
|
||||
case 30:
|
||||
sub_81254E0();
|
||||
break;
|
||||
case 32:
|
||||
sub_81257F8();
|
||||
break;
|
||||
case 33:
|
||||
sub_81258A0();
|
||||
break;
|
||||
case 6:
|
||||
sub_8125250();
|
||||
sub_81250B8(3);
|
||||
break;
|
||||
case 36:
|
||||
sub_81254E0();
|
||||
sub_81257F8();
|
||||
sub_81258A0();
|
||||
sub_8125448();
|
||||
sub_81252E8();
|
||||
sub_81252E8();
|
||||
sub_81250B8(2);
|
||||
sub_8125170(4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16* pal = &var2[gUnknown_03006164];
|
||||
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||
{
|
||||
if (!(0x8000 & *pal))
|
||||
{
|
||||
u8 val = (31 & *pal);
|
||||
val += a0;
|
||||
if (val > 31)
|
||||
val = 31;
|
||||
|
||||
*pal = RGB2(val, val, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8125170(u8 a0)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16* pal = &var2[gUnknown_03006164];
|
||||
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||
{
|
||||
if (!(0x8000 & *pal))
|
||||
{
|
||||
u8 val = (31 & *pal);
|
||||
if (val > 31 - a0)
|
||||
val = 31 - (a0 >> 1);
|
||||
|
||||
*pal = RGB2(val, val, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8125230(void)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < 3200; i++)
|
||||
sub_8125954(i);
|
||||
}
|
||||
|
||||
void sub_8125250(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16* color = &var2[gUnknown_03006164];
|
||||
for (j = 0; j < gUnknown_03006174; j++, color++)
|
||||
{
|
||||
if (!(0x8000 & *color))
|
||||
{
|
||||
*color = ConvertColorToGrayscale(color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81252E8(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_03006174; i++)
|
||||
{
|
||||
u16* var0 = &(*gUnknown_03006168)[0][gUnknown_03006178 * gUnknown_03006180];
|
||||
u16* palette = &var0[gUnknown_03006164 + i];
|
||||
u16 color = *palette;
|
||||
|
||||
j = 1;
|
||||
palette += gUnknown_03006180;
|
||||
while (j < gUnknown_0300616C - 1)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = sub_8125E18(&color, palette, palette + gUnknown_03006180);
|
||||
color = *palette;
|
||||
}
|
||||
|
||||
j++;
|
||||
palette += gUnknown_03006180;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81253A4(u8 arg0)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16* var0 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16* color = &var0[gUnknown_03006164];
|
||||
for (j = 0; j < gUnknown_03006174; j++, color++)
|
||||
{
|
||||
if (!(0x8000 & *color))
|
||||
{
|
||||
*color = ConvertCoolColor(color, arg0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8125448(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16* var0 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16* color = &var0[gUnknown_03006164];
|
||||
for (j = 0; j < gUnknown_03006174; j++, color++)
|
||||
{
|
||||
if (!(0x8000 & *color))
|
||||
{
|
||||
*color = ConvertToBlackOrWhite(color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81254E0(void)
|
||||
{
|
||||
u8 i, j;
|
||||
u16 *palette;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16 *var0 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
palette = &var0[gUnknown_03006164];
|
||||
*palette = sub_8125C98(palette, palette + 1);
|
||||
for (j = 1, palette = palette + 1; j < gUnknown_03006174 - 1; j++, palette++)
|
||||
{
|
||||
*palette = sub_8125C98(palette, palette + 1);
|
||||
*palette = sub_8125C98(palette, palette - 1);
|
||||
}
|
||||
|
||||
*palette = sub_8125C98(palette, palette - 1);
|
||||
}
|
||||
|
||||
for (j = 0; j < gUnknown_03006174; j++)
|
||||
{
|
||||
u16 *var0 = &(*gUnknown_03006168)[0][gUnknown_03006178 * gUnknown_03006180];
|
||||
palette = &var0[gUnknown_03006164 + j];
|
||||
*palette = sub_8125C98(palette, palette + gUnknown_03006180);
|
||||
for (i = 1, palette = palette + gUnknown_03006180; i < gUnknown_0300616C - 1; i++, palette += gUnknown_03006180)
|
||||
{
|
||||
*palette = sub_8125C98(palette, palette + gUnknown_03006180);
|
||||
*palette = sub_8125C98(palette, palette - gUnknown_03006180);
|
||||
}
|
||||
|
||||
*palette = sub_8125C98(palette, palette - gUnknown_03006180);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8125630(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16 *var0 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16 *color = &var0[gUnknown_03006164];
|
||||
for (j = 0; j < gUnknown_03006174; j++, color++)
|
||||
{
|
||||
if (!(0x8000 & *color))
|
||||
{
|
||||
*color = InvertColor(color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81256C8(void)
|
||||
{
|
||||
u8 i, j;
|
||||
u16 *palette;
|
||||
u16 color;
|
||||
|
||||
palette = (*gUnknown_03006168)[0];
|
||||
for (i = 0; i < 64; i++)
|
||||
{
|
||||
for (j = 0; j < 64; j++, palette++)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = InvertColor(palette);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < 64; j++)
|
||||
{
|
||||
palette = &(*gUnknown_03006168)[0][j];
|
||||
color = *palette;
|
||||
*palette = 0x8000;
|
||||
for (i = 1, palette += 64; i < 63; i++, palette += 64)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = sub_8125F38(&color, palette, palette + 64);
|
||||
color = *palette;
|
||||
}
|
||||
}
|
||||
|
||||
*palette = 0x8000;
|
||||
palette = &(*gUnknown_03006168)[0][j];
|
||||
color = *palette;
|
||||
*palette = 0x8000;
|
||||
for (i = 1, palette += 64; i < 63; i++, palette += 64)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = sub_8125F38(&color, palette, palette + 64);
|
||||
color = *palette;
|
||||
}
|
||||
}
|
||||
|
||||
*palette = 0x8000;
|
||||
}
|
||||
|
||||
palette = (*gUnknown_03006168)[0];
|
||||
for (i = 0; i < 64; i++)
|
||||
{
|
||||
for (j = 0; j < 64; j++, palette++)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = InvertColor(palette);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81257F8(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_0300616C; i++)
|
||||
{
|
||||
u16 *var0 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||
u16 *palette = &var0[gUnknown_03006164];
|
||||
u16 color = *palette;
|
||||
for (j = 1, palette++; j < gUnknown_03006174 - 1; j++, palette++)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = sub_8125CF4(&color, palette);
|
||||
color = *palette;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81258A0(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_03006174; i++)
|
||||
{
|
||||
u16* var0 = &(*gUnknown_03006168)[0][gUnknown_03006178 * gUnknown_03006180];
|
||||
u16* palette = &var0[gUnknown_03006164 + i];
|
||||
u16 color = *palette;
|
||||
for (j = 1, palette += gUnknown_03006180; j < gUnknown_0300616C - 1; j++, palette += gUnknown_03006180)
|
||||
{
|
||||
if (!(0x8000 & *palette))
|
||||
{
|
||||
*palette = sub_8125CF4(&color, palette);
|
||||
color = *palette;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct Unk8125954
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
};
|
||||
|
||||
extern const u8 gUnknown_085A1F94[][3];
|
||||
|
||||
void sub_8125954(u16 arg0)
|
||||
{
|
||||
u8 i;
|
||||
u8 r5, r9;
|
||||
struct Unk8125954 unkStruct[6];
|
||||
|
||||
unkStruct[0].unk0 = gUnknown_085A1F94[arg0][0];
|
||||
unkStruct[0].unk1 = gUnknown_085A1F94[arg0][1];
|
||||
unkStruct[0].unk2 = (gUnknown_085A1F94[arg0][2] >> 3) & 7;
|
||||
|
||||
r9 = (gUnknown_085A1F94[arg0][2] >> 1) & 3;
|
||||
r5 = gUnknown_085A1F94[arg0][2] & 1;
|
||||
for (i = 1; i < unkStruct[0].unk2; i++)
|
||||
{
|
||||
if (!r5)
|
||||
{
|
||||
unkStruct[i].unk0 = unkStruct[0].unk0 - i;
|
||||
unkStruct[i].unk1 = unkStruct[0].unk1 + i;
|
||||
}
|
||||
else
|
||||
{
|
||||
unkStruct[i].unk0 = unkStruct[0].unk0 + 1;
|
||||
unkStruct[i].unk1 = unkStruct[0].unk1 - 1;
|
||||
}
|
||||
|
||||
if (unkStruct[i].unk0 > 63 || unkStruct[i].unk1 > 63)
|
||||
{
|
||||
unkStruct[0].unk2 = i - 1;
|
||||
break;
|
||||
}
|
||||
|
||||
unkStruct[i].unk2 = unkStruct[0].unk2 - i;
|
||||
}
|
||||
|
||||
for (i = 0; i < unkStruct[0].unk2; i++)
|
||||
{
|
||||
u16 *pal = &(*gUnknown_03006168)[unkStruct[i].unk1 * 2][unkStruct[i].unk0];
|
||||
|
||||
if (!(0x8000 & *pal))
|
||||
{
|
||||
u16 r = (*pal) & 0x1F;
|
||||
u16 g = (*pal >> 5) & 0x1F;
|
||||
u16 b = (*pal >> 10) & 0x1F;
|
||||
|
||||
switch (r9)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
switch (((gUnknown_085A1F94[arg0][2] >> 3) & 7) % 3)
|
||||
{
|
||||
case 0:
|
||||
if (r >= unkStruct[i].unk2)
|
||||
r -= unkStruct[i].unk2;
|
||||
else
|
||||
r = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (g >= unkStruct[i].unk2)
|
||||
g -= unkStruct[i].unk2;
|
||||
else
|
||||
g = 0;
|
||||
break;
|
||||
case 2:
|
||||
if (b >= unkStruct[i].unk2)
|
||||
b -= unkStruct[i].unk2;
|
||||
else
|
||||
b = 0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
r += unkStruct[i].unk2;
|
||||
g += unkStruct[i].unk2;
|
||||
b += unkStruct[i].unk2;
|
||||
if (r > 31)
|
||||
r = 31;
|
||||
if (g > 31)
|
||||
g = 31;
|
||||
if (b > 31)
|
||||
b = 31;
|
||||
break;
|
||||
}
|
||||
|
||||
*pal = RGB2(r, g, b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u16 ConvertColorToGrayscale(u16 *color)
|
||||
{
|
||||
s32 clr = *color;
|
||||
s32 r = clr & 0x1F;
|
||||
s32 g = (clr >> 5) & 0x1F;
|
||||
s32 b = (clr >> 10) & 0x1F;
|
||||
s32 gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
|
||||
return RGB2(gray, gray, gray);
|
||||
}
|
||||
|
||||
// The dark colors are the colored edges of the Cool painting effect.
|
||||
// Everything else is white.
|
||||
u16 ConvertCoolColor(u16 *color, u8 personality)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
|
||||
if (red < 17 && green < 17 && blue < 17)
|
||||
return GetCoolColorFromPersonality(personality);
|
||||
else
|
||||
return RGB_WHITE;
|
||||
}
|
||||
|
||||
// Based on the given value, which comes from the first 8 bits of
|
||||
// the mon's personality value, return a color.
|
||||
u16 GetCoolColorFromPersonality(u8 personality)
|
||||
{
|
||||
u16 red = 0;
|
||||
u16 green = 0;
|
||||
u16 blue = 0;
|
||||
u8 strength = (personality / 6) % 3;
|
||||
u8 colorType = personality % 6;
|
||||
|
||||
switch (colorType)
|
||||
{
|
||||
case 0:
|
||||
// Teal color
|
||||
green = 21 - strength;
|
||||
blue = green;
|
||||
red = 0;
|
||||
break;
|
||||
case 1:
|
||||
// Yellow color
|
||||
blue = 0;
|
||||
red = 21 - strength;
|
||||
green = red;
|
||||
break;
|
||||
case 2:
|
||||
// Purple color
|
||||
blue = 21 - strength;
|
||||
green = 0;
|
||||
red = blue;
|
||||
break;
|
||||
case 3:
|
||||
// Red color
|
||||
blue = 0;
|
||||
green = 0;
|
||||
red = 23 - strength;
|
||||
break;
|
||||
case 4:
|
||||
// Blue color
|
||||
blue = 23 - strength;
|
||||
green = 0;
|
||||
red = 0;
|
||||
break;
|
||||
case 5:
|
||||
// Green color
|
||||
blue = 0;
|
||||
green = 23 - strength;
|
||||
red = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return RGB2(red, green, blue);
|
||||
}
|
||||
|
||||
u16 ConvertToBlackOrWhite(u16 *color)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
|
||||
if (red < 17 && green < 17 && blue < 17)
|
||||
return RGB_BLACK;
|
||||
else
|
||||
return RGB_WHITE;
|
||||
}
|
||||
|
||||
u16 sub_8125C98(u16 *colorA, u16 *colorB)
|
||||
{
|
||||
if (*colorA)
|
||||
{
|
||||
if (*colorA & 0x8000)
|
||||
return 0x8000;
|
||||
if (*colorB & 0x8000)
|
||||
return RGB_BLACK;
|
||||
|
||||
return *colorA;
|
||||
}
|
||||
|
||||
return RGB_BLACK;
|
||||
}
|
||||
|
||||
u16 InvertColor(u16 *color)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
|
||||
red = 31 - red;
|
||||
green = 31 - green;
|
||||
blue = 31 - blue;
|
||||
|
||||
return RGB2(red, green, blue);
|
||||
}
|
||||
|
||||
u16 sub_8125CF4(u16 *a0, u16 *a1)
|
||||
{
|
||||
u16 sp0[2][3];
|
||||
u16 spC[3];
|
||||
u8 r4;
|
||||
u16 r2;
|
||||
u16 r, g, b;
|
||||
|
||||
if (*a0 == *a1)
|
||||
return *a1;
|
||||
|
||||
sp0[0][0] = (*a0 >> 0) & 0x1F;
|
||||
sp0[0][1] = (*a0 >> 5) & 0x1F;
|
||||
sp0[0][2] = (*a0 >> 10) & 0x1F;
|
||||
sp0[1][0] = (*a1 >> 0) & 0x1F;
|
||||
sp0[1][1] = (*a1 >> 5) & 0x1F;
|
||||
sp0[1][2] = (*a1 >> 10) & 0x1F;
|
||||
|
||||
if (sp0[0][0] > 25 && sp0[0][1] > 25 && sp0[0][2] > 25)
|
||||
return *a1;
|
||||
if (sp0[1][0] > 25 && sp0[1][1] > 25 && sp0[1][2] > 25)
|
||||
return *a1;
|
||||
|
||||
for (r4 = 0; r4 < 3; r4++)
|
||||
{
|
||||
if (sp0[0][r4] > sp0[1][r4])
|
||||
spC[r4] = sp0[0][r4] - sp0[1][r4];
|
||||
else
|
||||
spC[r4] = sp0[1][r4] - sp0[0][r4];
|
||||
}
|
||||
|
||||
if (spC[0] >= spC[1])
|
||||
{
|
||||
if (spC[0] >= spC[2])
|
||||
r2 = spC[0];
|
||||
else if (spC[1] >= spC[2])
|
||||
r2 = spC[1];
|
||||
else
|
||||
r2 = spC[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (spC[1] >= spC[2])
|
||||
r2 = spC[1];
|
||||
else if (spC[2] >= spC[0])
|
||||
r2 = spC[2];
|
||||
else
|
||||
r2 = spC[0];
|
||||
}
|
||||
|
||||
r = (sp0[1][0] * (31 - r2 / 2)) / 31;
|
||||
g = (sp0[1][1] * (31 - r2 / 2)) / 31;
|
||||
b = (sp0[1][2] * (31 - r2 / 2)) / 31;
|
||||
return RGB2(r, g, b);
|
||||
}
|
||||
|
||||
u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
|
||||
{
|
||||
u16 red, green, blue;
|
||||
u16 avg0, avg1, avg2;
|
||||
u16 diff1, diff2;
|
||||
u32 minimum;
|
||||
u16 factor;
|
||||
|
||||
if (*a0 == *a1 && *a2 == *a1)
|
||||
return *a1;
|
||||
|
||||
red = (*a1 >> 0) & 0x1F;
|
||||
green = (*a1 >> 5) & 0x1F;
|
||||
blue = (*a1 >> 10) & 0x1F;
|
||||
|
||||
avg0 = (((*a0 >> 0) & 0x1F) + ((*a0 >> 5) & 0x1F) + ((*a0 >> 10) & 0x1F)) / 3;
|
||||
avg1 = (((*a1 >> 0) & 0x1F) + ((*a1 >> 5) & 0x1F) + ((*a1 >> 10) & 0x1F)) / 3;
|
||||
avg2 = (((*a2 >> 0) & 0x1F) + ((*a2 >> 5) & 0x1F) + ((*a2 >> 10) & 0x1F)) / 3;
|
||||
|
||||
if (avg0 == avg1 && avg2 == avg1)
|
||||
return *a1;
|
||||
|
||||
if (avg0 > avg1)
|
||||
diff1 = avg0 - avg1;
|
||||
else
|
||||
diff1 = avg1 - avg0;
|
||||
|
||||
if (avg2 > avg1)
|
||||
diff2 = avg2 - avg1;
|
||||
else
|
||||
diff2 = avg1 - avg2;
|
||||
|
||||
if (diff1 >= diff2)
|
||||
minimum = diff1;
|
||||
else
|
||||
minimum = diff2;
|
||||
|
||||
factor = 31 - minimum / 2;
|
||||
red = red * factor / 31;
|
||||
green = green * factor / 31;
|
||||
blue = blue * factor / 31;
|
||||
return RGB2(red, green, blue);
|
||||
}
|
||||
|
||||
u16 sub_8125F38(u16 *a0, u16 *a1, u16 *a2)
|
||||
{
|
||||
u16 red, green, blue;
|
||||
u16 avg0, avg1, avg2;
|
||||
u16 diff1, diff2;
|
||||
u32 minimum;
|
||||
u16 factor;
|
||||
|
||||
if (*a0 == *a1 && *a2 == *a1)
|
||||
return *a1;
|
||||
|
||||
red = (*a1 >> 0) & 0x1F;
|
||||
green = (*a1 >> 5) & 0x1F;
|
||||
blue = (*a1 >> 10) & 0x1F;
|
||||
|
||||
avg0 = (((*a0 >> 0) & 0x1F) + ((*a0 >> 5) & 0x1F) + ((*a0 >> 10) & 0x1F)) / 3;
|
||||
avg1 = (((*a1 >> 0) & 0x1F) + ((*a1 >> 5) & 0x1F) + ((*a1 >> 10) & 0x1F)) / 3;
|
||||
avg2 = (((*a2 >> 0) & 0x1F) + ((*a2 >> 5) & 0x1F) + ((*a2 >> 10) & 0x1F)) / 3;
|
||||
|
||||
if (avg0 == avg1 && avg2 == avg1)
|
||||
return *a1;
|
||||
|
||||
if (avg0 > avg1)
|
||||
diff1 = avg0 - avg1;
|
||||
else
|
||||
diff1 = avg1 - avg0;
|
||||
|
||||
if (avg2 > avg1)
|
||||
diff2 = avg2 - avg1;
|
||||
else
|
||||
diff2 = avg1 - avg2;
|
||||
|
||||
if (diff1 >= diff2)
|
||||
minimum = diff1;
|
||||
else
|
||||
minimum = diff2;
|
||||
|
||||
factor = 31 - minimum;
|
||||
red = red * factor / 31;
|
||||
green = green * factor / 31;
|
||||
blue = blue * factor / 31;
|
||||
return RGB2(red, green, blue);
|
||||
}
|
||||
|
||||
/*
|
||||
void sub_8126058(struct Unk030061A0 *arg0)
|
||||
{
|
||||
u16 i, j, k;
|
||||
u8 r5 = arg0->var_1D >> 3;
|
||||
u8 var_24 = arg0->var_1E >> 3;
|
||||
u16 (*var_2C)[][32] = arg0->var_4;
|
||||
u32 var_28 = arg0->var_10;
|
||||
|
||||
if (arg0->var_16 == 2)
|
||||
{
|
||||
for (i = 0; i < var_24; i++)
|
||||
{
|
||||
for (j = 0; j < r5; j++)
|
||||
{
|
||||
for (k = 0; k < 8; k++)
|
||||
{
|
||||
(*var_2C)[][];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
+2
-2
@@ -2219,8 +2219,8 @@ static void sub_8177050(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0xF40);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x10);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
||||
sprite->oam.objMode = 1;
|
||||
sprite->data[3] = 16;
|
||||
sprite->data[0] += 1;
|
||||
|
||||
+10
-10
@@ -357,22 +357,22 @@ void sub_8113A90(struct Sprite *sprite)
|
||||
switch (gBattleAnimArgs[1])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x = sub_80A861C(battler, 5) - 8;
|
||||
sprite->pos1.y = sub_80A861C(battler, 2) + 8;
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.x = sub_80A861C(battler, 5) - 14;
|
||||
sprite->pos1.y = sub_80A861C(battler, 2) + 16;
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos1.x = sub_80A861C(battler, 4) + 8;
|
||||
sprite->pos1.y = sub_80A861C(battler, 2) + 8;
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
xOffset = -20;
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos1.x = sub_80A861C(battler, 4) + 14;
|
||||
sprite->pos1.y = sub_80A861C(battler, 2) + 16;
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
xOffset = -20;
|
||||
break;
|
||||
@@ -403,7 +403,7 @@ void sub_8113BAC(u8 taskId)
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 31;
|
||||
task->data[6] = sub_80A861C(gBattleAnimAttacker, 2) - 7;
|
||||
task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) - 7;
|
||||
task->data[5] = task->data[7];
|
||||
task->data[4] = task->data[6];
|
||||
task->data[13] = (task->data[7] - task->data[6]) << 8;
|
||||
@@ -576,7 +576,7 @@ void sub_8113E78(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 31;
|
||||
task->data[6] = sub_80A861C(gBattleAnimTarget, 2) - 7;
|
||||
task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) - 7;
|
||||
task->data[13] = (task->data[7] - task->data[6]) << 8;
|
||||
x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
task->data[14] = x - 4;
|
||||
|
||||
@@ -62,9 +62,6 @@ static const u8 sMapName_AbandonedShip[] = _("ABANDONED SHIP");
|
||||
static const u8 sMapName_NewMauville[] = _("NEW MAUVILLE");
|
||||
static const u8 sMapName_MeteorFalls[] = _("METEOR FALLS");
|
||||
static const u8 sMapName_MtPyre[] = _("MT. PYRE");
|
||||
// This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
|
||||
// hideout in Emerald with their own new region map entries, and this name
|
||||
// doesn't seem to be used anymore.
|
||||
static const u8 sMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT");
|
||||
static const u8 sMapName_ShoalCave[] = _("SHOAL CAVE");
|
||||
static const u8 sMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
|
||||
@@ -203,219 +200,219 @@ static const u8 sMapName_DesertUnderpass[] = _("DESERT UNDERPASS");
|
||||
static const u8 sMapName_TrainerHill[] = _("TRAINER HILL");
|
||||
|
||||
const struct RegionMapLocation gRegionMapEntries[] = {
|
||||
{ 4, 11, 1, 1, sMapName_LittlerootTown},
|
||||
{ 4, 9, 1, 1, sMapName_OldaleTown},
|
||||
{ 2, 14, 1, 1, sMapName_DewfordTown},
|
||||
{ 5, 3, 1, 1, sMapName_LavaridgeTown},
|
||||
{ 3, 0, 1, 1, sMapName_FallarborTown},
|
||||
{ 4, 6, 1, 1, sMapName_VerdanturfTown},
|
||||
{17, 10, 1, 1, sMapName_PacifidlogTown},
|
||||
{ 1, 9, 1, 1, sMapName_PetalburgCity},
|
||||
{ 8, 10, 1, 2, sMapName_SlateportCity},
|
||||
{ 8, 6, 2, 1, sMapName_MauvilleCity},
|
||||
{ 0, 5, 1, 2, sMapName_RustboroCity},
|
||||
{12, 0, 1, 1, sMapName_FortreeCity},
|
||||
{18, 3, 2, 1, sMapName_LilycoveCity},
|
||||
{24, 5, 2, 1, sMapName_MossdeepCity},
|
||||
{21, 7, 1, 1, sMapName_SootopolisCity},
|
||||
{27, 8, 1, 2, sMapName_EverGrandeCity},
|
||||
{ 4, 10, 1, 1, sMapName_Route101},
|
||||
{ 2, 9, 2, 1, sMapName_Route102},
|
||||
{ 4, 8, 4, 1, sMapName_Route103},
|
||||
{ 0, 7, 1, 3, sMapName_Route104},
|
||||
{ 0, 10, 1, 3, sMapName_Route105},
|
||||
{ 0, 13, 2, 1, sMapName_Route106},
|
||||
{ 3, 14, 3, 1, sMapName_Route107},
|
||||
{ 6, 14, 2, 1, sMapName_Route108},
|
||||
{ 8, 12, 1, 3, sMapName_Route109},
|
||||
{ 8, 7, 1, 3, sMapName_Route110},
|
||||
{ 8, 0, 1, 6, sMapName_Route111},
|
||||
{ 6, 3, 2, 1, sMapName_Route112},
|
||||
{ 4, 0, 4, 1, sMapName_Route113},
|
||||
{ 1, 0, 2, 3, sMapName_Route114},
|
||||
{ 0, 2, 1, 3, sMapName_Route115},
|
||||
{ 1, 5, 4, 1, sMapName_Route116},
|
||||
{ 5, 6, 3, 1, sMapName_Route117},
|
||||
{10, 6, 2, 1, sMapName_Route118},
|
||||
{11, 0, 1, 6, sMapName_Route119},
|
||||
{13, 0, 1, 4, sMapName_Route120},
|
||||
{14, 3, 4, 1, sMapName_Route121},
|
||||
{16, 4, 1, 2, sMapName_Route122},
|
||||
{12, 6, 5, 1, sMapName_Route123},
|
||||
{20, 3, 4, 3, sMapName_Route124},
|
||||
{24, 3, 2, 2, sMapName_Route125},
|
||||
{20, 6, 3, 3, sMapName_Route126},
|
||||
{23, 6, 3, 3, sMapName_Route127},
|
||||
{23, 9, 4, 1, sMapName_Route128},
|
||||
{24, 10, 2, 1, sMapName_Route129},
|
||||
{21, 10, 3, 1, sMapName_Route130},
|
||||
{18, 10, 3, 1, sMapName_Route131},
|
||||
{15, 10, 2, 1, sMapName_Route132},
|
||||
{12, 10, 3, 1, sMapName_Route133},
|
||||
{ 9, 10, 3, 1, sMapName_Route134},
|
||||
{20, 3, 4, 3, sMapName_Underwater},
|
||||
{20, 6, 3, 3, sMapName_Underwater},
|
||||
{23, 6, 3, 3, sMapName_Underwater},
|
||||
{23, 9, 4, 1, sMapName_Underwater},
|
||||
{21, 7, 1, 1, sMapName_Underwater},
|
||||
{ 1, 13, 1, 1, sMapName_GraniteCave},
|
||||
{ 6, 2, 1, 1, sMapName_MtChimney},
|
||||
{16, 2, 1, 1, sMapName_SafariZone},
|
||||
{22, 12, 1, 1, sMapName_BattleFrontier},
|
||||
{ 0, 8, 1, 1, sMapName_PetalburgWoods},
|
||||
{ 2, 5, 1, 1, sMapName_RusturfTunnel},
|
||||
{ 6, 14, 1, 1, sMapName_AbandonedShip},
|
||||
{ 8, 7, 1, 1, sMapName_NewMauville},
|
||||
{ 0, 3, 1, 1, sMapName_MeteorFalls},
|
||||
{ 1, 2, 1, 1, sMapName_MeteorFalls},
|
||||
{16, 4, 1, 1, sMapName_MtPyre},
|
||||
{19, 3, 1, 1, sMapName_AquaHideoutOld},
|
||||
{24, 4, 1, 1, sMapName_ShoalCave},
|
||||
{24, 9, 1, 1, sMapName_SeafloorCavern},
|
||||
{24, 9, 1, 1, sMapName_Underwater},
|
||||
{27, 9, 1, 1, sMapName_VictoryRoad},
|
||||
{17, 10, 1, 1, sMapName_MirageIsland},
|
||||
{21, 7, 1, 1, sMapName_CaveOfOrigin},
|
||||
{12, 14, 1, 1, sMapName_SouthernIsland},
|
||||
{ 6, 3, 1, 1, sMapName_FieryPath},
|
||||
{ 7, 3, 1, 1, sMapName_FieryPath},
|
||||
{ 6, 3, 1, 1, sMapName_JaggedPass},
|
||||
{ 7, 2, 1, 1, sMapName_JaggedPass},
|
||||
{11, 10, 1, 1, sMapName_SealedChamber},
|
||||
{11, 10, 1, 1, sMapName_Underwater},
|
||||
{13, 0, 1, 1, sMapName_ScorchedSlab},
|
||||
{ 0, 10, 1, 1, sMapName_IslandCave},
|
||||
{ 8, 3, 1, 1, sMapName_DesertRuins},
|
||||
{13, 2, 1, 1, sMapName_AncientTomb},
|
||||
{ 0, 0, 1, 1, sMapName_InsideOfTruck},
|
||||
{19, 10, 1, 1, sMapName_SkyPillar},
|
||||
{ 0, 0, 1, 1, sMapName_SecretBase},
|
||||
{ 0, 0, 1, 1, sMapName_None},
|
||||
{ 0, 0, 1, 1, sMapName_PalletTown},
|
||||
{ 0, 0, 1, 1, sMapName_ViridianCity},
|
||||
{ 0, 0, 1, 1, sMapName_PewterCity},
|
||||
{ 0, 0, 1, 1, sMapName_CeruleanCity},
|
||||
{ 0, 0, 1, 1, sMapName_LavenderTown},
|
||||
{ 0, 0, 1, 1, sMapName_VermilionCity},
|
||||
{ 0, 0, 1, 1, sMapName_CeladonCity},
|
||||
{ 0, 0, 1, 1, sMapName_FuchsiaCity},
|
||||
{ 0, 0, 1, 1, sMapName_CinnabarIsland},
|
||||
{ 0, 0, 1, 1, sMapName_IndigoPlateau},
|
||||
{ 0, 0, 1, 1, sMapName_SaffronCity},
|
||||
{ 0, 0, 1, 1, sMapName_Route4},
|
||||
{ 0, 0, 1, 1, sMapName_Route10},
|
||||
{ 0, 0, 1, 1, sMapName_Route1},
|
||||
{ 0, 0, 1, 1, sMapName_Route2},
|
||||
{ 0, 0, 1, 1, sMapName_Route3},
|
||||
{ 0, 0, 1, 1, sMapName_Route4_2},
|
||||
{ 0, 0, 1, 1, sMapName_Route5},
|
||||
{ 0, 0, 1, 1, sMapName_Route6},
|
||||
{ 0, 0, 1, 1, sMapName_Route7},
|
||||
{ 0, 0, 1, 1, sMapName_Route8},
|
||||
{ 0, 0, 1, 1, sMapName_Route9},
|
||||
{ 0, 0, 1, 1, sMapName_Route10_2},
|
||||
{ 0, 0, 1, 1, sMapName_Route11},
|
||||
{ 0, 0, 1, 1, sMapName_Route12},
|
||||
{ 0, 0, 1, 1, sMapName_Route13},
|
||||
{ 0, 0, 1, 1, sMapName_Route14},
|
||||
{ 0, 0, 1, 1, sMapName_Route15},
|
||||
{ 0, 0, 1, 1, sMapName_Route16},
|
||||
{ 0, 0, 1, 1, sMapName_Route17},
|
||||
{ 0, 0, 1, 1, sMapName_Route18},
|
||||
{ 0, 0, 1, 1, sMapName_Route19},
|
||||
{ 0, 0, 1, 1, sMapName_Route20},
|
||||
{ 0, 0, 1, 1, sMapName_Route21},
|
||||
{ 0, 0, 1, 1, sMapName_Route22},
|
||||
{ 0, 0, 1, 1, sMapName_Route23},
|
||||
{ 0, 0, 1, 1, sMapName_Route24},
|
||||
{ 0, 0, 1, 1, sMapName_Route25},
|
||||
{ 0, 0, 1, 1, sMapName_ViridianForest},
|
||||
{ 0, 0, 1, 1, sMapName_MtMoon},
|
||||
{ 0, 0, 1, 1, sMapName_SSAnne},
|
||||
{ 0, 0, 1, 1, sMapName_UndergroundPath},
|
||||
{ 0, 0, 1, 1, sMapName_UndergroundPath2},
|
||||
{ 0, 0, 1, 1, sMapName_DiglettsCave},
|
||||
{ 0, 0, 1, 1, sMapName_KantoVictoryRoad},
|
||||
{ 0, 0, 1, 1, sMapName_RocketHideout},
|
||||
{ 0, 0, 1, 1, sMapName_SilphCo},
|
||||
{ 0, 0, 1, 1, sMapName_PokemonMansion},
|
||||
{ 0, 0, 1, 1, sMapName_KantoSafariZone},
|
||||
{ 0, 0, 1, 1, sMapName_PokemonLeague},
|
||||
{ 0, 0, 1, 1, sMapName_RockTunnel},
|
||||
{ 0, 0, 1, 1, sMapName_SeafoamIslands},
|
||||
{ 0, 0, 1, 1, sMapName_PokemonTower},
|
||||
{ 0, 0, 1, 1, sMapName_CeruleanCave},
|
||||
{ 0, 0, 1, 1, sMapName_PowerPlant},
|
||||
{ 0, 0, 1, 1, sMapName_OneIsland},
|
||||
{ 0, 0, 1, 1, sMapName_TwoIsland},
|
||||
{ 0, 0, 1, 1, sMapName_ThreeIsland},
|
||||
{ 0, 0, 1, 1, sMapName_FourIsland},
|
||||
{ 0, 0, 1, 1, sMapName_FiveIsland},
|
||||
{ 0, 0, 1, 1, sMapName_SevenIsland},
|
||||
{ 0, 0, 1, 1, sMapName_SixIsland},
|
||||
{ 0, 0, 1, 1, sMapName_KindleRoad},
|
||||
{ 0, 0, 1, 1, sMapName_TreasureBeach},
|
||||
{ 0, 0, 1, 1, sMapName_CapeBrink},
|
||||
{ 0, 0, 1, 1, sMapName_BondBridge},
|
||||
{ 0, 0, 1, 1, sMapName_ThreeIslePort},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle6},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle7},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle8},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle9},
|
||||
{ 0, 0, 1, 1, sMapName_ResortGorgeous},
|
||||
{ 0, 0, 1, 1, sMapName_WaterLabyrinth},
|
||||
{ 0, 0, 1, 1, sMapName_FiveIsleMeadow},
|
||||
{ 0, 0, 1, 1, sMapName_MemorialPillar},
|
||||
{ 0, 0, 1, 1, sMapName_OutcastIsland},
|
||||
{ 0, 0, 1, 1, sMapName_GreenPath},
|
||||
{ 0, 0, 1, 1, sMapName_WaterPath},
|
||||
{ 0, 0, 1, 1, sMapName_RuinValley},
|
||||
{ 0, 0, 1, 1, sMapName_TrainerTower},
|
||||
{ 0, 0, 1, 1, sMapName_CanyonEntrance},
|
||||
{ 0, 0, 1, 1, sMapName_SevaultCanyon},
|
||||
{ 0, 0, 1, 1, sMapName_TanobyRuins},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle22},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle23},
|
||||
{ 0, 0, 1, 1, sMapName_SeviiIsle24},
|
||||
{ 0, 0, 1, 1, sMapName_NavelRock},
|
||||
{ 0, 0, 1, 1, sMapName_MtEmber},
|
||||
{ 0, 0, 1, 1, sMapName_BerryForest},
|
||||
{ 0, 0, 1, 1, sMapName_IcefallCave},
|
||||
{ 0, 0, 1, 1, sMapName_RocketWarehouse},
|
||||
{ 0, 0, 1, 1, sMapName_TrainerTower2},
|
||||
{ 0, 0, 1, 1, sMapName_DottedHole},
|
||||
{ 0, 0, 1, 1, sMapName_LostCave},
|
||||
{ 0, 0, 1, 1, sMapName_PatternBush},
|
||||
{ 0, 0, 1, 1, sMapName_AlteringCave},
|
||||
{ 0, 0, 1, 1, sMapName_TanobyChambers},
|
||||
{ 0, 0, 1, 1, sMapName_ThreeIslePath},
|
||||
{ 0, 0, 1, 1, sMapName_TanobyKey},
|
||||
{ 0, 0, 1, 1, sMapName_BirthIsland},
|
||||
{ 0, 0, 1, 1, sMapName_MoneanChamber},
|
||||
{ 0, 0, 1, 1, sMapName_LiptooChamber},
|
||||
{ 0, 0, 1, 1, sMapName_WeepthChamber},
|
||||
{ 0, 0, 1, 1, sMapName_DilfordChamber},
|
||||
{ 0, 0, 1, 1, sMapName_ScufibChamber},
|
||||
{ 0, 0, 1, 1, sMapName_RixyChamber},
|
||||
{ 0, 0, 1, 1, sMapName_ViapoisChamber},
|
||||
{ 0, 0, 1, 1, sMapName_EmberSpa},
|
||||
{ 0, 0, 1, 1, sMapName_SpecialArea},
|
||||
{19, 3, 1, 1, sMapName_AquaHideout},
|
||||
{ 6, 3, 1, 1, sMapName_MagmaHideout},
|
||||
{ 8, 2, 1, 1, sMapName_MirageTower},
|
||||
{ 0, 0, 1, 1, sMapName_BirthIsland},
|
||||
{ 0, 0, 1, 1, sMapName_FarawayIsland},
|
||||
{22, 12, 1, 1, sMapName_ArtisanCave},
|
||||
{ 0, 0, 1, 1, sMapName_MarineCave},
|
||||
{ 0, 0, 1, 1, sMapName_Underwater},
|
||||
{ 0, 0, 1, 1, sMapName_TerraCave},
|
||||
{ 0, 10, 1, 3, sMapName_Underwater},
|
||||
{24, 3, 2, 2, sMapName_Underwater},
|
||||
{24, 10, 2, 1, sMapName_Underwater},
|
||||
{ 2, 0, 1, 1, sMapName_DesertUnderpass},
|
||||
{ 6, 8, 1, 1, sMapName_AlteringCave},
|
||||
{ 0, 0, 1, 1, sMapName_NavelRock},
|
||||
{ 8, 4, 1, 1, sMapName_TrainerHill}
|
||||
[MAPSEC_LITTLEROOT_TOWN] = { 4, 11, 1, 1, sMapName_LittlerootTown},
|
||||
[MAPSEC_OLDALE_TOWN] = { 4, 9, 1, 1, sMapName_OldaleTown},
|
||||
[MAPSEC_DEWFORD_TOWN] = { 2, 14, 1, 1, sMapName_DewfordTown},
|
||||
[MAPSEC_LAVARIDGE_TOWN] = { 5, 3, 1, 1, sMapName_LavaridgeTown},
|
||||
[MAPSEC_FALLARBOR_TOWN] = { 3, 0, 1, 1, sMapName_FallarborTown},
|
||||
[MAPSEC_VERDANTURF_TOWN] = { 4, 6, 1, 1, sMapName_VerdanturfTown},
|
||||
[MAPSEC_PACIFIDLOG_TOWN] = {17, 10, 1, 1, sMapName_PacifidlogTown},
|
||||
[MAPSEC_PETALBURG_CITY] = { 1, 9, 1, 1, sMapName_PetalburgCity},
|
||||
[MAPSEC_SLATEPORT_CITY] = { 8, 10, 1, 2, sMapName_SlateportCity},
|
||||
[MAPSEC_MAUVILLE_CITY] = { 8, 6, 2, 1, sMapName_MauvilleCity},
|
||||
[MAPSEC_RUSTBORO_CITY] = { 0, 5, 1, 2, sMapName_RustboroCity},
|
||||
[MAPSEC_FORTREE_CITY] = {12, 0, 1, 1, sMapName_FortreeCity},
|
||||
[MAPSEC_LILYCOVE_CITY] = {18, 3, 2, 1, sMapName_LilycoveCity},
|
||||
[MAPSEC_MOSSDEEP_CITY] = {24, 5, 2, 1, sMapName_MossdeepCity},
|
||||
[MAPSEC_SOOTOPOLIS_CITY] = {21, 7, 1, 1, sMapName_SootopolisCity},
|
||||
[MAPSEC_EVER_GRANDE_CITY] = {27, 8, 1, 2, sMapName_EverGrandeCity},
|
||||
[MAPSEC_ROUTE_101] = { 4, 10, 1, 1, sMapName_Route101},
|
||||
[MAPSEC_ROUTE_102] = { 2, 9, 2, 1, sMapName_Route102},
|
||||
[MAPSEC_ROUTE_103] = { 4, 8, 4, 1, sMapName_Route103},
|
||||
[MAPSEC_ROUTE_104] = { 0, 7, 1, 3, sMapName_Route104},
|
||||
[MAPSEC_ROUTE_105] = { 0, 10, 1, 3, sMapName_Route105},
|
||||
[MAPSEC_ROUTE_106] = { 0, 13, 2, 1, sMapName_Route106},
|
||||
[MAPSEC_ROUTE_107] = { 3, 14, 3, 1, sMapName_Route107},
|
||||
[MAPSEC_ROUTE_108] = { 6, 14, 2, 1, sMapName_Route108},
|
||||
[MAPSEC_ROUTE_109] = { 8, 12, 1, 3, sMapName_Route109},
|
||||
[MAPSEC_ROUTE_110] = { 8, 7, 1, 3, sMapName_Route110},
|
||||
[MAPSEC_ROUTE_111] = { 8, 0, 1, 6, sMapName_Route111},
|
||||
[MAPSEC_ROUTE_112] = { 6, 3, 2, 1, sMapName_Route112},
|
||||
[MAPSEC_ROUTE_113] = { 4, 0, 4, 1, sMapName_Route113},
|
||||
[MAPSEC_ROUTE_114] = { 1, 0, 2, 3, sMapName_Route114},
|
||||
[MAPSEC_ROUTE_115] = { 0, 2, 1, 3, sMapName_Route115},
|
||||
[MAPSEC_ROUTE_116] = { 1, 5, 4, 1, sMapName_Route116},
|
||||
[MAPSEC_ROUTE_117] = { 5, 6, 3, 1, sMapName_Route117},
|
||||
[MAPSEC_ROUTE_118] = {10, 6, 2, 1, sMapName_Route118},
|
||||
[MAPSEC_ROUTE_119] = {11, 0, 1, 6, sMapName_Route119},
|
||||
[MAPSEC_ROUTE_120] = {13, 0, 1, 4, sMapName_Route120},
|
||||
[MAPSEC_ROUTE_121] = {14, 3, 4, 1, sMapName_Route121},
|
||||
[MAPSEC_ROUTE_122] = {16, 4, 1, 2, sMapName_Route122},
|
||||
[MAPSEC_ROUTE_123] = {12, 6, 5, 1, sMapName_Route123},
|
||||
[MAPSEC_ROUTE_124] = {20, 3, 4, 3, sMapName_Route124},
|
||||
[MAPSEC_ROUTE_125] = {24, 3, 2, 2, sMapName_Route125},
|
||||
[MAPSEC_ROUTE_126] = {20, 6, 3, 3, sMapName_Route126},
|
||||
[MAPSEC_ROUTE_127] = {23, 6, 3, 3, sMapName_Route127},
|
||||
[MAPSEC_ROUTE_128] = {23, 9, 4, 1, sMapName_Route128},
|
||||
[MAPSEC_ROUTE_129] = {24, 10, 2, 1, sMapName_Route129},
|
||||
[MAPSEC_ROUTE_130] = {21, 10, 3, 1, sMapName_Route130},
|
||||
[MAPSEC_ROUTE_131] = {18, 10, 3, 1, sMapName_Route131},
|
||||
[MAPSEC_ROUTE_132] = {15, 10, 2, 1, sMapName_Route132},
|
||||
[MAPSEC_ROUTE_133] = {12, 10, 3, 1, sMapName_Route133},
|
||||
[MAPSEC_ROUTE_134] = { 9, 10, 3, 1, sMapName_Route134},
|
||||
[MAPSEC_UNDERWATER_124] = {20, 3, 4, 3, sMapName_Underwater},
|
||||
[MAPSEC_UNDERWATER_125] = {20, 6, 3, 3, sMapName_Underwater},
|
||||
[MAPSEC_UNDERWATER_126] = {23, 6, 3, 3, sMapName_Underwater},
|
||||
[MAPSEC_UNDERWATER_127] = {23, 9, 4, 1, sMapName_Underwater},
|
||||
[MAPSEC_UNDERWATER_SOOTOPOLIS] = {21, 7, 1, 1, sMapName_Underwater},
|
||||
[MAPSEC_GRANITE_CAVE] = { 1, 13, 1, 1, sMapName_GraniteCave},
|
||||
[MAPSEC_MT_CHIMNEY] = { 6, 2, 1, 1, sMapName_MtChimney},
|
||||
[MAPSEC_SAFARI_ZONE] = {16, 2, 1, 1, sMapName_SafariZone},
|
||||
[MAPSEC_BATTLE_FRONTIER] = {22, 12, 1, 1, sMapName_BattleFrontier},
|
||||
[MAPSEC_PETALBURG_WOODS] = { 0, 8, 1, 1, sMapName_PetalburgWoods},
|
||||
[MAPSEC_RUSTURF_TUNNEL] = { 2, 5, 1, 1, sMapName_RusturfTunnel},
|
||||
[MAPSEC_ABANDONED_SHIP] = { 6, 14, 1, 1, sMapName_AbandonedShip},
|
||||
[MAPSEC_NEW_MAUVILLE] = { 8, 7, 1, 1, sMapName_NewMauville},
|
||||
[MAPSEC_METEOR_FALLS] = { 0, 3, 1, 1, sMapName_MeteorFalls},
|
||||
[MAPSEC_METEOR_FALLS2] = { 1, 2, 1, 1, sMapName_MeteorFalls},
|
||||
[MAPSEC_MT_PYRE] = {16, 4, 1, 1, sMapName_MtPyre},
|
||||
[MAPSEC_AQUA_HIDEOUT_OLD] = {19, 3, 1, 1, sMapName_AquaHideoutOld},
|
||||
[MAPSEC_SHOAL_CAVE] = {24, 4, 1, 1, sMapName_ShoalCave},
|
||||
[MAPSEC_SEAFLOOR_CAVERN] = {24, 9, 1, 1, sMapName_SeafloorCavern},
|
||||
[MAPSEC_UNDERWATER_128] = {24, 9, 1, 1, sMapName_Underwater},
|
||||
[MAPSEC_VICTORY_ROAD] = {27, 9, 1, 1, sMapName_VictoryRoad},
|
||||
[MAPSEC_MIRAGE_ISLAND] = {17, 10, 1, 1, sMapName_MirageIsland},
|
||||
[MAPSEC_CAVE_OF_ORIGIN] = {21, 7, 1, 1, sMapName_CaveOfOrigin},
|
||||
[MAPSEC_SOUTHERN_ISLAND] = {12, 14, 1, 1, sMapName_SouthernIsland},
|
||||
[MAPSEC_FIERY_PATH] = { 6, 3, 1, 1, sMapName_FieryPath},
|
||||
[MAPSEC_FIERY_PATH2] = { 7, 3, 1, 1, sMapName_FieryPath},
|
||||
[MAPSEC_JAGGED_PASS] = { 6, 3, 1, 1, sMapName_JaggedPass},
|
||||
[MAPSEC_JAGGED_PASS2] = { 7, 2, 1, 1, sMapName_JaggedPass},
|
||||
[MAPSEC_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_SealedChamber},
|
||||
[MAPSEC_UNDERWATER_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_Underwater},
|
||||
[MAPSEC_SCORCHED_SLAB] = {13, 0, 1, 1, sMapName_ScorchedSlab},
|
||||
[MAPSEC_ISLAND_CAVE] = { 0, 10, 1, 1, sMapName_IslandCave},
|
||||
[MAPSEC_DESERT_RUINS] = { 8, 3, 1, 1, sMapName_DesertRuins},
|
||||
[MAPSEC_ANCIENT_TOMB] = {13, 2, 1, 1, sMapName_AncientTomb},
|
||||
[MAPSEC_INSIDE_OF_TRUCK] = { 0, 0, 1, 1, sMapName_InsideOfTruck},
|
||||
[MAPSEC_SKY_PILLAR] = {19, 10, 1, 1, sMapName_SkyPillar},
|
||||
[MAPSEC_SECRET_BASE] = { 0, 0, 1, 1, sMapName_SecretBase},
|
||||
[MAPSEC_DYNAMIC] = { 0, 0, 1, 1, sMapName_None},
|
||||
[MAPSEC_PALLET_TOWN] = { 0, 0, 1, 1, sMapName_PalletTown},
|
||||
[MAPSEC_VIRIDIAN_CITY] = { 0, 0, 1, 1, sMapName_ViridianCity},
|
||||
[MAPSEC_PEWTER_CITY] = { 0, 0, 1, 1, sMapName_PewterCity},
|
||||
[MAPSEC_CERULEAN_CITY] = { 0, 0, 1, 1, sMapName_CeruleanCity},
|
||||
[MAPSEC_LAVENDER_TOWN] = { 0, 0, 1, 1, sMapName_LavenderTown},
|
||||
[MAPSEC_VERMILION_CITY] = { 0, 0, 1, 1, sMapName_VermilionCity},
|
||||
[MAPSEC_CELADON_CITY] = { 0, 0, 1, 1, sMapName_CeladonCity},
|
||||
[MAPSEC_FUCHSIA_CITY] = { 0, 0, 1, 1, sMapName_FuchsiaCity},
|
||||
[MAPSEC_CINNABAR_ISLAND] = { 0, 0, 1, 1, sMapName_CinnabarIsland},
|
||||
[MAPSEC_INDIGO_PLATEAU] = { 0, 0, 1, 1, sMapName_IndigoPlateau},
|
||||
[MAPSEC_SAFFRON_CITY] = { 0, 0, 1, 1, sMapName_SaffronCity},
|
||||
[MAPSEC_ROUTE_4_FLYDUP] = { 0, 0, 1, 1, sMapName_Route4},
|
||||
[MAPSEC_ROUTE_10_FLYDUP] = { 0, 0, 1, 1, sMapName_Route10},
|
||||
[MAPSEC_ROUTE_1] = { 0, 0, 1, 1, sMapName_Route1},
|
||||
[MAPSEC_ROUTE_2] = { 0, 0, 1, 1, sMapName_Route2},
|
||||
[MAPSEC_ROUTE_3] = { 0, 0, 1, 1, sMapName_Route3},
|
||||
[MAPSEC_ROUTE_4] = { 0, 0, 1, 1, sMapName_Route4_2},
|
||||
[MAPSEC_ROUTE_5] = { 0, 0, 1, 1, sMapName_Route5},
|
||||
[MAPSEC_ROUTE_6] = { 0, 0, 1, 1, sMapName_Route6},
|
||||
[MAPSEC_ROUTE_7] = { 0, 0, 1, 1, sMapName_Route7},
|
||||
[MAPSEC_ROUTE_8] = { 0, 0, 1, 1, sMapName_Route8},
|
||||
[MAPSEC_ROUTE_9] = { 0, 0, 1, 1, sMapName_Route9},
|
||||
[MAPSEC_ROUTE_10] = { 0, 0, 1, 1, sMapName_Route10_2},
|
||||
[MAPSEC_ROUTE_11] = { 0, 0, 1, 1, sMapName_Route11},
|
||||
[MAPSEC_ROUTE_12] = { 0, 0, 1, 1, sMapName_Route12},
|
||||
[MAPSEC_ROUTE_13] = { 0, 0, 1, 1, sMapName_Route13},
|
||||
[MAPSEC_ROUTE_14] = { 0, 0, 1, 1, sMapName_Route14},
|
||||
[MAPSEC_ROUTE_15] = { 0, 0, 1, 1, sMapName_Route15},
|
||||
[MAPSEC_ROUTE_16] = { 0, 0, 1, 1, sMapName_Route16},
|
||||
[MAPSEC_ROUTE_17] = { 0, 0, 1, 1, sMapName_Route17},
|
||||
[MAPSEC_ROUTE_18] = { 0, 0, 1, 1, sMapName_Route18},
|
||||
[MAPSEC_ROUTE_19] = { 0, 0, 1, 1, sMapName_Route19},
|
||||
[MAPSEC_ROUTE_20] = { 0, 0, 1, 1, sMapName_Route20},
|
||||
[MAPSEC_ROUTE_21] = { 0, 0, 1, 1, sMapName_Route21},
|
||||
[MAPSEC_ROUTE_22] = { 0, 0, 1, 1, sMapName_Route22},
|
||||
[MAPSEC_ROUTE_23] = { 0, 0, 1, 1, sMapName_Route23},
|
||||
[MAPSEC_ROUTE_24] = { 0, 0, 1, 1, sMapName_Route24},
|
||||
[MAPSEC_ROUTE_25] = { 0, 0, 1, 1, sMapName_Route25},
|
||||
[MAPSEC_VIRIDIAN_FOREST] = { 0, 0, 1, 1, sMapName_ViridianForest},
|
||||
[MAPSEC_MT_MOON] = { 0, 0, 1, 1, sMapName_MtMoon},
|
||||
[MAPSEC_S_S_ANNE] = { 0, 0, 1, 1, sMapName_SSAnne},
|
||||
[MAPSEC_UNDERGROUND_PATH] = { 0, 0, 1, 1, sMapName_UndergroundPath},
|
||||
[MAPSEC_UNDERGROUND_PATH_2] = { 0, 0, 1, 1, sMapName_UndergroundPath2},
|
||||
[MAPSEC_DIGLETTS_CAVE] = { 0, 0, 1, 1, sMapName_DiglettsCave},
|
||||
[MAPSEC_KANTO_VICTORY_ROAD] = { 0, 0, 1, 1, sMapName_KantoVictoryRoad},
|
||||
[MAPSEC_ROCKET_HIDEOUT] = { 0, 0, 1, 1, sMapName_RocketHideout},
|
||||
[MAPSEC_SILPH_CO] = { 0, 0, 1, 1, sMapName_SilphCo},
|
||||
[MAPSEC_POKEMON_MANSION] = { 0, 0, 1, 1, sMapName_PokemonMansion},
|
||||
[MAPSEC_KANTO_SAFARI_ZONE] = { 0, 0, 1, 1, sMapName_KantoSafariZone},
|
||||
[MAPSEC_POKEMON_LEAGUE] = { 0, 0, 1, 1, sMapName_PokemonLeague},
|
||||
[MAPSEC_ROCK_TUNNEL] = { 0, 0, 1, 1, sMapName_RockTunnel},
|
||||
[MAPSEC_SEAFOAM_ISLANDS] = { 0, 0, 1, 1, sMapName_SeafoamIslands},
|
||||
[MAPSEC_POKEMON_TOWER] = { 0, 0, 1, 1, sMapName_PokemonTower},
|
||||
[MAPSEC_CERULEAN_CAVE] = { 0, 0, 1, 1, sMapName_CeruleanCave},
|
||||
[MAPSEC_POWER_PLANT] = { 0, 0, 1, 1, sMapName_PowerPlant},
|
||||
[MAPSEC_ONE_ISLAND] = { 0, 0, 1, 1, sMapName_OneIsland},
|
||||
[MAPSEC_TWO_ISLAND] = { 0, 0, 1, 1, sMapName_TwoIsland},
|
||||
[MAPSEC_THREE_ISLAND] = { 0, 0, 1, 1, sMapName_ThreeIsland},
|
||||
[MAPSEC_FOUR_ISLAND] = { 0, 0, 1, 1, sMapName_FourIsland},
|
||||
[MAPSEC_FIVE_ISLAND] = { 0, 0, 1, 1, sMapName_FiveIsland},
|
||||
[MAPSEC_SEVEN_ISLAND] = { 0, 0, 1, 1, sMapName_SevenIsland},
|
||||
[MAPSEC_SIX_ISLAND] = { 0, 0, 1, 1, sMapName_SixIsland},
|
||||
[MAPSEC_KINDLE_ROAD] = { 0, 0, 1, 1, sMapName_KindleRoad},
|
||||
[MAPSEC_TREASURE_BEACH] = { 0, 0, 1, 1, sMapName_TreasureBeach},
|
||||
[MAPSEC_CAPE_BRINK] = { 0, 0, 1, 1, sMapName_CapeBrink},
|
||||
[MAPSEC_BOND_BRIDGE] = { 0, 0, 1, 1, sMapName_BondBridge},
|
||||
[MAPSEC_THREE_ISLE_PORT] = { 0, 0, 1, 1, sMapName_ThreeIslePort},
|
||||
[MAPSEC_SEVII_ISLE_6] = { 0, 0, 1, 1, sMapName_SeviiIsle6},
|
||||
[MAPSEC_SEVII_ISLE_7] = { 0, 0, 1, 1, sMapName_SeviiIsle7},
|
||||
[MAPSEC_SEVII_ISLE_8] = { 0, 0, 1, 1, sMapName_SeviiIsle8},
|
||||
[MAPSEC_SEVII_ISLE_9] = { 0, 0, 1, 1, sMapName_SeviiIsle9},
|
||||
[MAPSEC_RESORT_GORGEOUS] = { 0, 0, 1, 1, sMapName_ResortGorgeous},
|
||||
[MAPSEC_WATER_LABYRINTH] = { 0, 0, 1, 1, sMapName_WaterLabyrinth},
|
||||
[MAPSEC_FIVE_ISLE_MEADOW] = { 0, 0, 1, 1, sMapName_FiveIsleMeadow},
|
||||
[MAPSEC_MEMORIAL_PILLAR] = { 0, 0, 1, 1, sMapName_MemorialPillar},
|
||||
[MAPSEC_OUTCAST_ISLAND] = { 0, 0, 1, 1, sMapName_OutcastIsland},
|
||||
[MAPSEC_GREEN_PATH] = { 0, 0, 1, 1, sMapName_GreenPath},
|
||||
[MAPSEC_WATER_PATH] = { 0, 0, 1, 1, sMapName_WaterPath},
|
||||
[MAPSEC_RUIN_VALLEY] = { 0, 0, 1, 1, sMapName_RuinValley},
|
||||
[MAPSEC_TRAINER_TOWER] = { 0, 0, 1, 1, sMapName_TrainerTower},
|
||||
[MAPSEC_CANYON_ENTRANCE] = { 0, 0, 1, 1, sMapName_CanyonEntrance},
|
||||
[MAPSEC_SEVAULT_CANYON] = { 0, 0, 1, 1, sMapName_SevaultCanyon},
|
||||
[MAPSEC_TANOBY_RUINS] = { 0, 0, 1, 1, sMapName_TanobyRuins},
|
||||
[MAPSEC_SEVII_ISLE_22] = { 0, 0, 1, 1, sMapName_SeviiIsle22},
|
||||
[MAPSEC_SEVII_ISLE_23] = { 0, 0, 1, 1, sMapName_SeviiIsle23},
|
||||
[MAPSEC_SEVII_ISLE_24] = { 0, 0, 1, 1, sMapName_SeviiIsle24},
|
||||
[MAPSEC_NAVEL_ROCK] = { 0, 0, 1, 1, sMapName_NavelRock},
|
||||
[MAPSEC_MT_EMBER] = { 0, 0, 1, 1, sMapName_MtEmber},
|
||||
[MAPSEC_BERRY_FOREST] = { 0, 0, 1, 1, sMapName_BerryForest},
|
||||
[MAPSEC_ICEFALL_CAVE] = { 0, 0, 1, 1, sMapName_IcefallCave},
|
||||
[MAPSEC_ROCKET_WAREHOUSE] = { 0, 0, 1, 1, sMapName_RocketWarehouse},
|
||||
[MAPSEC_TRAINER_TOWER_2] = { 0, 0, 1, 1, sMapName_TrainerTower2},
|
||||
[MAPSEC_DOTTED_HOLE] = { 0, 0, 1, 1, sMapName_DottedHole},
|
||||
[MAPSEC_LOST_CAVE] = { 0, 0, 1, 1, sMapName_LostCave},
|
||||
[MAPSEC_PATTERN_BUSH] = { 0, 0, 1, 1, sMapName_PatternBush},
|
||||
[MAPSEC_ALTERING_CAVE] = { 0, 0, 1, 1, sMapName_AlteringCave},
|
||||
[MAPSEC_TANOBY_CHAMBERS] = { 0, 0, 1, 1, sMapName_TanobyChambers},
|
||||
[MAPSEC_THREE_ISLE_PATH] = { 0, 0, 1, 1, sMapName_ThreeIslePath},
|
||||
[MAPSEC_TANOBY_KEY] = { 0, 0, 1, 1, sMapName_TanobyKey},
|
||||
[MAPSEC_BIRTH_ISLAND] = { 0, 0, 1, 1, sMapName_BirthIsland},
|
||||
[MAPSEC_MONEAN_CHAMBER] = { 0, 0, 1, 1, sMapName_MoneanChamber},
|
||||
[MAPSEC_LIPTOO_CHAMBER] = { 0, 0, 1, 1, sMapName_LiptooChamber},
|
||||
[MAPSEC_WEEPTH_CHAMBER] = { 0, 0, 1, 1, sMapName_WeepthChamber},
|
||||
[MAPSEC_DILFORD_CHAMBER] = { 0, 0, 1, 1, sMapName_DilfordChamber},
|
||||
[MAPSEC_SCUFIB_CHAMBER] = { 0, 0, 1, 1, sMapName_ScufibChamber},
|
||||
[MAPSEC_RIXY_CHAMBER] = { 0, 0, 1, 1, sMapName_RixyChamber},
|
||||
[MAPSEC_VIAPOIS_CHAMBER] = { 0, 0, 1, 1, sMapName_ViapoisChamber},
|
||||
[MAPSEC_EMBER_SPA] = { 0, 0, 1, 1, sMapName_EmberSpa},
|
||||
[MAPSEC_SPECIAL_AREA] = { 0, 0, 1, 1, sMapName_SpecialArea},
|
||||
[MAPSEC_AQUA_HIDEOUT] = {19, 3, 1, 1, sMapName_AquaHideout},
|
||||
[MAPSEC_MAGMA_HIDEOUT] = { 6, 3, 1, 1, sMapName_MagmaHideout},
|
||||
[MAPSEC_MIRAGE_TOWER] = { 8, 2, 1, 1, sMapName_MirageTower},
|
||||
[MAPSEC_BIRTH_ISLAND_2] = { 0, 0, 1, 1, sMapName_BirthIsland},
|
||||
[MAPSEC_FARAWAY_ISLAND] = { 0, 0, 1, 1, sMapName_FarawayIsland},
|
||||
[MAPSEC_ARTISAN_CAVE] = {22, 12, 1, 1, sMapName_ArtisanCave},
|
||||
[MAPSEC_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_MarineCave},
|
||||
[MAPSEC_UNDERWATER_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_Underwater},
|
||||
[MAPSEC_TERRA_CAVE] = { 0, 0, 1, 1, sMapName_TerraCave},
|
||||
[MAPSEC_UNDERWATER_TERRA_CAVE] = { 0, 10, 1, 3, sMapName_Underwater},
|
||||
[MAPSEC_UNDERWATER_UNK1] = {24, 3, 2, 2, sMapName_Underwater},
|
||||
[MAPSEC_UNDERWATER_129] = {24, 10, 2, 1, sMapName_Underwater},
|
||||
[MAPSEC_DESERT_UNDERPASS] = { 2, 0, 1, 1, sMapName_DesertUnderpass},
|
||||
[MAPSEC_ALTERING_CAVE_2] = { 6, 8, 1, 1, sMapName_AlteringCave},
|
||||
[MAPSEC_NAVEL_ROCK2] = { 0, 0, 1, 1, sMapName_NavelRock},
|
||||
[MAPSEC_TRAINER_HILL] = { 8, 4, 1, 1, sMapName_TrainerHill}
|
||||
};
|
||||
|
||||
#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
|
||||
|
||||
+6
-6
@@ -66,7 +66,7 @@ void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePale
|
||||
|
||||
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species)
|
||||
{
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
|
||||
else
|
||||
LZ77UnCompWram(src->data, buffer);
|
||||
@@ -102,7 +102,7 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32
|
||||
else
|
||||
LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
|
||||
}
|
||||
else if (species > SPECIES_EGG) // is species unknown? draw the ? icon
|
||||
else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
|
||||
LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
|
||||
else
|
||||
LZ77UnCompWram(src->data, dest);
|
||||
@@ -499,7 +499,7 @@ bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette
|
||||
|
||||
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species) // a copy of DecompressPicFromTable
|
||||
{
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
|
||||
else
|
||||
LZ77UnCompWram(src->data, buffer);
|
||||
@@ -523,7 +523,7 @@ void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s
|
||||
else
|
||||
LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
|
||||
}
|
||||
else if (species > SPECIES_EGG) // is species unknown? draw the ? icon
|
||||
else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
|
||||
LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
|
||||
else
|
||||
LZ77UnCompWram(src->data, dest);
|
||||
@@ -546,7 +546,7 @@ void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *d
|
||||
|
||||
void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species)
|
||||
{
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
|
||||
else
|
||||
LZ77UnCompWram(src->data, buffer);
|
||||
@@ -581,7 +581,7 @@ void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src
|
||||
else
|
||||
LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
|
||||
}
|
||||
else if (species > SPECIES_EGG) // is species unknown? draw the ? icon
|
||||
else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
|
||||
LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
|
||||
else
|
||||
LZ77UnCompWram(src->data, dest);
|
||||
|
||||
+1
-1
@@ -1131,7 +1131,7 @@ void sub_8127ACC(u8 taskId)
|
||||
void sub_8127B04(u8 taskId)
|
||||
{
|
||||
DrawWholeMapView();
|
||||
Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]);
|
||||
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]);
|
||||
WarpIntoMap();
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -274,8 +274,8 @@ void sub_8113250(struct Sprite *sprite)
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = 1;
|
||||
sprite->data[6] = gBattleAnimArgs[0];
|
||||
r5 = sub_80A861C(gBattlerAttacker, 0);
|
||||
r0 = sub_80A861C(gBattlerAttacker, 1);
|
||||
r5 = GetBattlerSpriteCoordAttr(gBattlerAttacker, BATTLER_COORD_ATTR_HEIGHT);
|
||||
r0 = GetBattlerSpriteCoordAttr(gBattlerAttacker, BATTLER_COORD_ATTR_WIDTH);
|
||||
if (r5 > r0)
|
||||
sprite->data[7] = r5 / 2;
|
||||
else
|
||||
|
||||
+2
-2
@@ -364,7 +364,7 @@ void easy_chat_input_maybe(void)
|
||||
default:
|
||||
return;
|
||||
}
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam);
|
||||
}
|
||||
|
||||
@@ -383,7 +383,7 @@ static void sub_811A7E4(void)
|
||||
{
|
||||
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
|
||||
lilycoveLady->quiz.unk_016 = -1;
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_811A8F0();
|
||||
}
|
||||
return;
|
||||
|
||||
+4
-8
@@ -23,6 +23,7 @@
|
||||
#include "bg.h"
|
||||
#include "m4a.h"
|
||||
#include "window.h"
|
||||
#include "graphics.h"
|
||||
#include "constants/abilities.h"
|
||||
#include "daycare.h"
|
||||
#include "overworld.h"
|
||||
@@ -52,11 +53,6 @@ struct EggHatchData
|
||||
};
|
||||
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
extern const u8 gBattleTextboxTiles[];
|
||||
extern const u8 gBattleTextboxTilemap[];
|
||||
extern const u8 gBattleTextboxPalette[];
|
||||
extern const u16 gTradeGba2_Pal[]; // palette, gameboy advance
|
||||
extern const u32 gTradeGba_Gfx[]; // tileset gameboy advance
|
||||
extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
|
||||
extern const u8 gText_HatchedFromEgg[];
|
||||
extern const u8 gText_NickHatchPrompt[];
|
||||
@@ -379,7 +375,7 @@ static void AddHatchedMonToParty(u8 id)
|
||||
caughtLvl = 0;
|
||||
SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl);
|
||||
|
||||
mapNameID = sav1_map_get_name();
|
||||
mapNameID = GetCurrentRegionMapSectionId();
|
||||
SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
|
||||
|
||||
MonRestorePP(mon);
|
||||
@@ -471,7 +467,7 @@ static void Task_EggHatch(u8 taskID)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_EggHatch_0);
|
||||
gFieldCallback = sub_80AF168;
|
||||
DestroyTask(taskID);
|
||||
@@ -502,7 +498,7 @@ static void CB2_EggHatch_0(void)
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 2);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 2);
|
||||
SetBgTilemapBuffer(1, Alloc(0x1000));
|
||||
SetBgTilemapBuffer(0, Alloc(0x2000));
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "script_movement.h"
|
||||
#include "task.h"
|
||||
#include "trainer_see.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
bool8 walkrun_is_standing_still(void)
|
||||
{
|
||||
@@ -89,20 +90,20 @@ void LockSelectedEventObject(void)
|
||||
|
||||
void ScriptUnfreezeEventObjects(void)
|
||||
{
|
||||
u8 objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
u8 playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
void sub_8098524(void)
|
||||
{
|
||||
u8 objectId;
|
||||
u8 playerObjectId;
|
||||
|
||||
if (gEventObjects[gSelectedEventObject].active)
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
|
||||
objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
@@ -6420,7 +6420,7 @@ bool8 MovementAction_FacePlayer_Step0(struct EventObject *eventObject, struct Sp
|
||||
{
|
||||
u8 playerObjectId;
|
||||
|
||||
if (!TryGetEventObjectIdByLocalIdAndMap(0xFF, 0, 0, &playerObjectId))
|
||||
if (!TryGetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0, &playerObjectId))
|
||||
{
|
||||
FaceDirection(eventObject, sprite, GetDirectionToFace(eventObject->currentCoords.x, eventObject->currentCoords.y, gEventObjects[playerObjectId].currentCoords.x, gEventObjects[playerObjectId].currentCoords.y));
|
||||
}
|
||||
@@ -6432,7 +6432,7 @@ bool8 MovementAction_FaceAwayPlayer_Step0(struct EventObject *eventObject, struc
|
||||
{
|
||||
u8 playerObjectId;
|
||||
|
||||
if (!TryGetEventObjectIdByLocalIdAndMap(0xFF, 0, 0, &playerObjectId))
|
||||
if (!TryGetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0, &playerObjectId))
|
||||
{
|
||||
FaceDirection(eventObject, sprite, GetOppositeDirection(GetDirectionToFace(eventObject->currentCoords.x, eventObject->currentCoords.y, gEventObjects[playerObjectId].currentCoords.x, gEventObjects[playerObjectId].currentCoords.y)));
|
||||
}
|
||||
|
||||
+32
-35
@@ -1,33 +1,34 @@
|
||||
#include "global.h"
|
||||
#include "alloc.h"
|
||||
#include "battle.h"
|
||||
#include "battle_message.h"
|
||||
#include "bg.h"
|
||||
#include "data2.h"
|
||||
#include "decompress.h"
|
||||
#include "evolution_scene.h"
|
||||
#include "evolution_graphics.h"
|
||||
#include "sprite.h"
|
||||
#include "alloc.h"
|
||||
#include "task.h"
|
||||
#include "palette.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "link.h"
|
||||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "overworld.h"
|
||||
#include "palette.h"
|
||||
#include "pokedex.h"
|
||||
#include "pokemon.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "pokemon.h"
|
||||
#include "string_util.h"
|
||||
#include "battle.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "decompress.h"
|
||||
#include "m4a.h"
|
||||
#include "menu.h"
|
||||
#include "pokedex.h"
|
||||
#include "constants/species.h"
|
||||
#include "sound.h"
|
||||
#include "constants/songs.h"
|
||||
#include "overworld.h"
|
||||
#include "battle_message.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "bg.h"
|
||||
#include "link.h"
|
||||
#include "util.h"
|
||||
#include "trig.h"
|
||||
#include "data2.h"
|
||||
#include "trade.h"
|
||||
#include "util.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
struct EvoInfo
|
||||
{
|
||||
@@ -50,12 +51,8 @@ extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
// strings
|
||||
extern const u8 gText_CommunicationStandby5[];
|
||||
|
||||
extern void sub_807B154(void);
|
||||
extern void sub_807F19C(void);
|
||||
extern void sub_807B140(void);
|
||||
extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move);
|
||||
extern u8 sub_81C1B94(void);
|
||||
extern void sub_807F1A8(u8 arg0, const u8 *arg1, u8 arg2);
|
||||
extern void sub_800E084(void);
|
||||
|
||||
// this file's functions
|
||||
@@ -1479,20 +1476,20 @@ static void InitMovingBackgroundTask(bool8 isLink)
|
||||
|
||||
if (!isLink)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x442);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x808);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG2);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG2_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
|
||||
|
||||
SetBgAttribute(innerBgId, BG_CTRL_ATTR_MOSAIC, 2);
|
||||
SetBgAttribute(outerBgId, BG_CTRL_ATTR_MOSAIC, 2);
|
||||
SetBgAttribute(innerBgId, BG_ATTR_PRIORITY, 2);
|
||||
SetBgAttribute(outerBgId, BG_ATTR_PRIORITY, 2);
|
||||
|
||||
ShowBg(1);
|
||||
ShowBg(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x842);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x808);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
|
||||
}
|
||||
|
||||
@@ -1529,8 +1526,8 @@ static void sub_8140174(void)
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
gBattle_BG2_X = 0;
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, sub_80391E0(1, 5));
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, sub_80391E0(2, 5));
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, sub_80391E0(1, 5));
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, sub_80391E0(2, 5));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
|
||||
Free(sEvoMovingBgPtr);
|
||||
}
|
||||
|
||||
+39
-39
@@ -27,7 +27,9 @@
|
||||
#include "trainer_see.h"
|
||||
#include "wild_encounter.h"
|
||||
#include "constants/bg_event_constants.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern bool32 sub_8196034(void);
|
||||
@@ -50,12 +52,12 @@ static bool32 TrySetupDiveDownScript(void);
|
||||
static bool32 TrySetupDiveEmergeScript(void);
|
||||
static bool8 TryStartStepBasedScript(struct MapPosition *, u16, u16);
|
||||
static bool8 CheckStandardWildEncounter(u16);
|
||||
static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8);
|
||||
static bool8 TryArrowWarp(struct MapPosition *, u16, u8);
|
||||
static bool8 IsWarpMetatileBehavior(u16);
|
||||
static bool8 IsArrowWarpMetatileBehavior(u16, u8);
|
||||
static s8 GetWarpEventAtMapPosition(struct MapHeader *, struct MapPosition *);
|
||||
static void sub_809CEB0(struct MapHeader *, s8, struct MapPosition *);
|
||||
static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
|
||||
static void SetupWarp(struct MapHeader *, s8, struct MapPosition *);
|
||||
static bool8 TryDoorWarp(struct MapPosition *, u16, u8);
|
||||
static s8 GetWarpEventAtPosition(struct MapHeader *, u16, u16, u8);
|
||||
static u8 *GetCoordEventScriptAtPosition(struct MapHeader *, u16, u16, u8);
|
||||
static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8);
|
||||
@@ -72,8 +74,8 @@ void FieldClearPlayerInput(struct FieldInput *input)
|
||||
input->checkStandardWildEncounter = FALSE;
|
||||
input->pressedStartButton = FALSE;
|
||||
input->pressedSelectButton = FALSE;
|
||||
input->input_field_0_4 = FALSE;
|
||||
input->input_field_0_5 = FALSE;
|
||||
input->heldDirection = FALSE;
|
||||
input->heldDirection2 = FALSE;
|
||||
input->tookStep = FALSE;
|
||||
input->pressedBButton = FALSE;
|
||||
input->input_field_1_0 = FALSE;
|
||||
@@ -105,8 +107,8 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
|
||||
|
||||
if (heldKeys & (DPAD_UP | DPAD_DOWN | DPAD_LEFT | DPAD_RIGHT))
|
||||
{
|
||||
input->input_field_0_4 = TRUE;
|
||||
input->input_field_0_5 = TRUE;
|
||||
input->heldDirection = TRUE;
|
||||
input->heldDirection2 = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,15 +154,15 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
|
||||
if (input->tookStep)
|
||||
{
|
||||
IncrementGameStat(GAME_STAT_STEPS);
|
||||
increment_var_x4026_on_birth_island_modulo_100();
|
||||
IncrementBirthIslandRockStepCount();
|
||||
if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE)
|
||||
return TRUE;
|
||||
}
|
||||
if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileBehavior) == TRUE)
|
||||
return TRUE;
|
||||
if (input->input_field_0_4 && input->dpadDirection == playerDirection)
|
||||
if (input->heldDirection && input->dpadDirection == playerDirection)
|
||||
{
|
||||
if (mapheader_run_first_tag2_script_list_match_conditionally(&position, metatileBehavior, playerDirection) == TRUE)
|
||||
if (TryArrowWarp(&position, metatileBehavior, playerDirection) == TRUE)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -169,9 +171,9 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
|
||||
if (input->pressedAButton && TryStartInteractionScript(&position, metatileBehavior, playerDirection) == TRUE)
|
||||
return TRUE;
|
||||
|
||||
if (input->input_field_0_5 && input->dpadDirection == playerDirection)
|
||||
if (input->heldDirection2 && input->dpadDirection == playerDirection)
|
||||
{
|
||||
if (map_warp_consider_2_to_inside(&position, metatileBehavior, playerDirection) == TRUE)
|
||||
if (TryDoorWarp(&position, metatileBehavior, playerDirection) == TRUE)
|
||||
return TRUE;
|
||||
}
|
||||
if (input->pressedAButton && TrySetupDiveDownScript() == TRUE)
|
||||
@@ -265,7 +267,7 @@ const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatil
|
||||
else
|
||||
eventObjectId = GetEventObjectIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
|
||||
|
||||
if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF)
|
||||
if (eventObjectId == EVENT_OBJECTS_COUNT || gEventObjects[eventObjectId].localId == EVENT_OBJ_ID_PLAYER)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
@@ -286,14 +288,14 @@ static const u8 *GetInteractedEventObjectScript(struct MapPosition *position, u8
|
||||
const u8 *script;
|
||||
|
||||
eventObjectId = GetEventObjectIdByXYZ(position->x, position->y, position->height);
|
||||
if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF)
|
||||
if (eventObjectId == EVENT_OBJECTS_COUNT || gEventObjects[eventObjectId].localId == EVENT_OBJ_ID_PLAYER)
|
||||
{
|
||||
if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE)
|
||||
return NULL;
|
||||
|
||||
// Look for an event object on the other side of the counter.
|
||||
eventObjectId = GetEventObjectIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
|
||||
if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF)
|
||||
if (eventObjectId == EVENT_OBJECTS_COUNT || gEventObjects[eventObjectId].localId == EVENT_OBJ_ID_PLAYER)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -302,13 +304,10 @@ static const u8 *GetInteractedEventObjectScript(struct MapPosition *position, u8
|
||||
gSpecialVar_Facing = direction;
|
||||
|
||||
if (InTrainerHill() == TRUE)
|
||||
{
|
||||
script = sub_81D62AC();
|
||||
}
|
||||
else
|
||||
{
|
||||
script = GetEventObjectScriptPointerByEventObjectId(eventObjectId);
|
||||
}
|
||||
|
||||
script = GetRamScript(gSpecialVar_LastTalked, script);
|
||||
return script;
|
||||
}
|
||||
@@ -379,7 +378,7 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me
|
||||
if (MetatileBehavior_IsCableBoxResults1(metatileBehavior) == TRUE)
|
||||
return EventScript_CableBoxResults;
|
||||
if (MetatileBehavior_IsPokeblockFeeder(metatileBehavior) == TRUE)
|
||||
return EventScript_2A4BAC;
|
||||
return EventScript_PokeBlockFeeder;
|
||||
if (MetatileBehavior_IsTrickHousePuzzleDoor(metatileBehavior) == TRUE)
|
||||
return Route110_TrickHouseEntrance_EventScript_26A22A;
|
||||
if (MetatileBehavior_IsRegionMap(metatileBehavior) == TRUE)
|
||||
@@ -685,15 +684,15 @@ static bool8 CheckStandardWildEncounter(u16 metatileBehavior)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 metatileBehavior, u8 direction)
|
||||
static bool8 TryArrowWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction)
|
||||
{
|
||||
s8 warpEventId = GetWarpEventAtMapPosition(&gMapHeader, position);
|
||||
|
||||
if (IsArrowWarpMetatileBehavior(metatileBehavior, direction) == TRUE && warpEventId != -1)
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
sub_809CEB0(&gMapHeader, warpEventId, position);
|
||||
sub_80AF734();
|
||||
SetupWarp(&gMapHeader, warpEventId, position);
|
||||
DoWarp();
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -706,7 +705,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB
|
||||
if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
sub_809CEB0(&gMapHeader, warpEventId, position);
|
||||
SetupWarp(&gMapHeader, warpEventId, position);
|
||||
if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE)
|
||||
{
|
||||
sub_80AF80C(metatileBehavior);
|
||||
@@ -742,7 +741,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB
|
||||
sub_80AF87C();
|
||||
return TRUE;
|
||||
}
|
||||
sub_80AF734();
|
||||
DoWarp();
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -785,7 +784,7 @@ static s8 GetWarpEventAtMapPosition(struct MapHeader *mapHeader, struct MapPosit
|
||||
return GetWarpEventAtPosition(mapHeader, position->x - 7, position->y - 7, position->height);
|
||||
}
|
||||
|
||||
static void sub_809CEB0(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
|
||||
static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
|
||||
{
|
||||
const struct WarpEvent *warpEvent;
|
||||
|
||||
@@ -818,23 +817,23 @@ static void sub_809CEB0(struct MapHeader *unused, s8 warpEventId, struct MapPosi
|
||||
warpEvent = &gMapHeader.events->warps[warpEventId];
|
||||
}
|
||||
|
||||
if (warpEvent->mapNum == 0x7F)
|
||||
if (warpEvent->mapNum == MAP_NUM(NONE))
|
||||
{
|
||||
copy_saved_warp2_bank_and_enter_x_to_warp1(warpEvent->warpId);
|
||||
SetWarpDestinationToDynamicWarp(warpEvent->warpId);
|
||||
}
|
||||
else
|
||||
{
|
||||
const struct MapHeader *mapHeader;
|
||||
|
||||
warp1_set_2(warpEvent->mapGroup, warpEvent->mapNum, warpEvent->warpId);
|
||||
sub_8084D5C(position->x, position->y);
|
||||
SetWarpDestinationToMapWarp(warpEvent->mapGroup, warpEvent->mapNum, warpEvent->warpId);
|
||||
UpdateEscapeWarp(position->x, position->y);
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->mapGroup, warpEvent->mapNum);
|
||||
if (mapHeader->events->warps[warpEvent->warpId].mapNum == 0x7F)
|
||||
saved_warp2_set(mapHeader->events->warps[warpEventId].warpId, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, warpEventId);
|
||||
if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(NONE))
|
||||
SetDynamicWarp(mapHeader->events->warps[warpEventId].warpId, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, warpEventId);
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 metatileBehavior, u8 direction)
|
||||
static bool8 TryDoorWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction)
|
||||
{
|
||||
s8 warpEventId;
|
||||
|
||||
@@ -842,17 +841,18 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 met
|
||||
{
|
||||
if (MetatileBehavior_IsOpenSecretBaseDoor(metatileBehavior) == TRUE)
|
||||
{
|
||||
sub_80E9668(position, gMapHeader.events);
|
||||
WarpIntoSecretBase(position, gMapHeader.events);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (MetatileBehavior_IsWarpDoor(metatileBehavior) == TRUE)
|
||||
{
|
||||
warpEventId = GetWarpEventAtMapPosition(&gMapHeader, position);
|
||||
if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
sub_809CEB0(&gMapHeader, warpEventId, position);
|
||||
sub_80AF7D0();
|
||||
SetupWarp(&gMapHeader, warpEventId, position);
|
||||
DoDoorWarp();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -947,7 +947,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
|
||||
if (SetDiveWarpEmerge(position->x - 7, position->y - 7))
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
sp13E_warp_to_last_warp();
|
||||
DoDiveWarp();
|
||||
PlaySE(SE_W291);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -957,7 +957,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
|
||||
if (SetDiveWarpDive(position->x - 7, position->y - 7))
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
sp13E_warp_to_last_warp();
|
||||
DoDiveWarp();
|
||||
PlaySE(SE_W291);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1002,6 +1002,6 @@ int SetCableClubWarp(void)
|
||||
GetPlayerMovementDirection(); //unnecessary
|
||||
GetPlayerPosition(&position);
|
||||
MapGridGetMetatileBehaviorAt(position.x, position.y); //unnecessary
|
||||
sub_809CEB0(&gMapHeader, GetWarpEventAtMapPosition(&gMapHeader, &position), &position);
|
||||
SetupWarp(&gMapHeader, GetWarpEventAtMapPosition(&gMapHeader, &position), &position);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+7
-7
@@ -230,7 +230,7 @@ static void sub_80B9A60(struct Task *);
|
||||
|
||||
static void sub_80B9BE8(u8 taskId);
|
||||
static void sub_80B9DB8(struct Sprite* sprite);
|
||||
static void sub_80B9EDC(u8 taskId);
|
||||
static void Fldeff_MoveDeoxysRock_Step(u8 taskId);
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
@@ -2171,7 +2171,7 @@ static void EscapeRopeFieldEffect_Step1(struct Task *task)
|
||||
if (task->data[14] == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE)
|
||||
{
|
||||
SetEventObjectDirection(eventObject, task->data[15]);
|
||||
sub_8084E14();
|
||||
SetWarpDestinationToEscapeWarp();
|
||||
WarpIntoMap();
|
||||
gFieldCallback = mapldr_080859D4;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
@@ -2332,7 +2332,7 @@ static void TeleportFieldEffectTask4(struct Task *task)
|
||||
|
||||
if (BGMusicStopped() == TRUE)
|
||||
{
|
||||
Overworld_SetWarpDestToLastHealLoc();
|
||||
SetWarpDestinationToLastHealLocation();
|
||||
WarpIntoMap();
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
gFieldCallback = mapldr_08085D88;
|
||||
@@ -2443,7 +2443,7 @@ static void sub_80B8410(struct Task *task)
|
||||
bool8 FldEff_FieldMoveShowMon(void)
|
||||
{
|
||||
u8 taskId;
|
||||
if (is_map_type_1_2_3_5_or_6(Overworld_GetMapTypeOfSaveblockLocation()) == TRUE)
|
||||
if (is_map_type_1_2_3_5_or_6(GetCurrentMapType()) == TRUE)
|
||||
{
|
||||
taskId = CreateTask(sub_80B8554, 0xff);
|
||||
} else
|
||||
@@ -3644,7 +3644,7 @@ static void sub_80B9DB8(struct Sprite* sprite)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80B9E28(struct Sprite* sprite)
|
||||
bool8 Fldeff_MoveDeoxysRock(struct Sprite* sprite)
|
||||
{
|
||||
u8 eventObjectIdBuffer;
|
||||
if (!TryGetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &eventObjectIdBuffer))
|
||||
@@ -3658,7 +3658,7 @@ bool8 sub_80B9E28(struct Sprite* sprite)
|
||||
xPos = (gFieldEffectArguments[3] - xPos) * 16;
|
||||
yPos = (gFieldEffectArguments[4] - yPos) * 16;
|
||||
ShiftEventObjectCoords(object, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
|
||||
taskId = CreateTask(sub_80B9EDC, 0x50);
|
||||
taskId = CreateTask(Fldeff_MoveDeoxysRock_Step, 0x50);
|
||||
gTasks[taskId].data[1] = object->spriteId;
|
||||
gTasks[taskId].data[2] = gSprites[object->spriteId].pos1.x + xPos;
|
||||
gTasks[taskId].data[3] = gSprites[object->spriteId].pos1.y + yPos;
|
||||
@@ -3668,7 +3668,7 @@ bool8 sub_80B9E28(struct Sprite* sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_80B9EDC(u8 taskId)
|
||||
static void Fldeff_MoveDeoxysRock_Step(u8 taskId)
|
||||
{
|
||||
// BUG: Possible divide by zero
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
+28
-28
@@ -8,21 +8,21 @@
|
||||
extern bool32 sub_8196094(void);
|
||||
extern void sub_8196080(u8*);
|
||||
|
||||
EWRAM_DATA u8 gUnknown_020375BC = 0;
|
||||
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
|
||||
|
||||
void textbox_fdecode_auto_and_task_add(u8*, int);
|
||||
void textbox_auto_and_task_add(void);
|
||||
static void textbox_fdecode_auto_and_task_add(u8*, bool32);
|
||||
static void textbox_auto_and_task_add(void);
|
||||
|
||||
void sub_8098128(void)
|
||||
void InitFieldMessageBox(void)
|
||||
{
|
||||
gUnknown_020375BC = 0;
|
||||
sFieldMessageBoxMode = 0;
|
||||
gTextFlags.canABSpeedUpPrint = 0;
|
||||
gTextFlags.useAlternateDownArrow = 0;
|
||||
gTextFlags.autoScroll = 0;
|
||||
gTextFlags.forceMidTextSpeed = 0;
|
||||
}
|
||||
|
||||
void sub_8098154(u8 taskId)
|
||||
static void sub_8098154(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -39,18 +39,18 @@ void sub_8098154(u8 taskId)
|
||||
case 2:
|
||||
if (RunTextPrintersAndIsPrinter0Active() != 1)
|
||||
{
|
||||
gUnknown_020375BC = 0;
|
||||
sFieldMessageBoxMode = 0;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void task_add_textbox(void)
|
||||
static void task_add_textbox(void)
|
||||
{
|
||||
CreateTask(sub_8098154, 0x50);
|
||||
}
|
||||
|
||||
void task_del_textbox(void)
|
||||
static void task_del_textbox(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(sub_8098154);
|
||||
if (taskId != 0xFF)
|
||||
@@ -59,10 +59,10 @@ void task_del_textbox(void)
|
||||
|
||||
bool8 ShowFieldMessage(u8 *str)
|
||||
{
|
||||
if (gUnknown_020375BC != 0)
|
||||
if (sFieldMessageBoxMode != 0)
|
||||
return FALSE;
|
||||
textbox_fdecode_auto_and_task_add(str, 1);
|
||||
gUnknown_020375BC = 2;
|
||||
sFieldMessageBoxMode = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -70,57 +70,57 @@ void sub_8098214(u8 taskId)
|
||||
{
|
||||
if (!sub_8196094())
|
||||
{
|
||||
gUnknown_020375BC = 0;
|
||||
sFieldMessageBoxMode = 0;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8098238(u8 *str)
|
||||
{
|
||||
if (gUnknown_020375BC != 0)
|
||||
if (sFieldMessageBoxMode != 0)
|
||||
return FALSE;
|
||||
StringExpandPlaceholders(gStringVar4, str);
|
||||
CreateTask(sub_8098214, 0);
|
||||
sub_8196080(str);
|
||||
gUnknown_020375BC = 2;
|
||||
sFieldMessageBoxMode = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 ShowFieldAutoScrollMessage(u8 *str)
|
||||
{
|
||||
if (gUnknown_020375BC != 0)
|
||||
if (sFieldMessageBoxMode != 0)
|
||||
return FALSE;
|
||||
gUnknown_020375BC = 3;
|
||||
sFieldMessageBoxMode = 3;
|
||||
textbox_fdecode_auto_and_task_add(str, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80982A0(u8 *str)
|
||||
{
|
||||
gUnknown_020375BC = 3;
|
||||
sFieldMessageBoxMode = 3;
|
||||
textbox_fdecode_auto_and_task_add(str, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80982B8(void)
|
||||
{
|
||||
if (gUnknown_020375BC != 0)
|
||||
if (sFieldMessageBoxMode != 0)
|
||||
return FALSE;
|
||||
gUnknown_020375BC = 2;
|
||||
sFieldMessageBoxMode = 2;
|
||||
textbox_auto_and_task_add();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void textbox_fdecode_auto_and_task_add(u8* str, int a)
|
||||
static void textbox_fdecode_auto_and_task_add(u8* str, bool32 allowSkippingDelayWithButtonPress)
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, str);
|
||||
AddTextPrinterForMessage(a);
|
||||
AddTextPrinterForMessage(allowSkippingDelayWithButtonPress);
|
||||
task_add_textbox();
|
||||
}
|
||||
|
||||
void textbox_auto_and_task_add(void)
|
||||
static void textbox_auto_and_task_add(void)
|
||||
{
|
||||
AddTextPrinterForMessage(1);
|
||||
AddTextPrinterForMessage(TRUE);
|
||||
task_add_textbox();
|
||||
}
|
||||
|
||||
@@ -128,17 +128,17 @@ void HideFieldMessageBox(void)
|
||||
{
|
||||
task_del_textbox();
|
||||
sub_8197434(0, 1);
|
||||
gUnknown_020375BC = 0;
|
||||
sFieldMessageBoxMode = 0;
|
||||
}
|
||||
|
||||
u8 GetFieldMessageBoxMode(void)
|
||||
{
|
||||
return gUnknown_020375BC;
|
||||
return sFieldMessageBoxMode;
|
||||
}
|
||||
|
||||
bool8 IsFieldMessageBoxHidden(void)
|
||||
{
|
||||
if (gUnknown_020375BC == 0)
|
||||
if (sFieldMessageBoxMode == 0)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -147,11 +147,11 @@ void sub_8098358(void)
|
||||
{
|
||||
task_del_textbox();
|
||||
NewMenuHelpers_DrawStdWindowFrame(0, 1);
|
||||
gUnknown_020375BC = 0;
|
||||
sFieldMessageBoxMode = 0;
|
||||
}
|
||||
|
||||
void sub_8098374(void)
|
||||
{
|
||||
task_del_textbox();
|
||||
gUnknown_020375BC = 0;
|
||||
sFieldMessageBoxMode = 0;
|
||||
}
|
||||
|
||||
@@ -723,7 +723,7 @@ static bool8 sub_808B1BC(s16 x, s16 y, u8 direction)
|
||||
{
|
||||
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
&& MapGridGetZCoordAt(x, y) == 3
|
||||
&& GetEventObjectIdByXYZ(x, y, 3) == 16)
|
||||
&& GetEventObjectIdByXYZ(x, y, 3) == EVENT_OBJECTS_COUNT)
|
||||
{
|
||||
sub_808C750(direction);
|
||||
return TRUE;
|
||||
@@ -791,12 +791,9 @@ bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction)
|
||||
playerY = object->currentCoords.y;
|
||||
|
||||
MoveCoords(direction, &playerX, &playerY);
|
||||
mewObjectId = GetEventObjectIdByLocalIdAndMap(1, 0x39, 0x1A);
|
||||
|
||||
if (mewObjectId == 16)
|
||||
{
|
||||
mewObjectId = GetEventObjectIdByLocalIdAndMap(1, MAP_NUM(FARAWAY_ISLAND_INTERIOR), MAP_GROUP(FARAWAY_ISLAND_INTERIOR));
|
||||
if (mewObjectId == EVENT_OBJECTS_COUNT)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
object = &gEventObjects[mewObjectId];
|
||||
mewPrevX = object->previousCoords.x;
|
||||
@@ -1389,7 +1386,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
|
||||
u8 eventObjectId;
|
||||
struct EventObject *eventObject;
|
||||
|
||||
playerEventObjTemplate.localId = 0xFF;
|
||||
playerEventObjTemplate.localId = EVENT_OBJ_ID_PLAYER;
|
||||
playerEventObjTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gender);
|
||||
playerEventObjTemplate.x = x - 7;
|
||||
playerEventObjTemplate.y = y - 7;
|
||||
|
||||
@@ -89,7 +89,7 @@ static void palette_bg_faded_fill_black(void)
|
||||
void pal_fill_for_maplights(void)
|
||||
{
|
||||
u8 previousMapType = GetLastUsedWarpMapType();
|
||||
switch (GetMapPairFadeFromType(previousMapType, Overworld_GetMapTypeOfSaveblockLocation()))
|
||||
switch (GetMapPairFadeFromType(previousMapType, GetCurrentMapType()))
|
||||
{
|
||||
case 0:
|
||||
palette_bg_faded_fill_black();
|
||||
@@ -115,7 +115,7 @@ void pal_fill_black(void)
|
||||
|
||||
void WarpFadeScreen(void)
|
||||
{
|
||||
u8 currentMapType = Overworld_GetMapTypeOfSaveblockLocation();
|
||||
u8 currentMapType = GetCurrentMapType();
|
||||
switch (GetMapPairFadeToType(currentMapType, GetDestinationWarpMapHeader()->mapType))
|
||||
{
|
||||
case 0:
|
||||
@@ -215,7 +215,7 @@ static void sub_80AF234(u8 taskId)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_800A520())
|
||||
if (!IsLinkTaskFinished())
|
||||
{
|
||||
if (++task->data[1] > 1800)
|
||||
sub_8011170(0x6000);
|
||||
@@ -248,7 +248,7 @@ void sub_80AF2B4(u8 taskId)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -498,7 +498,7 @@ static bool32 sub_80AF71C(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80AF734(void)
|
||||
void DoWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
@@ -509,7 +509,7 @@ void sub_80AF734(void)
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
}
|
||||
|
||||
void sp13E_warp_to_last_warp(void)
|
||||
void DoDiveWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
@@ -529,16 +529,16 @@ void sub_80AF79C(void)
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
}
|
||||
|
||||
void sub_80AF7D0(void)
|
||||
void DoDoorWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = mapldr_default;
|
||||
CreateTask(sub_80AFA88, 10);
|
||||
}
|
||||
|
||||
void sp13F_fall_to_last_warp(void)
|
||||
void DoFallWarp(void)
|
||||
{
|
||||
sp13E_warp_to_last_warp();
|
||||
DoDiveWarp();
|
||||
gFieldCallback = sub_80B6B68;
|
||||
}
|
||||
|
||||
|
||||
+11
-21
@@ -1,7 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_screen_effect.h"
|
||||
#include "field_specials.h"
|
||||
#include "fieldmap.h"
|
||||
#include "main.h"
|
||||
#include "overworld.h"
|
||||
#include "palette.h"
|
||||
#include "script.h"
|
||||
#include "script_movement.h"
|
||||
@@ -13,14 +18,6 @@
|
||||
|
||||
#define SECONDS(value) ((signed) (60.0 * value + 0.5))
|
||||
|
||||
extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h
|
||||
extern void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||
extern bool32 CountSSTidalStep(u16);
|
||||
extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
|
||||
extern void sp13E_warp_to_last_warp(void);
|
||||
extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
|
||||
extern void sub_80AF8B8(void);
|
||||
|
||||
// porthole states
|
||||
enum
|
||||
{
|
||||
@@ -30,20 +27,13 @@ enum
|
||||
EXIT_PORTHOLE,
|
||||
};
|
||||
|
||||
extern void SetCameraPanning(s16 x, s16 y);
|
||||
extern void SetCameraPanningCallback(void ( *callback)());
|
||||
extern void InstallCameraPanAheadCallback();
|
||||
extern void pal_fill_black(void);
|
||||
extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId);
|
||||
extern void DrawWholeMapView();
|
||||
|
||||
//. rodata
|
||||
static const s8 gTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0};
|
||||
const u8 gUnknown_0858E8AB[] = {0x18, 0xFE};
|
||||
const u8 gUnknown_0858E8AD[] = {0x17, 0xFE};
|
||||
|
||||
// .text
|
||||
void Task_Truck3(u8);
|
||||
static void Task_Truck3(u8);
|
||||
|
||||
s16 GetTruckCameraBobbingY(int a1)
|
||||
{
|
||||
@@ -121,7 +111,7 @@ void Task_Truck2(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void Task_Truck3(u8 taskId)
|
||||
static void Task_Truck3(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
s16 cameraXpan;
|
||||
@@ -256,7 +246,7 @@ bool8 sub_80FB59C(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, -1, x, y);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -312,8 +302,8 @@ void Task_HandlePorthole(u8 taskId)
|
||||
case EXIT_PORTHOLE: // exit porthole.
|
||||
FlagClear(0x4001);
|
||||
FlagClear(0x4000);
|
||||
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
|
||||
sp13E_warp_to_last_warp();
|
||||
SetWarpDestinationToDynamicWarp(0);
|
||||
DoDiveWarp();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -349,7 +339,7 @@ void sub_80FB7A4(void)
|
||||
FlagSet(FLAG_SYS_CRUISE_MODE);
|
||||
FlagSet(0x4001);
|
||||
FlagSet(0x4000);
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
sub_80FB59C();
|
||||
sub_80AF8B8();
|
||||
}
|
||||
|
||||
+65
-72
@@ -47,6 +47,7 @@
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/field_effects.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
@@ -115,9 +116,9 @@ static void sub_813A738(u8 taskId);
|
||||
static void sub_813A600(u8 taskId);
|
||||
static void sub_813A664(u8 taskId);
|
||||
static void sub_813ABD4(u16 a0);
|
||||
static void task_deoxys_sound(u8 taskId);
|
||||
static void sub_813B0B4(u8 a0);
|
||||
static void sub_813B160(u8 taskId);
|
||||
static void Task_DeoxysRockInteraction(u8 taskId);
|
||||
static void ChangeDeoxysRockLevel(u8 a0);
|
||||
static void WaitForDeoxysRockMovement(u8 taskId);
|
||||
static void sub_813B57C(u8 taskId);
|
||||
static void sub_813B824(u8 taskId);
|
||||
static void _fwalk(u8 taskId);
|
||||
@@ -391,11 +392,11 @@ bool32 sub_8138120(void)
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 6:
|
||||
if (++(*GetVarPointer(VAR_0x40F3)) < 0xA)
|
||||
case MAP_TYPE_TOWN:
|
||||
case MAP_TYPE_CITY:
|
||||
case MAP_TYPE_ROUTE:
|
||||
case MAP_TYPE_6:
|
||||
if (++(*GetVarPointer(VAR_0x40F3)) < 10)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -945,11 +946,11 @@ void CableCarWarp(void)
|
||||
{
|
||||
if (gSpecialVar_0x8004 != 0)
|
||||
{
|
||||
Overworld_SetWarpDestination(MAP_GROUP(ROUTE112_CABLE_CAR_STATION), MAP_NUM(ROUTE112_CABLE_CAR_STATION), -1, 6, 4);
|
||||
SetWarpDestination(MAP_GROUP(ROUTE112_CABLE_CAR_STATION), MAP_NUM(ROUTE112_CABLE_CAR_STATION), -1, 6, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
Overworld_SetWarpDestination(MAP_GROUP(MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4);
|
||||
SetWarpDestination(MAP_GROUP(MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1725,7 +1726,7 @@ const u16 gUnknown_085B2C06[][3] =
|
||||
void SetDepartmentStoreFloorVar(void)
|
||||
{
|
||||
u8 deptStoreFloor;
|
||||
switch (gSaveBlock1Ptr->warp2.mapNum)
|
||||
switch (gSaveBlock1Ptr->dynamicWarp.mapNum)
|
||||
{
|
||||
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F):
|
||||
deptStoreFloor = 4;
|
||||
@@ -1757,9 +1758,9 @@ u16 sub_81399F4(void)
|
||||
gUnknown_0203AB60 = 0;
|
||||
gUnknown_0203AB62 = 0;
|
||||
|
||||
if (gSaveBlock1Ptr->warp2.mapGroup == 13)
|
||||
if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_1F))
|
||||
{
|
||||
switch (gSaveBlock1Ptr->warp2.mapNum)
|
||||
switch (gSaveBlock1Ptr->dynamicWarp.mapNum)
|
||||
{
|
||||
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F):
|
||||
gUnknown_0203AB60 = 0;
|
||||
@@ -3233,12 +3234,12 @@ void sub_813AF48(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813AFC8(void)
|
||||
void DoDeoxysRockInteraction(void)
|
||||
{
|
||||
CreateTask(task_deoxys_sound, 8);
|
||||
CreateTask(Task_DeoxysRockInteraction, 8);
|
||||
}
|
||||
|
||||
static const u16 gUnknown_085B3280[][16] = {
|
||||
static const u16 sDeoxysRockPalettes[][16] = {
|
||||
INCBIN_U16("graphics/misc/deoxys1.gbapal"),
|
||||
INCBIN_U16("graphics/misc/deoxys2.gbapal"),
|
||||
INCBIN_U16("graphics/misc/deoxys3.gbapal"),
|
||||
@@ -3252,25 +3253,25 @@ static const u16 gUnknown_085B3280[][16] = {
|
||||
INCBIN_U16("graphics/misc/deoxys11.gbapal"),
|
||||
};
|
||||
|
||||
static const u8 gUnknown_085B33E0[][2] = {
|
||||
{ 0x0f, 0x0c },
|
||||
{ 0x0b, 0x0e },
|
||||
{ 0x0f, 0x08 },
|
||||
{ 0x13, 0x0e },
|
||||
{ 0x0c, 0x0b },
|
||||
{ 0x12, 0x0b },
|
||||
{ 0x0f, 0x0e },
|
||||
{ 0x0b, 0x0e },
|
||||
{ 0x13, 0x0e },
|
||||
{ 0x0f, 0x0f },
|
||||
{ 0x0f, 0x0a },
|
||||
static const u8 sDeoxysRockCoords[][2] = {
|
||||
{ 15, 12 },
|
||||
{ 11, 14 },
|
||||
{ 15, 8 },
|
||||
{ 19, 14 },
|
||||
{ 12, 11 },
|
||||
{ 18, 11 },
|
||||
{ 15, 14 },
|
||||
{ 11, 14 },
|
||||
{ 19, 14 },
|
||||
{ 15, 15 },
|
||||
{ 15, 10 },
|
||||
};
|
||||
|
||||
static void task_deoxys_sound(u8 taskId)
|
||||
static void Task_DeoxysRockInteraction(u8 taskId)
|
||||
{
|
||||
static const u8 gUnknown_085B33F6[] = { 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x06, 0x03, 0x03 };
|
||||
static const u8 sStoneMaxStepCounts[] = { 4, 8, 8, 8, 4, 4, 4, 6, 3, 3 };
|
||||
|
||||
if (FlagGet(FLAG_0x8D4) == TRUE)
|
||||
if (FlagGet(FLAG_DEOXYS_ROCK_COMPLETE) == TRUE)
|
||||
{
|
||||
gSpecialVar_Result = 3;
|
||||
EnableBothScriptContexts();
|
||||
@@ -3278,100 +3279,92 @@ static void task_deoxys_sound(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 temp1 = VarGet(VAR_0x4035);
|
||||
u16 temp2 = VarGet(VAR_0x4034);
|
||||
u16 rockLevel = VarGet(VAR_DEOXYS_ROCK_LEVEL);
|
||||
u16 stepCount = VarGet(VAR_DEOXYS_ROCK_STEP_COUNT);
|
||||
|
||||
VarSet(VAR_0x4034, 0);
|
||||
if (temp1 != 0 && gUnknown_085B33F6[temp1 - 1] < temp2)
|
||||
VarSet(VAR_DEOXYS_ROCK_STEP_COUNT, 0);
|
||||
if (rockLevel != 0 && sStoneMaxStepCounts[rockLevel - 1] < stepCount)
|
||||
{
|
||||
sub_813B0B4(0);
|
||||
VarSet(VAR_0x4035, 0);
|
||||
// Player failed to take the shortest path to the stone, so it resets.
|
||||
ChangeDeoxysRockLevel(0);
|
||||
VarSet(VAR_DEOXYS_ROCK_LEVEL, 0);
|
||||
gSpecialVar_Result = 0;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else if (temp1 == 10)
|
||||
else if (rockLevel == 10)
|
||||
{
|
||||
FlagSet(FLAG_0x8D4);
|
||||
FlagSet(FLAG_DEOXYS_ROCK_COMPLETE);
|
||||
gSpecialVar_Result = 2;
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp1++;
|
||||
sub_813B0B4(temp1);
|
||||
VarSet(VAR_0x4035, temp1);
|
||||
rockLevel++;
|
||||
ChangeDeoxysRockLevel(rockLevel);
|
||||
VarSet(VAR_DEOXYS_ROCK_LEVEL, rockLevel);
|
||||
gSpecialVar_Result = 1;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_813B0B4(u8 a0)
|
||||
static void ChangeDeoxysRockLevel(u8 rockLevel)
|
||||
{
|
||||
u8 eventObjectId;
|
||||
LoadPalette(&gUnknown_085B3280[a0], 0x1A0, 8);
|
||||
LoadPalette(&sDeoxysRockPalettes[rockLevel], 0x1A0, 8);
|
||||
TryGetEventObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &eventObjectId);
|
||||
|
||||
if (a0 == 0)
|
||||
{
|
||||
if (rockLevel == 0)
|
||||
PlaySE(SE_W109);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_RG_DEOMOV);
|
||||
}
|
||||
|
||||
CreateTask(sub_813B160, 8);
|
||||
|
||||
CreateTask(WaitForDeoxysRockMovement, 8);
|
||||
gFieldEffectArguments[0] = 1;
|
||||
gFieldEffectArguments[1] = 58;
|
||||
gFieldEffectArguments[2] = 26;
|
||||
gFieldEffectArguments[3] = gUnknown_085B33E0[a0][0];
|
||||
gFieldEffectArguments[4] = gUnknown_085B33E0[a0][1];
|
||||
gFieldEffectArguments[3] = sDeoxysRockCoords[rockLevel][0];
|
||||
gFieldEffectArguments[4] = sDeoxysRockCoords[rockLevel][1];
|
||||
|
||||
if (a0 == 0)
|
||||
{
|
||||
if (rockLevel == 0)
|
||||
gFieldEffectArguments[5] = 60;
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldEffectArguments[5] = 5;
|
||||
}
|
||||
|
||||
FieldEffectStart(FLDEFF_66);
|
||||
Overworld_SetEventObjTemplateCoords(1, gUnknown_085B33E0[a0][0], gUnknown_085B33E0[a0][1]);
|
||||
FieldEffectStart(FLDEFF_MOVE_DEOXYS_ROCK);
|
||||
Overworld_SetEventObjTemplateCoords(1, sDeoxysRockCoords[rockLevel][0], sDeoxysRockCoords[rockLevel][1]);
|
||||
}
|
||||
|
||||
static void sub_813B160(u8 taskId)
|
||||
static void WaitForDeoxysRockMovement(u8 taskId)
|
||||
{
|
||||
if (FieldEffectActiveListContains(FLDEFF_66) == FALSE)
|
||||
if (FieldEffectActiveListContains(FLDEFF_MOVE_DEOXYS_ROCK) == FALSE)
|
||||
{
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void increment_var_x4026_on_birth_island_modulo_100(void)
|
||||
void IncrementBirthIslandRockStepCount(void)
|
||||
{
|
||||
u16 var = VarGet(VAR_0x4034);
|
||||
u16 var = VarGet(VAR_DEOXYS_ROCK_STEP_COUNT);
|
||||
if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(BIRTH_ISLAND_EXTERIOR) && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BIRTH_ISLAND_EXTERIOR))
|
||||
{
|
||||
var++;
|
||||
if (var > 99)
|
||||
{
|
||||
VarSet(VAR_0x4034, 0);
|
||||
VarSet(VAR_DEOXYS_ROCK_STEP_COUNT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
VarSet(VAR_0x4034, var);
|
||||
VarSet(VAR_DEOXYS_ROCK_STEP_COUNT, var);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813B1D0(void)
|
||||
{
|
||||
LoadPalette(&gUnknown_085B3280[(u8)VarGet(VAR_0x4035)], 0x1A0, 8);
|
||||
LoadPalette(&sDeoxysRockPalettes[(u8)VarGet(VAR_DEOXYS_ROCK_LEVEL)], 0x1A0, 8);
|
||||
BlendPalettes(0x04000000, 16, 0);
|
||||
}
|
||||
|
||||
@@ -3616,7 +3609,7 @@ static void sub_813B57C(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_800A520() == TRUE)
|
||||
if (IsLinkTaskFinished() == TRUE)
|
||||
{
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
@@ -3657,7 +3650,7 @@ static void sub_813B57C(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sub_800A520() == TRUE)
|
||||
if (IsLinkTaskFinished() == TRUE)
|
||||
{
|
||||
if (GetMultiplayerId() != 0)
|
||||
{
|
||||
@@ -3709,14 +3702,14 @@ static void sub_813B57C(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_800A520() == 1)
|
||||
if (IsLinkTaskFinished() == 1)
|
||||
{
|
||||
sub_800ADF8();
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (sub_800A520() == 1)
|
||||
if (IsLinkTaskFinished() == 1)
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
@@ -3813,7 +3806,7 @@ void sub_813B9A0(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->lastHealLocation.mapGroup == MAP_GROUP(DEWFORD_TOWN) && gSaveBlock1Ptr->lastHealLocation.mapNum == MAP_NUM(DEWFORD_TOWN))
|
||||
{
|
||||
Overworld_SetHealLocationWarp(3);
|
||||
SetLastHealLocationWarp(3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+117
-139
@@ -20,61 +20,60 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/vars.h"
|
||||
|
||||
struct MetatileOffset
|
||||
struct PacifidlogMetatileOffsets
|
||||
{
|
||||
s8 x;
|
||||
s8 y;
|
||||
u16 tileId;
|
||||
};
|
||||
|
||||
// this file's functions
|
||||
static void DummyPerStepCallback(u8 taskId);
|
||||
static void PerStepCallback_8069F64(u8 taskId);
|
||||
static void PerStepCallback_8069AA0(u8 taskId);
|
||||
static void PerStepCallback_8069864(u8 taskId);
|
||||
static void PerStepCallback_8069DD4(u8 taskId);
|
||||
static void PerStepCallback_806A07C(u8 taskId);
|
||||
static void AshGrassPerStepCallback(u8 taskId);
|
||||
static void FortreeBridgePerStepCallback(u8 taskId);
|
||||
static void PacifidlogBridgePerStepCallback(u8 taskId);
|
||||
static void SootopolisGymIcePerStepCallback(u8 taskId);
|
||||
static void CrackedFloorPerStepCallback(u8 taskId);
|
||||
static void Task_MuddySlope(u8 taskId);
|
||||
|
||||
// const rom data
|
||||
static void (*const gUnknown_08510348[])(u8) =
|
||||
static const TaskFunc sPerStepCallbacks[] =
|
||||
{
|
||||
DummyPerStepCallback,
|
||||
PerStepCallback_8069F64,
|
||||
PerStepCallback_8069AA0,
|
||||
PerStepCallback_8069864,
|
||||
PerStepCallback_8069DD4,
|
||||
AshGrassPerStepCallback,
|
||||
FortreeBridgePerStepCallback,
|
||||
PacifidlogBridgePerStepCallback,
|
||||
SootopolisGymIcePerStepCallback,
|
||||
EndTruckSequence,
|
||||
sub_80EA3E4,
|
||||
PerStepCallback_806A07C
|
||||
SecretBasePerStepCallback,
|
||||
CrackedFloorPerStepCallback
|
||||
};
|
||||
|
||||
// they are in pairs but declared as 1D array
|
||||
static const struct MetatileOffset gUnknown_08510368[] =
|
||||
static const struct PacifidlogMetatileOffsets sHalfSubmergedBridgeMetatileOffsets[] =
|
||||
{
|
||||
{ 0, 0,0x259}, { 0, 1,0x261},
|
||||
{ 0, -1,0x259}, { 0, 0,0x261},
|
||||
{ 0, 0,0x252}, { 1, 0,0x253},
|
||||
{ -1, 0,0x252}, { 0, 0,0x253}
|
||||
{ 0, 0, 0x259}, { 0, 1, 0x261},
|
||||
{ 0, -1, 0x259}, { 0, 0, 0x261},
|
||||
{ 0, 0, 0x252}, { 1, 0, 0x253},
|
||||
{ -1, 0, 0x252}, { 0, 0, 0x253}
|
||||
};
|
||||
|
||||
static const struct MetatileOffset gUnknown_08510388[] =
|
||||
static const struct PacifidlogMetatileOffsets sFullySubmergedBridgeMetatileOffsets[] =
|
||||
{
|
||||
{ 0, 0,0x25A}, { 0, 1,0x262},
|
||||
{ 0, -1,0x25A}, { 0, 0,0x262},
|
||||
{ 0, 0,0x254}, { 1, 0,0x255},
|
||||
{ -1, 0,0x254}, { 0, 0,0x255}
|
||||
{ 0, 0, 0x25A}, { 0, 1, 0x262},
|
||||
{ 0, -1, 0x25A}, { 0, 0, 0x262},
|
||||
{ 0, 0, 0x254}, { 1, 0, 0x255},
|
||||
{ -1, 0, 0x254}, { 0, 0, 0x255}
|
||||
};
|
||||
|
||||
static const struct MetatileOffset gUnknown_085103A8[] =
|
||||
static const struct PacifidlogMetatileOffsets sFloatingBridgeMetatileOffsets[] =
|
||||
{
|
||||
{ 0, 0,0x258}, { 0, 1,0x260},
|
||||
{ 0, -1,0x258}, { 0, 0,0x260},
|
||||
{ 0, 0,0x250}, { 1, 0,0x251},
|
||||
{ -1, 0,0x250}, { 0, 0,0x251}
|
||||
{ 0, 0, 0x258}, { 0, 1, 0x260},
|
||||
{ 0, -1, 0x258}, { 0, 0, 0x260},
|
||||
{ 0, 0, 0x250}, { 1, 0, 0x251},
|
||||
{ -1, 0, 0x250}, { 0, 0, 0x251}
|
||||
};
|
||||
|
||||
static const u16 gUnknown_085103C8[] =
|
||||
// Each element corresponds to a y coordinate row in the sootopolis gym 1F map.
|
||||
static const u16 sSootopolisGymIceRowVars[] =
|
||||
{
|
||||
0,
|
||||
0,
|
||||
@@ -104,13 +103,12 @@ static const u16 gUnknown_085103C8[] =
|
||||
0
|
||||
};
|
||||
|
||||
static const u16 gUnknown_085103FC[] = {0xe8, 0xeb, 0xea, 0xe9};
|
||||
static const u16 sMuddySlopeMetatiles[] = {0xe8, 0xeb, 0xea, 0xe9};
|
||||
|
||||
// code
|
||||
static void Task_RunPerStepCallback(u8 taskId)
|
||||
{
|
||||
int idx = gTasks[taskId].data[0];
|
||||
gUnknown_08510348[idx](taskId);
|
||||
sPerStepCallbacks[idx](taskId);
|
||||
}
|
||||
|
||||
#define tState data[0]
|
||||
@@ -159,14 +157,12 @@ void SetUpFieldTasks(void)
|
||||
u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
}
|
||||
|
||||
if (!FuncIsActiveTask(Task_MuddySlope))
|
||||
{
|
||||
CreateTask(Task_MuddySlope, 0x50);
|
||||
}
|
||||
|
||||
if (!FuncIsActiveTask(Task_RunTimeBasedEvents))
|
||||
{
|
||||
CreateTask(Task_RunTimeBasedEvents, 0x50);
|
||||
}
|
||||
}
|
||||
|
||||
void ActivatePerStepCallback(u8 callbackId)
|
||||
@@ -180,7 +176,7 @@ void ActivatePerStepCallback(u8 callbackId)
|
||||
for (i = 0; i < 16; i++)
|
||||
data[i] = 0;
|
||||
|
||||
if (callbackId >= ARRAY_COUNT(gUnknown_08510348))
|
||||
if (callbackId >= ARRAY_COUNT(sPerStepCallbacks))
|
||||
{
|
||||
data[0] = 0;
|
||||
}
|
||||
@@ -215,7 +211,7 @@ static void DummyPerStepCallback(u8 taskId)
|
||||
|
||||
}
|
||||
|
||||
static const struct MetatileOffset *sub_809DA30(const struct MetatileOffset *offsets, u16 metatileBehavior)
|
||||
static const struct PacifidlogMetatileOffsets *GetPacifidlogBridgeMetatileOffsets(const struct PacifidlogMetatileOffsets *offsets, u16 metatileBehavior)
|
||||
{
|
||||
if (MetatileBehavior_IsPacifilogVerticalLog1(metatileBehavior))
|
||||
return &offsets[0 * 2];
|
||||
@@ -229,38 +225,37 @@ static const struct MetatileOffset *sub_809DA30(const struct MetatileOffset *off
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void sub_809DA88(const struct MetatileOffset *offsets, s16 x, s16 y, bool32 flag)
|
||||
static void SetPacifidlogBridgeMetatiles(const struct PacifidlogMetatileOffsets *offsets, s16 x, s16 y, bool32 redrawMap)
|
||||
{
|
||||
offsets = sub_809DA30(offsets, MapGridGetMetatileBehaviorAt(x, y));
|
||||
|
||||
if (offsets != NULL)
|
||||
offsets = GetPacifidlogBridgeMetatileOffsets(offsets, MapGridGetMetatileBehaviorAt(x, y));
|
||||
if (offsets)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x + offsets[0].x, y + offsets[0].y, offsets[0].tileId);
|
||||
if (flag)
|
||||
if (redrawMap)
|
||||
CurrentMapDrawMetatileAt(x + offsets[0].x, y + offsets[0].y);
|
||||
|
||||
MapGridSetMetatileIdAt(x + offsets[1].x, y + offsets[1].y, offsets[1].tileId);
|
||||
if (flag)
|
||||
if (redrawMap)
|
||||
CurrentMapDrawMetatileAt(x + offsets[1].x, y + offsets[1].y);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_809DB10(s16 x, s16 y, bool32 flag)
|
||||
static void UpdateHalfSubmergedBridgeMetatiles(s16 x, s16 y, bool32 redrawMap)
|
||||
{
|
||||
sub_809DA88(gUnknown_08510368, x, y, flag);
|
||||
SetPacifidlogBridgeMetatiles(sHalfSubmergedBridgeMetatileOffsets, x, y, redrawMap);
|
||||
}
|
||||
|
||||
static void sub_809DB34(s16 x, s16 y, bool32 flag)
|
||||
static void UpdateFullySubmergedBridgeMetatiles(s16 x, s16 y, bool32 redrawMap)
|
||||
{
|
||||
sub_809DA88(gUnknown_08510388, x, y, flag);
|
||||
SetPacifidlogBridgeMetatiles(sFullySubmergedBridgeMetatileOffsets, x, y, redrawMap);
|
||||
}
|
||||
|
||||
static void sub_809DB58(s16 x, s16 y, bool32 flag)
|
||||
static void UpdateFloatingBridgeMetatiles(s16 x, s16 y, bool32 redrawMap)
|
||||
{
|
||||
sub_809DA88(gUnknown_085103A8, x, y, flag);
|
||||
SetPacifidlogBridgeMetatiles(sFloatingBridgeMetatileOffsets, x, y, redrawMap);
|
||||
}
|
||||
|
||||
static bool32 sub_809DB7C(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
static bool32 StandingOnNewPacifidlogBridge(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
{
|
||||
u16 metatileBehavior = MapGridGetMetatileBehaviorAt(x2, y2);
|
||||
|
||||
@@ -287,7 +282,7 @@ static bool32 sub_809DB7C(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 sub_809DC18(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
static bool32 StandingOnSamePacifidlogBridge(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
{
|
||||
u16 metatileBehavior = MapGridGetMetatileBehaviorAt(x1, y1);
|
||||
|
||||
@@ -314,7 +309,7 @@ static bool32 sub_809DC18(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void PerStepCallback_8069864(u8 taskId)
|
||||
static void PacifidlogBridgePerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 *data;
|
||||
s16 x, y;
|
||||
@@ -325,16 +320,16 @@ static void PerStepCallback_8069864(u8 taskId)
|
||||
case 0:
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
sub_809DB34(x, y, TRUE);
|
||||
UpdateFullySubmergedBridgeMetatiles(x, y, TRUE);
|
||||
data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (x != data[2] || y != data[3])
|
||||
{
|
||||
if (sub_809DB7C(x, y, data[2], data[3]))
|
||||
if (StandingOnNewPacifidlogBridge(x, y, data[2], data[3]))
|
||||
{
|
||||
sub_809DB10(data[2], data[3], TRUE);
|
||||
sub_809DB58(data[2], data[3], FALSE);
|
||||
UpdateHalfSubmergedBridgeMetatiles(data[2], data[3], TRUE);
|
||||
UpdateFloatingBridgeMetatiles(data[2], data[3], FALSE);
|
||||
data[4] = data[2];
|
||||
data[5] = data[3];
|
||||
data[1] = 2;
|
||||
@@ -345,38 +340,37 @@ static void PerStepCallback_8069864(u8 taskId)
|
||||
data[4] = -1;
|
||||
data[5] = -1;
|
||||
}
|
||||
if (sub_809DC18(x, y, data[2], data[3]))
|
||||
|
||||
if (StandingOnSamePacifidlogBridge(x, y, data[2], data[3]))
|
||||
{
|
||||
sub_809DB10(x, y, TRUE);
|
||||
UpdateHalfSubmergedBridgeMetatiles(x, y, TRUE);
|
||||
data[1] = 2;
|
||||
data[6] = 8;
|
||||
}
|
||||
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsPacifidlogLog(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
PlaySE(SE_MIZU);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if ((--data[6]) == 0)
|
||||
{
|
||||
sub_809DB34(x, y, TRUE);
|
||||
UpdateFullySubmergedBridgeMetatiles(x, y, TRUE);
|
||||
if (data[4] != -1 && data[5] != -1)
|
||||
{
|
||||
sub_809DB58(data[4], data[5], TRUE);
|
||||
}
|
||||
UpdateFloatingBridgeMetatiles(data[4], data[5], TRUE);
|
||||
|
||||
data[1] = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_809DE28(s16 x, s16 y)
|
||||
static void SetLoweredForetreeBridgeMetatile(s16 x, s16 y)
|
||||
{
|
||||
u8 z = PlayerGetZCoord();
|
||||
if (!(z & 0x01))
|
||||
if (!(z & 1))
|
||||
{
|
||||
switch (MapGridGetMetatileIdAt(x, y))
|
||||
{
|
||||
@@ -390,10 +384,10 @@ static void sub_809DE28(s16 x, s16 y)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_809DE8C(s16 x, s16 y)
|
||||
static void SetNormalFortreeBridgeMetatile(s16 x, s16 y)
|
||||
{
|
||||
u8 z = PlayerGetZCoord();
|
||||
if (!(z & 0x01))
|
||||
if (!(z & 1))
|
||||
{
|
||||
switch (MapGridGetMetatileIdAt(x, y))
|
||||
{
|
||||
@@ -407,7 +401,7 @@ static void sub_809DE8C(s16 x, s16 y)
|
||||
}
|
||||
}
|
||||
|
||||
static void PerStepCallback_8069AA0(u8 taskId)
|
||||
static void FortreeBridgePerStepCallback(u8 taskId)
|
||||
{
|
||||
bool8 isFortreeBridgeCur;
|
||||
bool8 isFortreeBridgePrev;
|
||||
@@ -424,7 +418,7 @@ static void PerStepCallback_8069AA0(u8 taskId)
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
sub_809DE28(x, y);
|
||||
SetLoweredForetreeBridgeMetatile(x, y);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
data[1] = 1;
|
||||
@@ -433,36 +427,33 @@ static void PerStepCallback_8069AA0(u8 taskId)
|
||||
x2 = data[2];
|
||||
y2 = data[3];
|
||||
if (x == x2 && y == y2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
isFortreeBridgeCur = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y));
|
||||
isFortreeBridgePrev = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x2, y2));
|
||||
z = PlayerGetZCoord();
|
||||
flag = 0;
|
||||
if ((u8)(z & 1) == 0)
|
||||
{
|
||||
flag = 1;
|
||||
}
|
||||
|
||||
if (flag && (isFortreeBridgeCur == 1 || isFortreeBridgePrev == 1))
|
||||
{
|
||||
PlaySE(SE_HASHI);
|
||||
}
|
||||
|
||||
if (isFortreeBridgePrev)
|
||||
{
|
||||
sub_809DE8C(x2, y2);
|
||||
SetNormalFortreeBridgeMetatile(x2, y2);
|
||||
CurrentMapDrawMetatileAt(x2, y2);
|
||||
sub_809DE28(x, y);
|
||||
SetLoweredForetreeBridgeMetatile(x, y);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
|
||||
data[4] = x2;
|
||||
data[5] = y2;
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (!isFortreeBridgePrev)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
data[6] = 16;
|
||||
data[1] = 2;
|
||||
// fallthrough
|
||||
@@ -479,9 +470,9 @@ static void PerStepCallback_8069AA0(u8 taskId)
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
sub_809DE28(x2, y2);
|
||||
SetLoweredForetreeBridgeMetatile(x2, y2);
|
||||
CurrentMapDrawMetatileAt(x2, y2);
|
||||
sub_809DE8C(x2, y2);
|
||||
SetNormalFortreeBridgeMetatile(x2, y2);
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
@@ -495,28 +486,28 @@ static void PerStepCallback_8069AA0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 sub_809E108(s16 x, s16 y)
|
||||
static bool32 CoordInIcePuzzleRegion(s16 x, s16 y)
|
||||
{
|
||||
if ((u16)(x - 3) < 11 && (u16)(y - 6) < 14 && gUnknown_085103C8[y])
|
||||
if ((u16)(x - 3) < 11 && (u16)(y - 6) < 14 && sSootopolisGymIceRowVars[y])
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_809E14C(s16 x, s16 y)
|
||||
static void MarkIcePuzzleCoordVisited(s16 x, s16 y)
|
||||
{
|
||||
if (sub_809E108(x, y))
|
||||
*GetVarPointer(gUnknown_085103C8[y]) |= (1 << (x - 3));
|
||||
if (CoordInIcePuzzleRegion(x, y))
|
||||
*GetVarPointer(sSootopolisGymIceRowVars[y]) |= (1 << (x - 3));
|
||||
}
|
||||
|
||||
static bool32 sub_809E184(s16 x, s16 y)
|
||||
static bool32 IsIcePuzzleCoordVisited(s16 x, s16 y)
|
||||
{
|
||||
u32 var;
|
||||
if (!sub_809E108(x, y))
|
||||
if (!CoordInIcePuzzleRegion(x, y))
|
||||
return FALSE;
|
||||
|
||||
var = VarGet(gUnknown_085103C8[y]) << 16;
|
||||
if (((1 << 16) << (x - 3)) & var) // TODO: fix that if
|
||||
var = VarGet(sSootopolisGymIceRowVars[y]) << 16;
|
||||
if ((0x10000 << (x - 3)) & var) // TODO: fix that if
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -531,19 +522,17 @@ void SetSootopolisGymCrackedIceMetatiles(void)
|
||||
{
|
||||
for (y = 0; y < height; y++)
|
||||
{
|
||||
if (sub_809E184(x, y) == TRUE)
|
||||
{
|
||||
if (IsIcePuzzleCoordVisited(x, y) == TRUE)
|
||||
MapGridSetMetatileIdAt(x + 7, y + 7, 0x20e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void PerStepCallback_8069DD4(u8 taskId)
|
||||
static void SootopolisGymIcePerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 tileBehavior;
|
||||
u16 *var;
|
||||
u16 *iceStepCount;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[1])
|
||||
{
|
||||
@@ -560,10 +549,10 @@ static void PerStepCallback_8069DD4(u8 taskId)
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
var = GetVarPointer(VAR_ICE_STEP_COUNT);
|
||||
iceStepCount = GetVarPointer(VAR_ICE_STEP_COUNT);
|
||||
if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE)
|
||||
{
|
||||
(*var)++;
|
||||
(*iceStepCount)++;
|
||||
data[6] = 4;
|
||||
data[1] = 2;
|
||||
data[4] = x;
|
||||
@@ -571,7 +560,7 @@ static void PerStepCallback_8069DD4(u8 taskId)
|
||||
}
|
||||
else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE)
|
||||
{
|
||||
*var = 0;
|
||||
*iceStepCount = 0;
|
||||
data[6] = 4;
|
||||
data[1] = 3;
|
||||
data[4] = x;
|
||||
@@ -591,7 +580,7 @@ static void PerStepCallback_8069DD4(u8 taskId)
|
||||
PlaySE(SE_RU_BARI);
|
||||
MapGridSetMetatileIdAt(x, y, 0x20e);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
sub_809E14C(x - 7, y - 7);
|
||||
MarkIcePuzzleCoordVisited(x - 7, y - 7);
|
||||
data[1] = 1;
|
||||
}
|
||||
break;
|
||||
@@ -613,10 +602,10 @@ static void PerStepCallback_8069DD4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void PerStepCallback_8069F64(u8 taskId)
|
||||
static void AshGrassPerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 *var;
|
||||
u16 *ashGatherCount;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != data[1] || y != data[2])
|
||||
@@ -626,32 +615,27 @@ static void PerStepCallback_8069F64(u8 taskId)
|
||||
if (MetatileBehavior_IsAshGrass(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == 0x20a)
|
||||
{
|
||||
StartAshFieldEffect(x, y, 0x212, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
StartAshFieldEffect(x, y, 0x206, 4);
|
||||
}
|
||||
|
||||
if (CheckBagHasItem(ITEM_SOOT_SACK, 1))
|
||||
{
|
||||
var = GetVarPointer(VAR_ASH_GATHER_COUNT);
|
||||
if (*var < 9999)
|
||||
{
|
||||
(*var)++;
|
||||
}
|
||||
ashGatherCount = GetVarPointer(VAR_ASH_GATHER_COUNT);
|
||||
if (*ashGatherCount < 9999)
|
||||
(*ashGatherCount)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_809E490(s16 x, s16 y)
|
||||
static void SetCrackedFloorHoleMetatile(s16 x, s16 y)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
|
||||
static void PerStepCallback_806A07C(u8 taskId)
|
||||
static void CrackedFloorPerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 behavior;
|
||||
@@ -659,17 +643,14 @@ static void PerStepCallback_806A07C(u8 taskId)
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
behavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (data[4] != 0 && (--data[4]) == 0)
|
||||
{
|
||||
sub_809E490(data[5], data[6]);
|
||||
}
|
||||
SetCrackedFloorHoleMetatile(data[5], data[6]);
|
||||
|
||||
if (data[7] != 0 && (--data[7]) == 0)
|
||||
{
|
||||
sub_809E490(data[8], data[9]);
|
||||
}
|
||||
SetCrackedFloorHoleMetatile(data[8], data[9]);
|
||||
|
||||
if (MetatileBehavior_IsCrackedFloorHole(behavior))
|
||||
{
|
||||
VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
|
||||
}
|
||||
|
||||
if ((x != data[2] || y != data[3]))
|
||||
{
|
||||
data[2] = x;
|
||||
@@ -677,9 +658,8 @@ static void PerStepCallback_806A07C(u8 taskId)
|
||||
if (MetatileBehavior_IsCrackedFloor(behavior))
|
||||
{
|
||||
if (GetPlayerSpeed() != 4)
|
||||
{
|
||||
VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
|
||||
}
|
||||
|
||||
if (data[4] == 0)
|
||||
{
|
||||
data[4] = 3;
|
||||
@@ -696,17 +676,14 @@ static void PerStepCallback_806A07C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_809E5DC(s16 *data, s16 x, s16 y)
|
||||
static void SetMuddySlopeMetatile(s16 *data, s16 x, s16 y)
|
||||
{
|
||||
u16 tile;
|
||||
if ((--data[0]) == 0)
|
||||
{
|
||||
tile = 0xe8;
|
||||
}
|
||||
else
|
||||
{
|
||||
tile = gUnknown_085103FC[data[0] / 8];
|
||||
}
|
||||
tile = sMuddySlopeMetatiles[data[0] / 8];
|
||||
|
||||
MapGridSetMetatileIdAt(x, y, tile);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
MapGridSetMetatileIdAt(x, y, 0xe8);
|
||||
@@ -716,14 +693,14 @@ static void Task_MuddySlope(u8 taskId)
|
||||
{
|
||||
s16 x, y, x2, y2;
|
||||
int i;
|
||||
u16 mapIndices;
|
||||
u16 mapId;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
mapIndices = (gSaveBlock1Ptr->location.mapGroup << 8) | gSaveBlock1Ptr->location.mapNum;
|
||||
mapId = (gSaveBlock1Ptr->location.mapGroup << 8) | gSaveBlock1Ptr->location.mapNum;
|
||||
switch (data[1])
|
||||
{
|
||||
case 0:
|
||||
data[0] = mapIndices;
|
||||
data[0] = mapId;
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
data[1] = 1;
|
||||
@@ -739,7 +716,7 @@ static void Task_MuddySlope(u8 taskId)
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsMuddySlope(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
for (i=4; i<14; i+=3)
|
||||
for (i = 4; i < 14; i += 3)
|
||||
{
|
||||
if (data[i] == 0)
|
||||
{
|
||||
@@ -753,9 +730,9 @@ static void Task_MuddySlope(u8 taskId)
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (gCamera.active && mapIndices != data[0])
|
||||
if (gCamera.active && mapId != data[0])
|
||||
{
|
||||
data[0] = mapIndices;
|
||||
data[0] = mapId;
|
||||
x2 = gCamera.x;
|
||||
y2 = gCamera.y;
|
||||
}
|
||||
@@ -764,13 +741,14 @@ static void Task_MuddySlope(u8 taskId)
|
||||
x2 = 0;
|
||||
y2 = 0;
|
||||
}
|
||||
|
||||
for (i = 4; i < 14; i += 3)
|
||||
{
|
||||
if (data[i])
|
||||
{
|
||||
data[i + 1] -= x2;
|
||||
data[i + 2] -= y2;
|
||||
sub_809E5DC(&data[i], data[i + 1], data[i + 2]);
|
||||
SetMuddySlopeMetatile(&data[i], data[i + 1], data[i + 2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+139
-132
@@ -24,84 +24,94 @@ struct ConnectionFlags
|
||||
u8 east:1;
|
||||
};
|
||||
|
||||
EWRAM_DATA static u16 gUnknown_02032318[0x2800] = {0};
|
||||
EWRAM_DATA static u16 gBackupMapData[MAX_MAP_DATA_SIZE] = {0};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {0};
|
||||
EWRAM_DATA struct Camera gCamera = {0};
|
||||
EWRAM_DATA static struct ConnectionFlags gUnknown_02037340 = {0};
|
||||
EWRAM_DATA static struct ConnectionFlags gMapConnectionFlags = {0};
|
||||
EWRAM_DATA static u32 sFiller_02037344 = 0; // without this, the next file won't align properly
|
||||
|
||||
struct BackupMapLayout gUnknown_03005DC0;
|
||||
struct BackupMapLayout gBackupMapLayout;
|
||||
|
||||
static const struct ConnectionFlags sDummyConnectionFlags = {0};
|
||||
|
||||
static void InitMapLayoutData(struct MapHeader *mapHeader);
|
||||
static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height);
|
||||
static void FillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void FillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader);
|
||||
static void LoadSavedMapView(void);
|
||||
static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode);
|
||||
|
||||
struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection)
|
||||
{
|
||||
return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
|
||||
}
|
||||
|
||||
void not_trainer_hill_battle_pyramid(void)
|
||||
void InitMap(void)
|
||||
{
|
||||
mapheader_copy_mapdata_with_padding(&gMapHeader);
|
||||
InitMapLayoutData(&gMapHeader);
|
||||
sub_80E8EE0(gMapHeader.events);
|
||||
mapheader_run_script_with_tag_x1();
|
||||
}
|
||||
|
||||
void sub_8087D74(void)
|
||||
void InitMapFromSavedGame(void)
|
||||
{
|
||||
mapheader_copy_mapdata_with_padding(&gMapHeader);
|
||||
InitMapLayoutData(&gMapHeader);
|
||||
sub_80E9238(0);
|
||||
sub_80E8EE0(gMapHeader.events);
|
||||
mapdata_from_sav2();
|
||||
LoadSavedMapView();
|
||||
mapheader_run_script_with_tag_x1();
|
||||
UpdateTVScreensOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height);
|
||||
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
|
||||
}
|
||||
|
||||
void battle_pyramid_map_load_related(u8 a0)
|
||||
void InitBattlePyramidMap(u8 a0)
|
||||
{
|
||||
CpuFastFill(0x03ff03ff, gUnknown_02032318, sizeof(gUnknown_02032318));
|
||||
sub_81AA078(gUnknown_02032318, a0);
|
||||
CpuFastFill(0x03ff03ff, gBackupMapData, sizeof(gBackupMapData));
|
||||
sub_81AA078(gBackupMapData, a0);
|
||||
}
|
||||
|
||||
void trainer_hill_map_load_related(void)
|
||||
void InitTrainerHillMap(void)
|
||||
{
|
||||
CpuFastFill(0x03ff03ff, gUnknown_02032318, sizeof(gUnknown_02032318));
|
||||
sub_81D5FB4(gUnknown_02032318);
|
||||
CpuFastFill(0x03ff03ff, gBackupMapData, sizeof(gBackupMapData));
|
||||
sub_81D5FB4(gBackupMapData);
|
||||
}
|
||||
|
||||
void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader)
|
||||
static void InitMapLayoutData(struct MapHeader *mapHeader)
|
||||
{
|
||||
struct MapLayout const *mapLayout;
|
||||
int width;
|
||||
int height;
|
||||
mapLayout = mapHeader->mapLayout;
|
||||
CpuFastFill16(0x03ff, gUnknown_02032318, sizeof(gUnknown_02032318));
|
||||
gUnknown_03005DC0.map = gUnknown_02032318;
|
||||
CpuFastFill16(0x03ff, gBackupMapData, sizeof(gBackupMapData));
|
||||
gBackupMapLayout.map = gBackupMapData;
|
||||
width = mapLayout->width + 15;
|
||||
gUnknown_03005DC0.width = width;
|
||||
gBackupMapLayout.width = width;
|
||||
height = mapLayout->height + 14;
|
||||
gUnknown_03005DC0.height = height;
|
||||
if (width * height <= 0x2800)
|
||||
gBackupMapLayout.height = height;
|
||||
if (width * height <= MAX_MAP_DATA_SIZE)
|
||||
{
|
||||
map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height);
|
||||
mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
|
||||
InitBackupMapLayoutData(mapLayout->map, mapLayout->width, mapLayout->height);
|
||||
InitBackupMapLayoutConnections(mapHeader);
|
||||
}
|
||||
}
|
||||
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height)
|
||||
{
|
||||
u16 *dest;
|
||||
int y;
|
||||
dest = gUnknown_03005DC0.map;
|
||||
dest += gUnknown_03005DC0.width * 7 + 7;
|
||||
dest = gBackupMapLayout.map;
|
||||
dest += gBackupMapLayout.width * 7 + 7;
|
||||
for (y = 0; y < height; y++)
|
||||
{
|
||||
CpuCopy16(map, dest, width * 2);
|
||||
dest += width + 0xf;
|
||||
dest += width + 15;
|
||||
map += width;
|
||||
}
|
||||
}
|
||||
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader)
|
||||
{
|
||||
int count;
|
||||
struct MapConnection *connection;
|
||||
@@ -111,56 +121,54 @@ void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
{
|
||||
count = mapHeader->connections->count;
|
||||
connection = mapHeader->connections->connections;
|
||||
|
||||
gUnknown_02037340 = sDummyConnectionFlags;
|
||||
gMapConnectionFlags = sDummyConnectionFlags;
|
||||
for (i = 0; i < count; i++, connection++)
|
||||
{
|
||||
struct MapHeader const *cMap = mapconnection_get_mapheader(connection);
|
||||
u32 offset = connection->offset;
|
||||
|
||||
switch (connection->direction)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
fillSouthConnection(mapHeader, cMap, offset);
|
||||
gUnknown_02037340.south = 1;
|
||||
FillSouthConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.south = 1;
|
||||
break;
|
||||
case CONNECTION_NORTH:
|
||||
fillNorthConnection(mapHeader, cMap, offset);
|
||||
gUnknown_02037340.north = 1;
|
||||
FillNorthConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.north = 1;
|
||||
break;
|
||||
case CONNECTION_WEST:
|
||||
fillWestConnection(mapHeader, cMap, offset);
|
||||
gUnknown_02037340.west = 1;
|
||||
FillWestConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.west = 1;
|
||||
break;
|
||||
case CONNECTION_EAST:
|
||||
fillEastConnection(mapHeader, cMap, offset);
|
||||
gUnknown_02037340.east = 1;
|
||||
FillEastConnection(mapHeader, cMap, offset);
|
||||
gMapConnectionFlags.east = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8087F54(int x, int y, struct MapHeader const *mapHeader, int x2, int y2, int width, int height)
|
||||
static void sub_8087F54(int x, int y, struct MapHeader const *connectedMapHeader, int x2, int y2, int width, int height)
|
||||
{
|
||||
int i;
|
||||
u16 *src;
|
||||
u16 *dest;
|
||||
int mapWidth;
|
||||
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
src = &mapHeader->mapLayout->map[mapWidth * y2 + x2];
|
||||
dest = &gUnknown_03005DC0.map[gUnknown_03005DC0.width * y + x];
|
||||
mapWidth = connectedMapHeader->mapLayout->width;
|
||||
src = &connectedMapHeader->mapLayout->map[mapWidth * y2 + x2];
|
||||
dest = &gBackupMapLayout.map[gBackupMapLayout.width * y + x];
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
CpuCopy16(src, dest, width * 2);
|
||||
dest += gUnknown_03005DC0.width;
|
||||
dest += gBackupMapLayout.width;
|
||||
src += mapWidth;
|
||||
}
|
||||
}
|
||||
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void FillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int x, y;
|
||||
int x2;
|
||||
@@ -176,26 +184,26 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
{
|
||||
x2 = -x;
|
||||
x += cWidth;
|
||||
if (x < gUnknown_03005DC0.width)
|
||||
if (x < gBackupMapLayout.width)
|
||||
{
|
||||
width = x;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = gUnknown_03005DC0.width;
|
||||
width = gBackupMapLayout.width;
|
||||
}
|
||||
x = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
x2 = 0;
|
||||
if (x + cWidth < gUnknown_03005DC0.width)
|
||||
if (x + cWidth < gBackupMapLayout.width)
|
||||
{
|
||||
width = cWidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = gUnknown_03005DC0.width - x;
|
||||
width = gBackupMapLayout.width - x;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +215,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
}
|
||||
}
|
||||
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void FillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int x;
|
||||
int x2, y2;
|
||||
@@ -224,26 +232,26 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
{
|
||||
x2 = -x;
|
||||
x += cWidth;
|
||||
if (x < gUnknown_03005DC0.width)
|
||||
if (x < gBackupMapLayout.width)
|
||||
{
|
||||
width = x;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = gUnknown_03005DC0.width;
|
||||
width = gBackupMapLayout.width;
|
||||
}
|
||||
x = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
x2 = 0;
|
||||
if (x + cWidth < gUnknown_03005DC0.width)
|
||||
if (x + cWidth < gBackupMapLayout.width)
|
||||
{
|
||||
width = cWidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = gUnknown_03005DC0.width - x;
|
||||
width = gBackupMapLayout.width - x;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,7 +264,7 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
}
|
||||
}
|
||||
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int y;
|
||||
int x2, y2;
|
||||
@@ -271,26 +279,26 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
if (y < 0)
|
||||
{
|
||||
y2 = -y;
|
||||
if (y + cHeight < gUnknown_03005DC0.height)
|
||||
if (y + cHeight < gBackupMapLayout.height)
|
||||
{
|
||||
height = y + cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = gUnknown_03005DC0.height;
|
||||
height = gBackupMapLayout.height;
|
||||
}
|
||||
y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
y2 = 0;
|
||||
if (y + cHeight < gUnknown_03005DC0.height)
|
||||
if (y + cHeight < gBackupMapLayout.height)
|
||||
{
|
||||
height = cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = gUnknown_03005DC0.height - y;
|
||||
height = gBackupMapLayout.height - y;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +310,7 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
}
|
||||
}
|
||||
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
int x, y;
|
||||
int y2;
|
||||
@@ -316,26 +324,26 @@ void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
if (y < 0)
|
||||
{
|
||||
y2 = -y;
|
||||
if (y + cHeight < gUnknown_03005DC0.height)
|
||||
if (y + cHeight < gBackupMapLayout.height)
|
||||
{
|
||||
height = y + cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = gUnknown_03005DC0.height;
|
||||
height = gBackupMapLayout.height;
|
||||
}
|
||||
y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
y2 = 0;
|
||||
if (y + cHeight < gUnknown_03005DC0.height)
|
||||
if (y + cHeight < gBackupMapLayout.height)
|
||||
{
|
||||
height = cHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = gUnknown_03005DC0.height - y;
|
||||
height = gBackupMapLayout.height - y;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -364,10 +372,10 @@ u8 MapGridGetZCoordAt(int x, int y)
|
||||
int i;
|
||||
u16 *border;
|
||||
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
&& y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width
|
||||
&& y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
block = gUnknown_03005DC0.map[x + gUnknown_03005DC0.width * y];
|
||||
block = gBackupMapLayout.map[x + gBackupMapLayout.width * y];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -392,10 +400,10 @@ u8 MapGridIsImpassableAt(int x, int y)
|
||||
int i;
|
||||
u16 *border;
|
||||
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
&& y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width
|
||||
&& y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
block = gUnknown_03005DC0.map[x + gUnknown_03005DC0.width * y];
|
||||
block = gBackupMapLayout.map[x + gBackupMapLayout.width * y];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -421,10 +429,10 @@ u32 MapGridGetMetatileIdAt(int x, int y)
|
||||
u16 *border;
|
||||
u16 block2;
|
||||
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
&& y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width
|
||||
&& y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
block = gUnknown_03005DC0.map[x + gUnknown_03005DC0.width * y];
|
||||
block = gBackupMapLayout.map[x + gBackupMapLayout.width * y];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -462,22 +470,22 @@ u8 MapGridGetMetatileLayerTypeAt(int x, int y)
|
||||
void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
|
||||
{
|
||||
int i;
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
&& y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width
|
||||
&& y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
i = x + y * gUnknown_03005DC0.width;
|
||||
gUnknown_03005DC0.map[i] = (gUnknown_03005DC0.map[i] & 0xf000) | (metatile & 0xfff);
|
||||
i = x + y * gBackupMapLayout.width;
|
||||
gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & 0xf000) | (metatile & 0xfff);
|
||||
}
|
||||
}
|
||||
|
||||
void MapGridSetMetatileEntryAt(int x, int y, u16 metatile)
|
||||
{
|
||||
int i;
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
&& y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width
|
||||
&& y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
i = x + gUnknown_03005DC0.width * y;
|
||||
gUnknown_03005DC0.map[i] = metatile;
|
||||
i = x + gBackupMapLayout.width * y;
|
||||
gBackupMapLayout.map[i] = metatile;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -507,76 +515,75 @@ void save_serialize_map(void)
|
||||
u16 *mapView;
|
||||
int width;
|
||||
mapView = gSaveBlock1Ptr->mapView;
|
||||
width = gUnknown_03005DC0.width;
|
||||
width = gBackupMapLayout.width;
|
||||
x = gSaveBlock1Ptr->pos.x;
|
||||
y = gSaveBlock1Ptr->pos.y;
|
||||
for (i = y; i < y + 14; i++)
|
||||
{
|
||||
for (j = x; j < x + 15; j++)
|
||||
{
|
||||
*mapView++ = gUnknown_02032318[width * i + j];
|
||||
*mapView++ = gBackupMapData[width * i + j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int sub_8088438(void)
|
||||
static bool32 SavedMapViewIsEmpty(void)
|
||||
{
|
||||
u16 i;
|
||||
u32 r2;
|
||||
r2 = 0;
|
||||
u32 marker = 0;
|
||||
|
||||
// BUG: This loop extends past the bounds of the mapView array. Its size is only 0x100.
|
||||
for (i = 0; i < 0x200; i++)
|
||||
{
|
||||
r2 |= gSaveBlock1Ptr->mapView[i];
|
||||
}
|
||||
if (r2 == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
marker |= gSaveBlock1Ptr->mapView[i];
|
||||
|
||||
if (marker == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sav2_mapdata_clear(void)
|
||||
static void ClearSavedMapView(void)
|
||||
{
|
||||
CpuFill16(0, gSaveBlock1Ptr->mapView, sizeof(gSaveBlock1Ptr->mapView));
|
||||
}
|
||||
|
||||
void mapdata_from_sav2(void)
|
||||
static void LoadSavedMapView(void)
|
||||
{
|
||||
u8 a0;
|
||||
u8 yMode;
|
||||
int i, j;
|
||||
int x, y;
|
||||
u16 *mapView;
|
||||
int width;
|
||||
mapView = gSaveBlock1Ptr->mapView;
|
||||
if (!sub_8088438())
|
||||
if (!SavedMapViewIsEmpty())
|
||||
{
|
||||
width = gUnknown_03005DC0.width;
|
||||
width = gBackupMapLayout.width;
|
||||
x = gSaveBlock1Ptr->pos.x;
|
||||
y = gSaveBlock1Ptr->pos.y;
|
||||
for (i = y; i < y + 14; i++)
|
||||
{
|
||||
if (i == y && i != 0)
|
||||
a0 = 0;
|
||||
yMode = 0;
|
||||
else if (i == y + 13 && i != gMapHeader.mapLayout->height - 1)
|
||||
a0 = 1;
|
||||
yMode = 1;
|
||||
else
|
||||
a0 = -1;
|
||||
yMode = 0xFF;
|
||||
|
||||
for (j = x; j < x + 15; j++)
|
||||
{
|
||||
if (!sub_8088BF0(&gUnknown_02032318[j + width * i], width, a0))
|
||||
gUnknown_02032318[j + width * i] = *mapView;
|
||||
if (!SkipCopyingMetatileFromSavedMap(&gBackupMapData[j + width * i], width, yMode))
|
||||
gBackupMapData[j + width * i] = *mapView;
|
||||
mapView++;
|
||||
}
|
||||
}
|
||||
for (j = x; j < x + 15; j++)
|
||||
{
|
||||
if (y != 0)
|
||||
sub_80D423C(j, y - 1);
|
||||
FixLongGrassMetatilesWindowTop(j, y - 1);
|
||||
if (i < gMapHeader.mapLayout->height - 1)
|
||||
sub_80D42B8(j, y + 13);
|
||||
FixLongGrassMetatilesWindowBottom(j, y + 13);
|
||||
}
|
||||
sav2_mapdata_clear();
|
||||
ClearSavedMapView();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,7 +599,7 @@ void sub_80885C4(u8 a1)
|
||||
int x, y;
|
||||
int i, j;
|
||||
mapView = gSaveBlock1Ptr->mapView;
|
||||
width = gUnknown_03005DC0.width;
|
||||
width = gBackupMapLayout.width;
|
||||
r9 = 0;
|
||||
r8 = 0;
|
||||
x0 = gSaveBlock1Ptr->pos.x;
|
||||
@@ -627,13 +634,13 @@ void sub_80885C4(u8 a1)
|
||||
desti = width * (y + y0);
|
||||
srci = (y + r8) * 15 + r9;
|
||||
src = &mapView[srci + i];
|
||||
dest = &gUnknown_02032318[x0 + desti + j];
|
||||
dest = &gBackupMapData[x0 + desti + j];
|
||||
*dest = *src;
|
||||
i++;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
sav2_mapdata_clear();
|
||||
ClearSavedMapView();
|
||||
}
|
||||
|
||||
int GetMapBorderIdAt(int x, int y)
|
||||
@@ -641,12 +648,12 @@ int GetMapBorderIdAt(int x, int y)
|
||||
struct MapLayout const *mapLayout;
|
||||
u16 block, block2;
|
||||
int i, j;
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
&& y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width
|
||||
&& y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
i = gUnknown_03005DC0.width;
|
||||
i = gBackupMapLayout.width;
|
||||
i *= y;
|
||||
block = gUnknown_03005DC0.map[x + i];
|
||||
block = gBackupMapLayout.map[x + i];
|
||||
if (block == 0x3ff)
|
||||
{
|
||||
goto fail;
|
||||
@@ -668,9 +675,9 @@ fail:
|
||||
return -1;
|
||||
success:
|
||||
|
||||
if (x >= (gUnknown_03005DC0.width - 8))
|
||||
if (x >= (gBackupMapLayout.width - 8))
|
||||
{
|
||||
if (!gUnknown_02037340.east)
|
||||
if (!gMapConnectionFlags.east)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -678,15 +685,15 @@ success:
|
||||
}
|
||||
else if (x < 7)
|
||||
{
|
||||
if (!gUnknown_02037340.west)
|
||||
if (!gMapConnectionFlags.west)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return CONNECTION_WEST;
|
||||
}
|
||||
else if (y >= (gUnknown_03005DC0.height - 7))
|
||||
else if (y >= (gBackupMapLayout.height - 7))
|
||||
{
|
||||
if (!gUnknown_02037340.south)
|
||||
if (!gMapConnectionFlags.south)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -694,7 +701,7 @@ success:
|
||||
}
|
||||
else if (y < 7)
|
||||
{
|
||||
if (!gUnknown_02037340.north)
|
||||
if (!gMapConnectionFlags.north)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -891,13 +898,13 @@ void sub_8088B3C(u16 x, u16 y)
|
||||
gSaveBlock1Ptr->pos.y = y - 7;
|
||||
}
|
||||
|
||||
void sav1_camera_get_focus_coords(u16 *x, u16 *y)
|
||||
void GetCameraFocusCoords(u16 *x, u16 *y)
|
||||
{
|
||||
*x = gSaveBlock1Ptr->pos.x + 7;
|
||||
*y = gSaveBlock1Ptr->pos.y + 7;
|
||||
}
|
||||
|
||||
void SetCameraCoords(u16 x, u16 y)
|
||||
void SetPlayerCoords(u16 x, u16 y)
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = x;
|
||||
gSaveBlock1Ptr->pos.y = y;
|
||||
@@ -911,26 +918,26 @@ void GetCameraCoords(u16 *x, u16 *y)
|
||||
|
||||
void sub_8088B94(int x, int y, int a2)
|
||||
{
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width && y >= 0 && y < gUnknown_03005DC0.height)
|
||||
if (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height)
|
||||
{
|
||||
if (a2 != 0)
|
||||
gUnknown_03005DC0.map[x + gUnknown_03005DC0.width * y] |= 0xC00;
|
||||
gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= 0xC00;
|
||||
else
|
||||
gUnknown_03005DC0.map[x + gUnknown_03005DC0.width * y] &= 0xF3FF;
|
||||
gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= 0xF3FF;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8088BF0(u16* a0, u16 a1, u8 a2)
|
||||
static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode)
|
||||
{
|
||||
if (a2 == 0xFF)
|
||||
if (yMode == 0xFF)
|
||||
return FALSE;
|
||||
|
||||
if (a2 == 0)
|
||||
a0 -= a1;
|
||||
if (yMode == 0)
|
||||
mapMetatilePtr -= mapWidth;
|
||||
else
|
||||
a0 += a1;
|
||||
mapMetatilePtr += mapWidth;
|
||||
|
||||
if (sub_80FADE4(*a0 & 0x3FF, a2) == 1)
|
||||
if (sub_80FADE4(*mapMetatilePtr & 0x3FF, yMode) == 1)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -986,7 +993,7 @@ void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u1
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadCompressedPalette((u16*)tileset->palettes, destOffset, size);
|
||||
LoadCompressedPalette((u32*)tileset->palettes, destOffset, size);
|
||||
nullsub_3(destOffset, size >> 1);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -486,8 +486,8 @@ void sub_810CF30(struct Sprite *sprite)
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
|
||||
|
||||
xMod = sub_80A861C(battler, 1) / 2;
|
||||
yMod = sub_80A861C(battler, 0) / 4;
|
||||
xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2;
|
||||
yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
||||
|
||||
x = Random2() % xMod;
|
||||
y = Random2() % yMod;
|
||||
|
||||
+2
-2
@@ -624,7 +624,7 @@ static void CutGrassSpriteCallbackEnd(struct Sprite *sprite)
|
||||
ScriptContext1_SetupScript(FarawayIsland_Interior_EventScript_267EDB);
|
||||
}
|
||||
|
||||
void sub_80D423C(s16 x, s16 y)
|
||||
void FixLongGrassMetatilesWindowTop(s16 x, s16 y)
|
||||
{
|
||||
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsLongGrass_Duplicate(metatileBehavior))
|
||||
@@ -647,7 +647,7 @@ void sub_80D423C(s16 x, s16 y)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D42B8(s16 x, s16 y)
|
||||
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == METATILE_ID_GRASS)
|
||||
{
|
||||
|
||||
+1
-1
@@ -156,7 +156,7 @@ static bool8 sub_8137304(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 v0 = GetLastUsedWarpMapType();
|
||||
u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
|
||||
u8 v1 = GetCurrentMapType();
|
||||
|
||||
for (i = 0; gUnknown_085B27C8[i].unk0; i++)
|
||||
{
|
||||
|
||||
+7
-7
@@ -376,7 +376,7 @@ static void sub_80F9C90(u8 taskId)
|
||||
task->data[7] = GetGpuReg(REG_OFFSET_BLDCNT);
|
||||
task->data[8] = GetGpuReg(REG_OFFSET_BLDY);
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0xBF);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0x10);
|
||||
|
||||
break;
|
||||
@@ -452,7 +452,7 @@ static void sub_80F9DFC(u8 taskId)
|
||||
{
|
||||
task->data[5] = 0x50;
|
||||
task->data[6] = 0x51;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0xBF);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0x10);
|
||||
}
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
|
||||
@@ -1166,23 +1166,23 @@ void GetShieldToyTVDecorationInfo(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80FADE4(u16 arg0, u8 arg1)
|
||||
bool8 sub_80FADE4(u16 metatileId, u8 arg1)
|
||||
{
|
||||
if (!CurrentMapIsSecretBase())
|
||||
return FALSE;
|
||||
|
||||
if (!arg1)
|
||||
{
|
||||
if (arg0 == 0x285 || arg0 == 0x286)
|
||||
if (metatileId == 0x285 || metatileId == 0x286)
|
||||
return TRUE;
|
||||
if (arg0 == 0x237)
|
||||
if (metatileId == 0x237)
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (arg0 == 0x28d)
|
||||
if (metatileId == 0x28d)
|
||||
return TRUE;
|
||||
if (arg0 == 0x23F)
|
||||
if (metatileId == 0x23F)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -2407,9 +2407,9 @@ void sub_81A4C30(void)
|
||||
|
||||
i = gPlayerPartyCount;
|
||||
LoadPlayerParty();
|
||||
sub_8076D5C();
|
||||
SetContinueGameWarpStatusToDynamicWarp();
|
||||
TrySavingData(SAVE_LINK);
|
||||
sav2_gender2_inplace_and_xFE();
|
||||
ClearContinueGameWarpStatus2();
|
||||
gPlayerPartyCount = i;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
|
||||
+3
-3
@@ -800,7 +800,7 @@ void sub_81123C4(u8 taskId)
|
||||
task->data[10] = gBattleAnimArgs[0];
|
||||
|
||||
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
baseY = sub_80A861C(gBattleAnimAttacker, 3);
|
||||
baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM);
|
||||
if (!IsContest())
|
||||
{
|
||||
for (battler = 0; battler < 4; battler++)
|
||||
@@ -813,7 +813,7 @@ void sub_81123C4(u8 taskId)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
x = GetBattlerSpriteCoord(battler, 2);
|
||||
y = sub_80A861C(battler, 3);
|
||||
y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_BOTTOM);
|
||||
gSprites[spriteId].data[0] = baseX << 4;
|
||||
gSprites[spriteId].data[1] = baseY << 4;
|
||||
gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
|
||||
@@ -1168,7 +1168,7 @@ void sub_8112C6C(u8 taskId)
|
||||
task->data[1] = 16;
|
||||
task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[11] = (sub_80A861C(gBattleAnimAttacker, 1) / 2) + 8;
|
||||
task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2) + 8;
|
||||
task->data[7] = 0;
|
||||
task->data[5] = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 2;
|
||||
|
||||
+3
-3
@@ -897,9 +897,9 @@ const u32 gBattleStatMask6_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat6
|
||||
const u32 gBattleStatMask7_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat7.gbapal.lz");
|
||||
const u32 gBattleStatMask8_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat8.gbapal.lz");
|
||||
|
||||
const u8 gUnknown_08C2DC68[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.4bpp.lz");
|
||||
const u16 gUnknown_08C2DDA4[] = INCBIN_U16("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
|
||||
const u8 gUnknown_08C2DDC4[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.bin.lz");
|
||||
const u32 gCureBubblesGfx[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.4bpp.lz");
|
||||
const u32 gCureBubblesPal[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
|
||||
const u32 gCureBubblesTilemap[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.bin.lz");
|
||||
|
||||
const u32 gBattleAnimSpritePalette_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.gbapal.lz");
|
||||
const u32 gBattleAnimSpriteSheet_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.4bpp.lz");
|
||||
|
||||
+5
-5
@@ -355,8 +355,8 @@ static bool8 InitHallOfFameScreen(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x3F42);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x710);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 7));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
sub_8174FAC();
|
||||
sHofGfxPtr->state = 0;
|
||||
@@ -817,8 +817,8 @@ void CB2_DoHallOfFamePC(void)
|
||||
{
|
||||
u8 taskId, i;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x3F42);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x710);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 7));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
taskId = CreateTask(Task_HofPC_CopySaveData, 0);
|
||||
|
||||
@@ -1299,7 +1299,7 @@ static bool8 sub_8175024(void)
|
||||
CopyBgTilemapBufferToVram(3);
|
||||
break;
|
||||
case 3:
|
||||
sub_81971D0();
|
||||
InitStandardTextBoxWindows();
|
||||
sub_8197200();
|
||||
break;
|
||||
case 4:
|
||||
|
||||
@@ -1599,12 +1599,12 @@ bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
|
||||
switch (unk)
|
||||
{
|
||||
case 0:
|
||||
battlerX -= sub_80A861C(battler, 1) / 6;
|
||||
battlerY -= sub_80A861C(battler, 0) / 6;
|
||||
battlerX -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
|
||||
battlerY -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
|
||||
break;
|
||||
case 1:
|
||||
battlerX += sub_80A861C(battler, 1) / 6;
|
||||
battlerY += sub_80A861C(battler, 0) / 6;
|
||||
battlerX += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
|
||||
battlerY += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1692,7 +1692,7 @@ bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
|
||||
_0810CA60:\n\
|
||||
adds r0, r5, 0\n\
|
||||
movs r1, 0x1\n\
|
||||
bl sub_80A861C\n\
|
||||
bl GetBattlerSpriteCoordAttr\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
movs r1, 0x6\n\
|
||||
@@ -1704,7 +1704,7 @@ _0810CA60:\n\
|
||||
lsrs r7, r1, 16\n\
|
||||
adds r0, r5, 0\n\
|
||||
movs r1, 0\n\
|
||||
bl sub_80A861C\n\
|
||||
bl GetBattlerSpriteCoordAttr\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
movs r1, 0x6\n\
|
||||
@@ -1716,7 +1716,7 @@ _0810CA60:\n\
|
||||
_0810CA96:\n\
|
||||
adds r0, r5, 0\n\
|
||||
movs r1, 0x1\n\
|
||||
bl sub_80A861C\n\
|
||||
bl GetBattlerSpriteCoordAttr\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
movs r1, 0x6\n\
|
||||
@@ -1728,7 +1728,7 @@ _0810CA96:\n\
|
||||
lsrs r7, r1, 16\n\
|
||||
adds r0, r5, 0\n\
|
||||
movs r1, 0\n\
|
||||
bl sub_80A861C\n\
|
||||
bl GetBattlerSpriteCoordAttr\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
movs r1, 0x6\n\
|
||||
|
||||
+8
-7
@@ -32,6 +32,7 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "constants/bg_event_constants.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -570,15 +571,15 @@ u8 sub_80FD9B0(s16 itemX, s16 itemY)
|
||||
|
||||
void sub_80FDA24(u8 direction)
|
||||
{
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
UnfreezeEventObject(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]);
|
||||
EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]);
|
||||
UnfreezeEventObject(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]);
|
||||
PlayerTurnInPlace(direction);
|
||||
}
|
||||
|
||||
void sub_80FDA94(u8 taskId)
|
||||
{
|
||||
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
|
||||
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]) == TRUE)
|
||||
DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC);
|
||||
}
|
||||
|
||||
@@ -586,7 +587,7 @@ void sub_80FDADC(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|
||||
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]) == TRUE
|
||||
|| data[2] == FALSE)
|
||||
{
|
||||
sub_80FDA24(gUnknown_085920E4[data[5]]);
|
||||
@@ -627,7 +628,7 @@ void sub_80FDC00(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
OpenPokeblockCase(0, CB2_ReturnToField);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -665,7 +666,7 @@ void ItemUseOutOfBattle_PowderJar(u8 taskId)
|
||||
|
||||
void sub_80FDD10(u8 taskId)
|
||||
{
|
||||
if (IsPlayerFacingPlantedBerryTree() == TRUE)
|
||||
if (IsPlayerFacingEmptyBerryTreePatch() == TRUE)
|
||||
{
|
||||
gUnknown_0203A0F4 = sub_80FDD74;
|
||||
gFieldCallback = MapPostLoadHook_UseItem;
|
||||
|
||||
+1
-1
@@ -1080,7 +1080,7 @@ bool8 sub_800A4D8(u8 a0)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_800A520(void)
|
||||
bool8 IsLinkTaskFinished(void)
|
||||
{
|
||||
if (gWirelessCommType == TRUE)
|
||||
{
|
||||
|
||||
+2
-2
@@ -4123,7 +4123,7 @@ void sub_8010AAC(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 5:
|
||||
if (sub_800A520() && GetBlockReceivedStatus() & 1)
|
||||
if (IsLinkTaskFinished() && GetBlockReceivedStatus() & 1)
|
||||
{
|
||||
CpuFill16(0, gBlockRecvBuffer, sizeof(struct UnkRfuStruct_8010A14));
|
||||
ResetBlockReceivedFlag(0);
|
||||
@@ -4162,7 +4162,7 @@ void sub_8010D0C(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
|
||||
+16
-15
@@ -1,13 +1,14 @@
|
||||
#include "global.h"
|
||||
#include "gba/flash_internal.h"
|
||||
#include "alloc.h"
|
||||
#include "item.h"
|
||||
#include "load_save.h"
|
||||
#include "main.h"
|
||||
#include "overworld.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "random.h"
|
||||
#include "alloc.h"
|
||||
#include "item.h"
|
||||
#include "overworld.h"
|
||||
#include "save_location.h"
|
||||
#include "gba/flash_internal.h"
|
||||
#include "decoration_inventory.h"
|
||||
|
||||
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
|
||||
@@ -136,30 +137,30 @@ void MoveSaveBlocks_ResetHeap(void)
|
||||
gSaveBlock2Ptr->encryptionKey = encryptionKey;
|
||||
}
|
||||
|
||||
u32 GetSecretBase2Field_9(void)
|
||||
u32 UseContinueGameWarp(void)
|
||||
{
|
||||
return gSaveBlock2Ptr->specialSaveWarp & 1;
|
||||
return gSaveBlock2Ptr->specialSaveWarpFlags & CONTINUE_GAME_WARP;
|
||||
}
|
||||
|
||||
void ClearSecretBase2Field_9(void)
|
||||
void ClearContinueGameWarpStatus(void)
|
||||
{
|
||||
gSaveBlock2Ptr->specialSaveWarp &= ~1;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
|
||||
}
|
||||
|
||||
void SetSecretBase2Field_9(void)
|
||||
void SetContinueGameWarpStatus(void)
|
||||
{
|
||||
gSaveBlock2Ptr->specialSaveWarp |= 1;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
|
||||
}
|
||||
|
||||
void sub_8076D5C(void)
|
||||
void SetContinueGameWarpStatusToDynamicWarp(void)
|
||||
{
|
||||
sub_8084FAC(0);
|
||||
gSaveBlock2Ptr->specialSaveWarp |= 1;
|
||||
SetContinueGameWarpToDynamicWarp(0);
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
|
||||
}
|
||||
|
||||
void sav2_gender2_inplace_and_xFE(void)
|
||||
void ClearContinueGameWarpStatus2(void)
|
||||
{
|
||||
gSaveBlock2Ptr->specialSaveWarp &= ~1;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
|
||||
}
|
||||
|
||||
void SavePlayerParty(void)
|
||||
|
||||
+23
-23
@@ -170,29 +170,29 @@ static const u16 sUnknown_0859F2B0[][2] = {
|
||||
|
||||
static const struct MailGraphics sUnknown_0859F2B8[] = {
|
||||
{
|
||||
gMailPalette_Orange, gMailTiles_Orange, gMailTilemap_Orange, 0x02c0, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Orange, gMailTiles_Orange, gMailTilemap_Orange, 0x02c0, 0, 0x294a, 0x6739
|
||||
}, {
|
||||
gMailPalette_Harbor, gMailTiles_Harbor, gMailTilemap_Harbor, 0x02e0, 0x0000, 0x7fff, 0x4631
|
||||
gMailPalette_Harbor, gMailTiles_Harbor, gMailTilemap_Harbor, 0x02e0, 0, 0x7fff, 0x4631
|
||||
}, {
|
||||
gMailPalette_Glitter, gMailTiles_Glitter, gMailTilemap_Glitter, 0x0400, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Glitter, gMailTiles_Glitter, gMailTilemap_Glitter, 0x0400, 0, 0x294a, 0x6739
|
||||
}, {
|
||||
gMailPalette_Mech, gMailTiles_Mech, gMailTilemap_Mech, 0x01e0, 0x0000, 0x7fff, 0x4631
|
||||
gMailPalette_Mech, gMailTiles_Mech, gMailTilemap_Mech, 0x01e0, 0, 0x7fff, 0x4631
|
||||
}, {
|
||||
gMailPalette_Wood, gMailTiles_Wood, gMailTilemap_Wood, 0x02e0, 0x0000, 0x7fff, 0x4631
|
||||
gMailPalette_Wood, gMailTiles_Wood, gMailTilemap_Wood, 0x02e0, 0, 0x7fff, 0x4631
|
||||
}, {
|
||||
gMailPalette_Wave, gMailTiles_Wave, gMailTilemap_Wave, 0x0300, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Wave, gMailTiles_Wave, gMailTilemap_Wave, 0x0300, 0, 0x294a, 0x6739
|
||||
}, {
|
||||
gMailPalette_Bead, gMailTiles_Bead, gMailTilemap_Bead, 0x0140, 0x0000, 0x7fff, 0x4631
|
||||
gMailPalette_Bead, gMailTiles_Bead, gMailTilemap_Bead, 0x0140, 0, 0x7fff, 0x4631
|
||||
}, {
|
||||
gMailPalette_Shadow, gMailTiles_Shadow, gMailTilemap_Shadow, 0x0300, 0x0000, 0x7fff, 0x4631
|
||||
gMailPalette_Shadow, gMailTiles_Shadow, gMailTilemap_Shadow, 0x0300, 0, 0x7fff, 0x4631
|
||||
}, {
|
||||
gMailPalette_Tropic, gMailTiles_Tropic, gMailTilemap_Tropic, 0x0220, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Tropic, gMailTiles_Tropic, gMailTilemap_Tropic, 0x0220, 0, 0x294a, 0x6739
|
||||
}, {
|
||||
gMailPalette_Dream, gMailTiles_Dream, gMailTilemap_Dream, 0x0340, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Dream, gMailTiles_Dream, gMailTilemap_Dream, 0x0340, 0, 0x294a, 0x6739
|
||||
}, {
|
||||
gMailPalette_Fab, gMailTiles_Fab, gMailTilemap_Fab, 0x02a0, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Fab, gMailTiles_Fab, gMailTilemap_Fab, 0x02a0, 0, 0x294a, 0x6739
|
||||
}, {
|
||||
gMailPalette_Retro, gMailTiles_Retro, gMailTilemap_Retro, 0x0520, 0x0000, 0x294a, 0x6739
|
||||
gMailPalette_Retro, gMailTiles_Retro, gMailTilemap_Retro, 0x0520, 0, 0x294a, 0x6739
|
||||
}
|
||||
};
|
||||
|
||||
@@ -306,7 +306,7 @@ static bool8 MailReadBuildGraphics(void)
|
||||
case 0:
|
||||
SetVBlankCallback(NULL);
|
||||
ScanlineEffect_Stop();
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
break;
|
||||
case 1:
|
||||
CpuFill16(0, (void *)OAM, OAM_SIZE);
|
||||
@@ -323,16 +323,16 @@ static bool8 MailReadBuildGraphics(void)
|
||||
case 5:
|
||||
FreeAllSpritePalettes();
|
||||
reset_temp_tile_data_buffers();
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG3HOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG3VOFS, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
break;
|
||||
case 6:
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
|
||||
+27
-27
@@ -48,8 +48,8 @@ struct Menu
|
||||
bool8 APressMuted;
|
||||
};
|
||||
|
||||
static EWRAM_DATA u8 gStartMenuWindowId = 0;
|
||||
static EWRAM_DATA u8 gUnknown_0203CD8D = 0;
|
||||
static EWRAM_DATA u8 sStartMenuWindowId = 0;
|
||||
static EWRAM_DATA u8 sMapNamePopupWindowId = 0;
|
||||
static EWRAM_DATA struct Menu gUnknown_0203CD90 = {0};
|
||||
static EWRAM_DATA u16 gUnknown_0203CD9C = 0;
|
||||
static EWRAM_DATA u8 gUnknown_0203CD9E = 0;
|
||||
@@ -63,7 +63,7 @@ static EWRAM_DATA void *gUnknown_0203CDAC[0x20] = {NULL};
|
||||
const u16 gUnknown_0860F074[] = INCBIN_U16("graphics/interface/860F074.gbapal");
|
||||
static const u8 gUnknown_0860F094[] = { 8, 4, 1 };
|
||||
|
||||
static const struct WindowTemplate gUnknown_0860F098[] =
|
||||
static const struct WindowTemplate sStandardTextBox_WindowTemplates[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
@@ -77,7 +77,7 @@ static const struct WindowTemplate gUnknown_0860F098[] =
|
||||
DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_0860F0A8 =
|
||||
static const struct WindowTemplate sYesNo_WindowTemplates =
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
@@ -137,14 +137,14 @@ extern u8 sub_8199134(s8, s8);
|
||||
extern void sub_8198C78(void);
|
||||
extern void task_free_buf_after_copying_tile_data_to_vram(u8 taskId);
|
||||
|
||||
void sub_81971D0(void)
|
||||
void InitStandardTextBoxWindows(void)
|
||||
{
|
||||
InitWindows(gUnknown_0860F098);
|
||||
gStartMenuWindowId = 0xFF;
|
||||
gUnknown_0203CD8D = 0xFF;
|
||||
InitWindows(sStandardTextBox_WindowTemplates);
|
||||
sStartMenuWindowId = 0xFF;
|
||||
sMapNamePopupWindowId = 0xFF;
|
||||
}
|
||||
|
||||
void sub_81971F4(void)
|
||||
void FreeAllOverworldWindowBuffers(void)
|
||||
{
|
||||
FreeAllWindowBuffers();
|
||||
}
|
||||
@@ -460,12 +460,12 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback)
|
||||
|
||||
void DisplayYesNoMenu(void)
|
||||
{
|
||||
CreateYesNoMenu(&gUnknown_0860F0A8, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
|
||||
CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
|
||||
}
|
||||
|
||||
void sub_8197948(u8 initialCursorPos)
|
||||
{
|
||||
CreateYesNoMenu(&gUnknown_0860F0A8, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos);
|
||||
CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos);
|
||||
}
|
||||
|
||||
u32 GetPlayerTextSpeed(void)
|
||||
@@ -486,22 +486,22 @@ u8 GetPlayerTextSpeedDelay(void)
|
||||
|
||||
u8 sub_81979C4(u8 a1)
|
||||
{
|
||||
if (gStartMenuWindowId == 0xFF)
|
||||
gStartMenuWindowId = sub_8198AA4(0, 0x16, 1, 7, (a1 * 2) + 2, 0xF, 0x139);
|
||||
return gStartMenuWindowId;
|
||||
if (sStartMenuWindowId == 0xFF)
|
||||
sStartMenuWindowId = sub_8198AA4(0, 0x16, 1, 7, (a1 * 2) + 2, 0xF, 0x139);
|
||||
return sStartMenuWindowId;
|
||||
}
|
||||
|
||||
u8 GetStartMenuWindowId(void)
|
||||
{
|
||||
return gStartMenuWindowId;
|
||||
return sStartMenuWindowId;
|
||||
}
|
||||
|
||||
void RemoveStartMenuWindow(void)
|
||||
{
|
||||
if (gStartMenuWindowId != 0xFF)
|
||||
if (sStartMenuWindowId != 0xFF)
|
||||
{
|
||||
RemoveWindow(gStartMenuWindowId);
|
||||
gStartMenuWindowId = 0xFF;
|
||||
RemoveWindow(sStartMenuWindowId);
|
||||
sStartMenuWindowId = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -517,22 +517,22 @@ u16 sub_8197A38(void)
|
||||
|
||||
u8 AddMapNamePopUpWindow(void)
|
||||
{
|
||||
if (gUnknown_0203CD8D == 0xFF)
|
||||
gUnknown_0203CD8D = sub_8198AA4(0, 1, 1, 10, 3, 14, 0x107);
|
||||
return gUnknown_0203CD8D;
|
||||
if (sMapNamePopupWindowId == 0xFF)
|
||||
sMapNamePopupWindowId = sub_8198AA4(0, 1, 1, 10, 3, 14, 0x107);
|
||||
return sMapNamePopupWindowId;
|
||||
}
|
||||
|
||||
u8 GetMapNamePopUpWindowId(void)
|
||||
{
|
||||
return gUnknown_0203CD8D;
|
||||
return sMapNamePopupWindowId;
|
||||
}
|
||||
|
||||
void RemoveMapNamePopUpWindow(void)
|
||||
{
|
||||
if (gUnknown_0203CD8D != 0xFF)
|
||||
if (sMapNamePopupWindowId != 0xFF)
|
||||
{
|
||||
RemoveWindow(gUnknown_0203CD8D);
|
||||
gUnknown_0203CD8D = 0xFF;
|
||||
RemoveWindow(sMapNamePopupWindowId);
|
||||
sMapNamePopupWindowId = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1934,8 +1934,8 @@ void sub_8199D98(void)
|
||||
|
||||
void sub_8199DF0(u32 bg, u8 a1, int a2, int a3)
|
||||
{
|
||||
int temp = (!GetBgAttribute(bg, 4)) ? 0x20 : 0x40;
|
||||
void *addr = (void *)((GetBgAttribute(bg, 1) * 0x4000) + (GetBgAttribute(bg, 10) + a2) * temp);
|
||||
int temp = (!GetBgAttribute(bg, BG_ATTR_PALETTEMODE)) ? 0x20 : 0x40;
|
||||
void *addr = (void *)((GetBgAttribute(bg, BG_ATTR_CHARBASEINDEX) * 0x4000) + (GetBgAttribute(bg, BG_ATTR_BASETILE) + a2) * temp);
|
||||
RequestDma3Fill(a1 << 24 | a1 << 16 | a1 << 8 | a1, addr + VRAM, a3 * temp, 1);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -509,7 +509,7 @@ static void InitMirageTowerShake(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
FreeAllWindowBuffers();
|
||||
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 2);
|
||||
SetBgAttribute(0, BG_ATTR_PRIORITY, 2);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -624,8 +624,8 @@ static void DoMirageTowerDisintegration(u8 taskId)
|
||||
case 6:
|
||||
SetGpuRegBits(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2));
|
||||
SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0));
|
||||
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 0);
|
||||
sub_81971D0();
|
||||
SetBgAttribute(0, BG_ATTR_PRIORITY, 0);
|
||||
InitStandardTextBoxWindows();
|
||||
break;
|
||||
case 7:
|
||||
ShowBg(0);
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@
|
||||
#include "mossdeep_gym.h"
|
||||
#include "script_movement.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
// Movement scripts.
|
||||
extern const u8 gUnknown_08612698[];
|
||||
@@ -52,7 +53,7 @@ void FinishMossdeepGymTiles(void)
|
||||
if (gUnknown_0203CE50 != NULL)
|
||||
FREE_AND_SET_NULL(gUnknown_0203CE50);
|
||||
|
||||
id = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
id = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
|
||||
sub_80D338C();
|
||||
}
|
||||
|
||||
+1
-1
@@ -362,7 +362,7 @@ static void NamingScreen_InitBGs(void)
|
||||
ChangeBgX(3, 0, 0);
|
||||
ChangeBgY(3, 0, 0);
|
||||
|
||||
sub_81971D0();
|
||||
InitStandardTextBoxWindows();
|
||||
sub_8197200();
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
|
||||
+3
-2
@@ -27,6 +27,7 @@
|
||||
#include "pokedex.h"
|
||||
#include "apprentice.h"
|
||||
#include "frontier_util.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
extern u16 gSaveFileStatus;
|
||||
extern u8 gUnknown_030060B0;
|
||||
@@ -135,7 +136,7 @@ static void ClearFrontierRecord(void)
|
||||
|
||||
static void WarpToTruck(void)
|
||||
{
|
||||
Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
|
||||
SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), -1, -1, -1);
|
||||
WarpIntoMap();
|
||||
}
|
||||
|
||||
@@ -168,7 +169,7 @@ void NewGameInitData(void)
|
||||
ClearFrontierRecord();
|
||||
ClearSav1();
|
||||
ClearMailData();
|
||||
gSaveBlock2Ptr->specialSaveWarp = 0;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags = 0;
|
||||
gSaveBlock2Ptr->field_A8 = 0;
|
||||
InitPlayerTrainerId();
|
||||
PlayTimeCounter_Reset();
|
||||
|
||||
+90
-97
@@ -57,8 +57,10 @@
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/weather.h"
|
||||
|
||||
// event scripts
|
||||
extern const u8 EventScript_WhiteOut[];
|
||||
@@ -100,7 +102,6 @@ extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey);
|
||||
extern void mapheader_run_script_with_tag_x5(void);
|
||||
extern void ResetFieldTasksArgs(void);
|
||||
extern void sub_80A0A2C(void);
|
||||
extern void not_trainer_hill_battle_pyramid(void);
|
||||
extern void apply_map_tileset2_palette(const struct MapLayout *);
|
||||
extern void copy_map_tileset2_to_vram_2(const struct MapLayout *);
|
||||
extern void RestartWildEncounterImmunitySteps(void);
|
||||
@@ -114,7 +115,6 @@ extern void c2_change_map(void);
|
||||
extern void sub_81D5DF8(void);
|
||||
extern void sub_80EB218(void);
|
||||
extern void sub_80AF3C8(void);
|
||||
extern void sub_81971F4(void);
|
||||
extern void sub_808B578(void);
|
||||
extern void sub_80AF314(void);
|
||||
extern void sub_80AF214(void);
|
||||
@@ -125,16 +125,12 @@ extern void sub_80AF168(void);
|
||||
extern void sub_80AF3C8(void);
|
||||
extern void ExecuteTruckSequence(void);
|
||||
extern void sub_80A0A38(void);
|
||||
extern void trainer_hill_map_load_related(void);
|
||||
extern void sub_8087D74(void);
|
||||
extern void battle_pyramid_map_load_related(u8);
|
||||
extern void WriteFlashScanlineEffectBuffer(u8);
|
||||
extern void sub_80E9238(u8);
|
||||
extern void sub_81AA2F8(void);
|
||||
extern void sub_8195E10(void);
|
||||
extern void sub_80EDB44(void);
|
||||
extern void sub_81D64C0(void);
|
||||
extern void sub_8098128(void);
|
||||
extern void InitFieldMessageBox(void);
|
||||
extern void copy_map_tileset1_to_vram(const struct MapLayout *);
|
||||
extern void copy_map_tileset2_to_vram(const struct MapLayout *);
|
||||
extern void FieldUpdateBgTilemapScroll(void);
|
||||
@@ -148,7 +144,6 @@ extern void SetUpFieldTasks(void);
|
||||
extern void ShowStartMenu(void);
|
||||
extern void sub_80AEE84(void);
|
||||
extern void mapldr_default(void);
|
||||
extern void sub_8088B3C(u16, u16);
|
||||
extern bool32 sub_800F0B8(void);
|
||||
extern bool32 sub_8009F3C(void);
|
||||
extern void sub_8010198(void);
|
||||
@@ -339,7 +334,7 @@ const struct UCoords32 gDirectionToVectors[] =
|
||||
},
|
||||
};
|
||||
|
||||
static const struct BgTemplate gUnknown_08339DAC[] =
|
||||
static const struct BgTemplate sOverworldBgTemplates[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
@@ -433,7 +428,7 @@ void DoWhiteOut(void)
|
||||
SetMoney(&gSaveBlock1Ptr->money, GetMoney(&gSaveBlock1Ptr->money) / 2);
|
||||
HealPlayerParty();
|
||||
Overworld_ResetStateAfterWhiteOut();
|
||||
Overworld_SetWarpDestToLastHealLoc();
|
||||
SetWarpDestinationToLastHealLocation();
|
||||
WarpIntoMap();
|
||||
}
|
||||
|
||||
@@ -615,7 +610,7 @@ void ApplyCurrentWarp(void)
|
||||
gFixedHoleWarp = sDummyWarpData;
|
||||
}
|
||||
|
||||
void set_warp2_warp3_to_neg_1(void)
|
||||
static void ClearDiveAndHoleWarps(void)
|
||||
{
|
||||
gFixedDiveWarp = sDummyWarpData;
|
||||
gFixedHoleWarp = sDummyWarpData;
|
||||
@@ -696,68 +691,66 @@ void WarpIntoMap(void)
|
||||
SetPlayerCoordsFromWarp();
|
||||
}
|
||||
|
||||
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
{
|
||||
SetWarpData(&sWarpDestination, mapGroup, mapNum, warpId, x, y);
|
||||
}
|
||||
|
||||
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId)
|
||||
void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpId)
|
||||
{
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1);
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, -1, -1);
|
||||
}
|
||||
|
||||
void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId)
|
||||
void SetDynamicWarp(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId)
|
||||
{
|
||||
SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
|
||||
SetWarpData(&gSaveBlock1Ptr->dynamicWarp, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
|
||||
}
|
||||
|
||||
void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
void SetDynamicWarpWithCoords(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
{
|
||||
SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpData(&gSaveBlock1Ptr->dynamicWarp, mapGroup, mapNum, warpId, x, y);
|
||||
}
|
||||
|
||||
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused)
|
||||
void SetWarpDestinationToDynamicWarp(u8 unusedWarpId)
|
||||
{
|
||||
sWarpDestination = gSaveBlock1Ptr->warp2;
|
||||
sWarpDestination = gSaveBlock1Ptr->dynamicWarp;
|
||||
}
|
||||
|
||||
void sub_8084CCC(u8 a1)
|
||||
void SetWarpDestinationToHealLocation(u8 healLocationId)
|
||||
{
|
||||
const struct HealLocation *warp = GetHealLocation(a1);
|
||||
|
||||
const struct HealLocation *warp = GetHealLocation(healLocationId);
|
||||
if (warp)
|
||||
Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y);
|
||||
SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y);
|
||||
}
|
||||
|
||||
void Overworld_SetWarpDestToLastHealLoc(void)
|
||||
void SetWarpDestinationToLastHealLocation(void)
|
||||
{
|
||||
sWarpDestination = gSaveBlock1Ptr->lastHealLocation;
|
||||
}
|
||||
|
||||
void Overworld_SetHealLocationWarp(u8 healLocationId)
|
||||
void SetLastHealLocationWarp(u8 healLocationId)
|
||||
{
|
||||
const struct HealLocation *healLocation = GetHealLocation(healLocationId);
|
||||
|
||||
if (healLocation != NULL)
|
||||
if (healLocation)
|
||||
SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y);
|
||||
}
|
||||
|
||||
void sub_8084D5C(s16 a1, s16 a2)
|
||||
void UpdateEscapeWarp(s16 x, s16 y)
|
||||
{
|
||||
u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation();
|
||||
u8 currMapType = GetCurrentMapType();
|
||||
u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
|
||||
if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE)
|
||||
sub_8084DD4(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, a1 - 7, a2 - 6);
|
||||
SetEscapeWarp(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x - 7, y - 6);
|
||||
}
|
||||
|
||||
void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
void SetEscapeWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
{
|
||||
SetWarpData(&gSaveBlock1Ptr->warp4, mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpData(&gSaveBlock1Ptr->escapeWarp, mapGroup, mapNum, warpId, x, y);
|
||||
}
|
||||
|
||||
void sub_8084E14(void)
|
||||
void SetWarpDestinationToEscapeWarp(void)
|
||||
{
|
||||
sWarpDestination = gSaveBlock1Ptr->warp4;
|
||||
sWarpDestination = gSaveBlock1Ptr->escapeWarp;
|
||||
}
|
||||
|
||||
void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
@@ -765,7 +758,7 @@ void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y);
|
||||
}
|
||||
|
||||
static void SetFixedDiveWarpAsDestination(void)
|
||||
static void SetWarpDestinationToDiveWarp(void)
|
||||
{
|
||||
sWarpDestination = gFixedDiveWarp;
|
||||
}
|
||||
@@ -775,34 +768,34 @@ void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
SetWarpData(&gFixedHoleWarp, mapGroup, mapNum, warpId, x, y);
|
||||
}
|
||||
|
||||
void SetFixedHoleWarpAsDestination(s16 x, s16 y)
|
||||
void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y)
|
||||
{
|
||||
if (IsDummyWarp(&gFixedHoleWarp) == TRUE)
|
||||
sWarpDestination = gLastUsedWarp;
|
||||
else
|
||||
Overworld_SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y);
|
||||
SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y);
|
||||
}
|
||||
|
||||
void warp1_set_to_sav1w(void)
|
||||
static void SetWarpDestinationToContinueGameWarp(void)
|
||||
{
|
||||
sWarpDestination = gSaveBlock1Ptr->warp1;
|
||||
sWarpDestination = gSaveBlock1Ptr->continueGameWarp;
|
||||
}
|
||||
|
||||
void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
void SetContinueGameWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||
{
|
||||
SetWarpData(&gSaveBlock1Ptr->warp1, mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpData(&gSaveBlock1Ptr->continueGameWarp, mapGroup, mapNum, warpId, x, y);
|
||||
}
|
||||
|
||||
void sub_8084F6C(u8 a1)
|
||||
void SetContinueGameWarpToHealLocation(u8 healLocationId)
|
||||
{
|
||||
const struct HealLocation *warp = GetHealLocation(a1);
|
||||
const struct HealLocation *warp = GetHealLocation(healLocationId);
|
||||
if (warp)
|
||||
SetWarpData(&gSaveBlock1Ptr->warp1, warp->group, warp->map, -1, warp->x, warp->y);
|
||||
SetWarpData(&gSaveBlock1Ptr->continueGameWarp, warp->group, warp->map, -1, warp->x, warp->y);
|
||||
}
|
||||
|
||||
void sub_8084FAC(int unused)
|
||||
void SetContinueGameWarpToDynamicWarp(int unused)
|
||||
{
|
||||
gSaveBlock1Ptr->warp1 = gSaveBlock1Ptr->warp2;
|
||||
gSaveBlock1Ptr->continueGameWarp = gSaveBlock1Ptr->dynamicWarp;
|
||||
}
|
||||
|
||||
const struct MapConnection *GetMapConnection(u8 dir)
|
||||
@@ -827,14 +820,14 @@ static bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
|
||||
|
||||
if (connection != NULL)
|
||||
{
|
||||
Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y);
|
||||
SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y);
|
||||
}
|
||||
else
|
||||
{
|
||||
mapheader_run_script_with_tag_x6();
|
||||
if (IsDummyWarp(&gFixedDiveWarp))
|
||||
return FALSE;
|
||||
SetFixedDiveWarpAsDestination();
|
||||
SetWarpDestinationToDiveWarp();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -853,7 +846,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
|
||||
{
|
||||
s32 paletteIndex;
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1);
|
||||
SetWarpDestination(mapGroup, mapNum, -1, -1, -1);
|
||||
if (gMapHeader.regionMapSectionId != 0x3A)
|
||||
sub_8085810();
|
||||
|
||||
@@ -871,7 +864,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
|
||||
SetDefaultFlashLevel();
|
||||
Overworld_ClearSavedMusic();
|
||||
mapheader_run_script_with_tag_x3();
|
||||
not_trainer_hill_battle_pyramid();
|
||||
InitMap();
|
||||
copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
|
||||
apply_map_tileset2_palette(gMapHeader.mapLayout);
|
||||
|
||||
@@ -885,7 +878,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
|
||||
ResetFieldTasksArgs();
|
||||
mapheader_run_script_with_tag_x5();
|
||||
|
||||
if (gMapHeader.regionMapSectionId != 0x3A || gMapHeader.regionMapSectionId != sLastMapSectionId)
|
||||
if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER || gMapHeader.regionMapSectionId != sLastMapSectionId)
|
||||
ShowMapNamePopup();
|
||||
}
|
||||
|
||||
@@ -926,15 +919,15 @@ static void mli0_load_map(u32 a1)
|
||||
UpdateLocationHistoryForRoamer();
|
||||
RoamerMoveToOtherLocationSet();
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
battle_pyramid_map_load_related(0);
|
||||
InitBattlePyramidMap(0);
|
||||
else if (InTrainerHill())
|
||||
trainer_hill_map_load_related();
|
||||
InitTrainerHillMap();
|
||||
else
|
||||
not_trainer_hill_battle_pyramid();
|
||||
InitMap();
|
||||
|
||||
if (a1 != 1 && indoors)
|
||||
{
|
||||
UpdateTVScreensOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height);
|
||||
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
|
||||
sub_80E9238(1);
|
||||
}
|
||||
}
|
||||
@@ -964,7 +957,7 @@ void StoreInitialPlayerAvatarState(void)
|
||||
static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
|
||||
{
|
||||
struct InitialPlayerAvatarState playerStruct;
|
||||
u8 mapType = Overworld_GetMapTypeOfSaveblockLocation();
|
||||
u8 mapType = GetCurrentMapType();
|
||||
u16 metatileBehavior = GetCenterScreenMetatileBehavior();
|
||||
u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType);
|
||||
playerStruct.transitionFlags = transitionFlags;
|
||||
@@ -1051,7 +1044,7 @@ u8 Overworld_GetFlashLevel(void)
|
||||
return gSaveBlock1Ptr->flashLevel;
|
||||
}
|
||||
|
||||
void sub_8085524(u16 mapLayoutId)
|
||||
void SetCurrentMapLayout(u16 mapLayoutId)
|
||||
{
|
||||
gSaveBlock1Ptr->mapLayoutId = mapLayoutId;
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
@@ -1160,11 +1153,11 @@ u16 GetCurrLocationDefaultMusic(void)
|
||||
// Play the desert music only when the sandstorm is active on Route 111.
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE111)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE111)
|
||||
&& GetSav1Weather() == 8)
|
||||
&& GetSav1Weather() == WEATHER_SANDSTORM)
|
||||
return MUS_ASHROAD;
|
||||
|
||||
music = GetLocationMusic(&gSaveBlock1Ptr->location);
|
||||
if (music != 0x7FFF)
|
||||
if (music != MUS_ROUTE_118)
|
||||
{
|
||||
return music;
|
||||
}
|
||||
@@ -1180,7 +1173,7 @@ u16 GetCurrLocationDefaultMusic(void)
|
||||
u16 GetWarpDestinationMusic(void)
|
||||
{
|
||||
u16 music = GetLocationMusic(&sWarpDestination);
|
||||
if (music != 0x7FFF)
|
||||
if (music != MUS_ROUTE_118)
|
||||
{
|
||||
return music;
|
||||
}
|
||||
@@ -1207,7 +1200,7 @@ void Overworld_PlaySpecialMapMusic(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->savedMusic)
|
||||
music = gSaveBlock1Ptr->savedMusic;
|
||||
else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER)
|
||||
else if (GetCurrentMapType() == MAP_TYPE_UNDERWATER)
|
||||
music = MUS_DEEPDEEP;
|
||||
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
|
||||
music = MUS_NAMINORI;
|
||||
@@ -1285,8 +1278,8 @@ void TryFadeOutOldMapMusic(void)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
|
||||
&& sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
|
||||
&& sWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
|
||||
&& sWarpDestination.x == 0x1D
|
||||
&& sWarpDestination.y == 0x35)
|
||||
&& sWarpDestination.x == 29
|
||||
&& sWarpDestination.y == 53)
|
||||
return;
|
||||
FadeOutMapMusic(GetMapMusicFadeoutSpeed());
|
||||
}
|
||||
@@ -1388,7 +1381,7 @@ u8 GetMapTypeByWarpData(struct WarpData *warp)
|
||||
return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum);
|
||||
}
|
||||
|
||||
u8 Overworld_GetMapTypeOfSaveblockLocation(void)
|
||||
u8 GetCurrentMapType(void)
|
||||
{
|
||||
return GetMapTypeByWarpData(&gSaveBlock1Ptr->location);
|
||||
}
|
||||
@@ -1430,12 +1423,12 @@ bool8 Overworld_MapTypeIsIndoors(u8 mapType)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sav1_saved_warp2_map_get_name(void)
|
||||
u8 GetSavedWarpRegionMapSectionId(void)
|
||||
{
|
||||
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum)->regionMapSectionId;
|
||||
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->dynamicWarp.mapGroup, gSaveBlock1Ptr->dynamicWarp.mapNum)->regionMapSectionId;
|
||||
}
|
||||
|
||||
u8 sav1_map_get_name(void)
|
||||
u8 GetCurrentRegionMapSectionId(void)
|
||||
{
|
||||
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId;
|
||||
}
|
||||
@@ -1445,30 +1438,30 @@ u8 GetCurrentMapBattleScene(void)
|
||||
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->battleType;
|
||||
}
|
||||
|
||||
static void overworld_bg_setup(void)
|
||||
static void InitOverworldBgs(void)
|
||||
{
|
||||
InitBgsFromTemplates(0, gUnknown_08339DAC, ARRAY_COUNT(gUnknown_08339DAC));
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_PALETTEMODE, 1);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_PALETTEMODE, 1);
|
||||
SetBgAttribute(3, BG_CTRL_ATTR_PALETTEMODE, 1);
|
||||
gBGTilemapBuffers2 = AllocZeroed(0x800);
|
||||
gBGTilemapBuffers1 = AllocZeroed(0x800);
|
||||
gBGTilemapBuffers3 = AllocZeroed(0x800);
|
||||
InitBgsFromTemplates(0, sOverworldBgTemplates, ARRAY_COUNT(sOverworldBgTemplates));
|
||||
SetBgAttribute(1, BG_ATTR_MOSAIC, 1);
|
||||
SetBgAttribute(2, BG_ATTR_MOSAIC, 1);
|
||||
SetBgAttribute(3, BG_ATTR_MOSAIC, 1);
|
||||
gBGTilemapBuffers2 = AllocZeroed(BG_SCREEN_SIZE);
|
||||
gBGTilemapBuffers1 = AllocZeroed(BG_SCREEN_SIZE);
|
||||
gBGTilemapBuffers3 = AllocZeroed(BG_SCREEN_SIZE);
|
||||
SetBgTilemapBuffer(1, gBGTilemapBuffers2);
|
||||
SetBgTilemapBuffer(2, gBGTilemapBuffers1);
|
||||
SetBgTilemapBuffer(3, gBGTilemapBuffers3);
|
||||
sub_81971D0();
|
||||
InitStandardTextBoxWindows();
|
||||
}
|
||||
|
||||
void overworld_free_bg_tilemaps(void)
|
||||
void CleanupOverworldWindowsAndTilemaps(void)
|
||||
{
|
||||
ClearMirageTowerPulseBlendEffect();
|
||||
sub_81971F4();
|
||||
if (gBGTilemapBuffers3 != NULL)
|
||||
FreeAllOverworldWindowBuffers();
|
||||
if (gBGTilemapBuffers3)
|
||||
FREE_AND_SET_NULL(gBGTilemapBuffers3);
|
||||
if (gBGTilemapBuffers1 != NULL)
|
||||
if (gBGTilemapBuffers1)
|
||||
FREE_AND_SET_NULL(gBGTilemapBuffers1);
|
||||
if (gBGTilemapBuffers2 != NULL)
|
||||
if (gBGTilemapBuffers2)
|
||||
FREE_AND_SET_NULL(gBGTilemapBuffers2);
|
||||
}
|
||||
|
||||
@@ -1762,7 +1755,7 @@ void CB2_ContinueSavedGame(void)
|
||||
sub_81A3908();
|
||||
|
||||
LoadSaveblockMapHeader();
|
||||
set_warp2_warp3_to_neg_1();
|
||||
ClearDiveAndHoleWarps();
|
||||
trainerHillMapId = GetCurrentTrainerHillMapId();
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
sub_81AA2F8();
|
||||
@@ -1775,20 +1768,20 @@ void CB2_ContinueSavedGame(void)
|
||||
DoTimeBasedEvents();
|
||||
sub_8084788();
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
battle_pyramid_map_load_related(1);
|
||||
InitBattlePyramidMap(1);
|
||||
else if (trainerHillMapId != 0)
|
||||
trainer_hill_map_load_related();
|
||||
InitTrainerHillMap();
|
||||
else
|
||||
sub_8087D74();
|
||||
InitMapFromSavedGame();
|
||||
|
||||
PlayTimeCounter_Start();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
sub_8195E10();
|
||||
if (GetSecretBase2Field_9() == 1)
|
||||
if (UseContinueGameWarp() == TRUE)
|
||||
{
|
||||
ClearSecretBase2Field_9();
|
||||
warp1_set_to_sav1w();
|
||||
ClearContinueGameWarpStatus();
|
||||
SetWarpDestinationToContinueGameWarp();
|
||||
WarpIntoMap();
|
||||
sub_80EDB44();
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
@@ -1861,7 +1854,7 @@ static bool32 map_loading_iteration_3(u8 *state)
|
||||
switch (*state)
|
||||
{
|
||||
case 0:
|
||||
overworld_bg_setup();
|
||||
InitOverworldBgs();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
sub_80867C8();
|
||||
@@ -2147,8 +2140,8 @@ static void InitOverworldGraphicsRegisters(void)
|
||||
clear_scheduled_bg_copies_to_vram();
|
||||
reset_temp_tile_data_buffers();
|
||||
SetGpuReg(REG_OFFSET_MOSAIC, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x101);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WINOBJ_BG0);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0xFF);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0xFF);
|
||||
SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF);
|
||||
@@ -2156,7 +2149,7 @@ static void InitOverworldGraphicsRegisters(void)
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3]
|
||||
| BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7));
|
||||
overworld_bg_setup();
|
||||
InitOverworldBgs();
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
schedule_bg_copy_tilemap_to_vram(3);
|
||||
@@ -2174,7 +2167,7 @@ static void InitOverworldGraphicsRegisters(void)
|
||||
ShowBg(1);
|
||||
ShowBg(2);
|
||||
ShowBg(3);
|
||||
sub_8098128();
|
||||
InitFieldMessageBox();
|
||||
}
|
||||
|
||||
static void sub_8086988(u32 a1)
|
||||
@@ -2217,7 +2210,7 @@ static void mli4_mapscripts_and_other(void)
|
||||
gTotalCameraPixelOffsetX = 0;
|
||||
gTotalCameraPixelOffsetY = 0;
|
||||
ResetEventObjects();
|
||||
sav1_camera_get_focus_coords(&x, &y);
|
||||
GetCameraFocusCoords(&x, &y);
|
||||
player = GetInitialPlayerAvatarState();
|
||||
InitPlayerAvatar(x, y, player->direction, gSaveBlock2Ptr->playerGender);
|
||||
SetPlayerAvatarTransitionFlags(player->transitionFlags);
|
||||
@@ -2252,7 +2245,7 @@ static void sub_8086AC8(void)
|
||||
static void sub_8086AE4(void)
|
||||
{
|
||||
u16 x, y;
|
||||
sav1_camera_get_focus_coords(&x, &y);
|
||||
GetCameraFocusCoords(&x, &y);
|
||||
sub_8088B3C(x + gUnknown_03005DB4, y);
|
||||
}
|
||||
|
||||
@@ -2261,7 +2254,7 @@ static void sub_8086B14(void)
|
||||
u16 i;
|
||||
u16 x, y;
|
||||
|
||||
sav1_camera_get_focus_coords(&x, &y);
|
||||
GetCameraFocusCoords(&x, &y);
|
||||
x -= gUnknown_03005DB4;
|
||||
|
||||
for (i = 0; i < gFieldLinkPlayerCount; i++)
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ static const u8 sRoundedDownGrayscaleMap[] = {
|
||||
31, 31
|
||||
};
|
||||
|
||||
void LoadCompressedPalette(const void *src, u16 offset, u16 size)
|
||||
void LoadCompressedPalette(const u32 *src, u16 offset, u16 size)
|
||||
{
|
||||
LZDecompressWram(src, gPaletteDecompressionBuffer);
|
||||
CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size);
|
||||
|
||||
+7
-7
@@ -4579,7 +4579,7 @@ static void CursorCb_Register(u8 taskId)
|
||||
u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
|
||||
u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
|
||||
|
||||
switch (sub_807A8D0(*(u32 *)sub_800F7DC() /* dirty cast, probably needs to be changed */, species2, species, obedience))
|
||||
switch (sub_807A8D0(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_800F7DC(), species2, species, obedience))
|
||||
{
|
||||
case 1:
|
||||
StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
|
||||
@@ -4605,7 +4605,7 @@ static void CursorCb_Trade1(u8 taskId)
|
||||
u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
|
||||
u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
|
||||
u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
|
||||
u32 stringId = sub_807A7E0(*(u32 *)sub_800F7DC() /* dirty cast, probably needs to be changed */, *(u32 *)&gUnknown_02022C38 /* dirty cast, probably needs to be changed */, species2, gUnknown_02022C3C, gUnknown_02022C3E, species, obedience);
|
||||
u32 stringId = sub_807A7E0(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_800F7DC(), gUnknown_02022C38, species2, gUnknown_02022C3C, gUnknown_02022C3E, species, obedience);
|
||||
|
||||
if (stringId != 0)
|
||||
{
|
||||
@@ -4721,7 +4721,7 @@ static void CursorCb_FieldMove(u8 taskId)
|
||||
gUnknown_0203CEC4->data[0] = fieldMove;
|
||||
break;
|
||||
case FIELD_MOVE_DIG:
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
|
||||
sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
|
||||
StringExpandPlaceholders(gStringVar4, gText_EscapeFromHere);
|
||||
sub_81B5674(taskId);
|
||||
@@ -7249,7 +7249,7 @@ static void sub_81B9424(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
InitPartyMenu(2, 0, 11, 0, 0, sub_81B1370, sub_81B9470);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -7276,7 +7276,7 @@ static void sub_81B94D0(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
InitPartyMenu(3, 0, 11, 0, 0, sub_81B1370, sub_81B9390);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -7293,7 +7293,7 @@ static void sub_81B953C(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
InitPartyMenu(7, 0, 11, 0, 0, sub_81B1370, sub_81B9588);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -7336,7 +7336,7 @@ static void sub_81B9640(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
InitPartyMenu(12, 0, 0, 0, 0, sub_81B1370, sub_81B9390);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
+3
-3
@@ -491,7 +491,7 @@ static void Task_ItemStorage_Deposit(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_81AAC14();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -723,7 +723,7 @@ static void Mailbox_FadeAndReadMail(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_81D1EC0();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
ReadMail(&(gSaveBlock1Ptr->mail[playerPCItemPageInfo.itemsAbove + 6 + playerPCItemPageInfo.cursorPos]), Mailbox_ReturnToFieldFromReadMail, TRUE);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -823,7 +823,7 @@ static void Mailbox_DoGiveMailPokeMenu(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_81D1EC0();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_81B8448();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
+1
-1
@@ -1170,7 +1170,7 @@ static void sub_80768F0(struct Sprite *sprite)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void DestroySpriteAndFreeResources_(struct Sprite *sprite)
|
||||
static void Unref_DestroySpriteAndFreeResources(struct Sprite *sprite)
|
||||
{
|
||||
DestroySpriteAndFreeResources(sprite);
|
||||
}
|
||||
|
||||
@@ -533,7 +533,7 @@ static void Task_PokedexAreaScreen_0(u8 taskId)
|
||||
HideBg(0);
|
||||
break;
|
||||
case 1:
|
||||
SetBgAttribute(3, BG_CTRL_ATTR_VISIBLE, 3);
|
||||
SetBgAttribute(3, BG_ATTR_CHARBASEINDEX, 3);
|
||||
sub_81C4D70(&sUnknown_085B4018);
|
||||
StringFill(sPokedexAreaScreen->charBuffer, CHAR_SPACE, 16);
|
||||
break;
|
||||
@@ -628,8 +628,8 @@ static void Task_PokedexAreaScreen_1(u8 taskId)
|
||||
|
||||
static void sub_813D6B4(void)
|
||||
{
|
||||
SetBgAttribute(3, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(3, BG_CTRL_ATTR_SCREENSIZE, 0);
|
||||
SetBgAttribute(3, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(3, BG_ATTR_PALETTEMODE, 0);
|
||||
}
|
||||
|
||||
static void CreateAreaMarkerSprites(void)
|
||||
|
||||
+6
-6
@@ -2588,7 +2588,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
|
||||
SetBoxMonData(boxMon, MON_DATA_SPECIES, &species);
|
||||
SetBoxMonData(boxMon, MON_DATA_EXP, &gExperienceTables[gBaseStats[species].growthRate][level]);
|
||||
SetBoxMonData(boxMon, MON_DATA_FRIENDSHIP, &gBaseStats[species].friendship);
|
||||
value = sav1_map_get_name();
|
||||
value = GetCurrentRegionMapSectionId();
|
||||
SetBoxMonData(boxMon, MON_DATA_MET_LOCATION, &value);
|
||||
SetBoxMonData(boxMon, MON_DATA_MET_LEVEL, &level);
|
||||
SetBoxMonData(boxMon, MON_DATA_MET_GAME, &gGameVersion);
|
||||
@@ -5457,7 +5457,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
{
|
||||
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11)
|
||||
friendship++;
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name())
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId())
|
||||
friendship++;
|
||||
}
|
||||
if (friendship < 0)
|
||||
@@ -5483,7 +5483,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
{
|
||||
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11)
|
||||
friendship++;
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name())
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId())
|
||||
friendship++;
|
||||
}
|
||||
if (friendship < 0)
|
||||
@@ -5508,7 +5508,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
{
|
||||
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11)
|
||||
friendship++;
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name())
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId())
|
||||
friendship++;
|
||||
}
|
||||
if (friendship < 0)
|
||||
@@ -6156,7 +6156,7 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
|
||||
{
|
||||
if (GetMonData(mon, MON_DATA_POKEBALL, 0) == ITEM_LUXURY_BALL)
|
||||
friendship++;
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == sav1_map_get_name())
|
||||
if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == GetCurrentRegionMapSectionId())
|
||||
friendship++;
|
||||
}
|
||||
if (friendship < 0)
|
||||
@@ -6701,7 +6701,7 @@ const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32
|
||||
{
|
||||
u32 shinyValue;
|
||||
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
return gMonPaletteTable[0].data;
|
||||
|
||||
shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
|
||||
|
||||
+7
-7
@@ -1045,7 +1045,7 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
|
||||
.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
|
||||
};
|
||||
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG;
|
||||
|
||||
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
|
||||
@@ -1091,7 +1091,7 @@ u16 GetIconSpecies(u16 species, u32 personality)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
result = 260;
|
||||
else
|
||||
result = species;
|
||||
@@ -1149,7 +1149,7 @@ void LoadMonIconPalettes(void)
|
||||
void SafeLoadMonIconPalette(u16 species)
|
||||
{
|
||||
u8 palIndex;
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
palIndex = gMonIconPaletteIndices[species];
|
||||
if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF)
|
||||
@@ -1174,7 +1174,7 @@ void FreeMonIconPalettes(void)
|
||||
void SafeFreeMonIconPalette(u16 species)
|
||||
{
|
||||
u8 palIndex;
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
palIndex = gMonIconPaletteIndices[species];
|
||||
FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
|
||||
@@ -1207,7 +1207,7 @@ void sub_80D304C(u16 offset)
|
||||
s32 i;
|
||||
const struct SpritePalette* monIconPalettePtr;
|
||||
|
||||
if(offset <= 0xA0)
|
||||
if (offset <= 0xA0)
|
||||
{
|
||||
monIconPalettePtr = gMonIconPaletteTable;
|
||||
for(i = 5; i >= 0; i--)
|
||||
@@ -1221,7 +1221,7 @@ void sub_80D304C(u16 offset)
|
||||
|
||||
u8 GetValidMonIconPalIndex(u16 species)
|
||||
{
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
return gMonIconPaletteIndices[species];
|
||||
}
|
||||
@@ -1233,7 +1233,7 @@ u8 sub_80D30A0(u16 species)
|
||||
|
||||
const u16* GetValidMonIconPalettePtr(u16 species)
|
||||
{
|
||||
if (species > SPECIES_EGG)
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
return gMonIconPaletteTable[gMonIconPaletteIndices[species]].data;
|
||||
}
|
||||
|
||||
@@ -1759,7 +1759,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
|
||||
case 4:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
Cb2_EnterPSS(task->data[2]);
|
||||
RemoveWindow(task->data[15]);
|
||||
DestroyTask(taskId);
|
||||
@@ -8826,7 +8826,7 @@ static bool8 sub_80D024C(void)
|
||||
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
|
||||
FillWindowPixelBuffer8Bit(sPSSData->field_2200, 0);
|
||||
sub_80D07B0(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn);
|
||||
SetBgAttribute(0, 4, 1);
|
||||
SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1);
|
||||
PutWindowTilemap(sPSSData->field_2200);
|
||||
CopyWindowToVram8Bit(sPSSData->field_2200, 3);
|
||||
BlendPalettes(0x3F00, 8, RGB_WHITE);
|
||||
@@ -9246,7 +9246,7 @@ static void sub_80D0B5C(void)
|
||||
{
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
SetBgAttribute(0, 4, 0);
|
||||
SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0);
|
||||
ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR);
|
||||
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
@@ -9865,7 +9865,7 @@ static bool8 sub_80D184C(void)
|
||||
var = 0x15 - sPSSData->field_2236;
|
||||
for (i = 0; i < var; i++)
|
||||
{
|
||||
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, 10) + 0x14 + sPSSData->field_2236 + i, i, 13, 1, 7, 15, 21);
|
||||
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 13, 1, 7, 15, 21);
|
||||
}
|
||||
|
||||
sub_80D19B4(var);
|
||||
@@ -9886,7 +9886,7 @@ static bool8 sub_80D18E4(void)
|
||||
var = 0x15 - sPSSData->field_2236;
|
||||
for (i = 0; i < var; i++)
|
||||
{
|
||||
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, 10) + 0x14 + sPSSData->field_2236 + i, i, 13, 1, 7, 15, 21);
|
||||
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 13, 1, 7, 15, 21);
|
||||
}
|
||||
|
||||
if (var >= 0)
|
||||
@@ -10423,7 +10423,7 @@ static const sUnkVars[][4] =
|
||||
|
||||
static void sub_80D2644(u8 id, u8 bg, const void *arg2, u16 arg3, u16 arg4)
|
||||
{
|
||||
u16 attribute1, attribute2;
|
||||
u16 bgScreenSize, bgType;
|
||||
|
||||
if (id >= gUnknown_02039D88)
|
||||
return;
|
||||
@@ -10434,11 +10434,11 @@ static void sub_80D2644(u8 id, u8 bg, const void *arg2, u16 arg3, u16 arg4)
|
||||
gUnknown_02039D84[id].field_24 = arg3;
|
||||
gUnknown_02039D84[id].field_26 = arg4;
|
||||
|
||||
attribute1 = GetBgAttribute(bg, 3);
|
||||
attribute2 = GetBgAttribute(bg, 9);
|
||||
gUnknown_02039D84[id].field_20 = sUnkVars[attribute2][attribute1].a;
|
||||
gUnknown_02039D84[id].field_22 = sUnkVars[attribute2][attribute1].b;
|
||||
if (attribute2 != 0)
|
||||
bgScreenSize = GetBgAttribute(bg, BG_ATTR_SCREENSIZE);
|
||||
bgType = GetBgAttribute(bg, BG_ATTR_TYPE);
|
||||
gUnknown_02039D84[id].field_20 = sUnkVars[bgType][bgScreenSize].a;
|
||||
gUnknown_02039D84[id].field_22 = sUnkVars[bgType][bgScreenSize].b;
|
||||
if (bgType != 0)
|
||||
gUnknown_02039D84[id].field_2A = 1;
|
||||
else
|
||||
gUnknown_02039D84[id].field_2A = 2;
|
||||
|
||||
@@ -311,7 +311,7 @@ static const struct UnkStruct_61CC04 gUnknown_0861CC10 =
|
||||
static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5};
|
||||
static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
{
|
||||
{
|
||||
{//Text for Pokemon Info
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
@@ -320,7 +320,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 1,
|
||||
},
|
||||
{
|
||||
{//Text for Pokemon Skills
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
@@ -329,7 +329,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 23,
|
||||
},
|
||||
{
|
||||
{//Text for Battle Moves
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
@@ -338,7 +338,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 45,
|
||||
},
|
||||
{
|
||||
{//Text for Contest Moves
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
@@ -347,7 +347,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 67,
|
||||
},
|
||||
{
|
||||
{ //Text on Pokemon Info: Button prompt: Cancel
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 0,
|
||||
@@ -356,7 +356,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 7,
|
||||
.baseBlock = 89,
|
||||
},
|
||||
{
|
||||
{//Info button found under moves
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 0,
|
||||
@@ -365,7 +365,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 7,
|
||||
.baseBlock = 105,
|
||||
},
|
||||
{
|
||||
{//Switch button under moves when viewing moves
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 0,
|
||||
@@ -374,7 +374,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 7,
|
||||
.baseBlock = 121,
|
||||
},
|
||||
{
|
||||
{//Unknown
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 4,
|
||||
@@ -383,7 +383,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 137,
|
||||
},
|
||||
{
|
||||
{//Unknown
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 4,
|
||||
@@ -392,7 +392,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 137,
|
||||
},
|
||||
{
|
||||
{//Type on pokemon info page
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 6,
|
||||
@@ -401,7 +401,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 173,
|
||||
},
|
||||
{
|
||||
{//HP, Attack and Defense text
|
||||
.bg = 0,
|
||||
.tilemapLeft = 10,
|
||||
.tilemapTop = 7,
|
||||
@@ -410,7 +410,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 209,
|
||||
},
|
||||
{
|
||||
{//Sp. atk, Sp. Def and Speed texxt
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 7,
|
||||
@@ -419,7 +419,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 245,
|
||||
},
|
||||
{
|
||||
{//EXP and next lvl.
|
||||
.bg = 0,
|
||||
.tilemapLeft = 10,
|
||||
.tilemapTop = 14,
|
||||
@@ -428,7 +428,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 275,
|
||||
},
|
||||
{
|
||||
{//Unknown
|
||||
.bg = 0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 18,
|
||||
@@ -437,7 +437,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 319,
|
||||
},
|
||||
{
|
||||
{//move text: Power, Accuracy and their numeric values.
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 15,
|
||||
@@ -446,7 +446,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 331,
|
||||
},
|
||||
{
|
||||
{//contest text: appeal and jam
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 15,
|
||||
@@ -455,7 +455,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 367,
|
||||
},
|
||||
{
|
||||
{//Unknown
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 4,
|
||||
@@ -464,7 +464,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 387,
|
||||
},
|
||||
{
|
||||
{//No.
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 2,
|
||||
@@ -473,7 +473,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 7,
|
||||
.baseBlock = 387,
|
||||
},
|
||||
{
|
||||
{//Upper name
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 12,
|
||||
@@ -482,7 +482,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 395,
|
||||
},
|
||||
{
|
||||
{//Lower name
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 14,
|
||||
@@ -495,7 +495,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
|
||||
};
|
||||
static const struct WindowTemplate gUnknown_0861CCCC[] =
|
||||
{
|
||||
{
|
||||
{//Original Trainer
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 4,
|
||||
@@ -504,7 +504,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 449,
|
||||
},
|
||||
{
|
||||
{//ID numbers
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 4,
|
||||
@@ -513,7 +513,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 471,
|
||||
},
|
||||
{
|
||||
{//Ability
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 9,
|
||||
@@ -522,7 +522,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 485,
|
||||
},
|
||||
{
|
||||
{//Trainer Memo
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 14,
|
||||
@@ -534,7 +534,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
|
||||
};
|
||||
static const struct WindowTemplate gUnknown_0861CCEC[] =
|
||||
{
|
||||
{
|
||||
{//Held Item string
|
||||
.bg = 0,
|
||||
.tilemapLeft = 10,
|
||||
.tilemapTop = 4,
|
||||
@@ -543,7 +543,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 449,
|
||||
},
|
||||
{
|
||||
{//Ribbon string
|
||||
.bg = 0,
|
||||
.tilemapLeft = 20,
|
||||
.tilemapTop = 4,
|
||||
@@ -552,7 +552,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 469,
|
||||
},
|
||||
{
|
||||
{//Stat numbers left (HP, ATK & DEF)
|
||||
.bg = 0,
|
||||
.tilemapLeft = 16,
|
||||
.tilemapTop = 7,
|
||||
@@ -561,7 +561,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 489,
|
||||
},
|
||||
{
|
||||
{//Stat numbers right (SP.ATK, SP.DEF & SPEED)
|
||||
.bg = 0,
|
||||
.tilemapLeft = 27,
|
||||
.tilemapTop = 7,
|
||||
@@ -570,7 +570,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 525,
|
||||
},
|
||||
{
|
||||
{//Exp numbers
|
||||
.bg = 0,
|
||||
.tilemapLeft = 24,
|
||||
.tilemapTop = 14,
|
||||
@@ -582,7 +582,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
|
||||
};
|
||||
static const struct WindowTemplate gUnknown_0861CD14[] =
|
||||
{
|
||||
{
|
||||
{//Move names?
|
||||
.bg = 0,
|
||||
.tilemapLeft = 15,
|
||||
.tilemapTop = 4,
|
||||
@@ -591,7 +591,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 449,
|
||||
},
|
||||
{
|
||||
{//PP Numbers
|
||||
.bg = 0,
|
||||
.tilemapLeft = 24,
|
||||
.tilemapTop = 4,
|
||||
@@ -600,7 +600,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
|
||||
.paletteNum = 8,
|
||||
.baseBlock = 539,
|
||||
},
|
||||
{
|
||||
{//Move description text
|
||||
.bg = 0,
|
||||
.tilemapLeft = 10,
|
||||
.tilemapTop = 15,
|
||||
@@ -1271,7 +1271,7 @@ static bool8 SummaryScreen_DecompressGraphics(void)
|
||||
pssData->unk40F0++;
|
||||
break;
|
||||
case 12:
|
||||
LoadCompressedPalette(&gMoveTypes_Pal, 0x1D0, 0x60);
|
||||
LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60);
|
||||
pssData->unk40F0 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1688,15 +1688,15 @@ static void sub_81C0B8C(u8 taskId)
|
||||
if (pssData->unk40C9 == 0)
|
||||
{
|
||||
data[1] = 1;
|
||||
SetBgAttribute(1, 7, 1);
|
||||
SetBgAttribute(2, 7, 2);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
data[1] = 2;
|
||||
SetBgAttribute(2, 7, 1);
|
||||
SetBgAttribute(1, 7, 2);
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 2);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
}
|
||||
ChangeBgX(data[1], 0, 0);
|
||||
@@ -1745,14 +1745,14 @@ static void sub_81C0D44(u8 taskId)
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (pssData->unk40C9 == 0)
|
||||
{
|
||||
SetBgAttribute(1, 7, 1);
|
||||
SetBgAttribute(2, 7, 2);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBgAttribute(2, 7, 1);
|
||||
SetBgAttribute(1, 7, 2);
|
||||
SetBgAttribute(2, BG_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(1, BG_ATTR_PRIORITY, 2);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
}
|
||||
if (pssData->currPageIndex > 1)
|
||||
|
||||
@@ -34,12 +34,12 @@ int GameClear(void)
|
||||
if (GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME) == 0)
|
||||
SetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME, (gSaveBlock2Ptr->playTimeHours << 16) | (gSaveBlock2Ptr->playTimeMinutes << 8) | gSaveBlock2Ptr->playTimeSeconds);
|
||||
|
||||
SetSecretBase2Field_9();
|
||||
SetContinueGameWarpStatus();
|
||||
|
||||
if (gSaveBlock2Ptr->playerGender == MALE)
|
||||
sub_8084F6C(HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F);
|
||||
SetContinueGameWarpToHealLocation(HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F);
|
||||
else
|
||||
sub_8084F6C(HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F);
|
||||
SetContinueGameWarpToHealLocation(HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F);
|
||||
|
||||
ribbonGet = FALSE;
|
||||
|
||||
|
||||
+20
-20
@@ -641,8 +641,8 @@ void sub_810F634(struct Sprite *sprite)
|
||||
|
||||
void sub_810F6B0(struct Sprite *sprite)
|
||||
{
|
||||
s16 x = sub_80A861C(gBattleAnimAttacker, 1) / 2;
|
||||
s16 y = sub_80A861C(gBattleAnimAttacker, 0) / -2;
|
||||
s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2;
|
||||
s16 y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / -2;
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||
x = -x;
|
||||
@@ -753,8 +753,8 @@ void sub_810F940(u8 taskId)
|
||||
task->data[13] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
var0 = sub_80A861C(gBattleAnimAttacker, 1) / 3;
|
||||
var1 = sub_80A861C(gBattleAnimAttacker, 0) / 3;
|
||||
var0 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 3;
|
||||
var1 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 3;
|
||||
task->data[12] = var0 > var1 ? var0 : var1;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||
@@ -865,18 +865,18 @@ void sub_810FBF0(u8 taskId)
|
||||
if (gBattleAnimArgs[0] == 1)
|
||||
{
|
||||
task->data[10] = -10;
|
||||
task->data[11] = sub_80A861C(gBattleAnimTarget, 5) - 8;
|
||||
task->data[12] = sub_80A861C(gBattleAnimTarget, 2) + 8;
|
||||
task->data[13] = sub_80A861C(gBattleAnimAttacker, 5) - 8;
|
||||
task->data[14] = sub_80A861C(gBattleAnimAttacker, 2) + 8;
|
||||
task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[10] = 10;
|
||||
task->data[11] = sub_80A861C(gBattleAnimAttacker, 4) + 8;
|
||||
task->data[12] = sub_80A861C(gBattleAnimAttacker, 3) - 8;
|
||||
task->data[13] = sub_80A861C(gBattleAnimTarget, 4) + 8;
|
||||
task->data[14] = sub_80A861C(gBattleAnimTarget, 3) - 8;
|
||||
task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM) - 8;
|
||||
task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_BOTTOM) - 8;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -884,18 +884,18 @@ void sub_810FBF0(u8 taskId)
|
||||
if (gBattleAnimArgs[0] == 1)
|
||||
{
|
||||
task->data[10] = -10;
|
||||
task->data[11] = sub_80A861C(gBattleAnimTarget, 4) + 8;
|
||||
task->data[12] = sub_80A861C(gBattleAnimTarget, 2) + 8;
|
||||
task->data[13] = sub_80A861C(gBattleAnimAttacker, 4) + 8;
|
||||
task->data[14] = sub_80A861C(gBattleAnimAttacker, 2) + 8;
|
||||
task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[10] = 10;
|
||||
task->data[11] = sub_80A861C(gBattleAnimAttacker, 5) - 8;
|
||||
task->data[12] = sub_80A861C(gBattleAnimAttacker, 3) - 8;
|
||||
task->data[13] = sub_80A861C(gBattleAnimTarget, 5) - 8;
|
||||
task->data[14] = sub_80A861C(gBattleAnimTarget, 3) - 8;
|
||||
task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM) - 8;
|
||||
task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_BOTTOM) - 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1708,7 +1708,7 @@ static void sub_81D752C(u8 taskId)
|
||||
if (data[0] != 16)
|
||||
{
|
||||
data[0]++;
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (data[0] << 8) | (16 - data[0]));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - data[0], data[0]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1954,7 +1954,7 @@ static void Task_RayTakesFlightAnim(u8 taskId)
|
||||
sub_81D7E10();
|
||||
sub_81D7E9C();
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x808);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
|
||||
BlendPalettes(-1, 0x10, 0);
|
||||
SetVBlankCallback(VBlankCB_RayquazaScene);
|
||||
CreateTask(sub_81D81A4, 0);
|
||||
@@ -2153,7 +2153,7 @@ static void Task_RayDescendsAnim(u8 taskId)
|
||||
sub_81D82B0();
|
||||
sub_81D8358();
|
||||
SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x1000);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
|
||||
BlendPalettes(-1, 0x10, 0);
|
||||
SetVBlankCallback(VBlankCB_RayquazaScene);
|
||||
sRayScene->field_2008 = 0;
|
||||
@@ -2509,7 +2509,7 @@ static void Task_RayChasesAwayAnim(u8 taskId)
|
||||
sub_81D68C8();
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0xE09);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 14));
|
||||
BlendPalettes(-1, 0x10, 0);
|
||||
SetVBlankCallback(VBlankCB_RayquazaScene);
|
||||
data[0] = 0;
|
||||
|
||||
+122
-649
@@ -741,711 +741,184 @@ static u8 sub_80E7B54(void)
|
||||
return gUnknown_03001160;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
|
||||
{
|
||||
// r9 = which
|
||||
u16 i;
|
||||
u16 j;
|
||||
u16 i, j;
|
||||
u8 linkPlayerCount;
|
||||
u16 language;
|
||||
u16 otNameLanguage;
|
||||
u16 nicknameLanguage;
|
||||
u32 version;
|
||||
u8 dcMail1;
|
||||
u8 dcMail2;
|
||||
u8 r1_80e7b54;
|
||||
struct DayCareMail *recordMixingMail;
|
||||
u8 tableId;
|
||||
struct RecordMixingDayCareMail *_src;
|
||||
u8 which0, which1;
|
||||
void *ptr;
|
||||
u8 sp04[4];
|
||||
u8 sp08[4];
|
||||
struct RecordMixingDayCareMail *sp0c[4]; // -> sp+48
|
||||
u8 sp1c[4][2]; // [][0] -> sp+4c, [][1] -> sp+50
|
||||
struct RecordMixingDayCareMail *sp0c[4];
|
||||
u8 sp1c[4][2];
|
||||
u8 sp24[4][2];
|
||||
// sp+2c = src
|
||||
// sp+30 = recordSize
|
||||
u8 sp34;
|
||||
u16 oldSeed;
|
||||
bool32 anyRS; // sp+3c
|
||||
bool32 anyRS;
|
||||
|
||||
oldSeed = Random2();
|
||||
SeedRng2(gLinkPlayers[0].trainerId);
|
||||
linkPlayerCount = GetLinkPlayerCount();
|
||||
for (i = 0; i < 4; i ++)
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
sp04[i] = 0xFF;
|
||||
sp08[i] = 0;
|
||||
sp1c[i][0] = 0;
|
||||
sp1c[i][1] = 0;
|
||||
}
|
||||
|
||||
anyRS = Link_AnyPartnersPlayingRubyOrSapphire();
|
||||
for (i = 0; i < GetLinkPlayerCount(); i ++) // r8 = i
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
// sp+54 = linkPlayerCount << 16
|
||||
// sp+44 = which * recordSize
|
||||
_src = (void *)src + i * recordSize; // r7
|
||||
language = gLinkPlayers[i].language; // r9
|
||||
version = (u8)gLinkPlayers[i].version; // sp+40
|
||||
for (j = 0; j < _src->unk_70; j ++)
|
||||
u32 language, version;
|
||||
|
||||
_src = (void *)src + i * recordSize;
|
||||
language = gLinkPlayers[i].language;
|
||||
version = gLinkPlayers[i].version & 0xFF;
|
||||
for (j = 0; j < _src->numDaycareMons; j ++)
|
||||
{
|
||||
// r10 = ~0x10
|
||||
recordMixingMail = &_src->unk_00[j];
|
||||
if (recordMixingMail->mail.itemId != ITEM_NONE)
|
||||
u16 otNameLanguage, nicknameLanguage;
|
||||
struct DayCareMail *recordMixingMail = &_src->mail[j];
|
||||
|
||||
if (!recordMixingMail->message.itemId)
|
||||
continue;
|
||||
|
||||
if (anyRS)
|
||||
{
|
||||
if (anyRS)
|
||||
if (StringLength(recordMixingMail->OT_name) <= 5)
|
||||
{
|
||||
if (StringLength(recordMixingMail->OT_name) <= 5)
|
||||
{
|
||||
otNameLanguage = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else
|
||||
{
|
||||
StripExtCtrlCodes(recordMixingMail->OT_name);
|
||||
otNameLanguage = language;
|
||||
}
|
||||
if (recordMixingMail->monName[0] == EXT_CTRL_CODE_BEGIN && recordMixingMail->monName[1] == EXT_CTRL_CODE_JPN)
|
||||
{
|
||||
StripExtCtrlCodes(recordMixingMail->monName);
|
||||
nicknameLanguage = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else
|
||||
{
|
||||
nicknameLanguage = language;
|
||||
}
|
||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||
{
|
||||
recordMixingMail->language_maybe = otNameLanguage;
|
||||
recordMixingMail->unknown = nicknameLanguage;
|
||||
}
|
||||
otNameLanguage = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else if (language == LANGUAGE_JAPANESE)
|
||||
else
|
||||
{
|
||||
if (IsStringJapanese(recordMixingMail->OT_name))
|
||||
{
|
||||
recordMixingMail->language_maybe = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else
|
||||
{
|
||||
recordMixingMail->language_maybe = GAME_LANGUAGE;
|
||||
}
|
||||
if (IsStringJapanese(recordMixingMail->monName))
|
||||
{
|
||||
recordMixingMail->unknown = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else
|
||||
{
|
||||
recordMixingMail->unknown = GAME_LANGUAGE;
|
||||
}
|
||||
StripExtCtrlCodes(recordMixingMail->OT_name);
|
||||
otNameLanguage = language;
|
||||
}
|
||||
|
||||
if (recordMixingMail->monName[0] == EXT_CTRL_CODE_BEGIN && recordMixingMail->monName[1] == EXT_CTRL_CODE_JPN)
|
||||
{
|
||||
StripExtCtrlCodes(recordMixingMail->monName);
|
||||
nicknameLanguage = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else
|
||||
{
|
||||
nicknameLanguage = language;
|
||||
}
|
||||
|
||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||
{
|
||||
recordMixingMail->gameLanguage = otNameLanguage;
|
||||
recordMixingMail->monLanguage = nicknameLanguage;
|
||||
}
|
||||
}
|
||||
else if (language == LANGUAGE_JAPANESE)
|
||||
{
|
||||
if (IsStringJapanese(recordMixingMail->OT_name))
|
||||
recordMixingMail->gameLanguage = LANGUAGE_JAPANESE;
|
||||
else
|
||||
recordMixingMail->gameLanguage = GAME_LANGUAGE;
|
||||
|
||||
if (IsStringJapanese(recordMixingMail->monName))
|
||||
recordMixingMail->monLanguage = LANGUAGE_JAPANESE;
|
||||
else
|
||||
recordMixingMail->monLanguage = GAME_LANGUAGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sp34 = 0;
|
||||
for (i = 0; i < linkPlayerCount; i ++)
|
||||
for (i = 0; i < linkPlayerCount; i++)
|
||||
{
|
||||
_src = (void *)src + i * recordSize; // r7
|
||||
if (_src->unk_70 != 0)
|
||||
_src = (void *)src + i * recordSize;
|
||||
if (_src->numDaycareMons == 0)
|
||||
continue;
|
||||
|
||||
for (j = 0; j < _src->numDaycareMons; j ++)
|
||||
{
|
||||
for (j = 0; j < _src->unk_70; j ++)
|
||||
{
|
||||
if (_src->unk_74[j] == 0)
|
||||
{
|
||||
sp1c[i][j] = 1;
|
||||
}
|
||||
}
|
||||
if (!_src->holdsItem[j])
|
||||
sp1c[i][j] = 1;
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
for (j = 0; j < linkPlayerCount; j ++)
|
||||
|
||||
j = 0;
|
||||
for (i = 0; i < linkPlayerCount; i++)
|
||||
{
|
||||
_src = (void *)src + j * recordSize;
|
||||
if (sp1c[j][0] == TRUE || sp1c[j][1] == TRUE)
|
||||
_src = (void *)src + i * recordSize;
|
||||
if (sp1c[i][0] == TRUE || sp1c[i][1] == TRUE)
|
||||
sp34++;
|
||||
|
||||
if (sp1c[i][0] == TRUE && sp1c[i][1] == FALSE)
|
||||
{
|
||||
sp34 ++;
|
||||
sp24[j][0] = i;
|
||||
sp24[j][1] = 0;
|
||||
j++;
|
||||
}
|
||||
if (sp1c[j][0] == TRUE && sp1c[j][1] == FALSE)
|
||||
else if (sp1c[i][0] == FALSE && sp1c[i][1] == TRUE)
|
||||
{
|
||||
sp24[i][0] = j;
|
||||
sp24[i][1] = 0;
|
||||
i ++;
|
||||
sp24[j][0] = i;
|
||||
sp24[j][1] = 1;
|
||||
j++;
|
||||
}
|
||||
else if (sp1c[j][0] == FALSE && sp1c[j][1] == TRUE)
|
||||
else if (sp1c[i][0] == TRUE && sp1c[i][1] == TRUE)
|
||||
{
|
||||
sp24[i][0] = j;
|
||||
sp24[i][1] = 0;
|
||||
i ++;
|
||||
}
|
||||
else if (sp1c[j][0] == TRUE && sp1c[j][1] == TRUE)
|
||||
{
|
||||
sp24[i][0] = j;
|
||||
dcMail1 = sub_80E7A9C(&_src->unk_00[0]);
|
||||
dcMail2 = sub_80E7A9C(&_src->unk_00[1]);
|
||||
if (!dcMail1 && dcMail2)
|
||||
u32 var1, var2;
|
||||
|
||||
sp24[j][0] = i;
|
||||
var1 = sub_80E7A9C(&_src->mail[0]);
|
||||
var2 = sub_80E7A9C(&_src->mail[1]);
|
||||
if (!var1 && var2)
|
||||
{
|
||||
sp24[i][1] = 1;
|
||||
register u8 one asm("r0") = 1; // boo, a fakematch
|
||||
sp24[j][1] = one;
|
||||
}
|
||||
else if ((dcMail1 && dcMail2) || (!dcMail1 && !dcMail2))
|
||||
else if ((var1 && var2) || (!var1 && !var2))
|
||||
{
|
||||
sp24[i][1] = Random2() % 2;
|
||||
sp24[j][1] = Random2() % 2;
|
||||
}
|
||||
else
|
||||
else if (var1 && !var2)
|
||||
{
|
||||
sp24[i][1] = 0;
|
||||
sp24[j][1] = 0;
|
||||
}
|
||||
i ++;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 4; i ++)
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
_src = &src[which * recordSize];
|
||||
sp0c[i] = _src;
|
||||
}
|
||||
r1_80e7b54 = sub_80E7B54() % 3;
|
||||
|
||||
tableId = sub_80E7B54() % 3;
|
||||
switch (sp34)
|
||||
{
|
||||
case 2:
|
||||
sub_80E7AA4(src, recordSize, sp24, 0, 1);
|
||||
break;
|
||||
case 3:
|
||||
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFB8[r1_80e7b54][0], gUnknown_0858CFB8[r1_80e7b54][1]);
|
||||
break;
|
||||
case 4:
|
||||
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFBE[r1_80e7b54][0], gUnknown_0858CFBE[r1_80e7b54][1]);
|
||||
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFBE[r1_80e7b54][2], gUnknown_0858CFBE[r1_80e7b54][3]);
|
||||
break;
|
||||
case 2:
|
||||
sub_80E7AA4(src, recordSize, sp24, 0, 1);
|
||||
break;
|
||||
case 3:
|
||||
which0 = gUnknown_0858CFB8[tableId][0];
|
||||
which1 = gUnknown_0858CFB8[tableId][1];
|
||||
sub_80E7AA4(src, recordSize, sp24, which0, which1);
|
||||
break;
|
||||
case 4:
|
||||
ptr = sp24;
|
||||
which0 = gUnknown_0858CFBE[tableId][0];
|
||||
which1 = gUnknown_0858CFBE[tableId][1];
|
||||
sub_80E7AA4(src, recordSize, ptr, which0, which1);
|
||||
which0 = gUnknown_0858CFBE[tableId][2];
|
||||
which1 = gUnknown_0858CFBE[tableId][3];
|
||||
sub_80E7AA4(src, recordSize, ptr, which0, which1);
|
||||
break;
|
||||
}
|
||||
|
||||
_src = (void *)src + which * recordSize;
|
||||
memcpy(&gSaveBlock1Ptr->daycare.mons[0].misc.mail, &_src->unk_00[0], sizeof(struct DayCareMail));
|
||||
memcpy(&gSaveBlock1Ptr->daycare.mons[1].misc.mail, &_src->unk_00[1], sizeof(struct DayCareMail));
|
||||
memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DayCareMail));
|
||||
memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DayCareMail));
|
||||
SeedRng(oldSeed);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x58\n"
|
||||
"\tstr r0, [sp, 0x2C]\n"
|
||||
"\tstr r1, [sp, 0x30]\n"
|
||||
"\tlsls r2, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tmov r9, r2\n"
|
||||
"\tbl Random2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstr r0, [sp, 0x38]\n"
|
||||
"\tldr r0, =gLinkPlayers\n"
|
||||
"\tldrh r0, [r0, 0x4]\n"
|
||||
"\tbl SeedRng2\n"
|
||||
"\tbl GetLinkPlayerCount\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tmov r1, sp\n"
|
||||
"\tadds r1, 0x1C\n"
|
||||
"\tstr r1, [sp, 0x4C]\n"
|
||||
"\tmov r2, sp\n"
|
||||
"\tadds r2, 0x1D\n"
|
||||
"\tstr r2, [sp, 0x50]\n"
|
||||
"\tmov r3, sp\n"
|
||||
"\tadds r3, 0xC\n"
|
||||
"\tstr r3, [sp, 0x48]\n"
|
||||
"\tmovs r7, 0xFF\n"
|
||||
"\tadd r3, sp, 0x8\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tadds r6, r1, 0\n"
|
||||
"\tldr r5, [sp, 0x50]\n"
|
||||
"_080E7BB0:\n"
|
||||
"\tmov r1, sp\n"
|
||||
"\tadd r1, r8\n"
|
||||
"\tadds r1, 0x4\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\torrs r0, r7\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tadds r0, r3, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tadds r0, r6, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tadds r1, r5, r1\n"
|
||||
"\tstrb r2, [r1]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tcmp r0, 0x3\n"
|
||||
"\tbls _080E7BB0\n"
|
||||
"\tbl Link_AnyPartnersPlayingRubyOrSapphire\n"
|
||||
"\tstr r0, [sp, 0x3C]\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmov r8, r2\n"
|
||||
"\tlsls r4, 16\n"
|
||||
"\tstr r4, [sp, 0x54]\n"
|
||||
"\tldr r0, [sp, 0x30]\n"
|
||||
"\tmov r3, r9\n"
|
||||
"\tmuls r3, r0\n"
|
||||
"\tstr r3, [sp, 0x44]\n"
|
||||
"\tb _080E7D04\n"
|
||||
"\t.pool\n"
|
||||
"_080E7BF8:\n"
|
||||
"\tldr r1, [sp, 0x30]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tmuls r0, r1\n"
|
||||
"\tldr r2, [sp, 0x2C]\n"
|
||||
"\tadds r7, r2, r0\n"
|
||||
"\tldr r1, =gLinkPlayers\n"
|
||||
"\tmov r3, r8\n"
|
||||
"\tlsls r0, r3, 3\n"
|
||||
"\tsubs r0, r3\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldrh r1, [r0, 0x1A]\n"
|
||||
"\tmov r9, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tstr r0, [sp, 0x40]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r0, [r7, 0x70]\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tbcs _080E7CFA\n"
|
||||
"\tmovs r2, 0x10\n"
|
||||
"\tnegs r2, r2\n"
|
||||
"\tmov r10, r2\n"
|
||||
"_080E7C24:\n"
|
||||
"\tlsls r0, r6, 3\n"
|
||||
"\tsubs r0, r6\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r5, r7, r0\n"
|
||||
"\tldrh r0, [r5, 0x20]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080E7CEE\n"
|
||||
"\tldr r3, [sp, 0x3C]\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbeq _080E7C9A\n"
|
||||
"\tadds r4, r5, 0\n"
|
||||
"\tadds r4, 0x24\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl StringLength\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tcmp r0, 0x5\n"
|
||||
"\tbhi _080E7C54\n"
|
||||
"\tmovs r4, 0x1\n"
|
||||
"\tb _080E7C5C\n"
|
||||
"\t.pool\n"
|
||||
"_080E7C54:\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl StripExtCtrlCodes\n"
|
||||
"\tmov r4, r9\n"
|
||||
"_080E7C5C:\n"
|
||||
"\tldrh r1, [r5, 0x2C]\n"
|
||||
"\tldr r0, =0x000015fc\n"
|
||||
"\tcmp r1, r0\n"
|
||||
"\tbne _080E7C74\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tadds r0, 0x2C\n"
|
||||
"\tbl StripExtCtrlCodes\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tb _080E7C76\n"
|
||||
"\t.pool\n"
|
||||
"_080E7C74:\n"
|
||||
"\tmov r1, r9\n"
|
||||
"_080E7C76:\n"
|
||||
"\tldr r0, [sp, 0x40]\n"
|
||||
"\tsubs r0, 0x1\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbhi _080E7CEE\n"
|
||||
"\tadds r2, r5, 0\n"
|
||||
"\tadds r2, 0x37\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"\tands r4, r0\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tmov r3, r10\n"
|
||||
"\tands r0, r3\n"
|
||||
"\torrs r0, r4\n"
|
||||
"\tlsls r1, 4\n"
|
||||
"\tmovs r3, 0xF\n"
|
||||
"\tands r0, r3\n"
|
||||
"\torrs r0, r1\n"
|
||||
"\tstrb r0, [r2]\n"
|
||||
"\tb _080E7CEE\n"
|
||||
"_080E7C9A:\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _080E7CEE\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tadds r0, 0x24\n"
|
||||
"\tbl IsStringJapanese\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080E7CBA\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tadds r0, 0x37\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmov r2, r10\n"
|
||||
"\tands r1, r2\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tb _080E7CC6\n"
|
||||
"_080E7CBA:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tadds r0, 0x37\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmov r3, r10\n"
|
||||
"\tands r1, r3\n"
|
||||
"\tmovs r2, 0x2\n"
|
||||
"_080E7CC6:\n"
|
||||
"\torrs r1, r2\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tadds r0, 0x2C\n"
|
||||
"\tbl IsStringJapanese\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080E7CE2\n"
|
||||
"\tldrb r0, [r4]\n"
|
||||
"\tmovs r1, 0xF\n"
|
||||
"\tands r1, r0\n"
|
||||
"\tmovs r0, 0x10\n"
|
||||
"\tb _080E7CEA\n"
|
||||
"_080E7CE2:\n"
|
||||
"\tldrb r0, [r4]\n"
|
||||
"\tmovs r1, 0xF\n"
|
||||
"\tands r1, r0\n"
|
||||
"\tmovs r0, 0x20\n"
|
||||
"_080E7CEA:\n"
|
||||
"\torrs r1, r0\n"
|
||||
"\tstrb r1, [r4]\n"
|
||||
"_080E7CEE:\n"
|
||||
"\tadds r0, r6, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r6, r0, 16\n"
|
||||
"\tldr r0, [r7, 0x70]\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tbcc _080E7C24\n"
|
||||
"_080E7CFA:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmov r8, r0\n"
|
||||
"_080E7D04:\n"
|
||||
"\tbl GetLinkPlayerCount\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r8, r0\n"
|
||||
"\tbcs _080E7D12\n"
|
||||
"\tb _080E7BF8\n"
|
||||
"_080E7D12:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp, 0x34]\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tldr r1, [sp, 0x54]\n"
|
||||
"\tlsrs r0, r1, 16\n"
|
||||
"\tldr r2, [sp, 0x34]\n"
|
||||
"\tcmp r2, r0\n"
|
||||
"\tbcs _080E7D70\n"
|
||||
"\tadds r5, r0, 0\n"
|
||||
"_080E7D24:\n"
|
||||
"\tldr r3, [sp, 0x30]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tmuls r0, r3\n"
|
||||
"\tldr r1, [sp, 0x2C]\n"
|
||||
"\tadds r7, r1, r0\n"
|
||||
"\tldr r0, [r7, 0x70]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080E7D62\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tbcs _080E7D62\n"
|
||||
"\tadds r3, r7, 0\n"
|
||||
"\tadds r3, 0x74\n"
|
||||
"\tldr r2, [sp, 0x4C]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tlsls r1, r0, 1\n"
|
||||
"\tmovs r4, 0x1\n"
|
||||
"_080E7D46:\n"
|
||||
"\tlsls r0, r6, 1\n"
|
||||
"\tadds r0, r3, r0\n"
|
||||
"\tldrh r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _080E7D56\n"
|
||||
"\tadds r0, r6, r1\n"
|
||||
"\tadds r0, r2, r0\n"
|
||||
"\tstrb r4, [r0]\n"
|
||||
"_080E7D56:\n"
|
||||
"\tadds r0, r6, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r6, r0, 16\n"
|
||||
"\tldr r0, [r7, 0x70]\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tbcc _080E7D46\n"
|
||||
"_080E7D62:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tcmp r8, r5\n"
|
||||
"\tbcc _080E7D24\n"
|
||||
"_080E7D70:\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tmov r8, r6\n"
|
||||
"\tldr r1, [sp, 0x54]\n"
|
||||
"\tcmp r1, 0\n"
|
||||
"\tbeq _080E7E64\n"
|
||||
"\tadd r2, sp, 0x24\n"
|
||||
"\tmov r10, r2\n"
|
||||
"\tmovs r3, 0x25\n"
|
||||
"\tadd r3, sp\n"
|
||||
"\tmov r9, r3\n"
|
||||
"_080E7D84:\n"
|
||||
"\tldr r1, [sp, 0x30]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tmuls r0, r1\n"
|
||||
"\tldr r2, [sp, 0x2C]\n"
|
||||
"\tadds r7, r2, r0\n"
|
||||
"\tmov r3, r8\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tldr r2, [sp, 0x4C]\n"
|
||||
"\tadds r0, r2, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbeq _080E7DA6\n"
|
||||
"\tldr r3, [sp, 0x50]\n"
|
||||
"\tadds r0, r3, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _080E7DB0\n"
|
||||
"_080E7DA6:\n"
|
||||
"\tldr r0, [sp, 0x34]\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tstr r0, [sp, 0x34]\n"
|
||||
"_080E7DB0:\n"
|
||||
"\tldr r2, [sp, 0x4C]\n"
|
||||
"\tadds r0, r2, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _080E7DD4\n"
|
||||
"\tldr r3, [sp, 0x50]\n"
|
||||
"\tadds r0, r3, r1\n"
|
||||
"\tldrb r2, [r0]\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tbne _080E7DD4\n"
|
||||
"_080E7DC4:\n"
|
||||
"\tlsls r1, r6, 1\n"
|
||||
"\tmov r3, r10\n"
|
||||
"\tadds r0, r3, r1\n"
|
||||
"\tmov r3, r8\n"
|
||||
"\tstrb r3, [r0]\n"
|
||||
"\tadd r1, r9\n"
|
||||
"\tstrb r2, [r1]\n"
|
||||
"\tb _080E7E4E\n"
|
||||
"_080E7DD4:\n"
|
||||
"\tldr r2, [sp, 0x4C]\n"
|
||||
"\tadds r0, r2, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _080E7DE8\n"
|
||||
"\tldr r3, [sp, 0x50]\n"
|
||||
"\tadds r0, r3, r1\n"
|
||||
"\tldrb r2, [r0]\n"
|
||||
"\tcmp r2, 0x1\n"
|
||||
"\tbeq _080E7DC4\n"
|
||||
"_080E7DE8:\n"
|
||||
"\tldr r2, [sp, 0x4C]\n"
|
||||
"\tadds r0, r2, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _080E7E54\n"
|
||||
"\tldr r3, [sp, 0x50]\n"
|
||||
"\tadds r0, r3, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _080E7E54\n"
|
||||
"\tlsls r5, r6, 1\n"
|
||||
"\tmov r1, r10\n"
|
||||
"\tadds r0, r1, r5\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tbl sub_80E7A9C\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tlsls r4, 24\n"
|
||||
"\tlsrs r4, 24\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tadds r0, 0x38\n"
|
||||
"\tbl sub_80E7A9C\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r1, r0, 24\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbne _080E7E30\n"
|
||||
"\tcmp r1, 0\n"
|
||||
"\tbeq _080E7E34\n"
|
||||
"\tmov r3, r9\n"
|
||||
"\tadds r1, r3, r5\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tb _080E7E4E\n"
|
||||
"_080E7E30:\n"
|
||||
"\tcmp r1, 0\n"
|
||||
"\tbeq _080E7E48\n"
|
||||
"_080E7E34:\n"
|
||||
"\tbl Random2\n"
|
||||
"\tmov r1, r9\n"
|
||||
"\tadds r2, r1, r5\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tstrb r0, [r2]\n"
|
||||
"\tb _080E7E4E\n"
|
||||
"_080E7E48:\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tadds r0, r2, r5\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"_080E7E4E:\n"
|
||||
"\tadds r0, r6, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r6, r0, 16\n"
|
||||
"_080E7E54:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r3, r0, 16\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tldr r1, [sp, 0x54]\n"
|
||||
"\tcmp r0, r1\n"
|
||||
"\tbcc _080E7D84\n"
|
||||
"_080E7E64:\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmov r8, r2\n"
|
||||
"\tldr r3, [sp, 0x44]\n"
|
||||
"\tlsls r0, r3, 4\n"
|
||||
"\tsubs r0, r3\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tldr r1, [sp, 0x2C]\n"
|
||||
"\tadds r7, r1, r0\n"
|
||||
"\tldr r1, [sp, 0x48]\n"
|
||||
"_080E7E76:\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tlsls r0, r2, 2\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tstr r7, [r0]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tcmp r0, 0x3\n"
|
||||
"\tbls _080E7E76\n"
|
||||
"\tbl sub_80E7B54\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tmovs r1, 0x3\n"
|
||||
"\tbl __umodsi3\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r1, r0, 24\n"
|
||||
"\tldr r3, [sp, 0x34]\n"
|
||||
"\tcmp r3, 0x3\n"
|
||||
"\tbeq _080E7EC8\n"
|
||||
"\tcmp r3, 0x3\n"
|
||||
"\tbgt _080E7EAE\n"
|
||||
"\tcmp r3, 0x2\n"
|
||||
"\tbeq _080E7EB6\n"
|
||||
"\tb _080E7F1C\n"
|
||||
"_080E7EAE:\n"
|
||||
"\tldr r0, [sp, 0x34]\n"
|
||||
"\tcmp r0, 0x4\n"
|
||||
"\tbeq _080E7EE8\n"
|
||||
"\tb _080E7F1C\n"
|
||||
"_080E7EB6:\n"
|
||||
"\tadd r2, sp, 0x24\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tldr r0, [sp, 0x2C]\n"
|
||||
"\tldr r1, [sp, 0x30]\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl sub_80E7AA4\n"
|
||||
"\tb _080E7F1C\n"
|
||||
"_080E7EC8:\n"
|
||||
"\tldr r0, =gUnknown_0858CFB8\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tadds r2, r1, r0\n"
|
||||
"\tldrb r3, [r2]\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tadd r2, sp, 0x24\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tldr r0, [sp, 0x2C]\n"
|
||||
"\tldr r1, [sp, 0x30]\n"
|
||||
"\tbl sub_80E7AA4\n"
|
||||
"\tb _080E7F1C\n"
|
||||
"\t.pool\n"
|
||||
"_080E7EE8:\n"
|
||||
"\tadd r6, sp, 0x24\n"
|
||||
"\tldr r4, =gUnknown_0858CFBE\n"
|
||||
"\tlsls r5, r1, 2\n"
|
||||
"\tadds r0, r5, r4\n"
|
||||
"\tldrb r3, [r0]\n"
|
||||
"\tadds r0, r4, 0x1\n"
|
||||
"\tadds r0, r5, r0\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tldr r0, [sp, 0x2C]\n"
|
||||
"\tldr r1, [sp, 0x30]\n"
|
||||
"\tadds r2, r6, 0\n"
|
||||
"\tbl sub_80E7AA4\n"
|
||||
"\tadds r0, r4, 0x2\n"
|
||||
"\tadds r0, r5, r0\n"
|
||||
"\tldrb r3, [r0]\n"
|
||||
"\tadds r4, 0x3\n"
|
||||
"\tadds r5, r4\n"
|
||||
"\tldrb r0, [r5]\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tldr r0, [sp, 0x2C]\n"
|
||||
"\tldr r1, [sp, 0x30]\n"
|
||||
"\tadds r2, r6, 0\n"
|
||||
"\tbl sub_80E7AA4\n"
|
||||
"_080E7F1C:\n"
|
||||
"\tldr r1, [sp, 0x2C]\n"
|
||||
"\tldr r2, [sp, 0x44]\n"
|
||||
"\tadds r7, r1, r2\n"
|
||||
"\tldr r4, =gSaveBlock1Ptr\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r3, 0xC2\n"
|
||||
"\tlsls r3, 6\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tmovs r2, 0x38\n"
|
||||
"\tbl memcpy\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, =0x0000310c\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tadds r1, 0x38\n"
|
||||
"\tmovs r2, 0x38\n"
|
||||
"\tbl memcpy\n"
|
||||
"\tldr r0, [sp, 0x38]\n"
|
||||
"\tbl SeedRng\n"
|
||||
"\tadd sp, 0x58\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.pool");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
|
||||
static void ReceiveGiftItem(u16 *item, u8 which)
|
||||
{
|
||||
@@ -1481,14 +954,14 @@ static void sub_80E7FF8(u8 taskId)
|
||||
task->data[0] = 6;
|
||||
break;
|
||||
case 2:
|
||||
sub_8076D5C();
|
||||
SetContinueGameWarpStatusToDynamicWarp();
|
||||
sub_8153430();
|
||||
task->data[0] ++;
|
||||
break;
|
||||
case 3:
|
||||
if (sub_8153474())
|
||||
{
|
||||
sav2_gender2_inplace_and_xFE();
|
||||
ClearContinueGameWarpStatus2();
|
||||
task->data[0] = 4;
|
||||
task->data[1] = 0;
|
||||
}
|
||||
@@ -1530,7 +1003,7 @@ static void sub_80E7FF8(u8 taskId)
|
||||
task->data[0] ++;
|
||||
break;
|
||||
case 9:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
|
||||
+102
-102
@@ -25,6 +25,7 @@
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "heal_location.h"
|
||||
#include "constants/heal_locations.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
#define MAP_WIDTH 28
|
||||
#define MAP_HEIGHT 15
|
||||
@@ -427,82 +428,82 @@ bool8 sub_8122DB0(void)
|
||||
{
|
||||
switch (gRegionMap->initStep)
|
||||
{
|
||||
case 0:
|
||||
if (gRegionMap->bgManaged)
|
||||
{
|
||||
decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_GfxLZ, 0, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
LZ77UnCompVram(sRegionMapBkgnd_GfxLZ, (u16 *)BG_CHAR_ADDR(2));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (gRegionMap->bgManaged)
|
||||
{
|
||||
if (!free_temp_tile_data_buffers_if_possible())
|
||||
{
|
||||
decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_TilemapLZ, 0, 0, 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 0:
|
||||
if (gRegionMap->bgManaged)
|
||||
{
|
||||
decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_GfxLZ, 0, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
LZ77UnCompVram(sRegionMapBkgnd_GfxLZ, (u16 *)BG_CHAR_ADDR(2));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (gRegionMap->bgManaged)
|
||||
{
|
||||
if (!free_temp_tile_data_buffers_if_possible())
|
||||
{
|
||||
LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60);
|
||||
decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_TilemapLZ, 0, 0, 1);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage);
|
||||
break;
|
||||
case 4:
|
||||
LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage);
|
||||
break;
|
||||
case 5:
|
||||
RegionMap_InitializeStateBasedOnPlayerLocation();
|
||||
gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
|
||||
gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
|
||||
gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId);
|
||||
gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId);
|
||||
GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
|
||||
break;
|
||||
case 6:
|
||||
if (gRegionMap->zoomed == FALSE)
|
||||
{
|
||||
CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34;
|
||||
gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44;
|
||||
gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX;
|
||||
gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY;
|
||||
CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
RegionMap_GetPositionOfCursorWithinMapSection();
|
||||
UpdateRegionMapVideoRegs();
|
||||
gRegionMap->cursorSprite = NULL;
|
||||
gRegionMap->playerIconSprite = NULL;
|
||||
gRegionMap->cursorMovementFrameCounter = 0;
|
||||
gRegionMap->blinkPlayerIcon = FALSE;
|
||||
if (gRegionMap->bgManaged)
|
||||
{
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_MAPBASEINDEX, 2);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_VISIBLE, gRegionMap->charBaseIdx);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_CHARBASEINDEX, gRegionMap->mapBaseIdx);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_PRIORITY, 1);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1);
|
||||
}
|
||||
gRegionMap->initStep++;
|
||||
return FALSE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!free_temp_tile_data_buffers_if_possible())
|
||||
{
|
||||
LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage);
|
||||
break;
|
||||
case 4:
|
||||
LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage);
|
||||
break;
|
||||
case 5:
|
||||
RegionMap_InitializeStateBasedOnPlayerLocation();
|
||||
gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
|
||||
gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
|
||||
gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId);
|
||||
gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId);
|
||||
GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
|
||||
break;
|
||||
case 6:
|
||||
if (gRegionMap->zoomed == FALSE)
|
||||
{
|
||||
CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34;
|
||||
gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44;
|
||||
gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX;
|
||||
gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY;
|
||||
CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
RegionMap_GetPositionOfCursorWithinMapSection();
|
||||
UpdateRegionMapVideoRegs();
|
||||
gRegionMap->cursorSprite = NULL;
|
||||
gRegionMap->playerIconSprite = NULL;
|
||||
gRegionMap->cursorMovementFrameCounter = 0;
|
||||
gRegionMap->blinkPlayerIcon = FALSE;
|
||||
if (gRegionMap->bgManaged)
|
||||
{
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, gRegionMap->charBaseIdx);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, gRegionMap->mapBaseIdx);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1);
|
||||
SetBgAttribute(gRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1);
|
||||
}
|
||||
gRegionMap->initStep++;
|
||||
return FALSE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
gRegionMap->initStep++;
|
||||
return TRUE;
|
||||
@@ -864,7 +865,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
u16 y;
|
||||
u16 dimensionScale;
|
||||
u16 xOnMap;
|
||||
struct WarpData *storedWarp;
|
||||
struct WarpData *warp;
|
||||
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SS_TIDAL_CORRIDOR)
|
||||
&& (gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_CORRIDOR)
|
||||
@@ -878,11 +879,11 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
switch (GetMapTypeByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
|
||||
{
|
||||
default:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
case MAP_TYPE_TOWN:
|
||||
case MAP_TYPE_CITY:
|
||||
case MAP_TYPE_ROUTE:
|
||||
case MAP_TYPE_UNDERWATER:
|
||||
case MAP_TYPE_6:
|
||||
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = FALSE;
|
||||
mapWidth = gMapHeader.mapLayout->width;
|
||||
@@ -894,17 +895,17 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 7:
|
||||
case MAP_TYPE_UNDERGROUND:
|
||||
case MAP_TYPE_7:
|
||||
if (gMapHeader.flags & 0x02)
|
||||
{
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = gSaveBlock1Ptr->warp4.x;
|
||||
y = gSaveBlock1Ptr->warp4.y;
|
||||
x = gSaveBlock1Ptr->escapeWarp.x;
|
||||
y = gSaveBlock1Ptr->escapeWarp.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -916,27 +917,26 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
y = 1;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
|
||||
case MAP_TYPE_SECRET_BASE:
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->dynamicWarp.mapGroup, (u16)gSaveBlock1Ptr->dynamicWarp.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = gSaveBlock1Ptr->warp2.x;
|
||||
y = gSaveBlock1Ptr->warp2.y;
|
||||
x = gSaveBlock1Ptr->dynamicWarp.x;
|
||||
y = gSaveBlock1Ptr->dynamicWarp.y;
|
||||
break;
|
||||
case 8:
|
||||
|
||||
case MAP_TYPE_INDOOR:
|
||||
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
|
||||
if (gRegionMap->mapSecId != MAPSEC_DYNAMIC)
|
||||
{
|
||||
storedWarp = &gSaveBlock1Ptr->warp4;
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(storedWarp->mapGroup, storedWarp->mapNum);
|
||||
warp = &gSaveBlock1Ptr->escapeWarp;
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
storedWarp = &gSaveBlock1Ptr->warp2;
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(storedWarp->mapGroup, storedWarp->mapNum);
|
||||
warp = &gSaveBlock1Ptr->dynamicWarp;
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
}
|
||||
if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId))
|
||||
@@ -949,8 +949,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
}
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = storedWarp->x;
|
||||
y = storedWarp->y;
|
||||
x = warp->x;
|
||||
y = warp->y;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1902,25 +1902,25 @@ static void sub_8124E0C(void)
|
||||
switch (sFlyMap->regionMap.mapSecId)
|
||||
{
|
||||
case MAPSEC_SOUTHERN_ISLAND:
|
||||
sub_8084CCC(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR);
|
||||
SetWarpDestinationToHealLocation(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR);
|
||||
break;
|
||||
case MAPSEC_BATTLE_FRONTIER:
|
||||
sub_8084CCC(HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST);
|
||||
SetWarpDestinationToHealLocation(HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST);
|
||||
break;
|
||||
case MAPSEC_LITTLEROOT_TOWN:
|
||||
sub_8084CCC(gSaveBlock2Ptr->playerGender == MALE ? HEAL_LOCATION_LITTLEROOT_TOWN_1 : HEAL_LOCATION_LITTLEROOT_TOWN_2);
|
||||
SetWarpDestinationToHealLocation(gSaveBlock2Ptr->playerGender == MALE ? HEAL_LOCATION_LITTLEROOT_TOWN_1 : HEAL_LOCATION_LITTLEROOT_TOWN_2);
|
||||
break;
|
||||
case MAPSEC_EVER_GRANDE_CITY:
|
||||
sub_8084CCC(FlagGet(FLAG_LANDMARK_POKEMON_LEAGUE) && sFlyMap->regionMap.posWithinMapSec == 0 ? HEAL_LOCATION_EVER_GRANDE_CITY_2 : HEAL_LOCATION_EVER_GRANDE_CITY_1);
|
||||
SetWarpDestinationToHealLocation(FlagGet(FLAG_LANDMARK_POKEMON_LEAGUE) && sFlyMap->regionMap.posWithinMapSec == 0 ? HEAL_LOCATION_EVER_GRANDE_CITY_2 : HEAL_LOCATION_EVER_GRANDE_CITY_1);
|
||||
break;
|
||||
default:
|
||||
if (sMapHealLocations[sFlyMap->regionMap.mapSecId][2] != 0)
|
||||
{
|
||||
sub_8084CCC(sMapHealLocations[sFlyMap->regionMap.mapSecId][2]);
|
||||
SetWarpDestinationToHealLocation(sMapHealLocations[sFlyMap->regionMap.mapSecId][2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
warp1_set_2(sMapHealLocations[sFlyMap->regionMap.mapSecId][0], sMapHealLocations[sFlyMap->regionMap.mapSecId][1], -1);
|
||||
SetWarpDestinationToMapWarp(sMapHealLocations[sFlyMap->regionMap.mapSecId][0], sMapHealLocations[sFlyMap->regionMap.mapSecId][1], -1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
|
||||
case 0:
|
||||
ScanlineEffect_Clear();
|
||||
BattleInitBgsAndWindows();
|
||||
SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
ShowBg(2);
|
||||
|
||||
+1
-1
@@ -421,7 +421,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
|
||||
sub_80A6B30(&unknownStruct);
|
||||
sub_80A6CC0(unknownStruct.bgId, gUnknown_08D8D58C, unknownStruct.tilesOffset);
|
||||
sub_80A6D60(&unknownStruct, gUnknown_08D8D410, 0);
|
||||
LoadCompressedPalette(&gBattleAnimSpritePalette_261, unknownStruct.unk8 * 16, 32);
|
||||
LoadCompressedPalette(gBattleAnimSpritePalette_261, unknownStruct.unk8 * 16, 32);
|
||||
|
||||
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
var0 = 1;
|
||||
|
||||
+17
-17
@@ -1315,7 +1315,7 @@ u32 sub_8013B8C(struct UnkStruct_Group *arg0, s32 id)
|
||||
|
||||
if (gUnknown_02022C2C == 4 && structPtr->unk.field_0.unk_00.unk_01_2 != 3)
|
||||
{
|
||||
if (!(gSaveBlock2Ptr->specialSaveWarp & 0x80))
|
||||
if (!(gSaveBlock2Ptr->specialSaveWarpFlags & 0x80))
|
||||
return 1;
|
||||
else if (structPtr->unk.field_0.unk_00.unk_00_7)
|
||||
return 0;
|
||||
@@ -1633,8 +1633,8 @@ void sub_8014210(u16 battleFlags)
|
||||
void sub_8014290(u16 arg0, u16 x, u16 y)
|
||||
{
|
||||
VarSet(VAR_0x4087, arg0);
|
||||
Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
|
||||
saved_warp2_set_2(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
|
||||
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
|
||||
SetDynamicWarpWithCoords(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
|
||||
WarpIntoMap();
|
||||
}
|
||||
|
||||
@@ -1645,7 +1645,7 @@ void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4)
|
||||
gFieldLinkPlayerCount = GetLinkPlayerCount();
|
||||
gUnknown_03005DB4 = GetMultiplayerId();
|
||||
SetCableClubWarp();
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, -1, x, y);
|
||||
WarpIntoMap();
|
||||
}
|
||||
|
||||
@@ -1697,12 +1697,12 @@ void sub_801440C(u8 taskId)
|
||||
{
|
||||
case 65:
|
||||
case 81:
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
gMain.savedCallback = sub_801AC54;
|
||||
sub_81B8518(3);
|
||||
break;
|
||||
case 1:
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_80143E4(gBlockSendBuffer, TRUE);
|
||||
HealPlayerParty();
|
||||
SavePlayerParty();
|
||||
@@ -1711,7 +1711,7 @@ void sub_801440C(u8 taskId)
|
||||
SetMainCallback2(sub_8014384);
|
||||
break;
|
||||
case 2:
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
HealPlayerParty();
|
||||
SavePlayerParty();
|
||||
LoadPlayerBag();
|
||||
@@ -1720,7 +1720,7 @@ void sub_801440C(u8 taskId)
|
||||
SetMainCallback2(sub_8014384);
|
||||
break;
|
||||
case 3:
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
HealPlayerParty();
|
||||
SavePlayerParty();
|
||||
LoadPlayerBag();
|
||||
@@ -1730,18 +1730,18 @@ void sub_801440C(u8 taskId)
|
||||
break;
|
||||
case 4:
|
||||
sub_80143E4(gBlockSendBuffer, TRUE);
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_8014304(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, 3);
|
||||
SetMainCallback2(sub_8014384);
|
||||
break;
|
||||
case 15:
|
||||
sub_80143E4(gBlockSendBuffer, TRUE);
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_8014304(MAP_GROUP(RECORD_CORNER), MAP_NUM(RECORD_CORNER), 8, 9, 4);
|
||||
SetMainCallback2(sub_8014384);
|
||||
break;
|
||||
case 68:
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
CreateTask(sub_8013F90, 0);
|
||||
break;
|
||||
case 5:
|
||||
@@ -1838,7 +1838,7 @@ void sub_8014790(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
sub_80149D8();
|
||||
@@ -2095,7 +2095,7 @@ void sub_8014A40(u8 taskId)
|
||||
data->state++;
|
||||
break;
|
||||
case 17:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -2264,7 +2264,7 @@ void sub_8014F48(u8 taskId)
|
||||
sub_800ADF8();
|
||||
break;
|
||||
case 12:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -2443,7 +2443,7 @@ void sub_80152F4(u8 taskId)
|
||||
sub_800ADF8();
|
||||
break;
|
||||
case 14:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -2836,7 +2836,7 @@ void sub_80156E0(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 41:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
@@ -3033,7 +3033,7 @@ void sub_80156E0(u8 taskId)
|
||||
data->state = 15;
|
||||
break;
|
||||
case 15:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
data->state = 16;
|
||||
break;
|
||||
case 16:
|
||||
|
||||
+6
-6
@@ -77,7 +77,7 @@ extern void DoSaveFailedScreen(u8); // save_failed_screen
|
||||
extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data);
|
||||
extern void save_serialize_map(void);
|
||||
extern void sub_800ADF8(void);
|
||||
extern bool8 sub_800A520(void);
|
||||
extern bool8 IsLinkTaskFinished(void);
|
||||
|
||||
// iwram common
|
||||
u16 gLastWrittenSector;
|
||||
@@ -914,7 +914,7 @@ void sub_8153688(u8 taskId)
|
||||
taskData[0] = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (taskData[2] == 0)
|
||||
save_serialize_map();
|
||||
@@ -923,7 +923,7 @@ void sub_8153688(u8 taskId)
|
||||
break;
|
||||
case 3:
|
||||
if (taskData[2] == 0)
|
||||
sub_8076D5C();
|
||||
SetContinueGameWarpStatusToDynamicWarp();
|
||||
sub_8153380();
|
||||
taskData[0] = 4;
|
||||
break;
|
||||
@@ -946,12 +946,12 @@ void sub_8153688(u8 taskId)
|
||||
break;
|
||||
case 7:
|
||||
if (taskData[2] == 0)
|
||||
sav2_gender2_inplace_and_xFE();
|
||||
ClearContinueGameWarpStatus2();
|
||||
sub_800ADF8();
|
||||
taskData[0] = 8;
|
||||
break;
|
||||
case 8:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_8153408();
|
||||
taskData[0] = 9;
|
||||
@@ -962,7 +962,7 @@ void sub_8153688(u8 taskId)
|
||||
taskData[0] = 10;
|
||||
break;
|
||||
case 10:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
taskData[0]++;
|
||||
break;
|
||||
case 11:
|
||||
|
||||
+7
-12
@@ -2,11 +2,6 @@
|
||||
#include "save_location.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
// specialSaveWarp flags
|
||||
#define POKECENTER_SAVEWARP (1 << 1)
|
||||
#define LOBBY_SAVEWARP (1 << 2)
|
||||
#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3)
|
||||
|
||||
static bool32 IsCurMapInLocationList(const u16 *list)
|
||||
{
|
||||
s32 i;
|
||||
@@ -94,26 +89,26 @@ static bool32 sub_81AFCEC(void)
|
||||
static void TrySetPokeCenterWarpStatus(void)
|
||||
{
|
||||
if (IsCurMapPokeCenter() == FALSE)
|
||||
gSaveBlock2Ptr->specialSaveWarp &= ~(POKECENTER_SAVEWARP);
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags &= ~(POKECENTER_SAVEWARP);
|
||||
else
|
||||
gSaveBlock2Ptr->specialSaveWarp |= POKECENTER_SAVEWARP;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags |= POKECENTER_SAVEWARP;
|
||||
}
|
||||
|
||||
static void TrySetReloadWarpStatus(void)
|
||||
{
|
||||
if (!IsCurMapReloadLocation())
|
||||
gSaveBlock2Ptr->specialSaveWarp &= ~(LOBBY_SAVEWARP);
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags &= ~(LOBBY_SAVEWARP);
|
||||
else
|
||||
gSaveBlock2Ptr->specialSaveWarp |= LOBBY_SAVEWARP;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags |= LOBBY_SAVEWARP;
|
||||
}
|
||||
|
||||
// this function definitely sets a warp status, but because the list is empty, it's unknown what this does yet.
|
||||
static void sub_81AFD5C(void)
|
||||
{
|
||||
if (!sub_81AFCEC())
|
||||
gSaveBlock2Ptr->specialSaveWarp &= ~(UNK_SPECIAL_SAVE_WARP_FLAG_3);
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags &= ~(UNK_SPECIAL_SAVE_WARP_FLAG_3);
|
||||
else
|
||||
gSaveBlock2Ptr->specialSaveWarp |= UNK_SPECIAL_SAVE_WARP_FLAG_3;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags |= UNK_SPECIAL_SAVE_WARP_FLAG_3;
|
||||
}
|
||||
|
||||
void TrySetMapSaveWarpStatus(void)
|
||||
@@ -136,5 +131,5 @@ void sub_81AFDA0(void)
|
||||
|
||||
void sub_81AFDD0(void)
|
||||
{
|
||||
gSaveBlock2Ptr->specialSaveWarp |= 0x80;
|
||||
gSaveBlock2Ptr->specialSaveWarpFlags |= 0x80;
|
||||
}
|
||||
|
||||
+26
-26
@@ -49,12 +49,12 @@
|
||||
#include "trainer_see.h"
|
||||
#include "tv.h"
|
||||
#include "window.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
typedef u16 (*SpecialFunc)(void);
|
||||
typedef void (*NativeFunc)(void);
|
||||
|
||||
extern const u8 *gUnknown_020375C0;
|
||||
|
||||
EWRAM_DATA const u8 *gUnknown_020375C0 = NULL;
|
||||
static EWRAM_DATA u32 gUnknown_020375C4 = 0;
|
||||
static EWRAM_DATA u16 sPauseCounter = 0;
|
||||
static EWRAM_DATA u16 sMovingNpcId = 0;
|
||||
@@ -735,7 +735,7 @@ bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx)
|
||||
{
|
||||
u16 value = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
sub_8085524(value);
|
||||
SetCurrentMapLayout(value);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -747,8 +747,8 @@ bool8 ScrCmd_warp(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF734();
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
DoWarp();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
}
|
||||
@@ -761,8 +761,8 @@ bool8 ScrCmd_warpsilent(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sp13E_warp_to_last_warp();
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
DoDiveWarp();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
}
|
||||
@@ -775,8 +775,8 @@ bool8 ScrCmd_warpdoor(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF7D0();
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
DoDoorWarp();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
}
|
||||
@@ -790,10 +790,10 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx)
|
||||
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (mapGroup == 0xFF && mapNum == 0xFF)
|
||||
SetFixedHoleWarpAsDestination(x - 7, y - 7);
|
||||
SetWarpDestinationToFixedHoleWarp(x - 7, y - 7);
|
||||
else
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7);
|
||||
sp13F_fall_to_last_warp();
|
||||
SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7);
|
||||
DoFallWarp();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
}
|
||||
@@ -806,7 +806,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF848();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
@@ -820,7 +820,7 @@ bool8 ScrCmd_warpD7(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF87C();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
@@ -834,7 +834,7 @@ bool8 ScrCmd_setwarp(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -846,7 +846,7 @@ bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y);
|
||||
SetDynamicWarpWithCoords(0, mapGroup, mapNum, warpId, x, y);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -882,7 +882,7 @@ bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
sub_8084DD4(mapGroup, mapNum, warpId, x, y);
|
||||
SetEscapeWarp(mapGroup, mapNum, warpId, x, y);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1239,11 +1239,11 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
|
||||
|
||||
bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
|
||||
{
|
||||
u8 objectId;
|
||||
u8 playerObjectId;
|
||||
|
||||
HideFieldMessageBox();
|
||||
objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
UnfreezeEventObjects();
|
||||
return FALSE;
|
||||
@@ -1251,13 +1251,13 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
|
||||
|
||||
bool8 ScrCmd_release(struct ScriptContext *ctx)
|
||||
{
|
||||
u8 objectId;
|
||||
u8 playerObjectId;
|
||||
|
||||
HideFieldMessageBox();
|
||||
if (gEventObjects[gSelectedEventObject].active)
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
|
||||
objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
UnfreezeEventObjects();
|
||||
return FALSE;
|
||||
@@ -1998,7 +1998,7 @@ bool8 ScrCmd_setrespawn(struct ScriptContext *ctx)
|
||||
{
|
||||
u16 healLocationId = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetHealLocationWarp(healLocationId);
|
||||
SetLastHealLocationWarp(healLocationId);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2235,7 +2235,7 @@ bool8 ScrCmd_warpD1(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_808D074(GetPlayerFacingDirection());
|
||||
sub_80B0244();
|
||||
ResetInitialPlayerAvatarState();
|
||||
@@ -2289,7 +2289,7 @@ bool8 ScrCmd_warpE0(struct ScriptContext *ctx)
|
||||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF79C();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
|
||||
@@ -451,7 +451,7 @@ static void sub_80F9088(u8 taskId)
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (sub_800A520())
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_800ADF8();
|
||||
gTasks[taskId].data[0]++;
|
||||
@@ -461,7 +461,7 @@ static void sub_80F9088(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
default:
|
||||
if (sub_800A520() == 1)
|
||||
if (IsLinkTaskFinished() == 1)
|
||||
{
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
|
||||
+6
-6
@@ -366,7 +366,7 @@ void sub_80E8F9C(void)
|
||||
s8 idx;
|
||||
|
||||
idx = sCurSecretBaseId / 10 * 4;
|
||||
warp1_set_2(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]);
|
||||
SetWarpDestinationToMapWarp(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]);
|
||||
}
|
||||
|
||||
void sub_80E8FD0(u8 taskId)
|
||||
@@ -400,7 +400,7 @@ void sub_80E9068(void)
|
||||
{
|
||||
CreateTask(sub_80E8FD0, 0);
|
||||
FadeScreen(1, 0);
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
bool8 sub_80E909C(void)
|
||||
@@ -445,7 +445,7 @@ void sub_80E916C(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
idx = sCurSecretBaseId / 10 * 4;
|
||||
Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]);
|
||||
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]);
|
||||
WarpIntoMap();
|
||||
gFieldCallback = sub_80E9108;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
@@ -610,7 +610,7 @@ void sub_80E9608(const struct MapPosition *position, const struct MapEvents *eve
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80E9668(const struct MapPosition *position, const struct MapEvents *events)
|
||||
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events)
|
||||
{
|
||||
sub_80E9608(position, events);
|
||||
sub_80E8B6C();
|
||||
@@ -643,7 +643,7 @@ void sub_80E96A4(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7e);
|
||||
SetWarpDestinationToDynamicWarp(0x7e);
|
||||
WarpIntoMap();
|
||||
gFieldCallback = mapldr_default;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
@@ -1170,7 +1170,7 @@ void sub_80EA354(void)
|
||||
gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5;
|
||||
}
|
||||
|
||||
void sub_80EA3E4(u8 taskId)
|
||||
void SecretBasePerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
|
||||
+10
-10
@@ -623,7 +623,7 @@ static bool8 StartMenuPokedexCallback(void)
|
||||
IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_Pokedex);
|
||||
|
||||
return TRUE;
|
||||
@@ -638,7 +638,7 @@ static bool8 StartMenuPokemonCallback(void)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu
|
||||
|
||||
return TRUE;
|
||||
@@ -653,7 +653,7 @@ static bool8 StartMenuBagCallback(void)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu
|
||||
|
||||
return TRUE;
|
||||
@@ -668,7 +668,7 @@ static bool8 StartMenuPokeNavCallback(void)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_PokeNav); // Display PokeNav
|
||||
|
||||
return TRUE;
|
||||
@@ -683,7 +683,7 @@ static bool8 StartMenuPlayerNameCallback(void)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
|
||||
if (is_c1_link_related_active() || InUnionRoom())
|
||||
{
|
||||
@@ -722,7 +722,7 @@ static bool8 StartMenuOptionCallback(void)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_InitOptionMenu); // Display option menu
|
||||
gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu;
|
||||
|
||||
@@ -754,7 +754,7 @@ static bool8 StartMenuLinkModePlayerNameCallback(void)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
TrainerCard_ShowLinkCard(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);
|
||||
|
||||
return TRUE;
|
||||
@@ -784,7 +784,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void)
|
||||
{
|
||||
PlayRainSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_PyramidBagMenuFromStartMenu);
|
||||
|
||||
return TRUE;
|
||||
@@ -1285,14 +1285,14 @@ static void sub_80A0550(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_8076D5C();
|
||||
SetContinueGameWarpStatusToDynamicWarp();
|
||||
sub_8153430();
|
||||
*step = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (sub_8153474())
|
||||
{
|
||||
sav2_gender2_inplace_and_xFE();
|
||||
ClearContinueGameWarpStatus2();
|
||||
*step = 3;
|
||||
gSoftResetDisabled = 0;
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ void CB2_ChooseStarter(void)
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x1F);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0xFE);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 7);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||
|
||||
+5
-5
@@ -553,7 +553,7 @@ void CB2_InitTitleScreen(void)
|
||||
SetGpuReg(REG_OFFSET_WIN1V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x3F1F);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x84);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_LIGHTEN);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0xC);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_16COLOR | BGCNT_TXT256x256);
|
||||
@@ -615,8 +615,8 @@ static void Task_TitleScreenPhase1(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x3F50);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x10);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
|
||||
// Create left side of version banner
|
||||
@@ -652,8 +652,8 @@ static void Task_TitleScreenPhase2(u8 taskId)
|
||||
else
|
||||
{
|
||||
gTasks[taskId].tSkipToNext = TRUE;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x2142);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0xF06);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BD);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(6, 15));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1
|
||||
| DISPCNT_OBJ_1D_MAP
|
||||
|
||||
+6389
File diff suppressed because it is too large
Load Diff
@@ -862,13 +862,13 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId)
|
||||
|
||||
void TurnOffTVScreen(void)
|
||||
{
|
||||
SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0002);
|
||||
SetTVMetatilesOnMap(gBackupMapLayout.width, gBackupMapLayout.height, 0x0002);
|
||||
DrawWholeMapView();
|
||||
}
|
||||
|
||||
void TurnOnTVScreen(void)
|
||||
{
|
||||
SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0003);
|
||||
SetTVMetatilesOnMap(gBackupMapLayout.width, gBackupMapLayout.height, 0x0003);
|
||||
DrawWholeMapView();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,21 +22,21 @@ void sub_81C4D70(const struct UnkStruct_1C4D70 *template)
|
||||
|
||||
if (unk == 0)
|
||||
{
|
||||
SetBgAttribute(template->bg, BG_CTRL_ATTR_WRAPAROUND, 0);
|
||||
SetBgAttribute(template->bg, BG_ATTR_METRIC, 0);
|
||||
decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861D1A0, 0, template->unk2, unk);
|
||||
sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861DEF4, 0, 0, 1), template->unk2, 32, 32, unk);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBgAttribute(template->bg, BG_CTRL_ATTR_WRAPAROUND, 2);
|
||||
SetBgAttribute(template->bg, 9, 1);
|
||||
SetBgAttribute(template->bg, BG_ATTR_METRIC, 2);
|
||||
SetBgAttribute(template->bg, BG_ATTR_TYPE, 1);
|
||||
decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861E208, 0, template->unk2, 0);
|
||||
sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861EF64, 0, 0, 1), template->unk2, 64, 64, 1);
|
||||
}
|
||||
|
||||
ChangeBgX(template->bg, 0, 0);
|
||||
ChangeBgY(template->bg, 0, 0);
|
||||
SetBgAttribute(template->bg, BG_CTRL_ATTR_SCREENSIZE, 1);
|
||||
SetBgAttribute(template->bg, BG_ATTR_PALETTEMODE, 1);
|
||||
CpuCopy32(gUnknown_0861D140, &gPlttBufferUnfaded[0x70], 0x60);
|
||||
*gUnknown_0203CF28 = template->bg;
|
||||
}
|
||||
|
||||
@@ -337,8 +337,8 @@ static bool8 sub_81DAACC(struct Task *task)
|
||||
else
|
||||
{
|
||||
sub_81DA700();
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0x3F41);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0x1000);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
ChangeBgY(0, 0x500, 2);
|
||||
@@ -368,11 +368,11 @@ static bool8 sub_81DAB4C(struct Task *task)
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 var;
|
||||
u16 blnd;
|
||||
|
||||
task->data[2]++;
|
||||
var = task->data[2];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (var) | ((16 - var) << 8));
|
||||
blnd = task->data[2];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(blnd, 16 - blnd));
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user