@@ -73,7 +73,6 @@ static uploadfmt_t ImageVTF_VtfToFTE(fmtfmt_t f)
7373}
7474struct pendingtextureinfo * Image_ReadVTFFile (unsigned int flags , const char * fname , qbyte * filedata , size_t filesize )
7575{
76- //FIXME: cba with endian.
7776 struct vtf_s
7877 {
7978 char magic [4 ];
@@ -116,15 +115,31 @@ struct pendingtextureinfo *Image_ReadVTFFile(unsigned int flags, const char *fna
116115 if (memcmp (vtf -> magic , "VTF\0" , 4 ))
117116 return NULL ;
118117
118+ // erysdren: do endian swapping
119+ vtf -> major = LittleLong (vtf -> major );
120+ vtf -> minor = LittleLong (vtf -> minor );
121+ vtf -> headersize = LittleLong (vtf -> headersize );
122+ vtf -> width = LittleShort (vtf -> width );
123+ vtf -> height = LittleShort (vtf -> height );
124+ vtf -> flags = LittleLong (vtf -> flags );
125+ vtf -> numframes = LittleShort (vtf -> numframes );
126+ vtf -> firstframe = LittleShort (vtf -> firstframe );
127+ vtf -> pad1 = LittleLong (vtf -> pad1 );
128+ vtf -> reflectivity [0 ] = LittleFloat (vtf -> reflectivity [0 ]);
129+ vtf -> reflectivity [1 ] = LittleFloat (vtf -> reflectivity [1 ]);
130+ vtf -> reflectivity [2 ] = LittleFloat (vtf -> reflectivity [2 ]);
131+ vtf -> pad2 = LittleFloat (vtf -> pad2 );
132+ vtf -> bumpmapscale = LittleFloat (vtf -> bumpmapscale );
133+
119134 version = (vtf -> major <<16 )|vtf -> minor ;
120135 if (version > 0x00070005 )
121136 {
122137 Con_Printf ("%s: VTF version %i.%i is not supported\n" , fname , vtf -> major , vtf -> minor );
123138 return NULL ;
124139 }
125140
126- lrfmt = ( vtf -> lowresfmt_misaligned [0 ]<<0 )|(vtf -> lowresfmt_misaligned [1 ]<<16 )|(vtf -> lowresfmt_misaligned [2 ]<<16 )|(vtf -> lowresfmt_misaligned [3 ]<<24 );
127- vmffmt = vtf -> imgformat ;
141+ lrfmt = LittleLong (( vtf -> lowresfmt_misaligned [0 ]<<0 )|(vtf -> lowresfmt_misaligned [1 ]<<16 )|(vtf -> lowresfmt_misaligned [2 ]<<16 )|(vtf -> lowresfmt_misaligned [3 ]<<24 ) );
142+ vmffmt = LittleLong ( vtf -> imgformat ) ;
128143
129144 mips = NULL ;
130145 if (version >= 0x00070003 )
@@ -135,13 +150,13 @@ struct pendingtextureinfo *Image_ReadVTFFile(unsigned int flags, const char *fna
135150 unsigned int rtype ;
136151 unsigned int rdata ; //usually an offset.
137152 } * restable = (void * )(filedata + sizeof (* vtf ));
138- for (i = 0 ; i < vtf -> numresources ; i ++ , restable ++ )
153+ for (i = 0 ; i < LittleLong ( vtf -> numresources ) ; i ++ , restable ++ )
139154 {
140- if ((restable -> rtype & 0x00ffffff ) == 0x30 )
155+ if ((LittleLong ( restable -> rtype ) & 0x00ffffff ) == 0x30 )
141156 {
142157 mips = plugfuncs -> Malloc (sizeof (* mips ));
143158 mips -> extrafree = filedata ;
144- filedata += restable -> rdata ;
159+ filedata += LittleLong ( restable -> rdata ) ;
145160 break ;
146161 }
147162 //other unknown resource types.
0 commit comments