mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-09-22 22:58:12 +03:00
Replace NACT::fatal() with global sys_error()
This commit is contained in:
@@ -36,6 +36,8 @@ typedef int32_t int32;
|
||||
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, "%s:%d: " fmt, __func__, __LINE__, ##__VA_ARGS__)
|
||||
#define NOTICE SDL_Log
|
||||
|
||||
[[noreturn]] void sys_error(const char* format, ...);
|
||||
|
||||
#ifndef WIN32
|
||||
|
||||
#define _MAX_PATH PATH_MAX
|
||||
|
||||
@@ -119,6 +119,16 @@ int main(int argc, char *argv[])
|
||||
return exit_code;
|
||||
}
|
||||
|
||||
[[noreturn]] void sys_error(const char* format, ...) {
|
||||
char buf[512];
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vsnprintf(buf, sizeof buf, format, args);
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Fatal Error: %s", buf);
|
||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "system3", buf, g_window);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
|
||||
extern "C"
|
||||
|
||||
+3
-3
@@ -100,11 +100,11 @@ AGS::AGS(NACT* parent, const Config& config) : nact(parent), dirty(false)
|
||||
if (!config.font_file.empty()) {
|
||||
rw_font = open_file(config.font_file.c_str());
|
||||
if (!rw_font)
|
||||
parent->fatal("Cannot open font file %s", config.font_file.c_str());
|
||||
sys_error("Cannot open font file %s", config.font_file.c_str());
|
||||
} else {
|
||||
rw_font = open_resource(FONT_RESOURCE_NAME, "fonts");
|
||||
if (!rw_font)
|
||||
parent->fatal("Cannot open default font");
|
||||
sys_error("Cannot open default font");
|
||||
}
|
||||
hFont16 = TTF_OpenFontRW(rw_font, 0, 16);
|
||||
SDL_RWseek(rw_font, 0, SEEK_SET);
|
||||
@@ -116,7 +116,7 @@ AGS::AGS(NACT* parent, const Config& config) : nact(parent), dirty(false)
|
||||
SDL_RWseek(rw_font, 0, SEEK_SET);
|
||||
hFont64 = TTF_OpenFontRW(rw_font, 0, 64);
|
||||
if (!hFont16 || !hFont24 || !hFont32 || !hFont48 || !hFont64) {
|
||||
parent->fatal("TTF_OpenFontRW failed: %s", TTF_GetError());
|
||||
sys_error("TTF_OpenFontRW failed: %s", TTF_GetError());
|
||||
}
|
||||
if (config.no_antialias)
|
||||
ags_setAntialiasedStringMode(0);
|
||||
|
||||
+4
-14
@@ -37,7 +37,7 @@ NACT::NACT(int sys_ver, uint32 crc32_a, uint32 crc32_b, const Config& config)
|
||||
char 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");
|
||||
sys_error("AG00.DAT: parse error");
|
||||
for(int i = 0; i < d1; i++) {
|
||||
// 動詞の読み込み
|
||||
fio->ag00_gets(string, MAX_CAPTION);
|
||||
@@ -151,7 +151,7 @@ EMSCRIPTEN_KEEPALIVE // Prevent inlining, because this function is listed in AS
|
||||
void NACT::execute()
|
||||
{
|
||||
if (!sco.is_addr_valid()) {
|
||||
fatal("Scenario error: invalid address %d:0x%x", sco.page(), sco.addr());
|
||||
sys_error("Scenario error: invalid address %d:0x%x", sco.page(), sco.addr());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -293,9 +293,9 @@ void NACT::execute()
|
||||
sco.ungetd();
|
||||
message(0);
|
||||
} else if (cmd >= 0x20 && cmd < 0x7f) {
|
||||
fatal("Unknown Command: '%c' at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: '%c' at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
} else {
|
||||
fatal("Unknown Command: %02x at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: %02x at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -502,16 +502,6 @@ void NACT::select_cursor()
|
||||
ags->select_cursor();
|
||||
}
|
||||
|
||||
[[noreturn]] void NACT::fatal(const char* format, ...) {
|
||||
char buf[512];
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vsnprintf(buf, sizeof buf, format, args);
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Fatal Error: %s", buf);
|
||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "system3", buf, g_window);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
NACT* NACT::create(const Config& config) {
|
||||
uint32 crc32_a = NACT::calc_crc32("ADISK.DAT", config.game_id);
|
||||
uint32 crc32_b = NACT::calc_crc32("BDISK.DAT", config.game_id);
|
||||
|
||||
@@ -275,8 +275,6 @@ public:
|
||||
|
||||
int get_scenario_page() const { return sco.page(); }
|
||||
|
||||
[[noreturn]] void fatal(const char* msg, ...);
|
||||
|
||||
private:
|
||||
void pump_events();
|
||||
bool handle_platform_event(const SDL_Event& e);
|
||||
|
||||
+18
-18
@@ -222,9 +222,9 @@ void NACT_Sys1::cmd_branch()
|
||||
sco.ungetd();
|
||||
sco.skip(encoding->mblen(sco.ptr()));
|
||||
} else if (cmd >= 0x20 && cmd < 0x7f) {
|
||||
fatal("Unknown Command: '%c' at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: '%c' at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
} else {
|
||||
fatal("Unknown Command: %02x at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: %02x at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -605,19 +605,19 @@ void NACT_Sys1::cmd_a()
|
||||
void NACT_Sys1::cmd_b()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'B' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'B' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_d()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'D' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'D' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_e()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'E' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'E' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_f()
|
||||
@@ -655,25 +655,25 @@ void NACT_Sys1::cmd_g()
|
||||
void NACT_Sys1::cmd_h()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'H' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'H' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_i()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'I' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'I' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_j()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'J' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'J' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_k()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'K' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'K' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_l()
|
||||
@@ -777,19 +777,19 @@ void NACT_Sys1::cmd_l()
|
||||
void NACT_Sys1::cmd_m()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'M' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'M' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_n()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'N' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'N' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_o()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'O' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'O' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_p()
|
||||
@@ -925,7 +925,7 @@ void NACT_Sys1::cmd_s()
|
||||
void NACT_Sys1::cmd_t()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'T' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'T' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_u()
|
||||
@@ -949,13 +949,13 @@ void NACT_Sys1::cmd_u()
|
||||
void NACT_Sys1::cmd_v()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'V' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'V' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_w()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'W' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'W' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_x()
|
||||
@@ -1353,7 +1353,7 @@ uint16 NACT_Sys1::cali()
|
||||
}
|
||||
}
|
||||
if (!ok) {
|
||||
fatal("cali: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
return (uint16)(cali[1] & 0xffff);
|
||||
}
|
||||
@@ -1368,10 +1368,10 @@ uint16 NACT_Sys1::cali2()
|
||||
} else if(0xc0 <= dat && dat <= 0xff) {
|
||||
val = ((dat & 0x3f) << 8) | sco.getd();
|
||||
} else {
|
||||
fatal("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
if (sco.getd() != 0x7f) {
|
||||
fatal("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -260,9 +260,9 @@ void NACT_Sys2::cmd_branch()
|
||||
sco.ungetd();
|
||||
sco.skip(encoding->mblen(sco.ptr()));
|
||||
} else if (cmd >= 0x20 && cmd < 0x7f) {
|
||||
fatal("Unknown Command: '%c' at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: '%c' at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
} else {
|
||||
fatal("Unknown Command: %02x at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: %02x at page = %d, addr = %d", cmd, sco.page(), prev_addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1327,7 +1327,7 @@ uint16 NACT_Sys2::cali()
|
||||
}
|
||||
}
|
||||
if (!ok) {
|
||||
fatal("cali: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
return (uint16)(cali[1] & 0xffff);
|
||||
}
|
||||
@@ -1342,10 +1342,10 @@ uint16 NACT_Sys2::cali2()
|
||||
} else if(0xc0 <= dat && dat <= 0xff) {
|
||||
val = ((dat & 0x3f) << 8) | sco.getd();
|
||||
} else {
|
||||
fatal("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
if (sco.getd() != 0x7f) {
|
||||
fatal("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -386,7 +386,7 @@ void NACT_Sys3::cmd_b()
|
||||
void NACT_Sys3::cmd_d()
|
||||
{
|
||||
// 未使用
|
||||
fatal("Unknown Command: 'D' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
sys_error("Unknown Command: 'D' at page = %d, addr = %d", sco.page(), prev_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys3::cmd_e()
|
||||
@@ -1488,7 +1488,7 @@ uint16 NACT_Sys3::cali()
|
||||
}
|
||||
}
|
||||
if (!ok) {
|
||||
fatal("cali: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
return (uint16)(cali[1] & 0xffff);
|
||||
}
|
||||
@@ -1503,10 +1503,10 @@ uint16 NACT_Sys3::cali2()
|
||||
} else if(0xc0 <= dat && dat <= 0xff) {
|
||||
val = ((dat & 0x3f) << 8) | sco.getd();
|
||||
} else {
|
||||
fatal("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
if (sco.getd() != 0x7f) {
|
||||
fatal("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
sys_error("cali2: invalid expression at %d:%04x", sco.page(), sco.addr());
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "scenario.h"
|
||||
#include <string.h>
|
||||
#include "common.h"
|
||||
#include "encoding.h"
|
||||
|
||||
void Scenario::skip_string(Encoding *enc, uint8_t terminator)
|
||||
@@ -20,10 +21,10 @@ void Scenario::get_syseng_string(char* buf, int size, Encoding *enc, uint8_t ter
|
||||
if (c != '\\')
|
||||
ungetd();
|
||||
int len = enc->mblen(ptr());
|
||||
if (i + len < size - 1) {
|
||||
memcpy(&buf[i], ptr(), len);
|
||||
i += len;
|
||||
}
|
||||
if (i + len >= size)
|
||||
sys_error("String buffer overrun at %d:0x%x", page(), start_addr);
|
||||
memcpy(&buf[i], ptr(), len);
|
||||
i += len;
|
||||
skip(len);
|
||||
}
|
||||
buf[i] = '\0';
|
||||
|
||||
+2
-2
@@ -52,7 +52,7 @@ class MCIThread {
|
||||
public:
|
||||
MCIThread(NACT* nact, HWND hwnd_notify) : hwnd_notify(hwnd_notify) {
|
||||
if (!_beginthreadex(NULL, 0, &MCIThread::run, this, 0, &thread_id))
|
||||
nact->fatal("Cannot create thread: %s", strerror(errno));
|
||||
sys_error("Cannot create thread: %s", strerror(errno));
|
||||
}
|
||||
|
||||
bool post_message(UINT msg, WPARAM wparam, LPARAM lparam) {
|
||||
@@ -235,7 +235,7 @@ MAKO::MAKO(NACT* parent, const Config& config) :
|
||||
SDL_SysWMinfo info;
|
||||
SDL_VERSION(&info.version);
|
||||
if (!SDL_GetWindowWMInfo(g_window, &info))
|
||||
parent->fatal("SDL_GetWindowWMInfo failed: %s", SDL_GetError());
|
||||
sys_error("SDL_GetWindowWMInfo failed: %s", SDL_GetError());
|
||||
mci_thread = new MCIThread(parent, info.info.win.window);
|
||||
|
||||
midi = std::make_unique<MAKOMidi>(config.midi_device);
|
||||
|
||||
Reference in New Issue
Block a user