AGS engine PSP port

Started by JJS, Fri 15/07/2011 16:27:57

Previous topic - Next topic

JJS

Uploaded a small update. It fixes some bugs and adds more compatibility options. You can now force the engine to clear the sprite cache on every room change which helps reducing the memory footprint. Also there is an option to enable additional 4 MiB of RAM. While enabled, you cannot use the suspend function or Go pause feature.

Have fun! :=
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

JJS

Update time!

Version R3 adds support for engine plugins! At the moment only AGSBlend by Calin Leafshade and my recreation of the SnowRain plugin are available. But this makes e.g. Gemini Rue fully playable. A video of it can be found here: http://www.youtube.com/watch?v=p7kmyTYzG0w

If anyone is interested in compiling the open source ags_snowrain plugin for Linux or Mac or making improvements to it, be my guest. It is not 100 % the same as the Windows plugin, especially savegames are not compatible.

The source is on Gitorious and the binaries are found on my website as always (check the opening post).

(Sorry for double posting, but I thought this update warranted a thread bump.)
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

LRH

<--- Almost kinda/sorta considering getting a PSP for this reason alone.

Icey

#23
Good luck, unless you order it offline. The reason to this is because a PSP system that are sold in stores come with version 6.39.

You best chance is to find one that is already hacked, or one with a firmware lower then 6.38. I guess if you want the most up to date hack fireware then I suggest you go with 3.68 ME however I found problem with it. But there was some other people that got it working. I recommend going with 5.50 gen D.

JJS

Actually every PSP can now run (L)CFW/HEN including those with firmware 6.39. PRO, TN and ME are available for 6.39 and there is also the option of downgrading.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Icey

So I can hack 6.39! I would like to re-hack my phat PSP however I think one is enough.

LRH

I plan on getting an older one, if I get one at all, that is :P It would be a big decision for me.

JJS

Domithan, just make sure not to get a PSP-1000 because the port doesn't run well on it. A PSP-2000 with datecode 8B and below offers you the most options in terms of CFW.


Anyway, here is another update to R4.

This one adds midi music playback and sound caching for WAVE files. You might want to check out the Fountain of Youth demo again for the soundtrack.

For midi playback you need GUS patches. The best option is to download "Richard Sanders's GUS patches" from the Allegro website. Rename the file to "patches.dat" and place it in the same directory as the Eboot.

Links to the download and source are in the opening post.


Updates will probably slow down from now on until the older engine sources are released (*fingers crossed*).
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

ddq

And don't get a PSP Go cause they suck. There are some actually good normal games on PSP too, but running AGS games on it sounds hella sweet.

Jinx1337

Quote from: JJS on Thu 28/07/2011 18:00:34
Domithan, just make sure not to get a PSP-1000 because the port doesn't run well on it. A PSP-2000 with datecode 8B and below offers you the most options in terms of CFW.


Anyway, here is another update to R4.

This one adds midi music playback and sound caching for WAVE files. You might want to check out the Fountain of Youth demo again for the soundtrack.

For midi playback you need GUS patches. The best option is to download "Richard Sanders's GUS patches" from the Allegro website. Rename the file to "patches.dat" and place it in the same directory as the Eboot.

Links to the download and source are in the opening post.


Updates will probably slow down from now on until the older engine sources are released (*fingers crossed*).

Dear JJS - not only did you grant my innermost wish of playing AGS games on the PSP, you are also responsible for porting ABUSE.
I wish I could hug you over the internet, kind sir.

Thank you for the very frequent updates; can contain my excitement for earlier AGS versions to go open source as well.

Might I suggest two things?

1) Could you somehow code a FULLSCREEN/STRETCHED graphics mode? I know it slightly botches the aspect ratio, but some people (like yours truly) just like to have the thing fullscreen. Pretty please?

2) Could you consider making a 'cursor slowdown' button? ScummVM uses the right trigger, which - when pressed and held - slows the "mouse" cursor movement down, making it much more comfortable to hunt for one-pixel-items.

Other than that, the port is wonderful.

I've never been following a project actively so much, since Exult PSP.

Once again - thank you very, very much.

Icey

If he made it where it could go fullscreen you couldn't see the the key options. And the +(D) pad slows down the cursors movement.

JJS

You're welcome!  ;D

To your questions:

1) Fullscreen mode is not implemented right now because it indeed clashes with the onscreen keyboard. But it will be implemented eventually, I just have to switch to double buffered drawing so that it doesn't flicker (as it would now).

