SHAREWARE fixes

This commit is contained in:
Bradley Bell 2002-07-30 04:52:01 +00:00
parent ec9d4d0bb5
commit c592b9d5fb
3 changed files with 109 additions and 60 deletions

View file

@ -111,7 +111,7 @@ void tmap_info_read(tmap_info *ti, CFILE *fp)
ti->slide_v = cfile_read_short(fp);
}
#ifdef MACINTOSH
//#ifdef MACINTOSH
#ifdef SHAREWARE
extern int exit_modelnum,destroyed_exit_modelnum, Num_bitmap_files;
@ -122,7 +122,7 @@ bitmap_index exitmodel_bm_load_sub( char * filename )
bitmap_index bitmap_num;
grs_bitmap * new;
ubyte newpal[256*3];
int i, iff_error; //reference parm to avoid warning message
int iff_error; //reference parm to avoid warning message
bitmap_num.index = 0;
@ -166,8 +166,6 @@ grs_bitmap *load_exit_model_bitmap(char *name)
void load_exit_models()
{
CFILE *exit_hamfile;
int i, j;
ubyte pal[768];
int start_num;
start_num = N_ObjBitmaps;
@ -213,7 +211,7 @@ void load_exit_models()
}
#endif // SHAREWARE
#endif // MACINTOSH
//#endif // MACINTOSH
//-----------------------------------------------------------------
// Read data from piggy.

View file

