mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 13:50:13 +00:00
SCI: Replaced two uses of sci_fopen by Common::File; moved is_print_str() to the only spot it is used
svn-id: r38791
This commit is contained in:
parent
a5e6684151
commit
8997a45773
@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
#include "common/system.h"
|
||||
#include "common/file.h"
|
||||
|
||||
#include "sci/include/sciresource.h"
|
||||
#include "sci/include/engine.h"
|
||||
@ -139,10 +140,10 @@ int _reset_graphics_input(EngineState *s) {
|
||||
}
|
||||
} else {
|
||||
// Check for Amiga palette file.
|
||||
FILE *f = sci_fopen("spal", "rb");
|
||||
if (f) {
|
||||
s->gfx_state->resstate->static_palette = gfxr_read_pal1_amiga(&s->gfx_state->resstate->static_palette_entries, f);
|
||||
fclose(f);
|
||||
Common::File file;
|
||||
if (file.open("spal")) {
|
||||
s->gfx_state->resstate->static_palette = gfxr_read_pal1_amiga(&s->gfx_state->resstate->static_palette_entries, file);
|
||||
file.close();
|
||||
_sci1_alloc_system_colors(s);
|
||||
} else {
|
||||
resource = scir_find_resource(s->resmgr, sci_palette, 999, 1);
|
||||
|
@ -408,6 +408,23 @@ reg_t kStrCpy(EngineState *s, int funct_nr, int argc, reg_t *argv) {
|
||||
return argv[0];
|
||||
}
|
||||
|
||||
/* Simple heuristic to work around array handling peculiarity in SQ4:
|
||||
It uses StrAt() to read the individual elements, so we must determine
|
||||
whether a string is really a string or an array. */
|
||||
static int is_print_str(char *str) {
|
||||
int printable = 0;
|
||||
int len = strlen(str);
|
||||
|
||||
if (len == 0) return 1;
|
||||
|
||||
while (*str) {
|
||||
if (isprint(*str)) printable++;
|
||||
str++;
|
||||
}
|
||||
|
||||
return ((float)printable / (float)len >= 0.5);
|
||||
}
|
||||
|
||||
|
||||
reg_t kStrAt(EngineState *s, int funct_nr, int argc, reg_t *argv) {
|
||||
unsigned char *dest = (unsigned char *) kernel_dereference_bulk_pointer(s, argv[0], 0);
|
||||
|
@ -31,6 +31,10 @@
|
||||
#include "sci/gfx/gfx_system.h"
|
||||
#include "sci/gfx/gfx_driver.h"
|
||||
|
||||
namespace Common {
|
||||
class File;
|
||||
}
|
||||
|
||||
namespace Sci {
|
||||
|
||||
/*** Styles for pic0 drawing ***/
|
||||
@ -355,7 +359,7 @@ gfx_pixmap_color_t *gfxr_read_pal1(int id, int *colors_nr, byte *resource, int s
|
||||
** Returns : (gfx_pixmap_color_t *) *colors_nr color_t entries with the colors
|
||||
*/
|
||||
|
||||
gfx_pixmap_color_t *gfxr_read_pal1_amiga(int *colors_nr, FILE *f);
|
||||
gfx_pixmap_color_t *gfxr_read_pal1_amiga(int *colors_nr, Common::File &file);
|
||||
/* Reads an SCI1 palette
|
||||
** Parameters: (int *) colors_nr: Pointer to the variable the number of colors
|
||||
** will be stored in
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
/* SCI1 palette resource defrobnicator */
|
||||
|
||||
#include "common/file.h"
|
||||
#include "sci/include/sci_memory.h"
|
||||
#include "sci/gfx/gfx_system.h"
|
||||
#include "sci/gfx/gfx_resource.h"
|
||||
@ -132,7 +133,7 @@ gfx_pixmap_color_t *gfxr_read_pal1(int id, int *colors_nr, byte *resource, int s
|
||||
return retval;
|
||||
}
|
||||
|
||||
gfx_pixmap_color_t *gfxr_read_pal1_amiga(int *colors_nr, FILE *f) {
|
||||
gfx_pixmap_color_t *gfxr_read_pal1_amiga(int *colors_nr, Common::File &file) {
|
||||
int i;
|
||||
gfx_pixmap_color_t *retval;
|
||||
|
||||
@ -141,8 +142,8 @@ gfx_pixmap_color_t *gfxr_read_pal1_amiga(int *colors_nr, FILE *f) {
|
||||
for (i = 0; i < 32; i++) {
|
||||
int b1, b2;
|
||||
|
||||
b1 = fgetc(f);
|
||||
b2 = fgetc(f);
|
||||
b1 = file.readByte();
|
||||
b2 = file.readByte();
|
||||
|
||||
if (b1 == EOF || b2 == EOF) {
|
||||
GFXERROR("Palette file ends prematurely\n");
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "sci/include/sci_memory.h"
|
||||
#include "sci/sfx/softseq.h"
|
||||
|
||||
#include "common/file.h"
|
||||
#include "common/frac.h"
|
||||
|
||||
namespace Sci {
|
||||
@ -112,7 +113,7 @@ static hw_channel_t hw_channels[HW_CHANNELS_NR];
|
||||
static int volume = 127;
|
||||
|
||||
/* Frequencies for every note */
|
||||
static int freq_table[] = {
|
||||
static const int freq_table[] = {
|
||||
58, 62, 65, 69, 73, 78, 82, 87,
|
||||
92, 98, 104, 110, 117, 124, 131, 139,
|
||||
147, 156, 165, 175, 185, 196, 208, 220,
|
||||
@ -360,7 +361,7 @@ static int32 read_int32(byte *data) {
|
||||
return (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
|
||||
}
|
||||
|
||||
static instrument_t *read_instrument(FILE *file, int *id) {
|
||||
static instrument_t *read_instrument(Common::File &file, int *id) {
|
||||
instrument_t *instrument;
|
||||
byte header[61];
|
||||
int size;
|
||||
@ -368,7 +369,7 @@ static instrument_t *read_instrument(FILE *file, int *id) {
|
||||
int loop_offset;
|
||||
int i;
|
||||
|
||||
if (fread(header, 1, 61, file) < 61) {
|
||||
if (file.read(header, 61) < 61) {
|
||||
sciprintf("[sfx:seq:amiga] Error: failed to read instrument header\n");
|
||||
return NULL;
|
||||
}
|
||||
@ -411,7 +412,7 @@ static instrument_t *read_instrument(FILE *file, int *id) {
|
||||
sciprintf(" Segment offsets: 0 %i %i\n", loop_offset, read_int32(header + 43));
|
||||
#endif
|
||||
instrument->samples = (int8 *) sci_malloc(size + 1);
|
||||
if (fread(instrument->samples, 1, size, file) < (unsigned int)size) {
|
||||
if (file.read(instrument->samples, size) < (unsigned int)size) {
|
||||
sciprintf("[sfx:seq:amiga] Error: failed to read instrument samples\n");
|
||||
return NULL;
|
||||
}
|
||||
@ -451,20 +452,17 @@ static int ami_set_option(sfx_softseq_t *self, const char *name, const char *val
|
||||
}
|
||||
|
||||
static int ami_init(sfx_softseq_t *self, byte *patch, int patch_len, byte *patch2, int patch2_len) {
|
||||
FILE *file;
|
||||
Common::File file;
|
||||
byte header[40];
|
||||
int i;
|
||||
|
||||
file = sci_fopen("bank.001", "rb");
|
||||
|
||||
if (!file) {
|
||||
if (!file.open("bank.001")) {
|
||||
sciprintf("[sfx:seq:amiga] Error: file bank.001 not found\n");
|
||||
return SFX_ERROR;
|
||||
}
|
||||
|
||||
if (fread(header, 1, 40, file) < 40) {
|
||||
if (file.read(header, 40) < 40) {
|
||||
sciprintf("[sfx:seq:amiga] Error: failed to read header of file bank.001\n");
|
||||
fclose(file);
|
||||
return SFX_ERROR;
|
||||
}
|
||||
|
||||
@ -494,7 +492,6 @@ static int ami_init(sfx_softseq_t *self, byte *patch, int patch_len, byte *patch
|
||||
|
||||
if (!instrument) {
|
||||
sciprintf("[sfx:seq:amiga] Error: failed to read bank.001\n");
|
||||
fclose(file);
|
||||
return SFX_ERROR;
|
||||
}
|
||||
|
||||
@ -506,8 +503,6 @@ static int ami_init(sfx_softseq_t *self, byte *patch, int patch_len, byte *patch
|
||||
bank.instruments[id] = instrument;
|
||||
}
|
||||
|
||||
fclose(file);
|
||||
|
||||
return SFX_OK;
|
||||
}
|
||||
|
||||
|
@ -53,16 +53,6 @@
|
||||
|
||||
namespace Sci {
|
||||
|
||||
// FIXME: Get rid of G_DIR_SEPARATOR / G_DIR_SEPARATOR_S
|
||||
#if _MSC_VER
|
||||
# define G_DIR_SEPARATOR_S "\\"
|
||||
# define G_DIR_SEPARATOR '\\'
|
||||
#else
|
||||
# define G_DIR_SEPARATOR_S "/"
|
||||
# define G_DIR_SEPARATOR '/'
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef _MSC_VER
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
@ -331,11 +321,6 @@ Common::String _fcaseseek(const char *fname) {
|
||||
// Expects *dir to be uninitialized and the caller to
|
||||
// free it afterwards */
|
||||
|
||||
if (strchr(fname, G_DIR_SEPARATOR)) {
|
||||
fprintf(stderr, "_fcaseseek() does not support subdirs\n");
|
||||
BREAKPOINT();
|
||||
}
|
||||
|
||||
// Look up the file, ignoring case
|
||||
Common::ArchiveMemberList files;
|
||||
SearchMan.listMatchingMembers(files, fname);
|
||||
@ -388,26 +373,6 @@ char *sci_getcwd() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef __DC__
|
||||
|
||||
int sci_fd_size(int fd) {
|
||||
return fs_total(fd);
|
||||
}
|
||||
|
||||
int sci_file_size(const char *fname) {
|
||||
int fd = fs_open(fname, O_RDONLY);
|
||||
int retval = -1;
|
||||
|
||||
if (fd != 0) {
|
||||
retval = sci_fd_size(fd);
|
||||
fs_close(fd);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int sci_fd_size(int fd) {
|
||||
struct stat fd_stat;
|
||||
|
||||
@ -426,23 +391,4 @@ int sci_file_size(const char *fname) {
|
||||
return fn_stat.st_size;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Simple heuristic to work around array handling peculiarity in SQ4:
|
||||
It uses StrAt() to read the individual elements, so we must determine
|
||||
whether a string is really a string or an array. */
|
||||
int is_print_str(char *str) {
|
||||
int printable = 0;
|
||||
int len = strlen(str);
|
||||
|
||||
if (len == 0) return 1;
|
||||
|
||||
while (*str) {
|
||||
if (isprint(*str)) printable++;
|
||||
str++;
|
||||
}
|
||||
|
||||
return ((float)printable / (float)len >= 0.5);
|
||||
}
|
||||
|
||||
} // End of namespace Sci
|
||||
|
@ -182,11 +182,6 @@ int sci_file_size(const char *fname);
|
||||
** Returns : (int) filesize of the file, -1 on error
|
||||
*/
|
||||
|
||||
/* Simple heuristic to work around array handling peculiarity in SQ4:
|
||||
It uses StrAt() to read the individual elements, so we must determine
|
||||
whether a string is really a string or an array. */
|
||||
int is_print_str(char *str);
|
||||
|
||||
/** Find first set bit in bits and return its index. Returns 0 if bits is 0. */
|
||||
int sci_ffs(int bits);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user