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