[Scummvm-cvs-logs] SF.net SVN: scummvm:[38434] scummvm/trunk/engines/sci

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Feb 17 19:17:01 CET 2009


Revision: 38434
          http://scummvm.svn.sourceforge.net/scummvm/?rev=38434&view=rev
Author:   fingolfin
Date:     2009-02-17 18:17:01 +0000 (Tue, 17 Feb 2009)

Log Message:
-----------
SCI: Moved sfx_pcm_urat_t from  include/sfx_pcm.h to sfx/mixer.h

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/vm.cpp
    scummvm/trunk/engines/sci/include/gfx_res_options.h
    scummvm/trunk/engines/sci/include/sfx_pcm.h
    scummvm/trunk/engines/sci/scicore/resource_map.cpp
    scummvm/trunk/engines/sci/sfx/mixer.h

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2009-02-17 18:16:48 UTC (rev 38433)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2009-02-17 18:17:01 UTC (rev 38434)
@@ -870,7 +870,8 @@
 
 			}
 
-
+		// TODO: Replace the following by an opcode table, and several methods for
+		// each opcode.
 		switch (opnumber) {
 
 		case 0x00: /* bnot */

Modified: scummvm/trunk/engines/sci/include/gfx_res_options.h
===================================================================
--- scummvm/trunk/engines/sci/include/gfx_res_options.h	2009-02-17 18:16:48 UTC (rev 38433)
+++ scummvm/trunk/engines/sci/include/gfx_res_options.h	2009-02-17 18:17:01 UTC (rev 38434)
@@ -35,12 +35,6 @@
 	int min, max;
 } gfx_res_pattern_t;
 
