mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 22:58:09 +00:00
c40474322f
svn-id: r12716
240 lines
12 KiB
Plaintext
240 lines
12 KiB
Plaintext
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
|
|
* Fix the Map<> template, make it more robust; maybe use a red-black tree?
|
|
* Allow for return-to-launcher instead of a normal "quit" ?
|
|
* Make some generic "EventLoop" API/class which all backends and the GUI
|
|
use. Initially this would just call the backend poll_event() etc. methods.
|
|
But eventually the EventLoop object(s) could be made by the backend.
|
|
This may allow for more efficient CPU usage etc.
|
|
The current event handling model essentially is polling: the engines run
|
|
some kind of main loop, which, besides many other things, also polls and
|
|
dispatches events. The idea is to turn this around: the event loop
|
|
frequently gives the engine time to do these "other things".
|
|
* Remove "detectname" from GameSettings struct. On the long run, "midi" and/or
|
|
"features" might be removed, too.
|
|
* Enhance the Makefile-based build system to support VPATH and stuff, so that
|
|
one can compile scummvm in a directory tree separate from the source tree.
|
|
That would make it possible to build ScummVM with different build options,
|
|
e.g. have one debug build and one optimized build.
|
|
* Add a FilesystemManager or FileManager or so which should unify and/or
|
|
replace the current File/FilesystemNode classes (and maybe SaveFileManager).
|
|
The goal is to make these things as portable as possible while keeping it
|
|
easy to use for the coder. Some new functionality we need:
|
|
- check for existence of file/directory
|
|
- check whether given directory is readable/writeable
|
|
- convert FSNode into a string representation (for prefs file)
|
|
- convert said string representation back to FSNode
|
|
Of course that can be added w/o a FileManager class, too - but it might be
|
|
nice to have all of these integrated.
|
|
* Get rid of the hardcoded (sub)directory list in the File class. At the very
|
|
least, that list should be set by the engine (since not all engines need all
|
|
of the subdirs). Better would be to introduce a somewhat higher level API,
|
|
a replacement for File::open() which (optionally) takes a list of subdirs.
|
|
E.g. for Scumm, only certain files are to be expected in the VIDEO subdir).
|
|
* Add test(s) for backend usability in the configure script.
|
|
* Use RandomSource for all random numbers. Right now there are a few places
|
|
where we don't:
|
|
- INSANE uses rand() in numerous places
|
|
- sound/fmopl.cpp uses rand() in one function
|
|
- backends/midi/adlib.cpp has its own random_nr() function.
|
|
Any others?
|
|
|
|
Documentation
|
|
=============
|
|
* Update/enhance man page
|
|
* Would be nice to have a HTML version of the README on the web page (and I
|
|
don't just mean a big <pre> section; rather I mean "real" HTML with links
|
|
and lists and tables etc.)
|
|
* Ideally, maybe we can convert the README to some meta format, and then from
|
|
that generate the text README, as well as a HTML one (and maybe also PDF?)
|
|
Some candidates:
|
|
- DocBook
|
|
- texinfo
|
|
- nroff/troff + PolyglotMan (http://polyglotman.sourceforge.net/)
|
|
- tbook (http://tbookdtd.sourceforge.net/)
|
|
- xml2doc (http://xml2doc.sourceforge.net/)
|
|
- ...
|
|
* Some parts of the README probably could stand a workover. Right now the
|
|
README is trying to be brief (it's "just" a README after all), but it really
|
|
is the closest thing we have to a proper ScummVM manual. So either we just
|
|
decide to turn it into a full blown manual, or maybe make a even shorter
|
|
README, and a MANUAL with full details, examples, screen shots etc.
|
|
* Restructure the contents of our README (our manual...) a bit. A rough and
|
|
incomplete draft of how that might look:
|
|
+ Introduction
|
|
- What is ScummVM
|
|
- History
|
|
- Contacting the developers
|
|
- Reporting bugs
|
|
+ Supported Platforms
|
|
+ Supported Games
|
|
- Copy Protection
|
|
- Simon
|
|
- BS notes
|
|
- Using mac data files
|
|
+ Getting started
|
|
- How to get ScummVM (binary, source)
|
|
- Compiling (with more detail than now)
|
|
- First steps (basic setup, getting a first game to run)
|
|
+ Running ScummVM
|
|
- Command line options
|
|
- Hot Keys
|
|
- Savegames
|
|
+ Configuration
|
|
- Using the launcher
|
|
- All config file switches in detail
|
|
- Graphics Filters
|
|
- Music and Sound (mostly like now; maybe under the 'Configuration' section)
|
|
+ Glossary? (explaining abbreviations etc.)
|
|
+ Credits
|
|
+ Index? (would be nice, for example 'fullscreen' would link to the hotkey,
|
|
the config file setting, and the command line option)
|
|
* Add more doxygen comments. However, quality is preferable over quantity
|
|
|
|
GUI
|
|
===
|
|
* LAUNCHER: add more options to global options dialog
|
|
* LAUNCHER: add more options to game target options dialog
|
|
* Remove hardcoded 320x200 assumptions, use game screen size
|
|
* Add ability to scale GUI (ie. to make the GUI less tiny in COMI)
|
|
|
|
Game Detector
|
|
=============
|
|
* Make use of MD5 sums for improved game detection
|
|
-> in particular, a detector should be allowed to return detected
|
|
values for language and platform
|
|
* Improve the detector for games with all datafiles in subdirs (i.e.
|
|
Broken Sword 1 & 2). This could work by letting the detector proc recurse
|
|
into sub directories...
|
|
|
|
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)
|
|
* Clean up the "premixer mess": instead of having a custome premixer hook, add
|
|
a "callback channel" or something like this. This removes special cases from
|
|
the code, and it also makes it possible to apply sound rate conversion to
|
|
premixers, which makes it easier to write and maintain a premixer proc.
|
|
|
|
Config
|
|
======
|
|
* Preserve comments in config file somehow
|
|
* Add a 'notification' system. E.g. the SoundMixer could request to be notified
|
|
whenever the value of the "volume" config option changes. In other words,
|
|
instead of a "pull" approach (where each subsystem has to check whether any
|
|
config option relevant to it has been changed) we use a "push" approach.
|
|
Of course the current approach is "push", too: whenever e.g. the volume
|
|
setting is changed, the code doing so has to updated the SoundMixer etc.
|
|
That's cumbersome, and error prone. Would be much nicer if updating the
|
|
volume config value automatically notifies the SoundMixer, iMuse etc.
|
|
* Change backends to directly access the config manager
|
|
|
|
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), text uses Shift_JIS encoding
|
|
* 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
|
|
* Add support for TFMX music format in Amiga version of Monkey Island 1
|
|
Check http://darkstar.tabu.uni-bonn.de/~neo/audio.html for music format
|
|
details
|
|
* Add support for sound effects format found in Sega CD version of Monkey
|
|
Island
|
|
* Rename scummvm.cpp to scumm.cpp for consistency. [Fingolfin is working on
|
|
this, please don't do anything about this before talking to him].
|
|
1) Try to get scummvm.cpp fixed for ViewCVS [in progress!]
|
|
2a) If 1) succeeded, file SF.net CVS file rename request
|
|
2b) If 2) failed, do brute force file rename (cp && cvs add && cvs rm)
|
|
3) Adjust Makefile and project files to use the new name
|
|
* Possible implement a new resource manager, which then also could be shared
|
|
by ScummEX. [Jamieson has some ideas about this and might work on it|
|
|
* Support all Mac games without needing rescumm. These games being: dott,
|
|
samnmax, dig & ft. See above point.
|
|
* COMI: Fix setActorChoreLimbFrame opcode (see bug #754419, "Wally's Fake
|
|
piratehook still on ground after pick up")
|
|
* V7-8 games: Implement smooth horizontal scrolling (instead of scrolling in
|
|
increments of 8 pixels). See bug #629417.
|
|
* Implement o6_actorOps case 218 as used in Humongous games
|
|
* Add method of setting initial debug channels from command-line
|
|
* COMI (maybe V7 games, too?): "Fix" CHARSET_1 behaviour when the room scrolls.
|
|
In particular, when text is drawn via CHARSET_1 and then scrolling takes
|
|
place, the text scrolls, too - but it really should stay fixed. There are
|
|
several ways to do this that I can think of. One would be to use an overlay
|
|
screen (i.e. use virtscreen 3, which isn't used at all currently) to draw
|
|
the text; then "compose" that screen over the main screen.
|
|
Or constantly (well, at least whenever the camera moves) redraw the text.
|
|
That would require buffering the text; maybe the blast text code could be
|
|
reused for this...
|
|
|
|
Broken Sword 2
|
|
==============
|
|
* Enforce ScummVM code formatting guidelines. (Mostly done?)
|
|
* Encapsulate the code into sensible objects. (Partly done.)
|
|
* Enable the CD swapping code. (Partly done.)
|
|
* Support cutscenes in some kind of open video format. (Partly done.)
|
|
* The cutscene lead-outs should start 60 frames before the end of a cutscene,
|
|
not after the cutscene has finished.
|
|
* Fix the credits so they look more like the original. (Did we ever get the
|
|
source code for that?)
|
|
* Compressed speech / music clusters. (Some work done, but not in CVS yet.)
|
|
|
|
SIMON
|
|
=====
|
|
* Add support for dictionary files in Amiga and Macintosh versons of
|
|
Simon the Sorcerer 2
|
|
* Add support for Protracker music format used in Amiga versions
|
|
* Add support for drawing main graphics correctly in Amiga versions
|
|
|
|
Descumm
|
|
=======
|
|
* 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.
|
|
|
|
Backends
|
|
========
|
|
* Several of the backend factory functions take config parameters. It should
|
|
be possible to get rid of those once the config system rewrite (see above)
|
|
has been done. In that case, the backends simply can query the config
|
|
manager for these parameters (or any others they might like :-).
|
|
* 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)
|
|
|
|
SDL backend
|
|
===========
|
|
* Fix the "auto dirty rect" computing code - in particular, use a proper
|
|
checksum algorithm, this should solve many of the problems with some luck
|
|
|
|
X11 backend
|
|
===========
|
|
* Verify that it still actually works
|
|
* Make it work with multiple bitdepths
|
|
* Add frills used by SDL backend like graphic filters usage and CD audio
|