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 paul@stationone.demon.co.uk