[Scummvm-devel] ps2 gdb & COMI buster

sunmax at libero.it sunmax at libero.it
Sun Jul 12 07:50:30 CEST 2009


Hi Max & team,

>> It's great to hear that you can finally do some (albeit
>> complicated) gdb debugging for the PS2.

Yes, that made a -huge- difference in a couple of days we fixed
-all- open issues with ScummVM/PS2 ;-)

Now that PS2 backend is doing fine, I can focus again to polish gdb
and later update PS2 gcc and other tools according to my plans.

>> And that apparently the issue for the crashes is now clear.

Yes!


>> Johannes already explained the likely cause and how to overcome it.

I am very thankful to Johannes and apologize for not thanking him
personally earlier, I was just too busy fixing PS2 bugs in the last
two days to interact with mails...

 A -BIG- thanks to Johannes !!!

And to our fellow PS2 programmer Cosmito, who helped with PS2 gdb.


>> Actually, we have an explicit "finalize" call for savegames,
>> maybe you just need to implement this on the PS2 properly?

The issue with ScummVM.ini (and likely with savegames) is that the
async PS2 file subsystem cannot handle "1 byte" writes very well and
when you write ScummVM.ini (and likely savefiles) there are lot of 
sequence like:

    stream.writeByte('[');
    stream.writeString(name);
    stream.writeByte(']');
    stream.writeByte('\n');

So we now simply cache all writes and burst them out on close ;-)

0.12.0 had separate handling for "read" and "write", and writing was
only allowed to MC. That's why it was more stable. As of 0.13.x you
can read/write to and from every media (including remote! ;-).

On COMI, there was a different issue too, where "thumbnail" creation
was causing mem corruption (overflow) on save. I think I fixed that
too (so it seems after few minutes of play+save+load). Just in case,
I added a commented "define" option in engines/scumm/saveload.cpp,
so you can disable the thumbnails like on DS.

We reverted sample rate to 48000 as it was in 0.11.0 (which is the
last version without "chipmunk effect"), where it was:

int OSystem_PS2::getOutputSampleRate(void) const {
    return 48000;
}

We flagged the network IRX (modules) optional, this will allow users
of fat PS2 without network adaptor to still enjoy ScummVM (tested on
mine, after removing the adpator ;-).


>>> < _storage = new T[newCapacity]();
>>> ---
>>> _storage = new T[newCapacity]; // ();
>>>
>>> The first one does not compile, the second one does.

> Which compiler, what's the error?

PS2 gcc 3.2.2 - just dropped an "ifdef" in trunk for the PS2 case,
like we did last time to circumvent vintage compiler limitation.

More mails on the way.

Ciao,
 -max





More information about the Scummvm-devel mailing list