All common knowledge about
HEX-EDITING
and more

Updated 26th May, 15th May and 20th June, 13th August

By various authors, mentioned where appropriate.
This text may be copied freely without permission.
All information has been edited and combined by
Allard Höfelt (mailto:ahofelt@hotmail.com).

This file is written specifically for use with Fantastic Worlds (v2.7.81), an add-on
disk for Civilization II. Most information, apart from some offsets, will probably
be the same for other versions.
Civilization: Test of Time is probably very much different, though the structure
will be still quite the same.

Contents of this document:

1. LAYOUT OF A SAVED GAME	1
2. START OF SAVED GAME FILE	1
3. WONDERS	1
4. TRIBES	1
5. TECHNOLOGIES & MONEY	1
6. MAPS	1
6.1 SAV files	1
6.2 MP files	1
7. UNITS INFORMATION	1
8. CITIES INFORMATION	1
9. BUILT CITIES INFORMATION & MORE	1
A. HOW TO HEX-EDIT	1
B. VERSION HISTORY	1
C. CREDITS	1

1. LAYOUT OF A SAVED GAME

     Hex offsets are given here, for as long as the values are fixed.
     From the map data block 1 onwards, the saved game values are no longer fixed.

     The offsets here are for FW, but the structure remains the same in all versions of Civ2.

00 - 2F	toggled options, various player settings
30 – 109	unidentified or empty
10A – 141	Wonders location (with city ID)
142 – 247	unidentified or empty
248 – 8E5	7 blocks of each F2 bytes long with city style information, leader and
tribe names for all 7 civs
8E6 – 3585	8 blocks of each 593 (in hex) bytes long with various information, like
money and techs (a lot still unidentified) for all 8 civs (incl. barbarians).
3586 – 3593	map header information (14 bytes)
3594  ...	map data block 1 (7 * height * width bytes)
  ...		map data block 2 (6 * width * height bytes)
  ...		map data block 3 (2 * quarterwidth * quarterheight bytes)
  ...		1024 unused bytes
  ...		unit information (26 * number of units bytes)
  ...		city information (84 * number of units bytes)
  ...		one empty buffer byte
  ...		3 bytes for all 21 civs containing info as which city in CITIES.TXT to pick
  ...		unidentified, and other info such as where the screen is centred or
the cursor is located.
  ...		a bit of text on how the scenario is called, and probably a bit of history
