Add acre and fg item data along with other misc data to save file struct

This commit is contained in:
Cuyler36
2023-04-24 03:43:13 -04:00
parent 7747dcbe1c
commit 0a6917bd8c
4 changed files with 52 additions and 9 deletions
+15 -4
View File
@@ -9,6 +9,7 @@
#include "m_home.h"
#include "m_private.h"
#include "m_npc.h"
#include "m_field_make.h"
#ifdef __cplusplus
extern "C" {
@@ -35,16 +36,26 @@ typedef struct time_s {
typedef struct Save_s {
/* 0x000000 */ mFRm_chk_t save_check; /* save information */
/* 0x000014 */ int scene_no; /* current 'scene' id */
/* 0x000018 */ u8 _tmp0[0x9108];
/* 0x000018 */ u8 now_npc_max; /* current number of villagers living in town (see mNpc_(Add/Sub)NowNpcMax) */
/* 0x000019 */ u8 remove_animal_idx; /* index of the villager which is scheduled to leave town, 0xFF when none selected */
/* 0x00001A */ u16 copy_protect; /* 'unique' value between [1, 65520] used for copy protection (see mCD_get_land_copyProtect) */
/* 0x00001C */ u8 _tmp0[0x9104]; /* Private_c struct [4] goes here starting at 0x20 */
/* 0x009120 */ mLd_land_info_c land_info; /* town name & id */
/* 0x00912C */ u8 _tmp1[0xBBC];
/* 0x00912C */ u8 _tmp1[0xBBC]; /* notice board info goes here */
/* 0x009CE8 */ mHm_hs_c homes[PLAYER_NUM]; /* player house data */
/* 0x0137A8 */ u8 _tmp2[0x3C90];
/* 0x0137A8 */ mFM_fg_c fg[FG_BLOCK_Z_NUM][FG_BLOCK_X_NUM]; /* fg items (fg = foreground?) */
/* 0x0173A8 */ mFM_combination_c combi_table[BLOCK_Z_NUM][BLOCK_X_NUM]; /* acre 'combination' data */
/* 0x017438 */ Animal_c animals[ANIMAL_NUM_MAX]; /* villagers in town */
/* 0x020330 */ AnmPersonalID_c last_removed_animal_id; /* ID of last villager who left town */
/* 0x02033E */ u8 _tmp3[0xBD6];
/* 0x020F14 */ lbRTC_ymd_t renew_time; /* next renew date */
/* 0x020F18 */ u8 _tmp4[0x476];
/* 0x020F18 */ u8 station_type; /* train station type */
/* 0x020F19 */ u8 weather; /* upper nibble is intensity, lower nibble is type */
/* 0x020F1A */ u8 save_exist; /* unsure, set in mCD_SaveHome_bg_set_data (1) & mCD_SaveHome_bg (bss) */
/* 0x020F1B */ u8 npc_force_go_home; /* when set to 1, forces the 'm_go_home' code to activate */
/* 0x020F1C */ u16 deposit[FG_BLOCK_X_NUM * FG_BLOCK_Z_NUM][UT_Z_NUM]; /* flags for which items are buried around town */
/* 0x0212DC */ lbRTC_time_c last_grow_time; /* last time that a new villager moved into town */
/* 0x0212E4 */ u8 _tmp4[0xAA];
/* 0x02138E */ u8 saved_rom_debug; /* flag to set save to 'debug rom' mode */
/* 0x02138F */ u8 _tmp5[0x1199];
/* 0x022528 */ OSTime time_delta; /* time delta against GC RTC */
-3
View File
@@ -9,9 +9,6 @@
extern "C" {
#endif
#define UT_X_NUM 16 /* Spaces per block (acre) in x direction */
#define UT_Z_NUM 16 /* Spaces per block (acre) in z direction */
/* Not sure about these other than the island one */
enum {
mFI_CLIMATE_0,
+35
View File
@@ -0,0 +1,35 @@
#ifndef M_FIELD_MAKE_H
#define M_FIELD_MAKE_H
#include "types.h"
#include "m_actor_type.h"
#ifdef __cplusplus
extern "C" {
#endif
#define BLOCK_X_NUM 7
#define BLOCK_Z_NUM 10
#define FG_BLOCK_X_NUM (BLOCK_X_NUM - 2) /* 5 */
#define FG_BLOCK_Z_NUM (BLOCK_Z_NUM - 4) /* 6 */
#define UT_X_NUM 16 /* Spaces per block (acre) in x direction */
#define UT_Z_NUM 16 /* Spaces per block (acre) in z direction */
/* sizeof(mFM_combination_c) == 2 */
typedef struct block_combination_s {
/* 0x00 */ u16 combination_type:14; /* acre type index */
/* 0x00 */ u16 height:2; /* 0, 1, 2, or 3 (unused) */
} mFM_combination_c;
/* sizeof(mFM_fg_c) == 0x200 */
typedef struct fg_items_s {
/* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM];
} mFM_fg_c;
#ifdef __cplusplus
}
#endif
#endif
+2 -2
View File
@@ -2,7 +2,7 @@
#define M_HOME_H
#include "types.h"
#include "m_field_info.h"
#include "m_field_make.h"
#include "m_actor_type.h"
#include "m_personal_id.h"
#include "audio.h"
@@ -62,7 +62,7 @@ typedef struct home_goki_s {
/* sizeof(mHm_lyr_c) == 0x228 */
typedef struct home_layer_s {
/* 0x000 */ mActor_name_t items[UT_X_NUM][UT_Z_NUM]; /* Furniture item actors */
/* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; /* Furniture item actors */
/* 0x200 */ u64 ftr_switch; /* Bitfield for controlling which furniture items are active, max of 64 */
/* 0x208 */ u32 unk_208[8]; /* Only referenced in mISL_gc_to_agb_layer */
} mHm_lyr_c;