; > &.Hdr.Sprite

; ***********************************
; ***    C h a n g e   L i s t    ***
; ***********************************

; Date       Name  Description
; ----       ----  -----------
; 22-Sep-87  TMD   Added SwitchOutputToSprite/Mask reason codes
;  8-Oct-87  NDR   Added sprite scaling and colour translation reason codes
;  8-Oct-87  NDR   Moved SwitchOutputToSprite/Mask reason codes to 60,61
;  6-Nov-87  NDR   Added SpriteReason_MergeSprites reason code (35)
; 12-Nov-87  NDR   Changed name from MergeSprites to AppendSprite
; 29-Jan-88  NDR   Added SpriteReason_SetPointerShape
;  2-Feb-88  NDR   Removed SpriteReason_Set/ReadScaleFactors/ColourTranslation
; 17-Feb-88  NDR   Added SpriteReason_ReadVduBlockSize
; 03-Mar-88  TMD   Renamed ReadVduBlockSize as ReadSaveAreaSize

;
; Reason codes for SWI SpriteOp, passed in R0
;

;SpriteReason_ReportError           * 0
;SpriteReason_ClaimSpace            * 1  ;*SSpace <n>
SpriteReason_ScreenSave             * 2
SpriteReason_ScreenLoad             * 3

SpriteReason_ReadAreaCB             * 8  ;*SInfo
SpriteReason_ClearSprites           * 9  ;*SNew
SpriteReason_LoadSpriteFile         * 10 ;*SLoad <filename>
SpriteReason_MergeSpriteFile        * 11 ;*SMerge <filename>
SpriteReason_SaveSpriteFile         * 12 ;*SSave <filename>
SpriteReason_ReturnName             * 13
SpriteReason_GetSprite              * 14 ;*SGet <n>
SpriteReason_CreateSprite           * 15
SpriteReason_GetSpriteUserCoords    * 16

SpriteReason_SelectSprite           * 24 ;*SChoose <n> [<m>]
SpriteReason_DeleteSprite           * 25 ;*SDelete <n>
SpriteReason_RenameSprite           * 26 ;*SRename
SpriteReason_CopySprite             * 27
SpriteReason_PutSprite              * 28
SpriteReason_CreateMask             * 29
SpriteReason_RemoveMask             * 30
SpriteReason_InsertRow              * 31
SpriteReason_DeleteRow              * 32
SpriteReason_FlipAboutXAxis         * 33
SpriteReason_PutSpriteUserCoords    * 34
SpriteReason_AppendSprite           * 35
SpriteReason_SetPointerShape        * 36

SpriteReason_ReadSpriteSize         * 40
SpriteReason_ReadPixelColour        * 41
SpriteReason_WritePixelColour       * 42
SpriteReason_ReadPixelMask          * 43
SpriteReason_WritePixelMask         * 44
SpriteReason_InsertCol              * 45
SpriteReason_DeleteCol              * 46
SpriteReason_FlipAboutYAxis         * 47
SpriteReason_PlotMask               * 48
SpriteReason_PlotMaskUserCoords     * 49

SpriteReason_PlotMaskScaled         * 50
SpriteReason_PaintCharScaled        * 51
SpriteReason_PutSpriteScaled        * 52
SpriteReason_PutSpriteGreyScaled    * 53

SpriteReason_SwitchOutputToSprite   * 60
SpriteReason_SwitchOutputToMask     * 61
SpriteReason_ReadSaveAreaSize       * 62

SpriteReason_BadReasonCode          * 63


 ^ 0

spNext    # 4  ;  Offset to next sprite
spName    # 12 ;  Sprite name
spWidth   # 4  ;  Width in words-1      (0..639)
spHeight  # 4  ;  Height in scanlines-1 (0..255/511)
spLBit    # 4  ;  First bit used (left end of row)
spRBit    # 4  ;  Last bit used (right end of row)
spImage   # 4  ;  Offset to sprite image
spTrans   # 4  ;  Offset to transparancy mask
spMode    # 4  ;  Mode sprite was defined in
spPalette # 0  ;  

SpriteCBsize * (spPalette-spNext)
SpriteNameSize * (spWidth-spName)
MaxSpritePaletteSize * 16*8

MaxSpriteWidth  * 32768  ;Words ???
MaxSpriteHeight * 32768  ;Rows


 ^ 0

saEnd        # 4 ; Offset to end of sprite area (ie total size)
saNumber     # 4 ; Number of sprites in area
saFirst      # 4 ; Offset to first sprite
saFree       # 4 ; Offset to first free word
saExten      # 0 ;

SpriteAreaCBsize * (saExten-saEnd)

        END
