[Scummvm-cvs-logs] SF.net SVN: scummvm: [28462] scummvm/branches/gsoc2007-fsnode
david_corrales at users.sourceforge.net
david_corrales at users.sourceforge.net
Sun Aug 5 21:34:21 CEST 2007
Revision: 28462
http://scummvm.svn.sourceforge.net/scummvm/?rev=28462&view=rev
Author: david_corrales
Date: 2007-08-05 12:34:20 -0700 (Sun, 05 Aug 2007)
Log Message:
-----------
Merged fsnode with trunk: r27971:28460
Modified Paths:
--------------
scummvm/branches/gsoc2007-fsnode/NEWS
scummvm/branches/gsoc2007-fsnode/README
scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/makefile
scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.cpp
scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.h
scummvm/branches/gsoc2007-fsnode/backends/platform/wince/Makefile
scummvm/branches/gsoc2007-fsnode/base/plugins.cpp
scummvm/branches/gsoc2007-fsnode/common/file.h
scummvm/branches/gsoc2007-fsnode/common/list.h
scummvm/branches/gsoc2007-fsnode/common/util.cpp
scummvm/branches/gsoc2007-fsnode/common/util.h
scummvm/branches/gsoc2007-fsnode/configure
scummvm/branches/gsoc2007-fsnode/dists/msvc71/lure.vcproj
scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.sln
scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.vcproj
scummvm/branches/gsoc2007-fsnode/dists/msvc8/gob.vcproj
scummvm/branches/gsoc2007-fsnode/dists/msvc8/kyra.vcproj
scummvm/branches/gsoc2007-fsnode/dists/msvc8/parallaction.vcproj
scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.sln
scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.vcproj
scummvm/branches/gsoc2007-fsnode/engines/agi/agi.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/agi.h
scummvm/branches/gsoc2007-fsnode/engines/agi/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.h
scummvm/branches/gsoc2007-fsnode/engines/agi/keyboard.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/menu.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/predictive.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/saveload.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/agi/text.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/agos.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/agos.h
scummvm/branches/gsoc2007-fsnode/engines/agos/detection_tables.h
scummvm/branches/gsoc2007-fsnode/engines/agos/input.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/items.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/res_snd.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/saveload.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/agos/zones.cpp
scummvm/branches/gsoc2007-fsnode/engines/engines.mk
scummvm/branches/gsoc2007-fsnode/engines/gob/cdrom.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/dataio.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/dataio.h
scummvm/branches/gsoc2007-fsnode/engines/gob/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/draw.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/draw.h
scummvm/branches/gsoc2007-fsnode/engines/gob/draw_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/game.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/game.h
scummvm/branches/gsoc2007-fsnode/engines/gob/game_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/game_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/global.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/gob.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/gob.h
scummvm/branches/gsoc2007-fsnode/engines/gob/goblin.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/goblin_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/goblin_v3.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/init.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/inter.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/inter.h
scummvm/branches/gsoc2007-fsnode/engines/gob/inter_bargon.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/inter_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/inter_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/inter_v3.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/map.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/module.mk
scummvm/branches/gsoc2007-fsnode/engines/gob/mult.h
scummvm/branches/gsoc2007-fsnode/engines/gob/mult_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/mult_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/saveload.h
scummvm/branches/gsoc2007-fsnode/engines/gob/saveload_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/saveload_v3.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/scenery.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/util.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/video.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/video.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/debugger.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/debugger.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra_v1.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra_v2.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra_v3.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/kyra_v3.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/module.mk
scummvm/branches/gsoc2007-fsnode/engines/kyra/resource.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/resource.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/screen.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/screen.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/script.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/script.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/script_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/seqplayer.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/seqplayer.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/sequences_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/sequences_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/sound.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/sprites.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/sprites.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/staticres.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/text.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/wsamovie.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/wsamovie.h
scummvm/branches/gsoc2007-fsnode/engines/lure/game.cpp
scummvm/branches/gsoc2007-fsnode/engines/lure/game.h
scummvm/branches/gsoc2007-fsnode/engines/lure/hotspots.cpp
scummvm/branches/gsoc2007-fsnode/engines/lure/hotspots.h
scummvm/branches/gsoc2007-fsnode/engines/lure/luredefs.h
scummvm/branches/gsoc2007-fsnode/engines/lure/res_struct.cpp
scummvm/branches/gsoc2007-fsnode/engines/lure/res_struct.h
scummvm/branches/gsoc2007-fsnode/engines/lure/room.cpp
scummvm/branches/gsoc2007-fsnode/engines/lure/screen.cpp
scummvm/branches/gsoc2007-fsnode/engines/lure/screen.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/animation.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/commands.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/dialogue.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/disk.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/font.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/graphics.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/graphics.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/inventory.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/inventory.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/location.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/menu.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/menu.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/module.mk
scummvm/branches/gsoc2007-fsnode/engines/parallaction/parallaction.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/parallaction.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/saveload.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/sound.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/staticres.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/walk.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/zone.cpp
scummvm/branches/gsoc2007-fsnode/engines/queen/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/actor.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/actor.h
scummvm/branches/gsoc2007-fsnode/engines/saga/animation.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/animation.h
scummvm/branches/gsoc2007-fsnode/engines/saga/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/detection_tables.h
scummvm/branches/gsoc2007-fsnode/engines/saga/displayinfo.h
scummvm/branches/gsoc2007-fsnode/engines/saga/events.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/events.h
scummvm/branches/gsoc2007-fsnode/engines/saga/font.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/gfx.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/ihnm_introproc.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/image.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/interface.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/isomap.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/ite_introproc.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/list.h
scummvm/branches/gsoc2007-fsnode/engines/saga/music.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/music.h
scummvm/branches/gsoc2007-fsnode/engines/saga/objectmap.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/puzzle.h
scummvm/branches/gsoc2007-fsnode/engines/saga/render.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/rscfile.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/rscfile.h
scummvm/branches/gsoc2007-fsnode/engines/saga/saga.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/saga.h
scummvm/branches/gsoc2007-fsnode/engines/saga/sagaresnames.h
scummvm/branches/gsoc2007-fsnode/engines/saga/saveload.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/scene.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/scene.h
scummvm/branches/gsoc2007-fsnode/engines/saga/script.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/script.h
scummvm/branches/gsoc2007-fsnode/engines/saga/sfuncs.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/sndres.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/saga/sprite.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/charset.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/detection_tables.h
scummvm/branches/gsoc2007-fsnode/engines/scumm/gfx.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/imuse_digi/dimuse.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/imuse_digi/dimuse.h
scummvm/branches/gsoc2007-fsnode/engines/scumm/imuse_digi/dimuse_script.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/imuse_digi/dimuse_sndmgr.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/imuse_digi/dimuse_sndmgr.h
scummvm/branches/gsoc2007-fsnode/engines/scumm/imuse_digi/dimuse_track.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/input.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/module.mk
scummvm/branches/gsoc2007-fsnode/engines/scumm/scumm-md5.h
scummvm/branches/gsoc2007-fsnode/engines/scumm/scumm.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/scumm.h
scummvm/branches/gsoc2007-fsnode/engines/scumm/smush/smush_player.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/string.cpp
scummvm/branches/gsoc2007-fsnode/engines/sword1/music.cpp
scummvm/branches/gsoc2007-fsnode/engines/sword1/sound.cpp
scummvm/branches/gsoc2007-fsnode/engines/sword2/music.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/graphics.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/midi.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/midi.h
scummvm/branches/gsoc2007-fsnode/engines/touche/opcodes.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/resource.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/saveload.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/staticres.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/touche.cpp
scummvm/branches/gsoc2007-fsnode/engines/touche/touche.h
scummvm/branches/gsoc2007-fsnode/graphics/dxa_player.cpp
scummvm/branches/gsoc2007-fsnode/graphics/dxa_player.h
scummvm/branches/gsoc2007-fsnode/gui/ListWidget.cpp
scummvm/branches/gsoc2007-fsnode/gui/ListWidget.h
scummvm/branches/gsoc2007-fsnode/gui/launcher.cpp
scummvm/branches/gsoc2007-fsnode/sound/flac.cpp
scummvm/branches/gsoc2007-fsnode/sound/flac.h
scummvm/branches/gsoc2007-fsnode/sound/mixer.cpp
scummvm/branches/gsoc2007-fsnode/sound/mods/module.cpp
scummvm/branches/gsoc2007-fsnode/sound/mods/module.h
scummvm/branches/gsoc2007-fsnode/sound/mods/protracker.cpp
scummvm/branches/gsoc2007-fsnode/sound/mods/protracker.h
scummvm/branches/gsoc2007-fsnode/sound/mp3.cpp
scummvm/branches/gsoc2007-fsnode/sound/mp3.h
scummvm/branches/gsoc2007-fsnode/sound/vorbis.cpp
scummvm/branches/gsoc2007-fsnode/sound/vorbis.h
scummvm/branches/gsoc2007-fsnode/tools/create_kyradat/create_kyradat.cpp
scummvm/branches/gsoc2007-fsnode/tools/create_kyradat/md5.cpp
scummvm/branches/gsoc2007-fsnode/tools/scumm-md5.txt
Added Paths:
-----------
scummvm/branches/gsoc2007-fsnode/dists/msvc71/drascula.vcproj
scummvm/branches/gsoc2007-fsnode/dists/msvc8/drascula.vcproj
scummvm/branches/gsoc2007-fsnode/engines/drascula/
scummvm/branches/gsoc2007-fsnode/engines/drascula/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/drascula/drascula.cpp
scummvm/branches/gsoc2007-fsnode/engines/drascula/drascula.h
scummvm/branches/gsoc2007-fsnode/engines/drascula/module.mk
scummvm/branches/gsoc2007-fsnode/engines/drascula/texts.h
scummvm/branches/gsoc2007-fsnode/engines/gob/coktelvideo.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/coktelvideo.h
scummvm/branches/gsoc2007-fsnode/engines/gob/inter_v4.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/videoplayer.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/videoplayer.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/animator_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/animator_v1.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/animator_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/gui_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/gui_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/items_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/items_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/saveload_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/scene.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/scene_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/scene_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/screen_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/screen_v1.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/screen_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/screen_v2.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/script_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/sound_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/text_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/timer.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/timer.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/timer_v1.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/timer_v2.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/util.h
scummvm/branches/gsoc2007-fsnode/engines/parallaction/callables_br.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/callables_ns.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/disk_br.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/disk_ns.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/parallaction_br.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/parallaction_ns.cpp
scummvm/branches/gsoc2007-fsnode/engines/scumm/gfxARM.s
scummvm/branches/gsoc2007-fsnode/tools/agi-palex.py
Removed Paths:
-------------
scummvm/branches/gsoc2007-fsnode/engines/drascula/detection.cpp
scummvm/branches/gsoc2007-fsnode/engines/drascula/drascula.cpp
scummvm/branches/gsoc2007-fsnode/engines/drascula/drascula.h
scummvm/branches/gsoc2007-fsnode/engines/drascula/module.mk
scummvm/branches/gsoc2007-fsnode/engines/drascula/texts.h
scummvm/branches/gsoc2007-fsnode/engines/gob/imd.cpp
scummvm/branches/gsoc2007-fsnode/engines/gob/imd.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/animator.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/animator.h
scummvm/branches/gsoc2007-fsnode/engines/kyra/gui.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/items.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/saveload.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/scene.cpp
scummvm/branches/gsoc2007-fsnode/engines/kyra/timer.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/archive.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/callables.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/disk.cpp
scummvm/branches/gsoc2007-fsnode/engines/parallaction/intro.cpp
Modified: scummvm/branches/gsoc2007-fsnode/NEWS
===================================================================
--- scummvm/branches/gsoc2007-fsnode/NEWS 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/NEWS 2007-08-05 19:34:20 UTC (rev 28462)
@@ -18,6 +18,7 @@
SCUMM:
- Added subtitle skipping (via '.' key) in older games which didn't have
this feature so far (e.g. Zak, MM, Indy3, Loom).
+ - Added support for Chinese COMI
SAGA:
- Added support for compressed sound effects, voices and music
Modified: scummvm/branches/gsoc2007-fsnode/README
===================================================================
--- scummvm/branches/gsoc2007-fsnode/README 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/README 2007-08-05 19:34:20 UTC (rev 28462)
@@ -1068,7 +1068,6 @@
Ctrl-d - Starts the debugger
Touche: The Adventures of the Fifth Musketeer:
- Ctrl-d - Starts the debugger
Ctrl-f - Toggle fast mode
F5 - Displays options
F9 - Turn fast walk mode on
@@ -1364,7 +1363,7 @@
------ ----------------------------------------
As above, but ScummVM must be compiled with Flac support. Run:
- compress_scumm_sou --flac --best -b 1152 monster.sou
+ compress_scumm_sou --flac monster.sou
This should produce a smaller monster.sof file, which you should copy to your
game directory. Remember that the quality is always the same, varying encoder
@@ -1403,7 +1402,7 @@
For Flac add --flac and optional parameters, i.e.
- compress_agos --flac --best -b 1152
+ compress_agos --flac
Eventually you will have a much smaller *.mp3, *.ogg or *.fla file, copy this
file to your game directory. You can safely remove the old file.
Modified: scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/makefile
===================================================================
--- scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/makefile 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/makefile 2007-08-05 19:34:20 UTC (rev 28462)
@@ -41,7 +41,7 @@
ARM = 1
ifdef DS_BUILD_A
- DEFINES = -DDS_SCUMM_BUILD -DDS_BUILD_A
+ DEFINES = -DDS_SCUMM_BUILD -DDS_BUILD_A -DUSE_ARM_GFX_ASM
LOGO = logoa.bmp
DISABLE_HE = 1
#DISABLE_SCUMM = 1
@@ -60,6 +60,7 @@
DISABLE_TOUCHE = 1
DISABLE_PARALLACTION = 1
DISABLE_CRUISE = 1
+ USE_ARM_GFX_ASM = 1
BUILD=scummvm-A
endif
Modified: scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -5,8 +5,85 @@
#ifndef DISABLE_AGI
namespace DS {
+// Default dictionary is about 64Kb, so 128Kb should be enough for future expansion
+#define WORD_BUFFER_SIZE (128 * 1024)
-void findWordCompletions(char* input) {
+// Default dictionary has ~8000 words
+#define MAX_WORD_COUNT 16000
+
+char wordBuffer[WORD_BUFFER_SIZE];
+int wordBufferPos = 0;
+
+char* wordBufferPtr[MAX_WORD_COUNT];
+int wordBufferPtrPos = 0;
+
+void addAutoCompleteLine(char* line) {
+
+ while (*line != 0)
+ {
+ char word[32];
+ int length;
+
+ // Skip the T9-style numbers
+ while (*line != ' ')
+ {
+ line++;
+ }
+ line++;
+
+ do {
+ length = 0;
+
+ if (*line == ' ') line++;
+
+
+ // Copy the new word
+ do {
+ word[length++] = *line++;
+ } while ((*line != '\0') && (*line != ' ') && (*line != '\n'));
+
+ word[length] = '\0';
+
+
+ // Store a pointer to the start of the word
+ wordBufferPtr[wordBufferPtrPos++] = &wordBuffer[wordBufferPos];
+
+ // copy the new word into the buffer
+ strcpy(&wordBuffer[wordBufferPos], word);
+ wordBufferPos += strlen(word) + 1;
+ } while (*line == ' ');
+ }
+}
+
+int stringCompare(const void* a, const void* b) {
+ const char** as = (const char **) a;
+ const char** bs = (const char **) b;
+
+ return scumm_stricmp(*as, *bs);
+}
+
+void sortAutoCompleteWordList() {
+ // Sort the whole word list into alphabetical order
+ qsort((void *) wordBufferPtr, wordBufferPtrPos, 4, stringCompare);
+}
+
+// Sends the current available words to the virtual keyboard code for display
+bool findWordCompletions(char* input)
+{
+ char testWord[32];
+ int min = 0;
+ int max = wordBufferPtrPos - 1;
+ char* word;
+ int position;
+ char partialWord[32];
+
+ // Early out if dictionary not loaded
+ if (wordBufferPtrPos == 0)
+ return false;
+
+ OSystem_DS* system = (OSystem_DS *) g_system;
+ system->clearAutoComplete();
+
int start = 0;
for (int r = strlen(input) - 1; r>0; r--) {
if (input[r] == ' ') {
@@ -14,53 +91,90 @@
break;
}
}
+ strcpy(partialWord, &input[start]);
- char word[32];
- strcpy(word, &input[start]);
+ if (strlen(partialWord) == 0)
+ {
+ return false;
+ }
- int fchr = word[0] - 'a';
- int len = strlen(word);
+ do {
+ position = min + ((max - min) / 2);
- OSystem_DS* system = (OSystem_DS *) g_system;
- system->clearAutoComplete();
- system->setCharactersEntered(strlen(word));
+ // Get the word from the dictonary line
+ word = wordBufferPtr[position];
- if (strlen(word) == 0) {
- return;
- }
+
- uint8 *wordList = Agi::AgiEngine::getWordsData();
- uint8 *wordListEnd = Agi::AgiEngine::getWordsData() + Agi::AgiEngine::getWordsDataSize();
+ // Now check to see if the word is before or after the stub we're after
+ int result = scumm_stricmp((const char *) partialWord, (const char *) word);
+
+ if (result == 0) {
+ // We've found the whole word. Aren't we good.
+ break;
+ } else if (result > 0) {
+ // We're too early, so change the minimum position
+ min = position + 1;
+ } else if (result < 0) {
+ // We're too early, so change the maximum position
+ max = position - 1;
+ }
- /* Get the offset to the first word beginning with the
- * right character
- */
- wordList += READ_BE_UINT16(wordList + 2 * fchr);
+// consolePrintf("Word: %s, (%d, %d) result: %d\n", word, min, max, result);
- char currentWord[32];
+ } while (max - min > 0);
+ position = min;
+ word = wordBufferPtr[position];
+ //consolePrintf("Final word: %s\n", word);
+
- while (wordList < wordListEnd) {
- int pos = *wordList++; // Number of chars to keep from previous word
- if (wordList == wordListEnd)
+ system->setCharactersEntered(strlen(partialWord));
+
+
+ bool match = true;
+
+
+ for (int r = 0; r < strlen(partialWord); r++) {
+ if (word[r] != partialWord[r]) {
+ match = false;
break;
+ }
+ }
- char c;
- do {
- c = *wordList++;
- currentWord[pos++] = (~c) & 0x7F;
- } while ((c & 0x80) == 0); // Top bit indicates end of word
- currentWord[pos++] = '\0';
+ if (!match) {
+ position++;
+ if (position == wordBufferPtrPos) return false;
+ word = wordBufferPtr[position];
+// consolePrintf("Final word: %s\n", word);
+ }
- if (!strncmp(currentWord, word, strlen(word))) {
- system->addAutoComplete(currentWord);
+
+ match = true;
+
+ do {
+
+ for (int r = 0; r < strlen(partialWord); r++) {
+ if (word[r] != partialWord[r]) {
+ match = false;
+ break;
+ }
}
+
+ if (match) {
+ system->addAutoComplete(word);
+ }
- wordList += 2; // Skip the two byte word id.
+ position++;
+ if (position < wordBufferPtrPos) {
+ word = wordBufferPtr[position];
+ }
- }
+ } while ((match) && (position < wordBufferPtrPos));
+ return true;
+
}
}
Modified: scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/backends/platform/ds/arm9/source/wordcompletion.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -3,6 +3,8 @@
namespace DS {
-extern void findWordCompletions(char* input);
+extern bool findWordCompletions(char* input);
+extern void addAutoCompleteLine(char* line);
+extern void sortAutoCompleteWordList();
}
\ No newline at end of file
Modified: scummvm/branches/gsoc2007-fsnode/backends/platform/wince/Makefile
===================================================================
--- scummvm/branches/gsoc2007-fsnode/backends/platform/wince/Makefile 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/backends/platform/wince/Makefile 2007-08-05 19:34:20 UTC (rev 28462)
@@ -52,6 +52,7 @@
#DISABLE_HQ_SCALERS = 1
USE_ARM_SOUND_ASM = 1
USE_ARM_SMUSH_ASM = 1
+USE_ARM_GFX_ASM = 1
########################################################################
@@ -85,10 +86,6 @@
DEFINES += -DWIN32
DEFINES += -D__stdcall= -Dcdecl= -D__cdecl__= -D__cdecl= -Wno-multichar
-ifdef WINCE_DEBUG_BUILD
-DEFINES += -DDEBUG -DUSE_WINDBG -g
-endif
-
INCLUDES := -I$(srcdir) -I. -I$(srcdir)/engines -Imissing/gcc -Ilibs/include -Ilibs/include/sdl -ICEgui -ICEkeys -I$(wince_gcc_root)/include
CFLAGS := -O3 -march=armv4 -mtune=xscale
@@ -98,6 +95,11 @@
LDFLAGS := -Llibs/lib -L$(wince_gcc_root)/lib
LIBS := -lSDL
+ifdef WINCE_DEBUG_BUILD
+DEFINES += -DDEBUG -DUSE_WINDBG -g
+LDFLAGS += -debug
+endif
+
ifdef USE_ZLIB
DEFINES += -DUSE_ZLIB
LIBS += -lzlib
@@ -129,10 +131,14 @@
LIBS += -lFLAC
endif
-ifdef USE_ARM_SMUSH
-DEFINES += -DUSE_ARM_SMUSH
+ifdef USE_ARM_SMUSH_ASM
+DEFINES += -DUSE_ARM_SMUSH_ASM
endif
+ifdef USE_ARM_GFX_ASM
+DEFINES += -DUSE_ARM_GFX_ASM
+endif
+
LIBS += --entry WinMainCRTStartup
########################################################################
Modified: scummvm/branches/gsoc2007-fsnode/base/plugins.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/base/plugins.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/base/plugins.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -131,6 +131,9 @@
#ifndef DISABLE_CRUISE
LINK_PLUGIN(CRUISE)
#endif
+ #ifndef DISABLE_DRASCULA
+ LINK_PLUGIN(DRASCULA)
+ #endif
return pl;
}
Modified: scummvm/branches/gsoc2007-fsnode/common/file.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/common/file.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/common/file.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -30,8 +30,6 @@
#include "common/scummsys.h"
#include "common/str.h"
#include "common/stream.h"
-#include "backends/file/base-file.h"
-//#include "backends/factories/fs-factory-maker.cpp"
class FilesystemNode;
Modified: scummvm/branches/gsoc2007-fsnode/common/list.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/common/list.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/common/list.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -33,7 +33,7 @@
* Simple double linked list, modeled after the list template of the standard
* C++ library.
*/
-template <class T>
+template <class t_T>
class List {
protected:
#if defined (_WIN32_WCE) || defined (_MSC_VER)
@@ -45,16 +45,16 @@
NodeBase *_next;
};
- template <class T2>
+ template <class t_T2>
struct Node : public NodeBase {
- T2 _data;
+ t_T2 _data;
- Node(const T2 &x) : _data(x) {}
+ Node(const t_T2 &x) : _data(x) {}
};
- template <class T2>
+ template <class t_T2>
class Iterator {
- friend class List<T>;
+ friend class List<t_T>;
NodeBase *_node;
#if !defined (__WINSCW__)
@@ -67,46 +67,46 @@
Iterator() : _node(0) {}
// Prefix inc
- Iterator<T2> &operator++() {
+ Iterator<t_T2> &operator++() {
if (_node)
_node = _node->_next;
return *this;
}
// Postfix inc
- Iterator<T2> operator++(int) {
+ Iterator<t_T2> operator++(int) {
Iterator tmp(_node);
++(*this);
return tmp;
}
// Prefix dec
- Iterator<T2> &operator--() {
+ Iterator<t_T2> &operator--() {
if (_node)
_node = _node->_prev;
return *this;
}
// Postfix dec
- Iterator<T2> operator--(int) {
+ Iterator<t_T2> operator--(int) {
Iterator tmp(_node);
--(*this);
return tmp;
}
- T2& operator*() const {
+ t_T2& operator*() const {
assert(_node);
#if (__GNUC__ == 2) && (__GNUC_MINOR__ >= 95)
- return static_cast<List<T>::Node<T2> *>(_node)->_data;
+ return static_cast<List<t_T>::Node<t_T2> *>(_node)->_data;
#else
- return static_cast<Node<T2>*>(_node)->_data;
+ return static_cast<Node<t_T2>*>(_node)->_data;
#endif
}
- T2* operator->() const {
+ t_T2* operator->() const {
return &(operator*());
}
- bool operator==(const Iterator<T2>& x) const {
+ bool operator==(const Iterator<t_T2>& x) const {
return _node == x._node;
}
- bool operator!=(const Iterator<T2>& x) const {
+ bool operator!=(const Iterator<t_T2>& x) const {
return _node != x._node;
}
};
@@ -114,10 +114,10 @@
NodeBase *_anchor;
public:
- typedef Iterator<T> iterator;
- typedef Iterator<const T> const_iterator;
+ typedef Iterator<t_T> iterator;
+ typedef Iterator<const t_T> const_iterator;
- typedef T value_type;
+ typedef t_T value_type;
public:
List() {
@@ -125,7 +125,7 @@
_anchor->_prev = _anchor;
_anchor->_next = _anchor;
}
- List(const List<T>& list) {
+ List(const List<t_T>& list) {
_anchor = new NodeBase;
_anchor->_prev = _anchor;
_anchor->_next = _anchor;
@@ -138,16 +138,16 @@
delete _anchor;
}
- void push_front(const T& element) {
+ void push_front(const t_T& element) {
insert(begin(), element);
}
- void push_back(const T& element) {
+ void push_back(const t_T& element) {
insert(end(), element);
}
- void insert(iterator pos, const T& element) {
- NodeBase *newNode = new Node<T>(element);
+ void insert(iterator pos, const t_T& element) {
+ NodeBase *newNode = new Node<t_T>(element);
newNode->_next = pos._node;
newNode->_prev = pos._node->_prev;
@@ -166,7 +166,7 @@
NodeBase *next = pos._node->_next;
NodeBase *prev = pos._node->_prev;
- Node<T> *node = static_cast<Node<T> *>(pos._node);
+ Node<t_T> *node = static_cast<Node<t_T> *>(pos._node);
prev->_next = next;
next->_prev = prev;
delete node;
@@ -178,7 +178,7 @@
NodeBase *next = pos._node->_next;
NodeBase *prev = pos._node->_prev;
- Node<T> *node = static_cast<Node<T> *>(pos._node);
+ Node<t_T> *node = static_cast<Node<t_T> *>(pos._node);
prev->_next = next;
next->_prev = prev;
delete node;
@@ -192,7 +192,7 @@
return last;
}
- void remove(const T &val) {
+ void remove(const t_T &val) {
iterator i = begin();
while (i != end())
if (val == i.operator*())
@@ -202,13 +202,13 @@
}
- List<T>& operator =(const List<T>& list) {
+ List<t_T>& operator =(const List<t_T>& list) {
if (this != &list) {
iterator i;
const_iterator j;
for (i = begin(), j = list.begin(); (i != end()) && (j != list.end()) ; ++i, ++j) {
- static_cast<Node<T> *>(i._node)->_data = static_cast<Node<T> *>(j._node)->_data;
+ static_cast<Node<t_T> *>(i._node)->_data = static_cast<Node<t_T> *>(j._node)->_data;
}
if (i == end())
Modified: scummvm/branches/gsoc2007-fsnode/common/util.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/common/util.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/common/util.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -592,3 +592,16 @@
#endif
#endif
}
+
+char *scumm_strrev(char *str) {
+ if (!str)
+ return str;
+ int len = strlen(str);
+ if (len < 2)
+ return str;
+ char *p1, *p2;
+ for (p1 = str, p2 = str + len - 1; p1 < p2; p1++, p2--) {
+ SWAP(*p1, *p2);
+ }
+ return str;
+}
Modified: scummvm/branches/gsoc2007-fsnode/common/util.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/common/util.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/common/util.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -289,5 +289,6 @@
extern int gDebugLevel;
+char *scumm_strrev(char *str);
#endif
Modified: scummvm/branches/gsoc2007-fsnode/configure
===================================================================
--- scummvm/branches/gsoc2007-fsnode/configure 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/configure 2007-08-05 19:34:20 UTC (rev 28462)
@@ -63,6 +63,7 @@
_build_touche=yes
_build_parallaction=yes
_build_cruise=no
+_build_drascula=no
_build_hq_scalers=yes
_build_scalers=yes
@@ -353,6 +354,7 @@
--disable-agos don't build the AGOS engine
--disable-cine don't build the Cinematique engine evo 1
--enable-cruise build the Cruise for a Corpse engine
+ --enable-drascula build the Drascula: The Vampire Strikes Back engine
--disable-gob don't build the Gobli*ns engine
--disable-kyra don't build the Legend of Kyrandia engine
--enable-lure build the Lure of the Temptress engine
@@ -438,6 +440,7 @@
--disable-touche) _build_touche=no ;;
--disable-parallaction) _build_parallaction=no ;;
--enable-cruise) _build_cruise=yes ;;
+ --enable-drascula) _build_drascula=yes ;;
--disable-hq-scalers) _build_hq_scalers=no ;;
--disable-scalers) _build_scalers=no ;;
--enable-alsa) _alsa=yes ;;
@@ -730,6 +733,7 @@
add_to_config_mk_if_no $_build_touche 'DISABLE_TOUCHE = 1'
add_to_config_mk_if_no $_build_parallaction 'DISABLE_PARALLACTION = 1'
add_to_config_mk_if_no $_build_cruise 'DISABLE_CRUISE = 1'
+add_to_config_mk_if_no $_build_drascula 'DISABLE_DRASCULA = 1'
add_to_config_mk_if_no $_build_hq_scalers 'DISABLE_HQ_SCALERS = 1'
add_to_config_mk_if_no $_build_scalers 'DISABLE_SCALERS = 1'
@@ -1388,6 +1392,9 @@
if test "$_build_cruise" = yes ; then
echo " Cinematique evo 2"
fi
+if test "$_build_drascula" = yes ; then
+ echo " Drascula"
+fi
echo
Copied: scummvm/branches/gsoc2007-fsnode/dists/msvc71/drascula.vcproj (from rev 28460, scummvm/trunk/dists/msvc71/drascula.vcproj)
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc71/drascula.vcproj (rev 0)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc71/drascula.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="drascula"
+ ProjectGUID="{CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="drascula_Debug"
+ IntermediateDirectory="drascula_Debug"
+ ConfigurationType="4"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/wd4201 /wd4512 /wd4511 /wd4100 /wd4121 /wd4310 /wd4706 /wd4127 /wd4189 /wd4702"
+ Optimization="0"
+ AdditionalIncludeDirectories="../..;../../engines"
+ PreprocessorDefinitions="WIN32;_DEBUG;USE_ZLIB;USE_MAD;USE_VORBIS"
+ MinimalRebuild="TRUE"
+ ExceptionHandling="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ SuppressStartupBanner="FALSE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/drascula.lib"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="drascula_Release"
+ IntermediateDirectory="drascula_Release"
+ ConfigurationType="4"
+ CharacterSet="2"
+ WholeProgramOptimization="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/wd4201 /wd4512 /wd4511 /wd4100 /wd4121 /wd4310 /wd4706 /wd4127 /wd4189 /wd4702"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ OmitFramePointers="TRUE"
+ AdditionalIncludeDirectories="../..;../../engines"
+ PreprocessorDefinitions="WIN32;NDEBUG;USE_ZLIB;USE_MAD;USE_VORBIS"
+ StringPooling="TRUE"
+ ExceptionHandling="TRUE"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="FALSE"
+ DisableLanguageExtensions="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ DebugInformationFormat="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/drascula.lib"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\engines\drascula\detection.cpp">
+ </File>
+ <File
+ RelativePath="..\..\engines\drascula\drascula.cpp">
+ </File>
+ <File
+ RelativePath="..\..\engines\drascula\drascula.h">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc71/lure.vcproj
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc71/lure.vcproj 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc71/lure.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -116,18 +116,6 @@
RelativePath="..\..\engines\lure\animseq.h">
</File>
<File
- RelativePath="..\..\engines\lure\debug-input.cpp">
- </File>
- <File
- RelativePath="..\..\engines\lure\debug-input.h">
- </File>
- <File
- RelativePath="..\..\engines\lure\debug-methods.cpp">
- </File>
- <File
- RelativePath="..\..\engines\lure\debug-methods.h">
- </File>
- <File
RelativePath="..\..\engines\lure\debugger.cpp">
</File>
<File
@@ -155,6 +143,12 @@
RelativePath="..\..\engines\lure\events.h">
</File>
<File
+ RelativePath="..\..\engines\lure\fights.cpp">
+ </File>
+ <File
+ RelativePath="..\..\engines\lure\fights.h">
+ </File>
+ <File
RelativePath="..\..\engines\lure\game.cpp">
</File>
<File
@@ -230,6 +224,12 @@
RelativePath="..\..\engines\lure\scripts.h">
</File>
<File
+ RelativePath="..\..\engines\lure\sound.cpp">
+ </File>
+ <File
+ RelativePath="..\..\engines\lure\sound.h">
+ </File>
+ <File
RelativePath="..\..\engines\lure\strings.cpp">
</File>
<File
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.sln
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.sln 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.sln 2007-08-05 19:34:20 UTC (rev 28462)
@@ -15,6 +15,7 @@
{0068957B-E2E1-4988-8C87-D541D84DAF20} = {0068957B-E2E1-4988-8C87-D541D84DAF20}
{9D9A98A0-F88F-4CA2-B8FF-462470EBE3EC} = {9D9A98A0-F88F-4CA2-B8FF-462470EBE3EC}
{676DB4C5-9A3E-4EE1-8483-EBB79DC0700E} = {676DB4C5-9A3E-4EE1-8483-EBB79DC0700E}
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3} = {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}
{15DF71E6-ECA9-45ED-8049-1CD7C987CCFE} = {15DF71E6-ECA9-45ED-8049-1CD7C987CCFE}
EndProjectSection
EndProject
@@ -78,6 +79,10 @@
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "drascula", "drascula.vcproj", "{CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
@@ -150,6 +155,10 @@
{CD9AEE36-CEBD-40CE-A6B3-B71523AB8DEC}.Debug.Build.0 = Debug|Win32
{CD9AEE36-CEBD-40CE-A6B3-B71523AB8DEC}.Release.ActiveCfg = Release|Win32
{CD9AEE36-CEBD-40CE-A6B3-B71523AB8DEC}.Release.Build.0 = Release|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Debug.ActiveCfg = Debug|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Debug.Build.0 = Debug|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Release.ActiveCfg = Release|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.vcproj
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.vcproj 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc71/scummvm.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -45,6 +45,7 @@
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/scummvm.pdb"
SubSystem="1"
+ EntryPointSymbol="WinMainCRTStartup"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -106,6 +107,7 @@
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
+ EntryPointSymbol="WinMainCRTStartup"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -209,6 +211,9 @@
RelativePath="..\..\common\file.h">
</File>
<File
+ RelativePath="..\..\common\frac.h">
+ </File>
+ <File
RelativePath="..\..\common\fs.cpp">
</File>
<File
@@ -230,6 +235,9 @@
RelativePath="..\..\common\iff_container.h">
</File>
<File
+ RelativePath="..\..\common\keyboard.h">
+ </File>
+ <File
RelativePath="..\..\common\list.h">
</File>
<File
Copied: scummvm/branches/gsoc2007-fsnode/dists/msvc8/drascula.vcproj (from rev 28460, scummvm/trunk/dists/msvc8/drascula.vcproj)
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc8/drascula.vcproj (rev 0)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc8/drascula.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="drascula"
+ ProjectGUID="{CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}"
+ RootNamespace="drascula"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="drascula_Debug"
+ IntermediateDirectory="drascula_Debug"
+ ConfigurationType="4"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/wd4201 /wd4512 /wd4511 /wd4100 /wd4121 /wd4310 /wd4706 /wd4127 /wd4189 /wd4702 /wd4996"
+ Optimization="0"
+ AdditionalIncludeDirectories="../..;../../engines"
+ PreprocessorDefinitions="WIN32;_DEBUG;USE_ZLIB;USE_MAD;USE_VORBIS"
+ MinimalRebuild="true"
+ ExceptionHandling="1"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="true"
+ EnableFunctionLevelLinking="true"
+ ForceConformanceInForLoopScope="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="false"
+ SuppressStartupBanner="false"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/drascula.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="drascula_Release"
+ IntermediateDirectory="drascula_Release"
+ ConfigurationType="4"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/wd4201 /wd4512 /wd4511 /wd4100 /wd4121 /wd4310 /wd4706 /wd4127 /wd4189 /wd4702 /wd4996"
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ OmitFramePointers="true"
+ AdditionalIncludeDirectories="../../;../../engines"
+ PreprocessorDefinitions="WIN32;NDEBUG;USE_ZLIB;USE_MAD;USE_VORBIS"
+ StringPooling="true"
+ ExceptionHandling="1"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="false"
+ EnableFunctionLevelLinking="false"
+ ForceConformanceInForLoopScope="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ DebugInformationFormat="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/drascula.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\engines\drascula\detection.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\drascula\drascula.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\drascula\drascula.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\drascula\texts.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc8/gob.vcproj
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc8/gob.vcproj 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc8/gob.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -169,6 +169,14 @@
>
</File>
<File
+ RelativePath="..\..\engines\gob\coktelvideo.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\gob\coktelvideo.h"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\gob\dataio.cpp"
>
</File>
@@ -261,14 +269,6 @@
>
</File>
<File
- RelativePath="..\..\engines\gob\imd.cpp"
- >
- </File>
- <File
- RelativePath="..\..\engines\gob\imd.h"
- >
- </File>
- <File
RelativePath="..\..\engines\gob\init.cpp"
>
</File>
@@ -313,6 +313,10 @@
>
</File>
<File
+ RelativePath="..\..\engines\gob\inter_v4.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\gob\map.cpp"
>
</File>
@@ -440,6 +444,14 @@
RelativePath="..\..\engines\gob\video_v2.cpp"
>
</File>
+ <File
+ RelativePath="..\..\engines\gob\videoplayer.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\gob\videoplayer.h"
+ >
+ </File>
</Files>
<Globals>
</Globals>
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc8/kyra.vcproj
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc8/kyra.vcproj 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc8/kyra.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -161,14 +161,18 @@
</References>
<Files>
<File
- RelativePath="..\..\engines\kyra\animator.cpp"
+ RelativePath="..\..\engines\kyra\animator_v1.cpp"
>
</File>
<File
- RelativePath="..\..\engines\kyra\animator.h"
+ RelativePath="..\..\engines\kyra\animator_v1.h"
>
</File>
<File
+ RelativePath="..\..\engines\kyra\animator_v2.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\debugger.cpp"
>
</File>
@@ -181,14 +185,22 @@
>
</File>
<File
- RelativePath="..\..\engines\kyra\gui.cpp"
+ RelativePath="..\..\engines\kyra\gui_v1.cpp"
>
</File>
<File
- RelativePath="..\..\engines\kyra\items.cpp"
+ RelativePath="..\..\engines\kyra\gui_v2.cpp"
>
</File>
<File
+ RelativePath="..\..\engines\kyra\items_v1.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\items_v2.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\kyra.cpp"
>
</File>
@@ -229,7 +241,7 @@
>
</File>
<File
- RelativePath="..\..\engines\kyra\saveload.cpp"
+ RelativePath="..\..\engines\kyra\saveload_v1.cpp"
>
</File>
<File
@@ -237,6 +249,14 @@
>
</File>
<File
+ RelativePath="..\..\engines\kyra\scene_v1.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\scene_v2.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\screen.cpp"
>
</File>
@@ -245,6 +265,22 @@
>
</File>
<File
+ RelativePath="..\..\engines\kyra\screen_v1.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\screen_v1.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\screen_v2.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\screen_v2.h"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\script.cpp"
>
</File>
@@ -257,6 +293,10 @@
>
</File>
<File
+ RelativePath="..\..\engines\kyra\script_v2.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\seqplayer.cpp"
>
</File>
@@ -293,6 +333,10 @@
>
</File>
<File
+ RelativePath="..\..\engines\kyra\sound_v1.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\sprites.cpp"
>
</File>
@@ -313,10 +357,30 @@
>
</File>
<File
+ RelativePath="..\..\engines\kyra\text_v1.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\timer.cpp"
>
</File>
<File
+ RelativePath="..\..\engines\kyra\timer.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\timer_v1.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\timer_v2.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\kyra\util.h"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\vqa.cpp"
>
</File>
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc8/parallaction.vcproj
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc8/parallaction.vcproj 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc8/parallaction.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -165,11 +165,11 @@
>
</File>
<File
- RelativePath="..\..\engines\parallaction\archive.cpp"
+ RelativePath="..\..\engines\parallaction\callables_br.cpp"
>
</File>
<File
- RelativePath="..\..\engines\parallaction\callables.cpp"
+ RelativePath="..\..\engines\parallaction\callables_ns.cpp"
>
</File>
<File
@@ -201,14 +201,18 @@
>
</File>
<File
- RelativePath="..\..\engines\parallaction\disk.cpp"
+ RelativePath="..\..\engines\parallaction\disk.h"
>
</File>
<File
- RelativePath="..\..\engines\parallaction\disk.h"
+ RelativePath="..\..\engines\parallaction\disk_br.cpp"
>
</File>
<File
+ RelativePath="..\..\engines\parallaction\disk_ns.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\parallaction\font.cpp"
>
</File>
@@ -221,10 +225,6 @@
>
</File>
<File
- RelativePath="..\..\engines\parallaction\intro.cpp"
- >
- </File>
- <File
RelativePath="..\..\engines\parallaction\inventory.cpp"
>
</File>
@@ -253,6 +253,14 @@
>
</File>
<File
+ RelativePath="..\..\engines\parallaction\parallaction_br.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\engines\parallaction\parallaction_ns.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\parallaction\parser.cpp"
>
</File>
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.sln
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.sln 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.sln 2007-08-05 19:34:20 UTC (rev 28462)
@@ -3,20 +3,21 @@
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scummvm", "scummvm.vcproj", "{8434CB15-D08F-427D-9E6D-581AE5B28440}"
ProjectSection(ProjectDependencies) = postProject
{6CC3E421-779D-4E80-8100-520886A0F9FF} = {6CC3E421-779D-4E80-8100-520886A0F9FF}
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3} = {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}
+ {C8AAE83E-198B-4ECA-A877-166827953979} = {C8AAE83E-198B-4ECA-A877-166827953979}
+ {B6AFD548-63D2-40CD-A652-E87095AFCBAF} = {B6AFD548-63D2-40CD-A652-E87095AFCBAF}
+ {1CA4AC50-5426-433A-8B5E-FFE39568098E} = {1CA4AC50-5426-433A-8B5E-FFE39568098E}
+ {D4986356-D0BB-4981-924A-854157BDF11F} = {D4986356-D0BB-4981-924A-854157BDF11F}
+ {B5527758-2F51-4CCD-AAE1-B0E28654BD6A} = {B5527758-2F51-4CCD-AAE1-B0E28654BD6A}
+ {6A55AF61-7CA1-49E0-9385-59C1FE9D4DB7} = {6A55AF61-7CA1-49E0-9385-59C1FE9D4DB7}
+ {F5F57066-CDF4-4F80-B9E7-7F4D21850D6E} = {F5F57066-CDF4-4F80-B9E7-7F4D21850D6E}
+ {E0EC9C72-A33E-49DA-B1DC-BB44B9799BFA} = {E0EC9C72-A33E-49DA-B1DC-BB44B9799BFA}
+ {976D947A-A45F-4437-991E-412F695C64C7} = {976D947A-A45F-4437-991E-412F695C64C7}
+ {9D9A98A0-F88F-4CA2-B8FF-462470EBE3EC} = {9D9A98A0-F88F-4CA2-B8FF-462470EBE3EC}
+ {676DB4C5-9A3E-4EE1-8483-EBB79DC0700E} = {676DB4C5-9A3E-4EE1-8483-EBB79DC0700E}
+ {8863B00B-059A-471E-876D-A955ECEFD0D2} = {8863B00B-059A-471E-876D-A955ECEFD0D2}
+ {0068957B-E2E1-4988-8C87-D541D84DAF20} = {0068957B-E2E1-4988-8C87-D541D84DAF20}
{1A1CA028-61B5-4A6C-A918-F5D8721AB1AC} = {1A1CA028-61B5-4A6C-A918-F5D8721AB1AC}
- {0068957B-E2E1-4988-8C87-D541D84DAF20} = {0068957B-E2E1-4988-8C87-D541D84DAF20}
- {8863B00B-059A-471E-876D-A955ECEFD0D2} = {8863B00B-059A-471E-876D-A955ECEFD0D2}
- {676DB4C5-9A3E-4EE1-8483-EBB79DC0700E} = {676DB4C5-9A3E-4EE1-8483-EBB79DC0700E}
- {9D9A98A0-F88F-4CA2-B8FF-462470EBE3EC} = {9D9A98A0-F88F-4CA2-B8FF-462470EBE3EC}
- {976D947A-A45F-4437-991E-412F695C64C7} = {976D947A-A45F-4437-991E-412F695C64C7}
- {E0EC9C72-A33E-49DA-B1DC-BB44B9799BFA} = {E0EC9C72-A33E-49DA-B1DC-BB44B9799BFA}
- {F5F57066-CDF4-4F80-B9E7-7F4D21850D6E} = {F5F57066-CDF4-4F80-B9E7-7F4D21850D6E}
- {6A55AF61-7CA1-49E0-9385-59C1FE9D4DB7} = {6A55AF61-7CA1-49E0-9385-59C1FE9D4DB7}
- {B5527758-2F51-4CCD-AAE1-B0E28654BD6A} = {B5527758-2F51-4CCD-AAE1-B0E28654BD6A}
- {D4986356-D0BB-4981-924A-854157BDF11F} = {D4986356-D0BB-4981-924A-854157BDF11F}
- {1CA4AC50-5426-433A-8B5E-FFE39568098E} = {1CA4AC50-5426-433A-8B5E-FFE39568098E}
- {B6AFD548-63D2-40CD-A652-E87095AFCBAF} = {B6AFD548-63D2-40CD-A652-E87095AFCBAF}
- {C8AAE83E-198B-4ECA-A877-166827953979} = {C8AAE83E-198B-4ECA-A877-166827953979}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sword2", "sword2.vcproj", "{6CC3E421-779D-4E80-8100-520886A0F9FF}"
@@ -49,6 +50,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cruise", "cruise.vcproj", "{8863B00B-059A-471E-876D-A955ECEFD0D2}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "drascula", "drascula.vcproj", "{CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -119,6 +122,10 @@
{8863B00B-059A-471E-876D-A955ECEFD0D2}.Debug|Win32.Build.0 = Debug|Win32
{8863B00B-059A-471E-876D-A955ECEFD0D2}.Release|Win32.ActiveCfg = Release|Win32
{8863B00B-059A-471E-876D-A955ECEFD0D2}.Release|Win32.Build.0 = Release|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Debug|Win32.Build.0 = Debug|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Release|Win32.ActiveCfg = Release|Win32
+ {CF888EE2-239C-40D7-83F1-1CDD4F7D56E3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Modified: scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.vcproj
===================================================================
--- scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.vcproj 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/dists/msvc8/scummvm.vcproj 2007-08-05 19:34:20 UTC (rev 28462)
@@ -68,7 +68,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib sdl.lib zlib.lib libmad.lib vorbisfile_static.lib vorbis_static.lib ogg_static.lib libmpeg2.lib sword1_debug/sword1.lib sword2_debug/sword2.lib lure_debug/lure.lib cine_debug/cine.lib cruise_debug/cruise.lib kyra_debug/kyra.lib gob_debug/gob.lib queen_debug/queen.lib saga_debug/saga.lib agi_debug/agi.lib scumm_debug/scumm.lib agos_debug/agos.lib sky_debug/sky.lib parallaction_debug/parallaction.lib"
+ AdditionalDependencies="winmm.lib sdl.lib zlib.lib libmad.lib vorbisfile_static.lib vorbis_static.lib ogg_static.lib libmpeg2.lib sword1_debug/sword1.lib sword2_debug/sword2.lib lure_debug/lure.lib cine_debug/cine.lib cruise_debug/cruise.lib kyra_debug/kyra.lib gob_debug/gob.lib queen_debug/queen.lib saga_debug/saga.lib agi_debug/agi.lib scumm_debug/scumm.lib agos_debug/agos.lib drascula_debug/drascula.lib sky_debug/sky.lib parallaction_debug/parallaction.lib"
OutputFile="$(OutDir)/scummvm.exe"
LinkIncremental="2"
IgnoreDefaultLibraryNames="libc.lib;libcmt.lib"
@@ -158,7 +158,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib sdl.lib zlib.lib libmad.lib vorbisfile_static.lib vorbis_static.lib ogg_static.lib libmpeg2.lib saga_release/saga.lib agi_release/agi.lib sword1_release/sword1.lib sword2_release/sword2.lib lure_release/lure.lib cine_release/cine.lib cruise_release/cruise.lib kyra_release/kyra.lib gob_release/gob.lib queen_release/queen.lib scumm_release/scumm.lib agos_release/agos.lib sky_release/sky.lib parallaction_release/parallaction.lib"
+ AdditionalDependencies="winmm.lib sdl.lib zlib.lib libmad.lib vorbisfile_static.lib vorbis_static.lib ogg_static.lib libmpeg2.lib saga_release/saga.lib agi_release/agi.lib sword1_release/sword1.lib sword2_release/sword2.lib lure_release/lure.lib cine_release/cine.lib cruise_release/cruise.lib kyra_release/kyra.lib gob_release/gob.lib queen_release/queen.lib scumm_release/scumm.lib agos_release/agos.lib sky_release/sky.lib drascula_release/drascula.lib parallaction_release/parallaction.lib"
OutputFile="$(OutDir)/scummvm.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/agi.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/agi.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/agi.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -178,7 +178,7 @@
case Common::KEYCODE_MINUS:
key = '-';
break;
- case Common::KEYCODE_9:
+ case Common::KEYCODE_TAB:
key = 0x0009;
break;
case Common::KEYCODE_F1:
@@ -448,6 +448,12 @@
loadGame(saveNameBuffer, false); // Do not check game id
}
+#ifdef __DS__
+ // Normally, the engine loads the predictive text dictionary when the predictive dialog
+ // is shown. On the DS version, the word completion feature needs the dictionary too.
+ loadDict();
+#endif
+
return ec;
}
@@ -535,6 +541,67 @@
{NULL, NULL, 0, 0, NULL}
};
+AgiTextColor AgiButtonStyle::getColor(bool hasFocus, bool pressed, bool positive) const {
+ if (_amigaStyle) {
+ if (positive) {
+ if (pressed) { // Positive pressed Amiga-style button
+ if (_olderAgi) {
+ return AgiTextColor(amigaBlack, amigaOrange);
+ } else {
+ return AgiTextColor(amigaBlack, amigaPurple);
+ }
+ } else { // Positive unpressed Amiga-style button
+ return AgiTextColor(amigaWhite, amigaGreen);
+ }
+ } else { // _amigaStyle && !positive
+ if (pressed) { // Negative pressed Amiga-style button
+ return AgiTextColor(amigaBlack, amigaCyan);
+ } else { // Negative unpressed Amiga-style button
+ return AgiTextColor(amigaWhite, amigaRed);
+ }
+ }
+ } else { // PC-style button
+ if (hasFocus || pressed) { // A pressed or in focus PC-style button
+ return AgiTextColor(pcWhite, pcBlack);
+ } else { // An unpressed PC-style button without focus
+ return AgiTextColor(pcBlack, pcWhite);
+ }
+ }
+}
+
+AgiTextColor AgiButtonStyle::getColor(bool hasFocus, bool pressed, int baseFgColor, int baseBgColor) const {
+ return getColor(hasFocus, pressed, AgiTextColor(baseFgColor, baseBgColor));
+}
+
+AgiTextColor AgiButtonStyle::getColor(bool hasFocus, bool pressed, const AgiTextColor &baseColor) const {
+ if (hasFocus || pressed)
+ return baseColor.swap();
+ else
+ return baseColor;
+}
+
+int AgiButtonStyle::getTextOffset(bool hasFocus, bool pressed) const {
+ return (pressed && !_amigaStyle) ? 1 : 0;
+}
+
+bool AgiButtonStyle::getBorder(bool hasFocus, bool pressed) const {
+ return _amigaStyle && !_authenticAmiga && (hasFocus || pressed);
+}
+
+void AgiButtonStyle::setAmigaStyle(bool amigaStyle, bool olderAgi, bool authenticAmiga) {
+ _amigaStyle = amigaStyle;
+ _olderAgi = olderAgi;
+ _authenticAmiga = authenticAmiga;
+}
+
+void AgiButtonStyle::setPcStyle(bool pcStyle) {
+ setAmigaStyle(!pcStyle);
+}
+
+AgiButtonStyle::AgiButtonStyle(Common::RenderMode renderMode) {
+ setAmigaStyle(renderMode == Common::kRenderAmiga);
+}
+
AgiEngine::AgiEngine(OSystem *syst) : Engine(syst) {
// Setup mixer
@@ -635,6 +702,8 @@
}
}
+ _buttonStyle = AgiButtonStyle(_renderMode);
+ _defaultButtonStyle = AgiButtonStyle();
_console = new Console(this);
_gfx = new GfxMgr(this);
_sound = new SoundMgr(this, _mixer);
@@ -676,6 +745,13 @@
}
AgiEngine::~AgiEngine() {
+ // If the engine hasn't been initialized yet via AgiEngine::initialize(), don't attempt to free any resources,
+ // as they haven't been allocated. Fixes bug #1742432 - AGI: Engine crashes if no game is detected
+ if (_game.state == STATE_INIT) {
+ delete _rnd; // delete _rnd, as it is allocated in the constructor, not in initialize()
+ return;
+ }
+
agiDeinit();
_sound->deinitSound();
delete _sound;
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/agi.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/agi.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/agi.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -81,6 +81,7 @@
#define MSG_BOX_COLOUR 0x0f /* White */
#define MSG_BOX_TEXT 0x00 /* Black */
#define MSG_BOX_LINE 0x04 /* Red */
+#define BUTTON_BORDER 0x00 /* Black */
#define STATUS_FG 0x00 /* Black */
#define STATUS_BG 0x0f /* White */
@@ -110,7 +111,9 @@
GF_AGI256_2 = (1 << 3),
GF_AGIPAL = (1 << 4),
GF_MACGOLDRUSH = (1 << 5),
- GF_FANMADE = (1 << 6)
+ GF_FANMADE = (1 << 6),
+ GF_MENUS = (1 << 7),
+ GF_ESCPAUSE = (1 << 8)
};
enum AgiGameID {
@@ -153,6 +156,7 @@
errNoLoopsInView,
errViewDataError,
errNoGameList,
+ errIOError,
errUnk = 127
};
@@ -317,6 +321,118 @@
uint8 *buffer; /* used for window background */
};
+/** AGI text color (Background and foreground color). */
+struct AgiTextColor {
+ /** Creates an AGI text color. Uses black text on white background by default. */
+ AgiTextColor(int fgColor = 0x00, int bgColor = 0x0F) : fg(fgColor), bg(bgColor) {}
+
+ /** Get an AGI text color with swapped foreground and background color. */
+ AgiTextColor swap() const { return AgiTextColor(bg, fg); }
+
+ int fg; ///< Foreground color (Used for text).
+ int bg; ///< Background color (Used for text's background).
+};
+
+/**
+ * AGI button style (Amiga or PC).
+ *
+ * Supports positive and negative button types (Used with Amiga-style only):
+ * Positive buttons do what the dialog was opened for.
+ * Negative buttons cancel what the dialog was opened for.
+ * Restart-dialog example: Restart-button is positive, Cancel-button negative.
+ * Paused-dialog example: Continue-button is positive.
+ */
+struct AgiButtonStyle {
+// Public constants etc
+public:
+ static const int
+ // Amiga colors (Indexes into the Amiga-ish palette)
+ amigaBlack = 0x00, ///< Accurate, is #000000 (24-bit RGB)
+ amigaWhite = 0x0F, ///< Practically accurate, is close to #FFFFFF (24-bit RGB)
+ amigaGreen = 0x02, ///< Quite accurate, should be #008A00 (24-bit RGB)
+ amigaOrange = 0x0C, ///< Inaccurate, too much blue, should be #FF7500 (24-bit RGB)
+ amigaPurple = 0x0D, ///< Inaccurate, too much green, should be #FF00FF (24-bit RGB)
+ amigaRed = 0x04, ///< Quite accurate, should be #BD0000 (24-bit RGB)
+ amigaCyan = 0x0B, ///< Inaccurate, too much red, should be #00FFDE (24-bit RGB)
+ // PC colors (Indexes into the EGA-palette)
+ pcBlack = 0x00,
+ pcWhite = 0x0F;
+
+// Public methods
+public:
+ /**
+ * Get the color of the button with the given state and type using current style.
+ *
+ * @param hasFocus True if button has focus, false otherwise.
+ * @param pressed True if button is being pressed, false otherwise.
+ * @param positive True if button is positive, false if button is negative. Only matters for Amiga-style buttons.
+ */
+ AgiTextColor getColor(bool hasFocus, bool pressed, bool positive = true) const;
+
+ /**
+ * Get the color of a button with the given base color and state ignoring current style.
+ * Swaps foreground and background color when the button has focus or is being pressed.
+ *
+ * @param hasFocus True if button has focus, false otherwise.
+ * @param pressed True if button is being pressed, false otherwise.
+ * @param baseFgColor Foreground color of the button when it has no focus and is not being pressed.
+ * @param baseBgColor Background color of the button when it has no focus and is not being pressed.
+ */
+ AgiTextColor getColor(bool hasFocus, bool pressed, int baseFgColor, int baseBgColor) const;
+
+ /**
+ * Get the color of a button with the given base color and state ignoring current style.
+ * Swaps foreground and background color when the button has focus or is being pressed.
+ *
+ * @param hasFocus True if button has focus, false otherwise.
+ * @param pressed True if button is being pressed, false otherwise.
+ * @param baseColor Color of the button when it has no focus and is not being pressed.
+ */
+ AgiTextColor getColor(bool hasFocus, bool pressed, const AgiTextColor &baseColor) const;
+
+ /**
+ * How many pixels to offset the shown text diagonally down and to the right.
+ * Currently only used for pressed PC-style buttons.
+ */
+ int getTextOffset(bool hasFocus, bool pressed) const;
+
+ /**
+ * Show border around the button?
+ * Currently border is only used for in focus or pressed Amiga-style buttons
+ * when in inauthentic Amiga-style mode.
+ */
+ bool getBorder(bool hasFocus, bool pressed) const;
+
+ /**
+ * Set Amiga-button style.
+ *
+ * @param amigaStyle Set Amiga-button style if true, otherwise set PC-button style.
+ * @param olderAgi If true then use older AGI style in Amiga-mode, otherwise use newer.
+ * @param authenticAmiga If true then don't use a border around buttons in Amiga-mode, otherwise use.
+ */
+ void setAmigaStyle(bool amigaStyle = true, bool olderAgi = false, bool authenticAmiga = false);
+
+ /**
+ * Set PC-button style.
+ * @param pcStyle Set PC-button style if true, otherwise set default Amiga-button style.
+ */
+ void setPcStyle(bool pcStyle = true);
+
+// Public constructors
+public:
+ /**
+ * Create a button style based on the given rendering mode.
+ * @param renderMode If Common::kRenderAmiga then creates default Amiga-button style, otherwise PC-style.
+ */
+ AgiButtonStyle(Common::RenderMode renderMode = Common::kRenderDefault);
+
+// Private member variables
+private:
+ bool _amigaStyle; ///< Use Amiga-style buttons if true, otherwise use PC-style buttons.
+ bool _olderAgi; ///< Use older AGI style in Amiga-style mode.
+ bool _authenticAmiga; ///< Don't use border around buttons in Amiga-style mode.
+};
+
#define EGO_VIEW_TABLE 0
#define HORIZON 36
#define _WIDTH 160
@@ -594,6 +710,8 @@
int _oldMode;
Menu* _menu;
+ AgiButtonStyle _buttonStyle;
+ AgiButtonStyle _defaultButtonStyle;
char _lastSentence[40];
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/detection.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/detection.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/detection.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -125,7 +125,7 @@
{
- // Sarien Name == AGI Demo 1 (PC) 05/87 [AGI 2.425]
+ // AGI Demo 1 (PC) 05/87 [AGI 2.425]
{
"agidemo",
"Demo 1 1987-05-20",
@@ -142,7 +142,7 @@
{
- // Sarien Name == AGI Demo 2 (IIgs) 1.0C (Censored)
+ // AGI Demo 2 (IIgs) 1.0C (Censored)
{
"agidemo",
"Demo 2 1987-11-24 1.0C",
@@ -159,7 +159,7 @@
{
- // Sarien Name == AGI Demo 2 (PC 3.5") 11/87 [AGI 2.915]
+ // AGI Demo 2 (PC 3.5") 11/87 [AGI 2.915]
{
"agidemo",
"Demo 2 1987-11-24 3.5\"",
@@ -176,7 +176,7 @@
{
- // Sarien Name == AGI Demo 2 (PC 5.25") 11/87 [v1] [AGI 2.915]
+ // AGI Demo 2 (PC 5.25") 11/87 [v1] [AGI 2.915]
{
"agidemo",
"Demo 2 1987-11-24 [version 1] 5.25\"",
@@ -193,7 +193,7 @@
{
- // Sarien Name == AGI Demo 2 (PC 5.25") 01/88 [v2] [AGI 2.917]
+ // AGI Demo 2 (PC 5.25") 01/88 [v2] [AGI 2.917]
{
"agidemo",
"Demo 2 1988-01-25 [version 2] 5.25\"",
@@ -210,7 +210,7 @@
{
- // Sarien Name == AGI Demo 3 (PC) 09/88 [AGI 3.002.102]
+ // AGI Demo 3 (PC) 09/88 [AGI 3.002.102]
{
"agidemo",
"Demo 3 1988-09-13",
@@ -227,7 +227,7 @@
{
- // Sarien Name == Black Cauldron (Amiga) 2.00 6/14/87
+ // Black Cauldron (Amiga) 2.00 6/14/87
{
"bc",
"2.00 1987-06-14",
@@ -244,7 +244,8 @@
{
- // Sarien Name == Black Cauldron (Apple IIgs) 1.0O 2/24/89 (CE)
+ // Black Cauldron (Apple IIgs) 1.0O 2/24/89 (CE)
+ // Menus not tested
{
"bc",
"1.0O 1989-02-24 (CE)",
@@ -261,7 +262,7 @@
{
- // Sarien Name == Black Cauldron (PC) 2.00 6/14/87 [AGI 2.439]
+ // Black Cauldron (PC) 2.00 6/14/87 [AGI 2.439]
{
"bc",
"2.00 1987-06-14",
@@ -278,7 +279,7 @@
{
- // Sarien Name == Black Cauldron (PC 5.25") 2.10 11/10/88 [AGI 3.002.098]
+ // Black Cauldron (PC 5.25") 2.10 11/10/88 [AGI 3.002.098]
{
"bc",
"2.10 1988-11-10 5.25\"",
@@ -297,7 +298,8 @@
// These aren't supposed to work now as they require unsupported agi engine 2.01
#if 0
{
- // Sarien Name == Donald Duck's Playground (Amiga) 1.0C
+ // Donald Duck's Playground (Amiga) 1.0C
+ // Menus not tested
{
"ddp",
"1.0C 1987-04-27",
@@ -314,7 +316,8 @@
{
- // Sarien Name == Donald Duck's Playground (ST) 1.0A 8/8/86
+ // Donald Duck's Playground (ST) 1.0A 8/8/86
+ // Menus not tested
{
"ddp",
"1.0A 1986-08-08",
@@ -332,6 +335,7 @@
{
// reported by Filippos (thebluegr) in bugreport #1654500
+ // Menus not tested
{
"ddp",
"1.0C 1986-06-09", // verify date
@@ -348,7 +352,7 @@
#endif
{
- // Sarien Name == Gold Rush! (Amiga) 1.01 1/13/89 aka 2.05 3/9/89 # 2.316
+ // Gold Rush! (Amiga) 1.01 1/13/89 aka 2.05 3/9/89 # 2.316
{
"goldrush",
"1.01 1989-01-13 aka 2.05 1989-03-09",
@@ -365,7 +369,8 @@
{
- // Sarien Name == Gold Rush! (Apple IIgs) 1.0M 2/28/89 (CE) aka 2.01 12/22/88
+ // Gold Rush! (Apple IIgs) 1.0M 2/28/89 (CE) aka 2.01 12/22/88
+ // Menus not tested
{
"goldrush",
"1.0M 1989-02-28 (CE) aka 2.01 1988-12-22",
@@ -382,7 +387,7 @@
{
- // Sarien Name == Gold Rush! (ST) 1.01 1/13/89 aka 2.01 12/22/88
+ // Gold Rush! (ST) 1.01 1/13/89 aka 2.01 12/22/88
{
"goldrush",
"1.01 1989-01-13 aka 2.01 1988-12-22",
@@ -399,7 +404,7 @@
{
- // Sarien Name == Gold Rush! (PC 5.25") 2.01 12/22/88 [AGI 3.002.149]
+ // Gold Rush! (PC 5.25") 2.01 12/22/88 [AGI 3.002.149]
{
"goldrush",
"2.01 1988-12-22 5.25\"",
@@ -416,7 +421,7 @@
{
- // Sarien Name == Gold Rush! (PC 3.5") 2.01 12/22/88 [AGI 3.002.149]
+ // Gold Rush! (PC 3.5") 2.01 12/22/88 [AGI 3.002.149]
{
"goldrush",
"2.01 1988-12-22 3.5\"",
@@ -433,7 +438,7 @@
{
- // Sarien Name == Gold Rush! (PC 5.25") 2.01 12/22/88 [AGI 3.002.149]
+ // Gold Rush! (PC 5.25") 2.01 12/22/88 [AGI 3.002.149]
{
"goldrush",
"2.01 1988-12-22",
@@ -454,7 +459,8 @@
{
- // Sarien Name == King's Quest 1 (Amiga) 1.0U # 2.082
+ // King's Quest 1 (Amiga) 1.0U # 2.082
+ // The original game did not have menus, they are enabled under ScummVM
{
"kq1",
"1.0U 1986",
@@ -465,13 +471,14 @@
},
GID_KQ1,
GType_V2,
- 0,
+ GF_MENUS,
0x2440,
},
{
- // Sarien Name == King's Quest 1 (ST) 1.0V
+ // King's Quest 1 (ST) 1.0V
+ // The original game did not have menus, they are enabled under ScummVM
{
"kq1",
"1.0V 1986",
@@ -482,13 +489,14 @@
},
GID_KQ1,
GType_V2,
- 0,
+ GF_MENUS,
0x2272,
},
{
- // Sarien Name == King's Quest 1 (IIgs) 1.0S-88223
+ // King's Quest 1 (IIgs) 1.0S-88223
+ // Menus not tested
{
"kq1",
"1.0S 1988-02-23",
@@ -505,7 +513,7 @@
{
- // Sarien Name == King's Quest 1 (Mac) 2.0C
+ // King's Quest 1 (Mac) 2.0C
{
"kq1",
"2.0C 1987-03-26",
@@ -522,7 +530,7 @@
{
- // Sarien Name == King's Quest 1 (PC 5.25"/3.5") 2.0F [AGI 2.917]
+ // King's Quest 1 (PC 5.25"/3.5") 2.0F [AGI 2.917]
{
"kq1",
"2.0F 1987-05-05 5.25\"/3.5\"",
@@ -539,7 +547,7 @@
{
- // Sarien Name == King's Quest 2 (IIgs) 2.0A 6/16/88 (CE)
+ // King's Quest 2 (IIgs) 2.0A 6/16/88 (CE)
{
"kq2",
"2.0A 1988-06-16 (CE)",
@@ -556,7 +564,7 @@
{
- // Sarien Name == King's Quest 2 (Amiga) 2.0J (Broken)
+ // King's Quest 2 (Amiga) 2.0J (Broken)
{
"kq2",
"2.0J 1987-01-29 [OBJECT decrypted]",
@@ -573,7 +581,7 @@
{
- // Sarien Name == King's Quest 2 (Mac) 2.0R
+ // King's Quest 2 (Mac) 2.0R
{
"kq2",
"2.0R 1988-03-23",
@@ -607,7 +615,7 @@
{
- // Sarien Name == King's Quest 2 (PC 5.25"/3.5") 2.2 [AGI 2.426]
+ // King's Quest 2 (PC 5.25"/3.5") 2.2 [AGI 2.426]
{
"kq2",
"2.2 1987-05-07 5.25\"/3.5\"",
@@ -624,7 +632,8 @@
{
- // Sarien Name == King's Quest 3 (Amiga) 1.01 11/8/86
+ // King's Quest 3 (Amiga) 1.01 11/8/86
+ // The original game did not have menus, they are enabled under ScummVM
{
"kq3",
"1.01 1986-11-08",
@@ -635,13 +644,14 @@
},
GID_KQ3,
GType_V2,
- 0,
+ GF_MENUS,
0x2440,
},
{
- // Sarien Name == King's Quest 3 (ST) 1.02 11/18/86
+ // King's Quest 3 (ST) 1.02 11/18/86
+ // Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game
{
"kq3",
"1.02 1986-11-18",
@@ -652,13 +662,13 @@
},
GID_KQ3,
GType_V2,
- 0,
+ GF_ESCPAUSE,
0x2272,
},
{
- // Sarien Name == King's Quest 3 (Mac) 2.14 3/15/88
+ // King's Quest 3 (Mac) 2.14 3/15/88
{
"kq3",
"2.14 1988-03-15",
@@ -675,7 +685,7 @@
{
- // Sarien Name == King's Quest 3 (IIgs) 2.0A 8/28/88 (CE)
+ // King's Quest 3 (IIgs) 2.0A 8/28/88 (CE)
{
"kq3",
"2.0A 1988-08-28 (CE)",
@@ -692,7 +702,7 @@
{
- // Sarien Name == King's Quest 3 (Amiga) 2.15 11/15/89 # 2.333
+ // King's Quest 3 (Amiga) 2.15 11/15/89 # 2.333
{
"kq3",
"2.15 1989-11-15",
@@ -709,7 +719,8 @@
{
- // Sarien Name == King's Quest 3 (PC) 1.01 11/08/86 [AGI 2.272]
+ // King's Quest 3 (PC) 1.01 11/08/86 [AGI 2.272]
+ // Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game
{
"kq3",
"1.01 1986-11-08",
@@ -720,13 +731,13 @@
},
GID_KQ3,
GType_V2,
- 0,
+ GF_ESCPAUSE,
0x2272,
},
{
- // Sarien Name == King's Quest 3 (PC 5.25") 2.00 5/25/87 [AGI 2.435]
+ // King's Quest 3 (PC 5.25") 2.00 5/25/87 [AGI 2.435]
{
"kq3",
"2.00 1987-05-25 5.25\"",
@@ -743,7 +754,8 @@
{
- // Sarien Name == King's Quest 3 (Mac) 2.14 3/15/88
+ // King's Quest 3 (Mac) 2.14 3/15/88
+ // Menus not tested
{
"kq3",
"2.14 1988-03-15 5.25\"",
@@ -760,7 +772,7 @@
{
- // Sarien Name == King's Quest 3 (PC 3.5") 2.14 3/15/88 [AGI 2.936]
+ // King's Quest 3 (PC 3.5") 2.14 3/15/88 [AGI 2.936]
{
"kq3",
"2.14 1988-03-15 3.5\"",
@@ -777,7 +789,7 @@
{
- // Sarien Name == King's Quest 4 (PC 5.25") 2.3 9/27/88 [AGI 3.002.086]
+ // King's Quest 4 (PC 5.25") 2.3 9/27/88 [AGI 3.002.086]
{
"kq4",
"2.3 1988-09-27",
@@ -794,7 +806,8 @@
{
- // Sarien Name == King's Quest 4 (IIgs) 1.0K 11/22/88 (CE)
+ // King's Quest 4 (IIgs) 1.0K 11/22/88 (CE)
+ // Menus not tested
{
"kq4",
"1.0K 1988-11-22",
@@ -811,7 +824,7 @@
{
- // Sarien Name == King's Quest 4 (PC 3.5") 2.0 7/27/88 [AGI 3.002.086]
+ // King's Quest 4 (PC 3.5") 2.0 7/27/88 [AGI 3.002.086]
{
"kq4",
"2.0 1988-07-27 3.5\"",
@@ -828,7 +841,8 @@
{
- // Sarien Name == King's Quest 4 (PC 3.5") 2.2 9/27/88 [AGI 3.002.086]
+ // King's Quest 4 (PC 3.5") 2.2 9/27/88 [AGI 3.002.086]
+ // Menus not tested
{
"kq4",
"2.2 1988-09-27 3.5\"",
@@ -845,7 +859,8 @@
{
- // Sarien Name == King's Quest 4 demo (PC) [AGI 3.002.102]
+ // King's Quest 4 demo (PC) [AGI 3.002.102]
+ // Menus not tested
{
"kq4",
"Demo 1988-12-20",
@@ -862,7 +877,7 @@
{
- // Sarien Name == Leisure Suit Larry 1 (PC 5.25"/3.5") 1.00 6/1/87 [AGI 2.440]
+ // Leisure Suit Larry 1 (PC 5.25"/3.5") 1.00 6/1/87 [AGI 2.440]
{
"lsl1",
"1.00 1987-06-01 5.25\"/3.5\"",
@@ -879,7 +894,7 @@
{
- // Sarien Name == Leisure Suit Larry 1 (ST) 1.04 6/18/87
+ // Leisure Suit Larry 1 (ST) 1.04 6/18/87
{
"lsl1",
"1.04 1987-06-18",
@@ -896,7 +911,7 @@
{
- // Sarien Name == Leisure Suit Larry 1 (Amiga) 1.05 6/26/87 # x.yyy
+ // Leisure Suit Larry 1 (Amiga) 1.05 6/26/87 # x.yyy
{
"lsl1",
"1.05 1987-06-26",
@@ -913,7 +928,7 @@
{
- // Sarien Name == Leisure Suit Larry 1 (IIgs) 1.0E
+ // Leisure Suit Larry 1 (IIgs) 1.0E
{
"lsl1",
"1.0E 1987",
@@ -930,7 +945,7 @@
{
- // Sarien Name == Leisure Suit Larry 1 (Mac) 1.05 6/26/87
+ // Leisure Suit Larry 1 (Mac) 1.05 6/26/87
{
"lsl1",
"1.05 1987-06-26",
@@ -947,7 +962,7 @@
{
- // Sarien Name == Manhunter NY (ST) 1.03 10/20/88
+ // Manhunter NY (ST) 1.03 10/20/88
{
"mh1",
"1.03 1988-10-20",
@@ -964,7 +979,7 @@
{
- // Sarien Name == Manhunter NY (IIgs) 2.0E 10/05/88 (CE)
+ // Manhunter NY (IIgs) 2.0E 10/05/88 (CE)
{
"mh1",
"2.0E 1988-10-05 (CE)",
@@ -981,7 +996,7 @@
{
- // Sarien Name == Manhunter NY (Amiga) 1.06 3/18/89
+ // Manhunter NY (Amiga) 1.06 3/18/89
{
"mh1",
"1.06 1989-03-18",
@@ -999,7 +1014,7 @@
{
// reported by Filippos (thebluegr) in bugreport #1654500
- // Sarien Name == Manhunter NY (PC 5.25") 1.22 8/31/88 [AGI 3.002.107]
+ // Manhunter NY (PC 5.25") 1.22 8/31/88 [AGI 3.002.107]
{
"mh1",
"1.22 1988-08-31",
@@ -1016,7 +1031,7 @@
{
- // Sarien Name == Manhunter NY (PC 3.5") 1.22 8/31/88 [AGI 3.002.102]
+ // Manhunter NY (PC 3.5") 1.22 8/31/88 [AGI 3.002.102]
{
"mh1",
"1.22 1988-08-31",
@@ -1033,7 +1048,7 @@
{
- // Sarien Name == Manhunter SF (ST) 1.0 7/29/89
+ // Manhunter SF (ST) 1.0 7/29/89
{
"mh2",
"1.0 1989-07-29",
@@ -1050,7 +1065,7 @@
{
- // Sarien Name == Manhunter SF (Amiga) 3.06 8/17/89 # 2.333
+ // Manhunter SF (Amiga) 3.06 8/17/89 # 2.333
{
"mh2",
"3.06 1989-08-17",
@@ -1067,7 +1082,7 @@
{
- // Sarien Name == Manhunter SF (PC 5.25") 3.03 8/17/89 [AGI 3.002.149]
+ // Manhunter SF (PC 5.25") 3.03 8/17/89 [AGI 3.002.149]
{
"mh2",
"3.03 1989-08-17 5.25\"",
@@ -1084,7 +1099,7 @@
{
- // Sarien Name == Manhunter SF (PC 3.5") 3.02 7/26/89 [AGI 3.002.149]
+ // Manhunter SF (PC 3.5") 3.02 7/26/89 [AGI 3.002.149]
{
"mh2",
"3.02 1989-07-26 3.5\"",
@@ -1099,9 +1114,11 @@
0x3149,
},
-
+#if 0
{
- // Sarien Name == Mixed-Up Mother Goose (Amiga) 1.1
+ // Mixed-Up Mother Goose (Amiga) 1.1
+ // Problematic: crashes
+ // Menus not tested
{
"mixedup",
"1.1 1986-12-10",
@@ -1115,10 +1132,10 @@
0,
0x3086,
},
+#endif
-
{
- // Sarien Name == Mixed Up Mother Goose (IIgs)
+ // Mixed Up Mother Goose (IIgs)
{
"mixedup",
"1987",
@@ -1135,7 +1152,7 @@
{
- // Sarien Name == Mixed-Up Mother Goose (PC) [AGI 2.915]
+ // Mixed-Up Mother Goose (PC) [AGI 2.915]
{
"mixedup",
"1987-11-10",
@@ -1153,7 +1170,8 @@
#if 0
{
- // Sarien Name == Mixed Up Mother Goose (PC) [AGI 2.915] (Broken)
+ // Mixed Up Mother Goose (PC) [AGI 2.915] (Broken)
+ // Menus not tested
{
"mixedup",
"[corrupt/OBJECT from disk 1]",
@@ -1171,7 +1189,7 @@
{
- // Sarien Name == Police Quest 1 (PC) 2.0E 11/17/87 [AGI 2.915]
+ // Police Quest 1 (PC) 2.0E 11/17/87 [AGI 2.915]
{
"pq1",
"2.0E 1987-11-17",
@@ -1188,7 +1206,7 @@
{
- // Sarien Name == Police Quest 1 (Mac) 2.0G 12/3/87
+ // Police Quest 1 (Mac) 2.0G 12/3/87
{
"pq1",
"2.0G 1987-12-03",
@@ -1205,7 +1223,7 @@
{
- // Sarien Name == Police Quest 1 (IIgs) 2.0B-88421
+ // Police Quest 1 (IIgs) 2.0B-88421
{
"pq1",
"2.0B 1988-04-21",
@@ -1222,7 +1240,7 @@
{
- // Sarien Name == Police Quest 1 (Amiga) 2.0B 2/22/89 # 2.310
+ // Police Quest 1 (Amiga) 2.0B 2/22/89 # 2.310
{
"pq1",
"2.0B 1989-02-22",
@@ -1239,7 +1257,7 @@
{
- // Sarien Name == Police Quest 1 (IIgs) 2.0A-88318
+ // Police Quest 1 (IIgs) 2.0A-88318
{
"pq1",
"2.0A 1988-03-18",
@@ -1256,7 +1274,7 @@
{
- // Sarien Name == Police Quest 1 (PC) 2.0A 10/23/87 [AGI 2.903/2.911]
+ // Police Quest 1 (PC) 2.0A 10/23/87 [AGI 2.903/2.911]
{
"pq1",
"2.0A 1987-10-23",
@@ -1273,7 +1291,7 @@
{
- // Sarien Name == Police Quest 1 (Mac) 2.0G 12/3/87
+ // Police Quest 1 (Mac) 2.0G 12/3/87
{
"pq1",
"2.0G 1987-12-03 5.25\"/ST",
@@ -1307,7 +1325,8 @@
{
- // Sarien Name == Space Quest 1 (ST) 1.1A
+ // Space Quest 1 (ST) 1.1A
+ // The original game did not have menus, they are enabled under ScummVM
{
"sq1",
"1.1A 1986-02-06",
@@ -1318,13 +1337,14 @@
},
GID_SQ1,
GType_V2,
- 0,
+ GF_MENUS,
0x2440,
},
{
- // Sarien Name == Space Quest 1 (PC) 1.1A [AGI 2.272]
+ // Space Quest 1 (PC) 1.1A [AGI 2.272]
+ // The original game did not have menus, they are enabled under ScummVM
{
"sq1",
"1.1A 1986-11-13",
@@ -1335,13 +1355,14 @@
},
GID_SQ1,
GType_V2,
- 0,
+ GF_MENUS,
0x2272,
},
{
- // Sarien Name == Space Quest 1 (Amiga) 1.2 # 2.082
+ // Space Quest 1 (Amiga) 1.2 # 2.082
+ // The original game did not have menus, they are enabled under ScummVM
{
"sq1",
"1.2 1986",
@@ -1352,13 +1373,13 @@
},
GID_SQ1,
GType_V2,
- 0,
+ GF_MENUS,
0x2440,
},
{
- // Sarien Name == Space Quest 1 (Mac) 1.5D
+ // Space Quest 1 (Mac) 1.5D
{
"sq1",
"1.5D 1987-04-02",
@@ -1375,7 +1396,7 @@
{
- // Sarien Name == Space Quest 1 (IIgs) 2.2
+ // Space Quest 1 (IIgs) 2.2
{
"sq1",
"2.2 1987",
@@ -1392,7 +1413,8 @@
{
- // Sarien Name == Space Quest 1 (PC) 1.0X [AGI 2.089]
+ // Space Quest 1 (PC) 1.0X [AGI 2.089]
+ // Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game
{
"sq1",
"1.0X 1986-09-24",
@@ -1403,30 +1425,14 @@
},
GID_SQ1,
GType_V2,
- 0,
+ GF_ESCPAUSE,
0x2089,
},
- {
- // Sarien Name == Space Quest 1 (PC) 1.1A [AGI 2.272]
- {
- "sq1",
- "1.1A 1986-11-13",
- AD_ENTRY1("logdir", "8d8c20ab9f4b6e4817698637174a1cb6"),
- Common::EN_ANY,
- Common::kPlatformPC,
- Common::ADGF_NO_FLAGS
- },
- GID_SQ1,
- GType_V2,
- 0,
- 0x2272,
- },
-
{
- // Sarien Name == Space Quest 1 (PC 5.25"/3.5") 2.2 [AGI 2.426/2.917]
+ // Space Quest 1 (PC 5.25"/3.5") 2.2 [AGI 2.426/2.917]
{
"sq1",
"2.2 1987-05-07 5.25\"/3.5\"",
@@ -1444,7 +1450,7 @@
{
- // Sarien Name == Space Quest 2 (PC 3.5") 2.0D [AGI 2.936]
+ // Space Quest 2 (PC 3.5") 2.0D [AGI 2.936]
{
"sq2",
"2.0D 1988-03-14 3.5\"",
@@ -1461,7 +1467,7 @@
{
- // Sarien Name == Space Quest 2 (IIgs) 2.0A 7/25/88 (CE)
+ // Space Quest 2 (IIgs) 2.0A 7/25/88 (CE)
{
"sq2",
"2.0A 1988-07-25 (CE)",
@@ -1478,7 +1484,7 @@
{
- // Sarien Name == Space Quest 2 (Amiga) 2.0F
+ // Space Quest 2 (Amiga) 2.0F
{
"sq2",
"2.0F 1986-12-09 [VOL.2->PICTURE.16 broken]",
@@ -1499,7 +1505,7 @@
{
- // Sarien Name == Space Quest 2 (Mac) 2.0D
+ // Space Quest 2 (Mac) 2.0D
{
"sq2",
"2.0D 1988-04-04",
@@ -1517,7 +1523,7 @@
{
// reported by Filippos (thebluegr) in bugreport #1654500
- // Sarien Name == Space Quest 2 (PC 5.25") 2.0A [AGI 2.912]
+ // Space Quest 2 (PC 5.25") 2.0A [AGI 2.912]
{
"sq2",
"2.0A 1987-11-06 5.25\"",
@@ -1534,7 +1540,7 @@
{
- // Sarien Name == Space Quest 2 (PC 3.5") 2.0A [AGI 2.912]
+ // Space Quest 2 (PC 3.5") 2.0A [AGI 2.912]
{
"sq2",
"2.0A 1987-11-06 3.5\"",
@@ -1551,7 +1557,8 @@
{
- // Sarien Name == Space Quest 2 (PC 5.25"/ST) 2.0C/A [AGI 2.915]
+ // Space Quest 2 (PC 5.25"/ST) 2.0C/A [AGI 2.915]
+ // Menus not tested
{
"sq2",
"2.0C/A 5.25\"/ST",
@@ -1568,7 +1575,7 @@
{
- // Sarien Name == Space Quest 2 (PC 3.5") 2.0F [AGI 2.936]
+ // Space Quest 2 (PC 3.5") 2.0F [AGI 2.936]
{
"sq2",
"2.0F 1989-01-05 3.5\"",
@@ -1585,7 +1592,7 @@
{
- // Sarien Name == Xmas Card 1986 (PC) [AGI 2.272]
+ // Xmas Card 1986 (PC) [AGI 2.272]
{
"xmascard",
"1986-11-13 [version 1]",
@@ -1675,7 +1682,7 @@
FANMADE("Good Man (demo v3.41)", "3facd8a8f856b7b6e0f6c3200274d88c"),
{
- // Sarien Name == Groza
+ // Groza
{
"agi-fanmade",
"Groza (russian) [AGDS sample]",
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -68,6 +68,158 @@
};
/**
+ * Atari ST AGI palette.
+ * Used by all of the tested Atari ST AGI games
+ * from Donald Duck's Playground (1986) to Manhunter II (1989).
+ * 16 RGB colors. 3 bits per color component.
+ */
+uint8 atariStAgiPalette[16 * 3] = {
+ 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x7,
+ 0x0, 0x4, 0x0,
+ 0x0, 0x5, 0x4,
+ 0x5, 0x0, 0x0,
+ 0x5, 0x3, 0x6,
+ 0x4, 0x3, 0x0,
+ 0x5, 0x5, 0x5,
+ 0x3, 0x3, 0x2,
+ 0x0, 0x5, 0x7,
+ 0x0, 0x6, 0x0,
+ 0x0, 0x7, 0x6,
+ 0x7, 0x2, 0x3,
+ 0x7, 0x4, 0x7,
+ 0x7, 0x7, 0x4,
+ 0x7, 0x7, 0x7
+};
+
+/**
+ * Second generation Apple IIGS AGI palette.
+ * A 16-color, 12-bit RGB palette.
+ *
+ * Used by at least the following Apple IIGS AGI versions:
+ * 1.003 (Leisure Suit Larry I v1.0E, intro says 1987)
+ * 1.005 (AGI Demo 2 1987-06-30?)
+ * 1.006 (King's Quest I v1.0S 1988-02-23)
+ * 1.007 (Police Quest I v2.0B 1988-04-21 8:00am)
+ * 1.013 (King's Quest II v2.0A 1988-06-16 (CE))
+ * 1.013 (Mixed-Up Mother Goose v2.0A 1988-05-31 10:00am)
+ * 1.014 (King's Quest III v2.0A 1988-08-28 (CE))
+ * 1.014 (Space Quest II v2.0A, LOGIC.141 says 1988)
+ * 2.004 (Manhunter I v2.0E 1988-10-05 (CE))
+ * 2.006 (King's Quest IV v1.0K 1988-11-22 (CE))
+ * 3.001 (Black Cauldron v1.0O 1989-02-24 (CE))
+ * 3.003 (Gold Rush! v1.0M 1989-02-28 (CE))
+ */
+uint8 appleIIgsAgiPaletteV2[16 * 3] = {
+ 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xF,
+ 0x0, 0x8, 0x0,
+ 0x0, 0xD, 0xB,
+ 0xC, 0x0, 0x0,
+ 0xB, 0x7, 0xD,
+ 0x8, 0x5, 0x0,
+ 0xB, 0xB, 0xB,
+ 0x7, 0x7, 0x7,
+ 0x0, 0xB, 0xF,
+ 0x0, 0xE, 0x0,
+ 0x0, 0xF, 0xD,
+ 0xF, 0x9, 0x8,
+ 0xD, 0x9, 0xF, // Only this differs from the 1st generation palette
+ 0xE, 0xE, 0x0,
+ 0xF, 0xF, 0xF
+};
+
+/**
+ * First generation Amiga & Apple IIGS AGI palette.
+ * A 16-color, 12-bit RGB palette.
+ *
+ * Used by at least the following Amiga AGI versions:
+ * 2.082 (King's Quest I v1.0U 1986)
+ * 2.082 (Space Quest I v1.2 1986)
+ * 2.090 (King's Quest III v1.01 1986-11-08)
+ * 2.107 (King's Quest II v2.0J 1987-01-29)
+ * x.yyy (Black Cauldron v2.00 1987-06-14)
+ * x.yyy (Larry I v1.05 1987-06-26)
+ *
+ * Also used by at least the following Apple IIGS AGI versions:
+ * 1.002 (Space Quest I, intro says v2.2 1987)
+ */
+uint8 amigaAgiPaletteV1[16 * 3] = {
+ 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xF,
+ 0x0, 0x8, 0x0,
+ 0x0, 0xD, 0xB,
+ 0xC, 0x0, 0x0,
+ 0xB, 0x7, 0xD,
+ 0x8, 0x5, 0x0,
+ 0xB, 0xB, 0xB,
+ 0x7, 0x7, 0x7,
+ 0x0, 0xB, 0xF,
+ 0x0, 0xE, 0x0,
+ 0x0, 0xF, 0xD,
+ 0xF, 0x9, 0x8,
+ 0xF, 0x7, 0x0,
+ 0xE, 0xE, 0x0,
+ 0xF, 0xF, 0xF
+};
+
+/**
+ * Second generation Amiga AGI palette.
+ * A 16-color, 12-bit RGB palette.
+ *
+ * Used by at least the following Amiga AGI versions:
+ * 2.202 (Space Quest II v2.0F. Intro says 1988. ScummVM 0.10.0 detects as 1986-12-09)
+ */
+uint8 amigaAgiPaletteV2[16 * 3] = {
+ 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xF,
+ 0x0, 0x8, 0x0,
+ 0x0, 0xD, 0xB,
+ 0xC, 0x0, 0x0,
+ 0xB, 0x7, 0xD,
+ 0x8, 0x5, 0x0,
+ 0xB, 0xB, 0xB,
+ 0x7, 0x7, 0x7,
+ 0x0, 0xB, 0xF,
+ 0x0, 0xE, 0x0,
+ 0x0, 0xF, 0xD,
+ 0xF, 0x9, 0x8,
+ 0xD, 0x0, 0xF,
+ 0xE, 0xE, 0x0,
+ 0xF, 0xF, 0xF
+};
+
+/**
+ * Third generation Amiga AGI palette.
+ * A 16-color, 12-bit RGB palette.
+ *
+ * Used by at least the following Amiga AGI versions:
+ * 2.310 (Police Quest I v2.0B 1989-02-22)
+ * 2.316 (Gold Rush! v2.05 1989-03-09)
+ * x.yyy (Manhunter I v1.06 1989-03-18)
+ * 2.333 (Manhunter II v3.06 1989-08-17)
+ * 2.333 (King's Quest III v2.15 1989-11-15)
+ */
+uint8 amigaAgiPaletteV3[16 * 3] = {
+ 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xB,
+ 0x0, 0xB, 0x0,
+ 0x0, 0xB, 0xB,
+ 0xB, 0x0, 0x0,
+ 0xB, 0x0, 0xB,
+ 0xC, 0x7, 0x0,
+ 0xB, 0xB, 0xB,
+ 0x7, 0x7, 0x7,
+ 0x0, 0x0, 0xF,
+ 0x0, 0xF, 0x0,
+ 0x0, 0xF, 0xF,
+ 0xF, 0x0, 0x0,
+ 0xF, 0x0, 0xF,
+ 0xF, 0xF, 0x0,
+ 0xF, 0xF, 0xF
+};
+
+/**
* 16 color amiga-ish palette.
*/
uint8 newPalette[16 * 3] = {
@@ -554,13 +706,42 @@
}
/**
- * Draw button
+ * Draw a default style button.
+ * Swaps background and foreground color if button is in focus or being pressed.
* @param x x coordinate of the button
* @param y y coordinate of the button
* @param a set if the button has focus
* @param p set if the button is pressed
+ * @param fgcolor foreground color of the button when it is neither in focus nor being pressed
+ * @param bgcolor background color of the button when it is neither in focus nor being pressed
*/
-void GfxMgr::drawButton(int x, int y, const char *s, int a, int p, int fgcolor, int bgcolor) {
+void GfxMgr::drawDefaultStyleButton(int x, int y, const char *s, int a, int p, int fgcolor, int bgcolor) {
+ int textOffset = _vm->_defaultButtonStyle.getTextOffset(a > 0, p > 0);
+ AgiTextColor color = _vm->_defaultButtonStyle.getColor (a > 0, p > 0, fgcolor, bgcolor);
+ bool border = _vm->_defaultButtonStyle.getBorder (a > 0, p > 0);
+
+ rawDrawButton(x, y, s, color.fg, color.bg, border, textOffset);
+}
+
+/**
+ * Draw a button using the currently chosen style.
+ * Amiga-style is used for the Amiga-rendering mode, PC-style is used otherwise.
+ * @param x x coordinate of the button
+ * @param y y coordinate of the button
+ * @param hasFocus set if the button has focus
+ * @param pressed set if the button is pressed
+ * @param positive set if button is positive, otherwise button is negative (Only matters with Amiga-style buttons)
+ * TODO: Make Amiga-style buttons a bit wider as they were in Amiga AGI games.
+ */
+void GfxMgr::drawCurrentStyleButton(int x, int y, const char *label, bool hasFocus, bool pressed, bool positive) {
+ int textOffset = _vm->_buttonStyle.getTextOffset(hasFocus, pressed);
+ AgiTextColor color = _vm->_buttonStyle.getColor(hasFocus, pressed, positive);
+ bool border = _vm->_buttonStyle.getBorder(hasFocus, pressed);
+
+ rawDrawButton(x, y, label, color.fg, color.bg, border, textOffset);
+}
+
+void GfxMgr::rawDrawButton(int x, int y, const char *s, int fgcolor, int bgcolor, bool border, int textOffset) {
int len = strlen(s);
int x1, y1, x2, y2;
@@ -569,8 +750,12 @@
x2 = x + CHAR_COLS * len + 2;
y2 = y + CHAR_LINES + 2;
+ // Draw a filled rectangle that's larger than the button. Used for drawing
+ // a border around the button as the button itself is drawn after this.
+ drawRectangle(x1, y1, x2, y2, border ? BUTTON_BORDER : MSG_BOX_COLOUR);
+
while (*s) {
- putTextCharacter(0, x + (!!p), y + (!!p), *s++, a ? bgcolor : fgcolor, a ? fgcolor : bgcolor);
+ putTextCharacter(0, x + textOffset, y + textOffset, *s++, fgcolor, bgcolor);
x += CHAR_COLS;
}
@@ -623,39 +808,26 @@
/**
* Initialize the color palette
- * This function initializes the color palette using the specified 16-color
+ * This function initializes the color palette using the specified
* RGB palette.
- * @param p A pointer to the 16-color RGB palette.
+ * @param p A pointer to the source RGB palette.
+ * @param colorCount Count of colors in the source palette.
+ * @param fromBits Bits per source color component.
+ * @param toBits Bits per destination color component.
*/
-void GfxMgr::initPalette(uint8 *p) {
- int i;
-
- for (i = 0; i < 48; i++) {
- _palette[i] = p[i];
+void GfxMgr::initPalette(uint8 *p, uint colorCount, uint fromBits, uint toBits) {
+ const uint srcMax = (1 << fromBits) - 1;
+ const uint destMax = (1 << toBits) - 1;
+ for (uint col = 0; col < colorCount; col++) {
+ for (uint comp = 0; comp < 3; comp++) { // Convert RGB components
+ _palette[col * 4 + comp] = (p[col * 3 + comp] * destMax) / srcMax;
+ }
+ _palette[col * 4 + 3] = 0; // Set alpha to zero
}
}
void GfxMgr::gfxSetPalette() {
- int i;
- byte pal[256 * 4];
-
- if (!(_vm->getFeatures() & (GF_AGI256 | GF_AGI256_2))) {
- for (i = 0; i < 16; i++) {
- pal[i * 4 + 0] = _palette[i * 3 + 0] << 2;
- pal[i * 4 + 1] = _palette[i * 3 + 1] << 2;
- pal[i * 4 + 2] = _palette[i * 3 + 2] << 2;
- pal[i * 4 + 3] = 0;
- }
- g_system->setPalette(pal, 0, 16);
- } else {
- for (i = 0; i < 256; i++) {
- pal[i * 4 + 0] = vgaPalette[i * 3 + 0];
- pal[i * 4 + 1] = vgaPalette[i * 3 + 1];
- pal[i * 4 + 2] = vgaPalette[i * 3 + 2];
- pal[i * 4 + 3] = 0;
- }
- g_system->setPalette(pal, 0, 256);
- }
+ g_system->setPalette(_palette, 0, 256);
}
//Gets AGIPAL Data
@@ -739,8 +911,28 @@
};
/**
- * RGBA-palette for the black and white SCI-style arrow cursor.
+ * A black and white Apple IIGS style arrow cursor (9x11).
+ * 0 = Transparent.
+ * 1 = Black (#000000 in 24-bit RGB).
+ * 2 = White (#FFFFFF in 24-bit RGB).
*/
+static const byte appleIIgsMouseCursor[] = {
+ 2,2,0,0,0,0,0,0,0,
+ 2,1,2,0,0,0,0,0,0,
+ 2,1,1,2,0,0,0,0,0,
+ 2,1,1,1,2,0,0,0,0,
+ 2,1,1,1,1,2,0,0,0,
+ 2,1,1,1,1,1,2,0,0,
+ 2,1,1,1,1,1,1,2,0,
+ 2,1,1,1,1,1,1,1,2,
+ 2,1,1,2,1,1,2,2,0,
+ 2,2,2,0,2,1,1,2,0,
+ 0,0,0,0,0,2,2,2,0
+};
+
+/**
+ * RGBA-palette for the black and white SCI and Apple IIGS arrow cursors.
+ */
static const byte sciMouseCursorPalette[] = {
0x00, 0x00, 0x00, 0x00, // Black
0xFF, 0xFF, 0xFF, 0x00 // White
@@ -819,7 +1011,9 @@
* @see deinit_video()
*/
int GfxMgr::initVideo() {
- if (_vm->_renderMode == Common::kRenderEGA)
+ if (_vm->getFeatures() & (GF_AGI256 | GF_AGI256_2))
+ initPalette(vgaPalette, 256, 8);
+ else if (_vm->_renderMode == Common::kRenderEGA)
initPalette(egaPalette);
else
initPalette(newPalette);
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/graphics.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -41,7 +41,7 @@
private:
AgiEngine *_vm;
- uint8 _palette[16 * 3];
+ uint8 _palette[256 * 4];
uint8 *_agiScreen;
unsigned char *_screen;
@@ -50,6 +50,9 @@
uint8 _agipalPalette[16 * 3];
int _agipalFileNum;
+private:
+ void rawDrawButton(int x, int y, const char *s, int fgcolor, int bgcolor, bool border, int textOffset);
+
public:
GfxMgr(AgiEngine *vm);
@@ -74,12 +77,13 @@
void clearScreen(int);
void clearConsoleScreen(int);
void drawBox(int, int, int, int, int, int, int);
- void drawButton(int, int, const char *, int, int, int fgcolor = 0, int bgcolor = 0);
+ void drawDefaultStyleButton(int, int, const char *, int, int, int fgcolor = 0, int bgcolor = 0);
+ void drawCurrentStyleButton(int x, int y, const char *label, bool hasFocus, bool pressed = false, bool positive = true);
int testButton(int, int, const char *);
void drawRectangle(int, int, int, int, int);
void saveBlock(int, int, int, int, uint8 *);
void restoreBlock(int, int, int, int, uint8 *);
- void initPalette(uint8 *);
+ void initPalette(uint8 *p, uint colorCount = 16, uint fromBits = 6, uint toBits = 8);
void setAGIPal(int);
int getAGIPalFileNum();
void drawFrame(int x1, int y1, int x2, int y2, int c1, int c2);
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/keyboard.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/keyboard.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/keyboard.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -107,8 +107,10 @@
VtEntry *v = &_game.viewTable[0];
int i;
- /* AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus */
- if (key == 0 || (key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC) )
+ // AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus
+ // Games with the GF_ESCPAUSE flag need KEY_ESCAPE to pause the game
+ if (key == 0 ||
+ (key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC && !(getFeatures() & GF_ESCPAUSE)) )
return false;
if ((getGameID() == GID_MH1 || getGameID() == GID_MH2) && (key == KEY_ENTER) &&
@@ -127,7 +129,7 @@
}
if (key == BUTTON_LEFT) {
- if (getflag(fMenusWork) && g_mouse.y <= CHAR_LINES) {
+ if ((getflag(fMenusWork) || (getFeatures() & GF_MENUS)) && g_mouse.y <= CHAR_LINES) {
newInputMode(INPUT_MENU);
return true;
}
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/menu.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/menu.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/menu.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -267,7 +267,7 @@
static int menuActive = false;
static int buttonUsed = 0;
- if (!_vm->getflag(fMenusWork))
+ if (!_vm->getflag(fMenusWork) && !(_vm->getFeatures() & GF_MENUS))
return false;
if (!menuActive) {
@@ -351,6 +351,12 @@
debugC(6, kDebugLevelMenu | kDebugLevelInput, "event %d registered", d->event);
_vm->_game.evKeyp[d->event].occured = true;
_vm->_game.evKeyp[d->event].data = d->event;
+ // In LSL1, event 0x20 is set when changing the game speed to normal via the menu
+ // Do not set the event data to 0x20, as this event is then incorrectly triggered
+ // when the spacebar is pressed, which has a keycode equal to 0x20 as well
+ // Fixes bug #1751390 - "LSL: after changing game speed, space key turn unfunctional"
+ if (d->event == 0x20)
+ _vm->_game.evKeyp[d->event].data = d->event + 1;
goto exit_menu;
}
}
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/predictive.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/predictive.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/predictive.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -30,6 +30,10 @@
#include "common/func.h"
#include "common/config-manager.h"
+#ifdef __DS__
+#include "wordcompletion.h"
+#endif
+
namespace Agi {
#define kModePre 0
@@ -200,9 +204,9 @@
color2 = 7;
}
if (i == 14) {
- _gfx->drawButton(bx[i], by[i], modes[mode], i == active, 0, color1, color2);
+ _gfx->drawDefaultStyleButton(bx[i], by[i], modes[mode], i == active, 0, color1, color2);
} else {
- _gfx->drawButton(bx[i], by[i], buttons[i], i == active, 0, color1, color2);
+ _gfx->drawDefaultStyleButton(bx[i], by[i], buttons[i], i == active, 0, color1, color2);
}
}
@@ -521,6 +525,10 @@
while ((ptr = strchr(ptr, '\n'))) {
*ptr = 0;
ptr++;
+#ifdef __DS__
+ // Pass the line on to the DS word list
+ DS::addAutoCompleteLine(_predictiveDictLine[i - 1]);
+#endif
_predictiveDictLine[i++] = ptr;
}
if (_predictiveDictLine[lines - 1][0] == 0)
@@ -529,6 +537,11 @@
_predictiveDictLineCount = lines;
debug("Loaded %d lines", _predictiveDictLineCount);
+#ifdef __DS__
+ // Sort the DS word completion list, to allow for a binary chop later (in the ds backend)
+ DS::sortAutoCompleteWordList();
+#endif
+
uint32 time3 = _system->getMillis();
printf("Time to parse pred.dic: %d, total: %d\n", time3-time2, time3-time1);
}
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/saveload.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/saveload.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/saveload.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -55,6 +55,7 @@
int i;
struct ImageStackElement *ptr = _imageStack;
Common::OutSaveFile *out;
+ int result = errOK;
debugC(3, kDebugLevelMain | kDebugLevelSavegame, "AgiEngine::saveGame(%s, %s)", fileName, description);
if (!(out = _saveFileMan->openForSaving(fileName))) {
@@ -206,14 +207,15 @@
out->writeSint16BE(_gfx->getAGIPalFileNum());
out->finalize();
- if (out->ioFailed())
+ if (out->ioFailed()) {
warning("Can't write file '%s'. (Disk full?)", fileName);
- else
+ result = errIOError;
+ } else
debugC(1, kDebugLevelMain | kDebugLevelSavegame, "Saved game %s in file %s", description, fileName);
delete out;
debugC(3, kDebugLevelMain | kDebugLevelSavegame, "Closed %s", fileName);
- return errOK;
+ return result;
}
int AgiEngine::loadGame(const char *fileName, bool checkId) {
@@ -516,7 +518,7 @@
buttonY = (vm + 17) * CHAR_LINES;
for (i = 0; i < 2; i++)
- _gfx->drawButton(buttonX[i], buttonY, buttonText[i], 0, 0, MSG_BOX_TEXT, MSG_BOX_COLOUR);
+ _gfx->drawCurrentStyleButton(buttonX[i], buttonY, buttonText[i], false, false, i == 0);
AllowSyntheticEvents on(this);
int oldFirstSlot = _firstSlot + 1;
@@ -751,20 +753,24 @@
sprintf(fileName, "%s", getSavegameFilename(slot));
debugC(8, kDebugLevelMain | kDebugLevelResources, "file is [%s]", fileName);
- saveGame(fileName, desc);
+ int result = saveGame(fileName, desc);
- messageBox("Game saved.");
+ if (result == errOK)
+ messageBox("Game saved.");
+ else
+ messageBox("Error saving game.");
- return errOK;
+ return result;
}
int AgiEngine::saveGameSimple() {
char fileName[MAX_PATH];
sprintf(fileName, "%s", getSavegameFilename(0));
- saveGame(fileName, "Default savegame");
-
- return errOK;
+ int result = saveGame(fileName, "Default savegame");
+ if (result != errOK)
+ messageBox("Error saving game.");
+ return result;
}
int AgiEngine::loadGameDialog() {
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/sound.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/sound.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/sound.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -40,26 +40,43 @@
#ifdef USE_IIGS_SOUND
-/**
- * AGI engine sound envelope structure.
- */
-struct SoundEnvelope {
+struct IIgsEnvelopeSegment {
uint8 bp;
- uint8 incHi;
- uint8 inc_lo;
+ uint16 inc; ///< 8b.8b fixed point, big endian?
};
-struct SoundWavelist {
+#define ENVELOPE_SEGMENT_COUNT 8
+struct IIgsEnvelope {
+ IIgsEnvelopeSegment seg[ENVELOPE_SEGMENT_COUNT];
+};
+
+// 2**(1/12) i.e. the 12th root of 2
+#define SEMITONE 1.059463094359295
+
+struct IIgsWaveInfo {
uint8 top;
uint8 addr;
uint8 size;
+// Oscillator channel (Bits 4-7 of mode-byte). Simplified to use only stereo here.
+#define MASK_OSC_CHANNEL (1 << 4)
+#define OSC_CHANNEL_LEFT (1 << 4)
+#define OSC_CHANNEL_RIGHT (0 << 4)
+// Oscillator halt bit (Bit 0 of mode-byte)
+#define MASK_OSC_HALT (1 << 0)
+#define OSC_HALT (1 << 0)
+// Oscillator mode (Bits 1 and 2 of mode-byte)
+#define MASK_OSC_MODE (3 << 1)
+#define OSC_MODE_LOOP (0 << 1)
+#define OSC_MODE_ONESHOT (1 << 1)
+#define OSC_MODE_SYNC_AM (2 << 1)
+#define OSC_MODE_SWAP (3 << 1)
uint8 mode;
- uint8 relHi;
- uint8 relLo;
+ uint16 relPitch; ///< 8b.8b fixed point, big endian?
};
-struct SoundInstrument {
- struct SoundEnvelope env[8];
+#define MAX_WAVE_COUNT 8
+struct IIgsInstrumentHeader {
+ IIgsEnvelope env;
uint8 relseg;
uint8 priority;
uint8 bendrange;
@@ -68,19 +85,19 @@
uint8 spare;
uint8 wac;
uint8 wbc;
- struct SoundWavelist wal[8];
- struct SoundWavelist wbl[8];
+ IIgsWaveInfo wal[MAX_WAVE_COUNT];
+ IIgsWaveInfo wbl[MAX_WAVE_COUNT];
};
-struct SoundIIgsSample {
- uint8 typeLo;
- uint8 typeHi;
- uint8 srateLo;
- uint8 srateHi;
- uint16 unknown[2];
- uint8 sizeLo;
- uint8 sizeHi;
- uint16 unknown2[13];
+struct IIgsSampleHeader {
+ uint16 type;
+ uint8 pitch; ///< Logarithmic, base is 2**(1/12), unknown multiplier (Possibly in range 1040-1080)
+ uint8 unknownByte_Ofs3; // 0x7F in Gold Rush's sound resource 60, 0 in all others.
+ uint8 volume; ///< Current guess: Logarithmic in 6 dB steps
+ uint8 unknownByte_Ofs5; ///< 0 in all tested samples.
+ uint16 instrumentSize; ///< Little endian. 44 in all tested samples. A guess.
+ uint16 sampleSize; ///< Little endian. Accurate in all tested samples excluding Manhunter I's sound resource 16.
+ IIgsInstrumentHeader instrument;
};
#if 0
@@ -89,6 +106,117 @@
static uint8 *wave;
#endif
+bool readIIgsEnvelope(IIgsEnvelope &envelope, Common::SeekableReadStream &stream) {
+ for (int segNum = 0; segNum < ENVELOPE_SEGMENT_COUNT; segNum++) {
+ envelope.seg[segNum].bp = stream.readByte();
+ envelope.seg[segNum].inc = stream.readUint16BE();
+ }
+ return !stream.ioFailed();
+}
+
+bool readIIgsWaveInfo(IIgsWaveInfo &waveInfo, Common::SeekableReadStream &stream) {
+ waveInfo.top = stream.readByte();
+ waveInfo.addr = stream.readByte();
+ waveInfo.size = stream.readByte();
+ waveInfo.mode = stream.readByte();
+ waveInfo.relPitch = stream.readUint16BE();
+ return !stream.ioFailed();
+}
+
+/**
+ * Read an Apple IIGS instrument header from the given stream.
+ * @param header The header to which to write the data.
+ * @param stream The source stream from which to read the data.
+ * @return True if successful, false otherwise.
+ */
+bool readIIgsInstrumentHeader(IIgsInstrumentHeader &header, Common::SeekableReadStream &stream) {
+ readIIgsEnvelope(header.env, stream);
+ header.relseg = stream.readByte();
+ header.priority = stream.readByte();
+ header.bendrange = stream.readByte();
+ header.vibdepth = stream.readByte();
+ header.vibspeed = stream.readByte();
+ header.spare = stream.readByte();
+ header.wac = stream.readByte();
+ header.wbc = stream.readByte();
+ for (int waveA = 0; waveA < header.wac; waveA++) // Read A wave lists
+ readIIgsWaveInfo(header.wal[waveA], stream);
+ for (int waveB = 0; waveB < header.wbc; waveB++) // Read B wave lists
+ readIIgsWaveInfo(header.wbl[waveB], stream);
+ return !stream.ioFailed();
+}
+
+/**
+ * Read an Apple IIGS AGI sample header from the given stream.
+ * @param header The header to which to write the data.
+ * @param stream The source stream from which to read the data.
+ * @return True if successful, false otherwise.
+ */
+bool readIIgsSampleHeader(IIgsSampleHeader &header, Common::SeekableReadStream &stream) {
+ header.type = stream.readUint16LE();
+ header.pitch = stream.readByte();
+ header.unknownByte_Ofs3 = stream.readByte();
+ header.volume = stream.readByte();
+ header.unknownByte_Ofs5 = stream.readByte();
+ header.instrumentSize = stream.readUint16LE();
+ header.sampleSize = stream.readUint16LE();
+ return readIIgsInstrumentHeader(header.instrument, stream);
+}
+
+/**
+ * Load an Apple IIGS AGI sample resource from the given stream and
+ * create an AudioStream out of it.
+ *
+ * @param stream The source stream.
+ * @param resnum Sound resource number. Optional. Used for error messages.
+ * @return A non-null AudioStream pointer if successful, NULL otherwise.
+ * @note In case of failure (i.e. NULL is returned), stream is reset back
+ * to its original position and its I/O failed -status is cleared.
+ * TODO: Add better handling of invalid resource number when printing error messages.
+ * TODO: Add support for looping sounds.
+ * FIXME: Fix sample rate calculation, it's probably not accurate at the moment.
+ */
+Audio::AudioStream *makeIIgsSampleStream(Common::SeekableReadStream &stream, int resnum = -1) {
+ const uint32 startPos = stream.pos();
+ IIgsSampleHeader header;
+ Audio::AudioStream *result = NULL;
+ bool readHeaderOk = readIIgsSampleHeader(header, stream);
+
+ // Check that the header was read ok and that it's of the correct type
+ // and that there's room for the sample data in the stream.
+ if (readHeaderOk && header.type == AGI_SOUND_SAMPLE) { // An Apple IIGS AGI sample resource
+ uint32 tailLen = stream.size() - stream.pos();
+ if (tailLen < header.sampleSize) { // Check if there's no room for the sample data in the stream
+ // Apple IIGS Manhunter I: Sound resource 16 has only 16074 bytes
+ // of sample data although header says it should have 16384 bytes.
+ warning("Apple IIGS sample (%d) too short (%d bytes. Should be %d bytes). Using the part that's left", resnum, tailLen, header.sampleSize);
+ header.sampleSize = (uint16) tailLen; // Use the part that's left
+ }
+ if (header.pitch > 0x7F) { // Check if the pitch is invalid
+ warning("Apple IIGS sample (%d) has too high pitch (0x%02x)", resnum, header.pitch);
+ header.pitch &= 0x7F; // Apple IIGS AGI probably did it this way too
+ }
+ // Allocate memory for the sample data and read it in
+ byte *sampleData = (byte *) malloc(header.sampleSize);
+ uint32 readBytes = stream.read(sampleData, header.sampleSize);
+ if (readBytes == header.sampleSize) { // Check that we got all the data we requested
+ // Make an audio stream from the mono, 8 bit, unsigned input data
+ byte flags = Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_UNSIGNED;
+ int rate = (int) (1076 * pow(SEMITONE, header.pitch));
+ result = Audio::makeLinearInputStream(sampleData, header.sampleSize, rate, flags, 0, 0);
+ }
+ }
+
+ // If couldn't make a sample out of the input stream for any reason then
+ // rewind back to stream's starting position and clear I/O failed -status.
+ if (result == NULL) {
+ stream.seek(startPos);
+ stream.clearIOFailed();
+ }
+
+ return result;
+}
+
#endif
static int playing;
@@ -169,7 +297,7 @@
}
void SoundMgr::decodeSound(int resnum) {
-#ifdef USE_IIGS_SOUND
+#if 0
int type, size;
int16 *buf;
uint8 *src;
@@ -190,12 +318,12 @@
_vm->_game.sounds[resnum].rdata = (uint8 *) buf;
free(src);
}
-#endif /* USE_IIGS_SOUND */
+#endif
}
void SoundMgr::startSound(int resnum, int flag) {
int i, type;
-#ifdef USE_IIGS_SOUND
+#if 0
struct SoundIIgsSample *smp;
#endif
@@ -218,7 +346,7 @@
song = (uint8 *)_vm->_game.sounds[resnum].rdata;
switch (type) {
-#ifdef USE_IIGS_SOUND
+#if 0
case AGI_SOUND_SAMPLE:
debugC(3, kDebugLevelSound, "IIGS sample");
smp = (struct SoundIIgsSample *)_vm->_game.sounds[resnum].rdata;
Modified: scummvm/branches/gsoc2007-fsnode/engines/agi/text.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agi/text.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agi/text.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -364,7 +364,7 @@
debugC(4, kDebugLevelText, "waiting...");
for (;;) {
for (i = 0; b[i]; i++)
- _gfx->drawButton(bx[i], by[i], b[i], i == active, 0, MSG_BOX_TEXT, MSG_BOX_COLOUR);
+ _gfx->drawCurrentStyleButton(bx[i], by[i], b[i], i == active, false, i == 0);
_gfx->pollTimer(); /* msdos driver -> does nothing */
key = doPollKeyboard();
@@ -555,7 +555,7 @@
break;
case 's':
i = strtoul(s, NULL, 10);
- safeStrcat(p, _game.strings[i]);
+ safeStrcat(p, agiSprintf(_game.strings[i]));
break;
case 'm':
i = strtoul(s, NULL, 10) - 1;
Modified: scummvm/branches/gsoc2007-fsnode/engines/agos/agos.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agos/agos.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agos/agos.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -148,10 +148,6 @@
_itemArraySize = 0;
_itemArrayInited = 0;
- _itemHeapPtr = 0;
- _itemHeapCurPos = 0;
- _itemHeapSize = 0;
-
_iconFilePtr = 0;
_codePtr = 0;
@@ -824,7 +820,7 @@
_numTextBoxes = 10;
_numVars = 255;
- _numMusic = 9;
+ _numMusic = 26;
AGOSEngine::setupGame();
}
@@ -920,7 +916,11 @@
_midi.close();
- free(_itemHeapPtr - _itemHeapCurPos);
+ for (uint i = 0; i < _itemHeap.size(); i++) {
+ delete [] _itemHeap[i];
+ }
+ _itemHeap.clear();
+
free(_tablesHeapPtr - _tablesHeapCurPos);
free(_gameOffsetsPtr);
@@ -1054,7 +1054,11 @@
_midi.close();
- free(_itemHeapPtr - _itemHeapCurPos);
+ for (uint i = 0; i < _itemHeap.size(); i++) {
+ delete [] _itemHeap[i];
+ }
+ _itemHeap.clear();
+
free(_tablesHeapPtr - _tablesHeapCurPos);
free(_gameOffsetsPtr);
Modified: scummvm/branches/gsoc2007-fsnode/engines/agos/agos.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agos/agos.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agos/agos.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -28,6 +28,7 @@
#include "engines/engine.h"
+#include "common/array.h"
#include "common/keyboard.h"
#include "common/rect.h"
#include "common/util.h"
@@ -231,9 +232,7 @@
uint _itemArraySize;
uint _itemArrayInited;
- byte *_itemHeapPtr;
- uint _itemHeapCurPos;
- uint _itemHeapSize;
+ Common::Array<byte *> _itemHeap;
byte *_iconFilePtr;
Modified: scummvm/branches/gsoc2007-fsnode/engines/agos/detection_tables.h
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agos/detection_tables.h 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agos/detection_tables.h 2007-08-05 19:34:20 UTC (rev 28462)
@@ -542,6 +542,32 @@
GF_OLD_BUNDLE | GF_CRUNCHED | GF_CRUNCHED_GAMEPC | GF_PLANAR
},
+ // Waxworks - German Amiga Floppy
+ {
+ {
+ "waxworks",
+ "Floppy",
+
+ {
+ { "gameamiga", GAME_BASEFILE, "2938a17103de603c4c6f05e6a433b365", -1},
+ { "icon.pkd", GAME_ICONFILE, "4822a91c18b1b2005ac17fc617f7dcbe", -1},
+ { "menus.dat", GAME_MENUFILE, "3409eeb8ca8b46fc04da99de67573f5e", -1},
+ { "start", GAME_RESTFILE, "b575b336e741dde1725edd4079d5ab67", -1},
+ { "stripped.txt", GAME_STRFILE, "6faaebff2786216900061eeb978f10af", -1},
+ { "tbllist", GAME_TBLFILE, "95c44bfc380770a6b6dd0dfcc69e80a0", -1},
+ { "xtbllist", GAME_XTBLFILE, "6c7b3db345d46349a5226f695c03e20f", -1},
+ { NULL, 0, NULL, 0}
+ },
+ Common::DE_DEU,
+ Common::kPlatformAmiga,
+ Common::ADGF_NO_FLAGS
+ },
+
+ GType_WW,
+ GID_WAXWORKS,
+ GF_OLD_BUNDLE | GF_CRUNCHED | GF_CRUNCHED_GAMEPC | GF_PLANAR
+ },
+
// Waxworks - English DOS Floppy Demo
{
{
Modified: scummvm/branches/gsoc2007-fsnode/engines/agos/input.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agos/input.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agos/input.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -196,7 +196,7 @@
for (;;) {
if ((getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) &&
- _keyPressed.keycode == Common::KEYCODE_HASH)
+ _keyPressed.keycode == Common::KEYCODE_F10)
displayBoxStars();
if (processSpecialKeys()) {
if ((getGameType() == GType_PP && getGameId() != GID_DIMP) ||
Modified: scummvm/branches/gsoc2007-fsnode/engines/agos/items.cpp
===================================================================
--- scummvm/branches/gsoc2007-fsnode/engines/agos/items.cpp 2007-08-05 18:30:21 UTC (rev 28461)
+++ scummvm/branches/gsoc2007-fsnode/engines/agos/items.cpp 2007-08-05 19:34:20 UTC (rev 28462)
@@ -42,24 +42,15 @@
}
byte *AGOSEngine::allocateItem(uint size) {
- byte *org = _itemHeapPtr;
- size = (size + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
+ byte *item = new byte[size];
- _itemHeapPtr += size;
- _itemHeapCurPos += size;
-
- if (_itemHeapCurPos > _itemHeapSize)
- error("allocateItem: Itemheap overflow");
-
- return org;
+ memset(item, 0, size);
+ _itemHeap.push_back(item);
+ return item;
}
void AGOSEngine::allocItemHeap() {
- _itemHeapSize = _itemMemSize;
- _itemHeapCurPos = 0;
- _itemHeapPtr = (byte *)calloc(_itemMemSize, 1);
- if (!_itemHeapPtr)
- error("Out Of Memory - Items");
+ _itemHeap.clear();
}
bool AGOSEngine::hasIcon(Item *item) {
@@ -391,8 +382,13 @@
}
Item *AGOSEngine::derefItem(uint item) {
- if (item >= _itemArraySize)
- error("derefItem: invalid item %d", item);
+ // Occurs when loading item store from restart state in
+ // Elvira 2 (Amiga/AtariST) and Waxworks (Amiga).
+ if (item >= _itemArraySize) {
+ debug(0, "derefItem: invalid item %d", item);
+ return NULL;
+ }
+
return _itemArrayPtr[item];
}
@@ 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