(who's wiped out when, etc.).
  ...		event stuff (starts with EVNT, easy to find).

(In MGE a unit entry is 32 bytes long versus 26 for earlier versions and city entry is 88 bytes long versus 84 for earlier versions.)

2. START OF SAVED GAME FILE

   (source Allard Höfelt)
   (Xin Yu found out about byte 2F toggling civ to be played)
   (Captain Nemo found out the civs that are in play in byte 2E)

0-8	“CIVILIZE” and one empty byte
10	27 : Conflicts in Civilization or lower
28 : Fantastic Worlds (2.7.81)
2C : Multiplayer Gold
31 : Test of Time
12	1... ....	  toggles:  bloodlust
...1 ....		simplified combat
13	1... ....		flat/round world
.... ...1		don't restart if eliminated
14	1... ....		move units without mouse
.1.. ....		enter closes city screen
..1. ....		map grid
...1 ....		sound effects
.... 1...		music
15	1... ....		cheat menu (also see 20)
.1.. ....		always wait at end of turn
..1. ....		autosave each turn
...1 ....		show enemy moves
.... 1...		no pause after enemy moves
.... .1..		fast piece slide
.... ..1.		instant advice
.... ...1		tutorial help
16	..1. ....		animated heralds
...1 ....		High Council
.... 1...		civilopedia for advances
.... .1..		throne room graphics
.... ..1.		diplomacy screen graphics
.... ...1		wonder movies
20	...1 ....		cheat penalty/warning
.1.. ....		scenario file (no effect really)
22	1... ....		announce "we love the king day"
.1.. ....		warn when food dangerously low
..1. ....		announce cities in disorder
...1 ....		announce order restored in city
.... 1...		show non-combat units built
.... .1..		show invalid build instructions
.... ..1.		warn when city growth halted
.... ...1		show city improvements built
23	.... .1..		zoom to city not default action
.... ..1.		warn when new pollution occurs
.... ...1		warn when changing production will cost shields
28-29	number of turns passed
30-31	number of turns passed to calculate game year in pop-ups, status bar, etc.
34-35	specifies which unit is selected at start of the game
(you can find the unit id number by playing another civ, revealing the map
and right clicking on the unit. On the right, the id is shown between
parentheses)
39	changes which human player is used
40	player's map which is used
41	player's civilization number used
42	changes with map used. Sometimes FF
43	map revealed or not
44	difficulty level [deity=5, emperor=4, etc.]
45	barbarian activity
46	enumeration of all civs still in play [binary]
eg. 1001 1101 means: barbarians alive, civ 3 alive, civ 4,5 and 7 alive.
47	human player played (can be more than one) [binary]
toggling this byte is great and allows Hotseat mode in FW!!!
eg. 0110 0100 means: human is playing as civ 1, 2 and 5.
50	amount of current pollution. 7F is maximum, and will certainly cause global
temperature rising at the end of the turn. A value of 80 till FF is a negative
amount (still shows the icon for global rising), but it will be reset to 00 at the
end of the turn.
51	amount of times that a global temperature rising has been happening this far
in the game. 7F is maximum and will make the whole world a big swamp when
the next global temperature rising occurs. 80 or higher will prevent any global
rising from happening at all.
At the moment when terrain should be changed, nothing happens, and byte 32
is restored to 00, though a message still pops up. Byte 33 will remain at what
it was, so it is not reset.
This is a fool-proof way to switch off pollution without the restrictions of the
normal cheat-menu switching off of pollution. The message “global warming
occurs/will occur soon” of course will need to be changed.
56	number of turns of peace (counts only after 200th turn)
58-59	Total number of units available in game. Lowering this will remove the most recently built units. Making it higher will produce very strange results.
60-61	Total number of cities available in game. Lowering this will remove the most recently built cities. Making it higher will lead to an error message when loaded.

3. WONDERS
   (source Allard Höfelt)

Near the start of the saved game, at offset 266 until 321, is where all information about wonders is stored. All 28 wonders have 2 bytes of information for them, so in total the block for all wonders is 56 bytes long.

If the 2 bytes for a wonder are
-	FF FF : the wonder has not yet been built.
-	FE* FF : the wonder is destroyed (city where it stood is not stored).
-	otherwise the number is the city ID number. 00 00 the very first city built, etc.

* This document originally said EF, but that seems to be wrong.

4. TRIBES
   (source Allard Höfelt)

The information is stored in 7 blocks (not for barbarians), each 242 bytes long.
The blocks start and end at:
 248-339	1st block
 33A-42B	2nd   "		(numbers given in hexadecimals)
 42C-51D	3rd   "
 51E-60F	4th   "
 610-701	5th   "
 702-7F3	6th   "
 7F4-8E5	7th   "

These 7 blocks are all filled with 00's except for a few names and numbers.
Counting the city style as the first byte (also the first byte in the block), the
blocks are devided as:

	1st byte	city style (can be any style, also industrial and modern or
				     even higher (strange effects), without the required
				     advances. Just fill in 00, 01, 02….)
	3-25		Leader name. Empty letters “00”.
	27-49		Tribe name.
51-73	Tribe name adjective.
75-97	Leader title 1 (Anarchy)
99-121	Leader title 2 (Despotism)
123-145	Leader title 3 (Monarchy)
147-169	Leader title 4 (Communism)
171-193	Leader title 5 (Fundamentalism)
195-217	Leader title 6 (Republic)
219-241	Leader title 7 (Democracy)

5. TECHNOLOGIES & MONEY
   (source Allard Höfelt)

Byte 8E6 until 3585 is devided in 8 similar blocks of each 593 bytes. Each of these blocks contains information specific for each civ, such as technologies and money. A lot more in these blocks has as yet not been identified.

The blocks all start at these offset bytes:
Block of	0th civ:  8E6 -  E79     (barbarians)
 "		1st civ:  E7A - 140D
 "		2nd civ: 140E - 19A1
 "		3rd civ: 19A2 - 1F35		(offsets given in hexadecimals)
 "		4th civ: 1F36 - 24C9
 "		5th civ: 24CA - 2A5D
 "		6th civ: 2A5E - 2FF1
 "		7th civ: 2FF2 - 3585

Counted from the start of each block:

byte 2		Gender. Male=00 Female=02

byte 3		Money. The barbarians' money is also changeable.

byte 9		Research progress. Also updates the colour of research indicator in status bar
		on the right.

byte 11	Tech which is being researched. FF if cleared or no goal.

byte 21	Percentages to tax, science and luxuries.

byte 22	Government. Valid values are 00-07 (though 07 does not normally exist).
A value of 08 or higher causes the game to crash. 00 is of course Anarchy,
01 is Despotism, etc.
You can give the barbarians a Democratic (06) government to prevent their
cities being subverted.

byte 31	Reputation

byte 37-64	Treaties. 4 bytes for the treaties with all 7 civs (including their own civ).
1st byte:	.... ...1 - contact
.... ..1. - cease fire
.... .1.. - peace
.... 1... - alliance (with peace always)
...1 .... - vendetta
1... .... - embassy
2nd byte:	..1. .... - war
.... .1.. - ???? used by game
3rd byte:	..1. .... - ???? used by game
4th byte:		????
then the 1st byte for the next civ, for all 7 civs.

NOTE: You can also combine these values, for example to create a war and an
alliance at the same time. In this example, your units will be repaired when
attacking enemy cities, but in the diplomacy screens the civ will talk with you
as if you were at war. More similar strange effects can occur.

byte 66-72	Attitudes. Byte 42 is attitude to 1st player, 43 is to 2nd player, etc.

byte 89-100	Technologies. B (11) bytes long.
   To explain how the bytes work, an example of the first technology byte:
.... ...1 : 1st technology
.... ..1. : 2nd    "
.... .1.. : 3rd    "
.... 1... : 4th    "
...1 .... : 5th    "
..1. .... : 6th    "
1... .... : 7th    "
   In the next byte are the 8th-14th technology. Note that for some reason
   the .1.. .... is left out. This is not the case in each of these bytes, though.
   I don't know why. Though it's fun to know how it works, it is much much
   easier to set techs using the cheat menu.
	NOTE: This is very useful, however, for giving the Barbarians certain
		technologies. You might want to give them Guerrilla Warfare,
		for instance.

byte 103-104	military demographics value.

byte 997-1010	last contact with civs. First two to 1st civ, 3rd and 4th for 2nd civ, etc.
FF FF if not available, 01 00 for 1, etc.
		note: It may be that the FF FF in byte 3E3 and 3E4 are for last
contact with barbarians, but that is not verifiable.

6. MAPS
(source Jorrit Vermeiren and Carl Fritz)

This information here deals about the map in the .SAV file. A .MP file doesn’t work the same. The information for .MP files is given later.

If you have an Hex Editor which has a graphical mode, this is very handy for especially the maps part. Orient the hex editor to start viewing at the beginning of map block 3 and make the width of the display the same as the ‘locator map X dimension’, and then you can see two little maps!

  6.1 SAV files
Map information is devided in four parts. The blocks are variable in length, because the map size varies with every map.
These three parts are:
-	map header
-	civ-specific information
-	terrain information
-	???

       6.1.1 - The map header is composed in 7 words, at offset 3586 (in hex) from the start
of the saved game.
		0 – map width * 2 (width when using coordinates of civ2 instead of coordinates
				       from the map editor).
		1 – map height
		2 – surface (width * height)
		3 – shape (0=round, 1=flat). Really determined by byte 14 (D) from start,
						  instead of here.
		4 – seed (can be anything, contrarious to .MP files)
		5 – (map width * 2) / 4 [rounded up]
		6 – map height / 4 [rounded up]
			NOTE: these last two, 5 and 6, are used for the radar map in the
				in the upper right corner of the screen.

       6.1.2 – map data block 1 is composed of 7 * height * width bytes, and at offset 3594
from the start of the saved game.

This block is actually 7 blocks (with 1 byte per square) behind each other. Each of these
blocks represents some data for each of the civilizations. So, the first block contains
information about the white civ, the second block contains information about the green
civ etc.
	
As far as I can tell this information is very similar to (if not the same as) the second
byte in block 2. Here, however the information is kept for each civilization individually.
[That reminds me of the warning message you get when you try to pillage a tile that
was improved (e.g. irrigated) by a friendly civilization...] 

0000 0000	"Nothing", i.e. either the square in question contains no units or
tile improvements, or it hasn't been discovered yet.
.... ...1		Unit present
.... ..1.		City present
.... .1..		Irrigation
.... 1...		Mining
...1 ....		Road
..1. ....		Railroad
.1.. ....		Fortress
1... ....		Pollution

Of course, you can combine these values together. For example, Irrigation and Mining
together makes Farmland, which is …. 11.. (0C). Railroads are actually ..11 …. (30),
a road plus a road upgrade. An airbase is a combination of fortress and “city present”;
.1.. ..1. (42)

All cities, including unknown cities, are marked. Undiscovered (see 5th byte in block 2)
cities are generally (not always) assumed to be ungarrisoned (i.e. 02, not 03). A city
that has never been discovered and is already destroyed will remain on a civilization's
map, until the area is "re-explored". Enemy cities or units that are lost out of sight, will
remain marked on their last seen location (?), but again only as long as no news about
the area is gathered.

       6.1.3 map data block 2 (width * height * 6) contains only one map, but each square
is now represented by a sequence of 6 bytes.

The first byte determines the terrain type. A terrain can have a combined hex pair
of one terrain type (the second number) and a “river” or “no resource” flag:
00 – Desert
01 – Plains
02 – Grassland
03 – Forest
04 – Hills
05 – Mountains
06 – Tundra
07 – Glacier
08 – Swamp
09 – Jungle
0A – Ocean
40 - No Resource
80 – River

The second byte determines the tile improvements. The same code is used here as in
map block 1 (see 6.1.2).

The third byte is an indicator for the city radii. Each civilization colour has its own city
radius code:
		White		20
Green		40
Blue		60
Yellow		80
Cyan		A0
Orange	C0
Purple		E0
	When two cities of two different civilizations share a part of their city radius the
squares in question will be given to one of those cities, not both. It's very likely there is
some sort of an algorithm to determine how squares are divided, perhaps the tiles are
simply assigned randomly.
Barbarian cities and squares that aren't part of a city radius will have the code 00.

	The fourth byte is a land/sea body counter. Every continent and lake has a ID code,
	which you can find by right clicking any square from within the game. After the
coordinates, this ID is shown.

The fifth byte represents “visibility”, indicating which of the civilizations have explored
that particular square. 00 means none of the civilizations (including the barbarians,
who are the "0th" (red) civilization) have uncovered that square so far
Red – 0
White – 1
Green – 2
Blue – 3
Yellow – 4
Cyan – 5
Orange – 6
Purple – 7

	The "formula" that makes up the correct number when civilizations have explored a
	square is as follows. Each color has its own number, as mentioned above. The "visibility
code" is made by adding the powers of two of each of the civilizations that explored the
square:
E.g. A square discovered by the Barbarians, Romans, Germans and Sioux will have the
code:
20 + 21 + 23 + 27 = 1 + 2 + 8 + 128 = 139 = 8B

The sixth byte is generally F0, not always though. I strongly believe that this byte has
to do with fertility. Normally all squares end with F0, except Plains and Grassland,
which mostly (if not always) end with something else. City squares or squares with
Irrigation/Farmland end with something different as well. Another argument for this is
that I changed a small formerly fertile area into desert, using the cheat menu. When I
looked the area up in the savegame, the last bytes of these squares had still remained
in the "fertile" position (not F0, that is). I then placed an AI settler on this area, and to
my surprise (well, not completely) it built a city, right in the middle of that desert. The
exact code Grassland and Plains use instead of F0, and what the purpose of that is, is
still a mystery to me.

A while ago I stated that the AI only builds cities in the Grassland and Plains slots. That
is most likely because of this byte. I then suggested to put the fertile terraintypes in
different slots, as a way of preventing the AI to build cities, a thing most desirable in a
lot of scenarios. I think this can now be accomplished by changing the last byte of a
square to F0, sparing valuable terrains. This will, however, be a very tedious job.
Another way of achieving it is not to use any fertile terrain at all on the map you use,
and change all land you want to be fertile in the game using the cheat menu. This way
CivilizationII tends to maintain the F0 byte at the end, the opposite of what I found out
in the example I used above.
Apart from having to do with fertility this sixth byte, it may also be an indicator for
"hostility" or ownership of a square. As a test I changed the last byte from a square
holding a unit, the result was that a unit of this same civilization attacked its own unit!

       6.1.4 – map data block 3
I don't know much about this yet, but the size of this block is (2 * QuarterWidth *
QuarterHeight) + 1024, where QuarterWidth and QuarterHeight are the 5th and 6th
words of the map header. This block seems to be divided into three parts. The first two
parts seem to have roughly the same structure as the map.

