public: add unaligned access handlers for new big endian port

This commit is contained in:
Xav101
2026-05-18 23:29:51 -04:00
committed by a1batross
parent fca347dd00
commit 074bd8b2b3
2 changed files with 12 additions and 5 deletions

View File

@@ -273,4 +273,11 @@ typedef int qboolean;
#define HostFourCC( a, b, c, d ) LittleFourCC( a, b, c, d ) #define HostFourCC( a, b, c, d ) LittleFourCC( a, b, c, d )
#endif #endif
static inline short UnalignedShort( short *x )
{
short y;
memcpy( &y, x, sizeof( y ) );
return y;
}
#endif // XASH_TYPES_H #endif // XASH_TYPES_H

View File

@@ -454,23 +454,23 @@ void R_StudioCalcBones( int frame, float s, const mstudiobone_t *pbone, const ms
if( panimvalue->num.valid > j ) if( panimvalue->num.valid > j )
{ {
v1[i] = panimvalue[j + 1].value; v1[i] = UnalignedShort( &( panimvalue[j + 1].value ) );
if( panimvalue->num.valid > j + 1 ) if( panimvalue->num.valid > j + 1 )
v2[i] = panimvalue[j + 2].value; v2[i] = UnalignedShort( &( panimvalue[j + 2].value ) );
else if( panimvalue->num.total > j + 1 ) else if( panimvalue->num.total > j + 1 )
v2[i] = v1[i]; v2[i] = v1[i];
else else
v2[i] = panimvalue[panimvalue->num.valid + 2].value; v2[i] = UnalignedShort( &( panimvalue[panimvalue->num.valid + 2].value ) );
} }
else else
{ {
v1[i] = panimvalue[panimvalue->num.valid].value; v1[i] = UnalignedShort( &( panimvalue[panimvalue->num.valid].value ) );
if( panimvalue->num.total > j + 1 ) if( panimvalue->num.total > j + 1 )
v2[i] = v1[i]; v2[i] = v1[i];
else else
v2[i] = panimvalue[panimvalue->num.valid + 2].value; v2[i] = UnalignedShort( &( panimvalue[panimvalue->num.valid + 2].value ) );
} }
v1[i] = pbone->value[i] + v1[i] * pbone->scale[i] + fadj; v1[i] = pbone->value[i] + v1[i] * pbone->scale[i] + fadj;