Difference between revisions of "TODO"

Jump to navigation Jump to search
1,637 bytes removed ,  15:15, 25 October 2018
m
Text replacement - "</source>" to "</syntaxhighlight>"
(Add Tony and Hopkins)
m (Text replacement - "</source>" to "</syntaxhighlight>")
(17 intermediate revisions by 7 users not shown)
Line 23: Line 23:
* Add port specific user documentation (dreamcast/palm especially). That would include things like:
* Add port specific user documentation (dreamcast/palm especially). That would include things like:
** How to use ScummVM on system XYZ
** How to use ScummVM on system XYZ
** Which Palm / WinCE devices will run ScummVM, which definitely will not run it (or with which limitations)?
* Update/enhance man page
* Update/enhance man page
* Write a high level overview of how ScummVM and its engines work?
* Write a high level overview of how ScummVM and its engines work?
Line 39: Line 38:


== Web sites ==
== Web sites ==
=== General ===
* Move all sites to the new host
* Update outdated software
* Use HTTPS everywhere
* Make a consistent and reusable visual look across all sub-sites


=== Primary website ===
=== Primary website ===
* Add big (green?) shiny buttons in the middle of the page for (1) Donations and (2) Downloads ?
* Add big (green?) shiny buttons in the middle of the page for (1) Donations and (2) Downloads ?
* Show "Release Date" on download page
* Show "Release Date" on download page
* Use Javascript to improve the downloads page, by only showing the most important ports/downloads by default, and then uncovering the rest upon a click by the user (with gracious fallback if Javascript is disabled). A first draft of something like this can be seen on http://fredrik_w.users.sourceforge.net/downloads/
* Change all screenshot filenames to match our rules as described [[Screenshots|here]]. E.g. rename <code>data/screenshots/agos/simon/scummvm_2_4_0.jpg</code> to <code>data/screenshots/agos/simon/simon-0.jpg</code> etc.; also some stuff should maybe be moved to other directories.
* Change all screenshot filenames to match our rules as described [[Screenshots|here]]. E.g. rename <code>data/screenshots/agos/simon/scummvm_2_4_0.jpg</code> to <code>data/screenshots/agos/simon/simon-0.jpg</code> etc.; also some stuff should maybe be moved to other directories.
* Introduce build tools to handle website updates
* Update the template engine


=== [[Buildbot]] ===
=== [[Buildbot]] ===
Line 54: Line 60:
* Install the new required dependencies (libpng and libtheora for [[Sword25]]) into the cross compiler environments of all ports that have a chance of supporting [[Sword25]].
* Install the new required dependencies (libpng and libtheora for [[Sword25]]) into the cross compiler environments of all ports that have a chance of supporting [[Sword25]].
* Install the new required dependencies (libpng, libfreetype, boost and wx-widgets) into the cross compiler environments of all desktop ports to support building of tools.
* Install the new required dependencies (libpng, libfreetype, boost and wx-widgets) into the cross compiler environments of all desktop ports to support building of tools.
* Fix the console page


=== [[Doxygen]] ===
=== [[Doxygen]] ===
* <s>Create a visual theme which matches that of our forum and website</s>
* Update the visual theme to better match the site


=== [[Forums]] ===
=== [[Forums]] ===
* Upgrade to phpBB 3. This receives security updated, and would provide many new handy features for users and admins alike. The main issue here is that somebody would have to rewrite our custom theme for that. Maybe we can hire somebody to do this?
* Upgrade to phpBB 3
* Update the theme to phpBB3


=== [[Planet]] ===
=== [[Planet]] ===
Line 65: Line 73:


=== [[Wiki]] ===
=== [[Wiki]] ===
* <s>Create a visual theme which matches that of our forum and website</s>
* Update the theme to match the updated website
* Update to the latest Wiki version
* Add a ScummVM style guide
* Add content to [[Special:Wantedpages|Wanted Pages]]
* Add content to [[Special:Wantedpages|Wanted Pages]]
* Add some content to [[Help:Editing]], which is shown when editing a page
* Add some content to [[Help:Editing]], which is shown when editing a page
Line 77: Line 87:
     ./scummvm --add new_target --path=/foo monkey2
     ./scummvm --add new_target --path=/foo monkey2
     ./scummvm --remove new_target
     ./scummvm --remove new_target
