From 86ac476f955b732436eb31f55e78e91dcfe9fc1e Mon Sep 17 00:00:00 2001 From: Martin Schaffner Date: Sat, 9 Oct 2004 21:52:43 +0000 Subject: [PATCH] fix bug 1675: use better d2 textures if d1 hog is present but not loadable --- ChangeLog | 3 ++ main/gamemine.c | 135 ++++++++++++++++++++++++++---------------------- main/piggy.c | 7 +-- 3 files changed, 80 insertions(+), 65 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45b0b104..e866e176 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,9 @@ * cfile/cfile.c: correct warnings caused by change of 2004-09-30 + * main/gamemine.c, main/piggy.c: fix bug 1675: + use better d2 textures if d1 hog is present but not loadable + 2004-09-30 Martin Schaffner * cfile/cfile.c: simplify, reduce number of global vars diff --git a/main/gamemine.c b/main/gamemine.c index 520b5714..ebff2390 100644 --- a/main/gamemine.c +++ b/main/gamemine.c @@ -1,4 +1,4 @@ -/* $Id: gamemine.c,v 1.28 2004-08-28 23:17:45 schaffner Exp $ */ +/* $Id: gamemine.c,v 1.29 2004-10-09 21:52:43 schaffner Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -23,7 +23,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #endif #ifdef RCS -static char rcsid[] = "$Id: gamemine.c,v 1.28 2004-08-28 23:17:45 schaffner Exp $"; +static char rcsid[] = "$Id: gamemine.c,v 1.29 2004-10-09 21:52:43 schaffner Exp $"; #endif #include @@ -191,20 +191,21 @@ int d1_tmap_num_unique(short d1_tmap_num) { */ short convert_d1_tmap_num(short d1_tmap_num) { switch (d1_tmap_num) { - case 0: case 2: case 4: case 5: // all refer to rock001 (exception to bijectivity rule) - return d1_pig_present ? 137 : 43; // grey (devil:95) + case 0: case 2: case 4: case 5: + // all refer to grey rock001 (exception to bijectivity rule) + return d1_pig_present ? 137 : 43; // (devil:95) case 1: return 0; case 3: return 1; // rock021 - case 6: return 270; // blue - case 7: return 271; // yellow - case 8: return 2; + case 6: return 270; // blue rock002 + case 7: return 271; // yellow rock265 + case 8: return 2; // rock004 case 9: return d1_pig_present ? 138 : 62; // purple (devil:179) - case 10: return 272; // red + case 10: return 272; // red rock006 case 11: return d1_pig_present ? 139 : 117; case 12: return d1_pig_present ? 140 : 12; //devil:43 - case 13: return 3; - case 14: return 4; - case 15: return 5; + case 13: return 3; // rock014 + case 14: return 4; // rock019 + case 15: return 5; // rock020 case 16: return 6; case 17: return d1_pig_present ? 141 : 52; case 18: return 129; @@ -218,7 +219,7 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 26: return 11; case 27: return 12; case 28: return d1_pig_present ? 145 : 11; //devil:43 - //range handled by default case, returns 13..21 + //range handled by default case, returns 13..21 (- 16) case 38: return 163; //devil:27 case 39: return 147; //31 case 40: return 22; @@ -239,11 +240,11 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 55: return 165; //devil:193 case 56: return 33; case 57: return 132; //devil:119 - // range handled by default case, returns 34..63 + // range handled by default case, returns 34..63 (- 24) case 88: return 197; //devil:15 - // range handled by default case, returns 64..106 + // range handled by default case, returns 64..106 (- 25) case 132: return 167; - // range handled by default case, returns 107..114 + // range handled by default case, returns 107..114 (- 26) case 141: return d1_pig_present ? 148 : 110; //devil:106 case 142: return 115; case 143: return 116; @@ -256,11 +257,11 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 150: return 122; case 151: return 123; case 152: return 124; - case 153: return 125; + case 153: return 125; // rock263 case 154: return d1_pig_present ? 150 : 27; - case 155: return 126; - case 156: return 200; - case 157: return 201; + case 155: return 126; // rock269 + case 156: return 200; // metl002 + case 157: return 201; // metl003 case 158: return 186; //devil:227 case 159: return 190; //devil:246 case 160: return d1_pig_present ? 151 : 206; @@ -279,9 +280,9 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 173: return 208; case 174: return d1_pig_present ? 158 : 202; case 175: return d1_pig_present ? 159 : 206; - // range handled by default case, returns 209..217 + // range handled by default case, returns 209..217 (+ 33) case 185: return d1_pig_present ? 160 : 217; - // range handled by default case, returns 218..224 + // range handled by default case, returns 218..224 (+ 32) case 193: return d1_pig_present ? 161 : 206; case 194: return d1_pig_present ? 162 : 203;//206; case 195: return d1_pig_present ? 166 : 234; @@ -292,10 +293,10 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 200: return d1_pig_present ? 169 : 206; //devil:204 case 201: return 227; case 202: return d1_pig_present ? 170 : 206; //devil:227 - // range handled by default case, returns 228..234 + // range handled by default case, returns 228..234 (+ 25) case 210: return d1_pig_present ? 171 : 234; //devil:242 case 211: return d1_pig_present ? 172 : 206; //devil:240 - // range handled by default case, returns 235..242 + // range handled by default case, returns 235..242 (+ 23) case 220: return d1_pig_present ? 173 : 242; //devil:240 case 221: return 243; case 222: return 244; @@ -307,62 +308,62 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 228: return 196;//248; matching names but not matching textures case 229: return d1_pig_present ? 175 : 15; //devil:66 case 230: return d1_pig_present ? 176 : 15; //devil:66 - // range handled by default case, returns 249..257 + // range handled by default case, returns 249..257 (+ 18) case 240: return d1_pig_present ? 177 : 6; //devil:132 case 241: return 130; //devil:131 case 242: return d1_pig_present ? 178 : 78; //devil:15 case 243: return d1_pig_present ? 180 : 33; //devil:38 case 244: return 258; case 245: return 259; - case 246: return d1_pig_present ? 181 : 321; + case 246: return d1_pig_present ? 181 : 321; // grate metl127 case 247: return 260; case 248: return 261; case 249: return 262; - case 250: return 340; // white entrance - case 251: return 412; // red entrance - case 252: return 410; // blue entrance - case 253: return 411; // yellow entrance - case 254: return 263; - case 255: return 264; - case 256: return 265; + case 250: return 340; // white doorframe metl126 + case 251: return 412; // red doorframe metl133 + case 252: return 410; // blue doorframe metl134 + case 253: return 411; // yellow doorframe metl135 + case 254: return 263; // metl136 + case 255: return 264; // metl139 + case 256: return 265; // metl140 case 257: return d1_pig_present ? 182 : 249;//246; brig001 case 258: return d1_pig_present ? 183 : 251;//246; brig002 case 259: return d1_pig_present ? 184 : 252;//246; brig003 case 260: return d1_pig_present ? 185 : 256;//246; brig004 - case 261: return 273; - case 262: return 274; - case 263: return d1_pig_present ? 187 : 281; - case 264: return 275; - case 265: return 276; + case 261: return 273; // exit01 + case 262: return 274; // exit02 + case 263: return d1_pig_present ? 187 : 281; // ceil001 + case 264: return 275; // ceil002 + case 265: return 276; // ceil003 case 266: return d1_pig_present ? 188 : 279; //devil:291 - // range handled by default case, returns 277..291 + // range handled by default case, returns 277..291 (+ 10) case 282: return 293; case 283: return d1_pig_present ? 189 : 295; case 284: return 295; case 285: return 296; case 286: return 298; - // range handled by default case, returns 300..310 - case 298: return d1_pig_present ? 191 : 364; //devil:374 - // range handled by default case, returns 311..326 - case 315: return d1_pig_present ? 192 : 361; // broken producer - // range handled by default case, returns 327..337 - case 327: return 352; - case 328: return 353; - case 329: return 354; - case 330: return 380; + // range handled by default case, returns 300..310 (+ 13) + case 298: return d1_pig_present ? 191 : 364; // devil:374 misc010 + // range handled by default case, returns 311..326 (+ 12) + case 315: return d1_pig_present ? 192 : 361; // bad producer misc044 + // range handled by default case, returns 327..337 (+ 11) + case 327: return 352; // arw01 + case 328: return 353; // misc17 + case 329: return 354; // fan01 + case 330: return 380; // mntr04 case 331: return 379;//373; matching names but not matching textures case 332: return 355;//344; matching names but not matching textures - case 333: return 409; // lava //devil:404 - case 334: return 356; - case 335: return 357; - case 336: return 358; - case 337: return 359; - case 338: return 360; - case 339: return 361; // producer - case 340: return 362; - case 341: return 364; - case 342: return 363; - case 343: return 366; + case 333: return 409; // lava misc11 //devil:404 + case 334: return 356; // ctrl04 + case 335: return 357; // ctrl01 + case 336: return 358; // ctrl02 + case 337: return 359; // ctrl03 + case 338: return 360; // misc14 + case 339: return 361; // producer misc16 + case 340: return 362; // misc049 + case 341: return 364; // misc060 + case 342: return 363; // blown01 + case 343: return 366; // misc061 case 344: return 365; case 345: return 368; case 346: return 376; @@ -381,7 +382,7 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 359: return 385;//386; matching names but not matching textures case 360: return 386; case 361: return 387; - case 362: return d1_pig_present ? 194 : 388; // mntr04a (devil: -1) + case 362: return d1_pig_present ? 194 : 388; // mntr04b (devil: -1) case 363: return 388; case 364: return 391; case 365: return 392; @@ -389,7 +390,7 @@ short convert_d1_tmap_num(short d1_tmap_num) { case 367: return 394; case 368: return 395; case 369: return 396; - case 370: return d1_pig_present ? 195 : 392; // mntr04b (devil: -1) + case 370: return d1_pig_present ? 195 : 392; // mntr04d (devil: -1) // range 371..584 handled by default case (wall01 and door frames) default: // ranges: @@ -462,8 +463,6 @@ int load_mine_data(CFILE *LoadFile) char *temptr; int mine_start = cftell(LoadFile); - d1_pig_present = cfexist(D1_PIGFILE); - oldsizeadjust=(sizeof(int)*2)+sizeof (vms_matrix); fuelcen_reset(); @@ -943,6 +942,18 @@ int load_mine_data_compiled(CFILE *LoadFile) ubyte bit_mask; d1_pig_present = cfexist(D1_PIGFILE); + if (d1_pig_present) { + CFILE * d1_Piggy_fp = cfopen( D1_PIGFILE, "rb" ); + switch (cfilelength(d1_Piggy_fp)) { + case D1_SHARE_BIG_PIGSIZE: + case D1_SHARE_10_PIGSIZE: + case D1_SHARE_PIGSIZE: + case D1_10_BIG_PIGSIZE: + case D1_10_PIGSIZE: + d1_pig_present = 0; + } + cfclose (d1_Piggy_fp); + } if (!strcmp(strchr(Gamesave_current_filename, '.'), ".sdl")) New_file_format_load = 0; // descent 1 shareware diff --git a/main/piggy.c b/main/piggy.c index cda439d5..6ec4f78c 100644 --- a/main/piggy.c +++ b/main/piggy.c @@ -1,4 +1,4 @@ -/* $Id: piggy.c,v 1.53 2004-08-28 23:17:45 schaffner Exp $ */ +/* $Id: piggy.c,v 1.54 2004-10-09 21:52:43 schaffner Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -24,7 +24,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #endif #ifdef RCS -static char rcsid[] = "$Id: piggy.c,v 1.53 2004-08-28 23:17:45 schaffner Exp $"; +static char rcsid[] = "$Id: piggy.c,v 1.54 2004-10-09 21:52:43 schaffner Exp $"; #endif @@ -2102,7 +2102,8 @@ void load_d1_bitmap_replacements() case D1_10_BIG_PIGSIZE: case D1_10_PIGSIZE: pig_data_start = 0; - Warning(D1_PIG_LOAD_FAILED ". descent.pig of v1.0 and all PC shareware versions not supported."); + Warning(D1_PIG_LOAD_FAILED ". descent.pig of v1.0 and all PC shareware versions not supported."); // KEEP THIS IN SYNC WITH d1_pig_present IN gamemine.c + cfclose (d1_Piggy_fp); return; break; default: -- 2.39.2