Short: Chunkygraphics library v1.51 for Blitz Basic 2 Author: Paul West Uploader: angeldaniel25@yahoo.como.uk Type: dev/basic Replaces: Mildred.lha Requires: 68020+ CPU, preferably some fastram, and prior knowledge of blitz NB: This archive is a replica of the entire contents of the Mildred website. Mildred is a 2D chunkygraphics library for Blitz Basic 2. It attempts to replace most of the existing planar graphics system and also add new features and capabilities, the main difference being that everything is done in `chunky' data format rather than planar. This has many advantages in various areas and a comprehensive range of blit and other routines are provided as well as many custom objects (chunky bitmaps, shapes, queues, tables, c2pwindows, etc..) Mildred brings you 219 new tokens, with the functionality of 407 via syntax variations and God knows how many variations of blit modes and switches, in a custom library which has full runtime errochecking routines. The library is the largest ever made for blitz but probably you will not mind the byte overhead when you consider what it will make possible for you in your software. Working in chunky allows easy graphics-card support and output to AGA via a flexible chunky-to-planar system. The Mildred library was written in 1998-2000 by Paul West. Full copyright has been reclaimed from Pagan Games. You are permitted to use the lib in any and all of your blitz software, be it freeware, shareware, licenseware, commercialware or whatever. I do not ask for any fee in return unless you are feeling generous. If you are using it in an commercial product that is retailing for more than 5 UK-pounds per item, then I wouldn't mind a mention or some cash. :-D The original aminet archive was a collection of archives from the official Mildred support site, which is at http://www.stationone.demon.co.uk and the same trend continues with this update. There have been a number of revisions since the previous update and some more example programs added. The full sourcecode to the library is also now available in ascii and BB2 format! Loading up index.html you will be greeted with a copy of the front page of the support site, which will allow you to read the comments about each of the archives to give you some idea of what they are. The main Mildred library is in the Mildred.lha archive. See the documentation for how to install it. If you are on the internet I suggest you just go to the support site, and also recommend joining the blitz mailing list if you haven't already done so which can be achieved by sending an empty message to blitz-list-subscribe@netsoc.ucd.ie where you will find a number of blitz addicts and Mildred users. The previous aminet release was v1.50. This library is now v1.51. This may not be the last release as I still have ideas for future optimisations and tokens. The following changes to the library itself have occured since the release of v1.50: v1.51 - Work resumed 27/02/2000 for the first time since 22/05/1999, copyright ownership has been reclaimed - Bug identified in PerformBlit1/2/3_16[b] MSimpleReMapMode. Masking isn't working right, shape's cookie is blocks of 4! - Macro RemakeStencil optimised by changing SNE.b to SEQ.b and removing the NOT.l, slight speedup making cookie/stencil - Fixed bug in PerformBlit1/2/3_16[b] MSimpleReMapMode. Replaced TST.l with CMP.l #-1, as it was skipping 4 instead of 1 - Design flaw: Programmers should beware that cludged cookies/stencils must share the same linemodulo as the main data - Optimised macro PerformYFlip for improved speed Yflipping if width is multiple of 16 - Optimised/recoded macro PerformXFlip for improved speed Xflipping if width is multiple of 4 or 16. ScrollDemo is 1fps+ Note that this release includes new example programs, the full library sourcecode, and a spruced up website. Probs/comments/suggestions/worldly praise to angeldaniel25@yahoo.como.uk Also check out http://www.stationone.demon.co.uk for the support site. Cheers, Paul. -----Copy of the old readme------ Mildred v1.50. Copyright (c) 1998-1999 Pagan Games. Written by Paul West. Mildred.obj is the actual Mildred chunky-graphics library. Put it into your Blitzlibs:Userlibs/ drawer. Then remake your deflibs file with either BlitzLibsMan, or the MakeDefLibs program. If you encounter a crash when attempting to recreate your deflibs with Mildred.obj installed, try using the modified version that I have also supplied. Then you can reload blitz/ted and Mildred's commandset should be available. A suggested installation from CLI is as follows: Lha x ram:Mildred.lha ram: Copy ram:Mildred.obj Blitzlibs:userlibs/ ram:MakeDefLibs.exe EndCli then load up blitz. Please refer to Mildred.Guide documentation for further details on changes in this update and up-to-date documentation of all commands. History v1.1 - First public release v1.11 - Fixed bug in MUseShapeBank and altered ShapesTotal size to word as it was incorrectly a longword - Fixed bug in the errorchecking of Mc2pCPUmode that was checking d3 instead of d0 v1.12 - Fixed bug in MUnQueue that would only do two lines of code if wrapping was active, but should have been done always v1.13 - MBoxF, MBoxFShape, MBoxFStencil and MBoxFCookie added - MBox, MBoxShape, MBoxStencil and MBoxCookie added v1.14 - MPlanar16ToBitmap, MPlanar16ToShape added v1.15 - Planar-to-chunky converter optimised further using addx and reverse bitplane order, twice as fast as roxr.b #n,dn - MGenericPtr added - A shape's handle is unconditionally added (actually subtracted) to Xpos,Ypos in shape-to-bitmap type blits (MBlit etc) v1.16 - Fixed small bug in !PerformPoint macro, d6.l should have been d6.w. - Fixed small but ineffective bug in MPlotCookie, d6.l should have been d6.w v1.17 - Added MCludgeCookie and MCludgeStencil, also needed to add two macros - Fixed bug in macro used by MCludgeCookie and MCludgeStencil, as it was not setting `SHere' to 0 to indicate cludge. v1.18 - Added MUnQueueRange for unqueuing a range of items and without flushing the queue v1.19 - Fixed bug in data for shape banks, was using structures of 8 bytes but only were 6 bytes in mem - Fixed bug in MReserveShapes, was shifting bank number 8 places instead of 3 v1.2 - Added MReMap and MReMapShape v1.21 - Fixed bug in macro DeallocStencil, was killing the whole object v1.22 - Commented-out line in MShapeClip and MBitmapClip to make X leftedge unaligned (width is still multiple of 4) - Commented-out line in Macro CludgeResourceWindow to make X leftedge unaligned (width of window is still multiple of 4) v1.23 - Added mode to MBlit so that if a cookie is not present it will just blit the graphic in `replace'-mode (unmasked) - Minor pipeline improvement in macros !PerformPlot and !PerformPoint - Added code to the init routine to reserve default amounts of all objects at runtime (doesn't need much mem) - Added `BankToUse' parameter to MReserveShapes so that you don't have to do a seperate MUseShapeBank - Changed BoxF and Box routines to use X2,Y2 instead of Width,Height and had to add macro CCheckWindowFits4 v1.24 - Made the colour parameter in MPlot,MPlotShape,MPlotStencil and MPlotCookie optional, assuming 0 if not specified - *Partially* Added MLine, MLineShape, MLineStencil and MLineCookie - Modified shapebank-related routines to provide 32 shape banks numbered 0..31, instead of 0..9. - Fixed bugs in macros ShuffleRegs1, ShuffleRegs2 and ShuffleRegs3 v1.25 - Addred MReMapUsingShape and MReMapShapeUsingShape v1.26 - Optimised routine PerformReMapUsing for slight speed gain - Optimised routine PerformReMap for 25% speed gain in table mode - Fixed bug in macro CCheckWindowFits4, which affected runtime errorchecking of MBox/MBoxF and related routines v1.27 - Added MInk for setting a currently-used pen colour. Defaults to 1 which is a bit more logical than 0 - Added MColourMode function to accompany CookieMode/SolidMode etc, but for `colour' drawing mode in blits - Added `colour' mode to MBlit, MQBlit, MSBlit, MQSBlit and MMaskScroll routines - Removed redundant instruction in routine PerformBlit3's loop, for cookie-mode stencil-blits (slight speedup) - Adjusted graphics routines to use the ink colour if assuming which colour to use, rather than 0 - Further optimised routine PerformReMapUsing for slight speedup (about 1-2fps) - Changed order of tables being used for MReMap[Shape]UsingShape, for consistency with `MReMapMode' blit mode - Added support for new Table objects - Added MReserveTables, MFreeTables, MFreeTable, MAddrTable, MTable - Added MFlushTable, MAutoUseTables, MUseTables, MUseTable, MUsedTable - Added MTablePtr, MReMapMode - Added new blit mode `ReMap' to the MBlit, MQBlit, MSBlit, MQSBlit and MMaskScroll routines for table-based remapping v1.28 - Optimised MPictureDissolveIn for speed gain (a good few fps) - Added MSimpleReMapMode - Added new blit mode `SimpleReMap' to the MBlit, MQBlit, MSBlit, MQSBlit and MMaskScroll routines for 1-dim remapping - Fixed bug in definitions, MPointStencil and MPointCookie were defined as statements, but should have been functions - Changed the !PerformPoint macro to initialise d0 before grabbing the byte, in case it causes corrupt return value v1.29 - Optimised non-cut routine used by MSMaskScrolls (PerformGenericBlit6[b]) - Slight optimisation to non-cut plain copy routine used by M[Q]SBlits (PerformBlit2) - Finished MLine, MLineShape, MLineStencil and MLineCookie v1.30 - Redirected routine PerformGenericBlit3[b] to use PerformBlit1[b], to save code redundancy, and made gen3b into 1b - Added MSMaskScrollMode to support blit modes for MSMaskScrolls (previously only MMaskScrolls) - Redirected routine PerformGenericBlit6[b] to use PerformBlit2[b], to prepare for shared sblit blit-mode code - Redirected routine PerformGenericBlit9[b] to use PerformBlit3[b], to prepare for shared sblit cut blit-mode code - Completed support for MSMaskScrolls in `copy' mode with blit modes, by adding PerformBlit2b (2 backwards) - Completed support for MSMaskScrolls in `cut' mode with blit modes, by adding PerformBlit3b (3 backwards) - Modified runtime errorchecking routines for MSMaskScrolls to check that tables are available in M[Simple]ReMapMode v1.31 - Modified MScroll routines to support any width (non multiple, as low as 1). - Modified MSScroll routines to support any width (non multiple, as low as 1) in both `paste' and `cut' modes. v1.32 - Fixed bugs in routine PerformBlit2[b] for non-cut output to stencil. Some OR's should have been AND's, and vice versa. v1.33 - Fixed bug in routine PerformLine, sometimes d5 was plotted rather than d6 v1.34 - Added MPlotParticles for plotting list of pixels to a colour. List items are X.w,Y.w - Added MGrabParticles for grabbing list of pixels to a buffer. List items are X.w,Y.w. Buffer is Pixel.b's - Added MDrawParticles for drawing grabbed list of pixels from a buffer. List items are X.w,Y.w. Buffer is Pixel.b's - Added MGrabParticlesAndPlot for grabbing and plotting pixels to a colour. List items are X.w,Y.w. Buffer is Pixel.b's - Fixed bug in initialisation, auto-clip for bitmaps and shapes shouldn't have been automatically On! - Added MPlotParticlesA, MGrabParticlesA, MDrawParticlesA, MGrabParticlesAndPlotA, for actual-address list items - Added MPlotParticlesQ, MGrabParticlesQ, MDrawParticlesQ, MGrabParticlesAndPlotQ, for X.q,Y.q items [*16*.16][*16*.16] - Added MAddToParticles, MAddToParticlesA, MAddToParticlesQ, for adding values to particle list items - Added MAdd2ToParticles, MAdd2ToParticlesA, MAdd2ToParticlesQ, for more efficient multiple adds to list items v1.35 - Added MWrapParticles, MWrapParticlesA, MWrapParticlesQ, to wrap coords around edges of bitmap/clip (within reason) - Fixed bugs in clip routine of MAddToParticlesQ and MAdd2ToParticlesQ, offsets and adders and adding were wrong - Fixed bugs in clip routine of MWrapParticles and MWrapParticlesQ, 2 conditional branches to loop missing v1.36 - Added MReboundParticles and MReboundParticlesQ, for bouncing particless off the edges. No `A' version, not possible - Fixed bugs in MLine, MLineShape, MLineStencil, MLineCookie, short version used wrong colour - Added MProcessor function, to replace blitz's `Processor' instruction and support 060 - Modified various cpu-related routines (c2p and 040 choices) to support possible 060 cpu number - Modified init routine to check for cpu availability and set MCPU, Mc2pCPUmode and M040c2pUsage to appropriate defaults v1.37 - Added MAddXYToParticles and MAddXYToParticlesQ for adding X and Y constants to X and Y components in a particle list - Added MAddXYToParticlesA to add constant value to list of Ptr.l particles - Added MAddXToParticles, MAddYToParticles, MAddXToParticlesQ and MAddYToParticlesQ for further adding to particle lists v1.38 - Removed unnecessary code from MPlotParticlesA, MGrabParticlesA, MDrawParticlesA and MGrabParticlesAndPlotA - Added MParticleMode to choose MColourMode, MReMapMode or MSimpleReMapMode for particle plot/draw - Added MSimpleReMapMode and MReMapMode support to MPlotParticles, MPlotParticlesA and MPlotParticlesQ (clipping also!) - Added MSimpleReMapMode and MReMapMode support to MDrawParticles, MDrawParticlesA and MDrawParticlesQ (clipping also!) - Added MSimpleReMapMode and MReMapMode support to MGrabParticlesAndPlot[A/Q] for remap plot and normal grab (and clip!) - Merged MAdd2ToParticles[A/Q] into extension of MAddToParticles[A/Q] to make friendlier interface & cut down on tokens - Token order has been compromised due to removal of MAdd2ToParticles, MAdd2ToParticlesA and MAdd2ToParticlesQ !!! - Fixed errornumber bugs in errorchecking routines of MShapePtr and MCookiePtr. Was Error28, should have been Error27 - Added support to MBitmapPtr, MStencilPtr, MShapePtr and MCookiePtr to assume currently used objects if no params - Merged MAddXToParticles[Q] into special-case routine of MAddXYToParticles[Q] (called if Y is 0) - Merged MAddYToParticles[Q] into special-case routine of MAddXYToParticles[Q] (called if X is 0) - Token order has been compromised due to removal of MAddXToParticles[Q] and MAddYToParticles[Q] !!! v1.39 - Optimised routine PerformLine for speedup and less instructions - Expanded MInk to allow specification of second and third inks to use - Slightly rearranged internal data area and ensured alignment without Even4's, ready for extensions to access - Added MMildredBase to return the base address of Mildred's internal data area - Added lib support for returning base of Mildred's internal data area to other libraries, at the end of Initialise v1.40 - Added CRsrc_TotWidth to resource structure, for shapes and bitmaps, and added support code in necessary routines - Modified many routines to read CRsrc_TotWidth rather than move.w mem->reg, add.w mem->reg. Slight general speedups - Rearranged part of Mc2pWindow to check and set auto-use at the start as it was possibly trashed by the CacheClearU_() v1.41 - Made MParticleMode, MBlitMode, MQBlitMode, MSBlitMode, MQSBlitMode, MMaskScrollMode and MSMaskScrollMode into commands - Slightly modified MUnQueue, negligible speedup, but better pipelining - Added MDrawingMode to change mode used for drawing operations such as MPlot, MLine, MBoxF etc - Added MDrawingMode support to MCls family for InvMode, MColourMode, MReMapMode and MSimpleReMapMode (no stencil remap!) - Added MDrawingMode support to MPlot family for InvMode, MColourMode, MReMapMode and MSimpleReMapMode (no stencil remap) - Added MDrawingMode support to MBoxF family for InvMode, MColourMode, MReMapMode and MSimpleReMapMode (no stencil remap) - Added MDrawingMode support to MBox family for InvMode, MColourMode, MReMapMode and MSimpleReMapMode (no stencil remap!) - Added MDrawingMode support to MLine family for InvMode, MColourMode, MReMapMode and MSimpleReMapMode (no stencil remap) v1.42 - Moved _DrawingModeType in data area and made it into a word, as it was mistakenly defined as a byte so was trashing - Fixed bugs in MSTile32x32 and MSTile32x32Store, wrapping was not implemented for the dest stencil - Slightly optimised routine PerformRemap and fixed bug in PerformRemapUsingShape as top half of d4 needed to be cleared - Slightly optimised MUnQueue (bitmap form), speedup of about 0.1fps! - Fixed major bug in routine PerformBlit1, ReMap mode routine was doing stencil cut but should have been a straight blit - Added optimisation as routines PerformBlit1[b]_16, to do groups of 16 pixels instead of 4 if the width is a multiple - Made M[c2pWindow][Shape][Bitmap]Width and M[c2pWindow][Shape][Bitmap]Height work without specified object number - Made MAddr[c2pWindow][Shape][Bitmap][Queue][Table] work without specified object number - Optimised macro RemakeStencil, used for generating a stencil or cookie from a bitmap or shape - Added optimisation as routines PerformBlit2[b]_16, to do groups of 16 pixels instead of 4 if the width is a multiple - Fixed major bug in routines PerformBlit2[b][_16] and PerformBlit3[b] in SolidMode write to mask was or instead of and - Recoded all tile blits in 030 mode from movem.l's to move.l's and done modulos different. 2-3fps faster, on 040. - Added optimisation as routines PerformBlit3[b]_16, to do groups of 16 pixels instead of 4 if the width is a multiple - Optimised GenericBlit (scroll) routines, optimised for when width is multiple of 16 or multilpes of 64 for blockscroll - Fixed bug in all tokens that add items to a queue. Upper word of d7 was corrupt due to unusual longword usage v1.43 - Added MParticleFormat to select mode for particle tokens, between 0=word, <0=quick and >0=actual memory addresses - Merged Word/Quick/Address versions of particle commands into single commands, using MParticleFormat to choose - Removed MReMap[Shape]UsingShape commands as they have been superceded by MDrawingMode functionality - Removed Mc2pToggleSingle, Mc2pToggleDouble and Mc2pToggleTriple, as you might as well just use Mc2pToggle. - Removed the MInitShape token and just kept with MShape for making new shapes - Renamed MUse[c2pWindows][Shapes][Bitmaps][Queues][Tables] to the singular versions and removed the plurals - Removed MMidHandle, MMidOrigin, MCopyHandle and MCopyOrigin completely - Removed the unused MFlushTable completely - Removed M040c2pUsage and any other tokens associated with its status. - Merged MMakeCookies into MMakeCookie and removed MMakeCookies token - Merged MMakeStencils into MMakeStencil and removed MMakeStencils token - Merged MFree[c2pWindows][Shapes][Bitmaps][Cookies][Stencils][Queues][Tables] to the singular and removed the plurals - Tokenisation has been severly compromised due to changes, deletions and additions.!! v1.44 - Moved MPictureDissolveIn token to the end of the library and renamed the old one to MNothing as the 128th token fails v1.45 - Killed Mc2pRowLacing, Mc2pColumnLacing, Mc2pRowToggle, Mc2pColumnToggle and Mc2pToggle. Tokens 1-5 free for use! - Removed all code relating to interlaced c2p conversion, especially from Mc2pWindow, Mc2p and data area - Changed c2pWindow structure to 8 bytes instead of 16 and allowed c2p0_Pixels to be .w or .l depending on modulos>0 - Modified Mc2pWindow and Mc2p to support non-modulo c2p routine, and implemented non-modulo c2p (040 and 030) into Mc2p - Added MPictureDissolveOut to wipe image to a colour, bit faster than cross-wiping to blank image in MPictureDissolveIn - Modified MCludge[Shape][Bitmap][Cookie][Stencil] to take the `-16' away from the programmer making base address actual - Merged MUnQueueRange into extra syntax option of MUnQueue, still able to unqueue range without flush or all with flush - Added MBlockUnQueue in place of MUnQueueRange for unqueing items with width and X coord multiple of 16 (doesn't check) - Modified clearscreen mode of MUnQueue and MBlockUnQueue to use current ink instead of just 0's - Tried to add stencil-unqueue (cut behind stencil) but failed, not enough regs, so removed - Slightly optimised clearscreen mode of M[Block]UnQueue to do forwards operation and (an)+ (removes need for mulu) - Slightly optimised routine PerformCls in all relevant blit modes v1.46 - Added MWrapXParticles and MWrapYParticles to do wrapping of only sides or top/bottom. No X-wrap for Ptr.l, however. - Added MAddToXParticles and MAddToYParticles to add list(s) to particles but only one of the two components (Not Ptr.l) - Fixed small bug in errorchecking routine of MAddToParticles, check for zero address occured when address was negative - Fixed bug in clipping version of .q 2-adder routine in MAddToParticles, a3 needed to have a skip value added v1.47 - Fixed bugs in routine PerformGenericBlit2[b], optimised routines were copying stencil also but should be data only - Added CustomOffsets.l to MScroll family, for using list of custom Width.w,X1Offset.w,X2Offset.w,SourceModulo.w values - Added CustomOffsets.l to MSScroll family, for using list of custom Width.w,X1Offset.w,X2Offset.w,SourceModulo.w values - Fixed bugs in generic blit routines, beq should have been blt for skipping if byte loopcounter was empty (-1 not 0) - Optimised remainder-byte checking in PerformGenericBlit2[b]/5[b], was no need to test for zero bytes - Small optimisation, changing bsr to bra if the jump is the last instruction of a routine, as there is no need to stack - Added LongwordStore.l to data area for temporary storage of longwords, like when stacking it would not be possible - Fixed bugs in errorchecking routines of MPointShape and MPointCookie, was jumping to Error28 instead of Error27 - Added [,Source.w] parameter to MPoint[Shape][Stencil][Cookie] to specify a source bitmap/shape for the operation - Added MZoom, MZoomShape, MZoomBitmapToShape and MZoomShapeToBitmap, for zoomed unmasked scrolls (+CustomOffsets list!) - Added macros CCheckXYFits2 and CCheckXYFits3 for use by errorchecking routines of MZoom[Shape][To][Bitmap] v1.48 - Fixed bug in routine PerformBlit1_16, indirect offsets in SimpleRemap were 0..3,0..3,0..3,0..3 should have been 0..15 - Optimised (1fps+) some scrolls that copy the stencil/cookie, as interleaving the moves is faster than as bursts - Optimised some blit modes in PerformBlit1/2/3[b][_16] using phase-shift, pipelining and interleaved mem accesses - Optimised the 030 tile routines a bit when doing an STile, by interleaving the moves - Optimised the SimpleReMap modes in PerformBlit1[b]_16/2[b]_16/3[b]_16 when width is multiple of 16 (gains up to 2fps) - Optimised zoom routines. Zooms with non-integer x factor are about 4fps faster - Optimised all zoom routines using addx method instead of swap/swap/add, gains of about 3-4fps - Added DeRes?.w as last compulsory param of zoom tokens, and added de-res routines to zooms - Optimised zoom routines for when x factor is 1.0 to do extra-fast y-zoom, many fps faster - Attempted to rewrite routine PerformLine using .q loop with addx, but it performed slower due to need to use divu.w - Optimised CustomZoom[DeRes] that uses CustomOffsets.l to do groups of 4 pixels if width is multiple, gain up to 2fps+ v1.49 - Added MAddMode which returns mode number 7 for use with various graphics routines to choose `Add' operations - Added full support throughout the lib for MAddMode routines, byte values of source and dest are simply added together - Updated the descriptions of numerous tokens to better represent recent changes - Fixed bug in single-colour section of routine PerformReMap, loopcounter was screwy v1.50 - Fixed bugs in MWrapXParticles and MWrapYParticles, loops were BGE and should have been BGT, causing 1 illegal loop - Fixed bugs in check routines of MBox[F] family, as tables were being checked for in MAddMode (where not necessary) Blitz library 'blitzlibs:userlibs/Mildred.obj' (#15) MWrapXParticles CoordinateList.l,NumPoints.l ; Bring particles in from left/right edges (Not Ptr.l) MWrapYParticles CoordinateList.l,NumPoints.l ; Bring particles in from top/bottom edges MAddToXParticles CoordinateList.l,NumPoints.l,IncA.l[,IncB.l] ; Add X components of [two sets of] increments MAddToYParticles CoordinateList.l,NumPoints.l,IncA.l[,IncB.l] ; Add Y components of [two sets of] increments MAddMode ; Returns value 7 which represents `add' mode in the blit modes Mc2pCPUmode CPU.b ; Set cpu c2p uses. Use `MProcessor' or `Processor'. <4=030-, >3=040+ Mc2pWindow c2pWindow#.w,OpWidth.w,OpHeight.w[,SourceBWidth.w[,Processor.b],PlanarWidth.w,PlanarHeight.w] Mc2pWindowWidth [(c2pWindowNumber.w)] ; Returns width of c2pWindow Mc2pWindowHeight [(c2pWindowNumber.w)] ; Returns height of c2pWindow Mc2pWindowNewHeight c2pWindow#.w,NewHeight.w ; Change height of already defined c2p object Mc2p [[c2pWindow#.w],Chunky.l],Planar.l ; Convert chunky to planar (Use Mc2pWindow first) MReservec2pWindows [(]NumberOfWindows.w[)] ; Reserve structure-memory for c2pWindows MReserveShapes [(]NumberOfShapes.w[,ShapeBankToUse.w][)] ; Reserve structure-memory for Shapes MReserveBitmaps [(]NumberOfBitmaps.w[)] ; Reserve structure-memory for Bitmaps MShape [(]ShapeNumber.w,Width.w,Height.w[)] ; Allocmem for shape data MBitmap [(]BitmapNumber.w,Width.w,Height.w[)] ; Allocmem for bitmap data MAutoCookie On/Off ; Autocreation of ByteForByte cookies MAutoStencil On/Off ; Autocreation of ByteForByte stencils MFreec2pWindow [Firstc2pWindow.w[,Lastc2pWindow.w]] ; Free a c2pWindow, range of c2pWindows or all c2pWindows MFreeShape [FirstShape.w[,LastShape.w]] ; Free a Shape, range of shapes, or all shapes MFreeBitmap [FirstBitmap.w[,LastBitmap.w]] ; Free a Bitmap, range of bitmaps, or all bitmaps MShapeWidth [(ShapeNumber.w)] ; Returns width of Shape MBitmapWidth [(BitmapNumber.w)] ; Returns width of Bitmap MShapeHeight [(ShapeNumber.w)] ; Returns height of Shape MBitmapHeight [(BitmapNumber.w)] ; Returns height of Bitmap MAddrc2pWindow [(c2pWindowNumer.w)] ; Returns address of c2pWindow structure MAddrShape [(ShapeNumber.w)] ; Returns address of Shape structure MAddrBitmap [(BitmapNumber.w)] ; Returns address of Bitmap structure MHandle ShapeNumber.w,XOffset.w,YOffset.w ; Set handle of Shape MBitmapOrigin BitmapNumber.w,XOffset.w,YOffset.w ; Set origin of Bitmap MUsec2pWindow Mainc2pWindowNum.w[,Secondc2pWindowNum.w[,Thirdc2pWindowNum.w]] ; Current to use MUseShape MainShapeNum.w[,SecondShapeNum.w[,ThirdShapeNum.w]] ; Current Shape(s) to use MUseBitmap MainBitmapNum.w[,SecondBitmapNum.w[,ThirdBitmapNum.w]] ; Current Bitmap(s) to use MUsedc2pWindow ; Returns currently used c2pWindow MUsedShape ; Returns currently used Shape MUsedBitmap ; Returns currently used Bitmap MCludgeShape ShapeNumber.w,Width.w,Height.w,Memory.l ; Cludge shape from existing mem MCludgeBitmap BitmapNumber.w,Width.w,Height.w,Memory.l ; Cludge bitmap from existing mem MAutoUsec2pWindows True/False ; Automatically `use' new c2pWindows. <>0=True MAutoUseShapes True/False ; Automatically `use' new shapes. <>0=True MAutoUseBitmaps True/False ; Automatically `use' new bitmaps. <>0=True MMakeCookie [FirstShape.w[,LastShape.w]] ; Make a cookie for a shape, range of shapes, or all shapes MMakeStencil [FirstBitmap.w[,LastBitmap.w]] ; Make a stencil for a bitmap, range of bitmaps, or all bitmaps MFreeCookie [FirstShape.w[,LastShape.w]] ; Free a Shape's cookie, a range of Shape's cookies, or all cookies MFreeStencil [FirstBitmap.w[,LastBitmap.w]] ; Free's a Bitmap's stencil, a range of stencils or all stencils MAutoShapeWrap On/Off ; Auto X&Y Handle-wrapping for Shapes MAutoBitmapWrap On/Off ; Auto X&Y Handle-Wrapingp for Bitmaps MShapeWrap ShapeNumber.w,On/Off ; De/Activate X&Y Handle-Wrap for Shape MBitmapWrap BitmapNumber.w,On/Off ; De/Activate X&Y Handle-Wrap for Bitmap MCludgeShapeStruct [(]SourceShape.w,DestShape.w[)] ; Copy definition-data only MCludgeBitmapStruct [(]SourceBitmap.w,DestBitmap.w[)] ; Copy definition-data only MCopyc2pWindow Sourcec2pWindow.w,Destc2pWindow.w ; Copy definition-data only MShapeWindow [(]SourceShape.w,DestShape.w,X.w,Y.w,Width.w,Height.w[)] ; Cludge Shape within a Shape MBitmapWindow [(]SourceBitmap.w,DestBitmap.w,X.w,Y.w,Width.w,Height.w[)] ; Cludge Bitmap within a Bitmap MBitmapShape [(]SourceBitmap.w,DestShape.w[)] ; Copy definition-data only MShapesBitmap [(]SourceShape.w,DestBitmap.w[)] ; Copy definition-data only MAutoCookieXFlip On/Off ; Auto X-Flip for Shape's cookie MAutoCookieYFlip On/Off ; Auto Y-Flip for Shape's cookie MAutoStencilXFlip On/Off ; Auto X-Flip for Bitmap's stencil MAutoStencilYFlip On/Off ; Auto Y-Flip for Bitmap's stencil MAutoCookieFlip On/Off ; Auto X&Y Cookie-Flip for Shapes MAutoStencilFlip On/Off ; Auto X&Y Stencil-Flip for Bitmaps MShapeXFlip ShapeNumber.w ; Horizontally flip a Shape (see MAutoCookieFlip) MShapeYFlip ShapeNumber.w ; Vertically flip a Shape (see MAutoCookieFlip) MBitmapXFlip BitmapNumber.w ; Horizontally flip a Bitmap (see MAutoStencilFlip) MBitmapYFlip BitmapNumber.w ; Vertically flip a Bitmap (see MAutoStencilFlip) MCookieXFlip ShapeNumber.w ; Horizontally flip a Shape's cookie MCookieYFlip ShapeNumber.w ; Vertically flip a Shape's cookie MStencilXFlip BitmapNumber.w ; Horizontally flip a Bitmap's stencil MStencilYFlip BitmapNumber.w ; Vertically flip a Bitmap's stencil MAutoShapeClip Status.b ; Auto-clip new Shapes. On/Off MAutoBitmapClip Status.b ; Auto-clip new Bitmaps. On/Off MShapeClip ShapeNumber.w[,X.w,Y.w,Width.w,Height.w][,Active] ; Active=On/Off. Define Shape's clip window MBitmapClip BitmapNumber.w[,X.w,Y.w,Width.w,Height.w][,Active] ; Active=On/Off. Define Bitmap's clip window MGetaShape ShapeNumber.w,X.w,Y.w,Width.w,Height.w[,Block?,StencilIsCookie?] ; Grab shape from bitmap MGetaBitmap BitmapNumber.w,X.w,Y.w,Width.w,Height.w[,Block?,CookieIsStencil?] ; Grab bitmap from shape MScroll X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w[,CustomOffsets.l]] ; Copy graphic MScrollShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w[,CustomOffsets.l]] ; Copy graphic MScrollStencil X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w[,CustomOffsets.l]] ; Copy sten to sten MScrollCookie X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w[,CustomOffsets.l]] ;Copy cook to cook MMaskScroll X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; Copy bitmap graphic with stencil-cut MMaskScrollShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Copy shape graphic with cookie-cut MMaskScrollStencil X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w];Copy stencil2stencil & stencil-cut MMaskScrollCookie X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Copy cookie to cookie & cookie-cut MScrollBitmapToShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w[,CustomOffsets.l]];bitmap 2 shape MScrollShapeToBitmap X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w[,CustomOffsets.l]] ;shape 2 bitmap MScrollStencilToCookie X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w[,CustomOffsets.l]]; sten2cookie MScrollCookieToStencil X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w[,CustomOffsets.l]] ; cookie2sten MMaskScrollBitmapToShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; Copy bitmap to shape & cut MMaskScrollShapeToBitmap X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Copy shape to bitmap & cut MMaskScrollStencilToCookie X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ;Copy stencil2cookie & cut MMaskScrollCookieToStencil X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Copy cookie2stencil & cut MBlockScroll X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; BlockCopy graphic MBlockScrollShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; BlockCopy graphic MBlockScrollStencil X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; BlockCopy stencil to stencil MBlockScrollCookie X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; BlockCopy cookie to cookie MBlockScrollBitmapToShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; BlockCopy bitmap to shape MBlockScrollShapeToBitmap X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; BlockCopy shape to bitmap MBlockScrollStencilToCookie X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w];BlockCopy stencil2cookie MBlockScrollCookieToStencil X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; BlockCopy cookie2stencil MCPU Processor.b ; Set cpu routines allowed to use. CAREFUL!! Try using `MProcessor' or `Processor' MCls [Colour] Clear a bitmap to colour 0 or the specified colour (in DrawingMode) MClsShape [Colour] Clear a shape to colour 0 or the specified colour (in DrawingMode) MClsStencil [Colour] Clear a stencil to colour 0 or the specified colour (in DrawingMode) MClsCookie [Colour] Clear a cookie to colour 0 or the specified colour (in DrawingMode) MPlot Xpos.w,Ypos.w[,Colour] ; Plot a single pixel in the bitmap in DrawingMode MPlotShape Xpos.w,Ypos.w[,Colour] ; Plot a single pixel in the shape in DrawingMode MPlotStencil Xpos.w,Ypos.w[,Colour] ;Plot a single pixel in the stencil to *represent* DrawingMode MPlotCookie Xpos.w,Ypos.w[,Colour] ; Plot a single pixel in the cookie to *represent* DrawingMode MPoint (Xpos.w,Ypos.w[,BitmapToRead.w]) ; Return the colour of a single pixel in a bitmap MPointShape (Xpos.w,Ypos.w[,ShapeToRead.w]) ; Return the colour of a single pixel in a shape MPointStencil (Xpos.w,Ypos.w[,BitmapToRead.w]) ;Return the status of a pixel in stencil. -1=Data, 0=Background MPointCookie (Xpos.w,Ypos.w[,ShapeToRead.w]) ; Return the status of a pixel in cookie. -1=Data, 0=Background MSScroll X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w[,CustomOffsets.l]] ; Copy bm 2 bm and st 2 st MSScrollShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w[,CustomOffsets.l]] ; Copy sh2sh and ck2ck MSScrollBitmapToShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w[,CustomOffsets.l]];bm2shandst2ck MSScrollShapeToBitmap X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w[,CustomOffsets.l]]; sh2bmandck2st MSMaskScroll X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; Stencil-Copy bm 2 bm and st 2 st MSMaskScrollShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Cookie-Copy sh2sh and ck2ck MSMaskScrollBitmapToShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ;Sten-Copy bm2sh&st2ck MSMaskScrollShapeToBitmap X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Cook-Copy sh2bm&ck2st MSBlockScroll X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w] ; Block-Copy bm 2 bm and st 2 st MSBlockScrollShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w] ; Block-Copy sh2sh and ck2ck MSBlockScrollBitmapToShape X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceBitmapNum.w];BlockCopy bm2sh&st2ck MSBlockScrollShapeToBitmap X1.w,Y1.w,Width.w,Height.w,X2.w,Y2.w[,SourceShapeNum.w];BlockCopy sh2bm&ck2st MSScrollCut On/Off ; 0=Paste stencil/cookie, <>0=Cut using stencil/cookie MUseShapeBank BankNumber.w ; Current shape bank, 0..31 MNothing ; This is the 128th token and it doesn't work so is a dummy MMaskScrollMode [([]Mode.w[])];CookieMode/EraseMode/InvMode/SolidMode/MColourMode/MReMapMode/MSimpleReMapMode/MAddMo MBlitMode [([]Mode.w[])] ; CookieMode/EraseMode/InvMode/SolidMode/MColourMode/MReMapMode/MSimpleReMapMode/MAddMode MBlit [ShapeNumber.w,]Xpos.w,Ypos,w ; Blit shape to bitmap, any coords MBlock [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit shape to bitmap, align Xpos and width in multiples of 16! MTile16x16 [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 16x16 shape to bitmap, size must be 16x16, align x/y MTile32x32 [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 32x32 shape to bitmap, size must be 32x32, align x/y MSTile16x16 [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 16x16 shape&cook 2 bitmap, size 16x16, align x/y MSTile32x32 [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 32x32 shape&cook 2 bitmap, size 32x32, align x/y MSTile16x16Store [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 16x16 shape&cook 2 bitmaps, size 16x16, align x/y MSTile32x32Store [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 32x32 shape&cook 2 bitmaps, size 32x32, align x/y MTile16x16Store [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 16x16 shape to 2 bitmaps, size 16x16, align x/y MTile32x32Store [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit 32x32 shape to 2 bitmaps, size 32x32, align x/y MReserveQueues [(]NumberOfQueues.w[)] ; Reserve structure-memory for Queues MFreeQueue [FirstQueue.w[,LastQueue.w]] ; Free a Queue, a range of queues, or all queues MAddrQueue [(QueueNumber.w)] ; Returns address of Queue structure MQueue [(]QueueNumber.w,NumberOfItems.w[)] ; Allocmem for Queue list items MFlushQueue QueueNumber.w ; Empties the queue to contain no items MQBlitMode [([]Mode.w[])] ; CookieMode/EraseMode/InvMode/SolidMode/MColourMode/MReMapMode/MSimpleReMapMode/MAddMode MAutoUseQueues True/False ; Automatically `use' new Queues. <>0=True MUseQueue MainQueueNum.w[,SecondQueueNum.w[,ThirdQueueNum.w]] ; Current queue(s) to use MUsedQueue ; Returns currently used Queue MQBlit [[Queue.w,]ShapeNumber.w,]Xpos.w,Ypos,w ; QBlit shape to bitmap, any coords MQBlock [[Queue.w,]ShapeNumber.w,]Xpos.w,Ypos.w ; QBlock-blit shape 2 bitmap, align Xpos & width in mult of 16 MUnQueue QueueNumber.w[,FirstItem.w,LastItem.w][,BitmapNumber.w] ; UnQueue [range of] queued objects [&flush] MBitmapPtr [Xpos.w,Ypos.w][,BitmapNumber.w] ; Return data address calculated using bitmap [and coords] MShapePtr [Xpos.w,Ypos.w][,ShapeNumber.w] ; Return data address calculated using shape [and coords] MStencilPtr [Xpos.w,Ypos.w][,BitmapNumber.w] ; Return address calculated using stencil [and coords] MCookiePtr [Xpos.w,Ypos.w][,ShapeNumber.w] ; Return address calculated using cookie [and coords] MQDummy [Queue.w,]Xpos.w,Ypos.w,Width.w,Height.w ; Add an item to a queue without having to do a blit MSBlitMode [([]Mode.w[])] ; CookieMode/EraseMode/InvMode/SolidMode/MColourMode/MReMapMode/MSimpleReMapMode/MAddMode MSBlit [ShapeNumber.w,]Xpos.w,Ypos,w ; Blit shape to bitmap and cookie to stencil, any coords MSBlock [ShapeNumber.w,]Xpos.w,Ypos.w ; Block-blit shape to bitmap & cookie 2 stencil, Xpos&Width in 16's MSBlitCut On/Off ; 0=Paste stencil/cookie, <>0=Cut using stencil/cookie MQSBlitMode [([]Mode.w[])] ;CookieMode/EraseMode/InvMode/SolidMode/MColourMode/MReMapMode/MSimpleReMapMode/MAddMode MQSBlit [[Queue.w,]ShapeNumber.w,]Xpos.w,Ypos,w ; QBlit shape to bitmap and cookie to stencil, any coords MQSBlock [[Queue.w,]ShapeNumber.w,]Xpos.w,Ypos.w ; QBlock-blit shape 2 bitmap, Xpos&width mult of 16 MQSBlitCut On/Off ; 0=Paste stencil/cookie, <>0=Cut using stencil/cookie. Adds entry to queue MBoxF Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw a filled box in a bitmap in DrawingMode MBoxFShape Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw a filled box in a shape in DrawingMode MBoxFStencil Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw a filled box in a stencil in DrawingMode MBoxFCookie Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw a filled box in a cookie in DrawingMode MBox Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw an unfilled box in a bitmap in DrawingMode MBoxShape Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw an unfilled box in a shape in DrawingMode MBoxStencil Xpos.w,Ypos.w,Xpos2.w,Ypos2.w[,Colour] Draw an unfilled box in a stencil in DrawingMode MBoxCookie Xpos.w,Ypos.w,Width.w,Height.w[,Colour] Draw an unfilled box in a cookie in DrawingMode MPlanar16ToBitmap BitmapNum.w,PlanarAddr.l[,OpWidth.w,OpHeight.w,PlanarWidth.w,PlanarHeight.w] ; Convert p2c MPlanar16ToShape ShapeNum.w,PlanarAddr.l[,OpWidth.w,OpHeight.w,PlanarWidth.w,PlanarHeight.w] ; Convert p2c MGenericPtr Xpos.w,Ypos.w,BaseAddress.l,RowWidth.w ; Calculate and return address based on inputs MCludgeCookie ShapeNumber.w,Memory.l ; Cludge shape's cookie from existing mem MCludgeStencil BitmapNumber.w,Memory.l ; Cludge bitmap's stencil from existing mem MBlockUnQueue QueueNumber.w[,FirstItem.w,LastItem.w][,BitmapNumber.w];Block-UnQueue [range of] objects[&flush] MReMap [Colour#0.b,Colour#1.b,BitmapNum.w] *or* [RemapTable.l[,BitmapNum.w]] ; Remap #0 to #1 or with table MReMapShape [Colour#0.b,Colour#1.b,ShapeNum.w] *or* [RemapTable.l[,ShapeNum.w]] ; Remap #0 to #1 or with table MLine [Xpos.w,Ypos.w,]Xpos2.w,Ypos2.w[,Colour.b] ;Draw a line from X1,Y1 to X2,Y2 in a Bitmap in DrawingMode MLineShape [Xpos.w,Ypos.w,]Xpos2.w,Ypos2.w[,Colour.b] ;Draw a line from X1,Y1 to X2,Y2 in a Shape in DrawingMode MLineStencil [Xpos.w,Ypos.w,]Xpos2.w,Ypos2.w[,Colour.b];Draw a line from X1,Y1 to X2,Y2 in a stencil in DrawingMode MLineCookie [Xpos.w,Ypos.w,]Xpos2.w,Ypos2.w[,Colour.b] ;Draw a line from X1,Y1 to X2,Y2 in a cookie in DrawingMode MInk MainColour.b[,SecondColour.b[,ThirdColour.b]] ; Set what colour to assume as currently used. 0..255 MColourMode ;Returns value 4 which represents `colour' mode in the blit modes MReserveTables [(]NumberOfTables.w[)] ; Reserve structure-memory for Tables MFreeTable [FirstTable.w[,LastTable.w]] TableNumber.w ; Free a Table, a range of tables or all tables MAddrTable [(TableNumber.w)] ; Returns address of Table structure MTable [(]TableNumber.w,SizeInBytes.l[)] ; Allocmem for Table list items MAutoUseTables True/False ; Automatically `use' new Tables. <>0=True MUseTable MainTableNum.w[,SecondTableNum.w[,ThirdTableNum.w]] ; Current table(s) to use MUsedTable ; Returns currently used Table MTablePtr [TableNum.w] ; Returns pointer to base of the table itself MReMapMode ;Returns value 5 which represents `ReMap' mode in the blit modes (uses current 2-dimensional table) MSimpleReMapMode ;Returns value 6 which is `SimpleReMap' mode in blit modes (uses current 1-dimensional table) MSMaskScrollMode [([]Mode.w[])];CookieMode/EraseMode/InvMode/SolidMode/MColourMode/MReMapMode/MSimpleReMapMode/MAdd MPlotParticles CoordinateList.l,NumPoints.l[,Colour.b] ; Plot lots of points from a table of positions MGrabParticles CoordinateList.l,NumPoints.l,Buffer.l ; Grab lots of points from a table into buffer mem MDrawParticles CoordinateList.l,NumPoints.l,Buffer.l ; Draw lots of previously grabbed points using a table MGrabParticlesAndPlot CoordinateList.l,NumPoints.l,Buffer.l[,Colour.b]; Grabs points to buffer & plots table MAddToParticles CoordinateList.l,NumPoints.l,IncA.l[,IncB.l] ; Add [two sets of] increments to particle list MWrapParticles CoordinateList.l,NumPoints.l ; Bring particles in from opposite edge to which they left MReboundParticles CoordinateList.l,NumPoints.l,DirectionList.l,DetectSize.w ; Bounce off edges (NOT Ptr.l!!!) MProcessor ; Returns value 0..6 representing MC68000..MC68060 cpu according to exec\AttnFlags MAddXYToParticles CoordinateList.l,NumPoints.l,XToAdd.w,YToAdd.w ; Add constants to all particles MAddXYToParticlesA CoordinateList.l,NumPoints.l,ValueToAdd.l ; Add constant to all particle pointers MAddXYToParticlesQ CoordinateList.l,NumPoints.l,XToAdd.q,YToAdd.q ; Add constants to all particles MParticleMode Mode.w or () ; MColourMode, MSimpleReMapMode, MReMapMode or MAddMode - to use in particle plot/draw MMildredBase ; Returns long address of the base of Mildred's internal data area MDrawingMode [(]Mode.w[)] ; InvMode/MColourMode/MReMapMode/MSimpleReMapMode/MAddMode to use for drawing (MPlot etc) MParticleFormat [(]Format.b[)] ; Set particle lists/operation format. 0 = X.w,Y.w, <0 = X.q,Y.q, >0 = Ptr.l MPictureDissolveIn PictureBitmapNum.w,Colour.b ; Do a picture-based colour-number dissolve-in of a bitmap MPictureDissolveOut PictureBitmapNum.w,Colour.b,WipeToColour.b ;Do picture-based colour dissolve-out of bitmap MZoom SrcX.q,SrcY.q,XAdd.q,YAdd.q,DestX.w,DestY.w,OpWidth.w,OpHeight.w,DeRes?.w[,SrcBmap.w[,CustomOffsets.l]] MZoomShape SrcX.q,SrcY.q,XAdd.q,YAdd.q,DestX.w,DestY.w,OpWidth.w,OpHeight.w,DeRes?.w[,SrcShap.w[,CustOffs.l]] MZoomBitmapToShape SrcX.q,SrcY.q,XAdd.q,YAdd.q,DstX.w,DstY.w,OpWid.w,OpHeight.w,DeRes?.w[,SrcBmap.w[,CustOffs.l]] MZoomShapeToBitmap SrcX.q,SrcY.q,XAdd.q,YAdd.q,DstX.w,DstY.w,OpWidth.w,OpHeight.w,DeRes?.w[,SrcShap.w[,CustOffs.l]] Any problems/suggestions/bugs, contact angeldaniel25@yahoo.como.uk