ScummVM

From iPodLinux

(Difference between revisions)
Jump to: navigation, search
(wiki markup. yay)
Line 54: Line 54:
[[User:Sid77|Sid77]]
[[User:Sid77|Sid77]]
-
= Compiling melknin's patch =
+
== Compiling melknin's patch ==
-
To compile, I assume you have the [[toolchain]] already set up. Additionally, you should have retrieved the iPodLinux libraries: <br>
+
To compile, I assume you have the [[toolchain]] already set up. Additionally, you should have retrieved the iPodLinux libraries:
-
<code>svn co https://ipodlinux.svn.sourceforge.net/svnroot/ipodlinux/libs libs</code><br>
+
svn co https://ipodlinux.svn.sourceforge.net/svnroot/ipodlinux/libs libs
-
You should then get the patch and apply it to ScummVM revision 35535:<br>
+
 
-
<code>
+
You should then get the patch and apply it to ScummVM revision 35535:
-
wget http://ipodlinux.org/w/images/b/b5/Scummvm.r35535.patch <br>
+
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 <br>
+
svn co -r 35535 https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk/ scummvm
-
cd scummvm <br>
+
cd scummvm
-
patch -p0 < ../Scummvm.r35535.patch <br>
+
patch -p0 < ../Scummvm.r35535.patch
-
</code>
+
 
-
<br>
+
Finally, configure and make
-
Finally, configure and make <br>
+
./configure --disable-mt32emu --host=ipod
-
<code>
+
make
-
./configure --disable-mt32emu --host=ipod <br>
+
 
-
make
+
At this point, I usually get the following linker error
-
</code>
+
scummvm.elf2flt(.text+0x3726c4): In function `wrapInSaveFile(Common::SeekableReadStream*)':
-
<br>
+
backends/saves/compressed/compressed-saves.cpp:31: undefined reference to `Common::wrapCompressedReadStream(Common::SeekableReadStream*)'
-
At this point, I usually get the following linker error<br>
+
scummvm.elf2flt(.text+0x3726ec): In function `wrapOutSaveFile(Common::WriteStream*)':
-
<code>
+
backends/saves/compressed/compressed-saves.cpp:35: undefined reference to `Common::wrapCompressedWriteStream(Common::WriteStream*)
-
scummvm.elf2flt(.text+0x3726c4): In function `wrapInSaveFile(Common::SeekableReadStream*)': <br>
+
collect2: ld returned 1 exit status
-
backends/saves/compressed/compressed-saves.cpp:31: undefined reference to `Common::wrapCompressedReadStream(Common::SeekableReadStream*)' <br>
+
 
-
scummvm.elf2flt(.text+0x3726ec): In function `wrapOutSaveFile(Common::WriteStream*)': <br>
+
I think this is caused by a bug in the Makefile of this revision. You have to add the <tt>common/libcommon.a</tt> library higher in the link chain, in particular before the backends/libbackends.a. I.e. issue the command (in one single line)
-
backends/saves/compressed/compressed-saves.cpp:35: undefined reference to `Common::wrapCompressedWriteStream(Common::WriteStream*)' <br>
+
arm-uclinux-elf-g++  -Wl,-elf2flt -lm  backends/platform/ipod/events.o backends/platform/ipod/graphics.o backends/platform/ipod/main.o  
-
collect2: ld returned 1 exit status
+
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  
-
</code>
+
engines/cine/libcine.a engines/drascula/libdrascula.a engines/gob/libgob.a engines/groovie/libgroovie.a engines/kyra/libkyra.a engines/lure/liblure.a  
-
<br>
+
engines/parallaction/libparallaction.a engines/queen/libqueen.a engines/saga/libsaga.a engines/sky/libsky.a engines/sword1/libsword1.a  
-
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 <br>
+
engines/sword2/libsword2.a engines/touche/libtouche.a engines/tucker/libtucker.a gui/libgui.a graphics/libgraphics.a sound/libsound.a common/libcommon.a
-
<code>
+
engines/libengines.a backends/libbackends.a common/libcommon.a ../libs/ttk/libs/SDL/libSDL.a -o scummvm
-
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
+
 
-
</code>
+
== Setup/configuration ==
== Setup/configuration ==
Line 95: Line 94:
[[Category:Emulators]]
[[Category:Emulators]]
-
[[File:[[File:Example.jpg]]]]
 

Revision as of 10:06, 19 November 2009


ScummVM
Script Creation Utility for Maniac Mansion Virtual Machine
ScummVM block.png
Category Emulators
Maintainer Sid77
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
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)