General ======= * Add plugin system (both dynamic & static plugin support) [if you want to work on it, ask Fingolfin about this, he already has done some planning. Also make sure that your system support 'static' plugins, too] * Revise the way "quit" is handled. Maybe add a global variable "g_quit" which we set when the application should be quit (e.g. when an EVENT_QUIT is received). This is useful if multiple levels of event loops have to be ended * Add API to query backend for a list of available music engines Useful for Options dialog * Add API to query backend for a list of available scalers/screenmodes (that is, a list of user presentable names, and corresponding PROP_SET_GFX_MODE values). This is useful for the options dialog * Add PROP_GET_GFX_MODE (mirroring PROP_SET_GFX_MODE) * Consider replacing the PROP_TOGGLE_* properties with GET/SET ones -> this allows more control over these properties (like, it allows the GUI to display checkboxes for these in the options dialog) * gameDetector.cpp is quite messy. Also, it makes providing native GUI front ends for ScummVM unnecessarily cumbersome (think of systems which don't even have a command line, like classic MacOS). It would be nice to better separate the command line parsing from any GUI and also from the storage for the user settings (this ties into my proposed config system changes; ideally, we should be able to drop almost all of the member variables in the game detector, in favor of getting all these directly from the config system). * fix the Map<> template, make it more robust; maybe use a red-black tree? GUI === * LAUNCHER: fix global options dialog to be properly persistent * LAUNCHER: add more options to global options dialog * LAUNCHER: add more options to game options dialog Audio ===== * Get the high quality resample code to work [Fingolfin has started work on this] * Add a command line/config file option for the output sample rate (to allow for output sample rates other than 22050 Hz, e.g. 44100). Code should do sanity checking (e.g. restrict to rates between 8000 - 65535 Hz) Config ====== * The config system could stand an overhaul * Preserve comments in config file somehow * Add two virtual domains (for command line settings and user overrides); while we currently do something like this already, our implementation is a big ugly hack (no offense meant) and has some cumbersome problems. For example, currently to query a config value, one would have to search up to four domains manually (user override, command line, game specific, global application domain, in that order). Ideally all this should be hidden inside the config system. If you are interested in this, I can elaborate * Add a way to distinguish if a given key is present at all. That is, it would be nice if one could distinguish between an explicit "fullscreen=false" and the absence of any fullscreen config. SCUMM ===== * Fix C64 costume code * Make it possible to restart games properly * Add support for handling Kanji in FM Towns games (foreground is rendered on a second plane at 640x480) * Figure out how to extract resources from Apple II and Commodore 64 versions * Document and fix AKOS differences in Humongous Entertainment games * Support various newer Humongous Entertainment games * Implement file related opcode stubs needed for Humongous games * Add support for graphics codecs used in 3DO versions of Humongous games * Proper handling of .tlk files for Humongous games * Merge iMUSE and iMUSE Digital * Add support for FM Euphony sounds used in FM Towns games * Implement the needed INSANE bits for Full Throttle action sequences * iMUSE Digital enhancements/fixes for Full Throttle and COMI * Try to remove all use of MAD/Ogg code from scumm/sound.cpp: Ideally, only code in sound/ should access these libs. This will become important for loadable module support * Add support for Mac0 music format used in Monkey Island Mac See https://sourceforge.net/tracker/index.php?func=detail&aid=781797&group_id=37116&atid=418823 Broken Sword 2 ============== * Replace all uses of std C file I/O (fopen, fread, fwrite, fclose) by the File class (excluding that in SWORD2_DEBUG) SIMON ===== * Add support for Amiga decompressor and music