Keyboard shortcuts:
	B: invert colors
	C: cursor
	F: frame
	Ctrl+F: find
	I: info
	Shift+I: invert air
	L: load
	P: print to console
	R: clear sim
	S: save
	T: track
	Ctrl+V: paste
	X: flip X
	Y: flip Y
	Z: zoom in
	Shift+Z: zoom out
	=: reset spark
	Shift+=: reset air
	Space: pause/unpause
	F4: reverse playback
	Ctrl+F4: set Margolus rule
	Alt+F4: quit
	Del: commit suicide
	Ctrl+Alt+Del: restart OS/logout
	Arrow key: pan if stickman/tron is not exists
	
If stickman exists, then:
	F5: restart stickman
	F6: set spawn point
	F7: fork stickman
	Left: moves stickman left.
	Down: makes stickman spew its element.
	Right: moves stickman right.
	Up: makes STKM jump.

Draw freeform line by dragging your mouse left/right button across the drawing area.
Shift+drag will create stroked rectangle of particles.
Ctrl+drag will result in filled rectangles.

Particle properties:
	type      | Primary type
	life      | Lifetime
	ctype     | Secondary type
	x, y      | Position
	vx, vy    | Velocity
	flags     | Flags
	tmp, tmp2 | Particle-specific temporary variable (integer)
	fArg      | Particle-specific temporary variable (floating point)
	deco      | Decoration color (current)
	cdeco     | Decoration color (after creating)

Set velocity modes:
	Set       | {x, y} := {x', y'}
	Scatter   | {x, y} := {?, ?}
	Add       | {x, y} := {x + x', y + y'}
	Multiply  | {x, y} := {x * x', y * y'}
	Invert    | {x, y} := {x' - x, y' - y}
	Direction | {x, y} := |{x, y}| * {x', y'} / |{x', y'}|
	Partial   | {x, y} := {?, ?}
	Reflect   | {x, y} := {2 * x', 2 * y'} * (x * x' + y * y') / (x' ^ 2 + y' ^ 2) - {x, y}
	Rotate    | {x, y} *= e ^ (i * theta)

Wall types (bmap.wtype):
	0: Allows particles
	1: Absorbs particles
	2: Blocks particles
	3: Blocks particles
	4: Allows specific-type particles
	5: Absorbs specific-type particles

bmap.ipv flags (bit 0 = LSB):
	bit 0: north
	bit 1: east
	bit 2: south
	bit 3: west
	bit 4: air_block
	bit 5: air_source
	bit 6: reserved
	bit 7: reserved
