amd64 fixes

This commit is contained in:
zicodxx 2007-02-07 12:14:10 +00:00
parent eebedcca6f
commit ac5cf1fe60
2 changed files with 19 additions and 8 deletions

View file

@ -3,6 +3,7 @@ D1X-Rebirth Changelog
20070207
--------
main/game.c: expanded help menu and fixed d1x help
iff/iff.c: amd64 fixes
20070206
--------

View file

@ -232,7 +232,7 @@ typedef struct fake_file {
int length;
} FFILE;
#define MAKE_SIG(a,b,c,d) (((long)(a)<<24)+((long)(b)<<16)+((c)<<8)+(d))
#define MAKE_SIG(a,b,c,d) (((int32_t)(a)<<24)+((int32_t)(b)<<16)+((c)<<8)+(d))
#define form_sig MAKE_SIG('F','O','R','M')
#define ilbm_sig MAKE_SIG('I','L','B','M')
@ -246,7 +246,7 @@ typedef struct fake_file {
#define dlta_sig MAKE_SIG('D','L','T','A')
#ifndef NDEBUG
//void printsig(long s)
//void printsig(int32_t s)
//{
// char *t=(char *) &s;
//
@ -255,8 +255,7 @@ typedef struct fake_file {
//}
#endif
#if 0 // adb: triggers bug in gcc 2.8.0/2.8.1
long get_sig(FFILE *f)
int32_t get_sig(FFILE *f)
{
char s[4];
@ -265,6 +264,7 @@ long get_sig(FFILE *f)
// if ((s[1]=cfgetc(f))==EOF) return(EOF);
// if ((s[0]=cfgetc(f))==EOF) return(EOF);
#ifndef WORDS_BIGENDIAN
if (f->position>=f->length) return EOF;
s[3] = f->data[f->position++];
if (f->position>=f->length) return EOF;
@ -273,12 +273,22 @@ long get_sig(FFILE *f)
s[1] = f->data[f->position++];
if (f->position>=f->length) return EOF;
s[0] = f->data[f->position++];
return(*((long *) s));
}
#else
if (f->position>=f->length) return EOF;
s[0] = f->data[f->position++];
if (f->position>=f->length) return EOF;
s[1] = f->data[f->position++];
if (f->position>=f->length) return EOF;
s[2] = f->data[f->position++];
if (f->position>=f->length) return EOF;
s[3] = f->data[f->position++];
#endif
int put_sig(long sig,FILE *f)
return(*((int32_t *) s));
}
int put_sig(int32_t sig,FILE *f)
{
char *s = (char *) &sig;