ACCESSING CCdataBase\\ RETRIEVING CCcontentMessage\\ .. msg:"Welcome, user7576."

 

CHK FILE FORMAT
Author Version 1.00
Covers Brood Wars v1.05

Definitions of symbols used in this file:

Data Symbols

char - 1 byte, designates text use
byte - 1 byte, designates use as numbers or flags
int - 2 bytes of data forming an unsigned integer, stored in low-high order. (normal IBM-PC order) Sometimes used as flags
long - 4 bytes of data forming a single number, stored in lowest-highest byte order (normal IBM-PC order)

Starcraft Versions

beta57 - Section is present in the beta format of scenarios.Judging from the parts not present, this was a VERY early beta version
1.00 - Section is present in the Release(1.00) version of SC
1.04 - Section is present in the Enhanced StarCraft(1.04 patch) version, and is a 1.00/Brood hybrid
Brood - Section is present in the Brood Wars release version

Note: All numbers in this file are decimal, unless specified by an 'h' (i.e. h8a = decimal 138)


The CHK format consists of many sections, all sections start with the same header:

4 chars - Name of section
1 long - Length, in bytes, of the section(excluding this 8 byte header)

...from here is the actual data for the section...

x: Section 'TYPE' - specifies type of scenario file
1.04 * Brood

4 chars - String specifying type of scenario. 1.04 is 'RAWS', Brood Wars is 'RAWB'

x: Section 'VER ' - identifies the file format version
beta57 * 1.00 * 1.04 * Brood REQUIRED

1 int - File format version. 57 for beta57 version, 59 for 1.00 format, 63 for 1.04 format, 205 for Brood format

x: Section 'IVER' - additionally identifies the file format version
beta57 * 1.00

1 int - Additional file format version. 9 for beta or obsolete versions, 10 for current versions

x: Section 'IVE2', additionally identifies the file format version
1.04 * Brood
Note: the 'IVE2' section replaces the 'IVER' section in 1.04 and above

1 int - Additional file format version. 11 for 1.04 or Brood

x: Section 'VCOD' - verification code of the CHK file
beta57 * 1.00 * 1.04 * Brood REQUIRED

1040 bytes - Verification code. Only one code is acceptable; anything else will not allow the editor to open the file. See vcod.bin file for code

x: Section 'IOWN' - designated the controller for a particular player
1.00 * 1.04 * Brood REQUIRED

12 bytes - 1 byte for each player, specifies the owner of the player

03 - Rescuable
05 - Computer
06 - Human
07 - Neutral

x: Section 'OWNR' - designates the controller for a particular player
beta57 * 1.00 * 1.04 * Brood REQUIRED

12 bytes - Same as the IOWN section, but with an additional value:

00 - Player is not used in scenario

Note: I'm not sure why this section is separate from the IOWN section

x: Section 'ERA ' - specifies tileset of the map
beta57 * 1.00 * 1.04 * Brood REQUIRED

1 int - Designates tileset

00 - Badlands
01 - Space Platform
02 - Installation
03 - Ashworld
04 - Jungle World
05 - Desert World
06 - Arctic World
07 - Twilight World

x: Section 'DIM ' - specifies map dimensions
beta57 * 1.00 * 1.04 * Brood REQUIRED

1 int - Width of the map. SHOULD be one of the following values: 64, 96, 128, 192, 256
1 int - Height of the map. SHOULD also be one of those values

Note: I've heard that you can use values other than the ones I've listed. However, I haven't ever tried, so I don't know how it will work. Be warned!

x: Section 'SIDE', designates species of each player
beta57 * 1.00 * 1.04 * Brood REQUIRED

12 bytes - 1 byte/player for species of player

00 - Zerg
01 - Terran
02 - Protoss
03 - Independent
04 - Neutral
05 - User Select
07 - Inactive
10 - Human

Note: I haven't tried the Independent, Neutral, Inactive, or Human settings in Starcraft yet; but I would guess that those would crash StarCraft. Be warned!

x: Section 'MTXM', graphical tile map section
beta57 * 1.00 * 1.04 * Brood

Note: This section is not actually a map of the level's terrain, as it would appear at first. It is actually a map of the level's appearance. The tiles in this section are the tiles that actually get displayed in Starcraft(StarEdit, however, disregards this section, and regenerates it upon saving) This section will only be different from the TILE section on tiles where doodads are present.

height * width ints - 1 int for each tile. see appendix E: Map Tiles

x: Section 'PUNI', player unit restrictions
beta57 * 1.00 * 1.04 * Brood REQUIRED

228 * 12 bytes - 1 byte for each unit, then each player, for player availability

00 - Means that unit is not available for production for player not used if player has 'use defaults' on
01 - Means that unit is available for production for player

228 bytes - 1 byte for each unit for global availability defaults

00 - Means that unit is not available for production
01 - Means that unit is available for production

228 * 12 bytes - 1 byte for each unit, then each player for 'use defaults' flag

00 - Player overrides defaults for this unit
01 - Player uses defaults for this unit

x: Section 'UPGR' - player upgrade restrictions
beta57 * 1.00 * 1.04 REQUIRED

45 * 12 bytes - 1 byte each upgrade available, each player. the maximum level of this upgrade the player can upgrade to(override setting)