* Maybe allow launching games even if no target is specified? I.e. the user only has to specify a path (or run ScummVM from the right directory), and ScummVM auto-detects the game in that location
    ./scummvm --auto-detect
* The following things should be put into namespaces:
* The following things should be put into namespaces:
** MIDI related classes either to Audio, or a new "MIDI" namespace
** MIDI related classes either to Audio, or a new "MIDI" namespace
** backend specific stuff into ??? (maybe new namespace "Backends" ?)  not sure about this one.
** backend specific stuff into ??? (maybe new namespace "Backends" ?)  not sure about this one.
* Get rid of getenv in as many places as possible. Ideally, we'd only use it to query HOME on Unix systems.
* Get rid of getenv in as many places as possible. Ideally, we'd only use it to query HOME on Unix systems.
==== Iterator handling ====
* Implement proper reverse_iterators for Common::List. Our current implementation is the same as forward iterators, just that rbegin will return the last element instead of the first and there is no rend. Check [http://www.sgi.com/tech/stl/ReverseIterator.html SGI Documentation] for proper description of revese_iterator in the STL.


=== Events ===
=== Events ===
Line 96: Line 100:
is valid for which event type. Implementation wise, we might want to use
is valid for which event type. Implementation wise, we might want to use
the classic union-of-structs trick. It goes roughly like this:
the classic union-of-structs trick. It goes roughly like this:
<syntax type="C++">
<syntaxhighlight lang="cpp">
struct BasicEvent {
struct BasicEvent {
     EventType type;
     EventType type;
Line 117: Line 121:
     ...
     ...
};
};
</syntax>
</syntaxhighlight>


However, this approach is contrary to classic OO paradigms. Indeed, its
However, this approach is contrary to classic OO paradigms. Indeed, its
Line 128: Line 132:
casting in code using events. The passing around of pointers could be
casting in code using events. The passing around of pointers could be
mitigated by using
mitigated by using
<syntax type="C++">
<syntaxhighlight lang="cpp">
typedef Common::SharedPtr<BasicEvent> Event
typedef Common::SharedPtr<BasicEvent> Event
</syntax>
</syntaxhighlight>
or something like that. Yet this would mean increased overhead in all
or something like that. Yet this would mean increased overhead in all
our code, yet the gain is unclear. In conclusion, we probably are best
our code, yet the gain is unclear. In conclusion, we probably are best
off by staying with the existing monolithic struct Event, we should just
off by staying with the existing monolithic struct Event, we should just
enhance its documentation.
enhance its documentation.
==== Event recorder ====
Currently there is an implementation based on {{PatchTrack|num=1214168}} but it needs more work
* Try to avoid warpMouse() calls at playback, so the system will be useable
* Perhaps we need to indicate recording mode. May be draw triangle/circle in some corner. Use OSD overlay for that
* Still it is possible that time will drift away even with current implementation. Do something about it, at least try to detect
* Remove temporary file
* Perhaps autogenerate record file name based on target name
* Perhaps combine 2 files which get created currently into one
* We should store unique game ID in the record files. I.e. ideally it should be engine name and some game MD5 or anything else which could be re-generated on game start. Then when this method is called in playback mode, recorder matches this against values stored in the record and refuses to play if they do not match.
  registerGame("scumm", "60ba818dc3bede86d40357e3913f8505");
* Perhaps add special flag when game started from a save, i.e. not from the very beginning but with -x command line switch
** Perhaps embed the save into the recording then
* getMillis() currently is hacked into SDL. It has to be moved one level up
* delayMillis() perhaps has to be wrapped too, so time drift could be avoided


=== Build System ===
=== Build System ===
Line 228: Line 213:
* Make it possible to reach the  "key remapper" and "virtual keyboard" from the GMM, if available?
* Make it possible to reach the  "key remapper" and "virtual keyboard" from the GMM, if available?
* Sugar on the cake: In addition to the ScummVM logo and version, how about showing the engine name and game title at the top of the GMM?
* Sugar on the cake: In addition to the ScummVM logo and version, how about showing the engine name and game title at the top of the GMM?
=== Error handling ===
Sometimes, bugs are reported that are not easily reproducible, e.g. [https://sourceforge.net/p/scummvm/bugs/6751/ Bug #6751]. In such cases, it would be useful to have the error handler in ScummVM generate (and, optionally, automatically send) minidumps that can be used by us to successfully examine crashed ScummVM processes. Integration of something like [https://chromium.googlesource.com/breakpad/breakpad/ Google Breakpad] is one reasonable option. While it is not likely to be able to get such crash handling into all ports, just supporting the most popular platforms would be enough to make this feature very useful.


== Engines / frontends ==
== Engines / frontends ==
Line 289: Line 278:
=== [[Sword2|Broken Sword 2]] ===
=== [[Sword2|Broken Sword 2]] ===
* Fix the credits so they look more like the original. (Did we ever get the source code for that?)
* Fix the credits so they look more like the original. (Did we ever get the source code for that?)
* Maybe work around script bug which causes the mop to disappear briefly when trying to pick it up from the top of the boat at the London docks. (The event to hide the mop is sent too early.) {{BugTrack|num=1214168}}.
* Maybe work around script bug which causes the mop to disappear briefly when trying to pick it up from the top of the boat at the London docks. (The event to hide the mop is sent too early.) {{Tracker|id=2058}}.
* Maybe (but probably not) work around a graphics glitch where George can be drawn partially in front of a metal beam he's walking behind. (He's obscured properly by the beam sprite, but part of the beam is only background.) {{BugTrack|num=2828179}}.
* Maybe (but probably not) work around a graphics glitch where George can be drawn partially in front of a metal beam he's walking behind. (He's obscured properly by the beam sprite, but part of the beam is only background.) {{Tracker|id=4483}}.
* Unify some of the code with Broken Sword 1 (e.g. in router.cpp).
* Unify some of the code with Broken Sword 1 (e.g. in router.cpp).


