Monday, April 28, 2008

Still not perfect but good enough

Further investigations and comparisons finally lead to success. Now Japanese DIG looks very close to original. There are still slight differences in how the subtitles are positioned on the screen, but I consider it as a good enough (ScummVM is on the right):

Our code differs too much from the original Blast Text rendering routines, so to make a pixel perfect rendeting I would need to rewrite all of that code. Still I consider it to be good enough and if someone else in the future would want to tickle it a bit more, he is welcome.

Besides Japanese Kanji fixes, new code also fixes line breaks in Korean and Chinese versions of SCUMM 6+ games. I did not test it, but with old code there were cases when longer strings were not split in a proper way. As a side effect there are slight changes to versions which use Latin characters, so there could be potential regressions. File a bugreport if you will notice any chopped subtitles in FT, DIG or COMI. Read More...

Saturday, April 26, 2008

Kanji got more fixes

Finally I managed to make all Kanji in Japanese DIG rendered. 

It appeared that somebody (ahem) just is not able to count, even with help of a calculator. 
japanese.fnt was not read completely and thus it got read past the array bounds.

Still there are certain problems with rendering. As seen on the right screenshot, proper line breaks for Kanji just do not work, also text positioning is not perfect. I am still in process of comparison with original, and the code there is quite hairy. Stay tuned. Read More...

Tuesday, April 22, 2008

GSoC 2008 students announced

Yesterday final list of Google Summer of Code was settled down. Six students for ScummVM this year, and they have exciting skills.

Christopher Page will drive Return to Launcher / Global Savestate task. It is a long awaited one, when users finally will have possibility to return to launcher after their game play. The main obstacle with this feature was that the engines did not clean up after themselves well and produced leaks, instability and all. There was an infamous commit from Endy four years ago to loop the launcher which was revoked in a half year and lead to certain controversy, but now we are going to get a proper support for this feature. Additionally the student will implement loading of save games from the launcher, will add support for thumbnails view to all engine saves which will add more to ScummVM experience.

Next task is.... FreeSCI plugin, ta-da. Sami Zerrade is the student for it. Again, this does not mean that FreeSCI will be merged into ScummVM. It is some kind of a cross-project task and most of the code will land down in FreeSCI repository. Of course, it will require ScummVM OSystem to be somewhat extended and perhaps our make system rearranged a bit, and this will bring two projects close as never before. Basically if the student will be successful with his task, FreeSCI project is going to turn into an external ScummVM plugin and will have most (all?) of its hardware abstraction layer stripped down in favor of ScummVM OSystem. We think that perhaps we will share even the port builders between the projects, but this all is need to be discussed in more details first. In short, see FreeSCI on NDS and PSP soon!

GUI overhaul is an exciting task by Vicent Pere Marti Guardiola. The goal is to turn our GUI into vector based format, add TTF font rendering, perhaps add some way to easily translate the interface and tons of other rewrites. API will stay as is, or will be minimally changed, but we expect that GUI will be much more flexible and configurable. Another goal is to make it scalable enough so that even smaller ports like NDS and SymbianOS could run it.

Stephen Kennedy will implement Virtual keyboard and Keyboard mapper. This was our failure last year when that student did not write any significant code, and moreover, he tried to trick us. We are in a really big demand of these two features, and we are looking forward to unify our ports. Even desktops will benefit from it as there are tablet PCs and of course, users could want to remap default keys. The appoach promises to be flexible enough for engine developers to cover all supported games.

Amiga sound formats, including TFMX support. Yes, full support for Amiga Monkey Island is on the go. Also within this task first C++ implementation of MaxTrax player used in Legend of Kyrandia 1 and other games is going to be implemented. We will see what other formats Marwan Hilmi will manage to cover.

And finally, our last year successful student Kari Salminen aka Buddha is going to add Support for Operation Stealth. The CinE engine was for a while in ScummVM, but only Future Wars was supported so far. There are big misses in opcodes and other parts of the engine which make Operation Stealth not completable, but I am sure that Kari will manage to finish it.

Thus, stay alert and see that at the end of the year, probably on second major release from now (we are at 6 months release cycle) , ScummVM will be greatly improved. Read More...

Sunday, April 20, 2008

We came out from the deep

Today, after 802 internal commits we finally went public with M4 engine. In fact, our team did not want to go public until some viable results were achieved.

The M4 engine is used for Riddle of Master Lu and Orion Burger games. Also historically it evolved from MADS engine which was used for at least three more games. Currently scripts work, although there are many missing opcodes; animation, graphics, sound get decoded. Intro could be enabled at compile time. Menus, conversation and text rendering are all covered. The progress on the engine is pretty rapid, though now the bottleneck is johndoe with his script data extractor.

As a bonus today was also committed another engine, the smallest one up to date. That is called M.A.D.S. and it was used for Return to Zork and couple of other less known games. Johndoe REd is as a side excercise and it is in almost complete state.

Today was a significant day in ScummVM history.

Thursday, April 17, 2008

Kanji struggle

For the last several days I was trying to add support for Japanese DIG. It was reported in this bug report.

For some reason there is a bug with Kanji processing in our code. You may see it in these two screenshots (on the left is original and ScummVM is on the right):

As you may see, Kanji 出 (de) is rendered as garbage. Basically it looks like all Kanji is rendered bad. Investigations and test runs showed that computation of offset in font file (SJIStoFMTchunk() function) is correct, but the function produces value behind the font file end. Probalbly there is some preprocessing on font load. Need to clarify that too. Read More...

So, it starts

Yes, we were discussing this internally for a while, and I myself wanted to tell some news in some more permanent place than #scummvm for a while.

I am starting this thing called blog, about which everyone went crazy these days. I am sure that I will not post here often or regularly, but I will do it from time to time.

Soon there will be an aggregator for all ScummVM-related blogs scattered around the net, as some of the devs already have them created for a while. We are going to use PlanetPlanet software for that. The aggregator is already installed, we just are waiting for moment X to turn the switch on.

Also GSoC slots are about to be permanently allocated, and we have several excellent student applications this year. Stay tuned. Read More...