45 * 12 bytes - 1 byte each upgrade available, each player. the level of this upgrade the player starts out with(override setting)

45 bytes - 1 byte each upgrade available. default maximum level

45 bytes - 1 byte each upgrade available. default starting level

45 * 12 bytes - 1 byte each upgrade override, each player

00 - Upgrade does not use defaults for player
01 - Upgrade uses defaults for player

x: Section 'PTEC' - player technology restrictions
beta57 * 1.00 * 1.04 * Brood REQUIRED

24 * 12 bytes - 1 byte each technology available, each player (override setting)

00 - Technology is not available for upgrade for player
01 - Technology is available for upgrade for player

24 * 12 bytes - 1 byte each technology already researched, each player (override setting)

00 - Technology is not already researched
01 - Technology already researched

24 bytes - 1 byte each technology available by default

00 - Technology is not available by default
01 - Technology available by default

24 bytes - 1 byte each technology already researched by default

00 - Technology is not already researched by default
01 - Technology already researched by default

24 * 12 bytes - 1 byte each technology override, each player

00 - Technology overrides defaults for player
01 - Technology uses default settings for player

x: Section 'UNIT' - units on map list and flags
beta57 * 1.00 * 1.04 * Brood REQUIRED

Each unit on the map gets one of the following structures, in no particular order {

1 long - Unknown. Appears to be some sort of serial number for the unit. Honestly, I really have no idea what this is used for.

1 int - X coordinate of unit

1 int - Y coordinate of unit

1 int - Unit type

1 int - Unknown/unused

1 int - Flag of which special properties can be applied to unit, and are valid

bit 0 - cloak bit is valid
bit 1 - burrowed bit is valid
bit 2 - in transit bit is valid
bit 3 - hallucinated bit is valid
bit 4 - invincible bit is valid
bit 5-15 - unknown/unused

1 int - I think this is a flag for which elements of the unit data are valid. More specifically, the properties which can be changed by the map-maker. Note: Start Locations cannot have ANY of their properties changed by the map-maker(the player # is automatic)

bit 0 - owner player is valid(unit is not neutral)
bit 1 - HP is valid
bit 2 - SP is valid
bit 3 - energy is valid
bit 4 - resource amount is valid(unit is a resource)
bit 5 - amount in hanger is valid
bit 6-15 - unknown/unused

1 byte - Player number that owns unit(0-based.)

1 byte - Hit points %(1-100)

1 byte - Shield points %(1-100)

1 byte - Energy points %(1-100)

1 long - Resource amount(for resources only)

1 int - No. of units in hanger

1 int - Unit state flags

bit 0 - unit is cloaked
bit 1 - unknown/unused
bit 2 - unit is burrowed
bit 3 - building is in transit
bit 4 - unit is hallucinated
bit 5 - unit is invincible
bit 6-15 - unknown/unused

8 bytes - Unknown/unused. Maybe padding?

}

x: Section 'ISOM' - isometric tile mapping
beta57 * 1.00 * 1.04 * Brood REQUIRED
Note: This section is used to map the square tiles of the 'TILE' section to the isometric(diamond) shape on the
terrain in the map editor. This section affects what type of terrain can be placed where, and how, on the map. This
does not appear to have any function in Starcraft itself, only Staredit. But I haven't yet figured out the format of it.(Actually, I haven't tried)

(width / 2 + 1) * (height + 1) * 4 ints - 4 ints for each isometric unit. see appendix F: Isometric Tile Values

x: Section 'TILE' - tile map of level's terrain
beta57 * 1.00 * 1.04 * Brood REQUIRED
Note: This section will only be different from the MTXM section on tiles where doodads are present.

width * height ints - 1 int for each map tile. see appendix E: Map Tiles

x: Section 'DD2 ' - doodad map of level
beta57 * 1.00 * 1.04 * Brood REQUIRED
Note: There are 3 parts to doodads. The graphical portion of a doodad is stored in the MTXM section. The second part of the doodad is in this section. This is only for the map editor. Generally, for doodads that are units (like traps), the X and Y values in this section are where the UNIT actually is. Usually this is the very center of the sprite. Be warned!

Another note: Blizzard claims that there is no way to determine what player owns a doodad, however, as this file shows in a few lines, that is untrue. All I can think of as to why they said that would be that, due to some technical thing, this number is not dependable. I simply do not know why.

Final note: I'm pretty sure that this section is only used by the map editor. Apparently, Starcraft doesn't generate doodads real time, due to some speed considerations.

Each doodad in the map gets one of the following structures: {

1 int - Number of the doodad. Size of the doodad is dependant on this. Doodads for each tileset are different

1 int - X coordinate of the doodad UNIT

1 int - Y coordinate of the doodad UNIT

1 byte - Player number that owns the doodad

1 byte - Enabled flag for the doodad

00 - Doodad is enabled(trap can attack, door is closed, etc.)
01 - Doodad is disabled

}

x: Section 'THG2' - doodad to unit map
beta57 * 1.00 * 1.04 * Brood REQUIRED
Note: I think the map editor ONLY writes to this section. It does not read from it. However, Starcraft does use this section

