GSoC/GCI Archive
Google Summer of Code 2010

ScummVM

Web Page: http://wiki.scummvm.org/index.php/OpenTasks

Mailing List: https://lists.sourceforge.net/lists/listinfo/scummvm-devel

ScummVM is a collection of Virtual Machines for playing classic graphical point-and-click adventure games on modern hardware. Supported games include favorites such as Monkey Island, Simon the Sorcerer, Space Quest, and many more. To this end, the Virtual Machines (called Engines) are complete reimplementations in C++ of the engines used in the original games. The development team works either by reverse engineering game executables (usually with the permission of creators of the game), or by using the original source code of the games provided by the creators. The number of engines is constantly growing thanks to a very agile and diversified development team.

 

 

 

The VM approach followed by ScummVM results in efficient code, which has been ported to numerous Operating Systems. Besides running on all mainstream desktop environments, namely Windows, Mac OS X and most Unix variants (Linux, *BSD, Solaris), ScummVM also runs on popular game consoles (Wii, Nintendo DS, PlayStation 2, PlayStation Portable and more), smart phones and PDAs (WinCE, PalmOS, iPhone or Symbian based), and even on many not-so-mainstream systems (like BeOS, AmigaOS or OS/2).

 

 

ScummVM has a highly productive team of about 45 currently active developers (out of an all-time pool of over 65), working together on a codebase almost 800,000 lines of code. In addition ScummVM has many non-developer contributors, and a huge and highly active community. ScummVM is among the top ranking projects hosted on sourceforge.net with well over 100,000 monthly downloads and ~10 million project web hits per month.

 

Projects

  • Adding a testing framework for scummVM's subsystems The objective of this project is to enhance the ScummVM unit testing infrastructure by implementing a "Test Engine".Unlike unit tests, a test engine would enable testing on all the ScummVM ports.Using a test-engine would help in testing various features like (game detection, filesystem navigation, graphics, audio.. etc) in an integrated and non-isolated manner.
  • Game script (bytecode) decompiler Creating a generic framework for decompiling stack-based instruction sets used for game code
  • Implementing Support for Loadable Modules on MIPS and ARM-based platforms ScummVM has grown to include support for adventure games running on many different engines. This much-appreciated support has unfortunately bloated the size of the ScummVM binary and the space it takes up in RAM, which is a problem for small devices that don't have much RAM to work with. To alleviate this issue, custom module loaders can be written for these devices that enable them to only load one needed engine into RAM at a time, depending on the game selected.
  • Refactoring of the SDL backend and OpenGL support This project will help ScummVM in various aspects. It will improve the SDL backend by refactoring it and the support of derived backends. It will also add OpenGL and OpenGL ES support as an option for the platforms that support them. OpenGL will make scaling and blitting hardware accelerated, and so a positive impact on performance will be achieved. Personally, I am really eager to join a big open source project like ScummVM and Google Summer of Code is the perfect opportunity for this.