Battle Isle / History Line map format

From ModdingWiki
Jump to navigation Jump to search
Battle Isle / History Line map format
320px
There is no image of a map in this format — upload one!
Format typeMap/level
Map type2D cell-based
Layer count1
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)