Config format
It's best to edit the config file from the options screen, instead of editing it manually. The options screen shows all the possible values for each of the options, and the input screen lets you map inputs interactively. Nonetheless, the configuration format is a very simple plain text format, with one option per line. Here's a sample configuration:
colors classic
garbage_piling on
hard_drop off
input_delay off
input_handler vanilla
lines_per_level vanilla
music random
pause show board
rng classic
save_highscores off
sfx ntsc
speed 1/1
input 1 left joystick0 off
input 1 right joystick0 on
input 1 down joystick1 on
input 1 up joystick1 off
input 1 flip_ccw joypad 1
input 1 flip_cw joypad 0
input 1 start joypad 3
The non-input lines consist of an option name, one space, and the option value, which may contain spaces. Any option that isn't included in the configuration file assumes its default value, and any option in the configuration file that isn't recognized is ignored, and a warning is printed to stderr. Also note that everytime you exit the options screen or the input screen, even if you don't change anything, the config file is written, so if any options in your config file are missing beforehand, they will be automatically added. This also removes unrecognized options.
The input lines consist of the word "input", the player the input is for (1 or 2), the virtual input to map, and zero to three pairs of device (button, joypad, joystick0, joystick1, key) and physical button. The physical button is an integer in all cases, except for joystick, where it is a boolean ("on" or "off"), which is on if the axis should be at its maximum value, or off if it should be at its minimum value.