I think in both parts each square is represented by 4 bits (half a byte). In the first part,
land is represented by 5 and sea by 0, in the second this is the other way around. The
border between land and ocean is still a little vague to me. Both these parts have size
QuarterWidth * QuarterHeight bytes.

The third part may not be part of the map data anymore. This part (which reaches up
to the description of the units in the savegame) is always, no matter what map size,
1024 bytes. Although it may hold some map info, it would be very likely indeed if this
was some kind of a header to the civilization information, since the descriptions of the
units and cities follow right after it.

   6.2 MP files

First comes the Map Header. (98 bytes)
0	width * 2
width (when using Civ2 coordinates instead of MapEditor coordinates)
1	height
2	surface (width * height)
3	shape	(0 = Round, 1 = Flat)
4	seed	(1 = Random, 2 - 64 Patterns, numbers higher than 64 are
equal to X Mod 64, so 65 = 1, 66 = 2 etc.)
5	width (as in 0) / 4 (rounded up)
6	height / 4 (rounded up)
7	x-coordinate of Roman starting point
8	x-coordinate of Babylonian starting point
...
48	x-coordinate of Sioux starting point
49	y-coordinate of Roman starting point
...
Beginning @ Hex ”62”
Next comes the Map Data (6 * width * height bytes)
0	Terrain code:
00 – Desert
01 – Plains
02 – Grassland
03 – Forest
04 – Hills
05 – Mountains
06 – Tundra
07 – Glacier
08 – Swamp
09 – Jungle
0A – Ocean
40 - No Resource
80 – River
1	always zero	(When using the analyze map option, however, some or all of
these numbers may be adjusted and will then look more like how
they are used in .SAV and .SCN files)
2	always zero 				(“)
3	always zero 				(“)
4	Terrain code	(same as 0)
5	always	F0				(“)

