Wednesday, July 30, 2008

Progress with Savestate Mgmt

Hey everyone. As I mentioned, the past week I've been working on implementing some savestate management features, namely loading games directly from savestates '-x', and listing savestates '--list-saves'. Some engines already supported these features, and I have added support for some of the engines that didn't. I've added '-x' support for LURE and PARALLACTION, and I'm still working on AGOS and GOB. I've added '--list-saves' support for quite a few engines as well.

Engines currently supporting -x:

AGI, CINE, KYRA, LURE, PARA, QUEEN, SAGA, SCUMM, SKY, SWORD1, SWORD2, TOUCHE

Engines currently supporting --list-saves:

AGI, AGOS, KYRA, LURE, PARA, QUEEN, SAGA, SCUMM, SKY, SWORD1, SWORD2, TOUCHE

I also managed to work in a 'Load' button into the launcher, which opens a savestate chooser. So now all of the engines supporting both -x and --list-saves can load savestates directly from the launcher, which is pretty cool I think.

So now I'm going to try and finish working with AGOS, GOB, and I'll also try to incorporate the newly added TINSEL engine. Also, I'm going to see about adding support for Autosaving in the engines where I can. Oh yeah, I might also add support for deleting savesates from the launcher.

Monday, July 21, 2008

The past week, after gaining much understanding of how sound is implemented in the engines, I have made some progress getting the settings in the Options dialog to function correctly as well as implemented properly for most engines. Learning how the sound should be implemented and finding the common ground between all of the engines was a challenging part of the Global Main Menu portion of my task.

In the following engines, modifying the sound settings through the GMM works very well, meaning that the volume for music, sfx, and speech can all be adjusted separately:

AGOS, GOB, LURE, QUEEN, SAGA, SKY, SCUMM, SWORD1, SWORD2, TOUCHE


Engines for which sound settings are modifiable, but not are not yet 100%:

KYRA - Volume is adjustable, however the music and sfx can not be separately adjusted. (At least in LoK, which is the only game I have to test with)

PARALLACTION - Sound effects are adjustable, however I have not yet been able to test music because music has not ever played for me in the game I have which uses this engine (Nippon Safes, full and demo versions).


Engines which I have not been able to properly implement the configuration of the sound settings through the GMM, due to time constraints and/or issues specific to how sound is currently handled in the engine:

AGI, CINE

It took some time to understand how the sound was being implemented in all of the engines, and sometimes I think I may have spent a little too much time on the details of certain engines trying to get the sound settings to work right. I'm certain that with a little attention from the engine maintainers, all of the engines will work seamlessly with the settings in the Options dialog.

Testing the sound settings for all of these engines was also a challenge. Due to many different variables which depend on the user such as the operating system, sound card/MIDI device being used, and game versions (demo, cd version, floppy version), it is hard for me to test that these sound settings are working correctly in *all* situations.

I did want to look into getting the engines to be able to let the GMM know what sound settings are supported by the game being played (such as speech, subtitle speed, etc.) so that only the relevant controls are displayed in the Options dialog. Hopefully I will have some time to come back and address this.

This week I begin my work on the Savestate Management portion of my project. So I am looking forward to becoming familiar with yet another aspect of ScummVM!

Sunday, July 13, 2008

Well, it looks like I ended up doing the opposite of what I had planned.

Most of my progress has actually been made in improving the implementation of the Global Main Menu. I have gotten rid of the Quit and RTL flags that were being used by the engines. This is better because previously the Quit flag had to be made public, and the GMM code needed to access these flags, which was not good.

Now the DefaultEventManager keeps track of whether to Quit or RTL, and the GMM can simply send QUIT and RTL events to the Event Manager. This elminates the need for engines to track EVENT_QUIT in most cases, and now we can use the Quit flag for ScummVM without the need for an engine to be running.

I have implemented an artificialEventQueue and a pushEvent() method which allows you to push "fake" events into the event queue. I am using it to create QUIT, RTL, and MAINMENU events. The artificialEventQueue can be useful for other tasks as well, Stephen Kennedy is using this feature for his Virtual Keyboard.

I did make some progress with configuring the sound settings from the Options dialog. It is now possible to adjust the volume for all of the engines through the Global Main Menu. However the implementation needs some improvement. In particular, I need to look into how the kPlainSoundType is being used by the engines.

The Mid-Term evaluation period is over now, and I feel like I have made some good progress so far. I also think that now is a good time for me to look at my project schedule and re-evaluate how to spend my time.

I would at least like to get configuring the sound settings through the GMM properly implemented for all of the engines. Hopefully that will all be done this week. Then I will move on to the savestate management features.

Wednesday, July 2, 2008

It's been about a week and a half since my last post, I had meant to make an update sooner (sorry, time has just been flying by). I have implemented the Global Main Menu, and it is coming up in all of the engines. We are able to 'Quit' and 'Return to Launcher' from the GMM, and there are 'About' and 'Options' dialogs as well. Also, the sound settings for most engines are configurable through the GMM's Options dialog. I am still working on getting the sound settings to work for the following engines: AGI, LURE, QUEEN, and SCUMM.

So beware, I may be in need of your assistance if you have any knowledge regarding sound implementation for these engines!

For now I am going to focus on getting the Options dialog settings and overall functionality of the GMM working for all of the engines. After this I plan on making some improvements to the implementation of the GMM, as suggested by Fingolfin.