[Scummvm-cvs-logs] SF.net SVN: scummvm:[38435] scummvm/trunk/engines/sci
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Tue Feb 17 19:21:27 CET 2009
Revision: 38435
http://scummvm.svn.sourceforge.net/scummvm/?rev=38435&view=rev
Author: fingolfin
Date: 2009-02-17 18:21:27 +0000 (Tue, 17 Feb 2009)
Log Message:
-----------
Revert changed I accidentally commited *sigh*
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/vm.cpp
scummvm/trunk/engines/sci/include/gfx_res_options.h
scummvm/trunk/engines/sci/scicore/resource_map.cpp
Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp 2009-02-17 18:17:01 UTC (rev 38434)
+++ scummvm/trunk/engines/sci/engine/vm.cpp 2009-02-17 18:21:27 UTC (rev 38435)
@@ -870,8 +870,7 @@
}
- // 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:17:01 UTC (rev 38434)
+++ scummvm/trunk/engines/sci/include/gfx_res_options.h 2009-02-17 18:21:27 UTC (rev 38435)
@@ -35,6 +35,12 @@
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/scicore/resource_map.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/resource_map.cpp 2009-02-17 18:17:01 UTC (rev 38434)
+++ scummvm/trunk/engines/sci/scicore/resource_map.cpp 2009-02-17 18:21:27 UTC (rev 38435)
@@ -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(Common::File &file) {
+detect_odd_sci01(int fh) {
byte buf[6];
int files_ok = 1;
- int fsize, resources_nr, read_ok;
+ int fsize, resources_nr, tempfh, read_ok;
char filename[14];
- fsize = file.size();
+ fsize = sci_fd_size(fh);
if (fsize < 0) {
perror("Error occured while trying to get filesize of resource.map");
return SCI_ERROR_RESMAP_NOT_FOUND;
@@ -52,21 +52,22 @@
resources_nr = fsize / SCI0_RESMAP_ENTRIES_SIZE;
while (resources_nr-- > 1) {
- read_ok = file.read(&buf, SCI0_RESMAP_ENTRIES_SIZE);
+ read_ok = read(fh, &buf, SCI0_RESMAP_ENTRIES_SIZE);
if (read_ok) {
sprintf(filename, "resource.%03i", SCI0_RESFILE_GET_FILE(buf + 2));
- Common::File temp;
-
- // FIXME: Maybe better to use File::exists here?
- if (!temp.open(filename)) {
+ tempfh = sci_open(filename, O_RDONLY | O_BINARY);
+
+ if (tempfh == SCI_INVALID_FD) {
files_ok = 0;
break;
}
+
+ close(tempfh);
}
}
- file.seek(0, SEEK_SET);
+ lseek(fh, 0, SEEK_SET);
return files_ok;
}
@@ -147,9 +148,10 @@
-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;
- Common::File file;
+ int fd;
resource_t *resources;
int resources_nr;
int resource_index = 0;
@@ -158,11 +160,12 @@
int max_resfile_nr = 0;
byte buf[SCI0_RESMAP_ENTRIES_SIZE];
+ fd = sci_open(map->location.file.name, O_RDONLY | O_BINARY);
- if (!file.open(map->location.file.name))
+ if (!IS_VALID_FD(fd))
return SCI_ERROR_RESMAP_NOT_FOUND;
- file.read(&buf, 4);
+ read(fd, &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
@@ -183,12 +186,13 @@
if ((buf[0] == 0x80) &&
(buf[1] % 3 == 0) &&
(buf[3] == 0x81)) {
+ close(fd);
return SCI_ERROR_INVALID_RESMAP_ENTRY;
}
- file.seek(0, SEEK_SET);
+ lseek(fd, 0, SEEK_SET);
- switch (detect_odd_sci01(file)) {
+ switch (detect_odd_sci01(fd)) {
case 0 : /* Odd SCI01 */
if (*sci_version == SCI_VERSION_AUTODETECT)
*sci_version = SCI_VERSION_01_VGA_ODD;
@@ -201,8 +205,7 @@
return SCI_ERROR_RESMAP_NOT_FOUND;
}
- fsize = file.size();
- if (fsize < 0) {
+ if ((fsize = sci_fd_size(fd)) < 0) {
perror("Error occured while trying to get filesize of resource.map");
return SCI_ERROR_RESMAP_NOT_FOUND;
}
@@ -213,7 +216,7 @@
/* Sets valid default values for most entries */
do {
- int read_ok = file.read(&buf, SCI0_RESMAP_ENTRIES_SIZE);
+ int read_ok = read(fd, &buf, SCI0_RESMAP_ENTRIES_SIZE);
next_entry = 1;
if (read_ok < 0) {
@@ -232,6 +235,7 @@
if (sci_res_read_entry(mgr, map, buf, resources + resource_index, *sci_version)) {
free(resources);
+ close(fd);
return SCI_ERROR_RESMAP_NOT_FOUND;
}
@@ -259,7 +263,7 @@
} while (next_entry);
- file.close();
+ close(fd);
if (!resource_index) {
sciprintf("resource.map was empty!\n");
@@ -276,12 +280,14 @@
/* 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 (!file.open(filename_buf) {
+ if (!IS_VALID_FD(fd)) {
_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
}
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