1 /*
2 Copyright (C) Prikol Software 1996-1997
3 Copyright (C) Aleksey Volynskov 1996-1997
4 Copyright (C) <ARembo@gmail.com> 2011
6 This file is part of the Doom2D:Rembo project.
8 Doom2D:Rembo is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License version 2 as
10 published by the Free Software Foundation.
12 Doom2D:Rembo is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, see <http://www.gnu.org/licenses/> or
19 write to the Free Software Foundation, Inc.,
20 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 */
24 #include <stdio.h>
25 #include <string.h>
26 #include <stdlib.h>
27 #include <sys/stat.h>
52 map_block_t blk;
76 }
81 #ifndef WIN32
89 #else
91 #endif
93 }
112 }
113 }
114 }
133 }
134 }
154 }
156 }
157 }
164 }
166 }
174 }
176 // build wad directory
182 wad_t w;
187 }
192 }
198 }
210 }
216 }
218 //fclose(h);
225 }
234 }
238 }
245 }
246 }
252 }
266 }
270 }
276 }
277 }
278 }
279 }
280 }
281 }
284 }
286 // allocate resources
287 // (called from M_startup)
295 }
297 // load resource
314 }
316 /*
317 // unused
318 void F_saveres(int r, void *p, dword o, dword l) {
319 FILE* fh = wadh[wad[r].f];
320 int oo = ftell(fh);
321 if (fseek(fh, wad[r].o + o, SEEK_SET) != 0) {
322 ERR_fatal("Ошибка при чтении файла");
323 }
324 myfwrite(p, l, 1, fh);
325 fseek(fh, oo, SEEK_SET);
326 }
327 */
329 // get resource id
335 }
336 }
338 }
340 // get resource id
345 }
347 }
351 }
353 // get sprite id
367 }
370 }
374 }
389 }
391 }
398 }
399 }
401 // reads bytes from file until CR
411 }
413 i++;
414 }
416 }
418 /*
419 // unused
420 // reads bytes from file until NUL
421 void F_readstrz (FILE* h,char *s,int m) {
422 int i = 0;
423 size_t len = 0;
424 static char c = 0;
425 while (i < m) {
426 c = 0;
427 len = myfreadc(&c, 1, 1, h);
428 if (len == 0 || c == 0) {
429 break;
430 }
431 s[i] = c;
432 i++;
433 }
434 s[i] = 0;
435 }
436 */
441 map_header_t hdr;
450 }
457 }
461 }
468 }
469 }
470 }
471 }
473 }
474 }
476 /*void F_freemus(void) {
478 int i;
480 if(!pat) return;
481 S_stopmusic();
482 free(pat);free(patp);
483 for(i=0;i<inum;++i) if(dmi[i]!=NULL) free(dmi[i]);
484 free(dmi);
485 pat=NULL;
487 }
488 */
490 /*void F_loadmus(char n[8]) {
491 int r,i,j;
492 FILE *h;
493 int o;
494 struct{
495 char id[4];
496 byte ver,pat;
497 word psz;
498 }d;
499 struct{byte t;char n[13];word r;}di;
501 if((r=F_findres(n))==-1) return;
502 fseek(h=wadh[wad[r].f],wad[r].o,SEEK_SET);
503 myfread(&d,1,sizeof(d),h);
504 if(memcmp(d.id,"DMM",4)!=0) return;
505 if(!(pat=malloc(d.psz<<2))) return;
506 myfread(pat,1,d.psz<<2,h);
507 myfread(&seqn,1,1,h);if(seqn) myfread(seq,1,seqn,h);
508 inum=0;myfread(&inum,1,1,h);
509 if(!(dmi=malloc(inum*4))) {free(pat);pat=NULL;return;}
510 if(!(patp=malloc((word)d.pat*32))) {free(pat);free(dmi);pat=NULL;return;}
511 for(i=0;i<inum;++i) {
512 dmi[i]=NULL;
513 myfread(&di,1,16,h);o=ftell(h);
514 for(r=0;r<12;++r) if(di.n[r]=='.') di.n[r]=0;
515 if((r=F_findres(di.n))==-1) continue;
516 if(!(dmi[i]=malloc(wad[r].l+8))) continue;
517 memset(dmi[i],0,16);
518 F_loadres(r,dmi[i],0,2);
519 F_loadres(r,(int*)dmi[i]+1,2,2);
520 F_loadres(r,(int*)dmi[i]+2,4,2);
521 F_loadres(r,(int*)dmi[i]+3,6,2);
522 F_loadres(r,(int*)dmi[i]+4,8,wad[r].l-8);
523 fseek(h,o,SEEK_SET);
524 }
525 for(i=r=0,j=(word)d.pat<<3;i<j;++i) {
526 patp[i]=r<<2;
527 while(pat[r++].v!=0x80);
528 }
529 }
530 */