ScummVM

From iPodLinux

Jump to: navigation, search


ScummVM
Script Creation Utility for Maniac Mansion Virtual Machine
ScummVM block.png
Category Emulators
Maintainer Uomoartificiale
Last updated 25 Mar 2008
Version 0.9.0_20080325
Runs on 5G, 5.5G, mini?
Requires iPodLinux
Download Melknin patch against ScummVM r35535, Old binary, ScummVM rev.23292 with sound
Support IRC

ScummVM is a program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the game, allowing you to play them on systems for which they were never designed!


Contents

Obtaining ScummVM

Binary

  • Grab the binary from the link in the project box
  • Unpack it on your iPod

Building source code

Those instructions are orribly outdated, left here just for reference: you should grab Melknin patch and toying around with it.

  • Install the Toolchain
  • Checkout the libs folder via Svn
  • Download patched scummvm sources tarball from the link in the project box and unpack it, your working directory should ends up with two folders: one called "libs" and one called "scummvm"
  • Enter the newly created scummvm folder
  • Configure the program with: sh cfg.txt
  • Build the program with: make
  • Copy the newly created scummvm binary to your iPod


Running ScummVM

Launch

  • You can run ScummVM games using iLaunch.
  • A quick and dirty method is to directly call the ScummVM binary from loader.cfg passing two arguments: scummvm --path=/path/to/gameid gameid

Commands

  • Menu is UP
  • Play/Pause is DOWN
  • Forward is RIGHT
  • Rewind is LEFT
  • Scroll Left is LEFT MOUSE BUTTON
  • Scroll Right is RIGHT MOUSE BUTTON
  • Center Button is LEFT MOUSE BUTTON
  • Hold is ESC

Clicking on the right target is tricky sometimes as pushing one button also generate scroll event from the touchpad but, at least, now we've both left and right mouse button :-p

Additional infos

Sid77

Compiling melknin's patch

To compile, I assume you have the toolchain already set up. Additionally, you should have retrieved the iPodLinux libraries:

svn co https://ipodlinux.svn.sourceforge.net/svnroot/ipodlinux/libs libs

You should then get the patch and apply it to ScummVM revision 35535:

wget http://ipodlinux.org/w/images/b/b5/Scummvm.r35535.patch
svn co -r 35535 https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk/ scummvm
cd scummvm
patch -p0 < ../Scummvm.r35535.patch

Finally, configure and make

./configure --disable-mt32emu --host=ipod
make

At this point, I usually get the following linker error

scummvm.elf2flt(.text+0x3726c4): In function `wrapInSaveFile(Common::SeekableReadStream*)':
backends/saves/compressed/compressed-saves.cpp:31: undefined reference to `Common::wrapCompressedReadStream(Common::SeekableReadStream*)'
scummvm.elf2flt(.text+0x3726ec): In function `wrapOutSaveFile(Common::WriteStream*)':
backends/saves/compressed/compressed-saves.cpp:35: undefined reference to `Common::wrapCompressedWriteStream(Common::WriteStream*)
collect2: ld returned 1 exit status

I think this is caused by a bug in the Makefile of this revision. You have to add the common/libcommon.a library higher in the link chain, in particular before the backends/libbackends.a. I.e. issue the command (in one single line)

arm-uclinux-elf-g++  -Wl,-elf2flt -lm  backends/platform/ipod/events.o backends/platform/ipod/graphics.o backends/platform/ipod/main.o 
backends/platform/ipod/sdl.o backends/platform/ipod/cop.o base/libbase.a engines/scumm/libscumm.a engines/agi/libagi.a engines/agos/libagos.a 
engines/cine/libcine.a engines/drascula/libdrascula.a engines/gob/libgob.a engines/groovie/libgroovie.a engines/kyra/libkyra.a engines/lure/liblure.a 
engines/parallaction/libparallaction.a engines/queen/libqueen.a engines/saga/libsaga.a engines/sky/libsky.a engines/sword1/libsword1.a 
engines/sword2/libsword2.a engines/touche/libtouche.a engines/tucker/libtucker.a gui/libgui.a graphics/libgraphics.a sound/libsound.a common/libcommon.a
engines/libengines.a backends/libbackends.a common/libcommon.a ../libs/ttk/libs/SDL/libSDL.a -o scummvm


Setup/configuration

Copy the binary to your iPod as well as games. If you're using an iPod with low resolution, the default GUI theme is not going to display properly on the iPod. You should get the scummipod_theme.tgz file and extract it to /usr/share/scummvm. Then create a shortcut/link/loader entry to launch the binary with this theme:

/usr/bin/scummvm --gui-theme=/usr/share/scummvm/scummipod.

Controls are as follows:

  • Scroll counter-clockwise to left click
  • Scroll clockwise to right click
  • Press each of the four directions to move the cursor
  • Move the hold button to bring up the menu (to save/load or quit)


ScummVM rev 23292 with audio support

Downloads

