aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/include/sciresource.h92
-rw-r--r--engines/sci/scicore/resource.cpp34
-rw-r--r--engines/sci/scicore/resource_map.cpp57
-rw-r--r--engines/sci/scicore/resource_patch.cpp6
4 files changed, 93 insertions, 96 deletions
diff --git a/engines/sci/include/sciresource.h b/engines/sci/include/sciresource.h
index 79f7467920..5f37c080b2 100644
--- a/engines/sci/include/sciresource.h
+++ b/engines/sci/include/sciresource.h
@@ -142,10 +142,10 @@ typedef struct resource_source_struct {
} location;
struct resource_source_struct *associated_map;
struct resource_source_struct *next;
-} resource_source_t;
+} ResourceSource;
typedef struct _resource_altsource_struct {
- resource_source_t *source;
+ ResourceSource *source;
unsigned int file_offset;
struct _resource_altsource_struct *next;
} resource_altsource_t;
@@ -161,7 +161,7 @@ typedef struct _resource_struct {
unsigned int size;
unsigned int file_offset; /* Offset in file */
- resource_source_t *source;
+ ResourceSource *source;
unsigned char status;
unsigned short lockers; /* Number of places where this resource was locked */
@@ -178,7 +178,7 @@ typedef struct {
int sci_version; /* SCI resource version to use */
int resources_nr;
- resource_source_t *sources;
+ ResourceSource *sources;
resource_t *resources;
int memory_locked; /* Amount of resource bytes in locked memory */
@@ -212,7 +212,7 @@ scir_new_resource_manager(char *dir, int version, char allow_patches, int max_me
** is exceeded.
*/
-resource_source_t *
+ResourceSource *
scir_add_patch_dir(ResourceManager *mgr, int type, char *path);
/* Add a path to the resource manager's list of sources.
** Parameters: (ResourceManager *) mgr: The resource manager to look up in
@@ -222,22 +222,22 @@ scir_add_patch_dir(ResourceManager *mgr, int type, char *path);
** Returns: A pointer to the added source structure, or NULL if an error occurred.
*/
-resource_source_t *
-scir_get_volume(ResourceManager *mgr, resource_source_t *map, int volume_nr);
+ResourceSource *
+scir_get_volume(ResourceManager *mgr, ResourceSource *map, int volume_nr);
-resource_source_t *
-scir_add_volume(ResourceManager *mgr, resource_source_t *map, char *filename,
+ResourceSource *
+scir_add_volume(ResourceManager *mgr, ResourceSource *map, char *filename,
int number, int extended_addressing);
/* Add a volume to the resource manager's list of sources.
** Parameters: (ResourceManager *) mgr: The resource manager to look up in
-** (resource_source_t *) map: The map associated with this volume
+** (ResourceSource *) map: The map associated with this volume
** (char *) filename: The name of the volume to add
** (int) extended_addressing: 1 if this volume uses extended addressing,
** 0 otherwise.
** Returns: A pointer to the added source structure, or NULL if an error occurred.
*/
-resource_source_t *
+ResourceSource *
scir_add_external_map(ResourceManager *mgr, char *file_name);
/* Add an external (i.e. separate file) map resource to the resource manager's list of sources.
** Parameters: (ResourceManager *) mgr: The resource manager to look up in
@@ -245,7 +245,7 @@ scir_add_external_map(ResourceManager *mgr, char *file_name);
** Returns: A pointer to the added source structure, or NULL if an error occurred.
*/
-resource_source_t *
+ResourceSource *
scir_add_internal_map(ResourceManager *mgr, resource_t *map);
/* Add an internal (i.e. a resource) map resource to the resource manager's list of sources.
** Parameters: (ResourceManager *) mgr: The resource manager to look up in
@@ -308,7 +308,7 @@ scir_free_resource_manager(ResourceManager *mgr);
/**--- Resource map decoding functions ---*/
int
-sci0_read_resource_map(ResourceManager *mgr, resource_source_t *map, resource_t **resources, int *resource_nr_p, int *sci_version);
+sci0_read_resource_map(ResourceManager *mgr, ResourceSource *map, resource_t **resources, int *resource_nr_p, int *sci_version);
/* Reads the SCI0 resource.map file from a local directory
** Parameters: (char *) path: (unused)
** (resource_t **) resources: Pointer to a pointer
@@ -322,7 +322,7 @@ sci0_read_resource_map(ResourceManager *mgr, resource_source_t *map, resource_t
*/
int
-sci1_read_resource_map(ResourceManager *mgr, resource_source_t *map, resource_source_t *vol,
+sci1_read_resource_map(ResourceManager *mgr, ResourceSource *map, ResourceSource *vol,
resource_t **resource_p, int *resource_nr_p, int *sci_version);
/* Reads the SCI1 resource.map file from a local directory
** Parameters: (char *) path: (unused)
@@ -357,7 +357,7 @@ sci1_sprintf_patch_file_name(char *string, resource_t *res);
*/
int
-sci0_read_resource_patches(resource_source_t *source, resource_t **resources, int *resource_nr_p);
+sci0_read_resource_patches(ResourceSource *source, resource_t **resources, int *resource_nr_p);
/* Reads SCI0 patch files from a local directory
** Parameters: (char *) path: (unused)
** (resource_t **) resources: Pointer to a pointer
@@ -370,7 +370,7 @@ sci0_read_resource_patches(resource_source_t *source, resource_t **resources, in
*/
int
-sci1_read_resource_patches(resource_source_t *source, resource_t **resources, int *resource_nr_p);
+sci1_read_resource_patches(ResourceSource *source, resource_t **resources, int *resource_nr_p);
/* Reads SCI1 patch files from a local directory
** Parameters: (char *) path: (unused)
** (resource_t **) resources: Pointer to a pointer
@@ -462,70 +462,16 @@ _scir_find_resource_unsorted(resource_t *res, int res_nr, int type, int number);
*/
void
-_scir_add_altsource(resource_t *res, resource_source_t *source, unsigned int file_offset);
+_scir_add_altsource(resource_t *res, ResourceSource *source, unsigned int file_offset);
/* Adds an alternative source to a resource
** Parameters: (resource_t *) res: The resource to add to
-** (resource_source_t *) source: The source of the resource
+** (ResourceSource *) source: The source of the resource
** (unsigned int) file_offset: Offset in the file the resource
** is stored at
-** Retruns : (void)
+** Returns : (void)
*/
-/**** Internal #defines ****/
-
-#define SCI_RESOURCE_FILE_PATCH -1 /* Identifies resources read from patches */
-
-/* Resource type encoding */
-#define SCI0_B1_RESTYPE_MASK 0xf8
-#define SCI0_B1_RESTYPE_SHIFT 3
-#define SCI0_B3_RESFILE_MASK 0xfc
-#define SCI0_B3_RESFILE_SHIFT 2
-#define SCI01V_B3_RESFILE_MASK 0xf0
-#define SCI01V_B3_RESFILE_SHIFT 4
-
-#define SCI0_RESID_GET_TYPE(bytes) \
- (((bytes)[1] & SCI0_B1_RESTYPE_MASK) >> SCI0_B1_RESTYPE_SHIFT)
-#define SCI0_RESID_GET_NUMBER(bytes) \
- ((((bytes)[1] & ~SCI0_B1_RESTYPE_MASK) << 8) | ((bytes)[0]))
-
-#define SCI0_RESFILE_GET_FILE(bytes) \
- (((bytes)[3] & SCI0_B3_RESFILE_MASK) >> SCI0_B3_RESFILE_SHIFT)
-#define SCI0_RESFILE_GET_OFFSET(bytes) \
- ((((bytes)[3] & ~SCI0_B3_RESFILE_MASK) << 24) \
- | (((bytes)[2]) << 16) \
- | (((bytes)[1]) << 8) \
- | (((bytes)[0]) << 0))
-
-#define SCI01V_RESFILE_GET_FILE(bytes) \
- (((bytes)[3] & SCI01V_B3_RESFILE_MASK) >> SCI01V_B3_RESFILE_SHIFT)
-#define SCI01V_RESFILE_GET_OFFSET(bytes) \
- ((((bytes)[3] & ~SCI01V_B3_RESFILE_MASK) << 24) \
- | (((bytes)[2]) << 16) \
- | (((bytes)[1]) << 8) \
- | (((bytes)[0]) << 0))
-
-#define SCI1_B5_RESFILE_MASK 0xf0
-#define SCI1_B5_RESFILE_SHIFT 4
-
-#define SCI1_RESFILE_GET_FILE(bytes) \
- (((bytes)[5] & SCI1_B5_RESFILE_MASK) >> SCI1_B5_RESFILE_SHIFT)
-
-#define SCI1_RESFILE_GET_OFFSET(bytes) \
- ((((bytes)[5] & ~SCI1_B5_RESFILE_MASK) << 24) \
- | (((bytes)[4]) << 16) \
- | (((bytes)[3]) << 8) \
- | (((bytes)[2]) << 0))
-
-#define SCI1_RESFILE_GET_NUMBER(bytes) \
- ((((bytes)[1]) << 8) \
- | (((bytes)[0]) << 0))
-
-#define SCI11_RESFILE_GET_OFFSET(bytes) \
- ((((bytes)[4]) << 17) \
- | (((bytes)[3]) << 9) \
- | (((bytes)[2]) << 1))
-
#endif
diff --git a/engines/sci/scicore/resource.cpp b/engines/sci/scicore/resource.cpp
index 69576159c4..aa89d4653c 100644
--- a/engines/sci/scicore/resource.cpp
+++ b/engines/sci/scicore/resource.cpp
@@ -137,7 +137,7 @@ int resourcecmp(const void *first, const void *second) {
/*-----------------------------*/
void
-_scir_add_altsource(resource_t *res, resource_source_t *source, unsigned int file_offset) {
+_scir_add_altsource(resource_t *res, ResourceSource *source, unsigned int file_offset) {
resource_altsource_t *rsrc = (resource_altsource_t*)sci_malloc(sizeof(resource_altsource_t));
rsrc->next = res->alt_sources;
@@ -159,10 +159,10 @@ _scir_find_resource_unsorted(resource_t *res, int res_nr, int type, int number)
/** Resource source list management **/
/*-----------------------------------*/
-resource_source_t *
+ResourceSource *
scir_add_external_map(ResourceManager *mgr, char *file_name) {
- resource_source_t *newsrc = (resource_source_t *)
- malloc(sizeof(resource_source_t));
+ ResourceSource *newsrc = (ResourceSource *)
+ malloc(sizeof(ResourceSource));
/* Add the new source to the SLL of sources */
newsrc->next = mgr->sources;
@@ -176,11 +176,11 @@ scir_add_external_map(ResourceManager *mgr, char *file_name) {
return newsrc;
}
-resource_source_t *
-scir_add_volume(ResourceManager *mgr, resource_source_t *map, char *filename,
+ResourceSource *
+scir_add_volume(ResourceManager *mgr, ResourceSource *map, char *filename,
int number, int extended_addressing) {
- resource_source_t *newsrc = (resource_source_t *)
- malloc(sizeof(resource_source_t));
+ ResourceSource *newsrc = (ResourceSource *)
+ malloc(sizeof(ResourceSource));
/* Add the new source to the SLL of sources */
newsrc->next = mgr->sources;
@@ -194,10 +194,10 @@ scir_add_volume(ResourceManager *mgr, resource_source_t *map, char *filename,
return 0;
}
-resource_source_t *
+ResourceSource *
scir_add_patch_dir(ResourceManager *mgr, int type, char *dirname) {
- resource_source_t *newsrc = (resource_source_t *)
- malloc(sizeof(resource_source_t));
+ ResourceSource *newsrc = (ResourceSource *)
+ malloc(sizeof(ResourceSource));
/* Add the new source to the SLL of sources */
newsrc->next = mgr->sources;
@@ -209,9 +209,9 @@ scir_add_patch_dir(ResourceManager *mgr, int type, char *dirname) {
return 0;
}
-resource_source_t *
-scir_get_volume(ResourceManager *mgr, resource_source_t *map, int volume_nr) {
- resource_source_t *seeker = mgr->sources;
+ResourceSource *
+scir_get_volume(ResourceManager *mgr, ResourceSource *map, int volume_nr) {
+ ResourceSource *seeker = mgr->sources;
while (seeker) {
if (seeker->source_type == RESSOURCE_TYPE_VOLUME &&
@@ -432,7 +432,7 @@ scir_add_appropriate_sources(ResourceManager *mgr,
//char path_separator;
sci_dir_t dirent;
char *name;
- resource_source_t *map;
+ ResourceSource *map;
int fd;
char fullname[MAXPATHLEN];
@@ -469,7 +469,7 @@ scir_add_appropriate_sources(ResourceManager *mgr,
}
static int
-_scir_scan_new_sources(ResourceManager *mgr, int *detected_version, resource_source_t *source) {
+_scir_scan_new_sources(ResourceManager *mgr, int *detected_version, ResourceSource *source) {
int preset_version = mgr->sci_version;
int resource_error = 0;
int dummy = mgr->sci_version;
@@ -569,7 +569,7 @@ scir_scan_new_sources(ResourceManager *mgr, int *detected_version) {
}
static void
-_scir_free_resource_sources(resource_source_t *rss) {
+_scir_free_resource_sources(ResourceSource *rss) {
if (rss) {
_scir_free_resource_sources(rss->next);
free(rss);
diff --git a/engines/sci/scicore/resource_map.cpp b/engines/sci/scicore/resource_map.cpp
index 3af9b286f5..39bf42d020 100644
--- a/engines/sci/scicore/resource_map.cpp
+++ b/engines/sci/scicore/resource_map.cpp
@@ -36,6 +36,57 @@
#define SCI1_RESMAP_ENTRIES_SIZE 6
#define SCI11_RESMAP_ENTRIES_SIZE 5
+/* Resource type encoding */
+#define SCI0_B1_RESTYPE_MASK 0xf8
+#define SCI0_B1_RESTYPE_SHIFT 3
+#define SCI0_B3_RESFILE_MASK 0xfc
+#define SCI0_B3_RESFILE_SHIFT 2
+#define SCI01V_B3_RESFILE_MASK 0xf0
+#define SCI01V_B3_RESFILE_SHIFT 4
+
+#define SCI0_RESID_GET_TYPE(bytes) \
+ (((bytes)[1] & SCI0_B1_RESTYPE_MASK) >> SCI0_B1_RESTYPE_SHIFT)
+#define SCI0_RESID_GET_NUMBER(bytes) \
+ ((((bytes)[1] & ~SCI0_B1_RESTYPE_MASK) << 8) | ((bytes)[0]))
+
+#define SCI0_RESFILE_GET_FILE(bytes) \
+ (((bytes)[3] & SCI0_B3_RESFILE_MASK) >> SCI0_B3_RESFILE_SHIFT)
+#define SCI0_RESFILE_GET_OFFSET(bytes) \
+ ((((bytes)[3] & ~SCI0_B3_RESFILE_MASK) << 24) \
+ | (((bytes)[2]) << 16) \
+ | (((bytes)[1]) << 8) \
+ | (((bytes)[0]) << 0))
+
+#define SCI01V_RESFILE_GET_FILE(bytes) \
+ (((bytes)[3] & SCI01V_B3_RESFILE_MASK) >> SCI01V_B3_RESFILE_SHIFT)
+#define SCI01V_RESFILE_GET_OFFSET(bytes) \
+ ((((bytes)[3] & ~SCI01V_B3_RESFILE_MASK) << 24) \
+ | (((bytes)[2]) << 16) \
+ | (((bytes)[1]) << 8) \
+ | (((bytes)[0]) << 0))
+
+#define SCI1_B5_RESFILE_MASK 0xf0
+#define SCI1_B5_RESFILE_SHIFT 4
+
+#define SCI1_RESFILE_GET_FILE(bytes) \
+ (((bytes)[5] & SCI1_B5_RESFILE_MASK) >> SCI1_B5_RESFILE_SHIFT)
+
+#define SCI1_RESFILE_GET_OFFSET(bytes) \
+ ((((bytes)[5] & ~SCI1_B5_RESFILE_MASK) << 24) \
+ | (((bytes)[4]) << 16) \
+ | (((bytes)[3]) << 8) \
+ | (((bytes)[2]) << 0))
+
+#define SCI1_RESFILE_GET_NUMBER(bytes) \
+ ((((bytes)[1]) << 8) \
+ | (((bytes)[0]) << 0))
+
+#define SCI11_RESFILE_GET_OFFSET(bytes) \
+ ((((bytes)[4]) << 17) \
+ | (((bytes)[3]) << 9) \
+ | (((bytes)[2]) << 1))
+
+
static int
detect_odd_sci01(int fh) {
byte buf[6];
@@ -73,7 +124,7 @@ detect_odd_sci01(int fh) {
}
static int
-sci_res_read_entry(ResourceManager *mgr, resource_source_t *map,
+sci_res_read_entry(ResourceManager *mgr, ResourceSource *map,
byte *buf, resource_t *res, int sci_version) {
res->id = buf[0] | (buf[1] << 8);
res->type = SCI0_RESID_GET_TYPE(buf);
@@ -149,7 +200,7 @@ int sci1_parse_header(int fd, int *types, int *lastrt) {
int
-sci0_read_resource_map(ResourceManager *mgr, resource_source_t *map, resource_t **resource_p, int *resource_nr_p, int *sci_version) {
+sci0_read_resource_map(ResourceManager *mgr, ResourceSource *map, resource_t **resource_p, int *resource_nr_p, int *sci_version) {
int fsize;
int fd;
resource_t *resources;
@@ -334,7 +385,7 @@ static int sci10_or_11(int *types) {
}
int
-sci1_read_resource_map(ResourceManager *mgr, resource_source_t *map, resource_source_t *vol,
+sci1_read_resource_map(ResourceManager *mgr, ResourceSource *map, ResourceSource *vol,
resource_t **resource_p, int *resource_nr_p, int *sci_version) {
int fsize;
int fd;
diff --git a/engines/sci/scicore/resource_patch.cpp b/engines/sci/scicore/resource_patch.cpp
index f896167c45..a9e472468f 100644
--- a/engines/sci/scicore/resource_patch.cpp
+++ b/engines/sci/scicore/resource_patch.cpp
@@ -39,7 +39,7 @@ sci1_sprintf_patch_file_name(char *string, resource_t *res) {
/* version-agnostic patch application */
static void
-process_patch(resource_source_t *source,
+process_patch(ResourceSource *source,
char *entry, int restype, int resnumber, resource_t **resource_p, int *resource_nr_p) {
int fsize;
char filename[MAXPATHLEN];
@@ -119,7 +119,7 @@ process_patch(resource_source_t *source,
int
-sci0_read_resource_patches(resource_source_t *source, resource_t **resource_p, int *resource_nr_p) {
+sci0_read_resource_patches(ResourceSource *source, resource_t **resource_p, int *resource_nr_p) {
sci_dir_t dir;
char *entry;
char *caller_cwd = sci_getcwd();
@@ -166,7 +166,7 @@ sci0_read_resource_patches(resource_source_t *source, resource_t **resource_p, i
}
int
-sci1_read_resource_patches(resource_source_t *source, resource_t **resource_p, int *resource_nr_p) {
+sci1_read_resource_patches(ResourceSource *source, resource_t **resource_p, int *resource_nr_p) {
sci_dir_t dir;
char *entry;
char *caller_cwd = sci_getcwd();