diff --git a/common/endian.h b/common/endian.h index a6b80f2451b7..fad9f3ccae80 100644 --- a/common/endian.h +++ b/common/endian.h @@ -573,15 +573,31 @@ inline uint32 READ_LE_UINT24(const void *ptr) { return (b[2] << 16) | (b[1] << 8) | (b[0]); } +inline void WRITE_LE_UINT24(void *ptr, uint32 value) { + uint8 *b = (uint8 *)ptr; + b[0] = (uint8)(value >> 0); + b[1] = (uint8)(value >> 8); + b[2] = (uint8)(value >> 16); +} + inline uint32 READ_BE_UINT24(const void *ptr) { const uint8 *b = (const uint8 *)ptr; return (b[0] << 16) | (b[1] << 8) | (b[2]); } +inline void WRITE_BE_UINT24(void *ptr, uint32 value) { + uint8 *b = (uint8 *)ptr; + b[0] = (uint8)(value >> 16); + b[1] = (uint8)(value >> 8); + b[2] = (uint8)(value >> 0); +} + #ifdef SCUMM_LITTLE_ENDIAN #define READ_UINT24(a) READ_LE_UINT24(a) +#define WRITE_UINT24(a,b) WRITE_LE_UINT24(a,b) #else #define READ_UINT24(a) READ_BE_UINT24(a) +#define WRITE_UINT24(a,b) WRITE_BE_UINT24(a,b) #endif inline int16 READ_LE_INT16(const void *ptr) {