ScummVM rev.23292 with sound   Mirror 1 (rapidshare.com) | (Mirror 2 (mox.net)

Features

  • Full sound support for Adlib, PCSpeaker and PCJr
  • New control scheme, trackpad-like
  • Complete sources
  • Scaling should work. Support for iPod 5G, nano, video (?).
  • Savegames working

Binaries

There are two binaries in the release folder:

  • scummvm_aq -> Audio Quality. This versions features the best audio quality for the best sound without stuttering. It is afflicted by a huge latency though. Due to the nature of graphical adventures, a perfectly timed audio is not always required to enjoy the game, so this issue may or may not bother you. If you want to enjoy a full instrumental Adlib sound choose this version.
  • scummvm -> Standard version. The sound of this version is barely acceptable (choppy) but tightly timed with the graphics. Using Adlib sound it sometimes produces noises and stuttering and noticeable slowdowns. Nonetheless it runs and sounds great with PCSpeaker or IBM PCjr (better), if you want to go retro this version is raccomended choice.
  • scummvm_fs -> I don't build this version anymore, the gain is marginal and the issues are still there. If you feel to, experiment with FSKIP and FRAMES_SKIPPED values in backend/ipod/sdl-common.h

If you are using Zeroslackr, inside the 'release' folder there's a Launch directory containing two launch script. They will work as long as you place the Launch directory and the binaries inside /ZeroSlackr/opt/Emulators/ScummVM. Then add in your /loader.cfg files the following lines:

ScummVM_AUDIOQUALITY @ (hd0,1)/boot/vmlinux root=/dev/hda2 rootfstype=vfat rw quiet autoexec=/opt/Emulators/ScummVM/Launch/scummvm_aq.sh
ScummVM @ (hd0,1)/boot/vmlinux root=/dev/hda2 rootfstype=vfat rw quiet autoexec=/opt/Emulators/ScummVM/Launch/scummvm.sh

In those scripts, the processor is set to 78.

Controls

  • Tap Wheel: Tap the wheel as a directional trackpad to move the mouse pointer (8 directions allowed)
  • (Pressed) Select button: Mouse Left Click
  • (Pressed) Rewind: Mouse Right Click
  • (Pressed) Forward: Mouse Right Click
  • (Pressed) Menu: In-Game Menu
  • (Pressed) Play/Pause: number 6 (to enter the codes and skip the protections, i.e. Monkey Island 2)
  • Hold: Esc/Skip

How to right click on objects:

1) Just press Forward or Rewind on the hotspot. Be fast as the tapping will move the pointer at the same time.

or (better)

2) Press the Select Button over the object (that equals to the Left Button) and THEN add the Forward or Rewind button. The controls have been designed to stop the Tap Wheel moving the pointer when the Select Button is pressed, so while you prepare to press Forward or Rewind, the pointer will stay in place. Use this tecniques to "anchor" the pointer to an hot spot.

Compatibility

This iPL build uses an older scummvm revision than the previous one, and should be identified as v.0.10.0

Accordingly, the ScummVM compatibility list is the following: http://www.scummvm.org/compatibility/0.10.0/

(with audio enabled) the DIG will crash after the intro both in the retail and the demo version (not enough memory), even if you skip the intro. (with audio enabled) COMI will not load (not enough memory). (with audio enabled) BS1 and BS2 will not load (not enough memory)

Known Issues

  • Due to the new control scheme, you could have difficulties browsing the audio options in the configuration GUI. In order to change the Audio device edit the .scummvmrc file located in the same position of the executable (launch the binary once before you do that). Note that the dot '.' before the name means that the file is usually hidden in Linux/MacOs: turn on the Display Hidden File option your system provide.

I changed the location of the default ScummVM configuration file to help you do edit it, but you can also specify a custom config files by commandline (one of the Adlib games and one for the PCSpeaker games, for example). Refer to this page to understand how to edit those files: http://wiki.scummvm.org/index.php/User_Manual/Configuring_ScummVM#Using_the_configuration_file_to_configure_ScummVM As quick reference to change audio device, add to the [scummvm] section:

music_driver=

Then chose between null, adlib, pcspk, pcjr. You can add the parameter also to the single game configuration, for example:

[monkey-vga]
description=The Secret of Monkey Island (VGA/DOS/English)
path=/mnt/ZeroSlackr/opt/Emulators/ScummVM/monkey
music_driver=pcjr
subtitles=false
platform=pc
gameid=monkey
language=en

Then remember to chose Edit Game and in the Audio tab, activate the checkbox Override Global configuration.

  • The audio driver "seq" which calls the OSS MIDI sequencer (dev/sequencer) does not work.
  • Audio CD games ("Talkie") won't work (no sound)
  • Due to an unresolved issue on input, your samegame will have a name like "??????????????????????????????" but it should load correctly.

Older versions

To do

  • COP. Melknin wrote some code for COP that does not crash but does not work as expected either. Here we need someone who knows what he's doing (please contact me). Hopefully this should fix the audio.
  • Eventually migrate this code to a newer revision. I tried but my audio implementation failed to work with the newer backend format: I don't know why, as the SDL/OSS build for the desktop works, the ipod build compiles but then crashes at the beginning cursing about threads.

Thanks to the iPodlinux community, sid77 and melknin to have worked on scummvm before.

For comments and info refer to this forum post on ipodlinux.org: http://ipodlinux.org/forums/viewtopic.php?f=9&t=209&start=10

Contacts for this build

iPodLinux user: user:uomoartificiale

email: gr2.decode AT gmail DOT com