Map Making for Ants! - Guide for Ants!
Scroll down to read our guide named "Map Making for Ants!" for Ants! on PC (PC), or click the above links for more cheats.
Map Making for Ants! Hex Editor Required The final and main file you will be interested in is any file ending with .LVL that lives in your maps folder. These are the actual maps themselves. When ants.exe runs, it will load in them map file into memory. Modifying the file during the game will do nothing since the file is only loaded into memory once. From that point on... everything that happens during the game is actually saved in the map file (but only in memory not on your disk). This is how cheat-o-matic works, it is actually modifying the active file in memory. Once the map file is loaded, the program then looks at the map file and loads in all the pieces required from the ants.chd to run that level. Start with a fresh filename .. not a file that already exists (like tresure). Once you have the file open you will notice that it is made up of 5 major sections. These sections will be called.. Sections - 0,1,2,3,4,5 for the purpose of this web page. All addresses and values will be given in hexadecimal 0000h ( or 0000d for decimal ). SECTION 0 This section contains the introduction to the map. Addr 0000-0007h appear to be just a file flag. Addr 0008h is the value for time duration in minutes. Addr 000A-0027h is the intro Addr 0028-0029h is a checksum. SECTION 1 This is an inclusion section. If you use anything in your map file, then it must first be defined in this section. If you know how to program even simple C++ then you will understand #include declarations. I do not have a list of the codes used, but they are obvious. If somebody would care to email them to me, then I'll put them up here for you all to share. Each cell in section 1 is in this format: ./level.... or 2E 5C 6C 65 76 65 6C 2E 00 00 00 for an empty cell. Pay carefull attention to alignment of cells when you add this section. You may also find that some cells are terminated with the value CD. SECTION 2 This section controls all terrain on the map. This includes: Dirt, Sand, Ice, Mud and Water. The first 8 bytes of section 2 control the size of the map. XX 00 00 00 XX 00 00 00 The first value is the height of the map and he second value is the Width. Don't just think you can change this values to make the map as big as you want, there are many other factors that you must take into account and all checksums must be correct else your map will crash. If you want the formulas for the checksums, then ask one of the Brothers Of Darkness for them, if you can find them. You will notice in this section that the tiles are defined by 6 byte blocks. E5 01 00 00 00 00 - defines a clear dirt tile. DC 01 00 00 00 00 - defines a water tile. E7 01 00 00 00 00 - defines a sand tile. Access to tiles is also controled in this section by the 3rd byte in each tile. E5 01 00 00 00 00 - An ant may walk on this tile. E5 01 01 00 00 00 - an ant cannot walk on this tile. The last two bytes appear to not be used. They may be address flags but I have not researched them closely to find out what they do. The fourth byte we haven't researched closely either, but susspect it has a control function for selective access like water or fire. The following are descriptor codes only. (the first two bytes). The following are codes for MUD.. B7 01, B8 01, B9 01, BA 01, BB 01 94 02, 95 02, 96 02, 97 02, 98 02, 99 02, 9A 02, 9B 02, 9C 02 The trick to making your map look good is never use the same codes next to each other. The Following are all codes for Transition tiles and other terrain tiles. E001, E201, E301, E401, E501, E601, E701, E801, E901, EA01, EB01, EC01, ED01, EF01 DA01, DB01, DC01, DD01, DE01, DF01, F101, F301, F501, F701, F901, FB01, FD01, FF01 B001, B101, B201, B301, B401, B501, B601, B701, B801, AF01, C201, C401, C601, C801 0102, 0302, 0502, 0702, 0902. There are many more and I'm sorry I do Them all these tiles. If you use common sense and a bit of trail and error, you'll work out which is which. Some tiles of terrain belong beside each other. Chose your tiles carefully when making a map and your map will look really good. SECTION 3 This section contains data on objects that sit on the surface of the map such as Grass, Flowers, Ojects, Food, Power Ups and Ant Hills. A standard blank tile is: FE 7F 00 00 XX XX This means that this tile has no object on it at this location. You will find a blank tile will be 00 00 but for all other objects, each item should have it's exact location in this data. It will make it easier for you to find it later on and in the case of flowers, they will not be three dimensional unless this address is exactly correct ! ANT HILLS. F5 00 00 00 XX XX = BLACK F6 00 00 00 XX XX = BLUE F7 00 00 00 XX XX = RED F8 00 00 00 XX XX = GREEN You will note the XX are varible. They must be correct, they describe the position of the ant hill on the map. The first byte is the Row and the last byte is the Colomn. Futher more, the ant hill may only be 4 x 4 tiles and the hole must be in the 2nd x 2nd tile and is defined as Fx 00 01 00 XX XX. (Fx is the Color descriptor byte). POWER UPS. 3E 00 01 00 XX XX = Soldier 3F 00 01 00 XX XX = Theif 40 00 01 00 XX XX = Bomber 41 00 01 00 XX XX = Diver 42 00 01 00 XX XX = Fire Again, the XX's describe the position of the power up on the map. FLOWERS These are static flowers ... 9A 01 XX 00 XX 00 9B 01 XX 00 XX 00 9C 01 XX 00 XX 00 9D 01 XX 00 XX 00 9E 01 XX 00 XX 00 A4 01 XX 00 XX 00 = Dancing Flower A5 01 XX 00 XX 00 = Power Flower 94 01 01 00 XX XX = Clover leaning left 95 01 01 00 XX XX = 4 Leaf Clover 96 01 01 00 XX XX = Clover leaning right 97 01 01 00 XX XX = Clover leaning far right 2A 05 00 00 XX XX = Grass 1 2B 05 00 00 XX XX = Grass 2 2C 05 00 00 XX XX = Grass 3 2D 05 00 00 XX XX = Grass 4 2E 05 00 00 XX XX = Grass 5 SECTION 4 In This section everything elese is included. The first two bytes are the number of ants at the start of the game. If you just ran off and changed it and found it didn't work, there's a very good reason. Firstly, this is the TOTAL number of ants at the start. Every ant must be accounted for, any errors and the map will crash. BUT, this does not limit you in how many ants you can have, what color or where you put them to start. You can for example, have red start with 12 ants and all other colors start with only 3. Of course this would seem silly at first since red would have a very unfair advantage in the game, but if you designed a good map. You'd put the red ants hill in such a position that it would even up the game. When designing a map with numbers of ants, always ask yourself could I win if I was any color on this map. If the answer is yes, then you have a good design. Ok, so you've changed the number of ants, but it doesn't work... why ? Because you just changed the pointer value and didn't actually add any ants to the map ! The codes for the ants are as follows: 98 00 XX 00 XX = BLUE 99 00 XX 00 XX = BLACK 9A 00 XX 00 XX = GREEN 9B 00 XX 00 XX = RED As per usal, the XX 's represent the starting positions of each ant. A TIP: It is possible to make more than one ant start on the same tile. The result is quite funny, but I'm not sure if it can be programed into the map at the start of the game. Needless to say, a good map will look better if all the ants start in their own position. There's more !! If you were clever, you might have noticed that there seems to be more than four types of ants ? At first we thought this could have been extra colored ants for competition games, but after searching the ants.chd file for other colors we realised they were not ants. A quick search of the map at those start postions revealed flowers ! In order to display flowers, they must be included in this section. (more on this later). The Difference is in the second byte as follows: 9A 01 XX 00 XX 9B 01 XX 00 XX 9C 01 XX 00 XX 9D 01 XX 00 XX 9E 01 XX 00 XX A4 01 XX 00 XX A5 01 XX 00 XX Next in Section 5 comes.. FOOD ! We know you guys have been waiting for this for a while, so here it is. Food codes a varible in length, this is why it was so hard for the map makers to find them all this time. Food appears in section 3 also, but it is a static picture. I'm not sure why section 3 has food on it. Food can be clones in section 3, but unless the parent piece of food is still active it will not work, and even then, the bites and points are still deducted from the parent food. The main control for food is in section 4 and even if the corresponding titles are not in the 3rd section. RR 00 CC 00 XX 00 1E 00 02 00 QQ 00 FF 01 00 00 FE 7F This is the simplest example of a piece of food. I'll start at the begining. RR = The Row position of the food CC = The Column position of the food XX = The number of bites total in the food 1E = The value of each bite. (the points each ant gets) 02 = The number of Display states. QQ = The number of bites per display state. FF 01 00 00 = The Food Descriptor / Display state. FE 7F = End flag and Final Display state. A few things to be said on these values. The Maximum value for any one byte is FF (255). The number of display states will determine how long the array for each food block is. For a value of 02 the food block is 18 bytes long. For a value of 03 the block is 22 bytes long and for a value of 04 the block is 26 bytes long. (An extra four bytes for each state). RR00CC00XX001E000200QQ00 FF010000 FE7F is 02 display states. RR00CC00XX001E000300QQ00 FF010000 FE010000 FE7F is 03 display states. RR00CC00XX001E000400QQ00 FF010000 FE010000 FD010000 FE7F is 04 display states, and so on. You can see the first, second and final display states. Normally, this would be the same type of food, each state slowly being eaten away. BUT, you may have just about anything displayed, including different types of food. A hamburger may turn into a twinky after 10 bites. etc. The most interesting effect of food is the last end flag. You will see this used in section 3. It simply means display nothing ! In this case, that is exactly what happens. When the food is gone, nothing is displayed on that tile. Of course this is not always the case. Sometimes there is something left behind, like a chicken bone, or and empty tin of potted meat. The last two bytes display this. You will see the classic example of all of this in JUNGLE. Food turns into clover when it's gone. The potted meat leaves a tin, and the best example is the top and bottom food turn into combant power ups. Values for the variables 01 - 1 02 - 2 03 - 3 04 - 4 05 - 5 06 - 6 07 - 7 08 - 8 09 - 9 0A - 10 0B - 11 0C - 12 0D - 13 0E - 14 0F - 15 10 - 16 11 - 17 12 - 18 13 -19 14 - 20 15 - 21 16 - 22 17 - 23 18- 24 19 -25 1A-26 1B 27 1C -28 1D -29 1E - 30 1F - 31 20 - 32 21 - 33 22 - 34 23 - 35 24 - 36 25 - 37 26 - 38 27 - 39 28 - 40 29 - And so on just until FF which = 255 2A - 2B - 2C - 2D - 2E - 2F - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 3A - 3B - 3C - 3D - 3E - 3F - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 4A - 4B - 4C - 4D - 4E - 4F - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 5A - 5B - 5C - 5D - 5E - 5F - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 6A - 6B - 6C - 6D - 6E - 6F - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - 7A - 7B - 7C - 7D - 7E - 7F - 80 - 81 - 82 - 83 - 84 - 85 - 86 - 87 - 88 - 89 - 8A - 8B - 8C - 8D - 8E - 8F - 90 - 91 - 92 - 93 - 94 - 95 - 96 - 97 - 98 - 99 - 9A - 9B - 9C - 9D - 9E - 9F - A0 - A1 - A2 - A3 - A4 - A5 - A6 - A7 - A8 - A9 - AA - AB - AC - AD - AE - AF - B0 - B1 - B2 - B3 - B4 - B5 - B6 - B7 - B8 - B9 - BA - BB - BC - BD - BE - BF - C0 - C1 - C2 - C3 - C4 - C5 - C6 - C7 - C8 - C9 - CA - CB - CC - CD - CE - CF - D0 - D1 - D2 - D3 - D4 - D5 - D6 - D7 - D8 - D9 - DA - DB - DC - DD - DE - DF - E0 - E1 - E2 - E3 - E4 - E5 - E6 - E7 - E8 - E9 - EA - EB - EC - ED - EE - EF - F0 - F1 - F2 - F3 - F4 - F5 - F6 - F7 - F8 - F9 - FA - FB - FC - FD - FE - FF -