From 8303f7c770c2c56082b4ec4637f09f674f5619cb Mon Sep 17 00:00:00 2001 From: kichikuou Date: Sun, 8 Dec 2024 14:30:40 +0900 Subject: [PATCH] Refactor FILEIO --- src/fileio.cpp | 102 ++++++---------------------------- src/fileio.h | 43 ++++++++------ src/sdlmain.cpp | 2 +- src/sys/ags.cpp | 17 +++--- src/sys/dri.cpp | 30 +++++----- src/sys/msgskip.cpp | 22 ++++---- src/sys/nact.cpp | 13 ++--- src/sys/nact_crc32.cpp | 8 +-- src/sys/nact_sys1.cpp | 91 +++++++++++++++--------------- src/sys/nact_sys2.cpp | 91 +++++++++++++++--------------- src/sys/nact_sys3.cpp | 123 +++++++++++++++++++---------------------- 11 files changed, 229 insertions(+), 313 deletions(-) diff --git a/src/fileio.cpp b/src/fileio.cpp index bfe7819..f3a8b6d 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -39,104 +39,50 @@ std::string FindFile(const std::string& dir, const char* filename) { } // namespace -void FILEIO::SetSaveDir(const std::string& dir) +void FILEIO::set_savedir(const std::string& dir) { savedir = dir; while (!savedir.empty() && savedir.back() == '/') savedir.pop_back(); } -int FILEIO::StatSavedata(const char* filename, struct stat* buf) +int FILEIO::stat_save(const char* filename, struct stat* buf) { return stat(FindFile(savedir, filename).c_str(), buf); } FILEIO::~FILEIO(void) { - if(fp != NULL) { - Fclose(); - } -} - -bool FILEIO::Fopen(const char *file_name, int mode) -{ - mode_ = mode; - std::string path = - FindFile((mode & FILEIO_SAVEDATA) ? savedir : ".", file_name); - - mode &= ~FILEIO_SAVEDATA; - - if(fp != NULL) { - Fclose(); - } - fp = NULL; - - if(mode == FILEIO_READ_BINARY) { - fp = fopen(path.c_str(), "rb"); - } else if(mode == FILEIO_WRITE_BINARY) { - fp = fopen(path.c_str(), "wb"); - } - return (fp != NULL); -} - -void FILEIO::Fclose() -{ - if(fp) { - fclose(fp); - } - fp = NULL; - + fclose(fp); #ifdef __EMSCRIPTEN__ if (mode_ & FILEIO_WRITE_BINARY) EM_ASM( xsystem35.shell.syncfs(); ); #endif } -uint32 FILEIO::Fseek(long offset, int origin) +// static +std::unique_ptr FILEIO::open(const char *file_name, int mode) { - uint32 val = 0xFFFFFFFF; - if(origin == FILEIO_SEEK_CUR) { - val = fseek(fp, offset, SEEK_CUR); - } else if(origin == FILEIO_SEEK_END) { - val = fseek(fp, offset, SEEK_END); - } else if(origin == FILEIO_SEEK_SET) { - val = fseek(fp, offset, SEEK_SET); + std::string path = + FindFile((mode & FILEIO_SAVEDATA) ? savedir : ".", file_name); + + mode &= ~FILEIO_SAVEDATA; + + FILE* fp = NULL; + if(mode == FILEIO_READ_BINARY) { + fp = fopen(path.c_str(), "rb"); + } else if(mode == FILEIO_WRITE_BINARY) { + fp = fopen(path.c_str(), "wb"); } - return val; + return fp ? std::unique_ptr(new FILEIO(fp, mode)) : nullptr; } -uint32 FILEIO::Ftell() -{ - return ftell(fp); -} - -size_t FILEIO::Fread(void* buffer, uint32 size, uint32 count) -{ - return fread(buffer, size, count, fp); -} - -size_t FILEIO::Fwrite(void* buffer, uint32 size, uint32 count) -{ - return fwrite(buffer, size, count, fp); -} - -int FILEIO::Fgetc() -{ - return fgetc(fp); -} - -int FILEIO::Fgetw() -{ - int val = Fgetc(); - return val | (Fgetc() << 8); -} - -void FILEIO::Fgets(char *dest, int length) +void FILEIO::ag00_gets(char *dest, int length) { int p = 0; for(;;) { - int c = Fgetc(); + int c = getc(); if(c == 0x0d || c == EOF) { break; } @@ -148,15 +94,3 @@ void FILEIO::Fgets(char *dest, int length) } dest[p] = '\0'; } - -void FILEIO::Fputc(int c) -{ - fputc(c, fp); -} - -void FILEIO::Fputw(int w) -{ - Fputc(w & 0xff); - Fputc((w >> 8) & 0xff); -} - diff --git a/src/fileio.h b/src/fileio.h index bf1321f..cb65368 100644 --- a/src/fileio.h +++ b/src/fileio.h @@ -7,6 +7,7 @@ #ifndef _FILEIO_H_ #define _FILEIO_H_ +#include #include #include #include @@ -16,33 +17,39 @@ #define FILEIO_WRITE_BINARY 2 #define FILEIO_SAVEDATA 4 -#define FILEIO_SEEK_SET 0 -#define FILEIO_SEEK_CUR 1 -#define FILEIO_SEEK_END 2 - class FILEIO { private: + FILEIO(FILE* fp_, int mode) : fp(fp_), mode_(mode) {} + static std::string savedir; FILE* fp; int mode_; + public: - FILEIO() : fp(NULL), mode_(0) {} ~FILEIO(); - static void SetSaveDir(const std::string& dir); - static int StatSavedata(const char* filename, struct stat* buf); - bool Fopen(const char *file_name, int mode); - void Fclose(); - uint32 Fseek(long offset, int origin); - uint32 Ftell(); - size_t Fread(void* buffer, uint32 size, uint32 count); - size_t Fwrite(void* buffer, uint32 size, uint32 count); - int Fgetc(); - int Fgetw(); - void Fgets(char* dest, int length); - void Fputc(int c); - void Fputw(int w); + static void set_savedir(const std::string& dir); + static int stat_save(const char* filename, struct stat* buf); + static std::unique_ptr open(const char *file_name, int mode); + int seek(long offset, int whence) { return fseek(fp, offset, whence); } + bool read(void* buffer, size_t size) { + return fread(buffer, size, 1, fp) == 1; + } + bool write(void* buffer, size_t size) { + return fwrite(buffer, size, 1, fp) == 1; + } + int getc() { return fgetc(fp); } + int getw() { + int val = getc(); + return val | (getc() << 8); + } + void putc(int c) { fputc(c, fp); } + void putw(int w) { + putc(w & 0xff); + putc((w >> 8) & 0xff); + } + void ag00_gets(char* dest, int length); }; #endif diff --git a/src/sdlmain.cpp b/src/sdlmain.cpp index 5396ed8..321b6d5 100644 --- a/src/sdlmain.cpp +++ b/src/sdlmain.cpp @@ -68,7 +68,7 @@ int main(int argc, char *argv[]) #endif } } - FILEIO::SetSaveDir(path); + FILEIO::set_savedir(path); } const char* title = g_nact->get_title(); diff --git a/src/sys/ags.cpp b/src/sys/ags.cpp index 2c85843..91ec1e8 100644 --- a/src/sys/ags.cpp +++ b/src/sys/ags.cpp @@ -129,11 +129,11 @@ AGS::AGS(NACT* parent, const Config& config) : nact(parent), dirty(false) // GAIJI.DAT読み込み memset(gaiji, 0, sizeof(gaiji)); - FILEIO* fio = new FILEIO(); - if(fio->Fopen("GAIJI.DAT", FILEIO_READ_BINARY)) { + auto fio = FILEIO::open("GAIJI.DAT", FILEIO_READ_BINARY); + if (fio) { int d1, d2; - while((d1 = fio->Fgetc()) != EOF) { - d2 = fio->Fgetc(); + while((d1 = fio->getc()) != EOF) { + d2 = fio->getc(); // jis to sjis d1 += (d2 & 1) ? 0x1f : 0x7d; d1 += (d1 > 0x7f) ? 1 : 0; @@ -143,19 +143,18 @@ AGS::AGS(NACT* parent, const Config& config) : nact(parent), dirty(false) if(0xeb9f <= code && code <= 0xebfc) { for(int i = 0; i < 32; i++) { - gaiji[code - 0xeb9f][i] = fio->Fgetc(); + gaiji[code - 0xeb9f][i] = fio->getc(); } } else if(0xec40 <= code && code <= 0xec9e) { for(int i = 0; i < 32; i++) { - gaiji[code - 0xec40 + 94][i] = fio->Fgetc(); + gaiji[code - 0xec40 + 94][i] = fio->getc(); } } else { - fio->Fseek(32, FILEIO_SEEK_CUR); + fio->seek(32, SEEK_CUR); } } - fio->Fclose(); } - delete fio; + fio.reset(); // SYSTEM3 初期化 diff --git a/src/sys/dri.cpp b/src/sys/dri.cpp index 0c45391..1753ecc 100644 --- a/src/sys/dri.cpp +++ b/src/sys/dri.cpp @@ -16,18 +16,16 @@ void Dri::open(const char* file_name) fname = file_name; fname[0] = 'A'; - auto fio = std::make_unique(); - if (!fio->Fopen(fname.c_str(), FILEIO_READ_BINARY)) + auto fio = FILEIO::open(fname.c_str(), FILEIO_READ_BINARY); + if (!fio) return; - int link_sector = fio->Fgetc(); - link_sector |= fio->Fgetc() << 8; - int data_sector = fio->Fgetc(); - data_sector |= fio->Fgetc() << 8; + int link_sector = fio->getw(); + int data_sector = fio->getw(); link_table.resize((data_sector - link_sector) * 256); - fio->Fseek((link_sector - 1) * 256, FILEIO_SEEK_SET); - fio->Fread(link_table.data(), 256, data_sector - link_sector); + fio->seek((link_sector - 1) * 256, SEEK_SET); + fio->read(link_table.data(), 256 * (data_sector - link_sector)); } std::vector Dri::load(int page) @@ -40,22 +38,20 @@ std::vector Dri::load(int page) if (disk_index == 0 || disk_index == 0x1a) return {}; - auto fio = std::make_unique(); fname[0] = 'A' + disk_index - 1; - if (!fio->Fopen(fname.c_str(), FILEIO_READ_BINARY)) + auto fio = FILEIO::open(fname.c_str(), FILEIO_READ_BINARY); + if (!fio) return {}; - fio->Fseek(link_index * 2, FILEIO_SEEK_SET); - int start_sector = fio->Fgetc(); - start_sector |= fio->Fgetc() << 8; - int end_sector = fio->Fgetc(); - end_sector |= fio->Fgetc() << 8; + fio->seek(link_index * 2, SEEK_SET); + int start_sector = fio->getw(); + int end_sector = fio->getw(); if (end_sector <= start_sector) return {}; std::vector buffer((end_sector - start_sector) * 256); - fio->Fseek((start_sector - 1) * 256, FILEIO_SEEK_SET); - fio->Fread(buffer.data(), 256, end_sector - start_sector); + fio->seek((start_sector - 1) * 256, SEEK_SET); + fio->read(buffer.data(), 256 * (end_sector - start_sector)); return buffer; } diff --git a/src/sys/msgskip.cpp b/src/sys/msgskip.cpp index a367dfc..936e36e 100644 --- a/src/sys/msgskip.cpp +++ b/src/sys/msgskip.cpp @@ -38,13 +38,12 @@ MsgSkip::~MsgSkip() void MsgSkip::load_from_file() { - FILEIO fio; - if (fio.Fopen(MSGSKIP_FILENAME, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { - uint32 size = fio.Fgetw(); - size |= fio.Fgetw() << 16; + auto fio = FILEIO::open(MSGSKIP_FILENAME, FILEIO_READ_BINARY | FILEIO_SAVEDATA); + if (fio) { + uint32 size = fio->getw(); + size |= fio->getw() << 16; if (size == BLOOM_FILTER_SIZE) - fio.Fread(bloom, BLOOM_FILTER_SIZE / 8, 1); - fio.Fclose(); + fio->read(bloom, BLOOM_FILTER_SIZE / 8); } } @@ -52,12 +51,11 @@ bool MsgSkip::write_to_file() { if (!dirty) return false; - FILEIO fio; - if (fio.Fopen(MSGSKIP_FILENAME, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { - fio.Fputw(BLOOM_FILTER_SIZE & 0xffff); - fio.Fputw(BLOOM_FILTER_SIZE >> 16); - fio.Fwrite(bloom, BLOOM_FILTER_SIZE / 8, 1); - fio.Fclose(); + auto fio = FILEIO::open(MSGSKIP_FILENAME, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA); + if (fio) { + fio->putw(BLOOM_FILTER_SIZE & 0xffff); + fio->putw(BLOOM_FILTER_SIZE >> 16); + fio->write(bloom, BLOOM_FILTER_SIZE / 8); dirty = false; } return true; diff --git a/src/sys/nact.cpp b/src/sys/nact.cpp index dd7695a..8b97e3a 100644 --- a/src/sys/nact.cpp +++ b/src/sys/nact.cpp @@ -31,26 +31,25 @@ NACT::NACT(int sys_ver, uint32 crc32_a, uint32 crc32_b, const Config& config) platform_initialize(); // AG00.DAT読み込み - FILEIO* fio = new FILEIO(); - if(fio->Fopen("AG00.DAT", FILEIO_READ_BINARY)) { + auto fio = FILEIO::open("AG00.DAT", FILEIO_READ_BINARY); + if (fio) { int d0, d1, d2, d3; char string[MAX_CAPTION]; - fio->Fgets(string, MAX_CAPTION); + fio->ag00_gets(string, MAX_CAPTION); if (sscanf_s(string, "%d,%d,%d,%d", &d0, &d1, &d2, &d3) != 4) fatal("AG00.DAT: parse error"); for(int i = 0; i < d1; i++) { // 動詞の読み込み - fio->Fgets(string, MAX_CAPTION); + fio->ag00_gets(string, MAX_CAPTION); memcpy(caption_verb[i], string, sizeof(string)); } for(int i = 0; i < d2; i++) { // 目的語の読み込み - fio->Fgets(string, MAX_CAPTION); + fio->ag00_gets(string, MAX_CAPTION); memcpy(caption_obj[i], string, sizeof(string)); } - fio->Fclose(); + fio.reset(); } - delete fio; // ADISK.DAT if (crc32_a == CRC32_PROG_OMAKE) diff --git a/src/sys/nact_crc32.cpp b/src/sys/nact_crc32.cpp index b9b8afb..ebe2e10 100644 --- a/src/sys/nact_crc32.cpp +++ b/src/sys/nact_crc32.cpp @@ -104,9 +104,9 @@ uint32 NACT::calc_crc32(const char* file_name, const std::string& game_id) } uint32 crc = 0; - FILEIO* fio = new FILEIO(); + auto fio = FILEIO::open(file_name, FILEIO_READ_BINARY); - if(fio->Fopen(file_name, FILEIO_READ_BINARY)) { + if (fio) { uint32 table[256]; for(int i = 0; i < 256; i++) { uint32 c = i; @@ -121,14 +121,12 @@ uint32 NACT::calc_crc32(const char* file_name, const std::string& game_id) } // ADISK.DATの先頭256bytes for(int i = 0; i < 256; i++) { - int d = fio->Fgetc(); + int d = fio->getc(); uint32 c = ~crc; c = table[(c ^ d) & 0xff] ^ (c >> 8); crc = ~c; } - fio->Fclose(); } - delete fio; return crc; } diff --git a/src/sys/nact_sys1.cpp b/src/sys/nact_sys1.cpp index 8f77318..db03402 100644 --- a/src/sys/nact_sys1.cpp +++ b/src/sys/nact_sys1.cpp @@ -691,42 +691,42 @@ void NACT_Sys1::cmd_l() char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { - fio->Fseek(112, FILEIO_SEEK_SET); + auto fio = FILEIO::open(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA); + if (fio) { + fio->seek(112, SEEK_SET); - int next_page = fio->Fgetw() - 1; - fio->Fgetw(); - fio->Fgetw(); // cg no? - fio->Fgetw(); - int next_music = fio->Fgetw(); - fio->Fgetw(); - int next_addr = fio->Fgetw(); - fio->Fgetw(); + int next_page = fio->getw() - 1; + fio->getw(); + fio->getw(); // cg no? + fio->getw(); + int next_music = fio->getw(); + fio->getw(); + int next_addr = fio->getw(); + fio->getw(); for(int i = 0; i < 512; i++) { - var[i] = fio->Fgetw(); + var[i] = fio->getw(); } - ags->menu_font_size = fio->Fgetw(); - ags->text_font_size = fio->Fgetw(); - ags->palette_bank = fio->Fgetw(); + ags->menu_font_size = fio->getw(); + ags->text_font_size = fio->getw(); + ags->palette_bank = fio->getw(); if(!ags->palette_bank) { ags->palette_bank = -1; } - ags->text_font_color = fio->Fgetw(); - ags->menu_font_color = fio->Fgetw(); - ags->menu_frame_color = fio->Fgetw(); - ags->menu_back_color = fio->Fgetw(); - ags->text_frame_color = fio->Fgetw(); - ags->text_back_color = fio->Fgetw(); + ags->text_font_color = fio->getw(); + ags->menu_font_color = fio->getw(); + ags->menu_frame_color = fio->getw(); + ags->menu_back_color = fio->getw(); + ags->text_frame_color = fio->getw(); + ags->text_back_color = fio->getw(); for(int i = 0; i < 10; i++) { - ags->menu_w[i].sx = fio->Fgetw(); - ags->menu_w[i].sy = fio->Fgetw(); - ags->menu_w[i].ex = fio->Fgetw(); - ags->menu_w[i].ey = fio->Fgetw(); - ags->menu_w[i].push = fio->Fgetw() ? true : false; - ags->menu_w[i].frame = fio->Fgetw() ? true : false; - fio->Fgetw(); - fio->Fgetw(); + ags->menu_w[i].sx = fio->getw(); + ags->menu_w[i].sy = fio->getw(); + ags->menu_w[i].ex = fio->getw(); + ags->menu_w[i].ey = fio->getw(); + ags->menu_w[i].push = fio->getw() ? true : false; + ags->menu_w[i].frame = fio->getw() ? true : false; + fio->getw(); + fio->getw(); if(ags->menu_w[i].screen) { free(ags->menu_w[i].screen); @@ -738,14 +738,14 @@ void NACT_Sys1::cmd_l() ags->menu_w[i].window = NULL; } for(int i = 0; i < 10; i++) { - ags->text_w[i].sx = fio->Fgetw(); - ags->text_w[i].sy = fio->Fgetw(); - ags->text_w[i].ex = fio->Fgetw(); - ags->text_w[i].ey = fio->Fgetw(); - ags->text_w[i].push = fio->Fgetw() ? true : false; - ags->text_w[i].frame = fio->Fgetw() ? true : false; - fio->Fgetw(); - fio->Fgetw(); + ags->text_w[i].sx = fio->getw(); + ags->text_w[i].sy = fio->getw(); + ags->text_w[i].ex = fio->getw(); + ags->text_w[i].ey = fio->getw(); + ags->text_w[i].push = fio->getw() ? true : false; + ags->text_w[i].frame = fio->getw() ? true : false; + fio->getw(); + fio->getw(); if(ags->text_w[i].screen) { free(ags->text_w[i].screen); @@ -757,19 +757,19 @@ void NACT_Sys1::cmd_l() ags->text_w[i].window = NULL; } for(int i = 0; i < 10; i++) { - fio->Fread(tvar[i], 22, 1); + fio->read(tvar[i], 22); } for(int i = 0; i < 30; i++) { for(int j = 0; j < 10; j++) { - fio->Fread(tvar_stack[i][j], 22, 1); + fio->read(tvar_stack[i][j], 22); } } for(int i = 0; i < 30; i++) { for(int j = 0; j < 20; j++) { - var_stack[i][j] = fio->Fgetw(); + var_stack[i][j] = fio->getw(); } } - fio->Fclose(); + fio.reset(); load_scenario(next_page); scenario_page = next_page; @@ -777,7 +777,6 @@ void NACT_Sys1::cmd_l() mako->play_music(next_music); } - delete fio; } } @@ -839,8 +838,8 @@ void NACT_Sys1::cmd_q() char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { + auto fio = FILEIO::open(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA); + if (fio) { uint8 buffer[9510]; int p = 0; @@ -899,10 +898,8 @@ void NACT_Sys1::cmd_q() } } - fio->Fwrite(buffer, 9510, 1); - fio->Fclose(); + fio->write(buffer, 9510); } - delete fio; } } diff --git a/src/sys/nact_sys2.cpp b/src/sys/nact_sys2.cpp index 487aaf3..acf7a16 100644 --- a/src/sys/nact_sys2.cpp +++ b/src/sys/nact_sys2.cpp @@ -750,42 +750,42 @@ void NACT_Sys2::cmd_l() char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { - fio->Fseek(112, FILEIO_SEEK_SET); + auto fio = FILEIO::open(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA); + if (fio) { + fio->seek(112, SEEK_SET); - int next_page = fio->Fgetw() - 1; - fio->Fgetw(); - fio->Fgetw(); // cg no? - fio->Fgetw(); - int next_music = fio->Fgetw(); - fio->Fgetw(); - int next_addr = fio->Fgetw(); - fio->Fgetw(); + int next_page = fio->getw() - 1; + fio->getw(); + fio->getw(); // cg no? + fio->getw(); + int next_music = fio->getw(); + fio->getw(); + int next_addr = fio->getw(); + fio->getw(); for(int i = 0; i < 512; i++) { - var[i] = fio->Fgetw(); + var[i] = fio->getw(); } - ags->menu_font_size = fio->Fgetw(); - ags->text_font_size = fio->Fgetw(); - ags->palette_bank = fio->Fgetw(); + ags->menu_font_size = fio->getw(); + ags->text_font_size = fio->getw(); + ags->palette_bank = fio->getw(); if(!ags->palette_bank) { ags->palette_bank = -1; } - ags->text_font_color = fio->Fgetw(); - ags->menu_font_color = fio->Fgetw(); - ags->menu_frame_color = fio->Fgetw(); - ags->menu_back_color = fio->Fgetw(); - ags->text_frame_color = fio->Fgetw(); - ags->text_back_color = fio->Fgetw(); + ags->text_font_color = fio->getw(); + ags->menu_font_color = fio->getw(); + ags->menu_frame_color = fio->getw(); + ags->menu_back_color = fio->getw(); + ags->text_frame_color = fio->getw(); + ags->text_back_color = fio->getw(); for(int i = 0; i < 10; i++) { - ags->menu_w[i].sx = fio->Fgetw(); - ags->menu_w[i].sy = fio->Fgetw(); - ags->menu_w[i].ex = fio->Fgetw(); - ags->menu_w[i].ey = fio->Fgetw(); - ags->menu_w[i].push = fio->Fgetw() ? true : false; - ags->menu_w[i].frame = fio->Fgetw() ? true : false; - fio->Fgetw(); - fio->Fgetw(); + ags->menu_w[i].sx = fio->getw(); + ags->menu_w[i].sy = fio->getw(); + ags->menu_w[i].ex = fio->getw(); + ags->menu_w[i].ey = fio->getw(); + ags->menu_w[i].push = fio->getw() ? true : false; + ags->menu_w[i].frame = fio->getw() ? true : false; + fio->getw(); + fio->getw(); if(ags->menu_w[i].screen) { free(ags->menu_w[i].screen); @@ -797,14 +797,14 @@ void NACT_Sys2::cmd_l() ags->menu_w[i].window = NULL; } for(int i = 0; i < 10; i++) { - ags->text_w[i].sx = fio->Fgetw(); - ags->text_w[i].sy = fio->Fgetw(); - ags->text_w[i].ex = fio->Fgetw(); - ags->text_w[i].ey = fio->Fgetw(); - ags->text_w[i].push = fio->Fgetw() ? true : false; - ags->text_w[i].frame = fio->Fgetw() ? true : false; - fio->Fgetw(); - fio->Fgetw(); + ags->text_w[i].sx = fio->getw(); + ags->text_w[i].sy = fio->getw(); + ags->text_w[i].ex = fio->getw(); + ags->text_w[i].ey = fio->getw(); + ags->text_w[i].push = fio->getw() ? true : false; + ags->text_w[i].frame = fio->getw() ? true : false; + fio->getw(); + fio->getw(); if(ags->text_w[i].screen) { free(ags->text_w[i].screen); @@ -816,19 +816,19 @@ void NACT_Sys2::cmd_l() ags->text_w[i].window = NULL; } for(int i = 0; i < 10; i++) { - fio->Fread(tvar[i], 22, 1); + fio->read(tvar[i], 22); } for(int i = 0; i < 30; i++) { for(int j = 0; j < 10; j++) { - fio->Fread(tvar_stack[i][j], 22, 1); + fio->read(tvar_stack[i][j], 22); } } for(int i = 0; i < 30; i++) { for(int j = 0; j < 20; j++) { - var_stack[i][j] = fio->Fgetw(); + var_stack[i][j] = fio->getw(); } } - fio->Fclose(); + fio.reset(); load_scenario(next_page); scenario_page = next_page; @@ -836,7 +836,6 @@ void NACT_Sys2::cmd_l() mako->play_music(next_music); } - delete fio; } } @@ -929,8 +928,8 @@ void NACT_Sys2::cmd_q() char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { + auto fio = FILEIO::open(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA); + if (fio) { uint8 buffer[9510]; int p = 0; @@ -989,10 +988,8 @@ void NACT_Sys2::cmd_q() } } - fio->Fwrite(buffer, 9510, 1); - fio->Fclose(); + fio->write(buffer, 9510); } - delete fio; } } diff --git a/src/sys/nact_sys3.cpp b/src/sys/nact_sys3.cpp index f641b93..5ae4afd 100644 --- a/src/sys/nact_sys3.cpp +++ b/src/sys/nact_sys3.cpp @@ -603,60 +603,58 @@ void NACT_Sys3::cmd_l() if(index == 0) { // 特殊セーブ - FILEIO* fio = new FILEIO(); - if(fio->Fopen("ASLEEP.DAT", FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { + auto fio = FILEIO::open("ASLEEP.DAT", FILEIO_READ_BINARY | FILEIO_SAVEDATA); + if (fio) { // U01 - U20 for(int i = 21; i <= 40; i++) { - var[i] = fio->Fgetw(); + var[i] = fio->getw(); } // M1 - M10 for(int i = 0; i < 10; i++) { - fio->Fread(tvar[i], 22, 1); + fio->read(tvar[i], 22); } - fio->Fclose(); } - delete fio; } else if(1 <= index && index <= 26) { // ASLEEP_A.DAT - ASLEEP_Z.DAT char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { - fio->Fseek(112, FILEIO_SEEK_SET); + auto fio = FILEIO::open(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA); + if (fio) { + fio->seek(112, SEEK_SET); - int next_page = fio->Fgetw() - 1; - fio->Fgetw(); - fio->Fgetw(); // cg no? - fio->Fgetw(); - int next_music = fio->Fgetw(); - fio->Fgetw(); - int next_addr = fio->Fgetw(); - fio->Fgetw(); + int next_page = fio->getw() - 1; + fio->getw(); + fio->getw(); // cg no? + fio->getw(); + int next_music = fio->getw(); + fio->getw(); + int next_addr = fio->getw(); + fio->getw(); for(int i = 0; i < 512; i++) { - var[i] = fio->Fgetw(); + var[i] = fio->getw(); } - ags->menu_font_size = fio->Fgetw(); - ags->text_font_size = fio->Fgetw(); - ags->palette_bank = fio->Fgetw(); + ags->menu_font_size = fio->getw(); + ags->text_font_size = fio->getw(); + ags->palette_bank = fio->getw(); if(!ags->palette_bank) { ags->palette_bank = -1; } - ags->text_font_color = fio->Fgetw(); - ags->menu_font_color = fio->Fgetw(); - ags->menu_frame_color = fio->Fgetw(); - ags->menu_back_color = fio->Fgetw(); - ags->text_frame_color = fio->Fgetw(); - ags->text_back_color = fio->Fgetw(); + ags->text_font_color = fio->getw(); + ags->menu_font_color = fio->getw(); + ags->menu_frame_color = fio->getw(); + ags->menu_back_color = fio->getw(); + ags->text_frame_color = fio->getw(); + ags->text_back_color = fio->getw(); for(int i = 0; i < 10; i++) { - ags->menu_w[i].sx = fio->Fgetw(); - ags->menu_w[i].sy = fio->Fgetw(); - ags->menu_w[i].ex = fio->Fgetw(); - ags->menu_w[i].ey = fio->Fgetw(); - ags->menu_w[i].push = fio->Fgetw() ? true : false; - ags->menu_w[i].frame = fio->Fgetw() ? true : false; - fio->Fgetw(); - fio->Fgetw(); + ags->menu_w[i].sx = fio->getw(); + ags->menu_w[i].sy = fio->getw(); + ags->menu_w[i].ex = fio->getw(); + ags->menu_w[i].ey = fio->getw(); + ags->menu_w[i].push = fio->getw() ? true : false; + ags->menu_w[i].frame = fio->getw() ? true : false; + fio->getw(); + fio->getw(); if(ags->menu_w[i].screen) { free(ags->menu_w[i].screen); @@ -668,14 +666,14 @@ void NACT_Sys3::cmd_l() ags->menu_w[i].window = NULL; } for(int i = 0; i < 10; i++) { - ags->text_w[i].sx = fio->Fgetw(); - ags->text_w[i].sy = fio->Fgetw(); - ags->text_w[i].ex = fio->Fgetw(); - ags->text_w[i].ey = fio->Fgetw(); - ags->text_w[i].push = fio->Fgetw() ? true : false; - ags->text_w[i].frame = fio->Fgetw() ? true : false; - fio->Fgetw(); - fio->Fgetw(); + ags->text_w[i].sx = fio->getw(); + ags->text_w[i].sy = fio->getw(); + ags->text_w[i].ex = fio->getw(); + ags->text_w[i].ey = fio->getw(); + ags->text_w[i].push = fio->getw() ? true : false; + ags->text_w[i].frame = fio->getw() ? true : false; + fio->getw(); + fio->getw(); if(ags->text_w[i].screen) { free(ags->text_w[i].screen); @@ -687,19 +685,19 @@ void NACT_Sys3::cmd_l() ags->text_w[i].window = NULL; } for(int i = 0; i < 10; i++) { - fio->Fread(tvar[i], 22, 1); + fio->read(tvar[i], 22); } for(int i = 0; i < 30; i++) { for(int j = 0; j < 10; j++) { - fio->Fread(tvar_stack[i][j], 22, 1); + fio->read(tvar_stack[i][j], 22); } } for(int i = 0; i < 30; i++) { for(int j = 0; j < 20; j++) { - var_stack[i][j] = fio->Fgetw(); + var_stack[i][j] = fio->getw(); } } - fio->Fclose(); + fio.reset(); load_scenario(next_page); scenario_page = next_page; @@ -707,19 +705,16 @@ void NACT_Sys3::cmd_l() mako->play_music(next_music); } - delete fio; } else if(101 <= index && index <= 126) { // ASLEEP_A.DAT - ASLEEP_Z.DAT char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 101); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { - fio->Fseek(112 + 16, FILEIO_SEEK_SET); - var[0] = fio->Fgetw(); - fio->Fclose(); + auto fio = FILEIO::open(file_name, FILEIO_READ_BINARY | FILEIO_SAVEDATA); + if (fio) { + fio->seek(112 + 16, SEEK_SET); + var[0] = fio->getw(); } - delete fio; } } @@ -866,26 +861,24 @@ void NACT_Sys3::cmd_q() if(index == 0) { // 特殊セーブ - FILEIO* fio = new FILEIO(); - if(fio->Fopen("ASLEEP.DAT", FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { + auto fio = FILEIO::open("ASLEEP.DAT", FILEIO_WRITE_BINARY | FILEIO_SAVEDATA); + if (fio) { // U01 - U20 for(int i = 21; i <= 40; i++) { - fio->Fputw(var[i]); + fio->putw(var[i]); } // M1 - M10 for(int i = 0; i < 10; i++) { - fio->Fwrite(tvar[i], 22, 1); + fio->write(tvar[i], 22); } - fio->Fclose(); } - delete fio; } else if(1 <= index && index <= 26) { // ASLEEP_A.DAT - ASLEEP_Z.DAT char file_name[_MAX_PATH]; snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + index - 1); - FILEIO* fio = new FILEIO(); - if(fio->Fopen(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { + auto fio = FILEIO::open(file_name, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA); + if (fio) { uint8 buffer[9510]; int p = 0; @@ -944,10 +937,8 @@ void NACT_Sys3::cmd_q() } } - fio->Fwrite(buffer, 9510, 1); - fio->Fclose(); + fio->write(buffer, 9510); } - delete fio; } } @@ -1349,7 +1340,7 @@ void NACT_Sys3::cmd_y() snprintf(file_name, _MAX_PATH, "ASLEEP_%c.DAT", 'A' + param - 1); struct stat statbuf; - if (FILEIO::StatSavedata(file_name, &statbuf) != -1) { + if (FILEIO::stat_save(file_name, &statbuf) != -1) { struct tm *t = localtime(&statbuf.st_mtime); D01 = t->tm_year + 1900; D02 = t->tm_mon + 1;