[Scummvm-devel] PS2 ScummVM 0.11.x updates!

sunmax at libero.it sunmax at libero.it
Thu Feb 14 01:29:00 CET 2008

Hello scummvm world!

>> Better a late reply than no reply at all... ;-)


>>>> mpeg2dec / tremor

>> Once you got them

I did more! I got them. I upgraded them to their latest and greatest
version. I integrated them in the all new shining 0.11.x PS2 scummvm 

>> I would also recommend to make them available

Sure thing! Is there a scummvm-place when I can upload them?
Or should I send their tarball to you together with the PS2 patch
in a few days?

I split this mail in 5 parts to easy its readability (well, at least
I hope so): video, building, files, textures, todo.

 [1. Video] --------------------------------------------------------

>>>> libmpeg from Eugene Plotnikov in ps2sdk

>> this alternate lib, which seems to be PS2

Yes, PS2 only, but in my experience delivers a superior image quality
and a lower EE (CPU) burden. Using the IPU we can get realtime
decoding for 720*576 @ 15 MBit/s with MPEG-1/MPEG-2 videos!
But I understand the issue with modifying the core. I hope we can
find a non invasive way of doing this eventually, it would be nice
to have "plugins" for the video players too ;-)

>> we are moving towards using DXA instead of MPEG2.

Got it. I am still catching up through the scummvm forum topics,
can you tell me which was the main reson for that? Copyrights?
Performance? Quality?

Now a (likely) dumb question: what about the cutscenes in the other
games? E.g. the .san in The DIG? Are they doing any YUV -> RGB in SW?
Or are they just palettized? How are they handled by SmushPlayer?

How many type of videos are used by scummvm games?

I saw that we have some flexibility with sound files,
they can be .mp3 .ogg .wav. You name it! Would it be
possible to have the same kind of flexibility with

Or is there a technical reason to keep the videos of a
certain game in a certain format? (cause maybe it
already comes with the best quality/size ratio)

Ok, that's enough for my video rant ;-)

 [2. Building] ---------------------------------------------------- 

>>>> what do I actually need to do to upgrade it to 0.11.0?

>> Well, go and checkout branches/branch-0-11-0


>> try to get that running

Done (with latest mpeg2, tremor and likely KYRA engine support).

>> Then, provide us with a patch

Will do, see at the end of this mail for my PS2 TODO.

>> This will be reviewed, and if suitable, will be applied, at which
>> time you probably can get promoted to full team member status

Really looking forward!

One question regarding the building process.

The PS2 backend (like the PSP) contains a do-it-all makefile,
it's that an accepatable solution for now?

Should we on the long run port it to a 'configure'-friendly
build process or it really does not matter?

I am a bit ashamed of this but I have a, ehm,... mangling issue
with Kyra engine during the build. My gcc-3.2.2 (ps2sdk 20070626)
confuses the "virtual void open()" method with the protected
member "bool _open" and accuses me of redefining the signature
from void to bool... I hacked it by replacing _open with _mopen,
it's not very elegant but it does its job.

What I am supposed to do? To #ifdef it for the PS2? Or could
we just add an extra letter to _open (you choose it!) Well
it could be something like _ps2sdk_sucks_open too ;-)

 [3. Files] --------------------------------------------------------

>>>> "Completely reworked internal access to files"

>> Filipos wrote a bit about that already.

Hey Filipos sorry if it took me so long, I thought I already replied
to you but from my other account (GUE Tech one) only now I realize
that mail bounced back. My sf account is 'sunmax' too. Thanks for
the support.

I think I got exists / isReadable / isWritable / lastPathComponent in

Do I have a way to test it? Or the fact itself that the games I tested
(Dig, Sam&Max, MI1/2 for now) are working is a sign that I got it 

I saw "listSavefiles" changed too (now it returns Common::StringList),
but some backends (e.g. 'ds') have just stubs for it. And others
(e.g. 'palm') they are still using "void ... ::listSavefiles(const
char *prefix, bool *marks, int num)" version. Who wins?

Can somebody describe the semantics of the new "Common::StringList ...
::listSavefiles(const char *pattern)"? Is it as simple as returning
a list of files that match the pattern? Is that in cwd? What happened
to 'prefix' and 'num' arguments?

 [4. Textures] ------------------------------------------------------

 (This is most likely a question for Robert, I will send him a personal
 mail too)

1) Why do we use '_pitch' as a stride in the VRAM when we are DMA
   allocating the texture for _screenBuf but '_width' when allocating
   the texture for _overlayBuf ?

   Ain't they supposed to have the same width?

   Of course _screenBuf is 8 bpp and _overlayBuf 16 bpp,
   I guess 8 bpp is to match the fact that the games are
   natively rendering at that color depth (is it?)

   Why are we using 16 bpp for the _overlayBuf? Is that a ScummVM

   Can somebody spread some light on the current uses of Overlay
   in ScummVM (load/save games, etc.)?

2) Why the DmaPipe::uploadTex code looks so awkward (or maybe it's
   just me ;-)? Why are we uploading up to 0x7FF0 QW a time?
   Is this for performance reasons?

   Compare it with "graph_vram_write" in ps2sdk/ee/graph/src/graph.c
   that I have been using in other PS2 projects.

   Anyway, I won't touch it until I understand why it was designed
   like that. Likely it was the right way.

 [5. TODO] ---------------------------------------------------------

Ok this is a list of things I'd like to sort out before committing a
patch for ScummVM 0.11.1.

1) get hdd working again
   [it still enters a never-ending loop in:

     while(((res = SifBindRpc(&cd0, PWROFF_IRX, 0)) >= 0) &&
       (cd0.server ==  NULL)) nopdelay();

        ^-- thats's in the PS2 SDK]

2) finalize new files access method

3) cleanup on exit
   [btw: what is scummvm supposed to do on exit? On a PS2 it should
         get back to the game launch menu, otherwise you have to
         reboot all the times... does this require a core change
         or is it doable just in the backend?]

4) get KYRA (and hopefully COMI) working properly on PS2

5) test as many games as possible
   [of course I cannot play all of them from start to end,
    even if I would like to ;-) - is there anybody aware of
    some game / engine that used to crash with the previous
    releases of ScummVM/PS2 ?]

6) test USB keyboard (USB mouse is just fine)

7) timididy ?

Max, I did not get what you mean with "It's", does it mean
that we -must- have it in place for ScummVM PS2 0.11.1 to happen?

Cause it's going to be tricky on PS2SDK (easy on the PS Linux SDK
though) to have a Timidity daemon running and to upload it before
scummvm is run (keep in mind that PS2 multitasking is co-operative).

Fluidsynth is doing great with Sam&Max on the PS2 ScummVM, why don't
we just live with that for now? We could maybe later have an internal
timidity like SDL_Mixer does? Tell me.

Ok this should do it for this time ;-)

Looking forward to your feedback and ideas!


More information about the Scummvm-devel mailing list