Package: reminiscence
Version: 0.1.9-1
Severity: important
Tags: patch
On an amd64 debian, I can start the application, but each time I select
"start" in the menu, it crashes with the message: "Bad CRC for collision
data".
This bug is known and fixed in Gentoo, see
http://bugs.gentoo.org/show_bug.cgi?id=120787
I took part of their patch (see comment #5 in the above link) and
completed it to avoid a few compilation warnings.
-- System Information:
Debian Release: wheezy/sid
APT prefers testing
APT policy: (990, 'testing'), (600, 'stable'), (500, 'oldstable'), (300,
'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.36.3-fg
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8) (ignored: LC_ALL
set to fr_FR.UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages reminiscence depends on:
ii libc6 2.11.2-10 Embedded GNU C Library: Shared lib
ii libgcc1 1:4.4.5-10 GCC support library
ii libsdl1.2debian 1.2.14-6.1 Simple DirectMedia Layer
ii libstdc++6 4.4.5-10 The GNU Standard C++ Library v3
ii perl 5.10.1-17 Larry Wall's Practical Extraction
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime
reminiscence recommends no packages.
reminiscence suggests no packages.
-- no debconf information
-- debsums errors found:
debsums: changed file /usr/games/rs (from reminiscence package)
diff -r e133af627c1c game.cpp
--- a/game.cpp Tue Feb 15 23:39:22 2011 +0100
+++ b/game.cpp Wed Feb 16 01:15:23 2011 +0100
@@ -292,7 +292,7 @@ void Game::drawCurrentInventoryItem() {
void Game::showFinalScore() {
playCutscene(0x49);
char textBuf[50];
- sprintf(textBuf, "SCORE %08lu", _score);
+ sprintf(textBuf, "SCORE %08lu", (unsigned long)_score);
_vid.drawString(textBuf, (256 - strlen(textBuf) * 8) / 2, 40, 0xE5);
strcpy(textBuf, _menu._passwords[7][_skillLevel]);
_vid.drawString(textBuf, (256 - strlen(textBuf) * 8) / 2, 16, 0xE7);
@@ -425,7 +425,7 @@ bool Game::handleContinueAbort() {
_vid.drawString(str, (256 - strlen(str) * 8) / 2, 104, colors[0]);
str = _res.getMenuString(LocaleData::LI_04_ABORT);
_vid.drawString(str, (256 - strlen(str) * 8) / 2, 112, colors[1]);
- sprintf(textBuf, "SCORE %08lu", _score);
+ sprintf(textBuf, "SCORE %08lu", (unsigned long)_score);
_vid.drawString(textBuf, 64, 154, 0xE3);
if (_stub->_pi.dirMask & PlayerInput::DIR_UP) {
_stub->_pi.dirMask &= ~PlayerInput::DIR_UP;
@@ -1292,7 +1292,7 @@ void Game::handleInventory() {
}
} else {
char textBuf[50];
- sprintf(textBuf, "SCORE %08lu", _score);
+ sprintf(textBuf, "SCORE %08lu", (unsigned long)_score);
_vid.drawString(textBuf, (114 - strlen(textBuf) * 8) / 2 + 72, 158, 0xE5);
sprintf(textBuf, "%s:%s", _res.getMenuString(LocaleData::LI_06_LEVEL), _res.getMenuString(LocaleData::LI_13_EASY + _skillLevel));
_vid.drawString(textBuf, (114 - strlen(textBuf) * 8) / 2 + 72, 166, 0xE5);
diff -r e133af627c1c sys.h
--- a/sys.h Tue Feb 15 23:39:22 2011 +0100
+++ b/sys.h Wed Feb 16 01:15:23 2011 +0100
@@ -19,12 +19,14 @@
#ifndef __SYS_H__
#define __SYS_H__
-typedef unsigned char uint8;
-typedef signed char int8;
-typedef unsigned short uint16;
-typedef signed short int16;
-typedef unsigned long uint32;
-typedef signed long int32;
+#include <stdint.h>
+
+typedef uint8_t uint8;
+typedef int8_t int8;
+typedef uint16_t uint16;
+typedef int16_t int16;
+typedef uint32_t uint32;
+typedef int32_t int32;
inline uint16 READ_BE_UINT16(const void *ptr) {
const uint8 *b = (const uint8 *)ptr;