-typedef struct _gfx_res_pattern_list {
-	gfx_res_pattern_t pattern;
-	struct _gfx_res_pattern_list *next;
-} gfx_res_pattern_list_t;
-
-
 /* GFX resource assignments */
 
 typedef struct {

Modified: scummvm/trunk/engines/sci/include/sfx_pcm.h
===================================================================
--- scummvm/trunk/engines/sci/include/sfx_pcm.h	2009-02-17 18:16:48 UTC (rev 38433)
+++ scummvm/trunk/engines/sci/include/sfx_pcm.h	2009-02-17 18:17:01 UTC (rev 38434)
@@ -64,13 +64,6 @@
 
 
 typedef struct {
-	int nom, den;
-	int val;
-
-	/* Total value: val + nom/den, where (nom < den) guaranteed. */
-} sfx_pcm_urat_t; /* Finitary unsigned rational numbers */
-
-typedef struct {
 	int rate;   /* Sampling rate */
 	int stereo; /* The stereo mode used (SFX_PCM_MONO or SFX_PCM_STEREO_*) */
 	unsigned int format; /* Sample format (SFX_PCM_FORMAT_*) */

Modified: scummvm/trunk/engines/sci/scicore/resource_map.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/resource_map.cpp	2009-02-17 18:16:48 UTC (rev 38433)
+++ scummvm/trunk/engines/sci/scicore/resource_map.cpp	2009-02-17 18:17:01 UTC (rev 38434)
@@ -26,10 +26,10 @@
 #include "sci/include/sci_memory.h"
 #include "sci/include/sciresource.h"
 #include "sci/include/resource.h"
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
 
+#include "common/file.h"
+
+
 #define RESOURCE_MAP_FILENAME "resource.map"
 
 #define SCI0_RESMAP_ENTRIES_SIZE 6
@@ -37,13 +37,13 @@
 #define SCI11_RESMAP_ENTRIES_SIZE 5
 
 static int
-detect_odd_sci01(int fh) {
+detect_odd_sci01(Common::File &file) {
 	byte buf[6];
 	int files_ok = 1;
-	int fsize, resources_nr, tempfh, read_ok;
+	int fsize, resources_nr, read_ok;
 	char filename[14];
 
-	fsize = sci_fd_size(fh);
+	fsize = file.size();
 	if (fsize < 0) {
 		perror("Error occured while trying to get filesize of resource.map");
 		return SCI_ERROR_RESMAP_NOT_FOUND;
@@ -52,22 +52,21 @@
 	resources_nr = fsize / SCI0_RESMAP_ENTRIES_SIZE;
 
 	while (resources_nr-- > 1) {
-		read_ok = read(fh, &buf, SCI0_RESMAP_ENTRIES_SIZE);
+		read_ok = file.read(&buf, SCI0_RESMAP_ENTRIES_SIZE);
 
 		if (read_ok) {
 			sprintf(filename, "resource.%03i", SCI0_RESFILE_GET_FILE(buf + 2));
-			tempfh = sci_open(filename, O_RDONLY | O_BINARY);
-
-			if (tempfh == SCI_INVALID_FD) {
+			Common::File temp;
+			
+			// FIXME: Maybe better to use File::exists here?
+			if (!temp.open(filename)) {
 				files_ok = 0;
 				break;
 			}
-
-			close(tempfh);
 		}
 	}
 
-	lseek(fh, 0, SEEK_SET);
+	file.seek(0, SEEK_SET);
 
 	return files_ok;
 }
@@ -148,10 +147,9 @@
 
 
 
-int
-sci0_read_resource_map(resource_mgr_t *mgr, resource_source_t *map, resource_t **resource_p, int *resource_nr_p, int *sci_version) {
+int sci0_read_resource_map(resource_mgr_t *mgr, resource_source_t *map, resource_t **resource_p, int *resource_nr_p, int *sci_version) {
 	int fsize;
-	int fd;
+	Common::File file;
 	resource_t *resources;
 	int resources_nr;
 	int resource_index = 0;
@@ -160,12 +158,11 @@
 	int max_resfile_nr = 0;
 
 	byte buf[SCI0_RESMAP_ENTRIES_SIZE];
-	fd = sci_open(map->location.file.name, O_RDONLY | O_BINARY);
 
-	if (!IS_VALID_FD(fd))
+	if (!file.open(map->location.file.name))
 		return SCI_ERROR_RESMAP_NOT_FOUND;
 
-	read(fd, &buf, 4);
+	file.read(&buf, 4);
 
 	/* Theory: An SCI1 map file begins with an index that allows us to seek quickly
 	   to a particular resource type. The entries are three bytes long; one byte
@@ -186,13 +183,12 @@
 	if ((buf[0] == 0x80) &&
 	        (buf[1] % 3 == 0) &&
 	        (buf[3] == 0x81)) {
-		close(fd);
 		return SCI_ERROR_INVALID_RESMAP_ENTRY;
 	}
 
-	lseek(fd, 0, SEEK_SET);
+	file.seek(0, SEEK_SET);
 
-	switch (detect_odd_sci01(fd)) {
+	switch (detect_odd_sci01(file)) {
 	case 0 : /* Odd SCI01 */
 		if (*sci_version == SCI_VERSION_AUTODETECT)
 			*sci_version = SCI_VERSION_01_VGA_ODD;
@@ -205,7 +201,8 @@
 		return SCI_ERROR_RESMAP_NOT_FOUND;
 	}
 
-	if ((fsize = sci_fd_size(fd)) < 0) {
+	fsize = file.size();
+	if (fsize < 0) {
 		perror("Error occured while trying to get filesize of resource.map");
 		return SCI_ERROR_RESMAP_NOT_FOUND;
 	}
@@ -216,7 +213,7 @@
 	/* Sets valid default values for most entries */
 
 	do {
-		int read_ok = read(fd, &buf, SCI0_RESMAP_ENTRIES_SIZE);
+		int read_ok = file.read(&buf, SCI0_RESMAP_ENTRIES_SIZE);
 		next_entry = 1;
 
 		if (read_ok < 0) {
@@ -235,7 +232,6 @@
 
 			if (sci_res_read_entry(mgr, map, buf, resources + resource_index, *sci_version)) {
 				free(resources);
-				close(fd);
 				return SCI_ERROR_RESMAP_NOT_FOUND;
 			}
 
@@ -263,7 +259,7 @@
 
 	} while (next_entry);
 
-	close(fd);
+	file.close();
 
 	if (!resource_index) {
 		sciprintf("resource.map was empty!\n");
@@ -280,14 +276,12 @@
 		/* Check whether the highest resfile used exists */
 		char filename_buf[14];
 		sprintf(filename_buf, "resource.%03d", max_resfile_nr);
-		fd = sci_open(filename_buf, O_RDONLY);
 
-		if (!IS_VALID_FD(fd)) {
+		if (!file.open(filename_buf) {
 			_scir_free_resources(resources, resources_nr);
 			sciprintf("'%s' requested by resource.map, but not found\n", filename_buf);
 			return SCI_ERROR_INVALID_RESMAP_ENTRY;
-		} else
-			close(fd);
+		}
 #endif
 	}
 

Modified: scummvm/trunk/engines/sci/sfx/mixer.h
===================================================================
--- scummvm/trunk/engines/sci/sfx/mixer.h	2009-02-17 18:16:48 UTC (rev 38433)
+++ scummvm/trunk/engines/sci/sfx/mixer.h	2009-02-17 18:17:01 UTC (rev 38434)
@@ -32,6 +32,14 @@
 #define SFX_PCM_FEED_MODE_ALIVE 0
 #define SFX_PCM_FEED_MODE_DEAD 1
 
+/** Finitary unsigned rational numbers */
+struct sfx_pcm_urat_t {
+	int nom, den;
+	int val;
+
+	/* Total value: val + nom/den, where (nom < den) guaranteed. */
+};
+
 struct twochannel_data {
 	int left, right;
 };
@@ -49,7 +57,7 @@
 	int mode; /* Whether the feed is alive or pending destruction */
 
 	int pending_review; /* Timestamp needs to be checked for this stream */
-	struct twochannel_data ch_old, ch_new; /* Intermediate results of output computation */
+	twochannel_data ch_old, ch_new; /* Intermediate results of output computation */
 } sfx_pcm_feed_state_t;
 
 


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