Certain doodads(I think only the ones that have sprites) each get one of the following structures {

1 int - Unit number of the doodad

1 int - X coordinate of doodad UNIT

1 int - Y coordinate of doodad UNIT

1 byte - Player number that owns the doodad

1 byte - Unknown. Seems to always be 0

1 int - Unknown flag (I think)

bit 0 - unknown. gun trap??
bit 1-3 - unknown. seems to be always off
bit 4 - doodad can provide cover for ground units?
bit 5-6 - unknown. seems to be always off
bit 7 - unknown. seems to be always on. doodad can obstruct view of unit??
bit 8 - unknown. unit is single frame sprite??
bit 9 - unknown
bit 10-12 - unknown. seems to be always off
bit 13 - unit has 2 states?
bit 14 - unknown. seems to be always off
bit 15 - unit is disabled?

}

x: Section 'MASK' - Fog of War section
beta57 * 1.00 * 1.04 * Brood REQUIRED

X * Y bytes - One byte for each map tile. Bits in byte indicate which players have Fog of War on for the tile. Bits 0-7 correspond to players 1-8. If bit is ON, the tile is covered with Fog of War. If bit is OFF, the tile is visible. Players 9-12 cannot be played, so they do not have Fog of War at all

x: Section 'STR ' - strings section
beta57 * 1.00 * 1.04 * Brood REQUIRED

1 int - Number of strings in the section(this will be 1024, regardless of how many strings are actually used, and cannot exceed 1024)

1024 ints - 1 int for each string specifying the offset from the beginning of this section of where the string starts. If there are less that 1024 strings, the unused entries will point to string #0 (the null string). Important Note: String #0 should have an offset of 2050, etc. (1025 ints for this table)

Here is where all the strings go, one right after another; and all of them null terminated. Note: string #0 (the very first one) is ALWAYS the null string. All other strings start at #1

Noteworthy Note: Strings are not limited to a single color. The color can be changed to your liking. See Colored Text, for more info on this

