Add support for UTF-8 encoded scenario files

If `encoding = utf8` is specified in system3.ini, system3-sdl2 uses
UTF-8 as its multibyte character encoding. It will be used to run games
translated into non-(Japanese|English) languages.
This commit is contained in:
kichikuou
2021-09-04 15:21:52 +09:00
parent 92487ada06
commit 14d0033db3
8 changed files with 78 additions and 7 deletions
+1 -1
View File
@@ -24,7 +24,7 @@ NACT::NACT(int sys_ver, uint32 crc32_a, uint32 crc32_b, const Config& config)
crc32_a(crc32_a),
crc32_b(crc32_b),
lang(get_language()),
encoding(Encoding::create())
encoding(Encoding::create(get_encoding_name(config)))
{
platform_initialize();
+1
View File
@@ -258,6 +258,7 @@ public:
static const int get_sys_ver(uint32 crc32_a, uint32 crc32_b);
const char* get_title();
Language get_language();
const char* get_encoding_name(const Config& config);
void text_wait();
void set_skip_menu_state(bool enabled, bool checked);
+10
View File
@@ -8,6 +8,7 @@
#include <string.h>
#include "crc32.h"
#include "../fileio.h"
#include "config.h"
namespace {
@@ -156,3 +157,12 @@ Language NACT::get_language()
return entry->language;
return JAPANESE;
}
const char* NACT::get_encoding_name(const Config& config)
{
if (!config.encoding.empty())
return config.encoding.c_str();
// TODO: Determine encoding from crc32
return "Shift_JIS";
}