Open main menu

Toneman

Joined 20 May 2010
Revision as of 23:39, 24 June 2010 by Toneman (talk | contribs) (Added Plugin Design Change Stuff)
Toneman
Name Tony Puccinelli
Team Member since 20/05/2010
Working on Implemented Support for Loadable Modules on Small Devices
Personal webpage/BLOG http://tonypuccinelli.blogspot.com
Email tony.puccinelli@gmail.com

About Me

I'm Tony Puccinelli, a GSoC 2010 student for ScummVM and a longtime lover of the interactive storytelling adventure games offer.

I will be working on implementing support for loadable modules in ScummVM's PS2 and DS ports (using the ARM-based GP2x Wix as a testbed for the ARM-based DS). I'll also be attempting to abstract a generic "ELF loader".

For a mix of random sarcasm and more specific updates concerning my project, hit up my blog: Pearls on a String

Current Project Schedule

Write a linker script and custom ELF loader to provide full support for loadable modules in ScummVM’s PS2 Port, using the pre-existing PSP code as a starting point.

Completed on June 13th!


Implement support for loadable modules on the GP2x, an ARM target. (To be completed by: July 9th)

June 14th-18th: Get debugging facilities set up for the GP2x. Start coding initial linker scripts/loader. (Continue testing/documenting PS2 work).

June 21st-25th: Tweak Makefile and finish initial linker/loader code. Begin debugging.

June 28th - July 2nd: Continue work on the GP2x Wiz.

July 5th - July 9th: Finish ELF loader for the Wiz.


Abstract parent “ELF Loader” class to be inherited by targets that support loadable modules. (To be completed by: July 16th)

July 12th-16th: Do the task!


Implement support for loadable modules on the DS with the aid of the ARM-based GP2x code. (To be completed by: August 13th)

July 19th-23rd: Get Debugging Facilities Set up for the DS and make final design decisions with mentors (see "Plugin Design Change Plans" below).

July 26th-30th: Begin making necessary changes to GP2x loader/linker to adapt it for DS and altered design.

August 2nd-6th: Continue work on the DS.

August 9th-13th: Finish coding!


Continue work with ScummVM? ;-)

Plugin Design Change Plans

1) First Refinement


The first change can be relatively simple. Instead of loading all engine plugins at once, load one, ask whether it supports the given game. If not, unload the current plugin and load the next one until you find one that supports the game. This could take a lot of time (like if the correct engine is the last one checked), but would be a quick way to solve the memory problem. I plan to implement this, then get the DS loadable modules working before moving on to more refined approaches.


2) Long Term Approach


For a next step, every game target in the config file can be given an "engine=MYENGINE" key-value pair. This way, the right engine plugin can be decided upon right away. If the "engine=" field is missing for a given game, we can just revert to the behavior of the "First Refinement".

Also, the upgradeTargets() function in base/commandLine.cpp could be modified such that during startup, any config targets missing the "engine" key could have an "engine" key added automatically (by re-running the detector, matching the output with the gameid that is already there, and setting up the engine field).

In order to avoid having to do this re-scanning every time, we could put the "version" field in the config file to use. We could change it so that if we are loading a config file made with a newer ScummVM version, a warning is issued, and if the version is older than XYZ, we run the target upgrader.