x: Section 'UPRP' - trigger unit properties section
beta57 * 1.00 * 1.04 * Brood
Note: This section is used whenever the trigger 'create units with properties' is used. It is composed of 64 of the following structures (these are subsets of the structures in the UNIT section), one for each trigger unit properties, regardless of how many are actually used, and cannot exceed 64 {

1 int - Flag of which special properties can be applied to unit, and are valid

bit 0 - cloak bit is valid
bit 1 - burrowed bit is valid
bit 2 - in transit bit is valid
bit 3 - hallucinated bit is valid
bit 4 - invincible bit is valid
bit 5-15 - unknown/unused

1 int - I think this is a flag for which elements of the unit data are valid. More specifically, the properties which can be changed by the map-maker. Note: Start Locations cannot have ANY of their properties changed by the map-maker(the player # is automatic)

bit 0 - owner player is valid(unit is not neutral)
bit 1 - HP is valid
bit 2 - SP is valid
bit 3 - energy is valid
bit 4 - resource amount is valid(unit is a resource)
bit 5 - amount in hanger is valid
bit 6-15 - unknown/unused

1 byte - Player number that owns unit. Will always be NULL in this section

1 byte - Hit points %(1-100)

1 byte - Shield points %(1-100)

1 byte - Energy points %(1-100)

1 long - Resource amount(for resources only)

1 int - No. of units in hanger

1 int - Flags

bit 0 - unit is cloaked
bit 1 - unknown/unused
bit 2 - unit is burrowed
bit 3 - building is in transit
bit 4 - unit is hallucinated
bit 5 - unit is invincible
bit 6-15 - unknown/unused

4 bytes - Unknown/unused. Maybe padding?

}

x: Section 'UPUS' - trigger unit properties used section
beta57 * 1.00 * 1.04 * Brood

64 bytes - 1 byte each trigger unit properties entry

00 - Properties entry is unused
01 - Properties entry is used

x: Section 'MRGN' - locations section
beta57 * 1.00 * 1.04 * Brood
Note: This section is, by default, composed of 64 locations. However, in Brood Wars, it can support more. If there are more than 64 entries, it will expand to 256 locations.

Each location gets one of the following location entries, with the 'Anywhere' location ALWAYS being number 64(or 63, if 0 based) {

1 long - Starting X coordinate of location, locked into 32 pt. grid

1 long - Starting Y coordinate of location, locked into 32 pt. grid

1 long - Ending X coordinate of location, locked into 32 pt. grid

1 long - Ending Y coordinate of location, locked into 32 pt. grid

1 int - String number of the name of this location

1 int - Location elevation flags. If an elevation is disabled in the location, its bit will be on(1)

bit 0 - low elevation
bit 1 - medium elevation
bit 2 - high elevation
bit 3 - low air
bit 4 - medium air
bit 5 - high air
bit 6-15 unknown/unused

}

x: Section 'TRIG' - trigger section
beta57 * 1.00 * 1.04 * Brood REQUIRED?

See Trigger Format for details on this complex section

x: Section 'MBRF', mission briefing section
beta57 * 1.00 * 1.04 * Brood REQUIRED?

This section's format is identical to that of the Triggers section. See Trigger Format for details

x: Section 'SPRP', decides which strings are the scenario properties
beta57 * 1.00 * 1.04 * Brood REQUIRED

1 int - String number of the scenario name

1 int - String number of the scenarios description

x: Section 'FORC' - specifies the forces
beta57 * 1.00 * 1.04 * Brood REQUIRED
Note: In the Beta57 format, this section is 16 bytes long, and the last 4 bytes listed here are nonexistent

8 bytes - 1 byte for each active player, specifying which of the 4 forces(0-based) that the player's on

4 ints - 1 int for each force, string number of the name of the force

4 bytes - 1 byte for each force specifying the properties

bit 0 - random start location
bit 1 - allies
bit 2 - allied victory
bit 3 - shared vision
bit 4-7 - unknown/unused

x: Section 'WAV ' - specifies the WAV files in the scenario
beta57 * 1.00 * 1.04 * Brood
Note: There are 1024 wave entries regardless of how many are actually used, and there cannot be more than 1024 sounds in a level

1024 ints - 1 int for each WAV. String number of the path of the wav file in the MPQ. If the entry is not used, the string number will be 0, pointing to the null string

x: Section 'UNIS', unit settings for level
1.00 * 1.04 * Brood

228 bytes - 1 byte each unit

00 - Unit does not use default settings
01 - Unit uses default settings

Next, each of the 228 units gets one of the following structures {

1 byte - Unknown. Seems to be always 0

1 int - Hit points for unit

1 byte - I think this is invincible flag

00 - Unit is selectable
01 - Unit is invincible(not selectable)

}

228 ints - 1 int for each unit, shield points for unit

228 bytes - 1 byte for each unit, armor points for unit

228 ints - 1 int for each unit, build time for unit in 1/60 seconds

228 ints - 1 int for each unit, mineral cost for unit

228 ints - 1 int for each unit, gas cost for unit

228 ints - 1 int each unit, string number of units name

100 ints - 1 int each weapon, base damage the weapon does

100 ints - 1 int each weapon, bonus damage for each weapon upgrade level

x: Section 'UPGS' - upgrade settings
1.00 * 1.04 * Brood

46 bytes - 1 byte each upgrade, showing default use

00 - Upgrade uses custom settings
01 - Upgrade uses default settings

46 ints - 1 int each upgrade, base mineral cost for the upgrade

46 ints - 1 int each upgrade, mineral cost factor each upgrade level

46 ints - 1 int each upgrade, base gas cost for the upgrade

46 ints - 1 int each upgrade, gas cost factor each upgrade level

46 ints - 1 int each upgrade, base time for upgrade research

46 ints - 1 int each upgrade, time factor each upgrade level

x: Section 'TECS' - technology/special abilities settings
1.00 * 1.04 * Brood

24 bytes - 1 byte each technology, specifies if the tech overrides the default settings

00 - Technology uses custom settings
01 - Technology uses default settings

24 ints - Mineral cost to develop technology

24 ints - Gas cost to develop technology

24 ints - Tile required to develop technology

24 ints - Energy cost to cast special ability

x: Section 'SWNM' - switch renaming section
1.00 * 1.04 * Brood
Note: This section is present in 1.00 version, but you cant use it till Brood Wars. But WHY?? Maybe Blizzard used it in the original Starcraft campaigns...

256 longs - 1 long each switch, string number of the name of the switch

x: Section 'COLR' - color settings for players
Brood

8 bytes - 1 byte each player, is the color of the player

00 - Red
01 -
Blue
02 -
Teal
03 -
Purple
04 -
Orange
05 -
Brown
06 -
White
07 -
Yellow
08 -
Green
09 -
Pale yellow
10 -
Tan
11 - D
ark aqua(neutral color)
12 -
Pale green
13 -
Blueish gray
14 -
Pale yellow(same as 09)
15 -
Cyan

Note: More than one player can use a single color. This hint is more useful than it may appear at first

Another Note: The colors 12 and above are used in the tileset, so the color changes with tileset. Hint: Try color 12 on a Desert level, and color 14 on an Ice level!

One Final Note: Although colors above 15 can and do work, they are undefined, so you will be directly indexing the colors in the main palette. This has very unpredictable results, and might crash SC. Be warned!

x: Section 'PUPx' - extended upgrades section for the level
1.04 * Brood
Note: This section overrides the 'UPGR' section when the level is run in Brood Wars mode

Another Note: This section is identical to the 'UPGR' section, but it uses the expanded Brood Wars set of 61 upgrades, versus the original Starcraft's 45

x: Section 'PTEx', extended player technologies section
1.04 * Brood
Note: This section overrides the 'PTEC' section when the level is run in Brood Wars

Next Note: This section is identical to the 'PTEC' section, but it uses the expanded Brood Wars set of 44 technologies, versus the original Starcraft's 24

x: Section 'UNIx' - extended unit settings section
1.04 * Brood
Note: This section overrides the 'UNIS' section when the
level is run in Brood Wars

Yet Another Note: This section is identical to the 'UNIS' section, but it uses the extended Brood Wars set of 130 weapons, instead of the 100 in the original Starcraft format

x: Section 'UPGx', extended upgrades settings section
1.04 * Brood
Note: This section overrides the 'UPGS' section when the level is run in Brood Wars

Oh Man, Another Note: This section is pretty much the same as the 'UPGS' section, but two small differences. First, it uses the expanded Brood Wars set of 61 upgrades, rather than the original 46. Second, after the first 61 ints, there is a single 0 before the next set of ints. I would guess this is a mistake. but live with it ;)

x: Section 'TECx', extended technology section for the level
1.04 * Brood
Note: This section overrides the 'TECS' section when the level is run in Brood Wars mode

