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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
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?
* add iterators to List<> template and make use of them
* allow for return-to-launcher instead of a normal "quit" ?
GUI
===
* implement "tabs" for multi-pane prefs dialog
-> could also be used by the Scumm help dialog in scumm/help.cpp
* LAUNCHER: fix global options dialog to be properly persistent
* LAUNCHER: add more options to global options dialog
* LAUNCHER: add more options to game target options dialog
* global & game target options dialogs probably could share some "panes"
-> write code allowing this
-> also, 'in game' option dialogs (for volume/scaler/etc. settings)
could potentially reuse these, too
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). This is probably mostly
done. I only find a few such calls in resMan::CacheNewCluster(), and that
one needs to be rewritten anyway.
* Enforce ScummVM code formatting guidelines.
* Encapsulate the code into sensible objects.
* Enable the CD swapping code.
* Support cutscenes in some kind of open video format.
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, ...
* Fix the "auto dirty rect" computing code - in particular, use a proper checksum
algorithm, this should solve many of the problems with some luck
* OpenGL code: either fix it (see open bug tracker items and various hacks in the code),
or remove it. Does anybody really need this???
|