Fix merge conflicts

This commit is contained in:
Tetrable
2019-01-02 21:25:14 +00:00
773 changed files with 11252 additions and 23425 deletions
+1 -1
View File
@@ -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
View File
@@ -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;
+4 -4
View File
@@ -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;
}
+6 -6
View File
@@ -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;
+5 -5
View File
@@ -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;
}
File diff suppressed because it is too large Load Diff
+4 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+2 -2
View File
@@ -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();
+1 -1
View File
@@ -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
View File
@@ -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;
}
+1 -1
View File
@@ -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;
}
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+6 -6
View File
@@ -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++)
+1 -1
View File
@@ -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);
+7 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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++;
+9 -9
View File
@@ -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);
+86 -80
View File
@@ -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
View File
@@ -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);
-8
View File
@@ -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
View File
@@ -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;
+771
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+213 -216
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 -5
View File
@@ -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();
}
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+4 -7
View File
@@ -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;
+9 -9
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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:
+8 -8
View File
@@ -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
View File
@@ -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
View File
@@ -1080,7 +1080,7 @@ bool8 sub_800A4D8(u8 a0)
return FALSE;
}
bool8 sub_800A520(void)
bool8 IsLinkTaskFinished(void)
{
if (gWirelessCommType == TRUE)
{
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
}
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+11 -11
View File
@@ -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;
+41 -41
View File
@@ -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)
+3 -3
View File
@@ -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
View File
@@ -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;
}
}
+4 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+1 -1
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -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();
}
+4 -4
View File
@@ -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;
}
+5 -5
View File
@@ -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