Another Note: This section is identical to the 'TECS' section, but it uses the expanded Brood Wars set of 44 technologies, versus the original 24

Appendix A: Unit Types

0 = Terran Marine
1 = Terran Ghost
2 = Terran Vulture
3 = Terran Goliath
4 = Goliath Turret
5 = Terran Siege Tank (Tank Mode)
6 = Tank Turret(Tank Mode)
7 = Terran SCV
8 = Terran Wraith
9 = Terran Science Vessel
10 = Gui Montang (Firebat)
11 = Terran Dropship
12 = Terran Battlecruiser
13 = Vulture Spider Mine
14 = Nuclear Missile
15 = Terran Civilian
16 = Sarah Kerrigan (Ghost)
17 = Alan Schezar (Goliath)
18 = Alan Schezar Turret
19 = Jim Raynor (Vulture)
20 = Jim Raynor (Marine)
21 = Tom Kazansky (Wraith)
22 = Magellan (Science Vessel)
23 = Edmund Duke (Siege Tank)
24 = Edmund Duke Turret
25 = Edmund Duke (Siege Mode)
26 = Edmund Duke Turret
27 = Arcturus Mengsk (Battlecruiser)
28 = Hyperion (Battlecruiser)
29 = Norad II (Battlecruiser)
30 = Terran Siege Tank (Siege Mode)
31 = Tank Turret (Siege Mode)
32 = Firebat
33 = Scanner Sweep
34 = Terran Medic
35 = Zerg Larva
36 = Zerg Egg
37 = Zerg Zergling
38 = Zerg Hydralisk
39 = Zerg Ultralisk
40 = Zerg Broodling
41 = Zerg Drone
42 = Zerg Overlord
43 = Zerg Mutalisk
44 = Zerg Guardian
45 = Zerg Queen
46 = Zerg Defiler
47 = Zerg Scourge
48 = Torrarsque (Ultralisk)
49 = Matriarch (Queen)
50 = Infested Terran
51 = Infested Kerrigan
52 = Unclean One (Defiler)
53 = Hunter Killer (Hydralisk)
54 = Devouring One (Zergling)
55 = Kukulza (Mutalisk)
56 = Kukulza (Guardian)
57 = Yggdrasill (Overlord)
58 = Terran Valkyrie Frigate
59 = Mutalisk/Guardian Cocoon
60 = Protoss Corsair
61 = Protoss Dark Templar(Unit)
62 = Zerg Devourer
63 = Protoss Dark Archon
64 = Protoss Probe
65 = Protoss Zealot
66 = Protoss Dragoon
67 = Protoss High Templar
68 = Protoss Archon
69 = Protoss Shuttle
70 = Protoss Scout
71 = Protoss Arbiter
72 = Protoss Carrier
73 = Protoss Interceptor
74 = Dark Templar(Hero)
75 = Zeratul (Dark Templar)
76 = Tassadar/Zeratul (Archon)
77 = Fenix (Zealot)
78 = Fenix (Dragoon)
79 = Tassadar (Templar)
80 = Mojo (Scout)
81 = Warbringer (Reaver)
82 = Gantrithor (Carrier)
83 = Protoss Reaver
84 = Protoss Observer
85 = Protoss Scarab
86 = Danimoth (Arbiter)
87 = Aldaris (Templar)
88 = Artanis (Scout)
89 = Rhynadon (Badlands Critter)
90 = Bengalaas (Jungle Critter)
91 = Unused - Was Cargo Ship
92 = Unused - Was Mercenary Gunship
93 = Scantid (Desert Critter)
94 = Kakaru (Twilight Critter)
95 = Ragnasaur (Ashworld Critter)
96 = Ursadon (Ice World Critter)
97 = Lurker Egg
98 = Raszagal
99 = Samir Duran (Ghost)
100 = Alexei Stukov (Ghost)
101 = Map Revealer
102 = Gerard DuGalle
103 = Zerg Lurker
104 = Infested Duran
105 = Disruption Web
106 = Terran Command Center
107 = Terran Comsat Station
108 = Terran Nuclear Silo
109 = Terran Supply Depot
110 = Terran Refinery
111 = Terran Barracks
112 = Terran Academy
113 = Terran Factory
114 = Terran Starport
115 = Terran Control Tower
116 = Terran Science Facility
117 = Terran Covert Ops
118 = Terran Physics Lab
119 = Unused - Was Starbase?
120 = Terran Machine Shop
121 = Unused - Was Repair Bay?
122 = Terran Engineering Bay
123 = Terran Armory
124 = Terran Missile Turret
125 = Terran Bunker
126 = Norad II
127 = Ion Cannon
128 = Uraj Crystal
129 = Khalis Crystal
130 = Infested Command Center
131 = Zerg Hatchery
132 = Zerg Lair
133 = Zerg Hive
134 = Zerg Nydus Canal
135 = Zerg Hydralisk Den
136 = Zerg Defiler Mound
137 = Zerg Greater Spire
138 = Zerg Queen's Nest
139 = Zerg Evolution Chamber
140 = Zerg Ultralisk Cavern
141 = Zerg Spire
142 = Zerg Spawning Pool
143 = Zerg Creep Colony
144 = Zerg Spore Colony
145 = Unused Zerg Building
146 = Zerg Sunken Colony
147 = Zerg Overmind (With Shell)
148 = Zerg Overmind
149 = Zerg Extractor
150 = Mature Chrysalis
151 = Zerg Cerebrate
152 = Zerg Cerebrate Daggoth
153 = Unused Zerg Building 5
154 = Protoss Nexus
155 = Protoss Robotics Facility
156 = Protoss Pylon
157 = Protoss Assimilator
158 = Unused Protoss Building
159 = Protoss Observatory
160 = Protoss Gateway
161 = Unused Protoss Building
162 = Protoss Photon Cannon
163 = Protoss Citadel of Adun
164 = Protoss Cybernetics Core
165 = Protoss Templar Archives
166 = Protoss Forge
167 = Protoss Stargate
168 = Stasis Cell/Prison
169 = Protoss Fleet Beacon
170 = Protoss Arbiter Tribunal
171 = Protoss Robotics Support Bay
172 = Protoss Shield Battery
173 = Khaydarin Crystal Formation
174 = Protoss Temple
175 = Xel'Naga Temple
176 = Mineral Field (Type 1)
177 = Mineral Field (Type 2)
178 = Mineral Field (Type 3)
179 = Cave
180 = Cave-in
181 = Cantina
182 = Mining Platform
183 = Independant Command Center
184 = Independant Starport
185 = Independant Jump Gate
186 = Ruins
187 = Kyadarin Crystal Formation
188 = Vespene Geyser
189 = Warp Gate
190 = PSI Disruptor
191 = Zerg Marker
192 = Terran Marker
193 = Protoss Marker
194 = Zerg Beacon
195 = Terran Beacon
196 = Protoss Beacon
197 = Zerg Flag Beacon
198 = Terran Flag Beacon
199 = Protoss Flag Beacon
200 = Power Generator
201 = Overmind Cocoon
202 = Dark Swarm
203 = Floor Missile Trap
204 = Floor Hatch
205 = Left Upper Level Door
206 = Right Upper Level Door
207 = Left Pit Door
208 = Right Pit Door
209 = Floor Gun Trap
210 = Left Wall Missile Trap
211 = Left Wall Flame Trap
212 = Right Wall Missile Trap
213 = Right Wall Flame Trap
214 = Start Location
215 = Flag
216 = Young Chrysalis
217 = Psi Emitter
218 = Data Disc
219 = Khaydarin Crystal
220 = Mineral Cluster Type 1
221 = Mineral Cluster Type 2
222 = Protoss Vespene Gas Orb Type 1
223 = Protoss Vespene Gas Orb Type 2
224 = Zerg Vespene Gas Sac Type 1
225 = Zerg Vespene Gas Sac Type 2
226 = Terran Vespene Gas Tank Type 1
227 = Terran Vespene Gas Tank Type 2
Appendix B: Unit Weapons
Note: The first 100(0-99) are in the standard Starcraft set. Only Brood Wars uses all 130.

