diff --git a/src/sys/nact.cpp b/src/sys/nact.cpp index 7917f50..b1e2d03 100644 --- a/src/sys/nact.cpp +++ b/src/sys/nact.cpp @@ -11,6 +11,7 @@ #include "ags.h" #include "mako.h" #include "msgskip.h" +#include "texthook.h" #include "dri.h" #include "../config.h" #include "../fileio.h" @@ -257,6 +258,19 @@ void NACT::execute() } } +void NACT::cmd_calc() +{ + int index = sco.getd(); + if (0x80 <= index && index <= 0xbf) { + index &= 0x3f; + } else { + index = ((index & 0x3f) << 8) | sco.getd(); + } + var[index] = cali(); + + output_console("\n!var[%d]:%d!", index, var[index]); +} + void NACT::cmd_label_jump() { int next_addr = sco.getw(); @@ -289,6 +303,172 @@ void NACT::cmd_page_call() output_console("\n%%%d:", next_page); } +void NACT::cmd_set_menu() +{ + if(ags->draw_menu) { + ags->menu_dest_x = 2; + ags->menu_dest_y += ags->menu_font_size + 2; + ags->draw_menu = false; + + output_console("$"); + } else { + if(!menu_index) { + ags->clear_menu_window(); + ags->menu_dest_y = 0; + } + menu_addr[menu_index++] = sco.getw(); + ags->menu_dest_x = 2; + ags->menu_dest_y += 2; + ags->draw_menu = true; + + if (game_id.crc32_a == CRC32_GAKUEN || game_id.crc32_a == CRC32_GAKUEN_ENG) + menu_window = 2; + + output_console("\n$%x,", menu_addr[menu_index - 1]); + } +} + +void NACT::cmd_open_menu() +{ + output_console("\n]"); + + if (!menu_index) { + sco.jump_to(sco.default_addr()); + return; + } + + if (game_id.crc32_a == CRC32_DPS || game_id.crc32_a == CRC32_DPS_SG || game_id.crc32_a == CRC32_DPS_SG2 || game_id.crc32_a == CRC32_DPS_SG3) { + if (!text_refresh) { + cmd_a(); + } + } + + int selection = menu_select(menu_index); + if (terminate) + return; + + if (selection != -1) { + sco.jump_to(menu_addr[selection]); + } + menu_index = 0; +} + +void NACT::cmd_set_verbobj() +{ + int verb = sco.getd(); + int obj = sco.getd(); + int addr = sco.getw(); + + menu_addr[menu_index] = addr; + menu_verb[menu_index] = verb; + menu_obj[menu_index++] = obj; + verb_obj = true; + + output_console("\n[%x,%s,%s:", addr, caption_verb[verb], caption_obj[obj]); +} + +void NACT::cmd_set_verbobj2() +{ + int condition = cali(); + int verb = sco.getd(); + int obj = sco.getd(); + int addr = sco.getw(); + + if(condition) { + menu_addr[menu_index] = addr; + menu_verb[menu_index] = verb; + menu_obj[menu_index++] = obj; + } + verb_obj = true; + + output_console("\n:%d,%x,%s,%s:", condition, addr, caption_verb[verb], caption_obj[obj]); +} + +void NACT::cmd_a() +{ + texthook_nextpage(); + + output_console("A\n"); + + if (msgskip->skipping()) { + if (msgskip->get_flags() & MSGSKIP_STOP_ON_CLICK && get_key()) + msgskip->activate(false); + } else if (show_push) { + ags->draw_push(text_window); + } + + // キーが押されて離されるまで待機 + while (!msgskip->skipping()) { + if(terminate) { + return; + } + if(get_key()) { + break; + } + sys_sleep(16); + } + sys_sleep(30); + while (!msgskip->skipping()) { + if(terminate) { + return; + } + if(!(get_key() & 0x18)) { + break; + } + sys_sleep(16); + } + + // ウィンドウ更新 + ags->clear_text_window(text_window, true); + + if (game_id.crc32_a == CRC32_DPS || game_id.crc32_a == CRC32_DPS_SG || game_id.crc32_a == CRC32_DPS_SG2 || game_id.crc32_a == CRC32_DPS_SG3) { + text_refresh = true; + } +} + +void NACT::cmd_f() +{ + output_console("\nF"); + + sco.jump_to(2); +} + +void NACT::cmd_r() +{ + texthook_newline(); + + output_console("R\n"); + + // ウィンドウの表示範囲外の場合は改ページ + if(ags->return_text_line(text_window)) { + cmd_a(); + } +} + +void NACT::cmd_s() +{ + int page = sco.getd(); + + output_console("\nS %d:", page); + + if(page) { + mako->play_music(page); + } else { + mako->stop_music(); + } +} + +void NACT::cmd_x() +{ + int index = sco.getd(); + + output_console("\nX %d:", index); + + if(1 <= index && index <= 10) { + ags->draw_text(tvar[index - 1]); + } +} + void NACT::message(uint8_t first_byte) { char buf[200]; diff --git a/src/sys/nact.h b/src/sys/nact.h index 6176203..5e91955 100644 --- a/src/sys/nact.h +++ b/src/sys/nact.h @@ -120,7 +120,7 @@ protected: void message(uint8_t first_byte); // Commands - virtual void cmd_calc() = 0; + void cmd_calc(); virtual void cmd_branch() = 0; void cmd_label_jump(); @@ -128,19 +128,19 @@ protected: void cmd_page_jump(); void cmd_page_call(); - virtual void cmd_set_menu() = 0; - virtual void cmd_open_menu() = 0; + void cmd_set_menu(); + void cmd_open_menu(); - virtual void cmd_set_verbobj() = 0; - virtual void cmd_set_verbobj2() = 0; + void cmd_set_verbobj(); + void cmd_set_verbobj2(); virtual void cmd_open_verb() = 0; virtual void cmd_open_obj(int verb) = 0; - virtual void cmd_a() = 0; + void cmd_a(); virtual void cmd_b() = 0; virtual void cmd_d() = 0; virtual void cmd_e() = 0; - virtual void cmd_f() = 0; + void cmd_f(); virtual void cmd_g() = 0; virtual void cmd_h() = 0; virtual void cmd_i() = 0; @@ -152,13 +152,13 @@ protected: virtual void cmd_o() = 0; virtual void cmd_p() = 0; virtual void cmd_q() = 0; - virtual void cmd_r() = 0; - virtual void cmd_s() = 0; + void cmd_r(); + void cmd_s(); virtual void cmd_t() = 0; virtual void cmd_u() = 0; virtual void cmd_v() = 0; virtual void cmd_w() = 0; - virtual void cmd_x() = 0; + void cmd_x(); virtual void cmd_y() = 0; virtual void cmd_z() = 0; @@ -257,19 +257,12 @@ class NACT_Sys1 final : public NACT { public: NACT_Sys1(const Config& config, const GameId& game_id); protected: - void cmd_calc() override; void cmd_branch() override; - void cmd_set_menu() override; - void cmd_open_menu() override; - void cmd_set_verbobj() override; - void cmd_set_verbobj2() override; void cmd_open_verb() override; void cmd_open_obj(int verb) override; - void cmd_a() override; void cmd_b() override; void cmd_d() override; void cmd_e() override; - void cmd_f() override; void cmd_g() override; void cmd_h() override; void cmd_i() override; @@ -281,13 +274,10 @@ protected: void cmd_o() override; void cmd_p() override; void cmd_q() override; - void cmd_r() override; - void cmd_s() override; void cmd_t() override; void cmd_u() override; void cmd_v() override; void cmd_w() override; - void cmd_x() override; void cmd_y() override; void cmd_z() override; void opening() override; @@ -304,19 +294,12 @@ class NACT_Sys2 final : public NACT { public: NACT_Sys2(const Config& config, const GameId& game_id) : NACT(config, game_id) {} protected: - void cmd_calc() override; void cmd_branch() override; - void cmd_set_menu() override; - void cmd_open_menu() override; - void cmd_set_verbobj() override; - void cmd_set_verbobj2() override; void cmd_open_verb() override; void cmd_open_obj(int verb) override; - void cmd_a() override; void cmd_b() override; void cmd_d() override; void cmd_e() override; - void cmd_f() override; void cmd_g() override; void cmd_h() override; void cmd_i() override; @@ -328,13 +311,10 @@ protected: void cmd_o() override; void cmd_p() override; void cmd_q() override; - void cmd_r() override; - void cmd_s() override; void cmd_t() override; void cmd_u() override; void cmd_v() override; void cmd_w() override; - void cmd_x() override; void cmd_y() override; void cmd_z() override; uint16 cali() override; @@ -344,19 +324,12 @@ class NACT_Sys3 final : public NACT { public: NACT_Sys3(const Config& config, const GameId& game_id) : NACT(config, game_id) {} protected: - void cmd_calc() override; void cmd_branch() override; - void cmd_set_menu() override; - void cmd_open_menu() override; - void cmd_set_verbobj() override; - void cmd_set_verbobj2() override; void cmd_open_verb() override; void cmd_open_obj(int verb) override; - void cmd_a() override; void cmd_b() override; void cmd_d() override; void cmd_e() override; - void cmd_f() override; void cmd_g() override; void cmd_h() override; void cmd_i() override; @@ -368,13 +341,10 @@ protected: void cmd_o() override; void cmd_p() override; void cmd_q() override; - void cmd_r() override; - void cmd_s() override; void cmd_t() override; void cmd_u() override; void cmd_v() override; void cmd_w() override; - void cmd_x() override; void cmd_y() override; void cmd_z() override; uint16 cali() override; diff --git a/src/sys/nact_sys1.cpp b/src/sys/nact_sys1.cpp index 79fd455..e381e3a 100644 --- a/src/sys/nact_sys1.cpp +++ b/src/sys/nact_sys1.cpp @@ -123,19 +123,6 @@ void NACT_Sys1::opening() } } -void NACT_Sys1::cmd_calc() -{ - int index = sco.getd(); - if(0x80 <= index && index <= 0xbf) { - index &= 0x3f; - } else { - index = ((index & 0x3f) << 8) | sco.getd(); - } - var[index] = cali(); - - output_console("\n!var[%d]:%d!", index, var[index]); -} - void NACT_Sys1::cmd_branch() { int condition = cali(); @@ -228,87 +215,6 @@ void NACT_Sys1::cmd_branch() output_console("\n{%d:", condition); } -void NACT_Sys1::cmd_set_menu() -{ - if(ags->draw_menu) { - ags->menu_dest_x = 2; - ags->menu_dest_y += ags->menu_font_size + 2; - ags->draw_menu = false; - - output_console("$"); - } else { - if(!menu_index) { - ags->clear_menu_window(); - ags->menu_dest_y = 0; - } - menu_addr[menu_index++] = sco.getw(); - ags->menu_dest_x = 2; - ags->menu_dest_y += 2; - ags->draw_menu = true; - - if (game_id.crc32_a == CRC32_GAKUEN || game_id.crc32_a == CRC32_GAKUEN_ENG) - menu_window = 2; - - output_console("\n$%x,", menu_addr[menu_index - 1]); - } -} - -void NACT_Sys1::cmd_open_menu() -{ - output_console("\n]"); - - if(!menu_index) { - sco.jump_to(sco.default_addr()); - return; - } - - if (game_id.crc32_a == CRC32_DPS || game_id.crc32_a == CRC32_DPS_SG || game_id.crc32_a == CRC32_DPS_SG2 || game_id.crc32_a == CRC32_DPS_SG3) { - if(!text_refresh) { - cmd_a(); - } - } - - int selection = menu_select(menu_index); - if (terminate) - return; - - if (selection != -1) { - sco.jump_to(menu_addr[selection]); - } - menu_index = 0; -} - -void NACT_Sys1::cmd_set_verbobj() -{ - int verb = sco.getd(); - int obj = sco.getd(); - int addr = sco.getw(); - - menu_addr[menu_index] = addr; - menu_verb[menu_index] = verb; - menu_obj[menu_index++] = obj; - verb_obj = true; - - output_console("\n[%x,%s,%s:", addr, caption_verb[verb], caption_obj[obj]); -} - -void NACT_Sys1::cmd_set_verbobj2() -{ - int condition = cali(); - int verb = sco.getd(); - int obj = sco.getd(); - int addr = sco.getw(); - - if(condition) { - menu_addr[menu_index] = addr; - menu_verb[menu_index] = verb; - menu_obj[menu_index++] = obj; - } - verb_obj = true; - - output_console("\n:%d,%x,%s,%s:", condition, addr, caption_verb[verb], caption_obj[obj]); -} - void NACT_Sys1::cmd_open_verb() { // 動詞メニューの表示 @@ -499,48 +405,6 @@ top2: } } -void NACT_Sys1::cmd_a() -{ - texthook_nextpage(); - - output_console("A\n"); - - if (msgskip->skipping()) { - if (msgskip->get_flags() & MSGSKIP_STOP_ON_CLICK && get_key()) - msgskip->activate(false); - } else if (show_push) { - ags->draw_push(text_window); - } - - // キーが押されて離されるまで待機 - while (!msgskip->skipping()) { - if(terminate) { - return; - } - if(get_key()) { - break; - } - sys_sleep(16); - } - sys_sleep(30); - while (!msgskip->skipping()) { - if(terminate) { - return; - } - if(!(get_key() & 0x18)) { - break; - } - sys_sleep(16); - } - - // ウィンドウ更新 - ags->clear_text_window(text_window, true); - - if (game_id.crc32_a == CRC32_DPS || game_id.crc32_a == CRC32_DPS_SG || game_id.crc32_a == CRC32_DPS_SG2 || game_id.crc32_a == CRC32_DPS_SG3) { - text_refresh = true; - } -} - void NACT_Sys1::cmd_b() { // Unused @@ -559,13 +423,6 @@ void NACT_Sys1::cmd_e() sco.unknown_command('E'); } -void NACT_Sys1::cmd_f() -{ - output_console("\nF"); - - sco.jump_to(2); -} - void NACT_Sys1::cmd_g() { int page = sco.getd(); @@ -836,31 +693,6 @@ void NACT_Sys1::cmd_q() } } -void NACT_Sys1::cmd_r() -{ - texthook_newline(); - - output_console("R\n"); - - // ウィンドウの表示範囲外の場合は改ページ - if(ags->return_text_line(text_window)) { - cmd_a(); - } -} - -void NACT_Sys1::cmd_s() -{ - int page = sco.getd(); - - output_console("\nS %d:", page); - - if(page) { - mako->play_music(page); - } else { - mako->stop_music(); - } -} - void NACT_Sys1::cmd_t() { // Unused @@ -897,17 +729,6 @@ void NACT_Sys1::cmd_w() sco.unknown_command('W'); } -void NACT_Sys1::cmd_x() -{ - int index = sco.getd(); - - output_console("\nX %d:", index); - - if(1 <= index && index <= 10) { - ags->draw_text(tvar[index - 1]); - } -} - void NACT_Sys1::cmd_y() { int cmd = cali(); diff --git a/src/sys/nact_sys2.cpp b/src/sys/nact_sys2.cpp index b7c0eee..fb71b7d 100644 --- a/src/sys/nact_sys2.cpp +++ b/src/sys/nact_sys2.cpp @@ -58,19 +58,6 @@ } \ } -void NACT_Sys2::cmd_calc() -{ - int index = sco.getd(); - if(0x80 <= index && index <= 0xbf) { - index &= 0x3f; - } else { - index = ((index & 0x3f) << 8) | sco.getd(); - } - var[index] = cali(); - - output_console("\n!var[%d]:%d!", index, var[index]); -} - void NACT_Sys2::cmd_branch() { int condition = cali(); @@ -261,78 +248,6 @@ void NACT_Sys2::cmd_branch() output_console("\n{%d:", condition); } -void NACT_Sys2::cmd_set_menu() -{ - if(ags->draw_menu) { - ags->menu_dest_x = 2; - ags->menu_dest_y += ags->menu_font_size + 2; - ags->draw_menu = false; - - output_console("$"); - } else { - if(!menu_index) { - ags->clear_menu_window(); - ags->menu_dest_y = 0; - } - menu_addr[menu_index++] = sco.getw(); - ags->menu_dest_x = 2; - ags->menu_dest_y += 2; - ags->draw_menu = true; - - output_console("\n$%x,", menu_addr[menu_index - 1]); - } -} - -void NACT_Sys2::cmd_open_menu() -{ - output_console("\n]"); - - if(!menu_index) { - sco.jump_to(sco.default_addr()); - return; - } - - int selection = menu_select(menu_index); - if (terminate) - return; - - if (selection != -1) { - sco.jump_to(menu_addr[selection]); - } - menu_index = 0; -} - -void NACT_Sys2::cmd_set_verbobj() -{ - int verb = sco.getd(); - int obj = sco.getd(); - int addr = sco.getw(); - - menu_addr[menu_index] = addr; - menu_verb[menu_index] = verb; - menu_obj[menu_index++] = obj; - verb_obj = true; - - output_console("\n[%x,%s,%s:", addr, caption_verb[verb], caption_obj[obj]); -} - -void NACT_Sys2::cmd_set_verbobj2() -{ - int condition = cali(); - int verb = sco.getd(); - int obj = sco.getd(); - int addr = sco.getw(); - - if(condition) { - menu_addr[menu_index] = addr; - menu_verb[menu_index] = verb; - menu_obj[menu_index++] = obj; - } - verb_obj = true; - - output_console("\n:%d,%x,%s,%s:", condition, addr, caption_verb[verb], caption_obj[obj]); -} - void NACT_Sys2::cmd_open_verb() { // 動詞メニューの表示 @@ -436,44 +351,6 @@ void NACT_Sys2::cmd_open_obj(int verb) } } -void NACT_Sys2::cmd_a() -{ - texthook_nextpage(); - - output_console("A\n"); - - if (msgskip->skipping()) { - if (msgskip->get_flags() & MSGSKIP_STOP_ON_CLICK && get_key()) - msgskip->activate(false); - } else if (show_push) { - ags->draw_push(text_window); - } - - // キーが押されて離されるまで待機 - while (!msgskip->skipping()) { - if(terminate) { - return; - } - if(get_key()) { - break; - } - sys_sleep(16); - } - sys_sleep(30); - while (!msgskip->skipping()) { - if(terminate) { - return; - } - if(!(get_key() & 0x18)) { - break; - } - sys_sleep(16); - } - - // ウィンドウ更新 - ags->clear_text_window(text_window, true); -} - void NACT_Sys2::cmd_b() { int cmd = cali(); @@ -573,13 +450,6 @@ void NACT_Sys2::cmd_e() output_console("\nE %d,%d,%d:", p1, p2, p3); } -void NACT_Sys2::cmd_f() -{ - output_console("\nF"); - - sco.jump_to(2); -} - void NACT_Sys2::cmd_g() { int page = cali(); @@ -923,31 +793,6 @@ void NACT_Sys2::cmd_q() } } -void NACT_Sys2::cmd_r() -{ - texthook_newline(); - - output_console("R\n"); - - // ウィンドウの表示範囲外の場合は改ページ - if(ags->return_text_line(text_window)) { - cmd_a(); - } -} - -void NACT_Sys2::cmd_s() -{ - int page = sco.getd(); - - output_console("\nS %d:", page); - - if(page) { - mako->play_music(page); - } else { - mako->stop_music(); - } -} - void NACT_Sys2::cmd_t() { int p1 = cali(); @@ -1023,17 +868,6 @@ void NACT_Sys2::cmd_w() ags->draw_mesh(sx, sy, ex - sx, ey - sy); } -void NACT_Sys2::cmd_x() -{ - int index = sco.getd(); - - output_console("\nX %d:", index); - - if(1 <= index && index <= 10) { - ags->draw_text(tvar[index - 1]); - } -} - void NACT_Sys2::cmd_y() { int cmd = cali(); diff --git a/src/sys/nact_sys3.cpp b/src/sys/nact_sys3.cpp index c788c90..0468c81 100644 --- a/src/sys/nact_sys3.cpp +++ b/src/sys/nact_sys3.cpp @@ -15,18 +15,6 @@ #include "encoding.h" #include "texthook.h" -void NACT_Sys3::cmd_calc() -{ - int index = sco.getd(); - if(0x80 <= index && index <= 0xbf) { - index &= 0x3f; - } else { - index = ((index & 0x3f) << 8) | sco.getd(); - } - var[index] = cali(); - - output_console("\n!var[%d]:%d!", index, var[index]); -} void NACT_Sys3::cmd_branch() { @@ -40,78 +28,6 @@ void NACT_Sys3::cmd_branch() output_console("\n{%d: T:%4x, F:%4x", condition, t_addr, f_addr); } -void NACT_Sys3::cmd_set_menu() -{ - if(ags->draw_menu) { - ags->menu_dest_x = 2; - ags->menu_dest_y += ags->menu_font_size + 2; - ags->draw_menu = false; - - output_console("$"); - } else { - if(!menu_index) { - ags->clear_menu_window(); - ags->menu_dest_y = 0; - } - menu_addr[menu_index++] = sco.getw(); - ags->menu_dest_x = 2; - ags->menu_dest_y += 2; - ags->draw_menu = true; - - output_console("\n$%x,", menu_addr[menu_index - 1]); - } -} - -void NACT_Sys3::cmd_open_menu() -{ - output_console("\n]"); - - if(!menu_index) { - sco.jump_to(sco.default_addr()); - return; - } - - int index = menu_select(menu_index); - if (terminate) - return; - - if(index != -1) { - sco.jump_to(menu_addr[index]); - } - menu_index = 0; -} - -void NACT_Sys3::cmd_set_verbobj() -{ - int verb = sco.getd(); - int obj = sco.getd(); - int addr = sco.getw(); - - menu_addr[menu_index] = addr; - menu_verb[menu_index] = verb; - menu_obj[menu_index++] = obj; - verb_obj = true; - - output_console("\n[%x,%s,%s:", addr, caption_verb[verb], caption_obj[obj]); -} - -void NACT_Sys3::cmd_set_verbobj2() -{ - int condition = cali(); - int verb = sco.getd(); - int obj = sco.getd(); - int addr = sco.getw(); - - if(condition) { - menu_addr[menu_index] = addr; - menu_verb[menu_index] = verb; - menu_obj[menu_index++] = obj; - } - verb_obj = true; - - output_console("\n:%d,%x,%s,%s:", condition, addr, caption_verb[verb], caption_obj[obj]); -} - void NACT_Sys3::cmd_open_verb() { // 動詞メニューの表示 @@ -215,44 +131,6 @@ void NACT_Sys3::cmd_open_obj(int verb) } } -void NACT_Sys3::cmd_a() -{ - texthook_nextpage(); - - output_console("A\n"); - - if (msgskip->skipping()) { - if (msgskip->get_flags() & MSGSKIP_STOP_ON_CLICK && get_key()) - msgskip->activate(false); - } else if (show_push) { - ags->draw_push(text_window); - } - - // キーが押されて離されるまで待機 - while (!msgskip->skipping()) { - if(terminate) { - return; - } - if(get_key()) { - break; - } - sys_sleep(16); - } - sys_sleep(30); - while (!msgskip->skipping()) { - if(terminate) { - return; - } - if(!(get_key() & 0x18)) { - break; - } - sys_sleep(16); - } - - // ウィンドウ更新 - ags->clear_text_window(text_window, true); -} - void NACT_Sys3::cmd_b() { int cmd = sco.getd(); @@ -345,13 +223,6 @@ void NACT_Sys3::cmd_e() ags->box[index - 1].ey = ey; } -void NACT_Sys3::cmd_f() -{ - output_console("\nF"); - - sco.jump_to(2); -} - void NACT_Sys3::cmd_g() { int page = cali(); @@ -878,31 +749,6 @@ void NACT_Sys3::cmd_q() } } -void NACT_Sys3::cmd_r() -{ - texthook_newline(); - - output_console("R\n"); - - // ウィンドウの表示範囲外の場合は改ページ - if(ags->return_text_line(text_window)) { - cmd_a(); - } -} - -void NACT_Sys3::cmd_s() -{ - int page = sco.getd(); - - output_console("\nS %d:", page); - - if(page) { - mako->play_music(page); - } else { - mako->stop_music(); - } -} - void NACT_Sys3::cmd_t() { int x = cali(); @@ -964,17 +810,6 @@ void NACT_Sys3::cmd_w() ags->paint(x, y, color); } -void NACT_Sys3::cmd_x() -{ - int index = sco.getd(); - - output_console("\nX %d:", index); - - if(1 <= index && index <= 10) { - ags->draw_text(tvar[index - 1]); - } -} - void NACT_Sys3::cmd_y() { int cmd = cali();