X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Freademc.c;h=40b0a609dd92d20b077d75d68eaaeff266bf9cc8;hb=47ed33d197cbd8d560197cb364b759a2239dff98;hp=705de11d5fc26161d9b6c199bb68b9ded9b7856e;hpb=724fbe31d039f8b7272f45b18f18a8d9ea2281df;p=rocksndiamonds.git diff --git a/src/game_em/reademc.c b/src/game_em/reademc.c index 705de11d..40b0a609 100644 --- a/src/game_em/reademc.c +++ b/src/game_em/reademc.c @@ -41,7 +41,6 @@ */ #define GET_BE16(x) ((&x)[0] << 8 | (&x)[1]) -#define PUT_BE16(x, y) {(&x)[0] = (y) >> 8; (&x)[1] = (y) & 0xff;} static const short map_emc[256] = { @@ -98,7 +97,7 @@ static const short map_emc[256] = Xfake_grass, Xlenses, Xmagnify, Xfake_blank, Xfake_grass, Xswitch, Xswitch, Xblank, Xdecor_8, Xdecor_9, Xdecor_10, Xdecor_5, - Xalpha_comma, Xalpha_quote, Xalpha_minus, Xdynamite, + Xalpha_comma, Xalpha_apost, Xalpha_minus, Xdynamite, Xsteel_3, Xdecor_6, Xdecor_7, Xsteel_2, Xroundwall_2, Xdecor_2, Xdecor_4, Xdecor_3, @@ -329,11 +328,8 @@ void convert_em_level(unsigned char *src, int file_version) /* common to all emc caves */ - cav.time_seconds = GET_BE16(src[2110]); - if (cav.time_seconds > 9999) - cav.time_seconds = 9999; - - cav.required = src[2095]; + cav.time_seconds = MIN(GET_BE16(src[2110]), 9999); + cav.gems_needed = src[2095]; /* scores */ @@ -354,20 +350,16 @@ void convert_em_level(unsigned char *src, int file_version) /* times */ - cav.android_move_time = GET_BE16(src[2164]); - cav.android_clone_time = GET_BE16(src[2166]); - cav.ball_time = GET_BE16(src[2160]); - - cav.lenses_time = GET_BE16(src[2154]); - cav.magnify_time = GET_BE16(src[2156]); - cav.wheel_time = GET_BE16(src[2104]); + cav.android_move_time = MIN(GET_BE16(src[2164]), 9999); + cav.android_clone_time = MIN(GET_BE16(src[2166]), 9999); + cav.ball_time = MIN(GET_BE16(src[2160]), 9999); - temp = GET_BE16(src[2100]) * 28; - if (temp > 9999) - temp = 9999; - cav.amoeba_time = temp; + cav.lenses_time = MIN(GET_BE16(src[2154]), 9999); + cav.magnify_time = MIN(GET_BE16(src[2156]), 9999); + cav.wheel_time = MIN(GET_BE16(src[2104]), 9999); - cav.wonderwall_time = GET_BE16(src[2102]); + cav.amoeba_time = MIN(GET_BE16(src[2100]) * 28, 9999); + cav.wonderwall_time = MIN(GET_BE16(src[2102]), 9999); cav.wind_cnt = src[2149] & 15 ? cav.wind_time : 0; temp = src[2149]; @@ -375,6 +367,7 @@ void convert_em_level(unsigned char *src, int file_version) temp & 1 ? 1 : temp & 2 ? 2 : temp & 4 ? 3 : 0); + /* global flags */ cav.ball_random = src[2162] & 1 ? 1 : 0; @@ -407,9 +400,7 @@ void convert_em_level(unsigned char *src, int file_version) /* android */ - temp = GET_BE16(src[2168]); - - init_android_clone_table(temp); + init_android_clone_table(GET_BE16(src[2168])); /* eaters */ @@ -824,53 +815,21 @@ int cleanup_em_level(unsigned char *src, int length, char *filename) src[2098] &= 7; src[GET_BE16(src[2098])] = 128; - /* amoeba speed */ - if (GET_BE16(src[2100]) > 9999) - PUT_BE16(src[2100], 9999); - - /* time wonderwall */ - if (GET_BE16(src[2102]) > 9999) - PUT_BE16(src[2102], 9999); - - /* time */ - if (GET_BE16(src[2110]) > 9999) - PUT_BE16(src[2110], 9999); - /* wind direction */ i = src[2149]; i &= 15; i &= -i; src[2149] = i; - /* time lenses */ - if (GET_BE16(src[2154]) > 9999) - PUT_BE16(src[2154], 9999); - - /* time magnify */ - if (GET_BE16(src[2156]) > 9999) - PUT_BE16(src[2156], 9999); - /* ball object */ src[2158] = 0; src[2159] = map_v6[src[2159]]; - /* ball pause */ - if (GET_BE16(src[2160]) > 9999) - PUT_BE16(src[2160], 9999); - /* ball data */ src[2162] &= 129; if (src[2162] & 1) src[2163] = 0; - /* android move pause */ - if (GET_BE16(src[2164]) > 9999) - PUT_BE16(src[2164], 9999); - - /* android clone pause */ - if (GET_BE16(src[2166]) > 9999) - PUT_BE16(src[2166], 9999); - /* android data */ src[2168] &= 31;