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.
Wednesday, July 30, 2008
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!
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.
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.
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.
Friday, June 20, 2008
Ok, I made a little bit more progress with the return to launcher feature. SAGA, SWORD1, and SWORD2 can now be added to the list of working engines.
As for PARALLACTION, with some significant effort we have learned the cause of the aforementioned memory leaks, however I will be coming back to that problem as well as the KYRA engine later, probably in a couple of weeks.
This week I have turned my focus to the Global Main Menu dialog. So far I've been studying the main menu dialog code in the SCUMM engine, as well as the code in gui/dialog.cpp, newgui.cpp, etc. to get a feel for how the dialog should be implemented.
I will also be merging what I have worked on so far with the Return to Launcher feature to the trunk, so I'm excited about that!
As for PARALLACTION, with some significant effort we have learned the cause of the aforementioned memory leaks, however I will be coming back to that problem as well as the KYRA engine later, probably in a couple of weeks.
This week I have turned my focus to the Global Main Menu dialog. So far I've been studying the main menu dialog code in the SCUMM engine, as well as the code in gui/dialog.cpp, newgui.cpp, etc. to get a feel for how the dialog should be implemented.
I will also be merging what I have worked on so far with the Return to Launcher feature to the trunk, so I'm excited about that!
Monday, June 9, 2008
As of now the following engines are returning to the launcher:
AGOS
AGI
CINE
GOB
LURE
QUEEN
SCUMM
SKY
TOUCHE
There are just a few issues I need to look at for a couple of them.
PARALLACTION -
There was a problem I was having with this engine where after returning to the launcher, I would try to load the game a second time and the game would crash. After doing some debugging I found out that it had something to do with loading an opcode, but I had failed to find the exact source of the problem. I found Peres and worked with him a little bit on the problem. Peres eventually found the exact cause and has implemented a fix.
The engine is now returning to the launcher, however there are now some significant memory leaks which I think are a result of this new fix. I need to speak with Peres about how I can fix them.
KYRA -
Peres also informed me that this same behavior with the opcodes is present in the Kyra engine, so he suggested that when I look at that engine I should talk to Lord Hoto because he also helped Peres come up with the current solution for the Parallaction problem.
I also plan to get these engines working very soon:
SAGA
SWORD1
SWORD2
After all of the above engines are returning to the launcher without memory leaks, I will begin work on the global main menu. I hope to be at this point this after this week.
I plan to come back to the following engines later:
CRUISE
DRASCULA
IGOR
M4
MADE
AGOS
AGI
CINE
GOB
LURE
QUEEN
SCUMM
SKY
TOUCHE
There are just a few issues I need to look at for a couple of them.
PARALLACTION -
There was a problem I was having with this engine where after returning to the launcher, I would try to load the game a second time and the game would crash. After doing some debugging I found out that it had something to do with loading an opcode, but I had failed to find the exact source of the problem. I found Peres and worked with him a little bit on the problem. Peres eventually found the exact cause and has implemented a fix.
The engine is now returning to the launcher, however there are now some significant memory leaks which I think are a result of this new fix. I need to speak with Peres about how I can fix them.
KYRA -
Peres also informed me that this same behavior with the opcodes is present in the Kyra engine, so he suggested that when I look at that engine I should talk to Lord Hoto because he also helped Peres come up with the current solution for the Parallaction problem.
I also plan to get these engines working very soon:
SAGA
SWORD1
SWORD2
After all of the above engines are returning to the launcher without memory leaks, I will begin work on the global main menu. I hope to be at this point this after this week.
I plan to come back to the following engines later:
CRUISE
DRASCULA
IGOR
M4
MADE
Tuesday, May 27, 2008
Coding phase has officially begun as of yesterday. The past couple of weeks have served as a good introduction for me. I have become more familiar with the ScummVM code, the ScummVM community, and the tools that I will be using regularly to complete this project. I feel like I have already learned a lot.
Progress since last post:
The AGOS and AGI engines are now returning to the launcher and shutting down tidily. The CINE engine is getting close also. As of now there's just one small memory leak I need to fix.
I think that analyzing the SCUMM engine, and then working on the AGOS engine gave me a good idea of what I need to do for the other engines. I expect that they will each be somewhat different, but I think I will be able to get through them fairly quickly.
Progress since last post:
The AGOS and AGI engines are now returning to the launcher and shutting down tidily. The CINE engine is getting close also. As of now there's just one small memory leak I need to fix.
I think that analyzing the SCUMM engine, and then working on the AGOS engine gave me a good idea of what I need to do for the other engines. I expect that they will each be somewhat different, but I think I will be able to get through them fairly quickly.
Subscribe to:
Posts (Atom)