aboutsummaryrefslogtreecommitdiff
path: root/common/endian.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/endian.h')
-rw-r--r--common/endian.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/endian.h b/common/endian.h
index a6b80f2451..fad9f3ccae 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) {