6456009a44
V2: Fly, Warp, Flags, Vars, give items, give pkm 2 versions Improved cheats, reworked the vars system vars function now starts at VARS_START and end VARS_END Figured out how to display FieldMessages, reimplemented CheckSafeBlock, cleanup DebugAction_DestroyExtraWindow instead of multiple, renamed text variables cleanup + pokemon simple give pokemon complex nearly done Complex pkm works, items now with icons if statement cleanup alter build tools to include maps per map group Warp functionallity added hex value to flags and vars cleanup Credits
217 lines
5.5 KiB
C
217 lines
5.5 KiB
C
#include "global.h"
|
|
#include "new_game.h"
|
|
#include "random.h"
|
|
#include "pokemon.h"
|
|
#include "roamer.h"
|
|
#include "pokemon_size_record.h"
|
|
#include "script.h"
|
|
#include "lottery_corner.h"
|
|
#include "play_time.h"
|
|
#include "mauville_old_man.h"
|
|
#include "match_call.h"
|
|
#include "lilycove_lady.h"
|
|
#include "load_save.h"
|
|
#include "pokeblock.h"
|
|
#include "dewford_trend.h"
|
|
#include "berry.h"
|
|
#include "rtc.h"
|
|
#include "easy_chat.h"
|
|
#include "event_data.h"
|
|
#include "money.h"
|
|
#include "trainer_hill.h"
|
|
#include "tv.h"
|
|
#include "coins.h"
|
|
#include "text.h"
|
|
#include "overworld.h"
|
|
#include "mail.h"
|
|
#include "battle_records.h"
|
|
#include "item.h"
|
|
#include "pokedex.h"
|
|
#include "apprentice.h"
|
|
#include "frontier_util.h"
|
|
#include "constants/maps.h"
|
|
#include "pokedex.h"
|
|
#include "save.h"
|
|
#include "link_rfu.h"
|
|
#include "main.h"
|
|
#include "contest.h"
|
|
#include "item_menu.h"
|
|
#include "pokemon_storage_system.h"
|
|
#include "pokemon_jump.h"
|
|
#include "decoration_inventory.h"
|
|
#include "secret_base.h"
|
|
#include "player_pc.h"
|
|
#include "field_specials.h"
|
|
#include "berry_powder.h"
|
|
#include "mevent.h"
|
|
#include "union_room_chat.h"
|
|
|
|
extern const u8 EventScript_ResetAllMapFlags[];
|
|
|
|
// this file's functions
|
|
static void ClearFrontierRecord(void);
|
|
static void WarpToTruck(void);
|
|
static void ResetMiniGamesResults(void);
|
|
|
|
// EWRAM vars
|
|
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
|
|
EWRAM_DATA bool8 gEnableContestDebugging = FALSE;
|
|
|
|
// const rom data
|
|
static const struct ContestWinner sContestWinnerPicDummy =
|
|
{
|
|
.monName = _(""),
|
|
.trainerName = _("")
|
|
};
|
|
|
|
// code
|
|
void SetTrainerId(u32 trainerId, u8 *dst)
|
|
{
|
|
dst[0] = trainerId;
|
|
dst[1] = trainerId >> 8;
|
|
dst[2] = trainerId >> 16;
|
|
dst[3] = trainerId >> 24;
|
|
}
|
|
|
|
u32 GetTrainerId(u8 *trainerId)
|
|
{
|
|
return (trainerId[3] << 24) | (trainerId[2] << 16) | (trainerId[1] << 8) | (trainerId[0]);
|
|
}
|
|
|
|
void CopyTrainerId(u8 *dst, u8 *src)
|
|
{
|
|
s32 i;
|
|
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
|
dst[i] = src[i];
|
|
}
|
|
|
|
static void InitPlayerTrainerId(void)
|
|
{
|
|
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
|
|
SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId);
|
|
}
|
|
|
|
// L=A isnt set here for some reason.
|
|
static void SetDefaultOptions(void)
|
|
{
|
|
gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_FAST;
|
|
gSaveBlock2Ptr->optionsWindowFrameType = 0;
|
|
gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO;
|
|
gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT;
|
|
gSaveBlock2Ptr->optionsBattleSceneOff = FALSE;
|
|
gSaveBlock2Ptr->regionMapZoom = FALSE;
|
|
}
|
|
|
|
static void ClearPokedexFlags(void)
|
|
{
|
|
gUnusedPokedexU8 = 0;
|
|
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
|
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
|
}
|
|
|
|
void ClearAllContestWinnerPics(void)
|
|
{
|
|
s32 i;
|
|
|
|
ClearContestWinnerPicsInContestHall();
|
|
for (i = 8; i < 13; i++)
|
|
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
|
|
}
|
|
|
|
static void ClearFrontierRecord(void)
|
|
{
|
|
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
|
|
|
gSaveBlock2Ptr->frontier.opponentNames[0][0] = EOS;
|
|
gSaveBlock2Ptr->frontier.opponentNames[1][0] = EOS;
|
|
}
|
|
|
|
static void WarpToTruck(void)
|
|
{
|
|
SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), -1, -1, -1);
|
|
WarpIntoMap();
|
|
}
|
|
|
|
void Sav2_ClearSetDefault(void)
|
|
{
|
|
ClearSav2();
|
|
SetDefaultOptions();
|
|
}
|
|
|
|
void ResetMenuAndMonGlobals(void)
|
|
{
|
|
gDifferentSaveFile = 0;
|
|
ResetPokedexScrollPositions();
|
|
ZeroPlayerPartyMons();
|
|
ZeroEnemyPartyMons();
|
|
ResetBagScrollPositions();
|
|
ResetPokeblockScrollPositions();
|
|
}
|
|
|
|
void NewGameInitData(void)
|
|
{
|
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT)
|
|
RtcReset();
|
|
|
|
gDifferentSaveFile = 1;
|
|
gSaveBlock2Ptr->encryptionKey = 0;
|
|
ZeroPlayerPartyMons();
|
|
ZeroEnemyPartyMons();
|
|
ResetPokedex();
|
|
ClearFrontierRecord();
|
|
ClearSav1();
|
|
ClearMailData();
|
|
gSaveBlock2Ptr->specialSaveWarpFlags = 0;
|
|
gSaveBlock2Ptr->gcnLinkFlags = 0;
|
|
InitPlayerTrainerId();
|
|
PlayTimeCounter_Reset();
|
|
ClearPokedexFlags();
|
|
InitEventData();
|
|
ClearTVShowData();
|
|
ResetGabbyAndTy();
|
|
ClearSecretBases();
|
|
ClearBerryTrees();
|
|
SetMoney(&gSaveBlock1Ptr->money, 3000);
|
|
SetCoins(0);
|
|
ResetLinkContestBoolean();
|
|
ResetGameStats();
|
|
ClearAllContestWinnerPics();
|
|
ClearPlayerLinkBattleRecords();
|
|
InitSeedotSizeRecord();
|
|
InitLotadSizeRecord();
|
|
gPlayerPartyCount = 0;
|
|
ZeroPlayerPartyMons();
|
|
ResetPokemonStorageSystem();
|
|
ClearRoamerData();
|
|
ClearRoamerLocationData();
|
|
gSaveBlock1Ptr->registeredItem = 0;
|
|
ClearBag();
|
|
NewGameInitPCItems();
|
|
ClearPokeblocks();
|
|
ClearDecorationInventories();
|
|
InitEasyChatPhrases();
|
|
SetMauvilleOldMan();
|
|
InitDewfordTrend();
|
|
ResetFanClub();
|
|
ResetLotteryCorner();
|
|
WarpToTruck();
|
|
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
|
|
ResetMiniGamesResults();
|
|
InitUnionRoomChatRegisteredTexts();
|
|
InitLilycoveLady();
|
|
ResetAllApprenticeData();
|
|
ClearRankingHallRecords();
|
|
InitMatchCallCounters();
|
|
sub_801AFD8();
|
|
WipeTrainerNameRecords();
|
|
ResetTrainerHillResults();
|
|
ResetContestLinkResults();
|
|
}
|
|
|
|
static void ResetMiniGamesResults(void)
|
|
{
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush));
|
|
SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0);
|
|
ResetPokeJumpResults();
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults));
|
|
}
|