Another Note: The Acid Spray weapon was the Mutalisk's weapon in the beta57 version. This was because the Glave Wurm was used by the Queen. I should also note that the Defiler had Venom for a weapon.

0 = Gauss Rifle (Terran Marine)
1 = Gauss Rifle (Jim Raynor Marine)
2 = C-10 Canister Rifle (Terran Ghost)
3 = C-10 Canister Rifle (Sarah Kerrigan Ghost)
4 = Fragmentation Grenade (Terran Vulture)
5 = Fragmentation Grenade (Jim Raynor Vulture)
6 = Spider Mines
7 = Twin Autocannons (Terran Goliath - Ground)
8 = Hellfire Missle Pack (Terran Goliath - Air)
9 = Twin Autocannons (Alan Schezar Goliath - Ground)
10 = Hellfire Missle Pack (Alan Schezar Goliath - Air)
11 = Arclite Cannon (Terran Seige Tank - Tank Mode)
12 = Arclite Cannon (Edmund Duke Seige Tank - Tank Mode)
13 = Fusion Cutter (Terran SCV)
14 = Fusion Cutter Harvester (Terran SCV)
15 = Gemini Missiles (Terran Wraith - Air)
16 = Burst Lasers (Terran Wraith - Ground)
17 = Gemini Missiles (Tom Kazansky Wraith - Air)
18 = Burst Lasers (Tom Kazansky Wraith - Ground)
19 = ATS Laser Battery (Terran BattleCruiser - Ground)
20 = ATA Laser Battery (Terran BattleCruiser - Air)
21 = ATS Laser Battery (Hyperion BattleCruiser - Ground)
22 = ATA Laser Battery (Hyperion BattleCruiser - Air)
23 = ATS Laser Battery (Norad II BattleCruiser - Ground)
24 = ATA Laser Battery (Norad II BattleCruiser - Air)
25 = Flame Thrower (Terran Firebat)
26 = Flame Thrower (Gui Montag)
27 = Arclite Shock Cannon (Terran Seige Tank - Seige Mode)
28 = Arclite Shock Cannon (Edmund Duke Seige Tank - Seige Mode)
29 = Longbolt Missile (Terran Missile Tower)
30 = Yamato Gun (Terran Battlecruiser Ability)
31 = Terran Nuclear Missile Strike
32 = Lockdown (Terran Ghost Ability)
33 = Irradiate (Terran Science Vessel Ability)
34 = EMP Shockwave (Terran Science Vessel Ability)
35 = Claws (Zerg Zergling)
36 = Claws (Devouring One Zergling)
37 = Claws (Infested Kerrigan)
38 = Needle Spines (Zerg Hydralisk)
39 = Needle Spines (Hunter Killer Hydralisk)
40 = Kaiser Blades (Zerg Ultralisk)
41 = Kaiser Blades (Torrasque Ultralisk)
42 = Toxic Spores (Zerg Broodling)
43 = Spines (Zerg Drone)
44 = Spines Harvester (Zerg Drone)
45 = Acid Spray (Zerg Queen) (Beta57 Only)
46 = Acid Spore (Zerg Guardian)
47 = Acid Spore (Kukulza Guardian)
48 = Glave Wurm (Zerg Mutalisk)
49 = Glave Wurm (Kukulza Mutalisk)
50 = Venom (Zerg Defiler) (Beta57 Only)
51 = Venom (Unclean One) (Beta57 Only)
52 = Seeker Spores (Zerg Spore Colony)
53 = Subterranian Tentacle (Zerg Sunken Colony)
54 = Suicide (Infested Terran)
55 = Suicide (Zerg Scourge)
56 = Parasite (Zerg Queen Ability)
57 = Broodling (Zerg Queen Ability)
58 = Ensnare (Zerg Queen Ability)
59 = Dark Swarm (Zerg Defiler Ability)
60 = Plague (Zerg Defiler Ability)
61 = Consume (Zerg Defiler Ability)
62 = Particle Beam (Protoss Probe)
63 = Particle Beam Harvest (Protoss Probe)
64 = Psi Blades (Protoss Zealot)
65 = Psi Blades (Fenix Zealot)
66 = Phase Disruptor (Protoss Dragoon)
67 = Phase Disruptor (Fenix Dragoon)
68 = Psi Assault (Protoss High Templar) (Beta57 Only)
69 = Psi Assault (Tassadar Templar)
70 = Psionic Shockwave (Protoss Archon)
71 = Psionic Shockwave (Tassadar/Zeratul Archon)
72 = << Unused >> (Radioactive)
73 = Dual Photon Blasters (Protoss Scout - Ground)
74 = Anti-Matter Missiles (Protoss Scout - Air)
75 = Dual Photon Blasters (Mojo Scout - Ground)
76 = Anti-Matter Missiles (Mojo Scout - Air)
77 = Phase Disruptor Cannon (Protoss Arbiter)
78 = Phase Disruptor Cannon (Danimoth Arbitor)
79 = Pulse Cannon (Protoss Interceptor)
80 = STS Photon Cannon (Photon Cannon - Ground)
81 = STA Photon Cannon (Photon Cannon - Air)
82 = Scarab (Protoss Reaver)
83 = Stasis Field (Protoss Arbiter Ability)
84 = << Unused >> (Psi Storm)
85 = Warp Blades (Zeratul Dark Templar)
86 = Warp Blades (Dark Templar Hero)
87 = Missiles (Unused)
88 = Laser Battery (Unused)
89 = Tormentor Missiles (Unused)
90 = Bombs (Unused)
91 = Raider Gun (Unused)
92 = << Unknown >>
93 = << Unknown >>
94 = << Unknown >>
95 = Flechette Missile (Unused)
96 = Trap Bullet
97 = Trap Missile
98 = Trap Flamer
99 = Hellfire Missile Pack (Unused)
100 = Neutron Flare (Protoss Corsair)
101 = Disruption Web (Protoss Corsair Ability)
102 = Restoration (Terran Medic Ability)
103 = Halo Rockets (Terran Valkyrie)
104 = Corrosive Acid (Zerg Devourer)
105 = Mind Control (Protoss Dark Archon Ability)
106 = Feedback (Protoss Dark Archon Ability)
107 = Optical Flare (Terran Medic Ability)
108 = Maelstrom (Protoss Dark Archon Ability)
109 = Subterranean Spines (Zerg Lurker)
110 = << Unused >>
111 = Warp Blades (Dark Templar Unit)
112 = C-10 Canister Rifle (Samir Duran Ghost)
113 = C-10 Canister Rifle (Infested Duran Ghost)
114 = Dual Photon Blasters (Artanis Scout - Ground)
115 = Anti-Matter Missiles (Artanis Scout - Air)
116 = C-10 Canister Rifle (Alexi Stukov Ghost)
117-129 = << Unused >>

