mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-06 16:16:28 -05:00
event_data -> save_vars_flags
This commit is contained in:
@@ -182,7 +182,7 @@ Static arm9
|
||||
Object scrcmd_move_relearner.o
|
||||
Object scrcmd_25.o
|
||||
Object unk_02046030.o
|
||||
Object event_data.o
|
||||
Object save_vars_flags.o
|
||||
Object task.o
|
||||
Object encounter.o
|
||||
Object unk_02047500.o
|
||||
|
||||
@@ -1958,7 +1958,7 @@ _020394D0:
|
||||
cmp r4, r1
|
||||
bhs _020394DE
|
||||
add r1, r4, #0x0
|
||||
bl GetVarAddr
|
||||
bl Save_VarsFlags_GetVarAddr
|
||||
pop {r3-r5, pc}
|
||||
_020394DE:
|
||||
ldr r1, _020394EC ; =0x00007FD7
|
||||
@@ -2008,7 +2008,7 @@ FlagCheck: ; 0x02039528
|
||||
add r4, r1, #0x0
|
||||
bl Save_VarsFlags_Get
|
||||
add r1, r4, #0x0
|
||||
bl CheckFlagInArray
|
||||
bl Save_VarsFlags_CheckFlagInArray
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
@@ -2019,7 +2019,7 @@ FieldSystem_FlagSet: ; 0x0203953C
|
||||
add r4, r1, #0x0
|
||||
bl Save_VarsFlags_Get
|
||||
add r1, r4, #0x0
|
||||
bl SetFlagInArray
|
||||
bl Save_VarsFlags_SetFlagInArray
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
@@ -2030,7 +2030,7 @@ FlagClear: ; 0x02039550
|
||||
add r4, r1, #0x0
|
||||
bl Save_VarsFlags_Get
|
||||
add r1, r4, #0x0
|
||||
bl ClearFlagInArray
|
||||
bl Save_VarsFlags_ClearFlagInArray
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
@@ -2041,7 +2041,7 @@ ResetTempFlagsAndVars: ; 0x02039564
|
||||
bl Save_VarsFlags_Get
|
||||
mov r1, #0x1
|
||||
add r4, r0, #0x0
|
||||
bl GetFlagAddr
|
||||
bl Save_VarsFlags_GetFlagAddr
|
||||
mov r1, #0x0
|
||||
strb r1, [r0, #0x0]
|
||||
strb r1, [r0, #0x1]
|
||||
@@ -2054,7 +2054,7 @@ ResetTempFlagsAndVars: ; 0x02039564
|
||||
mov r1, #0x1
|
||||
add r0, r4, #0x0
|
||||
lsl r1, r1, #0xe
|
||||
bl GetVarAddr
|
||||
bl Save_VarsFlags_GetVarAddr
|
||||
mov r1, #0x0
|
||||
mov r2, #0x40
|
||||
bl memset
|
||||
@@ -2068,7 +2068,7 @@ sub_0203959C: ; 0x0203959C
|
||||
bl Save_VarsFlags_Get
|
||||
mov r1, #0xaa
|
||||
lsl r1, r1, #0x4
|
||||
bl GetFlagAddr
|
||||
bl Save_VarsFlags_GetFlagAddr
|
||||
mov r2, #0x18
|
||||
mov r1, #0x0
|
||||
_020395B0:
|
||||
@@ -2163,7 +2163,7 @@ TrainerFlagCheck: ; 0x02039640
|
||||
add r1, r4, r1
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
bl CheckFlagInArray
|
||||
bl Save_VarsFlags_CheckFlagInArray
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
@@ -2178,7 +2178,7 @@ TrainerFieldSystem_FlagSet: ; 0x0203965C
|
||||
add r1, r4, r1
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
bl SetFlagInArray
|
||||
bl Save_VarsFlags_SetFlagInArray
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
@@ -2193,7 +2193,7 @@ TrainerFlagClear: ; 0x02039678
|
||||
add r1, r4, r1
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
bl ClearFlagInArray
|
||||
bl Save_VarsFlags_ClearFlagInArray
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ sub_0205F314: ; 0x0205F314
|
||||
push {r3-r5, lr}
|
||||
add r5, r1, #0x0
|
||||
add r4, r2, #0x0
|
||||
bl GetVarAddr
|
||||
bl Save_VarsFlags_GetVarAddr
|
||||
mov r1, #0x1
|
||||
lsl r1, r1, #0xe
|
||||
cmp r5, r1
|
||||
@@ -44,7 +44,7 @@ _0205F33C:
|
||||
thumb_func_start sub_0205F344
|
||||
sub_0205F344: ; 0x0205F344
|
||||
push {r3, lr}
|
||||
bl GetVarAddr
|
||||
bl Save_VarsFlags_GetVarAddr
|
||||
cmp r0, #0x0
|
||||
bne _0205F352
|
||||
mov r0, #0x0
|
||||
|
||||
@@ -3423,11 +3423,11 @@
|
||||
.extern Save_VarsFlags_sizeof
|
||||
.extern Save_VarsFlags_Init
|
||||
.extern Save_VarsFlags_Get
|
||||
.extern CheckFlagInArray
|
||||
.extern SetFlagInArray
|
||||
.extern ClearFlagInArray
|
||||
.extern GetFlagAddr
|
||||
.extern GetVarAddr
|
||||
.extern Save_VarsFlags_CheckFlagInArray
|
||||
.extern Save_VarsFlags_SetFlagInArray
|
||||
.extern Save_VarsFlags_ClearFlagInArray
|
||||
.extern Save_VarsFlags_GetFlagAddr
|
||||
.extern Save_VarsFlags_GetVarAddr
|
||||
.extern FieldSystem_CreateTask
|
||||
.extern TaskManager_Jump
|
||||
.extern TaskManager_Call
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define POKEDIAMOND_OVERLAY_52_H
|
||||
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "main.h"
|
||||
#include "math_util.h"
|
||||
#include "options.h"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "encounter.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/game_stats.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "field_system.h"
|
||||
#include "igt.h"
|
||||
#include "task.h"
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "save.h"
|
||||
#include "event_data.h"
|
||||
|
||||
u8 UNK_021C5A14[8];
|
||||
|
||||
u8 * GetFlagAddr(struct SaveVarsFlags * state, u16 flag_id);
|
||||
|
||||
u32 Save_VarsFlags_sizeof(void)
|
||||
{
|
||||
return sizeof(struct SaveVarsFlags);
|
||||
}
|
||||
|
||||
void Save_VarsFlags_Init(struct SaveVarsFlags * state)
|
||||
{
|
||||
memset(state, 0, sizeof(struct SaveVarsFlags));
|
||||
}
|
||||
|
||||
struct SaveVarsFlags * Save_VarsFlags_Get(struct SaveData * save)
|
||||
{
|
||||
return (struct SaveVarsFlags *)SaveArray_Get(save, 4);
|
||||
}
|
||||
|
||||
BOOL CheckFlagInArray(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
u8 * ptr = GetFlagAddr(state, flag_id);
|
||||
if (ptr != NULL)
|
||||
{
|
||||
int mask = 1 << (flag_id % 8);
|
||||
if (*ptr & mask)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void SetFlagInArray(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
u8 * ptr = GetFlagAddr(state, flag_id);
|
||||
if (ptr != NULL)
|
||||
{
|
||||
int mask = 1 << (flag_id % 8);
|
||||
*ptr |= mask;
|
||||
}
|
||||
}
|
||||
|
||||
void ClearFlagInArray(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
u8 * ptr = GetFlagAddr(state, flag_id);
|
||||
if (ptr != NULL)
|
||||
{
|
||||
int mask = 1 << (flag_id % 8);
|
||||
*ptr &= 0xFF ^ mask;
|
||||
}
|
||||
}
|
||||
|
||||
u8 * GetFlagAddr(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
if (flag_id == 0)
|
||||
return 0;
|
||||
if (flag_id < 0x4000)
|
||||
{
|
||||
GF_ASSERT((flag_id / 8) < 364);
|
||||
return &state->flags[flag_id / 8];
|
||||
}
|
||||
else
|
||||
{
|
||||
GF_ASSERT(((flag_id - 0x4000) / 8) < 8);
|
||||
return &UNK_021C5A14[(flag_id - 0x4000) / 8];
|
||||
}
|
||||
}
|
||||
|
||||
u16 * GetVarAddr(struct SaveVarsFlags * state, u16 var_id)
|
||||
{
|
||||
GF_ASSERT((var_id - 0x4000) < 288);
|
||||
return &state->vars[var_id - 0x4000];
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "player_data.h"
|
||||
#include "save.h"
|
||||
#include "party.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "save_system_info.h"
|
||||
#include "poketch.h"
|
||||
|
||||
59
arm9/src/save_vars_flags.c
Normal file
59
arm9/src/save_vars_flags.c
Normal file
@@ -0,0 +1,59 @@
|
||||
#include "global.h"
|
||||
#include "save_vars_flags.h"
|
||||
|
||||
static u8 sTempFlags[NUM_TEMP_FLAGS / 8] = {0};
|
||||
|
||||
u32 Save_VarsFlags_sizeof(void) {
|
||||
return sizeof(SaveVarsFlags);
|
||||
}
|
||||
|
||||
void Save_VarsFlags_Init(SaveVarsFlags *varsFlags) {
|
||||
memset(varsFlags, 0, sizeof(SaveVarsFlags));
|
||||
}
|
||||
|
||||
SaveVarsFlags *Save_VarsFlags_Get(SaveData *save) {
|
||||
return (SaveVarsFlags *)SaveArray_Get(save, SAVE_FLAGS);
|
||||
}
|
||||
|
||||
BOOL Save_VarsFlags_CheckFlagInArray(SaveVarsFlags *varsFlags, u16 flagId) {
|
||||
u8 *flagAddr = Save_VarsFlags_GetFlagAddr(varsFlags, flagId);
|
||||
if (flagAddr != NULL) {
|
||||
if (*flagAddr & (1 << (flagId % 8))) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Save_VarsFlags_SetFlagInArray(SaveVarsFlags *varsFlags, u16 flagId) {
|
||||
u8 *flagAddr = Save_VarsFlags_GetFlagAddr(varsFlags, flagId);
|
||||
if (flagAddr == NULL) {
|
||||
return;
|
||||
}
|
||||
*flagAddr |= 1 << (flagId % 8);
|
||||
}
|
||||
|
||||
void Save_VarsFlags_ClearFlagInArray(SaveVarsFlags *varsFlags, u16 flagId) {
|
||||
u8 *flagAddr = Save_VarsFlags_GetFlagAddr(varsFlags, flagId);
|
||||
if (flagAddr == NULL) {
|
||||
return;
|
||||
}
|
||||
*flagAddr &= 0xFF ^ (1 << (flagId % 8));
|
||||
}
|
||||
|
||||
u8 *Save_VarsFlags_GetFlagAddr(SaveVarsFlags *varsFlags, u16 flagId) {
|
||||
if (flagId == 0) {
|
||||
return NULL;
|
||||
} else if (flagId < TEMP_FLAG_BASE) {
|
||||
GF_ASSERT((flagId / 8) < (NUM_FLAGS / 8));
|
||||
return &varsFlags->flags[flagId / 8];
|
||||
} else {
|
||||
GF_ASSERT(((flagId - TEMP_FLAG_BASE) / 8) < (NUM_TEMP_FLAGS / 8));
|
||||
return &sTempFlags[(flagId - TEMP_FLAG_BASE) / 8];
|
||||
}
|
||||
}
|
||||
|
||||
u16 *Save_VarsFlags_GetVarAddr(SaveVarsFlags * varsFlags, u16 varId) {
|
||||
GF_ASSERT((varId - VAR_BASE) < NUM_VARS);
|
||||
return &varsFlags->vars[varId - VAR_BASE];
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "scrcmd.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "heap.h"
|
||||
#include "pokedex.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "scrcmd.h"
|
||||
#include "constants/accessories.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
|
||||
extern void sub_0205F54C(struct SaveVarsFlags* state);
|
||||
extern u16 sub_0205F55C(struct SaveVarsFlags* state);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "scrcmd.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "pokedex.h"
|
||||
|
||||
extern void* sub_02034E20(void*);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "itemtool.h"
|
||||
#include "message_format.h"
|
||||
#include "msgdata.h"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "unk_02022504.h"
|
||||
#include "unk_0204B0A0.h"
|
||||
#include "unk_0205FA2C.h"
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
|
||||
static void _flag_set(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
SetFlagInArray(state, flag_id);
|
||||
Save_VarsFlags_SetFlagInArray(state, flag_id);
|
||||
}
|
||||
|
||||
static void _flag_clear(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
ClearFlagInArray(state, flag_id);
|
||||
Save_VarsFlags_ClearFlagInArray(state, flag_id);
|
||||
}
|
||||
|
||||
static BOOL _flag_check(struct SaveVarsFlags * state, u16 flag_id)
|
||||
{
|
||||
return CheckFlagInArray(state, flag_id);
|
||||
return Save_VarsFlags_CheckFlagInArray(state, flag_id);
|
||||
}
|
||||
|
||||
static BOOL _flag_op(struct SaveVarsFlags * state, u32 op, u32 flag_id)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "unk_0206015C.h"
|
||||
|
||||
#include "constants/sndseq.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "heap.h"
|
||||
#include "main.h"
|
||||
#include "unk_020051F4.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "heap.h"
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
#include "unk_02085338.h"
|
||||
|
||||
extern BOOL sub_0205ED0C(struct SaveVarsFlags * state);
|
||||
|
||||
@@ -3,4 +3,9 @@
|
||||
|
||||
#define FLAG_SYS_SAFARI 0x967
|
||||
|
||||
#define NUM_FLAGS 2912
|
||||
|
||||
#define NUM_TEMP_FLAGS 64
|
||||
#define TEMP_FLAG_BASE 0x4000
|
||||
|
||||
#endif //POKEDIAMOND_CONSTANTS_FLAGS_H
|
||||
@@ -2,6 +2,7 @@
|
||||
#define POKEDIAMOND_CONSTANTS_SAVE_ARRAYS_H
|
||||
|
||||
#define SAVE_BAG 3
|
||||
#define SAVE_FLAGS 4
|
||||
#define SAVE_DAYCARE 8
|
||||
#define SAVE_SAFARI_ZONE 27
|
||||
#define SAVE_EASY_CHAT 34
|
||||
|
||||
8
include/constants/vars.h
Normal file
8
include/constants/vars.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef POKEDIAMOND_CONSTANTS_VARS_H
|
||||
#define POKEDIAMOND_CONSTANTS_VARS_H
|
||||
|
||||
#define VAR_BASE 0x4000
|
||||
|
||||
#define NUM_VARS 0x120
|
||||
|
||||
#endif //POKEDIAMOND_CONSTANTS_VARS_H
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifndef GUARD_SAVE_VARS_FLAGS_H
|
||||
#define GUARD_SAVE_VARS_FLAGS_H
|
||||
|
||||
#include "save.h"
|
||||
|
||||
typedef struct SaveVarsFlags
|
||||
{
|
||||
u16 vars[288];
|
||||
u8 flags[364];
|
||||
} SaveVarsFlags;
|
||||
|
||||
u32 Save_VarsFlags_sizeof(void);
|
||||
void Save_VarsFlags_Init(struct SaveVarsFlags * state);
|
||||
struct SaveVarsFlags * Save_VarsFlags_Get(struct SaveData * save);
|
||||
BOOL CheckFlagInArray(struct SaveVarsFlags * state, u16 flag_id);
|
||||
void SetFlagInArray(struct SaveVarsFlags * state, u16 flag_id);
|
||||
void ClearFlagInArray(struct SaveVarsFlags * state, u16 flag_id);
|
||||
u8 * GetFlagAddr(struct SaveVarsFlags * state, u16 flag_id);
|
||||
u16 * GetVarAddr(struct SaveVarsFlags * state, u16 var_id);
|
||||
|
||||
#endif //GUARD_SAVE_VARS_FLAGS_H
|
||||
22
include/save_vars_flags.h
Normal file
22
include/save_vars_flags.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef POKEDIAMOND_SAVE_VARS_FLAGS_H
|
||||
#define POKEDIAMOND_SAVE_VARS_FLAGS_H
|
||||
|
||||
#include "save.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/vars.h"
|
||||
|
||||
typedef struct SaveVarsFlags {
|
||||
u16 vars[NUM_VARS];
|
||||
u8 flags[NUM_FLAGS / 8];
|
||||
} SaveVarsFlags;
|
||||
|
||||
u32 Save_VarsFlags_sizeof(void);
|
||||
void Save_VarsFlags_Init(SaveVarsFlags *varsFlags);
|
||||
SaveVarsFlags *Save_VarsFlags_Get(SaveData *saveData);
|
||||
BOOL Save_VarsFlags_CheckFlagInArray(SaveVarsFlags *varsFlags, u16 flagId);
|
||||
void Save_VarsFlags_SetFlagInArray(SaveVarsFlags *varsFlags, u16 flagId);
|
||||
void Save_VarsFlags_ClearFlagInArray(SaveVarsFlags *varsFlags, u16 flagId);
|
||||
u8 *Save_VarsFlags_GetFlagAddr(SaveVarsFlags *varsFlags, u16 flagId);
|
||||
u16 *Save_VarsFlags_GetVarAddr(SaveVarsFlags *varsFlags, u16 varId);
|
||||
|
||||
#endif //POKEDIAMOND_SAVE_VARS_FLAGS_H
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef POKEDIAMOND_UNK_0205EC84_H
|
||||
#define POKEDIAMOND_UNK_0205EC84_H
|
||||
|
||||
#include "event_data.h"
|
||||
#include "save_vars_flags.h"
|
||||
|
||||
void sub_0205ECD4(struct SaveVarsFlags * state);
|
||||
BOOL sub_0205ECE0(struct SaveVarsFlags * state);
|
||||
|
||||
Reference in New Issue
Block a user