Difference between revisions of "User:LordHoto"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (→‎About: Update my About page.)
(→‎ToDo: Added some TODOs/ideas to my TODO list.)
Line 19: Line 19:
 
** Bug fixes
 
** Bug fixes
 
** Cleanup code base
 
** Cleanup code base
 +
* 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.
  
 
== Wish list ==
 
== Wish list ==

Revision as of 02:01, 25 June 2011

LordHoto
Name Johannes Schickel
Team Member since 12.10.2005
Working on Kyra Engine, GUI
Personal webpage/BLOG My blog!
Email lordhoto (at scummvm org)

About

I started to contribute patches on October 10th, 2004, back then just guesswork or reworked FreeKyra code for Kyrandia support. My first real patch was support for scaled GUI, which allowed the GUI to fit COMI resolution for example, on March 3rd, 2005. Following some GUI additions and fixes, like thumbnail support for SCUMM engine. After cyx started REing Kyrandia 1 I added sound support for his code on September 4th, 2005. Some days later I contributed a basic Maniac Mansion C64 costume renderer for the SCUMM engine. After that I started to work on Kyrandia 1 RE with the help of cyx and finally joined the team on October 12th, 2005 to work on Kyrandia 1 support. Later on, in January 2006, I started to work on theme support for the GUI (IRC logs show that my first screenshot was published on January 17th, 2006). In summer 2007 I started to work on Hand of Fate support. I lost motivation shortly after though and stopped most development till early 2008. I also mentored the script decompiler project by Andreas Scholta in GSoC 2007. In late Feburary/early March 2008 I started again to work on Hand of Fate again, after Florian Kagerer started to supply patches for Hand of Fate intro and credits support, he also contributed the dialog script code later. In late March 2008 Hand of Fate was finally completable with ScummVM. In early April 2008 I finished most of the Hand of Fate parts missing, namely the GUI. Meanwhile I also added some code to common/ and did some cleanup there. In early/mid April I started to work on Malcolm's Revenge, which was finished by 11th of May. Meanwhile I cleaned up the Kyrandia code base a bit, most notable about it is merging Kyra2 and Kyra3 code to a common base. I also worked on the Lands of Lore intro and character selection code in my summer holidays 2008. In 2009 I finished Kyrandia 1 Amiga support, after we had a Google Summer of Code project which implemented sound support for Kyrandia 1. I co-mentored another decompiler project in Google Summer of Code 2009 with Fingolfin, which sadly turned out to be a failure. In the Google Summer of Code 2010 Fingolfin and me mentored yet another decompiler task which finally got us some useful decompiler code, which supports SCUMM v6 and Kyra v2 scripts. I also worked on various little parts of the common code base and Kyra between all these.

ToDo

Things planned to do (in no particular order):

  • Kyra Engine
    • Bug fixes
    • Cleanup code base
  • 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 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.

Wish list

Games I'd like to have (only originals, with manuals, full size boxes aren't obligatory), English and German versions are preferred. System preferred, except stated otherwise, is DOS.

  • Kyrandia Games -- these will let me perform proper engine testing and improvement
    • (The) Hand of Fate Floppy -- would be neat for release testing
    • (The) Hand of Fate PC98 -- I don't have it
  • SAGA Games -- personal interest only
    • I Have No Mouth, and I Must Scream
  • SCUMM Games -- personal interest only
    • English versions of every SCUMM game, except Maniac Mansion.