Appendix C: Upgrade Types
Note: First 45(0-44) are the standard Starcraft set. Only Brood Wars uses all 61

0 = Terran Infantry Armor
1 = Terran Vehicle Plating
2 = Terran Ship Plating
3 = Zerg Caparace
4 = Zerg Flyer Carapace
5 = Protoss Armor
6 = Protoss Plating
7 = Terran Infantry Weapons
8 = Terran Vehicle Weapons
9 = Terran Ship Weapons
10 = Zerg Melee Attacks
11 = Zerg Missile Attacks
12 = Zerg Flyer Attacks
13 = Protoss Ground Weapons
14 = Protoss Air Weapons
15 = Protoss Plasma Shields
16 = U-238 Shells
17 = Ion Thrusters
18 = Burst Laser Upgrade
19 = Titan Reactor
20 = Ocular Implants
21 = Moebius Reactor
22 = Apollo Reactor
23 = Colossus Reactor
24 = Ventral Sacs
25 = Antennae
26 = Pneumatized Carapace
27 = Metabolic Boost
28 = Adrenal Glands
29 = Muscular Augments
30 = Grooved Spines
31 = Gamete Meiosis
32 = Metasynaptic Node
33 = Singularity Charge
34 = Leg Enhancements
35 = Scarab Damage
36 = Reaver Capacity
37 = Gravitic Drive
38 = Sensor Array
39 = Gravitic Boosters
40 = Khaydarin Amulet
41 = Apial Sensors
42 = Gravitic Thrusters
43 = Carrier Capacity
44 = Khyadarin Core
45 = Unused
46 = Unused
47 = Argus Jewel
48 = Unused
49 = Argus Talisman
50 = Unused
51 = Caduceus Reactor
52 = Chitinous Plating
53 = Anabolic Synthesis
54 = Charon Boosters
55-60 = Unused

