[Scummvm-cvs-logs] SF.net SVN: scummvm:[51798] scummvm/branches/gsoc2010-testbed
sud03r at users.sourceforge.net
sud03r at users.sourceforge.net
Fri Aug 6 22:13:46 CEST 2010
Revision: 51798
http://scummvm.svn.sourceforge.net/scummvm/?rev=51798&view=rev
Author: sud03r
Date: 2010-08-06 20:13:41 +0000 (Fri, 06 Aug 2010)
Log Message:
-----------
TESTBED: Merged changes from trunk to my branch
Modified Paths:
--------------
scummvm/branches/gsoc2010-testbed/AUTHORS
scummvm/branches/gsoc2010-testbed/Makefile
scummvm/branches/gsoc2010-testbed/Makefile.common
scummvm/branches/gsoc2010-testbed/NEWS
scummvm/branches/gsoc2010-testbed/README
scummvm/branches/gsoc2010-testbed/backends/events/default/default-events.cpp
scummvm/branches/gsoc2010-testbed/backends/fs/amigaos4/amigaos4-fs.cpp
scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs-factory.cpp
scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.cpp
scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.h
scummvm/branches/gsoc2010-testbed/backends/fs/psp/psp-stream.cpp
scummvm/branches/gsoc2010-testbed/backends/keymapper/remap-dialog.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/alsa.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/camd.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/coreaudio.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/coremidi.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/dmedia.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/seq.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/stmidi.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/timidity.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/windows.cpp
scummvm/branches/gsoc2010-testbed/backends/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/android/README.build
scummvm/branches/gsoc2010-testbed/backends/platform/android/android.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/android/android.mk
scummvm/branches/gsoc2010-testbed/backends/platform/android/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java
scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java
scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java
scummvm/branches/gsoc2010-testbed/backends/platform/dc/Makefile
scummvm/branches/gsoc2010-testbed/backends/platform/dc/dc.h
scummvm/branches/gsoc2010-testbed/backends/platform/dc/dcmain.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/dc/display.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/dc/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/dc/selector.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm7/source/main.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/makefile
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/blitters.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/blitters.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/cdaudio.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/cdaudio.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/dsmain.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/dsmain.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/dsoptions.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/dsoptions.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/fat/gba_nds_fat.c
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/fat/io_nmmc.c
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/gbampsave.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/gbampsave.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/keys.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/keys.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/osystem_ds.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/osystem_ds.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/portdefs.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/scummhelp.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/scummhelp.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/touchkeyboard.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/touchkeyboard.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/wordcompletion.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/wordcompletion.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/zipreader.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/zipreader.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/commoninclude/NDS/scummvm_ipc.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/ds.mk
scummvm/branches/gsoc2010-testbed/backends/platform/ds/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/gp2x/build/bundle.sh
scummvm/branches/gsoc2010-testbed/backends/platform/gp2x/events.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/gp2x/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/build/bundle.sh
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/gp2xwiz-events.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/gp2xwiz-graphics.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/iphone/iphone_video.m
scummvm/branches/gsoc2010-testbed/backends/platform/iphone/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/iphone/osys_events.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/linuxmoto/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/n64/Makefile
scummvm/branches/gsoc2010-testbed/backends/platform/n64/README.N64
scummvm/branches/gsoc2010-testbed/backends/platform/n64/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/null/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/ps2/Makefile.gdb
scummvm/branches/gsoc2010-testbed/backends/platform/ps2/Makefile.ps2
scummvm/branches/gsoc2010-testbed/backends/platform/ps2/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/psp/Makefile
scummvm/branches/gsoc2010-testbed/backends/platform/psp/README.PSP
scummvm/branches/gsoc2010-testbed/backends/platform/psp/README.PSP.in
scummvm/branches/gsoc2010-testbed/backends/platform/psp/audio.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/audio.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/display_client.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/display_manager.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/display_manager.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/memory.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/memory.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/psp/mp3.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/mp3.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/osys_psp.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/osys_psp.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/powerman.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/powerman.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/psp_main.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/psploader.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/thread.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/thread.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/trace.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/trace.h
scummvm/branches/gsoc2010-testbed/backends/platform/samsungtv/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/sdl/events.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/sdl/graphics.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/sdl/main.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/sdl/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/sdl/sdl.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/sdl/sdl.h
scummvm/branches/gsoc2010-testbed/backends/platform/symbian/src/SymbianActions.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/symbian/src/SymbianOS.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/wii/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/wii/options.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/wii/osystem.h
scummvm/branches/gsoc2010-testbed/backends/platform/wii/osystem_gfx.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/wince/CEActionsPocket.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/wince/CEActionsSmartphone.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/wince/CELauncherDialog.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/wince/module.mk
scummvm/branches/gsoc2010-testbed/backends/platform/wince/wince-sdl.cpp
scummvm/branches/gsoc2010-testbed/backends/plugins/psp/psp-provider.cpp
scummvm/branches/gsoc2010-testbed/backends/plugins/win32/win32-provider.cpp
scummvm/branches/gsoc2010-testbed/backends/vkeybd/virtual-keyboard.cpp
scummvm/branches/gsoc2010-testbed/base/commandLine.cpp
scummvm/branches/gsoc2010-testbed/base/internal_version.h
scummvm/branches/gsoc2010-testbed/base/internal_version.h.in
scummvm/branches/gsoc2010-testbed/base/main.cpp
scummvm/branches/gsoc2010-testbed/base/plugins.cpp
scummvm/branches/gsoc2010-testbed/base/version.cpp
scummvm/branches/gsoc2010-testbed/common/algorithm.h
scummvm/branches/gsoc2010-testbed/common/config-file.cpp
scummvm/branches/gsoc2010-testbed/common/error.cpp
scummvm/branches/gsoc2010-testbed/common/error.h
scummvm/branches/gsoc2010-testbed/common/events.h
scummvm/branches/gsoc2010-testbed/common/file.cpp
scummvm/branches/gsoc2010-testbed/common/hashmap.h
scummvm/branches/gsoc2010-testbed/common/macresman.cpp
scummvm/branches/gsoc2010-testbed/common/module.mk
scummvm/branches/gsoc2010-testbed/common/ptr.h
scummvm/branches/gsoc2010-testbed/common/savefile.h
scummvm/branches/gsoc2010-testbed/common/scummsys.h
scummvm/branches/gsoc2010-testbed/common/singleton.h
scummvm/branches/gsoc2010-testbed/common/str.cpp
scummvm/branches/gsoc2010-testbed/common/str.h
scummvm/branches/gsoc2010-testbed/common/stream.cpp
scummvm/branches/gsoc2010-testbed/common/stream.h
scummvm/branches/gsoc2010-testbed/common/system.h
scummvm/branches/gsoc2010-testbed/common/textconsole.cpp
scummvm/branches/gsoc2010-testbed/common/unarj.cpp
scummvm/branches/gsoc2010-testbed/common/unzip.cpp
scummvm/branches/gsoc2010-testbed/common/unzip.h
scummvm/branches/gsoc2010-testbed/common/util.cpp
scummvm/branches/gsoc2010-testbed/common/util.h
scummvm/branches/gsoc2010-testbed/configure
scummvm/branches/gsoc2010-testbed/dists/android/mkmanifest.pl
scummvm/branches/gsoc2010-testbed/dists/engine-data/kyra.dat
scummvm/branches/gsoc2010-testbed/dists/iphone/Info.plist
scummvm/branches/gsoc2010-testbed/dists/iphone/scummvm.xcodeproj/project.pbxproj
scummvm/branches/gsoc2010-testbed/engines/advancedDetector.cpp
scummvm/branches/gsoc2010-testbed/engines/advancedDetector.h
scummvm/branches/gsoc2010-testbed/engines/agi/agi.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/agi.h
scummvm/branches/gsoc2010-testbed/engines/agi/console.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/console.h
scummvm/branches/gsoc2010-testbed/engines/agi/cycle.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/keyboard.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/loader_v2.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/loader_v3.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/module.mk
scummvm/branches/gsoc2010-testbed/engines/agi/op_cmd.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/op_test.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/picture.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/preagi.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/saveload.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound.h
scummvm/branches/gsoc2010-testbed/engines/agi/sprite.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sprite.h
scummvm/branches/gsoc2010-testbed/engines/agi/text.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/view.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/view.h
scummvm/branches/gsoc2010-testbed/engines/agi/wagparser.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/words.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/agos.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/agos.h
scummvm/branches/gsoc2010-testbed/engines/agos/cursor.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/draw.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/event.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/gfx.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/icons.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/input.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/midi.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/verb.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/vga_e2.cpp
scummvm/branches/gsoc2010-testbed/engines/agos/vga_s2.cpp
scummvm/branches/gsoc2010-testbed/engines/cine/cine.cpp
scummvm/branches/gsoc2010-testbed/engines/cine/cine.h
scummvm/branches/gsoc2010-testbed/engines/cine/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/cine/gfx.cpp
scummvm/branches/gsoc2010-testbed/engines/cine/gfx.h
scummvm/branches/gsoc2010-testbed/engines/cine/saveload.cpp
scummvm/branches/gsoc2010-testbed/engines/cine/saveload.h
scummvm/branches/gsoc2010-testbed/engines/cine/various.cpp
scummvm/branches/gsoc2010-testbed/engines/cruise/cruise.cpp
scummvm/branches/gsoc2010-testbed/engines/cruise/cruise_main.cpp
scummvm/branches/gsoc2010-testbed/engines/cruise/decompiler.cpp
scummvm/branches/gsoc2010-testbed/engines/cruise/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/cruise/vars.cpp
scummvm/branches/gsoc2010-testbed/engines/cruise/vars.h
scummvm/branches/gsoc2010-testbed/engines/dialogs.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/animation.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/barchive.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/draci.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/game.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/game.h
scummvm/branches/gsoc2010-testbed/engines/draci/module.mk
scummvm/branches/gsoc2010-testbed/engines/draci/script.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/sound.h
scummvm/branches/gsoc2010-testbed/engines/draci/walking.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/actors.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/animation.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/converse.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/drascula.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/drascula.h
scummvm/branches/gsoc2010-testbed/engines/drascula/graphics.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/interface.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/module.mk
scummvm/branches/gsoc2010-testbed/engines/drascula/objects.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/palette.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/rooms.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/talk.cpp
scummvm/branches/gsoc2010-testbed/engines/engine.cpp
scummvm/branches/gsoc2010-testbed/engines/game.cpp
scummvm/branches/gsoc2010-testbed/engines/game.h
scummvm/branches/gsoc2010-testbed/engines/gob/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/gob/gob.cpp
scummvm/branches/gsoc2010-testbed/engines/gob/inter_playtoons.cpp
scummvm/branches/gsoc2010-testbed/engines/gob/inter_v1.cpp
scummvm/branches/gsoc2010-testbed/engines/gob/mult_v2.cpp
scummvm/branches/gsoc2010-testbed/engines/gob/videoplayer.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/cell.h
scummvm/branches/gsoc2010-testbed/engines/groovie/cursor.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/cursor.h
scummvm/branches/gsoc2010-testbed/engines/groovie/debug.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/debug.h
scummvm/branches/gsoc2010-testbed/engines/groovie/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/font.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/font.h
scummvm/branches/gsoc2010-testbed/engines/groovie/graphics.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/graphics.h
scummvm/branches/gsoc2010-testbed/engines/groovie/groovie.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/groovie.h
scummvm/branches/gsoc2010-testbed/engines/groovie/music.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/music.h
scummvm/branches/gsoc2010-testbed/engines/groovie/player.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/resource.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/roq.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/script.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/script.h
scummvm/branches/gsoc2010-testbed/engines/groovie/vdx.cpp
scummvm/branches/gsoc2010-testbed/engines/groovie/vdx.h
scummvm/branches/gsoc2010-testbed/engines/kyra/debugger.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/gui_lok.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/gui_lol.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/gui_v2.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_hof.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_lok.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_lok.h
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_mr.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_mr.h
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_v1.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_v2.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/kyra_v2.h
scummvm/branches/gsoc2010-testbed/engines/kyra/lol.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/module.mk
scummvm/branches/gsoc2010-testbed/engines/kyra/resource.h
scummvm/branches/gsoc2010-testbed/engines/kyra/saveload.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/scene_lol.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/scene_mr.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/screen.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/screen_lol.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/screen_lol.h
scummvm/branches/gsoc2010-testbed/engines/kyra/screen_v2.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/screen_v2.h
scummvm/branches/gsoc2010-testbed/engines/kyra/script_tim.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/sequences_lok.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/sound_intern.h
scummvm/branches/gsoc2010-testbed/engines/kyra/sound_lok.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/sound_lol.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/sound_midi.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/sound_towns.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/staticres.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/text_hof.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/text_lok.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/text_mr.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/timer_hof.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/timer_lok.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/vqa.cpp
scummvm/branches/gsoc2010-testbed/engines/kyra/vqa.h
scummvm/branches/gsoc2010-testbed/engines/lure/debugger.cpp
scummvm/branches/gsoc2010-testbed/engines/lure/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/lure/fights.cpp
scummvm/branches/gsoc2010-testbed/engines/lure/game.cpp
scummvm/branches/gsoc2010-testbed/engines/lure/game.h
scummvm/branches/gsoc2010-testbed/engines/lure/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/lure/sound.h
scummvm/branches/gsoc2010-testbed/engines/m4/animation.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/animation.h
scummvm/branches/gsoc2010-testbed/engines/m4/assets.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/assets.h
scummvm/branches/gsoc2010-testbed/engines/m4/console.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/converse.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/events.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/events.h
scummvm/branches/gsoc2010-testbed/engines/m4/font.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/font.h
scummvm/branches/gsoc2010-testbed/engines/m4/globals.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/globals.h
scummvm/branches/gsoc2010-testbed/engines/m4/graphics.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/graphics.h
scummvm/branches/gsoc2010-testbed/engines/m4/hotspot.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/hotspot.h
scummvm/branches/gsoc2010-testbed/engines/m4/m4.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/m4.h
scummvm/branches/gsoc2010-testbed/engines/m4/m4_scene.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/m4_scene.h
scummvm/branches/gsoc2010-testbed/engines/m4/mads_anim.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_anim.h
scummvm/branches/gsoc2010-testbed/engines/m4/mads_logic.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_logic.h
scummvm/branches/gsoc2010-testbed/engines/m4/mads_menus.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_menus.h
scummvm/branches/gsoc2010-testbed/engines/m4/mads_scene.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_scene.h
scummvm/branches/gsoc2010-testbed/engines/m4/mads_views.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_views.h
scummvm/branches/gsoc2010-testbed/engines/m4/midi.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/module.mk
scummvm/branches/gsoc2010-testbed/engines/m4/rails.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/rails.h
scummvm/branches/gsoc2010-testbed/engines/m4/scene.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/scene.h
scummvm/branches/gsoc2010-testbed/engines/m4/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/sound.h
scummvm/branches/gsoc2010-testbed/engines/m4/sprite.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/sprite.h
scummvm/branches/gsoc2010-testbed/engines/made/database.cpp
scummvm/branches/gsoc2010-testbed/engines/made/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/made/made.cpp
scummvm/branches/gsoc2010-testbed/engines/made/resource.cpp
scummvm/branches/gsoc2010-testbed/engines/made/scriptfuncs.cpp
scummvm/branches/gsoc2010-testbed/engines/made/scriptfuncs.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/console.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/console.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/dialogs.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/graphics.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/resource.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_external.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_external.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_saveload.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_saveload.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_scripts.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_scripts.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/riven_vars.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/mohawk/video.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/callables_ns.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/exec.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/exec_br.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/gfxbase.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/graphics.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/gui_br.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/input.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/parallaction.h
scummvm/branches/gsoc2010-testbed/engines/parallaction/parallaction_br.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/parallaction_ns.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/parser.h
scummvm/branches/gsoc2010-testbed/engines/parallaction/parser_br.cpp
scummvm/branches/gsoc2010-testbed/engines/parallaction/walk.cpp
scummvm/branches/gsoc2010-testbed/engines/queen/music.cpp
scummvm/branches/gsoc2010-testbed/engines/queen/queen.cpp
scummvm/branches/gsoc2010-testbed/engines/queen/resource.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/actor.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/console.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/events.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/font.h
scummvm/branches/gsoc2010-testbed/engines/saga/interface.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/music.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/music.h
scummvm/branches/gsoc2010-testbed/engines/saga/puzzle.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/render.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/saga.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/saga.h
scummvm/branches/gsoc2010-testbed/engines/saga/scene.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/script.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/script.h
scummvm/branches/gsoc2010-testbed/engines/saga/sfuncs.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/sfuncs_ihnm.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/sndres.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/saga/sound.h
scummvm/branches/gsoc2010-testbed/engines/saga/sthread.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/console.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/console.h
scummvm/branches/gsoc2010-testbed/engines/sci/debug.h
scummvm/branches/gsoc2010-testbed/engines/sci/decompressor.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/features.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/features.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/gc.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/gc.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kernel.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kernel.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kevent.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kfile.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kgraphics.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/klists.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kmath.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kmenu.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kmisc.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kmovement.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kparse.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kpathing.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kscripts.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/ksound.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kstring.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/message.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/savegame.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/savegame.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/script.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/script.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/scriptdebug.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/seg_manager.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/seg_manager.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/segment.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/segment.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/selector.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/selector.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/state.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/state.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/static_selectors.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/vm.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/vm.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/vm_types.h
scummvm/branches/gsoc2010-testbed/engines/sci/event.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/event.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/animate.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/animate.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/cache.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/cache.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/compare.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/compare.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/controls.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/coordadjuster.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/coordadjuster.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/cursor.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/cursor.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/font.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/font.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/fontsjis.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/frameout.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/frameout.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/helpers.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/maciconbar.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/menu.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/menu.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/paint.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/paint.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/paint16.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/paint16.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/paint32.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/paint32.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/palette.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/palette.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/picture.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/picture.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/portrait.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/portrait.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/ports.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/ports.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/robot.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/robot.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/screen.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/screen.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/text16.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/text16.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/transitions.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/transitions.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/view.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/view.h
scummvm/branches/gsoc2010-testbed/engines/sci/module.mk
scummvm/branches/gsoc2010-testbed/engines/sci/parser/grammar.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/parser/said.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/parser/vocabulary.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/parser/vocabulary.h
scummvm/branches/gsoc2010-testbed/engines/sci/resource.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/resource.h
scummvm/branches/gsoc2010-testbed/engines/sci/resource_audio.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sci.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sci.h
scummvm/branches/gsoc2010-testbed/engines/sci/sound/audio.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/audio.h
scummvm/branches/gsoc2010-testbed/engines/sci/sound/drivers/adlib.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/drivers/fb01.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/drivers/midi.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/drivers/mididriver.h
scummvm/branches/gsoc2010-testbed/engines/sci/sound/midiparser_sci.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/midiparser_sci.h
scummvm/branches/gsoc2010-testbed/engines/sci/sound/music.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/music.h
scummvm/branches/gsoc2010-testbed/engines/sci/sound/soundcmd.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/soundcmd.h
scummvm/branches/gsoc2010-testbed/engines/sci/video/seq_decoder.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/video/seq_decoder.h
scummvm/branches/gsoc2010-testbed/engines/sci/video/vmd_decoder.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/video/vmd_decoder.h
scummvm/branches/gsoc2010-testbed/engines/scumm/charset.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/debugger.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/scumm/dialogs.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/gfx.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/gfx.h
scummvm/branches/gsoc2010-testbed/engines/scumm/imuse/instrument.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/player_nes.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/saveload.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/script_v5.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/scumm-md5.h
scummvm/branches/gsoc2010-testbed/engines/scumm/scumm.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/sound.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/string.cpp
scummvm/branches/gsoc2010-testbed/engines/scumm/verbs.h
scummvm/branches/gsoc2010-testbed/engines/sky/sky.cpp
scummvm/branches/gsoc2010-testbed/engines/sword1/control.cpp
scummvm/branches/gsoc2010-testbed/engines/sword1/memman.h
scummvm/branches/gsoc2010-testbed/engines/sword1/music.cpp
scummvm/branches/gsoc2010-testbed/engines/sword2/anims.cpp
scummvm/branches/gsoc2010-testbed/engines/sword2/music.cpp
scummvm/branches/gsoc2010-testbed/engines/sword2/resman.h
scummvm/branches/gsoc2010-testbed/engines/sword2/sword2.cpp
scummvm/branches/gsoc2010-testbed/engines/teenagent/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/teenagent/module.mk
scummvm/branches/gsoc2010-testbed/engines/teenagent/teenagent.cpp
scummvm/branches/gsoc2010-testbed/engines/testbed/config.cpp
scummvm/branches/gsoc2010-testbed/engines/testbed/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/actors.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/bmv.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/cliprect.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/graphics.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/handle.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/object.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/pcode.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/savescn.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/strres.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/tinlib.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/tinsel.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/tinsel.h
scummvm/branches/gsoc2010-testbed/engines/touche/detection.cpp
scummvm/branches/gsoc2010-testbed/engines/touche/midi.cpp
scummvm/branches/gsoc2010-testbed/engines/touche/touche.cpp
scummvm/branches/gsoc2010-testbed/engines/tucker/detection.cpp
scummvm/branches/gsoc2010-testbed/graphics/font.cpp
scummvm/branches/gsoc2010-testbed/graphics/font.h
scummvm/branches/gsoc2010-testbed/graphics/fontman.cpp
scummvm/branches/gsoc2010-testbed/graphics/fontman.h
scummvm/branches/gsoc2010-testbed/graphics/scaler/thumbnail_intern.cpp
scummvm/branches/gsoc2010-testbed/graphics/scaler.h
scummvm/branches/gsoc2010-testbed/graphics/thumbnail.cpp
scummvm/branches/gsoc2010-testbed/graphics/thumbnail.h
scummvm/branches/gsoc2010-testbed/graphics/video/avi_decoder.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/avi_decoder.h
scummvm/branches/gsoc2010-testbed/graphics/video/codecs/cinepak.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/codecs/qdm2.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/codecs/qdm2.h
scummvm/branches/gsoc2010-testbed/graphics/video/coktelvideo/coktelvideo.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/coktelvideo/coktelvideo.h
scummvm/branches/gsoc2010-testbed/graphics/video/dxa_decoder.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/dxa_decoder.h
scummvm/branches/gsoc2010-testbed/graphics/video/flic_decoder.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/flic_decoder.h
scummvm/branches/gsoc2010-testbed/graphics/video/mpeg_player.h
scummvm/branches/gsoc2010-testbed/graphics/video/qt_decoder.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/qt_decoder.h
scummvm/branches/gsoc2010-testbed/graphics/video/smk_decoder.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/smk_decoder.h
scummvm/branches/gsoc2010-testbed/graphics/video/video_decoder.cpp
scummvm/branches/gsoc2010-testbed/graphics/video/video_decoder.h
scummvm/branches/gsoc2010-testbed/gui/EditTextWidget.cpp
scummvm/branches/gsoc2010-testbed/gui/EditTextWidget.h
scummvm/branches/gsoc2010-testbed/gui/GuiManager.cpp
scummvm/branches/gsoc2010-testbed/gui/GuiManager.h
scummvm/branches/gsoc2010-testbed/gui/KeysDialog.cpp
scummvm/branches/gsoc2010-testbed/gui/ListWidget.cpp
scummvm/branches/gsoc2010-testbed/gui/ListWidget.h
scummvm/branches/gsoc2010-testbed/gui/PopUpWidget.cpp
scummvm/branches/gsoc2010-testbed/gui/PopUpWidget.h
scummvm/branches/gsoc2010-testbed/gui/ScrollBarWidget.cpp
scummvm/branches/gsoc2010-testbed/gui/ScrollBarWidget.h
scummvm/branches/gsoc2010-testbed/gui/TabWidget.cpp
scummvm/branches/gsoc2010-testbed/gui/TabWidget.h
scummvm/branches/gsoc2010-testbed/gui/ThemeEngine.cpp
scummvm/branches/gsoc2010-testbed/gui/ThemeEngine.h
scummvm/branches/gsoc2010-testbed/gui/ThemeParser.cpp
scummvm/branches/gsoc2010-testbed/gui/about.cpp
scummvm/branches/gsoc2010-testbed/gui/browser.cpp
scummvm/branches/gsoc2010-testbed/gui/chooser.cpp
scummvm/branches/gsoc2010-testbed/gui/console.cpp
scummvm/branches/gsoc2010-testbed/gui/credits.h
scummvm/branches/gsoc2010-testbed/gui/debugger.cpp
scummvm/branches/gsoc2010-testbed/gui/debugger.h
scummvm/branches/gsoc2010-testbed/gui/dialog.cpp
scummvm/branches/gsoc2010-testbed/gui/dialog.h
scummvm/branches/gsoc2010-testbed/gui/editable.cpp
scummvm/branches/gsoc2010-testbed/gui/editable.h
scummvm/branches/gsoc2010-testbed/gui/error.cpp
scummvm/branches/gsoc2010-testbed/gui/launcher.cpp
scummvm/branches/gsoc2010-testbed/gui/massadd.cpp
scummvm/branches/gsoc2010-testbed/gui/message.cpp
scummvm/branches/gsoc2010-testbed/gui/module.mk
scummvm/branches/gsoc2010-testbed/gui/options.cpp
scummvm/branches/gsoc2010-testbed/gui/options.h
scummvm/branches/gsoc2010-testbed/gui/saveload.cpp
scummvm/branches/gsoc2010-testbed/gui/themebrowser.cpp
scummvm/branches/gsoc2010-testbed/gui/themes/default.inc
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic/classic_gfx.stx
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic/classic_layout.stx
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic/classic_layout_lowres.stx
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic.zip
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/scummmodern_gfx.stx
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/scummmodern_layout.stx
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/scummmodern_layout_lowres.stx
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern.zip
scummvm/branches/gsoc2010-testbed/gui/widget.cpp
scummvm/branches/gsoc2010-testbed/gui/widget.h
scummvm/branches/gsoc2010-testbed/ports.mk
scummvm/branches/gsoc2010-testbed/sound/audiocd.cpp
scummvm/branches/gsoc2010-testbed/sound/audiocd.h
scummvm/branches/gsoc2010-testbed/sound/audiostream.cpp
scummvm/branches/gsoc2010-testbed/sound/audiostream.h
scummvm/branches/gsoc2010-testbed/sound/decoders/adpcm.h
scummvm/branches/gsoc2010-testbed/sound/decoders/aiff.cpp
scummvm/branches/gsoc2010-testbed/sound/decoders/aiff.h
scummvm/branches/gsoc2010-testbed/sound/decoders/flac.cpp
scummvm/branches/gsoc2010-testbed/sound/decoders/flac.h
scummvm/branches/gsoc2010-testbed/sound/decoders/mp3.cpp
scummvm/branches/gsoc2010-testbed/sound/decoders/mp3.h
scummvm/branches/gsoc2010-testbed/sound/decoders/vag.h
scummvm/branches/gsoc2010-testbed/sound/decoders/voc.h
scummvm/branches/gsoc2010-testbed/sound/decoders/vorbis.cpp
scummvm/branches/gsoc2010-testbed/sound/decoders/vorbis.h
scummvm/branches/gsoc2010-testbed/sound/decoders/wave.h
scummvm/branches/gsoc2010-testbed/sound/fmopl.cpp
scummvm/branches/gsoc2010-testbed/sound/mididrv.cpp
scummvm/branches/gsoc2010-testbed/sound/mididrv.h
scummvm/branches/gsoc2010-testbed/sound/midiparser.cpp
scummvm/branches/gsoc2010-testbed/sound/midiparser.h
scummvm/branches/gsoc2010-testbed/sound/midiparser_smf.cpp
scummvm/branches/gsoc2010-testbed/sound/mods/protracker.h
scummvm/branches/gsoc2010-testbed/sound/module.mk
scummvm/branches/gsoc2010-testbed/sound/musicplugin.cpp
scummvm/branches/gsoc2010-testbed/sound/musicplugin.h
scummvm/branches/gsoc2010-testbed/sound/null.cpp
scummvm/branches/gsoc2010-testbed/sound/rate_arm_asm.s
scummvm/branches/gsoc2010-testbed/sound/softsynth/adlib.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fluidsynth.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/mt32.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/opl/dbopl.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/opl/mame.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/pcspk.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/sid.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/sid.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/wave6581.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/ym2612.cpp
scummvm/branches/gsoc2010-testbed/test/common/tokenizer.h
scummvm/branches/gsoc2010-testbed/tools/convbdf.c
scummvm/branches/gsoc2010-testbed/tools/create_kyradat/create_kyradat.cpp
scummvm/branches/gsoc2010-testbed/tools/create_kyradat/create_kyradat.h
scummvm/branches/gsoc2010-testbed/tools/create_kyradat/games.cpp
scummvm/branches/gsoc2010-testbed/tools/create_kyradat/tables.cpp
scummvm/branches/gsoc2010-testbed/tools/create_msvc/create_msvc.cpp
scummvm/branches/gsoc2010-testbed/tools/credits.pl
scummvm/branches/gsoc2010-testbed/tools/make-scumm-fontdata.c
scummvm/branches/gsoc2010-testbed/tools/md5table.c
scummvm/branches/gsoc2010-testbed/tools/module.mk
scummvm/branches/gsoc2010-testbed/tools/scumm-md5.txt
Added Paths:
-----------
scummvm/branches/gsoc2010-testbed/backends/platform/android/video.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/android/video.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/setup-builddirs.sh
scummvm/branches/gsoc2010-testbed/backends/platform/gp2x/gp2x-bundle.mk
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/build/bundle-debug.sh
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/build/scummvm-gdb.gpe
scummvm/branches/gsoc2010-testbed/backends/platform/gp2xwiz/gp2xwiz-bundle.mk
scummvm/branches/gsoc2010-testbed/backends/platform/psp/rtc.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/rtc.h
scummvm/branches/gsoc2010-testbed/backends/platform/psp/tests.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/psp/tests.h
scummvm/branches/gsoc2010-testbed/common/messages.cpp
scummvm/branches/gsoc2010-testbed/common/translation.cpp
scummvm/branches/gsoc2010-testbed/common/translation.h
scummvm/branches/gsoc2010-testbed/dists/android/AndroidManifest.xml
scummvm/branches/gsoc2010-testbed/dists/android/AndroidManifest.xml.in
scummvm/branches/gsoc2010-testbed/dists/android/res/drawable/scummvm.png
scummvm/branches/gsoc2010-testbed/dists/android/res/drawable/scummvm_big.png
scummvm/branches/gsoc2010-testbed/dists/iphone/icon-72.png
scummvm/branches/gsoc2010-testbed/engines/agi/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/agi/sound_2gs.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound_2gs.h
scummvm/branches/gsoc2010-testbed/engines/agi/sound_coco3.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound_coco3.h
scummvm/branches/gsoc2010-testbed/engines/agi/sound_midi.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound_midi.h
scummvm/branches/gsoc2010-testbed/engines/agi/sound_pcjr.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound_pcjr.h
scummvm/branches/gsoc2010-testbed/engines/agi/sound_sarien.cpp
scummvm/branches/gsoc2010-testbed/engines/agi/sound_sarien.h
scummvm/branches/gsoc2010-testbed/engines/cine/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/drascula/console.cpp
scummvm/branches/gsoc2010-testbed/engines/drascula/console.h
scummvm/branches/gsoc2010-testbed/engines/gob/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/kyra/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/kyra/staticres_lol.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_player.cpp
scummvm/branches/gsoc2010-testbed/engines/m4/mads_player.h
scummvm/branches/gsoc2010-testbed/engines/mohawk/detection_tables.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kernel_tables.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kvideo.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/workarounds.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/workarounds.h
scummvm/branches/gsoc2010-testbed/engines/sci/resource_intern.h
scummvm/branches/gsoc2010-testbed/engines/sci/sound/drivers/amigamac.cpp
scummvm/branches/gsoc2010-testbed/engines/tinsel/detection_tables.h
scummvm/branches/gsoc2010-testbed/gui/Tooltip.cpp
scummvm/branches/gsoc2010-testbed/gui/Tooltip.h
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/Arial.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/Arial12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/ArialBold.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/README
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/clR6x12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/clR6x12-iso-8859-5.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/clR6x12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/courr12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/fixed5x8-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/fixed5x8-iso-8859-5.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvB12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvB12-iso-8859-5.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvB12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvBO12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvBO12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvR12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvR12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/README.ScummVM
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazLT.font
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazLT.readme
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazlt/
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazlt/8
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic/clR6x12-iso-8859-5.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic/fixed5x8-iso-8859-5.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummclassic/helvb12-iso-8859-5.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/clR6x12-iso-8859-5.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/fixed5x8-iso-8859-5.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/helvb12-iso-8859-1.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/helvb12-iso-8859-5.fcc
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/radiobutton.bmp
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/radiobutton_empty.bmp
scummvm/branches/gsoc2010-testbed/po/
scummvm/branches/gsoc2010-testbed/po/POTFILES
scummvm/branches/gsoc2010-testbed/po/ca_ES.po
scummvm/branches/gsoc2010-testbed/po/de_DE.po
scummvm/branches/gsoc2010-testbed/po/es_ES.po
scummvm/branches/gsoc2010-testbed/po/fr_FR.po
scummvm/branches/gsoc2010-testbed/po/hu_HU.po
scummvm/branches/gsoc2010-testbed/po/it_IT.po
scummvm/branches/gsoc2010-testbed/po/module.mk
scummvm/branches/gsoc2010-testbed/po/remove-potcdate.sed
scummvm/branches/gsoc2010-testbed/po/ru_RU.po
scummvm/branches/gsoc2010-testbed/po/scummvm.pot
scummvm/branches/gsoc2010-testbed/po/uk_UA.po
scummvm/branches/gsoc2010-testbed/sound/decoders/mac_snd.cpp
scummvm/branches/gsoc2010-testbed/sound/decoders/mac_snd.h
scummvm/branches/gsoc2010-testbed/sound/null.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_audio.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_audio.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_euphony.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_euphony.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_driver.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_driver.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_fmsynth.h
scummvm/branches/gsoc2010-testbed/tools/po2c
Removed Paths:
-------------
scummvm/branches/gsoc2010-testbed/backends/fs/palmos/
scummvm/branches/gsoc2010-testbed/backends/midi/ypa1.cpp
scummvm/branches/gsoc2010-testbed/backends/midi/zodiac.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/PalmOS/
scummvm/branches/gsoc2010-testbed/backends/platform/android/scummvm-android-themeengine.patch
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/compressor/lz.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/compressor/lz.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/libcartreset/cartreset.c
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/libcartreset/cartreset_nolibfat.h
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/portdefs.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/ramsave.cpp
scummvm/branches/gsoc2010-testbed/backends/platform/ds/arm9/source/ramsave.h
scummvm/branches/gsoc2010-testbed/engines/sci/engine/game.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/engine/kernel32.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/gui.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/gui.h
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/gui32.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/graphics/gui32.h
scummvm/branches/gsoc2010-testbed/engines/sci/parser/said.y
scummvm/branches/gsoc2010-testbed/engines/sci/sound/drivers/amiga.cpp
scummvm/branches/gsoc2010-testbed/engines/sci/sound/iterator/
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/Arial.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/Arial12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/ArialBold.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/README
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/clR6x12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/clR6x12-iso-8859-5.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/clR6x12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/courr12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/fixed5x8-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/fixed5x8-iso-8859-5.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvB12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvB12-iso-8859-5.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvB12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvBO12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvBO12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvR12-iso-8859-1.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/helvR12.bdf
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/README.ScummVM
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazLT.font
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazLT.readme
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazlt/
scummvm/branches/gsoc2010-testbed/gui/themes/fonts/topaz/topazlt/8
scummvm/branches/gsoc2010-testbed/gui/themes/scummmodern/helvr12-l1.fcc
scummvm/branches/gsoc2010-testbed/po/POTFILES
scummvm/branches/gsoc2010-testbed/po/ca_ES.po
scummvm/branches/gsoc2010-testbed/po/de_DE.po
scummvm/branches/gsoc2010-testbed/po/es_ES.po
scummvm/branches/gsoc2010-testbed/po/fr_FR.po
scummvm/branches/gsoc2010-testbed/po/hu_HU.po
scummvm/branches/gsoc2010-testbed/po/it_IT.po
scummvm/branches/gsoc2010-testbed/po/module.mk
scummvm/branches/gsoc2010-testbed/po/remove-potcdate.sed
scummvm/branches/gsoc2010-testbed/po/ru_RU.po
scummvm/branches/gsoc2010-testbed/po/scummvm.pot
scummvm/branches/gsoc2010-testbed/po/uk_UA.po
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_audio.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_audio.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_euphony.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_euphony.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_driver.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_driver.h
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp
scummvm/branches/gsoc2010-testbed/sound/softsynth/fmtowns_pc98/towns_pc98_fmsynth.h
Property Changed:
----------------
scummvm/branches/gsoc2010-testbed/
scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/
scummvm/branches/gsoc2010-testbed/dists/android/mkmanifest.pl
scummvm/branches/gsoc2010-testbed/dists/iphone/
scummvm/branches/gsoc2010-testbed/dists/iphone/scummvm.xcodeproj/
scummvm/branches/gsoc2010-testbed/engines/draci/script.cpp
scummvm/branches/gsoc2010-testbed/engines/draci/script.h
Property changes on: scummvm/branches/gsoc2010-testbed
___________________________________________________________________
Modified: svn:mergeinfo
- /scummvm/branches/gsoc2009-draci:41389-44325
/scummvm/trunk:49152-49485
+ /scummvm/branches/gsoc2009-draci:41389-44325
/scummvm/trunk:49152-51768
Modified: scummvm/branches/gsoc2010-testbed/AUTHORS
===================================================================
--- scummvm/branches/gsoc2010-testbed/AUTHORS 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/AUTHORS 2010-08-06 20:13:41 UTC (rev 51798)
@@ -190,9 +190,6 @@
Nintendo DS:
Neil Millstone
- PalmOS:
- Chris Apers
-
PocketPC / WinCE:
Nicolas Bacca - (retired)
Kostas Nakos
@@ -256,6 +253,7 @@
Retired Team Members
--------------------
+ Chris Apers - Former PalmOS porter
Ralph Brorsen - Help with GUI implementation
Jamieson Christian - iMUSE, MIDI, all things musical
Felix Jakschitsch - Zak256 reverse engineering
@@ -318,6 +316,35 @@
Chris Gray - (retired)
Johannes Schickel
+ Translations
+ ------------
+ Thierry Crozat - Translation Lead
+
+ Catalan:
+ Jordi Vilalta Prat
+
+ French:
+ Thierry Crozat
+
+ German:
+ Simon Sawatzki
+ Lothar Serra Mari
+
+ Hungarian:
+ Alex Bevilacqua
+
+ Italian:
+ Matteo Angelino
+
+ Russian:
+ Eugene Sandulenko
+
+ Spanish:
+ Tomas Maidagan
+
+ Ukrainian:
+ Lubomyr Lisen
+
Websites (design)
-----------------
Dobo Balazs - Website design
@@ -395,7 +422,7 @@
Ravi I. - SCI0 sound resource specification
Ruediger Hanke - Port to the MorphOS platform
Rune Orsval - Configuration file editor
- Rickard Lind - MT32->GM MIDI mapping magic, sound research
+ Rickard Lind - MT-32->GM MIDI mapping magic, sound research
Rink Springer - Port to the DOS platform, several bug fixes
Robey Pointer - Bug tracking system hosting
Sergey Lapin - Port of Carl's type 2 decompression code
Modified: scummvm/branches/gsoc2010-testbed/Makefile
===================================================================
--- scummvm/branches/gsoc2010-testbed/Makefile 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/Makefile 2010-08-06 20:13:41 UTC (rev 51798)
@@ -25,7 +25,7 @@
# Turn off some annoying and not-so-useful warnings
CXXFLAGS+= -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-reorder
# Enable even more warnings...
- CXXFLAGS+= -Wpointer-arith -Wcast-qual -Wcast-align
+ CXXFLAGS+= -Wpointer-arith -Wcast-qual
CXXFLAGS+= -Wshadow -Wimplicit -Wnon-virtual-dtor -Wwrite-strings
# Currently we disable this gcc flag, since it will also warn in cases,
Modified: scummvm/branches/gsoc2010-testbed/Makefile.common
===================================================================
--- scummvm/branches/gsoc2010-testbed/Makefile.common 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/Makefile.common 2010-08-06 20:13:41 UTC (rev 51798)
@@ -28,6 +28,7 @@
engines \
graphics \
common \
+ po
ifdef USE_MT32EMU
MODULES += sound/softsynth/mt32
Modified: scummvm/branches/gsoc2010-testbed/NEWS
===================================================================
--- scummvm/branches/gsoc2010-testbed/NEWS 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/NEWS 2010-08-06 20:13:41 UTC (rev 51798)
@@ -5,16 +5,50 @@
New Ports:
- Added Android port.
+ General:
+ - Removed the outdated PalmOS port.
+ - Switched to the "fast" DOSBox OPL emulator.
+ - Fixed a crash in the rjp1 player code affecting the FOTAQ Amiga version.
+ - Added support for more original media layouts.
+ - Added support for GUI localization.
+ - Improved GUI by adding tooltips and radiobuttons.
+ - Improved GUI usability by hiding more irrelevant options not supported by
+ specific games.
+
+ AGI:
+ - Fixed number of GFX glitches.
+ - Made PIC drawing code picture perfect.
+ - Added support of MIDI devices.
+ - Added support for accurate Tandy sound emulation. Switched to it as default.
+
+ Drascula:
+ - Fixed number of GFX glitches.
+ - Made many cutscenes smoother.
+ - Changed behavior of items menu. Now it shows up on mouse up.
+
+ Groovie:
+ - Added support for the Macintosh version of The 7th Guest.
+ - Added support for custom MT-32 instruments.
+
+ KYRA:
+ - Fixed some minor graphical glitches.
+ - Implemented formerly missing recreation of some in game items.
+
+ Parallaction:
+ - Made part one of The Big Red Adventure completable.
+
+ SAGA:
+ - Fixed graphics glitches in several scenes.
+
+ SCUMM:
+ - Several improvements in Maniac Mansion NES.
+
PSP port:
- Switched to new backend design which fixes minor graphical issues,
speeds things up, and provides 16-bit support.
- Enabled playback of MP3 files using the hardware decoder (ME). This means that
the port is now optimized for MP3 playback (as opposed to OGG).
- General:
- - Switched to the "fast" DOSBox OPL emulator.
- - Fixed a crash in the rjp1 player code affecting the FOTAQ Amiga version.
-
1.1.2 (????-??-??)
Broken Sword 2
- Fixed missing speech in some cutscenes.
Modified: scummvm/branches/gsoc2010-testbed/README
===================================================================
--- scummvm/branches/gsoc2010-testbed/README 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/README 2010-08-06 20:13:41 UTC (rev 51798)
@@ -859,17 +859,13 @@
Nintendo DS
Nintendo Wii
OS/2
- PalmOS
PlayStation 2
PlayStation Portable
Symbian
The Dreamcast port does not support The Curse of Monkey Island, nor The
-Dig. The PalmOS port does not support The Curse of Monkey Island,
-Beneath a Steel Sky, nor either Simon the Sorcerer 1 or 2. The Dig will
-only work on some Palm devices (those with a large dynamic heap). The
-Nintendo DS port does not support Full Throttle, The Dig, or The Curse
-of Monkey Island.
+Dig. The Nintendo DS port does not support Full Throttle, The Dig, or
+The Curse of Monkey Island.
For more platform specific limitations, please refer to our Wiki:
http://wiki.scummvm.org/index.php/Platforms
Modified: scummvm/branches/gsoc2010-testbed/backends/events/default/default-events.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/events/default/default-events.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/events/default/default-events.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -95,13 +95,11 @@
case Common::EVENT_KEYDOWN:
_modifierState = event.kbd.flags;
// init continuous event stream
- // not done on PalmOS because keyboard is emulated and keyup is not generated
-#if !defined(PALMOS_MODE)
_currentKeyDown.ascii = event.kbd.ascii;
_currentKeyDown.keycode = event.kbd.keycode;
_currentKeyDown.flags = event.kbd.flags;
_keyRepeatTime = time + kKeyRepeatInitialDelay;
-#endif
+
// Global Main Menu
if (event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_F5) {
if (g_engine && !g_engine->isPaused()) {
Modified: scummvm/branches/gsoc2010-testbed/backends/fs/amigaos4/amigaos4-fs.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/fs/amigaos4/amigaos4-fs.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/fs/amigaos4/amigaos4-fs.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -368,7 +368,7 @@
}
if (ERROR_NO_MORE_ENTRIES != IDOS->IoErr() ) {
- debug(6, "An error occured during ExamineDir");
+ debug(6, "An error occurred during ExamineDir");
ret = false;
} else {
ret = true;
Modified: scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs-factory.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs-factory.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -27,7 +27,7 @@
#include "backends/fs/ds/ds-fs.h"
#include "dsmain.h" //for the isGBAMPAvailable() function
-DECLARE_SINGLETON(DSFilesystemFactory);
+DECLARE_SINGLETON(DSFilesystemFactory)
AbstractFSNode *DSFilesystemFactory::makeRootFileNode() const {
if (DS::isGBAMPAvailable()) {
Modified: scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -8,16 +8,19 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
+ * $URL$
+ * $Id$
+ *
*/
#include "common/str.h"
@@ -115,7 +118,7 @@
// consolePrintf("Found: %d, Dir: %d\n", _isValid, _isDirectory);
}
-DSFileSystemNode::DSFileSystemNode(const DSFileSystemNode* node) {
+DSFileSystemNode::DSFileSystemNode(const DSFileSystemNode *node) {
//TODO: not implemented?
}
@@ -144,7 +147,7 @@
_zipFile->changeToRoot();
/* // This is the root dir, so add the RAM folder
- DSFileSystemNode* dsfsn = new DSFileSystemNode("ds:/ram");
+ DSFileSystemNode *dsfsn = new DSFileSystemNode("ds:/ram");
dsfsn->_isDirectory = true;
dirList->push_back(wrap(dsfsn));
*/
@@ -162,7 +165,7 @@
if ( (_zipFile->isDirectory() && ((mode == Common::FSNode::kListDirectoriesOnly) || (mode == Common::FSNode::kListAll)) )
|| (!_zipFile->isDirectory() && ((mode == Common::FSNode::kListFilesOnly) || (mode == Common::FSNode::kListAll)) ) )
{
- DSFileSystemNode* dsfsn = new DSFileSystemNode("ds:/" + Common::String(n), _zipFile->isDirectory());
+ DSFileSystemNode *dsfsn = new DSFileSystemNode("ds:/" + Common::String(n), _zipFile->isDirectory());
dsfsn->_isDirectory = _zipFile->isDirectory();
dirList.push_back((dsfsn));
}
@@ -173,15 +176,15 @@
return true;
}
-AbstractFSNode* DSFileSystemNode::getParent() const {
+AbstractFSNode *DSFileSystemNode::getParent() const {
// consolePrintf("parent\n");
DSFileSystemNode *p;
if (_path != "ds:/") {
- char *path = (char *) _path.c_str();
+ const char *path = (const char *)_path.c_str();
int lastSlash = 4;
- for (int r = 4; r < (int) _path.size(); r++) {
+ for (uint r = 4; r < _path.size(); r++) {
if (path[r] == '\\') {
lastSlash = r;
}
@@ -259,7 +262,7 @@
_path = path;
}
-GBAMPFileSystemNode::GBAMPFileSystemNode(const Common::String& path, bool isDirectory) {
+GBAMPFileSystemNode::GBAMPFileSystemNode(const Common::String& path, bool isDir) {
//consolePrintf("'%s'",path.c_str());
int lastSlash = 3;
@@ -272,11 +275,11 @@
_displayName = Common::String(path.c_str() + lastSlash + 1);
_path = path;
_isValid = true;
- _isDirectory = isDirectory;
+ _isDirectory = isDir;
}
-GBAMPFileSystemNode::GBAMPFileSystemNode(const GBAMPFileSystemNode* node) {
+GBAMPFileSystemNode::GBAMPFileSystemNode(const GBAMPFileSystemNode *node) {
//TODO: not implemented?
}
@@ -319,7 +322,7 @@
if ( ((entryType == TYPE_DIR) && ((mode == Common::FSNode::kListDirectoriesOnly) || (mode == Common::FSNode::kListAll)))
|| ((entryType == TYPE_FILE) && ((mode == Common::FSNode::kListFilesOnly) || (mode == Common::FSNode::kListAll))) ) {
- GBAMPFileSystemNode* dsfsn;
+ GBAMPFileSystemNode *dsfsn;
//consolePrintf("Fname: %s\n", fname);
@@ -348,15 +351,15 @@
return true;
}
-AbstractFSNode* GBAMPFileSystemNode::getParent() const {
+AbstractFSNode *GBAMPFileSystemNode::getParent() const {
// consolePrintf("parent\n");
GBAMPFileSystemNode *p;
if (_path != "mp:/") {
- char *path = (char *) _path.c_str();
+ const char *path = (const char *)_path.c_str();
int lastSlash = 4;
- for (int r = 4; r < (int) strlen((char *) path); r++) {
+ for (uint r = 4; r < strlen(path); r++) {
if (path[r] == '/') {
lastSlash = r;
}
@@ -413,18 +416,12 @@
}
int32 DSFileStream::pos() const {
- if (_writeBufferPos > 0) {
- // Discard constness. Bad, but I can't see another way.
- ((DSFileStream *) (this))->flush();
- }
+ assert(_writeBufferPos == 0); // This method may only be called when reading!
return std_ftell((FILE *)_handle);
}
int32 DSFileStream::size() const {
- if (_writeBufferPos > 0) {
- // Discard constness. Bad, but I can't see another way.
- ((DSFileStream *) (this))->flush();
- }
+ assert(_writeBufferPos == 0); // This method may only be called when reading!
int32 oldPos = std_ftell((FILE *)_handle);
std_fseek((FILE *)_handle, 0, SEEK_END);
int32 length = std_ftell((FILE *)_handle);
@@ -444,16 +441,15 @@
if (_writeBufferPos > 0) {
flush();
}
- return std_fread((byte *)ptr, 1, len, (FILE *)_handle);
+ return std_fread(ptr, 1, len, (FILE *)_handle);
}
uint32 DSFileStream::write(const void *ptr, uint32 len) {
if (_writeBufferPos + len < WRITE_BUFFER_SIZE) {
memcpy(_writeBuffer + _writeBufferPos, ptr, len);
_writeBufferPos += len;
- }
- else
- {
+ return len;
+ } else {
if (_writeBufferPos > 0) {
flush();
}
@@ -483,31 +479,33 @@
// Stdio replacements
-#define MAX_FILE_HANDLES 32
+enum {
+ MAX_FILE_HANDLES = 32
+};
-bool inited = false;
-DS::fileHandle handle[MAX_FILE_HANDLES];
+static bool inited = false;
+static DS::fileHandle s_handle[MAX_FILE_HANDLES];
-FILE* std_fopen(const char* name, const char* mode) {
+FILE *std_fopen(const char *name, const char *mode) {
if (!inited) {
for (int r = 0; r < MAX_FILE_HANDLES; r++) {
- handle[r].used = false;
+ s_handle[r].used = false;
}
inited = true;
currentDir[0] = '\0';
}
- char* realName = (char *) name;
+ char realName[MAXPATHLEN];
// Remove file system prefix
if ((name[0] == 'd') && (name[1] == 's') && (name[2] == ':') && (name[3] == '/')) {
- realName += 4;
+ strlcpy(realName, name + 4, MAXPATHLEN);
+ } else if ((name[0] == 'm') && (name[1] == 'p') && (name[2] == ':') && (name[3] == '/')) {
+ strlcpy(realName, name + 4, MAXPATHLEN);
+ } else {
+ strlcpy(realName, name, MAXPATHLEN);
}
- if ((name[0] == 'm') && (name[1] == 'p') && (name[2] == ':') && (name[3] == '/')) {
- realName += 4;
- }
-
// consolePrintf("Open file:");
// consolePrintf("'%s', [%s]", name, realName);
@@ -515,13 +513,14 @@
FAT_chdir("/");
// Turn all back slashes into forward slashes for gba_nds_fat
- char* p = realName;
+ char *p = realName;
while (*p) {
- if (*p == '\\') *p = '/';
+ if (*p == '\\')
+ *p = '/';
p++;
}
- FAT_FILE* result = FAT_fopen(realName, mode);
+ FAT_FILE *result = FAT_fopen(realName, mode);
if (result == 0) {
// consolePrintf("Error code %d\n", result);
@@ -531,42 +530,21 @@
}
// MT_memoryReport();
- return (FILE *) result;
+ return (FILE *)result;
}
// Fail to open file for writing. It's in ROM!
// Allocate a file handle
int r = 0;
- while (handle[r].used) {
+ while (s_handle[r].used) {
r++;
assert(r < MAX_FILE_HANDLES);
}
-#ifdef GBA_SRAM_SAVE
- if (strchr(mode, 'w')) {
-// consolePrintf("Writing %s\n", realName);
- handle[r].sramFile = (DSSaveFile *) DSSaveFileManager::instance()->openSavefile(realName, true);
- } else {
-// consolePrintf("Reading %s\n", realName);
- handle[r].sramFile = (DSSaveFile *) DSSaveFileManager::instance()->openSavefile(realName, false);
- }
-#endif
+ char *data;
- if (handle[r].sramFile) {
- handle[r].used = true;
- handle[r].pos = 0;
- handle[r].data = NULL;
- handle[r].size = handle[r].sramFile->getSize();
-// consolePrintf("Found it");
- return &handle[r];
- }
-
-// consolePrintf("Not in SRAM!");
-
- char* data;
-
- ZipFile* zip = DSFileSystemNode::getZip();
+ ZipFile *zip = DSFileSystemNode::getZip();
if (!zip) {
// consolePrintf("No zip yet!");
return NULL;
@@ -578,7 +556,7 @@
if (currentDir[0] != 0) {
char nameWithPath[128];
- sprintf(nameWithPath, "%s\%s", currentDir, realName);
+ sprintf(nameWithPath, "%s\\%s", currentDir, realName);
strcpy(realName, nameWithPath);
}
@@ -589,17 +567,18 @@
zip->setAllFilesVisible(false);
// Allocate a file handle
- int r = 0;
- while (handle[r].used) r++;
+ r = 0;
+ while (s_handle[r].used)
+ r++;
- handle[r].used = true;
- handle[r].pos = 0;
- handle[r].data = data;
- handle[r].size = zip->getFileSize();
+ s_handle[r].used = true;
+ s_handle[r].pos = 0;
+ s_handle[r].data = data;
+ s_handle[r].size = zip->getFileSize();
// consolePrintf("Opened file %d: %s (%s) ", r, realName, name);
- return &handle[r];
+ return &s_handle[r];
} else {
zip->setAllFilesVisible(false);
// consolePrintf("Not found: %s (%s) ", realName, name);
@@ -607,7 +586,7 @@
}
}
-void std_fclose(FILE* handle) {
+void std_fclose(FILE *handle) {
if (DS::isGBAMPAvailable()) {
FAT_fclose((FAT_FILE *) handle);
@@ -615,19 +594,15 @@
}
handle->used = false;
- if (handle->sramFile) {
- delete handle->sramFile;
- handle->sramFile = NULL;
- }
}
-size_t std_fread(const void* ptr, size_t size, size_t numItems, FILE* handle) {
+size_t std_fread(void *ptr, size_t size, size_t numItems, FILE *handle) {
// consolePrintf("fread %d,%d %d ", size, numItems, ptr);
if (DS::isGBAMPAvailable()) {
readPastEndOfFile = false;
- int bytes = FAT_fread((void *) ptr, size, numItems, (FAT_FILE *) handle);
+ int bytes = FAT_fread(ptr, size, numItems, (FAT_FILE *) handle);
if (!FAT_feof((FAT_FILE *) handle)) {
return numItems;
} else {
@@ -638,36 +613,22 @@
return numItems;
}
- if (handle->sramFile) {
- int bytes = 0;
- int result = 1;
- //consolePrintf("fread size=", size * numItems);
- for (int r = 0; (r < (s32) size * (s32) numItems) && (result > 0); r++) {
- result = handle->sramFile->read((void *) ( ((char *) (ptr)) + r), 1);
- bytes += result;
- //consolePrintf("'%d',", ((char *) (ptr))[0]);
- }
-
- handle->pos += bytes;
-
- return bytes / size;
- }
-
- if ((int)(handle->pos + size * numItems) > handle->size) {
+ if (handle->pos > handle->size)
+ numItems = 0;
+ else if ((int)(handle->pos + size * numItems) > handle->size)
numItems = (handle->size - handle->pos) / size;
- if (numItems < 0) numItems = 0;
- }
// consolePrintf("read %d ", size * numItems);
- memcpy((void *) ptr, handle->data + handle->pos, size * numItems);
+ memcpy(ptr, handle->data + handle->pos, size * numItems);
handle->pos += size * numItems;
return numItems;
}
-size_t std_fwrite(const void* ptr, size_t size, size_t numItems, FILE* handle) {
- if ((handle == stdin)) return 0;
+size_t std_fwrite(const void *ptr, size_t size, size_t numItems, FILE *handle) {
+ if ((handle == stdin))
+ return 0;
if ((handle == stderr) || (handle == stdout)) {
// consolePrintf((char *) ptr);
@@ -677,7 +638,7 @@
//consolePrintf("fwrite size=%d\n", size * numItems);
if (DS::isGBAMPAvailable()) {
- FAT_fwrite(((char *) (ptr)), size, numItems, (FAT_FILE *) handle);
+ FAT_fwrite(ptr, size, numItems, (FAT_FILE *) handle);
return numItems;
int length = size * numItems;
@@ -694,36 +655,27 @@
return numItems;
}
- if (handle->sramFile) {
- handle->sramFile->write(ptr, size);
- return size;
- } else {
- return 0;
- }
+ return 0;
}
-bool std_feof(FILE* handle) {
+bool std_feof(FILE *handle) {
// consolePrintf("feof ");
if (DS::isGBAMPAvailable()) {
return readPastEndOfFile && FAT_feof((FAT_FILE *) handle);
}
- if (handle->sramFile) {
- return handle->sramFile->eos();
- }
-
// consolePrintf("feof %s", handle->pos >= handle->size? "true": "false");
return handle->pos >= handle->size;
}
-int std_fflush(FILE* handle) {
+int std_fflush(FILE *handle) {
//FIXME: not implemented?
// consolePrintf("fflush ");
return 0;
}
-long int std_ftell(FILE* handle) {
+long int std_ftell(FILE *handle) {
if (DS::isGBAMPAvailable()) {
return FAT_ftell((FAT_FILE *) handle);
}
@@ -731,7 +683,7 @@
return handle->pos;
}
-int std_fseek(FILE* handle, long int offset, int whence) {
+int std_fseek(FILE *handle, long int offset, int whence) {
// consolePrintf("fseek %d %d ", offset, whence);
if (DS::isGBAMPAvailable()) {
@@ -756,14 +708,14 @@
return 0;
}
-int std_ferror(FILE* handle) {
+int std_ferror(FILE *handle) {
//FIXME: not implemented?
// consolePrintf("ferror ");
return readPastEndOfFile;
}
-void std_clearerr(FILE* handle) {
+void std_clearerr(FILE *handle) {
//FIXME: not implemented?
readPastEndOfFile = false;
// consolePrintf("clearerr ");
Modified: scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.h
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.h 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/fs/ds/ds-fs.h 2010-08-06 20:13:41 UTC (rev 51798)
@@ -8,27 +8,30 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
+ * $URL$
+ * $Id$
+ *
*/
#ifndef _DS_FS_H
#define _DS_FS_H
-//#include <NDS/ARM9/console.h>
#include "common/fs.h"
+#include "common/stream.h"
+#include "backends/fs/abstract-fs.h"
+
#include "zipreader.h"
-#include "ramsave.h"
#include "fat/gba_nds_fat.h"
-#include "backends/fs/abstract-fs.h"
namespace DS {
@@ -40,7 +43,7 @@
*/
class DSFileSystemNode : public AbstractFSNode {
protected:
- static ZipFile* _zipFile;
+ static ZipFile *_zipFile;
Common::String _displayName;
Common::String _path;
@@ -96,7 +99,7 @@
* Returns the zip file this node points to.
* TODO: check this documentation.
*/
- static ZipFile* getZip() { return _zipFile; }
+ static ZipFile *getZip() { return _zipFile; }
};
/**
@@ -161,16 +164,16 @@
struct fileHandle {
int pos;
bool used;
- char* data;
+ char *data;
int size;
-
- DSSaveFile* sramFile;
};
class DSFileStream : public Common::SeekableReadStream, public Common::WriteStream, public Common::NonCopyable {
protected:
- static const int WRITE_BUFFER_SIZE = 512;
+ enum {
+ WRITE_BUFFER_SIZE = 512
+ };
/** File handle to the actual file. */
void *_handle;
@@ -206,24 +209,24 @@
#undef stdout
#undef stdin
-#define stdout ((DS::fileHandle*) -1)
-#define stderr ((DS::fileHandle*) -2)
-#define stdin ((DS::fileHandle*) -3)
+#define stdout ((DS::fileHandle *) -1)
+#define stderr ((DS::fileHandle *) -2)
+#define stdin ((DS::fileHandle *) -3)
#define FILE DS::fileHandle
// Please do not remove any of these prototypes that appear not to be required.
-FILE* std_fopen(const char* name, const char* mode);
-void std_fclose(FILE* handle);
-size_t std_fread(const void* ptr, size_t size, size_t numItems, FILE* handle);
-size_t std_fwrite(const void* ptr, size_t size, size_t numItems, FILE* handle);
-bool std_feof(FILE* handle);
-long int std_ftell(FILE* handle);
-int std_fseek(FILE* handle, long int offset, int whence);
-void std_clearerr(FILE* handle);
-int std_fflush(FILE* handle);
-int std_ferror(FILE* handle);
+FILE* std_fopen(const char *name, const char *mode);
+void std_fclose(FILE *handle);
+size_t std_fread(void *ptr, size_t size, size_t numItems, FILE *handle);
+size_t std_fwrite(const void *ptr, size_t size, size_t numItems, FILE *handle);
+bool std_feof(FILE *handle);
+long int std_ftell(FILE *handle);
+int std_fseek(FILE *handle, long int offset, int whence);
+void std_clearerr(FILE *handle);
+int std_fflush(FILE *handle);
+int std_ferror(FILE *handle);
-} //namespace DS
+} // End of namespace DS
#endif //_DS_FS_H
Modified: scummvm/branches/gsoc2010-testbed/backends/fs/psp/psp-stream.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/fs/psp/psp-stream.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/fs/psp/psp-stream.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -81,10 +81,10 @@
PSPIoStream::~PSPIoStream() {
DEBUG_ENTER_FUNC();
- if (PowerMan.beginCriticalSection() == PowerManager::Blocked)
+ if (PowerMan.beginCriticalSection())
PSP_DEBUG_PRINT_FUNC("Suspended\n");
- PowerMan.unregisterSuspend(this); // Unregister with powermanager to be suspended
+ PowerMan.unregisterForSuspend(this); // Unregister with powermanager to be suspended
// Must do this before fclose() or resume() will reopen.
fclose((FILE *)_handle); // We don't need a critical section. Worst case, the handle gets closed on its own
@@ -100,7 +100,7 @@
*/
void *PSPIoStream::open() {
DEBUG_ENTER_FUNC();
- if (PowerMan.beginCriticalSection() == PowerManager::Blocked) {
+ if (PowerMan.beginCriticalSection()) {
// No need to open. Just return the _handle resume() already opened.
PSP_DEBUG_PRINT_FUNC("Suspended\n");
}
@@ -118,7 +118,7 @@
_cache = (char *)memalign(64, CACHE_SIZE);
}
- PowerMan.registerSuspend(this); // Register with the powermanager to be suspended
+ PowerMan.registerForSuspend(this); // Register with the powermanager to be suspended
PowerMan.endCriticalSection();
@@ -233,7 +233,7 @@
}
}
- if (PowerMan.beginCriticalSection() == PowerManager::Blocked)
+ if (PowerMan.beginCriticalSection())
PSP_DEBUG_PRINT_FUNC("Suspended\n");
@@ -309,7 +309,7 @@
uint32 PSPIoStream::write(const void *ptr, uint32 len) {
DEBUG_ENTER_FUNC();
// Check if we can access the file
- if (PowerMan.beginCriticalSection() == PowerManager::Blocked)
+ if (PowerMan.beginCriticalSection())
PSP_DEBUG_PRINT_FUNC("Suspended\n");
PSP_DEBUG_PRINT_FUNC("filename[%s], len[0x%x]\n", _path.c_str(), len);
@@ -346,7 +346,7 @@
bool PSPIoStream::flush() {
DEBUG_ENTER_FUNC();
// Enter critical section
- if (PowerMan.beginCriticalSection() == PowerManager::Blocked)
+ if (PowerMan.beginCriticalSection())
PSP_DEBUG_PRINT_FUNC("Suspended\n");
int ret = fflush((FILE *)_handle);
Modified: scummvm/branches/gsoc2010-testbed/backends/keymapper/remap-dialog.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/keymapper/remap-dialog.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/keymapper/remap-dialog.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -31,6 +31,8 @@
#include "gui/ScrollBarWidget.h"
#include "gui/ThemeEval.h"
+#include "common/translation.h"
+
namespace Common {
enum {
@@ -44,12 +46,12 @@
_keymapper = g_system->getEventManager()->getKeymapper();
assert(_keymapper);
- _kmPopUpDesc = new GUI::StaticTextWidget(this, "KeyMapper.PopupDesc", "Keymap:");
+ _kmPopUpDesc = new GUI::StaticTextWidget(this, "KeyMapper.PopupDesc", _("Keymap:"));
_kmPopUp = new GUI::PopUpWidget(this, "KeyMapper.Popup");
_scrollBar = new GUI::ScrollBarWidget(this, 0, 0, 0, 0);
- new GUI::ButtonWidget(this, "KeyMapper.Close", "Close", kCloseCmd);
+ new GUI::ButtonWidget(this, "KeyMapper.Close", _("Close"), 0, kCloseCmd);
}
RemapDialog::~RemapDialog() {
@@ -61,7 +63,7 @@
const Stack<Keymapper::MapRecord> &activeKeymaps = _keymapper->getActiveStack();
if (!(activeKeymaps.size() > 0)) {
- _kmPopUp->appendEntry(activeKeymaps.top().keymap->getName() + " (Active)");
+ _kmPopUp->appendEntry(activeKeymaps.top().keymap->getName() + _(" (Active)"));
divider = true;
}
@@ -95,7 +97,7 @@
if (divider)
_kmPopUp->appendEntry("");
for (it = _globalKeymaps->begin(); it != _globalKeymaps->end(); ++it) {
- _kmPopUp->appendEntry(it->_value->getName() + " (Global)", idx);
+ _kmPopUp->appendEntry(it->_value->getName() + _(" (Global)"), idx);
_keymapTable[idx++] = it->_value;
}
divider = true;
@@ -105,7 +107,7 @@
if (divider)
_kmPopUp->appendEntry("");
for (it = _gameKeymaps->begin(); it != _gameKeymaps->end(); ++it) {
- _kmPopUp->appendEntry(it->_value->getName() + " (Game)", idx);
+ _kmPopUp->appendEntry(it->_value->getName() + _(" (Game)"), idx);
_keymapTable[idx++] = it->_value;
}
}
@@ -168,7 +170,7 @@
widg.actionText =
new GUI::StaticTextWidget(this, 0, 0, 0, 0, "", Graphics::kTextAlignRight);
widg.keyButton =
- new GUI::ButtonWidget(this, 0, 0, 0, 0, "", kRemapCmd + i);
+ new GUI::ButtonWidget(this, 0, 0, 0, 0, "", 0, kRemapCmd + i);
_keymapWidgets.push_back(widg);
} else {
widg = _keymapWidgets[i];
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/alsa.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/alsa.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/alsa.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -24,7 +24,7 @@
#include "common/scummsys.h"
-#if defined(UNIX) && defined(USE_ALSA)
+#if defined(USE_ALSA)
#include "common/config-manager.h"
#include "common/util.h"
@@ -48,6 +48,17 @@
#define my_snd_seq_open(seqp) snd_seq_open(seqp, SND_SEQ_OPEN)
#endif
+#define perm_ok(pinfo,bits) ((snd_seq_port_info_get_capability(pinfo) & (bits)) == (bits))
+
+static int check_permission(snd_seq_port_info_t *pinfo)
+{
+ if (perm_ok(pinfo, SND_SEQ_PORT_CAP_WRITE|SND_SEQ_PORT_CAP_SUBS_WRITE)) {
+ if (!(snd_seq_port_info_get_capability(pinfo) & SND_SEQ_PORT_CAP_NO_EXPORT))
+ return 1;
+ }
+ return 0;
+}
+
/*
* parse address string
*/
@@ -56,7 +67,7 @@
class MidiDriver_ALSA:public MidiDriver_MPU401 {
public:
- MidiDriver_ALSA();
+ MidiDriver_ALSA(int client, int port);
int open();
void close();
void send(uint32 b);
@@ -69,34 +80,19 @@
snd_seq_t *seq_handle;
int seq_client, seq_port;
int my_client, my_port;
- static int parse_addr(const char *arg, int *client, int *port);
};
-MidiDriver_ALSA::MidiDriver_ALSA()
- : _isOpen(false), seq_handle(0), seq_client(0), seq_port(0), my_client(0), my_port(0)
+MidiDriver_ALSA::MidiDriver_ALSA(int client, int port)
+ : _isOpen(false), seq_handle(0), seq_client(client), seq_port(port), my_client(0), my_port(0)
{
memset(&ev, 0, sizeof(ev));
}
int MidiDriver_ALSA::open() {
- const char *var = NULL;
-
if (_isOpen)
return MERR_ALREADY_OPEN;
_isOpen = true;
- var = getenv("SCUMMVM_PORT");
- if (!var && ConfMan.hasKey("alsa_port")) {
- var = ConfMan.get("alsa_port").c_str();
- }
-
- if (var) {
- if (parse_addr(var, &seq_client, &seq_port) < 0) {
- error("Invalid port %s", var);
- return -1;
- }
- }
-
if (my_snd_seq_open(&seq_handle) < 0) {
error("Can't open sequencer");
return -1;
@@ -108,39 +104,60 @@
}
snd_seq_set_client_group(seq_handle, "input");
- my_port = snd_seq_create_simple_port(seq_handle, "SCUMMVM port 0",
- SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE |
- SND_SEQ_PORT_CAP_READ, SND_SEQ_PORT_TYPE_MIDI_GENERIC);
+ // According to http://www.alsa-project.org/~tiwai/alsa-subs.html
+ // you can set read or write capabilities to allow other clients to
+ // read or write the port. I don't think we need that, unless maybe
+ // to be able to record the sound, but I can't get that to work even
+ // with those capabilities.
+ my_port = snd_seq_create_simple_port(seq_handle, "SCUMMVM port 0", 0,
+ SND_SEQ_PORT_TYPE_MIDI_GENERIC | SND_SEQ_PORT_TYPE_APPLICATION);
+
if (my_port < 0) {
snd_seq_close(seq_handle);
error("Can't create port");
return -1;
}
- if (var) {
- if (seq_client != SND_SEQ_ADDRESS_SUBSCRIBERS) {
- // subscribe to MIDI port
- if (snd_seq_connect_to(seq_handle, my_port, seq_client, seq_port) < 0) {
- error("Can't subscribe to MIDI port (%d:%d) see README for help", seq_client, seq_port);
+ if (seq_client != SND_SEQ_ADDRESS_SUBSCRIBERS) {
+ // Subscribe to MIDI port. Prefer one that doesn't already have
+ // any connections, unless we've forced a port number already.
+ if (seq_port == -1) {
+ snd_seq_client_info_t *cinfo;
+ snd_seq_port_info_t *pinfo;
+
+ snd_seq_client_info_alloca(&cinfo);
+ snd_seq_port_info_alloca(&pinfo);
+
+ snd_seq_get_any_client_info(seq_handle, seq_client, cinfo);
+
+ int first_port = -1;
+ int found_port = -1;
+
+ snd_seq_port_info_set_client(pinfo, seq_client);
+ snd_seq_port_info_set_port(pinfo, -1);
+ while (found_port == -1 && snd_seq_query_next_port(seq_handle, pinfo) >= 0) {
+ if (check_permission(pinfo)) {
+ if (first_port == -1)
+ first_port = snd_seq_port_info_get_port(pinfo);
+ if (found_port == -1 && snd_seq_port_info_get_write_use(pinfo) == 0)
+ found_port = snd_seq_port_info_get_port(pinfo);
+ }
}
+
+ if (found_port == -1) {
+ // Should we abort here? For now, use the first
+ // available port.
+ seq_port = first_port;
+ warning("MidiDriver_ALSA: All ports on client %d (%s) are already in use", seq_client, snd_seq_client_info_get_name(cinfo));
+ } else {
+ seq_port = found_port;
+ }
}
- } else {
- int defaultPorts[] = {
- 65, 0,
- 17, 0
- };
- int i;
- for (i = 0; i < ARRAYSIZE(defaultPorts); i += 2) {
- seq_client = defaultPorts[i];
- seq_port = defaultPorts[i + 1];
- if (snd_seq_connect_to(seq_handle, my_port, seq_client, seq_port) >= 0)
- break;
+ if (snd_seq_connect_to(seq_handle, my_port, seq_client, seq_port) < 0) {
+ error("Can't subscribe to MIDI port (%d:%d) see README for help", seq_client, seq_port);
}
-
- if (i >= ARRAYSIZE(defaultPorts))
- error("Can't subscribe to MIDI port (65:0) or (17:0)");
}
printf("Connected to Alsa sequencer client [%d:%d]\n", seq_client, seq_port);
@@ -150,10 +167,13 @@
}
void MidiDriver_ALSA::close() {
- _isOpen = false;
- MidiDriver_MPU401::close();
- if (seq_handle)
- snd_seq_close(seq_handle);
+ if (_isOpen) {
+ _isOpen = false;
+ MidiDriver_MPU401::close();
+ if (seq_handle)
+ snd_seq_close(seq_handle);
+ } else
+ warning("MidiDriver_ALSA: Closing the driver before opening it");
}
void MidiDriver_ALSA::send(uint32 b) {
@@ -227,24 +247,6 @@
send_event(1);
}
-int MidiDriver_ALSA::parse_addr(const char *arg, int *client, int *port) {
- const char *p;
-
- if (isdigit(*arg)) {
- if ((p = strpbrk(arg, ADDR_DELIM)) == NULL)
- return -1;
- *client = atoi(arg);
- *port = atoi(p + 1);
- } else {
- if (*arg == 's' || *arg == 'S') {
- *client = SND_SEQ_ADDRESS_SUBSCRIBERS;
- *port = 0;
- } else
- return -1;
- }
- return 0;
-}
-
void MidiDriver_ALSA::send_event(int do_flush) {
snd_seq_ev_set_direct(&ev);
snd_seq_ev_set_source(&ev, my_port);
@@ -258,6 +260,37 @@
// Plugin interface
+class AlsaDevice {
+public:
+ AlsaDevice(Common::String name, MusicType mt, int client);
+ Common::String getName();
+ MusicType getType();
+ int getClient();
+
+private:
+ Common::String _name;
+ MusicType _type;
+ int _client;
+};
+
+typedef Common::List<AlsaDevice> AlsaDevices;
+
+AlsaDevice::AlsaDevice(Common::String name, MusicType mt, int client)
+ : _name(name), _type(mt), _client(client) {
+}
+
+Common::String AlsaDevice::getName() {
+ return _name;
+}
+
+MusicType AlsaDevice::getType() {
+ return _type;
+}
+
+int AlsaDevice::getClient() {
+ return _client;
+}
+
class AlsaMusicPlugin : public MusicPluginObject {
public:
const char *getName() const {
@@ -268,26 +301,18 @@
return "alsa";
}
+ AlsaDevices getAlsaDevices() const;
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
+
+private:
+ static int parse_addr(const char *arg, int *client, int *port);
};
-#define perm_ok(pinfo,bits) ((snd_seq_port_info_get_capability(pinfo) & (bits)) == (bits))
-
-static int check_permission(snd_seq_port_info_t *pinfo)
-{
- if (perm_ok(pinfo, SND_SEQ_PORT_CAP_WRITE|SND_SEQ_PORT_CAP_SUBS_WRITE)) {
- if (!(snd_seq_port_info_get_capability(pinfo) & SND_SEQ_PORT_CAP_NO_EXPORT))
- return 1;
- }
- return 0;
-}
-
-MusicDevices AlsaMusicPlugin::getDevices() const {
- MusicDevices devices;
-
- snd_seq_t *seq;
- if (snd_seq_open(&seq, "default", SND_SEQ_OPEN_DUPLEX, 0) < 0)
+AlsaDevices AlsaMusicPlugin::getAlsaDevices() const {
+ AlsaDevices devices;
+ snd_seq_t *seq_handle;
+ if (my_snd_seq_open(&seq_handle) < 0)
return devices; // can't open sequencer
snd_seq_client_info_t *cinfo;
@@ -295,41 +320,147 @@
snd_seq_port_info_t *pinfo;
snd_seq_port_info_alloca(&pinfo);
snd_seq_client_info_set_client(cinfo, -1);
- while (snd_seq_query_next_client(seq, cinfo) >= 0) {
+ while (snd_seq_query_next_client(seq_handle, cinfo) >= 0) {
bool found_valid_port = false;
/* reset query info */
snd_seq_port_info_set_client(pinfo, snd_seq_client_info_get_client(cinfo));
snd_seq_port_info_set_port(pinfo, -1);
- while (!found_valid_port && snd_seq_query_next_port(seq, pinfo) >= 0) {
+ while (!found_valid_port && snd_seq_query_next_port(seq_handle, pinfo) >= 0) {
if (check_permission(pinfo)) {
found_valid_port = true;
- // TODO: Return a different music type depending on the configuration
- devices.push_back(MusicDevice(this, snd_seq_client_info_get_name(cinfo), MT_GM));
- //snd_seq_client_info_get_client(cinfo) : snd_seq_port_info_get_port(pinfo)
+
+ const char *name = snd_seq_client_info_get_name(cinfo);
+ // TODO: Can we figure out the appropriate music type?
+ MusicType type = MT_GM;
+ int client = snd_seq_client_info_get_client(cinfo);
+ devices.push_back(AlsaDevice(name, type, client));
}
}
}
- snd_seq_close(seq);
+ snd_seq_close(seq_handle);
return devices;
}
-Common::Error AlsaMusicPlugin::createInstance(MidiDriver **mididriver) const {
- *mididriver = new MidiDriver_ALSA();
+MusicDevices AlsaMusicPlugin::getDevices() const {
+ MusicDevices devices;
+ AlsaDevices::iterator d;
- return Common::kNoError;
+ AlsaDevices alsaDevices = getAlsaDevices();
+
+ // Since the default behaviour is to use the first device in the list,
+ // try to put something sensible there. We used to have 17:0 and 65:0
+ // as defaults.
+
+ for (d = alsaDevices.begin(); d != alsaDevices.end();) {
+ const int client = d->getClient();
+
+ if (client == 17 || client == 65) {
+ devices.push_back(MusicDevice(this, d->getName(), d->getType()));
+ d = alsaDevices.erase(d);
+ } else {
+ ++d;
+ }
+ }
+
+ // 128:0 is probably TiMidity, or something like that, so that's
+ // probably a good second choice.
+
+ for (d = alsaDevices.begin(); d != alsaDevices.end();) {
+ if (d->getClient() == 128) {
+ devices.push_back(MusicDevice(this, d->getName(), d->getType()));
+ d = alsaDevices.erase(d);
+ } else {
+ ++d;
+ }
+ }
+
+ // Add the remaining devices in the order they were found.
+
+ for (d = alsaDevices.begin(); d != alsaDevices.end(); ++d)
+ devices.push_back(MusicDevice(this, d->getName(), d->getType()));
+
+ return devices;
}
-MidiDriver *MidiDriver_ALSA_create() {
- MidiDriver *mididriver;
+Common::Error AlsaMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle dev) const {
+ bool found = false;
+ int seq_client, seq_port;
- AlsaMusicPlugin p;
- p.createInstance(&mididriver);
+ const char *var = NULL;
- return mididriver;
+ // TODO: Upgrade from old alsa_port setting. This probably isn't the
+ // right place to do that, though.
+
+ if (ConfMan.hasKey("alsa_port")) {
+ warning("AlsaMusicPlugin: Found old 'alsa_port' setting, which will be ignored");
+ }
+
+ // The SCUMMVM_PORT environment variable can still be used to override
+ // any config setting.
+
+ var = getenv("SCUMMVM_PORT");
+ if (var) {
+ warning("AlsaMusicPlugin: SCUMMVM_PORT environment variable overrides config settings");
+ if (parse_addr(var, &seq_client, &seq_port) >= 0) {
+ found = true;
+ } else {
+ warning("AlsaMusicPlugin: Invalid port %s, using config settings instead", var);
+ }
+ }
+
+ // Try to match the setting to an available ALSA device.
+
+ if (!found && dev) {
+ AlsaDevices alsaDevices = getAlsaDevices();
+
+ for (AlsaDevices::iterator d = alsaDevices.begin(); d != alsaDevices.end(); ++d) {
+ MusicDevice device(this, d->getName(), d->getType());
+
+ if (device.getCompleteId().equals(MidiDriver::getDeviceString(dev, MidiDriver::kDeviceId))) {
+ found = true;
+ seq_client = d->getClient();
+ seq_port = -1;
+ break;
+ }
+ }
+ }
+
+ // Still nothing? Try a sensible default.
+
+ if (!found) {
+ // TODO: What's a sensible default anyway? And exactly when do
+ // we get to this case?
+
+ warning("AlsaMusicPlugin: Using 17:0 as default ALSA port");
+ seq_client = 17;
+ seq_port = 0;
+ }
+
+ *mididriver = new MidiDriver_ALSA(seq_client, seq_port);
+
+ return Common::kNoError;
}
+int AlsaMusicPlugin::parse_addr(const char *arg, int *client, int *port) {
+ const char *p;
+
+ if (isdigit(*arg)) {
+ if ((p = strpbrk(arg, ADDR_DELIM)) == NULL)
+ return -1;
+ *client = atoi(arg);
+ *port = atoi(p + 1);
+ } else {
+ if (*arg == 's' || *arg == 'S') {
+ *client = SND_SEQ_ADDRESS_SUBSCRIBERS;
+ *port = 0;
+ } else
+ return -1;
+ }
+ return 0;
+}
+
//#if PLUGIN_ENABLED_DYNAMIC(ALSA)
//REGISTER_PLUGIN_DYNAMIC(ALSA, PLUGIN_TYPE_MUSIC, AlsaMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/camd.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/camd.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/camd.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -177,7 +177,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices CamdMusicPlugin::getDevices() const {
@@ -188,21 +188,12 @@
return devices;
}
-Common::Error CamdMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error CamdMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_CAMD();
return Common::kNoError;
}
-MidiDriver *MidiDriver_CAMD_create() {
- MidiDriver *mididriver;
-
- CamdMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(CAMD)
//REGISTER_PLUGIN_DYNAMIC(CAMD, PLUGIN_TYPE_MUSIC, CamdMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/coreaudio.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/coreaudio.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/coreaudio.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -218,7 +218,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices CoreAudioMusicPlugin::getDevices() const {
@@ -229,21 +229,12 @@
return devices;
}
-Common::Error CoreAudioMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error CoreAudioMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_CORE();
return Common::kNoError;
}
-MidiDriver *MidiDriver_CORE_create() {
- MidiDriver *mididriver;
-
- CoreAudioMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(COREAUDIO)
//REGISTER_PLUGIN_DYNAMIC(COREAUDIO, PLUGIN_TYPE_MUSIC, CoreAudioMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/coremidi.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/coremidi.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/coremidi.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -190,7 +190,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices CoreMIDIMusicPlugin::getDevices() const {
@@ -201,21 +201,12 @@
return devices;
}
-Common::Error CoreMIDIMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error CoreMIDIMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_CoreMIDI();
return Common::kNoError;
}
-MidiDriver *MidiDriver_CoreMIDI_create() {
- MidiDriver *mididriver;
-
- CoreMIDIMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(COREMIDI)
//REGISTER_PLUGIN_DYNAMIC(COREMIDI, PLUGIN_TYPE_MUSIC, CoreMIDIMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/dmedia.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/dmedia.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/dmedia.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -199,7 +199,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices DMediaMusicPlugin::getDevices() const {
@@ -224,21 +224,12 @@
return devices;
}
-Common::Error DMediaMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error DMediaMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_DMEDIA();
return Common::kNoError;
}
-MidiDriver *MidiDriver_DMEDIA_create() {
- MidiDriver *mididriver;
-
- DMediaMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(DMEDIA)
//REGISTER_PLUGIN_DYNAMIC(DMEDIA, PLUGIN_TYPE_MUSIC, DMediaMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/seq.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/seq.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/seq.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -28,8 +28,10 @@
* both the QuickTime support and (vkeybd http://www.alsa-project.org/~iwai/alsa.html)
*/
-#if defined(UNIX) && !defined(__BEOS__) && !defined(__MAEMO__) && !defined(__MINT__)
+#include "common/scummsys.h"
+#if defined(USE_SEQ_MIDI)
+
#include "common/util.h"
#include "sound/musicplugin.h"
#include "sound/mpu401.h"
@@ -184,7 +186,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices SeqMusicPlugin::getDevices() const {
@@ -195,21 +197,12 @@
return devices;
}
-Common::Error SeqMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error SeqMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_SEQ();
return Common::kNoError;
}
-MidiDriver *MidiDriver_SEQ_create() {
- MidiDriver *mididriver;
-
- SeqMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(SEQ)
//REGISTER_PLUGIN_DYNAMIC(SEQ, PLUGIN_TYPE_MUSIC, SeqMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/stmidi.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/stmidi.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/stmidi.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -127,8 +127,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver)
- const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices StMidiMusicPlugin::getDevices() const {
@@ -139,21 +138,12 @@
return devices;
}
-Common::Error StMidiMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error StMidiMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_STMIDI();
return Common::kNoError;
}
-MidiDriver *MidiDriver_STMIDI_create() {
- MidiDriver *mididriver;
-
- StMidiMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(STMIDI)
//REGISTER_PLUGIN_DYNAMIC(STMIDI, PLUGIN_TYPE_MUSIC, StMidiMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/timidity.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/timidity.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/timidity.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -530,7 +530,7 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices TimidityMusicPlugin::getDevices() const {
@@ -539,21 +539,12 @@
return devices;
}
-Common::Error TimidityMusicPlugin::createInstance(MidiDriver **mididriver) const {
+Common::Error TimidityMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
*mididriver = new MidiDriver_TIMIDITY();
return Common::kNoError;
}
-MidiDriver *MidiDriver_TIMIDITY_create() {
- MidiDriver *mididriver;
-
- TimidityMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(TIMIDITY)
//REGISTER_PLUGIN_DYNAMIC(TIMIDITY, PLUGIN_TYPE_MUSIC, TimidityMusicPlugin);
//#else
Modified: scummvm/branches/gsoc2010-testbed/backends/midi/windows.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/windows.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/windows.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -24,12 +24,15 @@
#if defined(WIN32) && !defined(_WIN32_WCE)
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
// winnt.h defines ARRAYSIZE, but we want our own one...
#undef ARRAYSIZE
#include "sound/musicplugin.h"
#include "sound/mpu401.h"
+#include "common/config-manager.h"
+#include "common/translation.h"
#include <mmsystem.h>
@@ -46,11 +49,12 @@
HANDLE _streamEvent;
HMIDIOUT _mo;
bool _isOpen;
+ int _device;
void check_error(MMRESULT result);
public:
- MidiDriver_WIN() : _isOpen(false) { }
+ MidiDriver_WIN(int deviceIndex) : _isOpen(false), _device(deviceIndex) { }
int open();
void close();
void send(uint32 b);
@@ -62,7 +66,7 @@
return MERR_ALREADY_OPEN;
_streamEvent = CreateEvent(NULL, true, true, NULL);
- MMRESULT res = midiOutOpen((HMIDIOUT *)&_mo, MIDI_MAPPER, (DWORD_PTR)_streamEvent, 0, CALLBACK_EVENT);
+ MMRESULT res = midiOutOpen((HMIDIOUT *)&_mo, _device, (DWORD_PTR)_streamEvent, 0, CALLBACK_EVENT);
if (res != MMSYSERR_NOERROR) {
check_error(res);
CloseHandle(_streamEvent);
@@ -150,7 +154,7 @@
class WindowsMusicPlugin : public MusicPluginObject {
public:
const char *getName() const {
- return "Windows MIDI";
+ return _s("Windows MIDI");
}
const char *getId() const {
@@ -158,32 +162,43 @@
}
MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
+ Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
};
MusicDevices WindowsMusicPlugin::getDevices() const {
MusicDevices devices;
- // TODO: Return a different music type depending on the configuration
- // TODO: List the available devices
- devices.push_back(MusicDevice(this, "", MT_GM));
+ int numDevs = midiOutGetNumDevs();
+ MIDIOUTCAPS tmp;
+
+ for (int i = 0; i < numDevs; i++) {
+ if (midiOutGetDevCaps(i, &tmp, sizeof(MIDIOUTCAPS)) != MMSYSERR_NOERROR)
+ break;
+ // There is no way to detect the "MusicType" so I just set it to MT_GM
+ // The user will have to manually select his MT32 type device and his GM type device.
+ devices.push_back(MusicDevice(this, tmp.szPname, MT_GM));
+ }
return devices;
}
-Common::Error WindowsMusicPlugin::createInstance(MidiDriver **mididriver) const {
- *mididriver = new MidiDriver_WIN();
+Common::Error WindowsMusicPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle dev) const {
+ int devIndex = 0;
+ bool found = false;
+ if (dev) {
+ MusicDevices i = getDevices();
+ for (MusicDevices::iterator d = i.begin(); d != i.end(); d++) {
+ if (d->getCompleteId().equals(MidiDriver::getDeviceString(dev, MidiDriver::kDeviceId))) {
+ found = true;
+ break;
+ }
+ devIndex++;
+ }
+ }
+
+ *mididriver = new MidiDriver_WIN(found ? devIndex : 0);
return Common::kNoError;
}
-MidiDriver *MidiDriver_WIN_create() {
- MidiDriver *mididriver;
-
- WindowsMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
//#if PLUGIN_ENABLED_DYNAMIC(WINDOWS)
//REGISTER_PLUGIN_DYNAMIC(WINDOWS, PLUGIN_TYPE_MUSIC, WindowsMusicPlugin);
//#else
Deleted: scummvm/branches/gsoc2010-testbed/backends/midi/ypa1.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/ypa1.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/ypa1.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -1,150 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- */
-
-#include "common/util.h"
-#include "sound/musicplugin.h"
-#include "sound/mpu401.h"
-
-#include "Pa1Lib.h"
-
-class MidiDriver_YamahaPa1:public MidiDriver_MPU401 {
-public:
- MidiDriver_YamahaPa1();
- int open();
- void close();
- void send(uint32 b);
-
-private:
- UInt8 _midiHandle;
- Boolean _isOpen;
- };
-
-MidiDriver_YamahaPa1::MidiDriver_YamahaPa1() {
- _isOpen = false;
- _midiHandle = 0;
-}
-
-int MidiDriver_YamahaPa1::open() {
- if (!(_isOpen = Pa1Lib_midiOpen(NULL, &_midiHandle)))
- return MERR_DEVICE_NOT_AVAILABLE;
-
- return 0;
-}
-
-void MidiDriver_YamahaPa1::close() {
- if (_isOpen) {
- _isOpen = false;
- MidiDriver_MPU401::close();
- for (UInt8 channel = 0; channel < 16; channel++) {
- Pa1Lib_midiControlChange(_midiHandle, channel, 120,0); // all sound off
- Pa1Lib_midiControlChange(_midiHandle, channel, 121,0); // reset all controller
- Pa1Lib_midiControlChange(_midiHandle, channel, 123, 0); // all notes off
- }
- Pa1Lib_midiClose(_midiHandle);
- }
-}
-
-void MidiDriver_YamahaPa1::send(uint32 b) {
- if (!_isOpen)
- return;
-
- UInt8 midiCmd[4];
- UInt8 chanID,mdCmd;
-
- midiCmd[3] = (b & 0xFF000000) >> 24;
- midiCmd[2] = (b & 0x00FF0000) >> 16;
- midiCmd[1] = (b & 0x0000FF00) >> 8;
- midiCmd[0] = (b & 0x000000FF);
-
- chanID = (midiCmd[0] & 0x0F) ;
- mdCmd = midiCmd[0] & 0xF0;
-
- switch (mdCmd) {
- case 0x80: // note off
- Pa1Lib_midiNoteOff(_midiHandle, chanID, midiCmd[1], 0);
- break;
-
- case 0x90: // note on
- Pa1Lib_midiNoteOn(_midiHandle, chanID, midiCmd[1], midiCmd[2]);
- break;
-
- case 0xB0: // control change
- Pa1Lib_midiControlChange(_midiHandle, chanID, midiCmd[1], midiCmd[2]);
- break;
-
- case 0xC0: // progam change
- Pa1Lib_midiProgramChange(_midiHandle, chanID, midiCmd[1]);
- break;
-
- case 0xE0: // pitchBend
- Pa1Lib_midiPitchBend(_midiHandle, chanID, (short)(midiCmd[1] | (midiCmd[2] << 8)));
- break;
- }
-}
-
-
-// Plugin interface
-
-class YamahaPa1MusicPlugin : public MusicPluginObject {
-public:
- const char *getName() const {
- return "Yamaha Pa1";
- }
-
- const char *getId() const {
- return "ypa1";
- }
-
- MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
-};
-
-MusicDevices YamahaPa1MusicPlugin::getDevices() const {
- MusicDevices devices;
- // TODO: Return a different music type depending on the configuration
- // TODO: List the available devices
- devices.push_back(MusicDevice(this, "", MT_GM));
- return devices;
-}
-
-Common::Error YamahaPa1MusicPlugin::createInstance(MidiDriver **mididriver) const {
- *mididriver = new MidiDriver_YamahaPa1();
-
- return Common::kNoError;
-}
-
-MidiDriver *MidiDriver_YamahaPa1_create() {
- MidiDriver *mididriver;
-
- YamahaPa1MusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
-//#if PLUGIN_ENABLED_DYNAMIC(YPA1)
- //REGISTER_PLUGIN_DYNAMIC(YPA1, PLUGIN_TYPE_MUSIC, YamahaPa1MusicPlugin);
-//#else
- REGISTER_PLUGIN_STATIC(YPA1, PLUGIN_TYPE_MUSIC, YamahaPa1MusicPlugin);
-//#endif
Deleted: scummvm/branches/gsoc2010-testbed/backends/midi/zodiac.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/midi/zodiac.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/midi/zodiac.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -1,170 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- */
-
-#include "common/util.h"
-#include "sound/musicplugin.h"
-#include "sound/mpu401.h"
-
-#ifndef DISABLE_TAPWAVE
-
-#include <tapwave.h>
-
-
-class MidiDriver_Zodiac:public MidiDriver_MPU401 {
-public:
- MidiDriver_Zodiac();
- int open();
- void close();
- void send(uint32 b);
- void sysEx(const byte *msg, uint16 length);
-
-private:
- TwMidiHandle _midiHandle;
- Boolean _isOpen;
- Int32 _oldVol;
- };
-
-MidiDriver_Zodiac::MidiDriver_Zodiac() {
- _isOpen = false;
- _midiHandle = 0;
-}
-
-int MidiDriver_Zodiac::open() {
- Err e;
-
- if (e = TwMidiOpen(&_midiHandle))
- return MERR_DEVICE_NOT_AVAILABLE;
-
- TwMidiGetMasterVolume(&_oldVol);
- TwMidiSetMasterVolume(twMidiMaxVolume); // TODO : set volume based on gVars
-
- _isOpen = true;
- return 0;
-}
-
-void MidiDriver_Zodiac::close() {
- if (_isOpen) {
- _isOpen = false;
- MidiDriver_MPU401::close();
-
- TwMidiSetMasterVolume(_oldVol);
- TwMidiClose(_midiHandle);
- }
-}
-
-void MidiDriver_Zodiac::send(uint32 b) {
- if (!_isOpen)
- return;
-
- UInt8 midiCmd[4];
- UInt8 chanID,mdCmd;
-
- midiCmd[3] = (b & 0xFF000000) >> 24;
- midiCmd[2] = (b & 0x00FF0000) >> 16;
- midiCmd[1] = (b & 0x0000FF00) >> 8;
- midiCmd[0] = (b & 0x000000FF);
-
- chanID = (midiCmd[0] & 0x0F) ;
- mdCmd = midiCmd[0] & 0xF0;
-
- switch (mdCmd) {
- case 0x80: // note off
- TwMidiNoteOff(_midiHandle, chanID, midiCmd[1], 0);
- break;
-
- case 0x90: // note on
- TwMidiNoteOn(_midiHandle, chanID, midiCmd[1], midiCmd[2]);
- break;
-
- case 0xB0: // control change
- TwMidiControlChange(_midiHandle, chanID, midiCmd[1], midiCmd[2]);
- break;
-
- case 0xC0: // progam change
- TwMidiProgramChange(_midiHandle, chanID, midiCmd[1]);
- break;
-
- case 0xE0: // pitchBend
- TwMidiPitchBend(_midiHandle, chanID, (short)(midiCmd[1] | (midiCmd[2] << 8)));
- break;
- }
-}
-
-void MidiDriver_Zodiac::sysEx(const byte *msg, uint16 length) {
- unsigned char buf[266];
-
- buf[0] = 0xF0;
- memcpy(buf + 1, msg, length);
- buf[length + 1] = 0xF7;
-
- TwMidiSysEx(_midiHandle, 0, (byte *)buf, length + 2);
-}
-
-
-// Plugin interface
-
-class ZodiacMusicPlugin : public MusicPluginObject {
-public:
- const char *getName() const {
- return "Tapwave Zodiac";
- }
-
- const char *getId() const {
- return "zodiac";
- }
-
- MusicDevices getDevices() const;
- Common::Error createInstance(MidiDriver **mididriver) const;
-};
-
-MusicDevices ZodiacMusicPlugin::getDevices() const {
- MusicDevices devices;
- // TODO: Return a different music type depending on the configuration
- // TODO: List the available devices
- devices.push_back(MusicDevice(this, "", MT_GM));
- return devices;
-}
-
-Common::Error ZodiacMusicPlugin::createInstance(MidiDriver **mididriver) const {
- *mididriver = new MidiDriver_Zodiac();
-
- return Common::kNoError;
-}
-
-MidiDriver *MidiDriver_Zodiac_create() {
- MidiDriver *mididriver;
-
- ZodiacMusicPlugin p;
- p.createInstance(&mididriver);
-
- return mididriver;
-}
-
-//#if PLUGIN_ENABLED_DYNAMIC(ZODIAC)
- //REGISTER_PLUGIN_DYNAMIC(ZODIAC, PLUGIN_TYPE_MUSIC, ZodiacMusicPlugin);
-//#else
- REGISTER_PLUGIN_STATIC(ZODIAC, PLUGIN_TYPE_MUSIC, ZodiacMusicPlugin);
-//#endif
-
-#endif
Modified: scummvm/branches/gsoc2010-testbed/backends/module.mk
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/module.mk 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/module.mk 2010-08-06 20:13:41 UTC (rev 51798)
@@ -6,17 +6,9 @@
fs/abstract-fs.o \
fs/stdiostream.o \
fs/amigaos4/amigaos4-fs-factory.o \
- fs/ds/ds-fs-factory.o \
- fs/palmos/palmos-fs-factory.o \
fs/posix/posix-fs-factory.o \
- fs/ps2/ps2-fs-factory.o \
- fs/psp/psp-fs-factory.o \
- fs/psp/psp-stream.o \
fs/symbian/symbian-fs-factory.o \
fs/windows/windows-fs-factory.o \
- fs/wii/wii-fs-factory.o \
- fs/n64/n64-fs-factory.o \
- fs/n64/romfsstream.o \
keymapper/action.o \
keymapper/keymap.o \
keymapper/keymapper.o \
@@ -30,22 +22,54 @@
midi/timidity.o \
midi/dmedia.o \
midi/windows.o \
- plugins/dc/dc-provider.o \
plugins/posix/posix-provider.o \
plugins/sdl/sdl-provider.o \
plugins/win32/win32-provider.o \
- plugins/psp/psp-provider.o \
saves/savefile.o \
saves/default/default-saves.o \
saves/posix/posix-saves.o \
- saves/psp/psp-saves.o \
timer/default/default-timer.o \
- timer/psp/timer.o \
vkeybd/image-map.o \
vkeybd/polygon.o \
vkeybd/virtual-keyboard.o \
vkeybd/virtual-keyboard-gui.o \
vkeybd/virtual-keyboard-parser.o
+ifeq ($(BACKEND),dc)
+MODULE_OBJS += \
+ plugins/dc/dc-provider.o
+endif
+
+ifeq ($(BACKEND),ds)
+MODULE_OBJS += \
+ fs/ds/ds-fs-factory.o \
+ fs/ds/ds-fs.o
+endif
+
+ifeq ($(BACKEND),n64)
+MODULE_OBJS += \
+ fs/n64/n64-fs-factory.o \
+ fs/n64/romfsstream.o
+endif
+
+ifeq ($(BACKEND),ps2)
+MODULE_OBJS += \
+ fs/ps2/ps2-fs-factory.o
+endif
+
+ifeq ($(BACKEND),psp)
+MODULE_OBJS += \
+ fs/psp/psp-fs-factory.o \
+ fs/psp/psp-stream.o \
+ plugins/psp/psp-provider.o \
+ saves/psp/psp-saves.o \
+ timer/psp/timer.o
+endif
+
+ifeq ($(BACKEND),wii)
+MODULE_OBJS += \
+ fs/wii/wii-fs-factory.o
+endif
+
# Include common rules
include $(srcdir)/rules.mk
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/README.build
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/README.build 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/README.build 2010-08-06 20:13:41 UTC (rev 51798)
@@ -2,41 +2,38 @@
=================================
You will need these things to build:
-1. Android EGL headers and library
-2. Android SDK
-3. An arm-android-eabi GCC toolchain
+1. Android SDK
+2. An arm-oe-linux-androideabi GCC toolchain(*)
In the example commands, we are going to build against the Android 1.5
native ABI (but using the Android 1.6 SDK tools). Other version
combinations might/should be possible with a bit of tweaking.
-In detail:
+(*) Any other sane Android toolchain should be easy to use, but this
+is the toolchain prefix that is used by default. You can trivially
+find and modify the single location where it appears in ./configure if
+you have some other prefix variation.
-1. Android EGL headers and library
-You can build these from the full Android source, but it is far easier
-to just download the 3 Android EGL headers from here:
- http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=opengl/include/EGL;hb=HEAD
- (copy them to a directory called "EGL" somewhere)
+In detail:
-... and grab libEGL.so off an existing phone/emulator:
- adb pull /system/lib/libEGL.so /tmp
+1. Android SDK
-2. Android SDK
+Download the SDK from http://developer.android.com/ and install
+somewhere. You will need both the API level 8 (aka Android 2.2) and
+API level 3 (aka Android 1.5) platforms.
-Download and install somewhere.
+2. arm-*-linux-androideabi GCC toolchain
-3. arm-android-eabi GCC toolchain
-
You have several choices for toolchains:
-- Use Google arm-eabi prebuilt toolchain.
+ - Use Google arm-eabi prebuilt toolchain.
This is shipped with both the Android source release and Android NDK.
The problem is that "arm-eabi-gcc" can't actually link anything
successfully without extra command line flags. To use this with the
ScummVM configure/build environment you will need to create a family
-of shell wrapper scripts that convert "arm-android-eabi-foo" to
+of shell wrapper scripts that convert "arm-oe-linux-androideabi-foo" to
"arm-eabi-foo -mandroid".
For example, I use this script:
@@ -44,18 +41,25 @@
exec arm-eabi-${0##*-} -mandroid -DANDROID "$@"
... and create a family of symlinks/hardlinks pointing to it called
-arm-android-eabi-gcc, arm-android-eabi-g++, etc. For tools that don't
-take a "-mandroid" argument - like arm-eabi-strip - I bypass the shell
-wrapper and just create an arm-android-eabi-strip symlink to the tool
-directly.
+arm-oe-android-linuxeabi-gcc, arm-oe-android-linuxeabi-g++, etc. For
+tools that don't take a "-mandroid" argument - like arm-eabi-strip - I
+bypass the shell wrapper and just create an arm-oe-android-linuxeabi-strip
+symlink to the tool directly.
-- Build your own arm-android-eabi toolchain from GCC source.
+In practice you will probably need significant linker command line
+massaging in order to get the crtbegin/end and libraries all linked in
+the right way. It's not hard to do manually, but it is annoying to
+script in a general purpose way.
-This is lots of fun. I suggest my Android openembedded patches, see:
- http://wiki.github.com/anguslees/openembedded-android/
-(You just need to have lots of disk space and type a few commands)
-If you get stuck, ask
+ - Build your own arm-*-linux-androideabi toolchain from GCC source.
+This is lots of fun, but will become significantly easier once gcc-4.6
+is released. In the interim, I suggest using my precompiled Android
+openembedded-based toolchain:
+ wget http://commondatastorage.googleapis.com/anr/sdk/android-2.2-i686-linux-armv5te-linux-androideabi-toolchain-android.tar.bz2
+ sudo tar jxf android-2.2-i686-linux-armv5te-linux-androideabi-toolchain-android.tar.bz2 -C /
+ . /usr/local/android/arm/environment-setup
+
Alternatively, do a websearch - there are several other cross-compile
toolchains around.
@@ -63,18 +67,21 @@
Building ScummVM
================
+(Optionally) compress scummmodern.zip:
+(ScummVM usually ships it uncompressed, but Android can read it more
+efficiently if it is compressed *before* adding it to the apk)
+
+ ( cd gui/themes/scummmodern && zip -f ../scummmodern.zip )
+
+Then build ScummVM:
+
export ANDROID_SDK=<root of Android SDK>
PATH=$ANDROID_SDK/platforms/android-1.6/tools:$ANDROID_SDK/tools:$PATH
- # You also want to ensure your arm-android-eabi toolchain is in your $PATH
+ # You also want to ensure your arm-oe-linux-androideabi toolchain is in $PATH
export ANDROID_TOP=<root of built Android source>
- EGL_INC="-I<location of EGL/ header directory>"
- EGL_LIBS="-L<location of libEGL.so>"
-
- CPPFLAGS="$EGL_INC" \
- LDFLAGS="-g $EGL_LIBS" \
./configure --backend=android --host=android --enable-zlib #and any other flags
make scummvm.apk
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/android.cpp
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/android.cpp 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/android.cpp 2010-08-06 20:13:41 UTC (rev 51798)
@@ -31,10 +31,6 @@
#if defined(ANDROID_BACKEND)
-#define ANDROID_VERSION_GE(major,minor) \
- (ANDROID_MAJOR_VERSION > (major) || \
- (ANDROID_MAJOR_VERSION == (major) && ANDROID_MINOR_VERSION >= (minor)))
-
#include <jni.h>
#include <string.h>
@@ -45,7 +41,6 @@
#include <GLES/gl.h>
#include <GLES/glext.h>
-#include <EGL/egl.h>
#include <android/log.h>
#include "common/archive.h"
@@ -78,6 +73,14 @@
#undef JNIEXPORT
#define JNIEXPORT __attribute__ ((visibility("default")))
+// This replaces the bionic libc assert message with something that
+// actually prints the assertion failure before aborting.
+extern "C"
+void __assert(const char *file, int line, const char *expr) {
+ __android_log_assert(expr, LOG_TAG, "%s:%d: Assertion failure: %s",
+ file, line, expr);
+}
+
static JavaVM *cached_jvm;
static jfieldID FID_Event_type;
static jfieldID FID_Event_synthetic;
@@ -162,20 +165,19 @@
jmethodID MID_getPluginDirectories;
jmethodID MID_setupScummVMSurface;
jmethodID MID_destroyScummVMSurface;
+ jmethodID MID_swapBuffers;
int _screen_changeid;
- EGLDisplay _egl_display;
- EGLSurface _egl_surface;
- EGLint _egl_surface_width;
- EGLint _egl_surface_height;
+ int _egl_surface_width;
+ int _egl_surface_height;
bool _force_redraw;
// Game layer
GLESPaletteTexture* _game_texture;
int _shake_offset;
+ Common::Rect _focus_rect;
bool _full_screen_dirty;
- Common::Array<Common::Rect> _dirty_rects;
// Overlay layer
GLES4444Texture* _overlay_texture;
@@ -195,6 +197,7 @@
pthread_t _timer_thread;
static void* timerThreadFunc(void* arg);
+ bool _enable_zoning;
bool _virtkeybd_on;
Common::SaveFileManager *_savefile;
@@ -217,6 +220,11 @@
static OSystem_Android* fromJavaObject(JNIEnv* env, jobject obj);
virtual void initBackend();
void addPluginDirectories(Common::FSList &dirs) const;
+ void enableZoning(bool enable) { _enable_zoning = enable; }
+ void setSurfaceSize(int width, int height) {
+ _egl_surface_width = width;
+ _egl_surface_height = height;
+ }
virtual bool hasFeature(Feature f);
virtual void setFeatureState(Feature f, bool enable);
@@ -297,8 +305,6 @@
OSystem_Android::OSystem_Android(jobject am)
: _back_ptr(0),
- _egl_display(EGL_NO_DISPLAY),
- _egl_surface(EGL_NO_SURFACE),
_screen_changeid(0),
_force_redraw(false),
_game_texture(NULL),
@@ -307,6 +313,7 @@
_use_mouse_palette(false),
_show_mouse(false),
_show_overlay(false),
+ _enable_zoning(false),
_savefile(0),
_mixer(0),
_timer(0),
@@ -362,6 +369,7 @@
FIND_METHOD(getPluginDirectories, "()[Ljava/lang/String;");
FIND_METHOD(setupScummVMSurface, "()V");
FIND_METHOD(destroyScummVMSurface, "()V");
+ FIND_METHOD(swapBuffers, "()Z");
#undef FIND_METHOD
@@ -574,6 +582,7 @@
}
void OSystem_Android::setupScummVMSurface() {
+ ENTER("setupScummVMSurface");
JNIEnv* env = JNU_GetEnv();
env->CallVoidMethod(_back_ptr, MID_setupScummVMSurface);
if (env->ExceptionCheck())
@@ -581,37 +590,8 @@
// EGL set up with a new surface. Initialise OpenGLES context.
- _egl_display = eglGetCurrentDisplay();
- _egl_surface = eglGetCurrentSurface(EGL_DRAW);
-
- static bool log_version = true;
- if (log_version) {
- __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
- "Using EGL %s (%s); GL %s/%s (%s)",
- eglQueryString(_egl_display, EGL_VERSION),
- eglQueryString(_egl_display, EGL_VENDOR),
- glGetString(GL_VERSION),
- glGetString(GL_RENDERER),
- glGetString(GL_VENDOR));
- log_version = false; // only log this once
- }
-
GLESTexture::initGLExtensions();
- if (!eglQuerySurface(_egl_display, _egl_surface,
- EGL_WIDTH, &_egl_surface_width) ||
- !eglQuerySurface(_egl_display, _egl_surface,
- EGL_HEIGHT, &_egl_surface_height)) {
- JNU_ThrowByName(env, "java/lang/RuntimeException",
- "Error fetching EGL surface width/height");
- return;
- }
- __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
- "New surface is %dx%d",
- _egl_surface_width, _egl_surface_height);
-
- CHECK_GL_ERROR();
-
// Turn off anything that looks like 3D ;)
glDisable(GL_CULL_FACE);
glDisable(GL_DEPTH_TEST);
@@ -645,20 +625,18 @@
_mouse_texture->reinitGL();
glViewport(0, 0, _egl_surface_width, _egl_surface_height);
+
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, _egl_surface_width, _egl_surface_height, 0, -1, 1);
-
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
+ clearFocusRectangle();
CHECK_GL_ERROR();
-
- _force_redraw = true;
}
void OSystem_Android::destroyScummVMSurface() {
- _egl_surface = EGL_NO_SURFACE;
JNIEnv* env = JNU_GetEnv();
env->CallVoidMethod(_back_ptr, MID_destroyScummVMSurface);
// Can't use OpenGLES functions after this
@@ -676,7 +654,7 @@
_overlay_texture->allocBuffer(overlay_width, overlay_height);
// Don't know mouse size yet - it gets reallocated in
- // setMouseCursor. We need the palette allocated before
+ // setMouseCursor. We need the palette allocated before
// setMouseCursor however, so just take a guess at the desired
// size (it's small).
_mouse_texture->allocBuffer(20, 20);
@@ -691,7 +669,7 @@
}
void OSystem_Android::setPalette(const byte* colors, uint start, uint num) {
- ENTER("setPalette(%p, %u, %u)", colors, start, num);
+ ENTER("setPalette(%p, %u, %u)", colors, start, num);
if (!_use_mouse_palette)
_setCursorPalette(colors, start, num);
@@ -739,8 +717,11 @@
glPushMatrix();
- if (_shake_offset != 0) {
- // This is the only case where _game_texture doesn't
+ if (_shake_offset != 0 ||
+ (!_focus_rect.isEmpty() &&
+ !Common::Rect(_game_texture->width(),
+ _game_texture->height()).contains(_focus_rect))) {
+ // These are the only cases where _game_texture doesn't
// cover the entire screen.
glClearColorx(0, 0, 0, 1 << 16);
glClear(GL_COLOR_BUFFER_BIT);
@@ -749,15 +730,29 @@
glTranslatex(0, -_shake_offset << 16, 0);
}
- _game_texture->drawTexture(0, 0,
- _egl_surface_width, _egl_surface_height);
+ if (_focus_rect.isEmpty()) {
+ _game_texture->drawTexture(0, 0,
+ _egl_surface_width, _egl_surface_height);
+ } else {
+ glPushMatrix();
+ glScalex(xdiv(_egl_surface_width, _focus_rect.width()),
+ xdiv(_egl_surface_height, _focus_rect.height()),
+ 1 << 16);
+ glTranslatex(-_focus_rect.left << 16, -_focus_rect.top << 16, 0);
+ glScalex(xdiv(_game_texture->width(), _egl_surface_width),
+ xdiv(_game_texture->height(), _egl_surface_height),
+ 1 << 16);
+ _game_texture->drawTexture(0, 0,
+ _egl_surface_width, _egl_surface_height);
+ glPopMatrix();
+ }
CHECK_GL_ERROR();
if (_show_overlay) {
_overlay_texture->drawTexture(0, 0,
- _egl_surface_width,
- _egl_surface_height);
+ _egl_surface_width,
+ _egl_surface_height);
CHECK_GL_ERROR();
}
@@ -765,8 +760,8 @@
glPushMatrix();
glTranslatex(-_mouse_hotspot.x << 16,
- -_mouse_hotspot.y << 16,
- 0);
+ -_mouse_hotspot.y << 16,
+ 0);
// Scale up ScummVM -> OpenGL (pixel) coordinates
int texwidth, texheight;
@@ -778,8 +773,8 @@
texheight = getHeight();
}
glScalex(xdiv(_egl_surface_width, texwidth),
- xdiv(_egl_surface_height, texheight),
- 1 << 16);
+ xdiv(_egl_surface_height, texheight),
+ 1 << 16);
// Note the extra half texel to position the mouse in
// the middle of the x,y square:
@@ -801,14 +796,11 @@
CHECK_GL_ERROR();
- if (!eglSwapBuffers(_egl_display, _egl_surface)) {
- EGLint error = eglGetError();
- warning("eglSwapBuffers exited with error 0x%x", error);
- // Some errors mean we need to reinit GL
- if (error == EGL_CONTEXT_LOST) {
- destroyScummVMSurface();
- setupScummVMSurface();
- }
+ JNIEnv* env = JNU_GetEnv();
+ if (!env->CallBooleanMethod(_back_ptr, MID_swapBuffers)) {
+ // Context lost -> need to reinit GL
+ destroyScummVMSurface();
+ setupScummVMSurface();
}
}
@@ -841,26 +833,18 @@
void OSystem_Android::setFocusRectangle(const Common::Rect& rect) {
ENTER("setFocusRectangle(%d,%d,%d,%d)",
rect.left, rect.top, rect.right, rect.bottom);
-#if 0
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrthof(rect.left, rect.right, rect.top, rect.bottom, 0, 1);
- glMatrixMode(GL_MODELVIEW);
-
- _force_redraw = true;
-#endif
+ if (_enable_zoning) {
+ _focus_rect = rect;
+ _force_redraw = true;
+ }
}
void OSystem_Android::clearFocusRectangle() {
ENTER("clearFocusRectangle()");
-#if 0
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrthof(0, _egl_surface_width, _egl_surface_height, 0, -1, 1);
- glMatrixMode(GL_MODELVIEW);
-
- _force_redraw = true;
-#endif
+ if (_enable_zoning) {
+ _focus_rect = Common::Rect();
+ _force_redraw = true;
+ }
}
void OSystem_Android::showOverlay() {
@@ -1338,6 +1322,17 @@
}
#endif
+static void ScummVM_enableZoning(JNIEnv* env, jobject self, jboolean enable) {
+ OSystem_Android* cpp_obj = OSystem_Android::fromJavaObject(env, self);
+ cpp_obj->enableZoning(enable);
+}
+
+static void ScummVM_setSurfaceSize(JNIEnv* env, jobject self,
+ jint width, jint height) {
+ OSystem_Android* cpp_obj = OSystem_Android::fromJavaObject(env, self);
+ cpp_obj->setSurfaceSize(width, height);
+}
+
const static JNINativeMethod gMethods[] = {
{ "create", "(Landroid/content/res/AssetManager;)V",
(void*)ScummVM_create },
@@ -1352,6 +1347,10 @@
(void*)ScummVM_setConfManInt },
{ "setConfMan", "(Ljava/lang/String;Ljava/lang/String;)V",
(void*)ScummVM_setConfManString },
+ { "enableZoning", "(Z)V",
+ (void*)ScummVM_enableZoning },
+ { "setSurfaceSize", "(II)V",
+ (void*)ScummVM_setSurfaceSize },
};
JNIEXPORT jint JNICALL
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/android.mk
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/android.mk 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/android.mk 2010-08-06 20:13:41 UTC (rev 51798)
@@ -4,7 +4,6 @@
DX = dx
APKBUILDER = apkbuilder
ADB = adb -e
-ANDROID_JAR = $(ANDROID_SDK)/platforms/android-1.6/android.jar
JAVAC ?= javac
JAVACFLAGS = -source 1.5 -target 1.5
@@ -12,6 +11,14 @@
#LDFLAGS += -Wl,--gc-sections
#CXXFLAGS += -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden
+resources.ap_: $(srcdir)/dists/android/AndroidManifest.xml $(RESOURCES) $(ASSETS) $(ANDROID_JAR8) $(DIST_FILES_THEMES) $(DIST_FILES_ENGINEDATA)
+ $(INSTALL) -d build.tmp/assets/
+ $(INSTALL) -c -m 644 $(DIST_FILES_THEMES) $(DIST_FILES_ENGINEDATA) build.tmp/assets/
+ $(AAPT) package -f -M $< -S $(srcdir)/dists/android/res -A build.tmp/assets -I $(ANDROID_JAR8) -F $@
+
+build.tmp/%/resources.ap_: build.tmp/%/AndroidManifest.xml build.stage/%/res/values/strings.xml build.stage/%/res/drawable/scummvm.png $(ANDROID_JAR8)
+ $(AAPT) package -f -M $< -S build.stage/$*/res -I $(ANDROID_JAR8) -F $@
+
scummvm.apk: build.tmp/libscummvm.so resources.ap_ classes.dex
# Package installer won't delete old libscummvm.so on upgrade so
# replace it with a zero size file
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/module.mk
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/module.mk 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/module.mk 2010-08-06 20:13:41 UTC (rev 51798)
@@ -3,12 +3,11 @@
MODULE_OBJS := \
android.o asset-archive.o video.o
-MODULE_DIRS += \
- backends/platform/android/
+# We don't use rules.mk but rather manually update OBJS and MODULE_DIRS.
+MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))
+OBJS := $(MODULE_OBJS) $(OBJS)
+MODULE_DIRS += $(sort $(dir $(MODULE_OBJS)))
-# We don't use the rules.mk here on purpose
-OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS)) $(OBJS)
-
JAVA_SRC = \
$(MODULE)/org/inodes/gus/scummvm/ScummVM.java \
$(MODULE)/org/inodes/gus/scummvm/ScummVMApplication.java \
@@ -39,14 +38,22 @@
#ANDROID_VERSIONCODE = 6 Specified in dists/android/AndroidManifest.xml.in
ANDROID_PLUGIN_VERSIONCODE = 6
+# This is a bit silly. I want to compile against the 1.6 android.jar,
+# to make the compiler check that I don't use something that requires
+# a newer Android. However, in order to use android:installLocation,
+# we need to give aapt a version >=8 android.jar - even though the
+# result will work ok on 1.5+.
+ANDROID_JAR = $(ANDROID_SDK)/platforms/android-1.5/android.jar
+ANDROID_JAR8 = $(ANDROID_SDK)/platforms/android-8/android.jar
+
# This library contains scummvm proper
build.tmp/libscummvm.so: $(OBJS)
@$(MKDIR) -p $(@D)
- $(CXX) $(PLUGIN_LDFLAGS) -shared $(LDFLAGS) -Wl,-soname,$(@F) -Wl,--no-undefined -o $@ $(PRE_OBJS_FLAGS) $(OBJS) $(POST_OBJS_FLAGS) $(LIBS)
+ $(QUIET_LINK)$(CXX) -shared $(LDFLAGS) -Wl,-Bsymbolic -Wl,-soname,$(@F) -Wl,--no-undefined -o $@ $(PRE_OBJS_FLAGS) $(OBJS) $(POST_OBJS_FLAGS) $(LIBS)
-backends/platform/android/org/inodes/gus/scummvm/R.java backends/platform/android/org/inodes/gus/scummvm/Manifest.java: $(srcdir)/dists/android/AndroidManifest.xml $(filter %.xml,$(RESOURCES)) $(ANDROID_JAR)
- $(AAPT) package -m -J backends/platform/android -M $< -S $(srcdir)/dists/android/res -I $(ANDROID_JAR)
+backends/platform/android/org/inodes/gus/scummvm/R.java backends/platform/android/org/inodes/gus/scummvm/Manifest.java: $(srcdir)/dists/android/AndroidManifest.xml $(filter %.xml,$(RESOURCES)) $(ANDROID_JAR8)
+ $(AAPT) package -m -J backends/platform/android -M $< -S $(srcdir)/dists/android/res -I $(ANDROID_JAR8)
build.tmp/classes/%.class: $(srcdir)/backends/platform/android/%.java $(srcdir)/backends/platform/android/org/inodes/gus/scummvm/R.java
@$(MKDIR) -p $(@D)
@@ -63,14 +70,6 @@
@$(MKDIR) -p $(@D)
$(DX) --dex --output=$@ build.tmp/classes.plugin
-resources.ap_: $(srcdir)/dists/android/AndroidManifest.xml $(RESOURCES) $(ASSETS) $(ANDROID_JAR) $(DIST_FILES_THEMES) $(DIST_FILES_ENGINEDATA)
- $(INSTALL) -d build.tmp/assets/
- $(INSTALL) -c -m 644 $(DIST_FILES_THEMES) $(DIST_FILES_ENGINEDATA) build.tmp/assets/
- $(AAPT) package -f -M $< -S $(srcdir)/dists/android/res -A build.tmp/assets -I $(ANDROID_JAR) -F $@
-
-build.tmp/%/resources.ap_: build.tmp/%/AndroidManifest.xml build.stage/%/res/values/strings.xml build.stage/%/res/drawable/scummvm.png $(ANDROID_JAR)
- $(AAPT) package -f -M $< -S build.stage/$*/res -I $(ANDROID_JAR) -F $@
-
build.tmp/%/AndroidManifest.xml build.stage/%/res/values/strings.xml: dists/android/mkmanifest.pl configure dists/android/AndroidManifest.xml
dists/android/mkmanifest.pl --id=$* --configure=configure \
--version-name=$(VERSION) \
Property changes on: scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm
___________________________________________________________________
Added: svn:ignore
+ R.java
Manifest.java
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java 2010-08-06 20:13:41 UTC (rev 51798)
@@ -12,7 +12,10 @@
import android.view.Surface;
import android.view.SurfaceHolder;
+import javax.microedition.khronos.opengles.GL;
+import javax.microedition.khronos.opengles.GL10;
import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGL11;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
@@ -30,11 +33,11 @@
public class ScummVM implements SurfaceHolder.Callback {
private final static String LOG_TAG = "ScummVM.java";
- private final int AUDIO_FRAME_SIZE = 2 * 2; // bytes. 16bit audio * stereo
+ private final int AUDIO_FRAME_SIZE = 2 * 2; // bytes. 16bit audio * stereo
public static class AudioSetupException extends Exception {}
private long nativeScummVM; // native code hangs itself here
- boolean scummVMRunning = false;
+ boolean scummVMRunning = false;
private native void create(AssetManager am);
@@ -54,49 +57,49 @@
destroy();
}
- // Surface creation:
- // GUI thread: create surface, release lock
- // ScummVM thread: acquire lock (block), read surface
- //
- // Surface deletion:
- // GUI thread: post event, acquire lock (block), return
- // ScummVM thread: read event, free surface, release lock
- //
- // In other words, ScummVM thread does this:
- // acquire lock
- // setup surface
- // when SCREEN_CHANGED arrives:
- // destroy surface
- // release lock
- // back to acquire lock
- static final int configSpec[] = {
+ // Surface creation:
+ // GUI thread: create surface, release lock
+ // ScummVM thread: acquire lock (block), read surface
+ //
+ // Surface deletion:
+ // GUI thread: post event, acquire lock (block), return
+ // ScummVM thread: read event, free surface, release lock
+ //
+ // In other words, ScummVM thread does this:
+ // acquire lock
+ // setup surface
+ // when SCREEN_CHANGED arrives:
+ // destroy surface
+ // release lock
+ // back to acquire lock
+ static final int configSpec[] = {
EGL10.EGL_RED_SIZE, 5,
EGL10.EGL_GREEN_SIZE, 5,
EGL10.EGL_BLUE_SIZE, 5,
EGL10.EGL_DEPTH_SIZE, 0,
EGL10.EGL_SURFACE_TYPE, EGL10.EGL_WINDOW_BIT,
EGL10.EGL_NONE,
- };
- EGL10 egl;
- EGLDisplay eglDisplay = EGL10.EGL_NO_DISPLAY;
- EGLConfig eglConfig;
- EGLContext eglContext = EGL10.EGL_NO_CONTEXT;
- EGLSurface eglSurface = EGL10.EGL_NO_SURFACE;
- Semaphore surfaceLock = new Semaphore(0, true);
- SurfaceHolder nativeSurface;
+ };
+ EGL10 egl;
+ EGLDisplay eglDisplay = EGL10.EGL_NO_DISPLAY;
+ EGLConfig eglConfig;
+ EGLContext eglContext = EGL10.EGL_NO_CONTEXT;
+ EGLSurface eglSurface = EGL10.EGL_NO_SURFACE;
+ Semaphore surfaceLock = new Semaphore(0, true);
+ SurfaceHolder nativeSurface;
- public void surfaceCreated(SurfaceHolder holder) {
+ public void surfaceCreated(SurfaceHolder holder) {
nativeSurface = holder;
surfaceLock.release();
- }
+ }
- public void surfaceChanged(SurfaceHolder holder, int format,
+ public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// Disabled while I debug GL problems
//pushEvent(new Event(Event.EVENT_SCREEN_CHANGED));
- }
+ }
- public void surfaceDestroyed(SurfaceHolder holder) {
+ public void surfaceDestroyed(SurfaceHolder holder) {
pushEvent(new Event(Event.EVENT_SCREEN_CHANGED));
try {
surfaceLock.acquire();
@@ -104,10 +107,10 @@
Log.e(this.toString(),
"Interrupted while waiting for surface lock", e);
}
- }
+ }
- // Called by ScummVM thread (from initBackend)
- private void createScummVMGLContext() {
+ // Called by ScummVM thread (from initBackend)
+ private void createScummVMGLContext() {
egl = (EGL10)EGLContext.getEGL();
eglDisplay = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
int[] version = new int[2];
@@ -126,10 +129,11 @@
eglContext = egl.eglCreateContext(eglDisplay, eglConfig,
EGL10.EGL_NO_CONTEXT, null);
- }
+ }
- // Called by ScummVM thread
- protected void setupScummVMSurface() {
+ // Called by ScummVM thread
+ static private boolean _log_version = true;
+ protected void setupScummVMSurface() {
try {
surfaceLock.acquire();
} catch (InterruptedException e) {
@@ -140,10 +144,30 @@
eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig,
nativeSurface, null);
egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
- }
- // Called by ScummVM thread
- protected void destroyScummVMSurface() {
+ GL10 gl = (GL10)eglContext.getGL();
+
+ if (_log_version) {
+ Log.i(LOG_TAG, String.format("Using EGL %s (%s); GL %s/%s (%s)",
+ egl.eglQueryString(eglDisplay, EGL10.EGL_VERSION),
+ egl.eglQueryString(eglDisplay, EGL10.EGL_VENDOR),
+ gl.glGetString(GL10.GL_VERSION),
+ gl.glGetString(GL10.GL_RENDERER),
+ gl.glGetString(GL10.GL_VENDOR)));
+ _log_version = false; // only log this once
+ }
+
+ int[] value = new int[1];
+ egl.eglQuerySurface(eglDisplay, eglSurface, EGL10.EGL_WIDTH, value);
+ int width = value[0];
+ egl.eglQuerySurface(eglDisplay, eglSurface, EGL10.EGL_HEIGHT, value);
+ int height = value[0];
+ Log.i(LOG_TAG, String.format("New surface is %dx%d", width, height));
+ setSurfaceSize(width, height);
+ }
+
+ // Called by ScummVM thread
+ protected void destroyScummVMSurface() {
if (eglSurface != null) {
egl.eglMakeCurrent(eglDisplay, EGL10.EGL_NO_SURFACE,
EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT);
@@ -152,16 +176,28 @@
}
surfaceLock.release();
- }
+ }
- public void setSurface(SurfaceHolder holder) {
+ public void setSurface(SurfaceHolder holder) {
holder.addCallback(this);
- }
+ }
+ final public boolean swapBuffers() {
+ if (!egl.eglSwapBuffers(eglDisplay, eglSurface)) {
+ int error = egl.eglGetError();
+ Log.w(LOG_TAG, String.format("eglSwapBuffers exited with error 0x%x", error));
+ if (error == EGL11.EGL_CONTEXT_LOST)
+ return false;
+ }
+ return true;
+ }
+
// Set scummvm config options
final public native static void loadConfigFile(String path);
final public native static void setConfMan(String key, int value);
final public native static void setConfMan(String key, String value);
+ final public native void enableZoning(boolean enable);
+ final public native void setSurfaceSize(int width, int height);
// Feed an event to ScummVM. Safe to call from other threads.
final public native void pushEvent(Event e);
@@ -179,10 +215,10 @@
protected void showVirtualKeyboard(boolean enable) {}
protected String[] getSysArchives() { return new String[0]; }
protected String[] getPluginDirectories() { return new String[0]; }
- protected void initBackend() throws AudioSetupException {
+ protected void initBackend() throws AudioSetupException {
createScummVMGLContext();
initAudio();
- }
+ }
private static class AudioThread extends Thread {
final private int buf_size;
@@ -239,7 +275,7 @@
break;
} else if (ret != len) {
Log.w(LOG_TAG, String.format(
- "Short audio write. Wrote %dB, not %dB",
+ "Short audio write. Wrote %dB, not %dB",
ret, buf.length));
// Buffer is full, so yield cpu for a while
Thread.sleep(100);
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java 2010-08-06 20:13:41 UTC (rev 51798)
@@ -1,7 +1,7 @@
package org.inodes.gus.scummvm;
+import android.app.Activity;
import android.app.AlertDialog;
-import android.app.Activity;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.media.AudioManager;
@@ -9,13 +9,14 @@
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
+import android.util.DisplayMetrics;
import android.util.Log;
-import android.view.inputmethod.InputMethodManager;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewConfiguration;
+import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import java.io.IOException;
@@ -31,8 +32,27 @@
private class MyScummVM extends ScummVM {
private boolean scummvmRunning = false;
+ private boolean usingSmallScreen() {
+ // Multiple screen sizes came in with Android 1.6. Have
+ // to use reflection in order to continue supporting 1.5
+ // devices :(
+ DisplayMetrics metrics = new DisplayMetrics();
+ getWindowManager().getDefaultDisplay().getMetrics(metrics);
+ try {
+ // This 'density' term is very confusing.
+ int DENSITY_LOW = metrics.getClass().getField("DENSITY_LOW").getInt(null);
+ int densityDpi = metrics.getClass().getField("densityDpi").getInt(metrics);
+ return densityDpi <= DENSITY_LOW;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
public MyScummVM() {
super(ScummVMActivity.this);
+
+ // Enable ScummVM zoning on 'small' screens.
+ enableZoning(usingSmallScreen());
}
@Override
Modified: scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java 2010-08-06 20:13:41 UTC (rev 51798)
@@ -34,6 +34,7 @@
import java.util.zip.ZipEntry;
public class Unpacker extends Activity {
+ private final static boolean PLUGINS_ENABLED = true;
private final static String META_NEXT_ACTIVITY =
"org.inodes.gus.unpacker.nextActivity";
private ProgressBar mProgress;
@@ -79,7 +80,6 @@
if (cn != null) {
final Intent origIntent = getIntent();
Intent intent = new Intent();
- intent.setPackage(origIntent.getPackage());
intent.setComponent(cn);
if (origIntent.getExtras() != null)
intent.putExtras(origIntent.getExtras());
@@ -294,7 +294,7 @@
Intent intent = new Intent(ScummVMApplication.ACTION_PLUGIN_QUERY);
List<ResolveInfo> plugins = getPackageManager()
.queryBroadcastReceivers(intent, 0);
- if (plugins.isEmpty()) {
+ if (PLUGINS_ENABLED && plugins.isEmpty()) {
// No plugins installed
AlertDialog.Builder alert = new AlertDialog.Builder(this)
.setTitle(R.string.no_plugins_title)
Deleted: scummvm/branches/gsoc2010-testbed/backends/platform/android/scummvm-android-themeengine.patch
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/scummvm-android-themeengine.patch 2010-08-06 20:09:16 UTC (rev 51797)
+++ scummvm/branches/gsoc2010-testbed/backends/platform/android/scummvm-android-themeengine.patch 2010-08-06 20:13:41 UTC (rev 51798)
@@ -1,135 +0,0 @@
-diff -r 884e66fd1b9c gui/ThemeEngine.cpp
---- a/gui/ThemeEngine.cpp Tue Apr 13 09:30:52 2010 +1000
-+++ b/gui/ThemeEngine.cpp Fri May 28 23:24:43 2010 +1000
-@@ -390,21 +390,19 @@
-
- // Try to create a Common::Archive with the files of the theme.
- if (!_themeArchive && !_themeFile.empty()) {
-- Common::FSNode node(_themeFile);
-- if (node.getName().hasSuffix(".zip") && !node.isDirectory()) {
-+ Common::ArchiveMemberPtr member = SearchMan.getMember(_themeFile);
-+ if (member && member->getName().hasSuffix(".zip")) {
- #ifdef USE_ZLIB
-- Common::Archive *zipArchive = Common::makeZipArchive(node);
-+ Common::Archive *zipArchive = Common::makeZipArchive(member->createReadStream());
-
- if (!zipArchive) {
-- warning("Failed to open Zip archive '%s'.", node.getPath().c_str());
-+ warning("Failed to open Zip archive '%s'.", member->getDisplayName().c_str());
- }
- _themeArchive = zipArchive;
- #else
- warning("Trying to load theme '%s' in a Zip archive without zLib support", _themeFile.c_str());
- return false;
- #endif
-- } else if (node.isDirectory()) {
-- _themeArchive = new Common::FSDirectory(node);
- }
- }
-
-@@ -1436,6 +1434,30 @@
- return tok.empty();
- }
-
-+bool ThemeEngine::themeConfigUsable(const Common::ArchiveMember &member, Common::String &themeName) {
-+ Common::File stream;
-+ bool foundHeader = false;
-+
-+ if (member.getName().hasSuffix(".zip")) {
-+#ifdef USE_ZLIB
-+ Common::Archive *zipArchive = Common::makeZipArchive(member.createReadStream());
-+
-+ if (zipArchive && zipArchive->hasFile("THEMERC")) {
-+ stream.open("THEMERC", *zipArchive);
-+ }
-+
-+ delete zipArchive;
-+#endif
-+ }
-+
-+ if (stream.isOpen()) {
-+ Common::String stxHeader = stream.readLine();
-+ foundHeader = themeConfigParseHeader(stxHeader, themeName);
-+ }
-+
-+ return foundHeader;
-+}
-+
- bool ThemeEngine::themeConfigUsable(const Common::FSNode &node, Common::String &themeName) {
- Common::File stream;
- bool foundHeader = false;
-@@ -1493,10 +1515,6 @@
- if (ConfMan.hasKey("themepath"))
- listUsableThemes(Common::FSNode(ConfMan.get("themepath")), list);
-
--#ifdef DATA_PATH
-- listUsableThemes(Common::FSNode(DATA_PATH), list);
--#endif
--
- #if defined(MACOSX) || defined(IPHONE)
- CFURLRef resourceUrl = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
- if (resourceUrl) {
-@@ -1509,10 +1527,7 @@
- }
- #endif
-
-- if (ConfMan.hasKey("extrapath"))
-- listUsableThemes(Common::FSNode(ConfMan.get("extrapath")), list);
--
-- listUsableThemes(Common::FSNode("."), list, 1);
-+ listUsableThemes(SearchMan, list);
-
- // Now we need to strip all duplicates
- // TODO: It might not be the best idea to strip duplicates. The user might
-@@ -1531,6 +1546,34 @@
- output.clear();
- }
-
-+void ThemeEngine::listUsableThemes(Common::Archive &archive, Common::List<ThemeDescriptor> &list) {
-+ ThemeDescriptor td;
-+
-+#ifdef USE_ZLIB
-+ Common::ArchiveMemberList fileList;
-+ archive.listMatchingMembers(fileList, "*.zip");
-+ for (Common::ArchiveMemberList::iterator i = fileList.begin();
-+ i != fileList.end(); ++i) {
-+ td.name.clear();
-+ if (themeConfigUsable(**i, td.name)) {
-+ td.filename = (*i)->getName();
-+ td.id = (*i)->getDisplayName();
-+
-+ // If the name of the node object also contains
-+ // the ".zip" suffix, we will strip it.
-+ if (td.id.hasSuffix(".zip")) {
-+ for (int j = 0; j < 4; ++j)
-+ td.id.deleteLastChar();
-+ }
-+
-+ list.push_back(td);
-+ }
-+ }
-+
-+ fileList.clear();
-+#endif
-+}
-+
- void ThemeEngine::listUsableThemes(const Common::FSNode &node, Common::List<ThemeDescriptor> &list, int depth) {
- if (!node.exists() || !node.isReadable() || !node.isDirectory())
- return;
-diff -r 884e66fd1b9c gui/ThemeEngine.h
---- a/gui/ThemeEngine.h Tue Apr 13 09:30:52 2010 +1000
-+++ b/gui/ThemeEngine.h Fri May 28 23:24:43 2010 +1000
-@@ -560,11 +560,13 @@
- static void listUsableThemes(Common::List<ThemeDescriptor> &list);
- private:
- static bool themeConfigUsable(const Common::FSNode &node, Common::String &themeName);
-+ static bool themeConfigUsable(const Common::ArchiveMember &member, Common::String &themeName);
- static bool themeConfigParseHeader(Common::String header, Common::String &themeName);
-
- static Common::String getThemeFile(const Common::String &id);
- static Common::String getThemeId(const Common::String &filename);
- static void listUsableThemes(const Common::FSNode &node, Common::List<ThemeDescriptor> &list, int depth = -1);
-+ static void listUsableThemes(Common::Archive &archive, Common::List<ThemeDescriptor> &list);
-
- protected:
- OSystem *_system; /** Global system object. */
Copied: scummvm/branches/gsoc2010-testbed/backends/platform/android/video.cpp (from rev 51768, scummvm/trunk/backends/platform/android/video.cpp)
===================================================================
--- scummvm/branches/gsoc2010-testbed/backends/platform/android/video.cpp (rev 0)
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list