561
edits
(Move some TODO entries from my personal TODO list, so they can be polished and moved to our general TODO list, if people like them.) |
|||
Line 194: | Line 194: | ||
There are other issues... to be documented here, or resolved. | There are other issues... to be documented here, or resolved. | ||
== More TODOs == | |||
Initially these had been on [[User:LordHoto|LordHoto]]'s TODO list. But they are meant as general TODO entries. They need to be brought into a better shape before we can move them to our TODO list though. | |||
=== MIDI === | |||
* Get rid of the current MidiParser design. It would be nicer to have two different objects instead. One called MidiParser, this time really only taking care about *parsing* the data. And nother object called MidiPlayer which takes care of passing the MIDI data to the MidiDriver and handling all other state code related to playback. This way it is easier to write custom players, like required by SCUMM and SCI. | |||
* Create a proper XMIDI implementation. After implementing proper MidiParser+MidiPlayer APIs, it would be easy to implement a proper XMIDI player, which is able to play 4 sources simultaneously like XMIDI is supposed to. Currently the [[Kyra|Kyra Engine]] contains a rather hacky XMIDI implementation. This features proper channel locking, like the original Kyra XMIDI implementation did. This could be used as a base for writing a proper common XMIDI player. | |||
=== Backends === | |||
* Get rid of ModularBackend by modifying the whole OSystem API to use managers for the various functionalities offered. It should be taken care here not too have too small managers to avoid any bloat. | |||
* Fix the OpenGL backend. | |||
** Fix the resize handling. It would probably be best to limit the minimum overlay resolution to the minimum of the current game resolution and 320x200 and scale the overlay if the user resizes the window smaller than that. Furthermore the code should never switch to a different window size the user's window manager requested. | |||
** Do not expose all implementation detail of the OpenGL backend base class to subclasses. Instead proper hooks/functions should be used to set up the state of the generic functionality. | |||
** Move responsibilities between the SDL OpenGL backend and the OpenGL backend class, so no generic functionality is handled in the SDL subclass. It should be taken care here, that only functionality which can also be used by small devices is in the OpenGL backend class here. If desktop/console ports require extra features one could consider adding another base class. | |||
=== Plugins === | |||
* Add proper API/ScummVM version number handling to the plugin code. This should make it finally possible to create third party engines for ScummVM and use them with stable releases. On the contrary this will probably require a more stable common API in ScummVM to be really usable. | |||
* Change the way codecs like MP3, OGG/Vorbis etc. are supported to ease plugin support. Currently in case a plugin was build with MP3 support and it is tried to run it with a ScummVM main binary without MP3 support it will result in unresolved symbols. Instead we should consider to have dummy make*Stream functions in ScummVM's main binary even when no support for the codec is built in, which just returns NULL to indicate an error. | |||
* Allow out of source builds of plugins in our configure/make based build system. It should make it easier to build third party engines. | |||
--[[User:LordHoto|LordHoto]] 01:03, 4 July 2011 (UTC) |
edits