|
@@ -33,6 +33,7 @@
|
|
#endif
|
|
#endif
|
|
|
|
|
|
static char internal_buffer[PAL_MAX_GLOBAL_BUFFERS + 1][PAL_GLOBAL_BUFFER_SIZE];
|
|
static char internal_buffer[PAL_MAX_GLOBAL_BUFFERS + 1][PAL_GLOBAL_BUFFER_SIZE];
|
|
|
|
+#define INTERNAL_BUFFER_SIZE_ARGS internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE
|
|
|
|
|
|
void UTIL_MsgBox(char *string)
|
|
void UTIL_MsgBox(char *string)
|
|
{
|
|
{
|
|
@@ -524,7 +525,7 @@ UTIL_OpenFileAtPathForMode(
|
|
//
|
|
//
|
|
// Construct full path according to lpszPath and lpszFileName
|
|
// Construct full path according to lpszPath and lpszFileName
|
|
//
|
|
//
|
|
- const char *path = UTIL_GetFullPathName(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, lpszPath, lpszFileName);
|
|
|
|
|
|
+ const char *path = UTIL_GetFullPathName(INTERNAL_BUFFER_SIZE_ARGS, lpszPath, lpszFileName);
|
|
|
|
|
|
//
|
|
//
|
|
// If no matching path, check the open mode
|
|
// If no matching path, check the open mode
|
|
@@ -535,7 +536,7 @@ UTIL_OpenFileAtPathForMode(
|
|
}
|
|
}
|
|
else if (szMode[0] != 'r')
|
|
else if (szMode[0] != 'r')
|
|
{
|
|
{
|
|
- return fopen(UTIL_CombinePath(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, 2, lpszPath, lpszFileName), szMode);
|
|
|
|
|
|
+ return fopen(UTIL_CombinePath(INTERNAL_BUFFER_SIZE_ARGS, 2, lpszPath, lpszFileName), szMode);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -585,7 +586,7 @@ UTIL_GetFullPathName(
|
|
char *_base = strdup(basepath), *_sub = strdup(subpath);
|
|
char *_base = strdup(basepath), *_sub = strdup(subpath);
|
|
const char *result = NULL;
|
|
const char *result = NULL;
|
|
|
|
|
|
- if (access(UTIL_CombinePath(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, 2, _base, _sub), 0) == 0)
|
|
|
|
|
|
+ if (access(UTIL_CombinePath(INTERNAL_BUFFER_SIZE_ARGS, 2, _base, _sub), 0) == 0)
|
|
{
|
|
{
|
|
result = internal_buffer[PAL_MAX_GLOBAL_BUFFERS];
|
|
result = internal_buffer[PAL_MAX_GLOBAL_BUFFERS];
|
|
}
|
|
}
|
|
@@ -610,9 +611,9 @@ UTIL_GetFullPathName(
|
|
{
|
|
{
|
|
if (!result && strcasecmp(list[n]->d_name, start) == 0)
|
|
if (!result && strcasecmp(list[n]->d_name, start) == 0)
|
|
{
|
|
{
|
|
- result = UTIL_CombinePath(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, 2, _base, list[n]->d_name);
|
|
|
|
|
|
+ result = UTIL_CombinePath(INTERNAL_BUFFER_SIZE_ARGS, 2, _base, list[n]->d_name);
|
|
if (end)
|
|
if (end)
|
|
- result = UTIL_GetFullPathName(internal_buffer[PAL_MAX_GLOBAL_BUFFERS], PAL_GLOBAL_BUFFER_SIZE, result, end + 1);
|
|
|
|
|
|
+ result = UTIL_GetFullPathName(INTERNAL_BUFFER_SIZE_ARGS, result, end + 1);
|
|
else if (access(result, 0) != 0)
|
|
else if (access(result, 0) != 0)
|
|
result = NULL;
|
|
result = NULL;
|
|
}
|
|
}
|
|
@@ -703,6 +704,63 @@ UTIL_GlobalBuffer(
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+PALFILE
|
|
|
|
+UTIL_CheckResourceFiles(
|
|
|
|
+ const char *path,
|
|
|
|
+ const char *msgfile
|
|
|
|
+)
|
|
|
|
+{
|
|
|
|
+ const char *common_files[] = {
|
|
|
|
+ "abc.mkf", "ball.mkf", "data.mkf", "f.mkf",
|
|
|
|
+ "fbp.mkf", "fire.mkf", "gop.mkf", "map.mkf",
|
|
|
|
+ "mgo.mkf", "pat.mkf", "rgm.mkf", "rng.mkf",
|
|
|
|
+ "sss.mkf"
|
|
|
|
+ };
|
|
|
|
+ const char *msg_files[][2] = {
|
|
|
|
+ { msgfile, "m.msg" },
|
|
|
|
+ { msgfile, "word.dat" }
|
|
|
|
+ };
|
|
|
|
+ const char *sound_files[2] = { "voc.mkf", "sounds.mkf" };
|
|
|
|
+ const char *music_files[2] = { "midi.mkf", "mus.mkf" };
|
|
|
|
+ int msgidx = !(msgfile && *msgfile);
|
|
|
|
+ PALFILE retval = (PALFILE)0;
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < sizeof(common_files) / sizeof(common_files[0]); i++)
|
|
|
|
+ {
|
|
|
|
+ if (!UTIL_GetFullPathName(INTERNAL_BUFFER_SIZE_ARGS, path, common_files[i]))
|
|
|
|
+ {
|
|
|
|
+ retval |= (PALFILE)(1 << i);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < sizeof(msg_files[0]) / sizeof(msg_files[0][0]); i++)
|
|
|
|
+ {
|
|
|
|
+ if (!UTIL_GetFullPathName(INTERNAL_BUFFER_SIZE_ARGS, path, msg_files[i][msgidx]))
|
|
|
|
+ {
|
|
|
|
+ retval |= (PALFILE)(1 << ((i + 1) * msgidx + 13));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < sizeof(sound_files) / sizeof(sound_files[0]); i++)
|
|
|
|
+ {
|
|
|
|
+ if (!UTIL_GetFullPathName(INTERNAL_BUFFER_SIZE_ARGS, path, sound_files[i]))
|
|
|
|
+ {
|
|
|
|
+ retval |= (PALFILE)(1 << (i + 16));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < sizeof(music_files) / sizeof(music_files[0]); i++)
|
|
|
|
+ {
|
|
|
|
+ if (!UTIL_GetFullPathName(INTERNAL_BUFFER_SIZE_ARGS, path, music_files[i]))
|
|
|
|
+ {
|
|
|
|
+ retval |= (PALFILE)(1 << (i + 18));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return retval;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
#if !defined(PAL_HAS_PLATFORM_SPECIFIC_UTILS)
|
|
#if !defined(PAL_HAS_PLATFORM_SPECIFIC_UTILS)
|
|
|
|
|
|
BOOL
|
|
BOOL
|