Priority Levels: I > R > M (I, R required to be complete before full release)
Program: P=PC Wolf3D, M=Mac Wolf3D, B=Both
P R - create a better "read direction" for menu movement
P M - convert while (Keyboard[sc_Blah]) IN_CheckAck() to IN_WaitKeyDown(sc..
P I - finish changing the game movement to the new style
P R - update input menus/config
P M - cleanup/rewrite menu code
P R - update sound menus/config
P I - rewrite sound code: get rid of packed structs, clean up thread stuff
P I - fix issues (speed, hacks) with variable screen size
P M - BSP trees (or something similar), then OpenGL support
M R - port menu code (after fixed up) 
M R - add sound
M M - complete/fix opengl mode
M M - add music (would need to RE the sound lib)
B I - complete savegame, config formats
M I - add SDL
B R - decide if to keep SVGA/X11 targets
B M - configure scripts? (autoconf/automake/etc)
B M - port to dreamcast?
B M - add compression to savegames/config
B I - play through game (w/ sound and music) to make sure things work
B M - use stdint.h where appropiate
B M - finish serializing reads/writes, endian issues.
      - PC version should be OK for loading -- savegames not yet tested.
P M - fix raycast bug where at certain points you can see through corners
B I - merge other TODO lists into this list
B M - use something like config file or getenv to point at data directories
P I - finish handling/mapping for all keys in sys. specific code
B I - add mouse support
B M - add joystick/gamepad support
P I - fill in the new fizzlefade function
P I - add sound "emulation" to the necessary targets so WaitSoundDone works
P R - change boolean SD_PlaySound to void SD_PlaySound
P M - position pushwall sounds
P M - id_ca.c cache code: fix/readd/rewrite the "garbage collection" system
P M - rewrite id_ca.c: uniform memory handling system
P M - either move id_heads into wl_def or split header files apart
P R - rewrite fmopl.c to avoid licensing issues (or provide as a separate patch? may not be advisable since id owns copyright on wolf code)
P R - remove CA_LoadAllSounds now that the sound code does everything
B I - README, etc.
B M - Code Documentation
P M - rename visable to visible
B M - change the commandline handling (use something like getopt?)
P R - rewrite RLEWexpand to not use words
B M - openal support
B I - when window loses focus, it should clear the keys
B M - [X11] use the data in the visual/image for formatting colors

Complete:
P I - fix or remove fizzle fade
      - Removed [nice, but very hacky effect]
------------------------------------------------------------------------------
* what exactly is the point of all the DigiMode checks in wl_act2.c?
* add ylookup?
* remove farmapylookup?
* would be nice if Quit() used vsnprintf, etc
* actor walking through door is drawn in front of door: near end of E1M1 for
example (is this reproducible?)
* use static and const where appropriate
* clean up header files, especially wl_def.h, where some declarations aren't 
in the right place
* remove check for debugmode?
* check filehandling (ex, file missing, bad file type, and such)
PlayDemoFromFile specifically
* deathcam went by too fast, same with the spear of destiny ending animation
  - probably due to waiting for sounds to finish
* split wl_draw into two files (draw independent, draw dependent)
------------------------------------------------------------------------------
void ControlMovement(objtype *ob) (wl_agent.c)
void UpdateInput() / void PollControls() (wl_play.c)
------------------------------------------------------------------------------
Control Menu:
* TODO

Sound Menu:
* Digital Sound Effects:
- On [PCM]
- Off
* Sound Effects
- On [AdLib/OPL2]
- PC Speaker?
- Off
* Music:
- On [AdLib/OPL2]
- Off
------------------------------------------------------------------------------
Where to Look for/Save Files:

~/.wolf3d
cwd
/usr/games/share
$ENVIRONMENT_VARIABLE

Need to establish where to look, order to look, strict/lenient loading (load
all files from the determined game directory, or look in order for each
file), and where to put savegames and config files.
------------------------------------------------------------------------------
Save game header:
8 bytes: WOLF3D, 0, 0
4 bytes: SAV, 0
4 bytes: version (integer)
4 bytes: game type (WL1, WL6, SDM, SOD)
4 bytes: seconds past 1970 (time(NULL))
4 bytes: padding
4 bytes: checksum for the data (after text string)
32 bytes: text string

Version 0xFFFFFFFF Data: (Unofficial Save Game data)
<see wl_main.c>

Version 0x00000000 Data: (Official)
<undetermined>

Version 0x00000001 Data: (Official)
<undetermined but will be compressed>

---

Config header:
8 bytes: WOLF3D, 0, 0
4 bytes: CFG, 0
4 bytes: version (integer)
4 bytes: game type (WL1, WL6, SDM, SOD)
4 bytes: seconds past 1970 (time(NULL))
4 bytes: padding
4 bytes: checksum for the data

Version 0xFFFFFFFF Data: (Unofficial Config data)
<see wl_main.c>

Version 0x00000000 Data: (Official)
<undetermined>

Version 0x00000001 Data: (Official)
<undetermined but will be compressed>

