[Scummvm-cvs-logs] SF.net SVN: scummvm:[40908] scummvm/trunk/engines
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Tue May 26 13:30:24 CEST 2009
Revision: 40908
http://scummvm.svn.sourceforge.net/scummvm/?rev=40908&view=rev
Author: fingolfin
Date: 2009-05-26 11:30:21 +0000 (Tue, 26 May 2009)
Log Message:
-----------
Turned some static tables into static const tables; added some FIXME comments to global static vars that should be removed (many more exist in SCI, Tinsel, and some other engines)
Modified Paths:
--------------
scummvm/trunk/engines/sci/decompressor.cpp
scummvm/trunk/engines/sci/decompressor.h
scummvm/trunk/engines/sci/detection.cpp
scummvm/trunk/engines/sci/engine/game.cpp
scummvm/trunk/engines/sci/engine/grammar.cpp
scummvm/trunk/engines/sci/engine/kernel.cpp
scummvm/trunk/engines/sci/engine/kfile.cpp
scummvm/trunk/engines/sci/engine/kgraphics.cpp
scummvm/trunk/engines/sci/engine/kmovement.cpp
scummvm/trunk/engines/sci/engine/kpathing.cpp
scummvm/trunk/engines/sci/engine/kstring.cpp
scummvm/trunk/engines/sci/sfx/iterator.cpp
scummvm/trunk/engines/scumm/imuse_digi/dimuse_codecs.cpp
scummvm/trunk/engines/scumm/player_v2a.cpp
scummvm/trunk/engines/scumm/sound.cpp
Modified: scummvm/trunk/engines/sci/decompressor.cpp
===================================================================
--- scummvm/trunk/engines/sci/decompressor.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/decompressor.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -594,7 +594,7 @@
// Leaf node
#define LN(pos, value) ((value) | HUFFMAN_LEAF),
-static int length_tree[] = {
+static const int length_tree[] = {
BN(0, 1, 2)
BN(1, 3, 4) BN(2, 5, 6)
BN(3, 7, 8) BN(4, 9, 10) BN(5, 11, 12) LN(6, 1)
@@ -606,7 +606,7 @@
0 // We need something witout a comma at the end
};
-static int distance_tree[] = {
+static const int distance_tree[] = {
BN(0, 1, 2)
BN(1, 3, 4) BN(2, 5, 6)
//
@@ -649,7 +649,7 @@
0 // We need something witout a comma at the end
};
-static int ascii_tree[] = {
+static const int ascii_tree[] = {
BN(0, 1, 2) BN(1, 3, 4) BN(2, 5, 6) BN(3, 7, 8)
BN(4, 9, 10) BN(5, 11, 12) BN(6, 13, 14) BN(7, 15, 16)
BN(8, 17, 18) BN(9, 19, 20) BN(10, 21, 22) BN(11, 23, 24)
@@ -798,7 +798,7 @@
}
-int DecompressorDCL::huffman_lookup(int *tree) {
+int DecompressorDCL::huffman_lookup(const int *tree) {
int pos = 0;
int bit;
Modified: scummvm/trunk/engines/sci/decompressor.h
===================================================================
--- scummvm/trunk/engines/sci/decompressor.h 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/decompressor.h 2009-05-26 11:30:21 UTC (rev 40908)
@@ -178,7 +178,7 @@
protected:
int unpackDCL(byte *dest);
- int huffman_lookup(int *tree);
+ int huffman_lookup(const int *tree);
};
#ifdef ENABLE_SCI32
Modified: scummvm/trunk/engines/sci/detection.cpp
===================================================================
--- scummvm/trunk/engines/sci/detection.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/detection.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -3357,7 +3357,7 @@
* The fallback game descriptor used by the SCI engine's fallbackDetector.
* Contents of this struct are to be overwritten by the fallbackDetector.
*/
-static SciGameDescription g_fallbackDesc = {
+static SciGameDescription s_fallbackDesc = {
{
"",
"",
@@ -3463,23 +3463,23 @@
return 0;
// Set some defaults
- g_fallbackDesc.desc.gameid = "sci";
- g_fallbackDesc.desc.extra = "";
- g_fallbackDesc.desc.language = Common::UNK_LANG;
- g_fallbackDesc.desc.platform = exePlatform;
- g_fallbackDesc.desc.flags = ADGF_NO_FLAGS;
- g_fallbackDesc.version = SCI_VERSION_0;
+ s_fallbackDesc.desc.gameid = "sci";
+ s_fallbackDesc.desc.extra = "";
+ s_fallbackDesc.desc.language = Common::UNK_LANG;
+ s_fallbackDesc.desc.platform = exePlatform;
+ s_fallbackDesc.desc.flags = ADGF_NO_FLAGS;
+ s_fallbackDesc.version = SCI_VERSION_0;
printf("If this is *NOT* a fan-modified version (in particular, not a fan-made\n");
printf("translation), please, report the data above, including the following\n");
printf("version number, from the game's executable:\n");
// Try to parse the executable version
- if (getSciVersionFromString(exeVersionString, &g_fallbackDesc.version, g_fallbackDesc.desc.platform)) {
+ if (getSciVersionFromString(exeVersionString, &s_fallbackDesc.version, s_fallbackDesc.desc.platform)) {
printf("Detected version: %s, parsed SCI version: %s\n",
- exeVersionString.c_str(), versionNames[g_fallbackDesc.version]);
+ exeVersionString.c_str(), versionNames[s_fallbackDesc.version]);
- return (const ADGameDescription *)&g_fallbackDesc;
+ return (const ADGameDescription *)&s_fallbackDesc;
} else {
printf("Couldn't parse the interpreter version: %s (by executable scan)\n",
exeVersionString.c_str());
Modified: scummvm/trunk/engines/sci/engine/game.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/game.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/game.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -66,8 +66,6 @@
return 0;
}
-extern int _allocd_rules;
-
int _reset_graphics_input(EngineState *s) {
Resource *resource;
int font_nr;
Modified: scummvm/trunk/engines/sci/engine/grammar.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/grammar.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/grammar.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -42,7 +42,7 @@
#define TOKEN_NON_NT (TOKEN_OPAREN | TOKEN_TERMINAL_CLASS | TOKEN_TERMINAL_GROUP | TOKEN_STUFFING_WORD)
#define TOKEN_TERMINAL (TOKEN_TERMINAL_CLASS | TOKEN_TERMINAL_GROUP)
-int _allocd_rules = 0;
+static int _allocd_rules = 0; // FIXME: Avoid static vars
static void vocab_print_rule(parse_rule_t *rule) {
int i;
@@ -420,8 +420,7 @@
return vocab_gnf_parse(nodes, words, branch0, rules, 0);
}
-static int
-_vbpt_pareno(parse_tree_node_t *nodes, int *pos, int base) {
+static int _vbpt_pareno(parse_tree_node_t *nodes, int *pos, int base) {
// Opens parentheses
nodes[base].content.branches[0] = (*pos) + 1;
nodes[++(*pos)].type = PARSE_TREE_NODE_BRANCH;
Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -47,7 +47,7 @@
const char *signature; /* kfunct signature */
};
-static int sci_max_allowed_unknown_kernel_functions[] = {
+static const int sci_max_allowed_unknown_kernel_functions[] = {
0,
0x72, // SCI0
0x7b, // SCI01/EGA
Modified: scummvm/trunk/engines/sci/engine/kfile.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kfile.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/kfile.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -95,6 +95,7 @@
+// FIXME: Avoid static vars
static int _savegame_indices_nr = -1; // means 'uninitialized'
struct SavegameDesc {
@@ -103,6 +104,7 @@
int time;
};
+// FIXME: Avoid static vars
static SavegameDesc _savegame_indices[MAX_SAVEGAME_NR];
Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -360,7 +360,6 @@
reg_t kMoveCursor(EngineState *s, int funct_nr, int argc, reg_t *argv) {
Common::Point newpos;
- static Common::Point oldpos(0, 0);
newpos = s->gfx_state->pointer_pos;
@@ -377,8 +376,6 @@
if (newpos.x < 0) newpos.x = 0;
if (newpos.y < 0) newpos.y = 0;
-
- oldpos = newpos;
}
GFX_ASSERT(gfxop_set_pointer_position(s->gfx_state, newpos));
@@ -471,9 +468,9 @@
delete port;
}
-static int activated_icon_bar = 0;
-static int port_origin_x = 0;
-static int port_origin_y = 0;
+static bool activated_icon_bar = false; // FIXME: Avoid static vars
+static int port_origin_x = 0; // FIXME: Avoid static vars
+static int port_origin_y = 0; // FIXME: Avoid static vars
reg_t kGraph(EngineState *s, int funct_nr, int argc, reg_t *argv) {
rect_t area;
@@ -1783,7 +1780,7 @@
}
}
-static int _k_animate_ran = 0;
+static bool _k_animate_ran = false; // FIXME: Avoid static vars
int _k_view_list_dispose_loop(EngineState *s, List *list, GfxDynView *widget, int funct_nr, int argc, reg_t *argv) {
// disposes all list members flagged for disposal; funct_nr is the invoking kfunction
@@ -1791,7 +1788,7 @@
int signal;
int dropped = 0;
- _k_animate_ran = 0;
+ _k_animate_ran = false;
if (widget) {
int retval;
@@ -1870,11 +1867,12 @@
return dropped;
}
+enum {
+ _K_MAKE_VIEW_LIST_CYCLE = 1,
+ _K_MAKE_VIEW_LIST_CALC_PRIORITY = 2,
+ _K_MAKE_VIEW_LIST_DRAW_TO_CONTROL_MAP = 4
+};
-#define _K_MAKE_VIEW_LIST_CYCLE 1
-#define _K_MAKE_VIEW_LIST_CALC_PRIORITY 2
-#define _K_MAKE_VIEW_LIST_DRAW_TO_CONTROL_MAP 4
-
static GfxDynView *_k_make_dynview_obj(EngineState *s, reg_t obj, int options, int nr, int funct_nr, int argc, reg_t *argv) {
short oldloop, oldcel;
int cel, loop, view_nr = GET_SEL32SV(obj, view);
@@ -2100,7 +2098,7 @@
static void _k_update_signals_in_view_list(GfxList *old_list, GfxList *new_list) {
// O(n^2)... a bit painful, but much faster than the redraws it helps prevent
- GfxDynView *old_widget = (GfxDynView *) old_list->_contents;
+ GfxDynView *old_widget = (GfxDynView *)old_list->_contents;
/* Traverses all old widgets, updates them with signals from the new widgets.
** This is done to avoid evil hacks in widget.c; widgets with unique IDs are
@@ -2332,7 +2330,7 @@
reg_t kSetPort(EngineState *s, int funct_nr, int argc, reg_t *argv) {
if (activated_icon_bar && argc == 6) {
port_origin_x = port_origin_y = 0;
- activated_icon_bar = 0;
+ activated_icon_bar = false;
return s->r_acc;
}
@@ -2367,7 +2365,7 @@
if (SKPV(0) == -10) {
s->port->draw(gfxw_point_zero); // Update the port we're leaving
s->port = s->iconbar_port;
- activated_icon_bar = 1;
+ activated_icon_bar = true;
return s->r_acc;
}
@@ -2974,7 +2972,7 @@
int open_animation = 0;
process_sound_events(s); // Take care of incoming events (kAnimate is called semi-regularly)
- _k_animate_ran = 1; // Used by some of the invoked functions to check for recursion, which may,
+ _k_animate_ran = true; // Used by some of the invoked functions to check for recursion, which may,
// after all, damage the cast list
if (cast_list_ref.segment) {
Modified: scummvm/trunk/engines/sci/engine/kmovement.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmovement.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/kmovement.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -231,12 +231,14 @@
#define MOVING_ON_X (((axis == _K_BRESEN_AXIS_X)&&bi1) || dx)
#define MOVING_ON_Y (((axis == _K_BRESEN_AXIS_Y)&&bi1) || dy)
-static enum {
+enum Movecnt {
IGNORE_MOVECNT,
INCREMENT_MOVECNT,
UNINITIALIZED
-} handle_movecnt = UNINITIALIZED;
+};
+static Movecnt handle_movecnt = UNINITIALIZED; // FIXME: Avoid static vars
+
int parse_reg_t(EngineState *s, const char *str, reg_t *dest);
static int checksum_bytes(byte *data, int size) {
Modified: scummvm/trunk/engines/sci/engine/kpathing.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kpathing.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/kpathing.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -244,12 +244,9 @@
~PathfindingState() {
free(vertex_index);
- if (_prependPoint)
- delete _prependPoint;
+ delete _prependPoint;
+ delete _appendPoint;
- if (_appendPoint)
- delete _appendPoint;
-
for (PolygonList::iterator it = polygons.begin(); it != polygons.end(); ++it) {
delete *it;
}
@@ -257,7 +254,7 @@
};
-static Vertex *vertex_cur; // FIXME
+static Vertex *s_vertex_cur; // FIXME: Avoid static vars
// FIXME: Temporary hack to deal with points in reg_ts
static bool polygon_is_reg_t(const byte *list, int size) {
@@ -286,8 +283,7 @@
/**
* Checks whether two polygons are equal
*/
-static bool polygons_equal(EngineState *s, reg_t p1, reg_t p2)
-{
+static bool polygons_equal(EngineState *s, reg_t p1, reg_t p2) {
// Check for same type
if (KP_UINT(GET_SEL32(p1, type)) != KP_UINT(GET_SEL32(p2, type)))
return false;
@@ -618,12 +614,12 @@
static int vertex_compare(const void *a, const void *b) {
// Compares two vertices by angle (first) and distance (second) in relation
- // to vertex_cur. The angle is relative to the horizontal line extending
- // right from vertex_cur, and increases clockwise
+ // to s_vertex_cur. The angle is relative to the horizontal line extending
+ // right from s_vertex_cur, and increases clockwise
// Parameters: (const void *) a, b: The vertices
// Returns : (int) -1 if a is smaller than b, 1 if a is larger than b, and
// 0 if a and b are equal
- const Common::Point &p0 = vertex_cur->v;
+ const Common::Point &p0 = s_vertex_cur->v;
const Common::Point &p1 = (*(Vertex **) a)->v;
const Common::Point &p2 = (*(Vertex **) b)->v;
@@ -664,7 +660,7 @@
return -1;
}
-static void clockwise(const Vertex *v, const Common::Point *&p1, const Common::Point *&p2) {
+static void clockwise(const Vertex *vertex_cur, const Vertex *v, const Common::Point *&p1, const Common::Point *&p2) {
// Orders the points of an edge clockwise around vertex_cur. If all three
// points are collinear the original order is used
// Parameters: (const Vertex *) v: The first vertex of the edge
@@ -688,7 +684,7 @@
* @param b the second edge
* @return true if a is closer to vertex_cur than b, false otherwise
*/
-static bool edgeIsCloser(const Vertex *a, const Vertex *b) {
+static bool edgeIsCloser(const Vertex *vertex_cur, const Vertex *a, const Vertex *b) {
const Common::Point *v1, *v2, *w1, *w2;
// Check for comparison of the same edge
@@ -700,8 +696,8 @@
// Order vertices clockwise so we know vertex_cur is to the right of
// directed edges (v1, v2) and (w1, w2)
- clockwise(a, v1, v2);
- clockwise(b, w1, w2);
+ clockwise(vertex_cur, a, v1, v2);
+ clockwise(vertex_cur, b, w1, w2);
// At this point we know that one edge must lie entirely to one side
// of the other, as the edges are not collinear and cannot intersect
@@ -741,13 +737,14 @@
/**
* Determines whether or not a vertex is visible from vertex_cur.
+ * @param vertex_cur the base vertex
* @param vertex the vertex
* @param vertex_prev the previous vertex in the sort order, or NULL
* @param visible true if vertex_prev is visible, false otherwise
* @param intersected the list of edges intersected by the sweeping line
* @return true if vertex is visible from vertex_cur, false otherwise
*/
-static bool visible(Vertex *vertex, Vertex *vertex_prev, bool visible, const VertexList &intersected) {
+static bool visible(Vertex *vertex_cur, Vertex *vertex, Vertex *vertex_prev, bool visible, const VertexList &intersected) {
const Common::Point &p = vertex_cur->v;
const Common::Point &w = vertex->v;
@@ -771,14 +768,14 @@
const Vertex *edge = *it++;
for (; it != intersected.end(); ++it) {
- if (edgeIsCloser(*it, edge))
+ if (edgeIsCloser(vertex_cur, *it, edge))
edge = *it;
}
const Common::Point *p1, *p2;
// Check for intersection with sweeping line before vertex
- clockwise(edge, p1, p2);
+ clockwise(vertex_cur, edge, p1, p2);
if (left(*p2, *p1, p) && left(*p1, *p2, w))
return false;
@@ -788,17 +785,17 @@
/**
* Returns a list of all vertices that are visible from a particular vertex.
* @param s the pathfinding state
- * @param vert the vertex
+ * @param vertex_cur the vertex
* @return list of vertices that are visible from vert
*/
-static VertexList *visible_vertices(PathfindingState *s, Vertex *vert) {
+static VertexList *visible_vertices(PathfindingState *s, Vertex *vertex_cur) {
// List of edges intersected by the sweeping line
VertexList intersected;
VertexList *visVerts = new VertexList();
- const Common::Point &p = vert->v;
+ const Common::Point &p = vertex_cur->v;
// Sort vertices by angle (first) and distance (second)
- vertex_cur = vert;
+ s_vertex_cur = vertex_cur;
qsort(s->vertex_index, s->vertices, sizeof(Vertex *), vertex_compare);
for (PolygonList::iterator it = s->polygons.begin(); it != s->polygons.end(); ++it) {
@@ -812,7 +809,7 @@
const Common::Point *high, *low;
// Add edges that intersect the initial position of the sweeping line
- clockwise(vertex, high, low);
+ clockwise(vertex_cur, vertex, high, low);
if ((high->y < p.y) && (low->y >= p.y) && (*low != p))
intersected.push_front(vertex);
@@ -822,12 +819,12 @@
int is_visible = 1;
- // The first vertex will be vertex_cur, so we skip it
+ // The first vertex will be s_vertex_cur, so we skip it
for (int i = 1; i < s->vertices; i++) {
Vertex *v1;
// Compute visibility of vertex_index[i]
- is_visible = visible(s->vertex_index[i], s->vertex_index[i - 1], is_visible, intersected);
+ is_visible = visible(s_vertex_cur, s->vertex_index[i], s->vertex_index[i - 1], is_visible, intersected);
// Update visibility matrix
if (is_visible)
Modified: scummvm/trunk/engines/sci/engine/kstring.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kstring.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/engine/kstring.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -663,7 +663,7 @@
#define DUMMY_MESSAGE "Message not found!"
-static MessageState state;
+static MessageState state; // FIXME: Avoid static vars
enum kMessageFunc {
K_MESSAGE_GET,
Modified: scummvm/trunk/engines/sci/sfx/iterator.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/iterator.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/sci/sfx/iterator.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -1368,9 +1368,9 @@
int TeeSongIterator::nextCommand(byte *buf, int *result) {
- static int ready_masks[2] = {TEE_LEFT_READY, TEE_RIGHT_READY};
- static int active_masks[2] = {TEE_LEFT_ACTIVE, TEE_RIGHT_ACTIVE};
- static int pcm_masks[2] = {TEE_LEFT_PCM, TEE_RIGHT_PCM};
+ static const int ready_masks[2] = {TEE_LEFT_READY, TEE_RIGHT_READY};
+ static const int active_masks[2] = {TEE_LEFT_ACTIVE, TEE_RIGHT_ACTIVE};
+ static const int pcm_masks[2] = {TEE_LEFT_PCM, TEE_RIGHT_PCM};
int i;
int retid;
@@ -1497,7 +1497,7 @@
}
Audio::AudioStream *TeeSongIterator::getAudioStream() {
- static int pcm_masks[2] = {TEE_LEFT_PCM, TEE_RIGHT_PCM};
+ static const int pcm_masks[2] = {TEE_LEFT_PCM, TEE_RIGHT_PCM};
int i;
for (i = TEE_LEFT; i <= TEE_RIGHT; i++)
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_codecs.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_codecs.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_codecs.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -22,7 +22,6 @@
* $Id$
*/
-
#include "common/scummsys.h"
#include "common/endian.h"
#include "common/util.h"
Modified: scummvm/trunk/engines/scumm/player_v2a.cpp
===================================================================
--- scummvm/trunk/engines/scumm/player_v2a.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/scumm/player_v2a.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -23,7 +23,6 @@
*
*/
-
#include "engines/engine.h"
#include "scumm/player_v2a.h"
#include "scumm/scumm.h"
Modified: scummvm/trunk/engines/scumm/sound.cpp
===================================================================
--- scummvm/trunk/engines/scumm/sound.cpp 2009-05-26 11:28:38 UTC (rev 40907)
+++ scummvm/trunk/engines/scumm/sound.cpp 2009-05-26 11:30:21 UTC (rev 40908)
@@ -1292,7 +1292,7 @@
}
// Adlib MIDI-SYSEX to set MIDI instruments for small header games.
-static byte ADLIB_INSTR_MIDI_HACK[95] = {
+static const byte ADLIB_INSTR_MIDI_HACK[95] = {
0x00, 0xf0, 0x14, 0x7d, 0x00, // sysex 00: part on/off
0x00, 0x00, 0x03, // part/channel (offset 5)
0x00, 0x00, 0x07, 0x0f, 0x00, 0x00, 0x08, 0x00,
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