summaryrefslogtreecommitdiff
path: root/src/save.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/save.c')
-rw-r--r--src/save.c152
1 files changed, 103 insertions, 49 deletions
diff --git a/src/save.c b/src/save.c
index bfeee9b..4f71d9a 100644
--- a/src/save.c
+++ b/src/save.c
@@ -63,7 +63,7 @@ struct unkStruct_203B194
u8 *unk4;
u32 unk8;
u8 unkC;
- u8 padding[0x10 - 0xD];
+ u8 fillD[3];
u32 quickSaveStatus;
};
extern struct unkStruct_203B194 *gUnknown_203B194;
@@ -85,19 +85,57 @@ extern u32 gUnknown_203B490;
extern u32 gUnknown_203B494;
extern struct ExclusivePokemonData *gUnknown_203B498;
-extern const char gSaveCorrupted;
-extern const char gSavingAdventure;
-extern const char gWriteGamePak;
-extern const char gSaveCompleted;
-extern const char gSaveNotWritten;
-extern const char gSaveFailed;
-extern const char gUnknown_80D44C8;
-extern const char gUnknown_80D45AC;
+ALIGNED(4) const char gSaveCorrupted[] = _("#+The game data is corrupted.\n"
+ "#+Your data will be erased.");
-extern const char gUnknown_80D45F4;
-extern const char gUnknown_80D4668;
-extern const char gSaveNotWritten2;
-extern const char gSaveFailed2;
+ALIGNED(4) const char fill_save0[] = _("pksdir0");
+
+ALIGNED(4) const char gSavingAdventure[] = _("#+Saving your adventure...\n"
+ "#+Please don~27t turn off the power.");
+
+ALIGNED(4) const char gWriteGamePak[] = _("#+Writing to GBA Game Pak.\n"
+ "#+Do not remove the GBA Game Pak.\n"
+ "#+Please wait with the power on.");
+
+ALIGNED(4) const char gSaveCompleted[] = _("#+Save completed!");
+
+ALIGNED(4) const char gSaveNotWritten[] = _("#+The data could not be written.\n"
+ "#+Please turn off the power and remove\n"
+ "#+and reinsert the DS Card.");
+
+ALIGNED(4) const char gSaveFailed[] = _("#+Save failed.");
+
+ALIGNED(4) const char fill_save1[] = _("pksdir0");
+
+ALIGNED(4) const char gUnknown_80D44C8[] = _("#+Your data was not properly saved~2c\n"
+ "#+so your game cannot be resumed\n"
+ "#+from your last spot.#P"
+ "#+Your last outing is considered a defeat.\n"
+ "#+Before shutting down~2c save in your\n"
+ "#+team base~2c or quicksave in a dungeon.");
+
+ALIGNED(4) const char fill_save2[] = _("pksdir0");
+
+ALIGNED(4) const char gUnknown_80D45AC[] = _("#+Quicksaving your adventure...\n"
+ "#+Please don~27t turn off the power.");
+
+ALIGNED(4) const char gUnknown_80D45F4[] = _("#+Your adventure has been saved.\n"
+ "#+When you are in a dungeon~2c quicksave\n"
+ "#+your progress before ending the game.");
+
+ALIGNED(4) const char gUnknown_80D4668[] = _("#+Your adventure has been saved.\n"
+ "#+When you resume play~2c the quicksave\n"
+ "#+data will be deleted.#P"
+ "#+When you are shutting down the game~2c\n"
+ "#+save your progress in your team base~2c\n"
+ "#+or quicksave in a dungeon.");
+
+ALIGNED(4) const char gSaveNotWritten2[] = _("#+The data could not be written.\n"
+ "#+Please turn off the power and remove\n"
+ "#+and reinsert the DS Card.");
+
+ALIGNED(4) const char gSaveFailed2[] = _("#+Save failed.");
+ALIGNED(4) const char fill_save3[] = _("pksdir0");
extern volatile struct UnkStruct_203B184 *gUnknown_203B184;
@@ -131,12 +169,12 @@ extern u32 sub_8097D60(u8 *, u32);
extern u32 sub_8097D98(void* a, s32 b);
extern void sub_80993E4();
extern void sub_800135C(void);
-extern u32 *sub_808CE00(void);
-extern void sub_808CE08(void);
+extern u32 *GetRecruitedPokemon(void);
+extern void InitializeRecruitedPokemon(void);
extern u32 *GetMoneyItemsInfo(void);
extern void InitializeMoneyItems(void);
-extern u32 sub_8094990(void);
-extern void sub_8094998(u8 r0);
+extern u32 GetGameOptions(void);
+extern void InitializeGameOptions(u8 r0);
extern u8 *sub_80950F8(void);
extern void sub_80958E4(u8 *a, u32 b);
extern u32 sub_80958F8(void);
@@ -150,10 +188,6 @@ extern void sub_80993D8(void);
extern struct PlayTimeStruct *gPlayTimeRef;
-
-extern void* MemoryAlloc(u32 a, u32 b);
-extern void MemoryFree(void* a);
-extern void MemoryFill8(u8 *dest, u8 value, s32 size);
extern void xxx_call_start_bg_music(void);
@@ -527,7 +561,7 @@ void sub_8012284(void)
{
sub_80122D0();
sub_80122F4();
- sub_8012300();
+ InitializePlayerData();
}
void sub_8012298(void)
@@ -540,7 +574,7 @@ void sub_80122A8(void)
{
sub_80122D0();
sub_80122F4();
- sub_8012300();
+ InitializePlayerData();
sub_8012240();
}
@@ -566,17 +600,17 @@ void sub_80122F4(void)
sub_800135C();
}
-void sub_8012300(void)
+void InitializePlayerData(void)
{
InitializeFriendAreas();
- sub_808CE08();
+ InitializeRecruitedPokemon();
InitializeMoneyItems();
InitializeResuceTeamInfo();
sub_80972F4();
sub_8095118();
sub_8095900();
sub_80974E8();
- sub_8094998(1);
+ InitializeGameOptions(1);
InitializeExclusivePokemon();
}
@@ -593,7 +627,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
if(r0 != NULL)
{
gUnknown_203B460 = r0->unk0;
- gRecruitedPokemonRef = r0->unk4;
+ gRecruitedPokemonRef = r0->recruitedPokemon;
gUnknown_203B480 = r0->unk8;
gUnknown_203B484 = r0->unkC;
gUnknown_203B488 = r0->unk10;
@@ -603,12 +637,12 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gUnknown_203B494 = r0->unk20;
gUnknown_203B498 = r0->ExclusivePokemon;
gFriendAreas = r0->BoughtFriendAreas;
- gUnknown_203B46C = r0->unk2C;
+ gUnknown_203B46C = r0->gameOptions;
gPlayTimeRef = r0->playTime;
return;
}
gUnknown_203B460 = GetMoneyItemsInfo();
- gRecruitedPokemonRef = sub_808CE00();
+ gRecruitedPokemonRef = GetRecruitedPokemon();
gUnknown_203B480 = sub_80950F8();
gUnknown_203B484 = sub_8095100();
gUnknown_203B488 = sub_8095108();
@@ -618,7 +652,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gUnknown_203B494 = sub_8097680();
gUnknown_203B498 = GetExclusivePokemon();
gFriendAreas = GetBoughtFriendAreas();
- gUnknown_203B46C = sub_8094990();
+ gUnknown_203B46C = GetGameOptions();
gPlayTimeRef = GetPlayTime();
}
@@ -649,7 +683,7 @@ u8 sub_8012484(void)
{
if(IsSaveCorrupted())
{
- sub_80141B4(&gSaveCorrupted, 0, 0, 0x301);
+ sub_80141B4(gSaveCorrupted, 0, 0, 0x301);
gUnknown_203B188->state = 3;
}
else
@@ -661,11 +695,11 @@ u8 sub_8012484(void)
{
gUnknown_203B188->state = 6;
}
- break;
+ break;
case 3:
if(sub_80144A4(&temp2) == 0)
gUnknown_203B188->state = 4;
- break;
+ break;
case 4:
sub_8012298();
gUnknown_203B188->state = 6;
@@ -711,10 +745,10 @@ void sub_8012574(s16 PokemonID)
}
if (gUnknown_203B18C->faceFile != 0) {
preload_face = (u8 *)&gUnknown_203B18C->faceFile;
- sub_80141B4(&gSavingAdventure,0,preload_face,0x20);
+ sub_80141B4(gSavingAdventure,0,preload_face,0x20);
}
else {
- sub_80141B4(&gSavingAdventure,0,0,0x20);
+ sub_80141B4(gSavingAdventure,0,0,0x20);
}
gUnknown_203B18C->state = 3;
}
@@ -736,8 +770,8 @@ bool8 sub_8012600(void)
break;
case 1:
gUnknown_203B18C->unk4++;
- if (8 < gUnknown_203B18C->unk4) {
- sub_80141B4(&gWriteGamePak, 0, 0, 0x20);
+ if (gUnknown_203B18C->unk4 > 8) {
+ sub_80141B4(gWriteGamePak, 0, 0, 0x20);
gUnknown_203B18C->state = 3;
}
break;
@@ -754,20 +788,20 @@ bool8 sub_8012600(void)
{
case SAVE_COMPLETED:
if(gUnknown_203B18C->faceFile != NULL)
- sub_80141B4(&gSaveCompleted, 0, (u8 *)faceFile, 0x101);
+ sub_80141B4(gSaveCompleted, 0, (u8 *)faceFile, 0x101);
else
- sub_80141B4(&gSaveCompleted, 0, (u8 *)faceFile, 0x101);
+ sub_80141B4(gSaveCompleted, 0, (u8 *)faceFile, 0x101);
gUnknown_203B18C->state = 5;
break;
case SAVE_NOT_WRTTEN:
- sub_80141B4(&gSaveNotWritten, 0, 0, 0);
+ sub_80141B4(gSaveNotWritten, 0, 0, 0);
gUnknown_203B18C->state = 6;
break;
default:
if(gUnknown_203B18C->faceFile != NULL)
- sub_80141B4(&gSaveFailed, 0, (u8 *)faceFile, 0x101);
+ sub_80141B4(gSaveFailed, 0, (u8 *)faceFile, 0x101);
else
- sub_80141B4(&gSaveFailed, 0, (u8 *)faceFile, 0x101);
+ sub_80141B4(gSaveFailed, 0, (u8 *)faceFile, 0x101);
gUnknown_203B18C->state = 5;
break;
}
@@ -830,7 +864,12 @@ u32 sub_80127A8(void)
}
else
{
- sub_80141B4(&gUnknown_80D44C8, 0, 0, 0x301);
+ // Data was not properly saved
+ // so your game cannot be resumed
+ // from your last spot. Your last outing is considered a defeat.
+ // Before shutting down, save in your
+ // team base or quicksave in a dungeon
+ sub_80141B4(gUnknown_80D44C8, 0, 0, 0x301);
gUnknown_203B190->state = 2;
}
break;
@@ -867,9 +906,13 @@ void sub_8012850(u8 *r0, u32 r1, u8 r2)
gUnknown_203B194->unkC = r2;
gUnknown_203B194->state = 0;
if(gUnknown_203B194->unkC != 0)
- sub_80141B4(&gUnknown_80D45AC, 0, 0, 0x20);
+ // Quicksaving your adventure...
+ // Please don't turn off the power.
+ sub_80141B4(gUnknown_80D45AC, 0, 0, 0x20);
else
- sub_80141B4(&gUnknown_80D45AC, 0, 0, 0x20);
+ // Quicksaving your adventure...
+ // Please don't turn off the power.
+ sub_80141B4(gUnknown_80D45AC, 0, 0, 0x20);
}
u32 sub_80128B0(void)
@@ -896,18 +939,29 @@ u32 sub_80128B0(void)
case SAVE_COMPLETED:
sub_80121E0(0xf1207);
if(gUnknown_203B194->unkC != 0)
- sub_80141B4(&gUnknown_80D45F4, 0, 0, 0x301);
+ // Your adventure has been saved
+ // When you are in a dungeon, quicksave
+ // your progress before ending the game.
+ sub_80141B4(gUnknown_80D45F4, 0, 0, 0x301);
else
- sub_80141B4(&gUnknown_80D4668, 0, 0, 0x301);
+ // Your adventure has been saved.
+ // When you resume play, the quicksave
+ // data will be deleted. When you are shutting down the game,
+ // save your progress in your team base,
+ // or quicksave in a dungeon.
+ sub_80141B4(gUnknown_80D4668, 0, 0, 0x301);
gUnknown_203B194->state = 3;
break;
case SAVE_NOT_WRTTEN:
- sub_80141B4(&gSaveNotWritten2, 0, 0, 0);
+ // The data could not be written.
+ // Please turn off the power and remove
+ // and reinsert the DS Card
+ sub_80141B4(gSaveNotWritten2, 0, 0, 0);
gUnknown_203B194->state = 4;
break;
default:
sub_80121E0(0xf1209);
- sub_80141B4(&gSaveFailed2, 0, 0, 0x301);
+ sub_80141B4(gSaveFailed2, 0, 0, 0x301);
gUnknown_203B194->state = 3;
break;
}