7. UNITS INFORMATION
(source Allard Höfelt)

Located right before the city information. It may be handy to set you hex editor to show 13/26 bytes per row, so that a unit is exactly 2/1 rows under the one before him. The units are numbered (right click on a unit and you'll see its ID number) according to the way they're ordered in here.

Find specific unit by toggling eg. veteran status. Alternatively, search for the location of the unit by searching the x and y coordinates. If your unit is located at (88,46) look for the hex value 58 00 2E 00.

01-02	horizontal coordinates of unit
(NOTE: the unit is invisible if moved, unless the terrain it now
occupies has the "contains unit" flag toggled on. See terrains)
03-04	vertical coordinates of unit (same NOTE as with horizontal)
06	1... ....		adds a grey star to the shield, no apparent function
..1. ....		toggles veteran
07	unit type (counted in rules.txt, 00=settler, 01=engineer, etc.)
08	owning civilization
11	number of hitpoints lost
12	?? does change
14	caravan commodity
(00 hides, 01 wool, ..., 0A uranium, F0 food supply, rest makes no sense)
16	orders:
     01 : fortify (not yet fortified, but ordered to do so)
     02 : fortified
     03 : sentry
     04 : build fortress
     05 : builds road/railroad
     06 : builds irrigation
     07 : builds mine
     08 : transform terrain
     09 : cleans up pollution
     0A : builds airbase
     0B : go to (see number 19-20 and 21-22)
     FF : no orders (can also fill in any other number for no orders, but computer uses FF)
17	home city with number is city number (FF is none)
(You can find out the city number with for example "find city". If all cities
that are on the map are listed, you can simply count them to find the number)
19-20	horizontal coordinate of "go-to" command
21-22	vertical coordinate of "go-to" command
23-24	link to ?id?'s of other units to be drawn in the same square on top of the unit
(CAUTION: can produce strange effects)
25-26	link to ?id?'s of other units to be drawn in the same square under the unit
(CAUTION: can produce strange effects)

…at location 27, the next unit starts all over again.

8. CITIES INFORMATION
(source Andrew Livings and Xin Yu)

The easiest way to locate this part of the saved game is to
make a search for the name of a city. They are located near
the end of the save game.
Keep in mind that the city name itself is on the 33th hex
numbers pair of the information block about that city.

You can move the city to another location by changing the vertical
and horizontal coordinate of the city. Keep in mind though that for
the city to show up, the square where the city will stand needs to
have the “city present” flag enabled. See 6.1.2 (map blocks) for
more information about this.

You can have multiple cities on one square, you can have cities
adjacent to each other, you can have cities in the sea. Everything
is possible.

1-2	vertical coordinates of city
3-4	horizontal coordinates of city
5	1... .... can build coastal improvements
...1 .... denotes auto-build. Under whose rule is in byte 8
.... 1... denotes stolen tech
.... .1.. denotes improvement sold
.... ..1. denotes "we love the king day"
.... ...1 denotes civil disorder
6        .... 1... can build hydro plant
7	..1. .... can build ships (only if coastal flag is checked)
8	...1 .... denotes objective x3
.... .1.. denotes objective x1 (you can also set both the x3 and x1 objective)
.... ..1. denotes auto-build under domestic advisor
.... ...1 denotes auto-build under military advisor
.... ..00 (both military and domestic flags to 0) to turn
on both at same time. Note that these also need byte 5
the auto-build flag to be active.
9	city owner [00-07 (don't use >7)]
10	city size (negative sizes cultivate no squares but produce food)
11	who originally built the city [00-07]
15-21	working city production squares??
23-26	specialists, 4 hex positions representing 16 base 4 numbers representing specialists
0=none, 1=elvis, 2=tax, 3=sci.
example: 06000000, first hex 06=1*4+2: 1 taxman and 1 elvis
27-28	food in food box (FF=famine)
29-30	shields in shield box
31-32	net trade (not including those from trade routes)
33-47	city name buffer [15 characters, end with a 00]
48	00 (because city name cannot exceed 15 characters)
49	workers in inner circle (8 squares next to city square) [ff=all worked]
50	workers on 8 of the outer circle
51	workers on 4 of the outer circle
 [first digit is always 1, the second digit represents the 4 working positions]
52	number of specialists times 4 [eg. 08=2 specialists]
53-57	city improvements:
1... .... is 7th improvement
.1.. .... is 6th improvement
..1. .... is 5th improvement
...1 .... is 4th improvement
.... 1... is 3rd improvement
.... .1.. is 2nd improvement
.... ..1. is 1st improvement
58	item in production (can be used to force production)
[units 00-3f]
(improvements are inversed [FF=1st FE=2nd etc])
59	number of active trade routes [decimal, can also be >03]
60-62 = 1st, 2nd and 3rd trade commodities available
           - [00-0F (are 1st-15th in rules.txt)]
           - supplied trade goods, eg (Coal), are inverse values.
             eg., commodity 13 is already supplied, the value is F3 (-13)
           - if in parentheses use FF compliment (can force trade commodity
             eg., 0F=Uranium, F0 = (Uranium), which is ff-0f
63-65 = 1st, 2nd and 3rd trade commodities demanded
66-68 = 1st, 2nd and 3rd trade commodities in route
69-74 = 1st, 2nd and 3rd trade route partner city number (city number is 85th-86th position)
75-76 = science
77-78 = tax
79-80 = number of trade icons (including trade routes)
81    = total food production
82    = total shield production
83    = number of happy citizen
84    = number of unhappy citizen (double unhappy count twice??)

9. BUILT CITIES INFORMATION & MORE
(source Allard Höfelt)

After the 84th byte of the very last city, one byte is empty (00).
Let us call the byte thereafter number 1.
Byte 1-3 are for the Romans, 4-6 for Babylonians, 7-9 for Germans, ... for all 21 civs.

Of these three bytes, the first byte is the amount of cities that this civ built so far. This value is used to pick which city name to use in CITIES.TXT. The second and third bytes for each civ are not identified, and appear to sometimes be 00, sometimes 01.

If we continue this numbering from the byte we called 1, we can also locate some more values:

-	63th-66th bytes are the coordinates of the cursor.

A. HOW TO HEX-EDIT

There are several Hex Editors available. Most are downloadable from the Internet.
I recommend two editors:
-	Hex Workshop, http://www.bpsoft.com, a shareware editor, but with many
good options.
-	A.X.E., http://www.kahei.com a free editor, which has a Graphical viewing option.

There are a few things I would like to note about Hex Editing files:
-	Integers are almost always stored in reverse. If 300 turns have passed (300 is 01 2C in hex), you should type it in as 2C 01 instead of 01 2C.
-	Binary values are often used as “flags”, which can be toggled on or off. The way I have noted these in this document is eg ..1. …., which means that “.” can be either 0 or 1, but has no influence on the actual flag which is meant. 1, of course, must be 1 for the flag to work.
-	I have tried to give most numbers in Decimals for better understanding. However, some important offsets are still given in hex. They are either obvious to find or are noted.

B. VERSION HISTORY

1.4	 (13th August 2000)	Added Jorrit Vermeiren’s part about maps.
Reformatted the whole text to Word.
Added leader titles, total number of units
and cities in game, cities to pick in CITIES.TXT.
1.3 (20th June 2000)	Added the Wonders section.
1.2 (26th May 2000)	Added some unimportant info, pollution info,
				more info about Technologies and Money and
				some zoom factors.
1.1 (15th May 2000)	Added cursor coordinates, the Save Game layout
				some game versions, Tribes info, Technologies
				and Money info.
1.0 (5th May 2000)	Original version.

C. CREDITS

Sources are mentioned where appropriate. The people who contributed to
this document are in no particular order:
-	Allard Höfelt (the writer of this document)
-	Jorrit Vermeiren
-	Andrew Livings
-	Carl Fritz (Gothmog)
-	Xin Yu
-	Captain Nemo

     Thank you to all people who have contributed by asking valuable questions
     and by this way finding more out.