GRIME - Grafic Reality's Map Editor I apologise if this document file is a bit of a mess, but it is simply the guide file with all the hypertext stuff removed. The guide file was not written in a linear style.... Contents Introduction Requirements The Screen Layout Basic Operation Keyboard Short Cuts The Project Menu The Settings Menu The Edit Menu The Tools Menu The Preferences Menu The Environment Menu Map files Attributes Powerpacker Support Palettes The Future Greetings Credits History GRIME - The PD Version SHOAH GRIME is Copyright © 1994 by Adrian Jenkins. All rights reserved. This document is also Copyright © 1994 by Adrian Jenkins. This freeware version of GRIME (V1.2) may be freely distributed for non-commercial purposes only. (See note below) The entire risk as to the quality and performance of this program is with you. The author assumes no responsibility or liability whatsoever with respect to your use or inability to use of this software. The author is not responsible for any loss of data, damages to software or hardware that may result directly or indirectly from the use of this program. The author reserves the right to make changes to the software or documentation without notice. Everything in this distribution must be kept together, in original unmodified form. Archiving these files is allowed. NOTE FOR PD COMPANIES: SHOAH PD has the exculsive right to distrubute this product prior to December 31st 1994. After which date this product maybe distrubuted by ANY PD company. A charge of NO MORE than two (2) UK pounds may be charge for the distrubution of these files ( If you have paid more, then please send details to the Author ). "Introduction" GRIME - What is it? GRIME is designed to enable the user to create maps for his/her games in an easy, user-friendly environment. As you may know, almost all games that have large playing areas, usually use a map to store the layout of each of the levels. The way this works is a screen of graphics is designed in an art package, this screen contains small blocks of graphics which when placed together in various patterns produce the final graphics. A map is then created that just contains the numbers of the blocks in the order that they should appear. An example. The graphics screen would look something like this (See GRIME:IFFs/cheeseygrimegrafx.iff) Then the map could look something like this:- 7 2 3 2 10 1 0 1 0 1 6 2 11 2 5 1 0 1 0 1 8 2 4 2 9 Which would produce a screen like this (See GRIME:IFFs/cheeseyEXAMPLE.iff) By storing just the numbers of the blocks, rather than entire screens, the games programmer can save vast amounts of valueable memory. Example map reading, theory and Squize pretend code... This is the quickest way ( I know of ) to read and display a map... First of all you will need a list of pointers, each one points to an individual block in memory, eg block_pointer1 = Block1 ... block_pointerx = Blockx So, from there we go to... Read first value of map ;Let's pretend it's 5 .loop Read block_pointer1 + the above value ;So this will be We now point to the correct block, ;block_pointer1 + 5 Plot it ;ie block_pointer5 Read next value of map Goto .loop until done I hope that makes at least some sense, if you would like a complete assembler version then look out for "SHOAH.s", released 1st Jan '95. So the aim of GRIME is to make the creation of these maps quick and easy. "Requirements" GRIME - Can I use it? GRIME needs AMOS.Library to be present either in GRIME's directory or, preferably, in LIBS: GRIME works on Kickstart 1.2 and above. GRIME has been tested on the following machines :- A1200 KS 3.0 with 2MB Chip / 4MB 32 bit Fast - 80M HD A1200 KS 3.0 with 2MB Chip / 2MB 16 bit Fast - 85M HD A1200 KS 3.0 with 2MB Chip A500 KS 1.3 with 512K Chip / 512K Fast A500 KS 1.3 with 512K Chip / 2.5 Fast - 80M HD A500 KS 1.2 with 512K Chip / 512K Fast CDTV KS 1.3 with 1MB Chip "Screen Layout" GRIME - What's on the screen mate? Along the top of the main GRIME screen you will find the following information +-------------------------------------------------------------------------+ | | Info Window | Current Blk | Under Csr | Map Offset | +-------------------------------------------------------------------------+ Information Window - This is used by GRIME to give the user information on the current attibutes for the block in current use. It's also used to give the user information about the current operation being performed. Current Block - The current block being used. Under Cursor - The block currently below the cursor position. Map Offset - The current position of the cursor within the map or the block screen. On the left middle section of the screen is the information about the block screen. Size - The X and Y dimensions of the the Block screen. Colours - The number of colours on the Block screen. Blocks - The Maximum number of blocks on the Block Screen. Scr. Res. - The Resolution of the Block Screen. On the right middle section of the screen is the information about the map screen. Map Size - The current X and Y size of the map, measured in blocks. Blck Sze - The current X and Y size of the blocks. Blocks - The total number of blocks within the map. On Screen - The number of blocks displayed on the map screen. The centre section contains the current block the previous block and the next block. The bottom section of the screen normally display information about your computer, such as CPU and memory. But can also contain message from GRIME to you the user. "Getting started" GRIME - Ummm... I'm haven't a clue how to use this... GRIME uses three screens in total. The first screen you see upon loading is GRIME's menu screen, this screen is always partially (if not fully) visable. The menu screen is used to display various details about the current Map and Block screens and the current settings, it also has all the menus attached to it. Only a few of the menu options are available when you first load GRIME, but once you have loaded a block screen into GRIME all the options will be available and a map screen will be created. To you use GRIME's menus simply move the mouse cursor over GRIME's menu screen, if only the upper section of the screen is currently being displayed then the rest of the screen will be brought to the front. Then use the right mouse button in the standard Amiga way. While on the actual map screen the left mouse button is used to paste the current block down onto the screen. The right mouse button will switch from the map screen to the block screen, from here you can select a new block with the left mouse button, and use the right button to switch back to the map screen. If either the Map or Block screen is larger than the screen display then the cursor keys and/or the mouse can be used to move about the larger area (Depending on the settings in the PREFERENCES Menu). "Keyboard Short Cuts" GRIME - How to get away with not using the menus! The following keys can be used within GRIME. Movement Arrow keys - These allow you to move around the map and block screen. When used in conjunction with the ALT key the map will be shifted by 10 blocks. When used in conjunction with the SHIFT key the map will be shifted by the size of the map screen. When used in conjunction with the CTRL key the map will jump to the begining or end of the map. H  - Home. Returns the map to position zero, zero. Cut 'n Paste X  - "Cut" C  - "Copy" V  - "Paste" F  - "Fill" Z  - "Show Copy Buffer" Misc. keys N  - "Number Overlay Toggle" G  - "Grid Snapping Toggle" R  - Reloads the current Block file. D  - "Redraw Map" P  - "Edit Palette" L  - "Load block Screen" M  - "Load Map File" U  - Undo's the last operation. AMIGA A  - Multitask Key (Flip from GRIME to WB and back!)   - This allows you to pick a block from the MAP screen. "The Project Menu" GRIME - Files and the like. The project menu contains the following options. Load Block Screen - This allows you to load an IFF file into memory containing all the blocks for your map. The block file can be bigger than a standard screen, as GRIME allows you to scroll around the screen. Load GRIME Map - Use this option to load in a GRIME map. The menu contains three sub-menus depending on the format you wish to load in. The options are " GRIME format ", " Raw Data in Words " and " Raw Data in Bytes ". Save GRIME Map As - This option is used to save out the current GRIME map. Again there are three sub-menus to allow you to decide on the format to save as. The formats are " GRIME format ", " Raw Data in Words " and " Raw Data in Bytes ". Save Palette - This saves out the current file in either " AMOS ASCII " or " Asm. Data ". About - Tells you a bit about the program and the all important greetings :) Quit - Hmmm.. I wonder what this does? See also " Keyboard Shortcuts " "The Settings Menu" GRIME - Options, Options. There's so much choice. Set Block Size - This allows you to set the X and Y size of the blocks that are grabed from the the block screen. Only one size of block is allowed for each individual map. Once the new size has been entered, the map will be re-displayed using the new block size. Set Map Size - This option allows you to enter the size of the map that you wish to edit. WARNING!! changing the map size will erase the current map! Set Base Block - From here you can set the block that is used for clearing the map and filling the area left by a cut operation. This block is normally number zero. Edit Palette - This allows you to alter the palette of the Block/Map screen. The palette requester will appear on either the Block or Map screen depending on the settings in the " PREFERENCES Menu ". "The Edit Menu" GRIME - Cut, paste... Cut Block - This allows you to cut a section from the current map. Use the left mouse button to select the upper left section of the block, then move the mouse to the bottom right block of the section and click the left mouse button again. At any time pressing the right mouse button will cancel the operation. Once you have selected the area, the section will be cut out and the " Base Block " will be placed in the section. Paste Block - This option is used to place the current Copy Buffer onto the map screen. Once you've selected the option, simply click the left mouse button on the area of the map that you want the upper left corner of the buffer to start at. Copy Block - This performs the same operation as the Cut Block option except that the area is not replaced with the base block. Fill Block - This operation works in a similar way to the Cut Block option, but rather than cutting the area out, it is filled with the current block. Show Copy Buffer - This does the same as Show Full Map, except the Copy Buffer is shown rather than the Map. Save Copy Buffer - Allows you to save out the current copy buffer, the format is the standard " GRIME format ", so this file can be reloaded as a map if you wish. " NOT AVAILABLE IN THIS VERSION " Load Copy Buffer - Allows you to load a map into the copy buffer, the format is the standard " GRIME format ". See also " Keyboard Shortcuts ". "The Tools Menu" GRIME - Tools of the computer kind! Clear Map - This operation clears the current map completely! Redraw Map - This does exactly what it say's it does. It redraws the map on the map screen.... Swap Menu Colours - This toggles the colours used on the menu screen, between the normal palette and the Block/Map Screen palette. Show Full Map - This displays the entire map on screen, by reducing all the blocks down in size, so that they fit on screen. Swap CB <-> Map - Swaps the current Copy buffer with the current map, thus allowing you to edit the Copy buffer.... Snapshot Display - ..... See also " Keyboard Shortcuts ". "The Preference Menu" GRIME - Personalization... Block Screen Scroll - The method used to scroll around on the Block Screen, either mouse movement or cursor keys or both! Block Scroll Step - Whether the Block Screen is scrolled by pixel or block size. Map Screen Scroll - The method used to scroll around the Map Screen, either mouse or cursors or both. Number Overlay - Allows the blocks to have their number added to them on the Map Screen. Snap To Grid - Defines whether the Block attached to the mouse pointer floats or snaps to the Map position. Palette To... - Defines whether the Palette pops up on the Map Screen or Block Screen. See also " Keyboard Shortcuts " "The Environment Menu" GRIME - Personalization... Screen Display - This alters the display position of all the screens used by GRIME. Screen Blanker - This allows you to turn GRIME's "screen blanker" on and off. Save Icons? - This tells GRIME whether to save icons with maps or not. Show Icons? - This tells GRIME whether to show icons in file requesters. Save Configuration - Saves out all the current settings and preferences. " NOT AVAILABLE IN THIS VERSION " Load Configuration - Loads in a GRIME Configuration file. " NOT AVAILABLE IN THIS VERSION " "Screen Blanker" GRIME - Why's the screen gone black? A screen blanker stops the computer image from burning into your screen, by clearing it to black when no user input is detected for a certain amount of time. Because GRIME is written in AMOS (Which isn't very OS friendly) a normal screen blanker won't work while GRIME is the frontmost screen, therefore I have incorporated a blanker into GRIME. "Map Files" GRIME - Technical tings. Details of the map files. The format of a GRIME map file is as follows. The first twenty bytes are used as a header to hold all the necessary information for GRIME to function correctly. The data after this is the actual map data stored in words. The GRIME header consists of the following information Offset Type Information --------------------------------- 0 String "GRIME" - This is used to identify the file as a GRIME file. 5 Byte 1 - The version number for the header. One identifies this as a map file. 6 Word BLOCK_X - This is the X dimension of the blocks used in this map. 8 Word BLOCK_Y - This is the Y dimension of the blocks used in this map. 10 Word MAP_X - This is the X dimension of the map. 12 Word MAP_Y - This is the Y dimension of the map. 14 Word BASE_BLK - This is the base block (Normally zero) that is used for clearing the map, and filling an area after a cut operation. 16 Word ATTRMASK - This is the mask used to obtain the attributes from a file. 18 Word future - Reserved for future expandsion. 20 Words MAP_DATA - The map data starts here. To obtain the length of the MAP_DATA simply multiply MAP_X by MAP_Y. To obtain the BLOCK_MASK simply do a logical NOT on the ATTRMASK. The BLOCK_MASK is used to mask out the attributes from the block numbers in the MAP_DATA to obtain the actual block number, the ATTRMASK is used to mask out the block number and leaves you with just the attribute data. The MAP_DATA is stored horizontally. i.e. From the top left across to the top right, then the next line, etc. The WORD RAW DATA file is the same as the GRIME format, except that it DOES NOT contain the header. i.e. it simply contains MAP_DATA. " NOT AVAILABLE IN THIS VERSION " The BYTES RAW DATA file is the same as the WORD file but it only contains the lower 8-bits of each block. Hence, attibutes can NOT be saved with this format, because GRIME only allows the upper 8-bits (Maximum) to be used for attributes, Sorry :( " NOT AVAILABLE IN THIS VERSION " The AMOS BANK file contains the exact same data as the GRIME format, except is has an extra 20 bytes containing the AMOS bank header (See the AMOS Professional manual for details of bank headers.) " NOT AVAILABLE IN THIS VERSION " GRIME is capable of loading " Powerpacked files " "Attributes" GRIME - The bits at the top... " NOT AVAILABLE IN THIS VERSION " GRIME handles attributes in two different ways. When you alter a blocks attributes, you can choose to make the attribute either LOCAL or GLOBAL. LOCAL When you select this option, the attributes affect the current block, but only while it is current. For example if you select a block, then set some attribute flags for it and choose the LOCAL option, the following happens. When you now paste this block onto the map, the block will retain these attributes. But, if you select another block then re-select the original block it will no longer have these attributes (Unless you select the block using the pick block method, in which case the block will have the attributes of the block you picked). This is useful for blocks which normaly do not have attibutes, but there may be an area of the map where the block should have attributes (A hidden room, invisable bonus, etc.). GLOBAL This option affects the current block and the block when it's used in the future. For example, selecting GLOBAL after setting some attributes, means that whenever you select this block in the future (from the block screen) it will have these attributes. This method would normally be used for objects that, for example, always kills the player if he/she touched the block. While on the map screen GRIME displays the current blocks attributes in the information window at the top of the screen, using the following format. -*--············ This layout shows the 16-bits that GRIME uses to store the block information. The `·' represents the bits used for storing the BLOCK number. The `-' represents the bits used for storing the ATTRIBUTES. The `*' represents the bits in the ATTRIBUTES area that are set. The total number of bits used for ATTRIBUTES is set using the ATTRIBUTES menu, and the bits are set/cleared using this menu also. While on the BLOCK screen GRIME display the ATTRIBUTES information for the block that is UNDER the cursor (i.e. Highlighted). This information is the GLOBAL attributes value for the block. The global attributes files that GRIME saves contains the following information. Offset Type Information ----------------------------- 0 String "GRIME" - This is used to identify the file as a GRIME file. 5 Byte 2 - The version number for the header. Two identifies this as a Global Attributes file. 6 Bytes ATTRDATA - The attribute flags for each block. The length of the ATTRDATA is found by obtaining the length of the file minus 6 (The header length). Each attribute flag is stored as a single byte, because GRIME only allows the upper 8 bits of the BLOCK WORD to be used as attribute flags. " NOT AVAILABLE IN THIS VERSION " "PowerPacker Support" GRIME - PowerPacker Support If GRIME can find the Powerpacker.Library then it will be capable of loading files that have been powerpacked. GRIME currently can not load AMOS BANK files, Configuration files or Owner files that have been powerpacked. PowerPacker can't pack the Config or Onwer files anyway :) and I don't think many people will make use of the AMOS bank save routine (If you do and want Powerpacker support for this routine, I might implement it) GRIME can NOT load powerpacked IFF's either... GRIME can NOT save powerpacked files. So all files are saved in their RAW format. I might implement a powerpacker save routine in the furture. PowerPacker and the powerpacker.library are © Nico François. "Palette Formats" GRIME - Colours?? GRIME can save palettes for both AMOS and Assembler. The files are saved as ASCII, and simply contains the hexidecimal values for each colour in the palette. For example an AMOS saved palette looks like this :- Palette $000,$FFF,$AAA,$555,$450,$FF0,$082,$00F And an Assembler saved palette looks like this :- dc.w $000,$FFF,$AAA,$555,$450,$FF0,$082,$00F Very clever ain't it.... "The Future" GRIME - What's next? The commercial version GRIME will be available soon and will feature full attribute control, and no limit on block/map size, and of course there will be no restricted features. Both myself and Squize have plently of ideas for the next version of GRIME, which I will work on if the response to this version of GRIME is good. "Greetings" GRIME - How many friends have I got? Hello to all the following people: Squize - Thanx for the ideas and encouragement. Liane - Had enough of Torque yet? Matthew - No you can't play a game. Andrew - Postman pat, postman pat, and his.... Simon - Have you written anything yet? Are you ever gonna? Rincewind - When's Gloom being released? Have you seen Poom yet? Spacemarine - Welcome to the world of A1200. Moonie - Hope our daughter grows up to be a lovely cat! Psiberpunk - Time to upgrade? You know you want to! Spiff - It's better to dream of an Amiga, than own an ST! Sync - Where's my sodding disks? Jester - Anix eh? Haplo - F1 Batch...... Pseudo - Your VMS Tetris is great! Also hello to all these people (Sorry couldn't think of anything funny to say to you!) Adam, Jamie, Chris, Dave, Tony, Kev and everyone else at Uni (especially anyone in KC01!) Annette, Tessa, Marina, Karen, Gaz, Steve, Tina, Scott and everybody else back home! Sorry to all those I forgot! "Credits" GRIME - Who did what? GRIME was written and designed by Adrian Jenkins a.k.a. VEX With additonal ideas and testing by Squize. GRIME was originaly written using AMOS 1.3. AMOS Professional V2.00 was used from Version 1.0 onwards. Deluxe Paint was used for the creation of the all the graphics used in GRIME and all the example IFF's. The example IFF's and maps where created by VEX and SQUIZE. GRIME was started on an Amiga 500 1MB, 2 drive machine..... and was finished on an Amiga 1200 6MB, 80M Hard drive, 68882 FPU, 2 floppy drive machine! Intel inside, Idiot outside! If you want to buy the commercial version of GRIME then contact " SHOAH PD " If you want to contact me for any reason, bug reports, ideas, donations, etc.. then here's my address :- Adrian Jenkins 11 Northfield Road, Narberth, Dyfed. Wales. SA67 7AA I also have an Internet address, which you can use during October 1994 - June 1995 and possibly October 1996 - June 1997 (provided I get that far at Uni :) CM3BCAJ@STAFFS.AC.UK Or you could post a message to one of the amiga newsgroups. I tend to lurk around most of them, that's right lurk not post :) "History" GRIME - What have I missed? Well this is the first version of GRIME to be publicly released. All previous versions of GRIME have been simply past around to a couple of friends. All previous versions were incomplete and quite buggy. This version V1.2 is the PD release of the commercial version. It contains all the features of the final version with some disabled/reduced functions. Unfortunately, since comming back to university, I haven't had much time to actually finish GRIME. I hope this version is fairly bug free, and that this document is both readable and understandable. The commercial version of GRIME is almost complete and should be available soon (Hopefully before the end of the year). "You don't get everything for nothing!" GRIME - Whats missing in the PD version? This is a PD version of GRIME. A number of features have been disabled or reduced, these are as follows.... All Map save routines have been disabled, except for the GRIME Format save routine, which is limited to saving maps of 50 x 50 (or less). Configuration files cannot be saved or loaded (except the default config file). All attribute functions have been disabled. Attributes within the examples maps can be displayed though. The copy buffer cannot be saved, but loading is possible. The undo function is limited to the last 10 operations, and you can not undo cut/pastes or fills. I have also added many annoying requesters :) ------------------------------------------------- The full commercial version of GRIME will be available soon (hopefully!) All the disabled features will be fully functioning, and possibly some new features added (Depending on your responses!) The commercial version of GRIME is available from:-  SHOAH 38 Oxstalls Way, Longlevens, Gloucester. GL2 9JQ.  Please make your cheques/PO's payable to SHOAH, all orders dispatched same day ( So long as you write your cheque card number on the back, otherwise it'll be 7 days ). "Blatant Advert" SHOAH - Who's that then?  _______ ___ ___  /°- \/. / _____ ____ / ./ 38 Oxstalls Way,  \ \___// \___/° \_/° \_/ \___ Longlevens,  _/\__ \ ~\_ /\ \ /\ ~\ °\_ Gloucester.  \\ / /\ / \/. / \/ \ //\ / GL2 9JQ.  \______/\__/ \_/\_____/\____/\_/_/ \_/ VEX '94 Thanks Vex for giving me a chance to ram SHOAH/SHOAH PD down everyone's throats. Well, what can I say? We stock all the best PD for... 1 Disk £1.50 2 or more disks £1.25 each Catalogue disk £0.75 or send a disk and SAE All prices include p+p. If you have written anything which you would like us to market then please send it in for a fast evaluation, please see our catalogue for more details. Squize.