Battle Isle / History Line map format
There is no image of a map in this format — upload one!
Format type | Map/level |
---|---|
Map type | 2D cell-based |
Layer count | 1 |
Tile size (pixels) | 24×24 |
Viewport (cells) | 10×8 fields |
Games |
History Line 1914-1918 (and Battle Isle) battlefields are based on 24x24 pixel hexagon fields. The game uses split-screen, so both players only see a 10x8 hex field section, which is scrolled across the map. The maps are stored in the form of *.fin and *.shp files in the MAP subdirectory of the game. The *.fin files contain the information about the individual hex fields (terrain and units), the *.shp files about the contents of buildings (resources, contained units, belonging to a side, etc.).
*.shp File Format
The first 51 bytes in the *.shp files represent one of the 51 different military units on each side and indicate whether they are available on the map. If a byte is set to 0, the respective unit can be built in factories, if it is set to 1, the unit is not available.
! Unit names of the US version of the game should still be supplemented
Number/Offset | Unit in History Line 1914-1918 |
---|---|
0x00 | Spähpanzer |
0x01 | A7V |
0x02 | Gotha |
0x03 | Zeppelin Staaken |
0x04 | Junkers J4-10 |
0x05 | Fokker E I. |
0x06 | Fokker E III. |
0x07 | Albatros |
0x08 | Fokker DR I |
0x09 | Fokker D VII |
0x0A | Leichte Ari |
0x0B | Mittlere Ari |
0x0C | Schwere Ari |
0x0D | Bunker |
0x0E | Mobile Flak |
0x0F | Stationäre Flak |
0x10 | Depoteinheit |
0x11 | Elite Infanterie |
0x12 | Infanterie |
0x13 | Panzerabwehr |
0x14 | Pioniere |
0x15 | Kavallerie |
0x16 | Transportwagen |
0x17 | Ballon |
0x18 | Schienengeschütz |
0x19 | Panzerzug |
0x1A | Truppentransport |
0x1B | Patrouillenboot |
0x1C | Torpedoboot |
0x1D | U-Boot |
0x1E | U-Boot |
0x1F | Transportschiff |
0x20 | Zerstörer |
0x21 | Zerstörer |
0x22 | Schlachtschiff |
0x23 | Schlachtschiff |
0x24 | Voisin |
0x25 | Handley |
0x26 | DH4 |
0x27 | Morane |
0x28 | DH2 |
0x29 | Nieuport |
0x2A | Spad VII |
0x2B | SE5A |
0x2C | Spad XIII |
0x2D | Sopwith Camel |
0x2E | Charron |
0x2F | Renault |
0x30 | Mark I. |
0x31 | St. Chammond |
0x32 | Mark IV. |
This is followed the total number of buildings on the map stored in the next byte. Then follows the data for each building in records of 12 byte size.
Data type | Name | Description |
---|---|---|
UINT8 | NumBuildings | Number of buildings on the map / records that follow in the file |
UINT8[NumBuildings][12] | Buildings | Building info (see below) |
The data structure of the building is as follows. Transport units, such as the transport wagon or troop transport train, are treated as buildings.
Data type | Name | Description |
---|---|---|
UINT8 | Owner | To which side the building belongs (0 = German; 1 = French, 2 = Neutral) |
UINT8 | Type | Type of building (0=HQ; 1 = Factory; 2 = Depot; 3 = Transport unit) |
UINT8 | Index | xth unit/building of this type |
UINT8 | Resources | How many resources does this building generate per turn |
UINT8 | Unknown | ! The purpose of this byte is not yet known |
UINT8[7] | Units | Units inside the building/transport unit |
The order of the building records is determined by the position of the building on the map. The map is interpreted by the game row by row from left to right and from top to bottom. Whenever a field with a building entrance is encountered, the next data record is read from the *.shp file. Transport units are treated by the game in the same way as buildings (type 3). However, no empty transport units are stored in the SHP files, but empty buildings are.
*.fin File Format
The *.fin files start with two word in Motorola byte order (big-endian), indicating the size of the map in hex fields.
Data type | Name | Description |
---|---|---|
UINT16BE | Max X | Width of the map in hex fields (+1) |
UINT16BE | Max Y | Height of the map in hex fields (+1) |
Two bytes follow for each hex field of the map. The first byte contains the number of the terrain graphic, the second one the number of a unit standing on the field. If there is no unit on the field, the value of the second byte is 0xFF. The map is stored in rows. At the end of each line, History Line 1914-1918 stores an additional field with the values 0xAF and 0xFF and at the end follows a complete additional row with these values, but they are not displayed in the game. Except for this additional row/column, the maps in the game Battle Isle are stored identically.
Data type | Name | Description |
---|---|---|
UINT8 | Ground | Terrain of this hex field |
UINT8 | Unit | Military unit on this hex field |
The unit number is slightly different from those in the *.shp files. The order is the same, but here each unit has two numbers, depending on which side it belongs to.
Number | Unit in History Line 1914-1918 |
---|---|
0x00 | German Spähpanzer |
0x01 | French Spähpanzer |
0x02 | German A7V |
0x03 | French A7V |
... | ... |
The terrain graphics have the following numbers:
Number | Terrain description |
---|---|
0x00 | plains |
0x01 | headquarters (north entrance) german |
0x02 | headquarters (north entrance) french |
0x03 | headquarters (center) |
0x04 | headquarters (south) |
0x05 | headquarters (northwest) |
0x06 | headquarters (southwest) |
0x07 | headquarters (northeast) |
0x08 | headquarters (southeast) |
0x09 | factory (north) |
0x0A | factory (south) |
0x0B | factory (west) |
0x0C | factory (east entrance) neutral |
0x0D | factory (east entrance) german |
0x0E | factory (east entrance) french |
0x0F | depot (north entrance) neutral |
0x10 | depot (north entrance) german |
0x11 | depot (north entrance) french |
0x12 | depot (south) |
0x13 | depot (west) |
0x14 | depot (east) |
0x15 | unfinished depot (north) |
0x16 | unfinished depot (south) |
0x17 | unfinished depot (west) |
0x18 | unfinished depot (east) |
0x19 | shallow water |
0x1A | shallow water (coast southeast+south) |
0x1B | shallow water (coast northwest+north) |
0x1C | shallow water (coast southwest+south) |
0x1D | shallow water (coast north+northeast) |
0x1E | shallow water (coast southwest+south+southeast) |
0x1F | shallow water (coast northwest+north+northeast) |
0x20 | shallow water (coast north+northwest+southwest+south) |
0x21 | shallow water (coast north+northeast+southeast+south) |
0x22 | lake |
0x23 | harbor (south faces land) |
0x24 | river (northwest-southeast) |
0x25 | river (southwest-northeast) |
0x26 | river (north-south) |
0x27 | river (north-southwest) |
0x28 | river (northwest-south) |
0x29 | river (south-northeast) |
0x2A | river (north-southeast) |
0x2B | river (southwest-southeast) |
0x2C | river (northwest-northeast) |
0x2D | river (northwest-northeast-south) |
0x2E | river (north-southwest-southeast) |
0x2F | water |
0x30 | deep water |
0x31 | house (with tree) |
0x32 | house (with well) |
0x33 | hangars |
0x34 | harbor building (west) |
0x35 | harbor building (north) |
0x36 | light forest (3 trees) |
0x37 | deep forest (5 trees) |
0x38 | deep forest (9 trees) |
0x39 | deep forest (7 trees) |
0x3A | river (southwest-northeast) with tiny bridge (northwest-southeast) |
0x3B | river (north-south) with tiny bridge (east-west) |
0x3C | small cliffs (shallow water) |
0x3D | cliffs (shallow water) |
0x3E | cliff (shallow water) |
0x3F | rugged terrain with barbed wire |
0x40 | small mountain |
0x41 | hill (northwest-northeast) |
0x42 | hill (southwest-northeast) |
0x43 | big hill (north) |
0x44 | big hill (south) |
0x45 | big hill (west) |
0x46 | big hill (east) |
0x47 | big mountain (north) |
0x48 | big mountain (south) |
0x49 | big mountain (west) |
0x4A | big mountain (east) |
0x4B | rocks |
0x4C | rocks |
0x4D | rock |
0x4E | plains (tiny rocks/rubble) |
0x4F | plains (small rocks/rubble) |
0x50 | tiny hills |
0x51 | slightly rugged terrain |
0x52 | rugged terrain |
0x53 | rugged terrain with craters |
0x54 | rugged terrain with crater |
0x55 | rail (north-south) |
0x56 | rail (northwest-southeast) |
0x57 | rail (southwest-northeast) |
0x58 | rail (southwest-north) |
0x59 | rail (northwest-south) |
0x5A | rail (south-northeast) |
0x5B | rail (north-southeast) |
0x5C | rail (northwest-northeast) |
0x5D | rail (southwest-southeast) |
0x5E | rail junction (north-south-southwest) |
0x5F | rail junction (south-north-southeast) |
0x60 | rail junction (north-south-northwest) |
0x61 | rail (north-south) crossing river (northwest-southeast) |
0x62 | rail (north-south) crossing river (southwest-northeast) |
0x63 | rail (southwest-northeast) crossing path (north-south) |
0x64 | rail (north-south) crossing path (southwest-northeast) |
0x65 | rail (north-south) crossing road (northwest-southeast) |
0x66 | rail (northwest-southeast) crossing road (north-south) |
0x67 | rail (southwest-northeast) crossing road (north-south) |
0x68 | rail (north-south) crossing road (southwest-northeast) |
0x69 | airfield (north-south) north |
0x6A | airfield (north-south) south |
0x6B | coast (south-southwest-northwest-north) with road/bridge (nrthwest-southeast) |
0x6C | road bridge (northwest-southeast) |
0x6D | coast (north-northeast-southeast-south) with road/bridge (northwest-southeast) |
0x6E | road bridge (southwest-northeast) |
0x6F | coast (north-northeast-southeast-south) with road/bridge (southwest-northeast) |
0x70 | coast (south-southwest-northwest-north) with road/bridge (southwest-northeast) |
0x71 | coast (northwest-north-northeast) with road/bridge (north-south) |
0x72 | road bridge (north south) |
0x73 | coast (southwest-south-southeast) with road/bridge (north-south) |
0x74 | river (northwest-southeast) with road bridge (north-south) |
0x75 | river (southwest-northeast) with road bridge (north-south) |
0x76 | river (north-south) with road bridge (northwest-southeast) |
0x77 | docks (west faces water) |
0x78 | harbor building (south with road) |
0x79 | river (southwest-northeast) with path bridge (north-south) |
0x7A | river (northwest-southeast) with path bridge (north-south) |
0x7B | docks with crane (east faces water) |
0x7C | docks with crane (west faces water) |
0x7D | docks (east faces water) |
0x7E | jetty |
0x7F | road (north-south) |
0x80 | road (southwest-northeast) |
0x81 | road (northwest-southeast) |
0x82 | road (south-northeast) |
0x83 | road (north-southeast) |
0x84 | road (northwest-south) |
0x85 | road (southwest-north) |
0x86 | road (northwest-northeast) |
0x87 | road (southwest-southeast) |
0x88 | road junction (southwest-northeast-northwest) |
0x89 | road junction (northwest-southeast-northeast) |
0x8A | road junction (southwest-northeast-southeast) |
0x8B | road junction (northwest-southeast-southwest) |
0x8C | road junction (north-south-southwest) |
0x8D | road junction (north-south-northwest) |
0x8E | road junction (north-south-southeast) |
0x8F | road junction (north-south-northeast) |
0x90 | road crossing (northwest-outheast-southwest-northeast) |
0x91 | road crossing (northwest-northeast-south) |
0x92 | path (north-south) |
0x93 | path (southwest-northeast) |
0x94 | path (northwest-southeast) |
0x95 | path (south-northeast) |
0x96 | path (north-southeast) |
0x97 | path (northwest-south) |
0x98 | path (southwest-north) |
0x99 | path (northwest-northeast) |
0x9A | path (southwest-southeast) |
0x9B | path junction (north-south-southwest) |
0x9C | path junction (north-south-northwest) |
0x9D | path junction (north-south-southeast) |
0x9E | path junction (north-south-northeast) |
0x9F | path junction (southwest-northeast-northwest) |
0xA0 | path junction (northwest-southeast-northeast) |
0xA1 | path junction (southwest-northeast-southeast) |
0xA2 | path junction (northwest-southeast-southwest) |
0xA3 | path crossing (northwest-southeast-southwest-northeast) |
0xA4 | path junction (northwest-northeast-south) |
0xA5 | trench with barbed wire (southwest-northeast) |
0xA6 | trench with barbed wire (northwest-southeast) |
0xA7 | trench (big hole) |
0xA8 | trench junction (northwest-southeast-northeast) |
0xA9 | trench junction (southwest-northeast-southeast) |
0xAA | trench (southwest-northeast) |
0xAB | trench (northwest-southeast) |
0xAC | trench (southwest-southeast) |
0xAD | trench (northwest-northeast) |
0xAE | non-visible end tile (stop sign) |