aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/platform/android/texture.cpp63
-rw-r--r--common/xmlparser.cpp18
-rwxr-xr-xconfigure34
-rw-r--r--engines/agi/detection.cpp15
-rw-r--r--engines/cine/anim.cpp19
-rw-r--r--engines/cine/anim.h2
-rw-r--r--engines/cine/bg_list.cpp12
-rw-r--r--engines/cine/cine.cpp2
-rw-r--r--engines/cine/gfx.cpp70
-rw-r--r--engines/cine/gfx.h9
-rw-r--r--engines/cine/main_loop.cpp17
-rw-r--r--engines/cine/saveload.cpp16
-rw-r--r--engines/cine/script_fw.cpp19
-rw-r--r--engines/cine/various.cpp21
-rw-r--r--engines/cine/various.h2
-rw-r--r--engines/saga/shorten.cpp3
-rw-r--r--engines/sci/sound/audio.cpp3
-rw-r--r--engines/sci/sound/soundcmd.cpp41
-rw-r--r--engines/scumm/detection.cpp17
-rw-r--r--engines/sword25/sfx/soundengine.cpp18
-rw-r--r--engines/sword25/util/pluto/pluto.cpp4
-rw-r--r--gui/saveload-dialog.cpp2
-rw-r--r--gui/themes/translations.datbin342397 -> 345659 bytes
-rw-r--r--po/hu_HU.po28
-rw-r--r--po/pl_PL.po150
-rw-r--r--ports.mk6
26 files changed, 295 insertions, 296 deletions
diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp
index 95c96e0d25..b174e93191 100644
--- a/backends/platform/android/texture.cpp
+++ b/backends/platform/android/texture.cpp
@@ -52,9 +52,6 @@
// Supported GL extensions
static bool npot_supported = false;
-#ifdef GL_OES_draw_texture
-static bool draw_tex_supported = false;
-#endif
static inline GLfixed xdiv(int numerator, int denominator) {
assert(numerator < (1 << 16));
@@ -85,11 +82,6 @@ void GLESBaseTexture::initGLExtensions() {
if (token == "GL_ARB_texture_non_power_of_two")
npot_supported = true;
-
-#ifdef GL_OES_draw_texture
- if (token == "GL_OES_draw_texture")
- draw_tex_supported = true;
-#endif
}
}
@@ -180,45 +172,28 @@ void GLESBaseTexture::allocBuffer(GLuint w, GLuint h) {
void GLESBaseTexture::drawTexture(GLshort x, GLshort y, GLshort w, GLshort h) {
GLCALL(glBindTexture(GL_TEXTURE_2D, _texture_name));
-#ifdef GL_OES_draw_texture
- // Great extension, but only works under specific conditions.
- // Still a work-in-progress - disabled for now.
- if (false && draw_tex_supported && !hasPalette()) {
- //GLCALL(glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE));
- const GLint crop[4] = { 0, _surface.h, _surface.w, -_surface.h };
+ const GLfixed tex_width = xdiv(_surface.w, _texture_width);
+ const GLfixed tex_height = xdiv(_surface.h, _texture_height);
+ const GLfixed texcoords[] = {
+ 0, 0,
+ tex_width, 0,
+ 0, tex_height,
+ tex_width, tex_height,
+ };
- GLCALL(glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop));
+ GLCALL(glTexCoordPointer(2, GL_FIXED, 0, texcoords));
- // Android GLES bug?
- GLCALL(glColor4ub(0xff, 0xff, 0xff, 0xff));
+ const GLshort vertices[] = {
+ x, y,
+ x + w, y,
+ x, y + h,
+ x + w, y + h,
+ };
- GLCALL(glDrawTexiOES(x, y, 0, w, h));
- } else
-#endif
- {
- const GLfixed tex_width = xdiv(_surface.w, _texture_width);
- const GLfixed tex_height = xdiv(_surface.h, _texture_height);
- const GLfixed texcoords[] = {
- 0, 0,
- tex_width, 0,
- 0, tex_height,
- tex_width, tex_height,
- };
-
- GLCALL(glTexCoordPointer(2, GL_FIXED, 0, texcoords));
-
- const GLshort vertices[] = {
- x, y,
- x + w, y,
- x, y + h,
- x + w, y + h,
- };
-
- GLCALL(glVertexPointer(2, GL_SHORT, 0, vertices));
-
- assert(ARRAYSIZE(vertices) == ARRAYSIZE(texcoords));
- GLCALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, ARRAYSIZE(vertices) / 2));
- }
+ GLCALL(glVertexPointer(2, GL_SHORT, 0, vertices));
+
+ assert(ARRAYSIZE(vertices) == ARRAYSIZE(texcoords));
+ GLCALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, ARRAYSIZE(vertices) / 2));
clearDirty();
}
diff --git a/common/xmlparser.cpp b/common/xmlparser.cpp
index ea3d44cf87..f0b7f1cc81 100644
--- a/common/xmlparser.cpp
+++ b/common/xmlparser.cpp
@@ -20,15 +20,11 @@
*
*/
-// FIXME: Avoid using fprintf
-#define FORBIDDEN_SYMBOL_EXCEPTION_fprintf
-#define FORBIDDEN_SYMBOL_EXCEPTION_stderr
-
-
#include "common/xmlparser.h"
#include "common/archive.h"
#include "common/fs.h"
#include "common/memstream.h"
+#include "common/system.h"
namespace Common {
@@ -123,17 +119,19 @@ bool XMLParser::parserError(const String &errStr) {
keyClosing = currentPosition;
}
- fprintf(stderr, "\n File <%s>, line %d:\n", _fileName.c_str(), lineCount);
+ Common::String errorMessage = Common::String::format("\n File <%s>, line %d:\n", _fileName.c_str(), lineCount);
currentPosition = (keyClosing - keyOpening);
_stream->seek(keyOpening, SEEK_SET);
while (currentPosition--)
- fprintf(stderr, "%c", _stream->readByte());
+ errorMessage += (char)_stream->readByte();
+
+ errorMessage += "\n\nParser error: ";
+ errorMessage += errStr;
+ errorMessage += "\n\n";
- fprintf(stderr, "\n\nParser error: ");
- fprintf(stderr, "%s", errStr.c_str());
- fprintf(stderr, "\n\n");
+ g_system->logMessage(LogMessageType::kError, errorMessage.c_str());
return false;
}
diff --git a/configure b/configure
index 06492ff305..211d9e6e8d 100755
--- a/configure
+++ b/configure
@@ -712,7 +712,7 @@ Usage: $0 [OPTIONS]...
Configuration:
-h, --help display this help and exit
- --backend=BACKEND backend to build (android, bada, dc, dingux, ds, gp2x, gph,
+ --backend=BACKEND backend to build (android, bada, dc, dingux, ds, gph,
iphone, linuxmoto, maemo, n64, null, openpandora, ps2,
psp, samsungtv, sdl, webos, wii, wince) [sdl]
@@ -2202,13 +2202,8 @@ if test -n "$_host"; then
bfin*)
;;
caanoo)
- # This uses the GPH backend.
- DEFINES="$DEFINES -DGPH_DEVICE"
DEFINES="$DEFINES -DCAANOO"
- DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE"
- if test "$_debug_build" = yes; then
- DEFINES="$DEFINES -DGPH_DEBUG"
- else
+ if test "$_debug_build" = no; then
# Use -O3 on the Caanoo for non-debug builds.
_optimization_level=-O3
fi
@@ -2299,13 +2294,7 @@ if test -n "$_host"; then
add_line_to_config_h "#define USE_WII_DI"
;;
gp2x)
- # This uses the GPH backend.
- DEFINES="$DEFINES -DGPH_DEVICE"
DEFINES="$DEFINES -DGP2X"
- DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE"
- if test "$_debug_build" = yes; then
- DEFINES="$DEFINES -DGPH_DEBUG"
- fi
CXXFLAGS="$CXXFLAGS -march=armv4t"
ASFLAGS="$ASFLAGS -mfloat-abi=soft"
LDFLAGS="$LDFLAGS -static"
@@ -2319,13 +2308,7 @@ if test -n "$_host"; then
_port_mk="backends/platform/gph/gp2x-bundle.mk"
;;
gp2xwiz)
- # This uses the GPH backend.
- DEFINES="$DEFINES -DGPH_DEVICE"
DEFINES="$DEFINES -DGP2XWIZ"
- DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE"
- if test "$_debug_build" = yes; then
- DEFINES="$DEFINES -DGPH_DEBUG"
- fi
CXXFLAGS="$CXXFLAGS -mcpu=arm926ej-s"
CXXFLAGS="$CXXFLAGS -mtune=arm926ej-s"
ASFLAGS="$ASFLAGS -mfloat-abi=soft"
@@ -2611,9 +2594,14 @@ case $_backend in
INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/ds/commoninclude'
INCLUDES="$INCLUDES "'-Ibackends/platform/ds/arm9/data'
;;
- gp2x)
- ;;
gph)
+ # On the GPH devices we want fancy themes but do not want the load/save thumbnail grid.
+ DEFINES="$DEFINES -DDISABLE_SAVELOADCHOOSER_GRID"
+ DEFINES="$DEFINES -DGPH_DEVICE"
+ DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE"
+ if test "$_debug_build" = yes; then
+ DEFINES="$DEFINES -DGPH_DEBUG"
+ fi
;;
iphone)
LIBS="$LIBS -lobjc -framework UIKit -framework CoreGraphics -framework OpenGLES"
@@ -2709,7 +2697,7 @@ MODULES="$MODULES backends/platform/$_backend"
# Setup SDL specifics for SDL based backends
#
case $_backend in
- dingux | gp2x | gph | linuxmoto | maemo | openpandora | samsungtv | sdl)
+ dingux | gph | linuxmoto | maemo | openpandora | samsungtv | sdl)
find_sdlconfig
INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`"
LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`"
@@ -3375,7 +3363,7 @@ if test "$_fluidsynth" = yes ; then
esac
INCLUDES="$INCLUDES $FLUIDSYNTH_CFLAGS"
fi
-define_in_config_h_if_yes "$_fluidsynth" 'USE_FLUIDSYNTH'
+define_in_config_if_yes "$_fluidsynth" 'USE_FLUIDSYNTH'
echo "$_fluidsynth"
#
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp
index 805fe7d366..5f7780bfe3 100644
--- a/engines/agi/detection.cpp
+++ b/engines/agi/detection.cpp
@@ -20,9 +20,6 @@
*
*/
-// FIXME: Avoid using printf
-#define FORBIDDEN_SYMBOL_EXCEPTION_printf
-
#include "base/plugins.h"
#include "engines/advancedDetector.h"
@@ -491,10 +488,14 @@ const ADGameDescription *AgiMetaEngine::fallbackDetect(const FileMap &allFilesXX
g_fallbackDesc.desc.gameid = _gameid.c_str();
g_fallbackDesc.desc.extra = _extra.c_str();
- printf("Your game version has been detected using fallback matching as a\n");
- printf("variant of %s (%s).\n", g_fallbackDesc.desc.gameid, g_fallbackDesc.desc.extra);
- printf("If this is an original and unmodified version or new made Fanmade game,\n");
- printf("please report any, information previously printed by ScummVM to the team.\n");
+ Common::String fallbackWarning;
+
+ fallbackWarning = "Your game version has been detected using fallback matching as a\n";
+ fallbackWarning += Common::String::format("variant of %s (%s).\n", g_fallbackDesc.desc.gameid, g_fallbackDesc.desc.extra);
+ fallbackWarning += "If this is an original and unmodified version or new made Fanmade game,\n";
+ fallbackWarning += "please report any, information previously printed by ScummVM to the team.\n";
+
+ g_system->logMessage(LogMessageType::kWarning, fallbackWarning.c_str());
return (const ADGameDescription *)&g_fallbackDesc;
}
diff --git a/engines/cine/anim.cpp b/engines/cine/anim.cpp
index 410fcca1f3..60168831a1 100644
--- a/engines/cine/anim.cpp
+++ b/engines/cine/anim.cpp
@@ -682,9 +682,10 @@ void convert8BBP2(byte *dest, byte *source, int16 width, int16 height) {
* Load image set
* @param resourceName Image set filename
* @param idx Target index in animDataTable (-1 if any empty space will do)
+ * @param frameIndex frame of animation to load (-1 for all frames)
* @return The number of the animDataTable entry after the loaded image set (-1 if error)
*/
-int loadSet(const char *resourceName, int16 idx) {
+int loadSet(const char *resourceName, int16 idx, int16 frameIndex =-1 ) {
AnimHeader2Struct header2;
uint16 numSpriteInAnim;
int16 foundFileIdx = findFileInBundle(resourceName);
@@ -708,7 +709,17 @@ int loadSet(const char *resourceName, int16 idx) {
entry = idx < 0 ? emptyAnimSpace() : idx;
assert(entry >= 0);
- for (int16 i = 0; i < numSpriteInAnim; i++, entry++) {
+ int16 startFrame = 0;
+ int16 endFrame = numSpriteInAnim;
+
+ if(frameIndex>=0)
+ {
+ startFrame = frameIndex;
+ endFrame = frameIndex+1;
+ ptr += 0x10 * frameIndex;
+ }
+
+ for (int16 i = startFrame; i < endFrame; i++, entry++) {
Common::MemoryReadStream readS(ptr, 0x10);
header2.field_0 = readS.readUint32BE();
@@ -767,7 +778,7 @@ int loadSeq(const char *resourceName, int16 idx) {
* @return The number of the animDataTable entry after the loaded resource (-1 if error)
* @todo Implement loading of all resource types
*/
-int loadResource(const char *resourceName, int16 idx) {
+int loadResource(const char *resourceName, int16 idx, int16 frameIndex) {
int result = -1; // Return an error by default
if (strstr(resourceName, ".SPL")) {
result = loadSpl(resourceName, idx);
@@ -778,7 +789,7 @@ int loadResource(const char *resourceName, int16 idx) {
} else if (strstr(resourceName, ".ANM")) {
result = loadAni(resourceName, idx);
} else if (strstr(resourceName, ".SET")) {
- result = loadSet(resourceName, idx);
+ result = loadSet(resourceName, idx, frameIndex);
} else if (strstr(resourceName, ".SEQ")) {
result = loadSeq(resourceName, idx);
} else if (strstr(resourceName, ".H32")) {
diff --git a/engines/cine/anim.h b/engines/cine/anim.h
index 9c06c260ce..c5130aab82 100644
--- a/engines/cine/anim.h
+++ b/engines/cine/anim.h
@@ -98,7 +98,7 @@ public:
void freeAnimDataTable();
void freeAnimDataRange(byte startIdx, byte numIdx);
-int loadResource(const char *resourceName, int16 idx = -1);
+int loadResource(const char *resourceName, int16 idx = -1, int16 frameIndex = -1);
void loadResourcesFromSave(Common::SeekableReadStream &fHandle, enum CineSaveGameFormat saveGameFormat);
void generateMask(const byte *sprite, byte *mask, uint16 size, byte transparency);
diff --git a/engines/cine/bg_list.cpp b/engines/cine/bg_list.cpp
index 693fea3294..36ecf53dea 100644
--- a/engines/cine/bg_list.cpp
+++ b/engines/cine/bg_list.cpp
@@ -39,9 +39,9 @@ uint32 var8;
* @param objIdx Sprite description
*/
void addToBGList(int16 objIdx) {
- renderer->incrustSprite(g_cine->_objectTable[objIdx]);
-
createBgIncrustListElement(objIdx, 0);
+
+ renderer->incrustSprite(g_cine->_bgIncrustList.back());
}
/**
@@ -49,9 +49,9 @@ void addToBGList(int16 objIdx) {
* @param objIdx Sprite description
*/
void addSpriteFilledToBGList(int16 objIdx) {
- renderer->incrustMask(g_cine->_objectTable[objIdx]);
-
createBgIncrustListElement(objIdx, 1);
+
+ renderer->incrustMask(g_cine->_bgIncrustList.back());
}
/**
@@ -103,9 +103,9 @@ void loadBgIncrustFromSave(Common::SeekableReadStream &fHandle) {
g_cine->_bgIncrustList.push_back(tmp);
if (tmp.param == 0) {
- renderer->incrustSprite(g_cine->_objectTable[tmp.objIdx]);
+ renderer->incrustSprite(tmp);
} else {
- renderer->incrustMask(g_cine->_objectTable[tmp.objIdx]);
+ renderer->incrustMask(tmp);
}
}
}
diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp
index 6b94c33c31..bbe2cd4896 100644
--- a/engines/cine/cine.cpp
+++ b/engines/cine/cine.cpp
@@ -189,6 +189,8 @@ void CineEngine::initialize() {
g_cine->_messageTable.clear();
resetObjectTable();
+ disableSystemMenu = 1;
+
var8 = 0;
var2 = var3 = var4 = var5 = 0;
diff --git a/engines/cine/gfx.cpp b/engines/cine/gfx.cpp
index d448f134ff..7a988227f6 100644
--- a/engines/cine/gfx.cpp
+++ b/engines/cine/gfx.cpp
@@ -113,7 +113,7 @@ FWRenderer::FWRenderer() : _background(NULL), _backupPal(), _cmd(""),
assert(_backBuffer);
memset(_backBuffer, 0, _screenSize);
- memset(_bgName, 0, sizeof(_bgName));
+ memset(_bgName, 0, sizeof (_bgName));
}
@@ -174,7 +174,8 @@ void FWRenderer::fillSprite(const ObjectStruct &obj, uint8 color) {
* @param obj Object info
* @param fillColor Sprite color
*/
-void FWRenderer::incrustMask(const ObjectStruct &obj, uint8 color) {
+void FWRenderer::incrustMask(const BGIncrust &incrust, uint8 color) {
+ const ObjectStruct &obj = g_cine->_objectTable[incrust.objIdx];
const byte *data = g_cine->_animDataTable[obj.frame].data();
int x, y, width, height;
@@ -218,7 +219,9 @@ void FWRenderer::drawSprite(const ObjectStruct &obj) {
* Draw color sprite on background
* @param obj Object info
*/
-void FWRenderer::incrustSprite(const ObjectStruct &obj) {
+void FWRenderer::incrustSprite(const BGIncrust &incrust) {
+ const ObjectStruct &obj = g_cine->_objectTable[incrust.objIdx];
+
const byte *data = g_cine->_animDataTable[obj.frame].data();
const byte *mask = g_cine->_animDataTable[obj.frame].mask();
int x, y, width, height;
@@ -246,14 +249,16 @@ void FWRenderer::drawCommand() {
unsigned int i;
int x = 10, y = _cmdY;
- drawPlainBox(x, y, 301, 11, 0);
- drawBorder(x - 1, y - 1, 302, 12, 2);
+ if(disableSystemMenu == 0) {
+ drawPlainBox(x, y, 301, 11, 0);
+ drawBorder(x - 1, y - 1, 302, 12, 2);
- x += 2;
- y += 2;
+ x += 2;
+ y += 2;
- for (i = 0; i < _cmd.size(); i++) {
- x = drawChar(_cmd[i], x, y);
+ for (i = 0; i < _cmd.size(); i++) {
+ x = drawChar(_cmd[i], x, y);
+ }
}
}
@@ -298,10 +303,11 @@ void FWRenderer::drawMessage(const char *str, int x, int y, int width, int color
for (i = 0; str[i]; i++, line--) {
// Fit line of text into textbox
if (!line) {
- while (str[i] == ' ') i++;
+ while (str[i] == ' ')
+ i++;
line = fitLine(str + i, tw, words, cw);
- if (str[i + line] != '\0' && str[i + line] != 0x7C && words) {
+ if ( str[i + line] != '\0' && str[i + line] != 0x7C && words) {
space = (tw - cw) / words;
extraSpace = (tw - cw) % words;
} else {
@@ -1119,7 +1125,8 @@ void OSRenderer::clear() {
* @param obj Object info
* @param fillColor Sprite color
*/
-void OSRenderer::incrustMask(const ObjectStruct &obj, uint8 color) {
+void OSRenderer::incrustMask(const BGIncrust &incrust, uint8 color) {
+ const ObjectStruct &obj = g_cine->_objectTable[incrust.objIdx];
const byte *data = g_cine->_animDataTable[obj.frame].data();
int x, y, width, height;
@@ -1154,15 +1161,16 @@ void OSRenderer::drawSprite(const ObjectStruct &obj) {
* Draw color sprite
* @param obj Object info
*/
-void OSRenderer::incrustSprite(const ObjectStruct &obj) {
- const byte *data = g_cine->_animDataTable[obj.frame].data();
+void OSRenderer::incrustSprite(const BGIncrust &incrust) {
+ const ObjectStruct &obj = g_cine->_objectTable[incrust.objIdx];
+ const byte *data = g_cine->_animDataTable[incrust.frame].data();
int x, y, width, height, transColor;
- x = obj.x;
- y = obj.y;
+ x = incrust.x;
+ y = incrust.y;
transColor = obj.part;
- width = g_cine->_animDataTable[obj.frame]._realWidth;
- height = g_cine->_animDataTable[obj.frame]._height;
+ width = g_cine->_animDataTable[incrust.frame]._realWidth;
+ height = g_cine->_animDataTable[incrust.frame]._height;
if (_bgTable[_currentBg].bg) {
drawSpriteRaw2(data, transColor, width, height, _bgTable[_currentBg].bg, x, y);
@@ -1416,7 +1424,7 @@ void OSRenderer::selectBg(unsigned int idx) {
if (_bgTable[idx].bg) {
assert(_bgTable[idx].pal.isValid() && !(_bgTable[idx].pal.empty()));
- _currentBg = idx;
+ _currentBg = idx;
} else
warning("OSRenderer::selectBg(%d) - attempt to select null background", idx);
reloadPalette();
@@ -1742,23 +1750,23 @@ void OSRenderer::drawSprite(overlay *overlayPtr, const byte *spritePtr, int16 wi
// draw the mask based on next objects in the list
Common::List<overlay>::iterator it;
- for (it = g_cine->_overlayList.begin(); it != g_cine->_overlayList.end(); ++it) {
- if (&(*it) == overlayPtr) {
+ for (it = g_cine->_overlayList.begin(); it != g_cine->_overlayList.end(); ++it) {
+ if(&(*it) == overlayPtr) {
break;
}
}
- while (it != g_cine->_overlayList.end()) {
+ while(it != g_cine->_overlayList.end()) {
overlay *pCurrentOverlay = &(*it);
if ((pCurrentOverlay->type == 5) || ((pCurrentOverlay->type == 21) && (pCurrentOverlay->x == overlayPtr->objIdx))) {
AnimData *sprite = &g_cine->_animDataTable[g_cine->_objectTable[it->objIdx].frame];
if (pMask == NULL) {
- pMask = new byte[width * height];
+ pMask = new byte[width*height];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
- byte spriteColor = spritePtr[width * i + j];
+ byte spriteColor= spritePtr[width * i + j];
pMask[width * i + j] = spriteColor;
}
}
@@ -1769,7 +1777,7 @@ void OSRenderer::drawSprite(overlay *overlayPtr, const byte *spritePtr, int16 wi
int inMaskX = (g_cine->_objectTable[it->objIdx].x + i) - x;
int inMaskY = (g_cine->_objectTable[it->objIdx].y + j) - y;
- if (inMaskX >= 0 && inMaskX < width) {
+ if (inMaskX >=0 && inMaskX < width) {
if (inMaskY >= 0 && inMaskY < height) {
if (sprite->_bpp == 1) {
if (!sprite->getColor(i, j)) {
@@ -1780,23 +1788,27 @@ void OSRenderer::drawSprite(overlay *overlayPtr, const byte *spritePtr, int16 wi
}
}
}
-
-
}
it++;
}
// now, draw with the mask we created
- if (pMask) {
+ if(pMask) {
spritePtr = pMask;
}
+
+ // ignore transparent color in 1bpp
+ if (bpp == 1) {
+ transparentColor = 1;
+ }
+
{
for (int i = 0; i < height; i++) {
byte *destPtr = page + x + y * 320;
destPtr += i * 320;
for (int j = 0; j < width; j++) {
- byte color = *(spritePtr++);
+ byte color= *(spritePtr++);
if ((transparentColor != color) && x + j >= 0 && x + j < 320 && i + y >= 0 && i + y < 200) {
*(destPtr++) = color;
} else {
diff --git a/engines/cine/gfx.h b/engines/cine/gfx.h
index 6ff5b08b77..3434cf9fc2 100644
--- a/engines/cine/gfx.h
+++ b/engines/cine/gfx.h
@@ -27,6 +27,7 @@
#include "common/rect.h"
#include "common/stack.h"
#include "cine/object.h"
+#include "cine/bg_list.h"
namespace Cine {
@@ -177,8 +178,8 @@ public:
void drawFrame();
void setCommand(Common::String cmd);
- virtual void incrustMask(const ObjectStruct &obj, uint8 color = 0);
- virtual void incrustSprite(const ObjectStruct &obj);
+ virtual void incrustMask(const BGIncrust &incrust, uint8 color = 0);
+ virtual void incrustSprite(const BGIncrust &incrust);
virtual void loadBg16(const byte *bg, const char *name, unsigned int idx = 0);
virtual void loadCt16(const byte *ct, const char *name);
@@ -239,8 +240,8 @@ public:
void clear();
- void incrustMask(const ObjectStruct &obj, uint8 color = 0);
- void incrustSprite(const ObjectStruct &obj);
+ void incrustMask(const BGIncrust &incrust, uint8 color = 0);
+ void incrustSprite(const BGIncrust &incrust);
void loadBg16(const byte *bg, const char *name, unsigned int idx = 0);
void loadCt16(const byte *ct, const char *name);
diff --git a/engines/cine/main_loop.cpp b/engines/cine/main_loop.cpp
index 971830ce8f..f13f38a45e 100644
--- a/engines/cine/main_loop.cpp
+++ b/engines/cine/main_loop.cpp
@@ -56,6 +56,12 @@ static void processEvent(Common::Event &event) {
case Common::EVENT_RBUTTONDOWN:
mouseRight = 1;
break;
+ case Common::EVENT_LBUTTONUP:
+ mouseLeft = 0;
+ break;
+ case Common::EVENT_RBUTTONUP:
+ mouseRight = 0;
+ break;
case Common::EVENT_MOUSEMOVE:
break;
case Common::EVENT_KEYDOWN:
@@ -115,7 +121,7 @@ static void processEvent(Common::Event &event) {
}
break;
case Common::KEYCODE_F10:
- if (!disableSystemMenu && !inMenu) {
+ if (!inMenu) {
g_cine->makeSystemMenu();
}
break;
@@ -214,8 +220,6 @@ void manageEvents() {
g_sound->update();
mouseData.left = mouseLeft;
mouseData.right = mouseRight;
- mouseLeft = 0;
- mouseRight = 0;
}
void getMouseData(uint16 param, uint16 *pButton, uint16 *pX, uint16 *pY) {
@@ -311,6 +315,7 @@ void CineEngine::mainLoop(int bootScriptIdx) {
// HACK: Force amount of oxygen left to maximum during Operation Stealth's first arcade sequence.
// This makes it possible to pass the arcade sequence for now.
// FIXME: Remove the hack and make the first arcade sequence normally playable.
+ /*
if (g_cine->getGameType() == Cine::GType_OS) {
Common::String bgName(renderer->getBgName());
// Check if the background is one of the three backgrounds
@@ -320,7 +325,7 @@ void CineEngine::mainLoop(int bootScriptIdx) {
// Force the amount of oxygen left to the maximum.
g_cine->_objectTable[oxygenObjNum].x = maxOxygen;
}
- }
+ }*/
// HACK: In Operation Stealth after the first arcade sequence jump player's position to avoid getting stuck.
// After the first arcade sequence the player comes up stairs from
@@ -379,8 +384,8 @@ void CineEngine::mainLoop(int bootScriptIdx) {
playerAction = false;
_messageLen <<= 3;
- if (_messageLen < 0x800)
- _messageLen = 0x800;
+ if (_messageLen < 800)
+ _messageLen = 800;
do {
manageEvents();
diff --git a/engines/cine/saveload.cpp b/engines/cine/saveload.cpp
index 223099a587..20952eea52 100644
--- a/engines/cine/saveload.cpp
+++ b/engines/cine/saveload.cpp
@@ -991,7 +991,7 @@ void CineEngine::makeSave(char *saveFileName) {
* at a time.
*/
void loadResourcesFromSave(Common::SeekableReadStream &fHandle, enum CineSaveGameFormat saveGameFormat) {
- int16 currentAnim, foundFileIdx;
+ int16 foundFileIdx;
char *animName, part[256], name[10];
strcpy(part, currentPartName);
@@ -1001,10 +1001,10 @@ void loadResourcesFromSave(Common::SeekableReadStream &fHandle, enum CineSaveGam
const int entrySize = ((saveGameFormat == ANIMSIZE_23) ? 23 : 30);
const int fileStartPos = fHandle.pos();
- currentAnim = 0;
- while (currentAnim < NUM_MAX_ANIMDATA) {
+
+ for(int resourceIndex=0; resourceIndex<NUM_MAX_ANIMDATA; resourceIndex++) {
// Seek to the start of the current animation's entry
- fHandle.seek(fileStartPos + currentAnim * entrySize);
+ fHandle.seek(fileStartPos + resourceIndex * entrySize);
// Read in the current animation entry
fHandle.readUint16BE(); // width
fHandle.readUint16BE();
@@ -1019,7 +1019,7 @@ void loadResourcesFromSave(Common::SeekableReadStream &fHandle, enum CineSaveGam
}
foundFileIdx = fHandle.readSint16BE();
- fHandle.readSint16BE(); // frame
+ int16 frameIndex = fHandle.readSint16BE(); // frame
fHandle.read(name, 10);
// Handle variables only present in animation entries of size 23
@@ -1029,7 +1029,7 @@ void loadResourcesFromSave(Common::SeekableReadStream &fHandle, enum CineSaveGam
// Don't try to load invalid entries.
if (foundFileIdx < 0 || !validPtr) {
- currentAnim++; // Jump over the invalid entry
+ //resourceIndex++; // Jump over the invalid entry
continue;
}
@@ -1041,9 +1041,7 @@ void loadResourcesFromSave(Common::SeekableReadStream &fHandle, enum CineSaveGam
animName = g_cine->_partBuffer[foundFileIdx].partName;
loadRelatedPalette(animName); // Is this for Future Wars only?
- const int16 prevAnim = currentAnim;
- currentAnim = loadResource(animName, currentAnim);
- assert(currentAnim > prevAnim); // Make sure we advance forward
+ loadResource(animName, resourceIndex, frameIndex);
}
loadPart(part);
diff --git a/engines/cine/script_fw.cpp b/engines/cine/script_fw.cpp
index 66150cc5b2..9cbe3c3fab 100644
--- a/engines/cine/script_fw.cpp
+++ b/engines/cine/script_fw.cpp
@@ -533,7 +533,6 @@ void RawScript::setData(const FWScriptInfo &info, const byte *data) {
* @return Precalculated script labels
*/
const ScriptVars &RawScript::labels() const {
- assert(_data);
return _labels;
}
@@ -687,7 +686,7 @@ const char *FWScript::getNextString() {
* @param pos Restored script position
*/
void FWScript::load(const ScriptVars &labels, const ScriptVars &local, uint16 compare, uint16 pos) {
- assert(pos < _script._size);
+ assert(pos <= _script._size);
_labels = labels;
_localVars = local;
_compare = compare;
@@ -705,13 +704,15 @@ void FWScript::load(const ScriptVars &labels, const ScriptVars &local, uint16 co
int FWScript::execute() {
int ret = 0;
- while (!ret) {
- _line = _pos;
- byte opcode = getNextByte();
- OpFunc handler = _info->opcodeHandler(opcode);
+ if(_script._size) {
+ while (!ret) {
+ _line = _pos;
+ byte opcode = getNextByte();
+ OpFunc handler = _info->opcodeHandler(opcode);
- if (handler) {
- ret = (this->*handler)();
+ if (handler) {
+ ret = (this->*handler)();
+ }
}
}
@@ -1861,7 +1862,7 @@ int FWScript::o1_disableSystemMenu() {
byte param = getNextByte();
debugC(5, kCineDebugScript, "Line: %d: disableSystemMenu(%d)", _line, param);
- disableSystemMenu = (param != 0);
+ disableSystemMenu = param;
return 0;
}
diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp
index 9b73ae1101..eccd71cf05 100644
--- a/engines/cine/various.cpp
+++ b/engines/cine/various.cpp
@@ -36,7 +36,7 @@
namespace Cine {
-bool disableSystemMenu = false;
+int16 disableSystemMenu = 0;
bool inMenu;
int16 commandVar3[4];
@@ -341,7 +341,7 @@ void CineEngine::makeSystemMenu() {
int16 mouseX, mouseY, mouseButton;
int16 selectedSave;
- if (!disableSystemMenu) {
+ if (disableSystemMenu != 1) {
inMenu = true;
do {
@@ -544,14 +544,16 @@ int16 buildObjectListCommand(int16 param) {
int16 selectSubObject(int16 x, int16 y, int16 param) {
int16 listSize = buildObjectListCommand(param);
- int16 selectedObject;
+ int16 selectedObject = -1;
bool osExtras = g_cine->getGameType() == Cine::GType_OS;
if (!listSize) {
return -2;
}
- selectedObject = makeMenuChoice(objectListCommand, listSize, x, y, 140, osExtras);
+ if (disableSystemMenu == 0) {
+ selectedObject = makeMenuChoice(objectListCommand, listSize, x, y, 140, osExtras);
+ }
if (selectedObject == -1)
return -1;
@@ -691,9 +693,6 @@ int16 makeMenuChoice(const CommandeType commandList[], uint16 height, uint16 X,
int16 var_4;
SelectionMenu *menu;
- if (disableSystemMenu)
- return -1;
-
paramY = (height * 9) + 10;
if (X + width > 319) {
@@ -810,14 +809,18 @@ void makeActionMenu() {
getMouseData(mouseUpdateStatus, &mouseButton, &mouseX, &mouseY);
if (g_cine->getGameType() == Cine::GType_OS) {
- playerCommand = makeMenuChoice(defaultActionCommand, 6, mouseX, mouseY, 70, true);
+ if(disableSystemMenu == 0) {
+ playerCommand = makeMenuChoice(defaultActionCommand, 6, mouseX, mouseY, 70, true);
+ }
if (playerCommand >= 8000) {
playerCommand -= 8000;
canUseOnObject = canUseOnItemTable[playerCommand];
}
} else {
- playerCommand = makeMenuChoice(defaultActionCommand, 6, mouseX, mouseY, 70);
+ if(disableSystemMenu == 0) {
+ playerCommand = makeMenuChoice(defaultActionCommand, 6, mouseX, mouseY, 70);
+ }
}
inMenu = false;
diff --git a/engines/cine/various.h b/engines/cine/various.h
index 0c1883c323..813619816d 100644
--- a/engines/cine/various.h
+++ b/engines/cine/various.h
@@ -41,7 +41,7 @@ void makeActionMenu();
void waitPlayerInput();
void setTextWindow(uint16 param1, uint16 param2, uint16 param3, uint16 param4);
-extern bool disableSystemMenu;
+extern int16 disableSystemMenu;
extern bool inMenu;
extern CommandeType currentSaveName[10];
diff --git a/engines/saga/shorten.cpp b/engines/saga/shorten.cpp
index 5efc8d1f67..69c27b6a6b 100644
--- a/engines/saga/shorten.cpp
+++ b/engines/saga/shorten.cpp
@@ -519,9 +519,6 @@ byte *loadShortenFromStream(Common::ReadStream &stream, int &size, int &rate, by
if (maxLPC > 0)
free(lpc);
- if (size > 0)
- free(unpackedBuffer);
-
delete gReader;
return unpackedBuffer;
}
diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp
index 123dd21894..528bb51393 100644
--- a/engines/sci/sound/audio.cpp
+++ b/engines/sci/sound/audio.cpp
@@ -67,7 +67,8 @@ int AudioPlayer::startAudio(uint16 module, uint32 number) {
if (audioStream) {
_wPlayFlag = false;
- _mixer->playStream(Audio::Mixer::kSpeechSoundType, &_audioHandle, audioStream);
+ Audio::Mixer::SoundType soundType = (module == 65535) ? Audio::Mixer::kSFXSoundType : Audio::Mixer::kSpeechSoundType;
+ _mixer->playStream(soundType, &_audioHandle, audioStream);
return sampleLen;
} else {
// Don't throw a warning in this case. getAudioStream() already has. Some games
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index cbb5cab4fe..5d32f40f18 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -96,7 +96,7 @@ void SoundCommandParser::initSoundResource(MusicEntry *newSound) {
if (_useDigitalSFX || !newSound->soundRes) {
int sampleLen;
newSound->pStreamAud = _audio->getAudioStream(newSound->resourceId, 65535, &sampleLen);
- newSound->soundType = Audio::Mixer::kSpeechSoundType;
+ newSound->soundType = Audio::Mixer::kSFXSoundType;
}
}
@@ -367,29 +367,36 @@ reg_t SoundCommandParser::kDoSoundFade(int argc, reg_t *argv, reg_t acc) {
case 4: // SCI01+
case 5: // SCI1+ (SCI1 late sound scheme), with fade and continue
- musicSlot->fadeTo = CLIP<uint16>(argv[1].toUint16(), 0, MUSIC_VOLUME_MAX);
- // Check if the song is already at the requested volume. If it is, don't
- // perform any fading. Happens for example during the intro of Longbow.
- if (musicSlot->fadeTo == musicSlot->volume)
- return acc;
-
- // sometimes we get objects in that position, fix it up (ffs. workarounds)
- if (!argv[1].getSegment())
- musicSlot->fadeStep = volume > musicSlot->fadeTo ? -argv[3].toUint16() : argv[3].toUint16();
- else
- musicSlot->fadeStep = volume > musicSlot->fadeTo ? -5 : 5;
- musicSlot->fadeTickerStep = argv[2].toUint16() * 16667 / _music->soundGetTempo();
- musicSlot->fadeTicker = 0;
-
if (argc == 5) {
// TODO: We currently treat this argument as a boolean, but may
// have to handle different non-zero values differently. (e.g.,
- // some KQ6 scripts pass 3 here)
- musicSlot->stopAfterFading = (argv[4].toUint16() != 0);
+ // some KQ6 scripts pass 3 here).
+ // There is a script bug in KQ6, room 460 (the room with the flying
+ // books). An object is passed here, which should not be treated as
+ // a true flag. Fixes bugs #3555404 and #3291115.
+ musicSlot->stopAfterFading = (argv[4].isNumber() && argv[4].toUint16() != 0);
} else {
musicSlot->stopAfterFading = false;
}
+ musicSlot->fadeTo = CLIP<uint16>(argv[1].toUint16(), 0, MUSIC_VOLUME_MAX);
+ // Check if the song is already at the requested volume. If it is, don't
+ // perform any fading. Happens for example during the intro of Longbow.
+ if (musicSlot->fadeTo != musicSlot->volume) {
+ // sometimes we get objects in that position, fix it up (ffs. workarounds)
+ if (!argv[1].getSegment())
+ musicSlot->fadeStep = volume > musicSlot->fadeTo ? -argv[3].toUint16() : argv[3].toUint16();
+ else
+ musicSlot->fadeStep = volume > musicSlot->fadeTo ? -5 : 5;
+ musicSlot->fadeTickerStep = argv[2].toUint16() * 16667 / _music->soundGetTempo();
+ } else {
+ // Stop the music, if requested. Fixes bug #3555404.
+ if (musicSlot->stopAfterFading)
+ processStopSound(obj, false);
+ }
+
+ musicSlot->fadeTicker = 0;
+
// WORKAROUND/HACK: In the labyrinth in KQ6, when falling in the pit and
// lighting the lantern, the game scripts perform a fade in of the game
// music, but set it to stop after fading. Remove that flag here. This is
diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp
index 87305921c9..5404c7f8b1 100644
--- a/engines/scumm/detection.cpp
+++ b/engines/scumm/detection.cpp
@@ -20,9 +20,6 @@
*
*/
-// FIXME: Avoid using printf
-#define FORBIDDEN_SYMBOL_EXCEPTION_printf
-
#include "base/plugins.h"
#include "common/archive.h"
@@ -1066,15 +1063,19 @@ Common::Error ScummMetaEngine::createInstance(OSystem *syst, Engine **engine) co
// unknown MD5, or with a medium debug level in case of a known MD5 (for
// debugging purposes).
if (!findInMD5Table(res.md5.c_str())) {
- printf("Your game version appears to be unknown. If this is *NOT* a fan-modified\n");
- printf("version (in particular, not a fan-made translation), please, report the\n");
- printf("following data to the ScummVM team along with name of the game you tried\n");
- printf("to add and its version/language/etc.:\n");
+ Common::String md5Warning;
+
+ md5Warning = "Your game version appears to be unknown. If this is *NOT* a fan-modified\n";
+ md5Warning += "version (in particular, not a fan-made translation), please, report the\n";
+ md5Warning += "following data to the ScummVM team along with name of the game you tried\n";
+ md5Warning += "to add and its version/language/etc.:\n";
- printf(" SCUMM gameid '%s', file '%s', MD5 '%s'\n\n",
+ md5Warning += Common::String::format(" SCUMM gameid '%s', file '%s', MD5 '%s'\n\n",
res.game.gameid,
generateFilenameForDetection(res.fp.pattern, res.fp.genMethod).c_str(),
res.md5.c_str());
+
+ g_system->logMessage(LogMessageType::kWarning, md5Warning.c_str());
} else {
debug(1, "Using MD5 '%s'", res.md5.c_str());
}
diff --git a/engines/sword25/sfx/soundengine.cpp b/engines/sword25/sfx/soundengine.cpp
index 78b2db19eb..69fae3dc4e 100644
--- a/engines/sword25/sfx/soundengine.cpp
+++ b/engines/sword25/sfx/soundengine.cpp
@@ -239,16 +239,20 @@ void SoundEngine::setSoundVolume(uint handle, float volume) {
debugC(1, kDebugSound, "SoundEngine::setSoundVolume(%d, %f)", handle, volume);
SndHandle* sndHandle = findHandle(handle);
- if (sndHandle != NULL)
+ if (sndHandle != NULL) {
+ sndHandle->volume = volume;
_mixer->setChannelVolume(sndHandle->handle, (byte)(volume * 255));
+ }
}
void SoundEngine::setSoundPanning(uint handle, float pan) {
debugC(1, kDebugSound, "SoundEngine::setSoundPanning(%d, %f)", handle, pan);
SndHandle* sndHandle = findHandle(handle);
- if (sndHandle != NULL)
+ if (sndHandle != NULL) {
+ sndHandle->pan = pan;
_mixer->setChannelBalance(sndHandle->handle, (int8)(pan * 127));
+ }
}
void SoundEngine::pauseSound(uint handle) {
@@ -324,13 +328,16 @@ bool SoundEngine::canLoadResource(const Common::String &fileName) {
return fname.hasSuffix(".ogg");
}
-
- bool SoundEngine::persist(OutputPersistenceBlock &writer) {
+bool SoundEngine::persist(OutputPersistenceBlock &writer) {
writer.write(_maxHandleId);
for (uint i = 0; i < SOUND_HANDLES; i++) {
writer.write(_handles[i].id);
+ // Don't restart sounds which already finished playing.
+ if (_handles[i].type != kFreeHandle && !_mixer->isSoundHandleActive(_handles[i].handle))
+ _handles[i].type = kFreeHandle;
+
writer.writeString(_handles[i].fileName);
writer.write((int)_handles[i].sndType);
writer.write(_handles[i].volume);
@@ -374,7 +381,8 @@ bool SoundEngine::unpersist(InputPersistenceBlock &reader) {
reader.read(layer);
if (reader.isGood()) {
- playSoundEx(fileName, (SOUND_TYPES)sndType, volume, pan, loop, loopStart, loopEnd, layer, i);
+ if (sndType != kFreeHandle)
+ playSoundEx(fileName, (SOUND_TYPES)sndType, volume, pan, loop, loopStart, loopEnd, layer, i);
} else
return false;
}
diff --git a/engines/sword25/util/pluto/pluto.cpp b/engines/sword25/util/pluto/pluto.cpp
index d645e5ed2a..b7f5e30340 100644
--- a/engines/sword25/util/pluto/pluto.cpp
+++ b/engines/sword25/util/pluto/pluto.cpp
@@ -895,10 +895,10 @@ static void unpersistnumber(UnpersistInfo *upi)
static void unpersiststring(UnpersistInfo *upi)
{
/* perms reftbl sptbl ref */
- int length;
+ size_t length;
char* string;
lua_checkstack(upi->L, 1);
- verify(LIF(Z,read)(&upi->zio, &length, sizeof(int)) == 0);
+ verify(LIF(Z,read)(&upi->zio, &length, sizeof(size_t)) == 0);
string = pdep_newvector(upi->L, length, char);
verify(LIF(Z,read)(&upi->zio, string, length) == 0);
lua_pushlstring(upi->L, string, length);
diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp
index d1a66dc28a..850dfcc78f 100644
--- a/gui/saveload-dialog.cpp
+++ b/gui/saveload-dialog.cpp
@@ -535,7 +535,7 @@ const Common::String &SaveLoadChooserGrid::getResultString() const {
}
void SaveLoadChooserGrid::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
- if (cmd <= _entriesPerPage) {
+ if (cmd <= _entriesPerPage && cmd + _curPage * _entriesPerPage <= _saveList.size()) {
const SaveStateDescriptor &desc = _saveList[cmd - 1 + _curPage * _entriesPerPage];
if (_saveMode) {
diff --git a/gui/themes/translations.dat b/gui/themes/translations.dat
index cabad0c0c4..d81c1a0475 100644
--- a/gui/themes/translations.dat
+++ b/gui/themes/translations.dat
Binary files differ
diff --git a/po/hu_HU.po b/po/hu_HU.po
index a34138c1bf..b263d2c539 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.sf.net\n"
"POT-Creation-Date: 2012-08-12 14:57+0200\n"
-"PO-Revision-Date: 2012-07-09 05:58+0100\n"
+"PO-Revision-Date: 2012-08-14 07:29+0100\n"
"Last-Translator: George Kormendi <grubycza@hotmail.com>\n"
"Language-Team: Hungarian\n"
"Language: Magyar\n"
@@ -921,11 +921,11 @@ msgstr ""
#: gui/saveload-dialog.cpp:158
msgid "List view"
-msgstr ""
+msgstr "Lista nézet"
#: gui/saveload-dialog.cpp:159
msgid "Grid view"
-msgstr ""
+msgstr "Rács nézet"
#: gui/saveload-dialog.cpp:202 gui/saveload-dialog.cpp:350
msgid "No date saved"
@@ -965,31 +965,28 @@ msgstr "Névtelen játékállás"
#: gui/saveload-dialog.cpp:517
msgid "Next"
-msgstr ""
+msgstr "Következő"
#: gui/saveload-dialog.cpp:520
msgid "Prev"
-msgstr ""
+msgstr "Előző"
#: gui/saveload-dialog.cpp:684
-#, fuzzy
msgid "New Save"
-msgstr "Mentés"
+msgstr "Új Mentés"
#: gui/saveload-dialog.cpp:684
-#, fuzzy
msgid "Create a new save game"
-msgstr "Játék mentés nem sikerült"
+msgstr "Új játékmentés készítése"
#: gui/saveload-dialog.cpp:789
-#, fuzzy
msgid "Name: "
msgstr "Név:"
#: gui/saveload-dialog.cpp:861
#, c-format
msgid "Enter a description for slot %d:"
-msgstr ""
+msgstr "Adj meg egy leírást a %d slothoz:"
#: gui/themebrowser.cpp:44
msgid "Select a Theme"
@@ -2230,12 +2227,11 @@ msgstr ""
#: engines/queen/queen.cpp:59
msgid "Alternative intro"
-msgstr ""
+msgstr "Alternatív intro"
#: engines/queen/queen.cpp:60
-#, fuzzy
msgid "Use an alternative game intro (CD version only)"
-msgstr "A floppy verzió intro használata (csak CD verziónál)"
+msgstr "Alternatív játékintro használata (csak CD verziónál)"
#: engines/sky/compact.cpp:130
msgid ""
@@ -2336,13 +2332,15 @@ msgstr "Tárgycimke látható ha az egér felette van"
#: engines/teenagent/resources.cpp:68
msgid ""
"You're missing the 'teenagent.dat' file. Get it from the ScummVM website"
-msgstr ""
+msgstr "Hiányzik a 'teenagent.dat' fájl. Szerezd be a ScummVM website-ról"
#: engines/teenagent/resources.cpp:89
msgid ""
"The teenagent.dat file is compressed and zlib hasn't been included in this "
"executable. Please decompress it"
msgstr ""
+"A teenagent.dat fájl tömörített és a zlib nem része ennek a futtatható "
+"állománynak. Kérlek tömörítsd ki"
#: engines/parallaction/saveload.cpp:133
#, c-format
diff --git a/po/pl_PL.po b/po/pl_PL.po
index c2c5c09e19..1bf44d1a66 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -1,14 +1,14 @@
# Polish translation for ScummVM.
# Copyright (C) 2010-2012 ScummVM Team
# This file is distributed under the same license as the ScummVM package.
-# Grajpopolsku.pl <grajpopolsku@gmail.com>, 2011.
+# Grajpopolsku.pl <grajpopolsku@gmail.com>, 2011-2012.
#
msgid ""
msgstr ""
"Project-Id-Version: ScummVM 1.3.0\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.sf.net\n"
"POT-Creation-Date: 2012-08-12 14:57+0200\n"
-"PO-Revision-Date: 2011-10-24 21:14+0100\n"
+"PO-Revision-Date: 2012-07-29 15:49+0100\n"
"Last-Translator: Michał Ziąbkowski <mziab@o2.pl>\n"
"Language-Team: Grajpopolsku.pl <grajpopolsku@gmail.com>\n"
"Language: Polski\n"
@@ -82,7 +82,6 @@ msgid "Remap keys"
msgstr "Dostosuj klawisze"
#: gui/gui-manager.cpp:129 base/main.cpp:307
-#, fuzzy
msgid "Toggle FullScreen"
msgstr "Włącz/wyłącz pełny ekran"
@@ -196,9 +195,8 @@ msgid "Platform:"
msgstr "Platforma:"
#: gui/launcher.cpp:231
-#, fuzzy
msgid "Engine"
-msgstr "Zbadaj"
+msgstr "Silnik"
#: gui/launcher.cpp:239 gui/options.cpp:1062 gui/options.cpp:1079
msgid "Graphics"
@@ -1197,19 +1195,18 @@ msgstr ""
"sprawdź plik README."
#: engines/dialogs.cpp:228
-#, fuzzy, c-format
+#, c-format
msgid ""
"Gamestate save failed (%s)! Please consult the README for basic information, "
"and for instructions on how to obtain further assistance."
msgstr ""
-"Przepraszamy, ten silnik obecnie nie oferuje pomocy wewnątrz gry. Aby "
-"uzyskać podstawowe informacje oraz dowiedzieć jak szukać dalszej pomocy, "
-"sprawdź plik README."
+"Zapis stanu gry nie powiódł się (%s)! Aby uzyskać podstawowe informacje oraz "
+"dowiedzieć jak szukać dalszej pomocy, sprawdź plik README."
#: engines/dialogs.cpp:301 engines/mohawk/dialogs.cpp:109
#: engines/mohawk/dialogs.cpp:174
msgid "~O~K"
-msgstr "~O~K"
+msgstr ""
#: engines/dialogs.cpp:302 engines/mohawk/dialogs.cpp:110
#: engines/mohawk/dialogs.cpp:175
@@ -1261,14 +1258,13 @@ msgstr ""
"Dalsze informacje są dostępne w pliku README."
#: engines/engine.cpp:426
-#, fuzzy, c-format
+#, c-format
msgid ""
"Gamestate load failed (%s)! Please consult the README for basic information, "
"and for instructions on how to obtain further assistance."
msgstr ""
-"Przepraszamy, ten silnik obecnie nie oferuje pomocy wewnątrz gry. Aby "
-"uzyskać podstawowe informacje oraz dowiedzieć jak szukać dalszej pomocy, "
-"sprawdź plik README."
+"Odczyt stanu gry nie powiódł się (%s)! Aby uzyskać podstawowe informacje "
+"oraz dowiedzieć jak szukać dalszej pomocy, sprawdź plik README."
#: engines/engine.cpp:439
msgid ""
@@ -1287,12 +1283,12 @@ msgstr "Włącz mimo tego"
#: engines/agi/detection.cpp:145 engines/dreamweb/detection.cpp:47
#: engines/sci/detection.cpp:390
msgid "Use original save/load screens"
-msgstr ""
+msgstr "Użyj oryginalnych ekranów odczytu/zapisu"
#: engines/agi/detection.cpp:146 engines/dreamweb/detection.cpp:48
#: engines/sci/detection.cpp:391
msgid "Use the original save/load screens, instead of the ScummVM ones"
-msgstr ""
+msgstr "Użyj oryginalnych ekranów odczytu/zapisu zamiast tych ze ScummVM"
#: engines/agi/saveload.cpp:816 engines/sci/engine/kfile.cpp:838
msgid "Restore game:"
@@ -1303,68 +1299,68 @@ msgid "Restore"
msgstr "Wznów"
#: engines/dreamweb/detection.cpp:57
-#, fuzzy
msgid "Use bright palette mode"
-msgstr "Przedmiot u góry, z prawej"
+msgstr "Użyj trybu jasnej palety"
#: engines/dreamweb/detection.cpp:58
msgid "Display graphics using the game's bright palette"
-msgstr ""
+msgstr "Wyświetlaj grafikę za pomocą jasnej palety gry"
#: engines/sci/detection.cpp:370
msgid "EGA undithering"
msgstr "Anty-dithering EGA"
#: engines/sci/detection.cpp:371
-#, fuzzy
msgid "Enable undithering in EGA games"
msgstr "Włącz anty-dithering we wspieranych grach EGA"
#: engines/sci/detection.cpp:380
-#, fuzzy
msgid "Prefer digital sound effects"
-msgstr "Głośność efektów dźw."
+msgstr "Preferuj cyfrowe efekty dźwiękowe"
#: engines/sci/detection.cpp:381
msgid "Prefer digital sound effects instead of synthesized ones"
-msgstr ""
+msgstr "Preferuj cyfrowe efekty dźwiękowe zamiast syntezowanych"
#: engines/sci/detection.cpp:400
msgid "Use IMF/Yamaha FB-01 for MIDI output"
-msgstr ""
+msgstr "Użyj IMF/Yamaha FB-01 dla wyjścia MIDI"
#: engines/sci/detection.cpp:401
msgid ""
"Use an IBM Music Feature card or a Yamaha FB-01 FM synth module for MIDI "
"output"
msgstr ""
+"Użyj karty IBM Music Feature lub modułu syntezy FM Yamaha FB-01 dla wyjścia "
+"MIDI"
#: engines/sci/detection.cpp:411
msgid "Use CD audio"
-msgstr ""
+msgstr "Użyj CD audio"
#: engines/sci/detection.cpp:412
msgid "Use CD audio instead of in-game audio, if available"
-msgstr ""
+msgstr "Użyj CD audio zamiast muzyki w grze, jeśli jest dostępne"
#: engines/sci/detection.cpp:422
msgid "Use Windows cursors"
-msgstr ""
+msgstr "Użyj windowsowych kursorów"
#: engines/sci/detection.cpp:423
msgid ""
"Use the Windows cursors (smaller and monochrome) instead of the DOS ones"
msgstr ""
+"Użyj windowsowych kursorów (mniejsze i monochromatyczne) zamiast DOS-owych"
#: engines/sci/detection.cpp:433
-#, fuzzy
msgid "Use silver cursors"
-msgstr "Zwykły kursor"
+msgstr "Użyj srebrnych kursorów"
#: engines/sci/detection.cpp:434
msgid ""
"Use the alternate set of silver cursors, instead of the normal golden ones"
msgstr ""
+"Użyj alternatywnego zestawu srebrnych kursorów zamiast zwykłych złotych"
#: engines/scumm/dialogs.cpp:175
#, c-format
@@ -1482,24 +1478,23 @@ msgstr "Mowa i napisy"
#: engines/scumm/dialogs.cpp:653
msgid "Select a Proficiency Level."
-msgstr ""
+msgstr "Wybierz poziom umiejętności."
#: engines/scumm/dialogs.cpp:655
msgid "Refer to your Loom(TM) manual for help."
-msgstr ""
+msgstr "Pomocy szukaj w instrukcji dołączonej do Loom(TM)."
#: engines/scumm/dialogs.cpp:658
-#, fuzzy
msgid "Standard"
-msgstr "Standardowy (16bpp)"
+msgstr "Standardowy"
#: engines/scumm/dialogs.cpp:659
msgid "Practice"
-msgstr ""
+msgstr "Trening"
#: engines/scumm/dialogs.cpp:660
msgid "Expert"
-msgstr ""
+msgstr "Ekspert"
#: engines/scumm/help.cpp:73
msgid "Common keyboard commands:"
@@ -2118,118 +2113,109 @@ msgstr "Nie udało się zapisać stanu gry"
#. Malcolm makes a joke.
#: engines/kyra/detection.cpp:62
msgid "Studio audience"
-msgstr ""
+msgstr "Publiczność studyjna"
#: engines/kyra/detection.cpp:63
msgid "Enable studio audience"
-msgstr ""
+msgstr "Włącz publiczność studyjną"
#. I18N: This option allows the user to skip text and cutscenes.
#: engines/kyra/detection.cpp:73
msgid "Skip support"
-msgstr ""
+msgstr "Obsługa pomijania"
#: engines/kyra/detection.cpp:74
msgid "Allow text and cutscenes to be skipped"
-msgstr ""
+msgstr "Pozwól pomijać tekst i przerywniki"
#. I18N: Helium mode makes people sound like they've inhaled Helium.
#: engines/kyra/detection.cpp:84
msgid "Helium mode"
-msgstr ""
+msgstr "Tryb helowy"
#: engines/kyra/detection.cpp:85
-#, fuzzy
msgid "Enable helium mode"
-msgstr "Włącz tryb Roland GS"
+msgstr "Włącz tryb helowy"
#. I18N: When enabled, this option makes scrolling smoother when
#. changing from one screen to another.
#: engines/kyra/detection.cpp:99
msgid "Smooth scrolling"
-msgstr ""
+msgstr "Płynne przewijanie"
#: engines/kyra/detection.cpp:100
msgid "Enable smooth scrolling when walking"
-msgstr ""
+msgstr "Włącz płynne przewijanie przy chodzeniu"
#. I18N: When enabled, this option changes the cursor when it floats to the
#. edge of the screen to a directional arrow. The player can then click to
#. walk towards that direction.
#: engines/kyra/detection.cpp:112
-#, fuzzy
msgid "Floating cursors"
-msgstr "Zwykły kursor"
+msgstr "Pływające kursory"
#: engines/kyra/detection.cpp:113
msgid "Enable floating cursors"
-msgstr ""
+msgstr "Włącz pływające kursory"
#. I18N: HP stands for Hit Points
#: engines/kyra/detection.cpp:127
msgid "HP bar graphs"
-msgstr ""
+msgstr "Histogramy HP"
#: engines/kyra/detection.cpp:128
msgid "Enable hit point bar graphs"
-msgstr ""
+msgstr "Włącz histogramy punktów życia"
#: engines/kyra/lol.cpp:478
msgid "Attack 1"
-msgstr ""
+msgstr "Atak 1"
#: engines/kyra/lol.cpp:479
msgid "Attack 2"
-msgstr ""
+msgstr "Atak 2"
#: engines/kyra/lol.cpp:480
msgid "Attack 3"
-msgstr ""
+msgstr "Atak 3"
#: engines/kyra/lol.cpp:481
msgid "Move Forward"
-msgstr ""
+msgstr "Ruch naprzód"
#: engines/kyra/lol.cpp:482
msgid "Move Back"
-msgstr ""
+msgstr "Ruch wstecz"
#: engines/kyra/lol.cpp:483
msgid "Slide Left"
-msgstr ""
+msgstr "Ślizg w lewo"
#: engines/kyra/lol.cpp:484
-#, fuzzy
msgid "Slide Right"
-msgstr "W prawo"
+msgstr "Ślizg w prawo"
#: engines/kyra/lol.cpp:485
-#, fuzzy
msgid "Turn Left"
-msgstr "Wyłącz"
+msgstr "Obrót w lewo"
#: engines/kyra/lol.cpp:486
-#, fuzzy
msgid "Turn Right"
-msgstr "Kursor w prawo"
+msgstr "Obrót w prawo"
#: engines/kyra/lol.cpp:487
-#, fuzzy
msgid "Rest"
-msgstr "Wznów"
+msgstr "Odpoczynek"
#: engines/kyra/lol.cpp:488
-#, fuzzy
msgid "Options"
-msgstr "~O~pcje"
+msgstr "Opcje"
#: engines/kyra/lol.cpp:489
-#, fuzzy
msgid "Choose Spell"
-msgstr "Wybierz"
+msgstr "Wybierz zaklęcie"
#: engines/kyra/sound_midi.cpp:475
-#, fuzzy
msgid ""
"You appear to be using a General MIDI device,\n"
"but your game only supports Roland MT32 MIDI.\n"
@@ -2247,8 +2233,9 @@ msgid "Alternative intro"
msgstr ""
#: engines/queen/queen.cpp:60
+#, fuzzy
msgid "Use an alternative game intro (CD version only)"
-msgstr ""
+msgstr "Użyj intra z wersji dyskietkowej (tylko dla wersji CD)"
#: engines/sky/compact.cpp:130
msgid ""
@@ -2268,16 +2255,18 @@ msgstr ""
#: engines/sky/detection.cpp:44
msgid "Floppy intro"
-msgstr ""
+msgstr "Intro z wersji dyskietkowej"
#: engines/sky/detection.cpp:45
msgid "Use the floppy version's intro (CD version only)"
-msgstr ""
+msgstr "Użyj intra z wersji dyskietkowej (tylko dla wersji CD)"
#: engines/sword1/animation.cpp:539
#, c-format
msgid "PSX stream cutscene '%s' cannot be played in paletted mode"
msgstr ""
+"Przerywnik w formacie strumieniowym PSX '%s' nie może zostać odtworzony w "
+"trybie indeksowanym"
#: engines/sword1/animation.cpp:560 engines/sword2/animation.cpp:455
msgid "DXA cutscenes found but ScummVM has been built without zlib support"
@@ -2334,20 +2323,19 @@ msgid "This is the end of the Broken Sword 1 Demo"
msgstr "To koniec dema Broken Sword 1"
#: engines/sword2/animation.cpp:435
-#, fuzzy
msgid ""
"PSX cutscenes found but ScummVM has been built without RGB color support"
msgstr ""
-"Znaleziono przerywniki w formacie DXA, ale ScummVM jest skompilowany bez "
-"obsługi zlib"
+"Znaleziono przerywniki PSX, ale ScummVM jest skompilowany bez obsługi trybu "
+"RGB"
#: engines/sword2/sword2.cpp:79
msgid "Show object labels"
-msgstr ""
+msgstr "Pokaż etykiety obiektów"
#: engines/sword2/sword2.cpp:80
msgid "Show labels for objects on mouse hover"
-msgstr ""
+msgstr "Pokaż etykiety obiektów przy najechaniu myszką"
#: engines/teenagent/resources.cpp:68
msgid ""
@@ -2499,9 +2487,8 @@ msgid "Keymap:"
msgstr "Klawisze:"
#: backends/keymapper/remap-dialog.cpp:66
-#, fuzzy
msgid " (Effective)"
-msgstr " (Aktywny)"
+msgstr " (Działa)"
#: backends/keymapper/remap-dialog.cpp:106
msgid " (Active)"
@@ -2509,7 +2496,7 @@ msgstr " (Aktywny)"
#: backends/keymapper/remap-dialog.cpp:106
msgid " (Blocked)"
-msgstr ""
+msgstr " (Zablokowany)"
#: backends/keymapper/remap-dialog.cpp:119
msgid " (Global)"
@@ -2613,7 +2600,7 @@ msgstr "Tryb touchpada wyłączony."
#: backends/platform/maemo/maemo.cpp:209
msgid "Click Mode"
-msgstr ""
+msgstr "Tryb klikania"
#: backends/platform/maemo/maemo.cpp:215
#: backends/platform/symbian/src/SymbianActions.cpp:42
@@ -2624,9 +2611,8 @@ msgid "Left Click"
msgstr "Kliknięcie LPM"
#: backends/platform/maemo/maemo.cpp:218
-#, fuzzy
msgid "Middle Click"
-msgstr "Przedmiot na środku, z lewej"
+msgstr "Środkowy przycisk"
#: backends/platform/maemo/maemo.cpp:221
#: backends/platform/symbian/src/SymbianActions.cpp:43
diff --git a/ports.mk b/ports.mk
index 9a20331924..ed6781a1a9 100644
--- a/ports.mk
+++ b/ports.mk
@@ -96,6 +96,12 @@ ifdef USE_FLAC
OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libFLAC.a
endif
+ifdef USE_FLUIDSYNTH
+OSX_STATIC_LIBS += \
+ -framework CoreAudio \
+ $(STATICLIBPATH)/lib/libfluidsynth.a
+endif
+
ifdef USE_MAD
OSX_STATIC_LIBS += $(STATICLIBPATH)/lib/libmad.a
endif