Home » Archimedes archive » Acorn User » AU 1996-12 B.adf » Features » PCA/TBoxLibs/h/sprite
PCA/TBoxLibs/h/sprite
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
| Tape/disk: | Home » Archimedes archive » Acorn User » AU 1996-12 B.adf » Features |
| Filename: | PCA/TBoxLibs/h/sprite |
| Read OK: | ✔ |
| File size: | 465A bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
/****************************************************************************
* This source file was written by Acorn Computers Limited. It is part of *
* the RISCOS library for writing applications in C for RISC OS. It may be *
* used freely in the creation of programs for Archimedes. It should be *
* used with Acorn's C Compiler Release 3 or later. *
* *
***************************************************************************/
/*
* Title : sprite.h
* Purpose: provide access to RISC OS sprite facilities
*
*/
# ifndef __sprite_h
# define __sprite_h
#ifndef __kernel_h
#include "kernel.h"
#endif
#ifndef BOOL
#define BOOL int
#endif
/*
* This file contains functions for performing operations on sprites.
* For brevity only a brief description is given for each call. More details
* can be found in the Programmer's Reference manual under the section on
* Sprite SWIs.
*
*/
/******** Simple operations, use no sprite area, no name/sprite pointer ***/
typedef enum
{
sprite_nopalette = 0,
sprite_haspalette = 1
} sprite_palflag;
typedef struct
{
int xmag,ymag,xdiv,ydiv;
} sprite_factors;
typedef char sprite_pixtrans;
/* ----------------------------- sprite_screensave -------------------------
* Save the current graphics window as a sprite file, with optional palette.
* Equivalent to *ScreenSave.
*
*/
extern _kernel_oserror * sprite_screensave(const char *filename, sprite_palflag);
/* ---------------------------- sprite_screenload --------------------------
* Load a sprite file onto the screen. Equivalent to *ScreenLoad.
*
*/
extern _kernel_oserror * sprite_screenload(const char *filename);
/****** Operations on either system/user area, no name/sprite pointer *****/
typedef struct /* Format of a sprite area control block */
{
int size;
int number;
int sproff;
int freeoff;
} sprite_area;
typedef struct /* Format of a sprite header */
{
int next; /* Offset to next sprite */
char name[12]; /* Sprite name */
int width; /* Width in words-1 (0..639) */
int height; /* Height in scanlines-1 (0..255/511) */
int lbit; /* First bit used (left end of row) */
int rbit; /* Last bit used (right end of row) */
int image; /* Offset to sprite image */
int mask; /* Offset to transparency mask */
int mode; /* Mode sprite was defined in */
/* Palette data optionally follows here */
/* in memory */
} sprite_header;
#define sprite_mainarea ((sprite_area *) 0)
typedef void * sprite_ptr;
/* ------------------------ sprite_area_initialise -------------------------
* Initialise an area of memory as a sprite area
*
*/
void sprite_area_initialise(sprite_area *, int size);
/* ----------------------- sprite_area_readinfo ----------------------------
* Read information from a sprite area control block
*
*/
extern _kernel_oserror * sprite_area_readinfo(sprite_area *, sprite_area *resultarea);
/* --------------------------- sprite_area_reinit --------------------------
* Reinitialise a sprite area.
* If system area, then equivalent to *SNew
*
*/
extern _kernel_oserror * sprite_area_reinit(sprite_area *);
/* --------------------------- sprite_area_load ----------------------------
* Load a sprite file into a sprite area.
* If system area, then equivalent to *SLoad
*
*/
extern _kernel_oserror * sprite_area_load(sprite_area *, const char *filename);
/* ---------------------------- sprite_area_merge --------------------------
* Merge a sprite file with a sprite area.
* If system area, then equivalent to *SMerge
*
*/
extern _kernel_oserror * sprite_area_merge(sprite_area *, const char *filename);
/* ---------------------------- sprite_area_save ---------------------------
* Saves a sprite area as a sprite file.
* If system area, then equivalent to *SSave
*
*/
extern _kernel_oserror * sprite_area_save(sprite_area *, const char *filename);
/* ---------------------------- sprite_getname -----------------------------
* Return the name and length of name of the n'th sprite in a sprite area into
* a buffer.
*
*/
extern _kernel_oserror * sprite_getname(sprite_area *, void *buffer, int *length, int index);
/* ---------------------------- sprite_get ---------------------------------
* Copy a rectangle of screen delimited by the last pair of graphics cursor
* positions as a named sprite in a sprite area, optionally storing the
* palette with the sprite.
*
*/
extern _kernel_oserror * sprite_get(sprite_area *, char *name, sprite_palflag);
/* ---------------------------- sprite_get_rp ------------------------------
* Copy a rectangle of screen delimited by the last pair of graphics cursor
* positions as a named sprite in a sprite area, optionally storing the
* palette with the sprite. Address of sprite returned in resultaddress.
*
*/
extern _kernel_oserror * sprite_get_rp(sprite_area *, char *name, sprite_palflag,
sprite_ptr *resultaddress);
/* ---------------------------- sprite_get_given ---------------------------
* Copy a rectangle of screen delimited by the given pair of graphics
* coordinates as a named sprite in a sprite area, optionally storing the
* palette with the sprite.
*
*/
extern _kernel_oserror * sprite_get_given(sprite_area *, char *name, sprite_palflag,
int x0, int y0, int x1, int y1);
/* --------------------------- sprite_get_given_rp -------------------------
* Copy a rectangle of screen delimited by the given pair of graphics
* coordinates as a named sprite in a sprite area, optionally storing the
* palette with the sprite. Address of sprite returned in resultaddress.
*
*/
extern _kernel_oserror * sprite_get_given_rp(sprite_area *, char *name, sprite_palflag,
int x0, int y0, int x1, int y1,
sprite_ptr *resultaddress);
/* ------------------------------ sprite_create ----------------------------
* Create a named sprite in a sprite area of specified size and screen mode,
* optionally reserving space for palette data with the sprite.
*
*/
extern _kernel_oserror * sprite_create(sprite_area *, char *name, sprite_palflag,
int width, int height, int mode);
/* ------------------------------ sprite_create_rp -------------------------
* Create a named sprite in a sprite area of specified size and screen mode,
* optionally reserving space for palette data with the sprite.Address of
* sprite returned in resultaddress.
*
*/
extern _kernel_oserror * sprite_create_rp(sprite_area *, char *name, sprite_palflag,
int width, int height, int mode,
sprite_ptr *resultaddress);
/*********** Operations on system/user area, name/sprite pointer **********/
typedef enum
{
sprite_id_name = 0,
sprite_id_addr = 0x74527053 /* 'Magic' number ("SpRt") to test against */
} sprite_type;
typedef struct
{
union
{
char * name; /* Can use either name of sprite or address (faster) */
sprite_ptr addr;
} s;
sprite_type tag; /* User must tag the use of this structure manually */
} sprite_id;
/* ----------------------------- sprite_select -----------------------------
* Select the specified sprite for plotting using plot(0xed,x,y).
*
*/
extern _kernel_oserror * sprite_select(sprite_area *, sprite_id *);
/* ----------------------------- sprite_select_rp --------------------------
* Select the specified sprite for plotting using plot(0xed,x,y). Address of
* sprite returned in resultaddress.
*
*/
extern _kernel_oserror * sprite_select_rp(sprite_area *, sprite_id *,
sprite_ptr *resultaddress);
/* ----------------------------- sprite_delete -----------------------------
* Delete the specified sprite.
*
*/
extern _kernel_oserror * sprite_delete(sprite_area *, sprite_id *);
/* ----------------------------- sprite_rename -----------------------------
* Rename the specified sprite within the same sprite area.
*
*/
extern _kernel_oserror * sprite_rename(sprite_area *, sprite_id *, char *newname);
/* ----------------------------- sprite_copy -------------------------------
* Copy the specified sprite as another named sprite in the same sprite area.
*
*/
extern _kernel_oserror * sprite_copy(sprite_area *, sprite_id *, char *copyname);
/* ----------------------------- sprite_put --------------------------------
* Plot the specified sprite using the given GCOL action.
*
*/
extern _kernel_oserror * sprite_put(sprite_area *, sprite_id *, int gcol);
/* ----------------------------- sprite_put_given --------------------------
* Plot the specified sprite at (x,y) using the given GCOL action.
*
*/
extern _kernel_oserror * sprite_put_given(sprite_area *, sprite_id *, int gcol,
int x, int y);
_kernel_oserror * sprite_put_in_current(sprite_area *area, sprite_id *spr,
int gcol_action,
int x, int y);
/* --------------------------- sprite_put_scaled ---------------------------
* Plot the specified sprite at (x,y) using the given GCOL action, and scaled
* using the given scale factors.
*
*/
extern _kernel_oserror * sprite_put_scaled(sprite_area *, sprite_id *, int gcol,
int x, int y,
sprite_factors *factors,
sprite_pixtrans pixtrans[]);
/* ---------------------------- sprite_put_greyscaled ----------------------
* Plot the specified sprite at (x,y) using the given GCOL action, and
* greyscaled using the given scale factors.
*
*/
extern _kernel_oserror * sprite_put_greyscaled(sprite_area *, sprite_id *,
int x, int y,
sprite_factors *factors,
sprite_pixtrans pixtrans[]);
/* ----------------------------- sprite_put_mask ---------------------------
* Plot the specified sprite mask in the background colour.
*
*/
extern _kernel_oserror * sprite_put_mask(sprite_area *, sprite_id *);
/* ----------------------------- sprite_put_mask_given ---------------------
* Plot the specified sprite mask at (x,y) in the background colour.
*
*/
extern _kernel_oserror * sprite_put_mask_given(sprite_area *, sprite_id *, int x, int y);
/* --------------------------- sprite_put_mask_scaled ----------------------
* Plot the sprite mask at (x,y) scaled, using the background colour/action
*
*/
extern _kernel_oserror * sprite_put_mask_scaled(sprite_area *, sprite_id *,
int x, int y,
sprite_factors *factors);
/* ----------------------------- sprite_put_char_scaled --------------------
* Paint char scaled at (x,y)
*
*/
extern _kernel_oserror * sprite_put_char_scaled(char ch,
int x, int y,
sprite_factors *factors);
/* ---------------------------- sprite_create_mask -------------------------
* Create a mask definition for the specified sprite.
*
*/
extern _kernel_oserror * sprite_create_mask(sprite_area *, sprite_id *);
/* ---------------------------- sprite_remove_mask -------------------------
* Remove the mask definition from the specified sprite.
*
*/
extern _kernel_oserror * sprite_remove_mask(sprite_area *, sprite_id *);
/* ---------------------------- sprite_insert_row --------------------------
* Insert a row into the specified sprite at the given row.
*
*/
extern _kernel_oserror * sprite_insert_row(sprite_area *, sprite_id *, int row);
/* ---------------------------- sprite_delete_row --------------------------
* Delete the given row from the specified sprite.
*
*/
extern _kernel_oserror * sprite_delete_row(sprite_area *, sprite_id *, int row);
/* ---------------------------- sprite_insert_column -----------------------
* Insert a column into the specified sprite at the given column.
*
*/
extern _kernel_oserror * sprite_insert_column(sprite_area *, sprite_id *, int column);
/* ---------------------------- sprite_delete_column -----------------------
* Delete the given column from the specified sprite.
*
*/
extern _kernel_oserror * sprite_delete_column(sprite_area *, sprite_id *, int column);
/* ----------------------------- sprite_flip_x -----------------------------
* Flip the specified sprite about the x axis
*
*/
extern _kernel_oserror * sprite_flip_x(sprite_area *, sprite_id *);
/* ----------------------------- sprite_flip_y -----------------------------
* Flip the specified sprite about the y axis
*
*/
extern _kernel_oserror * sprite_flip_y(sprite_area *, sprite_id *);
typedef struct
{
int width;
int height;
int mask;
int mode;
} sprite_info;
/* -------------------------------- sprite_readsize ------------------------
* Read the size information for the specified sprite_id
*
*/
extern _kernel_oserror * sprite_readsize(sprite_area *, sprite_id *,
sprite_info *resultinfo);
typedef struct
{
int colour;
int tint;
} sprite_colour;
/* ----------------------------- sprite_readpixel --------------------------
* Read the colour of a given pixel in the specified sprite_id
*
*/
extern _kernel_oserror * sprite_readpixel(sprite_area *, sprite_id *,
int x, int y, sprite_colour *resultcolour);
/* ----------------------------- sprite_writepixel -------------------------
* Write the colour of a given pixel in the specified sprite_id
*
*/
extern _kernel_oserror * sprite_writepixel(sprite_area *, sprite_id *,
int x, int y, sprite_colour *colour);
typedef enum
{
sprite_masktransparent = 0,
sprite_masksolid = 1
} sprite_maskstate;
/* ------------------------------- sprite_readmask -------------------------
* Read the state of a given pixel in the specified sprite mask
*
*/
extern _kernel_oserror * sprite_readmask(sprite_area *, sprite_id *,
int x, int y, sprite_maskstate *resultmaskstate);
/* ------------------------------- sprite_writemask ------------------------
* Write the state of a given pixel in the specified sprite mask
*
*/
extern _kernel_oserror * sprite_writemask(sprite_area *, sprite_id *,
int x, int y, sprite_maskstate *maskstate);
typedef struct
{ int r[4];
} sprite_state;
/* ----------------------------- sprite_restorestate -----------------------
* Restores the old state after one of the sprite redirection calls
*
*/
extern _kernel_oserror *sprite_restorestate(sprite_state state);
/* ---------------------------- sprite_outputtosprite ----------------------
* Redirect VDU output to a sprite, saving old state
*
*/
extern _kernel_oserror *sprite_outputtosprite(sprite_area *area, sprite_id *id,
int *save_area, sprite_state *state);
/* ----------------------- sprite_outputtomask -----------------------------
* Redirects output to a sprite's transparency mask, saving old state
*
*/
extern _kernel_oserror *sprite_outputtomask(sprite_area *area, sprite_id *id,
int *save_area, sprite_state *state);
/* --------------------------- sprite_outputtoscreen -----------------------
* Redirect output back to screen, saving old state
*
*/
extern _kernel_oserror *sprite_outputtoscreen(int *save_area, sprite_state *state);
/* --------------------------- sprite_sizeof_spritecontext -----------------
* Get size of save area needed to save sprite context.
*
*/
extern _kernel_oserror *sprite_sizeof_spritecontext(sprite_area *area, sprite_id *id,
int *size);
/* ------------------------- sprite_sizeof_screencontext -------------------
* Get size of save area needed to save screen context.
*
*/
extern _kernel_oserror *sprite_sizeof_screencontext(int *size);
/* ------------------------ sprite_removewastage ---------------------------
* Removes left hand wastage from a sprite
*
*/
extern _kernel_oserror *sprite_removewastage(sprite_area *area, sprite_id *id);
/* new SWIs */
/* ------------------------ sprite_change_size -----------------------------
* General insert/delete rows/columns operations
*
*/
extern _kernel_oserror
*sprite_change_size
(sprite_area *area, sprite_id *id, BOOL rows, int at, int number);
/* Typedefs and functions for rotating sprites. */
typedef struct {int p0 [2], p1 [2], p2 [2], p3 [2];} sprite_pgm;
typedef int sprite_transmat [6];
typedef struct {int x0, y0, x1, y1;} sprite_box;
/* ------------------------ sprite_put_mask_trans ---------------------
* Put a box from the mask in background colours through a transformation matrix
*
*/
extern _kernel_oserror
*sprite_put_mask_trans
(sprite_area *, sprite_id *, sprite_box *, sprite_transmat *);
/* ------------------------ sprite_put_mask_pgm -----------------------
* Put a box from the mask in background colours to a parallelogram
*
*/
extern _kernel_oserror
*sprite_put_mask_pgm
(sprite_area *, sprite_id *, sprite_box *, sprite_pgm *);
/* ------------------------ sprite_put_trans --------------------------
* Put a box from the sprite through a transformation matrix
*
*/
extern _kernel_oserror
*sprite_put_trans
(sprite_area *, sprite_id *, int gcol_action, sprite_box *, sprite_transmat *, sprite_pixtrans *);
/* ------------------------ sprite_put_pgm ----------------------------
* Put a box from the sprite to a parallelogram
*
*/
extern _kernel_oserror
*sprite_put_pgm
(sprite_area *, sprite_id *, int gcol_action, sprite_box *, sprite_pgm *, sprite_pixtrans *);
# endif
/* end of sprite.h */
00000000 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |/***************|
00000010 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************|
*
00000040 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a |*************. *|
00000050 20 54 68 69 73 20 73 6f 75 72 63 65 20 66 69 6c | This source fil|
00000060 65 20 77 61 73 20 77 72 69 74 74 65 6e 20 62 79 |e was written by|
00000070 20 41 63 6f 72 6e 20 43 6f 6d 70 75 74 65 72 73 | Acorn Computers|
00000080 20 4c 69 6d 69 74 65 64 2e 20 49 74 20 69 73 20 | Limited. It is |
00000090 70 61 72 74 20 6f 66 20 20 20 2a 0a 20 2a 20 74 |part of *. * t|
000000a0 68 65 20 52 49 53 43 4f 53 20 6c 69 62 72 61 72 |he RISCOS librar|
000000b0 79 20 66 6f 72 20 77 72 69 74 69 6e 67 20 61 70 |y for writing ap|
000000c0 70 6c 69 63 61 74 69 6f 6e 73 20 69 6e 20 43 20 |plications in C |
000000d0 66 6f 72 20 52 49 53 43 20 4f 53 2e 20 49 74 20 |for RISC OS. It |
000000e0 6d 61 79 20 62 65 20 20 2a 0a 20 2a 20 75 73 65 |may be *. * use|
000000f0 64 20 66 72 65 65 6c 79 20 69 6e 20 74 68 65 20 |d freely in the |
00000100 63 72 65 61 74 69 6f 6e 20 6f 66 20 70 72 6f 67 |creation of prog|
00000110 72 61 6d 73 20 66 6f 72 20 41 72 63 68 69 6d 65 |rams for Archime|
00000120 64 65 73 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 |des. It should b|
00000130 65 20 20 20 20 20 2a 0a 20 2a 20 75 73 65 64 20 |e *. * used |
00000140 77 69 74 68 20 41 63 6f 72 6e 27 73 20 43 20 43 |with Acorn's C C|
00000150 6f 6d 70 69 6c 65 72 20 52 65 6c 65 61 73 65 20 |ompiler Release |
00000160 33 20 6f 72 20 6c 61 74 65 72 2e 20 20 20 20 20 |3 or later. |
00000170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000180 20 20 20 20 2a 0a 20 2a 20 20 20 20 20 20 20 20 | *. * |
00000190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
*
000001d0 20 20 2a 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | *. ***********|
000001e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************|
*
00000220 2f 0a 0a 2f 2a 0a 20 2a 20 54 69 74 6c 65 20 20 |/../*. * Title |
00000230 3a 20 73 70 72 69 74 65 2e 68 0a 20 2a 20 50 75 |: sprite.h. * Pu|
00000240 72 70 6f 73 65 3a 20 70 72 6f 76 69 64 65 20 61 |rpose: provide a|
00000250 63 63 65 73 73 20 74 6f 20 52 49 53 43 20 4f 53 |ccess to RISC OS|
00000260 20 73 70 72 69 74 65 20 66 61 63 69 6c 69 74 69 | sprite faciliti|
00000270 65 73 0a 20 2a 20 20 20 20 20 20 20 20 20 20 0a |es. * .|
00000280 20 2a 2f 0a 0a 23 20 69 66 6e 64 65 66 20 5f 5f | */..# ifndef __|
00000290 73 70 72 69 74 65 5f 68 0a 23 20 64 65 66 69 6e |sprite_h.# defin|
000002a0 65 20 5f 5f 73 70 72 69 74 65 5f 68 0a 0a 23 69 |e __sprite_h..#i|
000002b0 66 6e 64 65 66 20 5f 5f 6b 65 72 6e 65 6c 5f 68 |fndef __kernel_h|
000002c0 0a 23 69 6e 63 6c 75 64 65 20 22 6b 65 72 6e 65 |.#include "kerne|
000002d0 6c 2e 68 22 0a 23 65 6e 64 69 66 20 20 20 20 20 |l.h".#endif |
000002e0 20 20 20 20 20 20 20 0a 0a 23 69 66 6e 64 65 66 | ..#ifndef|
000002f0 20 42 4f 4f 4c 0a 23 64 65 66 69 6e 65 20 42 4f | BOOL.#define BO|
00000300 4f 4c 20 69 6e 74 0a 23 65 6e 64 69 66 0a 0a 0a |OL int.#endif...|
00000310 2f 2a 20 0a 20 2a 20 54 68 69 73 20 66 69 6c 65 |/* . * This file|
00000320 20 63 6f 6e 74 61 69 6e 73 20 66 75 6e 63 74 69 | contains functi|
00000330 6f 6e 73 20 66 6f 72 20 70 65 72 66 6f 72 6d 69 |ons for performi|
00000340 6e 67 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f 6e |ng operations on|
00000350 20 73 70 72 69 74 65 73 2e 0a 20 2a 20 46 6f 72 | sprites.. * For|
00000360 20 62 72 65 76 69 74 79 20 6f 6e 6c 79 20 61 20 | brevity only a |
00000370 62 72 69 65 66 20 64 65 73 63 72 69 70 74 69 6f |brief descriptio|
00000380 6e 20 69 73 20 67 69 76 65 6e 20 66 6f 72 20 65 |n is given for e|
00000390 61 63 68 20 63 61 6c 6c 2e 20 4d 6f 72 65 20 64 |ach call. More d|
000003a0 65 74 61 69 6c 73 0a 20 2a 20 63 61 6e 20 62 65 |etails. * can be|
000003b0 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 50 72 | found in the Pr|
000003c0 6f 67 72 61 6d 6d 65 72 27 73 20 52 65 66 65 72 |ogrammer's Refer|
000003d0 65 6e 63 65 20 6d 61 6e 75 61 6c 20 75 6e 64 65 |ence manual unde|
000003e0 72 20 74 68 65 20 73 65 63 74 69 6f 6e 20 6f 6e |r the section on|
000003f0 0a 20 2a 20 53 70 72 69 74 65 20 53 57 49 73 2e |. * Sprite SWIs.|
00000400 0a 20 2a 0a 20 2a 2f 0a 0a 0a 0a 2f 2a 2a 2a 2a |. *. */..../****|
00000410 2a 2a 2a 2a 20 53 69 6d 70 6c 65 20 6f 70 65 72 |**** Simple oper|
00000420 61 74 69 6f 6e 73 2c 20 75 73 65 20 6e 6f 20 73 |ations, use no s|
00000430 70 72 69 74 65 20 61 72 65 61 2c 20 6e 6f 20 6e |prite area, no n|
00000440 61 6d 65 2f 73 70 72 69 74 65 20 70 6f 69 6e 74 |ame/sprite point|
00000450 65 72 20 2a 2a 2a 2f 0a 0a 74 79 70 65 64 65 66 |er ***/..typedef|
00000460 20 65 6e 75 6d 0a 7b 0a 20 20 73 70 72 69 74 65 | enum.{. sprite|
00000470 5f 6e 6f 70 61 6c 65 74 74 65 20 20 3d 20 30 2c |_nopalette = 0,|
00000480 0a 20 20 73 70 72 69 74 65 5f 68 61 73 70 61 6c |. sprite_haspal|
00000490 65 74 74 65 20 3d 20 31 0a 7d 20 73 70 72 69 74 |ette = 1.} sprit|
000004a0 65 5f 70 61 6c 66 6c 61 67 3b 0a 0a 74 79 70 65 |e_palflag;..type|
000004b0 64 65 66 20 73 74 72 75 63 74 0a 7b 0a 20 20 69 |def struct.{. i|
000004c0 6e 74 20 78 6d 61 67 2c 79 6d 61 67 2c 78 64 69 |nt xmag,ymag,xdi|
000004d0 76 2c 79 64 69 76 3b 0a 7d 20 73 70 72 69 74 65 |v,ydiv;.} sprite|
000004e0 5f 66 61 63 74 6f 72 73 3b 0a 0a 74 79 70 65 64 |_factors;..typed|
000004f0 65 66 20 63 68 61 72 20 73 70 72 69 74 65 5f 70 |ef char sprite_p|
00000500 69 78 74 72 61 6e 73 3b 20 0a 0a 0a 0a 0a 2f 2a |ixtrans; ...../*|
00000510 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
00000520 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 |-------------- s|
00000530 70 72 69 74 65 5f 73 63 72 65 65 6e 73 61 76 65 |prite_screensave|
00000540 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
00000550 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 53 61 |----------. * Sa|
00000560 76 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 67 |ve the current g|
00000570 72 61 70 68 69 63 73 20 77 69 6e 64 6f 77 20 61 |raphics window a|
00000580 73 20 61 20 73 70 72 69 74 65 20 66 69 6c 65 2c |s a sprite file,|
00000590 20 77 69 74 68 20 6f 70 74 69 6f 6e 61 6c 20 70 | with optional p|
000005a0 61 6c 65 74 74 65 2e 0a 20 2a 20 45 71 75 69 76 |alette.. * Equiv|
000005b0 61 6c 65 6e 74 20 74 6f 20 2a 53 63 72 65 65 6e |alent to *Screen|
000005c0 53 61 76 65 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 |Save.. *. */.ext|
000005d0 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 |ern _kernel_oser|
000005e0 72 6f 72 20 2a 20 73 70 72 69 74 65 5f 73 63 72 |ror * sprite_scr|
000005f0 65 65 6e 73 61 76 65 28 63 6f 6e 73 74 20 63 68 |eensave(const ch|
00000600 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 70 |ar *filename, sp|
00000610 72 69 74 65 5f 70 61 6c 66 6c 61 67 29 3b 0a 20 |rite_palflag);. |
00000620 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |./* ------------|
00000630 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000640 20 73 70 72 69 74 65 5f 73 63 72 65 65 6e 6c 6f | sprite_screenlo|
00000650 61 64 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ad -------------|
00000660 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a |-------------. *|
00000670 20 4c 6f 61 64 20 61 20 73 70 72 69 74 65 20 66 | Load a sprite f|
00000680 69 6c 65 20 6f 6e 74 6f 20 74 68 65 20 73 63 72 |ile onto the scr|
00000690 65 65 6e 2e 20 45 71 75 69 76 61 6c 65 6e 74 20 |een. Equivalent |
000006a0 74 6f 20 2a 53 63 72 65 65 6e 4c 6f 61 64 2e 0a |to *ScreenLoad..|
000006b0 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b | *. */.extern _k|
000006c0 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 |ernel_oserror * |
000006d0 73 70 72 69 74 65 5f 73 63 72 65 65 6e 6c 6f 61 |sprite_screenloa|
000006e0 64 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 |d(const char *fi|
000006f0 6c 65 6e 61 6d 65 29 3b 0a 0a 0a 0a 2f 2a 2a 2a |lename);..../***|
00000700 2a 2a 2a 20 4f 70 65 72 61 74 69 6f 6e 73 20 6f |*** Operations o|
00000710 6e 20 65 69 74 68 65 72 20 73 79 73 74 65 6d 2f |n either system/|
00000720 75 73 65 72 20 61 72 65 61 2c 20 6e 6f 20 6e 61 |user area, no na|
00000730 6d 65 2f 73 70 72 69 74 65 20 70 6f 69 6e 74 65 |me/sprite pointe|
00000740 72 20 2a 2a 2a 2a 2a 2f 0a 0a 74 79 70 65 64 65 |r *****/..typede|
00000750 66 20 73 74 72 75 63 74 20 2f 2a 20 46 6f 72 6d |f struct /* Form|
00000760 61 74 20 6f 66 20 61 20 73 70 72 69 74 65 20 61 |at of a sprite a|
00000770 72 65 61 20 63 6f 6e 74 72 6f 6c 20 62 6c 6f 63 |rea control bloc|
00000780 6b 20 2a 2f 0a 7b 0a 20 20 69 6e 74 20 73 69 7a |k */.{. int siz|
00000790 65 3b 0a 20 20 69 6e 74 20 6e 75 6d 62 65 72 3b |e;. int number;|
000007a0 0a 20 20 69 6e 74 20 73 70 72 6f 66 66 3b 0a 20 |. int sproff;. |
000007b0 20 69 6e 74 20 66 72 65 65 6f 66 66 3b 0a 7d 20 | int freeoff;.} |
000007c0 73 70 72 69 74 65 5f 61 72 65 61 3b 0a 0a 74 79 |sprite_area;..ty|
000007d0 70 65 64 65 66 20 73 74 72 75 63 74 20 2f 2a 20 |pedef struct /* |
000007e0 46 6f 72 6d 61 74 20 6f 66 20 61 20 73 70 72 69 |Format of a spri|
000007f0 74 65 20 68 65 61 64 65 72 20 2a 2f 0a 7b 0a 20 |te header */.{. |
00000800 20 69 6e 74 20 20 6e 65 78 74 3b 20 20 20 20 20 | int next; |
00000810 20 2f 2a 20 20 4f 66 66 73 65 74 20 74 6f 20 6e | /* Offset to n|
00000820 65 78 74 20 73 70 72 69 74 65 20 20 20 20 20 20 |ext sprite |
00000830 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 63 | */. c|
00000840 68 61 72 20 6e 61 6d 65 5b 31 32 5d 3b 20 20 2f |har name[12]; /|
00000850 2a 20 20 53 70 72 69 74 65 20 6e 61 6d 65 20 20 |* Sprite name |
00000860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000870 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 69 6e 74 | */. int|
00000880 20 20 77 69 64 74 68 3b 20 20 20 20 20 2f 2a 20 | width; /* |
00000890 20 57 69 64 74 68 20 69 6e 20 77 6f 72 64 73 2d | Width in words-|
000008a0 31 20 20 20 20 20 20 28 30 2e 2e 36 33 39 29 20 |1 (0..639) |
000008b0 20 20 20 20 20 20 2a 2f 0a 20 20 69 6e 74 20 20 | */. int |
000008c0 68 65 69 67 68 74 3b 20 20 20 20 2f 2a 20 20 48 |height; /* H|
000008d0 65 69 67 68 74 20 69 6e 20 73 63 61 6e 6c 69 6e |eight in scanlin|
000008e0 65 73 2d 31 20 28 30 2e 2e 32 35 35 2f 35 31 31 |es-1 (0..255/511|
000008f0 29 20 20 20 2a 2f 0a 20 20 69 6e 74 20 20 6c 62 |) */. int lb|
00000900 69 74 3b 20 20 20 20 20 20 2f 2a 20 20 46 69 72 |it; /* Fir|
00000910 73 74 20 62 69 74 20 75 73 65 64 20 28 6c 65 66 |st bit used (lef|
00000920 74 20 65 6e 64 20 6f 66 20 72 6f 77 29 20 20 20 |t end of row) |
00000930 20 20 2a 2f 0a 20 20 69 6e 74 20 20 72 62 69 74 | */. int rbit|
00000940 3b 20 20 20 20 20 20 2f 2a 20 20 4c 61 73 74 20 |; /* Last |
00000950 62 69 74 20 75 73 65 64 20 28 72 69 67 68 74 20 |bit used (right |
00000960 65 6e 64 20 6f 66 20 72 6f 77 29 20 20 20 20 20 |end of row) |
00000970 2a 2f 0a 20 20 69 6e 74 20 20 69 6d 61 67 65 3b |*/. int image;|
00000980 20 20 20 20 20 2f 2a 20 20 4f 66 66 73 65 74 20 | /* Offset |
00000990 74 6f 20 73 70 72 69 74 65 20 69 6d 61 67 65 20 |to sprite image |
000009a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f | */|
000009b0 0a 20 20 69 6e 74 20 20 6d 61 73 6b 3b 20 20 20 |. int mask; |
000009c0 20 20 20 2f 2a 20 20 4f 66 66 73 65 74 20 74 6f | /* Offset to|
000009d0 20 74 72 61 6e 73 70 61 72 65 6e 63 79 20 6d 61 | transparency ma|
000009e0 73 6b 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 |sk */. |
000009f0 20 69 6e 74 20 20 6d 6f 64 65 3b 20 20 20 20 20 | int mode; |
00000a00 20 2f 2a 20 20 4d 6f 64 65 20 73 70 72 69 74 65 | /* Mode sprite|
00000a10 20 77 61 73 20 64 65 66 69 6e 65 64 20 69 6e 20 | was defined in |
00000a20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 | */. |
00000a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f | /|
00000a40 2a 20 20 50 61 6c 65 74 74 65 20 64 61 74 61 20 |* Palette data |
00000a50 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f |optionally follo|
00000a60 77 73 20 68 65 72 65 20 2a 2f 0a 20 20 20 20 20 |ws here */. |
00000a70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 | /* |
00000a80 20 69 6e 20 6d 65 6d 6f 72 79 20 20 20 20 20 20 | in memory |
00000a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000aa0 20 20 20 20 20 20 2a 2f 0a 7d 20 73 70 72 69 74 | */.} sprit|
00000ab0 65 5f 68 65 61 64 65 72 3b 0a 0a 23 64 65 66 69 |e_header;..#defi|
00000ac0 6e 65 20 73 70 72 69 74 65 5f 6d 61 69 6e 61 72 |ne sprite_mainar|
00000ad0 65 61 20 28 28 73 70 72 69 74 65 5f 61 72 65 61 |ea ((sprite_area|
00000ae0 20 2a 29 20 30 29 0a 0a 74 79 70 65 64 65 66 20 | *) 0)..typedef |
00000af0 76 6f 69 64 20 2a 20 73 70 72 69 74 65 5f 70 74 |void * sprite_pt|
00000b00 72 3b 0a 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |r;.../* --------|
00000b10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000b20 20 73 70 72 69 74 65 5f 61 72 65 61 5f 69 6e 69 | sprite_area_ini|
00000b30 74 69 61 6c 69 73 65 20 2d 2d 2d 2d 2d 2d 2d 2d |tialise --------|
00000b40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000b50 2d 0a 20 2a 20 49 6e 69 74 69 61 6c 69 73 65 20 |-. * Initialise |
00000b60 61 6e 20 61 72 65 61 20 6f 66 20 6d 65 6d 6f 72 |an area of memor|
00000b70 79 20 61 73 20 61 20 73 70 72 69 74 65 20 61 72 |y as a sprite ar|
00000b80 65 61 20 0a 20 2a 0a 20 2a 2f 0a 76 6f 69 64 20 |ea . *. */.void |
00000b90 73 70 72 69 74 65 5f 61 72 65 61 5f 69 6e 69 74 |sprite_area_init|
00000ba0 69 61 6c 69 73 65 28 73 70 72 69 74 65 5f 61 72 |ialise(sprite_ar|
00000bb0 65 61 20 2a 2c 20 69 6e 74 20 73 69 7a 65 29 3b |ea *, int size);|
00000bc0 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |../* -----------|
00000bd0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 |------------ spr|
00000be0 69 74 65 5f 61 72 65 61 5f 72 65 61 64 69 6e 66 |ite_area_readinf|
00000bf0 6f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |o --------------|
00000c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 |--------------. |
00000c10 2a 20 52 65 61 64 20 69 6e 66 6f 72 6d 61 74 69 |* Read informati|
00000c20 6f 6e 20 66 72 6f 6d 20 61 20 73 70 72 69 74 65 |on from a sprite|
00000c30 20 61 72 65 61 20 63 6f 6e 74 72 6f 6c 20 62 6c | area control bl|
00000c40 6f 63 6b 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 |ock. *. */.exter|
00000c50 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f |n _kernel_oserro|
00000c60 72 20 2a 20 73 70 72 69 74 65 5f 61 72 65 61 5f |r * sprite_area_|
00000c70 72 65 61 64 69 6e 66 6f 28 73 70 72 69 74 65 5f |readinfo(sprite_|
00000c80 61 72 65 61 20 2a 2c 20 73 70 72 69 74 65 5f 61 |area *, sprite_a|
00000c90 72 65 61 20 2a 72 65 73 75 6c 74 61 72 65 61 29 |rea *resultarea)|
00000ca0 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |;../* ----------|
00000cb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000cc0 2d 20 73 70 72 69 74 65 5f 61 72 65 61 5f 72 65 |- sprite_area_re|
00000cd0 69 6e 69 74 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |init -----------|
00000ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.|
00000cf0 20 2a 20 52 65 69 6e 69 74 69 61 6c 69 73 65 20 | * Reinitialise |
00000d00 61 20 73 70 72 69 74 65 20 61 72 65 61 2e 0a 20 |a sprite area.. |
00000d10 2a 20 49 66 20 73 79 73 74 65 6d 20 61 72 65 61 |* If system area|
00000d20 2c 20 74 68 65 6e 20 65 71 75 69 76 61 6c 65 6e |, then equivalen|
00000d30 74 20 74 6f 20 2a 53 4e 65 77 0a 20 2a 0a 20 2a |t to *SNew. *. *|
00000d40 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c |/.extern _kernel|
00000d50 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 |_oserror * sprit|
00000d60 65 5f 61 72 65 61 5f 72 65 69 6e 69 74 28 73 70 |e_area_reinit(sp|
00000d70 72 69 74 65 5f 61 72 65 61 20 2a 29 3b 0a 0a 2f |rite_area *);../|
00000d80 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |* --------------|
00000d90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 |------------- sp|
00000da0 72 69 74 65 5f 61 72 65 61 5f 6c 6f 61 64 20 2d |rite_area_load -|
00000db0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000dc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 4c |-----------. * L|
00000dd0 6f 61 64 20 61 20 73 70 72 69 74 65 20 66 69 6c |oad a sprite fil|
00000de0 65 20 69 6e 74 6f 20 61 20 73 70 72 69 74 65 20 |e into a sprite |
00000df0 61 72 65 61 2e 0a 20 2a 20 49 66 20 73 79 73 74 |area.. * If syst|
00000e00 65 6d 20 61 72 65 61 2c 20 74 68 65 6e 20 65 71 |em area, then eq|
00000e10 75 69 76 61 6c 65 6e 74 20 74 6f 20 2a 53 4c 6f |uivalent to *SLo|
00000e20 61 64 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e |ad. *. */.extern|
00000e30 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 | _kernel_oserror|
00000e40 20 2a 20 73 70 72 69 74 65 5f 61 72 65 61 5f 6c | * sprite_area_l|
00000e50 6f 61 64 28 73 70 72 69 74 65 5f 61 72 65 61 20 |oad(sprite_area |
00000e60 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 |*, const char *f|
00000e70 69 6c 65 6e 61 6d 65 29 3b 0a 20 0a 2f 2a 20 2d |ilename);. ./* -|
00000e80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000e90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 |----------- spri|
00000ea0 74 65 5f 61 72 65 61 5f 6d 65 72 67 65 20 2d 2d |te_area_merge --|
00000eb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000ec0 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 4d 65 72 67 |--------. * Merg|
00000ed0 65 20 61 20 73 70 72 69 74 65 20 66 69 6c 65 20 |e a sprite file |
00000ee0 77 69 74 68 20 61 20 73 70 72 69 74 65 20 61 72 |with a sprite ar|
00000ef0 65 61 2e 0a 20 2a 20 49 66 20 73 79 73 74 65 6d |ea.. * If system|
00000f00 20 61 72 65 61 2c 20 74 68 65 6e 20 65 71 75 69 | area, then equi|
00000f10 76 61 6c 65 6e 74 20 74 6f 20 2a 53 4d 65 72 67 |valent to *SMerg|
00000f20 65 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 |e. *. */.extern |
00000f30 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 |_kernel_oserror |
00000f40 2a 20 73 70 72 69 74 65 5f 61 72 65 61 5f 6d 65 |* sprite_area_me|
00000f50 72 67 65 28 73 70 72 69 74 65 5f 61 72 65 61 20 |rge(sprite_area |
00000f60 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 |*, const char *f|
00000f70 69 6c 65 6e 61 6d 65 29 3b 0a 20 0a 2f 2a 20 2d |ilename);. ./* -|
00000f80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000f90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 |----------- spri|
00000fa0 74 65 5f 61 72 65 61 5f 73 61 76 65 20 2d 2d 2d |te_area_save ---|
00000fb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00000fc0 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 53 61 76 65 |--------. * Save|
00000fd0 73 20 61 20 73 70 72 69 74 65 20 61 72 65 61 20 |s a sprite area |
00000fe0 61 73 20 61 20 73 70 72 69 74 65 20 66 69 6c 65 |as a sprite file|
00000ff0 2e 0a 20 2a 20 49 66 20 73 79 73 74 65 6d 20 61 |.. * If system a|
00001000 72 65 61 2c 20 74 68 65 6e 20 65 71 75 69 76 61 |rea, then equiva|
00001010 6c 65 6e 74 20 74 6f 20 2a 53 53 61 76 65 0a 20 |lent to *SSave. |
00001020 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 |*. */.extern _ke|
00001030 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 |rnel_oserror * s|
00001040 70 72 69 74 65 5f 61 72 65 61 5f 73 61 76 65 28 |prite_area_save(|
00001050 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 63 |sprite_area *, c|
00001060 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e |onst char *filen|
00001070 61 6d 65 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |ame);../* ------|
00001080 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001090 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 67 65 |------ sprite_ge|
000010a0 74 6e 61 6d 65 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |tname ----------|
000010b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000010c0 2d 2d 2d 0a 20 2a 20 52 65 74 75 72 6e 20 74 68 |---. * Return th|
000010d0 65 20 6e 61 6d 65 20 61 6e 64 20 6c 65 6e 67 74 |e name and lengt|
000010e0 68 20 6f 66 20 6e 61 6d 65 20 6f 66 20 74 68 65 |h of name of the|
000010f0 20 6e 27 74 68 20 73 70 72 69 74 65 20 69 6e 20 | n'th sprite in |
00001100 61 20 73 70 72 69 74 65 20 61 72 65 61 20 69 6e |a sprite area in|
00001110 74 6f 20 0a 20 2a 20 61 20 62 75 66 66 65 72 2e |to . * a buffer.|
00001120 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f |. *. */.extern _|
00001130 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a |kernel_oserror *|
00001140 20 73 70 72 69 74 65 5f 67 65 74 6e 61 6d 65 28 | sprite_getname(|
00001150 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 76 |sprite_area *, v|
00001160 6f 69 64 20 2a 62 75 66 66 65 72 2c 20 69 6e 74 |oid *buffer, int|
00001170 20 2a 6c 65 6e 67 74 68 2c 20 69 6e 74 20 69 6e | *length, int in|
00001180 64 65 78 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |dex);../* ------|
00001190 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000011a0 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 67 65 |------ sprite_ge|
000011b0 74 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |t --------------|
000011c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000011d0 2d 2d 2d 0a 20 2a 20 43 6f 70 79 20 61 20 72 65 |---. * Copy a re|
000011e0 63 74 61 6e 67 6c 65 20 6f 66 20 73 63 72 65 65 |ctangle of scree|
000011f0 6e 20 64 65 6c 69 6d 69 74 65 64 20 62 79 20 74 |n delimited by t|
00001200 68 65 20 6c 61 73 74 20 70 61 69 72 20 6f 66 20 |he last pair of |
00001210 67 72 61 70 68 69 63 73 20 63 75 72 73 6f 72 0a |graphics cursor.|
00001220 20 2a 20 70 6f 73 69 74 69 6f 6e 73 20 61 73 20 | * positions as |
00001230 61 20 6e 61 6d 65 64 20 73 70 72 69 74 65 20 69 |a named sprite i|
00001240 6e 20 61 20 73 70 72 69 74 65 20 61 72 65 61 2c |n a sprite area,|
00001250 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 73 74 6f 72 | optionally stor|
00001260 69 6e 67 20 74 68 65 0a 20 2a 20 70 61 6c 65 74 |ing the. * palet|
00001270 74 65 20 77 69 74 68 20 74 68 65 20 73 70 72 69 |te with the spri|
00001280 74 65 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 |te.. *. */.exter|
00001290 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f |n _kernel_oserro|
000012a0 72 20 2a 20 73 70 72 69 74 65 5f 67 65 74 28 73 |r * sprite_get(s|
000012b0 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 63 68 |prite_area *, ch|
000012c0 61 72 20 2a 6e 61 6d 65 2c 20 73 70 72 69 74 65 |ar *name, sprite|
000012d0 5f 70 61 6c 66 6c 61 67 29 3b 0a 0a 2f 2a 20 2d |_palflag);../* -|
000012e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000012f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 |----------- spri|
00001300 74 65 5f 67 65 74 5f 72 70 20 2d 2d 2d 2d 2d 2d |te_get_rp ------|
00001310 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001320 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 43 6f 70 79 |--------. * Copy|
00001330 20 61 20 72 65 63 74 61 6e 67 6c 65 20 6f 66 20 | a rectangle of |
00001340 73 63 72 65 65 6e 20 64 65 6c 69 6d 69 74 65 64 |screen delimited|
00001350 20 62 79 20 74 68 65 20 6c 61 73 74 20 70 61 69 | by the last pai|
00001360 72 20 6f 66 20 67 72 61 70 68 69 63 73 20 63 75 |r of graphics cu|
00001370 72 73 6f 72 0a 20 2a 20 70 6f 73 69 74 69 6f 6e |rsor. * position|
00001380 73 20 61 73 20 61 20 6e 61 6d 65 64 20 73 70 72 |s as a named spr|
00001390 69 74 65 20 69 6e 20 61 20 73 70 72 69 74 65 20 |ite in a sprite |
000013a0 61 72 65 61 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 |area, optionally|
000013b0 20 73 74 6f 72 69 6e 67 20 74 68 65 0a 20 2a 20 | storing the. * |
000013c0 70 61 6c 65 74 74 65 20 77 69 74 68 20 74 68 65 |palette with the|
000013d0 20 73 70 72 69 74 65 2e 20 41 64 64 72 65 73 73 | sprite. Address|
000013e0 20 6f 66 20 73 70 72 69 74 65 20 72 65 74 75 72 | of sprite retur|
000013f0 6e 65 64 20 69 6e 20 72 65 73 75 6c 74 61 64 64 |ned in resultadd|
00001400 72 65 73 73 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 |ress.. *. */.ext|
00001410 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 |ern _kernel_oser|
00001420 72 6f 72 20 2a 20 73 70 72 69 74 65 5f 67 65 74 |ror * sprite_get|
00001430 5f 72 70 28 73 70 72 69 74 65 5f 61 72 65 61 20 |_rp(sprite_area |
00001440 2a 2c 20 63 68 61 72 20 2a 6e 61 6d 65 2c 20 73 |*, char *name, s|
00001450 70 72 69 74 65 5f 70 61 6c 66 6c 61 67 2c 0a 20 |prite_palflag,. |
00001460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001470 20 20 20 20 20 20 20 20 73 70 72 69 74 65 5f 70 | sprite_p|
00001480 74 72 20 2a 72 65 73 75 6c 74 61 64 64 72 65 73 |tr *resultaddres|
00001490 73 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |s);../* --------|
000014a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000014b0 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 67 65 74 5f |---- sprite_get_|
000014c0 67 69 76 65 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |given ----------|
000014d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000014e0 2d 0a 20 2a 20 43 6f 70 79 20 61 20 72 65 63 74 |-. * Copy a rect|
000014f0 61 6e 67 6c 65 20 6f 66 20 73 63 72 65 65 6e 20 |angle of screen |
00001500 64 65 6c 69 6d 69 74 65 64 20 62 79 20 74 68 65 |delimited by the|
00001510 20 67 69 76 65 6e 20 70 61 69 72 20 6f 66 20 67 | given pair of g|
00001520 72 61 70 68 69 63 73 0a 20 2a 20 63 6f 6f 72 64 |raphics. * coord|
00001530 69 6e 61 74 65 73 20 61 73 20 61 20 6e 61 6d 65 |inates as a name|
00001540 64 20 73 70 72 69 74 65 20 69 6e 20 61 20 73 70 |d sprite in a sp|
00001550 72 69 74 65 20 61 72 65 61 2c 20 6f 70 74 69 6f |rite area, optio|
00001560 6e 61 6c 6c 79 20 73 74 6f 72 69 6e 67 20 74 68 |nally storing th|
00001570 65 0a 20 2a 20 70 61 6c 65 74 74 65 20 77 69 74 |e. * palette wit|
00001580 68 20 74 68 65 20 73 70 72 69 74 65 2e 0a 20 2a |h the sprite.. *|
00001590 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 |. */.extern _ker|
000015a0 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 |nel_oserror * sp|
000015b0 72 69 74 65 5f 67 65 74 5f 67 69 76 65 6e 28 73 |rite_get_given(s|
000015c0 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 63 68 |prite_area *, ch|
000015d0 61 72 20 2a 6e 61 6d 65 2c 20 73 70 72 69 74 65 |ar *name, sprite|
000015e0 5f 70 61 6c 66 6c 61 67 2c 0a 20 20 20 20 20 20 |_palflag,. |
000015f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001600 20 20 20 20 20 20 69 6e 74 20 78 30 2c 20 69 6e | int x0, in|
00001610 74 20 79 30 2c 20 69 6e 74 20 78 31 2c 20 69 6e |t y0, int x1, in|
00001620 74 20 79 31 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d |t y1);../* -----|
00001630 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001640 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 67 65 |------ sprite_ge|
00001650 74 5f 67 69 76 65 6e 5f 72 70 20 2d 2d 2d 2d 2d |t_given_rp -----|
00001660 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001670 2d 2d 2d 2d 0a 20 2a 20 43 6f 70 79 20 61 20 72 |----. * Copy a r|
00001680 65 63 74 61 6e 67 6c 65 20 6f 66 20 73 63 72 65 |ectangle of scre|
00001690 65 6e 20 64 65 6c 69 6d 69 74 65 64 20 62 79 20 |en delimited by |
000016a0 74 68 65 20 67 69 76 65 6e 20 70 61 69 72 20 6f |the given pair o|
000016b0 66 20 67 72 61 70 68 69 63 73 0a 20 2a 20 63 6f |f graphics. * co|
000016c0 6f 72 64 69 6e 61 74 65 73 20 61 73 20 61 20 6e |ordinates as a n|
000016d0 61 6d 65 64 20 73 70 72 69 74 65 20 69 6e 20 61 |amed sprite in a|
000016e0 20 73 70 72 69 74 65 20 61 72 65 61 2c 20 6f 70 | sprite area, op|
000016f0 74 69 6f 6e 61 6c 6c 79 20 73 74 6f 72 69 6e 67 |tionally storing|
00001700 20 74 68 65 0a 20 2a 20 70 61 6c 65 74 74 65 20 | the. * palette |
00001710 77 69 74 68 20 74 68 65 20 73 70 72 69 74 65 2e |with the sprite.|
00001720 20 41 64 64 72 65 73 73 20 6f 66 20 73 70 72 69 | Address of spri|
00001730 74 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 |te returned in r|
00001740 65 73 75 6c 74 61 64 64 72 65 73 73 2e 0a 20 2a |esultaddress.. *|
00001750 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 |. */.extern _ker|
00001760 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 |nel_oserror * sp|
00001770 72 69 74 65 5f 67 65 74 5f 67 69 76 65 6e 5f 72 |rite_get_given_r|
00001780 70 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c |p(sprite_area *,|
00001790 20 63 68 61 72 20 2a 6e 61 6d 65 2c 20 73 70 72 | char *name, spr|
000017a0 69 74 65 5f 70 61 6c 66 6c 61 67 2c 0a 20 20 20 |ite_palflag,. |
000017b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000017c0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 | int |
000017d0 78 30 2c 20 69 6e 74 20 79 30 2c 20 69 6e 74 20 |x0, int y0, int |
000017e0 78 31 2c 20 69 6e 74 20 79 31 2c 0a 20 20 20 20 |x1, int y1,. |
000017f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001800 20 20 20 20 20 20 20 20 20 20 20 73 70 72 69 74 | sprit|
00001810 65 5f 70 74 72 20 2a 72 65 73 75 6c 74 61 64 64 |e_ptr *resultadd|
00001820 72 65 73 73 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d |ress);../* -----|
00001830 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001840 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 |--------- sprite|
00001850 5f 63 72 65 61 74 65 20 2d 2d 2d 2d 2d 2d 2d 2d |_create --------|
00001860 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001870 2d 2d 2d 2d 0a 20 2a 20 43 72 65 61 74 65 20 61 |----. * Create a|
00001880 20 6e 61 6d 65 64 20 73 70 72 69 74 65 20 69 6e | named sprite in|
00001890 20 61 20 73 70 72 69 74 65 20 61 72 65 61 20 6f | a sprite area o|
000018a0 66 20 73 70 65 63 69 66 69 65 64 20 73 69 7a 65 |f specified size|
000018b0 20 61 6e 64 20 73 63 72 65 65 6e 20 6d 6f 64 65 | and screen mode|
000018c0 2c 0a 20 2a 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 |,. * optionally |
000018d0 72 65 73 65 72 76 69 6e 67 20 73 70 61 63 65 20 |reserving space |
000018e0 66 6f 72 20 70 61 6c 65 74 74 65 20 64 61 74 61 |for palette data|
000018f0 20 77 69 74 68 20 74 68 65 20 73 70 72 69 74 65 | with the sprite|
00001900 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 |.. *. */.extern |
00001910 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 |_kernel_oserror |
00001920 2a 20 73 70 72 69 74 65 5f 63 72 65 61 74 65 28 |* sprite_create(|
00001930 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 63 |sprite_area *, c|
00001940 68 61 72 20 2a 6e 61 6d 65 2c 20 73 70 72 69 74 |har *name, sprit|
00001950 65 5f 70 61 6c 66 6c 61 67 2c 0a 20 20 20 20 20 |e_palflag,. |
00001960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001970 20 20 20 20 69 6e 74 20 77 69 64 74 68 2c 20 69 | int width, i|
00001980 6e 74 20 68 65 69 67 68 74 2c 20 69 6e 74 20 6d |nt height, int m|
00001990 6f 64 65 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |ode);../* ------|
000019a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000019b0 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f |-------- sprite_|
000019c0 63 72 65 61 74 65 5f 72 70 20 2d 2d 2d 2d 2d 2d |create_rp ------|
000019d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000019e0 2d 2d 2d 0a 20 2a 20 43 72 65 61 74 65 20 61 20 |---. * Create a |
000019f0 6e 61 6d 65 64 20 73 70 72 69 74 65 20 69 6e 20 |named sprite in |
00001a00 61 20 73 70 72 69 74 65 20 61 72 65 61 20 6f 66 |a sprite area of|
00001a10 20 73 70 65 63 69 66 69 65 64 20 73 69 7a 65 20 | specified size |
00001a20 61 6e 64 20 73 63 72 65 65 6e 20 6d 6f 64 65 2c |and screen mode,|
00001a30 0a 20 2a 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 72 |. * optionally r|
00001a40 65 73 65 72 76 69 6e 67 20 73 70 61 63 65 20 66 |eserving space f|
00001a50 6f 72 20 70 61 6c 65 74 74 65 20 64 61 74 61 20 |or palette data |
00001a60 77 69 74 68 20 74 68 65 20 73 70 72 69 74 65 2e |with the sprite.|
00001a70 41 64 64 72 65 73 73 20 6f 66 0a 20 2a 20 73 70 |Address of. * sp|
00001a80 72 69 74 65 20 72 65 74 75 72 6e 65 64 20 69 6e |rite returned in|
00001a90 20 72 65 73 75 6c 74 61 64 64 72 65 73 73 2e 0a | resultaddress..|
00001aa0 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b | *. */.extern _k|
00001ab0 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 |ernel_oserror * |
00001ac0 73 70 72 69 74 65 5f 63 72 65 61 74 65 5f 72 70 |sprite_create_rp|
00001ad0 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 |(sprite_area *, |
00001ae0 63 68 61 72 20 2a 6e 61 6d 65 2c 20 73 70 72 69 |char *name, spri|
00001af0 74 65 5f 70 61 6c 66 6c 61 67 2c 0a 20 20 20 20 |te_palflag,. |
00001b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001b10 20 20 20 20 20 20 20 20 69 6e 74 20 77 69 64 74 | int widt|
00001b20 68 2c 20 69 6e 74 20 68 65 69 67 68 74 2c 20 69 |h, int height, i|
00001b30 6e 74 20 6d 6f 64 65 2c 0a 20 20 20 20 20 20 20 |nt mode,. |
00001b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001b50 20 20 20 20 20 73 70 72 69 74 65 5f 70 74 72 20 | sprite_ptr |
00001b60 2a 72 65 73 75 6c 74 61 64 64 72 65 73 73 29 3b |*resultaddress);|
00001b70 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 |.../*********** |
00001b80 4f 70 65 72 61 74 69 6f 6e 73 20 6f 6e 20 73 79 |Operations on sy|
00001b90 73 74 65 6d 2f 75 73 65 72 20 61 72 65 61 2c 20 |stem/user area, |
00001ba0 6e 61 6d 65 2f 73 70 72 69 74 65 20 70 6f 69 6e |name/sprite poin|
00001bb0 74 65 72 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a |ter **********/.|
00001bc0 0a 74 79 70 65 64 65 66 20 65 6e 75 6d 0a 7b 0a |.typedef enum.{.|
00001bd0 20 20 73 70 72 69 74 65 5f 69 64 5f 6e 61 6d 65 | sprite_id_name|
00001be0 20 3d 20 30 2c 0a 20 20 73 70 72 69 74 65 5f 69 | = 0,. sprite_i|
00001bf0 64 5f 61 64 64 72 20 3d 20 30 78 37 34 35 32 37 |d_addr = 0x74527|
00001c00 30 35 33 20 2f 2a 20 27 4d 61 67 69 63 27 20 6e |053 /* 'Magic' n|
00001c10 75 6d 62 65 72 20 28 22 53 70 52 74 22 29 20 74 |umber ("SpRt") t|
00001c20 6f 20 74 65 73 74 20 61 67 61 69 6e 73 74 20 2a |o test against *|
00001c30 2f 0a 7d 20 73 70 72 69 74 65 5f 74 79 70 65 3b |/.} sprite_type;|
00001c40 0a 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 |..typedef struct|
00001c50 0a 7b 0a 20 20 75 6e 69 6f 6e 0a 20 20 7b 0a 20 |.{. union. {. |
00001c60 20 20 20 63 68 61 72 20 2a 20 20 20 20 20 6e 61 | char * na|
00001c70 6d 65 3b 20 2f 2a 20 43 61 6e 20 75 73 65 20 65 |me; /* Can use e|
00001c80 69 74 68 65 72 20 6e 61 6d 65 20 6f 66 20 73 70 |ither name of sp|
00001c90 72 69 74 65 20 6f 72 20 61 64 64 72 65 73 73 20 |rite or address |
00001ca0 28 66 61 73 74 65 72 29 20 2a 2f 0a 20 20 20 20 |(faster) */. |
00001cb0 73 70 72 69 74 65 5f 70 74 72 20 61 64 64 72 3b |sprite_ptr addr;|
00001cc0 0a 20 20 7d 20 73 3b 0a 20 20 73 70 72 69 74 65 |. } s;. sprite|
00001cd0 5f 74 79 70 65 20 74 61 67 3b 20 20 20 2f 2a 20 |_type tag; /* |
00001ce0 55 73 65 72 20 6d 75 73 74 20 74 61 67 20 74 68 |User must tag th|
00001cf0 65 20 75 73 65 20 6f 66 20 74 68 69 73 20 73 74 |e use of this st|
00001d00 72 75 63 74 75 72 65 20 6d 61 6e 75 61 6c 6c 79 |ructure manually|
00001d10 20 2a 2f 0a 7d 20 73 70 72 69 74 65 5f 69 64 3b | */.} sprite_id;|
00001d20 0a 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.../* ----------|
00001d30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001d40 2d 2d 2d 20 73 70 72 69 74 65 5f 73 65 6c 65 63 |--- sprite_selec|
00001d50 74 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |t --------------|
00001d60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.|
00001d70 20 2a 20 53 65 6c 65 63 74 20 74 68 65 20 73 70 | * Select the sp|
00001d80 65 63 69 66 69 65 64 20 73 70 72 69 74 65 20 66 |ecified sprite f|
00001d90 6f 72 20 70 6c 6f 74 74 69 6e 67 20 75 73 69 6e |or plotting usin|
00001da0 67 20 70 6c 6f 74 28 30 78 65 64 2c 78 2c 79 29 |g plot(0xed,x,y)|
00001db0 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 |.. *. */.extern |
00001dc0 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 |_kernel_oserror |
00001dd0 2a 20 73 70 72 69 74 65 5f 73 65 6c 65 63 74 28 |* sprite_select(|
00001de0 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 |sprite_area *, s|
00001df0 70 72 69 74 65 5f 69 64 20 2a 29 3b 0a 0a 2f 2a |prite_id *);../*|
00001e00 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
00001e10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 |-------------- s|
00001e20 70 72 69 74 65 5f 73 65 6c 65 63 74 5f 72 70 20 |prite_select_rp |
00001e30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 53 65 |----------. * Se|
00001e50 6c 65 63 74 20 74 68 65 20 73 70 65 63 69 66 69 |lect the specifi|
00001e60 65 64 20 73 70 72 69 74 65 20 66 6f 72 20 70 6c |ed sprite for pl|
00001e70 6f 74 74 69 6e 67 20 75 73 69 6e 67 20 70 6c 6f |otting using plo|
00001e80 74 28 30 78 65 64 2c 78 2c 79 29 2e 20 41 64 64 |t(0xed,x,y). Add|
00001e90 72 65 73 73 20 6f 66 0a 20 2a 20 73 70 72 69 74 |ress of. * sprit|
00001ea0 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 |e returned in re|
00001eb0 73 75 6c 74 61 64 64 72 65 73 73 2e 0a 20 2a 0a |sultaddress.. *.|
00001ec0 20 2a 2f 20 0a 65 78 74 65 72 6e 20 5f 6b 65 72 | */ .extern _ker|
00001ed0 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 |nel_oserror * sp|
00001ee0 72 69 74 65 5f 73 65 6c 65 63 74 5f 72 70 28 73 |rite_select_rp(s|
00001ef0 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 |prite_area *, sp|
00001f00 72 69 74 65 5f 69 64 20 2a 2c 0a 20 20 20 20 20 |rite_id *,. |
00001f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001f20 20 20 20 20 20 20 20 73 70 72 69 74 65 5f 70 74 | sprite_pt|
00001f30 72 20 2a 72 65 73 75 6c 74 61 64 64 72 65 73 73 |r *resultaddress|
00001f40 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |);../* ---------|
00001f50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001f60 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 64 65 6c 65 |---- sprite_dele|
00001f70 74 65 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |te -------------|
00001f80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00001f90 0a 20 2a 20 44 65 6c 65 74 65 20 74 68 65 20 73 |. * Delete the s|
00001fa0 70 65 63 69 66 69 65 64 20 73 70 72 69 74 65 2e |pecified sprite.|
00001fb0 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f |. *. */.extern _|
00001fc0 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a |kernel_oserror *|
00001fd0 20 73 70 72 69 74 65 5f 64 65 6c 65 74 65 28 73 | sprite_delete(s|
00001fe0 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 |prite_area *, sp|
00001ff0 72 69 74 65 5f 69 64 20 2a 29 3b 0a 0a 2f 2a 20 |rite_id *);../* |
00002000 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002010 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 |------------- sp|
00002020 72 69 74 65 5f 72 65 6e 61 6d 65 20 2d 2d 2d 2d |rite_rename ----|
00002030 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002040 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 52 65 6e |---------. * Ren|
00002050 61 6d 65 20 74 68 65 20 73 70 65 63 69 66 69 65 |ame the specifie|
00002060 64 20 73 70 72 69 74 65 20 77 69 74 68 69 6e 20 |d sprite within |
00002070 74 68 65 20 73 61 6d 65 20 73 70 72 69 74 65 20 |the same sprite |
00002080 61 72 65 61 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 |area.. *. */.ext|
00002090 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 |ern _kernel_oser|
000020a0 72 6f 72 20 2a 20 73 70 72 69 74 65 5f 72 65 6e |ror * sprite_ren|
000020b0 61 6d 65 28 73 70 72 69 74 65 5f 61 72 65 61 20 |ame(sprite_area |
000020c0 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 2c 20 |*, sprite_id *, |
000020d0 63 68 61 72 20 2a 6e 65 77 6e 61 6d 65 29 3b 0a |char *newname);.|
000020e0 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |./* ------------|
000020f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002100 2d 20 73 70 72 69 74 65 5f 63 6f 70 79 20 2d 2d |- sprite_copy --|
00002110 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002120 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a |-------------. *|
00002130 20 43 6f 70 79 20 74 68 65 20 73 70 65 63 69 66 | Copy the specif|
00002140 69 65 64 20 73 70 72 69 74 65 20 61 73 20 61 6e |ied sprite as an|
00002150 6f 74 68 65 72 20 6e 61 6d 65 64 20 73 70 72 69 |other named spri|
00002160 74 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 73 |te in the same s|
00002170 70 72 69 74 65 20 61 72 65 61 2e 0a 20 2a 0a 20 |prite area.. *. |
00002180 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 |*/.extern _kerne|
00002190 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 |l_oserror * spri|
000021a0 74 65 5f 63 6f 70 79 28 73 70 72 69 74 65 5f 61 |te_copy(sprite_a|
000021b0 72 65 61 20 2a 2c 20 73 70 72 69 74 65 5f 69 64 |rea *, sprite_id|
000021c0 20 2a 2c 20 63 68 61 72 20 2a 63 6f 70 79 6e 61 | *, char *copyna|
000021d0 6d 65 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d |me);../* -------|
000021e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000021f0 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 70 75 |------ sprite_pu|
00002200 74 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |t --------------|
00002210 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002220 2d 2d 0a 20 2a 20 50 6c 6f 74 20 74 68 65 20 73 |--. * Plot the s|
00002230 70 65 63 69 66 69 65 64 20 73 70 72 69 74 65 20 |pecified sprite |
00002240 75 73 69 6e 67 20 74 68 65 20 67 69 76 65 6e 20 |using the given |
00002250 47 43 4f 4c 20 61 63 74 69 6f 6e 2e 0a 20 2a 0a |GCOL action.. *.|
00002260 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e | */.extern _kern|
00002270 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 |el_oserror * spr|
00002280 69 74 65 5f 70 75 74 28 73 70 72 69 74 65 5f 61 |ite_put(sprite_a|
00002290 72 65 61 20 2a 2c 20 73 70 72 69 74 65 5f 69 64 |rea *, sprite_id|
000022a0 20 2a 2c 20 69 6e 74 20 67 63 6f 6c 29 3b 0a 0a | *, int gcol);..|
000022b0 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |/* -------------|
000022c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000022d0 20 73 70 72 69 74 65 5f 70 75 74 5f 67 69 76 65 | sprite_put_give|
000022e0 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |n --------------|
000022f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 |------------. * |
00002300 50 6c 6f 74 20 74 68 65 20 73 70 65 63 69 66 69 |Plot the specifi|
00002310 65 64 20 73 70 72 69 74 65 20 61 74 20 28 78 2c |ed sprite at (x,|
00002320 79 29 20 75 73 69 6e 67 20 74 68 65 20 67 69 76 |y) using the giv|
00002330 65 6e 20 47 43 4f 4c 20 61 63 74 69 6f 6e 2e 0a |en GCOL action..|
00002340 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b | *. */.extern _k|
00002350 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 |ernel_oserror * |
00002360 73 70 72 69 74 65 5f 70 75 74 5f 67 69 76 65 6e |sprite_put_given|
00002370 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 |(sprite_area *, |
00002380 73 70 72 69 74 65 5f 69 64 20 2a 2c 20 69 6e 74 |sprite_id *, int|
00002390 20 67 63 6f 6c 2c 0a 20 20 20 20 20 20 20 20 20 | gcol,. |
000023a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000023b0 20 20 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 29 | int x, int y)|
000023c0 3b 0a 0a 0a 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 |;..._kernel_oser|
000023d0 72 6f 72 20 2a 20 73 70 72 69 74 65 5f 70 75 74 |ror * sprite_put|
000023e0 5f 69 6e 5f 63 75 72 72 65 6e 74 28 73 70 72 69 |_in_current(spri|
000023f0 74 65 5f 61 72 65 61 20 2a 61 72 65 61 2c 20 73 |te_area *area, s|
00002400 70 72 69 74 65 5f 69 64 20 2a 73 70 72 2c 0a 20 |prite_id *spr,. |
00002410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002420 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 | int |
00002430 67 63 6f 6c 5f 61 63 74 69 6f 6e 2c 0a 20 20 20 |gcol_action,. |
00002440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002450 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 78 2c | int x,|
00002460 20 69 6e 74 20 79 29 3b 0a 0a 0a 2f 2a 20 2d 2d | int y);.../* --|
00002470 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002480 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 |--------- sprite|
00002490 5f 70 75 74 5f 73 63 61 6c 65 64 20 2d 2d 2d 2d |_put_scaled ----|
000024a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000024b0 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 50 6c 6f 74 20 |-------. * Plot |
000024c0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 70 |the specified sp|
000024d0 72 69 74 65 20 61 74 20 28 78 2c 79 29 20 75 73 |rite at (x,y) us|
000024e0 69 6e 67 20 74 68 65 20 67 69 76 65 6e 20 47 43 |ing the given GC|
000024f0 4f 4c 20 61 63 74 69 6f 6e 2c 20 61 6e 64 20 73 |OL action, and s|
00002500 63 61 6c 65 64 0a 20 2a 20 75 73 69 6e 67 20 74 |caled. * using t|
00002510 68 65 20 67 69 76 65 6e 20 73 63 61 6c 65 20 66 |he given scale f|
00002520 61 63 74 6f 72 73 2e 0a 20 2a 0a 20 2a 2f 0a 65 |actors.. *. */.e|
00002530 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 |xtern _kernel_os|
00002540 65 72 72 6f 72 20 2a 20 73 70 72 69 74 65 5f 70 |error * sprite_p|
00002550 75 74 5f 73 63 61 6c 65 64 28 73 70 72 69 74 65 |ut_scaled(sprite|
00002560 5f 61 72 65 61 20 2a 2c 20 73 70 72 69 74 65 5f |_area *, sprite_|
00002570 69 64 20 2a 2c 20 69 6e 74 20 67 63 6f 6c 2c 0a |id *, int gcol,.|
00002580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002590 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 | int |
000025a0 78 2c 20 69 6e 74 20 79 2c 0a 20 20 20 20 20 20 |x, int y,. |
000025b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000025c0 20 20 20 20 20 20 73 70 72 69 74 65 5f 66 61 63 | sprite_fac|
000025d0 74 6f 72 73 20 2a 66 61 63 74 6f 72 73 2c 0a 20 |tors *factors,. |
000025e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000025f0 20 20 20 20 20 20 20 20 20 20 20 73 70 72 69 74 | sprit|
00002600 65 5f 70 69 78 74 72 61 6e 73 20 70 69 78 74 72 |e_pixtrans pixtr|
00002610 61 6e 73 5b 5d 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d |ans[]);../* ----|
00002620 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002630 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f |-------- sprite_|
00002640 70 75 74 5f 67 72 65 79 73 63 61 6c 65 64 20 2d |put_greyscaled -|
00002650 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002660 2d 2d 2d 2d 2d 0a 20 2a 20 50 6c 6f 74 20 74 68 |-----. * Plot th|
00002670 65 20 73 70 65 63 69 66 69 65 64 20 73 70 72 69 |e specified spri|
00002680 74 65 20 61 74 20 28 78 2c 79 29 20 75 73 69 6e |te at (x,y) usin|
00002690 67 20 74 68 65 20 67 69 76 65 6e 20 47 43 4f 4c |g the given GCOL|
000026a0 20 61 63 74 69 6f 6e 2c 20 61 6e 64 20 0a 20 2a | action, and . *|
000026b0 20 67 72 65 79 73 63 61 6c 65 64 20 75 73 69 6e | greyscaled usin|
000026c0 67 20 74 68 65 20 67 69 76 65 6e 20 73 63 61 6c |g the given scal|
000026d0 65 20 66 61 63 74 6f 72 73 2e 0a 20 2a 0a 20 2a |e factors.. *. *|
000026e0 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c |/.extern _kernel|
000026f0 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 |_oserror * sprit|
00002700 65 5f 70 75 74 5f 67 72 65 79 73 63 61 6c 65 64 |e_put_greyscaled|
00002710 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 |(sprite_area *, |
00002720 73 70 72 69 74 65 5f 69 64 20 2a 2c 0a 20 20 20 |sprite_id *,. |
00002730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002740 20 20 20 20 20 20 20 20 20 69 6e 74 20 78 2c 20 | int x, |
00002750 69 6e 74 20 79 2c 0a 20 20 20 20 20 20 20 20 20 |int y,. |
00002760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002770 20 20 20 73 70 72 69 74 65 5f 66 61 63 74 6f 72 | sprite_factor|
00002780 73 20 2a 66 61 63 74 6f 72 73 2c 0a 20 20 20 20 |s *factors,. |
00002790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000027a0 20 20 20 20 20 20 20 20 73 70 72 69 74 65 5f 70 | sprite_p|
000027b0 69 78 74 72 61 6e 73 20 70 69 78 74 72 61 6e 73 |ixtrans pixtrans|
000027c0 5b 5d 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d |[]);../* -------|
000027d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000027e0 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 70 75 |------ sprite_pu|
000027f0 74 5f 6d 61 73 6b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |t_mask ---------|
00002800 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002810 2d 2d 0a 20 2a 20 50 6c 6f 74 20 74 68 65 20 73 |--. * Plot the s|
00002820 70 65 63 69 66 69 65 64 20 73 70 72 69 74 65 20 |pecified sprite |
00002830 6d 61 73 6b 20 69 6e 20 74 68 65 20 62 61 63 6b |mask in the back|
00002840 67 72 6f 75 6e 64 20 63 6f 6c 6f 75 72 2e 0a 20 |ground colour.. |
00002850 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 |*. */.extern _ke|
00002860 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 |rnel_oserror * s|
00002870 70 72 69 74 65 5f 70 75 74 5f 6d 61 73 6b 28 73 |prite_put_mask(s|
00002880 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 |prite_area *, sp|
00002890 72 69 74 65 5f 69 64 20 2a 29 3b 0a 0a 2f 2a 20 |rite_id *);../* |
000028a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000028b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 |------------- sp|
000028c0 72 69 74 65 5f 70 75 74 5f 6d 61 73 6b 5f 67 69 |rite_put_mask_gi|
000028d0 76 65 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ven ------------|
000028e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 50 6c 6f |---------. * Plo|
000028f0 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 |t the specified |
00002900 73 70 72 69 74 65 20 6d 61 73 6b 20 61 74 20 28 |sprite mask at (|
00002910 78 2c 79 29 20 69 6e 20 74 68 65 20 62 61 63 6b |x,y) in the back|
00002920 67 72 6f 75 6e 64 20 63 6f 6c 6f 75 72 2e 20 0a |ground colour. .|
00002930 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b | *. */.extern _k|
00002940 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 |ernel_oserror * |
00002950 73 70 72 69 74 65 5f 70 75 74 5f 6d 61 73 6b 5f |sprite_put_mask_|
00002960 67 69 76 65 6e 28 73 70 72 69 74 65 5f 61 72 65 |given(sprite_are|
00002970 61 20 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 2a |a *, sprite_id *|
00002980 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 29 3b |, int x, int y);|
00002990 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |../* -----------|
000029a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000029b0 20 73 70 72 69 74 65 5f 70 75 74 5f 6d 61 73 6b | sprite_put_mask|
000029c0 5f 73 63 61 6c 65 64 20 2d 2d 2d 2d 2d 2d 2d 2d |_scaled --------|
000029d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 |--------------. |
000029e0 2a 20 50 6c 6f 74 20 74 68 65 20 73 70 72 69 74 |* Plot the sprit|
000029f0 65 20 6d 61 73 6b 20 61 74 20 28 78 2c 79 29 20 |e mask at (x,y) |
00002a00 73 63 61 6c 65 64 2c 20 75 73 69 6e 67 20 74 68 |scaled, using th|
00002a10 65 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 6f 6c |e background col|
00002a20 6f 75 72 2f 61 63 74 69 6f 6e 0a 20 2a 0a 20 2a |our/action. *. *|
00002a30 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c |/.extern _kernel|
00002a40 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 |_oserror * sprit|
00002a50 65 5f 70 75 74 5f 6d 61 73 6b 5f 73 63 61 6c 65 |e_put_mask_scale|
00002a60 64 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c |d(sprite_area *,|
00002a70 20 73 70 72 69 74 65 5f 69 64 20 2a 2c 0a 20 20 | sprite_id *,. |
00002a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002a90 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 78 2c | int x,|
00002aa0 20 69 6e 74 20 79 2c 0a 20 20 20 20 20 20 20 20 | int y,. |
00002ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002ac0 20 20 20 20 73 70 72 69 74 65 5f 66 61 63 74 6f | sprite_facto|
00002ad0 72 73 20 2a 66 61 63 74 6f 72 73 29 3b 0a 0a 2f |rs *factors);../|
00002ae0 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |* --------------|
00002af0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 |--------------- |
00002b00 73 70 72 69 74 65 5f 70 75 74 5f 63 68 61 72 5f |sprite_put_char_|
00002b10 73 63 61 6c 65 64 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |scaled ---------|
00002b20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 50 |-----------. * P|
00002b30 61 69 6e 74 20 63 68 61 72 20 73 63 61 6c 65 64 |aint char scaled|
00002b40 20 61 74 20 28 78 2c 79 29 0a 20 2a 0a 20 2a 2f | at (x,y). *. */|
00002b50 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f |.extern _kernel_|
00002b60 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 65 |oserror * sprite|
00002b70 5f 70 75 74 5f 63 68 61 72 5f 73 63 61 6c 65 64 |_put_char_scaled|
00002b80 28 63 68 61 72 20 63 68 2c 0a 20 20 20 20 20 20 |(char ch,. |
00002b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002ba0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 | int |
00002bb0 78 2c 20 69 6e 74 20 79 2c 0a 20 20 20 20 20 20 |x, int y,. |
00002bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00002bd0 20 20 20 20 20 20 20 20 20 20 20 20 73 70 72 69 | spri|
00002be0 74 65 5f 66 61 63 74 6f 72 73 20 2a 66 61 63 74 |te_factors *fact|
00002bf0 6f 72 73 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |ors);../* ------|
00002c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002c10 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 63 72 |------ sprite_cr|
00002c20 65 61 74 65 5f 6d 61 73 6b 20 2d 2d 2d 2d 2d 2d |eate_mask ------|
00002c30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002c40 2d 2d 2d 0a 20 2a 20 43 72 65 61 74 65 20 61 20 |---. * Create a |
00002c50 6d 61 73 6b 20 64 65 66 69 6e 69 74 69 6f 6e 20 |mask definition |
00002c60 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 |for the specifie|
00002c70 64 20 73 70 72 69 74 65 2e 0a 20 2a 0a 20 2a 2f |d sprite.. *. */|
00002c80 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f |.extern _kernel_|
00002c90 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 65 |oserror * sprite|
00002ca0 5f 63 72 65 61 74 65 5f 6d 61 73 6b 28 73 70 72 |_create_mask(spr|
00002cb0 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 72 69 |ite_area *, spri|
00002cc0 74 65 5f 69 64 20 2a 29 3b 0a 0a 2f 2a 20 2d 2d |te_id *);../* --|
00002cd0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 |---------- sprit|
00002cf0 65 5f 72 65 6d 6f 76 65 5f 6d 61 73 6b 20 2d 2d |e_remove_mask --|
00002d00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002d10 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 52 65 6d 6f 76 |-------. * Remov|
00002d20 65 20 74 68 65 20 6d 61 73 6b 20 64 65 66 69 6e |e the mask defin|
00002d30 69 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 73 |ition from the s|
00002d40 70 65 63 69 66 69 65 64 20 73 70 72 69 74 65 2e |pecified sprite.|
00002d50 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f |. *. */.extern _|
00002d60 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a |kernel_oserror *|
00002d70 20 73 70 72 69 74 65 5f 72 65 6d 6f 76 65 5f 6d | sprite_remove_m|
00002d80 61 73 6b 28 73 70 72 69 74 65 5f 61 72 65 61 20 |ask(sprite_area |
00002d90 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 29 3b |*, sprite_id *);|
00002da0 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |../* -----------|
00002db0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002dc0 2d 20 73 70 72 69 74 65 5f 69 6e 73 65 72 74 5f |- sprite_insert_|
00002dd0 72 6f 77 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |row ------------|
00002de0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 |--------------. |
00002df0 2a 20 49 6e 73 65 72 74 20 61 20 72 6f 77 20 69 |* Insert a row i|
00002e00 6e 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 |nto the specifie|
00002e10 64 20 73 70 72 69 74 65 20 61 74 20 74 68 65 20 |d sprite at the |
00002e20 67 69 76 65 6e 20 72 6f 77 2e 0a 20 2a 0a 20 2a |given row.. *. *|
00002e30 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c |/.extern _kernel|
00002e40 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 |_oserror * sprit|
00002e50 65 5f 69 6e 73 65 72 74 5f 72 6f 77 28 73 70 72 |e_insert_row(spr|
00002e60 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 72 69 |ite_area *, spri|
00002e70 74 65 5f 69 64 20 2a 2c 20 69 6e 74 20 72 6f 77 |te_id *, int row|
00002e80 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |);../* ---------|
00002e90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002ea0 2d 2d 2d 20 73 70 72 69 74 65 5f 64 65 6c 65 74 |--- sprite_delet|
00002eb0 65 5f 72 6f 77 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |e_row ----------|
00002ec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002ed0 0a 20 2a 20 44 65 6c 65 74 65 20 74 68 65 20 67 |. * Delete the g|
00002ee0 69 76 65 6e 20 72 6f 77 20 66 72 6f 6d 20 74 68 |iven row from th|
00002ef0 65 20 73 70 65 63 69 66 69 65 64 20 73 70 72 69 |e specified spri|
00002f00 74 65 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 |te.. *. */.exter|
00002f10 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f |n _kernel_oserro|
00002f20 72 20 2a 20 73 70 72 69 74 65 5f 64 65 6c 65 74 |r * sprite_delet|
00002f30 65 5f 72 6f 77 28 73 70 72 69 74 65 5f 61 72 65 |e_row(sprite_are|
00002f40 61 20 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 2a |a *, sprite_id *|
00002f50 2c 20 69 6e 74 20 72 6f 77 29 3b 0a 0a 2f 2a 20 |, int row);../* |
00002f60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00002f70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 |------------ spr|
00002f80 69 74 65 5f 69 6e 73 65 72 74 5f 63 6f 6c 75 6d |ite_insert_colum|
00002f90 6e 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |n --------------|
00002fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 49 6e 73 |---------. * Ins|
00002fb0 65 72 74 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 74 |ert a column int|
00002fc0 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 |o the specified |
00002fd0 73 70 72 69 74 65 20 61 74 20 74 68 65 20 67 69 |sprite at the gi|
00002fe0 76 65 6e 20 63 6f 6c 75 6d 6e 2e 20 0a 20 2a 0a |ven column. . *.|
00002ff0 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e | */.extern _kern|
00003000 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 70 72 |el_oserror * spr|
00003010 69 74 65 5f 69 6e 73 65 72 74 5f 63 6f 6c 75 6d |ite_insert_colum|
00003020 6e 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c |n(sprite_area *,|
00003030 20 73 70 72 69 74 65 5f 69 64 20 2a 2c 20 69 6e | sprite_id *, in|
00003040 74 20 63 6f 6c 75 6d 6e 29 3b 0a 0a 2f 2a 20 2d |t column);../* -|
00003050 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003060 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 69 |----------- spri|
00003070 74 65 5f 64 65 6c 65 74 65 5f 63 6f 6c 75 6d 6e |te_delete_column|
00003080 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
00003090 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 44 65 6c 65 |--------. * Dele|
000030a0 74 65 20 74 68 65 20 67 69 76 65 6e 20 63 6f 6c |te the given col|
000030b0 75 6d 6e 20 66 72 6f 6d 20 74 68 65 20 73 70 65 |umn from the spe|
000030c0 63 69 66 69 65 64 20 73 70 72 69 74 65 2e 0a 20 |cified sprite.. |
000030d0 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 |*. */.extern _ke|
000030e0 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 |rnel_oserror * s|
000030f0 70 72 69 74 65 5f 64 65 6c 65 74 65 5f 63 6f 6c |prite_delete_col|
00003100 75 6d 6e 28 73 70 72 69 74 65 5f 61 72 65 61 20 |umn(sprite_area |
00003110 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 2c 20 |*, sprite_id *, |
00003120 69 6e 74 20 63 6f 6c 75 6d 6e 29 3b 0a 0a 2f 2a |int column);../*|
00003130 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
00003140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 |-------------- s|
00003150 70 72 69 74 65 5f 66 6c 69 70 5f 78 20 2d 2d 2d |prite_flip_x ---|
00003160 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003170 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 46 6c |----------. * Fl|
00003180 69 70 20 74 68 65 20 73 70 65 63 69 66 69 65 64 |ip the specified|
00003190 20 73 70 72 69 74 65 20 61 62 6f 75 74 20 74 68 | sprite about th|
000031a0 65 20 78 20 61 78 69 73 0a 20 2a 0a 20 2a 2f 0a |e x axis. *. */.|
000031b0 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f |extern _kernel_o|
000031c0 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 65 5f |serror * sprite_|
000031d0 66 6c 69 70 5f 78 28 73 70 72 69 74 65 5f 61 72 |flip_x(sprite_ar|
000031e0 65 61 20 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 |ea *, sprite_id |
000031f0 2a 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |*);../* --------|
00003200 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003210 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 66 6c 69 |----- sprite_fli|
00003220 70 5f 79 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |p_y ------------|
00003230 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003240 2d 0a 20 2a 20 46 6c 69 70 20 74 68 65 20 73 70 |-. * Flip the sp|
00003250 65 63 69 66 69 65 64 20 73 70 72 69 74 65 20 61 |ecified sprite a|
00003260 62 6f 75 74 20 74 68 65 20 79 20 61 78 69 73 0a |bout the y axis.|
00003270 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b | *. */.extern _k|
00003280 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 |ernel_oserror * |
00003290 73 70 72 69 74 65 5f 66 6c 69 70 5f 79 28 73 70 |sprite_flip_y(sp|
000032a0 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 72 |rite_area *, spr|
000032b0 69 74 65 5f 69 64 20 2a 29 3b 0a 0a 0a 74 79 70 |ite_id *);...typ|
000032c0 65 64 65 66 20 73 74 72 75 63 74 0a 7b 0a 20 69 |edef struct.{. i|
000032d0 6e 74 20 77 69 64 74 68 3b 0a 20 69 6e 74 20 68 |nt width;. int h|
000032e0 65 69 67 68 74 3b 0a 20 69 6e 74 20 6d 61 73 6b |eight;. int mask|
000032f0 3b 0a 20 69 6e 74 20 6d 6f 64 65 3b 0a 7d 20 73 |;. int mode;.} s|
00003300 70 72 69 74 65 5f 69 6e 66 6f 3b 0a 0a 2f 2a 20 |prite_info;../* |
00003310 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
*
00003330 20 73 70 72 69 74 65 5f 72 65 61 64 73 69 7a 65 | sprite_readsize|
00003340 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
00003350 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 52 65 61 |---------. * Rea|
00003360 64 20 74 68 65 20 73 69 7a 65 20 69 6e 66 6f 72 |d the size infor|
00003370 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 73 |mation for the s|
00003380 70 65 63 69 66 69 65 64 20 73 70 72 69 74 65 5f |pecified sprite_|
00003390 69 64 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e |id. *. */.extern|
000033a0 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 | _kernel_oserror|
000033b0 20 2a 20 73 70 72 69 74 65 5f 72 65 61 64 73 69 | * sprite_readsi|
000033c0 7a 65 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a |ze(sprite_area *|
000033d0 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 2c 0a 20 |, sprite_id *,. |
000033e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000033f0 20 20 20 20 20 20 20 20 20 20 73 70 72 69 74 65 | sprite|
00003400 5f 69 6e 66 6f 20 2a 72 65 73 75 6c 74 69 6e 66 |_info *resultinf|
00003410 6f 29 3b 0a 0a 0a 74 79 70 65 64 65 66 20 73 74 |o);...typedef st|
00003420 72 75 63 74 0a 7b 0a 20 20 69 6e 74 20 63 6f 6c |ruct.{. int col|
00003430 6f 75 72 3b 0a 20 20 69 6e 74 20 74 69 6e 74 3b |our;. int tint;|
00003440 0a 7d 20 73 70 72 69 74 65 5f 63 6f 6c 6f 75 72 |.} sprite_colour|
00003450 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |;../* ----------|
00003460 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003470 2d 2d 2d 20 73 70 72 69 74 65 5f 72 65 61 64 70 |--- sprite_readp|
00003480 69 78 65 6c 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ixel -----------|
00003490 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a |---------------.|
000034a0 20 2a 20 52 65 61 64 20 74 68 65 20 63 6f 6c 6f | * Read the colo|
000034b0 75 72 20 6f 66 20 61 20 67 69 76 65 6e 20 70 69 |ur of a given pi|
000034c0 78 65 6c 20 69 6e 20 74 68 65 20 73 70 65 63 69 |xel in the speci|
000034d0 66 69 65 64 20 73 70 72 69 74 65 5f 69 64 0a 20 |fied sprite_id. |
000034e0 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 |*. */.extern _ke|
000034f0 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 20 73 |rnel_oserror * s|
00003500 70 72 69 74 65 5f 72 65 61 64 70 69 78 65 6c 28 |prite_readpixel(|
00003510 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 |sprite_area *, s|
00003520 70 72 69 74 65 5f 69 64 20 2a 2c 0a 20 20 20 20 |prite_id *,. |
00003530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00003540 20 20 20 20 20 20 20 20 69 6e 74 20 78 2c 20 69 | int x, i|
00003550 6e 74 20 79 2c 20 73 70 72 69 74 65 5f 63 6f 6c |nt y, sprite_col|
00003560 6f 75 72 20 2a 72 65 73 75 6c 74 63 6f 6c 6f 75 |our *resultcolou|
00003570 72 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |r);../* --------|
00003580 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003590 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 77 72 69 |----- sprite_wri|
000035a0 74 65 70 69 78 65 6c 20 2d 2d 2d 2d 2d 2d 2d 2d |tepixel --------|
000035b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
000035c0 2d 0a 20 2a 20 57 72 69 74 65 20 74 68 65 20 63 |-. * Write the c|
000035d0 6f 6c 6f 75 72 20 6f 66 20 61 20 67 69 76 65 6e |olour of a given|
000035e0 20 70 69 78 65 6c 20 69 6e 20 74 68 65 20 73 70 | pixel in the sp|
000035f0 65 63 69 66 69 65 64 20 73 70 72 69 74 65 5f 69 |ecified sprite_i|
00003600 64 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 |d. *. */.extern |
00003610 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 |_kernel_oserror |
00003620 2a 20 73 70 72 69 74 65 5f 77 72 69 74 65 70 69 |* sprite_writepi|
00003630 78 65 6c 28 73 70 72 69 74 65 5f 61 72 65 61 20 |xel(sprite_area |
00003640 2a 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 2c 0a |*, sprite_id *,.|
00003650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00003660 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 | int|
00003670 20 78 2c 20 69 6e 74 20 79 2c 20 73 70 72 69 74 | x, int y, sprit|
00003680 65 5f 63 6f 6c 6f 75 72 20 2a 63 6f 6c 6f 75 72 |e_colour *colour|
00003690 29 3b 0a 0a 0a 74 79 70 65 64 65 66 20 65 6e 75 |);...typedef enu|
000036a0 6d 0a 7b 0a 20 20 73 70 72 69 74 65 5f 6d 61 73 |m.{. sprite_mas|
000036b0 6b 74 72 61 6e 73 70 61 72 65 6e 74 20 3d 20 30 |ktransparent = 0|
000036c0 2c 0a 20 20 73 70 72 69 74 65 5f 6d 61 73 6b 73 |,. sprite_masks|
000036d0 6f 6c 69 64 20 20 20 20 20 20 20 3d 20 31 0a 7d |olid = 1.}|
000036e0 20 73 70 72 69 74 65 5f 6d 61 73 6b 73 74 61 74 | sprite_maskstat|
000036f0 65 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |e;../* ---------|
00003700 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003710 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 72 65 |------ sprite_re|
00003720 61 64 6d 61 73 6b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |admask ---------|
00003730 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003740 0a 20 2a 20 52 65 61 64 20 74 68 65 20 73 74 61 |. * Read the sta|
00003750 74 65 20 6f 66 20 61 20 67 69 76 65 6e 20 70 69 |te of a given pi|
00003760 78 65 6c 20 69 6e 20 74 68 65 20 73 70 65 63 69 |xel in the speci|
00003770 66 69 65 64 20 73 70 72 69 74 65 20 6d 61 73 6b |fied sprite mask|
00003780 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f |. *. */.extern _|
00003790 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 20 2a |kernel_oserror *|
000037a0 20 73 70 72 69 74 65 5f 72 65 61 64 6d 61 73 6b | sprite_readmask|
000037b0 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 |(sprite_area *, |
000037c0 73 70 72 69 74 65 5f 69 64 20 2a 2c 0a 20 20 20 |sprite_id *,. |
000037d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000037e0 20 20 20 20 20 20 20 20 69 6e 74 20 78 2c 20 69 | int x, i|
000037f0 6e 74 20 79 2c 20 73 70 72 69 74 65 5f 6d 61 73 |nt y, sprite_mas|
00003800 6b 73 74 61 74 65 20 2a 72 65 73 75 6c 74 6d 61 |kstate *resultma|
00003810 73 6b 73 74 61 74 65 29 3b 0a 0a 2f 2a 20 2d 2d |skstate);../* --|
00003820 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003830 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 |------------- sp|
00003840 72 69 74 65 5f 77 72 69 74 65 6d 61 73 6b 20 2d |rite_writemask -|
00003850 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003860 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 57 72 69 74 65 |-------. * Write|
00003870 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 61 20 | the state of a |
00003880 67 69 76 65 6e 20 70 69 78 65 6c 20 69 6e 20 74 |given pixel in t|
00003890 68 65 20 73 70 65 63 69 66 69 65 64 20 73 70 72 |he specified spr|
000038a0 69 74 65 20 6d 61 73 6b 0a 20 2a 0a 20 2a 2f 0a |ite mask. *. */.|
000038b0 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f |extern _kernel_o|
000038c0 73 65 72 72 6f 72 20 2a 20 73 70 72 69 74 65 5f |serror * sprite_|
000038d0 77 72 69 74 65 6d 61 73 6b 28 73 70 72 69 74 65 |writemask(sprite|
000038e0 5f 61 72 65 61 20 2a 2c 20 73 70 72 69 74 65 5f |_area *, sprite_|
000038f0 69 64 20 2a 2c 0a 20 20 20 20 20 20 20 20 20 20 |id *,. |
00003900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00003910 20 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 | int x, int y, |
00003920 73 70 72 69 74 65 5f 6d 61 73 6b 73 74 61 74 65 |sprite_maskstate|
00003930 20 2a 6d 61 73 6b 73 74 61 74 65 29 3b 0a 0a 0a | *maskstate);...|
00003940 74 79 70 65 64 65 66 20 73 74 72 75 63 74 0a 20 |typedef struct. |
00003950 20 20 20 20 20 20 20 7b 20 69 6e 74 20 72 5b 34 | { int r[4|
00003960 5d 3b 0a 20 20 20 20 20 20 20 20 7d 20 73 70 72 |];. } spr|
00003970 69 74 65 5f 73 74 61 74 65 3b 0a 0a 2f 2a 20 2d |ite_state;../* -|
00003980 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003990 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 72 |------------ spr|
000039a0 69 74 65 5f 72 65 73 74 6f 72 65 73 74 61 74 65 |ite_restorestate|
000039b0 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------|
000039c0 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 52 65 73 74 |--------. * Rest|
000039d0 6f 72 65 73 20 74 68 65 20 6f 6c 64 20 73 74 61 |ores the old sta|
000039e0 74 65 20 61 66 74 65 72 20 6f 6e 65 20 6f 66 20 |te after one of |
000039f0 74 68 65 20 73 70 72 69 74 65 20 72 65 64 69 72 |the sprite redir|
00003a00 65 63 74 69 6f 6e 20 63 61 6c 6c 73 0a 20 2a 0a |ection calls. *.|
00003a10 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e | */.extern _kern|
00003a20 65 6c 5f 6f 73 65 72 72 6f 72 20 2a 73 70 72 69 |el_oserror *spri|
00003a30 74 65 5f 72 65 73 74 6f 72 65 73 74 61 74 65 28 |te_restorestate(|
00003a40 73 70 72 69 74 65 5f 73 74 61 74 65 20 73 74 61 |sprite_state sta|
00003a50 74 65 29 3b 0a 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |te);.../* ------|
00003a60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003a70 2d 2d 2d 2d 2d 2d 20 73 70 72 69 74 65 5f 6f 75 |------ sprite_ou|
00003a80 74 70 75 74 74 6f 73 70 72 69 74 65 20 2d 2d 2d |tputtosprite ---|
00003a90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003aa0 2d 2d 2d 0a 20 2a 20 52 65 64 69 72 65 63 74 20 |---. * Redirect |
00003ab0 56 44 55 20 6f 75 74 70 75 74 20 74 6f 20 61 20 |VDU output to a |
00003ac0 73 70 72 69 74 65 2c 20 73 61 76 69 6e 67 20 6f |sprite, saving o|
00003ad0 6c 64 20 73 74 61 74 65 20 0a 20 2a 0a 20 2a 2f |ld state . *. */|
00003ae0 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f |.extern _kernel_|
00003af0 6f 73 65 72 72 6f 72 20 2a 73 70 72 69 74 65 5f |oserror *sprite_|
00003b00 6f 75 74 70 75 74 74 6f 73 70 72 69 74 65 28 73 |outputtosprite(s|
00003b10 70 72 69 74 65 5f 61 72 65 61 20 2a 61 72 65 61 |prite_area *area|
00003b20 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 69 64 2c |, sprite_id *id,|
00003b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. |
00003b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00003b50 20 69 6e 74 20 2a 73 61 76 65 5f 61 72 65 61 2c | int *save_area,|
00003b60 20 73 70 72 69 74 65 5f 73 74 61 74 65 20 2a 73 | sprite_state *s|
00003b70 74 61 74 65 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d |tate);../* -----|
00003b80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003b90 2d 2d 20 73 70 72 69 74 65 5f 6f 75 74 70 75 74 |-- sprite_output|
00003ba0 74 6f 6d 61 73 6b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |tomask ---------|
00003bb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003bc0 2d 2d 2d 2d 0a 20 2a 20 52 65 64 69 72 65 63 74 |----. * Redirect|
00003bd0 73 20 6f 75 74 70 75 74 20 74 6f 20 61 20 73 70 |s output to a sp|
00003be0 72 69 74 65 27 73 20 74 72 61 6e 73 70 61 72 65 |rite's transpare|
00003bf0 6e 63 79 20 6d 61 73 6b 2c 20 73 61 76 69 6e 67 |ncy mask, saving|
00003c00 20 6f 6c 64 20 73 74 61 74 65 0a 20 2a 0a 20 2a | old state. *. *|
00003c10 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c |/.extern _kernel|
00003c20 5f 6f 73 65 72 72 6f 72 20 2a 73 70 72 69 74 65 |_oserror *sprite|
00003c30 5f 6f 75 74 70 75 74 74 6f 6d 61 73 6b 28 73 70 |_outputtomask(sp|
00003c40 72 69 74 65 5f 61 72 65 61 20 2a 61 72 65 61 2c |rite_area *area,|
00003c50 20 73 70 72 69 74 65 5f 69 64 20 2a 69 64 2c 0a | sprite_id *id,.|
00003c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00003c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e | in|
00003c80 74 20 2a 73 61 76 65 5f 61 72 65 61 2c 20 73 70 |t *save_area, sp|
00003c90 72 69 74 65 5f 73 74 61 74 65 20 2a 73 74 61 74 |rite_state *stat|
00003ca0 65 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |e);../* --------|
00003cb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003cc0 2d 2d 2d 20 73 70 72 69 74 65 5f 6f 75 74 70 75 |--- sprite_outpu|
00003cd0 74 74 6f 73 63 72 65 65 6e 20 2d 2d 2d 2d 2d 2d |ttoscreen ------|
00003ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003cf0 2d 0a 20 2a 20 52 65 64 69 72 65 63 74 20 6f 75 |-. * Redirect ou|
00003d00 74 70 75 74 20 62 61 63 6b 20 74 6f 20 73 63 72 |tput back to scr|
00003d10 65 65 6e 2c 20 73 61 76 69 6e 67 20 6f 6c 64 20 |een, saving old |
00003d20 73 74 61 74 65 0a 20 2a 0a 20 2a 2f 0a 65 78 74 |state. *. */.ext|
00003d30 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 |ern _kernel_oser|
00003d40 72 6f 72 20 2a 73 70 72 69 74 65 5f 6f 75 74 70 |ror *sprite_outp|
00003d50 75 74 74 6f 73 63 72 65 65 6e 28 69 6e 74 20 2a |uttoscreen(int *|
00003d60 73 61 76 65 5f 61 72 65 61 2c 20 73 70 72 69 74 |save_area, sprit|
00003d70 65 5f 73 74 61 74 65 20 2a 73 74 61 74 65 29 3b |e_state *state);|
00003d80 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |../* -----------|
00003d90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003da0 20 73 70 72 69 74 65 5f 73 69 7a 65 6f 66 5f 73 | sprite_sizeof_s|
00003db0 70 72 69 74 65 63 6f 6e 74 65 78 74 20 2d 2d 2d |pritecontext ---|
00003dc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 |--------------. |
00003dd0 2a 20 47 65 74 20 73 69 7a 65 20 6f 66 20 73 61 |* Get size of sa|
00003de0 76 65 20 61 72 65 61 20 6e 65 65 64 65 64 20 74 |ve area needed t|
00003df0 6f 20 73 61 76 65 20 73 70 72 69 74 65 20 63 6f |o save sprite co|
00003e00 6e 74 65 78 74 2e 0a 20 2a 0a 20 2a 2f 0a 65 78 |ntext.. *. */.ex|
00003e10 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 |tern _kernel_ose|
00003e20 72 72 6f 72 20 2a 73 70 72 69 74 65 5f 73 69 7a |rror *sprite_siz|
00003e30 65 6f 66 5f 73 70 72 69 74 65 63 6f 6e 74 65 78 |eof_spritecontex|
00003e40 74 28 73 70 72 69 74 65 5f 61 72 65 61 20 2a 61 |t(sprite_area *a|
00003e50 72 65 61 2c 20 73 70 72 69 74 65 5f 69 64 20 2a |rea, sprite_id *|
00003e60 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 |id,. |
00003e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00003e80 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 2a 73 | int *s|
00003e90 69 7a 65 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |ize);../* ------|
00003ea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003eb0 2d 2d 2d 20 73 70 72 69 74 65 5f 73 69 7a 65 6f |--- sprite_sizeo|
00003ec0 66 5f 73 63 72 65 65 6e 63 6f 6e 74 65 78 74 20 |f_screencontext |
00003ed0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003ee0 2d 2d 2d 0a 20 2a 20 47 65 74 20 73 69 7a 65 20 |---. * Get size |
00003ef0 6f 66 20 73 61 76 65 20 61 72 65 61 20 6e 65 65 |of save area nee|
00003f00 64 65 64 20 74 6f 20 73 61 76 65 20 73 63 72 65 |ded to save scre|
00003f10 65 6e 20 63 6f 6e 74 65 78 74 2e 0a 20 2a 0a 20 |en context.. *. |
00003f20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 |*/.extern _kerne|
00003f30 6c 5f 6f 73 65 72 72 6f 72 20 2a 73 70 72 69 74 |l_oserror *sprit|
00003f40 65 5f 73 69 7a 65 6f 66 5f 73 63 72 65 65 6e 63 |e_sizeof_screenc|
00003f50 6f 6e 74 65 78 74 28 69 6e 74 20 2a 73 69 7a 65 |ontext(int *size|
00003f60 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |);../* ---------|
00003f70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 |--------------- |
00003f80 73 70 72 69 74 65 5f 72 65 6d 6f 76 65 77 61 73 |sprite_removewas|
00003f90 74 61 67 65 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |tage -----------|
00003fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00003fb0 0a 20 2a 20 52 65 6d 6f 76 65 73 20 6c 65 66 74 |. * Removes left|
00003fc0 20 68 61 6e 64 20 77 61 73 74 61 67 65 20 66 72 | hand wastage fr|
00003fd0 6f 6d 20 61 20 73 70 72 69 74 65 0a 20 2a 0a 20 |om a sprite. *. |
00003fe0 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 |*/.extern _kerne|
00003ff0 6c 5f 6f 73 65 72 72 6f 72 20 2a 73 70 72 69 74 |l_oserror *sprit|
00004000 65 5f 72 65 6d 6f 76 65 77 61 73 74 61 67 65 28 |e_removewastage(|
00004010 73 70 72 69 74 65 5f 61 72 65 61 20 2a 61 72 65 |sprite_area *are|
00004020 61 2c 20 73 70 72 69 74 65 5f 69 64 20 2a 69 64 |a, sprite_id *id|
00004030 29 3b 0a 0a 0a 2f 2a 20 6e 65 77 20 53 57 49 73 |);.../* new SWIs|
00004040 20 2a 2f 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d | */../* --------|
00004050 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00004060 20 73 70 72 69 74 65 5f 63 68 61 6e 67 65 5f 73 | sprite_change_s|
00004070 69 7a 65 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |ize ------------|
00004080 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00004090 2d 0a 20 2a 20 47 65 6e 65 72 61 6c 20 69 6e 73 |-. * General ins|
000040a0 65 72 74 2f 64 65 6c 65 74 65 20 72 6f 77 73 2f |ert/delete rows/|
000040b0 63 6f 6c 75 6d 6e 73 20 6f 70 65 72 61 74 69 6f |columns operatio|
000040c0 6e 73 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e |ns. *. */.extern|
000040d0 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 | _kernel_oserror|
000040e0 0a 20 20 2a 73 70 72 69 74 65 5f 63 68 61 6e 67 |. *sprite_chang|
000040f0 65 5f 73 69 7a 65 0a 20 20 28 73 70 72 69 74 65 |e_size. (sprite|
00004100 5f 61 72 65 61 20 2a 61 72 65 61 2c 20 73 70 72 |_area *area, spr|
00004110 69 74 65 5f 69 64 20 2a 69 64 2c 20 42 4f 4f 4c |ite_id *id, BOOL|
00004120 20 72 6f 77 73 2c 20 69 6e 74 20 61 74 2c 20 69 | rows, int at, i|
00004130 6e 74 20 6e 75 6d 62 65 72 29 3b 0a 0a 2f 2a 20 |nt number);../* |
00004140 54 79 70 65 64 65 66 73 20 61 6e 64 20 66 75 6e |Typedefs and fun|
00004150 63 74 69 6f 6e 73 20 66 6f 72 20 72 6f 74 61 74 |ctions for rotat|
00004160 69 6e 67 20 73 70 72 69 74 65 73 2e 20 2a 2f 0a |ing sprites. */.|
00004170 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 |.typedef struct |
00004180 7b 69 6e 74 20 70 30 20 5b 32 5d 2c 20 70 31 20 |{int p0 [2], p1 |
00004190 5b 32 5d 2c 20 70 32 20 5b 32 5d 2c 20 70 33 20 |[2], p2 [2], p3 |
000041a0 5b 32 5d 3b 7d 20 73 70 72 69 74 65 5f 70 67 6d |[2];} sprite_pgm|
000041b0 3b 0a 74 79 70 65 64 65 66 20 69 6e 74 20 73 70 |;.typedef int sp|
000041c0 72 69 74 65 5f 74 72 61 6e 73 6d 61 74 20 5b 36 |rite_transmat [6|
000041d0 5d 3b 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 |];.typedef struc|
000041e0 74 20 7b 69 6e 74 20 78 30 2c 20 79 30 2c 20 78 |t {int x0, y0, x|
000041f0 31 2c 20 79 31 3b 7d 20 73 70 72 69 74 65 5f 62 |1, y1;} sprite_b|
00004200 6f 78 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |ox;../* --------|
00004210 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00004220 20 73 70 72 69 74 65 5f 70 75 74 5f 6d 61 73 6b | sprite_put_mask|
00004230 5f 74 72 61 6e 73 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |_trans ---------|
00004240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 |------------. * |
00004250 50 75 74 20 61 20 62 6f 78 20 66 72 6f 6d 20 74 |Put a box from t|
00004260 68 65 20 6d 61 73 6b 20 69 6e 20 62 61 63 6b 67 |he mask in backg|
00004270 72 6f 75 6e 64 20 63 6f 6c 6f 75 72 73 20 74 68 |round colours th|
00004280 72 6f 75 67 68 20 61 20 74 72 61 6e 73 66 6f 72 |rough a transfor|
00004290 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 0a 20 2a |mation matrix. *|
000042a0 0a 20 2a 2f 0a 65 78 74 65 72 6e 20 5f 6b 65 72 |. */.extern _ker|
000042b0 6e 65 6c 5f 6f 73 65 72 72 6f 72 0a 20 20 2a 73 |nel_oserror. *s|
000042c0 70 72 69 74 65 5f 70 75 74 5f 6d 61 73 6b 5f 74 |prite_put_mask_t|
000042d0 72 61 6e 73 0a 20 20 28 73 70 72 69 74 65 5f 61 |rans. (sprite_a|
000042e0 72 65 61 20 2a 2c 20 73 70 72 69 74 65 5f 69 64 |rea *, sprite_id|
000042f0 20 2a 2c 20 73 70 72 69 74 65 5f 62 6f 78 20 2a | *, sprite_box *|
00004300 2c 20 73 70 72 69 74 65 5f 74 72 61 6e 73 6d 61 |, sprite_transma|
00004310 74 20 2a 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d |t *);../* ------|
00004320 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00004330 2d 2d 20 73 70 72 69 74 65 5f 70 75 74 5f 6d 61 |-- sprite_put_ma|
00004340 73 6b 5f 70 67 6d 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |sk_pgm ---------|
00004350 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 |--------------. |
00004360 2a 20 50 75 74 20 61 20 62 6f 78 20 66 72 6f 6d |* Put a box from|
00004370 20 74 68 65 20 6d 61 73 6b 20 69 6e 20 62 61 63 | the mask in bac|
00004380 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 75 72 73 20 |kground colours |
00004390 74 6f 20 61 20 70 61 72 61 6c 6c 65 6c 6f 67 72 |to a parallelogr|
000043a0 61 6d 0a 20 2a 0a 20 2a 2f 0a 65 78 74 65 72 6e |am. *. */.extern|
000043b0 20 5f 6b 65 72 6e 65 6c 5f 6f 73 65 72 72 6f 72 | _kernel_oserror|
000043c0 0a 20 20 2a 73 70 72 69 74 65 5f 70 75 74 5f 6d |. *sprite_put_m|
000043d0 61 73 6b 5f 70 67 6d 0a 20 20 28 73 70 72 69 74 |ask_pgm. (sprit|
000043e0 65 5f 61 72 65 61 20 2a 2c 20 73 70 72 69 74 65 |e_area *, sprite|
000043f0 5f 69 64 20 2a 2c 20 73 70 72 69 74 65 5f 62 6f |_id *, sprite_bo|
00004400 78 20 2a 2c 20 73 70 72 69 74 65 5f 70 67 6d 20 |x *, sprite_pgm |
00004410 2a 29 3b 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d |*);../* --------|
00004420 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00004430 20 73 70 72 69 74 65 5f 70 75 74 5f 74 72 61 6e | sprite_put_tran|
00004440 73 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |s --------------|
00004450 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 |------------. * |
00004460 50 75 74 20 61 20 62 6f 78 20 66 72 6f 6d 20 74 |Put a box from t|
00004470 68 65 20 73 70 72 69 74 65 20 74 68 72 6f 75 67 |he sprite throug|
00004480 68 20 61 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 |h a transformati|
00004490 6f 6e 20 6d 61 74 72 69 78 0a 20 2a 0a 20 2a 2f |on matrix. *. */|
000044a0 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f |.extern _kernel_|
000044b0 6f 73 65 72 72 6f 72 0a 20 20 2a 73 70 72 69 74 |oserror. *sprit|
000044c0 65 5f 70 75 74 5f 74 72 61 6e 73 0a 20 20 28 73 |e_put_trans. (s|
000044d0 70 72 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 |prite_area *, sp|
000044e0 72 69 74 65 5f 69 64 20 2a 2c 20 69 6e 74 20 67 |rite_id *, int g|
000044f0 63 6f 6c 5f 61 63 74 69 6f 6e 2c 20 73 70 72 69 |col_action, spri|
00004500 74 65 5f 62 6f 78 20 2a 2c 20 73 70 72 69 74 65 |te_box *, sprite|
00004510 5f 74 72 61 6e 73 6d 61 74 20 2a 2c 20 73 70 72 |_transmat *, spr|
00004520 69 74 65 5f 70 69 78 74 72 61 6e 73 20 2a 29 3b |ite_pixtrans *);|
00004530 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |../* -----------|
00004540 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 73 70 |------------- sp|
00004550 72 69 74 65 5f 70 75 74 5f 70 67 6d 20 2d 2d 2d |rite_put_pgm ---|
00004560 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------|
00004570 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 20 50 75 74 |---------. * Put|
00004580 20 61 20 62 6f 78 20 66 72 6f 6d 20 74 68 65 20 | a box from the |
00004590 73 70 72 69 74 65 20 74 6f 20 61 20 70 61 72 61 |sprite to a para|
000045a0 6c 6c 65 6c 6f 67 72 61 6d 0a 20 2a 0a 20 2a 2f |llelogram. *. */|
000045b0 0a 65 78 74 65 72 6e 20 5f 6b 65 72 6e 65 6c 5f |.extern _kernel_|
000045c0 6f 73 65 72 72 6f 72 0a 20 20 2a 73 70 72 69 74 |oserror. *sprit|
000045d0 65 5f 70 75 74 5f 70 67 6d 0a 20 20 28 73 70 72 |e_put_pgm. (spr|
000045e0 69 74 65 5f 61 72 65 61 20 2a 2c 20 73 70 72 69 |ite_area *, spri|
000045f0 74 65 5f 69 64 20 2a 2c 20 69 6e 74 20 67 63 6f |te_id *, int gco|
00004600 6c 5f 61 63 74 69 6f 6e 2c 20 73 70 72 69 74 65 |l_action, sprite|
00004610 5f 62 6f 78 20 2a 2c 20 73 70 72 69 74 65 5f 70 |_box *, sprite_p|
00004620 67 6d 20 2a 2c 20 73 70 72 69 74 65 5f 70 69 78 |gm *, sprite_pix|
00004630 74 72 61 6e 73 20 2a 29 3b 0a 0a 23 20 65 6e 64 |trans *);..# end|
00004640 69 66 0a 0a 2f 2a 20 65 6e 64 20 6f 66 20 73 70 |if../* end of sp|
00004650 72 69 74 65 2e 68 20 2a 2f 0a |rite.h */.|
0000465a
.