@ -16,7 +16,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#endif
#ifdef RCS
static char rcsid[] = "$Id: gamemine.c,v 1.4 2002-07-27 22:39:57 btb Exp $";
static char rcsid[] = "$Id: gamemine.c,v 1.5 2002-07-30 04:52:01 btb Exp $";
#endif
#include <stdio.h>
@ -610,24 +610,21 @@ void read_verts(int segnum,CFILE *LoadFile)
Segments[segnum].verts[i] = cfile_read_short(LoadFile);
}
// -- void read_special(int segnum,ubyte bit_mask,CFILE *LoadFile)
// -- {
// -- if (bit_mask & (1 << MAX_SIDES_PER_SEGMENT)) {
// -- // Read ubyte Segments[segnum].special
// -- // cfread( &Segments[segnum].special, sizeof(ubyte), 1, LoadFile );
// -- Segment2s[segnum].special = cfile_read_byte(LoadFile);
// -- // Read byte Segments[segnum].matcen_num
// -- // cfread( &Segments[segnum].matcen_num, sizeof(ubyte), 1, LoadFile );
// -- Segment2s[segnum].matcen_num = cfile_read_byte(LoadFile);
// -- // Read short Segments[segnum].value
// -- // cfread( &Segments[segnum].value, sizeof(short), 1, LoadFile );
// -- Segment2s[segnum].value = cfile_read_short(LoadFile);
// -- } else {
// -- Segment2s[segnum].special = 0;
// -- Segment2s[segnum].matcen_num = -1;
// -- Segment2s[segnum].value = 0;
// -- }
// -- }
void read_special(int segnum,ubyte bit_mask,CFILE *LoadFile)
{
if (bit_mask & (1 << MAX_SIDES_PER_SEGMENT)) {
// Read ubyte Segments[segnum].special
Segment2s[segnum].special = cfile_read_byte(LoadFile);
// Read byte Segments[segnum].matcen_num
Segment2s[segnum].matcen_num = cfile_read_byte(LoadFile);
// Read short Segments[segnum].value
Segment2s[segnum].value = cfile_read_short(LoadFile);
} else {
Segment2s[segnum].special = 0;
Segment2s[segnum].matcen_num = -1;
Segment2s[segnum].value = 0;
}
}
int load_mine_data_compiled(CFILE *LoadFile)
{
@ -659,7 +656,6 @@ int load_mine_data_compiled(CFILE *LoadFile)
for (i = 0; i < Num_vertices; i++)
cfile_read_vector( &(Vertices[i]), LoadFile);
for (segnum=0; segnum<Num_segments; segnum++ ) {
#ifdef EDITOR
@ -667,24 +663,28 @@ int load_mine_data_compiled(CFILE *LoadFile)
Segments[segnum].group = 0;
#endif
cfread( &bit_mask, sizeof(ubyte), 1, LoadFile );
printf("%4x ", cftell(LoadFile));
#if defined(SHAREWARE) && !defined(MACINTOSH)
// -- read_special(segnum,bit_mask,LoadFile);
read_verts(segnum,LoadFile);
read_children(segnum,bit_mask,LoadFile);
#else
read_children(segnum,bit_mask,LoadFile);
read_verts(segnum,LoadFile);
// --read_special(segnum,bit_mask,LoadFile);
#endif
bit_mask = cfile_read_byte(LoadFile);
#if defined(SHAREWARE) && !defined(MACINTOSH)
read_special(segnum,bit_mask,LoadFile);
read_verts(segnum,LoadFile);
read_children(segnum,bit_mask,LoadFile);
#else
read_children(segnum,bit_mask,LoadFile);
read_verts(segnum,LoadFile);
// --read_special(segnum,bit_mask,LoadFile);
#endif
Segments[segnum].objects = -1;
// Read fix Segments[segnum].static_light (shift down 5 bits, write as short)
// cfread( &temp_ushort, sizeof(temp_ushort), 1, LoadFile );
// temp_ushort = cfile_read_short(LoadFile);
// Segment2s[segnum].static_light = ((fix)temp_ushort) << 4;
#ifdef SHAREWARE
temp_ushort = cfile_read_short(LoadFile);
Segment2s[segnum].static_light = ((fix)temp_ushort) << 4;
#endif
//cfread( &Segments[segnum].static_light, sizeof(fix), 1, LoadFile );
// Read the walls as a 6 byte array
@ -692,12 +692,12 @@ int load_mine_data_compiled(CFILE *LoadFile)
Segments[segnum].sides[sidenum].pad = 0;
}
cfread( &bit_mask, sizeof(ubyte), 1, LoadFile );
bit_mask = cfile_read_byte(LoadFile);
for (sidenum=0; sidenum<MAX_SIDES_PER_SEGMENT; sidenum++) {
ubyte byte_wallnum;
if (bit_mask & (1 << sidenum)) {
cfread( &byte_wallnum, sizeof(ubyte), 1, LoadFile );
byte_wallnum = cfile_read_byte(LoadFile);
if ( byte_wallnum == 255 )
Segments[segnum].sides[sidenum].wall_num = -1;
else

View file

@ -16,7 +16,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#endif
#ifdef RCS
static char rcsid[] = "$Id: piggy.c,v 1.10 2002-07-29 02:32:32 btb Exp $";
static char rcsid[] = "$Id: piggy.c,v 1.11 2002-07-30 04:52:01 btb Exp $";
#endif
@ -134,13 +134,6 @@ int piggy_page_flushed = 0;
#define DBM_FLAG_ABM 64
typedef struct DiskSoundHeader {
char name[8];
int length;
int data_length;
int offset;
} __pack__ DiskSoundHeader;
ubyte BigPig = 0;
#ifdef MACINTOSH
@ -944,6 +937,7 @@ int read_hamfile()
{
CFILE * ham_fp = NULL;
int ham_id,ham_version;
int sound_offset = 0;
#ifdef MACINTOSH
char name[255];
#endif
@ -969,23 +963,69 @@ int read_hamfile()
return 0;
}
if (ham_version < 3) //mystery value
cfseek(ham_fp, 4, SEEK_CUR);
if (ham_version < 3) // hamfile contains sound info
sound_offset = cfile_read_int(ham_fp);
#ifndef EDITOR
{
int i;
//int i;
bm_read_all( ham_fp ); // Note connection to above if!!!
printf("position: %d\n", cftell(ham_fp));
cfread( GameBitmapXlat, sizeof(ushort)*MAX_BITMAP_FILES, 1, ham_fp );
for (i = 0; i < MAX_BITMAP_FILES; i++) {
// no swap here?
//for (i = 0; i < MAX_BITMAP_FILES; i++) {
//GameBitmapXlat[i] = INTEL_SHORT(GameBitmapXlat[i]);
//printf("GameBitmapXlat[%d] = %d\n", i, GameBitmapXlat[i]);
}
//}
}
#endif
if (ham_version < 3) {
int N_sounds;
int sound_start;
int header_size;
int i;
DiskSoundHeader sndh;
digi_sound temp_sound;
char temp_name_read[16];
int sbytes = 0;
cfseek(ham_fp, sound_offset, SEEK_SET);
N_sounds = cfile_read_int(ham_fp);
sound_start = cftell(ham_fp);
header_size = N_sounds * DISKSOUNDHEADER_SIZE;
//Read sounds
printf("%#4x: reading %d x DiskSoundHeader\n", cftell(ham_fp), N_sounds);
for (i=0; i<N_sounds; i++ ) {
DiskSoundHeader_read(&sndh, ham_fp);
temp_sound.length = sndh.length;
temp_sound.data = (ubyte *)(sndh.offset + header_size + sound_start);
SoundOffset[Num_sound_files] = sndh.offset + header_size + sound_start;
memcpy( temp_name_read, sndh.name, 8 );
temp_name_read[8] = 0;
piggy_register_sound( &temp_sound, temp_name_read, 1 );
#ifdef MACINTOSH
if (piggy_is_needed(i))
#endif // note link to if.
sbytes += sndh.length;
//mprintf(( 0, "%d bytes of sound\n", sbytes ));
}
SoundBits = d_malloc( sbytes + 16 );
if ( SoundBits == NULL )
Error( "Not enough memory to load sounds\n" );
mprintf(( 0, "\nBitmaps: %d KB Sounds: %d KB\n", Piggy_bitmap_cache_size/1024, sbytes/1024 ));
// piggy_read_sounds(ham_fp);
}
cfclose(ham_fp);
return 1;
@ -1037,12 +1077,9 @@ int read_sndfile()
//Read sounds
printf("%#4x: reading %d x DiskSoundHeader\n", cftell(snd_fp), N_sounds);
for (i=0; i<N_sounds; i++ ) {
cfread( sndh.name, 8, 1, snd_fp);
sndh.length = cfile_read_int(snd_fp);
sndh.data_length = cfile_read_int(snd_fp);
sndh.offset = cfile_read_int(snd_fp);
// cfread( &sndh, sizeof(DiskSoundHeader), 1, snd_fp );
DiskSoundHeader_read(&sndh, snd_fp);
//size -= sizeof(DiskSoundHeader);
temp_sound.length = sndh.length;
temp_sound.data = (ubyte *)(sndh.offset + header_size + sound_start);
@ -1130,13 +1167,16 @@ int piggy_init(void)
piggy_init_pigfile(DEFAULT_PIGFILE);
#endif
#ifndef SHAREWARE
ham_ok = read_hamfile();
snd_ok = read_sndfile();
#else
snd_ok = ham_ok = read_hamfile();
#endif
atexit(piggy_close);
mprintf ((0,"HamOk=%d SndOk=%d\n",ham_ok,snd_ok));
mprintf ((0,"HamOk=%d SndOk=%d\n",ham_ok,snd_ok));
return (ham_ok && snd_ok); //read ok
}
@ -1720,3 +1760,14 @@ void DiskBitmapHeader_read(DiskBitmapHeader *dbh, CFILE *fp)
dbh->avg_color = cfile_read_byte(fp);
dbh->offset = cfile_read_int(fp);
}
/*
* reads a DiskSoundHeader structure from a CFILE
*/
void DiskSoundHeader_read(DiskSoundHeader *dsh, CFILE *fp)
{
cfread(dsh->name, 8, 1, fp);
dsh->length = cfile_read_int(fp);
dsh->data_length = cfile_read_int(fp);
dsh->offset = cfile_read_int(fp);
}