merge with battle tent update
This commit is contained in:
@@ -1854,7 +1854,7 @@ static void LinkOpponentHandleCmd55(void)
|
||||
else
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
|
||||
|
||||
gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
|
||||
@@ -1685,7 +1685,7 @@ static void LinkPartnerHandleCmd55(void)
|
||||
{
|
||||
sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
|
||||
@@ -3105,7 +3105,7 @@ static void PlayerHandleCmd55(void)
|
||||
{
|
||||
sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
PlayerBufferExecCompleted();
|
||||
|
||||
@@ -1515,8 +1515,8 @@ void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_55;
|
||||
sBattleBuffersTransferData[1] = battleOutcome;
|
||||
sBattleBuffersTransferData[2] = gSaveBlock2Ptr->field_CA9_b;
|
||||
sBattleBuffersTransferData[3] = gSaveBlock2Ptr->field_CA9_b;
|
||||
sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
sBattleBuffersTransferData[5] = sBattleBuffersTransferData[4] = sub_81850DC(&sBattleBuffersTransferData[6]);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[4] + 6);
|
||||
}
|
||||
|
||||
@@ -684,7 +684,7 @@ static void CB2_InitBattleInternal(void)
|
||||
}
|
||||
|
||||
gMain.inBattle = TRUE;
|
||||
gSaveBlock2Ptr->field_CA9_b = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
AdjustFriendship(&gPlayerParty[i], 3);
|
||||
@@ -2281,7 +2281,7 @@ static void sub_8038F34(void)
|
||||
|
||||
for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
|
||||
|
||||
if (!gSaveBlock2Ptr->field_CA9_b && i == monsCount)
|
||||
if (!gSaveBlock2Ptr->frontier.field_CA9_b && i == monsCount)
|
||||
{
|
||||
if (FlagGet(FLAG_SYS_FRONTIER_PASS))
|
||||
{
|
||||
@@ -3116,7 +3116,7 @@ void SwitchInClearSetData(void)
|
||||
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
|
||||
{
|
||||
gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
|
||||
gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
|
||||
gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BATTLER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
@@ -4066,7 +4066,7 @@ u8 IsRunningFromBattleImpossible(void)
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0);
|
||||
i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0);
|
||||
if (i != 0 && IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL))
|
||||
{
|
||||
gBattleScripting.battler = i - 1;
|
||||
@@ -4252,11 +4252,11 @@ static void HandleTurnActionSelectionState(void)
|
||||
{
|
||||
BtlController_EmitChoosePokemon(0, 2, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
|
||||
}
|
||||
else if ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0))
|
||||
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0))
|
||||
else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|
||||
|| ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP))
|
||||
&& !IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_FLYING)
|
||||
&& gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE)
|
||||
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
|
||||
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
|
||||
&& IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)))
|
||||
{
|
||||
BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | 4, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]);
|
||||
@@ -5036,7 +5036,7 @@ static void HandleEndTurn_BattleLost(void)
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeitedLinkBattle;
|
||||
gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
|
||||
gSaveBlock2Ptr->field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5068,7 +5068,7 @@ static void HandleEndTurn_RanFromBattle(void)
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
|
||||
gBattleOutcome = B_OUTCOME_FORFEITED;
|
||||
gSaveBlock2Ptr->field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
|
||||
{
|
||||
@@ -5687,7 +5687,7 @@ static void HandleAction_Run(void)
|
||||
}
|
||||
|
||||
gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN;
|
||||
gSaveBlock2Ptr->field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -883,8 +883,8 @@ u8 sub_80B100C(s32 arg0)
|
||||
return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
|
||||
}
|
||||
|
||||
var = gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 0]
|
||||
+ gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 1];
|
||||
var = gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2 * 2 + 0]
|
||||
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2 * 2 + 1];
|
||||
|
||||
return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)];
|
||||
}
|
||||
|
||||
268
src/battle_tent.c
Normal file
268
src/battle_tent.c
Normal file
@@ -0,0 +1,268 @@
|
||||
#include "global.h"
|
||||
#include "overworld.h"
|
||||
#include "event_data.h"
|
||||
#include "region_map.h"
|
||||
#include "battle.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "battle_frontier_2.h"
|
||||
#include "random.h"
|
||||
#include "item.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
// this file's functions
|
||||
void sub_81B99D4(void);
|
||||
void sub_81B9A28(void);
|
||||
void sub_81B9A44(void);
|
||||
void sub_81B9A60(void);
|
||||
void sub_81B9A90(void);
|
||||
void sub_81B9ABC(void);
|
||||
void sub_81B9B00(void);
|
||||
void sub_81B9B28(void);
|
||||
void sub_81B9BA0(void);
|
||||
void sub_81B9BF4(void);
|
||||
void sub_81B9C10(void);
|
||||
void sub_81B9C2C(void);
|
||||
void sub_81B9C70(void);
|
||||
void sub_81B9C98(void);
|
||||
void sub_81B9CF0(void);
|
||||
void sub_81B9D28(void);
|
||||
void sub_81B9D7C(void);
|
||||
void sub_81B9D98(void);
|
||||
void sub_81B9DB4(void);
|
||||
void sub_81B9DF8(void);
|
||||
void sub_81B9E20(void);
|
||||
void sub_81B9E78(void);
|
||||
void sub_81B9E88(void);
|
||||
void sub_81BA040(void);
|
||||
void sub_81B9EC0(void);
|
||||
|
||||
// const rom data
|
||||
void (*const gUnknown_086160B4[])(void) =
|
||||
{
|
||||
sub_81B99D4,
|
||||
sub_81B9A28,
|
||||
sub_81B9A44,
|
||||
sub_81B9A60,
|
||||
sub_81B9A90,
|
||||
sub_81B9ABC,
|
||||
sub_81B9B00,
|
||||
sub_81B9B28
|
||||
};
|
||||
|
||||
const u16 gUnknown_086160D4[] = {ITEM_NEST_BALL, ITEM_NONE};
|
||||
|
||||
void (*const gUnknown_086160D8[])(void) =
|
||||
{
|
||||
sub_81B9BA0,
|
||||
sub_81B9BF4,
|
||||
sub_81B9C10,
|
||||
sub_81B9C2C,
|
||||
sub_81B9C70,
|
||||
sub_81B9C98,
|
||||
sub_81B9CF0
|
||||
};
|
||||
|
||||
const u16 gUnknown_086160F4[] = {ITEM_HYPER_POTION, ITEM_NONE};
|
||||
|
||||
void (*const gUnknown_086160F8[])(void) =
|
||||
{
|
||||
sub_81B9D28,
|
||||
sub_81B9D7C,
|
||||
sub_81B9D98,
|
||||
sub_81B9DB4,
|
||||
sub_81B9DF8,
|
||||
sub_81B9E20,
|
||||
sub_81B9E78,
|
||||
sub_81B9E88,
|
||||
sub_81BA040,
|
||||
sub_81B9EC0
|
||||
};
|
||||
|
||||
const u16 gUnknown_08616120[] = {ITEM_FULL_HEAL, ITEM_NONE};
|
||||
|
||||
// code
|
||||
void sub_81B99B4(void)
|
||||
{
|
||||
gUnknown_086160B4[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_81B99D4(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
void sub_81B9A28(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6A;
|
||||
}
|
||||
|
||||
void sub_81B9A44(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
void sub_81B9A60(void)
|
||||
{
|
||||
gTrainerBattleOpponent_A = (u32)((Random() % 255) * 5) / 64;
|
||||
sub_8162614(gTrainerBattleOpponent_A, 0);
|
||||
}
|
||||
|
||||
void sub_81B9A90(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A < 300)
|
||||
ConvertBattleFrontierTrainerSpeechToString(gUnknown_0203BC88[gTrainerBattleOpponent_A].speechBefore);
|
||||
}
|
||||
|
||||
void sub_81B9ABC(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = TRUE;
|
||||
sub_81A4C30();
|
||||
}
|
||||
|
||||
void sub_81B9B00(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = gUnknown_086160D4[Random() % 1];
|
||||
}
|
||||
|
||||
void sub_81B9B28(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6A, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6A, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6A = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81B9B80(void)
|
||||
{
|
||||
gUnknown_086160D8[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_81B9BA0(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
void sub_81B9BF4(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6C;
|
||||
}
|
||||
|
||||
void sub_81B9C10(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
void sub_81B9C2C(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = TRUE;
|
||||
sub_81A4C30();
|
||||
}
|
||||
|
||||
void sub_81B9C70(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = gUnknown_086160F4[Random() % 1];
|
||||
}
|
||||
|
||||
void sub_81B9C98(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6C, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6C, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6C = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81B9CF0(void)
|
||||
{
|
||||
GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A);
|
||||
}
|
||||
|
||||
void sub_81B9D08(void)
|
||||
{
|
||||
gUnknown_086160F8[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_81B9D28(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
void sub_81B9D7C(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6E;
|
||||
}
|
||||
|
||||
void sub_81B9D98(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
void sub_81B9DB4(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = TRUE;
|
||||
sub_81A4C30();
|
||||
}
|
||||
|
||||
void sub_81B9DF8(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = gUnknown_08616120[Random() % 1];
|
||||
}
|
||||
|
||||
void sub_81B9E20(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6E, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6E, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6E = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81B9E78(void)
|
||||
{
|
||||
ZeroPlayerPartyMons();
|
||||
sub_819A4F8();
|
||||
}
|
||||
|
||||
void sub_81B9E88(void)
|
||||
{
|
||||
sub_819DC00();
|
||||
}
|
||||
|
||||
bool8 sub_81B9E94(void)
|
||||
{
|
||||
return (gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY
|
||||
&& ((gMapHeader.mapLayoutId == 385) | (gMapHeader.mapLayoutId == 386)));
|
||||
}
|
||||
@@ -1736,7 +1736,7 @@ bool8 sub_8128D10(u8 taskId)
|
||||
data[1] ++;
|
||||
return FALSE;
|
||||
}
|
||||
if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height)
|
||||
if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapLayout->height)
|
||||
{
|
||||
data[1] --;
|
||||
return FALSE;
|
||||
@@ -1746,7 +1746,7 @@ bool8 sub_8128D10(u8 taskId)
|
||||
data[0] ++;
|
||||
return FALSE;
|
||||
}
|
||||
if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width)
|
||||
if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapLayout->width)
|
||||
{
|
||||
data[0] --;
|
||||
return FALSE;
|
||||
@@ -2186,7 +2186,7 @@ void sub_81297F8(void)
|
||||
{
|
||||
for (x = 0; x < sDecorRearrangementDataBuffer[i].width; x ++)
|
||||
{
|
||||
MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapData->map[posX + x + gMapHeader.mapData->width * (posY - y)] | 0x3000);
|
||||
MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapLayout->map[posX + x + gMapHeader.mapLayout->width * (posY - y)] | 0x3000);
|
||||
}
|
||||
}
|
||||
sub_81296EC(sDecorRearrangementDataBuffer[i].idx);
|
||||
|
||||
@@ -25,13 +25,13 @@ struct FieldCameraUnknownStruct
|
||||
};
|
||||
|
||||
// static functions
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static s32 MapPosToBgTilemapOffset(struct FieldCameraUnknownStruct *a, s32 x, s32 y);
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapData *mapData);
|
||||
static void DrawMetatileAt(const struct MapData *mapData, u16, int, int);
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout);
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16, int, int);
|
||||
static void DrawMetatile(s32 a, u16 *b, u16 c);
|
||||
static void CameraPanningCB_PanAhead(void);
|
||||
|
||||
@@ -97,11 +97,11 @@ void sub_8089C08(s16 *a, s16 *b)
|
||||
|
||||
void DrawWholeMapView(void)
|
||||
{
|
||||
DrawWholeMapViewInternal(gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y, gMapHeader.mapData);
|
||||
DrawWholeMapViewInternal(gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y, gMapHeader.mapLayout);
|
||||
gUnknown_03000E20.unk4 = TRUE;
|
||||
}
|
||||
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapData *mapData)
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 j;
|
||||
@@ -119,27 +119,27 @@ static void DrawWholeMapViewInternal(int x, int y, const struct MapData *mapData
|
||||
temp = gUnknown_03000E20.unk2 + j;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, r6 + temp, x + j / 2, y + i / 2);
|
||||
DrawMetatileAt(mapLayout, r6 + temp, x + j / 2, y + i / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSlicesForCameraUpdate(struct FieldCameraUnknownStruct *a, int x, int y)
|
||||
{
|
||||
const struct MapData *mapData = gMapHeader.mapData;
|
||||
const struct MapLayout *mapLayout = gMapHeader.mapLayout;
|
||||
|
||||
if (x > 0)
|
||||
RedrawMapSliceWest(a, mapData);
|
||||
RedrawMapSliceWest(a, mapLayout);
|
||||
if (x < 0)
|
||||
RedrawMapSliceEast(a, mapData);
|
||||
RedrawMapSliceEast(a, mapLayout);
|
||||
if (y > 0)
|
||||
RedrawMapSliceNorth(a, mapData);
|
||||
RedrawMapSliceNorth(a, mapLayout);
|
||||
if (y < 0)
|
||||
RedrawMapSliceSouth(a, mapData);
|
||||
RedrawMapSliceSouth(a, mapLayout);
|
||||
a->unk4 = TRUE;
|
||||
}
|
||||
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -154,11 +154,11 @@ static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk2 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y + 14);
|
||||
DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y + 14);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -169,11 +169,11 @@ static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk2 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y);
|
||||
DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -184,11 +184,11 @@ static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk3 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, temp * 32 + r6, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
DrawMetatileAt(mapLayout, temp * 32 + r6, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -201,7 +201,7 @@ static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk3 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, temp * 32 + r5, gSaveBlock1Ptr->pos.x + 14, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
DrawMetatileAt(mapLayout, temp * 32 + r5, gSaveBlock1Ptr->pos.x + 14, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ void CurrentMapDrawMetatileAt(int a, int b)
|
||||
|
||||
if (offset >= 0)
|
||||
{
|
||||
DrawMetatileAt(gMapHeader.mapData, offset, a, b);
|
||||
DrawMetatileAt(gMapHeader.mapLayout, offset, a, b);
|
||||
gUnknown_03000E20.unk4 = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -227,7 +227,7 @@ void DrawDoorMetatileAt(int x, int y, u16 *arr)
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawMetatileAt(const struct MapData *mapData, u16 b, int c, int d)
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 b, int c, int d)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(c, d);
|
||||
u16 *metatiles;
|
||||
@@ -235,10 +235,10 @@ static void DrawMetatileAt(const struct MapData *mapData, u16 b, int c, int d)
|
||||
if (metatileId > 1024)
|
||||
metatileId = 0;
|
||||
if (metatileId < 512)
|
||||
metatiles = mapData->primaryTileset->metatiles;
|
||||
metatiles = mapLayout->primaryTileset->metatiles;
|
||||
else
|
||||
{
|
||||
metatiles = mapData->secondaryTileset->metatiles;
|
||||
metatiles = mapLayout->secondaryTileset->metatiles;
|
||||
metatileId -= 512;
|
||||
}
|
||||
DrawMetatile(MapGridGetMetatileLayerTypeAt(c, d), metatiles + metatileId * 8, b);
|
||||
|
||||
@@ -525,8 +525,8 @@ static bool32 sub_809E184(s16 x, s16 y)
|
||||
void SetSootopolisGymCrackedIceMetatiles(void)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 width = gMapHeader.mapData->width;
|
||||
s32 height = gMapHeader.mapData->height;
|
||||
s32 width = gMapHeader.mapLayout->width;
|
||||
s32 height = gMapHeader.mapLayout->height;
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
for (y = 0; y < height; y++)
|
||||
|
||||
116
src/fieldmap.c
116
src/fieldmap.c
@@ -28,7 +28,7 @@ EWRAM_DATA struct Camera gCamera = {0};
|
||||
EWRAM_DATA static struct ConnectionFlags gUnknown_02037340 = {0};
|
||||
EWRAM_DATA static u32 sFiller_02037344 = 0; // without this, the next file won't align properly
|
||||
|
||||
struct BackupMapData gUnknown_03005DC0;
|
||||
struct BackupMapLayout gUnknown_03005DC0;
|
||||
|
||||
static const struct ConnectionFlags sDummyConnectionFlags = {0};
|
||||
|
||||
@@ -68,19 +68,19 @@ void trainer_hill_map_load_related(void)
|
||||
|
||||
void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader)
|
||||
{
|
||||
struct MapData const *mapData;
|
||||
struct MapLayout const *mapLayout;
|
||||
int width;
|
||||
int height;
|
||||
mapData = mapHeader->mapData;
|
||||
mapLayout = mapHeader->mapLayout;
|
||||
CpuFastFill16(0x03ff, gUnknown_02032318, sizeof(gUnknown_02032318));
|
||||
gUnknown_03005DC0.map = gUnknown_02032318;
|
||||
width = mapData->width + 15;
|
||||
width = mapLayout->width + 15;
|
||||
gUnknown_03005DC0.width = width;
|
||||
height = mapData->height + 14;
|
||||
height = mapLayout->height + 14;
|
||||
gUnknown_03005DC0.height = height;
|
||||
if (width * height <= 0x2800)
|
||||
{
|
||||
map_copy_with_padding(mapData->map, mapData->width, mapData->height);
|
||||
map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height);
|
||||
mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
|
||||
}
|
||||
}
|
||||
@@ -146,8 +146,8 @@ void sub_8087F54(int x, int y, struct MapHeader const *mapHeader, int x2, int y2
|
||||
u16 *dest;
|
||||
int mapWidth;
|
||||
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
src = &mapHeader->mapData->map[mapWidth * y2 + x2];
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
src = &mapHeader->mapLayout->map[mapWidth * y2 + x2];
|
||||
dest = &gUnknown_03005DC0.map[gUnknown_03005DC0.width * y + x];
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
@@ -167,9 +167,9 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cWidth = connectedMapHeader->mapLayout->width;
|
||||
x = offset + 7;
|
||||
y = mapHeader->mapData->height + 7;
|
||||
y = mapHeader->mapLayout->height + 7;
|
||||
if (x < 0)
|
||||
{
|
||||
x2 = -x;
|
||||
@@ -214,8 +214,8 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
cWidth = connectedMapHeader->mapLayout->width;
|
||||
cHeight = connectedMapHeader->mapLayout->height;
|
||||
x = offset + 7;
|
||||
y2 = cHeight - 7;
|
||||
if (x < 0)
|
||||
@@ -262,8 +262,8 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
int cWidth, cHeight;
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
cWidth = connectedMapHeader->mapLayout->width;
|
||||
cHeight = connectedMapHeader->mapLayout->height;
|
||||
y = offset + 7;
|
||||
x2 = cWidth - 7;
|
||||
if (y < 0)
|
||||
@@ -308,8 +308,8 @@ void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
int cHeight;
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
x = mapHeader->mapData->width + 7;
|
||||
cHeight = connectedMapHeader->mapLayout->height;
|
||||
x = mapHeader->mapLayout->width + 7;
|
||||
y = offset + 7;
|
||||
if (y < 0)
|
||||
{
|
||||
@@ -369,10 +369,10 @@ u8 MapGridGetZCoordAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
border = gMapHeader.mapData->border;
|
||||
border = gMapHeader.mapLayout->border;
|
||||
i = (x + 1) & 1;
|
||||
i += ((y + 1) & 1) * 2;
|
||||
block = gMapHeader.mapData->border[i];
|
||||
block = gMapHeader.mapLayout->border[i];
|
||||
block |= 0xc00;
|
||||
}
|
||||
|
||||
@@ -397,10 +397,10 @@ u8 MapGridIsImpassableAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
border = gMapHeader.mapData->border;
|
||||
border = gMapHeader.mapLayout->border;
|
||||
i = (x + 1) & 1;
|
||||
i += ((y + 1) & 1) * 2;
|
||||
block = gMapHeader.mapData->border[i];
|
||||
block = gMapHeader.mapLayout->border[i];
|
||||
block |= 0xc00;
|
||||
}
|
||||
if (block == 0x3ff)
|
||||
@@ -415,7 +415,7 @@ u32 MapGridGetMetatileIdAt(int x, int y)
|
||||
u16 block;
|
||||
int i;
|
||||
int j;
|
||||
struct MapData const *mapData;
|
||||
struct MapLayout const *mapLayout;
|
||||
u16 *border;
|
||||
u16 block2;
|
||||
|
||||
@@ -426,17 +426,17 @@ u32 MapGridGetMetatileIdAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
mapData = gMapHeader.mapData;
|
||||
mapLayout = gMapHeader.mapLayout;
|
||||
i = (x + 1) & 1;
|
||||
i += ((y + 1) & 1) * 2;
|
||||
block = mapData->border[i] | 0xc00;
|
||||
block = mapLayout->border[i] | 0xc00;
|
||||
}
|
||||
if (block == 0x3ff)
|
||||
{
|
||||
border = gMapHeader.mapData->border;
|
||||
border = gMapHeader.mapLayout->border;
|
||||
j = (x + 1) & 1;
|
||||
j += ((y + 1) & 1) * 2;
|
||||
block2 = gMapHeader.mapData->border[j];
|
||||
block2 = gMapHeader.mapLayout->border[j];
|
||||
block2 |= 0xc00;
|
||||
return block2 & block;
|
||||
}
|
||||
@@ -484,12 +484,12 @@ u16 GetBehaviorByMetatileId(u16 metatile)
|
||||
u16 *attributes;
|
||||
if (metatile <= 0x1ff)
|
||||
{
|
||||
attributes = gMapHeader.mapData->primaryTileset->metatileAttributes;
|
||||
attributes = gMapHeader.mapLayout->primaryTileset->metatileAttributes;
|
||||
return attributes[metatile];
|
||||
}
|
||||
else if (metatile <= 0x3ff)
|
||||
{
|
||||
attributes = gMapHeader.mapData->secondaryTileset->metatileAttributes;
|
||||
attributes = gMapHeader.mapLayout->secondaryTileset->metatileAttributes;
|
||||
return attributes[metatile - 0x200];
|
||||
}
|
||||
else
|
||||
@@ -555,7 +555,7 @@ void mapdata_from_sav2(void)
|
||||
{
|
||||
if (i == y && i != 0)
|
||||
a0 = 0;
|
||||
else if (i == y + 13 && i != gMapHeader.mapData->height - 1)
|
||||
else if (i == y + 13 && i != gMapHeader.mapLayout->height - 1)
|
||||
a0 = 1;
|
||||
else
|
||||
a0 = -1;
|
||||
@@ -571,7 +571,7 @@ void mapdata_from_sav2(void)
|
||||
{
|
||||
if (y != 0)
|
||||
sub_80D423C(j, y - 1);
|
||||
if (i < gMapHeader.mapData->height - 1)
|
||||
if (i < gMapHeader.mapLayout->height - 1)
|
||||
sub_80D42B8(j, y + 13);
|
||||
}
|
||||
sav2_mapdata_clear();
|
||||
@@ -636,7 +636,7 @@ void sub_80885C4(u8 a1)
|
||||
|
||||
int GetMapBorderIdAt(int x, int y)
|
||||
{
|
||||
struct MapData const *mapData;
|
||||
struct MapLayout const *mapLayout;
|
||||
u16 block, block2;
|
||||
int i, j;
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
@@ -652,10 +652,10 @@ int GetMapBorderIdAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
mapData = gMapHeader.mapData;
|
||||
mapLayout = gMapHeader.mapLayout;
|
||||
j = (x + 1) & 1;
|
||||
j += ((y + 1) & 1) * 2;
|
||||
block2 = 0xc00 | mapData->border[j];
|
||||
block2 = 0xc00 | mapLayout->border[j];
|
||||
if (block2 == 0x3ff)
|
||||
{
|
||||
goto fail;
|
||||
@@ -732,7 +732,7 @@ void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
|
||||
gSaveBlock1Ptr->pos.y -= connection->offset;
|
||||
break;
|
||||
case CONNECTION_WEST:
|
||||
gSaveBlock1Ptr->pos.x = mapHeader->mapData->width;
|
||||
gSaveBlock1Ptr->pos.x = mapHeader->mapLayout->width;
|
||||
gSaveBlock1Ptr->pos.y -= connection->offset;
|
||||
break;
|
||||
case CONNECTION_SOUTH:
|
||||
@@ -741,7 +741,7 @@ void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
|
||||
break;
|
||||
case CONNECTION_NORTH:
|
||||
gSaveBlock1Ptr->pos.x -= connection->offset;
|
||||
gSaveBlock1Ptr->pos.y = mapHeader->mapData->height;
|
||||
gSaveBlock1Ptr->pos.y = mapHeader->mapLayout->height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -800,10 +800,10 @@ bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
case CONNECTION_NORTH:
|
||||
return sub_8088A0C(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset);
|
||||
return sub_8088A0C(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset);
|
||||
case CONNECTION_WEST:
|
||||
case CONNECTION_EAST:
|
||||
return sub_8088A0C(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset);
|
||||
return sub_8088A0C(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -841,10 +841,10 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
case CONNECTION_NORTH:
|
||||
return sub_8088A38(x - connection->offset, mapHeader->mapData->width);
|
||||
return sub_8088A38(x - connection->offset, mapHeader->mapLayout->width);
|
||||
case CONNECTION_WEST:
|
||||
case CONNECTION_EAST:
|
||||
return sub_8088A38(y - connection->offset, mapHeader->mapData->height);
|
||||
return sub_8088A38(y - connection->offset, mapHeader->mapLayout->height);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -868,9 +868,9 @@ struct MapConnection *sub_8088A8C(s16 x, s16 y)
|
||||
direction = connection->direction;
|
||||
if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE)
|
||||
|| (direction == CONNECTION_NORTH && y > 6)
|
||||
|| (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7)
|
||||
|| (direction == CONNECTION_SOUTH && y < gMapHeader.mapLayout->height + 7)
|
||||
|| (direction == CONNECTION_WEST && x > 6)
|
||||
|| (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7))
|
||||
|| (direction == CONNECTION_EAST && x < gMapHeader.mapLayout->width + 7))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -990,45 +990,45 @@ void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u1
|
||||
}
|
||||
}
|
||||
|
||||
void copy_map_tileset1_to_vram(struct MapData const *mapData)
|
||||
void copy_map_tileset1_to_vram(struct MapLayout const *mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram(mapData->primaryTileset, 0x200, 0);
|
||||
copy_tileset_patterns_to_vram(mapLayout->primaryTileset, 0x200, 0);
|
||||
}
|
||||
|
||||
void copy_map_tileset2_to_vram(struct MapData const *mapData)
|
||||
void copy_map_tileset2_to_vram(struct MapLayout const *mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram(mapData->secondaryTileset, 0x200, 0x200);
|
||||
copy_tileset_patterns_to_vram(mapLayout->secondaryTileset, 0x200, 0x200);
|
||||
}
|
||||
|
||||
void copy_map_tileset2_to_vram_2(struct MapData const *mapData)
|
||||
void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram2(mapData->secondaryTileset, 0x200, 0x200);
|
||||
copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, 0x200, 0x200);
|
||||
}
|
||||
|
||||
void apply_map_tileset1_palette(struct MapData const *mapData)
|
||||
void apply_map_tileset1_palette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
apply_map_tileset_palette(mapData->primaryTileset, 0, 0xC0);
|
||||
apply_map_tileset_palette(mapLayout->primaryTileset, 0, 0xC0);
|
||||
}
|
||||
|
||||
void apply_map_tileset2_palette(struct MapData const *mapData)
|
||||
void apply_map_tileset2_palette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
apply_map_tileset_palette(mapData->secondaryTileset, 0x60, 0xE0);
|
||||
apply_map_tileset_palette(mapLayout->secondaryTileset, 0x60, 0xE0);
|
||||
}
|
||||
|
||||
void copy_map_tileset1_tileset2_to_vram(struct MapData const *mapData)
|
||||
void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout)
|
||||
{
|
||||
if (mapData)
|
||||
if (mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram2(mapData->primaryTileset, 0x200, 0);
|
||||
copy_tileset_patterns_to_vram2(mapData->secondaryTileset, 0x200, 0x200);
|
||||
copy_tileset_patterns_to_vram2(mapLayout->primaryTileset, 0x200, 0);
|
||||
copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, 0x200, 0x200);
|
||||
}
|
||||
}
|
||||
|
||||
void apply_map_tileset1_tileset2_palette(struct MapData const *mapData)
|
||||
void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
if (mapData)
|
||||
if (mapLayout)
|
||||
{
|
||||
apply_map_tileset1_palette(mapData);
|
||||
apply_map_tileset2_palette(mapData);
|
||||
apply_map_tileset1_palette(mapLayout);
|
||||
apply_map_tileset2_palette(mapLayout);
|
||||
}
|
||||
}
|
||||
|
||||
16
src/item.c
16
src/item.c
@@ -845,8 +845,8 @@ u16 CountTotalItemQuantityInBag(u16 itemId)
|
||||
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count)
|
||||
{
|
||||
u8 i;
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
|
||||
{
|
||||
@@ -867,8 +867,8 @@ static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count)
|
||||
static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count)
|
||||
{
|
||||
u8 i;
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
|
||||
{
|
||||
@@ -890,8 +890,8 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16));
|
||||
u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8));
|
||||
@@ -963,8 +963,8 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
i = gUnknown_0203CF30[3] + gUnknown_0203CF30[4];
|
||||
if (items[i] == itemId && quantities[i] >= count)
|
||||
|
||||
@@ -424,23 +424,23 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
|
||||
case 2:
|
||||
localOffset = connection->offset + 7;
|
||||
localX = x - localOffset;
|
||||
localLength = mapHeader->mapData->height - 7;
|
||||
localLength = mapHeader->mapLayout->height - 7;
|
||||
localY = localLength + y; // additions are reversed for some reason
|
||||
break;
|
||||
case 1:
|
||||
localOffset = connection->offset + 7;
|
||||
localX = x - localOffset;
|
||||
localLength = gMapHeader.mapData->height + 7;
|
||||
localLength = gMapHeader.mapLayout->height + 7;
|
||||
localY = y - localLength;
|
||||
break;
|
||||
case 3:
|
||||
localLength = mapHeader->mapData->width - 7;
|
||||
localLength = mapHeader->mapLayout->width - 7;
|
||||
localX = localLength + x; // additions are reversed for some reason
|
||||
localOffset = connection->offset + 7;
|
||||
localY = y - localOffset;
|
||||
break;
|
||||
case 4:
|
||||
localLength = gMapHeader.mapData->width + 7;
|
||||
localLength = gMapHeader.mapLayout->width + 7;
|
||||
localX = x - localLength;
|
||||
localOffset = connection->offset + 7;
|
||||
localY = y - localOffset;
|
||||
@@ -455,8 +455,8 @@ void sub_80FD7C8(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
s16 curX, curY;
|
||||
s16 width = gMapHeader.mapData->width + 7;
|
||||
s16 height = gMapHeader.mapData->height + 7;
|
||||
s16 width = gMapHeader.mapLayout->width + 7;
|
||||
s16 height = gMapHeader.mapLayout->height + 7;
|
||||
|
||||
s16 var1 = 7;
|
||||
s16 var2 = 7;
|
||||
|
||||
@@ -228,7 +228,7 @@ static void ShowMapNamePopUpWindow(void)
|
||||
|
||||
if(InBattlePyramid())
|
||||
{
|
||||
if(gMapHeader.mapDataId == 0x17A)
|
||||
if(gMapHeader.mapLayoutId == 0x17A)
|
||||
{
|
||||
withoutPrefixPtr = &(mapDisplayHeader[3]);
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7];
|
||||
@@ -236,7 +236,7 @@ static void ShowMapNamePopUpWindow(void)
|
||||
else
|
||||
{
|
||||
withoutPrefixPtr = &(mapDisplayHeader[3]);
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->battlePyramidWildHeaderId];
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.field_CB2];
|
||||
}
|
||||
StringCopy(withoutPrefixPtr, mapDisplayHeaderSource);
|
||||
}
|
||||
|
||||
@@ -31,11 +31,9 @@ extern u8 gUnknown_030060B0;
|
||||
// TODO: replace those declarations with file headers
|
||||
extern u16 GetGeneratedTrainerIdLower(void);
|
||||
extern void ClearContestWinnerPicsInContestHall(void);
|
||||
extern void warp_in(void);
|
||||
extern void sub_80BB358(void);
|
||||
extern void ResetBagScrollPositions(void);
|
||||
extern void ResetPokedex(void);
|
||||
extern void sub_8084400(void);
|
||||
extern void ResetGabbyAndTy(void);
|
||||
extern void ResetSecretBases(void);
|
||||
extern void ResetLinkContestBoolean(void);
|
||||
@@ -58,6 +56,19 @@ extern void SetBerryPowder(u32* powder, u32 newValue);
|
||||
|
||||
extern const u8 EventScript_2715DE[];
|
||||
|
||||
// this file's functions
|
||||
static void ClearFrontierRecord(void);
|
||||
static void WarpToTruck(void);
|
||||
static void ResetMiniGamesResults(void);
|
||||
|
||||
// const rom data
|
||||
static const struct ContestWinner sContestWinnerPicDummy =
|
||||
{
|
||||
.monName = _(""),
|
||||
.trainerName = _("")
|
||||
};
|
||||
|
||||
// code
|
||||
void WriteUnalignedWord(u32 var, u8 *dataPtr)
|
||||
{
|
||||
dataPtr[0] = var;
|
||||
@@ -78,14 +89,14 @@ void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom)
|
||||
copyTo[i] = copyFrom[i];
|
||||
}
|
||||
|
||||
void InitPlayerTrainerId(void)
|
||||
static void InitPlayerTrainerId(void)
|
||||
{
|
||||
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
|
||||
WriteUnalignedWord(trainerId, gSaveBlock2Ptr->playerTrainerId);
|
||||
}
|
||||
|
||||
// L=A isnt set here for some reason.
|
||||
void SetDefaultOptions(void)
|
||||
static void SetDefaultOptions(void)
|
||||
{
|
||||
gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
|
||||
gSaveBlock2Ptr->optionsWindowFrameType = 0;
|
||||
@@ -95,37 +106,31 @@ void SetDefaultOptions(void)
|
||||
gSaveBlock2Ptr->regionMapZoom = FALSE;
|
||||
}
|
||||
|
||||
void ClearPokedexFlags(void)
|
||||
static void ClearPokedexFlags(void)
|
||||
{
|
||||
gUnknown_030060B0 = 0;
|
||||
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
||||
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
||||
}
|
||||
|
||||
const struct ContestWinner gContestWinnerPicDummy = {
|
||||
.monName = _(""),
|
||||
.trainerName = _("")
|
||||
};
|
||||
|
||||
void ClearAllContestWinnerPics(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
ClearContestWinnerPicsInContestHall();
|
||||
for (i = 8; i < 13; i++)
|
||||
gSaveBlock1Ptr->contestWinners[i] = gContestWinnerPicDummy;
|
||||
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
|
||||
}
|
||||
|
||||
void sub_8084400(void)
|
||||
static void ClearFrontierRecord(void)
|
||||
{
|
||||
// probably clearing one struct for battle frontier
|
||||
CpuFill32(0, &gSaveBlock2Ptr->battleTower, 2272);
|
||||
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
||||
|
||||
gSaveBlock2Ptr->field_EE1[0][0] = EOS;
|
||||
gSaveBlock2Ptr->field_EE1[1][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[0][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[1][0] = EOS;
|
||||
}
|
||||
|
||||
void WarpToTruck(void)
|
||||
static void WarpToTruck(void)
|
||||
{
|
||||
Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
|
||||
warp_in();
|
||||
@@ -157,7 +162,7 @@ void NewGameInitData(void)
|
||||
ZeroPlayerPartyMons();
|
||||
ZeroEnemyPartyMons();
|
||||
ResetPokedex();
|
||||
sub_8084400();
|
||||
ClearFrontierRecord();
|
||||
ClearSav1();
|
||||
ClearMailData();
|
||||
gSaveBlock2Ptr->specialSaveWarp = 0;
|
||||
@@ -207,7 +212,7 @@ void NewGameInitData(void)
|
||||
ResetContestLinkResults();
|
||||
}
|
||||
|
||||
void ResetMiniGamesResults(void)
|
||||
static void ResetMiniGamesResults(void)
|
||||
{
|
||||
CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush));
|
||||
SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0);
|
||||
|
||||
@@ -81,7 +81,7 @@ extern const u8 gUnknown_082774EF[];
|
||||
extern const u8 gUnknown_08277509[];
|
||||
|
||||
// vars
|
||||
extern const struct MapData *const gMapAttributes[];
|
||||
extern const struct MapLayout *const gMapLayouts[];
|
||||
extern const struct MapHeader *const *const gMapGroups[];
|
||||
extern const s32 gMaxFlashLevel;
|
||||
extern const u16 gUnknown_82EC7C4[];
|
||||
@@ -97,16 +97,16 @@ extern void HealPlayerParty(void);
|
||||
extern void move_tilemap_camera_to_upper_left_corner(void);
|
||||
extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void);
|
||||
extern void DrawWholeMapView(void);
|
||||
extern void copy_map_tileset1_tileset2_to_vram(const struct MapData *);
|
||||
extern void apply_map_tileset1_tileset2_palette(const struct MapData *);
|
||||
extern void copy_map_tileset1_tileset2_to_vram(const struct MapLayout *);
|
||||
extern void apply_map_tileset1_tileset2_palette(const struct MapLayout *);
|
||||
extern void ResetCyclingRoadChallengeData(void);
|
||||
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 MapData *);
|
||||
extern void copy_map_tileset2_to_vram_2(const struct MapData *);
|
||||
extern void apply_map_tileset2_palette(const struct MapLayout *);
|
||||
extern void copy_map_tileset2_to_vram_2(const struct MapLayout *);
|
||||
extern void prev_quest_postbuffer_cursor_backup_reset(void);
|
||||
extern void ShowMapNamePopup(void);
|
||||
extern bool32 InTrainerHill(void);
|
||||
@@ -143,8 +143,8 @@ extern void sub_80EDB44(void);
|
||||
extern void sub_81D64C0(void);
|
||||
extern void sub_81BE6AC(void);
|
||||
extern void sub_8098128(void);
|
||||
extern void copy_map_tileset1_to_vram(const struct MapData *);
|
||||
extern void copy_map_tileset2_to_vram(const struct MapData *);
|
||||
extern void copy_map_tileset1_to_vram(const struct MapLayout *);
|
||||
extern void copy_map_tileset2_to_vram(const struct MapLayout *);
|
||||
extern void FieldUpdateBgTilemapScroll(void);
|
||||
extern void TransferTilesetAnimsBuffer(void);
|
||||
extern bool32 sub_81D5F48(void);
|
||||
@@ -558,17 +558,17 @@ void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType)
|
||||
static void mapdata_load_assets_to_gpu_and_full_redraw(void)
|
||||
{
|
||||
move_tilemap_camera_to_upper_left_corner();
|
||||
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
DrawWholeMapView();
|
||||
cur_mapheader_run_tileset_funcs_after_some_cpuset();
|
||||
}
|
||||
|
||||
const struct MapData *get_mapdata_header(void)
|
||||
const struct MapLayout *GetMapLayout(void)
|
||||
{
|
||||
u16 mapDataId = gSaveBlock1Ptr->mapDataId;
|
||||
if (mapDataId)
|
||||
return gMapAttributes[mapDataId - 1];
|
||||
u16 mapLayoutId = gSaveBlock1Ptr->mapLayoutId;
|
||||
if (mapLayoutId)
|
||||
return gMapLayouts[mapLayoutId - 1];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -625,14 +625,14 @@ void set_current_map_header_from_sav1_save_old_name(void)
|
||||
{
|
||||
sLastMapSectionId = gMapHeader.regionMapSectionId;
|
||||
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||
gSaveBlock1Ptr->mapDataId = gMapHeader.mapDataId;
|
||||
gMapHeader.mapData = get_mapdata_header();
|
||||
gSaveBlock1Ptr->mapLayoutId = gMapHeader.mapLayoutId;
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void LoadSaveblockMapHeader(void)
|
||||
{
|
||||
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||
gMapHeader.mapData = get_mapdata_header();
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void update_camera_pos_from_warpid(void)
|
||||
@@ -649,8 +649,8 @@ void update_camera_pos_from_warpid(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = gMapHeader.mapData->width / 2;
|
||||
gSaveBlock1Ptr->pos.y = gMapHeader.mapData->height / 2;
|
||||
gSaveBlock1Ptr->pos.x = gMapHeader.mapLayout->width / 2;
|
||||
gSaveBlock1Ptr->pos.y = gMapHeader.mapLayout->height / 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -837,8 +837,8 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
|
||||
Overworld_ClearSavedMusic();
|
||||
mapheader_run_script_with_tag_x3();
|
||||
not_trainer_hill_battle_pyramid();
|
||||
copy_map_tileset2_to_vram_2(gMapHeader.mapData);
|
||||
apply_map_tileset2_palette(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
|
||||
apply_map_tileset2_palette(gMapHeader.mapLayout);
|
||||
|
||||
for (paletteIndex = 6; paletteIndex < 13; paletteIndex++)
|
||||
ApplyWeatherGammaShiftToPal(paletteIndex);
|
||||
@@ -862,7 +862,7 @@ static void mli0_load_map(u32 a1)
|
||||
set_current_map_header_from_sav1_save_old_name();
|
||||
if (!(sUnknown_020322D8 & 1))
|
||||
{
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
sub_81AA1D8();
|
||||
else if (InTrainerHill())
|
||||
sub_81D5DF8();
|
||||
@@ -890,7 +890,7 @@ static void mli0_load_map(u32 a1)
|
||||
mapheader_run_script_with_tag_x3();
|
||||
UpdateLocationHistoryForRoamer();
|
||||
RoamerMoveToOtherLocationSet();
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
battle_pyramid_map_load_related(0);
|
||||
else if (InTrainerHill())
|
||||
trainer_hill_map_load_related();
|
||||
@@ -1016,10 +1016,10 @@ u8 Overworld_GetFlashLevel(void)
|
||||
return gSaveBlock1Ptr->flashLevel;
|
||||
}
|
||||
|
||||
void sub_8085524(u16 mapDataId)
|
||||
void sub_8085524(u16 mapLayoutId)
|
||||
{
|
||||
gSaveBlock1Ptr->mapDataId = mapDataId;
|
||||
gMapHeader.mapData = get_mapdata_header();
|
||||
gSaveBlock1Ptr->mapLayoutId = mapLayoutId;
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void sub_8085540(u8 var)
|
||||
@@ -1729,7 +1729,7 @@ void CB2_ContinueSavedGame(void)
|
||||
LoadSaveblockMapHeader();
|
||||
set_warp2_warp3_to_neg_1();
|
||||
trainerHillMapId = GetCurrentTrainerHillMapId();
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
sub_81AA2F8();
|
||||
else if (trainerHillMapId != 0 && trainerHillMapId != 6)
|
||||
sub_81D5F48();
|
||||
@@ -1739,7 +1739,7 @@ void CB2_ContinueSavedGame(void)
|
||||
UnfreezeEventObjects();
|
||||
DoTimeBasedEvents();
|
||||
sub_8084788();
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
battle_pyramid_map_load_related(1);
|
||||
else if (trainerHillMapId != 0)
|
||||
trainer_hill_map_load_related();
|
||||
@@ -1859,17 +1859,17 @@ static bool32 map_loading_iteration_3(u8 *state)
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 7:
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 8:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
@@ -1934,17 +1934,17 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 7:
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 8:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
@@ -2031,17 +2031,17 @@ static bool32 map_loading_iteration_2_link(u8 *state)
|
||||
(*state)++;
|
||||
break;
|
||||
case 5:
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 7:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1575,8 +1575,8 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv
|
||||
u8 language;
|
||||
u8 value;
|
||||
|
||||
if (gSaveBlock2Ptr->frontierChosenLvl != 0)
|
||||
level = BattleFrontierGetOpponentLvl(gSaveBlock2Ptr->frontierChosenLvl);
|
||||
if (gSaveBlock2Ptr->frontier.chosenLvl != 0)
|
||||
level = BattleFrontierGetOpponentLvl(gSaveBlock2Ptr->frontier.chosenLvl);
|
||||
else if (lvl50)
|
||||
level = 50;
|
||||
else
|
||||
@@ -5620,7 +5620,7 @@ void SetWildMonHeldItem(void)
|
||||
var1 = 20;
|
||||
var2 = 80;
|
||||
}
|
||||
if (gMapHeader.mapDataId == 0x1A4)
|
||||
if (gMapHeader.mapLayoutId == 0x1A4)
|
||||
{
|
||||
s32 alteringCaveId = GetWildMonTableIdInAlteringCave(species);
|
||||
if (alteringCaveId != 0)
|
||||
|
||||
@@ -197,10 +197,10 @@ static void SetSrcLookupPointers(void)
|
||||
sOldManSave = &gSaveBlock1Ptr->oldMan;
|
||||
sEasyChatPairsSave = gSaveBlock1Ptr->easyChatPairs;
|
||||
gUnknown_03001148 = &gUnknown_02039F9C;
|
||||
sBattleTowerSave = &gSaveBlock2Ptr->battleTower;
|
||||
sBattleTowerSave = &gSaveBlock2Ptr->frontier.battleTower;
|
||||
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
|
||||
gUnknown_03001154 = gSaveBlock2Ptr->field_DC;
|
||||
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->battleTower;
|
||||
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.battleTower;
|
||||
}
|
||||
|
||||
static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
|
||||
@@ -1625,24 +1625,24 @@ void sub_80E8260(struct UnkRecordMixingStruct2 *dst)
|
||||
{
|
||||
dst->field_120[j].language = GAME_LANGUAGE;
|
||||
CopyUnalignedWord(dst->field_120[j].playerId1, gSaveBlock2Ptr->playerTrainerId);
|
||||
CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->field_EF1[j]);
|
||||
CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||
StringCopy(dst->field_120[j].playerName1, gSaveBlock2Ptr->playerName);
|
||||
StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->field_EE1[j]);
|
||||
StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->field_CF0[i];
|
||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->field_CF4[i];
|
||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->field_CF8[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->field_D14[i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->field_DD0[i];
|
||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->field_DDE[i];
|
||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->field_DEA[i];
|
||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->field_E08[i];
|
||||
dst->field_0[8][i].field_4 = gSaveBlock2Ptr->field_E1E[i];
|
||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i];
|
||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i];
|
||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[i];
|
||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i];
|
||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i];
|
||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i];
|
||||
dst->field_0[8][i].field_4 = gSaveBlock2Ptr->frontier.field_E1E[i];
|
||||
|
||||
dst->field_120[i].field_8 = gSaveBlock2Ptr->field_CFC[i];
|
||||
dst->field_120[i].field_8 = gSaveBlock2Ptr->frontier.field_CFC[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1293,7 +1293,7 @@ static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst)
|
||||
|
||||
static void CB2_RecordedBattleEnd(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontierChosenLvl = sUnknown_0203C7AD;
|
||||
gSaveBlock2Ptr->frontier.chosenLvl = sUnknown_0203C7AD;
|
||||
gBattleOutcome = 0;
|
||||
gBattleTypeFlags = 0;
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
@@ -1353,7 +1353,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
|
||||
gTrainerBattleOpponent_B = src->opponentB;
|
||||
gPartnerTrainerId = src->partnerId;
|
||||
gUnknown_0203C7B4 = src->field_4FA;
|
||||
sUnknown_0203C7AD = gSaveBlock2Ptr->frontierChosenLvl;
|
||||
sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.chosenLvl;
|
||||
sFrontierFacility = src->field_4FD;
|
||||
sUnknown_0203C7AF = src->field_4FE;
|
||||
sBattleStyle = src->battleStyle;
|
||||
@@ -1375,7 +1375,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
|
||||
sUnknown_0203CCDC[i] = src->field_50E[i];
|
||||
}
|
||||
|
||||
gSaveBlock2Ptr->frontierChosenLvl = src->field_4FC;
|
||||
gSaveBlock2Ptr->frontier.chosenLvl = src->field_4FC;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
|
||||
@@ -891,8 +891,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
case 6:
|
||||
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = FALSE;
|
||||
mapWidth = gMapHeader.mapData->width;
|
||||
mapHeight = gMapHeader.mapData->height;
|
||||
mapWidth = gMapHeader.mapLayout->width;
|
||||
mapHeight = gMapHeader.mapLayout->height;
|
||||
x = gSaveBlock1Ptr->pos.x;
|
||||
y = gSaveBlock1Ptr->pos.y;
|
||||
if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
|
||||
@@ -907,8 +907,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
mapHeight = mapHeader->mapData->height;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = gSaveBlock1Ptr->warp4.x;
|
||||
y = gSaveBlock1Ptr->warp4.y;
|
||||
}
|
||||
@@ -926,8 +926,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
mapHeight = mapHeader->mapData->height;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = gSaveBlock1Ptr->warp2.x;
|
||||
y = gSaveBlock1Ptr->warp2.y;
|
||||
break;
|
||||
@@ -953,8 +953,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
{
|
||||
gRegionMap->playerIsInCave = FALSE;
|
||||
}
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
mapHeight = mapHeader->mapData->height;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = storedWarp->x;
|
||||
y = storedWarp->y;
|
||||
break;
|
||||
@@ -1068,14 +1068,14 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
|
||||
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width;
|
||||
dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width;
|
||||
if (dimensionScale == 0)
|
||||
dimensionScale = 1;
|
||||
x = xOnMap / dimensionScale;
|
||||
if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
|
||||
x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
|
||||
|
||||
dimensionScale = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height;
|
||||
dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height;
|
||||
if (dimensionScale == 0)
|
||||
dimensionScale = 1;
|
||||
y = yOnMap / dimensionScale;
|
||||
|
||||
@@ -246,16 +246,16 @@ void sub_80E8C98(void)
|
||||
|
||||
void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile)
|
||||
{
|
||||
const struct MapData *mapData;
|
||||
const struct MapLayout *mapLayout;
|
||||
s16 x;
|
||||
s16 y;
|
||||
|
||||
mapData = gMapHeader.mapData;
|
||||
for (y = 0; y < mapData->height; y ++)
|
||||
mapLayout = gMapHeader.mapLayout;
|
||||
for (y = 0; y < mapLayout->height; y ++)
|
||||
{
|
||||
for (x = 0; x < mapData->width; x ++)
|
||||
for (x = 0; x < mapLayout->width; x ++)
|
||||
{
|
||||
if ((mapData->map[y * mapData->width + x] & 0x3ff) == tile)
|
||||
if ((mapLayout->map[y * mapLayout->width + x] & 0x3ff) == tile)
|
||||
{
|
||||
*xPtr = x;
|
||||
*yPtr = y;
|
||||
|
||||
@@ -288,14 +288,14 @@ static void BuildNormalStartMenu(void)
|
||||
{
|
||||
AddStartMenuAction(MENU_ACTION_POKEMON);
|
||||
}
|
||||
|
||||
|
||||
AddStartMenuAction(MENU_ACTION_BAG);
|
||||
|
||||
if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE)
|
||||
{
|
||||
AddStartMenuAction(MENU_ACTION_POKENAV);
|
||||
}
|
||||
|
||||
|
||||
AddStartMenuAction(MENU_ACTION_PLAYER);
|
||||
AddStartMenuAction(MENU_ACTION_SAVE);
|
||||
AddStartMenuAction(MENU_ACTION_OPTION);
|
||||
@@ -322,7 +322,7 @@ static void BuildLinkModeStartMenu(void)
|
||||
{
|
||||
AddStartMenuAction(MENU_ACTION_POKENAV);
|
||||
}
|
||||
|
||||
|
||||
AddStartMenuAction(MENU_ACTION_PLAYER_LINK);
|
||||
AddStartMenuAction(MENU_ACTION_OPTION);
|
||||
AddStartMenuAction(MENU_ACTION_EXIT);
|
||||
@@ -384,18 +384,14 @@ static void ShowSafariBallsWindow(void)
|
||||
|
||||
static void ShowPyramidFloorWindow(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->field_CAA[4] == 7) // TODO: fix location
|
||||
{
|
||||
if (gSaveBlock2Ptr->frontier.field_CB2 == 7)
|
||||
sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2);
|
||||
}
|
||||
|
||||
PutWindowTilemap(sBattlePyramidFloorWindowId);
|
||||
NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
|
||||
StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->field_CAA[4]]);
|
||||
StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.field_CB2]);
|
||||
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
|
||||
PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
|
||||
CopyWindowToVram(sBattlePyramidFloorWindowId, 2);
|
||||
@@ -419,7 +415,7 @@ static void RemoveExtraStartMenuWindows(void)
|
||||
static bool32 PrintStartMenuActions(s8 *pIndex, u32 count)
|
||||
{
|
||||
s8 index = *pIndex;
|
||||
|
||||
|
||||
do
|
||||
{
|
||||
if (sStartMenuItems[sCurrentStartMenuActions[index]].func.u8_void == StartMenuPlayerNameCallback) {
|
||||
@@ -444,11 +440,11 @@ static bool32 PrintStartMenuActions(s8 *pIndex, u32 count)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 InitStartMenuStep(void)
|
||||
static bool32 InitStartMenuStep(void)
|
||||
{
|
||||
s8 value = sUnknown_02037619[0];
|
||||
|
||||
switch (value)
|
||||
switch (value)
|
||||
{
|
||||
case 0:
|
||||
sUnknown_02037619[0]++;
|
||||
@@ -468,14 +464,14 @@ static bool32 InitStartMenuStep(void)
|
||||
{
|
||||
ShowSafariBallsWindow();
|
||||
}
|
||||
if (InBattlePyramid() != FALSE)
|
||||
if (InBattlePyramid() != FALSE)
|
||||
{
|
||||
ShowPyramidFloorWindow();
|
||||
}
|
||||
sUnknown_02037619[0]++;
|
||||
break;
|
||||
case 4:
|
||||
if (PrintStartMenuActions(&sUnknown_02037619[1], 2) == FALSE)
|
||||
if (PrintStartMenuActions(&sUnknown_02037619[1], 2) == FALSE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -515,7 +511,7 @@ static void CreateStartMenuTask(TaskFunc followupFunc)
|
||||
SetTaskFuncWithFollowupFunc(taskId, StartMenuTask, followupFunc);
|
||||
}
|
||||
|
||||
static bool8 sub_809FA00(void)
|
||||
static bool8 sub_809FA00(void)
|
||||
{
|
||||
if (InitStartMenuStep() == FALSE)
|
||||
{
|
||||
@@ -537,7 +533,7 @@ void sub_809FA34(u8 taskId) // Referenced in field_screen.s and rom_8011DC0.s
|
||||
{
|
||||
struct Task* task = &gTasks[taskId];
|
||||
|
||||
switch(task->data[0])
|
||||
switch(task->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (InUnionRoom() == TRUE)
|
||||
@@ -576,13 +572,13 @@ static bool8 HandleStartMenuInput(void)
|
||||
PlaySE(SE_SELECT);
|
||||
sStartMenuCursorPos = MoveMenuCursor(-1);
|
||||
}
|
||||
|
||||
|
||||
if (gMain.newKeys & DPAD_DOWN)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sStartMenuCursorPos = MoveMenuCursor(1);
|
||||
}
|
||||
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
@@ -592,20 +588,20 @@ static bool8 HandleStartMenuInput(void)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gMenuCallback = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func.u8_void;
|
||||
|
||||
if (gMenuCallback != StartMenuSaveCallback
|
||||
|
||||
if (gMenuCallback != StartMenuSaveCallback
|
||||
&& gMenuCallback != StartMenuExitCallback
|
||||
&& gMenuCallback != StartMenuSafariZoneRetireCallback
|
||||
&& gMenuCallback != StartMenuBattlePyramidRetireCallback)
|
||||
{
|
||||
FadeScreen(1, 0);
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
if (gMain.newKeys & (START_BUTTON | B_BUTTON))
|
||||
{
|
||||
RemoveExtraStartMenuWindows();
|
||||
@@ -625,10 +621,10 @@ static bool8 StartMenuPokedexCallback(void)
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
SetMainCallback2(sub_80BB534); // Display pokedex
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -640,7 +636,7 @@ static bool8 StartMenuPokemonCallback(void)
|
||||
RemoveExtraStartMenuWindows();
|
||||
overworld_free_bg_tilemaps();
|
||||
SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -693,7 +689,7 @@ static bool8 StartMenuPlayerNameCallback(void)
|
||||
{
|
||||
sub_80C51C4(CB2_ReturnToFieldWithOpenMenu); // Display frontier pass
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
sub_80C4DDC(CB2_ReturnToFieldWithOpenMenu); // Display trainer card
|
||||
}
|
||||
@@ -736,7 +732,7 @@ static bool8 StartMenuExitCallback(void)
|
||||
{
|
||||
RemoveExtraStartMenuWindows();
|
||||
HideStartMenu(); // Hide start menu
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -911,7 +907,7 @@ static void SaveGameTask(u8 taskId)
|
||||
case SAVE_IN_PROGRESS:
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
@@ -972,7 +968,7 @@ static u8 SaveConfirmSaveCallback(void)
|
||||
{
|
||||
ShowSaveMessage(gText_BattlePyramidConfirmRest, SaveYesNoCallback);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
ShowSaveMessage(gText_ConfirmSave, SaveYesNoCallback);
|
||||
}
|
||||
@@ -1025,7 +1021,7 @@ static u8 SaveFileExistsCallback(void)
|
||||
{
|
||||
ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteNoCallback);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
ShowSaveMessage(gText_AlreadySavedFile, SaveConfirmOverwriteCallback);
|
||||
}
|
||||
@@ -1082,7 +1078,7 @@ static u8 SaveDoSaveCallback(void)
|
||||
saveStatus = TrySavingData(SAVE_OVERWRITE_DIFFERENT_FILE);
|
||||
gDifferentSaveFile = FALSE;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
saveStatus = TrySavingData(SAVE_NORMAL);
|
||||
}
|
||||
@@ -1118,7 +1114,7 @@ static u8 SaveReturnSuccessCallback(void)
|
||||
HideSaveInfoWindow();
|
||||
return SAVE_SUCCESS;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return SAVE_IN_PROGRESS;
|
||||
}
|
||||
@@ -1131,13 +1127,13 @@ static u8 SaveErrorCallback(void)
|
||||
PlaySE(SE_BOO);
|
||||
sSaveDialogCallback = SaveReturnErrorCallback;
|
||||
}
|
||||
|
||||
|
||||
return SAVE_IN_PROGRESS;
|
||||
}
|
||||
|
||||
static u8 SaveReturnErrorCallback(void)
|
||||
{
|
||||
if (!SaveErrorTimer())
|
||||
if (!SaveErrorTimer())
|
||||
{
|
||||
return SAVE_IN_PROGRESS;
|
||||
}
|
||||
@@ -1182,7 +1178,7 @@ static u8 BattlePyramidRetireInputCallback(void)
|
||||
sub_80A0014();
|
||||
return SAVE_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
return SAVE_IN_PROGRESS;
|
||||
}
|
||||
|
||||
@@ -1254,8 +1250,8 @@ static void sub_80A0550(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
FillWindowPixelBuffer(0, 17);
|
||||
AddTextPrinterParameterized(0,
|
||||
1,
|
||||
AddTextPrinterParameterized(0,
|
||||
1,
|
||||
gText_SavingDontTurnOffPower,
|
||||
255,
|
||||
NULL,
|
||||
@@ -1266,14 +1262,14 @@ static void sub_80A0550(u8 taskId)
|
||||
PutWindowTilemap(0);
|
||||
CopyWindowToVram(0, 3);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
|
||||
|
||||
if (gWirelessCommType != 0 && InUnionRoom())
|
||||
{
|
||||
if (sub_800A07C())
|
||||
{
|
||||
*step = 1;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
*step = 5;
|
||||
}
|
||||
@@ -1327,7 +1323,7 @@ static void ShowSaveInfoWindow(void)
|
||||
u8 color;
|
||||
u32 xOffset;
|
||||
u32 yOffset;
|
||||
|
||||
|
||||
if (!FlagGet(FLAG_SYS_POKEDEX_GET))
|
||||
{
|
||||
saveInfoWindow.height -= 2;
|
||||
@@ -1340,7 +1336,7 @@ static void ShowSaveInfoWindow(void)
|
||||
color = TEXT_COLOR_RED; // Red when female, blue when male.
|
||||
|
||||
if (gender == MALE)
|
||||
{
|
||||
{
|
||||
color = TEXT_COLOR_BLUE;
|
||||
}
|
||||
|
||||
@@ -1423,4 +1419,4 @@ void AppendToList(u8 *list, u8 *pos, u8 newEntry)
|
||||
{
|
||||
list[*pos] = newEntry;
|
||||
(*pos)++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -686,8 +686,8 @@ static void cur_mapheader_run_tileset1_func(void)
|
||||
sPrimaryTilesetCBCounter = 0;
|
||||
sPrimaryTilesetCBBufferSize = 0;
|
||||
sPrimaryTilesetCB = NULL;
|
||||
if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback)
|
||||
gMapHeader.mapData->primaryTileset->callback();
|
||||
if (gMapHeader.mapLayout->primaryTileset && gMapHeader.mapLayout->primaryTileset->callback)
|
||||
gMapHeader.mapLayout->primaryTileset->callback();
|
||||
}
|
||||
|
||||
static void cur_mapheader_run_tileset2_func(void)
|
||||
@@ -695,8 +695,8 @@ static void cur_mapheader_run_tileset2_func(void)
|
||||
sSecondaryTilesetCBCounter = 0;
|
||||
sSecondaryTilesetCBBufferSize = 0;
|
||||
sSecondaryTilesetCB = NULL;
|
||||
if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback)
|
||||
gMapHeader.mapData->secondaryTileset->callback();
|
||||
if (gMapHeader.mapLayout->secondaryTileset && gMapHeader.mapLayout->secondaryTileset->callback)
|
||||
gMapHeader.mapLayout->secondaryTileset->callback();
|
||||
}
|
||||
|
||||
void TilesetCb_General(void)
|
||||
|
||||
30
src/tv.c
30
src/tv.c
@@ -1541,12 +1541,12 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void)
|
||||
show->bravoTrainerTower.kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
|
||||
show->bravoTrainerTower.active = TRUE;
|
||||
StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2Ptr->playerName);
|
||||
StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2Ptr->field_BD8);
|
||||
show->bravoTrainerTower.species = gSaveBlock2Ptr->field_BD4;
|
||||
show->bravoTrainerTower.defeatedSpecies = gSaveBlock2Ptr->field_BD6;
|
||||
show->bravoTrainerTower.numFights = sub_8164FCC(gSaveBlock2Ptr->field_D07, 0);
|
||||
show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->field_D06;
|
||||
if (gSaveBlock2Ptr->field_D07 == 0)
|
||||
StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2Ptr->frontier.field_BD8);
|
||||
show->bravoTrainerTower.species = gSaveBlock2Ptr->frontier.field_BD4;
|
||||
show->bravoTrainerTower.defeatedSpecies = gSaveBlock2Ptr->frontier.field_BD6;
|
||||
show->bravoTrainerTower.numFights = sub_8164FCC(gSaveBlock2Ptr->frontier.field_D07, 0);
|
||||
show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->frontier.field_D06;
|
||||
if (gSaveBlock2Ptr->frontier.field_D07 == 0)
|
||||
{
|
||||
show->bravoTrainerTower.btLevel = 50;
|
||||
}
|
||||
@@ -1557,13 +1557,13 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void)
|
||||
show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004;
|
||||
tv_store_id_2x(show);
|
||||
show->bravoTrainerTower.language = gGameLanguage;
|
||||
if (show->bravoTrainerTower.language == LANGUAGE_JAPANESE || gSaveBlock2Ptr->field_BEB == LANGUAGE_JAPANESE)
|
||||
if (show->bravoTrainerTower.language == LANGUAGE_JAPANESE || gSaveBlock2Ptr->frontier.field_BEB == LANGUAGE_JAPANESE)
|
||||
{
|
||||
show->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
|
||||
}
|
||||
else
|
||||
{
|
||||
show->bravoTrainerTower.pokemonNameLanguage = gSaveBlock2Ptr->field_BEB;
|
||||
show->bravoTrainerTower.pokemonNameLanguage = gSaveBlock2Ptr->frontier.field_BEB;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1958,7 +1958,7 @@ void sub_80EDB44(void)
|
||||
show->rivalTrainer.dexCount = GetHoennPokedexCount(0x01);
|
||||
}
|
||||
show->rivalTrainer.location = gMapHeader.regionMapSectionId;
|
||||
show->rivalTrainer.mapDataId = gMapHeader.mapDataId;
|
||||
show->rivalTrainer.mapLayoutId = gMapHeader.mapLayoutId;
|
||||
show->rivalTrainer.nSilverSymbols = 0;
|
||||
show->rivalTrainer.nGoldSymbols = 0;
|
||||
for (i = 0; i < 7; i ++)
|
||||
@@ -1972,7 +1972,7 @@ void sub_80EDB44(void)
|
||||
show->rivalTrainer.nGoldSymbols ++;
|
||||
}
|
||||
}
|
||||
show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontierBattlePoints;
|
||||
show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontier.frontierBattlePoints;
|
||||
StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName);
|
||||
tv_store_id_3x(show);
|
||||
show->rivalTrainer.language = gGameLanguage;
|
||||
@@ -2010,7 +2010,7 @@ void sub_80EDCE8(void)
|
||||
show->treasureInvestigators.active = FALSE;
|
||||
show->treasureInvestigators.item = gSpecialVar_0x8005;
|
||||
show->treasureInvestigators.location = gMapHeader.regionMapSectionId;
|
||||
show->treasureInvestigators.mapDataId = gMapHeader.mapDataId;
|
||||
show->treasureInvestigators.mapLayoutId = gMapHeader.mapLayoutId;
|
||||
StringCopy(show->treasureInvestigators.playerName, gSaveBlock2Ptr->playerName);
|
||||
tv_store_id_3x(show);
|
||||
show->treasureInvestigators.language = gGameLanguage;
|
||||
@@ -2540,8 +2540,8 @@ void sub_80EE8C8(u16 winStreak, u8 facility)
|
||||
show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
|
||||
break;
|
||||
case 4:
|
||||
show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[0] - 1], MON_DATA_SPECIES, NULL);
|
||||
show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.field_CAA[0] - 1], MON_DATA_SPECIES, NULL);
|
||||
show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.field_CAA[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
break;
|
||||
}
|
||||
tv_store_id_3x(show);
|
||||
@@ -6261,7 +6261,7 @@ static void DoTVShowTodaysRivalTrainer(void)
|
||||
sTVShowState = 8;
|
||||
break;
|
||||
case MAPSEC_DYNAMIC:
|
||||
switch (show->rivalTrainer.mapDataId)
|
||||
switch (show->rivalTrainer.mapLayoutId)
|
||||
{
|
||||
case 0x115 ... 0x117:
|
||||
sTVShowState = 10;
|
||||
@@ -6460,7 +6460,7 @@ static void DoTVShowHoennTreasureInvestigators(void)
|
||||
StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
|
||||
if (show->treasureInvestigators.location == MAPSEC_DYNAMIC)
|
||||
{
|
||||
switch (show->treasureInvestigators.mapDataId)
|
||||
switch (show->treasureInvestigators.mapLayoutId)
|
||||
{
|
||||
case 0x115 ... 0x117:
|
||||
sTVShowState = 2;
|
||||
|
||||
@@ -3821,24 +3821,24 @@ const struct WildPokemonHeader gWildMonHeaders[] =
|
||||
.fishingMonsInfo = NULL,
|
||||
},
|
||||
{
|
||||
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RS_B1F),
|
||||
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RS_B1F),
|
||||
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
|
||||
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
|
||||
.landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
|
||||
.waterMonsInfo = NULL,
|
||||
.rockSmashMonsInfo = NULL,
|
||||
.fishingMonsInfo = NULL,
|
||||
},
|
||||
{
|
||||
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RS_B2F),
|
||||
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RS_B2F),
|
||||
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
|
||||
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
|
||||
.landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
|
||||
.waterMonsInfo = NULL,
|
||||
.rockSmashMonsInfo = NULL,
|
||||
.fishingMonsInfo = NULL,
|
||||
},
|
||||
{
|
||||
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RS_B3F),
|
||||
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RS_B3F),
|
||||
.mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
|
||||
.mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
|
||||
.landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
|
||||
.waterMonsInfo = NULL,
|
||||
.rockSmashMonsInfo = NULL,
|
||||
@@ -4613,7 +4613,7 @@ static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section)
|
||||
|
||||
for (yCur = yMin; yCur <= yMax; yCur++)
|
||||
{
|
||||
for (xCur = 0; xCur < gMapHeader.mapData->width; xCur++)
|
||||
for (xCur = 0; xCur < gMapHeader.mapLayout->width; xCur++)
|
||||
{
|
||||
u8 tileBehaviorId = MapGridGetMetatileBehaviorAt(xCur + 7, yCur + 7);
|
||||
if (MetatileBehavior_IsSurfableAndNotWaterfall(tileBehaviorId) == TRUE)
|
||||
@@ -4976,7 +4976,7 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar
|
||||
level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]);
|
||||
if (flags & WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(level))
|
||||
return FALSE;
|
||||
if (gMapHeader.mapDataId != 0x166 && flags & WILD_CHECK_KEEN_EYE && !IsAbilityAllowingEncounter(level))
|
||||
if (gMapHeader.mapLayoutId != 0x166 && flags & WILD_CHECK_KEEN_EYE && !IsAbilityAllowingEncounter(level))
|
||||
return FALSE;
|
||||
|
||||
CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level);
|
||||
@@ -5037,7 +5037,7 @@ static bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility)
|
||||
{
|
||||
u32 ability = GetMonAbility(&gPlayerParty[0]);
|
||||
|
||||
if (ability == ABILITY_STENCH && gMapHeader.mapDataId == 0x169)
|
||||
if (ability == ABILITY_STENCH && gMapHeader.mapLayoutId == 0x169)
|
||||
encounterRate = encounterRate * 3 / 4;
|
||||
else if (ability == ABILITY_STENCH)
|
||||
encounterRate /= 2;
|
||||
@@ -5085,7 +5085,7 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi
|
||||
headerId = GetCurrentMapWildMonHeaderId();
|
||||
if (headerId == 0xFFFF) // invalid
|
||||
{
|
||||
if (gMapHeader.mapDataId == 0x166)
|
||||
if (gMapHeader.mapLayoutId == 0x166)
|
||||
{
|
||||
headerId = GetBattlePikeWildMonHeaderId();
|
||||
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
|
||||
@@ -5100,9 +5100,9 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi
|
||||
BattleSetup_StartBattlePikeWildBattle();
|
||||
return TRUE;
|
||||
}
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
{
|
||||
headerId = gSaveBlock2Ptr->battlePyramidWildHeaderId;
|
||||
headerId = gSaveBlock2Ptr->frontier.field_CB2;
|
||||
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
|
||||
return FALSE;
|
||||
else if (DoWildEncounterRateTest(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
|
||||
@@ -5228,7 +5228,7 @@ bool8 SweetScentWildEncounter(void)
|
||||
headerId = GetCurrentMapWildMonHeaderId();
|
||||
if (headerId == 0xFFFF) // invalid
|
||||
{
|
||||
if (gMapHeader.mapDataId == 0x166)
|
||||
if (gMapHeader.mapLayoutId == 0x166)
|
||||
{
|
||||
headerId = GetBattlePikeWildMonHeaderId();
|
||||
if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
|
||||
@@ -5238,9 +5238,9 @@ bool8 SweetScentWildEncounter(void)
|
||||
BattleSetup_StartBattlePikeWildBattle();
|
||||
return TRUE;
|
||||
}
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
{
|
||||
headerId = gSaveBlock2Ptr->battlePyramidWildHeaderId;
|
||||
headerId = gSaveBlock2Ptr->frontier.field_CB2;
|
||||
if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
|
||||
return FALSE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user