mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-08-28 04:15:44 -05:00
finished documentation
This commit is contained in:
50
include/battle_factory_save.h
Normal file
50
include/battle_factory_save.h
Normal file
@@ -0,0 +1,50 @@
|
||||
#ifndef POKEPLATINUM_BATTLE_FACTORY_SAVE_H
|
||||
#define POKEPLATINUM_BATTLE_FACTORY_SAVE_H
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
#define FACTORY_SAVE_OPEN_LEVEL 0
|
||||
#define FACTORY_SAVE_CHALLENGE_TYPE 1
|
||||
#define FACTORY_SAVE_CURRENT_BATTLE 2
|
||||
#define FACTORY_SAVE_TRAINER_IDS 3
|
||||
#define FACTORY_SAVE_PLAYER_SETS 4
|
||||
#define FACTORY_SAVE_PLAYER_IVS 5
|
||||
#define FACTORY_SAVE_PLAYER_PERSONALITY 6
|
||||
#define FACTORY_SAVE_OPPONENT_SETS 7
|
||||
#define FACTORY_SAVE_OPPONENT_IVS 8
|
||||
#define FACTORY_SAVE_OPPONENT_PERSONALITY 9
|
||||
#define FACTORY_SAVE_STREAK_FLAGS 10
|
||||
|
||||
typedef struct BattleFactoryStreakFlags {
|
||||
u8 streakActiveFlags;
|
||||
u8 unused[3];
|
||||
} BattleFactoryStreakFlags;
|
||||
|
||||
typedef struct BattleFactorySave {
|
||||
u8 isOpenLevel: 1;
|
||||
u8 challengeType: 3;
|
||||
u8 didSave: 1;
|
||||
u8 unused: 3;
|
||||
u8 currentBattleNum;
|
||||
u16 unused2;
|
||||
u16 trainerIDs[14];
|
||||
u16 playerPartySets[4];
|
||||
u8 playerIVs[4];
|
||||
u32 playerPersonality[4];
|
||||
u16 opponentPartySets[4];
|
||||
u8 opponentIVs[4];
|
||||
u32 opponentPersonality[4];
|
||||
} BattleFactorySave;
|
||||
|
||||
void BattleFactorySave_Init(BattleFactorySave *save);
|
||||
BattleFactorySave *BattleFactorySave_Get(SaveData *saveData);
|
||||
BOOL BattleFactorySave_HasSaved(BattleFactorySave *save);
|
||||
void BattleFactorySave_RecordSave(BattleFactorySave *save, BOOL didSave);
|
||||
void BattleFactorySave_SetMember(BattleFactorySave *save, u8 field, u8 index, const void *value);
|
||||
u32 BattleFactorySave_GetMember(BattleFactorySave *save, u8 field, u8 index, void *unused);
|
||||
void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags);
|
||||
void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value);
|
||||
u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused);
|
||||
BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData);
|
||||
|
||||
#endif // POKEPLATINUM_BATTLE_FACTORY_SAVE_H
|
||||
@@ -1,10 +1,9 @@
|
||||
#ifndef POKEPLATINUM_STRUCT_BATTLE_FACTORY_H
|
||||
#define POKEPLATINUM_STRUCT_BATTLE_FACTORY_H
|
||||
|
||||
#include "struct_defs/struct_0202FF58.h"
|
||||
|
||||
#include "overlay104/frontier_data_transfer.h"
|
||||
|
||||
#include "battle_factory_save.h"
|
||||
#include "field_battle_data_transfer.h"
|
||||
#include "party.h"
|
||||
#include "savedata.h"
|
||||
@@ -13,7 +12,7 @@
|
||||
typedef struct BattleFactory {
|
||||
int unk_00;
|
||||
u8 challengeType;
|
||||
u8 unk_05;
|
||||
u8 isOpenLevel;
|
||||
u8 unk_06;
|
||||
u8 unk_07;
|
||||
u16 unk_08;
|
||||
@@ -39,7 +38,7 @@ typedef struct BattleFactory {
|
||||
Party *opponentsParty;
|
||||
u16 unk_4DC[6];
|
||||
u16 unk_4E8[6];
|
||||
UnkStruct_0202FF58 *unk_4F4;
|
||||
BattleFactorySave *factorySave;
|
||||
SaveData *saveData;
|
||||
FieldBattleDTO *dto;
|
||||
SysTask *unk_500;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "struct_defs/struct_020305B8.h"
|
||||
#include "struct_defs/wifi_battle_tower_data.h"
|
||||
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "battle_factory_save.h"
|
||||
#include "battle_castle_save.h"
|
||||
#include "battle_hall_save.h"
|
||||
#include "wifi_list.h"
|
||||
@@ -23,7 +23,7 @@ typedef struct BattleFrontierSave {
|
||||
BattleFrontierStats stats;
|
||||
union {
|
||||
WifiBattleTowerSave wifiBattleTowerSave;
|
||||
UnkStruct_0202FF58 unk_8E0_val2;
|
||||
BattleFactorySave factorySave;
|
||||
BattleHallSave hallSave;
|
||||
BattleCastleSave castleSave;
|
||||
UnkStruct_020304A0 unk_8E0_val5;
|
||||
|
||||
@@ -1,20 +1,5 @@
|
||||
#ifndef POKEPLATINUM_STRUCT_0202FF58_H
|
||||
#define POKEPLATINUM_STRUCT_0202FF58_H
|
||||
|
||||
typedef struct {
|
||||
u8 unk_00_0 : 1;
|
||||
u8 challengeType: 3;
|
||||
u8 unk_00_4 : 1;
|
||||
u8 unused: 3;
|
||||
u8 unk_01; // likely battle num
|
||||
u16 unused2;
|
||||
u16 trainerIDs[14]; // almost certainly trainer ids
|
||||
u16 unk_20[4]; // species info??
|
||||
u8 playerIVs[4];
|
||||
u32 playerPersonality[4];
|
||||
u16 unk_3C[4]; // opponent species??
|
||||
u8 opponentIVs[4];
|
||||
u32 opponentPersonality[4];
|
||||
} UnkStruct_0202FF58;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0202FF58_H
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
#ifndef POKEPLATINUM_UNK_0202FF4C_H
|
||||
#define POKEPLATINUM_UNK_0202FF4C_H
|
||||
|
||||
#include "struct_defs/struct_0202FF58.h"
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
#define FACTORY_SAVE_STREAK_FLAGS 10
|
||||
|
||||
typedef struct BattleFactoryStreakFlags {
|
||||
u8 streakActiveFlags;
|
||||
u8 unused[3];
|
||||
} BattleFactoryStreakFlags;
|
||||
|
||||
void sub_0202FF4C(UnkStruct_0202FF58 *param0);
|
||||
UnkStruct_0202FF58 *sub_0202FF58(SaveData *saveData);
|
||||
BOOL sub_0202FF68(UnkStruct_0202FF58 *param0);
|
||||
void sub_0202FF70(UnkStruct_0202FF58 *param0, BOOL param1);
|
||||
void sub_0202FF84(UnkStruct_0202FF58 *param0, u8 field, u8 index, const void *value);
|
||||
u32 sub_02030030(UnkStruct_0202FF58 *param0, u8 field, u8 index, void *unused);
|
||||
void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags);
|
||||
void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value);
|
||||
u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused);
|
||||
BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData);
|
||||
|
||||
#endif // POKEPLATINUM_UNK_0202FF4C_H
|
||||
@@ -143,7 +143,7 @@ Static main
|
||||
Object main.nef.p/src_link_contest_records.c.o
|
||||
Object main.nef.p/src_save_catchrecords.c.o
|
||||
Object main.nef.p/src_unk_0202F1D4.c.o
|
||||
Object main.nef.p/src_unk_0202FF4C.c.o
|
||||
Object main.nef.p/src_battle_factory_save.c.o
|
||||
Object main.nef.p/src_battle_hall_save.c.o
|
||||
Object main.nef.p/src_battle_castle_save.c.o
|
||||
Object main.nef.p/src_unk_02030494.c.o
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include "string_template.h"
|
||||
#include "system.h"
|
||||
#include "text.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "battle_factory_save.h"
|
||||
#include "unk_02030494.h"
|
||||
#include "wifi_battle_tower_save.h"
|
||||
|
||||
|
||||
130
src/battle_factory_save.c
Normal file
130
src/battle_factory_save.c
Normal file
@@ -0,0 +1,130 @@
|
||||
#include "battle_factory_save.h"
|
||||
|
||||
#include <nitro.h>
|
||||
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
void BattleFactorySave_Init(BattleFactorySave *save)
|
||||
{
|
||||
MI_CpuClear8(save, sizeof(BattleFactorySave));
|
||||
}
|
||||
|
||||
BattleFactorySave *BattleFactorySave_Get(SaveData *saveData)
|
||||
{
|
||||
BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER);
|
||||
return &frontier->factorySave;
|
||||
}
|
||||
|
||||
BOOL BattleFactorySave_HasSaved(BattleFactorySave *save)
|
||||
{
|
||||
return save->didSave;
|
||||
}
|
||||
|
||||
void BattleFactorySave_RecordSave(BattleFactorySave *save, BOOL didSave)
|
||||
{
|
||||
save->didSave = didSave;
|
||||
}
|
||||
|
||||
// set value
|
||||
void BattleFactorySave_SetMember(BattleFactorySave *save, u8 field, u8 index, const void *value)
|
||||
{
|
||||
switch (field) {
|
||||
case FACTORY_SAVE_OPEN_LEVEL:
|
||||
save->isOpenLevel = *(u8 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_CHALLENGE_TYPE:
|
||||
save->challengeType = *(u8 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_CURRENT_BATTLE:
|
||||
save->currentBattleNum = *(u8 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_TRAINER_IDS:
|
||||
save->trainerIDs[index] = *(u16 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_PLAYER_SETS:
|
||||
save->playerPartySets[index] = *(u16 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_PLAYER_IVS:
|
||||
save->playerIVs[index] = *(u8 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_PLAYER_PERSONALITY:
|
||||
save->playerPersonality[index] = *(u32 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_OPPONENT_SETS:
|
||||
save->opponentPartySets[index] = *(u16 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_OPPONENT_IVS:
|
||||
save->opponentIVs[index] = *(u8 *)value;
|
||||
break;
|
||||
case FACTORY_SAVE_OPPONENT_PERSONALITY:
|
||||
save->opponentPersonality[index] = *(u32 *)value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u32 BattleFactorySave_GetMember(BattleFactorySave *save, u8 field, u8 index, void *unused)
|
||||
{
|
||||
switch (field) {
|
||||
case FACTORY_SAVE_CHALLENGE_TYPE:
|
||||
return (u32)save->challengeType;
|
||||
case FACTORY_SAVE_OPEN_LEVEL:
|
||||
return (u32)save->isOpenLevel;
|
||||
case FACTORY_SAVE_CURRENT_BATTLE:
|
||||
return (u32)save->currentBattleNum;
|
||||
case FACTORY_SAVE_TRAINER_IDS:
|
||||
return (u32)save->trainerIDs[index];
|
||||
case FACTORY_SAVE_PLAYER_SETS:
|
||||
return (u32)save->playerPartySets[index];
|
||||
case FACTORY_SAVE_PLAYER_IVS:
|
||||
return (u32)save->playerIVs[index];
|
||||
case FACTORY_SAVE_PLAYER_PERSONALITY:
|
||||
return (u32)save->playerPersonality[index];
|
||||
case FACTORY_SAVE_OPPONENT_SETS:
|
||||
return (u32)save->opponentPartySets[index];
|
||||
case FACTORY_SAVE_OPPONENT_IVS:
|
||||
return (u32)save->opponentIVs[index];
|
||||
case FACTORY_SAVE_OPPONENT_PERSONALITY:
|
||||
return (u32)save->opponentPersonality[index];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags)
|
||||
{
|
||||
MI_CpuClear8(flags, sizeof(BattleFactoryStreakFlags));
|
||||
}
|
||||
|
||||
void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value)
|
||||
{
|
||||
u8 *value_dupe = (u8 *)value;
|
||||
switch (field) {
|
||||
case FACTORY_SAVE_STREAK_FLAGS:
|
||||
if (*value_dupe >= 1) {
|
||||
flags->streakActiveFlags |= (1 << challengeType);
|
||||
} else {
|
||||
flags->streakActiveFlags &= (0xff ^ (1 << challengeType));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused)
|
||||
{
|
||||
switch (field) {
|
||||
case FACTORY_SAVE_STREAK_FLAGS:
|
||||
return (u32)((flags->streakActiveFlags >> challengeType) & 0x1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData)
|
||||
{
|
||||
BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER);
|
||||
return &frontier->factory.streakFlags;
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "battle_castle_save.h"
|
||||
#include "battle_hall_save.h"
|
||||
#include "savedata.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "battle_factory_save.h"
|
||||
#include "unk_02030494.h"
|
||||
#include "wifi_battle_tower_save.h"
|
||||
#include "wifi_list.h"
|
||||
|
||||
@@ -132,7 +132,7 @@ pokeplatinum_c = files(
|
||||
'link_contest_records.c',
|
||||
'save_catchrecords.c',
|
||||
'unk_0202F1D4.c',
|
||||
'unk_0202FF4C.c',
|
||||
'battle_factory_save.c',
|
||||
'battle_hall_save.c',
|
||||
'battle_castle_save.c',
|
||||
'unk_02030494.c',
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "string_template.h"
|
||||
#include "sys_task.h"
|
||||
#include "sys_task_manager.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "battle_factory_save.h"
|
||||
#include "unk_0209BA80.h"
|
||||
|
||||
#include "constdata/const_020EA358.h"
|
||||
@@ -93,7 +93,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx)
|
||||
|
||||
args->saveData = fieldData->saveData;
|
||||
args->challengeType = battleFactory->challengeType;
|
||||
args->unk_05 = battleFactory->unk_05;
|
||||
args->unk_05 = battleFactory->isOpenLevel;
|
||||
args->isExchangeMode = FALSE;
|
||||
args->personalParty = battleFactory->playersParty;
|
||||
args->receivableParty = battleFactory->opponentsParty;
|
||||
@@ -151,7 +151,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx)
|
||||
|
||||
args->saveData = fieldData->saveData;
|
||||
args->challengeType = battleFactory->challengeType;
|
||||
args->unk_05 = battleFactory->unk_05;
|
||||
args->unk_05 = battleFactory->isOpenLevel;
|
||||
args->isExchangeMode = TRUE;
|
||||
args->personalParty = battleFactory->playersParty;
|
||||
args->receivableParty = battleFactory->opponentsParty;
|
||||
@@ -216,7 +216,7 @@ BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx)
|
||||
battleFactory->unk_07 = arg1;
|
||||
break;
|
||||
case BF_FUNC_UNK_1:
|
||||
battleFactory->unk_05 = arg1;
|
||||
battleFactory->isOpenLevel = arg1;
|
||||
break;
|
||||
case BF_FUNC_SET_CHALLENGE_TYPE:
|
||||
battleFactory->challengeType = arg1;
|
||||
@@ -236,7 +236,7 @@ BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx)
|
||||
OS_ResetSystem(0);
|
||||
break;
|
||||
case BF_FUNC_UNK_9:
|
||||
*returnVar = sub_0202FF68(battleFactory->unk_4F4);
|
||||
*returnVar = BattleFactorySave_HasSaved(battleFactory->factorySave);
|
||||
break;
|
||||
case BF_FUNC_UNK_10:
|
||||
ov104_02234148(battleFactory, 2);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "generated/game_records.h"
|
||||
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/struct_0202FF58.h"
|
||||
|
||||
#include "overlay104/ov104_0222DCE0.h"
|
||||
#include "overlay104/ov104_0222ECE8.h"
|
||||
@@ -22,7 +21,7 @@
|
||||
#include "pokemon.h"
|
||||
#include "savedata.h"
|
||||
#include "system_vars.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "battle_factory_save.h"
|
||||
#include "vars_flags.h"
|
||||
|
||||
void ov104_02233B98(BattleFactory *param0, u16 param1);
|
||||
@@ -47,7 +46,7 @@ u16 ov104_022347F8(BattleFactory *param0);
|
||||
|
||||
BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 param3)
|
||||
{
|
||||
UnkStruct_0202FF58 *v0;
|
||||
BattleFactorySave *v0;
|
||||
BattleFactoryStreakFlags *v1;
|
||||
const UnkStruct_ov104_0224028C *v2;
|
||||
u8 v3;
|
||||
@@ -58,24 +57,24 @@ BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 para
|
||||
v7 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactory));
|
||||
MI_CpuClear8(v7, sizeof(BattleFactory));
|
||||
|
||||
v7->unk_4F4 = sub_0202FF58(saveData);
|
||||
v7->factorySave = BattleFactorySave_Get(saveData);
|
||||
v7->saveData = saveData;
|
||||
v7->unk_00 = 11;
|
||||
v7->playersParty = Party_New(HEAP_ID_FIELD2);
|
||||
v7->opponentsParty = Party_New(HEAP_ID_FIELD2);
|
||||
|
||||
v0 = v7->unk_4F4;
|
||||
v0 = v7->factorySave;
|
||||
v1 = BattleFactoryStreakFlags_Get(saveData);
|
||||
|
||||
if (param1 == 0) {
|
||||
v7->challengeType = param2;
|
||||
v7->unk_05 = param3;
|
||||
v7->isOpenLevel= param3;
|
||||
v7->unk_06 = 0;
|
||||
|
||||
sub_0202FF4C(v0);
|
||||
BattleFactorySave_Init(v0);
|
||||
|
||||
if (v7->challengeType == 3) {
|
||||
if (v7->unk_05 == 0) {
|
||||
if (v7->isOpenLevel== 0) {
|
||||
v6 = 102;
|
||||
} else {
|
||||
v6 = 104;
|
||||
@@ -83,12 +82,12 @@ BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 para
|
||||
|
||||
v3 = SystemVars_GetWiFiFrontierCleared(SaveData_GetVarsFlags(v7->saveData));
|
||||
} else {
|
||||
v3 = (u8)BattleFactoryStreakFlags_GetFlag(v1, 10, (v7->unk_05 * 4) + v7->challengeType, NULL);
|
||||
v3 = (u8)BattleFactoryStreakFlags_GetFlag(v1, 10, (v7->isOpenLevel * 4) + v7->challengeType, NULL);
|
||||
}
|
||||
|
||||
if (v3 == 1) {
|
||||
v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType));
|
||||
v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType));
|
||||
v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->isOpenLevel, v7->challengeType));
|
||||
v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->isOpenLevel, v7->challengeType));
|
||||
} else {
|
||||
v7->currentStreak = 0;
|
||||
v7->unk_08 = 0;
|
||||
@@ -96,11 +95,11 @@ BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 para
|
||||
|
||||
v7->unk_10 = 0;
|
||||
} else {
|
||||
v7->challengeType = (u8)sub_02030030(v0, 1, 0, NULL);
|
||||
v7->unk_05 = (u8)sub_02030030(v0, 0, 0, NULL);
|
||||
v7->unk_06 = (u8)sub_02030030(v0, 2, 0, NULL);
|
||||
v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType));
|
||||
v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType));
|
||||
v7->isOpenLevel= (u8)BattleFactorySave_GetMember(v0, 1, 0, NULL);
|
||||
v7->challengeType = (u8)BattleFactorySave_GetMember(v0, 0, 0, NULL);
|
||||
v7->unk_06 = (u8)BattleFactorySave_GetMember(v0, 2, 0, NULL);
|
||||
v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->isOpenLevel, v7->challengeType));
|
||||
v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->isOpenLevel, v7->challengeType));
|
||||
}
|
||||
|
||||
v7->unk_0E = (u16)(v7->currentStreak / 7);
|
||||
@@ -133,7 +132,7 @@ static void ov104_02233BAC(BattleFactory *param0)
|
||||
|
||||
ov104_0223A860(param0->challengeType, ov104_0223AF34(param0), param0->trainerIDs, 7 * 2);
|
||||
|
||||
ov104_0223AAA0(ov104_0223AF34(param0), param0->unk_05, param0->unk_254, param0->unk_280, param0->unk_260, param0->unk_268, param0->unk_08, NULL, NULL);
|
||||
ov104_0223AAA0(ov104_0223AF34(param0), param0->isOpenLevel, param0->unk_254, param0->unk_280, param0->unk_260, param0->unk_268, param0->unk_08, NULL, NULL);
|
||||
|
||||
ov104_02233D80(param0, 4, 0);
|
||||
ov104_02233D80(param0, 5, 0);
|
||||
@@ -150,7 +149,7 @@ static void ov104_02233BAC(BattleFactory *param0)
|
||||
v6[v0] = param0->unk_280[v0].item;
|
||||
}
|
||||
|
||||
ov104_0223AAA0(ov104_0223AF34(param0), param0->unk_05, param0->unk_584, param0->unk_5B0, param0->unk_590, param0->unk_598, param0->unk_580, v5, v6);
|
||||
ov104_0223AAA0(ov104_0223AF34(param0), param0->isOpenLevel, param0->unk_584, param0->unk_5B0, param0->unk_590, param0->unk_598, param0->unk_580, v5, v6);
|
||||
|
||||
ov104_02233D80(param0, 4, 1);
|
||||
ov104_02233D80(param0, 5, 1);
|
||||
@@ -162,7 +161,7 @@ static void ov104_02233BAC(BattleFactory *param0)
|
||||
}
|
||||
}
|
||||
|
||||
ov104_0223AB0C(BattleFactory_GetOpponentPartySize(param0->challengeType, 1), param0->trainerIDs[param0->unk_06], param0->unk_05, v2, param0->unk_3D2, param0->unk_3F0, param0->unk_3DA, param0->unk_3E0, v1);
|
||||
ov104_0223AB0C(BattleFactory_GetOpponentPartySize(param0->challengeType, 1), param0->trainerIDs[param0->unk_06], param0->isOpenLevel, v2, param0->unk_3D2, param0->unk_3F0, param0->unk_3DA, param0->unk_3E0, v1);
|
||||
|
||||
for (v0 = 0; v0 < 6; v0++) {
|
||||
v4 = Pokemon_New(HEAP_ID_FIELD2);
|
||||
@@ -234,13 +233,13 @@ static void ov104_02233F1C(BattleFactory *param0)
|
||||
u8 v3 = BattleFactory_GetPlayerPartySize(param0->challengeType);
|
||||
|
||||
for (v0 = 0; v0 < (7 * 2); v0++) {
|
||||
param0->trainerIDs[v0] = (u16)sub_02030030(param0->unk_4F4, 3, v0, NULL);
|
||||
param0->trainerIDs[v0] = (u16)BattleFactorySave_GetMember(param0->factorySave, 3, v0, NULL);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v6[v0] = (u16)sub_02030030(param0->unk_4F4, 4, v0, NULL);
|
||||
v7[v0] = (u32)sub_02030030(param0->unk_4F4, 6, v0, NULL);
|
||||
v5[v0] = (u8)sub_02030030(param0->unk_4F4, 5, v0, NULL);
|
||||
v6[v0] = (u16)BattleFactorySave_GetMember(param0->factorySave, 4, v0, NULL);
|
||||
v7[v0] = (u32)BattleFactorySave_GetMember(param0->factorySave, 6, v0, NULL);
|
||||
v5[v0] = (u8)BattleFactorySave_GetMember(param0->factorySave, 5, v0, NULL);
|
||||
|
||||
param0->unk_4E8[v0] = v6[v0];
|
||||
}
|
||||
@@ -257,9 +256,9 @@ static void ov104_02233F1C(BattleFactory *param0)
|
||||
Heap_Free(v1);
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v6[v0] = (u16)sub_02030030(param0->unk_4F4, 7, v0, NULL);
|
||||
v7[v0] = (u32)sub_02030030(param0->unk_4F4, 9, v0, NULL);
|
||||
v5[v0] = (u8)sub_02030030(param0->unk_4F4, 8, v0, NULL);
|
||||
v6[v0] = (u16)BattleFactorySave_GetMember(param0->factorySave, 7, v0, NULL);
|
||||
v7[v0] = (u32)BattleFactorySave_GetMember(param0->factorySave, 9, v0, NULL);
|
||||
v5[v0] = (u8)BattleFactorySave_GetMember(param0->factorySave, 8, v0, NULL);
|
||||
|
||||
param0->unk_3D2[v0] = v6[v0];
|
||||
}
|
||||
@@ -329,41 +328,41 @@ void ov104_02234148(BattleFactory *param0, u8 param1)
|
||||
u32 v8, v9, v10;
|
||||
BattleFrontierSave *frontier;
|
||||
Pokemon *v12;
|
||||
UnkStruct_0202FF58 *v13 = param0->unk_4F4;
|
||||
BattleFactorySave *v13 = param0->factorySave;
|
||||
BattleFactoryStreakFlags *v14 = BattleFactoryStreakFlags_Get(param0->saveData);
|
||||
|
||||
frontier = SaveData_GetBattleFrontier(param0->saveData);
|
||||
v3 = BattleFactory_GetPlayerPartySize(param0->challengeType);
|
||||
v4 = BattleFactory_GetOpponentPartySize(param0->challengeType, 1);
|
||||
|
||||
v5[0] = param0->unk_05;
|
||||
sub_0202FF84(param0->unk_4F4, 0, 0, v5);
|
||||
v5[0] = param0->isOpenLevel;
|
||||
BattleFactorySave_SetMember(param0->factorySave, 0, 0, v5);
|
||||
|
||||
v5[0] = param0->challengeType;
|
||||
sub_0202FF84(param0->unk_4F4, 1, 0, v5);
|
||||
sub_0202FF70(param0->unk_4F4, 1);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 1, 0, v5);
|
||||
BattleFactorySave_RecordSave(param0->factorySave, 1);
|
||||
|
||||
v5[0] = param0->unk_06;
|
||||
sub_0202FF84(param0->unk_4F4, 2, 0, v5);
|
||||
BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->unk_05, param0->challengeType), param0->unk_08);
|
||||
BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestStreakIdx(param0->unk_05, param0->challengeType), param0->currentStreak);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 2, 0, v5);
|
||||
BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->isOpenLevel, param0->challengeType), param0->unk_08);
|
||||
BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestStreakIdx(param0->isOpenLevel, param0->challengeType), param0->currentStreak);
|
||||
|
||||
if (param1 != 2) {
|
||||
v1 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType));
|
||||
v8 = BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType), param0->currentStreak);
|
||||
v2 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType));
|
||||
v1 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->isOpenLevel, param0->challengeType));
|
||||
v8 = BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->isOpenLevel, param0->challengeType), param0->currentStreak);
|
||||
v2 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->isOpenLevel, param0->challengeType));
|
||||
|
||||
if (param0->currentStreak == v1) {
|
||||
BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType), param0->unk_08);
|
||||
BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->isOpenLevel, param0->challengeType), param0->unk_08);
|
||||
} else if (v1 < v2) {
|
||||
BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType), param0->unk_08);
|
||||
BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->isOpenLevel, param0->challengeType), param0->unk_08);
|
||||
}
|
||||
|
||||
v5[0] = param0->unk_0A;
|
||||
BattleFactoryStreakFlags_SetFlag(v14, 10, (param0->unk_05 * 4) + param0->challengeType, v5);
|
||||
BattleFactoryStreakFlags_SetFlag(v14, 10, (param0->isOpenLevel * 4) + param0->challengeType, v5);
|
||||
|
||||
if (param0->challengeType == 3) {
|
||||
if (param0->unk_05 == 0) {
|
||||
if (param0->isOpenLevel == 0) {
|
||||
v10 = 102;
|
||||
} else {
|
||||
v10 = 104;
|
||||
@@ -375,7 +374,7 @@ void ov104_02234148(BattleFactory *param0, u8 param1)
|
||||
|
||||
for (v0 = 0; v0 < (7 * 2); v0++) {
|
||||
v6[0] = param0->trainerIDs[v0];
|
||||
sub_0202FF84(param0->unk_4F4, 3, v0, v6);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 3, v0, v6);
|
||||
}
|
||||
|
||||
v9 = Party_GetCurrentCount(param0->playersParty);
|
||||
@@ -384,13 +383,13 @@ void ov104_02234148(BattleFactory *param0, u8 param1)
|
||||
v12 = Party_GetPokemonBySlotIndex(param0->playersParty, v0);
|
||||
|
||||
v6[0] = param0->unk_4E8[v0];
|
||||
sub_0202FF84(param0->unk_4F4, 4, v0, v6);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 4, v0, v6);
|
||||
|
||||
v5[0] = Pokemon_GetValue(v12, MON_DATA_ATK_IV, NULL);
|
||||
sub_0202FF84(param0->unk_4F4, 5, v0, v5);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 5, v0, v5);
|
||||
|
||||
v7[0] = Pokemon_GetValue(v12, MON_DATA_PERSONALITY, NULL);
|
||||
sub_0202FF84(param0->unk_4F4, 6, v0, v7);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 6, v0, v7);
|
||||
}
|
||||
|
||||
v9 = Party_GetCurrentCount(param0->opponentsParty);
|
||||
@@ -399,13 +398,13 @@ void ov104_02234148(BattleFactory *param0, u8 param1)
|
||||
v12 = Party_GetPokemonBySlotIndex(param0->opponentsParty, v0);
|
||||
|
||||
v6[0] = param0->unk_3D2[v0];
|
||||
sub_0202FF84(param0->unk_4F4, 7, v0, v6);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 7, v0, v6);
|
||||
|
||||
v5[0] = Pokemon_GetValue(v12, MON_DATA_ATK_IV, NULL);
|
||||
sub_0202FF84(param0->unk_4F4, 8, v0, v5);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 8, v0, v5);
|
||||
|
||||
v7[0] = Pokemon_GetValue(v12, MON_DATA_PERSONALITY, NULL);
|
||||
sub_0202FF84(param0->unk_4F4, 9, v0, v7);
|
||||
BattleFactorySave_SetMember(param0->factorySave, 9, v0, v7);
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -516,7 +515,7 @@ void ov104_02234570(BattleFactory *param0)
|
||||
param0->unk_254[v0] = param0->unk_3D2[v0];
|
||||
}
|
||||
|
||||
v7 = ov104_0223A8A8(param0->trainerIDs[param0->unk_06], param0->unk_05);
|
||||
v7 = ov104_0223A8A8(param0->trainerIDs[param0->unk_06], param0->isOpenLevel);
|
||||
|
||||
ov104_0223A918(v4, v5, v2 + v1, v3, param0->unk_3D2, 11, v7, 0, param0->unk_3DA);
|
||||
ov104_0222E330(param0->unk_3F0, param0->unk_3D2, param0->unk_3DA, NULL, param0->unk_3E0, v3, 11, 179);
|
||||
|
||||
@@ -421,7 +421,7 @@ static u32 BattleFactory_GetBattleType(u8 challengeType)
|
||||
|
||||
u8 BattleFactory_GetPokemonLevel(BattleFactory *battleFactory)
|
||||
{
|
||||
if (battleFactory->unk_05 == 0) {
|
||||
if (battleFactory->isOpenLevel == 0) {
|
||||
return 50;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
#include "unk_0202FF4C.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/struct_0202FF58.h"
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
void sub_0202FF4C(UnkStruct_0202FF58 *param0);
|
||||
void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags);
|
||||
void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value);
|
||||
u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused);
|
||||
BOOL sub_0202FF68(UnkStruct_0202FF58 *param0);
|
||||
void sub_0202FF70(UnkStruct_0202FF58 *param0, BOOL param1);
|
||||
void sub_0202FF84(UnkStruct_0202FF58 *param0, u8 field, u8 index, const void *value);
|
||||
u32 sub_02030030(UnkStruct_0202FF58 *param0, u8 field, u8 index, void *unused);
|
||||
|
||||
void sub_0202FF4C(UnkStruct_0202FF58 *param0)
|
||||
{
|
||||
MI_CpuClear8(param0, sizeof(UnkStruct_0202FF58));
|
||||
return;
|
||||
}
|
||||
|
||||
UnkStruct_0202FF58 *sub_0202FF58(SaveData *saveData)
|
||||
{
|
||||
BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER);
|
||||
return &frontier->unk_8E0_val2; // fetch the save file
|
||||
}
|
||||
|
||||
BOOL sub_0202FF68(UnkStruct_0202FF58 *param0)
|
||||
{
|
||||
return param0->unk_00_4; // fetch 2nd :1
|
||||
}
|
||||
|
||||
void sub_0202FF70(UnkStruct_0202FF58 *param0, BOOL param1)
|
||||
{
|
||||
param0->unk_00_4 = param1; // set 2nd :1
|
||||
}
|
||||
|
||||
// set value
|
||||
void sub_0202FF84(UnkStruct_0202FF58 *param0, u8 field, u8 index, const void *value)
|
||||
{
|
||||
u32 *v0 = (u32 *)value;
|
||||
u16 *v1 = (u16 *)value;
|
||||
u8 *v2 = (u8 *)value;
|
||||
|
||||
switch (field) {
|
||||
case 0:
|
||||
param0->unk_00_0 = v2[0];
|
||||
break;
|
||||
case 1:
|
||||
param0->challengeType = v2[0];
|
||||
break;
|
||||
case 2:
|
||||
param0->unk_01 = v2[0];
|
||||
break;
|
||||
case 3:
|
||||
param0->trainerIDs[index] = v1[0];
|
||||
break;
|
||||
case 4:
|
||||
param0->unk_20[index] = v1[0];
|
||||
break;
|
||||
case 5:
|
||||
param0->playerIVs[index] = v2[0];
|
||||
break;
|
||||
case 6:
|
||||
param0->playerPersonality[index] = v0[0];
|
||||
break;
|
||||
case 7:
|
||||
param0->unk_3C[index] = v1[0];
|
||||
break;
|
||||
case 8:
|
||||
param0->opponentIVs[index] = v2[0];
|
||||
break;
|
||||
case 9:
|
||||
param0->opponentPersonality[index] = v0[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
// v7->challengeType = (u8)sub_02030030(v0, 1, 0, NULL);
|
||||
// v7->unk_05 = (u8)sub_02030030(v0, 0, 0, NULL);
|
||||
// v7->unk_06 = (u8)sub_02030030(v0, 2, 0, NULL);
|
||||
// param0->trainerIDs[v0] = (u16)sub_02030030(param0->unk_4F4, 3, v0, NULL);
|
||||
// get value
|
||||
u32 sub_02030030(UnkStruct_0202FF58 *param0, u8 field, u8 index, void *unused)
|
||||
{
|
||||
switch (field) {
|
||||
case 1:
|
||||
return (u32)param0->challengeType;
|
||||
case 0:
|
||||
return (u32)param0->unk_00_0;
|
||||
case 2:
|
||||
return (u32)param0->unk_01;
|
||||
case 3:
|
||||
return (u32)param0->trainerIDs[index];
|
||||
case 4:
|
||||
return (u32)param0->unk_20[index];
|
||||
case 5:
|
||||
return (u32)param0->playerIVs[index];
|
||||
case 6:
|
||||
return (u32)param0->playerPersonality[index];
|
||||
case 7:
|
||||
return (u32)param0->unk_3C[index];
|
||||
case 8:
|
||||
return (u32)param0->opponentIVs[index];
|
||||
case 9:
|
||||
return (u32)param0->opponentPersonality[index];
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags)
|
||||
{
|
||||
MI_CpuClear8(flags, sizeof(BattleFactoryStreakFlags));
|
||||
}
|
||||
|
||||
void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value)
|
||||
{
|
||||
u8 *value_dupe = (u8 *)value;
|
||||
switch (field) {
|
||||
case FACTORY_SAVE_STREAK_FLAGS:
|
||||
if (*value_dupe >= 1) {
|
||||
flags->streakActiveFlags |= (1 << challengeType);
|
||||
} else {
|
||||
flags->streakActiveFlags &= (0xff ^ (1 << challengeType));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
GF_ASSERT(FALSE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused)
|
||||
{
|
||||
switch (field) {
|
||||
case FACTORY_SAVE_STREAK_FLAGS:
|
||||
return (u32)((flags->streakActiveFlags >> challengeType) & 0x1);
|
||||
default:
|
||||
GF_ASSERT(FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData)
|
||||
{
|
||||
BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER);
|
||||
return &frontier->factory.streakFlags;
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "battle_frontier_stats.h"
|
||||
#include "field_script_context.h"
|
||||
#include "inlines.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "battle_factory_save.h"
|
||||
|
||||
BOOL ScrCmd_2C5(ScriptContext *param0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user