2017-09-03 22:50:17 +02:00
|
|
|
#include "global.h"
|
|
|
|
#include "new_game.h"
|
2017-12-05 19:27:33 +01:00
|
|
|
#include "random.h"
|
2017-09-07 19:45:32 +02: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"
|
|
|
|
#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"
|
2017-10-13 17:09:36 +02:00
|
|
|
#include "tv.h"
|
2017-09-07 19:45:32 +02:00
|
|
|
#include "coins.h"
|
2017-09-25 21:27:54 +02:00
|
|
|
#include "text.h"
|
2017-09-03 22:50:17 +02:00
|
|
|
|
|
|
|
extern u8 gPlayerPartyCount;
|
|
|
|
extern u8 gDifferentSaveFile;
|
|
|
|
extern u16 gSaveFileStatus;
|
|
|
|
extern u8 gUnknown_030060B0;
|
|
|
|
|
2017-09-07 19:45:32 +02:00
|
|
|
// TODO: replace those declarations with file headers
|
2017-09-03 22:50:17 +02:00
|
|
|
extern u16 GetGeneratedTrainerIdLower(void);
|
|
|
|
extern void ClearContestWinnerPicsInContestHall(void);
|
2017-10-12 09:06:19 +02:00
|
|
|
extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos);
|
2017-09-03 22:50:17 +02:00
|
|
|
extern void warp_in(void);
|
|
|
|
extern void sub_80BB358(void);
|
|
|
|
extern void ResetBagScrollPositions(void);
|
2017-09-07 19:45:32 +02:00
|
|
|
extern void ResetPokedex(void);
|
|
|
|
extern void sub_8084400(void);
|
|
|
|
extern void ClearMailData(void);
|
|
|
|
extern void ResetGabbyAndTy(void);
|
|
|
|
extern void ResetSecretBases(void);
|
|
|
|
extern void ResetLinkContestBoolean(void);
|
|
|
|
extern void ResetGameStats(void);
|
|
|
|
extern void sub_8052DA8(void);
|
2018-05-01 14:01:54 +02:00
|
|
|
extern void ClearPlayerLinkBattleRecords(void);
|
2017-09-07 19:45:32 +02:00
|
|
|
extern void ResetPokemonStorageSystem(void);
|
|
|
|
extern void ClearBag(void);
|
|
|
|
extern void NewGameInitPCItems(void);
|
|
|
|
extern void ClearDecorationInventories(void);
|
|
|
|
extern void ResetFanClub(void);
|
|
|
|
extern void copy_strings_to_sav1(void);
|
|
|
|
extern void sub_819FAA0(void);
|
|
|
|
extern void sub_81A4B14(void);
|
|
|
|
extern void sub_8195E10(void);
|
|
|
|
extern void sub_801AFD8(void);
|
|
|
|
extern void sub_800E5AC(void);
|
|
|
|
extern void sub_81D54BC(void);
|
|
|
|
extern void ResetContestLinkResults(void);
|
2017-09-08 16:46:37 +02:00
|
|
|
extern void ResetPokeJumpResults(void);
|
|
|
|
extern void SetBerryPowder(u32* powder, u32 newValue);
|
2017-09-07 19:45:32 +02:00
|
|
|
|
2017-11-11 01:12:18 +01:00
|
|
|
extern u8 EventScript_2715DE[];
|
2017-09-03 22:50:17 +02:00
|
|
|
|
|
|
|
void WriteUnalignedWord(u32 var, u8 *dataPtr)
|
|
|
|
{
|
|
|
|
dataPtr[0] = var;
|
|
|
|
dataPtr[1] = var >> 8;
|
|
|
|
dataPtr[2] = var >> 16;
|
|
|
|
dataPtr[3] = var >> 24;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 ReadUnalignedWord(u8* dataPtr)
|
|
|
|
{
|
|
|
|
return (dataPtr[3] << 24) | (dataPtr[2] << 16) | (dataPtr[1] << 8) | (dataPtr[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom)
|
|
|
|
{
|
|
|
|
s32 i;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
copyTo[i] = copyFrom[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
void InitPlayerTrainerId(void)
|
|
|
|
{
|
|
|
|
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
|
|
|
|
WriteUnalignedWord(trainerId, gSaveBlock2Ptr->playerTrainerId);
|
|
|
|
}
|
|
|
|
|
|
|
|
// L=A isnt set here for some reason.
|
|
|
|
void SetDefaultOptions(void)
|
|
|
|
{
|
|
|
|
gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
|
|
|
|
gSaveBlock2Ptr->optionsWindowFrameType = 0;
|
|
|
|
gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO;
|
|
|
|
gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT;
|
|
|
|
gSaveBlock2Ptr->optionsBattleSceneOff = FALSE;
|
|
|
|
gSaveBlock2Ptr->regionMapZoom = FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ClearPokedexFlags(void)
|
|
|
|
{
|
|
|
|
gUnknown_030060B0 = 0;
|
|
|
|
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
|
|
|
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
|
|
|
}
|
|
|
|
|
2017-09-25 21:27:54 +02:00
|
|
|
const struct ContestWinner gContestWinnerPicDummy = {
|
|
|
|
.monName = _(""),
|
|
|
|
.trainerName = _("")
|
|
|
|
};
|
2017-09-03 22:50:17 +02:00
|
|
|
|
|
|
|
void ClearAllContestWinnerPics(void)
|
|
|
|
{
|
|
|
|
s32 i;
|
|
|
|
|
|
|
|
ClearContestWinnerPicsInContestHall();
|
|
|
|
for (i = 8; i < 13; i++)
|
|
|
|
gSaveBlock1Ptr->contestWinners[i] = gContestWinnerPicDummy;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_8084400(void)
|
|
|
|
{
|
|
|
|
// probably clearing one struct for battle frontier
|
|
|
|
CpuFill32(0, gSaveBlock2Ptr->field_64C, 2272);
|
|
|
|
|
|
|
|
// those look like strings
|
|
|
|
gSaveBlock2Ptr->field_EE1 = 0xFF;
|
|
|
|
gSaveBlock2Ptr->field_EE9 = 0xFF;
|
|
|
|
}
|
|
|
|
|
|
|
|
void WarpToTruck(void)
|
|
|
|
{
|
2017-10-12 09:06:19 +02:00
|
|
|
Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
|
2017-09-03 22:50:17 +02:00
|
|
|
warp_in();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Sav2_ClearSetDefault(void)
|
|
|
|
{
|
|
|
|
ClearSav2();
|
|
|
|
SetDefaultOptions();
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_808447C(void)
|
|
|
|
{
|
|
|
|
gDifferentSaveFile = 0;
|
|
|
|
sub_80BB358();
|
|
|
|
ZeroPlayerPartyMons();
|
|
|
|
ZeroEnemyPartyMons();
|
|
|
|
ResetBagScrollPositions();
|
2017-12-16 00:08:23 +01:00
|
|
|
ResetPokeblockScrollPositions();
|
2017-09-03 22:50:17 +02:00
|
|
|
}
|
2017-09-07 19:45:32 +02:00
|
|
|
|
2017-09-03 22:50:17 +02:00
|
|
|
void NewGameInitData(void)
|
|
|
|
{
|
2017-09-07 19:45:32 +02:00
|
|
|
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
|
|
|
|
RtcReset();
|
|
|
|
|
|
|
|
gDifferentSaveFile = 1;
|
|
|
|
gSaveBlock2Ptr->encryptionKey = 0;
|
|
|
|
ZeroPlayerPartyMons();
|
|
|
|
ZeroEnemyPartyMons();
|
|
|
|
ResetPokedex();
|
|
|
|
sub_8084400();
|
|
|
|
ClearSav1();
|
|
|
|
ClearMailData();
|
|
|
|
gSaveBlock2Ptr->specialSaveWarp = 0;
|
|
|
|
gSaveBlock2Ptr->field_A8 = 0;
|
|
|
|
InitPlayerTrainerId();
|
|
|
|
PlayTimeCounter_Reset();
|
|
|
|
ClearPokedexFlags();
|
|
|
|
InitEventData();
|
|
|
|
ClearTVShowData();
|
|
|
|
ResetGabbyAndTy();
|
|
|
|
ResetSecretBases();
|
|
|
|
ClearBerryTrees();
|
|
|
|
SetMoney(&gSaveBlock1Ptr->money, 3000);
|
|
|
|
SetCoins(0);
|
|
|
|
ResetLinkContestBoolean();
|
|
|
|
ResetGameStats();
|
|
|
|
ClearAllContestWinnerPics();
|
2018-05-01 14:01:54 +02:00
|
|
|
ClearPlayerLinkBattleRecords();
|
2017-09-07 19:45:32 +02:00
|
|
|
InitSeedotSizeRecord();
|
|
|
|
InitLotadSizeRecord();
|
|
|
|
gPlayerPartyCount = 0;
|
|
|
|
ZeroPlayerPartyMons();
|
|
|
|
ResetPokemonStorageSystem();
|
|
|
|
ClearRoamerData();
|
|
|
|
ClearRoamerLocationData();
|
|
|
|
gSaveBlock1Ptr->registeredItem = 0;
|
|
|
|
ClearBag();
|
|
|
|
NewGameInitPCItems();
|
|
|
|
ClearPokeblocks();
|
|
|
|
ClearDecorationInventories();
|
|
|
|
InitEasyChatPhrases();
|
|
|
|
SetMauvilleOldMan();
|
|
|
|
InitDewfordTrend();
|
|
|
|
ResetFanClub();
|
|
|
|
ResetLotteryCorner();
|
|
|
|
WarpToTruck();
|
2017-11-11 01:12:18 +01:00
|
|
|
ScriptContext2_RunNewScript(EventScript_2715DE);
|
2017-09-07 19:45:32 +02:00
|
|
|
ResetMiniGamesResults();
|
|
|
|
copy_strings_to_sav1();
|
|
|
|
SetLilycoveLady();
|
|
|
|
sub_819FAA0();
|
|
|
|
sub_81A4B14();
|
|
|
|
sub_8195E10();
|
|
|
|
sub_801AFD8();
|
|
|
|
sub_800E5AC();
|
|
|
|
sub_81D54BC();
|
|
|
|
ResetContestLinkResults();
|
|
|
|
}
|
2017-09-08 16:46:37 +02:00
|
|
|
|
|
|
|
void ResetMiniGamesResults(void)
|
|
|
|
{
|
|
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush));
|
|
|
|
SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0);
|
|
|
|
ResetPokeJumpResults();
|
|
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults));
|
|
|
|
}
|