2017-09-03 21:50:17 +01:00
|
|
|
#include "global.h"
|
|
|
|
#include "new_game.h"
|
2017-12-05 18:27:33 +00:00
|
|
|
#include "random.h"
|
2017-09-07 18:45:32 +01:00
|
|
|
#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"
|
2019-02-08 17:48:51 +00:00
|
|
|
#include "match_call.h"
|
2017-09-07 18:45:32 +01:00
|
|
|
#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"
|
2019-01-13 19:50:08 +00:00
|
|
|
#include "trainer_hill.h"
|
2017-10-13 16:09:36 +01:00
|
|
|
#include "tv.h"
|
2017-09-07 18:45:32 +01:00
|
|
|
#include "coins.h"
|
2017-09-25 20:27:54 +01:00
|
|
|
#include "text.h"
|
2018-05-01 14:54:31 +01:00
|
|
|
#include "overworld.h"
|
|
|
|
#include "mail.h"
|
|
|
|
#include "battle_records.h"
|
2018-08-19 00:06:10 +01:00
|
|
|
#include "item.h"
|
|
|
|
#include "pokedex.h"
|
2018-10-14 16:00:41 +01:00
|
|
|
#include "apprentice.h"
|
2018-10-30 20:45:26 +00:00
|
|
|
#include "frontier_util.h"
|
2018-12-27 17:24:34 +00:00
|
|
|
#include "constants/maps.h"
|
2019-02-15 08:40:57 +00:00
|
|
|
#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"
|
2019-07-29 15:22:50 +01:00
|
|
|
#include "pokemon_jump.h"
|
2019-02-15 08:40:57 +00:00
|
|
|
#include "decoration_inventory.h"
|
|
|
|
#include "secret_base.h"
|
|
|
|
#include "player_pc.h"
|
|
|
|
#include "field_specials.h"
|
2019-03-24 19:45:09 +00:00
|
|
|
#include "berry_powder.h"
|
2019-03-24 23:13:32 +00:00
|
|
|
#include "mevent.h"
|
2019-03-28 00:09:12 +00:00
|
|
|
#include "union_room_chat.h"
|
2019-02-15 08:40:57 +00:00
|
|
|
|
|
|
|
extern const u8 EventScript_ResetAllMapFlags[];
|
2017-09-03 21:50:17 +01:00
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
// this file's functions
|
|
|
|
static void ClearFrontierRecord(void);
|
|
|
|
static void WarpToTruck(void);
|
|
|
|
static void ResetMiniGamesResults(void);
|
|
|
|
|
2018-11-19 00:03:14 +00:00
|
|
|
// EWRAM vars
|
|
|
|
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
|
2019-04-03 02:51:21 +01:00
|
|
|
EWRAM_DATA bool8 gEnableContestDebugging = FALSE;
|
2018-11-19 00:03:14 +00:00
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
// const rom data
|
|
|
|
static const struct ContestWinner sContestWinnerPicDummy =
|
|
|
|
{
|
|
|
|
.monName = _(""),
|
|
|
|
.trainerName = _("")
|
|
|
|
};
|
|
|
|
|
|
|
|
// code
|
2018-11-01 20:31:10 +00:00
|
|
|
void SetTrainerId(u32 trainerId, u8 *dst)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
2018-11-01 20:31:10 +00:00
|
|
|
dst[0] = trainerId;
|
|
|
|
dst[1] = trainerId >> 8;
|
|
|
|
dst[2] = trainerId >> 16;
|
|
|
|
dst[3] = trainerId >> 24;
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
2018-11-01 20:31:10 +00:00
|
|
|
u32 GetTrainerId(u8 *trainerId)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
2018-11-01 20:31:10 +00:00
|
|
|
return (trainerId[3] << 24) | (trainerId[2] << 16) | (trainerId[1] << 8) | (trainerId[0]);
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
2018-11-01 20:31:10 +00:00
|
|
|
void CopyTrainerId(u8 *dst, u8 *src)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
|
|
|
s32 i;
|
2019-09-08 17:21:24 +01:00
|
|
|
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
2018-11-01 20:31:10 +00:00
|
|
|
dst[i] = src[i];
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
static void InitPlayerTrainerId(void)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
|
|
|
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
|
2018-11-01 20:31:10 +00:00
|
|
|
SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId);
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// L=A isnt set here for some reason.
|
2018-06-17 11:30:09 +01:00
|
|
|
static void SetDefaultOptions(void)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
Implementation if Pyredrid and AsparagusEduardo debug menu plus huge rewrite and tons of additions
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
2020-09-25 23:51:02 +01:00
|
|
|
gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_FAST;
|
2017-09-03 21:50:17 +01:00
|
|
|
gSaveBlock2Ptr->optionsWindowFrameType = 0;
|
|
|
|
gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO;
|
|
|
|
gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT;
|
|
|
|
gSaveBlock2Ptr->optionsBattleSceneOff = FALSE;
|
|
|
|
gSaveBlock2Ptr->regionMapZoom = FALSE;
|
|
|
|
}
|
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
static void ClearPokedexFlags(void)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
2019-02-18 06:33:41 +00:00
|
|
|
gUnusedPokedexU8 = 0;
|
2017-09-03 21:50:17 +01:00
|
|
|
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++)
|
2018-06-17 11:30:09 +01:00
|
|
|
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
static void ClearFrontierRecord(void)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
2018-06-17 11:30:09 +01:00
|
|
|
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
2017-09-03 21:50:17 +01:00
|
|
|
|
2019-11-24 21:58:40 +00:00
|
|
|
gSaveBlock2Ptr->frontier.opponentNames[0][0] = EOS;
|
|
|
|
gSaveBlock2Ptr->frontier.opponentNames[1][0] = EOS;
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
static void WarpToTruck(void)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
2018-12-27 22:30:47 +00:00
|
|
|
SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), -1, -1, -1);
|
2018-09-04 23:31:37 +01:00
|
|
|
WarpIntoMap();
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
void Sav2_ClearSetDefault(void)
|
|
|
|
{
|
|
|
|
ClearSav2();
|
|
|
|
SetDefaultOptions();
|
|
|
|
}
|
|
|
|
|
2019-02-10 02:07:07 +00:00
|
|
|
void ResetMenuAndMonGlobals(void)
|
2017-09-03 21:50:17 +01:00
|
|
|
{
|
|
|
|
gDifferentSaveFile = 0;
|
2019-02-15 08:40:57 +00:00
|
|
|
ResetPokedexScrollPositions();
|
2017-09-03 21:50:17 +01:00
|
|
|
ZeroPlayerPartyMons();
|
|
|
|
ZeroEnemyPartyMons();
|
|
|
|
ResetBagScrollPositions();
|
2017-12-15 23:08:23 +00:00
|
|
|
ResetPokeblockScrollPositions();
|
2017-09-03 21:50:17 +01:00
|
|
|
}
|
2017-09-07 18:45:32 +01:00
|
|
|
|
2017-09-03 21:50:17 +01:00
|
|
|
void NewGameInitData(void)
|
|
|
|
{
|
2020-01-12 20:27:37 +00:00
|
|
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT)
|
2017-09-07 18:45:32 +01:00
|
|
|
RtcReset();
|
|
|
|
|
|
|
|
gDifferentSaveFile = 1;
|
|
|
|
gSaveBlock2Ptr->encryptionKey = 0;
|
|
|
|
ZeroPlayerPartyMons();
|
|
|
|
ZeroEnemyPartyMons();
|
|
|
|
ResetPokedex();
|
2018-06-17 11:30:09 +01:00
|
|
|
ClearFrontierRecord();
|
2017-09-07 18:45:32 +01:00
|
|
|
ClearSav1();
|
|
|
|
ClearMailData();
|
2018-12-27 22:30:47 +00:00
|
|
|
gSaveBlock2Ptr->specialSaveWarpFlags = 0;
|
2020-04-13 13:42:31 +01:00
|
|
|
gSaveBlock2Ptr->gcnLinkFlags = 0;
|
2017-09-07 18:45:32 +01:00
|
|
|
InitPlayerTrainerId();
|
|
|
|
PlayTimeCounter_Reset();
|
|
|
|
ClearPokedexFlags();
|
|
|
|
InitEventData();
|
|
|
|
ClearTVShowData();
|
|
|
|
ResetGabbyAndTy();
|
2019-04-05 22:11:24 +01:00
|
|
|
ClearSecretBases();
|
2017-09-07 18:45:32 +01:00
|
|
|
ClearBerryTrees();
|
|
|
|
SetMoney(&gSaveBlock1Ptr->money, 3000);
|
|
|
|
SetCoins(0);
|
|
|
|
ResetLinkContestBoolean();
|
|
|
|
ResetGameStats();
|
|
|
|
ClearAllContestWinnerPics();
|
2018-05-01 13:01:54 +01:00
|
|
|
ClearPlayerLinkBattleRecords();
|
2017-09-07 18:45:32 +01:00
|
|
|
InitSeedotSizeRecord();
|
|
|
|
InitLotadSizeRecord();
|
|
|
|
gPlayerPartyCount = 0;
|
|
|
|
ZeroPlayerPartyMons();
|
|
|
|
ResetPokemonStorageSystem();
|
|
|
|
ClearRoamerData();
|
|
|
|
ClearRoamerLocationData();
|
|
|
|
gSaveBlock1Ptr->registeredItem = 0;
|
|
|
|
ClearBag();
|
|
|
|
NewGameInitPCItems();
|
|
|
|
ClearPokeblocks();
|
|
|
|
ClearDecorationInventories();
|
|
|
|
InitEasyChatPhrases();
|
|
|
|
SetMauvilleOldMan();
|
|
|
|
InitDewfordTrend();
|
|
|
|
ResetFanClub();
|
|
|
|
ResetLotteryCorner();
|
|
|
|
WarpToTruck();
|
2019-02-15 08:40:57 +00:00
|
|
|
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
|
2017-09-07 18:45:32 +01:00
|
|
|
ResetMiniGamesResults();
|
2020-06-01 19:05:29 +01:00
|
|
|
InitUnionRoomChatRegisteredTexts();
|
2019-08-05 04:12:49 +01:00
|
|
|
InitLilycoveLady();
|
2018-12-05 14:31:01 +00:00
|
|
|
ResetAllApprenticeData();
|
|
|
|
ClearRankingHallRecords();
|
2019-01-03 01:07:47 +00:00
|
|
|
InitMatchCallCounters();
|
2018-12-05 14:31:01 +00:00
|
|
|
sub_801AFD8();
|
2019-02-15 08:40:57 +00:00
|
|
|
WipeTrainerNameRecords();
|
2019-01-13 19:50:08 +00:00
|
|
|
ResetTrainerHillResults();
|
2018-12-05 14:31:01 +00:00
|
|
|
ResetContestLinkResults();
|
2017-09-07 18:45:32 +01:00
|
|
|
}
|
2017-09-08 15:46:37 +01:00
|
|
|
|
2018-06-17 11:30:09 +01:00
|
|
|
static void ResetMiniGamesResults(void)
|
2017-09-08 15:46:37 +01:00
|
|
|
{
|
|
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush));
|
|
|
|
SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0);
|
|
|
|
ResetPokeJumpResults();
|
|
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults));
|
|
|
|
}
|