h6. [[OS SWI Calls]] h6(. » OS_SpriteOp h2. OS_SpriteOp h5. (SWI &2E) |_<^{width:4em}. Entry | | |<^. R0 |<^. "Reason code":#reason + "Area value":#area_value| |\2<^. All other registers dependent on reason code| |_<^{width:4em}. Exit | | |<^. R0 |<^. Preserved| |\2<^. All other registers dependent on reason code| h4. Use The purpose of this call is to perform different sprite related actions. h4. Notes The action performed depends on the reason code value in R0. h4(#area_value). Area Value The area value can be added to the reason code in R0 to specify how to select a sprite. R1 and R2 are often used to select a sprite. |_<^{width:4em}. Value |_<^{width:12em}. R1|_<^. R2 | |<^. +0 |<^. System Sprite area[1]|<^. Sprite name| |<^. +256 |<^. [[Format Of Sprite Area|Sprite area]]|<^. Sprite name| |<^. +512 |<^. [[Format Of Sprite Area|Sprite area]]|<^. [[Format Of Sprite|Sprite pointer]]| fn1. It is strongly recommended *not* to use the system sprite area. When using a sprite name, the string can be terminated with a space or control character (i.e. any character <= 32). Sprite name matching is case-insensitive, and only the first 12 bytes of the supplied name will be examined. This SWI is indirected via [[SpriteV]]. h4(#reason). Reason Codes |_<^{width:4em}. #|_<^{width:4em}. Hex #|_<^. Action| |<^. 2|<^. &02|<^. [[OS_SpriteOp 2|Screen save]] [2]| |<^. 3|<^. &03|<^. [[OS_SpriteOp 3|Screen load]]| |<^. 8|<^. &08|<^. [[OS_SpriteOp 8|Read area control block]]| |<^. 9|<^. &09|<^. [[OS_SpriteOp 9|Initialise sprite area]] [2]| |<^. 10|<^. &0A|<^. [[OS_SpriteOp 10|Load sprite file]] [2]| |<^. 11|<^. &0B|<^. [[OS_SpriteOp 11|Merge sprite file]]| |<^. 12|<^. &0C|<^. [[OS_SpriteOp 12|Save sprite file]]| |<^. 13|<^. &0D|<^. [[OS_SpriteOp 13|Return name]]| |<^. 14|<^. &0E|<^. [[OS_SpriteOp 14|Get sprite from cursor]] [2]| |<^. 15|<^. &0F|<^. [[OS_SpriteOp 15|Create sprite]] [2]| |<^. 16|<^. &10|<^. [[OS_SpriteOp 16|Get sprite from user coords]] [2]| |<^. 17|<^. &11|<^. [[OS_SpriteOp 17|Verify sprite area]]| |<^. 23|<^. &27|<^. [[OS_SpriteOp 23|Create/read/remove area metadata]] (Cerilica)| |<^. 24|<^. &18|<^. [[OS_SpriteOp 24|Select sprite/Get address]]| |<^. 25|<^. &19|<^. [[OS_SpriteOp 25|Delete sprite]] [2]| |<^. 26|<^. &1A|<^. [[OS_SpriteOp 26|Rename sprite]] [2]| |<^. 27|<^. &1B|<^. [[OS_SpriteOp 27|Copy sprite]] [2]| |<^. 28|<^. &1C|<^. [[OS_SpriteOp 28|Put sprite to screen]]| |<^. 29|<^. &1D|<^. [[OS_SpriteOp 29|Create mask]] [2]| |<^. 30|<^. &1E|<^. [[OS_SpriteOp 30|Remove mask]] [2]| |<^. 31|<^. &1F|<^. [[OS_SpriteOp 31|Insert row]] [2] [3]| |<^. 32|<^. &20|<^. [[OS_SpriteOp 32|Delete row]] [2] [3]| |<^. 33|<^. &21|<^. [[OS_SpriteOp 33|Flip about x axis]] [2]| |<^. 34|<^. &22|<^. [[OS_SpriteOp 34|Put sprite at user coords]]| |<^. 35|<^. &23|<^. [[OS_SpriteOp 35|Append sprite]] [1] [2]| |<^. 36|<^. &24|<^. [[OS_SpriteOp 36|Set pointer shape]] [1]| |<^. 37|<^. &25|<^. [[OS_SpriteOp 37|Create/read/remove palette]] [1]| |<^. 38|<^. &26|<^. [[OS_SpriteOp 38|Create/remove alpha]] [1] [2]| |<^. 39|<^. &27|<^. [[OS_SpriteOp 39|Create/read/remove sprite metadata]] (Cerilica)| |<^. 40|<^. &28|<^. [[OS_SpriteOp 40|Read sprite info]]| |<^. 41|<^. &29|<^. [[OS_SpriteOp 41|Read pixel colour]]| |<^. 42|<^. &2A|<^. [[OS_SpriteOp 42|Write pixel colour]] [2]| |<^. 43|<^. &2B|<^. [[OS_SpriteOp 43|Read pixel mask]]| |<^. 44|<^. &2C|<^. [[OS_SpriteOp 44|Write pixel mask]] [2]| |<^. 45|<^. &2D|<^. [[OS_SpriteOp 45|Insert column]] [2] [3]| |<^. 46|<^. &2E|<^. [[OS_SpriteOp 46|Delete column]] [2] [3]| |<^. 47|<^. &2F|<^. [[OS_SpriteOp 47|Flip about y axis]] [2]| |<^. 48|<^. &30|<^. [[OS_SpriteOp 48|Plot sprite mask]]| |<^. 49|<^. &31|<^. [[OS_SpriteOp 49|Plot mask at user coords]]| |<^. 50|<^. &32|<^. [[OS_SpriteOp 50|Plot mask scaled]] [1]| |<^. 51|<^. &33|<^. [[OS_SpriteOp 51|Paint char scaled]] [1]| |<^. 52|<^. &34|<^. [[OS_SpriteOp 52|Paint sprite scaled]] [1]| |<^. 53|<^. &35|<^. [[OS_SpriteOp 53|Put sprite grey scaled]] [1]| |<^. 54|<^. &36|<^. [[OS_SpriteOp 54|Remove left-hand wastage]] [2]| |<^. 55|<^. &37|<^. [[OS_SpriteOp 55|Plot mask transformed]] [1]| |<^. 56|<^. &38|<^. [[OS_SpriteOp 56|Plot sprite transformed]] [1]| |<^. 57|<^. &39|<^. [[OS_SpriteOp 57|Insert/delete rows]] [1] [2]| |<^. 58|<^. &3A|<^. [[OS_SpriteOp 58|Insert/delete columns]] [1] [2]| |<^. 60|<^. &3C|<^. [[OS_SpriteOp 60|Switch output to sprite]] [2]| |<^. 61|<^. &3D|<^. [[OS_SpriteOp 61|Switch output to mask]] [2]| |<^. 62|<^. &3E|<^. [[OS_SpriteOp 62|Read save area size]]| |<^. 65|<^. &41|<^. [[OS_SpriteOp 65|Tile sprite scaled]] [1]| fn1. Requires [[SpriteExtend]] module to be loaded. fn2. Not available via [[Wimp_SpriteOp]] fn3. Originally these calls were implemented directly in the kernel, but as of RISC OS 3.5 they require [[SpriteExtend]] to be loaded. h4. See also * [[Format Of Sprite]] * [[Format Of Sprite Area]] * [[SpriteV]] * [[Colour Mapping Descriptor]] * [[SpriteExtend]]