Administrators, trusted-editors
1,422
edits
Please create an account or Login! Have fun!
No edit summary |
Indyindeed (talk | contribs) m (Minor formatting changes to keep things concise. No new info added) |
||
Line 1: | Line 1: | ||
A '''C2M '''file (having the extension .c2m) is the file format which [[Chip's Challenge 2]] individual levels are | A '''C2M '''file (having the extension .c2m) is the file format which [[Chip's Challenge 2]] individual levels are stored in. | ||
The file is a binary file consisting of several sections one after the other, terminated by the END section. Each section begins with a section header, which is followed by the section's data. | The file is a binary file consisting of several sections one after the other, terminated by the END section. Each section begins with a section header, which is followed by the section's data. | ||
Line 30: | Line 30: | ||
|LOCK | |LOCK | ||
|Null-terminated string | |Null-terminated string | ||
|Usually "Custom version for Chuck Sommerville", optional. Seems to be ignored | |Usually "Custom version for Chuck Sommerville", optional. Seems to be ignored | ||
|- | |- | ||
|TITL | |TITL | ||
Line 46: | Line 46: | ||
|CLUE | |CLUE | ||
|Null-terminated string | |Null-terminated string | ||
|Level clue (Only one allowed, but see <ref name=":0">The NOTE section can contain multiple clues separated by "[CLUE]" line. The clues are assigned to the clue tiles in order | |Level clue (Only one allowed, but see below<ref name=":0">The NOTE section can contain multiple clues separated by a "[CLUE]" line. The clues are assigned to the clue tiles in reading order.</ref>) | ||
|- | |- | ||
|NOTE | |NOTE | ||
Line 62: | Line 62: | ||
|KEY | |KEY | ||
|16 bytes | |16 bytes | ||
|Unknown, seems not required | |Unknown, seems not required <!--could be a MD5 hash of something--> | ||
|- | |- | ||
|REPL / PRPL | |REPL / PRPL | ||
|See REPL section table below | |See REPL section table below | ||
|Solution replay, optional. A REPL section is not packed | |Solution replay, optional. A REPL section is not packed; a PRPL section is. | ||
|- | |- | ||
|RDNY | |RDNY | ||
|No content (length is 0) | |No content ''(length is 0)'' | ||
|The presence of this section makes the level | |The presence of this section makes the level read-only so it can't be edited in the level editor. | ||
|- | |- | ||
|END | |END | ||
|No content (length is 0) | |No content ''(length is 0)'' | ||
|Signifies end of file | |Signifies end of file | ||
|} | |} | ||
Line 126: | Line 126: | ||
|} | |} | ||
==== Data | ==== Data block ==== | ||
When encountered during decompression, the data block's N bytes of data are added to the list.. | When encountered during decompression, the data block's N bytes of data are added to the list.. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 139: | Line 139: | ||
|} | |} | ||
==== Back- | ==== Back-reference block ==== | ||
When encountered during decompression, COUNT bytes are copied from position (CURRENT - OFFSET) in the list to position CURRENT in the list. (Where CURRENT is the current position in the list, while COUNT and OFFSET are defined below) | When encountered during decompression, COUNT bytes are copied from position (CURRENT - OFFSET) in the list to position CURRENT in the list. (Where CURRENT is the current position in the list, while COUNT and OFFSET are defined below) | ||
Line 178: | Line 178: | ||
|- | |- | ||
|0x1 | |0x1 | ||
|Floor | |[[Floor]] | ||
| | | | ||
|- | |- | ||
|0x2 | |0x2 | ||
|Wall | |[[Wall]] | ||
| | | | ||
|- | |- | ||
|0x3 | |0x3 | ||
|Ice | |[[Ice]] | ||
| | | | ||
|- | |- | ||
|0x4 | |0x4 | ||
|Ice | |[[Ice]] corner ''(SW)'' | ||
| | | | ||
|- | |- | ||
|0x5 | |0x5 | ||
|Ice | |[[Ice]] corner ''(NW)'' | ||
| | | | ||
|- | |- | ||
|0x6 | |0x6 | ||
|Ice | |[[Ice]] corner ''(NE)'' | ||
| | | | ||
|- | |- | ||
|0x7 | |0x7 | ||
|Ice | |[[Ice]] corner ''(SE)'' | ||
| | | | ||
|- | |- | ||
|0x8 | |0x8 | ||
|Water | |[[Water]] | ||
| | | | ||
|- | |- | ||
|0x9 | |0x9 | ||
|Fire | |[[Fire]] | ||
| | | | ||
|- | |- | ||
|0xa | |0xa | ||
|Force | |[[Force floor]] ''(N)'' | ||
| | | | ||
|- | |- | ||
|0xb | |0xb | ||
|Force | |[[Force floor]] ''(E)'' | ||
| | | | ||
|- | |- | ||
|0xc | |0xc | ||
|Force | |[[Force floor]] ''(S)'' | ||
| | | | ||
|- | |- | ||
|0xd | |0xd | ||
|Force | |[[Force floor]] ''(W)'' | ||
| | | | ||
|- | |- | ||
|0xe | |0xe | ||
|Green | |Green [[toggle wall]] | ||
| | | | ||
|- | |- | ||
|0xf | |0xf | ||
|Green Toggle | |Green [[Toggle wall|toggle floor]] | ||
| | | | ||
|- | |- | ||
|0x10 | |0x10 | ||
|Red | |[[Red teleport]] | ||
| | | | ||
|- | |- | ||
|0x11 | |0x11 | ||
|Blue | |[[Blue teleport]] | ||
| | | | ||
|- | |- | ||
|0x12 | |0x12 | ||
|Yellow | |[[Yellow teleport]] | ||
| | | | ||
|- | |- | ||
|0x13 | |0x13 | ||
|Green | |[[Green teleport]] | ||
| | | | ||
|- | |- | ||
|0x14 | |0x14 | ||
|Exit | |[[Exit]] | ||
| | | | ||
|- | |- | ||
|0x15 | |0x15 | ||
|Slime | |[[Slime]] | ||
| | | | ||
|- | |- | ||
|0x16 | |0x16 | ||
|Chip (the hero) | |[[Chip]] ''(the hero)'' | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x17 | |0x17 | ||
|Dirt | |[[Dirt block]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x18 | |0x18 | ||
|Walker | |[[Walker]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x19 | |0x19 | ||
|Ship | |[[Glider|Ship]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x1a | |0x1a | ||
|Ice | |[[Ice block]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x1b | |0x1b | ||
| | |[[Thin wall]] ''(E) (used in CC1 levels)'' | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x1c | |0x1c | ||
| | |[[Thin wall]] ''(S) (used in CC1 levels)'' | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x1d | |0x1d | ||
| | |[[Thin wall]] ''(SE) (used in CC1 levels)'' | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x1e | |0x1e | ||
|Gravel | |[[Gravel]] | ||
| | | | ||
|- | |- | ||
|0x1f | |0x1f | ||
| | |[[Green button]] | ||
| | | | ||
|- | |- | ||
|0x20 | |0x20 | ||
|Blue | |[[Blue button]] | ||
| | | | ||
|- | |- | ||
|0x21 | |0x21 | ||
|Blue | |[[Blue tank]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x22 | |0x22 | ||
|Red | |[[Red door]] | ||
| | | | ||
|- | |- | ||
|0x23 | |0x23 | ||
|Blue | |[[Blue door]] | ||
| | | | ||
|- | |- | ||
|0x24 | |0x24 | ||
|Yellow | |[[Yellow door]] | ||
| | | | ||
|- | |- | ||
|0x25 | |0x25 | ||
|Green | |[[Green door]] | ||
| | | | ||
|- | |- | ||
|0x26 | |0x26 | ||
|Red | |[[Red key]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x27 | |0x27 | ||
|Blue | |[[Blue key]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x28 | |0x28 | ||
|Yellow | |[[Yellow key]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x29 | |0x29 | ||
|Green | |[[Green key]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x2a | |0x2a | ||
|IC Chip | |[[Computer chip|IC Chip]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x2b | |0x2b | ||
|Extra IC Chip | |Extra [[Computer chip|IC Chip]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x2c | |0x2c | ||
| | |[[Socket|Chip socket]] | ||
| | | | ||
|- | |- | ||
|0x2d | |0x2d | ||
| | |[[Recessed wall|Pop-up wall]] | ||
| | | | ||
|- | |- | ||
|0x2e | |0x2e | ||
|Appearing | |[[Appearing wall]] | ||
| | | | ||
|- | |- | ||
|0x2f | |0x2f | ||
|Invisible | |[[Invisible wall]] | ||
| | | | ||
|- | |- | ||
|0x30 | |0x30 | ||
|Solid | |Solid [[blue wall]] | ||
| | | | ||
|- | |- | ||
|0x31 | |0x31 | ||
|False | |False [[blue wall]] | ||
| | | | ||
|- | |- | ||
|0x32 | |0x32 | ||
|Dirt | |[[Dirt]] | ||
| | | | ||
|- | |- | ||
|0x33 | |0x33 | ||
|Ant | |[[Bug|Ant]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x34 | |0x34 | ||
|Centipede | |[[Paramecium|Centipede]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x35 | |0x35 | ||
|Purple | |[[Pink ball|Purple ball]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x36 | |0x36 | ||
|Blob | |[[Blob]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x37 | |0x37 | ||
| | |[[Angry teeth]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x38 | |0x38 | ||
|Fire box | |[[Fireball|Fire box]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x39 | |0x39 | ||
| | |[[Red button]] | ||
| | | | ||
|- | |- | ||
|0x3a | |0x3a | ||
| | |[[Brown button]] | ||
| | | | ||
|- | |- | ||
|0x3b | |0x3b | ||
|Cleats | |[[Ice skates|Cleats]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x3c | |0x3c | ||
|Magno | |[[Suction boots|Magno shoes]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x3d | |0x3d | ||
|Fire | |[[Fire boots]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x3e | |0x3e | ||
|Flippers | |[[Flippers]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x3f | |0x3f | ||
| | |[[Key thief]] | ||
| | | | ||
|- | |- | ||
|0x40 | |0x40 | ||
| | |[[Bomb|Cherry bomb]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x41 | |0x41 | ||
|( | |Open [[trap]] ''(unused in main levels)'' | ||
| | | | ||
|- | |- | ||
|0x42 | |0x42 | ||
| | |[[trap]] | ||
| | | | ||
|- | |- | ||
|0x43 | |0x43 | ||
| | |[[Clone machine]] ''(used in CC1 levels)'' | ||
| | | | ||
|- | |- | ||
|0x44 | |0x44 | ||
|Clone | |[[Clone machine]] | ||
|Modifier required, see below | |||
|- | |- | ||
|0x45 | |0x45 | ||
|Clue | |[[Hint|Clue]] | ||
| | | | ||
|- | |- | ||
|0x46 | |0x46 | ||
|Force | |[[Force floor]] ''(random)'' | ||
| | | | ||
|- | |- | ||
|0x47 | |0x47 | ||
| | |[[Gray button]] | ||
| | | | ||
|- | |- | ||
|0x48 | |0x48 | ||
| | |[[Swivel door]] ''(SW)'' | ||
| | | | ||
|- | |- | ||
|0x49 | |0x49 | ||
| | |[[Swivel door]] ''(NW)'' | ||
| | | | ||
|- | |- | ||
|0x4a | |0x4a | ||
| | |[[Swivel door]] ''(NE)'' | ||
| | | | ||
|- | |- | ||
|0x4b | |0x4b | ||
| | |[[Swivel door]] ''(SE)'' | ||
| | | | ||
|- | |- | ||
|0x4c | |0x4c | ||
|Time | |[[Time bonus]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x4d | |0x4d | ||
| | |[[Stopwatch]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x4e | |0x4e | ||
| | |[[Transmogrifier]] | ||
| | | | ||
|- | |- | ||
|0x4f | |0x4f | ||
| | |[[Railroad track]] ''(Modifier required, see section below)'' | ||
| | | | ||
|- | |- | ||
|0x50 | |0x50 | ||
| | |[[Steel wall]] | ||
| | | | ||
|- | |- | ||
|0x51 | |0x51 | ||
|Time | |[[Time bomb]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x52 | |0x52 | ||
|Helmet | |[[Helmet]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x53 | |0x53 | ||
|(Unused) | |''(Unused)'' | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x54 | |0x54 | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x55 | |0x55 | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x56 | |0x56 | ||
|Melinda | |[[Melinda]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x57 | |0x57 | ||
|Blue | |[[Blue teeth|Timid teeth]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x58 | |0x58 | ||
|( | |Explosion animation ''(unused in main levels)'' | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x59 | |0x59 | ||
|Hiking | |[[Hiking boots]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x5a | |0x5a | ||
|Male | |[[Male-only sign]] | ||
| | | | ||
|- | |- | ||
|0x5b | |0x5b | ||
|Female | |[[Female-only sign]] | ||
| | | | ||
|- | |- | ||
|0x5c | |0x5c | ||
|Inverter | |Inverter gate ''(N)'' | ||
|Modifier allows other gates, see below | |||
|- | |- | ||
|0x5d | |0x5d | ||
|(Unused) | |''(Unused)'' | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x5e | |0x5e | ||
|Logic | |Logic switch ''(ON)'' | ||
| | | | ||
|- | |- | ||
|0x5f | |0x5f | ||
|Flame | |[[Flame jet]] ''(OFF)'' | ||
| | | | ||
|- | |- | ||
|0x60 | |0x60 | ||
|Flame | |[[Flame jet]] ''(ON)'' | ||
| | | | ||
|- | |- | ||
|0x61 | |0x61 | ||
| | |[[Orange button]] | ||
| | | | ||
|- | |- | ||
|0x62 | |0x62 | ||
|Lightning | |[[Lightning bolt]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x63 | |0x63 | ||
|Yellow | |[[Yellow tank]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x64 | |0x64 | ||
|Yellow | |[[Yellow tank button]] | ||
| | | | ||
|- | |- | ||
|0x65 | |0x65 | ||
|Mirror Chip | |[[Mirror Chip]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x66 | |0x66 | ||
|Mirror Melinda | |[[Mirror Melinda]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x67 | |0x67 | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x68 | |0x68 | ||
|Bowling | |[[Bowling ball]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x69 | |0x69 | ||
|Rover | |[[Rover]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x6a | |0x6a | ||
|Time | |[[Time penalty]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x6b | |0x6b | ||
|Custom | |Custom floor ''(green)'' | ||
|Modifier allows other styles, see below | |||
|- | |- | ||
|0x6c | |0x6c | ||
Line 610: | Line 610: | ||
|- | |- | ||
|0x6d | |0x6d | ||
| | |[[Thin wall]] / [[Canopy]] | ||
|Panel/Canopy bitmask, Tile Specification for tile underneath | |Panel/Canopy bitmask ''(see below)'', Tile Specification for tile underneath | ||
|- | |- | ||
|0x6e | |0x6e | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x6f | |0x6f | ||
|Railroad | |[[Railroad sign]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x70 | |0x70 | ||
|Custom | |Custom wall ''(green)'' | ||
|Modifier allows other styles, see below | |||
|- | |- | ||
|0x71 | |0x71 | ||
| | |Letter tile ''(space)'' | ||
|Modifier required, see below | |||
|- | |- | ||
|0x72 | |0x72 | ||
|Purple | |[[Pink wall|Purple toggle wall]] | ||
| | | | ||
|- | |- | ||
|0x73 | |0x73 | ||
|Purple | |[[Pink wall|Purple toggle floor]] | ||
| | | | ||
|- | |- | ||
|0x74 | |0x74 | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x75 | |0x75 | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x76 | |0x76 | ||
|8-bit Modifier (see Modifier section below) | |8-bit Modifier ''(see Modifier section below)'' | ||
|1 modifier byte, Tile Specification for affected tile | |1 modifier byte, Tile Specification for affected tile | ||
|- | |- | ||
|0x77 | |0x77 | ||
|16-bit Modifier (see Modifier section below) | |16-bit Modifier ''(see Modifier section below)'' | ||
|2 modifier bytes, Tile Specification for affected tile | |2 modifier bytes, Tile Specification for affected tile | ||
|- | |- | ||
|0x78 | |0x78 | ||
|32-bit Modifier (see Modifier section below) | |32-bit Modifier ''(see Modifier section below)'' | ||
|4 modifier bytes, Tile Specification for affected tile | |4 modifier bytes, Tile Specification for affected tile | ||
|- | |- | ||
|0x79 | |0x79 | ||
|(Unused) | |''(Unused)'' | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x7a | |0x7a | ||
|10 | |10 point [[Bonus flag|flag]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x7b | |0x7b | ||
|100 | |100 point [[Bonus flag|flag]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x7c | |0x7c | ||
|1000 | |1000 point [[Bonus flag|flag]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x7d | |0x7d | ||
| | |Solid [[green wall]] | ||
| | | | ||
|- | |- | ||
|0x7e | |0x7e | ||
| | |False [[green wall]] | ||
| | | | ||
|- | |- | ||
|0x7f | |0x7f | ||
| | |[[No sign|Not allowed marker]] | ||
|Modifies tools/keys. Tile Specification for tile underneath | |||
|- | |- | ||
|0x80 | |0x80 | ||
|2x | |2x points [[Bonus flag|flag]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x81 | |0x81 | ||
|Directional | |[[Directional block]] | ||
|Direction byte, Directional Arrows Bitmask, Tile Specification for tile underneath | |Direction byte, Directional Arrows Bitmask, Tile Specification for tile underneath | ||
|- | |- | ||
|0x82 | |0x82 | ||
|Floor | |[[Floor mimic]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x83 | |0x83 | ||
|Green | |[[Green bomb]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x84 | |0x84 | ||
|Green | |[[Green chip]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x85 | |0x85 | ||
|(Unused) | |''(Unused)'' | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x86 | |0x86 | ||
|(Unused) | |''(Unused)'' | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x87 | |0x87 | ||
| | |[[Black button]] | ||
| | | | ||
|- | |- | ||
|0x88 | |0x88 | ||
| | |[[Switch|ON/OFF switch]] ''(OFF)'' | ||
| | | | ||
|- | |- | ||
|0x89 | |0x89 | ||
| | |[[Switch|ON/OFF switch]] ''(ON)'' | ||
| | | | ||
|- | |- | ||
|0x8a | |0x8a | ||
| | |Tool [[thief]] | ||
| | | | ||
|- | |- | ||
|0x8b | |0x8b | ||
|Ghost | |[[Ghost]] | ||
|Direction byte, Tile Specification for tile underneath | |Direction byte, Tile Specification for tile underneath | ||
|- | |- | ||
|0x8c | |0x8c | ||
|Steel | |[[Steel foil]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x8d | |0x8d | ||
|Turtle | |[[Turtle]] | ||
| | | | ||
|- | |- | ||
|0x8e | |0x8e | ||
| | |[[Secret eye]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x8f | |0x8f | ||
| | |[[Thief bribe]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x90 | |0x90 | ||
|Speed | |[[Speed boots]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|- | |- | ||
|0x91 | |0x91 | ||
|(Unused) | |''(Unused)'' | ||
| | | | ||
|- | |- | ||
|0x92 | |0x92 | ||
|Hook | |[[Hook]] | ||
|Tile Specification for tile underneath | |Tile Specification for tile underneath | ||
|} | |} | ||
==== Direction | ==== Direction byte ==== | ||
The direction byte comes after enemy tiles and some others: | The direction byte comes after enemy tiles and some others: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 781: | Line 781: | ||
|} | |} | ||
==== | ==== Thin wall/Canopy bitmask ==== | ||
Any number of these bits can be combined: | Any number of these bits can be combined: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 803: | Line 803: | ||
|} | |} | ||
==== Directional | ==== Directional block arrows bitmask ==== | ||
Any number of these bits can be combined: | Any number of these bits can be combined: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 810: | Line 810: | ||
|- | |- | ||
|0x1 | |0x1 | ||
| | |North | ||
|- | |- | ||
|0x2 | |0x2 | ||
| | |East | ||
|- | |- | ||
|0x4 | |0x4 | ||
| | |South | ||
|- | |- | ||
|0x8 | |0x8 | ||
| | |West | ||
|} | |} | ||
==== Tile | ==== Tile modifiers ==== | ||
The modifier "tiles" (0x76, 0x77, 0x78) affect the tile specification that they carry in their additional data. The meaning of the modifier value depends on the type of tile they affect. | The modifier "tiles" (0x76, 0x77, 0x78) affect the tile specification that they carry in their additional data. The meaning of the modifier value depends on the type of tile they affect. | ||
==== Wire | ==== Wire modifier ==== | ||
This is an 8-bit modifier that affects | This is an 8-bit modifier that affects [[floor]]s, [[steel wall]]s, ON/OFF switches, [[transmogrifier]]s, and [[Blue teleport|blue]] and [[red teleport]]s<!--possibly more?-->. It adds [[wire]]s to the tile it affects. Any number of these bits can be combined: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
!Bitmask | !Bitmask | ||
Line 832: | Line 832: | ||
|- | |- | ||
|0x1 | |0x1 | ||
|Wire | |[[Wire]] ''(N)'' | ||
|- | |- | ||
|0x2 | |0x2 | ||
|Wire | |[[Wire]] ''(E)'' | ||
|- | |- | ||
|0x4 | |0x4 | ||
|Wire | |[[Wire]] ''(S)'' | ||
|- | |- | ||
|0x8 | |0x8 | ||
|Wire | |[[Wire]] ''(W)'' | ||
|- | |- | ||
|0x10 | |0x10 | ||
|Wire | |[[Wire tunnel]] ''(N)'' | ||
|- | |- | ||
|0x20 | |0x20 | ||
|Wire | |[[Wire tunnel]] ''(E)'' | ||
|- | |- | ||
|0x40 | |0x40 | ||
|Wire | |[[Wire tunnel]] ''(S)'' | ||
|- | |- | ||
|0x80 | |0x80 | ||
|Wire | |[[Wire tunnel]] ''(W)'' | ||
|} | |} | ||
==== | ==== Letter tile modifier ==== | ||
This is an 8-bit modifier that affects | This is an 8-bit modifier that affects [[letter tile]]s by adding a symbol (usually an ASCII symbol) to them: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
!Values | !Values | ||
Line 863: | Line 863: | ||
|- | |- | ||
|0x1c | |0x1c | ||
|Up | |Up arrow | ||
|- | |- | ||
|0x1d | |0x1d | ||
|Right | |Right arrow | ||
|- | |- | ||
|0x1e | |0x1e | ||
|Down | |Down arrow | ||
|- | |- | ||
|0x1f | |0x1f | ||
|Left | |Left arrow | ||
|- | |- | ||
|0x20 through 0x5f | |0x20 through 0x5f | ||
|Corresponding ASCII | |Corresponding ASCII character (' ' through '_') | ||
|} | |} | ||
==== Clone | ==== Clone machine arrow modifier ==== | ||
This is an 8-bit modifier that affects clone | This is an 8-bit modifier that affects [[clone machine]]s by specifying their direction. The values can be combined and will show up on the clone machine appropriately, but the game will only clone in one direction. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
!Value | !Value | ||
Line 885: | Line 885: | ||
|- | |- | ||
|0x1 | |0x1 | ||
|Arrow | |Arrow ''(N)'' | ||
|- | |- | ||
|0x2 | |0x2 | ||
|Arrow | |Arrow ''(E)'' | ||
|- | |- | ||
|0x4 | |0x4 | ||
|Arrow | |Arrow ''(S)'' | ||
|- | |- | ||
|0x8 | |0x8 | ||
|Arrow | |Arrow ''(W)'' | ||
|} | |} | ||
==== Custom | ==== Custom floor/wall modifier ==== | ||
This is an 8-bit modifier that affects custom walls or floors by replaces their style: | This is an 8-bit modifier that affects custom walls or floors by replaces their style: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
!Value | !Value | ||
!Meaning | !Meaning | ||
|- | |||
|0x0 | |||
|Green | |||
|- | |- | ||
|0x1 | |0x1 | ||
| | |Pink | ||
|- | |- | ||
|0x2 | |0x2 | ||
| | |Yellow | ||
|- | |- | ||
|0x3 | |0x3 | ||
| | |Blue | ||
|} | |} | ||
==== Logic | ==== Logic modifier ==== | ||
This is an 8-bit modifier that affects an inverter gate by replacing it with another gate. Modifiers outside of the ranges specified below will produce [[voodoo tile]]s. | This is an 8-bit modifier that affects an inverter gate by replacing it with another gate. Modifiers outside of the ranges specified below will produce [[voodoo tile]]s. | ||
Most logic gates have 4 assigned values instead of just 1; unless otherwise specified below, the face direction of the logic gate is determined by its index, stored in the order: North, East, South, West. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
!Values | !Values | ||
!Meaning | !Meaning | ||
|- | |- | ||
| | |0x0 through 0x3 | ||
|Inverter | |[[Inverter gate]] | ||
|- | |- | ||
|0x4 through 0x7 | |0x4 through 0x7 | ||
| | |[[AND gate]] | ||
|- | |- | ||
|0x8 through 0xb | |0x8 through 0xb | ||
| | |[[OR gate]] | ||
|- | |- | ||
|0xc through 0xf | |0xc through 0xf | ||
| | |[[XOR gate]] | ||
|- | |- | ||
|0x10 through 0x13 | |0x10 through 0x13 | ||
|Latch | |[[Latch gate]] ''(Clockwise arrow)'' | ||
|- | |- | ||
|0x14 through 0x17 | |0x14 through 0x17 | ||
| | |[[NAND gate]] | ||
|- | |- | ||
|0x1e through 0x27 | |0x1e through 0x27 | ||
|Counter | |[[Counter gate]] ''(0 through 9)'' | ||
|- | |- | ||
|0x40 through 0x43 | |0x40 through 0x43 | ||
|Latch | |[[Latch gate]] ''(Counterclockwise arrow)'' | ||
|} | |} | ||
==== Track | ==== Track modifier ==== | ||
This is an 8- or 16-bit modifier that affects the | This is an 8- or 16-bit modifier that affects the [[railroad track]] tile. The low-order byte specifies which tracks exist; any number of bits can be combined: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
!Bitmask | !Bitmask | ||
Line 951: | Line 956: | ||
|- | |- | ||
|0x1 | |0x1 | ||
| | |Turn ''(NE)'' | ||
|- | |- | ||
|0x2 | |0x2 | ||
| | |Turn ''(SE)'' | ||
|- | |- | ||
|0x4 | |0x4 | ||
| | |Turn ''(SW)'' | ||
|- | |- | ||
|0x8 | |0x8 | ||
| | |Turn ''(NW)'' | ||
|- | |- | ||
|0x10 | |0x10 | ||
| | |Horizontal | ||
|- | |- | ||
|0x20 | |0x20 | ||
| | |Vertical | ||
|- | |- | ||
|0x40 | |0x40 | ||
|Track | |Track switch | ||
|} | |} | ||
Line 977: | Line 982: | ||
!Meaning | !Meaning | ||
|- | |- | ||
|(Omitted) | |''(Omitted)'' | ||
| | |NE track is active | ||
|- | |- | ||
|0x100 | |0x100 | ||
| | |SE track is active | ||
|- | |- | ||
|0x200 | |0x200 | ||
| | |SW track is active | ||
|- | |- | ||
|0x300 | |0x300 | ||
| | |NW track is active | ||
|- | |- | ||
|0x400 | |0x400 | ||
Line 1,005: | Line 1,010: | ||
|- | |- | ||
|1 | |1 | ||
| | |Usually 0; function unknown | ||
|- | |- | ||
|1 | |1 | ||
Line 1,011: | Line 1,016: | ||
|- | |- | ||
|1 | |1 | ||
|Randomness seed (used by | |Randomness seed ''(used by [[blob]]s)'' | ||
|- | |- | ||
|Varies | |Varies | ||
|A sequence of input changes | |A sequence of input changes; optionally terminated by 0xff | ||
|} | |} | ||
==== Input | ==== Input change ==== | ||
Specifies a change in input: | Specifies a change in input: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,030: | Line 1,035: | ||
|} | |} | ||
==== Input | ==== Input bitmask ==== | ||
Specifies which keys are pressed, any number of bits can be combined: | Specifies which keys are pressed, any number of bits can be combined: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" |