mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-09-22 22:58:12 +03:00
Rework NACT command tracing
- Now tracing is not a build-time config but a runtime option (`-trace`) - One command per line, so that traces are not mixed with other outputs - Send traces to DAP client - Fix garbled characters in non-SJIS environments
This commit is contained in:
+3
-4
@@ -34,7 +34,8 @@ if (ANDROID)
|
||||
src/android/nact_android.cpp
|
||||
src/generic/mako.cpp
|
||||
)
|
||||
target_link_libraries(system3 PRIVATE SDL2 SDL2_ttf SDL2_mixer ymfm)
|
||||
find_library(ndk_log log)
|
||||
target_link_libraries(system3 PRIVATE SDL2 SDL2_ttf SDL2_mixer ymfm ${ndk_log})
|
||||
|
||||
elseif (EMSCRIPTEN)
|
||||
add_executable(system3)
|
||||
@@ -216,7 +217,5 @@ if(NINTENDO_SWITCH)
|
||||
)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(system3 PRIVATE
|
||||
$<$<CONFIG:Debug>:_DEBUG_CONSOLE>
|
||||
RESOURCE_PATH="${RESOURCE_PATH}")
|
||||
target_compile_definitions(system3 PRIVATE RESOURCE_PATH="${RESOURCE_PATH}")
|
||||
target_include_directories(system3 PRIVATE src src/sys)
|
||||
|
||||
@@ -61,6 +61,9 @@ for translation or other purposes. The available modes are:
|
||||
Suppress text hook on specified scenario pages. _list_ is a comma-separated list
|
||||
of page numbers.
|
||||
|
||||
#### `-trace`
|
||||
Enables trace mode, which prints debug information to the console.
|
||||
|
||||
#### `-game` _game_id_
|
||||
As System1-3 have slight variations depending on the game, `system3` uses the
|
||||
fingerprint of the scenario file (ADISK.DAT) to identify the game being played.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <stdio.h>
|
||||
#include <android/log.h>
|
||||
#include "nact.h"
|
||||
#include "encoding.h"
|
||||
#include "jnihelper.h"
|
||||
@@ -36,15 +37,12 @@ void NACT::platform_finalize()
|
||||
{
|
||||
}
|
||||
|
||||
void NACT::output_console(const char *format, ...)
|
||||
void NACT::trace(const char *format, ...)
|
||||
{
|
||||
#if defined(_DEBUG_CONSOLE)
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stdout, format, ap);
|
||||
__android_log_vprint(ANDROID_LOG_INFO, "system3", format, ap);
|
||||
va_end(ap);
|
||||
#endif
|
||||
}
|
||||
|
||||
void NACT::set_skip_menu_state(bool enabled, bool checked)
|
||||
|
||||
@@ -156,6 +156,8 @@ Config::Config(int argc, char *argv[])
|
||||
else if (strcmp(argv[i], "-debugger") == 0)
|
||||
debugger_mode = parse_debugger_mode(argv[++i]);
|
||||
#endif
|
||||
else if (strcmp(argv[i], "-trace") == 0)
|
||||
trace = true;
|
||||
else if (strcmp(argv[i], "-texthook") == 0)
|
||||
texthook_mode = parse_texthook_mode(argv[++i]);
|
||||
else if (strcmp(argv[i], "-texthook_suppress") == 0)
|
||||
@@ -222,6 +224,8 @@ void Config::load_ini()
|
||||
else if (!strcasecmp(key, "debugger"))
|
||||
debugger_mode = parse_debugger_mode(val, lineno);
|
||||
#endif
|
||||
else if (!strcasecmp(key, "trace"))
|
||||
trace = to_bool(val, lineno);
|
||||
else if (!strcasecmp(key, "texthook"))
|
||||
texthook_mode = parse_texthook_mode(val, lineno);
|
||||
else if (!strcasecmp(key, "texthook_suppress"))
|
||||
|
||||
@@ -42,6 +42,7 @@ struct Config {
|
||||
std::string title;
|
||||
int midi_device = -1;
|
||||
bool print_version = false;
|
||||
bool trace = false;
|
||||
bool use_fm = false;
|
||||
bool no_antialias = false;
|
||||
bool scanline = false;
|
||||
|
||||
@@ -127,6 +127,25 @@ public:
|
||||
}
|
||||
|
||||
bool console_output(const char* format, va_list ap) override {
|
||||
char buf[1024];
|
||||
vsnprintf(buf, sizeof(buf), format, ap);
|
||||
|
||||
Json json = {
|
||||
{"type", "event"},
|
||||
{"event", "output"},
|
||||
{"body", {
|
||||
{"output", buf},
|
||||
}}
|
||||
};
|
||||
const char *src = symbols.page2src(g_nact->sco.page());
|
||||
if (src)
|
||||
json["body"]["source"] = create_source(src);
|
||||
int line = symbols.addr2line(g_nact->sco.page(), g_nact->sco.cmd_addr());
|
||||
if (line >= 0)
|
||||
json["body"]["line"] = line;
|
||||
|
||||
send_json(json);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,15 +46,12 @@ void NACT::platform_finalize()
|
||||
{
|
||||
}
|
||||
|
||||
void NACT::output_console(const char *format, ...)
|
||||
void NACT::trace(const char *format, ...)
|
||||
{
|
||||
#if defined(_DEBUG_CONSOLE)
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stdout, format, ap);
|
||||
va_end(ap);
|
||||
#endif
|
||||
}
|
||||
|
||||
void NACT::set_skip_menu_state(bool enabled, bool checked)
|
||||
|
||||
@@ -14,25 +14,18 @@ void NACT::platform_finalize()
|
||||
{
|
||||
}
|
||||
|
||||
void NACT::output_console(const char *format, ...)
|
||||
void NACT::trace(const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
if (g_debugger) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
bool handled = g_debugger->console_vprintf(format, ap);
|
||||
if (g_debugger && g_debugger->console_vprintf(format, ap)) {
|
||||
va_end(ap);
|
||||
if (handled)
|
||||
return;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if defined(_DEBUG_CONSOLE)
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stdout, format, ap);
|
||||
va_end(ap);
|
||||
#endif
|
||||
}
|
||||
|
||||
void NACT::set_skip_menu_state(bool enabled, bool checked)
|
||||
|
||||
+20
-16
@@ -283,7 +283,7 @@ void NACT::cmd_calc()
|
||||
}
|
||||
var[index] = cali();
|
||||
|
||||
output_console("\n!var[%d]:%d!", index, var[index]);
|
||||
TRACE("!var[%d]:%d!", index, var[index]);
|
||||
}
|
||||
|
||||
void NACT::cmd_label_jump()
|
||||
@@ -291,7 +291,7 @@ void NACT::cmd_label_jump()
|
||||
int next_addr = sco.getw();
|
||||
sco.jump_to(next_addr);
|
||||
|
||||
output_console("\n@%x:", next_addr);
|
||||
TRACE("@%x:", next_addr);
|
||||
}
|
||||
|
||||
void NACT::cmd_label_call()
|
||||
@@ -299,7 +299,7 @@ void NACT::cmd_label_call()
|
||||
int next_addr = sco.getw();
|
||||
sco.label_call(next_addr);
|
||||
|
||||
output_console("\n\\%x:", next_addr);
|
||||
TRACE("\\%x:", next_addr);
|
||||
}
|
||||
|
||||
void NACT::cmd_page_jump()
|
||||
@@ -307,7 +307,7 @@ void NACT::cmd_page_jump()
|
||||
int next_page = cali();
|
||||
sco.page_jump(next_page, 2);
|
||||
|
||||
output_console("\n&%d:", next_page);
|
||||
TRACE("&%d:", next_page);
|
||||
}
|
||||
|
||||
void NACT::cmd_page_call()
|
||||
@@ -315,7 +315,7 @@ void NACT::cmd_page_call()
|
||||
int next_page = cali();
|
||||
sco.page_call(next_page);
|
||||
|
||||
output_console("\n%%%d:", next_page);
|
||||
TRACE("%%%d:", next_page);
|
||||
}
|
||||
|
||||
void NACT::cmd_set_menu()
|
||||
@@ -325,7 +325,7 @@ void NACT::cmd_set_menu()
|
||||
ags->menu_dest_y += ags->menu_font_size + 2;
|
||||
ags->draw_menu = false;
|
||||
|
||||
output_console("$");
|
||||
TRACE("$");
|
||||
} else {
|
||||
if (menu_items.empty()) {
|
||||
ags->clear_menu_window();
|
||||
@@ -339,13 +339,13 @@ void NACT::cmd_set_menu()
|
||||
if (game_id.is_gakuen())
|
||||
menu_window = 2;
|
||||
|
||||
output_console("\n$%x,", menu_items.back().addr);
|
||||
TRACE("$%x,", menu_items.back().addr);
|
||||
}
|
||||
}
|
||||
|
||||
void NACT::cmd_open_menu()
|
||||
{
|
||||
output_console("\n]");
|
||||
TRACE("]");
|
||||
|
||||
if (menu_items.empty()) {
|
||||
sco.jump_to(sco.default_addr());
|
||||
@@ -377,7 +377,9 @@ void NACT::cmd_set_verbobj()
|
||||
menu_items.emplace_back(addr, verb, obj);
|
||||
verb_obj = true;
|
||||
|
||||
output_console("\n[%x,%s,%s:", addr, caption_verb[verb].c_str(), caption_obj[obj].c_str());
|
||||
TRACE("[%x,%s,%s:", addr,
|
||||
encoding->toUtf8(caption_verb[verb].c_str()).c_str(),
|
||||
encoding->toUtf8(caption_obj[obj].c_str()).c_str());
|
||||
}
|
||||
|
||||
void NACT::cmd_set_verbobj2()
|
||||
@@ -392,14 +394,16 @@ void NACT::cmd_set_verbobj2()
|
||||
}
|
||||
verb_obj = true;
|
||||
|
||||
output_console("\n:%d,%x,%s,%s:", condition, addr, caption_verb[verb].c_str(), caption_obj[obj].c_str());
|
||||
TRACE(":%d,%x,%s,%s:", condition, addr,
|
||||
encoding->toUtf8(caption_verb[verb].c_str()).c_str(),
|
||||
encoding->toUtf8(caption_obj[obj].c_str()).c_str());
|
||||
}
|
||||
|
||||
void NACT::cmd_a()
|
||||
{
|
||||
texthook_nextpage();
|
||||
|
||||
output_console("A\n");
|
||||
TRACE("A");
|
||||
|
||||
if (msgskip->skipping()) {
|
||||
if (msgskip->get_flags() & MSGSKIP_STOP_ON_CLICK && get_key())
|
||||
@@ -439,7 +443,7 @@ void NACT::cmd_a()
|
||||
|
||||
void NACT::cmd_f()
|
||||
{
|
||||
output_console("\nF");
|
||||
TRACE("F");
|
||||
|
||||
sco.jump_to(2);
|
||||
}
|
||||
@@ -448,7 +452,7 @@ void NACT::cmd_r()
|
||||
{
|
||||
texthook_newline();
|
||||
|
||||
output_console("R\n");
|
||||
TRACE("R");
|
||||
|
||||
// ウィンドウの表示範囲外の場合は改ページ
|
||||
if(ags->return_text_line(text_window)) {
|
||||
@@ -460,7 +464,7 @@ void NACT::cmd_s()
|
||||
{
|
||||
int page = sco.getd();
|
||||
|
||||
output_console("\nS %d:", page);
|
||||
TRACE("S %d:", page);
|
||||
|
||||
if(page) {
|
||||
mako->play_music(page);
|
||||
@@ -473,7 +477,7 @@ void NACT::cmd_x()
|
||||
{
|
||||
int index = sco.getd();
|
||||
|
||||
output_console("\nX %d:", index);
|
||||
TRACE("X %d:", index);
|
||||
|
||||
if(1 <= index && index <= 10) {
|
||||
ags->draw_text(tvar[index - 1]);
|
||||
@@ -510,7 +514,7 @@ void NACT::message(uint8_t first_byte)
|
||||
msgskip->on_message(sco.page(), sco.current_addr());
|
||||
|
||||
// TODO: Convert hankaku to zenkaku
|
||||
output_console(buf);
|
||||
TRACE("%s", encoding->toUtf8(buf).c_str());
|
||||
}
|
||||
|
||||
void NACT::text_wait()
|
||||
|
||||
+3
-2
@@ -83,6 +83,8 @@
|
||||
#define MAX_VAR 512
|
||||
#define MAX_STRVAR 10
|
||||
|
||||
#define TRACE(fmt, ...) if (config.trace) trace(fmt "\n", ##__VA_ARGS__)
|
||||
|
||||
class AGS;
|
||||
class MAKO;
|
||||
class MsgSkip;
|
||||
@@ -248,8 +250,7 @@ public:
|
||||
std::unique_ptr<Encoding> encoding;
|
||||
Strings strings;
|
||||
|
||||
// デバッグログ
|
||||
void output_console(const char *format, ...);
|
||||
void trace(const char *format, ...);
|
||||
|
||||
int get_scenario_page() const { return sco.page(); }
|
||||
uint16 get_var(int index) const { return var[index]; }
|
||||
|
||||
@@ -213,13 +213,13 @@ void NACT_Sys1::cmd_branch()
|
||||
}
|
||||
}
|
||||
|
||||
output_console("\n{%d:", condition);
|
||||
TRACE("{%d:", condition);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_open_verb()
|
||||
{
|
||||
// 動詞メニューの表示
|
||||
output_console("\nopen verb-obj menu");
|
||||
TRACE("open verb-obj menu");
|
||||
verb_obj = false;
|
||||
|
||||
// 表示する動詞のチェック
|
||||
@@ -420,7 +420,7 @@ void NACT_Sys1::cmd_g()
|
||||
{
|
||||
int page = sco.getd();
|
||||
|
||||
output_console("\nG %d:", page);
|
||||
TRACE("G %d:", page);
|
||||
|
||||
if (game_id.crc32_a == CRC32_INTRUDER) {
|
||||
page = (page == 97) ? 96 : (page == 98) ? 97 : page;
|
||||
@@ -469,7 +469,7 @@ void NACT_Sys1::cmd_l()
|
||||
{
|
||||
int index = sco.getd();
|
||||
|
||||
output_console("\nL %d:", index);
|
||||
TRACE("L %d:", index);
|
||||
|
||||
if (1 <= index && index <= 26) {
|
||||
// ASLEEP_A.DAT - ASLEEP_Z.DAT
|
||||
@@ -501,7 +501,7 @@ void NACT_Sys1::cmd_p()
|
||||
|
||||
ags->text_font_color = (uint8)((param & 0x7) + 16);
|
||||
|
||||
output_console("\nP %d:", param);
|
||||
TRACE("P %d:", param);
|
||||
}
|
||||
|
||||
void NACT_Sys1::cmd_q()
|
||||
@@ -518,7 +518,7 @@ void NACT_Sys1::cmd_q()
|
||||
|
||||
int index = sco.getd();
|
||||
|
||||
output_console("\nQ %d:", index);
|
||||
TRACE("Q %d:", index);
|
||||
|
||||
if (1 <= index && index <= 26) {
|
||||
// ASLEEP_A.DAT - ASLEEP_Z.DAT
|
||||
@@ -537,7 +537,7 @@ void NACT_Sys1::cmd_u()
|
||||
int page = sco.getd();
|
||||
int transparent = sco.getd();
|
||||
|
||||
output_console("\nU %d,%d:", page, transparent);
|
||||
TRACE("U %d,%d:", page, transparent);
|
||||
|
||||
if (game_id.crc32_a == CRC32_INTRUDER) {
|
||||
ags->load_cg(page, 11);
|
||||
@@ -567,7 +567,7 @@ void NACT_Sys1::cmd_y()
|
||||
int cmd = cali();
|
||||
int param = cali();
|
||||
|
||||
output_console("\nY %d,%d:", cmd, param);
|
||||
TRACE("Y %d,%d:", cmd, param);
|
||||
|
||||
if (game_id.crc32_a == CRC32_INTRUDER) {
|
||||
switch(cmd) {
|
||||
@@ -770,7 +770,7 @@ void NACT_Sys1::cmd_z()
|
||||
int cmd = cali();
|
||||
int param = cali();
|
||||
|
||||
output_console("\nZ %d,%d:", cmd, param);
|
||||
TRACE("Z %d,%d:", cmd, param);
|
||||
|
||||
switch (game_id.crc32_a) {
|
||||
case CRC32_INTRUDER:
|
||||
|
||||
+21
-21
@@ -245,13 +245,13 @@ void NACT_Sys2::cmd_branch()
|
||||
}
|
||||
}
|
||||
|
||||
output_console("\n{%d:", condition);
|
||||
TRACE("{%d:", condition);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_open_verb()
|
||||
{
|
||||
// 動詞メニューの表示
|
||||
output_console("\nopen verb-obj menu");
|
||||
TRACE("open verb-obj menu");
|
||||
verb_obj = false;
|
||||
|
||||
// 表示する動詞のチェック
|
||||
@@ -361,7 +361,7 @@ void NACT_Sys2::cmd_b()
|
||||
int p4 = cali();
|
||||
int p5 = cali();
|
||||
|
||||
output_console("\nB %d,%d,%d,%d,%d,%d,%d:", cmd, index, p1, p2, p3, p4, p5);
|
||||
TRACE("B %d,%d,%d,%d,%d,%d,%d:", cmd, index, p1, p2, p3, p4, p5);
|
||||
|
||||
if(cmd == 1) {
|
||||
if (game_id.crc32_a == CRC32_AYUMI_FD || game_id.crc32_a == CRC32_AYUMI_HINT || game_id.crc32_a == CRC32_DRSTOP) {
|
||||
@@ -438,7 +438,7 @@ void NACT_Sys2::cmd_d()
|
||||
int p7 = cali();
|
||||
int p8 = cali();
|
||||
|
||||
output_console("\nD %d,%d,%d,%d,%d,%d,%d,%d:", p1, p2, p3, p4, p5, p6, p7, p8);
|
||||
TRACE("D %d,%d,%d,%d,%d,%d,%d,%d:", p1, p2, p3, p4, p5, p6, p7, p8);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_e()
|
||||
@@ -447,14 +447,14 @@ void NACT_Sys2::cmd_e()
|
||||
int p2 = cali();
|
||||
int p3 = cali();
|
||||
|
||||
output_console("\nE %d,%d,%d:", p1, p2, p3);
|
||||
TRACE("E %d,%d,%d:", p1, p2, p3);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_g()
|
||||
{
|
||||
int page = cali();
|
||||
|
||||
output_console("\nG %d:", page);
|
||||
TRACE("G %d:", page);
|
||||
|
||||
if (game_id.crc32_a == CRC32_SDPS && (game_id.crc32_b == CRC32_SDPS_TONO || game_id.crc32_b == CRC32_SDPS_KAIZOKU)) {
|
||||
if(20 <= page && page <= 100) {
|
||||
@@ -479,7 +479,7 @@ void NACT_Sys2::cmd_h()
|
||||
int length = sco.getd();
|
||||
int val = cali();
|
||||
|
||||
output_console("\nH %d,%d:", length, val);
|
||||
TRACE("H %d,%d:", length, val);
|
||||
|
||||
// 8桁の文字列を生成
|
||||
char tmp[8];
|
||||
@@ -522,7 +522,7 @@ void NACT_Sys2::cmd_i()
|
||||
// int p3 = sco.getd();
|
||||
int p3 = cali();
|
||||
|
||||
output_console("\nI %d,%d,%d:", p1, p2, p3);
|
||||
TRACE("I %d,%d,%d:", p1, p2, p3);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_j()
|
||||
@@ -530,7 +530,7 @@ void NACT_Sys2::cmd_j()
|
||||
int p1 = cali();
|
||||
int p2 = cali();
|
||||
|
||||
output_console("\nJ %d,%d:", p1, p2);
|
||||
TRACE("J %d,%d:", p1, p2);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_k()
|
||||
@@ -543,7 +543,7 @@ void NACT_Sys2::cmd_l()
|
||||
{
|
||||
int index = sco.getd();
|
||||
|
||||
output_console("\nL %d:", index);
|
||||
TRACE("L %d:", index);
|
||||
|
||||
if (1 <= index && index <= 26) {
|
||||
// ASLEEP_A.DAT - ASLEEP_Z.DAT
|
||||
@@ -568,7 +568,7 @@ void NACT_Sys2::cmd_m()
|
||||
string[p] = '\0';
|
||||
}
|
||||
|
||||
output_console("\nM %s:", string);
|
||||
TRACE("M %s:", encoding->toUtf8(string).c_str());
|
||||
|
||||
if(1 <= tvar_index && tvar_index <= 10) {
|
||||
memcpy(tvar[tvar_index - 1], string, 33);
|
||||
@@ -580,7 +580,7 @@ void NACT_Sys2::cmd_n()
|
||||
int p1 = cali();
|
||||
int p2 = cali();
|
||||
|
||||
output_console("\nN %d,%d:", p1, p2);
|
||||
TRACE("N %d,%d:", p1, p2);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_o()
|
||||
@@ -589,7 +589,7 @@ void NACT_Sys2::cmd_o()
|
||||
int width = cali();
|
||||
int height = cali();
|
||||
|
||||
output_console("\nO %d,%d,%d:", st, width, height);
|
||||
TRACE("O %d,%d,%d:", st, width, height);
|
||||
|
||||
#if 0
|
||||
// white mesh
|
||||
@@ -607,7 +607,7 @@ void NACT_Sys2::cmd_p()
|
||||
ags->text_font_color = (uint8)((param & 0x7) + 16);
|
||||
}
|
||||
|
||||
output_console("\nP %d:", param);
|
||||
TRACE("P %d:", param);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_q()
|
||||
@@ -624,7 +624,7 @@ void NACT_Sys2::cmd_q()
|
||||
|
||||
int index = sco.getd();
|
||||
|
||||
output_console("\nQ %d:", index);
|
||||
TRACE("Q %d:", index);
|
||||
|
||||
if (1 <= index && index <= 26) {
|
||||
// ASLEEP_A.DAT - ASLEEP_Z.DAT
|
||||
@@ -639,7 +639,7 @@ void NACT_Sys2::cmd_t()
|
||||
int p2 = cali();
|
||||
int p3 = cali();
|
||||
|
||||
output_console("\nT %d,%d,%d:", p1, p2, p3);
|
||||
TRACE("T %d,%d,%d:", p1, p2, p3);
|
||||
}
|
||||
|
||||
void NACT_Sys2::cmd_u()
|
||||
@@ -654,7 +654,7 @@ void NACT_Sys2::cmd_u()
|
||||
transparent = sco.getd();
|
||||
}
|
||||
|
||||
output_console("\nU %d,%d:", page, transparent);
|
||||
TRACE("U %d,%d:", page, transparent);
|
||||
|
||||
ags->load_cg(page, transparent);
|
||||
}
|
||||
@@ -692,7 +692,7 @@ void NACT_Sys2::cmd_v()
|
||||
int p28 = cali();
|
||||
int p29 = cali();
|
||||
|
||||
output_console("\nV %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d:",
|
||||
TRACE("V %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d:",
|
||||
cmd, p01, p02, p03, p04, p05, p06, p07, p08, p09, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29);
|
||||
}
|
||||
|
||||
@@ -703,7 +703,7 @@ void NACT_Sys2::cmd_w()
|
||||
int ex = cali();
|
||||
int ey = cali();
|
||||
|
||||
output_console("\nW %d,%d,%d,%d:", sx, sy, ex, ey);
|
||||
TRACE("W %d,%d,%d,%d:", sx, sy, ex, ey);
|
||||
|
||||
ags->draw_mesh(sx, sy, ex - sx, ey - sy);
|
||||
}
|
||||
@@ -713,7 +713,7 @@ void NACT_Sys2::cmd_y()
|
||||
int cmd = cali();
|
||||
int param = cali();
|
||||
|
||||
output_console("\nY %d,%d:", cmd, param);
|
||||
TRACE("Y %d,%d:", cmd, param);
|
||||
|
||||
switch(cmd) {
|
||||
case 1:
|
||||
@@ -865,7 +865,7 @@ void NACT_Sys2::cmd_z()
|
||||
int cmd = cali();
|
||||
int param = cali();
|
||||
|
||||
output_console("\nZ %d,%d:", cmd, param);
|
||||
TRACE("Z %d,%d:", cmd, param);
|
||||
|
||||
// Z1
|
||||
// Z2
|
||||
|
||||
+22
-22
@@ -25,13 +25,13 @@ void NACT_Sys3::cmd_branch()
|
||||
// sigmarion3 最適化誤爆の対策
|
||||
sco.jump_to(condition ? t_addr : f_addr);
|
||||
|
||||
output_console("\n{%d: T:%4x, F:%4x", condition, t_addr, f_addr);
|
||||
TRACE("{%d: T:%4x, F:%4x", condition, t_addr, f_addr);
|
||||
}
|
||||
|
||||
void NACT_Sys3::cmd_open_verb()
|
||||
{
|
||||
// 動詞メニューの表示
|
||||
output_console("\nopen verb-obj menu");
|
||||
TRACE("open verb-obj menu");
|
||||
verb_obj = false;
|
||||
|
||||
// 表示する動詞のチェック
|
||||
@@ -141,7 +141,7 @@ void NACT_Sys3::cmd_b()
|
||||
int p4 = cali();
|
||||
int p5 = cali();
|
||||
|
||||
output_console("\nB %d,%d,%d,%d,%d,%d,%d:", cmd, index, p1, p2, p3, p4, p5);
|
||||
TRACE("B %d,%d,%d,%d,%d,%d,%d:", cmd, index, p1, p2, p3, p4, p5);
|
||||
|
||||
if(cmd == 1) {
|
||||
// あゆみちゃん物語
|
||||
@@ -214,7 +214,7 @@ void NACT_Sys3::cmd_e()
|
||||
int ex = cali();
|
||||
int ey = cali();
|
||||
|
||||
output_console("\nE %d,%d,%d,%d,%d,%d:", index, color, sx, sy, ex, ey);
|
||||
TRACE("E %d,%d,%d,%d,%d,%d:", index, color, sx, sy, ex, ey);
|
||||
|
||||
ags->box[index - 1].color = color;
|
||||
ags->box[index - 1].sx = column ? sx * 8 : sx;
|
||||
@@ -227,7 +227,7 @@ void NACT_Sys3::cmd_g()
|
||||
{
|
||||
int page = cali();
|
||||
|
||||
output_console("\nG %d:", page);
|
||||
TRACE("G %d:", page);
|
||||
|
||||
ags->load_cg(page, -1);
|
||||
}
|
||||
@@ -237,7 +237,7 @@ void NACT_Sys3::cmd_h()
|
||||
int length = sco.getd();
|
||||
int val = cali();
|
||||
|
||||
output_console("\nH %d,%d:", length, val);
|
||||
TRACE("H %d,%d:", length, val);
|
||||
|
||||
// 隠しコマンド?
|
||||
if(length >= 9) {
|
||||
@@ -288,7 +288,7 @@ void NACT_Sys3::cmd_i()
|
||||
int dx = cali();
|
||||
int dy = cali();
|
||||
|
||||
output_console("\nI %d,%d,%d,%d,%d,%d:", sx, sy, ex, ey, dx, dy);
|
||||
TRACE("I %d,%d,%d,%d,%d,%d:", sx, sy, ex, ey, dx, dy);
|
||||
|
||||
// X方向はカラム単位で切り捨て
|
||||
sx = column ? sx * 8 : sx & 0xfff8;
|
||||
@@ -302,7 +302,7 @@ void NACT_Sys3::cmd_j()
|
||||
int x = cali();
|
||||
int y = cali();
|
||||
|
||||
output_console("\nJ %d,%d:", x, y);
|
||||
TRACE("J %d,%d:", x, y);
|
||||
|
||||
// x方向はカラム単位で切り捨て
|
||||
ags->cg_dest_x = column ? x * 8 : x & 0xfff8;
|
||||
@@ -314,7 +314,7 @@ void NACT_Sys3::cmd_k()
|
||||
{
|
||||
int cmd = sco.getd(), val;
|
||||
|
||||
output_console("\nK %d:", cmd);
|
||||
TRACE("K %d:", cmd);
|
||||
|
||||
// K6の場合は、すぐに返る
|
||||
if(cmd == 6) {
|
||||
@@ -404,7 +404,7 @@ void NACT_Sys3::cmd_l()
|
||||
{
|
||||
int index = cali();
|
||||
|
||||
output_console("\nL %d:", index);
|
||||
TRACE("L %d:", index);
|
||||
|
||||
if (index == 0) {
|
||||
// 特殊セーブ
|
||||
@@ -454,7 +454,7 @@ void NACT_Sys3::cmd_m()
|
||||
string[p] = '\0';
|
||||
}
|
||||
|
||||
output_console("\nM %s:", string);
|
||||
TRACE("M %s:", encoding->toUtf8(string).c_str());
|
||||
|
||||
if(1 <= tvar_index && tvar_index <= 10) {
|
||||
memcpy(tvar[tvar_index - 1], string, 22);
|
||||
@@ -477,7 +477,7 @@ void NACT_Sys3::cmd_n()
|
||||
int src = cali();
|
||||
int dest = cali();
|
||||
|
||||
output_console("\nN %d,%d,%d:", cmd, src, dest);
|
||||
TRACE("N %d,%d,%d:", cmd, src, dest);
|
||||
}
|
||||
|
||||
void NACT_Sys3::cmd_o()
|
||||
@@ -502,7 +502,7 @@ void NACT_Sys3::cmd_o()
|
||||
B15 = (val & 0x4000) ? 1 : 0;
|
||||
B16 = (val & 0x8000) ? 1 : 0;
|
||||
|
||||
output_console("\nO %d,%d:", cmd, val);
|
||||
TRACE("O %d,%d:", cmd, val);
|
||||
} else {
|
||||
uint16 val = 0;
|
||||
val |= B01 ? 0x0001 : 0;
|
||||
@@ -524,7 +524,7 @@ void NACT_Sys3::cmd_o()
|
||||
int index = cali2();
|
||||
var[index] = val;
|
||||
|
||||
output_console("\nO %d,var[%d]:", cmd, index);
|
||||
TRACE("O %d,var[%d]:", cmd, index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,7 +535,7 @@ void NACT_Sys3::cmd_p()
|
||||
int g = cali();
|
||||
int b = cali();
|
||||
|
||||
output_console("\nP %d,%d,%d,%d:", index, r, g, b);
|
||||
TRACE("P %d,%d,%d,%d:", index, r, g, b);
|
||||
|
||||
ags->set_palette(index, r, g, b);
|
||||
set_palette = true;
|
||||
@@ -567,7 +567,7 @@ void NACT_Sys3::cmd_q()
|
||||
|
||||
int index = cali();
|
||||
|
||||
output_console("\nQ %d:", index);
|
||||
TRACE("Q %d:", index);
|
||||
|
||||
if (index == 0) {
|
||||
// 特殊セーブ
|
||||
@@ -594,7 +594,7 @@ void NACT_Sys3::cmd_t()
|
||||
int x = cali();
|
||||
int y = cali();
|
||||
|
||||
output_console("\nT %d,%d:", x, y);
|
||||
TRACE("T %d,%d:", x, y);
|
||||
|
||||
// x方向はカラム単位で切り捨て
|
||||
ags->text_dest_x = column ? x * 8 : x & 0xfff8;
|
||||
@@ -606,7 +606,7 @@ void NACT_Sys3::cmd_u()
|
||||
int page = cali();
|
||||
int transparent = cali();
|
||||
|
||||
output_console("\nU %d,%d:", page, transparent);
|
||||
TRACE("U %d,%d:", page, transparent);
|
||||
|
||||
if (game_id.is_rance4x()) {
|
||||
transparent = (transparent == 28) ? 12 : transparent;
|
||||
@@ -619,7 +619,7 @@ void NACT_Sys3::cmd_v()
|
||||
int cmd = cali();
|
||||
int index = cali();
|
||||
|
||||
output_console("\nV %d,%d:", cmd, index);
|
||||
TRACE("V %d,%d:", cmd, index);
|
||||
|
||||
if(cmd == 0) {
|
||||
for(int i = 0; i < 20; i++) {
|
||||
@@ -644,7 +644,7 @@ void NACT_Sys3::cmd_w()
|
||||
int y = cali();
|
||||
uint8 color = (uint8)cali();
|
||||
|
||||
output_console("\nW %d,%d,%d", x, y, color);
|
||||
TRACE("W %d,%d,%d", x, y, color);
|
||||
|
||||
ags->paint(x, y, color);
|
||||
}
|
||||
@@ -654,7 +654,7 @@ void NACT_Sys3::cmd_y()
|
||||
int cmd = cali();
|
||||
int param = cali();
|
||||
|
||||
output_console("\nY %d,%d:", cmd, param);
|
||||
TRACE("Y %d,%d:", cmd, param);
|
||||
|
||||
switch(cmd) {
|
||||
case 1:
|
||||
@@ -1018,7 +1018,7 @@ void NACT_Sys3::cmd_z()
|
||||
int cmd = cali();
|
||||
int param = cali();
|
||||
|
||||
output_console("\nZ %d,%d:", cmd, param);
|
||||
TRACE("Z %d,%d:", cmd, param);
|
||||
|
||||
if(cmd == 0) {
|
||||
ags->palette_bank = (uint8)(param & 0xff);
|
||||
|
||||
+8
-17
@@ -45,6 +45,8 @@ void init_console(int sys_ver)
|
||||
freopen("CONOUT$", "w", stdout);
|
||||
freopen("CONOUT$", "w", stderr);
|
||||
freopen("CONIN$", "r", stdin);
|
||||
SetConsoleCP(CP_UTF8);
|
||||
SetConsoleOutputCP(CP_UTF8);
|
||||
char title[] = "SYSTEM1 Debug Console";
|
||||
title[6] = '0' + sys_ver;
|
||||
SetConsoleTitle(title);
|
||||
@@ -135,39 +137,28 @@ void NACT::text_dialog()
|
||||
void NACT::platform_initialize()
|
||||
{
|
||||
init_menu(mouse_move_enabled, config);
|
||||
#ifndef _DEBUG_CONSOLE
|
||||
if (config.debugger_mode == DebuggerMode::CLI)
|
||||
#endif
|
||||
if (config.trace && config.debugger_mode != DebuggerMode::DAP)
|
||||
init_console(game_id.sys_ver);
|
||||
SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE);
|
||||
}
|
||||
|
||||
void NACT::platform_finalize()
|
||||
{
|
||||
#if defined(_DEBUG_CONSOLE)
|
||||
FreeConsole();
|
||||
#endif
|
||||
}
|
||||
|
||||
void NACT::output_console(const char *format, ...)
|
||||
void NACT::trace(const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
if (g_debugger) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
bool handled = g_debugger->console_vprintf(format, ap);
|
||||
if (g_debugger && g_debugger->console_vprintf(format, ap)) {
|
||||
va_end(ap);
|
||||
if (handled)
|
||||
return;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if defined(_DEBUG_CONSOLE)
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stdout, format, ap);
|
||||
va_end(ap);
|
||||
#endif
|
||||
}
|
||||
|
||||
void NACT::set_skip_menu_state(bool enabled, bool checked)
|
||||
|
||||
@@ -46,6 +46,9 @@ texthook = none
|
||||
; The example below is for Rance 4.1, to filter out system messages.
|
||||
;texthook_suppress = 2,7
|
||||
|
||||
; Enables trace mode, which prints debug information to the console.
|
||||
;trace = true
|
||||
|
||||
; The [string] section allows you to override Japanese text embedded in the
|
||||
; game engine. The values below are the original Japanese text.
|
||||
[string]
|
||||
|
||||
Reference in New Issue
Block a user