RISC OS 5.21 sprite changes
David Thomas
dave at davespace.co.uk
Sat Aug 27 12:33:03 BST 2022
Hey,
I might start using RO5's new sprite types in PrivateEye. OSLib ought to
know about them so I thought I'd sketch out the amendments needed and
pop them here for discussion. Here's what I've got so far.
I've used 'EXT_' here since 'NEW_' is already used.
> #define osspriteop_EXT_STYLE ((osspriteop_mode_word) 0x78000001u) /* includes osspriteop_NEW_STYLE */
> #define osspriteop_EXT_STYLE_MASK ((osspriteop_mode_word) 0x780F000Fu)
> #define osspriteop_EXT_XRES ((osspriteop_mode_word) 0x00000030u)
> #define osspriteop_EXT_XRES_SHIFT (4)
> #define osspriteop_EXT_YRES ((osspriteop_mode_word) 0x000000C0u)
> #define osspriteop_EXT_YRES_SHIFT (6)
> #define osspriteop_EXT_MODE_FLAGS ((osspriteop_mode_word) 0x0000FF00u)
> #define osspriteop_EXT_MODE_FLAGS_SHIFT (8)
> #define osspriteop_EXT_TYPE ((osspriteop_mode_word) 0x07F00000u)
> #define osspriteop_EXT_TYPE_SHIFT (20)
>
> #define osspriteop_EXT_RES_180 (0)
> #define osspriteop_EXT_RES_90 (1)
> #define osspriteop_EXT_RES_45 (2)
> #define osspriteop_EXT_RES_23 (3)
>
> #define osspriteop_TYPE_24BPP ((osspriteop_mode_word) 0x8u) /* RISC OS 3.5/6 defined this but didn't support it */
> #define osspriteop_TYPE_JPEG ((osspriteop_mode_word) 0x9u) /* RISC OS 3.5/6 defined this but didn't support it */
> #define osspriteop_TYPE_EXT ((osspriteop_mode_word) 0xFu) /* RISC OS 5.21+ */
> #define osspriteop_TYPE_16BPP4K ((osspriteop_mode_word) 0x10u) /* RISC OS 5.21+ */
> #define osspriteop_TYPE_420YCC ((osspriteop_mode_word) 0x11u) /* RISC OS 5.21+ */
> #define osspriteop_TYPE_422YCC ((osspriteop_mode_word) 0x12u) /* RISC OS 5.21+ */
>
> // os_MODE_FLAG_DATA_FORMAT_RGB is in OSLib
> // os_MODE_FLAG_DATA_FORMAT_CMYK is in OSLib but ought to be supplemented with the new MISC format:
> #define os_MODE_FLAG_DATA_FORMAT_MISC ((os_mode_flags) 0x1u) /* RISC OS 5.21+ */
> #define os_MODE_FLAG_DATA_FORMAT_YCBCR ((os_mode_flags) 0x2u) /* RISC OS 5.21+ */
>
> #define os_MODE_FLAG_DATA_SUBFORMAT_SHIFT (14)
>
> #define os_MODE_FLAG_DATA_SUBFORMAT_TBGR ((os_mode_flags) 0x0u) // technically this is on 4.32+
> #define os_MODE_FLAG_DATA_SUBFORMAT_TRGB ((os_mode_flags) 0x1u) /* RISC OS 5.21+ */
> #define os_MODE_FLAG_DATA_SUBFORMAT_ABGR ((os_mode_flags) 0x2u) /* RISC OS 5.21+ */
> #define os_MODE_FLAG_DATA_SUBFORMAT_ARGB ((os_mode_flags) 0x3u) /* RISC OS 5.21+ */
>
> #define os_MODE_FLAG_DATA_SUBFORMAT_KYMC ((os_mode_flags) 0x0u) // technically this is on 4.32+
>
> #define os_MODE_FLAG_DATA_SUBFORMAT_YCC601FULL ((os_mode_flags) 0x0u) /* RISC OS 5.21+ */
> #define os_MODE_FLAG_DATA_SUBFORMAT_YCC601VID ((os_mode_flags) 0x1u) /* RISC OS 5.21+ */
> #define os_MODE_FLAG_DATA_SUBFORMAT_YCC709FULL ((os_mode_flags) 0x2u) /* RISC OS 5.21+ */
> #define os_MODE_FLAG_DATA_SUBFORMAT_YCC709VID ((os_mode_flags) 0x3u) /* RISC OS 5.21+ */
Regards,
Dave
--
David Thomas dave at davespace.co.uk http://www.davespace.co.uk/
More information about the oslib-user
mailing list