M.S.E. - Moving Sprites Editor (or BINED for BINary EDitor) Copyright 1989, 1990 - Frederick Volking ------------------------------------------------------------------------ This utility is a graphics tool that allows a person to paint & plan each frame (sprite) of a multi-frame moving cyclic picture (just like cartoons!). By using the PLAY function, the sprite can "actually be watched" as it moves(cycles) exactly as it will in a program. For a demo of this effect do the following - From the DOS prompt -------------------------> BINED MANWALK file will be automatically loaded - once loaded, press a ------------------------> ^F9 (means ctrl F9) all frames will be marked - press an ------------------------------------> F10 the cyclic motion-picture will be "played" Take a look at this utility and the accompanying PIC data files. You'll get an idea of the "general type" of graphics animation BINED will help you work with. BINED's main function is working with "sprites". Sprites are small independent images which are rapidly displayed on the screen in succession thus providing the appearance of animation. Look "closely" at PIC file DIG. Notice the quantity of detail used in the movement. Notice the head turns "before" the arms turn "before" the body turns ... meaning ... even in the very small space provided by a 16x16 pixel sprite, the movement looks VERY REALISTIC ..... This is very important and separates "good" sprites from "poor" sprites. ------------------------------------------------------------------------ There is no online help, only the below documentation ... The majority of functions are fairly cognizant EXCEPT ... -- Use a ^up, ^down, ^left & ^right to move from IMAGE-to-IMAGE -- Use F4 image copy to add image frames - just copy the frame into itself and a frame will be automatically added instead. -- PixLok's (F8 & ^F8) - Duplicating features from frame to frame - Move to an image frame which has a feature you want to duplicate in another image. - Touch F8 once. - Move the pixel cursor onto of whatever pixels you want to duplicate and press another F8. Each pixel so selected will be "L"ocked. - BEFORE LEAVING the locked image frame, move the pixel cursor to the top left corner of the image frame. - Use the ^arrows to move to another image frame. - Make sure the pixel cursor is located in the top left corner of the new image frame. - Press F8 and every locked pixel from the original image will be instantly duplicated in the current frame. - Press ^F8 to UnLock the original image ... or ... move to another image frame and press F8 again to re-duplicate the same pixels over and over. ----------- Note: The reason to position the pixel cursor in the top left corner of both images is that when the pixels are duplicated they are duplicated in spatial relationship to the "before" and "after" pixel locations. Thus if the original pixel cursor location is in the top left of the frame, and the cursor is positioned half way down in the new frame then only the top half of the locked image will be duplicated AND it will be duplicated in the bottom half of the image. -- hat - This may be used to name each individual frame. This name appears in the PIC file just before the pixel data thus is helpful in direct manipulation of the PIC data file with things like text processors. -- Hori - This determines how many pixels horizontally the image will be moved before showing the next image in the cycle. It may be positive or negative. -- ert - This determines how many pixels vertically the image will be moved before showing the next image in the cycle. It may be positive or negative -- OR - this determines if the this specific frame is to be XOR erased before application of the next frame in the cyclic series. -- ime - This determines the quantity of ticks (18th of a second) that this frame will be displayed before showing the next frame. ------------------------------------------------------------------------ Here are two challenging sprite sequences ... give it a try and see how creative you are and how well you can visualize. - Multiframe quick cycling cartoon Picking: - Use a sprite image of 24 pixels wide by 16 pixels tall. - Use the little man character appearing in the sample PIC's - Man should be inside a mining tunnel, but only the wall in front of the man is visable. - Man is using a "Pick" to knock rocks from the wall in front of him: - man standing with pick in hands - right hand near pick head - left hand near handle butt - as hands come together (near handle butt) pick head begins moving to rear of man and upwards - For a moment, head cannot be seen as arm, carrying pick, arc's over head - Hands finally come together just as pick meets wall - Dust bursts - Rocks fall to floor - Man leans back to pull pick free from wall - Catches pick head as it pulls free (few more rocks fall) - man returns to standing pose ------------ sequence repeats ---------------- (1) Multiframe long sequence with multiple long pauses Lunch Time: - Use a sprite image of 24 pixels wide by 16 pixels tall. - Use the little man character appearing in the sample PIC's - Man should eat his lunch ... suggested ... - man standing - stoops and picks up lunch pail - looks around for rock - sits on rock - opens lunch pail - long pause. Other frame sequences will be inserted here later to show quick repeating eating, drinking and smoking - closes lunch pail - stands - bends to put lunch pail down on ground - stands ------------ sequence repeats ---------------- ----------------------------------------------------------------------- The PIC files are designed to allow them to be read by any language (C, Basic, Pascal) whatever. ie; all pixel colors are stored in flat text format. This method is EXTREMELY SPACE WASTEFUL! So when the final images are stored for your graphics program I would suggest using a different method.... ======== PIC file structure ========= Line #1: ImageQnty, PixelsWide, PixelsTall Line #2: Palette color Array Settings (16 for EGA) Line #A: Frame Title for Frame 1 Line #B: XpixelMovement, YpixelMovement, DoXORerase?, 18thOfSeconds LINE #C-PixelTall: integers representing individual pixels LINE #C-PixelTall: quantity of lines ---------------------------- LINE #C-PixelTall: ---------- is determined by ------------------ LINE #C-PixelTall: ----------------------- quantity of PixelsTall Line #A: Frame Title for Frame 1 Line #B: XpixelMovement, YpixelMovement, DoXORerase?, 18thOfSeconds LINE #C-PixelTall: integers representing individual pixels LINE #C-PixelTall: quantity of lines ---------------------------- LINE #C-PixelTall: ---------- is determined by ------------------ LINE #C-PixelTall: ----------------------- quantity of PixelsTall Line #A: Frame Title for Frame 1 Line #B: XpixelMovement, YpixelMovement, DoXORerase?, 18thOfSeconds LINE #C-PixelTall: integers representing individual pixels LINE #C-PixelTall: quantity of lines ---------------------------- LINE #C-PixelTall: ---------- is determined by ------------------ LINE #C-PixelTall: ----------------------- quantity of PixelsTall ------------------------------------------------------------------------