2) As Studio3 said, the DPAD can be used but I will consider your suggestion.


Compatibility might improve soon actually because I noticed that games down to 3.1.1 are compatible with the 3.2.1 engine except for the sound system. It doesn't seem too hard to create the necessary SoundClip data structures on loading the game though.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Jinx1337

#32
Got it!

They keyboard works good as it is now - but you could also try implementing the open source Danzeff Keyboard, which wouldn't clash with fullscreen. Then again, Danzeff would make it harder to fight, i.e. in the Quest for Glory 2.

Also, up/down/left/right could be mapped as arrow keys (which could help some games) in that situation.

Do you reckon mscard reading speed could improve? I hate those tiny little breaks between voice lines in Gemini Rue. And I'm using PRO's firmware MS SPEED UP option already ;)

What is the most optimal setting for cache in your opinion?


edit:

Oh, and lastly - do you think you'd be able to find a way to somehow optimize the PSP's memory (or maybe lessen its consumption) in the longer run? Quest for Glory 2 still crashes on me, even with the cache clearing on screen change and extra memory :(

Sorry to bother you with all the questions / suggestions - I'm just really enthusiastic about your project! Wish I could help you, but I can't code for squat. Cheers.

JJS

If using an already made keyboard I would go with Danzeff, yes. Probably with an extended charset and with button combination like in PSPVLC. But Danzeff uses several PNG images for its display and this will make the memory situation worse.

Do you know that you can create custom button mappings with the psp.cfg configuration file? I posted an example file for Gemini Rue (so that you can fight/push boxes here). Available keys are listed in the Readme file.

Memory stick performance is indeed a bottleneck but I don't see any way to fix the delay before a spoken line unless I would implement some "reading ahead" mechanism that loads the next dialog lines while the current ones are spoken. Of course this would not work too well with dialog trees and it would again consume precious memory. As for the PRO Memory Stick cache, I have no experience.

QFG II is really a very tight fit memory wise. Without the extra memory you cannot even watch the whole intro cutscene. I don't know if that can ever be made fully playable.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Icey

Would it be possible to make it were it uses memory from the SD card? Maybe the game could use the psp memory to run however at the same time use the memory from the SD card that way the games could run maybe with out crashing unless your cards runs out of space.

Or maybe there is some other way to do this so that you wont take up a lot of space on the card like having the app take up a chunk of space then when you exit the game it restores that space.

JJS

I already touched on the subject of virtual memory here. The PSP lacks hardware support for it so it would be painfully inefficient and slow. Nevermind that the memory stick speed is low anyway even if it was technically possible.

The only way to decrease the memory footprint is to change the way AGS handles the game resources (delay loading till it is really needed and free everything immediately afterwards). Not an easy task though.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Jinx1337

#36
Have you tried contacting the ScummVM team responsible for its PSP port?

Mainly Bluddy, MD5, jstoop or Pix? [I reckon Bluddy would be the first one to help]

They've been optimizing the PSP port in terms of memory since ages and have quite an experience with it (memory heavy games like SCI1/1.5 engine, Toonstruck, Return to Zork or even 7th Guest work wonderfully thanks to their input).

It might be a totally different situation in case of AGS (who am I to know, huh?) and I might be shooting in the dark, but thought it would be worth suggesting nevertheless.

Jinx1337

#37
As for the PRO firmware: it consists of two things as far as I'm aware.

Faster MS Card driver (which existed well before M33 firmwares, removed in newer firmwares to stop piracy [as far as I know from the scene]). It was then put as an option in M33 firmwares, removed in post-M33 and injected back with PRO (and possibly ME, but I can't vouch for that). You can enable it through Recovery Menu -> Advanced settings.

The second thing is Inferno/NPD9900 ISO driver cache. Not sure how it works, tho you can set up the cache size in MB, number and even policy (LRU or random).

Both of these things speed up the MS access CONSIDERABLY and then some more.

edit:

Oh, and wouldn't unpacking the games somehow help in accessing the files as well?

JJS

Thanks for the suggestions!

Not sure if the ScummVM guys can help as they would have to dig into the engine themselves first. I will keep that in mind though.

Unpacking the files might provide a small speedup. In fact this is not too hard to try because the engine looks for the file outside of the packfile first anyway. I will experiment with that.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Jinx1337

Hey, it is me who ought to thank you for all the work you're putting into this. ;)

As to the ScummVM games, I figure they could at least hint at the memory workarounds they themselves came up with.

Cheers  JJS, patiently awaiting any updates to the project!

SMF spam blocked by CleanTalk