OSDN Git Service

#37287 #37353 (2.2.0.89) DEPTHをs32bに再定義、型の置換を継続中。 / Redefine DEPTH to s32b, ongoing...
[hengband/hengband.git] / src / load.c
index 11db047..33a9ec0 100644 (file)
@@ -338,14 +338,18 @@ static void strip_bytes(int n)
 static void rd_item_old(object_type *o_ptr)
 {
        char buf[128];
+       byte_hack tmp8u;
+       s16b tmp16s;
 
 
        /* Kind */
        rd_s16b(&o_ptr->k_idx);
 
        /* Location */
-       rd_byte(&o_ptr->iy);
-       rd_byte(&o_ptr->ix);
+       rd_byte(&tmp8u);
+       o_ptr->iy = (POSITION)tmp8u;
+       rd_byte(&tmp8u);
+       o_ptr->ix = (POSITION)tmp8u;
 
        /* Type/Subtype */
        rd_byte(&o_ptr->tval);
@@ -370,7 +374,9 @@ static void rd_item_old(object_type *o_ptr)
        rd_s16b(&o_ptr->timeout);
 
        rd_s16b(&o_ptr->to_h);
-       rd_s16b(&o_ptr->to_d);
+       
+       rd_s16b(&tmp16s);
+       o_ptr->to_d = tmp16s;
        rd_s16b(&o_ptr->to_a);
 
        rd_s16b(&o_ptr->ac);
@@ -593,6 +599,8 @@ static void rd_item(object_type *o_ptr)
        object_kind *k_ptr;
        u32b flags;
        char buf[128];
+       byte_hack tmp8u;
+       s16b tmp16s;
 
        if (h_older_than(1, 5, 0, 0))
        {
@@ -608,8 +616,10 @@ static void rd_item(object_type *o_ptr)
        rd_s16b(&o_ptr->k_idx);
 
        /* Location */
-       rd_byte(&o_ptr->iy);
-       rd_byte(&o_ptr->ix);
+       rd_byte(&tmp8u);
+       o_ptr->iy = (POSITION)tmp8u;
+       rd_byte(&tmp8u);
+       o_ptr->ix = (POSITION)tmp8u;
 
        /* Type/Subtype */
        k_ptr = &k_info[o_ptr->k_idx];
@@ -636,7 +646,11 @@ static void rd_item(object_type *o_ptr)
 
        if (flags & SAVE_ITEM_TO_H) rd_s16b(&o_ptr->to_h);
        else o_ptr->to_h = 0;
-       if (flags & SAVE_ITEM_TO_D) rd_s16b(&o_ptr->to_d);
+       if (flags & SAVE_ITEM_TO_D)
+       {
+               rd_s16b(&tmp16s);
+               o_ptr->to_d = tmp16s;
+       }
        else o_ptr->to_d = 0;
        if (flags & SAVE_ITEM_TO_A) rd_s16b(&o_ptr->to_a);
        else o_ptr->to_a = 0;
@@ -773,6 +787,7 @@ static void rd_item(object_type *o_ptr)
 static void rd_monster_old(monster_type *m_ptr)
 {
        byte tmp8u;
+       s16b tmp16s;
        char buf[128];
 
        /* Read the monster race */
@@ -795,17 +810,24 @@ static void rd_monster_old(monster_type *m_ptr)
                rd_byte(&m_ptr->sub_align);
 
        /* Read the other information */
-       rd_byte(&m_ptr->fy);
-       rd_byte(&m_ptr->fx);
-       rd_s16b(&m_ptr->hp);
-       rd_s16b(&m_ptr->maxhp);
+       rd_byte(&tmp8u);
+       m_ptr->fy = (POSITION)tmp8u;
+       rd_byte(&tmp8u);
+       m_ptr->fx = (POSITION)tmp8u;
+
+       rd_s16b(&tmp16s);
+       m_ptr->hp = tmp16s;
+       rd_s16b(&tmp16s);
+       m_ptr->maxhp = tmp16s;
+
        if (z_older_than(11, 0, 5))
        {
                m_ptr->max_maxhp = m_ptr->maxhp;
        }
        else
        {
-               rd_s16b(&m_ptr->max_maxhp);
+               rd_s16b(&tmp16s);
+               m_ptr->max_maxhp = (HIT_POINT)tmp16s;
        }
        if(h_older_than(2, 1, 2, 1))
        {
@@ -853,14 +875,15 @@ static void rd_monster_old(monster_type *m_ptr)
        }
        else if (z_older_than(10,0,11))
        {
-               s16b tmp16s;
                rd_s16b(&tmp16s);
                reset_target(m_ptr);
        }
        else
        {
-               rd_s16b(&m_ptr->target_y);
-               rd_s16b(&m_ptr->target_x);
+               rd_s16b(&tmp16s);
+               m_ptr->target_y = (POSITION)tmp16s;
+               rd_s16b(&tmp16s);
+               m_ptr->target_x = (POSITION)tmp16s;
        }
 
        rd_byte(&tmp8u);
@@ -919,6 +942,7 @@ static void rd_monster(monster_type *m_ptr)
        u32b flags;
        char buf[128];
        byte tmp8u;
+       s16b tmp16s;
 
        if (h_older_than(1, 5, 0, 0))
        {
@@ -935,11 +959,18 @@ static void rd_monster(monster_type *m_ptr)
        rd_s16b(&m_ptr->r_idx);
 
        /* Read the other information */
-       rd_byte(&m_ptr->fy);
-       rd_byte(&m_ptr->fx);
-       rd_s16b(&m_ptr->hp);
-       rd_s16b(&m_ptr->maxhp);
-       rd_s16b(&m_ptr->max_maxhp);
+       rd_byte(&tmp8u);
+       m_ptr->fy = (POSITION)tmp8u;
+       rd_byte(&tmp8u);
+       m_ptr->fx = (POSITION)tmp8u;
+
+       rd_s16b(&tmp16s);
+       m_ptr->hp = (HIT_POINT)tmp16s;
+       rd_s16b(&tmp16s);
+       m_ptr->maxhp = (HIT_POINT)tmp16s;
+       rd_s16b(&tmp16s);
+       m_ptr->max_maxhp = (HIT_POINT)tmp16s;
+
        if(h_older_than(2, 1, 2, 1))
        {
                m_ptr->dealt_damage = 0;
@@ -994,9 +1025,17 @@ static void rd_monster(monster_type *m_ptr)
        }
        else m_ptr->mtimed[MTIMED_MONFEAR] = 0;
 
-       if (flags & SAVE_MON_TARGET_Y) rd_s16b(&m_ptr->target_y);
+       if (flags & SAVE_MON_TARGET_Y)
+       {
+               rd_s16b(&tmp16s);
+               m_ptr->target_y = (POSITION)tmp16s;
+       }
        else m_ptr->target_y = 0;
-       if (flags & SAVE_MON_TARGET_X) rd_s16b(&m_ptr->target_x);
+       if (flags & SAVE_MON_TARGET_X)
+       {
+               rd_s16b(&tmp16s);
+               m_ptr->target_x = (POSITION)tmp16s;
+       }
        else m_ptr->target_x = 0;
 
        if (flags & SAVE_MON_INVULNER)
@@ -1437,6 +1476,7 @@ static void rd_options(void)
        cheat_live = (c & 0x2000) ? TRUE : FALSE;
        cheat_save = (c & 0x4000) ? TRUE : FALSE;
        cheat_diary_output = (c & 0x8000) ? TRUE : FALSE;
+       cheat_turn = (c & 0x0080) ? TRUE : FALSE;
 
        rd_byte((byte *)&autosave_l);
        rd_byte((byte *)&autosave_t);
@@ -1662,7 +1702,8 @@ static void rd_extra(void)
        }
 
        /* Special Race/Class info */
-       rd_byte(&p_ptr->hitdie);
+       rd_byte(&tmp8u);
+       p_ptr->hitdie = tmp8u;
        rd_u16b(&p_ptr->expfact);
 
        /* Age/Height/Weight */
@@ -1839,8 +1880,11 @@ static void rd_extra(void)
        rd_byte(&p_ptr->exit_bldg);
        rd_byte(&tmp8u);
 
-       rd_s16b(&p_ptr->oldpx);
-       rd_s16b(&p_ptr->oldpy);
+       rd_s16b(&tmp16s);
+       p_ptr->oldpx = (POSITION)tmp16s;
+       rd_s16b(&tmp16s);
+       p_ptr->oldpy = (POSITION)tmp16s;
+
        if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena) {p_ptr->oldpy = 33;p_ptr->oldpx = 131;}
 
        /* Was p_ptr->rewards[MAX_BACT] */
@@ -2372,9 +2416,9 @@ static void rd_messages(void)
 
        if (h_older_than(2, 2, 0, 75))
        {
-               s16b num;
+               u16b num;
                /* Total */
-               rd_s16b(&num);
+               rd_u16b(&num);
 
                /* Read the messages */
                for (i = 0; i < num; i++)
@@ -2447,14 +2491,16 @@ static errr rd_dungeon_old(void)
        /*** Basic info ***/
 
        /* Header info */
-       rd_s16b(&dun_level);
+       rd_s16b(&tmp16s);
+       dun_level = (DEPTH)tmp16s;
        if (z_older_than(10, 3, 8)) dungeon_type = DUNGEON_ANGBAND;
        else rd_byte(&dungeon_type);
 
        /* Set the base level for old versions */
        base_level = dun_level;
 
-       rd_s16b(&base_level);
+       rd_s16b(&tmp16s);
+       base_level = (DEPTH)tmp16s;
 
        rd_s16b(&num_repro);
        rd_s16b(&tmp16s);
@@ -2462,8 +2508,10 @@ static errr rd_dungeon_old(void)
        rd_s16b(&tmp16s);
        p_ptr->x = (int)tmp16s;
        if (z_older_than(10, 3, 13) && !dun_level && !p_ptr->inside_arena) {p_ptr->y = 33;p_ptr->x = 131;}
-       rd_s16b(&cur_hgt);
-       rd_s16b(&cur_wid);
+       rd_s16b(&tmp16s);
+       cur_hgt = (POSITION)tmp16s;
+       rd_s16b(&tmp16s);
+       cur_wid = (POSITION)tmp16s;
        rd_s16b(&tmp16s); /* max_panel_rows */
        rd_s16b(&tmp16s); /* max_panel_cols */
 
@@ -2726,7 +2774,7 @@ static errr rd_dungeon_old(void)
        /* Read the dungeon items */
        for (i = 1; i < limit; i++)
        {
-               int o_idx;
+               IDX o_idx;
 
                object_type *o_ptr;
 
@@ -2874,7 +2922,8 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        {
                /*** Not a saved floor ***/
 
-               rd_s16b(&dun_level);
+               rd_s16b(&tmp16s);
+               dun_level = (DEPTH)tmp16s;
                base_level = dun_level;
        }
        else
@@ -2904,7 +2953,8 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
                if (tmp16s != sf_ptr->lower_floor_id) return 171;
        }
 
-       rd_s16b(&base_level);
+       rd_s16b(&tmp16s);
+       base_level = (DEPTH)tmp16s;
        rd_s16b(&num_repro);
 
        rd_u16b(&tmp16u);
@@ -2913,8 +2963,10 @@ static errr rd_saved_floor(saved_floor_type *sf_ptr)
        rd_u16b(&tmp16u);
        p_ptr->x = (int)tmp16u;
 
-       rd_s16b(&cur_hgt);
-       rd_s16b(&cur_wid);
+       rd_s16b(&tmp16s);
+       cur_hgt = (POSITION)tmp16s;
+       rd_s16b(&tmp16s);
+       cur_wid = (POSITION)tmp16s;
 
        rd_byte(&p_ptr->feeling);
 
@@ -3298,12 +3350,6 @@ static errr rd_savefile_new_aux(void)
 #endif
 
 
-       /* Mention the savefile version */
-       note(format(
-                    _("バージョン %d.%d.%d のセーブ・ファイルをロード中...", "Loading a %d.%d.%d savefile..."),
-                    (z_major > 9) ? z_major - 10 : z_major, z_minor, z_patch));
-
-
        /* Strip the version bytes */
        strip_bytes(4);
 
@@ -3322,6 +3368,12 @@ static errr rd_savefile_new_aux(void)
        rd_byte(&h_ver_minor);
        rd_byte(&h_ver_major);
 
+       /* Mention the savefile version */
+       note(format(
+               _("バージョン %d.%d.%d.%d のセーブ・ファイルをロード中...", "Loading a %d.%d.%d.%d savefile..."),
+               (h_ver_major > 9) ? h_ver_major - 10 : h_ver_major, h_ver_minor, h_ver_patch, h_ver_extra));
+
+
        /* Operating system info */
        rd_u32b(&sf_system);