Open main menu

Toneman

Joined 20 May 2010
1,478 bytes added ,  23:39, 24 June 2010
Added Plugin Design Change Stuff
(Explicit Dates added to schedule)
(Added Plugin Design Change Stuff)
Line 41: Line 41:
====Implement support for loadable modules on the DS with the aid of the ARM-based GP2x code. (To be completed by: August 13th)====
====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 design decisions with mentors (for instance, only one engine can be loaded at a time instead of all loaded then unneeded ones deleted).
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.
July 26th-30th: Begin making necessary changes to GP2x loader/linker to adapt it for DS and altered design.
Line 51: Line 51:


====Continue work with ScummVM? ;-)====
====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.
27

edits