summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/sdl/progs/quake/common.c12
-rw-r--r--apps/plugins/sdl/progs/quake/common.h24
-rw-r--r--apps/plugins/sdl/progs/quake/model.c6
3 files changed, 23 insertions, 19 deletions
diff --git a/apps/plugins/sdl/progs/quake/common.c b/apps/plugins/sdl/progs/quake/common.c
index 5e842b09ae..5191af8c36 100644
--- a/apps/plugins/sdl/progs/quake/common.c
+++ b/apps/plugins/sdl/progs/quake/common.c
@@ -499,28 +499,28 @@ float FloatNoSwap (float f)
499} 499}
500 500
501// safe for unaligned accesses 501// safe for unaligned accesses
502short ReadLittleShort (char *l) 502short ReadLittleShort (unsigned char *l)
503{ 503{
504 return *(l + 0) | (*(l + 1) << 8); 504 return *(l + 0) | (*(l + 1) << 8);
505} 505}
506 506
507short ReadBigShort (char *l) 507short ReadBigShort (unsigned char *l)
508{ 508{
509 return *(l + 1) | (*(l + 0) << 8); 509 return *(l + 1) | (*(l + 0) << 8);
510} 510}
511 511
512int ReadLittleLong (char *l) 512int ReadLittleLong (unsigned char *l)
513{ 513{
514 return *(l + 0) | (*(l + 1) << 8) | (*(l + 2) << 16) | (*(l + 3) << 24); 514 return *(l + 0) | (*(l + 1) << 8) | (*(l + 2) << 16) | (*(l + 3) << 24);
515} 515}
516 516
517int ReadBigLong (char *l) 517int ReadBigLong (unsigned char *l)
518{ 518{
519 return *(l + 3) | (*(l + 2) << 8) | (*(l + 1) << 16) | (*(l + 0) << 24); 519 return *(l + 3) | (*(l + 2) << 8) | (*(l + 1) << 16) | (*(l + 0) << 24);
520} 520}
521 521
522// same 522// same
523float ReadLittleFloat (char *f) 523float ReadLittleFloat (unsigned char *f)
524{ 524{
525 union 525 union
526 { 526 {
@@ -536,7 +536,7 @@ float ReadLittleFloat (char *f)
536 return dat2.f; 536 return dat2.f;
537} 537}
538 538
539float ReadBigFloat (char *f) 539float ReadBigFloat (unsigned char *f)
540{ 540{
541 union 541 union
542 { 542 {
diff --git a/apps/plugins/sdl/progs/quake/common.h b/apps/plugins/sdl/progs/quake/common.h
index 8c6ab3a2dc..5f44b9fa43 100644
--- a/apps/plugins/sdl/progs/quake/common.h
+++ b/apps/plugins/sdl/progs/quake/common.h
@@ -96,21 +96,21 @@ extern int (*LittleLong) (int l);
96extern float (*BigFloat) (float l); 96extern float (*BigFloat) (float l);
97extern float (*LittleFloat) (float l); 97extern float (*LittleFloat) (float l);
98 98
99#define LittleShortUnaligned(x) ReadLittleShort(((char*)(&(x)))) 99#define LittleShortUnaligned(x) ReadLittleShort(((unsigned char*)(&(x))))
100#define BigShortUnaligned(x) ReadBigShort(((char*)&(x))) 100#define BigShortUnaligned(x) ReadBigShort(((unsigned char*)&(x)))
101#define LittleLongUnaligned(x) ReadLittleLong(((char*)&(x))) 101#define LittleLongUnaligned(x) ReadLittleLong(((unsigned char*)&(x)))
102#define BigLongUnaligned(x) ReadBigLong(((char*)&(x))) 102#define BigLongUnaligned(x) ReadBigLong(((unsigned char*)&(x)))
103#define LittleFloatUnaligned(x) ReadLittleFloat(((char*)&(x))) 103#define LittleFloatUnaligned(x) ReadLittleFloat(((unsigned char*)&(x)))
104#define BigFloatUnaligned(x) ReadBigFloat(((char*)&(x)) 104#define BigFloatUnaligned(x) ReadBigFloat(((unsigned char*)&(x))
105 105
106 106
107// for unaligned 107// for unaligned
108short ReadBigShort (char *l); 108short ReadBigShort (unsigned char *l);
109short ReadLittleShort (char *l); 109short ReadLittleShort (unsigned char *l);
110int ReadBigLong (char *l); 110int ReadBigLong (unsigned char *l);
111int ReadLittleLong (char *l); 111int ReadLittleLong (unsigned char *l);
112float ReadBigFloat (char *l); 112float ReadBigFloat (unsigned char *l);
113float ReadLittleFloat (char *l); 113float ReadLittleFloat (unsigned char *l);
114 114
115//============================================================================ 115//============================================================================
116 116
diff --git a/apps/plugins/sdl/progs/quake/model.c b/apps/plugins/sdl/progs/quake/model.c
index 4c16c7f0f5..5ac6dc6cb2 100644
--- a/apps/plugins/sdl/progs/quake/model.c
+++ b/apps/plugins/sdl/progs/quake/model.c
@@ -1165,7 +1165,11 @@ void Mod_LoadBrushModel (model_t *mod, void *buffer)
1165 mod_base = (byte *)header; 1165 mod_base = (byte *)header;
1166 1166
1167 for (i=0 ; i<sizeof(dheader_t)/4 ; i++) 1167 for (i=0 ; i<sizeof(dheader_t)/4 ; i++)
1168 ((int *)header)[i] = LittleLongUnaligned ( ((int *)header)[i]); 1168 {
1169 int before = ((int*)header)[i];
1170 ((int *)header)[i] = LittleLongUnaligned ( ((int *)header) [i]);
1171 assert(((int*)header)[i] == before); // sanity check of our *Unaligned routines
1172 }
1169 1173
1170// load into heap 1174// load into heap
1171 1175