End of GSoC and Future Plans

First of all, some comments regarding what I have been coding since my last blog post. Mostly I have been hunting bugs, and testing games to if all was working well.

There were some compilation/linking problems with some ports and with some help I have hopefully fixed them all, still there are some ports that have not been tested yet. Some problems arised also when switching between SDL and OpenGL graphics modes, but those bugs are fixed now. Also, there was some discussion regarding the aspect ratio modes in devel list. I was taking as base for the aspect ratio correction system the one that the SDL graphics manager had, but that wasn’t really necessery for the OpenGL rendering, as it does allow scaling to any size. After some talk, I removed some unnecessay options, and now there are 3 aspect ratio modes: “None”, “Conserve” and “Original” (this last one added after its suggestion in the discussion).

And, the big news are that Google Summer of Code (Winter of Code for me here, hehe) has ended, at least the coding part has ended last monday. Now it is time for the final evaluations, and I hope that finish well 🙂 It was a really nice time, and a great experience 😀

I finished well the SDL backend refactoring (including most of its ports), into a modularized design, and the OpenGL graphics manager for the SDL backend is working good. However, I could not finish all what I planned to do, I could not finish the WinCE port refactoring in time. It is a really complicated port to modularize, there is a lot of common code between the events and graphics parts, and without being able to test it nor even compile it, it is a really hard task. I will have to discuss a bit about this with my mentors later.

And for the future, I plan to continue working on ScummVM. There are some pending feature for implementing in the OpenGL graphics manager, like shaders, that because the short available GSoC time I couldn’t do. And I thought before starting GSoC that I would be able to implement them in time, but reality showed to be more complicated. Still, before I hope that my branch be merged with trunk, and in case there is some problem for that, I plan to continue my work and fix those issues.

Status Report

This last week, I have been working mainly on fixing bugs, and testing the SDL refactoring changes and the new OpenGL graphics manager. So far, it is going well. Here is a list of the changes:

  • Merged from trunk (Not upto actual HEAD, but was a big update)
  • Fixed a crash when a texture was only partialy updated, crashing Broken Sword 2.
  • Fixed a hack for reseting the wndow scale to x1 when starting a game. I added a resetGraphicsScale() function to OSystem.
  • Added options in Graphics Mode list for switching between SDL graphics modes and OpenGL graphics modes.
  • Added OpenGL libs to configure script for MingW, it was not compiling before.
  • Added support for BGR pixel formats.
  • After some discussions and changes, improved the way that the default fullscreen mode was selected. Now it will prioritize the desktop resolution, and in case that it is not available select one that has the same aspect ratio the desktop has, and as last resource use the one with the best metric.
  • Implement coordinates adjustments for warpMouse, the cannon sequence of COMI was failing when using aspect ratio correction and resizing the window.
  • Disabled 16/9 and 16/10 aspect ratio corrections, they are not really needed.
  • Implement some basic OpenGL auto detection for the configure script.
  • Other minor fixes, and some commenting.

Also, it is needed some help testing the modified Ports, and testing the new OpenGL graphics manager, you can follow the discussion on the mailing list.

At this point I am behind my shedule, I should have finished the OpenGL graphics manager quite ago, and start working on refactoring some ports. So, the next plans are to continue debugging the changes I made, try to finsih the WinCE port refactoring and the next week work on merging with trunk and doing the last tweaks.