mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Improve ac_train_door, ac_train_window & rename private
This commit is contained in:
+9
-11
@@ -9,18 +9,17 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define aTRD_JOINT_NUM 5
|
||||
|
||||
typedef struct traindoor_s {
|
||||
ACTOR actor_class;
|
||||
u8 pad [0x17C - 0x174];
|
||||
cKF_SkeletonInfo_R_c keyframe;
|
||||
u8 pad2 [0x210 - 0x1ed];
|
||||
s_xyz work;
|
||||
u8 pad3 [0x22e - 0x216];
|
||||
s_xyz target;
|
||||
u8 pad4[0x24c - 0x234];
|
||||
int idle;
|
||||
}TRAINDOOR_ACTOR;
|
||||
/* 0x000 */ ACTOR actor_class;
|
||||
/* 0x178 */ u8 pad[0x17C - 0x174];
|
||||
/* 0x17C */ cKF_SkeletonInfo_R_c keyframe;
|
||||
/* 0x1EC */ u8 pad2[0x210 - 0x1EC];
|
||||
/* 0x210 */ s_xyz work[aTRD_JOINT_NUM];
|
||||
/* 0x22E */ s_xyz target[aTRD_JOINT_NUM];
|
||||
/* 0x24C */ int open_flag;
|
||||
} TRAINDOOR_ACTOR;
|
||||
|
||||
extern ACTOR_PROFILE TrainDoor_Profile;
|
||||
|
||||
@@ -29,4 +28,3 @@ extern ACTOR_PROFILE TrainDoor_Profile;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -15,8 +15,7 @@ typedef int (*TRAIN_WINDOW_DRAW_TYPE)(ACTOR*, GAME*);
|
||||
#define CRV_DEBUG_GREEN_VALUE 89
|
||||
#define CRV_DEBUG_BLUE_VALUE 90
|
||||
|
||||
|
||||
typedef struct train_window_s{
|
||||
typedef struct train_window_s {
|
||||
ACTOR actor_class;
|
||||
TRAIN_WINDOW_DRAW_TYPE draw_type;
|
||||
s16 pallete_id;
|
||||
@@ -34,7 +33,7 @@ typedef struct train_window_s{
|
||||
f32 scroll_speed;
|
||||
s_xyz pos;
|
||||
f32 lod_factor;
|
||||
}TRAIN_WINDOW_ACTOR;
|
||||
} TRAIN_WINDOW_ACTOR;
|
||||
|
||||
extern ACTOR_PROFILE Train_Window_Profile;
|
||||
|
||||
@@ -43,4 +42,3 @@ extern ACTOR_PROFILE Train_Window_Profile;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -115,6 +115,9 @@ typedef enum audio_sound_effects {
|
||||
|
||||
NA_SE_TOILE_CHAIR_SIT = 0x410,
|
||||
|
||||
NA_SE_TRAINDOOR0 = 0x412,
|
||||
NA_SE_TRAINDOOR1,
|
||||
|
||||
NA_SE_BED_IN = 0x415,
|
||||
NA_SE_BED_NEGAERI,
|
||||
NA_SE_BED_OUT,
|
||||
|
||||
@@ -86,7 +86,7 @@ typedef struct Save_s {
|
||||
/* 0x00001A */ u16
|
||||
copy_protect; /* 'unique' value between [1, 65520] used for copy protection (see mCD_get_land_copyProtect) */
|
||||
/* 0x00001C */ u8 pad_1C[4];
|
||||
/* 0x000020 */ Private_c private[PLAYER_NUM]; /* player data */
|
||||
/* 0x000020 */ Private_c private_data[PLAYER_NUM]; /* player data */
|
||||
/* 0x009120 */ mLd_land_info_c land_info; /* town name & id */
|
||||
/* 0x00912C */ mNtc_board_post_c noticeboard[mNtc_BOARD_POST_COUNT]; /* noticeboard posts */
|
||||
/* 0x009CE4 */ u8 pad_9CE4[4];
|
||||
|
||||
@@ -21,7 +21,7 @@ extern void flash_rom_and_player_info_clear() {
|
||||
bzero(save, sizeof(Save));
|
||||
mFRm_ClearSaveCheckData(Save_GetPointer(save_check));
|
||||
|
||||
priv_p = Save_GetPointer(private[0]);
|
||||
priv_p = Save_GetPointer(private_data[0]);
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mPr_ClearPrivateInfo(priv_p);
|
||||
priv_p++;
|
||||
@@ -96,7 +96,7 @@ extern void title_action_data_init_start_select(GAME_PLAY* play) {
|
||||
mCD_LoadLand();
|
||||
mCPk_InitPak(0);
|
||||
|
||||
Common_Set(now_private, Save_GetPointer(private[0]));
|
||||
Common_Set(now_private, Save_GetPointer(private_data[0]));
|
||||
Common_Set(player_no, 0);
|
||||
|
||||
mTD_rtc_reserve();
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
static int aDOU_set_check(int house_no) {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
Private_c* priv = Save_GetPointer(private[player_no]);
|
||||
Private_c* priv = Save_GetPointer(private_data[player_no]);
|
||||
mHm_hs_c* house = Save_GetPointer(homes[house_no]);
|
||||
|
||||
if (mEv_CheckTitleDemo() != 0 && mEv_CheckTitleDemo() != -1 && mEv_CheckTitleDemo() != -9) {
|
||||
@@ -35,7 +35,7 @@ static int aDOU_get_color(int house_no) {
|
||||
|
||||
static int aDOU_get_douzou_type(int house_no) {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
Private_c* priv = Save_GetPointer(private[player_no]);
|
||||
Private_c* priv = Save_GetPointer(private_data[player_no]);
|
||||
s8 sex = mPr_SEX_MALE;
|
||||
s8 face = mPr_FACE_TYPE0;
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ static int aHNW_set_save_permission() {
|
||||
if (player_no < PLAYER_NUM) {
|
||||
int arrange_idx = mHS_get_arrange_idx(player_no);
|
||||
house = Save_GetPointer(homes[arrange_idx]);
|
||||
pid = &Save_Get(private[player_no]).player_ID;
|
||||
pid = &Save_Get(private_data[player_no]).player_ID;
|
||||
|
||||
if (mPr_NullCheckPersonalID(pid) != TRUE && mPr_CheckCmpPersonalID(pid, &house->ownerID) == TRUE) {
|
||||
res = TRUE;
|
||||
|
||||
@@ -119,9 +119,10 @@ static void Museum_Fossil_Actor_move(ACTOR* actorx, GAME* game) {
|
||||
|
||||
/* If the donator still lives in town we need to copy their name */
|
||||
if (mMmd_DONATOR_EXISTS(donator)) {
|
||||
mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0,
|
||||
Save_Get(private[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name,
|
||||
PLAYER_NAME_LEN);
|
||||
mMsg_Set_free_str(
|
||||
mMsg_Get_base_window_p(), mMsg_FREE_STR0,
|
||||
Save_Get(private_data[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name,
|
||||
PLAYER_NAME_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ static void Museum_Picture_Actor_move(ACTOR* actorx, GAME* game) {
|
||||
/* If the donator still lives in town we need to copy their name */
|
||||
if (mMmd_DONATOR_EXISTS(donator)) {
|
||||
mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0,
|
||||
Save_Get(private[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name,
|
||||
Save_Get(private_data[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name,
|
||||
PLAYER_NAME_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,8 +239,8 @@ static void aMHS_actor_draw(ACTOR* actorx, GAME* game) {
|
||||
gSPSegment(gfx++, G_MWO_SEGMENT_A, obj_myhome_mark_pal);
|
||||
} else {
|
||||
int org_idx = door_original & 7;
|
||||
u16* pal = mNW_PaletteIdx2Palette(Save_Get(private[pl_no]).my_org[org_idx].palette);
|
||||
u8* tex = Save_Get(private[pl_no]).my_org[org_idx].design.data;
|
||||
u16* pal = mNW_PaletteIdx2Palette(Save_Get(private_data[pl_no]).my_org[org_idx].palette);
|
||||
u8* tex = Save_Get(private_data[pl_no]).my_org[org_idx].design.data;
|
||||
|
||||
gSPSegment(gfx++, G_MWO_SEGMENT_9, tex);
|
||||
gSPSegment(gfx++, G_MWO_SEGMENT_A, pal);
|
||||
|
||||
+681
-843
File diff suppressed because it is too large
Load Diff
@@ -19,7 +19,7 @@ static int aNRG_set_request_act(NPC_RCN_GUIDE_ACTOR* rcn_guide, u8 act_prio, u8
|
||||
}
|
||||
|
||||
static void aNRG_set_house_master_name(int house_idx) {
|
||||
mMsg_SET_FREE_STR(mMsg_FREE_STR0, Save_Get(private[mHS_get_pl_no(house_idx)]).player_ID.player_name,
|
||||
mMsg_SET_FREE_STR(mMsg_FREE_STR0, Save_Get(private_data[mHS_get_pl_no(house_idx)]).player_ID.player_name,
|
||||
PLAYER_NAME_LEN);
|
||||
}
|
||||
|
||||
|
||||
+22
-25
@@ -20,72 +20,69 @@ ACTOR_PROFILE TrainDoor_Profile = {
|
||||
&aTRD_actor_dt,
|
||||
&aTRD_actor_move,
|
||||
&aTRD_actor_draw,
|
||||
NULL
|
||||
NULL,
|
||||
};
|
||||
|
||||
extern cKF_Skeleton_R_c cKF_bs_r_obj_romtrain_door;
|
||||
extern cKF_Animation_R_c cKF_ba_r_obj_romtrain_door;
|
||||
|
||||
static void aTRD_actor_ct(ACTOR* actor, GAME* game){
|
||||
static void aTRD_actor_ct(ACTOR* actor, GAME* game) {
|
||||
TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor;
|
||||
|
||||
cKF_SkeletonInfo_R_ct(&traindoor->keyframe, &cKF_bs_r_obj_romtrain_door, NULL, &traindoor->work, &traindoor->target);
|
||||
cKF_SkeletonInfo_R_init(&traindoor->keyframe,traindoor->keyframe.skeleton, &cKF_ba_r_obj_romtrain_door,1.0f,51.0f,1.0f,
|
||||
0.0f,0.0f,0,NULL);
|
||||
cKF_SkeletonInfo_R_ct(&traindoor->keyframe, &cKF_bs_r_obj_romtrain_door, NULL, traindoor->work, traindoor->target);
|
||||
cKF_SkeletonInfo_R_init(&traindoor->keyframe, traindoor->keyframe.skeleton, &cKF_ba_r_obj_romtrain_door, 1.0f,
|
||||
51.0f, 1.0f, 0.0f, 0.0f, 0, NULL);
|
||||
traindoor->keyframe.morph_counter = 0.0f;
|
||||
cKF_SkeletonInfo_R_play(&traindoor->keyframe);
|
||||
}
|
||||
|
||||
static void aTRD_actor_dt(ACTOR* actor, GAME* game){
|
||||
static void aTRD_actor_dt(ACTOR* actor, GAME* game) {
|
||||
TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor;
|
||||
|
||||
cKF_SkeletonInfo_R_dt(&traindoor->keyframe);
|
||||
}
|
||||
|
||||
static void aTRD_set_door_SE(ACTOR* actor){
|
||||
static void aTRD_set_door_SE(ACTOR* actor) {
|
||||
TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor;
|
||||
|
||||
static f32 chk_pat[] = {2.0f, 27.0f};
|
||||
static u16 se_no[] = {1042, 1043,0, 0,0,0, 0,0,0};
|
||||
static f32 chk_pat[] = { 2.0f, 27.0f };
|
||||
static u16 se_no[] = { NA_SE_TRAINDOOR0, NA_SE_TRAINDOOR1 };
|
||||
int i;
|
||||
|
||||
for(i = 0; i < 2; i++){
|
||||
|
||||
if(cKF_FrameControl_passCheck_now(&traindoor->keyframe.frame_control,chk_pat[i]) != 0){
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (cKF_FrameControl_passCheck_now(&traindoor->keyframe.frame_control, chk_pat[i])) {
|
||||
sAdo_OngenTrgStart(se_no[i], &traindoor->actor_class.world.position);
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aTRD_actor_move(ACTOR* actor, GAME* game){
|
||||
static void aTRD_actor_move(ACTOR* actor, GAME* game) {
|
||||
TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor;
|
||||
|
||||
if(traindoor->idle == 1){
|
||||
traindoor->idle = 0;
|
||||
if (traindoor->open_flag == TRUE) {
|
||||
traindoor->open_flag = FALSE;
|
||||
traindoor->keyframe.frame_control.speed = 0.5f;
|
||||
}
|
||||
|
||||
if(cKF_SkeletonInfo_R_play(&traindoor->keyframe) == 1){
|
||||
if (cKF_SkeletonInfo_R_play(&traindoor->keyframe) == cKF_FRAMECONTROL_REPEAT) {
|
||||
traindoor->keyframe.frame_control.current_frame = traindoor->keyframe.frame_control.start_frame;
|
||||
traindoor->keyframe.frame_control.speed = 0.0f;
|
||||
}
|
||||
|
||||
aTRD_set_door_SE(actor);
|
||||
}
|
||||
|
||||
static void aTRD_actor_draw(ACTOR* actor, GAME* game){
|
||||
static void aTRD_actor_draw(ACTOR* actor, GAME* game) {
|
||||
TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor;
|
||||
|
||||
cKF_SkeletonInfo_R_c* keyf = &traindoor->keyframe;
|
||||
Gfx* mtx;
|
||||
Mtx* mtxp;
|
||||
|
||||
mtx = GRAPH_ALLOC(game->graph, (u32) keyf->skeleton->num_shown_joints * 64);
|
||||
|
||||
mtxp = (Mtx*)mtx;
|
||||
if(mtxp != NULL){
|
||||
mtxp = GRAPH_ALLOC_TYPE(game->graph, Mtx, (u32)keyf->skeleton->num_shown_joints);
|
||||
if (mtxp != NULL) {
|
||||
_texture_z_light_fog_prim(game->graph);
|
||||
texture_z_light_prim_xlu_disp(game->graph);
|
||||
cKF_Si3_draw_R_SV(game,keyf, mtxp, NULL,NULL,NULL);
|
||||
cKF_Si3_draw_R_SV(game, keyf, mtxp, NULL, NULL, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+286
-352
@@ -7,175 +7,170 @@
|
||||
#include "m_play.h"
|
||||
#include "sys_matrix.h"
|
||||
|
||||
|
||||
u16 aTrainWindow_tree_pal_table[15][16]= {
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0545,
|
||||
0x9885,0xA0C5,
|
||||
0xAD05,0xBD66,
|
||||
0xCDE8,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0655,
|
||||
0x98C5,0xA105,
|
||||
0xB165,0xC1E6,
|
||||
0xD268,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0464,
|
||||
0x90C3,0x9504,
|
||||
0xA184,0xAA05,
|
||||
0xB287,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0164,
|
||||
0x80E5,0x8145,
|
||||
0x89A4,0x9A60,
|
||||
0xB300,0xD380,
|
||||
0xEFE8,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0C37,
|
||||
0xB086,0xC8A7,
|
||||
0xE0C7,0xF109,
|
||||
0xF98C,0xFE10,
|
||||
0xFF18,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0066,
|
||||
0x80C9,0x8127,
|
||||
0x8186,0x8202,
|
||||
0x82C1,0x9380,
|
||||
0xCBE8,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0058,
|
||||
0x80C9,0x80E8,
|
||||
0x8148,0x81C8,
|
||||
0x8268,0x9326,
|
||||
0xC3EB,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0353,
|
||||
0x8CC2,0x9102,
|
||||
0x9963,0xA5C4,
|
||||
0xB242,0xC6E4,
|
||||
0xDB88,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0564,
|
||||
0x90C5,0x9924,
|
||||
0xA984,0xBA03,
|
||||
0xD2A3,0xE304,
|
||||
0xEF6A,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0842,
|
||||
0xA463,0xB4A2,
|
||||
0xC502,0xD961,
|
||||
0xE9E1,0xF682,
|
||||
0xFF26,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0814,
|
||||
0xB024,0xC044,
|
||||
0xCC85,0xE0C6,
|
||||
0xF128,0xFE0B,
|
||||
0xFEEB,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0734,
|
||||
0xA484,0xAC83,
|
||||
0xBCC4,0xD503,
|
||||
0xE985,0xF629,
|
||||
0xFF0E,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0635,
|
||||
0xA085,0xA8C5,
|
||||
0xB505,0xC566,
|
||||
0xD5E8,0xEE8A,
|
||||
0xFF2C,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0545,
|
||||
0x9885,0xA0C5,
|
||||
0xAD05,0xBD66,
|
||||
0xCDE8,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0545,
|
||||
0x9885,0xA0C5,
|
||||
0xAD05,0xBD66,
|
||||
0xCDE8,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
}
|
||||
// clang-format off
|
||||
static u16 aTrainWindow_tree_pal_table[15][16] ATTRIBUTE_ALIGN(32) = {
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0545,
|
||||
0x9885,0xA0C5,
|
||||
0xAD05,0xBD66,
|
||||
0xCDE8,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0655,
|
||||
0x98C5,0xA105,
|
||||
0xB165,0xC1E6,
|
||||
0xD268,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0464,
|
||||
0x90C3,0x9504,
|
||||
0xA184,0xAA05,
|
||||
0xB287,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0164,
|
||||
0x80E5,0x8145,
|
||||
0x89A4,0x9A60,
|
||||
0xB300,0xD380,
|
||||
0xEFE8,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0C37,
|
||||
0xB086,0xC8A7,
|
||||
0xE0C7,0xF109,
|
||||
0xF98C,0xFE10,
|
||||
0xFF18,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0066,
|
||||
0x80C9,0x8127,
|
||||
0x8186,0x8202,
|
||||
0x82C1,0x9380,
|
||||
0xCBE8,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0058,
|
||||
0x80C9,0x80E8,
|
||||
0x8148,0x81C8,
|
||||
0x8268,0x9326,
|
||||
0xC3EB,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0353,
|
||||
0x8CC2,0x9102,
|
||||
0x9963,0xA5C4,
|
||||
0xB242,0xC6E4,
|
||||
0xDB88,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0564,
|
||||
0x90C5,0x9924,
|
||||
0xA984,0xBA03,
|
||||
0xD2A3,0xE304,
|
||||
0xEF6A,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0842,
|
||||
0xA463,0xB4A2,
|
||||
0xC502,0xD961,
|
||||
0xE9E1,0xF682,
|
||||
0xFF26,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0814,
|
||||
0xB024,0xC044,
|
||||
0xCC85,0xE0C6,
|
||||
0xF128,0xFE0B,
|
||||
0xFEEB,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0734,
|
||||
0xA484,0xAC83,
|
||||
0xBCC4,0xD503,
|
||||
0xE985,0xF629,
|
||||
0xFF0E,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0635,
|
||||
0xA085,0xA8C5,
|
||||
0xB505,0xC566,
|
||||
0xD5E8,0xEE8A,
|
||||
0xFF2C,0x8000
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0545,
|
||||
0x9885,0xA0C5,
|
||||
0xAD05,0xBD66,
|
||||
0xCDE8,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
{
|
||||
0x0724,0xA443,
|
||||
0xBCA4,0xDD25,
|
||||
0xF5E7,0xF209,
|
||||
0xFECD,0x0545,
|
||||
0x9885,0xA0C5,
|
||||
0xAD05,0xBD66,
|
||||
0xCDE8,0xD2FA,
|
||||
0xE77C,0xF3BE
|
||||
},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
EVW_ANIME_SCROLL aTrainWindow_out_cloud = {
|
||||
0, -2,
|
||||
64, 64
|
||||
};
|
||||
static EVW_ANIME_SCROLL aTrainWindow_out_cloud = { 0, -2, 64, 64 };
|
||||
|
||||
EVW_ANIME_DATA aTrainWindow_evw_anime_data = {
|
||||
-2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud
|
||||
};
|
||||
static EVW_ANIME_DATA aTrainWindow_evw_anime_data = { -2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud };
|
||||
|
||||
static void Train_Window_Actor_ct(ACTOR*, GAME*);
|
||||
static void Train_Window_Actor_dt(ACTOR*, GAME*);
|
||||
static void Train_Window_Actor_move(ACTOR*, GAME*);
|
||||
static void Train_Window_Actor_draw(ACTOR*, GAME*);
|
||||
|
||||
|
||||
ACTOR_PROFILE Train_Window_Profile = {
|
||||
mAc_PROFILE_TRAIN_WINDOW,
|
||||
ACTOR_PART_ITEM,
|
||||
@@ -187,10 +182,9 @@ ACTOR_PROFILE Train_Window_Profile = {
|
||||
&Train_Window_Actor_dt,
|
||||
&Train_Window_Actor_move,
|
||||
&Train_Window_Actor_draw,
|
||||
NULL
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
||||
static int aTrainWindow_NoDraw(ACTOR*, GAME*);
|
||||
static int aTrainWindow_DrawGoneOutTunnel(ACTOR*, GAME*);
|
||||
static int aTrainWindow_DrawInTunnel(ACTOR*, GAME*);
|
||||
@@ -201,83 +195,37 @@ extern Gfx rom_train_out_bgcloud_modelT[];
|
||||
extern Gfx rom_train_out_bgtree_modelT[];
|
||||
extern Gfx rom_train_out_shineglass_modelT[];
|
||||
|
||||
|
||||
static int aTrainWindow_GetTreePalletIdx(){
|
||||
static int aTrainWindow_GetTreePalletIdx() {
|
||||
static u8 till_data[15][2] = {
|
||||
{
|
||||
0x02,0x03
|
||||
},
|
||||
{
|
||||
0x02,0x11
|
||||
},
|
||||
{
|
||||
0x02,0x18
|
||||
},
|
||||
{
|
||||
0x04,0x03
|
||||
},
|
||||
{
|
||||
0x04,0x08
|
||||
},
|
||||
{
|
||||
0x07,0x16
|
||||
},
|
||||
{
|
||||
0x09,0x0F
|
||||
},
|
||||
{
|
||||
0x0A,0x05
|
||||
},
|
||||
{
|
||||
0x0A,0x17
|
||||
},
|
||||
{
|
||||
0x0B,0x07
|
||||
},
|
||||
{
|
||||
0x0B,0x0E
|
||||
},
|
||||
{
|
||||
0x0B,0x1C
|
||||
},
|
||||
{
|
||||
0x0C,0x0A
|
||||
},
|
||||
{
|
||||
0x0C,0x11
|
||||
},
|
||||
{
|
||||
0x0C,0x1F
|
||||
}
|
||||
{ 0x02, 0x03 }, { 0x02, 0x11 }, { 0x02, 0x18 }, { 0x04, 0x03 }, { 0x04, 0x08 },
|
||||
{ 0x07, 0x16 }, { 0x09, 0x0F }, { 0x0A, 0x05 }, { 0x0A, 0x17 }, { 0x0B, 0x07 },
|
||||
{ 0x0B, 0x0E }, { 0x0B, 0x1C }, { 0x0C, 0x0A }, { 0x0C, 0x11 }, { 0x0C, 0x1F },
|
||||
};
|
||||
|
||||
|
||||
int i;
|
||||
lbRTC_month_t month = Common_Get(time.rtc_time.month);
|
||||
lbRTC_day_t day = Common_Get(time.rtc_time.day);
|
||||
|
||||
for(i = 0; i < 15; i++){
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
if (month < till_data[i][0]) {
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
if (month == till_data[i][0] && day <= till_data[i][1]) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void Train_Window_Actor_ct(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
|
||||
|
||||
static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
|
||||
switch(Save_Get(scene_no)){
|
||||
case 49:
|
||||
|
||||
case 15:
|
||||
window->draw_type = aTrainWindow_NoDraw;
|
||||
switch (Save_Get(scene_no)) {
|
||||
case SCENE_START_DEMO:
|
||||
case SCENE_START_DEMO3:
|
||||
window->draw_type = &aTrainWindow_NoDraw;
|
||||
window->Single_Scrollx = 0;
|
||||
window->Single_Scrolly = 0;
|
||||
window->Two_Scrollx1 = 0;
|
||||
@@ -285,10 +233,10 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){
|
||||
window->Two_Scrollx2 = 0;
|
||||
window->Two_Scrolly2 = 0;
|
||||
window->scroll_speed = 0.07f;
|
||||
break;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
window->draw_type = aTrainWindow_DrawGoneOutTunnel;
|
||||
case SCENE_START_DEMO2:
|
||||
window->draw_type = &aTrainWindow_DrawGoneOutTunnel;
|
||||
window->Single_Scrollx = 1000;
|
||||
window->Single_Scrolly = 0;
|
||||
window->Two_Scrollx1 = 1000;
|
||||
@@ -296,7 +244,7 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){
|
||||
window->Two_Scrollx2 = 0;
|
||||
window->Two_Scrolly2 = 0;
|
||||
window->scroll_speed = 1.0f;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
window->pallete_id = aTrainWindow_GetTreePalletIdx();
|
||||
window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id];
|
||||
@@ -304,72 +252,66 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){
|
||||
window->TreeScrolly = 0;
|
||||
window->pos.x = 0;
|
||||
window->pos.y = 0;
|
||||
window->pos.z = 0;
|
||||
window->pos.z = 0;
|
||||
window->xlu_alpha = 254.0f;
|
||||
}
|
||||
|
||||
static void Train_Window_Actor_dt(ACTOR* actor, GAME* game){
|
||||
|
||||
static void Train_Window_Actor_dt(ACTOR* actor, GAME* game) {
|
||||
}
|
||||
|
||||
static u8 aTW_GetNowAlpha(){
|
||||
|
||||
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
|
||||
if(Common_Get(time.now_sec) < 43200){
|
||||
static u8 aTW_GetNowAlpha() {
|
||||
|
||||
if ((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)) {
|
||||
if (Common_Get(time.now_sec) < 43200) {
|
||||
return 255.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f);
|
||||
}
|
||||
return 255.0f * (1.0f - ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f));
|
||||
}
|
||||
else if(Common_Get(time.now_sec) < 14400) {
|
||||
} else if (Common_Get(time.now_sec) < 14400) {
|
||||
return 200.0f * (1.0f - (0.5f + ((f32)Common_Get(time.now_sec) / 28800.0f)));
|
||||
}
|
||||
else{
|
||||
return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f);
|
||||
} else {
|
||||
return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f);
|
||||
}
|
||||
}
|
||||
|
||||
static void Train_Window_Actor_move(ACTOR* actor, GAME* game){
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
static void Train_Window_Actor_move(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
|
||||
f32 alpha;
|
||||
|
||||
|
||||
window->TreeScrollx += 5;
|
||||
add_calc(&window->xlu_alpha, aTW_GetNowAlpha(), window->scroll_speed, 50.0f, 1.0f);
|
||||
if((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)){
|
||||
if ((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)) {
|
||||
alpha = 0.0f;
|
||||
}
|
||||
else if(Common_Get(time.now_sec) >= 43200){
|
||||
} else if (Common_Get(time.now_sec) >= 43200) {
|
||||
alpha = 160.0f + (-160.0f * ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f));
|
||||
}
|
||||
else{
|
||||
alpha = 160.0f * ((f32)(Common_Get(time.now_sec) -14400) / 28800.0f);
|
||||
} else {
|
||||
alpha = 160.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f);
|
||||
}
|
||||
add_calc(&window->lod_factor, alpha, 0.3f, 50.0f, 1.0f);
|
||||
}
|
||||
|
||||
static int aTrainWindow_OperateScrollLimit(int a, int b, int c){
|
||||
|
||||
b >>= 1;
|
||||
if(b != 0){
|
||||
if(b > 0){
|
||||
if(a+b > c){
|
||||
static int aTrainWindow_OperateScrollLimit(int a, int b, int c) {
|
||||
b >>= 1;
|
||||
if (b != 0) {
|
||||
if (b > 0) {
|
||||
if (a + b > c) {
|
||||
return c;
|
||||
}
|
||||
return a+b;
|
||||
return a + b;
|
||||
}
|
||||
if(b >= 0){
|
||||
return a;
|
||||
if (b >= 0) {
|
||||
return a;
|
||||
}
|
||||
if(a+b < c){
|
||||
if (a + b < c) {
|
||||
return c;
|
||||
}
|
||||
return a+b;
|
||||
return a + b;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt,int yamt, int xend, int yend,
|
||||
int width, int height, GRAPH** graph){
|
||||
static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt, int yamt, int xend, int yend, int width, int height,
|
||||
GRAPH** graph) {
|
||||
|
||||
*x = aTrainWindow_OperateScrollLimit(*x, xamt, xend);
|
||||
*y = aTrainWindow_OperateScrollLimit(*y, yamt, yend);
|
||||
@@ -377,9 +319,9 @@ int width, int height, GRAPH** graph){
|
||||
return tex_scroll2(*graph, *x, *y, width, height);
|
||||
}
|
||||
|
||||
static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1, int height1,
|
||||
u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int height2, GRAPH** graph){
|
||||
|
||||
static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1,
|
||||
int height1, u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end,
|
||||
int width2, int height2, GRAPH** graph) {
|
||||
|
||||
*x1 = aTrainWindow_OperateScrollLimit(*x1, x1amt, x1end);
|
||||
*y1 = aTrainWindow_OperateScrollLimit(*y1, y1amt, y1end);
|
||||
@@ -389,22 +331,20 @@ u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int he
|
||||
return two_tex_scroll(*graph, 0, *x1, *y1, width1, height1, 1, *x2, *y2, width2, height2);
|
||||
}
|
||||
|
||||
static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
|
||||
static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
|
||||
GRAPH** graph = &game->graph;
|
||||
Gfx* ssc;
|
||||
Gfx* tsc;
|
||||
|
||||
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly,
|
||||
0,0,1000,0, 64, 32, graph);
|
||||
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8,
|
||||
&window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph);
|
||||
|
||||
if((ssc == NULL) || (tsc == NULL)){
|
||||
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 0, 0, 1000, 0, 64, 32, graph);
|
||||
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0, 0, 1000, 0, 64, 8,
|
||||
&window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph);
|
||||
|
||||
if ((ssc == NULL) || (tsc == NULL)) {
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
OPEN_DISP(*graph);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc);
|
||||
@@ -412,7 +352,7 @@ static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc);
|
||||
|
||||
|
||||
CLOSE_DISP(*graph);
|
||||
|
||||
return 1;
|
||||
@@ -420,21 +360,19 @@ static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){
|
||||
}
|
||||
|
||||
static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
|
||||
Gfx* tsc;
|
||||
Gfx* ssc;
|
||||
GRAPH** graph = &game->graph;
|
||||
|
||||
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly,
|
||||
30,0,1000,0, 64, 32, graph);
|
||||
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30,0,1000, 0, 64, 8,
|
||||
&window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph);
|
||||
|
||||
if((ssc == NULL) || (tsc == NULL)){
|
||||
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 30, 0, 1000, 0, 64, 32, graph);
|
||||
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30, 0, 1000, 0, 64, 8,
|
||||
&window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph);
|
||||
|
||||
if ((ssc == NULL) || (tsc == NULL)) {
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
OPEN_DISP(*graph);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc);
|
||||
@@ -442,10 +380,10 @@ static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) {
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc);
|
||||
|
||||
|
||||
CLOSE_DISP(*graph);
|
||||
|
||||
if(((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)){
|
||||
if (((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)) {
|
||||
window->draw_type = aTrainWindow_DrawGoneOutTunnel;
|
||||
window->pallete_id = aTrainWindow_GetTreePalletIdx();
|
||||
window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id];
|
||||
@@ -455,28 +393,26 @@ static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) {
|
||||
}
|
||||
}
|
||||
|
||||
static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game){
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
window->draw_type = aTrainWindow_DrawInTunnel;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
|
||||
static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
|
||||
Gfx* tsc;
|
||||
Gfx* ssc;
|
||||
GRAPH** graph = &game->graph;
|
||||
|
||||
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly,
|
||||
0,0,1000,0, 64, 32, graph);
|
||||
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8,
|
||||
&window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph);
|
||||
|
||||
if((ssc == NULL) || (tsc == NULL)){
|
||||
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 0, 0, 1000, 0, 64, 32, graph);
|
||||
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0, 0, 1000, 0, 64, 8,
|
||||
&window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph);
|
||||
|
||||
if ((ssc == NULL) || (tsc == NULL)) {
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
OPEN_DISP(*graph);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc);
|
||||
@@ -484,96 +420,94 @@ static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc);
|
||||
|
||||
|
||||
CLOSE_DISP(*graph);
|
||||
|
||||
if(Common_Get(sunlight_flag) != 0){
|
||||
if (Common_Get(sunlight_flag) != 0) {
|
||||
window->pallete_id = aTrainWindow_GetTreePalletIdx();
|
||||
window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id];
|
||||
window->draw_type = aTrainWindow_DrawGoingOutTunnel;
|
||||
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a){
|
||||
static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a) {
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
int i;
|
||||
int current_color;
|
||||
u8 color[3];
|
||||
GRAPH* graph;
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
for (i = 0; i < 3; i++) {
|
||||
current_color = play->global_light.ambientColor[i] + play->kankyo.base_light.sun_color[i];
|
||||
switch(i){
|
||||
switch (i) {
|
||||
case 0:
|
||||
current_color += r;
|
||||
break;
|
||||
break;
|
||||
case 1:
|
||||
current_color += g;
|
||||
break;
|
||||
break;
|
||||
case 2:
|
||||
current_color += b;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
if(current_color < 0){
|
||||
if (current_color < 0) {
|
||||
current_color = 0;
|
||||
}else if(current_color >= 256){
|
||||
} else if (current_color >= 256) {
|
||||
current_color = 255;
|
||||
}
|
||||
color[i] = current_color;
|
||||
}
|
||||
|
||||
if(l < 0){
|
||||
if (l < 0) {
|
||||
l = 0;
|
||||
}else if(l > 255){
|
||||
} else if (l > 255) {
|
||||
l = 255;
|
||||
}
|
||||
if(poly_a < 0){
|
||||
if (poly_a < 0) {
|
||||
poly_a = 0;
|
||||
}else if(poly_a > 255){
|
||||
} else if (poly_a > 255) {
|
||||
poly_a = 255;
|
||||
}
|
||||
if(xlu_a < 0){
|
||||
if (xlu_a < 0) {
|
||||
xlu_a = 0;
|
||||
}else if(xlu_a > 255){
|
||||
} else if (xlu_a > 255) {
|
||||
xlu_a = 255;
|
||||
}
|
||||
|
||||
|
||||
graph = play->game.graph;
|
||||
|
||||
OPEN_DISP(graph);
|
||||
|
||||
OPEN_DISP(graph);
|
||||
gDPSetPrimColor(NOW_POLY_OPA_DISP++, 0, l, color[0], color[1], color[2], poly_a);
|
||||
gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a);
|
||||
gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a);
|
||||
CLOSE_DISP(graph);
|
||||
|
||||
}
|
||||
|
||||
static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game){
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game) {
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
Gfx* tree;
|
||||
|
||||
GRAPH** graph = &game->graph;
|
||||
|
||||
|
||||
tree = tex_scroll2(*graph, window->TreeScrollx, window->TreeScrolly, 128, 32);
|
||||
|
||||
OPEN_DISP(*graph);
|
||||
OPEN_DISP(*graph);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 8, tree);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++, 8, tree);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++,8, tree);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++,8, tree);
|
||||
|
||||
CLOSE_DISP(*graph);
|
||||
}
|
||||
|
||||
static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){
|
||||
static void Train_Window_Actor_draw(ACTOR* actor, GAME* game) {
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
||||
|
||||
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor;
|
||||
|
||||
GRAPH* graph = game->graph;
|
||||
Matrix_translate(0.0f,0.0f,0.0f,FALSE);
|
||||
Matrix_translate(0.0f, 0.0f, 0.0f, FALSE);
|
||||
Matrix_scale(0.05f, 0.05f, 0.05f, TRUE);
|
||||
|
||||
|
||||
OPEN_DISP(graph);
|
||||
|
||||
gSPMatrix(NOW_POLY_OPA_DISP++, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
@@ -582,23 +516,23 @@ static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){
|
||||
_texture_z_light_fog_prim(game->graph);
|
||||
_texture_z_light_fog_prim_xlu(game->graph);
|
||||
|
||||
|
||||
if(window->draw_type(actor,game) != 0){
|
||||
aTrainWindow_SetLightPrimColorDetail(game, 0,0,0,127,255,(u8)window->xlu_alpha);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++,10, window->current_pallete);
|
||||
Evw_Anime_Set(play, &aTrainWindow_evw_anime_data);
|
||||
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,43,255,window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_tunnel_model);
|
||||
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_bgsky_model);
|
||||
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgcloud_modelT);
|
||||
if (window->draw_type(actor, game) != 0) {
|
||||
aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, (u8)window->xlu_alpha);
|
||||
gSPSegment(NOW_POLY_XLU_DISP++, 10, window->current_pallete);
|
||||
Evw_Anime_Set(play, &aTrainWindow_evw_anime_data);
|
||||
aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 43, 255, window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_OPA_DISP++, rom_train_out_tunnel_model);
|
||||
aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_OPA_DISP++, rom_train_out_bgsky_model);
|
||||
aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_bgcloud_modelT);
|
||||
aTrainWindow_SetTreeTextureScroll(actor, game);
|
||||
aTrainWindow_SetLightPrimColorDetail(game, GETREG(CRV, CRV_DEBUG_RED_VALUE) -80 ,GETREG(CRV, CRV_DEBUG_GREEN_VALUE) -70 ,GETREG(CRV, CRV_DEBUG_BLUE_VALUE) -160, GETREG(CRV,CRV_DEBUG_LOD_VALUE) + 27,255, window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgtree_modelT);
|
||||
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,window->lod_factor,255,window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_shineglass_modelT);
|
||||
|
||||
aTrainWindow_SetLightPrimColorDetail(
|
||||
game, GETREG(CRV, CRV_DEBUG_RED_VALUE) - 80, GETREG(CRV, CRV_DEBUG_GREEN_VALUE) - 70,
|
||||
GETREG(CRV, CRV_DEBUG_BLUE_VALUE) - 160, GETREG(CRV, CRV_DEBUG_LOD_VALUE) + 27, 255, window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_bgtree_modelT);
|
||||
aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, window->lod_factor, 255, window->xlu_alpha);
|
||||
gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_shineglass_modelT);
|
||||
}
|
||||
CLOSE_DISP(graph);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@ static void aMyfmanekin_dma(mActor_name_t ftr_name, u8* data) {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
u32 manekin_no = ((ftr_name - FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0) >> 2);
|
||||
|
||||
mNW_CopyOriginalTexture(data, &Save_Get(private[player_no]).my_org[manekin_no & 7]);
|
||||
mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private[player_no]).my_org[manekin_no & 7]);
|
||||
mNW_CopyOriginalTexture(data, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]);
|
||||
mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]);
|
||||
}
|
||||
|
||||
static aFTR_vtable_c aMyfmanekin_func = {
|
||||
|
||||
@@ -27,8 +27,8 @@ static void aMFU_dma(mActor_name_t ftr_name, u8* data) {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
u32 manekin_no = ((ftr_name - FTR_MYUMBRELLA_START) >> 2);
|
||||
|
||||
mNW_CopyOriginalTexture(data, &Save_Get(private[player_no]).my_org[manekin_no & 7]);
|
||||
mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private[player_no]).my_org[manekin_no & 7]);
|
||||
mNW_CopyOriginalTexture(data, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]);
|
||||
mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]);
|
||||
}
|
||||
|
||||
static aFTR_vtable_c aMFU_func = {
|
||||
|
||||
@@ -2499,7 +2499,7 @@ static void mAGrw_SpoilAllPossession(int spoil_kabu) {
|
||||
int k;
|
||||
|
||||
if (spoil_kabu == TRUE) {
|
||||
priv = Save_Get(private);
|
||||
priv = Save_Get(private_data);
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mAGrw_SpoilPossession(priv->inventory.pockets, mPr_POCKETS_SLOT_COUNT);
|
||||
|
||||
+293
-320
@@ -4,387 +4,360 @@
|
||||
#include "m_common_data.h"
|
||||
|
||||
static void mCD_calendar_clear_interval(mCD_player_calendar_c* calendar, int interval) {
|
||||
u8 months[lbRTC_MONTHS_MAX];
|
||||
int i;
|
||||
u8 months[lbRTC_MONTHS_MAX];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < lbRTC_MONTHS_MAX; i++) {
|
||||
months[i] = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < interval; i++) {
|
||||
months[(calendar->month + i) % lbRTC_MONTHS_MAX] = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i > interval; i--) {
|
||||
months[(calendar->month + (lbRTC_MONTHS_MAX - 1) + i) % lbRTC_MONTHS_MAX] = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < lbRTC_MONTHS_MAX; i++) {
|
||||
if (months[i] == 1) {
|
||||
calendar->played_days[i] = 0;
|
||||
calendar->event_days[i] = 0;
|
||||
for (i = 0; i < lbRTC_MONTHS_MAX; i++) {
|
||||
months[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (months[lbRTC_JUNE - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; // 1
|
||||
}
|
||||
for (i = 0; i < interval; i++) {
|
||||
months[(calendar->month + i) % lbRTC_MONTHS_MAX] = 1;
|
||||
}
|
||||
|
||||
if (months[lbRTC_JULY - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; // 2
|
||||
}
|
||||
for (i = 0; i > interval; i--) {
|
||||
months[(calendar->month + (lbRTC_MONTHS_MAX - 1) + i) % lbRTC_MONTHS_MAX] = 1;
|
||||
}
|
||||
|
||||
if (months[lbRTC_AUGUST - 1] == 1) {
|
||||
calendar->event_flags &= ~(mCD_FLAG_METEOR_SHOWER | mCD_FLAG_FOUNDERS_DAY); // 12 (4 | 8)
|
||||
}
|
||||
for (i = 0; i < lbRTC_MONTHS_MAX; i++) {
|
||||
if (months[i] == 1) {
|
||||
calendar->played_days[i] = 0;
|
||||
calendar->event_days[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (months[lbRTC_SEPTEMBER - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; // 16
|
||||
}
|
||||
if (months[lbRTC_JUNE - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; // 1
|
||||
}
|
||||
|
||||
if (months[lbRTC_OCTOBER - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; // 32
|
||||
}
|
||||
if (months[lbRTC_JULY - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; // 2
|
||||
}
|
||||
|
||||
if (months[lbRTC_NOVEMBER - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; // 64
|
||||
}
|
||||
if (months[lbRTC_AUGUST - 1] == 1) {
|
||||
calendar->event_flags &= ~(mCD_FLAG_METEOR_SHOWER | mCD_FLAG_FOUNDERS_DAY); // 12 (4 | 8)
|
||||
}
|
||||
|
||||
if (months[lbRTC_SEPTEMBER - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; // 16
|
||||
}
|
||||
|
||||
if (months[lbRTC_OCTOBER - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; // 32
|
||||
}
|
||||
|
||||
if (months[lbRTC_NOVEMBER - 1] == 1) {
|
||||
calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; // 64
|
||||
}
|
||||
}
|
||||
|
||||
static void mCD_calendar_clear_day(mCD_player_calendar_c* calendar, lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day) {
|
||||
lbRTC_day_t days = lbRTC_GetDaysByMonth(year, month);
|
||||
int i;
|
||||
static void mCD_calendar_clear_day(mCD_player_calendar_c* calendar, lbRTC_year_t year, lbRTC_month_t month,
|
||||
lbRTC_day_t day) {
|
||||
lbRTC_day_t days = lbRTC_GetDaysByMonth(year, month);
|
||||
int i;
|
||||
|
||||
if (days != day) {
|
||||
u32 days_bitfield = 0;
|
||||
for (i = day; i < 31; i++) {
|
||||
days_bitfield |= (1 << i);
|
||||
if (days != day) {
|
||||
u32 days_bitfield = 0;
|
||||
for (i = day; i < 31; i++) {
|
||||
days_bitfield |= (1 << i);
|
||||
}
|
||||
|
||||
calendar->played_days[month - 1] &= ~days_bitfield;
|
||||
calendar->event_days[month - 1] &= ~days_bitfield;
|
||||
|
||||
switch (month) {
|
||||
case lbRTC_JUNE: {
|
||||
lbRTC_weekday_t weekday = lbRTC_Week(year, month, day + 1);
|
||||
|
||||
/* Calculate the current week and verify it's not the last week */
|
||||
if ((day - weekday) / lbRTC_WEEK + 1 < 3) {
|
||||
calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_JULY: {
|
||||
if (day < Save_Get(town_day)) {
|
||||
calendar->event_flags &= ~mCD_FLAG_TOWN_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_AUGUST: {
|
||||
if (day < 12) {
|
||||
calendar->event_flags &= ~mCD_FLAG_METEOR_SHOWER;
|
||||
}
|
||||
|
||||
if (day < 21) {
|
||||
calendar->event_flags &= ~mCD_FLAG_FOUNDERS_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_SEPTEMBER: {
|
||||
lbRTC_ymd_c harvest_moon_day;
|
||||
|
||||
lbRk_HarvestMoonDay(&harvest_moon_day, year);
|
||||
|
||||
if (month == harvest_moon_day.month && day < harvest_moon_day.day) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_OCTOBER: {
|
||||
lbRTC_ymd_c harvest_moon_day;
|
||||
|
||||
lbRk_HarvestMoonDay(&harvest_moon_day, year);
|
||||
|
||||
if (month == harvest_moon_day.month && day < harvest_moon_day.day) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_NOVEMBER: {
|
||||
if (day < 11) {
|
||||
calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
calendar->played_days[month - 1] &= ~days_bitfield;
|
||||
calendar->event_days[month - 1] &= ~days_bitfield;
|
||||
|
||||
switch (month) {
|
||||
case lbRTC_JUNE:
|
||||
{
|
||||
lbRTC_weekday_t weekday = lbRTC_Week(year, month, day + 1);
|
||||
|
||||
/* Calculate the current week and verify it's not the last week */
|
||||
if ((day - weekday) / lbRTC_WEEK + 1 < 3) {
|
||||
calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_JULY:
|
||||
{
|
||||
if (day < Save_Get(town_day)) {
|
||||
calendar->event_flags &= ~mCD_FLAG_TOWN_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_AUGUST:
|
||||
{
|
||||
if (day < 12) {
|
||||
calendar->event_flags &= ~mCD_FLAG_METEOR_SHOWER;
|
||||
}
|
||||
|
||||
if (day < 21) {
|
||||
calendar->event_flags &= ~mCD_FLAG_FOUNDERS_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_SEPTEMBER:
|
||||
{
|
||||
lbRTC_ymd_c harvest_moon_day;
|
||||
|
||||
lbRk_HarvestMoonDay(&harvest_moon_day, year);
|
||||
|
||||
if (month == harvest_moon_day.month && day < harvest_moon_day.day) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_OCTOBER:
|
||||
{
|
||||
lbRTC_ymd_c harvest_moon_day;
|
||||
|
||||
lbRk_HarvestMoonDay(&harvest_moon_day, year);
|
||||
|
||||
if (month == harvest_moon_day.month && day < harvest_moon_day.day) {
|
||||
calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_NOVEMBER:
|
||||
{
|
||||
if (day < 11) {
|
||||
calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int mCD_GetIntervalMonths(lbRTC_year_t y0, lbRTC_month_t m0, lbRTC_year_t y1, lbRTC_month_t m1) {
|
||||
return (m1 - m0) + (y1 - y0) * lbRTC_MONTHS_MAX;
|
||||
return (m1 - m0) + (y1 - y0) * lbRTC_MONTHS_MAX;
|
||||
}
|
||||
|
||||
extern void mCD_calendar_clear(int player_no) {
|
||||
Private_c* priv = Save_Get(private);
|
||||
Private_c* priv = Save_Get(private_data);
|
||||
|
||||
if (player_no == -1) {
|
||||
player_no = Common_Get(player_no);
|
||||
}
|
||||
if (player_no == -1) {
|
||||
player_no = Common_Get(player_no);
|
||||
}
|
||||
|
||||
if (player_no != mPr_FOREIGNER) {
|
||||
mem_clear((u8*)&priv[player_no].calendar, sizeof(mCD_player_calendar_c), 0);
|
||||
}
|
||||
if (player_no != mPr_FOREIGNER) {
|
||||
mem_clear((u8*)&priv[player_no].calendar, sizeof(mCD_player_calendar_c), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static int mCD_calendar_check_harvest_moon_viewing(mCD_player_calendar_c* calendar, lbRTC_month_t month) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
switch (month) {
|
||||
case lbRTC_SEPTEMBER:
|
||||
{
|
||||
if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_9) != 0) {
|
||||
res = TRUE;
|
||||
}
|
||||
switch (month) {
|
||||
case lbRTC_SEPTEMBER: {
|
||||
if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_9) != 0) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_OCTOBER: {
|
||||
if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_10) != 0) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case lbRTC_OCTOBER:
|
||||
{
|
||||
if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_10) != 0) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern void mCD_calendar_check_delete(int player_no, lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day) {
|
||||
if (player_no == -1) {
|
||||
player_no = Common_Get(player_no);
|
||||
}
|
||||
|
||||
if (player_no != mPr_FOREIGNER) {
|
||||
mCD_player_calendar_c* calendar = &Save_Get(private[player_no]).calendar;
|
||||
|
||||
if (calendar->year == 0) {
|
||||
mCD_calendar_clear(-1);
|
||||
if (player_no == -1) {
|
||||
player_no = Common_Get(player_no);
|
||||
}
|
||||
else {
|
||||
int interval = mCD_GetIntervalMonths(calendar->year, calendar->month, year, month);
|
||||
|
||||
if (interval >= lbRTC_MONTHS_MAX || interval <= -lbRTC_MONTHS_MAX) {
|
||||
mCD_calendar_clear(-1); // clear entire calendar since interval is >= 1 year
|
||||
}
|
||||
else {
|
||||
if (interval != 0) {
|
||||
mCD_calendar_clear_interval(calendar, interval); // clear only interval months
|
||||
if (player_no != mPr_FOREIGNER) {
|
||||
mCD_player_calendar_c* calendar = &Save_Get(private_data[player_no]).calendar;
|
||||
|
||||
if (calendar->year == 0) {
|
||||
mCD_calendar_clear(-1);
|
||||
} else {
|
||||
int interval = mCD_GetIntervalMonths(calendar->year, calendar->month, year, month);
|
||||
|
||||
if (interval >= lbRTC_MONTHS_MAX || interval <= -lbRTC_MONTHS_MAX) {
|
||||
mCD_calendar_clear(-1); // clear entire calendar since interval is >= 1 year
|
||||
} else {
|
||||
if (interval != 0) {
|
||||
mCD_calendar_clear_interval(calendar, interval); // clear only interval months
|
||||
}
|
||||
|
||||
mCD_calendar_clear_day(calendar, year, month, day); // clear days
|
||||
}
|
||||
}
|
||||
|
||||
mCD_calendar_clear_day(calendar, year, month, day); // clear days
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern void mCD_calendar_wellcome_on() {
|
||||
mCD_player_calendar_c* calendar = &Common_Get(now_private)->calendar;
|
||||
mCD_player_calendar_c* calendar = &Common_Get(now_private)->calendar;
|
||||
|
||||
if (Common_Get(player_no) != mPr_FOREIGNER) {
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
if (Common_Get(player_no) != mPr_FOREIGNER) {
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
|
||||
mCD_calendar_check_delete(-1, rtc_time->year, rtc_time->month, rtc_time->day);
|
||||
calendar->played_days[rtc_time->month - 1] |= (1 << (rtc_time->day - 1));
|
||||
calendar->year = rtc_time->year;
|
||||
calendar->month = rtc_time->month;
|
||||
}
|
||||
mCD_calendar_check_delete(-1, rtc_time->year, rtc_time->month, rtc_time->day);
|
||||
calendar->played_days[rtc_time->month - 1] |= (1 << (rtc_time->day - 1));
|
||||
calendar->year = rtc_time->year;
|
||||
calendar->month = rtc_time->month;
|
||||
}
|
||||
}
|
||||
|
||||
extern void mCD_calendar_event_on(lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day, u8 event) {
|
||||
if (Common_Get(player_no) != mPr_FOREIGNER) {
|
||||
mCD_player_calendar_c* calendar;
|
||||
if (Common_Get(player_no) != mPr_FOREIGNER) {
|
||||
mCD_player_calendar_c* calendar;
|
||||
|
||||
mCD_calendar_check_delete(-1, year, month, day);
|
||||
calendar = &Save_Get(private[Common_Get(player_no)]).calendar;
|
||||
mCD_calendar_check_delete(-1, year, month, day);
|
||||
calendar = &Save_Get(private_data[Common_Get(player_no)]).calendar;
|
||||
|
||||
switch (event) {
|
||||
case 11:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_MOTHERS_DAY;
|
||||
switch (event) {
|
||||
case 11: {
|
||||
calendar->event_flags |= mCD_FLAG_MOTHERS_DAY;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 4:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_TOWN_DAY;
|
||||
case 4: {
|
||||
calendar->event_flags |= mCD_FLAG_TOWN_DAY;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 16:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_METEOR_SHOWER;
|
||||
case 16: {
|
||||
calendar->event_flags |= mCD_FLAG_METEOR_SHOWER;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 1:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_FOUNDERS_DAY;
|
||||
case 1: {
|
||||
calendar->event_flags |= mCD_FLAG_FOUNDERS_DAY;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 17:
|
||||
{
|
||||
switch (month) {
|
||||
case lbRTC_SEPTEMBER:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_HARVEST_MOON_9;
|
||||
case 17: {
|
||||
switch (month) {
|
||||
case lbRTC_SEPTEMBER: {
|
||||
calendar->event_flags |= mCD_FLAG_HARVEST_MOON_9;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case lbRTC_OCTOBER:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_HARVEST_MOON_10;
|
||||
case lbRTC_OCTOBER: {
|
||||
calendar->event_flags |= mCD_FLAG_HARVEST_MOON_10;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 19: {
|
||||
calendar->event_flags |= mCD_FLAG_OFFICERS_DAY;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 255: {
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
calendar->event_days[month - 1] |= (1 << (day - 1));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 19:
|
||||
{
|
||||
calendar->event_flags |= mCD_FLAG_OFFICERS_DAY;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 255:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
calendar->event_days[month - 1] |= (1 << (day - 1));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern int mCD_calendar_event_check(lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day, int player_no, u8 event) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
if (player_no == -1) {
|
||||
player_no = Common_Get(player_no);
|
||||
}
|
||||
|
||||
if (player_no != mPr_FOREIGNER) {
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
|
||||
int interval = (rtc_time->month - month) + (rtc_time->year - year) * lbRTC_MONTHS_MAX;
|
||||
|
||||
if (interval >= 0 && interval < lbRTC_MONTHS_MAX) {
|
||||
mCD_player_calendar_c* calendar = &Save_Get(private[player_no]).calendar;
|
||||
|
||||
switch (event) {
|
||||
case 11:
|
||||
{
|
||||
if (calendar->event_flags & mCD_FLAG_MOTHERS_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 4:
|
||||
{
|
||||
if (calendar->event_flags & mCD_FLAG_TOWN_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 16:
|
||||
{
|
||||
if (calendar->event_flags & mCD_FLAG_METEOR_SHOWER) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 1:
|
||||
{
|
||||
if (calendar->event_flags & mCD_FLAG_FOUNDERS_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 17:
|
||||
{
|
||||
if (mCD_calendar_check_harvest_moon_viewing(calendar, month) == TRUE) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 19:
|
||||
{
|
||||
if (calendar->event_flags & mCD_FLAG_OFFICERS_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 255:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
if (calendar->event_days[month - 1] & (1 << (day - 1))) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (player_no == -1) {
|
||||
player_no = Common_Get(player_no);
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
if (player_no != mPr_FOREIGNER) {
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
|
||||
int interval = (rtc_time->month - month) + (rtc_time->year - year) * lbRTC_MONTHS_MAX;
|
||||
|
||||
if (interval >= 0 && interval < lbRTC_MONTHS_MAX) {
|
||||
mCD_player_calendar_c* calendar = &Save_Get(private_data[player_no]).calendar;
|
||||
|
||||
switch (event) {
|
||||
case 11: {
|
||||
if (calendar->event_flags & mCD_FLAG_MOTHERS_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 4: {
|
||||
if (calendar->event_flags & mCD_FLAG_TOWN_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 16: {
|
||||
if (calendar->event_flags & mCD_FLAG_METEOR_SHOWER) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 1: {
|
||||
if (calendar->event_flags & mCD_FLAG_FOUNDERS_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 17: {
|
||||
if (mCD_calendar_check_harvest_moon_viewing(calendar, month) == TRUE) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 19: {
|
||||
if (calendar->event_flags & mCD_FLAG_OFFICERS_DAY) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 255: {
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
if (calendar->event_days[month - 1] & (1 << (day - 1))) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
+2011
-2196
File diff suppressed because it is too large
Load Diff
+396
-318
@@ -15,504 +15,582 @@
|
||||
|
||||
/* upstairs room base unit layout */
|
||||
static mActor_name_t l_player_room_2_utinfo[UT_X_NUM * UT_Z_NUM] = {
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
DOOR0, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, DOOR0, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
};
|
||||
|
||||
/* basement room base unit layout */
|
||||
static mActor_name_t l_player_room_bm_utinfo[UT_X_NUM * UT_Z_NUM] = {
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
};
|
||||
|
||||
/* small main room base unit layout */
|
||||
static mActor_name_t l_proom_s_tmp[UT_X_NUM * UT_Z_NUM] = {
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_DOOR,
|
||||
RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
};
|
||||
|
||||
/* medium main room base unit layout */
|
||||
static mActor_name_t l_proom_m_tmp[UT_X_NUM * UT_Z_NUM] = {
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR,
|
||||
RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
};
|
||||
|
||||
/* large main room base unit layout */
|
||||
static mActor_name_t l_proom_l_tmp[UT_X_NUM * UT_Z_NUM] = {
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, DOOR1, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, DOOR1, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
};
|
||||
|
||||
/* island cottage base unit layout */
|
||||
static mActor_name_t l_proom_cottage_tmp[UT_X_NUM * UT_Z_NUM] = {
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO,
|
||||
RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO,
|
||||
EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO
|
||||
};
|
||||
|
||||
#define HANIWA_MSG_LINES 4
|
||||
|
||||
// TODO: fix me
|
||||
|
||||
|
||||
/**
|
||||
* @brief Clears the save data for a given home.
|
||||
*
|
||||
*
|
||||
* @param home_no Index of the home which will be cleared (0-3).
|
||||
**/
|
||||
extern void mHm_ClearHomeInfo(int home_no) {
|
||||
static int haniwa_msg[HANIWA_MSG_LINES] = { 0x76A, 0x76B, 0x76C, 0x76D }; /* These are probably defines somewhere from auto-gen */
|
||||
static int haniwa_msg[HANIWA_MSG_LINES] = { 0x76A, 0x76B, 0x76C,
|
||||
0x76D }; /* These are probably defines somewhere from auto-gen */
|
||||
|
||||
int no;
|
||||
mHm_hs_c* home;
|
||||
u8 haniwa_msg_buf[HANIWA_MESSAGE_LEN];
|
||||
u16* item_p;
|
||||
u16* src_p;
|
||||
int i;
|
||||
u8* haniwa_msg_p;
|
||||
int j;
|
||||
int no;
|
||||
mHm_hs_c* home;
|
||||
u8 haniwa_msg_buf[HANIWA_MESSAGE_LEN];
|
||||
u16* item_p;
|
||||
u16* src_p;
|
||||
int i;
|
||||
u8* haniwa_msg_p;
|
||||
int j;
|
||||
|
||||
no = home_no & 3;
|
||||
home = Save_GetPointer(homes[no]);
|
||||
bzero(home, sizeof(mHm_hs_c));
|
||||
mPr_ClearPersonalID(&home->ownerID);
|
||||
bcopy(l_proom_s_tmp, home->floors[mHm_ROOM_MAIN].layer_main.items, (UT_X_NUM * UT_Z_NUM) * sizeof(u16));
|
||||
home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch = 0;
|
||||
*((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 1) = 0; /* ftr_switch might be a union? */
|
||||
*((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 0) = 0;
|
||||
no = home_no & 3;
|
||||
home = Save_GetPointer(homes[no]);
|
||||
bzero(home, sizeof(mHm_hs_c));
|
||||
mPr_ClearPersonalID(&home->ownerID);
|
||||
bcopy(l_proom_s_tmp, home->floors[mHm_ROOM_MAIN].layer_main.items, (UT_X_NUM * UT_Z_NUM) * sizeof(u16));
|
||||
home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch = 0;
|
||||
*((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 1) = 0; /* ftr_switch might be a union? */
|
||||
*((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 0) = 0;
|
||||
|
||||
item_p = (u16*)home->floors[mHm_ROOM_BASEMENT].layer_main.items;
|
||||
src_p = l_player_room_bm_utinfo;
|
||||
for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) {
|
||||
*item_p++ = *src_p++;
|
||||
}
|
||||
item_p = (u16*)home->floors[mHm_ROOM_BASEMENT].layer_main.items;
|
||||
src_p = l_player_room_bm_utinfo;
|
||||
for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) {
|
||||
*item_p++ = *src_p++;
|
||||
}
|
||||
|
||||
item_p = ((u16*)home->floors[mHm_ROOM_UPPER].layer_main.items);
|
||||
src_p = l_player_room_2_utinfo;
|
||||
for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) {
|
||||
*item_p++ = *src_p++;
|
||||
}
|
||||
item_p = ((u16*)home->floors[mHm_ROOM_UPPER].layer_main.items);
|
||||
src_p = l_player_room_2_utinfo;
|
||||
for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) {
|
||||
*item_p++ = *src_p++;
|
||||
}
|
||||
|
||||
mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE);
|
||||
Save_Set(homes[no].outlook_pal, no);
|
||||
Save_Set(homes[no].next_outlook_pal, no);
|
||||
mCkRh_InitGokiSaveData_1Room_ByHomeData(home);
|
||||
mHm_SetDefaultPlayerRoomData(no);
|
||||
mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE);
|
||||
Save_Set(homes[no].outlook_pal, no);
|
||||
Save_Set(homes[no].next_outlook_pal, no);
|
||||
mCkRh_InitGokiSaveData_1Room_ByHomeData(home);
|
||||
mHm_SetDefaultPlayerRoomData(no);
|
||||
|
||||
haniwa_msg_p = home->haniwa.message;
|
||||
for (j = 0; j < HANIWA_MSG_LINES; j++) {
|
||||
int len;
|
||||
haniwa_msg_p = home->haniwa.message;
|
||||
for (j = 0; j < HANIWA_MSG_LINES; j++) {
|
||||
int len;
|
||||
|
||||
mString_Load_StringFromRom(haniwa_msg_buf, HANIWA_MESSAGE_LEN, haniwa_msg[j]);
|
||||
len = mMl_strlen(haniwa_msg_buf, HANIWA_MESSAGE_LEN, CHAR_SPACE);
|
||||
haniwa_msg_buf[len] = CHAR_NEW_LINE;
|
||||
mem_copy(haniwa_msg_p, haniwa_msg_buf, len + 1);
|
||||
haniwa_msg_p += len + 1;
|
||||
}
|
||||
mString_Load_StringFromRom(haniwa_msg_buf, HANIWA_MESSAGE_LEN, haniwa_msg[j]);
|
||||
len = mMl_strlen(haniwa_msg_buf, HANIWA_MESSAGE_LEN, CHAR_SPACE);
|
||||
haniwa_msg_buf[len] = CHAR_NEW_LINE;
|
||||
mem_copy(haniwa_msg_p, haniwa_msg_buf, len + 1);
|
||||
haniwa_msg_p += len + 1;
|
||||
}
|
||||
|
||||
Save_Set(keep_house_size[no], 0);
|
||||
Save_Set(homes[no].door_original, 0xFF);
|
||||
Save_Set(keep_house_size[no], 0);
|
||||
Save_Set(homes[no].door_original, 0xFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clears save data for all homes.
|
||||
**/
|
||||
extern void mHm_ClearAllHomeInfo() {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mHm_ClearHomeInfo(i);
|
||||
}
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mHm_ClearHomeInfo(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets common_data's 'now_home' pointer to the current player's home.
|
||||
**/
|
||||
extern void mHm_SetNowHome() {
|
||||
mHm_hs_c* now_home = NULL;
|
||||
mHm_hs_c* now_home = NULL;
|
||||
|
||||
if (Common_Get(player_no) < PLAYER_NUM) {
|
||||
now_home = Save_GetPointer(homes[mHS_get_arrange_idx(Common_Get(player_no))]);
|
||||
}
|
||||
if (Common_Get(player_no) < PLAYER_NUM) {
|
||||
now_home = Save_GetPointer(homes[mHS_get_arrange_idx(Common_Get(player_no))]);
|
||||
}
|
||||
|
||||
Common_Set(now_home, now_home);
|
||||
Common_Set(now_home, now_home);
|
||||
}
|
||||
|
||||
/* sizeof(mHm_player_room_default_data_c) == 0x10 */
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 wall_num;
|
||||
/* 0x01 */ u8 floor_num;
|
||||
/* 0x04 */ int item_ut_x;
|
||||
/* 0x08 */ int item_ut_z;
|
||||
/* 0x0C */ mActor_name_t item;
|
||||
/* 0x00 */ u8 wall_num;
|
||||
/* 0x01 */ u8 floor_num;
|
||||
/* 0x04 */ int item_ut_x;
|
||||
/* 0x08 */ int item_ut_z;
|
||||
/* 0x0C */ mActor_name_t item;
|
||||
} mHm_player_room_default_data_c;
|
||||
|
||||
/* list of default properties for each house */
|
||||
static mHm_player_room_default_data_c l_mHm_player_room_default_data[PLAYER_NUM] = {
|
||||
{ 3, 38, 4, 1, FTR_TAPEDECK }, /* Top-left house, stone wall & old flooring */
|
||||
{ 41, 42, 4, 1, FTR_TAPEDECK }, /* Top-right house, wood panelling & steel flooring */
|
||||
{ 55, 5, 4, 1, FTR_TAPEDECK }, /* Bottom-left house, shanty wall & birch flooring */
|
||||
{ 42, 34, 4, 1, FTR_TAPEDECK } /* Bottom-right house, concrete wall & charcoal tile */
|
||||
{ 3, 38, 4, 1, FTR_TAPEDECK }, /* Top-left house, stone wall & old flooring */
|
||||
{ 41, 42, 4, 1, FTR_TAPEDECK }, /* Top-right house, wood panelling & steel flooring */
|
||||
{ 55, 5, 4, 1, FTR_TAPEDECK }, /* Bottom-left house, shanty wall & birch flooring */
|
||||
{ 42, 34, 4, 1, FTR_TAPEDECK } /* Bottom-right house, concrete wall & charcoal tile */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Sets the default data for a given home.
|
||||
*
|
||||
*
|
||||
* @param home_no Index of the home which will receive the default data
|
||||
**/
|
||||
extern void mHm_SetDefaultPlayerRoomData(int home_no) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
int ut_x = l_mHm_player_room_default_data[home_no & 3].item_ut_x;
|
||||
int ut_z = l_mHm_player_room_default_data[home_no & 3].item_ut_z;
|
||||
int ut_x = l_mHm_player_room_default_data[home_no & 3].item_ut_x;
|
||||
int ut_z = l_mHm_player_room_default_data[home_no & 3].item_ut_z;
|
||||
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x], l_mHm_player_room_default_data[home_no & 3].item);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x],
|
||||
l_mHm_player_room_default_data[home_no & 3].item);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX);
|
||||
Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00);
|
||||
|
||||
for (i = 0; i < mHm_ROOM_NUM; i++) {
|
||||
Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx, l_mHm_player_room_default_data[home_no & 3].floor_num);
|
||||
Save_Set(homes[home_no & 3].floors[i].wall_floor.wallpaper_idx, l_mHm_player_room_default_data[home_no & 3].wall_num);
|
||||
}
|
||||
for (i = 0; i < mHm_ROOM_NUM; i++) {
|
||||
Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx,
|
||||
l_mHm_player_room_default_data[home_no & 3].floor_num);
|
||||
Save_Set(homes[home_no & 3].floors[i].wall_floor.wallpaper_idx,
|
||||
l_mHm_player_room_default_data[home_no & 3].wall_num);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes the home's owner id to the given player's id.
|
||||
*
|
||||
*
|
||||
* @param home Pointer to the mHm_hs_c home which will be updated
|
||||
* @param player_no Index of the player whose id will be used
|
||||
**/
|
||||
extern void mHm_InitHomeInfo(mHm_hs_c* home, int player_no) {
|
||||
mPr_CopyPersonalID(&home->ownerID, Save_GetPointer(private[player_no].player_ID));
|
||||
mPr_CopyPersonalID(&home->ownerID, Save_GetPointer(private_data[player_no].player_ID));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets/clears the wall and door layout for a given room.
|
||||
*
|
||||
*
|
||||
* @param dst Pointer to the room item actor data
|
||||
* @param roomtype Type of room to select correct room data (0-3)
|
||||
* @param set when TRUE copy data, when FALSE clear data
|
||||
**/
|
||||
static void mHm_ChangeWallDoorFG(mActor_name_t* dst, int roomtype, int set) {
|
||||
static mActor_name_t* player_room_tmp_table[mHm_ROOMTYPE_NUM] = {
|
||||
l_proom_s_tmp, /* small room layout (default) */
|
||||
l_proom_m_tmp, /* medium room layout */
|
||||
l_proom_l_tmp, /* large room layout */
|
||||
l_proom_cottage_tmp /* island cottage layout */
|
||||
};
|
||||
static mActor_name_t* player_room_tmp_table[mHm_ROOMTYPE_NUM] = {
|
||||
l_proom_s_tmp, /* small room layout (default) */
|
||||
l_proom_m_tmp, /* medium room layout */
|
||||
l_proom_l_tmp, /* large room layout */
|
||||
l_proom_cottage_tmp /* island cottage layout */
|
||||
};
|
||||
|
||||
mActor_name_t* src;
|
||||
int i;
|
||||
mActor_name_t* src;
|
||||
int i;
|
||||
|
||||
if (roomtype < mHm_ROOMTYPE_SMALL || roomtype >= mHm_ROOMTYPE_NUM) {
|
||||
roomtype = mHm_ROOMTYPE_SMALL;
|
||||
}
|
||||
|
||||
src = player_room_tmp_table[roomtype];
|
||||
for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) {
|
||||
if (*src != EMPTY_NO) {
|
||||
if (set == FALSE) {
|
||||
*dst = EMPTY_NO; /* clear */
|
||||
}
|
||||
else {
|
||||
*dst = *src; /* set */
|
||||
}
|
||||
if (roomtype < mHm_ROOMTYPE_SMALL || roomtype >= mHm_ROOMTYPE_NUM) {
|
||||
roomtype = mHm_ROOMTYPE_SMALL;
|
||||
}
|
||||
|
||||
src++;
|
||||
dst++;
|
||||
}
|
||||
src = player_room_tmp_table[roomtype];
|
||||
for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) {
|
||||
if (*src != EMPTY_NO) {
|
||||
if (set == FALSE) {
|
||||
*dst = EMPTY_NO; /* clear */
|
||||
} else {
|
||||
*dst = *src; /* set */
|
||||
}
|
||||
}
|
||||
|
||||
src++;
|
||||
dst++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clears the wall & door data for a room.
|
||||
*
|
||||
*
|
||||
* @param items Pointer to the room actor items
|
||||
* @param roomtype Type of room to clear
|
||||
**/
|
||||
static void mHm_EraseWallDoor(mActor_name_t* items, int roomtype) {
|
||||
mHm_ChangeWallDoorFG(items, roomtype, FALSE);
|
||||
mHm_ChangeWallDoorFG(items, roomtype, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets the wall & door data for a room.
|
||||
*
|
||||
*
|
||||
* @param items Pointer to the room actor items
|
||||
* @param roomtype Type of room to clear
|
||||
**/
|
||||
static void mHm_SetWallDoor(mActor_name_t* items, int roomtype) {
|
||||
mHm_ChangeWallDoorFG(items, roomtype, TRUE);
|
||||
mHm_ChangeWallDoorFG(items, roomtype, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Updates the wall & door data for the main room.
|
||||
*
|
||||
*
|
||||
* @param home Pointer to the mHm_hs_c home to update
|
||||
* @param home_size Size of the home (0-4, but only 1-4 should be used for this function)
|
||||
**/
|
||||
static void mHm_RehouseWallDoor(mHm_hs_c* home, int home_size) {
|
||||
static int room_size[mHm_HOMESIZE_NUM] = {
|
||||
mHm_ROOMTYPE_SMALL, /* mHm_HOMESIZE_SMALL */
|
||||
mHm_ROOMTYPE_MEDIUM, /* mHm_HOMESIZE_MEDIUM */
|
||||
mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_LARGE */
|
||||
mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_UPPER */
|
||||
mHm_ROOMTYPE_SMALL /* mHm_HOMESIZE_STATUE */
|
||||
};
|
||||
static int room_size[mHm_HOMESIZE_NUM] = {
|
||||
mHm_ROOMTYPE_SMALL, /* mHm_HOMESIZE_SMALL */
|
||||
mHm_ROOMTYPE_MEDIUM, /* mHm_HOMESIZE_MEDIUM */
|
||||
mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_LARGE */
|
||||
mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_UPPER */
|
||||
mHm_ROOMTYPE_SMALL /* mHm_HOMESIZE_STATUE */
|
||||
};
|
||||
|
||||
int new_size;
|
||||
int old_size;
|
||||
int new_size;
|
||||
int old_size;
|
||||
|
||||
if (home_size < mHm_HOMESIZE_MEDIUM || home_size >= mHm_HOMESIZE_NUM) {
|
||||
home_size = mHm_HOMESIZE_MEDIUM;
|
||||
}
|
||||
if (home_size < mHm_HOMESIZE_MEDIUM || home_size >= mHm_HOMESIZE_NUM) {
|
||||
home_size = mHm_HOMESIZE_MEDIUM;
|
||||
}
|
||||
|
||||
old_size = room_size[home_size - 1];
|
||||
new_size = room_size[home_size];
|
||||
old_size = room_size[home_size - 1];
|
||||
new_size = room_size[home_size];
|
||||
|
||||
mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, old_size);
|
||||
mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, old_size);
|
||||
mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, new_size);
|
||||
mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, new_size);
|
||||
mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, old_size);
|
||||
mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, old_size);
|
||||
mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, new_size);
|
||||
mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, new_size);
|
||||
}
|
||||
|
||||
#define CHECK_ORDER_DATE(home, rtc_time) \
|
||||
((home)->size_info.upgrade_order_date.day != (rtc_time)->day || \
|
||||
(home)->size_info.upgrade_order_date.month != (rtc_time)->month || \
|
||||
(home)->size_info.upgrade_order_date.year != (rtc_time)->year)
|
||||
#define CHECK_ORDER_DATE(home, rtc_time) \
|
||||
((home)->size_info.upgrade_order_date.day != (rtc_time)->day || \
|
||||
(home)->size_info.upgrade_order_date.month != (rtc_time)->month || \
|
||||
(home)->size_info.upgrade_order_date.year != (rtc_time)->year)
|
||||
|
||||
/**
|
||||
* @brief Check if any house should be updated, and if so, update it.
|
||||
**/
|
||||
extern void mHm_CheckRehouseOrder() {
|
||||
mHm_hs_c* home = Save_Get(homes);
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
int i;
|
||||
mHm_hs_c* home = Save_Get(homes);
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) {
|
||||
if (home->outlook_pal != home->next_outlook_pal) {
|
||||
home->outlook_pal = home->next_outlook_pal;
|
||||
}
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) {
|
||||
if (home->outlook_pal != home->next_outlook_pal) {
|
||||
home->outlook_pal = home->next_outlook_pal;
|
||||
}
|
||||
|
||||
if (home->size_info.size != home->size_info.next_size && home->size_info.next_size < mHm_HOMESIZE_STATUE) {
|
||||
if (CHECK_ORDER_DATE(home, rtc_time)) {
|
||||
home->outlook_pal = home->ordered_outlook_pal;
|
||||
home->next_outlook_pal = home->ordered_outlook_pal;
|
||||
home->size_info.size = home->size_info.next_size;
|
||||
home->size_info.renew = TRUE;
|
||||
mHm_RehouseWallDoor(home, home->size_info.size);
|
||||
if (home->size_info.size != home->size_info.next_size && home->size_info.next_size < mHm_HOMESIZE_STATUE) {
|
||||
if (CHECK_ORDER_DATE(home, rtc_time)) {
|
||||
home->outlook_pal = home->ordered_outlook_pal;
|
||||
home->next_outlook_pal = home->ordered_outlook_pal;
|
||||
home->size_info.size = home->size_info.next_size;
|
||||
home->size_info.renew = TRUE;
|
||||
mHm_RehouseWallDoor(home, home->size_info.size);
|
||||
}
|
||||
} else {
|
||||
if (home->size_info.basement_ordered) {
|
||||
if (CHECK_ORDER_DATE(home, rtc_time)) {
|
||||
mHm_SetBasement(i);
|
||||
home->size_info.renew = TRUE;
|
||||
}
|
||||
} else if (home->size_info.statue_ordered == TRUE) {
|
||||
if (CHECK_ORDER_DATE(home, rtc_time)) {
|
||||
home->size_info.next_size = mHm_HOMESIZE_STATUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (home->size_info.basement_ordered) {
|
||||
if (CHECK_ORDER_DATE(home, rtc_time)) {
|
||||
mHm_SetBasement(i);
|
||||
home->size_info.renew = TRUE;
|
||||
}
|
||||
}
|
||||
else if (home->size_info.statue_ordered == TRUE) {
|
||||
if (CHECK_ORDER_DATE(home, rtc_time)) {
|
||||
home->size_info.next_size = mHm_HOMESIZE_STATUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
home++;
|
||||
}
|
||||
home++;
|
||||
}
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
u32* state_flags = Save_GetPointer(private[i].state_flags);
|
||||
*state_flags &= (~0x200); /* TODO: these need an enum/defines */
|
||||
}
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
u32* state_flags = Save_GetPointer(private_data[i].state_flags);
|
||||
*state_flags &= (~0x200); /* TODO: these need an enum/defines */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Stores the player's current house size for later.
|
||||
*
|
||||
*
|
||||
* @param player_no Index of the player whose house size will be saved
|
||||
* @return TRUE/FALSE house size was kept
|
||||
**/
|
||||
extern int mHm_KeepHouseSize(u8 player_no) {
|
||||
int arrange_idx;
|
||||
mHm_hs_c* home;
|
||||
u8* keep_house_size;
|
||||
int res = FALSE;
|
||||
int arrange_idx;
|
||||
mHm_hs_c* home;
|
||||
u8* keep_house_size;
|
||||
int res = FALSE;
|
||||
|
||||
if (player_no < PLAYER_NUM) {
|
||||
arrange_idx = mHS_get_arrange_idx(player_no);
|
||||
home = Save_GetPointer(homes[arrange_idx]);
|
||||
keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]);
|
||||
|
||||
res = TRUE;
|
||||
if (player_no < PLAYER_NUM) {
|
||||
arrange_idx = mHS_get_arrange_idx(player_no);
|
||||
home = Save_GetPointer(homes[arrange_idx]);
|
||||
keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]);
|
||||
|
||||
/* I don't think this is a union or struct due to the unused first bit */
|
||||
/* But maybe... perhaps they used a pad bit for the topmost bit unlike other structs */
|
||||
*keep_house_size = 0;
|
||||
*keep_house_size |= home->size_info.size;
|
||||
*keep_house_size |= home->size_info.next_size << 3;
|
||||
*keep_house_size |= home->size_info.renew << 6;
|
||||
}
|
||||
res = TRUE;
|
||||
|
||||
return res;
|
||||
/* I don't think this is a union or struct due to the unused first bit */
|
||||
/* But maybe... perhaps they used a pad bit for the topmost bit unlike other structs */
|
||||
*keep_house_size = 0;
|
||||
*keep_house_size |= home->size_info.size;
|
||||
*keep_house_size |= home->size_info.next_size << 3;
|
||||
*keep_house_size |= home->size_info.renew << 6;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks whether the kept house size for a player is the same as the actual size.
|
||||
*
|
||||
*
|
||||
* @param player_no The index of the player whose house will be checked
|
||||
* @returns TRUE/FALSE house size and keep house size are the same
|
||||
**/
|
||||
extern int mHm_CheckKeepHouseSize(u8 player_no) {
|
||||
int arrange_idx;
|
||||
mHm_hs_c* home;
|
||||
u8* keep_house_size;
|
||||
int res = FALSE;
|
||||
int arrange_idx;
|
||||
mHm_hs_c* home;
|
||||
u8* keep_house_size;
|
||||
int res = FALSE;
|
||||
|
||||
if (player_no < PLAYER_NUM) {
|
||||
arrange_idx = mHS_get_arrange_idx(player_no);
|
||||
keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]);
|
||||
home = Save_Get(homes + arrange_idx);
|
||||
if (player_no < PLAYER_NUM) {
|
||||
arrange_idx = mHS_get_arrange_idx(player_no);
|
||||
keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]);
|
||||
home = Save_Get(homes + arrange_idx);
|
||||
|
||||
if ((*keep_house_size & 7) == home->size_info.size &&
|
||||
((*keep_house_size >> 3) & 7) == home->size_info.next_size &&
|
||||
((*keep_house_size >> 6) & 1) == home->size_info.renew) {
|
||||
res = TRUE;
|
||||
if ((*keep_house_size & 7) == home->size_info.size &&
|
||||
((*keep_house_size >> 3) & 7) == home->size_info.next_size &&
|
||||
((*keep_house_size >> 6) & 1) == home->size_info.renew) {
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Updates player house flags to include basement
|
||||
*
|
||||
*
|
||||
* @param home_no Index of the house whose basement flag will be enabled
|
||||
* @return TRUE/FALSE was flag set
|
||||
**/
|
||||
extern int mHm_SetBasement(u8 home_no) {
|
||||
if (home_no < PLAYER_NUM) {
|
||||
mHm_flg_c* flags = Save_GetPointer(homes[home_no].flags);
|
||||
if (flags->has_basement == FALSE) {
|
||||
flags->has_basement = TRUE;
|
||||
return TRUE;
|
||||
if (home_no < PLAYER_NUM) {
|
||||
mHm_flg_c* flags = Save_GetPointer(homes[home_no].flags);
|
||||
if (flags->has_basement == FALSE) {
|
||||
flags->has_basement = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets the default island cottage data
|
||||
*
|
||||
*
|
||||
* @param cottage Pointer to the mHm_cottage_c cottage which will receive the default data
|
||||
**/
|
||||
static void mHm_SetDefaultCottageData(mHm_cottage_c* cottage) {
|
||||
if (cottage == NULL) {
|
||||
return;
|
||||
}
|
||||
if (cottage == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
cottage->room.wall_floor.flooring_idx = 13;
|
||||
cottage->room.wall_floor.wallpaper_idx = 13;
|
||||
cottage->room.wall_floor.flooring_idx = 13;
|
||||
cottage->room.wall_floor.wallpaper_idx = 13;
|
||||
|
||||
cottage->room.layer_main.items[3][3] = FTR_REDALOHASHIRT;
|
||||
cottage->room.layer_main.items[3][6] = FTR_BLUEALOHASHIRT;
|
||||
cottage->room.layer_main.items[6][3] = FTR_REDALOHASHIRT;
|
||||
cottage->room.layer_main.items[6][6] = FTR_BLUEALOHASHIRT;
|
||||
cottage->room.layer_main.items[3][3] = FTR_REDALOHASHIRT;
|
||||
cottage->room.layer_main.items[3][6] = FTR_BLUEALOHASHIRT;
|
||||
cottage->room.layer_main.items[6][3] = FTR_REDALOHASHIRT;
|
||||
cottage->room.layer_main.items[6][6] = FTR_BLUEALOHASHIRT;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize an mHm_cottage_c cottage.
|
||||
*
|
||||
*
|
||||
* @param cottage Pointer to the mHm_cottage_c which will be initialized
|
||||
**/
|
||||
extern void mHm_InitCottage(mHm_cottage_c* cottage) {
|
||||
if (cottage != NULL) {
|
||||
bzero(cottage, sizeof(mHm_cottage_c));
|
||||
mHm_SetWallDoor((u16*)cottage->room.layer_main.items, mHm_ROOMTYPE_COTTAGE);
|
||||
mCkRh_InitGokiSaveData_IslandPlayerRoom();
|
||||
mHm_SetDefaultCottageData(cottage);
|
||||
}
|
||||
if (cottage != NULL) {
|
||||
bzero(cottage, sizeof(mHm_cottage_c));
|
||||
mHm_SetWallDoor((u16*)cottage->room.layer_main.items, mHm_ROOMTYPE_COTTAGE);
|
||||
mCkRh_InitGokiSaveData_IslandPlayerRoom();
|
||||
mHm_SetDefaultCottageData(cottage);
|
||||
}
|
||||
}
|
||||
|
||||
+55
-53
@@ -11,7 +11,7 @@
|
||||
|
||||
/**
|
||||
* @brief Initializes the `house_arrangement` variable to its default state.
|
||||
*
|
||||
*
|
||||
* The default state is:
|
||||
* Player0: House0
|
||||
* Player1: House1
|
||||
@@ -19,98 +19,100 @@
|
||||
* Player3: House3
|
||||
**/
|
||||
extern void mHS_house_init() {
|
||||
Save_Set(house_arrangement, DEFAULT_ARRANGEMENT);
|
||||
Save_Set(house_arrangement, DEFAULT_ARRANGEMENT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Retrieves the house arrangement value for a given player index.
|
||||
*
|
||||
*
|
||||
* @return The house index for the player.
|
||||
**/
|
||||
extern int mHS_get_arrange_idx(int player_no) {
|
||||
return ARRANGE_GET(player_no);
|
||||
return ARRANGE_GET(player_no);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the index of the player who owns the house index from `house_arrangement`.
|
||||
*
|
||||
*
|
||||
* @return The owning player index for the house.
|
||||
**/
|
||||
extern int mHS_get_pl_no(int house_no) {
|
||||
int i;
|
||||
u32 arrangement = Save_Get(house_arrangement);
|
||||
int i;
|
||||
u32 arrangement = Save_Get(house_arrangement);
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if ((arrangement & 3) == house_no) {
|
||||
break;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if ((arrangement & 3) == house_no) {
|
||||
break;
|
||||
}
|
||||
|
||||
arrangement >>= 2;
|
||||
}
|
||||
|
||||
arrangement >>= 2;
|
||||
}
|
||||
|
||||
return i;
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the index of the player who owns a house by checking house owner IDs.
|
||||
*
|
||||
*
|
||||
* @return The owning player index for the house.
|
||||
**/
|
||||
extern int mHS_get_pl_no_detail(int home_no) {
|
||||
mHm_hs_c* home = Save_Get(homes + (home_no & 3));
|
||||
mHm_hs_c* home = Save_Get(homes + (home_no & 3));
|
||||
|
||||
if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) {
|
||||
int i;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_CheckCmpPersonalID(&home->ownerID, Save_GetPointer(private[i].player_ID))) {
|
||||
return i;
|
||||
}
|
||||
if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) {
|
||||
int i;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_CheckCmpPersonalID(&home->ownerID, Save_GetPointer(private_data[i].player_ID))) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* TODO: this probably had some macro.. maybe refactor? */
|
||||
/**
|
||||
* @brief Sets the house arrangement value for `player_no` to `house_no`.
|
||||
*
|
||||
*
|
||||
* This function also swaps houses with whichever player is set in house_arrangement
|
||||
* with the house currently assigned to `player_no`.
|
||||
*
|
||||
*
|
||||
* @return TRUE when successfully set, FALSE otherwise.
|
||||
**/
|
||||
extern int mHS_set_use(int player_no, int house_no) {
|
||||
int now_player_no;
|
||||
u32 house_arrangement;
|
||||
int mask;
|
||||
int plr_shift;
|
||||
int new_shift;
|
||||
int res = FALSE;
|
||||
int now_player_no;
|
||||
u32 house_arrangement;
|
||||
int mask;
|
||||
int plr_shift;
|
||||
int new_shift;
|
||||
int res = FALSE;
|
||||
|
||||
if (player_no < PLAYER_NUM && house_no < PLAYER_NUM) {
|
||||
now_player_no = mHS_get_pl_no(house_no);
|
||||
if (mPr_NullCheckPersonalID(Save_GetPointer(homes[house_no].ownerID)) == TRUE) {
|
||||
if (now_player_no != player_no) {
|
||||
plr_shift = player_no * 2;
|
||||
new_shift = now_player_no * 2;
|
||||
house_arrangement = Save_Get(house_arrangement);
|
||||
|
||||
/* create bitmask to clear previous saved indices */
|
||||
mask = 0xffffffff;
|
||||
mask ^= (3 << plr_shift) | (3 << new_shift); /* Remove the bits relating to both player indicies */
|
||||
if (player_no < PLAYER_NUM && house_no < PLAYER_NUM) {
|
||||
now_player_no = mHS_get_pl_no(house_no);
|
||||
if (mPr_NullCheckPersonalID(Save_GetPointer(homes[house_no].ownerID)) == TRUE) {
|
||||
if (now_player_no != player_no) {
|
||||
plr_shift = player_no * 2;
|
||||
new_shift = now_player_no * 2;
|
||||
house_arrangement = Save_Get(house_arrangement);
|
||||
|
||||
/* Swap the player who currently owns our selected house with whatever house our player "owns" currently */
|
||||
Save_Set(house_arrangement, (
|
||||
((house_arrangement & mask) | /* Clear old values */
|
||||
(((house_arrangement >> plr_shift) & 3)) << new_shift) | /* move current player house idx to old player house idx */
|
||||
(house_no << plr_shift))); /* set current player new house idx */
|
||||
}
|
||||
/* create bitmask to clear previous saved indices */
|
||||
mask = 0xffffffff;
|
||||
mask ^= (3 << plr_shift) | (3 << new_shift); /* Remove the bits relating to both player indicies */
|
||||
|
||||
mHm_InitHomeInfo(Save_Get(homes + house_no), player_no);
|
||||
res = TRUE;
|
||||
/* Swap the player who currently owns our selected house with whatever house our player "owns" currently
|
||||
*/
|
||||
Save_Set(house_arrangement,
|
||||
(((house_arrangement & mask) | /* Clear old values */
|
||||
(((house_arrangement >> plr_shift) & 3))
|
||||
<< new_shift) | /* move current player house idx to old player house idx */
|
||||
(house_no << plr_shift))); /* set current player new house idx */
|
||||
}
|
||||
|
||||
mHm_InitHomeInfo(Save_Get(homes + house_no), player_no);
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
+220
-231
@@ -16,365 +16,354 @@ static u8 footer[MAIL_FOOTER2_LEN];
|
||||
static u8 header[MAIL_HEADER2_LEN];
|
||||
|
||||
extern int mMl_strlen(u8* str, int size, u8 end_char) {
|
||||
u32 end_p = size + (u32)str;
|
||||
int i;
|
||||
u32 end_p = size + (u32)str;
|
||||
int i;
|
||||
|
||||
end_p--;
|
||||
for (size; size != 0; size--) {
|
||||
|
||||
if (*(u8*)end_p != end_char) {
|
||||
return size;
|
||||
}
|
||||
|
||||
end_p--;
|
||||
}
|
||||
for (size; size != 0; size--) {
|
||||
|
||||
return 0;
|
||||
if (*(u8*)end_p != end_char) {
|
||||
return size;
|
||||
}
|
||||
|
||||
end_p--;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern int mMl_strlen2(int* found, u8* str, int size, u8 end_char) {
|
||||
int len = 0;
|
||||
int len = 0;
|
||||
|
||||
if (found != NULL) {
|
||||
*found = FALSE;
|
||||
}
|
||||
|
||||
for (size; size != 0; size--) {
|
||||
len++;
|
||||
if (*str == end_char) {
|
||||
if (found != NULL) {
|
||||
*found = TRUE;
|
||||
}
|
||||
break;
|
||||
if (found != NULL) {
|
||||
*found = FALSE;
|
||||
}
|
||||
|
||||
str++;
|
||||
}
|
||||
for (size; size != 0; size--) {
|
||||
len++;
|
||||
if (*str == end_char) {
|
||||
if (found != NULL) {
|
||||
*found = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return len;
|
||||
str++;
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
extern void mMl_clear_mail_header(Mail_hdr_c* header) {
|
||||
mPr_ClearPersonalID(&header->recipient.personalID);
|
||||
header->recipient.type = mMl_NAME_TYPE_CLEAR;
|
||||
mPr_ClearPersonalID(&header->recipient.personalID);
|
||||
header->recipient.type = mMl_NAME_TYPE_CLEAR;
|
||||
|
||||
mPr_ClearPersonalID(&header->sender.personalID);
|
||||
header->sender.type = mMl_NAME_TYPE_CLEAR;
|
||||
mPr_ClearPersonalID(&header->sender.personalID);
|
||||
header->sender.type = mMl_NAME_TYPE_CLEAR;
|
||||
}
|
||||
|
||||
extern void mMl_clear_mail(Mail_c* mail) {
|
||||
bzero(mail, sizeof(Mail_c));
|
||||
mMl_clear_mail_header(&mail->header);
|
||||
mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, CHAR_SPACE);
|
||||
mail->content.font = -1;
|
||||
bzero(mail, sizeof(Mail_c));
|
||||
mMl_clear_mail_header(&mail->header);
|
||||
mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, CHAR_SPACE);
|
||||
mail->content.font = -1;
|
||||
}
|
||||
|
||||
extern void mMl_clear_mail_box(Mail_c* mail, int num) {
|
||||
while (num != 0) {
|
||||
num--;
|
||||
mMl_clear_mail(mail);
|
||||
mail++;
|
||||
}
|
||||
while (num != 0) {
|
||||
num--;
|
||||
mMl_clear_mail(mail);
|
||||
mail++;
|
||||
}
|
||||
}
|
||||
|
||||
extern int mMl_check_not_used_mail(Mail_c* mail) {
|
||||
int res = FALSE;
|
||||
if (mail->content.font == 0xFF) {
|
||||
res = TRUE;
|
||||
}
|
||||
int res = FALSE;
|
||||
if (mail->content.font == 0xFF) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern void mMl_copy_header_name(Mail_c* dst, Mail_c* src) {
|
||||
dst->header.recipient.type = src->header.recipient.type;
|
||||
mPr_CopyPersonalID(&dst->header.recipient.personalID, &src->header.recipient.personalID);
|
||||
dst->header.recipient.type = src->header.recipient.type;
|
||||
mPr_CopyPersonalID(&dst->header.recipient.personalID, &src->header.recipient.personalID);
|
||||
}
|
||||
|
||||
extern void mMl_set_to_plname(Mail_c* mail, PersonalID_c* pid) {
|
||||
mPr_CopyPersonalID(&mail->header.recipient.personalID, pid);
|
||||
mail->header.recipient.type = mMl_NAME_TYPE_PLAYER;
|
||||
mPr_CopyPersonalID(&mail->header.recipient.personalID, pid);
|
||||
mail->header.recipient.type = mMl_NAME_TYPE_PLAYER;
|
||||
}
|
||||
|
||||
extern void mMl_set_playername(Mail_c* mail, PersonalID_c* pid) {
|
||||
mPr_CopyPersonalID(&mail->header.sender.personalID, pid);
|
||||
mail->header.sender.type = mMl_NAME_TYPE_PLAYER;
|
||||
mPr_CopyPersonalID(&mail->header.sender.personalID, pid);
|
||||
mail->header.sender.type = mMl_NAME_TYPE_PLAYER;
|
||||
}
|
||||
|
||||
extern void mMl_init_mail(Mail_c* mail, PersonalID_c* pid) {
|
||||
mMl_clear_mail(mail);
|
||||
mMl_set_playername(mail, pid);
|
||||
mail->content.font = mMl_FONT_SEND;
|
||||
mail->content.mail_type = 0;
|
||||
mail->content.paper_type = 0;
|
||||
mMl_clear_mail(mail);
|
||||
mMl_set_playername(mail, pid);
|
||||
mail->content.font = mMl_FONT_SEND;
|
||||
mail->content.mail_type = 0;
|
||||
mail->content.paper_type = 0;
|
||||
}
|
||||
|
||||
extern int mMl_chk_mail_free_space(Mail_c* mail, int num) {
|
||||
int free_idx;
|
||||
int free_idx;
|
||||
|
||||
for (free_idx = 0; free_idx < num; free_idx++) {
|
||||
if (mMl_check_not_used_mail(mail) == TRUE) {
|
||||
return free_idx;
|
||||
for (free_idx = 0; free_idx < num; free_idx++) {
|
||||
if (mMl_check_not_used_mail(mail) == TRUE) {
|
||||
return free_idx;
|
||||
}
|
||||
|
||||
mail++;
|
||||
}
|
||||
|
||||
mail++;
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
extern int mMl_count_use_mail_space(Mail_c* mail, int num) {
|
||||
int used = 0;
|
||||
int i;
|
||||
int used = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < num; i++) {
|
||||
if (mMl_check_not_used_mail(mail) != TRUE) {
|
||||
used++;
|
||||
for (i = 0; i < num; i++) {
|
||||
if (mMl_check_not_used_mail(mail) != TRUE) {
|
||||
used++;
|
||||
}
|
||||
|
||||
mail++;
|
||||
}
|
||||
|
||||
mail++;
|
||||
}
|
||||
|
||||
return used;
|
||||
return used;
|
||||
}
|
||||
|
||||
extern void mMl_copy_mail(Mail_c* dst, Mail_c* src) {
|
||||
mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c));
|
||||
mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c));
|
||||
}
|
||||
|
||||
extern void mMl_clear_mail_header_common(Mail_hs_c* header) {
|
||||
header->header_back_start = -1;
|
||||
header->unknown = 0;
|
||||
mem_clear(header->header, MAIL_HEADER_LEN, CHAR_SPACE);
|
||||
mem_clear(header->footer, MAIL_FOOTER_LEN, CHAR_SPACE);
|
||||
header->header_back_start = -1;
|
||||
header->unknown = 0;
|
||||
mem_clear(header->header, MAIL_HEADER_LEN, CHAR_SPACE);
|
||||
mem_clear(header->footer, MAIL_FOOTER_LEN, CHAR_SPACE);
|
||||
}
|
||||
|
||||
extern void mMl_set_mail_name_npcinfo(Mail_nm_c* name, AnmPersonalID_c* anm_pid) {
|
||||
u8 animal_name[PLAYER_NAME_LEN];
|
||||
|
||||
name->type = mMl_NAME_TYPE_NPC;
|
||||
mNpc_GetNpcWorldNameAnm(animal_name, anm_pid);
|
||||
mPr_CopyPlayerName(name->personalID.player_name, animal_name);
|
||||
name->personalID.land_id = anm_pid->land_id;
|
||||
mLd_CopyLandName(name->personalID.land_name, anm_pid->land_name);
|
||||
name->personalID.player_id = (((anm_pid->npc_id & 0xFF) << 8) | anm_pid->name_id);
|
||||
u8 animal_name[PLAYER_NAME_LEN];
|
||||
|
||||
name->type = mMl_NAME_TYPE_NPC;
|
||||
mNpc_GetNpcWorldNameAnm(animal_name, anm_pid);
|
||||
mPr_CopyPlayerName(name->personalID.player_name, animal_name);
|
||||
name->personalID.land_id = anm_pid->land_id;
|
||||
mLd_CopyLandName(name->personalID.land_name, anm_pid->land_name);
|
||||
name->personalID.player_id = (((anm_pid->npc_id & 0xFF) << 8) | anm_pid->name_id);
|
||||
}
|
||||
|
||||
extern int mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* anm_pid, Mail_nm_c* name) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
if (name->type == mMl_NAME_TYPE_NPC) {
|
||||
anm_pid->npc_id = ((name->personalID.player_id & 0xFF00) >> 8) | NPC_START;
|
||||
anm_pid->land_id = name->personalID.land_id;
|
||||
mLd_CopyLandName(anm_pid->land_name, name->personalID.land_name);
|
||||
anm_pid->name_id = name->personalID.player_id;
|
||||
anm_pid->looks = mNpc_GetLooks(anm_pid->npc_id);
|
||||
if (name->type == mMl_NAME_TYPE_NPC) {
|
||||
anm_pid->npc_id = ((name->personalID.player_id & 0xFF00) >> 8) | NPC_START;
|
||||
anm_pid->land_id = name->personalID.land_id;
|
||||
mLd_CopyLandName(anm_pid->land_name, name->personalID.land_name);
|
||||
anm_pid->name_id = name->personalID.player_id;
|
||||
anm_pid->looks = mNpc_GetLooks(anm_pid->npc_id);
|
||||
|
||||
res = TRUE;
|
||||
}
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mMl_hunt_for_send_address(Mail_c* mail) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
if (mail->header.recipient.type != mMl_NAME_TYPE_PLAYER) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0; i < mHS_HOUSE_NUM; i++) {
|
||||
if (mPr_CheckCmpPersonalID(&Save_Get(homes[i]).ownerID, &mail->header.recipient.personalID) == TRUE) {
|
||||
return i;
|
||||
if (mail->header.recipient.type != mMl_NAME_TYPE_PLAYER) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
for (i = 0; i < mHS_HOUSE_NUM; i++) {
|
||||
if (mPr_CheckCmpPersonalID(&Save_Get(homes[i]).ownerID, &mail->header.recipient.personalID) == TRUE) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
extern int mMl_check_send_mail(Mail_c* mail) {
|
||||
return mail->content.font == mMl_FONT_SEND;
|
||||
return mail->content.font == mMl_FONT_SEND;
|
||||
}
|
||||
|
||||
extern int mMl_check_set_present_myself(Mail_c* mail) {
|
||||
u8 font = mail->content.font;
|
||||
u8 font = mail->content.font;
|
||||
|
||||
if (font == mMl_FONT_SEND || font == mMl_FONT_3 || font == mMl_FONT_4) {
|
||||
return TRUE;
|
||||
}
|
||||
if (font == mMl_FONT_SEND || font == mMl_FONT_3 || font == mMl_FONT_4) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void mMl_load_mail_data(Mail_c* mail, int mail_no) {
|
||||
int header_back_start;
|
||||
int header_back_start;
|
||||
|
||||
mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, mail_no);
|
||||
mail->content.header_back_start = header_back_start;
|
||||
mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body,
|
||||
mail_no);
|
||||
mail->content.header_back_start = header_back_start;
|
||||
}
|
||||
|
||||
/* TODO: fix bss ordering */
|
||||
static void mMl_load_mail_data2(Mail_c* mail, int mail_no) {
|
||||
//static u8 header[MAIL_HEADER2_LEN];
|
||||
//static u8 footer[MAIL_FOOTER2_LEN];
|
||||
int header_back_start;
|
||||
// static u8 header[MAIL_HEADER2_LEN];
|
||||
// static u8 footer[MAIL_FOOTER2_LEN];
|
||||
int header_back_start;
|
||||
|
||||
mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_start, footer, MAIL_FOOTER2_LEN, mail->content.body, mail_no);
|
||||
mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_start, footer, MAIL_FOOTER2_LEN,
|
||||
mail->content.body, mail_no);
|
||||
|
||||
bcopy(header, mail->content.header, MAIL_HEADER_LEN);
|
||||
bcopy(footer, mail->content.footer, MAIL_FOOTER_LEN);
|
||||
mail->content.header_back_start = header_back_start;
|
||||
bcopy(header, mail->content.header, MAIL_HEADER_LEN);
|
||||
bcopy(footer, mail->content.footer, MAIL_FOOTER_LEN);
|
||||
mail->content.header_back_start = header_back_start;
|
||||
}
|
||||
|
||||
static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid, mActor_name_t present, mActor_name_t paper, u8* sender_name, int mail_no, u32 proc_type, u8 mail_type) {
|
||||
static void (*get_proc[2])(Mail_c*, int) = { &mMl_load_mail_data, &mMl_load_mail_data2 };
|
||||
proc_type %= 2;
|
||||
|
||||
mMl_clear_mail(mail);
|
||||
(*get_proc[proc_type])(mail, mail_no);
|
||||
mail->content.font = mMl_FONT_0;
|
||||
mail->content.mail_type = mail_type;
|
||||
|
||||
mPr_CopyPersonalID(&mail->header.recipient.personalID, recipient_pid);
|
||||
mail->header.recipient.type = mMl_NAME_TYPE_PLAYER;
|
||||
static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid, mActor_name_t present,
|
||||
mActor_name_t paper, u8* sender_name, int mail_no, u32 proc_type, u8 mail_type) {
|
||||
static void (*get_proc[2])(Mail_c*, int) = { &mMl_load_mail_data, &mMl_load_mail_data2 };
|
||||
proc_type %= 2;
|
||||
|
||||
mPr_ClearPersonalID(&mail->header.sender.personalID);
|
||||
mPr_CopyPlayerName(mail->header.sender.personalID.player_name, sender_name);
|
||||
mail->header.sender.type = mMl_NAME_TYPE_MUSEUM;
|
||||
|
||||
mail->present = present;
|
||||
mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM;
|
||||
mMl_clear_mail(mail);
|
||||
(*get_proc[proc_type])(mail, mail_no);
|
||||
mail->content.font = mMl_FONT_0;
|
||||
mail->content.mail_type = mail_type;
|
||||
|
||||
mPr_CopyPersonalID(&mail->header.recipient.personalID, recipient_pid);
|
||||
mail->header.recipient.type = mMl_NAME_TYPE_PLAYER;
|
||||
|
||||
mPr_ClearPersonalID(&mail->header.sender.personalID);
|
||||
mPr_CopyPlayerName(mail->header.sender.personalID.player_name, sender_name);
|
||||
mail->header.sender.type = mMl_NAME_TYPE_MUSEUM;
|
||||
|
||||
mail->present = present;
|
||||
mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM;
|
||||
}
|
||||
|
||||
static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
mHm_hs_c* house;
|
||||
int res = FALSE;
|
||||
static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present,
|
||||
mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
mHm_hs_c* house;
|
||||
int res = FALSE;
|
||||
|
||||
house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]);
|
||||
house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]);
|
||||
|
||||
if (mPr_CheckCmpPersonalID(recipient_pid, &house->ownerID) == TRUE) {
|
||||
int free_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE);
|
||||
if (free_idx != -1) {
|
||||
mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type);
|
||||
mMl_copy_mail(house->mailbox + free_idx, mail);
|
||||
res = TRUE;
|
||||
if (mPr_CheckCmpPersonalID(recipient_pid, &house->ownerID) == TRUE) {
|
||||
int free_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE);
|
||||
if (free_idx != -1) {
|
||||
mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type);
|
||||
mMl_copy_mail(house->mailbox + free_idx, mail);
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) {
|
||||
return mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, 0);
|
||||
extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present,
|
||||
mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) {
|
||||
return mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, 0);
|
||||
}
|
||||
|
||||
static int mMl_send_mail_postoffice_com(Mail_c* mail, PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
int res = FALSE;
|
||||
static int mMl_send_mail_postoffice_com(Mail_c* mail, PersonalID_c* recipient_pid, int player_no, mActor_name_t present,
|
||||
mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type,
|
||||
u8 mail_type) {
|
||||
int res = FALSE;
|
||||
|
||||
if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) {
|
||||
mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type);
|
||||
res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL);
|
||||
}
|
||||
if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) {
|
||||
mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type);
|
||||
res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL);
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
return mMl_send_mail_postoffice_com(&l_ml_mail, recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, mail_type);
|
||||
extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present,
|
||||
mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
return mMl_send_mail_postoffice_com(&l_ml_mail, recipient_pid, player_no, present, paper, mail_no, sender_name,
|
||||
proc_type, mail_type);
|
||||
}
|
||||
|
||||
static int mMl_send_mail_com(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
Mail_c* mail = &l_ml_mail;
|
||||
int res = mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, mail_type);
|
||||
if (res != TRUE) {
|
||||
res = mMl_send_mail_postoffice_com(mail, recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, mail_type);
|
||||
}
|
||||
static int mMl_send_mail_com(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper,
|
||||
int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) {
|
||||
Mail_c* mail = &l_ml_mail;
|
||||
int res = mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type,
|
||||
mail_type);
|
||||
if (res != TRUE) {
|
||||
res = mMl_send_mail_postoffice_com(mail, recipient_pid, player_no, present, paper, mail_no, sender_name,
|
||||
proc_type, mail_type);
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) {
|
||||
return mMl_send_mail_com(recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, 0);
|
||||
extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper,
|
||||
int mail_no, u8* sender_name, u32 proc_type) {
|
||||
return mMl_send_mail_com(recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, 0);
|
||||
}
|
||||
|
||||
typedef struct post_office_gift_info_s {
|
||||
int mail_no;
|
||||
mActor_name_t present;
|
||||
mActor_name_t paper;
|
||||
int player_received_flag;
|
||||
u32 required_balance;
|
||||
int mail_no;
|
||||
mActor_name_t present;
|
||||
mActor_name_t paper;
|
||||
int player_received_flag;
|
||||
u32 required_balance;
|
||||
} mMl_PostOffice_Info_c;
|
||||
|
||||
static mMl_PostOffice_Info_c l_mml_postoffice_info[mMl_POSTOFFICE_GIFT_NUM] = {
|
||||
{
|
||||
0x0246,
|
||||
FTR_TISSUE,
|
||||
ITM_PAPER00,
|
||||
mPr_FLAG_POSTOFFICE_GIFT0,
|
||||
1000000
|
||||
},
|
||||
{
|
||||
0x0247,
|
||||
FTR_PIGGY_BANK,
|
||||
ITM_PAPER00,
|
||||
mPr_FLAG_POSTOFFICE_GIFT1,
|
||||
10000000
|
||||
},
|
||||
{
|
||||
0x0248,
|
||||
FTR_MAILBOX,
|
||||
ITM_PAPER00,
|
||||
mPr_FLAG_POSTOFFICE_GIFT2,
|
||||
100000000
|
||||
},
|
||||
{
|
||||
0x0249,
|
||||
FTR_POST_MODEL,
|
||||
ITM_PAPER00,
|
||||
mPr_FLAG_POSTOFFICE_GIFT3,
|
||||
999999999
|
||||
}
|
||||
{ 0x0246, FTR_TISSUE, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT0, 1000000 },
|
||||
{ 0x0247, FTR_PIGGY_BANK, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT1, 10000000 },
|
||||
{ 0x0248, FTR_MAILBOX, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT2, 100000000 },
|
||||
{ 0x0249, FTR_POST_MODEL, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT3, 999999999 }
|
||||
};
|
||||
|
||||
static void mMl_send_postoffice_mail() {
|
||||
//static u8 free_str[16]; // TODO: fix bss ordering
|
||||
static u8 debug_name[PLAYER_NAME_LEN] = { 0x91, 0x92, 0x93, 0x94, 0x95, 0x91, 0x00, 0x00 };
|
||||
// static u8 free_str[16]; // TODO: fix bss ordering
|
||||
static u8 debug_name[PLAYER_NAME_LEN] = { 0x91, 0x92, 0x93, 0x94, 0x95, 0x91, 0x00, 0x00 };
|
||||
|
||||
Private_c* priv = Save_Get(private);
|
||||
mMl_PostOffice_Info_c* po_info;
|
||||
int town_name_len;
|
||||
int i;
|
||||
Private_c* priv = Save_Get(private_data);
|
||||
mMl_PostOffice_Info_c* po_info;
|
||||
int town_name_len;
|
||||
int i;
|
||||
|
||||
town_name_len = mLd_GetLandNameStringAddMura(free_str);
|
||||
mHandbill_Set_free_str(0, free_str, town_name_len);
|
||||
town_name_len = mLd_GetLandNameStringAddMura(free_str);
|
||||
mHandbill_Set_free_str(0, free_str, town_name_len);
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) {
|
||||
int j;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) {
|
||||
int j;
|
||||
|
||||
mHandbill_Set_free_str(1, priv->player_ID.player_name, PLAYER_NAME_LEN);
|
||||
po_info = l_mml_postoffice_info;
|
||||
for (j = 0; j < mMl_POSTOFFICE_GIFT_NUM; j++) {
|
||||
if ((priv->bank_account >= po_info->required_balance) &&
|
||||
(priv->state_flags & po_info->player_received_flag) == FALSE
|
||||
) {
|
||||
int res = mMl_send_mail_com(&priv->player_ID, i, po_info->present, po_info->paper, po_info->mail_no, debug_name, 0, 10);
|
||||
mHandbill_Set_free_str(1, priv->player_ID.player_name, PLAYER_NAME_LEN);
|
||||
po_info = l_mml_postoffice_info;
|
||||
for (j = 0; j < mMl_POSTOFFICE_GIFT_NUM; j++) {
|
||||
if ((priv->bank_account >= po_info->required_balance) &&
|
||||
(priv->state_flags & po_info->player_received_flag) == FALSE) {
|
||||
int res = mMl_send_mail_com(&priv->player_ID, i, po_info->present, po_info->paper, po_info->mail_no,
|
||||
debug_name, 0, 10);
|
||||
|
||||
if (res == TRUE) {
|
||||
priv->state_flags |= po_info->player_received_flag;
|
||||
}
|
||||
if (res == TRUE) {
|
||||
priv->state_flags |= po_info->player_received_flag;
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
po_info++;
|
||||
}
|
||||
}
|
||||
|
||||
po_info++;
|
||||
}
|
||||
priv++;
|
||||
}
|
||||
|
||||
priv++;
|
||||
}
|
||||
}
|
||||
|
||||
extern void mMl_start_send_mail() {
|
||||
mMl_send_postoffice_mail();
|
||||
mMl_send_postoffice_mail();
|
||||
}
|
||||
|
||||
+657
-957
File diff suppressed because it is too large
Load Diff
+485
-498
File diff suppressed because it is too large
Load Diff
+176
-196
@@ -9,371 +9,351 @@
|
||||
|
||||
/**
|
||||
* @brief Initializes all designs' palette indexes for a player.
|
||||
*
|
||||
*
|
||||
* @param player_no The index of the player whose designs will be updated
|
||||
**/
|
||||
static void mNW_InitMyOriginalPallet(int player_no) {
|
||||
static u8 pal_table[mPr_ORIGINAL_DESIGN_COUNT] = {
|
||||
0, 8, 7, 7,
|
||||
0, 0, 0, 0
|
||||
};
|
||||
static u8 pal_table[mPr_ORIGINAL_DESIGN_COUNT] = { 0, 8, 7, 7, 0, 0, 0, 0 };
|
||||
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
Save_Set(private[player_no & 3].my_org[i & 7].palette, pal_table[i]);
|
||||
}
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
Save_Set(private_data[player_no & 3].my_org[i & 7].palette, pal_table[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all designs' names for a player.
|
||||
*
|
||||
*
|
||||
* @param player_no The index of the player whose designs will be renamed
|
||||
**/
|
||||
static void mNW_InitMyOriginalName(int player_no) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
player_no &= 3;
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
/* TODO: define for the string index? */
|
||||
mString_Load_StringFromRom(
|
||||
Save_Get(private[player_no].my_org[i & 7].name),
|
||||
mNW_ORIGINAL_DESIGN_NAME_LEN,
|
||||
0x6DF + i
|
||||
);
|
||||
}
|
||||
player_no &= 3;
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
/* TODO: define for the string index? */
|
||||
mString_Load_StringFromRom(Save_Get(private_data[player_no].my_org[i & 7].name), mNW_ORIGINAL_DESIGN_NAME_LEN,
|
||||
0x6DF + i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all designs' textures for a player.
|
||||
*
|
||||
*
|
||||
* @param player_no The index of the player whose designs will be updated
|
||||
**/
|
||||
static void mNW_InitMyOriginalTexture(int player_no) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
player_no &= 3;
|
||||
for (i = 0; i < mNW_DEFAULT_ORIGINAL_TEX_NUM; i++) {
|
||||
_JW_GetResourceAram(
|
||||
JW_GetAramAddress(27) + i * mNW_DESIGN_TEX_SIZE,
|
||||
Save_Get(private[player_no].my_org[i & 7].design.data),
|
||||
mNW_DESIGN_TEX_SIZE
|
||||
);
|
||||
}
|
||||
player_no &= 3;
|
||||
for (i = 0; i < mNW_DEFAULT_ORIGINAL_TEX_NUM; i++) {
|
||||
_JW_GetResourceAram(JW_GetAramAddress(27) + i * mNW_DESIGN_TEX_SIZE,
|
||||
Save_Get(private_data[player_no].my_org[i & 7].design.data), mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all designs for all players.
|
||||
**/
|
||||
extern void mNW_InitMyOriginal() {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mNW_InitOneMyOriginal(i);
|
||||
}
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mNW_InitOneMyOriginal(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes a single player's designs.
|
||||
*
|
||||
*
|
||||
* @param player_no The index of the player whose designs will be initialized.
|
||||
**/
|
||||
extern void mNW_InitOneMyOriginal(int player_no) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
mNW_InitMyOriginalPallet(player_no & 3);
|
||||
mNW_InitMyOriginalName(player_no & 3);
|
||||
mNW_InitMyOriginalTexture(player_no & 3);
|
||||
mNW_InitMyOriginalPallet(player_no & 3);
|
||||
mNW_InitMyOriginalName(player_no & 3);
|
||||
mNW_InitMyOriginalTexture(player_no & 3);
|
||||
|
||||
for (i = mNW_DEFAULT_ORIGINAL_TEX_NUM; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
mNW_InitOriginalData(Save_Get(private[player_no].my_org + (i & 7)));
|
||||
}
|
||||
for (i = mNW_DEFAULT_ORIGINAL_TEX_NUM; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
mNW_InitOriginalData(Save_Get(private_data[player_no].my_org + (i & 7)));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies a default design texture into the supplied buffer.
|
||||
*
|
||||
*
|
||||
* @param dst The destination design texture buffer
|
||||
* @param tex_no The index of the texture to retrieve (0-7)
|
||||
**/
|
||||
static void mNW_CopyNeedleworkDefaultTexture(u8* dst, int tex_no) {
|
||||
u32 addr = JW_GetAramAddress(28);
|
||||
_JW_GetResourceAram(
|
||||
addr + (tex_no & 7) * mNW_DESIGN_TEX_SIZE,
|
||||
dst,
|
||||
mNW_DESIGN_TEX_SIZE
|
||||
);
|
||||
u32 addr = JW_GetAramAddress(28);
|
||||
_JW_GetResourceAram(addr + (tex_no & 7) * mNW_DESIGN_TEX_SIZE, dst, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all Able Sisters' designs to their default textures.
|
||||
**/
|
||||
static void mNW_InitNeedleworkTexture() {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) {
|
||||
mNW_CopyNeedleworkDefaultTexture(Save_Get(needlework.original_design[i & 7].design.data), i);
|
||||
}
|
||||
for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) {
|
||||
mNW_CopyNeedleworkDefaultTexture(Save_Get(needlework.original_design[i & 7].design.data), i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all Able Sisters' designs to their default palettes.
|
||||
**/
|
||||
static void mNW_InitNeedleworkPelatteNo() {
|
||||
static u8 pal_table[mNW_TOTAL_DESIGN_NUM] = {
|
||||
7, 1, 10, 3,
|
||||
6, 0, 6, 7
|
||||
};
|
||||
static u8 pal_table[mNW_TOTAL_DESIGN_NUM] = { 7, 1, 10, 3, 6, 0, 6, 7 };
|
||||
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) {
|
||||
Save_Set(needlework.original_design[i & 7].palette, pal_table[i]);
|
||||
}
|
||||
for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) {
|
||||
Save_Set(needlework.original_design[i & 7].palette, pal_table[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all Able Sisters' designs to their default names.
|
||||
**/
|
||||
static void mNW_InitNeedleworkTextureName() {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) {
|
||||
mString_Load_StringFromRom(
|
||||
Save_Get(needlework.original_design[i & 7].name),
|
||||
mNW_ORIGINAL_DESIGN_NAME_LEN,
|
||||
0x6E7 + i
|
||||
);
|
||||
}
|
||||
for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) {
|
||||
mString_Load_StringFromRom(Save_Get(needlework.original_design[i & 7].name), mNW_ORIGINAL_DESIGN_NAME_LEN,
|
||||
0x6E7 + i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes all Able Sisters' designs to their default data.
|
||||
**/
|
||||
extern void mNW_InitNeedleworkData() {
|
||||
mNW_InitNeedleworkTexture();
|
||||
mNW_InitNeedleworkPelatteNo();
|
||||
mNW_InitNeedleworkTextureName();
|
||||
mNW_InitNeedleworkTexture();
|
||||
mNW_InitNeedleworkPelatteNo();
|
||||
mNW_InitNeedleworkTextureName();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts a design texture from GBA format to GC format.
|
||||
*
|
||||
*
|
||||
* @param agb Pointer to the source GBA texture
|
||||
* @param gc Pointer to the destination GC texture
|
||||
**/
|
||||
extern void mNW_AGB_to_GC_texture(u8* agb, u8* gc) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mNW_DESIGN_TEX_SIZE; i++) {
|
||||
u8 src = *agb++;
|
||||
*gc++ = (((src >> 4) & 0xF) | ((src & 0xF) << 4));
|
||||
}
|
||||
for (i = 0; i < mNW_DESIGN_TEX_SIZE; i++) {
|
||||
u8 src = *agb++;
|
||||
*gc++ = (((src >> 4) & 0xF) | ((src & 0xF) << 4));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts a design texture from GC format to GBA format.
|
||||
*
|
||||
*
|
||||
* @param gc Pointer to the source GC texture
|
||||
* @param agb Pointer to the destination GBA texture
|
||||
**/
|
||||
extern void mNW_GC_to_Agb_texture(u8* gc, u8* agb) {
|
||||
mNW_AGB_to_GC_texture(gc, agb);
|
||||
mNW_AGB_to_GC_texture(gc, agb);
|
||||
}
|
||||
|
||||
/* RGB5A3 color palettes for each pattern palette aligned to 32 bytes */
|
||||
/* These are aligned to 32 bytes for transfering to-and-from ARAM */
|
||||
|
||||
static u16 needlework0_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18),
|
||||
ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652),
|
||||
ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7),
|
||||
ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18),
|
||||
ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652),
|
||||
ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7),
|
||||
ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework1_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A),
|
||||
ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84),
|
||||
ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF),
|
||||
ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A),
|
||||
ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84),
|
||||
ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF),
|
||||
ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework2_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00),
|
||||
ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531),
|
||||
ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD),
|
||||
ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00),
|
||||
ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531),
|
||||
ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD),
|
||||
ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework3_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD),
|
||||
ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5),
|
||||
ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD),
|
||||
ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD),
|
||||
ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5),
|
||||
ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD),
|
||||
ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework4_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84),
|
||||
ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384),
|
||||
ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B),
|
||||
ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84),
|
||||
ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384),
|
||||
ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B),
|
||||
ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework5_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84),
|
||||
ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C),
|
||||
ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF),
|
||||
ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84),
|
||||
ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C),
|
||||
ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF),
|
||||
ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework6_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84),
|
||||
ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF),
|
||||
ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C),
|
||||
ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84),
|
||||
ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF),
|
||||
ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C),
|
||||
ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework7_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463),
|
||||
ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A),
|
||||
ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B),
|
||||
ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463),
|
||||
ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A),
|
||||
ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B),
|
||||
ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework8_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600),
|
||||
ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF),
|
||||
ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD),
|
||||
ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600),
|
||||
ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF),
|
||||
ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD),
|
||||
ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework9_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF),
|
||||
ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673),
|
||||
ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF),
|
||||
ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF),
|
||||
ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673),
|
||||
ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF),
|
||||
ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework10_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731),
|
||||
ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD),
|
||||
ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242),
|
||||
ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731),
|
||||
ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD),
|
||||
ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242),
|
||||
ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16 needlework11_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00),
|
||||
ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500),
|
||||
ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18),
|
||||
ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00),
|
||||
ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500),
|
||||
ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18),
|
||||
ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A),
|
||||
};
|
||||
|
||||
static u16 needlework12_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD),
|
||||
ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500),
|
||||
ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121),
|
||||
ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD),
|
||||
ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500),
|
||||
ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121),
|
||||
ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918),
|
||||
};
|
||||
|
||||
static u16 needlework13_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5),
|
||||
ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373),
|
||||
ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131),
|
||||
ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5),
|
||||
ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373),
|
||||
ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131),
|
||||
ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000),
|
||||
};
|
||||
|
||||
static u16 needlework14_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE),
|
||||
ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C),
|
||||
ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A),
|
||||
ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE),
|
||||
ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C),
|
||||
ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A),
|
||||
ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010),
|
||||
};
|
||||
|
||||
static u16 needlework15_pal[16] ATTRIBUTE_ALIGN(32) = {
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418),
|
||||
ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5),
|
||||
ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208),
|
||||
ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418),
|
||||
ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5),
|
||||
ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208),
|
||||
ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF),
|
||||
};
|
||||
|
||||
static u16* mNW_needlework_pallet_table[mNW_PALETTE_COUNT] = {
|
||||
needlework0_pal, needlework1_pal, needlework2_pal, needlework3_pal,
|
||||
needlework4_pal, needlework5_pal, needlework6_pal, needlework7_pal,
|
||||
needlework8_pal, needlework9_pal, needlework10_pal, needlework11_pal,
|
||||
needlework12_pal, needlework13_pal, needlework14_pal, needlework15_pal
|
||||
needlework0_pal, needlework1_pal, needlework2_pal, needlework3_pal, needlework4_pal, needlework5_pal,
|
||||
needlework6_pal, needlework7_pal, needlework8_pal, needlework9_pal, needlework10_pal, needlework11_pal,
|
||||
needlework12_pal, needlework13_pal, needlework14_pal, needlework15_pal
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Gets a pointer to the requested palette color data.
|
||||
*
|
||||
*
|
||||
* @param palette_idx Index of the palette to retrieve (0-15)
|
||||
* @return Palette color data pointer
|
||||
**/
|
||||
extern u16* mNW_PaletteIdx2Palette(int palette_idx) {
|
||||
return mNW_needlework_pallet_table[palette_idx & 15];
|
||||
return mNW_needlework_pallet_table[palette_idx & 15];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies one design class to another and updates data cache.
|
||||
*
|
||||
*
|
||||
* @param dst Destination design class
|
||||
* @param src Source design class
|
||||
**/
|
||||
extern void mNW_CopyOriginalTextureClass(mNW_original_design_c* dst, mNW_original_design_c* src) {
|
||||
bcopy(src, dst, sizeof(mNW_original_design_c));
|
||||
DCStoreRangeNoSync(dst->design.data, mNW_DESIGN_TEX_SIZE);
|
||||
bcopy(src, dst, sizeof(mNW_original_design_c));
|
||||
DCStoreRangeNoSync(dst->design.data, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies a design's texture data to a block of memory and updates data cache.
|
||||
*
|
||||
*
|
||||
* @param dst Destination pointer
|
||||
* @param src Source design class
|
||||
**/
|
||||
extern void mNW_CopyOriginalTexture(void* dst, mNW_original_design_c* src) {
|
||||
if (dst != NULL) {
|
||||
bcopy(src->design.data, dst, mNW_DESIGN_TEX_SIZE);
|
||||
DCStoreRangeNoSync(dst, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
if (dst != NULL) {
|
||||
bcopy(src->design.data, dst, mNW_DESIGN_TEX_SIZE);
|
||||
DCStoreRangeNoSync(dst, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies a design's palette colors to a block of memory and updates data cache.
|
||||
*
|
||||
*
|
||||
* @param dst Destination pointer
|
||||
* @param src Source design class
|
||||
**/
|
||||
extern void mNW_CopyOriginalPalette(void* dst, mNW_original_design_c* src) {
|
||||
if (dst != NULL) {
|
||||
bcopy(mNW_PaletteIdx2Palette(src->palette), dst, 16 * sizeof(u16));
|
||||
DCStoreRangeNoSync(dst, 16 * sizeof(u16));
|
||||
}
|
||||
if (dst != NULL) {
|
||||
bcopy(mNW_PaletteIdx2Palette(src->palette), dst, 16 * sizeof(u16));
|
||||
DCStoreRangeNoSync(dst, 16 * sizeof(u16));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies a block of memory to a design's texture data and updates data cache.
|
||||
*
|
||||
*
|
||||
* @param dst The destination design class
|
||||
* @param src Source data pointer
|
||||
**/
|
||||
extern void mNW_OverWriteOriginalTexture(mNW_original_design_c* dst, u8* src) {
|
||||
if (src != NULL) {
|
||||
u8* tex = dst->design.data;
|
||||
bcopy(src, tex, mNW_DESIGN_TEX_SIZE);
|
||||
DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
if (src != NULL) {
|
||||
u8* tex = dst->design.data;
|
||||
bcopy(src, tex, mNW_DESIGN_TEX_SIZE);
|
||||
DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies a block of memory to a design's name.
|
||||
*
|
||||
*
|
||||
* @param dst The destination design class
|
||||
* @param src Source name pointer
|
||||
**/
|
||||
extern void mNW_OverWriteOriginalName(mNW_original_design_c* dst, u8* src) {
|
||||
if (src != NULL) {
|
||||
bcopy(src, dst->name, mNW_ORIGINAL_DESIGN_NAME_LEN);
|
||||
}
|
||||
if (src != NULL) {
|
||||
bcopy(src, dst->name, mNW_ORIGINAL_DESIGN_NAME_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
/* swap buffer for original design */
|
||||
@@ -381,48 +361,48 @@ static mNW_original_design_c mNW_swap_work;
|
||||
|
||||
/**
|
||||
* @brief Swaps two design classes' data in memory and updates data cache.
|
||||
*
|
||||
*
|
||||
* @param org0 First design class
|
||||
* @param org1 Second design class
|
||||
**/
|
||||
extern void mNW_SwapOriginalData(mNW_original_design_c* org0, mNW_original_design_c* org1) {
|
||||
bcopy(org0, &mNW_swap_work, sizeof(mNW_original_design_c));
|
||||
bcopy(org1, org0, sizeof(mNW_original_design_c));
|
||||
bcopy(&mNW_swap_work, org1, sizeof(mNW_original_design_c));
|
||||
DCStoreRangeNoSync(org0->design.data, mNW_DESIGN_TEX_SIZE);
|
||||
DCStoreRangeNoSync(org1->design.data, mNW_DESIGN_TEX_SIZE);
|
||||
bcopy(org0, &mNW_swap_work, sizeof(mNW_original_design_c));
|
||||
bcopy(org1, org0, sizeof(mNW_original_design_c));
|
||||
bcopy(&mNW_swap_work, org1, sizeof(mNW_original_design_c));
|
||||
DCStoreRangeNoSync(org0->design.data, mNW_DESIGN_TEX_SIZE);
|
||||
DCStoreRangeNoSync(org1->design.data, mNW_DESIGN_TEX_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes a design class to 'blank' data.
|
||||
*
|
||||
*
|
||||
* @param design The design which will be initialized
|
||||
**/
|
||||
extern void mNW_InitOriginalData(mNW_original_design_c* design) {
|
||||
static u8 name[mNW_ORIGINAL_DESIGN_NAME_LEN] = "blank ";
|
||||
static u8 name[mNW_ORIGINAL_DESIGN_NAME_LEN] = "blank ";
|
||||
|
||||
u8* tex;
|
||||
mNW_OverWriteOriginalName(design, name);
|
||||
tex = design->design.data;
|
||||
mem_clear(tex, mNW_DESIGN_TEX_SIZE, 0xFF);
|
||||
DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE);
|
||||
design->palette = 0;
|
||||
u8* tex;
|
||||
mNW_OverWriteOriginalName(design, name);
|
||||
tex = design->design.data;
|
||||
mem_clear(tex, mNW_DESIGN_TEX_SIZE, 0xFF);
|
||||
DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE);
|
||||
design->palette = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes a player's design related data to the default state.
|
||||
*
|
||||
*
|
||||
* @param player_no The index of the player whose design data will be initialized
|
||||
**/
|
||||
extern void mNW_InitPrivateOriginalData(int player_no) {
|
||||
int i;
|
||||
Private_c* private = Save_Get(private + player_no);
|
||||
int i;
|
||||
Private_c* private = Save_Get(private_data + player_no);
|
||||
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
private->my_org_no_table[i] = i;
|
||||
}
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
private->my_org_no_table[i] = i;
|
||||
}
|
||||
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
mNW_InitOriginalData(private->my_org + i);
|
||||
}
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
mNW_InitOriginalData(private->my_org + i);
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -410,7 +410,7 @@ extern void mNpc_RenewalAnimalMemory() {
|
||||
for (j = 0; j < ANIMAL_MEMORY_NUM; j++) {
|
||||
if (mNpc_CheckFreeAnimalMemory(memory) == FALSE &&
|
||||
mLd_CheckThisLand(memory->memory_player_id.land_name, memory->memory_player_id.land_id) == TRUE) {
|
||||
priv = Save_Get(private);
|
||||
priv = Save_Get(private_data);
|
||||
|
||||
for (k = 0; k < PLAYER_NUM; k++) {
|
||||
if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE &&
|
||||
@@ -481,7 +481,7 @@ extern int mNpc_GetOldPlayerAnimalMemoryIdx(Anmmem_c* memory, int num) {
|
||||
for (i = 0; i < num; i++) {
|
||||
if (mNpc_CheckFreeAnimalMemory(memory) == FALSE &&
|
||||
mLd_CheckThisLand(memory->memory_player_id.land_name, memory->memory_player_id.land_id) == TRUE) {
|
||||
priv = Save_Get(private);
|
||||
priv = Save_Get(private_data);
|
||||
|
||||
for (j = 0; j < PLAYER_NUM; j++) {
|
||||
if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE &&
|
||||
@@ -756,7 +756,7 @@ static int mNpc_GetAnimalMemoryFriend_Land_Sex(Anmmem_c* memory, int num, int se
|
||||
if (mNpc_CheckFreeAnimalMemory(memory) == FALSE) {
|
||||
priv_idx = mPr_GetPrivateIdx(&memory->memory_player_id);
|
||||
|
||||
if (priv_idx != -1 && Save_Get(private[priv_idx]).gender == sex &&
|
||||
if (priv_idx != -1 && Save_Get(private_data[priv_idx]).gender == sex &&
|
||||
mNpc_SelectBestFriend(&best_friend, memory, &best_friendship) == TRUE) {
|
||||
res = i;
|
||||
}
|
||||
@@ -3176,7 +3176,7 @@ static int mNpc_DecideRemoveAnimalNo_Friend(Animal_c* animal, int ignored_idx, i
|
||||
n_players = 0;
|
||||
num_possible = 0;
|
||||
remove_bitfield = 0;
|
||||
priv_p = Save_Get(private);
|
||||
priv_p = Save_Get(private_data);
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
if (mPr_NullCheckPersonalID(&priv_p->player_ID) == FALSE) {
|
||||
@@ -3190,7 +3190,7 @@ static int mNpc_DecideRemoveAnimalNo_Friend(Animal_c* animal, int ignored_idx, i
|
||||
for (i = 0; i < ANIMAL_NUM_MAX; i++) {
|
||||
if (mNpc_CheckFreeAnimalInfo(animal) == FALSE && i != ignored_idx) {
|
||||
met = 0;
|
||||
priv_p = Save_Get(private);
|
||||
priv_p = Save_Get(private_data);
|
||||
|
||||
for (j = 0; j < PLAYER_NUM; j++) {
|
||||
if (mPr_NullCheckPersonalID(&priv_p->player_ID) == FALSE) {
|
||||
@@ -3456,7 +3456,7 @@ extern void mNpc_FirstClearGoodbyMail() {
|
||||
}
|
||||
|
||||
static void mNpc_SetGoodbyAnimalMail(Anm_GoodbyMail_c* goodby_mail, AnmPersonalID_c* anm_id) {
|
||||
Private_c* priv = Save_Get(private);
|
||||
Private_c* priv = Save_Get(private_data);
|
||||
int i;
|
||||
|
||||
if (anm_id != NULL && mNpc_CheckFreeAnimalPersonalID(anm_id) == FALSE) {
|
||||
@@ -3519,7 +3519,7 @@ static int mNpc_SendGoodbyAnimalMailOne(Mail_c* mail, PersonalID_c* pid, int pla
|
||||
}
|
||||
|
||||
static void mNpc_SendGoodbyAnimalMail(Anm_GoodbyMail_c* goodby_mail) {
|
||||
Private_c* priv = Save_Get(private);
|
||||
Private_c* priv = Save_Get(private_data);
|
||||
int i;
|
||||
|
||||
if (mNpc_CheckFreeAnimalPersonalID(&goodby_mail->id) == FALSE) {
|
||||
@@ -7083,7 +7083,7 @@ static int mNpc_SendHPMail_analysis(PersonalID_c* pid, AnmPersonalID_c* anm_id,
|
||||
}
|
||||
|
||||
extern void mNpc_SendHPMail() {
|
||||
Private_c* priv = Save_Get(private);
|
||||
Private_c* priv = Save_Get(private_data);
|
||||
Private_c* priv_p;
|
||||
Animal_c* animal = Save_Get(animals);
|
||||
AnmHPMail_c* hp_mail;
|
||||
|
||||
+406
-413
@@ -17,524 +17,517 @@
|
||||
#include "m_scene_table.h"
|
||||
|
||||
static int mPO_keep_contents(Mail_c* mail) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
int free_idx = mMl_chk_mail_free_space(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE);
|
||||
if (free_idx >= 0) {
|
||||
mMl_copy_mail(Save_Get(post_office).mail + free_idx, mail);
|
||||
mMl_clear_mail(mail);
|
||||
res = TRUE;
|
||||
}
|
||||
int free_idx = mMl_chk_mail_free_space(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE);
|
||||
if (free_idx >= 0) {
|
||||
mMl_copy_mail(Save_Get(post_office).mail + free_idx, mail);
|
||||
mMl_clear_mail(mail);
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mPO_count_mail(int house_no) {
|
||||
int used = mMl_count_use_mail_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE);
|
||||
Mail_c* mail = Save_Get(post_office).mail;
|
||||
int i;
|
||||
int used = mMl_count_use_mail_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE);
|
||||
Mail_c* mail = Save_Get(post_office).mail;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) {
|
||||
if (house_no == mMl_hunt_for_send_address(mail)) {
|
||||
used++;
|
||||
for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) {
|
||||
if (house_no == mMl_hunt_for_send_address(mail)) {
|
||||
used++;
|
||||
}
|
||||
|
||||
mail++;
|
||||
}
|
||||
|
||||
mail++;
|
||||
}
|
||||
|
||||
return used;
|
||||
return used;
|
||||
}
|
||||
|
||||
extern int mPO_get_keep_mail_sum() {
|
||||
PostOffice_c* post_office = Save_GetPointer(post_office);
|
||||
PostOffice_c* post_office = Save_GetPointer(post_office);
|
||||
|
||||
return post_office->keep_mail_sum_players + post_office->keep_mail_sum_npcs;
|
||||
return post_office->keep_mail_sum_players + post_office->keep_mail_sum_npcs;
|
||||
}
|
||||
|
||||
static void mPO_adjust_keep_mail() {
|
||||
Mail_c* mail = Save_Get(post_office).mail;
|
||||
int i;
|
||||
s16 recipient_flags = 0;
|
||||
s16 keep_mail_player_num = 0;
|
||||
Mail_c* mail = Save_Get(post_office).mail;
|
||||
int i;
|
||||
s16 recipient_flags = 0;
|
||||
s16 keep_mail_player_num = 0;
|
||||
|
||||
for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) {
|
||||
if (mMl_check_not_used_mail(mail) == FALSE) {
|
||||
int house_idx = mMl_hunt_for_send_address(mail);
|
||||
if (house_idx != -1) {
|
||||
keep_mail_player_num++;
|
||||
recipient_flags |= (1 << house_idx);
|
||||
}
|
||||
else {
|
||||
mMl_clear_mail(mail);
|
||||
}
|
||||
for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) {
|
||||
if (mMl_check_not_used_mail(mail) == FALSE) {
|
||||
int house_idx = mMl_hunt_for_send_address(mail);
|
||||
if (house_idx != -1) {
|
||||
keep_mail_player_num++;
|
||||
recipient_flags |= (1 << house_idx);
|
||||
} else {
|
||||
mMl_clear_mail(mail);
|
||||
}
|
||||
}
|
||||
mail++;
|
||||
}
|
||||
mail++;
|
||||
}
|
||||
|
||||
Save_Set(post_office.mail_recipient_flags, recipient_flags);
|
||||
Save_Set(post_office.keep_mail_sum_players, keep_mail_player_num);
|
||||
Save_Set(post_office.keep_mail_sum_npcs, 0);
|
||||
Save_Set(post_office.mail_recipient_flags, recipient_flags);
|
||||
Save_Set(post_office.keep_mail_sum_players, keep_mail_player_num);
|
||||
Save_Set(post_office.keep_mail_sum_npcs, 0);
|
||||
}
|
||||
|
||||
static int mPO_receipt_check_mail(Mail_c* mail) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
switch (mail->header.recipient.type) {
|
||||
case mMl_NAME_TYPE_PLAYER:
|
||||
{
|
||||
int house_idx = mMl_hunt_for_send_address(mail);
|
||||
if (house_idx != -1 && mPO_count_mail(house_idx) < HOME_MAILBOX_SIZE) {
|
||||
res = mPO_keep_contents(mail);
|
||||
if (res == TRUE) {
|
||||
Save_Get(post_office.mail_recipient_flags) |= (1 << house_idx);
|
||||
Save_Get(post_office.keep_mail_sum_players)++;
|
||||
}
|
||||
}
|
||||
switch (mail->header.recipient.type) {
|
||||
case mMl_NAME_TYPE_PLAYER: {
|
||||
int house_idx = mMl_hunt_for_send_address(mail);
|
||||
if (house_idx != -1 && mPO_count_mail(house_idx) < HOME_MAILBOX_SIZE) {
|
||||
res = mPO_keep_contents(mail);
|
||||
if (res == TRUE) {
|
||||
Save_Get(post_office.mail_recipient_flags) |= (1 << house_idx);
|
||||
Save_Get(post_office.keep_mail_sum_players)++;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case mMl_NAME_TYPE_NPC:
|
||||
{
|
||||
if (mNpc_ReceiveHPMail(mail) == FALSE) {
|
||||
mNpc_SendMailtoNpc(mail);
|
||||
}
|
||||
|
||||
res = mPO_keep_contents(mail);
|
||||
if (res == TRUE) {
|
||||
Save_Get(post_office).keep_mail_sum_npcs++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case mMl_NAME_TYPE_MUSEUM:
|
||||
{
|
||||
mMsm_SendMuseumMail(mail);
|
||||
mMl_clear_mail(mail);
|
||||
|
||||
Save_Get(post_office).keep_mail_sum_npcs++;
|
||||
res = TRUE;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mPO_receipt_proc(Mail_c* mail, int send_type) {
|
||||
int res = FALSE;
|
||||
|
||||
switch (send_type) {
|
||||
case mPO_SENDTYPE_MAIL:
|
||||
{
|
||||
res = mPO_receipt_check_mail(mail);
|
||||
break;
|
||||
}
|
||||
|
||||
case mPO_SENDTYPE_LEAFLET:
|
||||
{
|
||||
mMl_copy_mail(&Save_Get(post_office).leaflet, mail);
|
||||
Save_Set(post_office.leaflet_recipient_flags.leaflet_flags, 0);
|
||||
res = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
case mPO_SENDTYPE_EVENT_LEAFLET:
|
||||
{
|
||||
mMl_copy_mail(&Save_Get(post_office).event_leaflet, mail);
|
||||
Save_Set(post_office.leaflet_recipient_flags.event_flags, 0);
|
||||
res = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int mPO_copy_contents(int house_no, Mail_c* mail) {
|
||||
int res = FALSE;
|
||||
int free_slot = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE);
|
||||
|
||||
if (free_slot >= 0) {
|
||||
mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_slot, mail);
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_item(Mail_c* mail, int mail_no, mActor_name_t present, PersonalID_c* pid) {
|
||||
int header_back_start;
|
||||
|
||||
mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, mail_no);
|
||||
|
||||
mail->content.font = mMl_FONT_0;
|
||||
mail->content.header_back_start = header_back_start;
|
||||
mail->content.mail_type = 7;
|
||||
mail->content.paper_type = ITM_PAPER55;
|
||||
mail->present = present;
|
||||
|
||||
mMl_set_to_plname(mail, pid);
|
||||
}
|
||||
|
||||
static int mPO_delivery_mail_with_order_ftr_sub(int house_no, PersonalID_c* pid, mPr_catalog_order_c* order) {
|
||||
Mail_c mail;
|
||||
u8 item_name[mIN_ITEM_NAME_LEN];
|
||||
|
||||
mMl_clear_mail(&mail);
|
||||
mIN_copy_name_str(item_name, order->item);
|
||||
mHandbill_Set_free_str(0, item_name, mIN_ITEM_NAME_LEN);
|
||||
mPO_delivery_mail_with_item(&mail, 0x049 + order->shop_level, order->item, pid);
|
||||
return mPO_copy_contents(house_no, &mail);
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_order_ftr(int house_no, int player_no) {
|
||||
Private_c* priv = Save_GetPointer(private[player_no]);
|
||||
|
||||
if (priv->exists == TRUE) {
|
||||
mPr_catalog_order_c* order = priv->catalog_orders;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mPr_CATALOG_ORDER_NUM; i++) {
|
||||
if (order->item != EMPTY_NO) {
|
||||
if (mPO_delivery_mail_with_order_ftr_sub(house_no, &priv->player_ID, order) == FALSE) {
|
||||
return;
|
||||
}
|
||||
|
||||
order->item = EMPTY_NO;
|
||||
}
|
||||
|
||||
order++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_ticket_set_free_str(lbRTC_month_t month) {
|
||||
u8 month_str[9];
|
||||
u8 day_str[4];
|
||||
|
||||
int days = lbRTC_GetDaysByMonth(Common_Get(time.rtc_time.year), month);
|
||||
mString_Load_MonthStringFromRom(month_str, month);
|
||||
mString_Load_DayStringFromRom(day_str, days);
|
||||
mHandbill_Set_free_str(4, month_str, 9);
|
||||
mHandbill_Set_free_str(5, day_str, 4);
|
||||
}
|
||||
|
||||
static int mPO_delivery_mail_with_ticket_sub(int house_no, PersonalID_c* pid, mActor_name_t present) {
|
||||
Mail_c mail;
|
||||
|
||||
mMl_clear_mail(&mail);
|
||||
mPO_delivery_mail_with_item(&mail, 0x057, present, pid);
|
||||
return mPO_copy_contents(house_no, &mail);
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_ticket(int house_no, int player_no) {
|
||||
mActor_name_t ticket;
|
||||
Private_c* priv = Save_GetPointer(private[player_no]);
|
||||
|
||||
if (priv->exists == TRUE) {
|
||||
int ticket_num = priv->inventory.lotto_ticket_mail_storage;
|
||||
|
||||
if (ticket_num != 0) {
|
||||
int minus_ticket;
|
||||
mActor_name_t ticket_id;
|
||||
lbRTC_month_t ticket_month = priv->inventory.lotto_ticket_expiry_month;
|
||||
|
||||
mPO_delivery_mail_with_ticket_set_free_str(ticket_month);
|
||||
ticket = ITM_TICKET_START + (ticket_month - 1) * 8;
|
||||
|
||||
for (ticket_num; ticket_num != 0; ticket_num -= minus_ticket) {
|
||||
minus_ticket = ticket_num < 5 ? ticket_num : 5;
|
||||
ticket_id = ticket + minus_ticket - 1;
|
||||
if (mPO_delivery_mail_with_ticket_sub(house_no, &priv->player_ID, ticket_id) == FALSE) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
priv->inventory.lotto_ticket_mail_storage = ticket_num;
|
||||
}
|
||||
}
|
||||
|
||||
static int mPO_delivery_mail_sub(int house_no) {
|
||||
PostOffice_c* post_office;
|
||||
Mail_c* po_mail;
|
||||
int i;
|
||||
int res = TRUE;
|
||||
|
||||
po_mail = Save_Get(post_office).mail;
|
||||
post_office = Save_GetPointer(post_office);
|
||||
|
||||
for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++, po_mail++) {
|
||||
if (mMl_check_not_used_mail(po_mail) == FALSE) {
|
||||
int dst_house_no = mMl_hunt_for_send_address(po_mail);
|
||||
if (dst_house_no != -1) {
|
||||
if (house_no == mPO_DELIVER_ALL_HOUSES || dst_house_no == house_no) {
|
||||
if (mPO_copy_contents(dst_house_no, po_mail) == TRUE) {
|
||||
post_office->keep_mail_sum_players--;
|
||||
mMl_clear_mail(po_mail);
|
||||
}
|
||||
else {
|
||||
res = FALSE; // failed to deliver the mail, house mailbox is likely full
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (po_mail->header.recipient.type) {
|
||||
case mMl_NAME_TYPE_PLAYER:
|
||||
post_office->keep_mail_sum_players--;
|
||||
break;
|
||||
}
|
||||
|
||||
mMl_clear_mail(po_mail);
|
||||
}
|
||||
}
|
||||
}
|
||||
case mMl_NAME_TYPE_NPC: {
|
||||
if (mNpc_ReceiveHPMail(mail) == FALSE) {
|
||||
mNpc_SendMailtoNpc(mail);
|
||||
}
|
||||
|
||||
Save_Set(post_office.keep_mail_sum_npcs, 0);
|
||||
return res;
|
||||
res = mPO_keep_contents(mail);
|
||||
if (res == TRUE) {
|
||||
Save_Get(post_office).keep_mail_sum_npcs++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case mMl_NAME_TYPE_MUSEUM: {
|
||||
mMsm_SendMuseumMail(mail);
|
||||
mMl_clear_mail(mail);
|
||||
|
||||
Save_Get(post_office).keep_mail_sum_npcs++;
|
||||
res = TRUE;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
extern int mPO_receipt_proc(Mail_c* mail, int send_type) {
|
||||
int res = FALSE;
|
||||
|
||||
switch (send_type) {
|
||||
case mPO_SENDTYPE_MAIL: {
|
||||
res = mPO_receipt_check_mail(mail);
|
||||
break;
|
||||
}
|
||||
|
||||
case mPO_SENDTYPE_LEAFLET: {
|
||||
mMl_copy_mail(&Save_Get(post_office).leaflet, mail);
|
||||
Save_Set(post_office.leaflet_recipient_flags.leaflet_flags, 0);
|
||||
res = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
case mPO_SENDTYPE_EVENT_LEAFLET: {
|
||||
mMl_copy_mail(&Save_Get(post_office).event_leaflet, mail);
|
||||
Save_Set(post_office.leaflet_recipient_flags.event_flags, 0);
|
||||
res = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int mPO_copy_contents(int house_no, Mail_c* mail) {
|
||||
int res = FALSE;
|
||||
int free_slot = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE);
|
||||
|
||||
if (free_slot >= 0) {
|
||||
mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_slot, mail);
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_item(Mail_c* mail, int mail_no, mActor_name_t present, PersonalID_c* pid) {
|
||||
int header_back_start;
|
||||
|
||||
mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body,
|
||||
mail_no);
|
||||
|
||||
mail->content.font = mMl_FONT_0;
|
||||
mail->content.header_back_start = header_back_start;
|
||||
mail->content.mail_type = 7;
|
||||
mail->content.paper_type = ITM_PAPER55;
|
||||
mail->present = present;
|
||||
|
||||
mMl_set_to_plname(mail, pid);
|
||||
}
|
||||
|
||||
static int mPO_delivery_mail_with_order_ftr_sub(int house_no, PersonalID_c* pid, mPr_catalog_order_c* order) {
|
||||
Mail_c mail;
|
||||
u8 item_name[mIN_ITEM_NAME_LEN];
|
||||
|
||||
mMl_clear_mail(&mail);
|
||||
mIN_copy_name_str(item_name, order->item);
|
||||
mHandbill_Set_free_str(0, item_name, mIN_ITEM_NAME_LEN);
|
||||
mPO_delivery_mail_with_item(&mail, 0x049 + order->shop_level, order->item, pid);
|
||||
return mPO_copy_contents(house_no, &mail);
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_order_ftr(int house_no, int player_no) {
|
||||
Private_c* priv = Save_GetPointer(private_data[player_no]);
|
||||
|
||||
if (priv->exists == TRUE) {
|
||||
mPr_catalog_order_c* order = priv->catalog_orders;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mPr_CATALOG_ORDER_NUM; i++) {
|
||||
if (order->item != EMPTY_NO) {
|
||||
if (mPO_delivery_mail_with_order_ftr_sub(house_no, &priv->player_ID, order) == FALSE) {
|
||||
return;
|
||||
}
|
||||
|
||||
order->item = EMPTY_NO;
|
||||
}
|
||||
|
||||
order++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_ticket_set_free_str(lbRTC_month_t month) {
|
||||
u8 month_str[9];
|
||||
u8 day_str[4];
|
||||
|
||||
int days = lbRTC_GetDaysByMonth(Common_Get(time.rtc_time.year), month);
|
||||
mString_Load_MonthStringFromRom(month_str, month);
|
||||
mString_Load_DayStringFromRom(day_str, days);
|
||||
mHandbill_Set_free_str(4, month_str, 9);
|
||||
mHandbill_Set_free_str(5, day_str, 4);
|
||||
}
|
||||
|
||||
static int mPO_delivery_mail_with_ticket_sub(int house_no, PersonalID_c* pid, mActor_name_t present) {
|
||||
Mail_c mail;
|
||||
|
||||
mMl_clear_mail(&mail);
|
||||
mPO_delivery_mail_with_item(&mail, 0x057, present, pid);
|
||||
return mPO_copy_contents(house_no, &mail);
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail_with_ticket(int house_no, int player_no) {
|
||||
mActor_name_t ticket;
|
||||
Private_c* priv = Save_GetPointer(private_data[player_no]);
|
||||
|
||||
if (priv->exists == TRUE) {
|
||||
int ticket_num = priv->inventory.lotto_ticket_mail_storage;
|
||||
|
||||
if (ticket_num != 0) {
|
||||
int minus_ticket;
|
||||
mActor_name_t ticket_id;
|
||||
lbRTC_month_t ticket_month = priv->inventory.lotto_ticket_expiry_month;
|
||||
|
||||
mPO_delivery_mail_with_ticket_set_free_str(ticket_month);
|
||||
ticket = ITM_TICKET_START + (ticket_month - 1) * 8;
|
||||
|
||||
for (ticket_num; ticket_num != 0; ticket_num -= minus_ticket) {
|
||||
minus_ticket = ticket_num < 5 ? ticket_num : 5;
|
||||
ticket_id = ticket + minus_ticket - 1;
|
||||
if (mPO_delivery_mail_with_ticket_sub(house_no, &priv->player_ID, ticket_id) == FALSE) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
priv->inventory.lotto_ticket_mail_storage = ticket_num;
|
||||
}
|
||||
}
|
||||
|
||||
static int mPO_delivery_mail_sub(int house_no) {
|
||||
PostOffice_c* post_office;
|
||||
Mail_c* po_mail;
|
||||
int i;
|
||||
int res = TRUE;
|
||||
|
||||
po_mail = Save_Get(post_office).mail;
|
||||
post_office = Save_GetPointer(post_office);
|
||||
|
||||
for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++, po_mail++) {
|
||||
if (mMl_check_not_used_mail(po_mail) == FALSE) {
|
||||
int dst_house_no = mMl_hunt_for_send_address(po_mail);
|
||||
if (dst_house_no != -1) {
|
||||
if (house_no == mPO_DELIVER_ALL_HOUSES || dst_house_no == house_no) {
|
||||
if (mPO_copy_contents(dst_house_no, po_mail) == TRUE) {
|
||||
post_office->keep_mail_sum_players--;
|
||||
mMl_clear_mail(po_mail);
|
||||
} else {
|
||||
res = FALSE; // failed to deliver the mail, house mailbox is likely full
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch (po_mail->header.recipient.type) {
|
||||
case mMl_NAME_TYPE_PLAYER:
|
||||
post_office->keep_mail_sum_players--;
|
||||
break;
|
||||
}
|
||||
|
||||
mMl_clear_mail(po_mail);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Save_Set(post_office.keep_mail_sum_npcs, 0);
|
||||
return res;
|
||||
}
|
||||
|
||||
static void mPO_delivery_one_address_mail(int house_no) {
|
||||
if (mPO_delivery_mail_sub(house_no) == TRUE) {
|
||||
s16 mask = (1 << house_no) ^ 0b1111;
|
||||
Save_Get(post_office.mail_recipient_flags) &= mask; // clear out delivered houses
|
||||
}
|
||||
if (mPO_delivery_mail_sub(house_no) == TRUE) {
|
||||
s16 mask = (1 << house_no) ^ 0b1111;
|
||||
Save_Get(post_office.mail_recipient_flags) &= mask; // clear out delivered houses
|
||||
}
|
||||
}
|
||||
|
||||
static void mPO_delivery_one_address_special_mail(int house_no) {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
|
||||
mPO_delivery_mail_with_ticket(house_no, player_no);
|
||||
mPO_delivery_mail_with_order_ftr(house_no, player_no);
|
||||
mPO_delivery_mail_with_ticket(house_no, player_no);
|
||||
mPO_delivery_mail_with_order_ftr(house_no, player_no);
|
||||
}
|
||||
|
||||
static void mPO_delivery_one_address_leaflet(s16* leaflet_received_flags, Mail_c* leaflet, int house_no) {
|
||||
if ((((*leaflet_received_flags) >> house_no) & 1) == FALSE) {
|
||||
mHm_hs_c* house = Save_GetPointer(homes[house_no]);
|
||||
if ((((*leaflet_received_flags) >> house_no) & 1) == FALSE) {
|
||||
mHm_hs_c* house = Save_GetPointer(homes[house_no]);
|
||||
|
||||
if (house->ownerID.land_id == 0xFFFF) {
|
||||
*leaflet_received_flags |= (1 << house_no); // unclaimed houses are marked "received"
|
||||
}
|
||||
else {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
if (player_no < mPr_FOREIGNER && mEv_ArbeitPlayer(player_no) == FALSE) {
|
||||
mMl_set_to_plname(leaflet, &house->ownerID);
|
||||
if (mPO_copy_contents(house_no, leaflet) == TRUE) {
|
||||
*leaflet_received_flags |= (1 << house_no);
|
||||
if (house->ownerID.land_id == 0xFFFF) {
|
||||
*leaflet_received_flags |= (1 << house_no); // unclaimed houses are marked "received"
|
||||
} else {
|
||||
int player_no = mHS_get_pl_no(house_no);
|
||||
if (player_no < mPr_FOREIGNER && mEv_ArbeitPlayer(player_no) == FALSE) {
|
||||
mMl_set_to_plname(leaflet, &house->ownerID);
|
||||
if (mPO_copy_contents(house_no, leaflet) == TRUE) {
|
||||
*leaflet_received_flags |= (1 << house_no);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mPO_delivery_one_address_event_leaflet(int house_no) {
|
||||
Mail_c* ev_leaflet = &Save_Get(post_office).event_leaflet;
|
||||
int special_type = mEv_get_special_event_type();
|
||||
int leaflet_event_type;
|
||||
Mail_c* ev_leaflet = &Save_Get(post_office).event_leaflet;
|
||||
int special_type = mEv_get_special_event_type();
|
||||
int leaflet_event_type;
|
||||
|
||||
switch (ev_leaflet->content.mail_type) {
|
||||
case mMl_TYPE_SHOP_SALE_LEAFLET:
|
||||
leaflet_event_type = mEv_EVENT_SHOP_SALE;
|
||||
break;
|
||||
switch (ev_leaflet->content.mail_type) {
|
||||
case mMl_TYPE_SHOP_SALE_LEAFLET:
|
||||
leaflet_event_type = mEv_EVENT_SHOP_SALE;
|
||||
break;
|
||||
|
||||
case mMl_TYPE_BROKER_SALE_LEAFLET:
|
||||
leaflet_event_type = mEv_EVENT_BROKER_SALE;
|
||||
break;
|
||||
case mMl_TYPE_BROKER_SALE_LEAFLET:
|
||||
leaflet_event_type = mEv_EVENT_BROKER_SALE;
|
||||
break;
|
||||
|
||||
default:
|
||||
leaflet_event_type = -1;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
leaflet_event_type = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (leaflet_event_type == special_type) {
|
||||
mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.event_flags, ev_leaflet, house_no);
|
||||
}
|
||||
if (leaflet_event_type == special_type) {
|
||||
mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.event_flags, ev_leaflet,
|
||||
house_no);
|
||||
}
|
||||
}
|
||||
|
||||
extern int mPO_delivery_one_address(int house_no) {
|
||||
mPO_delivery_one_address_mail(house_no);
|
||||
mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, &Save_Get(post_office).leaflet, house_no);
|
||||
mPO_delivery_one_address_event_leaflet(house_no);
|
||||
mPO_delivery_one_address_mail(house_no);
|
||||
mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags,
|
||||
&Save_Get(post_office).leaflet, house_no);
|
||||
mPO_delivery_one_address_event_leaflet(house_no);
|
||||
}
|
||||
|
||||
static void mPO_delivery_mail() {
|
||||
mPO_delivery_mail_sub(mPO_DELIVER_ALL_HOUSES);
|
||||
mPO_adjust_keep_mail();
|
||||
mPO_delivery_mail_sub(mPO_DELIVER_ALL_HOUSES);
|
||||
mPO_adjust_keep_mail();
|
||||
}
|
||||
|
||||
static void mPO_delivery_leaflet() {
|
||||
int house_no;
|
||||
int house_no;
|
||||
|
||||
for (house_no = 0; house_no < mHS_HOUSE_NUM; house_no++) {
|
||||
mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, &Save_Get(post_office).leaflet, house_no);
|
||||
mPO_delivery_one_address_event_leaflet(house_no);
|
||||
}
|
||||
for (house_no = 0; house_no < mHS_HOUSE_NUM; house_no++) {
|
||||
mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags,
|
||||
&Save_Get(post_office).leaflet, house_no);
|
||||
mPO_delivery_one_address_event_leaflet(house_no);
|
||||
}
|
||||
}
|
||||
|
||||
extern void mPO_delivery_all_address_proc() {
|
||||
mPO_delivery_mail();
|
||||
mPO_delivery_leaflet();
|
||||
mPO_delivery_mail();
|
||||
mPO_delivery_leaflet();
|
||||
}
|
||||
|
||||
static int mPO_make_post_man(GAME_PLAY* play) {
|
||||
static int bx_add[2] = { -1, 1 };
|
||||
static int ux_table[2] = { UT_X_NUM - 1, 0 };
|
||||
static int bx_add[2] = { -1, 1 };
|
||||
static int ux_table[2] = { UT_X_NUM - 1, 0 };
|
||||
|
||||
int pl_block_x;
|
||||
int pl_block_z;
|
||||
u32 block_kind;
|
||||
int pl_block_x;
|
||||
int pl_block_z;
|
||||
u32 block_kind;
|
||||
|
||||
int po_block_x;
|
||||
int po_block_z;
|
||||
int res = FALSE;
|
||||
int po_block_x;
|
||||
int po_block_z;
|
||||
int res = FALSE;
|
||||
|
||||
if (Save_Get(scene_no) == SCENE_FG) {
|
||||
mFI_BlockKind2BkNum(&pl_block_x, &pl_block_z, mRF_BLOCKKIND_PLAYER);
|
||||
block_kind = mFI_BkNum2BlockKind(play->block_table.block_x, play->block_table.block_z);
|
||||
if (Save_Get(scene_no) == SCENE_FG) {
|
||||
mFI_BlockKind2BkNum(&pl_block_x, &pl_block_z, mRF_BLOCKKIND_PLAYER);
|
||||
block_kind = mFI_BkNum2BlockKind(play->block_table.block_x, play->block_table.block_z);
|
||||
|
||||
if (block_kind != mRF_BLOCKKIND_NONE) {
|
||||
if ((block_kind & mRF_BLOCKKIND_PLAYER) != 0) {
|
||||
int bx_add_idx;
|
||||
int spawned_postman;
|
||||
if (block_kind != mRF_BLOCKKIND_NONE) {
|
||||
if ((block_kind & mRF_BLOCKKIND_PLAYER) != 0) {
|
||||
int bx_add_idx;
|
||||
int spawned_postman;
|
||||
|
||||
mFI_BlockKind2BkNum(&po_block_x, &po_block_z, mRF_BLOCKKIND_POSTOFFICE);
|
||||
bx_add_idx = pl_block_x >= po_block_x ? 0 : 1;
|
||||
spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(play, SP_NPC_POST_MAN, -1, -1, 0, play->block_table.block_x + bx_add[bx_add_idx], play->block_table.block_z, ux_table[bx_add_idx], 7);
|
||||
mFI_BlockKind2BkNum(&po_block_x, &po_block_z, mRF_BLOCKKIND_POSTOFFICE);
|
||||
bx_add_idx = pl_block_x >= po_block_x ? 0 : 1;
|
||||
spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(
|
||||
play, SP_NPC_POST_MAN, -1, -1, 0, play->block_table.block_x + bx_add[bx_add_idx],
|
||||
play->block_table.block_z, ux_table[bx_add_idx], 7);
|
||||
|
||||
if (spawned_postman == TRUE) {
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
else if ((block_kind & mRF_BLOCKKIND_POSTOFFICE) != 0) {
|
||||
if (Common_Get(force_mail_delivery_flag) == TRUE) {
|
||||
int post_utx;
|
||||
int post_utz;
|
||||
int spawned_postman;
|
||||
ACTOR* post_office_structure = Actor_info_fgName_search(&play->actor_info, POST_OFFICE, ACTOR_PART_ITEM);
|
||||
if (spawned_postman == TRUE) {
|
||||
res = TRUE;
|
||||
}
|
||||
} else if ((block_kind & mRF_BLOCKKIND_POSTOFFICE) != 0) {
|
||||
if (Common_Get(force_mail_delivery_flag) == TRUE) {
|
||||
int post_utx;
|
||||
int post_utz;
|
||||
int spawned_postman;
|
||||
ACTOR* post_office_structure =
|
||||
Actor_info_fgName_search(&play->actor_info, POST_OFFICE, ACTOR_PART_ITEM);
|
||||
|
||||
if (post_office_structure != NULL) {
|
||||
mFI_Wpos2UtNum_inBlock(&post_utx, &post_utz, post_office_structure->world.position);
|
||||
spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(play, SP_NPC_POST_MAN, -1, -1, 1, play->block_table.block_x, play->block_table.block_z, post_utx - 3, post_utz);
|
||||
if (post_office_structure != NULL) {
|
||||
mFI_Wpos2UtNum_inBlock(&post_utx, &post_utz, post_office_structure->world.position);
|
||||
spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(
|
||||
play, SP_NPC_POST_MAN, -1, -1, 1, play->block_table.block_x, play->block_table.block_z,
|
||||
post_utx - 3, post_utz);
|
||||
|
||||
if (spawned_postman == TRUE) {
|
||||
res = TRUE;
|
||||
if (spawned_postman == TRUE) {
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mPO_delivery_all_address_proc();
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mPO_delivery_all_address_proc();
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mPO_delivery_all_address_proc();
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mPO_delivery_all_address_proc();
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mPO_delivery_all_address_proc();
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static void mPO_set_next_delivery_time(lbRTC_time_c* time) {
|
||||
if (time->hour < 9) {
|
||||
time->hour = 9;
|
||||
}
|
||||
else if (time->hour < 17) {
|
||||
time->hour = 17;
|
||||
}
|
||||
else {
|
||||
lbRTC_Add_DD(time, 1);
|
||||
time->hour = 9;
|
||||
}
|
||||
if (time->hour < 9) {
|
||||
time->hour = 9;
|
||||
} else if (time->hour < 17) {
|
||||
time->hour = 17;
|
||||
} else {
|
||||
lbRTC_Add_DD(time, 1);
|
||||
time->hour = 9;
|
||||
}
|
||||
|
||||
time->min = 0;
|
||||
time->sec = 0;
|
||||
lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, time);
|
||||
time->min = 0;
|
||||
time->sec = 0;
|
||||
lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, time);
|
||||
}
|
||||
|
||||
static void mPO_delivery_proc(GAME_PLAY* play) {
|
||||
lbRTC_time_c time;
|
||||
lbRTC_time_c time;
|
||||
|
||||
lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time));
|
||||
lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time));
|
||||
|
||||
if ((lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || Common_Get(force_mail_delivery_flag) == TRUE) &&
|
||||
(mPO_make_post_man(play) == TRUE)
|
||||
) {
|
||||
mPO_set_next_delivery_time(&time);
|
||||
Common_Set(force_mail_delivery_flag, FALSE);
|
||||
}
|
||||
if ((lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER ||
|
||||
Common_Get(force_mail_delivery_flag) == TRUE) &&
|
||||
(mPO_make_post_man(play) == TRUE)) {
|
||||
mPO_set_next_delivery_time(&time);
|
||||
Common_Set(force_mail_delivery_flag, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
static void mPO_first_delivery_proc() {
|
||||
int deliver = FALSE;
|
||||
lbRTC_time_c time;
|
||||
int deliver = FALSE;
|
||||
lbRTC_time_c time;
|
||||
|
||||
lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time));
|
||||
lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time));
|
||||
|
||||
if (lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || Common_Get(force_mail_delivery_flag) == TRUE) {
|
||||
deliver = TRUE;
|
||||
mPO_set_next_delivery_time(&time);
|
||||
Common_Set(force_mail_delivery_flag, FALSE);
|
||||
}
|
||||
if (lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER ||
|
||||
Common_Get(force_mail_delivery_flag) == TRUE) {
|
||||
deliver = TRUE;
|
||||
mPO_set_next_delivery_time(&time);
|
||||
Common_Set(force_mail_delivery_flag, FALSE);
|
||||
}
|
||||
|
||||
if (deliver == TRUE) {
|
||||
mPO_delivery_mail();
|
||||
}
|
||||
if (deliver == TRUE) {
|
||||
mPO_delivery_mail();
|
||||
}
|
||||
|
||||
if (mLd_PlayerManKindCheck() == FALSE) {
|
||||
int house_no = mHS_get_arrange_idx(Common_Get(player_no));
|
||||
mPO_delivery_one_address_special_mail(house_no);
|
||||
}
|
||||
if (mLd_PlayerManKindCheck() == FALSE) {
|
||||
int house_no = mHS_get_arrange_idx(Common_Get(player_no));
|
||||
mPO_delivery_one_address_special_mail(house_no);
|
||||
}
|
||||
|
||||
if (deliver == TRUE) {
|
||||
mPO_delivery_leaflet();
|
||||
}
|
||||
if (deliver == TRUE) {
|
||||
mPO_delivery_leaflet();
|
||||
}
|
||||
}
|
||||
|
||||
extern void mPO_business_proc(GAME_PLAY* play) {
|
||||
if ((Common_Get(clip).demo_clip == NULL && Common_Get(clip).demo_clip2 == NULL) ||
|
||||
(Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO)
|
||||
) {
|
||||
int scene = Save_Get(scene_no);
|
||||
if ((Common_Get(clip).demo_clip == NULL && Common_Get(clip).demo_clip2 == NULL) ||
|
||||
(Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO)) {
|
||||
int scene = Save_Get(scene_no);
|
||||
|
||||
switch (scene) {
|
||||
default:
|
||||
mPO_delivery_proc(play);
|
||||
break;
|
||||
switch (scene) {
|
||||
default:
|
||||
mPO_delivery_proc(play);
|
||||
break;
|
||||
|
||||
case SCENE_PLAYERSELECT:
|
||||
case SCENE_PLAYERSELECT_2:
|
||||
case SCENE_PLAYERSELECT_3:
|
||||
case SCENE_PLAYERSELECT_SAVE:
|
||||
case SCENE_TITLE_DEMO:
|
||||
return;
|
||||
case SCENE_PLAYERSELECT:
|
||||
case SCENE_PLAYERSELECT_2:
|
||||
case SCENE_PLAYERSELECT_3:
|
||||
case SCENE_PLAYERSELECT_SAVE:
|
||||
case SCENE_TITLE_DEMO:
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern void mPO_first_work() {
|
||||
lbRTC_time_c* time = &Save_Get(save_check).time;
|
||||
if (mTM_AreTimesEqual(time, &mTM_rtcTime_clear_code) == FALSE && lbRTC_IsOverRTC(time) == FALSE) {
|
||||
Common_Set(force_mail_delivery_flag, TRUE);
|
||||
}
|
||||
lbRTC_time_c* time = &Save_Get(save_check).time;
|
||||
if (mTM_AreTimesEqual(time, &mTM_rtcTime_clear_code) == FALSE && lbRTC_IsOverRTC(time) == FALSE) {
|
||||
Common_Set(force_mail_delivery_flag, TRUE);
|
||||
}
|
||||
|
||||
mPO_first_delivery_proc();
|
||||
mPO_adjust_keep_mail();
|
||||
mPO_first_delivery_proc();
|
||||
mPO_adjust_keep_mail();
|
||||
}
|
||||
|
||||
extern void mPO_post_office_init() {
|
||||
bzero(Save_GetPointer(post_office), sizeof(PostOffice_c));
|
||||
mMl_clear_mail_box(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE);
|
||||
mMl_clear_mail(&Save_Get(post_office).leaflet);
|
||||
mMl_clear_mail(&Save_Get(post_office).event_leaflet);
|
||||
Save_Get(post_office).leaflet_recipient_flags.raw = 0x000F000F;
|
||||
lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, Common_GetPointer(time.rtc_time));
|
||||
bzero(Save_GetPointer(post_office), sizeof(PostOffice_c));
|
||||
mMl_clear_mail_box(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE);
|
||||
mMl_clear_mail(&Save_Get(post_office).leaflet);
|
||||
mMl_clear_mail(&Save_Get(post_office).event_leaflet);
|
||||
Save_Get(post_office).leaflet_recipient_flags.raw = 0x000F000F;
|
||||
lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, Common_GetPointer(time.rtc_time));
|
||||
}
|
||||
|
||||
+1007
-1019
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1038,8 +1038,8 @@ extern void mQst_PrintQuestInfo(gfxprint_t* gfxprint) {
|
||||
delivery = priv->deliveries;
|
||||
errand = priv->errands;
|
||||
} else {
|
||||
delivery = Save_Get(private[0]).deliveries;
|
||||
errand = Save_Get(private[0]).errands;
|
||||
delivery = Save_Get(private_data[0]).deliveries;
|
||||
errand = Save_Get(private_data[0]).errands;
|
||||
}
|
||||
|
||||
gfxprint_color(gfxprint, 220, 50, 50, 255);
|
||||
|
||||
+2
-2
@@ -2110,7 +2110,7 @@ extern void mRmTp_CopyWallData(u8* dst, int wall_no) {
|
||||
int room_idx = mRmTp_GetPlayerRoomIdx();
|
||||
int valid2 = mHS_get_pl_no_detail(room_idx) >= 0 && mHS_get_pl_no_detail(room_idx) < PLAYER_NUM;
|
||||
int player_no = valid2 ? mHS_get_pl_no_detail(room_idx) : 0;
|
||||
mNW_original_design_c* original = &Save_Get(private[player_no]).my_org[tex_idx & 7];
|
||||
mNW_original_design_c* original = &Save_Get(private_data[player_no]).my_org[tex_idx & 7];
|
||||
|
||||
mNW_CopyOriginalPalette(dst, original);
|
||||
mNW_CopyOriginalTexture(dst + mNW_PALETTE_SIZE, original);
|
||||
@@ -2137,7 +2137,7 @@ extern void mRmTp_CopyFloorData(u8* dst, int floor_no) {
|
||||
int room_idx = mRmTp_GetPlayerRoomIdx();
|
||||
int valid2 = mHS_get_pl_no_detail(room_idx) >= 0 && mHS_get_pl_no_detail(room_idx) < PLAYER_NUM;
|
||||
int player_no = valid2 ? mHS_get_pl_no_detail(room_idx) : 0;
|
||||
mNW_original_design_c* original = &Save_Get(private[player_no]).my_org[tex_idx & 7];
|
||||
mNW_original_design_c* original = &Save_Get(private_data[player_no]).my_org[tex_idx & 7];
|
||||
|
||||
mNW_CopyOriginalPalette(dst, original);
|
||||
mNW_CopyOriginalTexture(dst + mNW_PALETTE_SIZE, original);
|
||||
|
||||
+1852
-2138
File diff suppressed because it is too large
Load Diff
@@ -183,7 +183,7 @@ static int mSDI_StartInitNew(GAME* game, int player_no, int malloc_flag) {
|
||||
osSyncPrintf("player no -- %d\n", player_no);
|
||||
Common_Set(player_no, player_no);
|
||||
|
||||
priv = Save_GetPointer(private[player_no]);
|
||||
priv = Save_GetPointer(private_data[player_no]);
|
||||
Common_Set(now_private, priv);
|
||||
priv->gender = mPr_SEX_MALE;
|
||||
decide_fruit(Save_GetPointer(fruit));
|
||||
@@ -211,7 +211,7 @@ static int mSDI_StartInitNew(GAME* game, int player_no, int malloc_flag) {
|
||||
/* Tree -> Cedar Tree */
|
||||
mAGrw_ChangeTree2Cedar();
|
||||
|
||||
priv_p = Save_Get(private);
|
||||
priv_p = Save_Get(private_data);
|
||||
|
||||
mMld_SetDefaultMelody();
|
||||
mLd_LandDataInit();
|
||||
@@ -292,7 +292,7 @@ static int mSDI_StartInitFrom(GAME* game, int player_no, int malloc_flag) {
|
||||
lbRTC_GetTime(Common_GetPointer(time.rtc_time));
|
||||
|
||||
if (mFRm_CheckSaveData() == TRUE) {
|
||||
Private_c* priv = Save_Get(private + player_no);
|
||||
Private_c* priv = Save_Get(private_data + player_no);
|
||||
|
||||
if (mPr_CheckPrivate(priv) == TRUE) {
|
||||
|
||||
@@ -349,7 +349,7 @@ static int mSDI_StartInitNewPlayer(GAME* game, int player_no, int malloc_flag) {
|
||||
lbRTC_GetTime(Common_GetPointer(time.rtc_time));
|
||||
|
||||
if (mFRm_CheckSaveData() == TRUE) {
|
||||
Private_c* priv = Save_Get(private + player_no);
|
||||
Private_c* priv = Save_Get(private_data + player_no);
|
||||
|
||||
if (mPr_CheckPrivate(priv) != TRUE) {
|
||||
mPr_InitPrivateInfo(priv);
|
||||
|
||||
+239
-299
@@ -34,388 +34,328 @@
|
||||
|
||||
static int mTR_first_flag = TRUE;
|
||||
|
||||
static Door_data_c demo_1_door_data = {
|
||||
SCENE_TITLE_DEMO,
|
||||
4,
|
||||
FALSE,
|
||||
0,
|
||||
{ 2180, 200, 824 },
|
||||
EMPTY_NO,
|
||||
3,
|
||||
{0,0,0}
|
||||
};
|
||||
static Door_data_c demo_1_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2180, 200, 824 }, EMPTY_NO, 3, { 0, 0, 0 } };
|
||||
|
||||
static Door_data_c demo_2_door_data = {
|
||||
SCENE_TITLE_DEMO,
|
||||
4,
|
||||
FALSE,
|
||||
0,
|
||||
{ 3218, 40, 3074 },
|
||||
EMPTY_NO,
|
||||
3,
|
||||
{0,0,0}
|
||||
};
|
||||
static Door_data_c demo_2_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 3218, 40, 3074 }, EMPTY_NO, 3, { 0, 0, 0 } };
|
||||
|
||||
static Door_data_c demo_3_door_data = {
|
||||
SCENE_TITLE_DEMO,
|
||||
4,
|
||||
FALSE,
|
||||
0,
|
||||
{ 2117, 160, 1488 },
|
||||
EMPTY_NO,
|
||||
3,
|
||||
{0,0,0}
|
||||
};
|
||||
static Door_data_c demo_3_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2117, 160, 1488 }, EMPTY_NO, 3, { 0, 0, 0 } };
|
||||
|
||||
static Door_data_c demo_4_door_data = {
|
||||
SCENE_TITLE_DEMO,
|
||||
4,
|
||||
FALSE,
|
||||
0,
|
||||
{ 2899, 160, 1101 },
|
||||
EMPTY_NO,
|
||||
3,
|
||||
{0,0,0}
|
||||
};
|
||||
static Door_data_c demo_4_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2899, 160, 1101 }, EMPTY_NO, 3, { 0, 0, 0 } };
|
||||
|
||||
static Door_data_c demo_5_door_data = {
|
||||
SCENE_TITLE_DEMO,
|
||||
4,
|
||||
FALSE,
|
||||
0,
|
||||
{ 1578, 40, 2472 },
|
||||
EMPTY_NO,
|
||||
3,
|
||||
{0,0,0}
|
||||
};
|
||||
static Door_data_c demo_5_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 1578, 40, 2472 }, EMPTY_NO, 3, { 0, 0, 0 } };
|
||||
|
||||
static Door_data_c* l_demo_door_data_table[mTD_TITLE_DEMO_NUM] = {
|
||||
&demo_1_door_data,
|
||||
&demo_2_door_data,
|
||||
&demo_3_door_data,
|
||||
&demo_4_door_data,
|
||||
&demo_5_door_data
|
||||
};
|
||||
static Door_data_c* l_demo_door_data_table[mTD_TITLE_DEMO_NUM] = { &demo_1_door_data, &demo_2_door_data,
|
||||
&demo_3_door_data, &demo_4_door_data,
|
||||
&demo_5_door_data };
|
||||
|
||||
#define DEMO_NPC(name, bx, bz, utx, utz) { NPC_##name, (bx), (bz), (utx), (utz) }
|
||||
#define DEMO_NPC(name, bx, bz, utx, utz) \
|
||||
{ NPC_##name, (bx), (bz), (utx), (utz) }
|
||||
static mNpc_demo_npc_c demo_npc_list[] = {
|
||||
DEMO_NPC(BOB, 1, 2, 3, 7),
|
||||
DEMO_NPC(PAOLO, 1, 2, 8, 11),
|
||||
DEMO_NPC(VESTA, 1, 4, 12, 11),
|
||||
DEMO_NPC(JOEY, 2, 3, 5, 6),
|
||||
DEMO_NPC(LOBO, 2, 3, 4, 12),
|
||||
DEMO_NPC(CARRIE, 3, 5, 11, 5),
|
||||
DEMO_NPC(TANK, 4, 3, 3, 12),
|
||||
DEMO_NPC(BUZZ, 4, 4, 3, 4),
|
||||
DEMO_NPC(RASHER, 4, 4, 12, 13),
|
||||
DEMO_NPC(BIFF, 4, 6, 5, 6),
|
||||
DEMO_NPC(SAMSON, 5, 2, 12, 4),
|
||||
DEMO_NPC(JANE, 5, 2, 9, 11),
|
||||
DEMO_NPC(TYBALT, 5, 4, 11, 4),
|
||||
/* @BUG - mNpc_SetAnimalTitleDemo uses ANIMAL_NUM_MAX (15) but only 14 are set */
|
||||
#ifndef BUGFIXES
|
||||
DEMO_NPC(CUBE, 5, 5, 5, 11)
|
||||
#else
|
||||
DEMO_NPC(CUBE, 5, 5, 5, 11),
|
||||
{ EMPTY_NO, 0, 0, 0, 0 }
|
||||
#endif
|
||||
DEMO_NPC(BOB, 1, 2, 3, 7), DEMO_NPC(PAOLO, 1, 2, 8, 11), DEMO_NPC(VESTA, 1, 4, 12, 11),
|
||||
DEMO_NPC(JOEY, 2, 3, 5, 6), DEMO_NPC(LOBO, 2, 3, 4, 12), DEMO_NPC(CARRIE, 3, 5, 11, 5),
|
||||
DEMO_NPC(TANK, 4, 3, 3, 12), DEMO_NPC(BUZZ, 4, 4, 3, 4), DEMO_NPC(RASHER, 4, 4, 12, 13),
|
||||
DEMO_NPC(BIFF, 4, 6, 5, 6), DEMO_NPC(SAMSON, 5, 2, 12, 4), DEMO_NPC(JANE, 5, 2, 9, 11),
|
||||
DEMO_NPC(TYBALT, 5, 4, 11, 4),
|
||||
/* @BUG - mNpc_SetAnimalTitleDemo uses ANIMAL_NUM_MAX (15) but only 14 are set */
|
||||
#ifndef BUGFIXES
|
||||
DEMO_NPC(CUBE, 5, 5, 5, 11)
|
||||
#else
|
||||
DEMO_NPC(CUBE, 5, 5, 5, 11), { EMPTY_NO, 0, 0, 0, 0 }
|
||||
#endif
|
||||
};
|
||||
|
||||
static int demo_npc_num = sizeof(demo_npc_list) / sizeof(mNpc_demo_npc_c);
|
||||
|
||||
static int set_npc_4_title_demo(GAME_TRADEMARK* trademark) {
|
||||
Animal_c* animals = Save_Get(animals);
|
||||
|
||||
mNpc_SetAnimalTitleDemo(demo_npc_list, animals, (GAME*)trademark);
|
||||
mNpc_SetNpcList(Common_Get(npclist), animals, demo_npc_num, 0);
|
||||
Animal_c* animals = Save_Get(animals);
|
||||
|
||||
return demo_npc_num;
|
||||
mNpc_SetAnimalTitleDemo(demo_npc_list, animals, (GAME*)trademark);
|
||||
mNpc_SetNpcList(Common_Get(npclist), animals, demo_npc_num, 0);
|
||||
|
||||
return demo_npc_num;
|
||||
}
|
||||
|
||||
typedef struct tradeday_s {
|
||||
lbRTC_month_t month;
|
||||
lbRTC_day_t day;
|
||||
lbRTC_hour_t hour;
|
||||
s16 weather;
|
||||
lbRTC_month_t month;
|
||||
lbRTC_day_t day;
|
||||
lbRTC_hour_t hour;
|
||||
s16 weather;
|
||||
} mTM_tradeday_c;
|
||||
|
||||
static void mTM_demotime_set(int title_no) {
|
||||
static mTM_tradeday_c tradeday_table[] = {
|
||||
{ lbRTC_APRIL, 6, 13, mEnv_WEATHER_SAKURA }, /* April 6th @ 1pm, Cherry Blossoms */
|
||||
{ lbRTC_JUNE, 16, 13, mEnv_WEATHER_RAIN }, /* June 16th @ 1pm, Raining */
|
||||
{ lbRTC_AUGUST, 1, 6, mEnv_WEATHER_CLEAR }, /* August 1st @ 6am, Clear */
|
||||
{ lbRTC_NOVEMBER, 1, 16, mEnv_WEATHER_CLEAR }, /* November 1st @ 4pm, Clear */
|
||||
{ lbRTC_FEBRUARY, 1, 2, mEnv_WEATHER_SNOW } /* February 1st @ 2am, Snowing */
|
||||
};
|
||||
static mTM_tradeday_c tradeday_table[] = {
|
||||
{ lbRTC_APRIL, 6, 13, mEnv_WEATHER_SAKURA }, /* April 6th @ 1pm, Cherry Blossoms */
|
||||
{ lbRTC_JUNE, 16, 13, mEnv_WEATHER_RAIN }, /* June 16th @ 1pm, Raining */
|
||||
{ lbRTC_AUGUST, 1, 6, mEnv_WEATHER_CLEAR }, /* August 1st @ 6am, Clear */
|
||||
{ lbRTC_NOVEMBER, 1, 16, mEnv_WEATHER_CLEAR }, /* November 1st @ 4pm, Clear */
|
||||
{ lbRTC_FEBRUARY, 1, 2, mEnv_WEATHER_SNOW } /* February 1st @ 2am, Snowing */
|
||||
};
|
||||
|
||||
Common_Set(time.rtc_enabled, FALSE);
|
||||
Common_Set(time.rtc_time.year, GAME_YEAR_MIN + 1);
|
||||
Common_Set(time.rtc_time.min, 0);
|
||||
Common_Set(time.rtc_enabled, FALSE);
|
||||
Common_Set(time.rtc_time.year, GAME_YEAR_MIN + 1);
|
||||
Common_Set(time.rtc_time.min, 0);
|
||||
|
||||
if (title_no != 0) {
|
||||
Common_Set(time.rtc_time.month, tradeday_table[(title_no - 1)].month);
|
||||
Common_Set(time.rtc_time.day, tradeday_table[(title_no - 1)].day);
|
||||
Common_Set(time.rtc_time.hour, tradeday_table[(title_no - 1)].hour);
|
||||
Common_Set(weather, tradeday_table[(title_no - 1)].weather);
|
||||
}
|
||||
if (title_no != 0) {
|
||||
Common_Set(time.rtc_time.month, tradeday_table[(title_no - 1)].month);
|
||||
Common_Set(time.rtc_time.day, tradeday_table[(title_no - 1)].day);
|
||||
Common_Set(time.rtc_time.hour, tradeday_table[(title_no - 1)].hour);
|
||||
Common_Set(weather, tradeday_table[(title_no - 1)].weather);
|
||||
}
|
||||
}
|
||||
|
||||
static void trademark_goto_demo_scene(GAME_TRADEMARK* trademark) {
|
||||
int demo_no;
|
||||
int i;
|
||||
Private_c* n_private;
|
||||
Save_t* save;
|
||||
Private_c* private;
|
||||
int demo_no;
|
||||
int i;
|
||||
Private_c* n_private;
|
||||
Save_t* save;
|
||||
Private_c* private;
|
||||
|
||||
save = Common_GetPointer(save.save);
|
||||
mCPk_InitPak(0);
|
||||
n_private = Save_Get(private);
|
||||
Common_Set(now_private, n_private);
|
||||
save = Common_GetPointer(save.save);
|
||||
mCPk_InitPak(0);
|
||||
n_private = Save_Get(private_data);
|
||||
Common_Set(now_private, n_private);
|
||||
|
||||
if (mFRm_CheckSaveData() == FALSE) {
|
||||
bzero(save, sizeof(Save_t));
|
||||
mFRm_ClearSaveCheckData(Save_GetPointer(save_check));
|
||||
if (mFRm_CheckSaveData() == FALSE) {
|
||||
bzero(save, sizeof(Save_t));
|
||||
mFRm_ClearSaveCheckData(Save_GetPointer(save_check));
|
||||
|
||||
private = n_private;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mPr_ClearPrivateInfo(private);
|
||||
private++;
|
||||
private = n_private;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
mPr_ClearPrivateInfo(private);
|
||||
private++;
|
||||
}
|
||||
|
||||
Save_Set(land_info.exists, TRUE);
|
||||
Common_Set(house_owner_name, RSV_NO);
|
||||
Common_Set(last_field_id, -1);
|
||||
}
|
||||
|
||||
Save_Set(land_info.exists, TRUE);
|
||||
Common_Set(house_owner_name, RSV_NO);
|
||||
Common_Set(last_field_id, -1);
|
||||
}
|
||||
mEv_ClearEventInfo();
|
||||
|
||||
mEv_ClearEventInfo();
|
||||
demo_no = mEv_CheckTitleDemo();
|
||||
if (demo_no > 0) {
|
||||
Door_data_c* demo_door_data = l_demo_door_data_table[demo_no - 1];
|
||||
|
||||
demo_no = mEv_CheckTitleDemo();
|
||||
if (demo_no > 0) {
|
||||
Door_data_c* demo_door_data = l_demo_door_data_table[demo_no - 1];
|
||||
Common_Set(door_data, *demo_door_data);
|
||||
Common_Set(door_data.next_scene_id, demo_door_data->next_scene_id + 1); // go to next demo scene
|
||||
mTM_demotime_set(demo_no); // set demo date, time, and weather
|
||||
mPr_RandomSetPlayerData_title_demo(); // randomize player data
|
||||
set_npc_4_title_demo(trademark); // set animals in the demo
|
||||
Common_Set(transition.wipe_type, 3);
|
||||
}
|
||||
|
||||
Common_Set(door_data, *demo_door_data);
|
||||
Common_Set(door_data.next_scene_id, demo_door_data->next_scene_id + 1); // go to next demo scene
|
||||
mTM_demotime_set(demo_no); // set demo date, time, and weather
|
||||
mPr_RandomSetPlayerData_title_demo(); // randomize player data
|
||||
set_npc_4_title_demo(trademark); // set animals in the demo
|
||||
Common_Set(transition.wipe_type, 3);
|
||||
}
|
||||
|
||||
Save_Set(scene_no, SCENE_TITLE_DEMO);
|
||||
mTM_set_season();
|
||||
Common_Set(submenu_disabled, TRUE);
|
||||
GAME_GOTO_NEXT((GAME*)trademark, play, PLAY);
|
||||
Save_Set(scene_no, SCENE_TITLE_DEMO);
|
||||
mTM_set_season();
|
||||
Common_Set(submenu_disabled, TRUE);
|
||||
GAME_GOTO_NEXT((GAME*)trademark, play, PLAY);
|
||||
}
|
||||
|
||||
static void nintendo_logo_move(GAME_TRADEMARK* trademark) {
|
||||
int timer;
|
||||
int alpha2;
|
||||
if (trademark->stage == 2) {
|
||||
alpha2 = trademark->alpha2;
|
||||
alpha2 += 0x880;
|
||||
if (alpha2 >= 0xFF00) {
|
||||
trademark->stage = 4;
|
||||
alpha2 = 0xFF00;
|
||||
}
|
||||
int timer;
|
||||
int alpha2;
|
||||
if (trademark->stage == 2) {
|
||||
alpha2 = trademark->alpha2;
|
||||
alpha2 += 0x880;
|
||||
if (alpha2 >= 0xFF00) {
|
||||
trademark->stage = 4;
|
||||
alpha2 = 0xFF00;
|
||||
}
|
||||
|
||||
trademark->alpha2 = alpha2;
|
||||
}
|
||||
else if (trademark->stage == 4) {
|
||||
if (trademark->logo_timer == 0) {
|
||||
timer = 0;
|
||||
}
|
||||
else {
|
||||
timer = --trademark->logo_timer;
|
||||
}
|
||||
trademark->alpha2 = alpha2;
|
||||
} else if (trademark->stage == 4) {
|
||||
if (trademark->logo_timer == 0) {
|
||||
timer = 0;
|
||||
} else {
|
||||
timer = --trademark->logo_timer;
|
||||
}
|
||||
|
||||
if (timer == 0) {
|
||||
trademark->stage = 3;
|
||||
if (timer == 0) {
|
||||
trademark->stage = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void nintendo_logo_draw(GAME_TRADEMARK* trademark) {
|
||||
Gfx* gfx;
|
||||
GRAPH* g = trademark->game.graph;
|
||||
u8 a;
|
||||
Gfx* gfx;
|
||||
GRAPH* g = trademark->game.graph;
|
||||
u8 a;
|
||||
|
||||
OPEN_DISP(g);
|
||||
nintendo_logo_move(trademark);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
a = trademark->alpha2 >> 8;
|
||||
make_dl_nintendo_logo(&gfx, a);
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(g);
|
||||
OPEN_DISP(g);
|
||||
nintendo_logo_move(trademark);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
a = trademark->alpha2 >> 8;
|
||||
make_dl_nintendo_logo(&gfx, a);
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(g);
|
||||
}
|
||||
|
||||
static void trademark_cancel(GAME_TRADEMARK* trademark) {
|
||||
if (trademark->cancel != FALSE) {
|
||||
return;
|
||||
}
|
||||
if (trademark->cancel != FALSE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (trademark->stage != 4) {
|
||||
return;
|
||||
}
|
||||
if (trademark->stage != 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Common_Get(pad_connected) == FALSE) {
|
||||
return;
|
||||
}
|
||||
if (Common_Get(pad_connected) == FALSE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((gamePT->pads[0].on.button & BUTTON_START) != BUTTON_START) {
|
||||
return;
|
||||
}
|
||||
if ((gamePT->pads[0].on.button & BUTTON_START) != BUTTON_START) {
|
||||
return;
|
||||
}
|
||||
|
||||
trademark->cancel = TRUE;
|
||||
trademark->cancel = TRUE;
|
||||
}
|
||||
|
||||
static void trademark_move(GAME_TRADEMARK* trademark) {
|
||||
static u8 s_titlebgm[mTD_TITLE_DEMO_NUM] = { 83, 84, 85, 86, 87 }; // TODO: convert to enum/definitions
|
||||
static u8 s_titlebgm[mTD_TITLE_DEMO_NUM] = { 83, 84, 85, 86, 87 }; // TODO: convert to enum/definitions
|
||||
|
||||
if (trademark->stage == 0) {
|
||||
int titledemo_no = mTD_get_titledemo_no();
|
||||
mBGMPsComp_make_ps_lost_fanfare(s_titlebgm[titledemo_no], 360);
|
||||
trademark->alpha = 0;
|
||||
trademark->stage = 1;
|
||||
}
|
||||
|
||||
if (trademark->stage == 1) {
|
||||
int move_timer;
|
||||
if (trademark->move_timer == 0) {
|
||||
move_timer = 0;
|
||||
}
|
||||
else {
|
||||
move_timer = --trademark->move_timer;
|
||||
if (trademark->stage == 0) {
|
||||
int titledemo_no = mTD_get_titledemo_no();
|
||||
mBGMPsComp_make_ps_lost_fanfare(s_titlebgm[titledemo_no], 360);
|
||||
trademark->alpha = 0;
|
||||
trademark->stage = 1;
|
||||
}
|
||||
|
||||
if (move_timer == 0) {
|
||||
trademark->stage = 2;
|
||||
}
|
||||
}
|
||||
if (trademark->stage == 1) {
|
||||
int move_timer;
|
||||
if (trademark->move_timer == 0) {
|
||||
move_timer = 0;
|
||||
} else {
|
||||
move_timer = --trademark->move_timer;
|
||||
}
|
||||
|
||||
if (trademark->stage == 3 || trademark->cancel) {
|
||||
if (trademark->alpha < 0xFF00) {
|
||||
trademark->alpha += 0x880;
|
||||
if (move_timer == 0) {
|
||||
trademark->stage = 2;
|
||||
}
|
||||
}
|
||||
|
||||
if (trademark->check != TRUE) {
|
||||
trademark->check = TRUE;
|
||||
}
|
||||
if (trademark->stage == 3 || trademark->cancel) {
|
||||
if (trademark->alpha < 0xFF00) {
|
||||
trademark->alpha += 0x880;
|
||||
}
|
||||
|
||||
if (trademark->alpha >= 0xFF00 && trademark->check == TRUE) {
|
||||
trademark->alpha = 0xFF00;
|
||||
trademark->stage = 5;
|
||||
if (trademark->check != TRUE) {
|
||||
trademark->check = TRUE;
|
||||
}
|
||||
|
||||
if (trademark->alpha >= 0xFF00 && trademark->check == TRUE) {
|
||||
trademark->alpha = 0xFF00;
|
||||
trademark->stage = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void trademark_draw(GAME_TRADEMARK* trademark) {
|
||||
GRAPH* g = trademark->game.graph;
|
||||
Gfx* gfx;
|
||||
|
||||
OPEN_DISP(g);
|
||||
GRAPH* g = trademark->game.graph;
|
||||
Gfx* gfx;
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 0, 0);
|
||||
DisplayList_initialize(g, 0, 0, 0, NULL);
|
||||
if (mTR_first_flag == FALSE) {
|
||||
if (trademark->stage >= 2) {
|
||||
nintendo_logo_draw(trademark);
|
||||
OPEN_DISP(g);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, 0, 0);
|
||||
DisplayList_initialize(g, 0, 0, 0, NULL);
|
||||
if (mTR_first_flag == FALSE) {
|
||||
if (trademark->stage >= 2) {
|
||||
nintendo_logo_draw(trademark);
|
||||
}
|
||||
|
||||
gfx = NOW_POLY_XLU_DISP;
|
||||
fade_black_draw(&gfx, trademark->alpha >> 8);
|
||||
SET_POLY_XLU_DISP(gfx);
|
||||
}
|
||||
|
||||
gfx = NOW_POLY_XLU_DISP;
|
||||
fade_black_draw(&gfx, trademark->alpha >> 8);
|
||||
SET_POLY_XLU_DISP(gfx);
|
||||
}
|
||||
|
||||
CLOSE_DISP(g);
|
||||
CLOSE_DISP(g);
|
||||
}
|
||||
|
||||
static void trademark_main(GAME* game) {
|
||||
GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game;
|
||||
GRAPH* g;
|
||||
GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game;
|
||||
GRAPH* g;
|
||||
|
||||
fqrand(); /* increment qrand seed every frame */
|
||||
trademark_cancel(trademark);
|
||||
trademark_move(trademark);
|
||||
trademark_draw(trademark);
|
||||
fqrand(); /* increment qrand seed every frame */
|
||||
trademark_cancel(trademark);
|
||||
trademark_move(trademark);
|
||||
trademark_draw(trademark);
|
||||
|
||||
g = game->graph;
|
||||
game_debug_draw_last(game, g);
|
||||
game_draw_last(g);
|
||||
g = game->graph;
|
||||
game_debug_draw_last(game, g);
|
||||
game_draw_last(g);
|
||||
|
||||
if (trademark->stage == 5) {
|
||||
trademark->stage = 0;
|
||||
trademark_goto_demo_scene(trademark);
|
||||
mTR_first_flag = FALSE;
|
||||
}
|
||||
if (trademark->stage == 5) {
|
||||
trademark->stage = 0;
|
||||
trademark_goto_demo_scene(trademark);
|
||||
mTR_first_flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
extern void trademark_cleanup(GAME* game) {
|
||||
GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game;
|
||||
mHm_hs_c* home = Save_Get(homes);
|
||||
int i;
|
||||
GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game;
|
||||
mHm_hs_c* home = Save_Get(homes);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
home->outlook_pal = i;
|
||||
home->next_outlook_pal = i;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
home->outlook_pal = i;
|
||||
home->next_outlook_pal = i;
|
||||
|
||||
mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE);
|
||||
home++;
|
||||
}
|
||||
mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE);
|
||||
home++;
|
||||
}
|
||||
|
||||
JW_SetLogoMode(0);
|
||||
SoftResetEnable = TRUE;
|
||||
JW_SetLogoMode(0);
|
||||
SoftResetEnable = TRUE;
|
||||
}
|
||||
|
||||
extern void trademark_init(GAME* game) {
|
||||
GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game;
|
||||
GRAPH* g = game->graph;
|
||||
GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game;
|
||||
GRAPH* g = game->graph;
|
||||
|
||||
common_data_reinit();
|
||||
mFI_SetClimate(mFI_CLIMATE_0);
|
||||
game->exec = &trademark_main;
|
||||
game->cleanup = &trademark_cleanup;
|
||||
initView(&trademark->view, g);
|
||||
new_Matrix(game);
|
||||
trademark->alpha = 0xFF00;
|
||||
trademark->alpha2 = 0;
|
||||
trademark->logo_timer = 60;
|
||||
trademark->move_timer = 16;
|
||||
trademark->unused_254 = 0;
|
||||
trademark->unused_210 = 0;
|
||||
trademark->stage = 0;
|
||||
trademark->unused_200.x = 0.0f;
|
||||
trademark->unused_200.y = 0.0f;
|
||||
trademark->unused_200.z = 0.0f;
|
||||
trademark->unused_20c = 0.5f;
|
||||
trademark->unused_25a62 = 0;
|
||||
trademark->unused_25a64 = 5072;
|
||||
trademark->unused_25a67 = 0;
|
||||
trademark->cancel = FALSE;
|
||||
trademark->check = FALSE;
|
||||
common_data_reinit();
|
||||
mFI_SetClimate(mFI_CLIMATE_0);
|
||||
game->exec = &trademark_main;
|
||||
game->cleanup = &trademark_cleanup;
|
||||
initView(&trademark->view, g);
|
||||
new_Matrix(game);
|
||||
trademark->alpha = 0xFF00;
|
||||
trademark->alpha2 = 0;
|
||||
trademark->logo_timer = 60;
|
||||
trademark->move_timer = 16;
|
||||
trademark->unused_254 = 0;
|
||||
trademark->unused_210 = 0;
|
||||
trademark->stage = 0;
|
||||
trademark->unused_200.x = 0.0f;
|
||||
trademark->unused_200.y = 0.0f;
|
||||
trademark->unused_200.z = 0.0f;
|
||||
trademark->unused_20c = 0.5f;
|
||||
trademark->unused_25a62 = 0;
|
||||
trademark->unused_25a64 = 5072;
|
||||
trademark->unused_25a67 = 0;
|
||||
trademark->cancel = FALSE;
|
||||
trademark->check = FALSE;
|
||||
|
||||
if (mTR_first_flag) {
|
||||
trademark->stage = 5;
|
||||
}
|
||||
if (mTR_first_flag) {
|
||||
trademark->stage = 5;
|
||||
}
|
||||
|
||||
SetGameFrame(1);
|
||||
viBlack(FALSE);
|
||||
JW_SetLogoMode(1);
|
||||
mMsg_aram_init();
|
||||
SetGameFrame(1);
|
||||
viBlack(FALSE);
|
||||
JW_SetLogoMode(1);
|
||||
mMsg_aram_init();
|
||||
|
||||
Common_Set(player_no, 0);
|
||||
Common_Set(player_data_mode, 0);
|
||||
Common_Set(scene_from_title_demo, -1);
|
||||
mNpc_ClearCacheName();
|
||||
mNpc_ClearInAnimal();
|
||||
mNpc_FirstClearGoodbyMail();
|
||||
mQst_ClearGrabItemInfo();
|
||||
mNpc_ClearIslandNpcRoomData();
|
||||
mCD_InitAll();
|
||||
mISL_ClearKeepIsland();
|
||||
mBI_ct();
|
||||
mFont_ct();
|
||||
mBGMPsComp_scene_mode(0);
|
||||
mVibctl_init0();
|
||||
mFRm_clear_err_info();
|
||||
mEv_SetTitleDemo(mTD_demono_get());
|
||||
Common_Set(player_no, 0);
|
||||
Common_Set(player_data_mode, 0);
|
||||
Common_Set(scene_from_title_demo, -1);
|
||||
mNpc_ClearCacheName();
|
||||
mNpc_ClearInAnimal();
|
||||
mNpc_FirstClearGoodbyMail();
|
||||
mQst_ClearGrabItemInfo();
|
||||
mNpc_ClearIslandNpcRoomData();
|
||||
mCD_InitAll();
|
||||
mISL_ClearKeepIsland();
|
||||
mBI_ct();
|
||||
mFont_ct();
|
||||
mBGMPsComp_scene_mode(0);
|
||||
mVibctl_init0();
|
||||
mFRm_clear_err_info();
|
||||
mEv_SetTitleDemo(mTD_demono_get());
|
||||
}
|
||||
|
||||
+193
-221
@@ -24,122 +24,115 @@ static u8 l_zaitaku_str[9] = { 0x3C, 0xEC, 0x01, 0x0F, 0x07, 0x10, 0xCA, 0x02, 0
|
||||
static u8 l_yosokara_str[10] = { 0x60, 0x0E, 0x05, 0x7B, 0x00, 0x0E, 0xF7, 0x15, 0x06, 0x0F };
|
||||
|
||||
static void player_select_game_data_init(GAME_PLAYER_SELECT* player_select) {
|
||||
int player_no = player_select->player_no;
|
||||
mFI_ClearFieldData();
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_no, mSDI_INIT_MODE_NEW, mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
}
|
||||
int player_no = player_select->player_no;
|
||||
mFI_ClearFieldData();
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_no, mSDI_INIT_MODE_NEW, mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_game_data_init_save(GAME_PLAYER_SELECT* player_select) {
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_FROM, mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
}
|
||||
else {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE;
|
||||
}
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_FROM,
|
||||
mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
} else {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE;
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_game_data_init_new_player(GAME_PLAYER_SELECT* player_select) {
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_NEW_PLAYER, mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
}
|
||||
else {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE;
|
||||
}
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_NEW_PLAYER,
|
||||
mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
} else {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE;
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_game_data_init_pak(GAME_PLAYER_SELECT* player_select) {
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_PAK, mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
}
|
||||
else {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_PAK;
|
||||
}
|
||||
if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_PAK,
|
||||
mSDI_MALLOC_FLAG_GAME) == TRUE) {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS;
|
||||
} else {
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_PAK;
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_game_data_init_err(GAME_PLAYER_SELECT* player_select) {
|
||||
player_select->mode = PLAYER_SELECT_MODE_SELECTION;
|
||||
player_select->mode = PLAYER_SELECT_MODE_SELECTION;
|
||||
}
|
||||
|
||||
static PLAYER_SELECT_INIT_PROC l_init_proc[mSDI_INIT_MODE_NUM] = {
|
||||
&player_select_game_data_init,
|
||||
&player_select_game_data_init_new_player,
|
||||
&player_select_game_data_init_save,
|
||||
&player_select_game_data_init_pak,
|
||||
&player_select_game_data_init_err
|
||||
&player_select_game_data_init, &player_select_game_data_init_new_player, &player_select_game_data_init_save,
|
||||
&player_select_game_data_init_pak, &player_select_game_data_init_err
|
||||
};
|
||||
|
||||
static void player_select_init_after(GAME_PLAYER_SELECT* player_select) {
|
||||
mSDI_StartInitAfter((GAME*)player_select, FALSE, mSDI_MALLOC_FLAG_GAME);
|
||||
mSDI_StartInitAfter((GAME*)player_select, FALSE, mSDI_MALLOC_FLAG_GAME);
|
||||
}
|
||||
|
||||
static void player_select_next_mode(int* mode, int max) {
|
||||
(*mode)++;
|
||||
if (*mode >= max) {
|
||||
*mode = 0;
|
||||
}
|
||||
(*mode)++;
|
||||
if (*mode >= max) {
|
||||
*mode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_back_mode(int* mode, int max) {
|
||||
(*mode)--;
|
||||
if (*mode < 0) {
|
||||
*mode = max - 1;
|
||||
}
|
||||
(*mode)--;
|
||||
if (*mode < 0) {
|
||||
*mode = max - 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_move_main(GAME_PLAYER_SELECT* player_select) {
|
||||
int mode = player_select->mode;
|
||||
int mode = player_select->mode;
|
||||
|
||||
if (player_select->err_no == PLAYER_SELECT_INIT_ERR_NONE) {
|
||||
if (chkTrigger(BUTTON_A)) {
|
||||
int player_no = player_select->player_no;
|
||||
if (mode == PLAYER_SELECT_MODE_SELECTION) {
|
||||
player_select->mode = PLAYER_SELECT_MODE_PLAY;
|
||||
}
|
||||
if (player_select->err_no == PLAYER_SELECT_INIT_ERR_NONE) {
|
||||
if (chkTrigger(BUTTON_A)) {
|
||||
int player_no = player_select->player_no;
|
||||
if (mode == PLAYER_SELECT_MODE_SELECTION) {
|
||||
player_select->mode = PLAYER_SELECT_MODE_PLAY;
|
||||
}
|
||||
|
||||
if (player_select->mode == PLAYER_SELECT_MODE_PLAY) {
|
||||
(*player_select->init_procs[player_no])(player_select);
|
||||
}
|
||||
if (player_select->mode == PLAYER_SELECT_MODE_PLAY) {
|
||||
(*player_select->init_procs[player_no])(player_select);
|
||||
}
|
||||
}
|
||||
|
||||
if (chkTrigger(BUTTON_DDOWN) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) {
|
||||
if (player_select->land_exist == TRUE) {
|
||||
player_select_next_mode(&player_select->player_no, SELECT_PLAYER_NUM);
|
||||
} else {
|
||||
player_select_next_mode(&player_select->player_no, PLAYER_NUM);
|
||||
}
|
||||
}
|
||||
|
||||
if (chkTrigger(BUTTON_DUP) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) {
|
||||
if (player_select->land_exist == TRUE) {
|
||||
player_select_back_mode(&player_select->player_no, SELECT_PLAYER_NUM);
|
||||
} else {
|
||||
player_select_back_mode(&player_select->player_no, PLAYER_NUM);
|
||||
}
|
||||
}
|
||||
} else if (player_select->err_no == PLAYER_SELECT_INIT_ERR_SUCCESS) {
|
||||
player_select_init_after(player_select);
|
||||
GAME_GOTO_NEXT((GAME*)player_select, select, SELECT);
|
||||
} else {
|
||||
Common_Set(scene_from_title_demo, -1);
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE;
|
||||
player_select->mode = PLAYER_SELECT_MODE_SELECTION;
|
||||
}
|
||||
|
||||
if (chkTrigger(BUTTON_DDOWN) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) {
|
||||
if (player_select->land_exist == TRUE) {
|
||||
player_select_next_mode(&player_select->player_no, SELECT_PLAYER_NUM);
|
||||
}
|
||||
else {
|
||||
player_select_next_mode(&player_select->player_no, PLAYER_NUM);
|
||||
}
|
||||
}
|
||||
|
||||
if (chkTrigger(BUTTON_DUP) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) {
|
||||
if (player_select->land_exist == TRUE) {
|
||||
player_select_back_mode(&player_select->player_no, SELECT_PLAYER_NUM);
|
||||
}
|
||||
else {
|
||||
player_select_back_mode(&player_select->player_no, PLAYER_NUM);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (player_select->err_no == PLAYER_SELECT_INIT_ERR_SUCCESS) {
|
||||
player_select_init_after(player_select);
|
||||
GAME_GOTO_NEXT((GAME*)player_select, select, SELECT);
|
||||
}
|
||||
else {
|
||||
Common_Set(scene_from_title_demo, -1);
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE;
|
||||
player_select->mode = PLAYER_SELECT_MODE_SELECTION;
|
||||
}
|
||||
}
|
||||
|
||||
static void str_add_word(u8* dst, const u8* word0, const u8* word1, int word0_len, int word1_len) {
|
||||
for (word0_len; word0_len != 0; word0_len--) {
|
||||
*dst++ = *word0++;
|
||||
}
|
||||
for (word0_len; word0_len != 0; word0_len--) {
|
||||
*dst++ = *word0++;
|
||||
}
|
||||
|
||||
for (word1_len; word1_len != 0; word1_len--) {
|
||||
*dst++ = *word1++;
|
||||
}
|
||||
for (word1_len; word1_len != 0; word1_len--) {
|
||||
*dst++ = *word1++;
|
||||
}
|
||||
}
|
||||
|
||||
static int l_ps_white_color[3] = { 250, 220, 100 };
|
||||
@@ -149,186 +142,165 @@ static int l_ps_select_color[3] = { 200, 55, 55 };
|
||||
static u8 _debug_player_select[10] = { 0xE4, 0xBA, 0x90, 0xB4, 0x90, 0x20, 0x0D, 0xC3, 0x0F, 0x07 };
|
||||
|
||||
static void player_select_draw_title(GAME_PLAYER_SELECT* player_select) {
|
||||
mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)player_select,
|
||||
_debug_player_select, ARRAY_SIZE(_debug_player_select, u8),
|
||||
85.0f, 15.0f,
|
||||
200, 200, 200, 255,
|
||||
FALSE, TRUE, 0,
|
||||
1.2f, 1.2f,
|
||||
mFont_MODE_FONT
|
||||
);
|
||||
mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)player_select, _debug_player_select, ARRAY_SIZE(_debug_player_select, u8),
|
||||
85.0f, 15.0f, 200, 200, 200, 255, FALSE, TRUE, 0, 1.2f, 1.2f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
static void player_select_draw_player_no(GAME_PLAYER_SELECT* player_select) {
|
||||
u8 name_buf[8 + SELECT_NAME_LEN];
|
||||
u8 pre_str[8] = { 0xED, 0xCA, 0x02, 0x15, 0xC3, 0x20, 0x20, 0x20 };
|
||||
int player_no = player_select->player_no;
|
||||
int i;
|
||||
u8 name_buf[8 + SELECT_NAME_LEN];
|
||||
u8 pre_str[8] = { 0xED, 0xCA, 0x02, 0x15, 0xC3, 0x20, 0x20, 0x20 };
|
||||
int player_no = player_select->player_no;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
int* color;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
int* color;
|
||||
|
||||
/* create text */
|
||||
mem_clear(name_buf, ARRAY_SIZE(name_buf, u8), CHAR_SPACE);
|
||||
str_add_word(name_buf, pre_str, player_select->player_names[i], 8, SELECT_NAME_LEN);
|
||||
|
||||
/* set player no */
|
||||
name_buf[6] = (u8)i | CHAR_ZERO;
|
||||
/* create text */
|
||||
mem_clear(name_buf, ARRAY_SIZE(name_buf, u8), CHAR_SPACE);
|
||||
str_add_word(name_buf, pre_str, player_select->player_names[i], 8, SELECT_NAME_LEN);
|
||||
|
||||
color = (player_no == i) ? l_ps_select_color : l_ps_white_color;
|
||||
/* set player no */
|
||||
name_buf[6] = (u8)i | CHAR_ZERO;
|
||||
|
||||
mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)player_select,
|
||||
name_buf, ARRAY_SIZE(name_buf, u8),
|
||||
70.0f, 65.0f + 15.0f * i,
|
||||
color[0], color[1], color[2], 255,
|
||||
FALSE, TRUE, 0,
|
||||
0.8f, 0.8f,
|
||||
mFont_MODE_FONT
|
||||
);
|
||||
mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
color = (player_no == i) ? l_ps_select_color : l_ps_white_color;
|
||||
|
||||
mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)player_select, name_buf, ARRAY_SIZE(name_buf, u8), 70.0f,
|
||||
65.0f + 15.0f * i, color[0], color[1], color[2], 255, FALSE, TRUE, 0, 0.8f, 0.8f,
|
||||
mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
}
|
||||
|
||||
static void player_select_draw_yosokara(GAME_PLAYER_SELECT* player_select) {
|
||||
u8* name = player_select->player_names[PLAYER_NUM];
|
||||
int* color = (player_select->player_no == PLAYER_NUM) ? l_ps_select_color : l_ps_white_color;
|
||||
u8* name = player_select->player_names[PLAYER_NUM];
|
||||
int* color = (player_select->player_no == PLAYER_NUM) ? l_ps_select_color : l_ps_white_color;
|
||||
|
||||
mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)player_select,
|
||||
name, SELECT_NAME_LEN,
|
||||
70.0f, 65.0f + 15.0f * PLAYER_NUM,
|
||||
color[0], color[1], color[2], 255,
|
||||
FALSE, TRUE, 0,
|
||||
0.8f, 0.8f,
|
||||
mFont_MODE_FONT
|
||||
);
|
||||
mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)player_select, name, SELECT_NAME_LEN, 70.0f, 65.0f + 15.0f * PLAYER_NUM,
|
||||
color[0], color[1], color[2], 255, FALSE, TRUE, 0, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
static void player_select_draw_main(GAME_PLAYER_SELECT* player_select) {
|
||||
GRAPH* g = player_select->game.graph;
|
||||
GRAPH* g = player_select->game.graph;
|
||||
|
||||
OPEN_DISP(g);
|
||||
OPEN_DISP(g);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0);
|
||||
gSPSegment(NOW_FONT_DISP++, G_MWO_SEGMENT_0, 0);
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0);
|
||||
gSPSegment(NOW_FONT_DISP++, G_MWO_SEGMENT_0, 0);
|
||||
|
||||
DisplayList_initialize(g, 0, 0, 0, NULL);
|
||||
DisplayList_initialize(g, 0, 0, 0, NULL);
|
||||
|
||||
gDPPipeSync(NOW_POLY_OPA_DISP++);
|
||||
|
||||
CLOSE_DISP(g);
|
||||
gDPPipeSync(NOW_POLY_OPA_DISP++);
|
||||
|
||||
showView(&player_select->view, VIEW_UPDATE_ALL);
|
||||
player_select_draw_title(player_select);
|
||||
player_select_draw_player_no(player_select);
|
||||
player_select_draw_yosokara(player_select);
|
||||
CLOSE_DISP(g);
|
||||
|
||||
showView(&player_select->view, VIEW_UPDATE_ALL);
|
||||
player_select_draw_title(player_select);
|
||||
player_select_draw_player_no(player_select);
|
||||
player_select_draw_yosokara(player_select);
|
||||
}
|
||||
|
||||
static void player_select_main(GAME* game) {
|
||||
GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game;
|
||||
GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game;
|
||||
|
||||
player_select_move_main(player_select);
|
||||
player_select_draw_main(player_select);
|
||||
player_select_move_main(player_select);
|
||||
player_select_draw_main(player_select);
|
||||
|
||||
{
|
||||
GRAPH* g = game->graph;
|
||||
game_debug_draw_last(game, g);
|
||||
game_draw_last(g);
|
||||
}
|
||||
{
|
||||
GRAPH* g = game->graph;
|
||||
game_debug_draw_last(game, g);
|
||||
game_draw_last(g);
|
||||
}
|
||||
}
|
||||
|
||||
extern void player_select_cleanup(GAME* game) { }
|
||||
extern void player_select_cleanup(GAME* game) {
|
||||
}
|
||||
|
||||
extern void player_select_init(GAME* game) {
|
||||
GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game;
|
||||
GRAPH* g = game->graph;
|
||||
int i;
|
||||
|
||||
game->exec = &player_select_main;
|
||||
game->cleanup = &player_select_cleanup;
|
||||
GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game;
|
||||
GRAPH* g = game->graph;
|
||||
int i;
|
||||
|
||||
{
|
||||
View* view = &player_select->view;
|
||||
initView(view, g);
|
||||
view->flag = VIEW_UPDATE_ORTHOGRAPHIC;
|
||||
}
|
||||
game->exec = &player_select_main;
|
||||
game->cleanup = &player_select_cleanup;
|
||||
|
||||
new_Matrix(game);
|
||||
SetGameFrame(1);
|
||||
|
||||
player_select->player_no = 0;
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE;
|
||||
player_select->mode = PLAYER_SELECT_MODE_SELECTION;
|
||||
|
||||
for (i = 0; i < SELECT_PLAYER_NUM; i++) {
|
||||
int j;
|
||||
|
||||
for (j = 0; j < 6; j++) {
|
||||
player_select->player_names[i][j] = mitouroku_str[j];
|
||||
{
|
||||
View* view = &player_select->view;
|
||||
initView(view, g);
|
||||
view->flag = VIEW_UPDATE_ORTHOGRAPHIC;
|
||||
}
|
||||
|
||||
for (j = 6; j < SELECT_NAME_LEN; j++) {
|
||||
player_select->player_names[i][j] = CHAR_SPACE;
|
||||
}
|
||||
new_Matrix(game);
|
||||
SetGameFrame(1);
|
||||
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_NO_SAVE;
|
||||
}
|
||||
player_select->player_no = 0;
|
||||
player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE;
|
||||
player_select->mode = PLAYER_SELECT_MODE_SELECTION;
|
||||
|
||||
for (i = 0; i < LAND_NAME_SIZE; i++) {
|
||||
player_select->land_name[i] = CHAR_SPACE;
|
||||
}
|
||||
player_select->land_exist = FALSE;
|
||||
for (i = 0; i < SELECT_PLAYER_NUM; i++) {
|
||||
int j;
|
||||
|
||||
if (mFRm_CheckSaveData() == TRUE) {
|
||||
Private_c* private_p = Save_Get(private);
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
u8* name = player_select->player_names[i];
|
||||
|
||||
if (mPr_CheckPrivate(private_p) == TRUE) {
|
||||
mPr_CopyPlayerName(name, private_p->player_ID.player_name);
|
||||
|
||||
if (private_p->exists == FALSE) {
|
||||
mem_copy(name + PLAYER_NAME_LEN, l_gaishutu_str, 10);
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_OUT;
|
||||
for (j = 0; j < 6; j++) {
|
||||
player_select->player_names[i][j] = mitouroku_str[j];
|
||||
}
|
||||
else {
|
||||
mem_copy(name + PLAYER_NAME_LEN, l_zaitaku_str, 9);
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_HOME;
|
||||
}
|
||||
}
|
||||
else {
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_UNREGISTERED;
|
||||
}
|
||||
|
||||
private_p++;
|
||||
for (j = 6; j < SELECT_NAME_LEN; j++) {
|
||||
player_select->player_names[i][j] = CHAR_SPACE;
|
||||
}
|
||||
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_NO_SAVE;
|
||||
}
|
||||
|
||||
mLd_CopyLandName(player_select->land_name, Save_Get(land_info.name));
|
||||
player_select->land_exist = TRUE;
|
||||
}
|
||||
for (i = 0; i < LAND_NAME_SIZE; i++) {
|
||||
player_select->land_name[i] = CHAR_SPACE;
|
||||
}
|
||||
player_select->land_exist = FALSE;
|
||||
|
||||
for (i = 0; i < SELECT_PLAYER_NAME_EXTRA; i++) {
|
||||
player_select->player_names[PLAYER_NUM][i] = l_yosokara_str[i];
|
||||
}
|
||||
if (mFRm_CheckSaveData() == TRUE) {
|
||||
Private_c* private_p = Save_Get(private_data);
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
u8* name = player_select->player_names[i];
|
||||
|
||||
for (i = SELECT_PLAYER_NAME_EXTRA; i < SELECT_NAME_LEN; i++) {
|
||||
player_select->player_names[PLAYER_NUM][i] = CHAR_SPACE;
|
||||
}
|
||||
if (mPr_CheckPrivate(private_p) == TRUE) {
|
||||
mPr_CopyPlayerName(name, private_p->player_ID.player_name);
|
||||
|
||||
player_select->player_types[PLAYER_NUM] = PLAYER_SELECT_PLAYER_MODE_OUT;
|
||||
if (private_p->exists == FALSE) {
|
||||
mem_copy(name + PLAYER_NAME_LEN, l_gaishutu_str, 10);
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_OUT;
|
||||
} else {
|
||||
mem_copy(name + PLAYER_NAME_LEN, l_zaitaku_str, 9);
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_HOME;
|
||||
}
|
||||
} else {
|
||||
player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_UNREGISTERED;
|
||||
}
|
||||
|
||||
for (i = 0; i < SELECT_PLAYER_NUM; i++) {
|
||||
player_select->init_procs[i] = l_init_proc[player_select->player_types[i]];
|
||||
}
|
||||
private_p++;
|
||||
}
|
||||
|
||||
Common_Set(player_no, 0);
|
||||
Common_Set(player_data_mode, 0);
|
||||
Common_Set(scene_from_title_demo, -1);
|
||||
}
|
||||
mLd_CopyLandName(player_select->land_name, Save_Get(land_info.name));
|
||||
player_select->land_exist = TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < SELECT_PLAYER_NAME_EXTRA; i++) {
|
||||
player_select->player_names[PLAYER_NUM][i] = l_yosokara_str[i];
|
||||
}
|
||||
|
||||
for (i = SELECT_PLAYER_NAME_EXTRA; i < SELECT_NAME_LEN; i++) {
|
||||
player_select->player_names[PLAYER_NUM][i] = CHAR_SPACE;
|
||||
}
|
||||
|
||||
player_select->player_types[PLAYER_NUM] = PLAYER_SELECT_PLAYER_MODE_OUT;
|
||||
|
||||
for (i = 0; i < SELECT_PLAYER_NUM; i++) {
|
||||
player_select->init_procs[i] = l_init_proc[player_select->player_types[i]];
|
||||
}
|
||||
|
||||
Common_Set(player_no, 0);
|
||||
Common_Set(player_data_mode, 0);
|
||||
Common_Set(scene_from_title_demo, -1);
|
||||
}
|
||||
|
||||
@@ -182,7 +182,7 @@ static int sSC_CheckSaveData_Needlework() {
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
for (j = 0; j < mPr_ORIGINAL_DESIGN_COUNT; j++) {
|
||||
if (sSC_CheckOneOriginalData(Save_Get(private + i)->my_org + j) == FALSE) {
|
||||
if (sSC_CheckOneOriginalData(Save_Get(private_data + i)->my_org + j) == FALSE) {
|
||||
mFRm_ERRORLINE(348);
|
||||
return sSC_MYK_ERR_NEEDLEWORK;
|
||||
}
|
||||
|
||||
+158
-177
@@ -1,244 +1,225 @@
|
||||
static int sChk_lbRTC_ymd_c_NSW(lbRTC_ymd_c* ymd) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
if (ymd->day == 0 || ymd->day > 31) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
if (res == TRUE) {
|
||||
if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) {
|
||||
res = FALSE;
|
||||
if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) {
|
||||
res = TRUE;
|
||||
}
|
||||
else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month && ymd->day == mTM_rtcTime_ymd_clear_code.day) {
|
||||
res = FALSE;
|
||||
|
||||
if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
|
||||
if (ymd->day == 0 || ymd->day > 31) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
if (res == TRUE) {
|
||||
mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color);
|
||||
}
|
||||
}
|
||||
if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) {
|
||||
res = FALSE;
|
||||
} else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month &&
|
||||
ymd->day == mTM_rtcTime_ymd_clear_code.day) {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
if (res == TRUE) {
|
||||
mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color);
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_radiocard_NSW(Private_c* priv) {
|
||||
mPr_day_day_c* radiocard_p = &priv->radiocard;
|
||||
int res;
|
||||
mPr_day_day_c* radiocard_p = &priv->radiocard;
|
||||
int res;
|
||||
|
||||
if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) {
|
||||
mFRm_ERRORLINE(112);
|
||||
res = TRUE;
|
||||
}
|
||||
else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) {
|
||||
mFRm_ERRORLINE(121);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) {
|
||||
mFRm_ERRORLINE(112);
|
||||
res = TRUE;
|
||||
} else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) {
|
||||
mFRm_ERRORLINE(121);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_calendar_NSW(Private_c* priv) {
|
||||
int res;
|
||||
int res;
|
||||
|
||||
if (priv->calendar.edit > 1) {
|
||||
mFRm_ERRORLINE(143);
|
||||
res = TRUE;
|
||||
}
|
||||
else if (priv->calendar.pad_63 != 0) {
|
||||
mFRm_ERRORLINE(151);
|
||||
res = TRUE;
|
||||
}
|
||||
else if (
|
||||
(
|
||||
priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 ||
|
||||
priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER
|
||||
) &&
|
||||
(priv->calendar.year != 0 || priv->calendar.month != 0)
|
||||
) {
|
||||
mFRm_ERRORLINE(164);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
if (priv->calendar.edit > 1) {
|
||||
mFRm_ERRORLINE(143);
|
||||
res = TRUE;
|
||||
} else if (priv->calendar.pad_63 != 0) {
|
||||
mFRm_ERRORLINE(151);
|
||||
res = TRUE;
|
||||
} else if ((priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 ||
|
||||
priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER) &&
|
||||
(priv->calendar.year != 0 || priv->calendar.month != 0)) {
|
||||
mFRm_ERRORLINE(164);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_deposit_NSW(Private_c* priv) {
|
||||
int res;
|
||||
int deposit = priv->bank_account;
|
||||
int res;
|
||||
int deposit = priv->bank_account;
|
||||
|
||||
if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) {
|
||||
mFRm_ERRORLINE(184);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) {
|
||||
mFRm_ERRORLINE(184);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_nw_visitor_NSW(Private_c* priv) {
|
||||
mPr_day_day_c* nw_visitor_p = &priv->nw_visitor;
|
||||
int res;
|
||||
mPr_day_day_c* nw_visitor_p = &priv->nw_visitor;
|
||||
int res;
|
||||
|
||||
if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) {
|
||||
mFRm_ERRORLINE(204);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) {
|
||||
mFRm_ERRORLINE(204);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_my_org_no_table_NSW(Private_c* priv) {
|
||||
u8 my_org_no;
|
||||
int field = 0;
|
||||
int total = 0;
|
||||
u8* my_org_no_table = priv->my_org_no_table;
|
||||
int i;
|
||||
int res;
|
||||
u8 my_org_no;
|
||||
int field = 0;
|
||||
int total = 0;
|
||||
u8* my_org_no_table = priv->my_org_no_table;
|
||||
int i;
|
||||
int res;
|
||||
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
my_org_no = my_org_no_table[i];
|
||||
for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
|
||||
my_org_no = my_org_no_table[i];
|
||||
|
||||
if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) {
|
||||
return TRUE;
|
||||
if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
total += my_org_no;
|
||||
field |= (u16)(1 << my_org_no);
|
||||
}
|
||||
|
||||
total += my_org_no;
|
||||
field |= (u16)(1 << my_org_no);
|
||||
}
|
||||
if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) {
|
||||
mFRm_ERRORLINE(239);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) {
|
||||
mFRm_ERRORLINE(239);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_bridge_NSW() {
|
||||
PlusBridge_c* bridge = Save_GetPointer(bridge);
|
||||
PlusBridge_c* bridge = Save_GetPointer(bridge);
|
||||
|
||||
if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) {
|
||||
mFRm_ERRORLINE(259);
|
||||
return TRUE;
|
||||
}
|
||||
else if (bridge->exists || bridge->pending) {
|
||||
if (
|
||||
bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM ||
|
||||
bridge->block_z == 0 || bridge->block_z > FG_BLOCK_Z_NUM
|
||||
) {
|
||||
mFRm_ERRORLINE(271);
|
||||
return TRUE;
|
||||
if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) {
|
||||
mFRm_ERRORLINE(259);
|
||||
return TRUE;
|
||||
} else if (bridge->exists || bridge->pending) {
|
||||
if (bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM || bridge->block_z == 0 ||
|
||||
bridge->block_z > FG_BLOCK_Z_NUM) {
|
||||
mFRm_ERRORLINE(271);
|
||||
return TRUE;
|
||||
}
|
||||
} else if (bridge->block_x != 0 || bridge->block_z != 0) {
|
||||
mFRm_ERRORLINE(280);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (bridge->block_x != 0 || bridge->block_z != 0) {
|
||||
mFRm_ERRORLINE(280);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_fishRecord_NSW() {
|
||||
mFR_record_c* record;
|
||||
lbRTC_ymd_c ymd;
|
||||
int i;
|
||||
mFR_record_c* record;
|
||||
lbRTC_ymd_c ymd;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mFR_RECORD_NUM; i++) {
|
||||
record = Save_Get(fishRecord + i);
|
||||
mTM_set_renew_time(&ymd, &record->time);
|
||||
for (i = 0; i < mFR_RECORD_NUM; i++) {
|
||||
record = Save_Get(fishRecord + i);
|
||||
mTM_set_renew_time(&ymd, &record->time);
|
||||
|
||||
if (record->size < 0) {
|
||||
mFRm_ERRORLINE(307);
|
||||
return TRUE;
|
||||
if (record->size < 0) {
|
||||
mFRm_ERRORLINE(307);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) {
|
||||
mFRm_ERRORLINE(316);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) {
|
||||
mFRm_ERRORLINE(316);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_Anmret_NSW() {
|
||||
Anmret_c* anmret = Save_GetPointer(return_animal);
|
||||
int res;
|
||||
lbRTC_ymd_c ymd;
|
||||
Anmret_c* anmret = Save_GetPointer(return_animal);
|
||||
int res;
|
||||
lbRTC_ymd_c ymd;
|
||||
|
||||
if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) {
|
||||
mFRm_ERRORLINE(339);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
mTM_set_renew_time(&ymd, &anmret->renew_time);
|
||||
if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) {
|
||||
mFRm_ERRORLINE(339);
|
||||
res = TRUE;
|
||||
} else {
|
||||
mTM_set_renew_time(&ymd, &anmret->renew_time);
|
||||
|
||||
if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) {
|
||||
mFRm_ERRORLINE(349);
|
||||
res = TRUE;
|
||||
if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) {
|
||||
mFRm_ERRORLINE(349);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_LightHouse_NSW() {
|
||||
int res;
|
||||
int res;
|
||||
|
||||
if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) {
|
||||
mFRm_ERRORLINE(368);
|
||||
res = TRUE;
|
||||
}
|
||||
else {
|
||||
res = FALSE;
|
||||
}
|
||||
if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) {
|
||||
mFRm_ERRORLINE(368);
|
||||
res = TRUE;
|
||||
} else {
|
||||
res = FALSE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sChk_CheckSaveData_NSW() {
|
||||
int res = FALSE;
|
||||
int i;
|
||||
int res = FALSE;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
Private_c* priv = Save_Get(private) + i;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
Private_c* priv = Save_Get(private_data) + i;
|
||||
|
||||
res |= sCck_CheckSaveData_radiocard_NSW(priv);
|
||||
res |= sCck_CheckSaveData_calendar_NSW(priv);
|
||||
res |= sCck_CheckSaveData_deposit_NSW(priv);
|
||||
res |= sCck_CheckSaveData_nw_visitor_NSW(priv);
|
||||
res |= sCck_CheckSaveData_my_org_no_table_NSW(priv);
|
||||
}
|
||||
res |= sCck_CheckSaveData_radiocard_NSW(priv);
|
||||
res |= sCck_CheckSaveData_calendar_NSW(priv);
|
||||
res |= sCck_CheckSaveData_deposit_NSW(priv);
|
||||
res |= sCck_CheckSaveData_nw_visitor_NSW(priv);
|
||||
res |= sCck_CheckSaveData_my_org_no_table_NSW(priv);
|
||||
}
|
||||
|
||||
res |= sCck_CheckSaveData_bridge_NSW();
|
||||
res |= sCck_CheckSaveData_fishRecord_NSW();
|
||||
res |= sCck_CheckSaveData_Anmret_NSW();
|
||||
res |= sCck_CheckSaveData_LightHouse_NSW();
|
||||
res |= sCck_CheckSaveData_bridge_NSW();
|
||||
res |= sCck_CheckSaveData_fishRecord_NSW();
|
||||
res |= sCck_CheckSaveData_Anmret_NSW();
|
||||
res |= sCck_CheckSaveData_LightHouse_NSW();
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
+48
-75
@@ -1,105 +1,78 @@
|
||||
static int sCck_CheckSaveData_diary_body_YSD(Private_c* priv) {
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int sCCk_Check_ItemName(mActor_name_t item) {
|
||||
/* TODO: do not hardcode this */
|
||||
static s16 item1_kinds[ITEM1_CAT_NUM] = {
|
||||
255,
|
||||
3,
|
||||
91,
|
||||
39,
|
||||
254,
|
||||
48,
|
||||
66,
|
||||
66,
|
||||
7,
|
||||
10,
|
||||
54,
|
||||
15,
|
||||
95,
|
||||
44,
|
||||
1,
|
||||
3
|
||||
};
|
||||
/* TODO: do not hardcode this */
|
||||
static s16 item1_kinds[ITEM1_CAT_NUM] = { 255, 3, 91, 39, 254, 48, 66, 66, 7, 10, 54, 15, 95, 44, 1, 3 };
|
||||
|
||||
mActor_name_t item_name = (mActor_name_t)item;
|
||||
int item_type = ITEM_NAME_GET_TYPE(item_name);
|
||||
int res = FALSE;
|
||||
mActor_name_t item_name = (mActor_name_t)item;
|
||||
int item_type = ITEM_NAME_GET_TYPE(item_name);
|
||||
int res = FALSE;
|
||||
|
||||
if (item_type == NAME_TYPE_ITEM1) {
|
||||
int index = ITEM_NAME_GET_INDEX(item_name);
|
||||
int category = ITEM_NAME_GET_CAT(item_name);
|
||||
|
||||
if (
|
||||
index < 0 ||
|
||||
index > item1_kinds[category] ||
|
||||
item_name == ITM_SICKLE /* ??? why is this explicitly invalid... lol */
|
||||
) {
|
||||
res = TRUE;
|
||||
if (item_type == NAME_TYPE_ITEM1) {
|
||||
int index = ITEM_NAME_GET_INDEX(item_name);
|
||||
int category = ITEM_NAME_GET_CAT(item_name);
|
||||
|
||||
if (index < 0 || index > item1_kinds[category] ||
|
||||
item_name == ITM_SICKLE /* ??? why is this explicitly invalid... lol */
|
||||
) {
|
||||
res = TRUE;
|
||||
}
|
||||
} else if (item_name != EMPTY_NO && item_type != NAME_TYPE_FTR0 && item_type != NAME_TYPE_FTR1) {
|
||||
mFRm_ERRORLINE(110);
|
||||
res = TRUE;
|
||||
}
|
||||
}
|
||||
else if (item_name != EMPTY_NO && item_type != NAME_TYPE_FTR0 && item_type != NAME_TYPE_FTR1) {
|
||||
mFRm_ERRORLINE(110);
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCCk_Check_ItemName_Possession(mActor_name_t item) {
|
||||
int res = FALSE;
|
||||
int res = FALSE;
|
||||
|
||||
if (
|
||||
sCCk_Check_ItemName(item) ||
|
||||
(item >= ITM_MY_ORG_UMBRELLA0 && item <= ITM_MY_ORG_UMBRELLA7) ||
|
||||
(item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) ||
|
||||
item == ITM_PRESENT ||
|
||||
item == ITM_TOWN_MAP ||
|
||||
item == ITM_GOLDEN_NET_PRESENT ||
|
||||
item == ITM_GOLDEN_AXE_PRESENT ||
|
||||
item == ITM_GOLDEN_SHOVEL_PRESENT ||
|
||||
item == ITM_GOLDEN_ROD_PRESENT
|
||||
) {
|
||||
mFRm_ERRORLINE(141);
|
||||
res = TRUE;
|
||||
}
|
||||
if (sCCk_Check_ItemName(item) || (item >= ITM_MY_ORG_UMBRELLA0 && item <= ITM_MY_ORG_UMBRELLA7) ||
|
||||
(item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) || item == ITM_PRESENT || item == ITM_TOWN_MAP ||
|
||||
item == ITM_GOLDEN_NET_PRESENT || item == ITM_GOLDEN_AXE_PRESENT || item == ITM_GOLDEN_SHOVEL_PRESENT ||
|
||||
item == ITM_GOLDEN_ROD_PRESENT) {
|
||||
mFRm_ERRORLINE(141);
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_Item_YSD(Private_c* priv) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) {
|
||||
sCCk_Check_ItemName_Possession(priv->inventory.pockets[i]);
|
||||
}
|
||||
for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) {
|
||||
sCCk_Check_ItemName_Possession(priv->inventory.pockets[i]);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int sCck_CheckSaveData_Mail_YSD(Private_c* priv) {
|
||||
int res = FALSE;
|
||||
int i;
|
||||
int res = FALSE;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) {
|
||||
res |= sChk_Mail_c_sub(priv->mail + i, 0);
|
||||
}
|
||||
for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) {
|
||||
res |= sChk_Mail_c_sub(priv->mail + i, 0);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int sChk_CheckSaveData_YSD() {
|
||||
int res = FALSE;
|
||||
int i;
|
||||
int res = FALSE;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
Private_c* priv = Save_Get(private) + i;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
Private_c* priv = Save_Get(private_data) + i;
|
||||
|
||||
res |= sCck_CheckSaveData_Item_YSD(priv);
|
||||
res |= sCck_CheckSaveData_Mail_YSD(priv);
|
||||
res |= sCck_CheckSaveData_diary_body_YSD(priv);
|
||||
}
|
||||
res |= sCck_CheckSaveData_Item_YSD(priv);
|
||||
res |= sCck_CheckSaveData_Mail_YSD(priv);
|
||||
res |= sCck_CheckSaveData_diary_body_YSD(priv);
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
}
|
||||
|
||||
+67
-67
@@ -1,75 +1,75 @@
|
||||
static int sChk_CheckSaveData_komatu() {
|
||||
int i;
|
||||
int j;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
Private_c* priv = Save_Get(private) + i;
|
||||
for (i = 0; i < PLAYER_NUM; i++) {
|
||||
Private_c* priv = Save_Get(private_data) + i;
|
||||
|
||||
{
|
||||
const u8 gender = priv->gender;
|
||||
if (gender > mPr_SEX_FEMALE) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
s8 face = priv->face;
|
||||
if (face < 0 || face >= mPr_FACE_TYPE_NUM) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
mPr_cloth_c* cloth = &priv->cloth;
|
||||
u16 idx = cloth->idx;
|
||||
mActor_name_t item;
|
||||
|
||||
if (idx >= (256 + 8) || idx == 255) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
item = cloth->item;
|
||||
if (item != EMPTY_NO) {
|
||||
int valid_cloth = item == RSV_CLOTH || (item >= ITM_CLOTH000 && item < ITM_CLOTH_END);
|
||||
|
||||
if (valid_cloth == FALSE) {
|
||||
return TRUE;
|
||||
{
|
||||
const u8 gender = priv->gender;
|
||||
if (gender > mPr_SEX_FEMALE) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
mPr_destiny_c* destiny = &priv->destiny;
|
||||
|
||||
if (destiny->type >= mPr_DESTINY_NUM) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
mPr_sunburn_c* sunburn = &priv->sunburn;
|
||||
s8 t = sunburn->rank;
|
||||
s8 t2;
|
||||
|
||||
if (t < 0 || t >= mPr_SUNBURN_RANK_NUM) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
t2 = sunburn->rankdown_days;
|
||||
if (t2 < 0 || t2 > 2) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
u8 golden_items_collected = priv->golden_items_collected;
|
||||
for (j = 4; j < 8; j++) {
|
||||
if (golden_items_collected & ((u8)(1 << j))) {
|
||||
return TRUE;
|
||||
{
|
||||
s8 face = priv->face;
|
||||
if (face < 0 || face >= mPr_FACE_TYPE_NUM) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
{
|
||||
mPr_cloth_c* cloth = &priv->cloth;
|
||||
u16 idx = cloth->idx;
|
||||
mActor_name_t item;
|
||||
|
||||
if (idx >= (256 + 8) || idx == 255) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
item = cloth->item;
|
||||
if (item != EMPTY_NO) {
|
||||
int valid_cloth = item == RSV_CLOTH || (item >= ITM_CLOTH000 && item < ITM_CLOTH_END);
|
||||
|
||||
if (valid_cloth == FALSE) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
mPr_destiny_c* destiny = &priv->destiny;
|
||||
|
||||
if (destiny->type >= mPr_DESTINY_NUM) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
mPr_sunburn_c* sunburn = &priv->sunburn;
|
||||
s8 t = sunburn->rank;
|
||||
s8 t2;
|
||||
|
||||
if (t < 0 || t >= mPr_SUNBURN_RANK_NUM) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
t2 = sunburn->rankdown_days;
|
||||
if (t2 < 0 || t2 > 2) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
u8 golden_items_collected = priv->golden_items_collected;
|
||||
for (j = 4; j < 8; j++) {
|
||||
if (golden_items_collected & ((u8)(1 << j))) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+158
-172
@@ -12,253 +12,239 @@
|
||||
#include "m_common_data.h"
|
||||
|
||||
static void save_menu_set_cursor_col(GAME_SAVE_MENU* save_menu) {
|
||||
/* this was likely meant to be static */
|
||||
int cursor_col[10][3] = {
|
||||
{ 192, 120, 120 },
|
||||
{ 224, 130, 130 },
|
||||
{ 240, 150, 150 },
|
||||
{ 255, 180, 180 },
|
||||
{ 240, 150, 150 },
|
||||
{ 224, 130, 130 },
|
||||
{ 192, 120, 120 },
|
||||
{ 128, 80, 80 },
|
||||
{ 64, 64, 64 },
|
||||
{ 128, 80, 80 },
|
||||
};
|
||||
/* this was likely meant to be static */
|
||||
int cursor_col[10][3] = {
|
||||
{ 192, 120, 120 }, { 224, 130, 130 }, { 240, 150, 150 }, { 255, 180, 180 }, { 240, 150, 150 },
|
||||
{ 224, 130, 130 }, { 192, 120, 120 }, { 128, 80, 80 }, { 64, 64, 64 }, { 128, 80, 80 },
|
||||
};
|
||||
|
||||
int (*dst)[3] = &save_menu->cursor_col[save_menu->mode];
|
||||
int (*color)[3] = &cursor_col[(u32)save_menu->frame / 4];
|
||||
int i;
|
||||
for (i = 0; i < 3; i++) {
|
||||
(*dst)[i] = (*color)[i];
|
||||
}
|
||||
int(*dst)[3] = &save_menu->cursor_col[save_menu->mode];
|
||||
int(*color)[3] = &cursor_col[(u32)save_menu->frame / 4];
|
||||
int i;
|
||||
for (i = 0; i < 3; i++) {
|
||||
(*dst)[i] = (*color)[i];
|
||||
}
|
||||
}
|
||||
|
||||
static void save_menu_reset_cursor_col(int (*color)[3]) {
|
||||
int default_color[3] = { 40, 40, 40 };
|
||||
int i;
|
||||
int default_color[3] = { 40, 40, 40 };
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
(*color)[i] = default_color[i];
|
||||
}
|
||||
for (i = 0; i < 3; i++) {
|
||||
(*color)[i] = default_color[i];
|
||||
}
|
||||
}
|
||||
|
||||
typedef void (*SAVE_MENU_PROC)(GAME_SAVE_MENU*);
|
||||
|
||||
static void save_menu_data_save_from(GAME_SAVE_MENU* save_menu) {
|
||||
if ((int)Common_Get(player_no) != mPr_FOREIGNER) {
|
||||
Common_Get(now_private)->exists = TRUE;
|
||||
save_menu->error = SAVE_ERROR_EXIT; // OK
|
||||
}
|
||||
else {
|
||||
save_menu->error = SAVE_ERROR_FLASHROM; // Player is foriegner
|
||||
}
|
||||
if ((int)Common_Get(player_no) != mPr_FOREIGNER) {
|
||||
Common_Get(now_private)->exists = TRUE;
|
||||
save_menu->error = SAVE_ERROR_EXIT; // OK
|
||||
} else {
|
||||
save_menu->error = SAVE_ERROR_FLASHROM; // Player is foriegner
|
||||
}
|
||||
}
|
||||
|
||||
static void save_menu_data_save_pak(GAME_SAVE_MENU* save_menu) {
|
||||
Private_c* private = Common_Get(now_private);
|
||||
if ((int)Common_Get(player_no) == mPr_FOREIGNER) {
|
||||
AnmPersonalID_c* foriegn_id = mNpc_GetOtherAnimalPersonalID(NULL, 0);
|
||||
if (foriegn_id != NULL) {
|
||||
mNpc_CopyAnimalPersonalID(&private->stored_anm_id, foriegn_id);
|
||||
}
|
||||
}
|
||||
|
||||
mCPk_PakOpen(mCPk_get_pkinfo(), 0);
|
||||
if (mCPk_SavePak(Save_Get(private), Save_Get(animals), mCPk_get_pkinfo()) == TRUE) {
|
||||
if (mLd_PlayerManKindCheck() == FALSE) {
|
||||
Common_Get(now_private)->exists = FALSE;
|
||||
Private_c* private = Common_Get(now_private);
|
||||
if ((int)Common_Get(player_no) == mPr_FOREIGNER) {
|
||||
AnmPersonalID_c* foriegn_id = mNpc_GetOtherAnimalPersonalID(NULL, 0);
|
||||
if (foriegn_id != NULL) {
|
||||
mNpc_CopyAnimalPersonalID(&private->stored_anm_id, foriegn_id);
|
||||
}
|
||||
}
|
||||
|
||||
save_menu->error = SAVE_ERROR_EXIT; // OK
|
||||
}
|
||||
else {
|
||||
save_menu->error = SAVE_ERROR_CPAK; // Failed to save to CPak
|
||||
}
|
||||
mCPk_PakOpen(mCPk_get_pkinfo(), 0);
|
||||
if (mCPk_SavePak(Save_Get(private_data), Save_Get(animals), mCPk_get_pkinfo()) == TRUE) {
|
||||
if (mLd_PlayerManKindCheck() == FALSE) {
|
||||
Common_Get(now_private)->exists = FALSE;
|
||||
}
|
||||
|
||||
save_menu->error = SAVE_ERROR_EXIT; // OK
|
||||
} else {
|
||||
save_menu->error = SAVE_ERROR_CPAK; // Failed to save to CPak
|
||||
}
|
||||
}
|
||||
|
||||
static void save_menu_move_do_save(GAME_SAVE_MENU* save_menu) {
|
||||
static SAVE_MENU_PROC save_proc[SAVE_MODE_NUM] = { &save_menu_data_save_from, &save_menu_data_save_pak };
|
||||
static SAVE_MENU_PROC save_proc[SAVE_MODE_NUM] = { &save_menu_data_save_from, &save_menu_data_save_pak };
|
||||
|
||||
int mode = save_menu->mode;
|
||||
int mode = save_menu->mode;
|
||||
|
||||
/* Check and save to select location */
|
||||
if (chkTrigger(BUTTON_A)) {
|
||||
(*save_proc[mode])(save_menu);
|
||||
}
|
||||
|
||||
/* Check and change selected save mode */
|
||||
if (chkTrigger(BUTTON_R) || chkTrigger(BUTTON_DUP) || chkTrigger(BUTTON_DDOWN)) {
|
||||
save_menu->frame = 0;
|
||||
save_menu_reset_cursor_col(save_menu->cursor_col + mode);
|
||||
save_menu->mode++;
|
||||
|
||||
if (save_menu->mode >= SAVE_MODE_NUM) {
|
||||
save_menu->mode = SAVE_MODE_BEGIN;
|
||||
/* Check and save to select location */
|
||||
if (chkTrigger(BUTTON_A)) {
|
||||
(*save_proc[mode])(save_menu);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if should exit menu */
|
||||
if (chkTrigger(BUTTON_B)) {
|
||||
save_menu->error = SAVE_ERROR_EXIT; // OK
|
||||
}
|
||||
/* Check and change selected save mode */
|
||||
if (chkTrigger(BUTTON_R) || chkTrigger(BUTTON_DUP) || chkTrigger(BUTTON_DDOWN)) {
|
||||
save_menu->frame = 0;
|
||||
save_menu_reset_cursor_col(save_menu->cursor_col + mode);
|
||||
save_menu->mode++;
|
||||
|
||||
if (save_menu->mode >= SAVE_MODE_NUM) {
|
||||
save_menu->mode = SAVE_MODE_BEGIN;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if should exit menu */
|
||||
if (chkTrigger(BUTTON_B)) {
|
||||
save_menu->error = SAVE_ERROR_EXIT; // OK
|
||||
}
|
||||
}
|
||||
|
||||
static void save_menu_move_finish(GAME_SAVE_MENU* save_menu) {
|
||||
GAME_GOTO_NEXT((GAME*)save_menu, trademark, TRADEMARK);
|
||||
GAME_GOTO_NEXT((GAME*)save_menu, trademark, TRADEMARK);
|
||||
}
|
||||
|
||||
static void save_menu_move_err(GAME_SAVE_MENU* save_menu) {
|
||||
save_menu->error = SAVE_ERROR_NONE; // cleared
|
||||
save_menu->error = SAVE_ERROR_NONE; // cleared
|
||||
}
|
||||
|
||||
static void save_menu_move_main(GAME_SAVE_MENU* save_menu) {
|
||||
static SAVE_MENU_PROC sub_proc[SAVE_ERROR_NUM] = {
|
||||
&save_menu_move_do_save,
|
||||
&save_menu_move_err,
|
||||
&save_menu_move_err,
|
||||
&save_menu_move_finish
|
||||
};
|
||||
static SAVE_MENU_PROC sub_proc[SAVE_ERROR_NUM] = { &save_menu_move_do_save, &save_menu_move_err,
|
||||
&save_menu_move_err, &save_menu_move_finish };
|
||||
|
||||
int error = save_menu->error;
|
||||
int error = save_menu->error;
|
||||
|
||||
if (error >= SAVE_ERROR_NONE && error < SAVE_ERROR_NUM) {
|
||||
(*sub_proc[error])(save_menu);
|
||||
}
|
||||
if (error >= SAVE_ERROR_NONE && error < SAVE_ERROR_NUM) {
|
||||
(*sub_proc[error])(save_menu);
|
||||
}
|
||||
|
||||
save_menu_set_cursor_col(save_menu);
|
||||
save_menu->frame++;
|
||||
save_menu_set_cursor_col(save_menu);
|
||||
save_menu->frame++;
|
||||
|
||||
if (save_menu->frame == 40) {
|
||||
save_menu->frame = 0;
|
||||
}
|
||||
if (save_menu->frame == 40) {
|
||||
save_menu->frame = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void save_menu_draw_title(GAME_SAVE_MENU* save_menu) {
|
||||
/* This translates to 'セーブ メニュー' (save menu), the devs didn't bother translating it */
|
||||
u8 title[] = { 0x9E, 0x90, 0xDF, CHAR_SPACE, 0xB2, 0xA6, 0x8D, 0x90 };
|
||||
/* This translates to 'セーブ メニュー' (save menu), the devs didn't bother translating it */
|
||||
u8 title[] = { 0x9E, 0x90, 0xDF, CHAR_SPACE, 0xB2, 0xA6, 0x8D, 0x90 };
|
||||
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, title, ARRAY_SIZE(title, u8), 110.0f, 30.0f, 200, 50, 50, 255, FALSE, TRUE, FALSE, 1.1f, 1.1f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, title, ARRAY_SIZE(title, u8), 110.0f, 30.0f, 200, 50, 50, 255,
|
||||
FALSE, TRUE, FALSE, 1.1f, 1.1f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
static void save_menu_draw_push_a(GAME_SAVE_MENU* save_menu) {
|
||||
/* Push A Button */
|
||||
u8 push_a[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_A, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n };
|
||||
/* Push A Button */
|
||||
u8 push_a[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_A, CHAR_SPACE,
|
||||
CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n };
|
||||
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_a, ARRAY_SIZE(push_a, u8), 95.0f, 175.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_a, ARRAY_SIZE(push_a, u8), 95.0f, 175.0f, 200, 200, 200, 255,
|
||||
FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
static void save_menu_draw_select_r(GAME_SAVE_MENU* save_menu) {
|
||||
/* Select R Button */
|
||||
u8 select_r[] = { CHAR_S, CHAR_e, CHAR_l, CHAR_e, CHAR_c, CHAR_t, CHAR_SPACE, CHAR_R, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n };
|
||||
/* Select R Button */
|
||||
u8 select_r[] = { CHAR_S, CHAR_e, CHAR_l, CHAR_e, CHAR_c, CHAR_t, CHAR_SPACE, CHAR_R,
|
||||
CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n };
|
||||
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, select_r, ARRAY_SIZE(select_r, u8), 76.0f, 185.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, select_r, ARRAY_SIZE(select_r, u8), 76.0f, 185.0f, 200, 200, 200,
|
||||
255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
static void save_menu_draw_push_b(GAME_SAVE_MENU* save_menu) {
|
||||
/* Push B Button to EXIT */
|
||||
u8 push_b[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_B, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n, CHAR_SPACE, CHAR_t, CHAR_o, CHAR_SPACE, CHAR_E, CHAR_X, CHAR_I, CHAR_T };
|
||||
/* Push B Button to EXIT */
|
||||
u8 push_b[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_B, CHAR_SPACE,
|
||||
CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n, CHAR_SPACE,
|
||||
CHAR_t, CHAR_o, CHAR_SPACE, CHAR_E, CHAR_X, CHAR_I, CHAR_T };
|
||||
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_b, ARRAY_SIZE(push_b, u8), 50.0f, 210.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_b, ARRAY_SIZE(push_b, u8), 50.0f, 210.0f, 200, 200, 200, 255,
|
||||
FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
static void save_menu_draw_select_mode(GAME_SAVE_MENU* save_menu) {
|
||||
/*
|
||||
/*
|
||||
|
||||
[0] = 'FlashRom にセーブ' "Save to FlashRom"
|
||||
[1] = 'パック にセーブ ' "Save to Pak"
|
||||
[0] = 'FlashRom にセーブ' "Save to FlashRom"
|
||||
[1] = 'パック にセーブ ' "Save to Pak"
|
||||
|
||||
*/
|
||||
u8 select_mode[SAVE_MODE_NUM][13] = {
|
||||
{ CHAR_F, CHAR_l, CHAR_a, CHAR_s, CHAR_h, CHAR_R, CHAR_o, CHAR_m, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF },
|
||||
{ 0xE2, 0x8F, 0x98, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE },
|
||||
};
|
||||
*/
|
||||
u8 select_mode[SAVE_MODE_NUM][13] = {
|
||||
{ CHAR_F, CHAR_l, CHAR_a, CHAR_s, CHAR_h, CHAR_R, CHAR_o, CHAR_m, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF },
|
||||
{ 0xE2, 0x8F, 0x98, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
|
||||
CHAR_SPACE },
|
||||
};
|
||||
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)save_menu,
|
||||
select_mode[SAVE_MODE_FLASHROM], ARRAY_SIZE(select_mode[SAVE_MODE_FLASHROM], u8),
|
||||
60.0f, 85.0f,
|
||||
save_menu->cursor_col[SAVE_MODE_FLASHROM][0], save_menu->cursor_col[SAVE_MODE_FLASHROM][1], save_menu->cursor_col[SAVE_MODE_FLASHROM][2], 255,
|
||||
FALSE, TRUE, FALSE,
|
||||
1.2f, 1.2f,
|
||||
mFont_MODE_FONT
|
||||
);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)save_menu, select_mode[SAVE_MODE_FLASHROM], ARRAY_SIZE(select_mode[SAVE_MODE_FLASHROM], u8), 60.0f,
|
||||
85.0f, save_menu->cursor_col[SAVE_MODE_FLASHROM][0], save_menu->cursor_col[SAVE_MODE_FLASHROM][1],
|
||||
save_menu->cursor_col[SAVE_MODE_FLASHROM][2], 255, FALSE, TRUE, FALSE, 1.2f, 1.2f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)save_menu,
|
||||
select_mode[SAVE_MODE_CPAK], ARRAY_SIZE(select_mode[SAVE_MODE_CPAK], u8),
|
||||
100.0f, 125.0f,
|
||||
save_menu->cursor_col[SAVE_MODE_CPAK][0], save_menu->cursor_col[SAVE_MODE_CPAK][1], save_menu->cursor_col[SAVE_MODE_CPAK][2], 255,
|
||||
FALSE, TRUE, FALSE,
|
||||
1.2f, 1.2f,
|
||||
mFont_MODE_FONT
|
||||
);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
mFont_SetLineStrings_AndSpace(
|
||||
(GAME*)save_menu, select_mode[SAVE_MODE_CPAK], ARRAY_SIZE(select_mode[SAVE_MODE_CPAK], u8), 100.0f, 125.0f,
|
||||
save_menu->cursor_col[SAVE_MODE_CPAK][0], save_menu->cursor_col[SAVE_MODE_CPAK][1],
|
||||
save_menu->cursor_col[SAVE_MODE_CPAK][2], 255, FALSE, TRUE, FALSE, 1.2f, 1.2f, mFont_MODE_FONT);
|
||||
mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT);
|
||||
}
|
||||
|
||||
extern void save_menu_draw_main(GAME_SAVE_MENU* save_menu) {
|
||||
GRAPH* g = save_menu->game.graph;
|
||||
GRAPH* g = save_menu->game.graph;
|
||||
|
||||
OPEN_DISP(g);
|
||||
OPEN_DISP(g);
|
||||
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0);
|
||||
DisplayList_initialize(g, 0, 0, 0, NULL);
|
||||
gDPPipeSync(NOW_POLY_OPA_DISP++);
|
||||
gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0);
|
||||
DisplayList_initialize(g, 0, 0, 0, NULL);
|
||||
gDPPipeSync(NOW_POLY_OPA_DISP++);
|
||||
|
||||
CLOSE_DISP(g);
|
||||
CLOSE_DISP(g);
|
||||
|
||||
showView(&save_menu->view, VIEW_UPDATE_ALL);
|
||||
save_menu_draw_title(save_menu);
|
||||
save_menu_draw_push_a(save_menu);
|
||||
save_menu_draw_select_r(save_menu);
|
||||
save_menu_draw_push_b(save_menu);
|
||||
save_menu_draw_select_mode(save_menu);
|
||||
showView(&save_menu->view, VIEW_UPDATE_ALL);
|
||||
save_menu_draw_title(save_menu);
|
||||
save_menu_draw_push_a(save_menu);
|
||||
save_menu_draw_select_r(save_menu);
|
||||
save_menu_draw_push_b(save_menu);
|
||||
save_menu_draw_select_mode(save_menu);
|
||||
}
|
||||
|
||||
static void save_menu_main(GAME* game) {
|
||||
GRAPH* g;
|
||||
GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game;
|
||||
save_menu_move_main(save_menu);
|
||||
save_menu_draw_main(save_menu);
|
||||
GRAPH* g;
|
||||
GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game;
|
||||
save_menu_move_main(save_menu);
|
||||
save_menu_draw_main(save_menu);
|
||||
|
||||
g = game->graph;
|
||||
game_debug_draw_last(game, g);
|
||||
game_draw_last(g);
|
||||
g = game->graph;
|
||||
game_debug_draw_last(game, g);
|
||||
game_draw_last(g);
|
||||
}
|
||||
|
||||
extern void save_menu_cleanup(GAME* game) { }
|
||||
extern void save_menu_cleanup(GAME* game) {
|
||||
}
|
||||
|
||||
extern void save_menu_init(GAME* game) {
|
||||
GRAPH* g = game->graph;
|
||||
View* view;
|
||||
GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game;
|
||||
int i;
|
||||
GRAPH* g = game->graph;
|
||||
View* view;
|
||||
GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game;
|
||||
int i;
|
||||
|
||||
game->exec = &save_menu_main;
|
||||
game->cleanup = &save_menu_cleanup;
|
||||
game->exec = &save_menu_main;
|
||||
game->cleanup = &save_menu_cleanup;
|
||||
|
||||
view = &save_menu->view;
|
||||
initView(view, g);
|
||||
view->flag = VIEW_UPDATE_ORTHOGRAPHIC;
|
||||
new_Matrix(game);
|
||||
SetGameFrame(1);
|
||||
view = &save_menu->view;
|
||||
initView(view, g);
|
||||
view->flag = VIEW_UPDATE_ORTHOGRAPHIC;
|
||||
new_Matrix(game);
|
||||
SetGameFrame(1);
|
||||
|
||||
save_menu->frame = 0;
|
||||
save_menu->mode = SAVE_MODE_BEGIN;
|
||||
save_menu->error = SAVE_ERROR_NONE;
|
||||
save_menu->frame = 0;
|
||||
save_menu->mode = SAVE_MODE_BEGIN;
|
||||
save_menu->error = SAVE_ERROR_NONE;
|
||||
|
||||
for (i = 0; i < SAVE_MODE_NUM; i++) {
|
||||
save_menu_reset_cursor_col(save_menu->cursor_col + i);
|
||||
}
|
||||
for (i = 0; i < SAVE_MODE_NUM; i++) {
|
||||
save_menu_reset_cursor_col(save_menu->cursor_col + i);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user