aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 5b1240472da23fbeefbef53e69d93d0e55afaf36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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


Descumm
=======
* Merge descumm & descumm6
* Turn it into a library, to be used by a command line frontend (like now),
  ScummVM debugger, and ScummEX. Basically, the API could consist of a single
  function, which takes a pointer to a memory buffer, its length, the Scumm
  version and optionally a game id. Also, it would get a pointer to a print
  function (in the case of the CLI tool, print to stdout; for ScummVM, print
  to our GUI console; for ScummEX, append to some window/widget)
* Rewrite code to use 2 passes; first pass builds an intermediate graph, the
  second pass then tries to detect loops, break/continue statements etc.

SDL backend
===========
* Maybe change the shortcuts? One idea (add ctrl-alt in all cases):
	1-3: select scale factor
	2-4: normal, advmame, hq filters (all available as 2x and 3x)
	5-9,0: the other scalers
  Justification: We have so many scalers now, we are running out of keys
  for them - and this way, we need a few less. Of course, the question remains
  what happens if you press ctrl-alt-3 while 2xSai is scaler, what happens?
  So maybe (again add ctrl-alt):
    '+' / '-':
         increase/decrease scale factor, cycling over the possible range.
         So for a 2x-only scaler, it does nothing; for a scaler supporting
         all scales from 1x to 4x, it works as usual (and pressing '+' in
         4x mode goes to 1x)
    1-9: switch between the "base" scalers: normal (point) scaler, advmame,
         hq (high quality), 2xsai, super2xsai, supereagle, tv2x, dotmatrix, ...