Line 313: Line 302:
=== [[Tucker]] ===
=== [[Tucker]] ===
* see [[Tucker/TODO|Tucker TODO]] list
* see [[Tucker/TODO|Tucker TODO]] list
=== [[Wintermute]] ===
* see [[Wintermute/TODO|Wintermute TODO]] list


== Backends and ports ==
== Backends and ports ==
Line 322: Line 314:
=== SDL backend ===
=== SDL backend ===
* Right now, the WinCE and the Symbian backend subclasses the regular SDL backend. They both overload a lot of methods (mostly the graphics stuff). Since graphics.cpp uses the scalers (e.g. hq3x), these derived backends carry that baggage around, too, even though they don't need that code. Idea: split the SDL backend into two classes, one base class which only has the code which is used by all subclasses; and a "desktop" subclass, which implements the rest. Then WinCE/Symbian would only subclass the "base" SDL class.
* Right now, the WinCE and the Symbian backend subclasses the regular SDL backend. They both overload a lot of methods (mostly the graphics stuff). Since graphics.cpp uses the scalers (e.g. hq3x), these derived backends carry that baggage around, too, even though they don't need that code. Idea: split the SDL backend into two classes, one base class which only has the code which is used by all subclasses; and a "desktop" subclass, which implements the rest. Then WinCE/Symbian would only subclass the "base" SDL class.
=== WinCE backend ===
* Improve the code in <code>backends/platform/wince/CEScaler.cpp</code>, it could be a lot faster with some simple changes.


=== Windows ===
=== Windows ===
TrustedUser
2,147

edits

Navigation menu