Appendix D: Technology List
First 24(0-23) are the standard Starcraft tech set. Only Brood Wars uses all 44

0 = Stim Packs
1 = Lockdown
2 = EMP Shockwave
3 = Spider Mines
4 = Scanner Sweep
5 = Tank Seige Mode
6 = Defensive Matrix
7 = Irradiate
8 = Yamato Gun
9 = Cloaking Field
10 = Personnel Cloaking
11 = Burrowing
12 = Infestation
13 = Spawn Broodling
14 = Dark Swarm
15 = Plague
16 = Consume
17 = Ensnare
18 = Parasite
19 = Psionic Storm
20 = Hallucination
21 = Recall
22 = Stasis Field
23 = Archon Warp
24 = Restoration
25 = Disruption Web
26 = Unused
27 = Mind Control
28 = Dark Archon Meld
29 = Feedback
30 = Optical Flare
31 = Maelstrom
32 = Lurker Aspect
33 = Unused
34 = Healing
35-43 = Unused

Appendix E: Map Tiles
Each map tile consists of 1 int. That int's bits are composed
as follows:

FFEE EEED DDDC BAAA

AAA section - The info in this section will always be the same. It is the variant of the map tile. However, not all tiles for all tilesets have all variants. If an invalid variant is used, it will appear as a Black Plaque Tile (solid black square) in the game, and in the editor.

B section - This bit indicates (when applicable) that the tile has a decoration on it

C section - Odd or even block # (this is nessesary because of Starcraft's isometric tile system)

D section - For solid tiles, this is the tile identity. For border tiles, this is the border's configuration. I'm still working on this section

E section - For solid tiles, this is unused, and MUST be set to 0s. For border tiles, this is the border identity. I'm still working on this section

F section - These 2 bits are unused, and MUST be set to 0s or StarEdit will crash

This section is NOT finished yet!

Sub-Appexdix E-A: Solid Tile Values
  Badlands Space Platform Installation Ashworld Jungle World Desert World Arctic World Twilight World
1 Dirt Space Substructure Dirt Dirt Dirt Snow Dirt
2 High Dirt Platform Substructure Plating Lava High Dirt High Dirt High Snow High Dirt
3 Water Plating Floor High Dirt Water Tar Ice Water
4 Grass High Platform Roof High Lava Jungle Sand Dunes Dirt Crushed Rock
5 High Grass High Plating Plating Shale Rocky Ground Rocky Ground Rocky Snow Crevices
6 Rocky Ground Solar Array Bottomless Pit High Shale Raised Jungle Sunken Pit Water Sunken Ground
7 Dirt?? Low Platform Substructure Panels Magma Ruins Crags Grass Flagstones
8 Asphalt Dark Platform - Broken Rock Temple Compound Outpost Basilica
9 Structure Rusty Pit - - High Jungle High Sand Dunes High Dirt High Crushed Rocks
A Mud Elevated Catwalk - - High Ruins High Crags High Grass High Flagstones
B - - - - High Raised Jungle High Sunken Pit High Water High Sunken Ground
C - - - - High Temple High Compound High Outpost High Basilica
D - - - - Mud Dried Mud Moguls Mud
E - - - - - - - -
F - - - - - - - -
Appendix F: To Do List
While I think this file is nearly complete, and quite comprehensive, there are a number of things that I don't yet know about the CHK file format. I will try to list all of them here, by priority. I'm going to continue working on figuring out these things. If you're positive that you can figure out what any of them are, drop me a line, and I'll give you credit for the info.

- Couple things in the THG2 section
- A couple unknowns in the UNIT section
- Values for borders in the TILE section
- Values for the MTXM section
- Values for the ISOM section
- Take time to find out exactly which sections are required. Then again, who cares??

CREDITS:

Primary Author(everything not otherwise credited): Justin Olbrantz (Quantam)
Unit Types List: Camelot Systems
Unit Weapons List: Justin Olbrantz (Quantam), Camelot Systems
Upgrade Types List: Camelot Systems
Technology List: Camelot Systems
Map Tiles: Justin Olbrantz (Quantam), Camelot Systems
My Inspiration for This Ludicrous Project: Daniel Lemberg, Simon Pelsser, Lasse Jensen (all these people wrote the PUD File Format transcription)