### What is the difference between autocontrol, control and anim?

Autocontrol: where keypresses are generated. (guards, demo)
Control: where sequences are activated based on keystrokes and other things.
Anim: where sequences are interpreted.

### What is the difference between frame, image and resource?

frame: An index into the frame table.
	Also an unit of time = 1/12 seconds. (1/10 s when fighting.)
image: 0-based index within a chtab
resource: ID in DAT file, image + palette_resource_id + 1

### What is a chtab?

It's a collection of images, with a common palette.
The game uses these chtabs:
0: sword (in someone's hand) (PRINCE, 700)
1: flame, sword (on floor), potion (PRINCE, 150)
2: kid (KID, 400)
3: princess in intro (PV, 800)
4: Jaffar in intro (PV, 850), princess in cutscenes (PV, 900)
5: guard (GUARD/SKEL/FAT/SHADOW/VIZIER, 750)
6: environment (except wall) (VDUNGEON/VPALACE, 200)
7: environment wall (VDUNGEON/VPALACE, 360)
8: princess room (PV, 950)
9: princess bed (PV, 980)

### What tables are there?

seqtbl[]: contains the sequence codes
seqtbl_offsets[]: contains the offsets (addresses) of the various sequences
frame_table_kid[]: contains the data of the kid's frames
frame_tbl_guard[]: contains the data of the guards' frames
frame_tbl_cuts[]: contains the data of the cutscenes' frames (princess, Jaffar)
sword_tbl[]: contains the data of the sword's frames

### What's in the frame tables?

(used in load_frame())
For each frame:
image
	0-based index
sword
	bits 0..5: sword frame (0-based index into the sword table)
	bits 6..7: chtab (add 2: 00=2, 01=3, 10=4, 11=5)
dx
	delta x from char's position to image's position (+ = forward)
dy
	delta y from char's position to image's position (+ = down)
flags
	bits 0..4: x-position of weight (backward, that is right on the image)
	bit 5: "thin" this frame for collision detection (used in set_char_collision())
	bit 6: needs floor (used in check_on_floor() and check_press())
	bit 7: even/odd pixel (used in load_frame_to_obj())

### What's in the sequence table?

The sequence table is a list of frame indexes and commands.

sequence codes: (used in play_seq())
0x00..0xF0: show frame with this index
0xF1: end level
0xF2 n: play sound
0xF3 n: get item if n=1
0xF4: knock down (loose floors will shake in char's row)
0xF5: knock up (loose floors will shake in row above char's row)
0xF6: nothing
0xF7 l h: jump to hl if slow-fall is active
0xF8 x y: set falling speed (x: + = forward, y: + = down)
0xF9 n: set action
0xFA y: move y pixels (+ = down)
0xFB x: move x pixels (+ = forward)
0xFC: go down one row (does not change y coordinate)
0xFD: go up one row (does not change y coordinate)
0xFE: flip
0xFF l h: jump to hl

### What's in the sequence offset table?

sequence indexes:
See internals_sequence-index.csv

### How are images drawn at given coordinates?

Coordinates give the bottom left of the image.
For flipped images, it's the bottom right of the flipped image.

### How are x coordinates counted?

Char:
58=left
198=right
one tile is 14 units wide
|
|load_frame_to_obj()
V
Object:
0=left
280=right
one tile is 28 units wide
|
|calc_screen_x_coord()
V
Screen:
0=left
320=right
one tile is 32 units wide

### What is stored about characters?

(struct char_type)
frame
	Index of current frame.
	The used frame table depends on charid.
x
	x-position in the Char coordinate system.
y
	y-position
direction
	0x00 (>=0): right (image is flipped)
	0x56: none (for guards)
	0xFF (<0): left (image is not flipped)
curr_col
	Current column, 0..9 is in the current room.
curr_row
	Current row, 0..2 is in the current room.
action
	0: stand
	1: run, jump
	2: hang, climb
	3: in midair
	4: in freefall
	5: bumped
	6: hang straight
	7: turn
	99: char is hurt by sword
fall_x
	x-speed of falling (+ = forward)
fall_y
	y-speed of falling (+ = down)
room
	Current room.
repeat
	(used in safe_step())
	0: may step off edge
	1: won't step off edge
charid
	Who is this?
	Its value decides which frame table to use (in load_frame()), and various things about char's behaviour.
	0: kid
	1: shadow
	2: guard
	4: skeleton
	5: princess
	6: vizier (in intro)
	0x18: mouse
sword
	0: not holding sword
	2: holding sword
alive
	<0: is alive
	>=0: is dead
curr_seq
	Current position (address) in the sequence table.
