mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 15:46:18 -05:00
more documentation of save.c and some more mail info things
This commit is contained in:
parent
93370c9481
commit
6c6541f276
|
|
@ -1121,7 +1121,7 @@ _08000F5E:
|
|||
.align 2, 0
|
||||
_08000F64: .4byte 0x000f1209
|
||||
_08000F68:
|
||||
bl sub_809674C
|
||||
bl GeneratePelipperJobs
|
||||
bl sub_80961B4
|
||||
bl sub_808ED00
|
||||
adds r7, r4, 0
|
||||
|
|
|
|||
|
|
@ -613,8 +613,8 @@ _0809650E:
|
|||
bx r1
|
||||
thumb_func_end sub_80964E4
|
||||
|
||||
thumb_func_start sub_8096514
|
||||
sub_8096514:
|
||||
thumb_func_start CountFilledPelipperBoardSlots
|
||||
CountFilledPelipperBoardSlots:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
movs r4, 0
|
||||
|
|
@ -634,7 +634,7 @@ _0809652A:
|
|||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8096514
|
||||
thumb_func_end CountFilledPelipperBoardSlots
|
||||
|
||||
thumb_func_start sub_8096538
|
||||
sub_8096538:
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ _0802E3FC:
|
|||
movs r0, 0x5
|
||||
str r0, [r1]
|
||||
adds r0, r7, 0
|
||||
bl sub_80968B0
|
||||
bl IsMailinJobSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802E422
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ sub_802EC10:
|
|||
str r0, [r1]
|
||||
ldrb r0, [r2, 0x8]
|
||||
bl GetPelliperBoardSlotInfo
|
||||
bl sub_80968B0
|
||||
bl IsMailinJobSlot
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802EC40
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
#include "wonder_mail.h"
|
||||
|
||||
struct subStruct_203B490
|
||||
{
|
||||
// size: 0xC
|
||||
|
|
@ -10,8 +12,8 @@ struct subStruct_203B490
|
|||
struct unkStruct_203B490
|
||||
{
|
||||
// size: 0x330?
|
||||
struct WonderMail mailboxSlots[4];
|
||||
struct WonderMail pelliperBoardJobs[8];
|
||||
/* 0x0 */ struct WonderMail mailboxSlots[4];
|
||||
/* 0x50 */ struct WonderMail pelliperBoardJobs[8];
|
||||
/* 0xF0 */ struct WonderMail jobSlots[8];
|
||||
u8 unk190[0x28];
|
||||
u8 unk1B8[0x78];
|
||||
|
|
|
|||
|
|
@ -4,26 +4,7 @@
|
|||
#include "code_8094F88.h"
|
||||
#include "item.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
struct WonderMailStruct_203B2C0_sub
|
||||
{
|
||||
struct unkStruct_203B480 mail;
|
||||
struct PokemonStruct pokemon;
|
||||
};
|
||||
|
||||
struct unkStruct_802F204
|
||||
{
|
||||
/* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH]; // client name?
|
||||
/* 0xA */ u8 name2[POKEMON_NAME_LENGTH]; // target name?
|
||||
/* 0x14 */ s16 unk14; // poke species (client??)
|
||||
/* 0x16 */ u8 unk16;
|
||||
/* 0x18 */ s32 moneyReward;
|
||||
/* 0x1C */ u8 itemRewards[3]; // MAX_ITEM_REWARDS
|
||||
/* 0x1F */ u8 numItems;
|
||||
/* 0x20 */ u8 friendAreaReward;
|
||||
u8 fill21[0x24 - 0x21];
|
||||
/* 0x24 */ u32 teamRankPtsReward;
|
||||
};
|
||||
#include "wonder_mail.h"
|
||||
|
||||
struct WonderMailStruct_203B33C
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include "rescue_team_info.h"
|
||||
#include "pokemon.h"
|
||||
#include "item.h"
|
||||
#include "code_80958E8.h"
|
||||
|
||||
enum
|
||||
{
|
||||
|
|
@ -27,20 +28,20 @@ struct UnkStruct_sub_8011DAC {
|
|||
// size: 0x57D4
|
||||
u8 fill000[0x4];
|
||||
u8 unk004[0x400];
|
||||
u8 unk404[0x10]; // has "POKE_DUNGEON__05"
|
||||
u32 unk414;
|
||||
u8 gameInternalName[0x10]; // has "POKE_DUNGEON__05"
|
||||
u32 checksum;
|
||||
u32 unk418;
|
||||
u32 unk41C;
|
||||
u32 RngState;
|
||||
u32 savedRecruitedPokemon;
|
||||
u32 unk428;
|
||||
u8 fill42C[0x4];
|
||||
u32 unk430;
|
||||
u32 savedTeamInventory;
|
||||
u32 savedRescueTeamInfo;
|
||||
u32 savedFriendAreas;
|
||||
u32 unk43C;
|
||||
u32 unk440;
|
||||
u32 unk444;
|
||||
u32 savedMailInfo;
|
||||
u8 unk448[0x538C];
|
||||
};
|
||||
|
||||
|
|
@ -52,7 +53,7 @@ struct UnkStruct_203B184 {
|
|||
/* 0xC */ u8 *unkC;
|
||||
/* 0x10 */ u32 *unk10;
|
||||
/* 0x14 */ u32 *unk14;
|
||||
/* 0x18 */ u32 unk18;
|
||||
/* 0x18 */ struct unkStruct_203B490 *mailInfo;
|
||||
/* 0x1C */ struct RescueTeamData *RescueTeamInfo;
|
||||
/* 0x20 */ u32 unk20;
|
||||
/* 0x24 */ struct ExclusivePokemonData *ExclusivePokemon;
|
||||
|
|
@ -75,7 +76,7 @@ u32 sub_8011C1C(void);
|
|||
void sub_8011C28(u32 in);
|
||||
s32 sub_8011C34(void);
|
||||
void sub_8011C40(s32 in);
|
||||
char *sub_8011C4C(void);
|
||||
char *GetGameInternalName(void);
|
||||
void sub_8011CA8(u32 *out, s32 size);
|
||||
u32 ReadSaveFromPak(u32 *a);
|
||||
u32 WriteSavetoPak(s32 *param_1, u32 param_2);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ extern void LoadGameOptions(void);
|
|||
extern void SetWindowBGColor(void);
|
||||
extern void LoadItemParameters(void);
|
||||
extern void sub_80950BC(void);
|
||||
extern void sub_80958E8(void);
|
||||
extern void LoadMailInfo(void);
|
||||
extern void sub_800CD64(u32, u32);
|
||||
extern void SetWindowTitle(char *);
|
||||
extern void sub_800DAAC(void);
|
||||
|
|
@ -41,7 +41,7 @@ extern void sub_800CDA8(u32);
|
|||
extern void LoadTitleScreen(void);
|
||||
extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *);
|
||||
extern void sub_80095CC(u32, u32);
|
||||
extern s32 sub_80953D4(u32);
|
||||
extern s32 sub_80953D4(u8);
|
||||
extern void sub_8095240(u8);
|
||||
extern void nullsub_33(void);
|
||||
extern u32 sub_80009D0(u32);
|
||||
|
|
@ -93,7 +93,7 @@ void GameLoop(void)
|
|||
LoadRescueTeamInfo();
|
||||
LoadWazaParameters();
|
||||
sub_80950BC();
|
||||
sub_80958E8();
|
||||
LoadMailInfo();
|
||||
sub_800CD64(0x8000, 0);
|
||||
sub_8012284();
|
||||
InitializeGameOptions(TRUE);
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ extern bool8 ValidateWonderMail(struct WonderMail *);
|
|||
extern struct unkStruct_203B490 *gUnknown_203B490;
|
||||
extern struct unkStruct_203B490 gUnknown_2039448;
|
||||
|
||||
void sub_80958E8()
|
||||
void LoadMailInfo(void)
|
||||
{
|
||||
gUnknown_203B490 = &gUnknown_2039448;
|
||||
}
|
||||
|
||||
struct unkStruct_203B490 *sub_80958F8(void)
|
||||
struct unkStruct_203B490 *GetMailInfo(void)
|
||||
{
|
||||
return &gUnknown_2039448;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "item.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "team_inventory.h"
|
||||
#include "random.h"
|
||||
|
|
@ -23,12 +23,12 @@ extern void ResetJobSlot(u8);
|
|||
extern void sub_8096C80(void);
|
||||
extern void sub_8096D24(void);
|
||||
extern void sub_80965F4();
|
||||
extern void sub_8096698();
|
||||
extern void SortPelipperJobs();
|
||||
extern struct WonderMail *GetPelliperBoardSlotInfo(u8);
|
||||
u8 sub_8097318(s16 param_1);
|
||||
extern u8 sub_8095B28(struct WonderMail *);
|
||||
|
||||
void sub_8096698(void)
|
||||
void SortPelipperJobs(void)
|
||||
{
|
||||
s32 index1;
|
||||
s32 index2;
|
||||
|
|
@ -39,7 +39,7 @@ void sub_8096698(void)
|
|||
{
|
||||
for(index2 = index1 + 1; index2 < 8; index2++)
|
||||
{
|
||||
if(gUnknown_203B490->pelliperBoardJobs[index2].mailType != 0)
|
||||
if(gUnknown_203B490->pelliperBoardJobs[index2].mailType != WONDER_MAIL_TYPE_NONE)
|
||||
{
|
||||
if((gUnknown_203B490->pelliperBoardJobs[index1].dungeon.dungeonIndex > gUnknown_203B490->pelliperBoardJobs[index2].dungeon.dungeonIndex) ||
|
||||
((gUnknown_203B490->pelliperBoardJobs[index1].dungeon.dungeonIndex == gUnknown_203B490->pelliperBoardJobs[index2].dungeon.dungeonIndex) && (gUnknown_203B490->pelliperBoardJobs[index1].dungeon.dungeonFloor > gUnknown_203B490->pelliperBoardJobs[index2].dungeon.dungeonFloor)))
|
||||
|
|
@ -53,7 +53,7 @@ void sub_8096698(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_809674C(void)
|
||||
void GeneratePelipperJobs(void)
|
||||
{
|
||||
s32 range;
|
||||
struct WonderMail *mail;
|
||||
|
|
@ -62,7 +62,7 @@ void sub_809674C(void)
|
|||
range = RandomRange(4,8);
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
gUnknown_203B490->pelliperBoardJobs[index].mailType = 0;
|
||||
gUnknown_203B490->pelliperBoardJobs[index].mailType = WONDER_MAIL_TYPE_NONE;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
|
|
@ -122,10 +122,10 @@ void sub_809674C(void)
|
|||
gUnknown_203B490->pelliperBoardJobs[index].rewardType = RandomRange(MONEY, BLANK_4);
|
||||
}
|
||||
sub_80965F4();
|
||||
sub_8096698();
|
||||
SortPelipperJobs();
|
||||
}
|
||||
|
||||
bool8 sub_80968B0(struct WonderMail *mail)
|
||||
bool8 IsMailinJobSlot(struct WonderMail *mail)
|
||||
{
|
||||
struct WonderMail *jobSlot;
|
||||
s32 index;
|
||||
|
|
@ -279,7 +279,7 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
|
|||
jobSlot = GetJobSlotInfo(slotIndex);
|
||||
param_1->unk0 = FALSE;
|
||||
param_1->clientSpecies = jobSlot->clientSpecies;
|
||||
param_1->targetSpecies = 0;
|
||||
param_1->targetSpecies = SPECIES_NONE;
|
||||
if (jobSlot->dungeon.dungeonIndex == dungeon) {
|
||||
switch(jobSlot->missionType) {
|
||||
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocatio
|
|||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void sub_809674C();
|
||||
extern void GeneratePelipperJobs(void);
|
||||
extern void sub_800199C(u32, s32, u32, s32);
|
||||
|
||||
bool8 sub_8096F50(struct WonderMail *mail)
|
||||
|
|
@ -34,7 +34,7 @@ bool8 sub_8096F50(struct WonderMail *mail)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
u32 sub_8096FA0(u8 *r0, u32 size)
|
||||
u32 RestoreMailInfo(u8 *r0, u32 size)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_8094924 backup;
|
||||
|
|
@ -79,7 +79,7 @@ u32 sub_8096FA0(u8 *r0, u32 size)
|
|||
return backup.unk8;
|
||||
}
|
||||
|
||||
u32 sub_80970D8(u8 *r0, u32 size)
|
||||
u32 SaveMailInfo(u8 *r0, u32 size)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_8094924 backup;
|
||||
|
|
@ -199,7 +199,7 @@ void sub_809733C(short param_1,u32 param_2)
|
|||
case 0xE:
|
||||
case 0xF:
|
||||
case 0x1C:
|
||||
sub_809674C();
|
||||
GeneratePelipperJobs();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ extern void sub_80015C0(u8, u8);
|
|||
extern void sub_80018D8(u8, u8, u32);
|
||||
extern void sub_800199C(u8, u8, u8, s32);
|
||||
extern void sub_8098CC8();
|
||||
extern void sub_809674C();
|
||||
extern void GeneratePelipperJobs();
|
||||
extern void sub_80961B4();
|
||||
extern void ClearAllItems_8091FB4();
|
||||
extern const char *sub_80A2B18(s16);
|
||||
|
|
@ -180,7 +180,7 @@ void sub_8098CC8(void)
|
|||
temp = 3;
|
||||
}
|
||||
ChooseKecleonShopInventory(temp);
|
||||
sub_809674C();
|
||||
GeneratePelipperJobs();
|
||||
sub_80961B4();
|
||||
ClearAllItems_8091FB4();
|
||||
}
|
||||
|
|
|
|||
217
src/save.c
217
src/save.c
|
|
@ -20,8 +20,8 @@ struct unk_struct
|
|||
{
|
||||
// size: 0x800
|
||||
u32 unk0;
|
||||
u8 unk4[0x10]; // has "POKE_DUNGEON__05
|
||||
u32 unk14;
|
||||
u8 gameInternalName[0x10]; // has "POKE_DUNGEON__05
|
||||
u32 checksum;
|
||||
u32 unk18;
|
||||
u32 dungeonLocation;
|
||||
u32 unk20;
|
||||
|
|
@ -80,7 +80,6 @@ extern u8 *gUnknown_203B480;
|
|||
extern u8 *gUnknown_203B484;
|
||||
extern u32 *gUnknown_203B488;
|
||||
extern u32 *gUnknown_203B48C;
|
||||
extern u32 gUnknown_203B490;
|
||||
extern u32 gUnknown_203B494;
|
||||
|
||||
ALIGNED(4) const char PokeDungeon_Text[] = _("POKE_DUNGEON__05");
|
||||
|
|
@ -162,8 +161,8 @@ extern u32 *sub_8095110(void);
|
|||
extern void sub_8095118(void);
|
||||
extern u32 sub_80954CC(void* a, s32 b);
|
||||
extern u32 sub_8095624(u8 *, u32);
|
||||
extern u32 sub_8096FA0(void* a, s32 b);
|
||||
extern u32 sub_80970D8(u8 *, u32);
|
||||
extern u32 RestoreMailInfo(void* a, s32 b);
|
||||
extern u32 SaveMailInfo(u8 *, u32);
|
||||
extern void sub_80976A8();
|
||||
extern u32 sub_8097D60(u8 *, u32);
|
||||
extern u32 sub_8097D98(void* a, s32 b);
|
||||
|
|
@ -171,7 +170,7 @@ extern void sub_80993E4();
|
|||
extern void sub_800135C(void);
|
||||
extern u8 *sub_80950F8(void);
|
||||
extern void sub_80958E4(u32 *a, u32 b);
|
||||
extern u32 sub_80958F8(void);
|
||||
extern struct unkStruct_203B490 *GetMailInfo(void);
|
||||
extern void InitializeMailJobsNews(void);
|
||||
extern void sub_80972F4(void);
|
||||
extern u32 sub_8097680(void);
|
||||
|
|
@ -203,7 +202,7 @@ void sub_8011C40(s32 in)
|
|||
gUnknown_202DE28 = in;
|
||||
}
|
||||
|
||||
char *sub_8011C4C(void)
|
||||
char *GetGameInternalName(void)
|
||||
{
|
||||
return gUnknown_203B180; // returns POKE_DUNGEON__05
|
||||
}
|
||||
|
|
@ -253,14 +252,14 @@ void sub_8011CA8(u32 *out, s32 size)
|
|||
u32 WriteSaveSector(s32 *a, u8 *src, s32 size)
|
||||
{
|
||||
u32 r1;
|
||||
s32 r6 = *a;
|
||||
s32 sector = *a;
|
||||
sub_8011CA8(a, size);
|
||||
CalculateChecksum(src, size);
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
r1 = WriteFlashData(r6, src, size);
|
||||
r1 = WriteFlashData(sector, src, size);
|
||||
}
|
||||
else if (sub_800DAB8()) {
|
||||
if (!sub_800DAB4(r6, src, size)) {
|
||||
if (!sub_800DAB4(sector, src, size)) {
|
||||
r1 = 3;
|
||||
}
|
||||
else {
|
||||
|
|
@ -268,27 +267,27 @@ u32 WriteSaveSector(s32 *a, u8 *src, s32 size)
|
|||
}
|
||||
}
|
||||
else {
|
||||
return 2;
|
||||
return SAVE_FAILED;
|
||||
}
|
||||
if (r1 == 4) {
|
||||
return 1;
|
||||
return SAVE_NOT_WRTTEN;
|
||||
}
|
||||
if (r1) {
|
||||
return 2;
|
||||
return SAVE_FAILED;
|
||||
}
|
||||
return 0;
|
||||
return SAVE_COMPLETED;
|
||||
}
|
||||
|
||||
u32 ReadSaveSector(s32 *a, u8 *dest, s32 size)
|
||||
{
|
||||
u32 r1;
|
||||
s32 r6 = *a;
|
||||
s32 sector = *a;
|
||||
sub_8011CA8(a, size);
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
r1 = ReadFlashData(r6, dest, size);
|
||||
r1 = ReadFlashData(sector, dest, size);
|
||||
}
|
||||
else if (sub_800DAB8()) {
|
||||
if (!sub_800DAB0(r6, dest, size)) {
|
||||
if (!sub_800DAB0(sector, dest, size)) {
|
||||
r1 = 1;
|
||||
}
|
||||
else {
|
||||
|
|
@ -315,92 +314,92 @@ bool8 sub_8011DA8(void)
|
|||
|
||||
u32 ReadSaveFromPak(u32 *a)
|
||||
{
|
||||
struct UnkStruct_sub_8011DAC *r5 = MemoryAlloc(sizeof(struct UnkStruct_sub_8011DAC), 5);
|
||||
u8 *r4 = (u8*)r5->unk448;
|
||||
u32 r7 = ReadSaveSector(a, (u8*)r5, sizeof(struct UnkStruct_sub_8011DAC));
|
||||
struct UnkStruct_sub_8011DAC *playerSave = MemoryAlloc(sizeof(struct UnkStruct_sub_8011DAC), 5);
|
||||
u8 *r4 = playerSave->unk448;
|
||||
u32 saveStatus = ReadSaveSector(a, (u8*)playerSave, sizeof(struct UnkStruct_sub_8011DAC));
|
||||
u32 r1;
|
||||
if (r7)
|
||||
if (saveStatus)
|
||||
{
|
||||
r7 = ReadSaveSector(a, (u8*)r5, sizeof(struct UnkStruct_sub_8011DAC));
|
||||
saveStatus = ReadSaveSector(a, (u8*)playerSave, sizeof(struct UnkStruct_sub_8011DAC));
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8011CA8(a, sizeof(struct UnkStruct_sub_8011DAC));
|
||||
}
|
||||
if (!r7)
|
||||
if (!saveStatus)
|
||||
{
|
||||
if (r5->unk414 != 0x5071412) {
|
||||
r7 = 4;
|
||||
if (playerSave->checksum != 0x5071412) {
|
||||
saveStatus = 4;
|
||||
}
|
||||
}
|
||||
if (!r7)
|
||||
if (!saveStatus)
|
||||
{
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
sub_8011C28(r5->unk41C);
|
||||
sub_8011C40(r5->unk418);
|
||||
SetRngState(r5->RngState);
|
||||
sub_8011C28(playerSave->unk41C);
|
||||
sub_8011C40(playerSave->unk418);
|
||||
SetRngState(playerSave->RngState);
|
||||
}
|
||||
else {
|
||||
gUnknown_203B184->unk054 = r5->unk41C;
|
||||
gUnknown_203B184->unk050 = r5->unk418;
|
||||
gUnknown_203B184->RngState = r5->RngState;
|
||||
gUnknown_203B184->unk054 = playerSave->unk41C;
|
||||
gUnknown_203B184->unk050 = playerSave->unk418;
|
||||
gUnknown_203B184->RngState = playerSave->RngState;
|
||||
}
|
||||
}
|
||||
if (!r7)
|
||||
if (!saveStatus)
|
||||
{
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
if (!sub_8002718(r5->unk004)) {
|
||||
r7 = 4;
|
||||
if (!sub_8002718(playerSave->unk004)) {
|
||||
saveStatus = 4;
|
||||
}
|
||||
}
|
||||
else {
|
||||
MemoryCopy8(gUnknown_203B184->unk04C, r5->unk004, ARRAY_COUNT(r5->unk004));
|
||||
MemoryCopy8(gUnknown_203B184->unk04C, playerSave->unk004, ARRAY_COUNT(playerSave->unk004));
|
||||
}
|
||||
}
|
||||
if (!r7)
|
||||
if (!saveStatus)
|
||||
{
|
||||
r1 = RestoreRecruitedPokemon(r4, 0x4650);
|
||||
if (r1 != r5->savedRecruitedPokemon) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->savedRecruitedPokemon) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x4650;
|
||||
r1 = RestorePokemonStruct2(r4, 0x258);
|
||||
if (r1 != r5->unk428) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->unk428) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x258;
|
||||
r1 = RestoreTeamInventory(r4, 0x1D8);
|
||||
if (r1 != r5->unk430) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->savedTeamInventory) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x1d8;
|
||||
r1 = ReadRescueTeamInfo(r4, 0x10);
|
||||
if (r1 != r5->savedRescueTeamInfo) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->savedRescueTeamInfo) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x10;
|
||||
r1 = ReadSavedFriendAreas(r4, 0x8);
|
||||
if (r1 != r5->savedFriendAreas) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->savedFriendAreas) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x8;
|
||||
r1 = sub_8097D98(r4, 0x100);
|
||||
if (r1 != r5->unk43C) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->unk43C) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x100;
|
||||
r1 = sub_80954CC(r4, 0x594);
|
||||
if (r1 != r5->unk440) {
|
||||
r7 = 3;
|
||||
if (r1 != playerSave->unk440) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
r4 += 0x594;
|
||||
r1 = sub_8096FA0(r4, 0x221);
|
||||
if (r1 != r5->unk444) {
|
||||
r7 = 3;
|
||||
r1 = RestoreMailInfo(r4, 0x221);
|
||||
if (r1 != playerSave->savedMailInfo) {
|
||||
saveStatus = 3;
|
||||
}
|
||||
}
|
||||
MemoryFree(r5);
|
||||
return r7;
|
||||
MemoryFree(playerSave);
|
||||
return saveStatus;
|
||||
}
|
||||
|
||||
u32 sub_8011F9C(s32 *r0, u8 *dest, s32 size)
|
||||
|
|
@ -410,21 +409,21 @@ u32 sub_8011F9C(s32 *r0, u8 *dest, s32 size)
|
|||
|
||||
u32 sub_8011FA8(void)
|
||||
{
|
||||
u32 temp2;
|
||||
u32 saveStatus;
|
||||
u32 temp3;
|
||||
u32 temp;
|
||||
struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
temp = 0x1F;
|
||||
temp2 = ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct));
|
||||
if( temp2 == READ_SAVE_VALID)
|
||||
saveStatus = ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct));
|
||||
if( saveStatus == READ_SAVE_VALID)
|
||||
{
|
||||
if(r5->unk14 != 0x5071412)
|
||||
if(r5->checksum != 0x5071412)
|
||||
{
|
||||
temp2 = 4;
|
||||
saveStatus = 4;
|
||||
}
|
||||
}
|
||||
temp3 = 0xf1209;
|
||||
if(temp2 == READ_SAVE_VALID)
|
||||
if(saveStatus == READ_SAVE_VALID)
|
||||
{
|
||||
temp3 = r5->unk18;
|
||||
}
|
||||
|
|
@ -441,7 +440,7 @@ bool8 IsSaveCorrupted(void)
|
|||
isCorrupted = FALSE;
|
||||
if(ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct)) == READ_SAVE_VALID)
|
||||
{
|
||||
if(r5->unk14 == 0x5071412)
|
||||
if(r5->checksum == 0x5071412)
|
||||
{
|
||||
isCorrupted = TRUE;
|
||||
}
|
||||
|
|
@ -452,58 +451,58 @@ bool8 IsSaveCorrupted(void)
|
|||
|
||||
u32 WriteSavetoPak(s32 *param_1, u32 param_2)
|
||||
{
|
||||
struct UnkStruct_sub_8011DAC *iVar1;
|
||||
char *__src;
|
||||
int r5;
|
||||
int r4;
|
||||
struct UnkStruct_sub_8011DAC *playerSave;
|
||||
char *gameName;
|
||||
int saveStatus1;
|
||||
int saveStatus2;
|
||||
u8 *array_ptr;
|
||||
|
||||
iVar1 = MemoryAlloc(sizeof(struct UnkStruct_sub_8011DAC),5);
|
||||
array_ptr = iVar1->unk448;
|
||||
playerSave = MemoryAlloc(sizeof(struct UnkStruct_sub_8011DAC),5);
|
||||
array_ptr = playerSave->unk448;
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
iVar1->unk41C = param_2;
|
||||
iVar1->unk418 = sub_8011C34();
|
||||
iVar1->RngState = GetRngState();
|
||||
playerSave->unk41C = param_2;
|
||||
playerSave->unk418 = sub_8011C34();
|
||||
playerSave->RngState = GetRngState();
|
||||
}
|
||||
else {
|
||||
iVar1->unk41C = gUnknown_203B184->unk054;
|
||||
iVar1->unk418 = gUnknown_203B184->unk050;
|
||||
iVar1->RngState = gUnknown_203B184->RngState;
|
||||
playerSave->unk41C = gUnknown_203B184->unk054;
|
||||
playerSave->unk418 = gUnknown_203B184->unk050;
|
||||
playerSave->RngState = gUnknown_203B184->RngState;
|
||||
}
|
||||
iVar1->unk414 = 0x5071412;
|
||||
__src = sub_8011C4C();
|
||||
strncpy(iVar1->unk404,__src, ARRAY_COUNT(iVar1->unk404));
|
||||
playerSave->checksum = 0x5071412;
|
||||
gameName = GetGameInternalName();
|
||||
strncpy(playerSave->gameInternalName,gameName, ARRAY_COUNT(playerSave->gameInternalName));
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
sub_8002700(iVar1->unk004);
|
||||
sub_8002700(playerSave->unk004);
|
||||
}
|
||||
else {
|
||||
MemoryCopy8(iVar1->unk004,gUnknown_203B184->unk04C,ARRAY_COUNT(iVar1->unk004));
|
||||
MemoryCopy8(playerSave->unk004,gUnknown_203B184->unk04C,ARRAY_COUNT(playerSave->unk004));
|
||||
}
|
||||
|
||||
iVar1->savedRecruitedPokemon = SaveRecruitedPokemon(array_ptr,0x4650);
|
||||
playerSave->savedRecruitedPokemon = SaveRecruitedPokemon(array_ptr,0x4650);
|
||||
array_ptr += 0x4650;
|
||||
iVar1->unk428 = SavePokemonStruct2(array_ptr,0x258);
|
||||
playerSave->unk428 = SavePokemonStruct2(array_ptr,0x258);
|
||||
array_ptr += 0x258;
|
||||
iVar1->unk430 = SaveTeamInventory(array_ptr,0x1D8);
|
||||
playerSave->savedTeamInventory = SaveTeamInventory(array_ptr,0x1D8);
|
||||
array_ptr += 0x1D8;
|
||||
iVar1->savedRescueTeamInfo = SaveRescueTeamInfo(array_ptr,0x10);
|
||||
playerSave->savedRescueTeamInfo = SaveRescueTeamInfo(array_ptr,0x10);
|
||||
array_ptr += 0x10;
|
||||
iVar1->savedFriendAreas = SaveFriendAreas(array_ptr,8);
|
||||
playerSave->savedFriendAreas = SaveFriendAreas(array_ptr,8);
|
||||
array_ptr += 8;
|
||||
iVar1->unk43C = sub_8097D60(array_ptr,0x100);
|
||||
playerSave->unk43C = sub_8097D60(array_ptr,0x100);
|
||||
array_ptr += 0x100;
|
||||
iVar1->unk440 = sub_8095624(array_ptr,0x594);
|
||||
playerSave->unk440 = sub_8095624(array_ptr,0x594);
|
||||
array_ptr += 0x594;
|
||||
iVar1->unk444 = sub_80970D8(array_ptr,0x221);
|
||||
playerSave->savedMailInfo = SaveMailInfo(array_ptr,0x221);
|
||||
|
||||
r5 = WriteSaveSector(param_1,(u8 *)iVar1,sizeof(struct UnkStruct_sub_8011DAC));
|
||||
r4 = WriteSaveSector(param_1,(u8 *)iVar1,sizeof(struct UnkStruct_sub_8011DAC));
|
||||
MemoryFree(iVar1);
|
||||
saveStatus1 = WriteSaveSector(param_1,(u8 *)playerSave,sizeof(struct UnkStruct_sub_8011DAC));
|
||||
saveStatus2 = WriteSaveSector(param_1,(u8 *)playerSave,sizeof(struct UnkStruct_sub_8011DAC));
|
||||
MemoryFree(playerSave);
|
||||
|
||||
if (r5 != SAVE_COMPLETED)
|
||||
return r5;
|
||||
if (r4 != SAVE_COMPLETED)
|
||||
return r4;
|
||||
if (saveStatus1 != SAVE_COMPLETED)
|
||||
return saveStatus1;
|
||||
if (saveStatus2 != SAVE_COMPLETED)
|
||||
return saveStatus2;
|
||||
|
||||
return SAVE_COMPLETED;
|
||||
}
|
||||
|
|
@ -517,36 +516,36 @@ s32 sub_80121D4(s32 *a, u8 *src, s32 size)
|
|||
u32 sub_80121E0(u32 r0)
|
||||
{
|
||||
u32 temp;
|
||||
char *string;
|
||||
u32 temp3;
|
||||
char *gameName;
|
||||
u32 saveStatus;
|
||||
struct unk_struct *r4 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
temp = 0x1F;
|
||||
|
||||
r4->unk18 = r0;
|
||||
r4->dungeonLocation = *GetDungeonLocationInfo();
|
||||
r4->unk14 = 0x5071412;
|
||||
r4->checksum = 0x5071412;
|
||||
|
||||
string = sub_8011C4C();
|
||||
strncpy(r4->unk4, string, ARRAY_COUNT(r4->unk4));
|
||||
gameName = GetGameInternalName();
|
||||
strncpy(r4->gameInternalName, gameName, ARRAY_COUNT(r4->gameInternalName));
|
||||
sub_80958E4(&r4->unk20, 0);
|
||||
temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
|
||||
saveStatus = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
|
||||
MemoryFree(r4);
|
||||
return temp3;
|
||||
return saveStatus;
|
||||
}
|
||||
|
||||
u32 sub_8012240(void)
|
||||
{
|
||||
s32 temp;
|
||||
s32 status;
|
||||
struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
MemoryFill8((u8 *)r5, 0xFF, 0x4);
|
||||
sub_8011830();
|
||||
temp = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct));
|
||||
status = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct));
|
||||
xxx_call_start_bg_music();
|
||||
MemoryFree(r5);
|
||||
if(temp != 0)
|
||||
return 2;
|
||||
if(status != 0)
|
||||
return SAVE_FAILED;
|
||||
else
|
||||
return 0;
|
||||
return SAVE_COMPLETED;
|
||||
}
|
||||
|
||||
void sub_8012284(void)
|
||||
|
|
@ -624,7 +623,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
|
|||
gUnknown_203B484 = r0->unkC;
|
||||
gUnknown_203B488 = r0->unk10;
|
||||
gUnknown_203B48C = r0->unk14;
|
||||
gUnknown_203B490 = r0->unk18;
|
||||
gUnknown_203B490 = r0->mailInfo;
|
||||
gRescueTeamInfoRef = r0->RescueTeamInfo;
|
||||
gUnknown_203B494 = r0->unk20;
|
||||
gUnknown_203B498 = r0->ExclusivePokemon;
|
||||
|
|
@ -639,7 +638,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
|
|||
gUnknown_203B484 = sub_8095100();
|
||||
gUnknown_203B488 = sub_8095108();
|
||||
gUnknown_203B48C = sub_8095110();
|
||||
gUnknown_203B490 = sub_80958F8();
|
||||
gUnknown_203B490 = GetMailInfo();
|
||||
gRescueTeamInfoRef = GetRescueTeamInfo();
|
||||
gUnknown_203B494 = sub_8097680();
|
||||
gUnknown_203B498 = GetExclusivePokemon();
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ extern s32 sub_8013800(u32 *, s32);
|
|||
extern struct WonderMail *GetPelliperBoardSlotInfo(u32);
|
||||
extern void sub_803B35C(struct WonderMail *, u32 *);
|
||||
extern u8 gBulletinBoardText[];
|
||||
extern u8 sub_80968B0(struct WonderMail *);
|
||||
extern bool8 IsMailinJobSlot(struct WonderMail *);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32);
|
||||
extern void sub_8012BC4(s32, s32, s32, s32 ,s32 ,s32);
|
||||
|
|
@ -132,7 +132,7 @@ void CreateMailMenu(void)
|
|||
}
|
||||
else {
|
||||
sub_803B35C(mail,local.unk0);
|
||||
if (sub_80968B0(mail) != 0) {
|
||||
if (IsMailinJobSlot(mail)) {
|
||||
local.unk3C[11] = 2;
|
||||
}
|
||||
CreateRescueTitle(&local);
|
||||
|
|
@ -352,7 +352,7 @@ void sub_802C39C(void)
|
|||
local.unk0[0] = gUnknown_203B2E0->unk3C;
|
||||
local.unk4C = sub_8013800(&gUnknown_203B2E0->unk8,iVar6);
|
||||
sub_803B35C(mail,local.unk0);
|
||||
if (sub_80968B0(GetPelliperBoardSlotInfo(uVar1)) != '\0') {
|
||||
if (IsMailinJobSlot(GetPelliperBoardSlotInfo(uVar1))) {
|
||||
local.unk3C[11] = 2;
|
||||
}
|
||||
CreateRescueTitle(&local);
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ extern void sub_802D1B8();
|
|||
extern void sub_802D2A8();
|
||||
|
||||
|
||||
extern u8 sub_80968B0(struct WonderMail *);
|
||||
extern bool8 IsMailinJobSlot(struct WonderMail *);
|
||||
extern u8 sub_8096F50(struct WonderMail *);
|
||||
extern u8 sub_802DAA8(void);
|
||||
extern u8 sub_802DADC(void);
|
||||
|
|
@ -297,7 +297,7 @@ void sub_802D2A8(void)
|
|||
|
||||
switch(gUnknown_203B2F8->state) {
|
||||
case 0:
|
||||
if (sub_80968B0(&gUnknown_203B2F8->unkC->wonderMail) != 0) {
|
||||
if (IsMailinJobSlot(&gUnknown_203B2F8->unkC->wonderMail)) {
|
||||
sub_802D1A0(3);
|
||||
}
|
||||
else if (sub_8096F50(&gUnknown_203B2F8->unkC->wonderMail) != 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user