From 848f635798bf1d13fba6591b2714a8660e5e10a5 Mon Sep 17 00:00:00 2001 From: madeline Date: Mon, 1 Jun 2026 22:56:14 -0700 Subject: [PATCH] better tools --- files.cmake | 2894 ++++++++++++++++--------------- include/d/d_stage.h | 3 + include/dusk/game_clock.h | 4 + include/dusk/game_combos.h | 22 + include/dusk/settings.h | 2 + res/rml/command_console.rcss | 70 + src/d/d_stage.cpp | 21 + src/dusk/commands.cpp | 617 +++++++ src/dusk/commands.hpp | 22 + src/dusk/game_clock.cpp | 29 +- src/dusk/game_combos.cpp | 136 ++ src/dusk/imgui/ImGuiConsole.cpp | 6 - src/dusk/settings.cpp | 6 +- src/dusk/ui/command_console.cpp | 223 +++ src/dusk/ui/command_console.hpp | 55 + src/dusk/ui/settings.cpp | 14 + src/f_ap/f_ap_game.cpp | 16 - src/m_Do/m_Do_main.cpp | 20 +- 18 files changed, 2680 insertions(+), 1480 deletions(-) create mode 100644 include/dusk/game_combos.h create mode 100644 res/rml/command_console.rcss create mode 100644 src/dusk/commands.cpp create mode 100644 src/dusk/commands.hpp create mode 100644 src/dusk/game_combos.cpp create mode 100644 src/dusk/ui/command_console.cpp create mode 100644 src/dusk/ui/command_console.hpp diff --git a/files.cmake b/files.cmake index fe558ba41f..e4aa4968ae 100644 --- a/files.cmake +++ b/files.cmake @@ -1,1406 +1,1406 @@ set(DOLZEL_FILES - src/m_Do/m_Do_main.cpp - #src/m_Do/m_Do_printf.cpp - src/m_Do/m_Do_audio.cpp - src/m_Do/m_Do_controller_pad.cpp - #src/m_Do/m_Re_controller_pad.cpp - src/m_Do/m_Do_graphic.cpp - src/m_Do/m_Do_machine.cpp - src/m_Do/m_Do_mtx.cpp - src/m_Do/m_Do_ext.cpp - src/m_Do/m_Do_lib.cpp - src/m_Do/m_Do_Reset.cpp - src/m_Do/m_Do_dvd_thread.cpp - src/m_Do/m_Do_DVDError.cpp - src/m_Do/m_Do_MemCard.cpp - src/m_Do/m_Do_MemCardRWmng.cpp - src/m_Do/m_Do_hostIO.cpp - src/c/c_damagereaction.cpp - src/c/c_dylink.cpp - src/f_ap/f_ap_game.cpp - src/f_op/f_op_actor.cpp - src/f_op/f_op_actor_iter.cpp - src/f_op/f_op_actor_tag.cpp - src/f_op/f_op_camera.cpp - src/f_op/f_op_actor_mng.cpp - src/f_op/f_op_camera_mng.cpp - src/f_op/f_op_overlap.cpp - src/f_op/f_op_overlap_mng.cpp - src/f_op/f_op_overlap_req.cpp - src/f_op/f_op_scene.cpp - src/f_op/f_op_scene_iter.cpp - src/f_op/f_op_scene_mng.cpp - src/f_op/f_op_scene_req.cpp - src/f_op/f_op_scene_tag.cpp - src/f_op/f_op_view.cpp - src/f_op/f_op_kankyo.cpp - src/f_op/f_op_msg.cpp - src/f_op/f_op_kankyo_mng.cpp - src/f_op/f_op_msg_mng.cpp - src/f_op/f_op_draw_iter.cpp - src/f_op/f_op_draw_tag.cpp - src/f_op/f_op_scene_pause.cpp - src/f_pc/f_pc_base.cpp - src/f_pc/f_pc_create_iter.cpp - src/f_pc/f_pc_create_req.cpp - src/f_pc/f_pc_create_tag.cpp - src/f_pc/f_pc_creator.cpp - src/f_pc/f_pc_delete_tag.cpp - src/f_pc/f_pc_deletor.cpp - src/f_pc/f_pc_draw_priority.cpp - src/f_pc/f_pc_executor.cpp - src/f_pc/f_pc_layer.cpp - src/f_pc/f_pc_leaf.cpp - src/f_pc/f_pc_layer_iter.cpp - src/f_pc/f_pc_layer_tag.cpp - src/f_pc/f_pc_line.cpp - src/f_pc/f_pc_load.cpp - src/f_pc/f_pc_manager.cpp - src/f_pc/f_pc_method.cpp - src/f_pc/f_pc_node.cpp - src/f_pc/f_pc_node_req.cpp - src/f_pc/f_pc_priority.cpp - src/f_pc/f_pc_profile.cpp - src/f_pc/f_pc_searcher.cpp - src/f_pc/f_pc_line_tag.cpp - src/f_pc/f_pc_line_iter.cpp - src/f_pc/f_pc_method_iter.cpp - src/f_pc/f_pc_method_tag.cpp - src/f_pc/f_pc_pause.cpp - src/f_pc/f_pc_draw.cpp - src/f_pc/f_pc_fstcreate_req.cpp - src/f_pc/f_pc_stdcreate_req.cpp - src/f_pc/f_pc_debug_sv.cpp - src/d/d_stage.cpp - src/d/d_map.cpp - src/d/d_com_inf_game.cpp - src/d/d_com_static.cpp - src/d/d_com_inf_actor.cpp - src/d/d_bomb.cpp - src/d/d_lib.cpp - src/d/d_save.cpp - src/d/d_save_init.cpp - src/d/d_jnt_col.cpp - src/d/d_a_obj.cpp - src/d/d_a_itembase_static.cpp - src/d/d_a_item_static.cpp - src/d/d_a_shop_item_static.cpp - src/d/d_a_horse_static.cpp - src/d/d_demo.cpp - src/d/d_door_param2.cpp - src/d/d_resorce.cpp - src/d/d_map_path.cpp - src/d/d_map_path_fmap.cpp - src/d/d_map_path_dmap.cpp - src/d/d_event.cpp - src/d/d_event_data.cpp - src/d/d_event_manager.cpp - src/d/d_event_lib.cpp - src/d/d_simple_model.cpp - src/d/d_particle.cpp - src/d/d_particle_name.cpp - src/d/d_particle_copoly.cpp - src/d/d_path.cpp - src/d/d_drawlist.cpp - src/d/d_kankyo_data.cpp - src/d/d_kankyo_wether.cpp - src/d/d_kankyo_rain.cpp - src/d/d_kankyo_debug.cpp - src/d/d_vibration.cpp - src/d/d_vib_pattern.cpp - src/d/d_attention.cpp - src/d/d_bg_parts.cpp - src/d/d_bg_pc.cpp - src/d/d_att_dist.cpp - src/d/d_bg_plc.cpp - src/d/d_bg_s.cpp - src/d/d_bg_s_acch.cpp - src/d/d_bg_s_capt_poly.cpp - src/d/d_bg_s_chk.cpp - src/d/d_bg_s_gnd_chk.cpp - src/d/d_bg_s_grp_pass_chk.cpp - src/d/d_bg_s_lin_chk.cpp - src/d/d_bg_s_movebg_actor.cpp - src/d/d_bg_s_sph_chk.cpp - src/d/d_bg_s_spl_grp_chk.cpp - src/d/d_bg_s_poly_pass_chk.cpp - src/d/d_bg_s_roof_chk.cpp - src/d/d_bg_s_wtr_chk.cpp - src/d/d_bg_w.cpp - src/d/d_bg_w_base.cpp - src/d/d_bg_w_kcol.cpp - src/d/d_bg_w_sv.cpp - src/d/d_cc_d.cpp - src/d/d_cc_mass_s.cpp - src/d/d_cc_s.cpp - src/d/d_cc_uty.cpp - src/d/d_cam_param.cpp - src/d/d_ev_camera.cpp - src/d/d_spline_path.cpp - src/d/d_item_data.cpp - src/d/d_item.cpp - src/d/d_tresure.cpp - src/d/d_model.cpp - src/d/d_eye_hl.cpp - src/d/d_error_msg.cpp - src/d/d_debug_viewer.cpp - src/d/d_debug_camera.cpp - src/d/actor/d_a_alink.cpp - src/d/actor/d_a_itembase.cpp - src/d/actor/d_a_no_chg_room.cpp - src/d/actor/d_a_npc.cpp - src/d/actor/d_a_npc_cd.cpp - src/d/actor/d_a_npc_cd2.cpp - src/d/actor/d_a_obj_item.cpp - src/d/d_insect.cpp - src/d/actor/d_a_obj_ss_base.cpp - src/d/actor/d_a_player.cpp - src/d/d_camera.cpp - src/d/d_envse.cpp - src/d/d_file_select.cpp - src/d/d_file_sel_warning.cpp - src/d/d_file_sel_info.cpp - src/d/d_bright_check.cpp - src/d/d_scope.cpp - src/d/d_select_cursor.cpp - src/d/d_select_icon.cpp - src/d/d_shop_camera.cpp - src/d/d_shop_item_ctrl.cpp - src/d/d_shop_system.cpp - src/d/d_gameover.cpp - src/d/d_kankyo.cpp - src/d/d_kyeff.cpp - src/d/d_kyeff2.cpp - src/d/d_ky_thunder.cpp - src/d/d_kantera_icon_meter.cpp - src/d/d_menu_calibration.cpp - src/d/d_menu_collect.cpp - src/d/d_menu_dmap.cpp - src/d/d_menu_dmap_map.cpp - src/d/d_menu_map_common.cpp - src/d/d_menu_fishing.cpp - src/d/d_menu_fmap.cpp - src/d/d_menu_fmap_map.cpp - src/d/d_menu_fmap2D.cpp - src/d/d_menu_insect.cpp - src/d/d_menu_item_explain.cpp - src/d/d_menu_letter.cpp - src/d/d_menu_option.cpp - src/d/d_menu_ring.cpp - src/d/d_menu_save.cpp - src/d/d_menu_skill.cpp - src/d/d_menu_window_HIO.cpp - src/d/d_menu_window.cpp - src/d/d_meter_HIO.cpp - src/d/d_meter_button.cpp - src/d/d_meter_haihai.cpp - src/d/d_meter_hakusha.cpp - src/d/d_meter_map.cpp - src/d/d_meter_string.cpp - src/d/d_meter2_draw.cpp - src/d/d_meter2_info.cpp - src/d/d_meter2.cpp - src/d/d_msg_out_font.cpp - src/d/d_msg_class.cpp - src/d/d_msg_object.cpp - src/d/d_msg_unit.cpp - src/d/d_msg_scrn_3select.cpp - src/d/d_msg_scrn_arrow.cpp - src/d/d_msg_scrn_base.cpp - src/d/d_msg_scrn_boss.cpp - src/d/d_msg_scrn_explain.cpp - src/d/d_msg_scrn_item.cpp - src/d/d_msg_scrn_howl.cpp - src/d/d_msg_scrn_jimaku.cpp - src/d/d_msg_scrn_kanban.cpp - src/d/d_msg_scrn_light.cpp - src/d/d_msg_scrn_place.cpp - src/d/d_msg_scrn_staff.cpp - src/d/d_msg_scrn_talk.cpp - src/d/d_msg_scrn_tree.cpp - src/d/d_msg_string_base.cpp - src/d/d_msg_string.cpp - src/d/d_msg_flow.cpp - src/d/d_name.cpp - src/d/d_npc_lib.cpp - src/d/d_ovlp_fade.cpp - src/d/d_ovlp_fade2.cpp - src/d/d_ovlp_fade3.cpp - src/d/d_pane_class.cpp - src/d/d_pane_class_alpha.cpp - src/d/d_pane_class_ex.cpp - src/d/d_s_logo.cpp - src/d/d_s_menu.cpp - src/d/d_s_name.cpp - src/d/d_s_play.cpp - src/d/d_s_room.cpp - src/d/d_s_title.cpp - src/d/d_save_HIO.cpp - src/d/d_timer.cpp - src/d/d_k_wmark.cpp - src/d/d_k_wpillar.cpp - src/DynamicLink.cpp - src/CaptureScreen.cpp + src/m_Do/m_Do_main.cpp + #src/m_Do/m_Do_printf.cpp + src/m_Do/m_Do_audio.cpp + src/m_Do/m_Do_controller_pad.cpp + #src/m_Do/m_Re_controller_pad.cpp + src/m_Do/m_Do_graphic.cpp + src/m_Do/m_Do_machine.cpp + src/m_Do/m_Do_mtx.cpp + src/m_Do/m_Do_ext.cpp + src/m_Do/m_Do_lib.cpp + src/m_Do/m_Do_Reset.cpp + src/m_Do/m_Do_dvd_thread.cpp + src/m_Do/m_Do_DVDError.cpp + src/m_Do/m_Do_MemCard.cpp + src/m_Do/m_Do_MemCardRWmng.cpp + src/m_Do/m_Do_hostIO.cpp + src/c/c_damagereaction.cpp + src/c/c_dylink.cpp + src/f_ap/f_ap_game.cpp + src/f_op/f_op_actor.cpp + src/f_op/f_op_actor_iter.cpp + src/f_op/f_op_actor_tag.cpp + src/f_op/f_op_camera.cpp + src/f_op/f_op_actor_mng.cpp + src/f_op/f_op_camera_mng.cpp + src/f_op/f_op_overlap.cpp + src/f_op/f_op_overlap_mng.cpp + src/f_op/f_op_overlap_req.cpp + src/f_op/f_op_scene.cpp + src/f_op/f_op_scene_iter.cpp + src/f_op/f_op_scene_mng.cpp + src/f_op/f_op_scene_req.cpp + src/f_op/f_op_scene_tag.cpp + src/f_op/f_op_view.cpp + src/f_op/f_op_kankyo.cpp + src/f_op/f_op_msg.cpp + src/f_op/f_op_kankyo_mng.cpp + src/f_op/f_op_msg_mng.cpp + src/f_op/f_op_draw_iter.cpp + src/f_op/f_op_draw_tag.cpp + src/f_op/f_op_scene_pause.cpp + src/f_pc/f_pc_base.cpp + src/f_pc/f_pc_create_iter.cpp + src/f_pc/f_pc_create_req.cpp + src/f_pc/f_pc_create_tag.cpp + src/f_pc/f_pc_creator.cpp + src/f_pc/f_pc_delete_tag.cpp + src/f_pc/f_pc_deletor.cpp + src/f_pc/f_pc_draw_priority.cpp + src/f_pc/f_pc_executor.cpp + src/f_pc/f_pc_layer.cpp + src/f_pc/f_pc_leaf.cpp + src/f_pc/f_pc_layer_iter.cpp + src/f_pc/f_pc_layer_tag.cpp + src/f_pc/f_pc_line.cpp + src/f_pc/f_pc_load.cpp + src/f_pc/f_pc_manager.cpp + src/f_pc/f_pc_method.cpp + src/f_pc/f_pc_node.cpp + src/f_pc/f_pc_node_req.cpp + src/f_pc/f_pc_priority.cpp + src/f_pc/f_pc_profile.cpp + src/f_pc/f_pc_searcher.cpp + src/f_pc/f_pc_line_tag.cpp + src/f_pc/f_pc_line_iter.cpp + src/f_pc/f_pc_method_iter.cpp + src/f_pc/f_pc_method_tag.cpp + src/f_pc/f_pc_pause.cpp + src/f_pc/f_pc_draw.cpp + src/f_pc/f_pc_fstcreate_req.cpp + src/f_pc/f_pc_stdcreate_req.cpp + src/f_pc/f_pc_debug_sv.cpp + src/d/d_stage.cpp + src/d/d_map.cpp + src/d/d_com_inf_game.cpp + src/d/d_com_static.cpp + src/d/d_com_inf_actor.cpp + src/d/d_bomb.cpp + src/d/d_lib.cpp + src/d/d_save.cpp + src/d/d_save_init.cpp + src/d/d_jnt_col.cpp + src/d/d_a_obj.cpp + src/d/d_a_itembase_static.cpp + src/d/d_a_item_static.cpp + src/d/d_a_shop_item_static.cpp + src/d/d_a_horse_static.cpp + src/d/d_demo.cpp + src/d/d_door_param2.cpp + src/d/d_resorce.cpp + src/d/d_map_path.cpp + src/d/d_map_path_fmap.cpp + src/d/d_map_path_dmap.cpp + src/d/d_event.cpp + src/d/d_event_data.cpp + src/d/d_event_manager.cpp + src/d/d_event_lib.cpp + src/d/d_simple_model.cpp + src/d/d_particle.cpp + src/d/d_particle_name.cpp + src/d/d_particle_copoly.cpp + src/d/d_path.cpp + src/d/d_drawlist.cpp + src/d/d_kankyo_data.cpp + src/d/d_kankyo_wether.cpp + src/d/d_kankyo_rain.cpp + src/d/d_kankyo_debug.cpp + src/d/d_vibration.cpp + src/d/d_vib_pattern.cpp + src/d/d_attention.cpp + src/d/d_bg_parts.cpp + src/d/d_bg_pc.cpp + src/d/d_att_dist.cpp + src/d/d_bg_plc.cpp + src/d/d_bg_s.cpp + src/d/d_bg_s_acch.cpp + src/d/d_bg_s_capt_poly.cpp + src/d/d_bg_s_chk.cpp + src/d/d_bg_s_gnd_chk.cpp + src/d/d_bg_s_grp_pass_chk.cpp + src/d/d_bg_s_lin_chk.cpp + src/d/d_bg_s_movebg_actor.cpp + src/d/d_bg_s_sph_chk.cpp + src/d/d_bg_s_spl_grp_chk.cpp + src/d/d_bg_s_poly_pass_chk.cpp + src/d/d_bg_s_roof_chk.cpp + src/d/d_bg_s_wtr_chk.cpp + src/d/d_bg_w.cpp + src/d/d_bg_w_base.cpp + src/d/d_bg_w_kcol.cpp + src/d/d_bg_w_sv.cpp + src/d/d_cc_d.cpp + src/d/d_cc_mass_s.cpp + src/d/d_cc_s.cpp + src/d/d_cc_uty.cpp + src/d/d_cam_param.cpp + src/d/d_ev_camera.cpp + src/d/d_spline_path.cpp + src/d/d_item_data.cpp + src/d/d_item.cpp + src/d/d_tresure.cpp + src/d/d_model.cpp + src/d/d_eye_hl.cpp + src/d/d_error_msg.cpp + src/d/d_debug_viewer.cpp + src/d/d_debug_camera.cpp + src/d/actor/d_a_alink.cpp + src/d/actor/d_a_itembase.cpp + src/d/actor/d_a_no_chg_room.cpp + src/d/actor/d_a_npc.cpp + src/d/actor/d_a_npc_cd.cpp + src/d/actor/d_a_npc_cd2.cpp + src/d/actor/d_a_obj_item.cpp + src/d/d_insect.cpp + src/d/actor/d_a_obj_ss_base.cpp + src/d/actor/d_a_player.cpp + src/d/d_camera.cpp + src/d/d_envse.cpp + src/d/d_file_select.cpp + src/d/d_file_sel_warning.cpp + src/d/d_file_sel_info.cpp + src/d/d_bright_check.cpp + src/d/d_scope.cpp + src/d/d_select_cursor.cpp + src/d/d_select_icon.cpp + src/d/d_shop_camera.cpp + src/d/d_shop_item_ctrl.cpp + src/d/d_shop_system.cpp + src/d/d_gameover.cpp + src/d/d_kankyo.cpp + src/d/d_kyeff.cpp + src/d/d_kyeff2.cpp + src/d/d_ky_thunder.cpp + src/d/d_kantera_icon_meter.cpp + src/d/d_menu_calibration.cpp + src/d/d_menu_collect.cpp + src/d/d_menu_dmap.cpp + src/d/d_menu_dmap_map.cpp + src/d/d_menu_map_common.cpp + src/d/d_menu_fishing.cpp + src/d/d_menu_fmap.cpp + src/d/d_menu_fmap_map.cpp + src/d/d_menu_fmap2D.cpp + src/d/d_menu_insect.cpp + src/d/d_menu_item_explain.cpp + src/d/d_menu_letter.cpp + src/d/d_menu_option.cpp + src/d/d_menu_ring.cpp + src/d/d_menu_save.cpp + src/d/d_menu_skill.cpp + src/d/d_menu_window_HIO.cpp + src/d/d_menu_window.cpp + src/d/d_meter_HIO.cpp + src/d/d_meter_button.cpp + src/d/d_meter_haihai.cpp + src/d/d_meter_hakusha.cpp + src/d/d_meter_map.cpp + src/d/d_meter_string.cpp + src/d/d_meter2_draw.cpp + src/d/d_meter2_info.cpp + src/d/d_meter2.cpp + src/d/d_msg_out_font.cpp + src/d/d_msg_class.cpp + src/d/d_msg_object.cpp + src/d/d_msg_unit.cpp + src/d/d_msg_scrn_3select.cpp + src/d/d_msg_scrn_arrow.cpp + src/d/d_msg_scrn_base.cpp + src/d/d_msg_scrn_boss.cpp + src/d/d_msg_scrn_explain.cpp + src/d/d_msg_scrn_item.cpp + src/d/d_msg_scrn_howl.cpp + src/d/d_msg_scrn_jimaku.cpp + src/d/d_msg_scrn_kanban.cpp + src/d/d_msg_scrn_light.cpp + src/d/d_msg_scrn_place.cpp + src/d/d_msg_scrn_staff.cpp + src/d/d_msg_scrn_talk.cpp + src/d/d_msg_scrn_tree.cpp + src/d/d_msg_string_base.cpp + src/d/d_msg_string.cpp + src/d/d_msg_flow.cpp + src/d/d_name.cpp + src/d/d_npc_lib.cpp + src/d/d_ovlp_fade.cpp + src/d/d_ovlp_fade2.cpp + src/d/d_ovlp_fade3.cpp + src/d/d_pane_class.cpp + src/d/d_pane_class_alpha.cpp + src/d/d_pane_class_ex.cpp + src/d/d_s_logo.cpp + src/d/d_s_menu.cpp + src/d/d_s_name.cpp + src/d/d_s_play.cpp + src/d/d_s_room.cpp + src/d/d_s_title.cpp + src/d/d_save_HIO.cpp + src/d/d_timer.cpp + src/d/d_k_wmark.cpp + src/d/d_k_wpillar.cpp + src/DynamicLink.cpp + src/CaptureScreen.cpp ) if(DEBUG) list(APPEND DOLZEL_FILES src/d/d_event_debug.cpp) endif(DEBUG) set(Z2AUDIOLIB_FILES - src/Z2AudioLib/Z2Calc.cpp - src/Z2AudioLib/Z2AudioArcLoader.cpp - src/Z2AudioLib/Z2Param.cpp - src/Z2AudioLib/Z2SoundMgr.cpp - src/Z2AudioLib/Z2SoundStarter.cpp - src/Z2AudioLib/Z2SoundHandles.cpp - src/Z2AudioLib/Z2SeMgr.cpp - src/Z2AudioLib/Z2SeqMgr.cpp - src/Z2AudioLib/Z2StatusMgr.cpp - src/Z2AudioLib/Z2SceneMgr.cpp - src/Z2AudioLib/Z2FxLineMgr.cpp - src/Z2AudioLib/Z2SoundInfo.cpp - src/Z2AudioLib/Z2Audience.cpp - src/Z2AudioLib/Z2SoundObject.cpp - src/Z2AudioLib/Z2SoundObjMgr.cpp - src/Z2AudioLib/Z2Creature.cpp - src/Z2AudioLib/Z2LinkMgr.cpp - src/Z2AudioLib/Z2EnvSeMgr.cpp - src/Z2AudioLib/Z2WolfHowlMgr.cpp - src/Z2AudioLib/Z2SpeechMgr2.cpp - src/Z2AudioLib/Z2AudioMgr.cpp + src/Z2AudioLib/Z2Calc.cpp + src/Z2AudioLib/Z2AudioArcLoader.cpp + src/Z2AudioLib/Z2Param.cpp + src/Z2AudioLib/Z2SoundMgr.cpp + src/Z2AudioLib/Z2SoundStarter.cpp + src/Z2AudioLib/Z2SoundHandles.cpp + src/Z2AudioLib/Z2SeMgr.cpp + src/Z2AudioLib/Z2SeqMgr.cpp + src/Z2AudioLib/Z2StatusMgr.cpp + src/Z2AudioLib/Z2SceneMgr.cpp + src/Z2AudioLib/Z2FxLineMgr.cpp + src/Z2AudioLib/Z2SoundInfo.cpp + src/Z2AudioLib/Z2Audience.cpp + src/Z2AudioLib/Z2SoundObject.cpp + src/Z2AudioLib/Z2SoundObjMgr.cpp + src/Z2AudioLib/Z2Creature.cpp + src/Z2AudioLib/Z2LinkMgr.cpp + src/Z2AudioLib/Z2EnvSeMgr.cpp + src/Z2AudioLib/Z2WolfHowlMgr.cpp + src/Z2AudioLib/Z2SpeechMgr2.cpp + src/Z2AudioLib/Z2AudioMgr.cpp ) set(SSYSTEM_FILES - src/SSystem/SComponent/c_malloc.cpp - src/SSystem/SComponent/c_API.cpp - src/SSystem/SComponent/c_API_controller_pad.cpp - src/SSystem/SComponent/c_API_graphic.cpp - src/SSystem/SComponent/c_cc_d.cpp - src/SSystem/SComponent/c_cc_s.cpp - src/SSystem/SComponent/c_counter.cpp - src/SSystem/SComponent/c_list.cpp - src/SSystem/SComponent/c_list_iter.cpp - src/SSystem/SComponent/c_node.cpp - src/SSystem/SComponent/c_node_iter.cpp - src/SSystem/SComponent/c_tree.cpp - src/SSystem/SComponent/c_tree_iter.cpp - src/SSystem/SComponent/c_phase.cpp - src/SSystem/SComponent/c_request.cpp - src/SSystem/SComponent/c_tag.cpp - src/SSystem/SComponent/c_tag_iter.cpp - src/SSystem/SComponent/c_xyz.cpp - src/SSystem/SComponent/c_sxyz.cpp - src/SSystem/SComponent/c_math.cpp - src/SSystem/SComponent/c_bg_s_chk.cpp - src/SSystem/SComponent/c_bg_s_gnd_chk.cpp - src/SSystem/SComponent/c_bg_s_lin_chk.cpp - src/SSystem/SComponent/c_bg_s_shdw_draw.cpp - src/SSystem/SComponent/c_bg_s_poly_info.cpp - src/SSystem/SComponent/c_bg_w.cpp - src/SSystem/SComponent/c_m2d.cpp - src/SSystem/SComponent/c_m3d.cpp - src/SSystem/SComponent/c_m3d_g_aab.cpp - src/SSystem/SComponent/c_m3d_g_cir.cpp - src/SSystem/SComponent/c_m3d_g_cps.cpp - src/SSystem/SComponent/c_m3d_g_cyl.cpp - src/SSystem/SComponent/c_m3d_g_lin.cpp - src/SSystem/SComponent/c_m3d_g_pla.cpp - src/SSystem/SComponent/c_m3d_g_sph.cpp - src/SSystem/SComponent/c_m3d_g_tri.cpp - src/SSystem/SComponent/c_m3d_g_vtx.cpp - src/SSystem/SComponent/c_lib.cpp - src/SSystem/SComponent/c_angle.cpp - src/SSystem/SStandard/s_basic.cpp + src/SSystem/SComponent/c_malloc.cpp + src/SSystem/SComponent/c_API.cpp + src/SSystem/SComponent/c_API_controller_pad.cpp + src/SSystem/SComponent/c_API_graphic.cpp + src/SSystem/SComponent/c_cc_d.cpp + src/SSystem/SComponent/c_cc_s.cpp + src/SSystem/SComponent/c_counter.cpp + src/SSystem/SComponent/c_list.cpp + src/SSystem/SComponent/c_list_iter.cpp + src/SSystem/SComponent/c_node.cpp + src/SSystem/SComponent/c_node_iter.cpp + src/SSystem/SComponent/c_tree.cpp + src/SSystem/SComponent/c_tree_iter.cpp + src/SSystem/SComponent/c_phase.cpp + src/SSystem/SComponent/c_request.cpp + src/SSystem/SComponent/c_tag.cpp + src/SSystem/SComponent/c_tag_iter.cpp + src/SSystem/SComponent/c_xyz.cpp + src/SSystem/SComponent/c_sxyz.cpp + src/SSystem/SComponent/c_math.cpp + src/SSystem/SComponent/c_bg_s_chk.cpp + src/SSystem/SComponent/c_bg_s_gnd_chk.cpp + src/SSystem/SComponent/c_bg_s_lin_chk.cpp + src/SSystem/SComponent/c_bg_s_shdw_draw.cpp + src/SSystem/SComponent/c_bg_s_poly_info.cpp + src/SSystem/SComponent/c_bg_w.cpp + src/SSystem/SComponent/c_m2d.cpp + src/SSystem/SComponent/c_m3d.cpp + src/SSystem/SComponent/c_m3d_g_aab.cpp + src/SSystem/SComponent/c_m3d_g_cir.cpp + src/SSystem/SComponent/c_m3d_g_cps.cpp + src/SSystem/SComponent/c_m3d_g_cyl.cpp + src/SSystem/SComponent/c_m3d_g_lin.cpp + src/SSystem/SComponent/c_m3d_g_pla.cpp + src/SSystem/SComponent/c_m3d_g_sph.cpp + src/SSystem/SComponent/c_m3d_g_tri.cpp + src/SSystem/SComponent/c_m3d_g_vtx.cpp + src/SSystem/SComponent/c_lib.cpp + src/SSystem/SComponent/c_angle.cpp + src/SSystem/SStandard/s_basic.cpp ) add_library(JSystem_JParticle STATIC - libs/JSystem/src/JParticle/JPAResourceManager.cpp - libs/JSystem/src/JParticle/JPAResource.cpp - libs/JSystem/src/JParticle/JPABaseShape.cpp - libs/JSystem/src/JParticle/JPAExtraShape.cpp - libs/JSystem/src/JParticle/JPAChildShape.cpp - libs/JSystem/src/JParticle/JPAExTexShape.cpp - libs/JSystem/src/JParticle/JPADynamicsBlock.cpp - libs/JSystem/src/JParticle/JPAFieldBlock.cpp - libs/JSystem/src/JParticle/JPAKeyBlock.cpp - libs/JSystem/src/JParticle/JPATexture.cpp - libs/JSystem/src/JParticle/JPAResourceLoader.cpp - libs/JSystem/src/JParticle/JPAEmitterManager.cpp - libs/JSystem/src/JParticle/JPAEmitter.cpp - libs/JSystem/src/JParticle/JPAParticle.cpp - libs/JSystem/src/JParticle/JPAMath.cpp + libs/JSystem/src/JParticle/JPAResourceManager.cpp + libs/JSystem/src/JParticle/JPAResource.cpp + libs/JSystem/src/JParticle/JPABaseShape.cpp + libs/JSystem/src/JParticle/JPAExtraShape.cpp + libs/JSystem/src/JParticle/JPAChildShape.cpp + libs/JSystem/src/JParticle/JPAExTexShape.cpp + libs/JSystem/src/JParticle/JPADynamicsBlock.cpp + libs/JSystem/src/JParticle/JPAFieldBlock.cpp + libs/JSystem/src/JParticle/JPAKeyBlock.cpp + libs/JSystem/src/JParticle/JPATexture.cpp + libs/JSystem/src/JParticle/JPAResourceLoader.cpp + libs/JSystem/src/JParticle/JPAEmitterManager.cpp + libs/JSystem/src/JParticle/JPAEmitter.cpp + libs/JSystem/src/JParticle/JPAParticle.cpp + libs/JSystem/src/JParticle/JPAMath.cpp ) add_library(JSystem_JFramework STATIC - libs/JSystem/src/JFramework/JFWSystem.cpp - libs/JSystem/src/JFramework/JFWDisplay.cpp + libs/JSystem/src/JFramework/JFWSystem.cpp + libs/JSystem/src/JFramework/JFWDisplay.cpp ) add_library(JSystem_J3DU STATIC - libs/JSystem/src/J3DU/J3DUClipper.cpp - libs/JSystem/src/J3DU/J3DUDL.cpp + libs/JSystem/src/J3DU/J3DUClipper.cpp + libs/JSystem/src/J3DU/J3DUDL.cpp ) add_library(JSystem_JKernel STATIC - libs/JSystem/src/JKernel/JKRHeap.cpp - libs/JSystem/src/JKernel/JKRExpHeap.cpp - libs/JSystem/src/JKernel/JKRSolidHeap.cpp - libs/JSystem/src/JKernel/JKRAssertHeap.cpp - libs/JSystem/src/JKernel/JKRDisposer.cpp - libs/JSystem/src/JKernel/JKRThread.cpp - libs/JSystem/src/JKernel/JKRAram.cpp - libs/JSystem/src/JKernel/JKRAramHeap.cpp - libs/JSystem/src/JKernel/JKRAramBlock.cpp - libs/JSystem/src/JKernel/JKRAramPiece.cpp - libs/JSystem/src/JKernel/JKRAramStream.cpp - libs/JSystem/src/JKernel/JKRFileLoader.cpp - libs/JSystem/src/JKernel/JKRFileFinder.cpp - libs/JSystem/src/JKernel/JKRFileCache.cpp - libs/JSystem/src/JKernel/JKRArchivePub.cpp - libs/JSystem/src/JKernel/JKRArchivePri.cpp - libs/JSystem/src/JKernel/JKRMemArchive.cpp - libs/JSystem/src/JKernel/JKRAramArchive.cpp - libs/JSystem/src/JKernel/JKRDvdArchive.cpp - libs/JSystem/src/JKernel/JKRCompArchive.cpp - libs/JSystem/src/JKernel/JKRFile.cpp - libs/JSystem/src/JKernel/JKRDvdFile.cpp - libs/JSystem/src/JKernel/JKRDvdRipper.cpp - libs/JSystem/src/JKernel/JKRDvdAramRipper.cpp - libs/JSystem/src/JKernel/JKRDecomp.cpp + libs/JSystem/src/JKernel/JKRHeap.cpp + libs/JSystem/src/JKernel/JKRExpHeap.cpp + libs/JSystem/src/JKernel/JKRSolidHeap.cpp + libs/JSystem/src/JKernel/JKRAssertHeap.cpp + libs/JSystem/src/JKernel/JKRDisposer.cpp + libs/JSystem/src/JKernel/JKRThread.cpp + libs/JSystem/src/JKernel/JKRAram.cpp + libs/JSystem/src/JKernel/JKRAramHeap.cpp + libs/JSystem/src/JKernel/JKRAramBlock.cpp + libs/JSystem/src/JKernel/JKRAramPiece.cpp + libs/JSystem/src/JKernel/JKRAramStream.cpp + libs/JSystem/src/JKernel/JKRFileLoader.cpp + libs/JSystem/src/JKernel/JKRFileFinder.cpp + libs/JSystem/src/JKernel/JKRFileCache.cpp + libs/JSystem/src/JKernel/JKRArchivePub.cpp + libs/JSystem/src/JKernel/JKRArchivePri.cpp + libs/JSystem/src/JKernel/JKRMemArchive.cpp + libs/JSystem/src/JKernel/JKRAramArchive.cpp + libs/JSystem/src/JKernel/JKRDvdArchive.cpp + libs/JSystem/src/JKernel/JKRCompArchive.cpp + libs/JSystem/src/JKernel/JKRFile.cpp + libs/JSystem/src/JKernel/JKRDvdFile.cpp + libs/JSystem/src/JKernel/JKRDvdRipper.cpp + libs/JSystem/src/JKernel/JKRDvdAramRipper.cpp + libs/JSystem/src/JKernel/JKRDecomp.cpp ) add_library(JSystem_JMath STATIC - libs/JSystem/src/JMath/JMath.cpp - libs/JSystem/src/JMath/random.cpp - libs/JSystem/src/JMath/JMATrigonometric.cpp + libs/JSystem/src/JMath/JMath.cpp + libs/JSystem/src/JMath/random.cpp + libs/JSystem/src/JMath/JMATrigonometric.cpp ) add_library(JSystem_JSupport STATIC - libs/JSystem/src/JSupport/JSUList.cpp - libs/JSystem/src/JSupport/JSUInputStream.cpp - libs/JSystem/src/JSupport/JSUOutputStream.cpp - libs/JSystem/src/JSupport/JSUMemoryStream.cpp - libs/JSystem/src/JSupport/JSUFileStream.cpp + libs/JSystem/src/JSupport/JSUList.cpp + libs/JSystem/src/JSupport/JSUInputStream.cpp + libs/JSystem/src/JSupport/JSUOutputStream.cpp + libs/JSystem/src/JSupport/JSUMemoryStream.cpp + libs/JSystem/src/JSupport/JSUFileStream.cpp ) add_library(JSystem_JUtility STATIC - libs/JSystem/src/JUtility/JUTCacheFont.cpp - libs/JSystem/src/JUtility/JUTResource.cpp - libs/JSystem/src/JUtility/JUTTexture.cpp - libs/JSystem/src/JUtility/JUTPalette.cpp - libs/JSystem/src/JUtility/JUTNameTab.cpp - libs/JSystem/src/JUtility/JUTGraphFifo.cpp - libs/JSystem/src/JUtility/JUTFont.cpp - libs/JSystem/src/JUtility/JUTResFont.cpp - libs/JSystem/src/JUtility/JUTDbPrint.cpp - libs/JSystem/src/JUtility/JUTGamePad.cpp - libs/JSystem/src/JUtility/JUTException.cpp - libs/JSystem/src/JUtility/JUTDirectPrint.cpp - libs/JSystem/src/JUtility/JUTAssert.cpp - libs/JSystem/src/JUtility/JUTVideo.cpp - libs/JSystem/src/JUtility/JUTXfb.cpp - libs/JSystem/src/JUtility/JUTFader.cpp - libs/JSystem/src/JUtility/JUTProcBar.cpp - libs/JSystem/src/JUtility/JUTConsole.cpp - libs/JSystem/src/JUtility/JUTDirectFile.cpp - libs/JSystem/src/JUtility/JUTFontData_Ascfont_fix12.cpp + libs/JSystem/src/JUtility/JUTCacheFont.cpp + libs/JSystem/src/JUtility/JUTResource.cpp + libs/JSystem/src/JUtility/JUTTexture.cpp + libs/JSystem/src/JUtility/JUTPalette.cpp + libs/JSystem/src/JUtility/JUTNameTab.cpp + libs/JSystem/src/JUtility/JUTGraphFifo.cpp + libs/JSystem/src/JUtility/JUTFont.cpp + libs/JSystem/src/JUtility/JUTResFont.cpp + libs/JSystem/src/JUtility/JUTDbPrint.cpp + libs/JSystem/src/JUtility/JUTGamePad.cpp + libs/JSystem/src/JUtility/JUTException.cpp + libs/JSystem/src/JUtility/JUTDirectPrint.cpp + libs/JSystem/src/JUtility/JUTAssert.cpp + libs/JSystem/src/JUtility/JUTVideo.cpp + libs/JSystem/src/JUtility/JUTXfb.cpp + libs/JSystem/src/JUtility/JUTFader.cpp + libs/JSystem/src/JUtility/JUTProcBar.cpp + libs/JSystem/src/JUtility/JUTConsole.cpp + libs/JSystem/src/JUtility/JUTDirectFile.cpp + libs/JSystem/src/JUtility/JUTFontData_Ascfont_fix12.cpp ) add_library(JSystem_JStage STATIC - libs/JSystem/src/JStage/JSGActor.cpp - libs/JSystem/src/JStage/JSGAmbientLight.cpp - libs/JSystem/src/JStage/JSGCamera.cpp - libs/JSystem/src/JStage/JSGFog.cpp - libs/JSystem/src/JStage/JSGLight.cpp - libs/JSystem/src/JStage/JSGObject.cpp - libs/JSystem/src/JStage/JSGSystem.cpp + libs/JSystem/src/JStage/JSGActor.cpp + libs/JSystem/src/JStage/JSGAmbientLight.cpp + libs/JSystem/src/JStage/JSGCamera.cpp + libs/JSystem/src/JStage/JSGFog.cpp + libs/JSystem/src/JStage/JSGLight.cpp + libs/JSystem/src/JStage/JSGObject.cpp + libs/JSystem/src/JStage/JSGSystem.cpp ) add_library(JSystem_J2DGraph STATIC - libs/JSystem/src/J2DGraph/J2DGrafContext.cpp - libs/JSystem/src/J2DGraph/J2DOrthoGraph.cpp - libs/JSystem/src/J2DGraph/J2DTevs.cpp - libs/JSystem/src/J2DGraph/J2DMaterial.cpp - libs/JSystem/src/J2DGraph/J2DMatBlock.cpp - libs/JSystem/src/J2DGraph/J2DMaterialFactory.cpp - libs/JSystem/src/J2DGraph/J2DPrint.cpp - libs/JSystem/src/J2DGraph/J2DPane.cpp - libs/JSystem/src/J2DGraph/J2DScreen.cpp - libs/JSystem/src/J2DGraph/J2DWindow.cpp - libs/JSystem/src/J2DGraph/J2DPicture.cpp - libs/JSystem/src/J2DGraph/J2DTextBox.cpp - libs/JSystem/src/J2DGraph/J2DWindowEx.cpp - libs/JSystem/src/J2DGraph/J2DPictureEx.cpp - libs/JSystem/src/J2DGraph/J2DTextBoxEx.cpp - libs/JSystem/src/J2DGraph/J2DAnmLoader.cpp - libs/JSystem/src/J2DGraph/J2DAnimation.cpp - libs/JSystem/src/J2DGraph/J2DManage.cpp + libs/JSystem/src/J2DGraph/J2DGrafContext.cpp + libs/JSystem/src/J2DGraph/J2DOrthoGraph.cpp + libs/JSystem/src/J2DGraph/J2DTevs.cpp + libs/JSystem/src/J2DGraph/J2DMaterial.cpp + libs/JSystem/src/J2DGraph/J2DMatBlock.cpp + libs/JSystem/src/J2DGraph/J2DMaterialFactory.cpp + libs/JSystem/src/J2DGraph/J2DPrint.cpp + libs/JSystem/src/J2DGraph/J2DPane.cpp + libs/JSystem/src/J2DGraph/J2DScreen.cpp + libs/JSystem/src/J2DGraph/J2DWindow.cpp + libs/JSystem/src/J2DGraph/J2DPicture.cpp + libs/JSystem/src/J2DGraph/J2DTextBox.cpp + libs/JSystem/src/J2DGraph/J2DWindowEx.cpp + libs/JSystem/src/J2DGraph/J2DPictureEx.cpp + libs/JSystem/src/J2DGraph/J2DTextBoxEx.cpp + libs/JSystem/src/J2DGraph/J2DAnmLoader.cpp + libs/JSystem/src/J2DGraph/J2DAnimation.cpp + libs/JSystem/src/J2DGraph/J2DManage.cpp ) add_library(JSystem_J3DGraphBase STATIC - libs/JSystem/src/J3DGraphBase/J3DGD.cpp - libs/JSystem/src/J3DGraphBase/J3DSys.cpp - libs/JSystem/src/J3DGraphBase/J3DVertex.cpp - libs/JSystem/src/J3DGraphBase/J3DTransform.cpp - libs/JSystem/src/J3DGraphBase/J3DTexture.cpp - libs/JSystem/src/J3DGraphBase/J3DPacket.cpp - libs/JSystem/src/J3DGraphBase/J3DShapeMtx.cpp - libs/JSystem/src/J3DGraphBase/J3DShapeDraw.cpp - libs/JSystem/src/J3DGraphBase/J3DShape.cpp - libs/JSystem/src/J3DGraphBase/J3DMaterial.cpp - libs/JSystem/src/J3DGraphBase/J3DMatBlock.cpp - libs/JSystem/src/J3DGraphBase/J3DTevs.cpp - libs/JSystem/src/J3DGraphBase/J3DDrawBuffer.cpp - libs/JSystem/src/J3DGraphBase/J3DStruct.cpp + libs/JSystem/src/J3DGraphBase/J3DGD.cpp + libs/JSystem/src/J3DGraphBase/J3DSys.cpp + libs/JSystem/src/J3DGraphBase/J3DVertex.cpp + libs/JSystem/src/J3DGraphBase/J3DTransform.cpp + libs/JSystem/src/J3DGraphBase/J3DTexture.cpp + libs/JSystem/src/J3DGraphBase/J3DPacket.cpp + libs/JSystem/src/J3DGraphBase/J3DShapeMtx.cpp + libs/JSystem/src/J3DGraphBase/J3DShapeDraw.cpp + libs/JSystem/src/J3DGraphBase/J3DShape.cpp + libs/JSystem/src/J3DGraphBase/J3DMaterial.cpp + libs/JSystem/src/J3DGraphBase/J3DMatBlock.cpp + libs/JSystem/src/J3DGraphBase/J3DTevs.cpp + libs/JSystem/src/J3DGraphBase/J3DDrawBuffer.cpp + libs/JSystem/src/J3DGraphBase/J3DStruct.cpp ) add_library(JSystem_J3DGraphAnimator STATIC - libs/JSystem/src/J3DGraphAnimator/J3DShapeTable.cpp - libs/JSystem/src/J3DGraphAnimator/J3DJointTree.cpp - libs/JSystem/src/J3DGraphAnimator/J3DModelData.cpp - libs/JSystem/src/J3DGraphAnimator/J3DMtxBuffer.cpp - libs/JSystem/src/J3DGraphAnimator/J3DModel.cpp - libs/JSystem/src/J3DGraphAnimator/J3DAnimation.cpp - libs/JSystem/src/J3DGraphAnimator/J3DMaterialAnm.cpp - libs/JSystem/src/J3DGraphAnimator/J3DSkinDeform.cpp - libs/JSystem/src/J3DGraphAnimator/J3DCluster.cpp - libs/JSystem/src/J3DGraphAnimator/J3DJoint.cpp - libs/JSystem/src/J3DGraphAnimator/J3DMaterialAttach.cpp + libs/JSystem/src/J3DGraphAnimator/J3DShapeTable.cpp + libs/JSystem/src/J3DGraphAnimator/J3DJointTree.cpp + libs/JSystem/src/J3DGraphAnimator/J3DModelData.cpp + libs/JSystem/src/J3DGraphAnimator/J3DMtxBuffer.cpp + libs/JSystem/src/J3DGraphAnimator/J3DModel.cpp + libs/JSystem/src/J3DGraphAnimator/J3DAnimation.cpp + libs/JSystem/src/J3DGraphAnimator/J3DMaterialAnm.cpp + libs/JSystem/src/J3DGraphAnimator/J3DSkinDeform.cpp + libs/JSystem/src/J3DGraphAnimator/J3DCluster.cpp + libs/JSystem/src/J3DGraphAnimator/J3DJoint.cpp + libs/JSystem/src/J3DGraphAnimator/J3DMaterialAttach.cpp ) add_library(JSystem_J3DGraphLoader STATIC - libs/JSystem/src/J3DGraphLoader/J3DMaterialFactory.cpp - libs/JSystem/src/J3DGraphLoader/J3DMaterialFactory_v21.cpp - libs/JSystem/src/J3DGraphLoader/J3DClusterLoader.cpp - libs/JSystem/src/J3DGraphLoader/J3DModelLoader.cpp - libs/JSystem/src/J3DGraphLoader/J3DModelLoaderCalcSize.cpp - libs/JSystem/src/J3DGraphLoader/J3DJointFactory.cpp - libs/JSystem/src/J3DGraphLoader/J3DShapeFactory.cpp - libs/JSystem/src/J3DGraphLoader/J3DAnmLoader.cpp + libs/JSystem/src/J3DGraphLoader/J3DMaterialFactory.cpp + libs/JSystem/src/J3DGraphLoader/J3DMaterialFactory_v21.cpp + libs/JSystem/src/J3DGraphLoader/J3DClusterLoader.cpp + libs/JSystem/src/J3DGraphLoader/J3DModelLoader.cpp + libs/JSystem/src/J3DGraphLoader/J3DModelLoaderCalcSize.cpp + libs/JSystem/src/J3DGraphLoader/J3DJointFactory.cpp + libs/JSystem/src/J3DGraphLoader/J3DShapeFactory.cpp + libs/JSystem/src/J3DGraphLoader/J3DAnmLoader.cpp ) add_library(JSystem_JStudio STATIC - libs/JSystem/src/JStudio/JStudio/ctb.cpp - libs/JSystem/src/JStudio/JStudio/ctb-data.cpp - libs/JSystem/src/JStudio/JStudio/functionvalue.cpp - libs/JSystem/src/JStudio/JStudio/fvb.cpp - libs/JSystem/src/JStudio/JStudio/fvb-data.cpp - libs/JSystem/src/JStudio/JStudio/fvb-data-parse.cpp - libs/JSystem/src/JStudio/JStudio/jstudio-control.cpp - libs/JSystem/src/JStudio/JStudio/jstudio-data.cpp - libs/JSystem/src/JStudio/JStudio/jstudio-math.cpp - libs/JSystem/src/JStudio/JStudio/jstudio-object.cpp - libs/JSystem/src/JStudio/JStudio/object-id.cpp - libs/JSystem/src/JStudio/JStudio/stb.cpp - libs/JSystem/src/JStudio/JStudio/stb-data-parse.cpp - libs/JSystem/src/JStudio/JStudio/stb-data.cpp + libs/JSystem/src/JStudio/JStudio/ctb.cpp + libs/JSystem/src/JStudio/JStudio/ctb-data.cpp + libs/JSystem/src/JStudio/JStudio/functionvalue.cpp + libs/JSystem/src/JStudio/JStudio/fvb.cpp + libs/JSystem/src/JStudio/JStudio/fvb-data.cpp + libs/JSystem/src/JStudio/JStudio/fvb-data-parse.cpp + libs/JSystem/src/JStudio/JStudio/jstudio-control.cpp + libs/JSystem/src/JStudio/JStudio/jstudio-data.cpp + libs/JSystem/src/JStudio/JStudio/jstudio-math.cpp + libs/JSystem/src/JStudio/JStudio/jstudio-object.cpp + libs/JSystem/src/JStudio/JStudio/object-id.cpp + libs/JSystem/src/JStudio/JStudio/stb.cpp + libs/JSystem/src/JStudio/JStudio/stb-data-parse.cpp + libs/JSystem/src/JStudio/JStudio/stb-data.cpp ) add_library(JSystem_JStudio_JStage STATIC - libs/JSystem/src/JStudio/JStudio_JStage/control.cpp - libs/JSystem/src/JStudio/JStudio_JStage/object.cpp - libs/JSystem/src/JStudio/JStudio_JStage/object-actor.cpp - libs/JSystem/src/JStudio/JStudio_JStage/object-ambientlight.cpp - libs/JSystem/src/JStudio/JStudio_JStage/object-camera.cpp - libs/JSystem/src/JStudio/JStudio_JStage/object-fog.cpp - libs/JSystem/src/JStudio/JStudio_JStage/object-light.cpp + libs/JSystem/src/JStudio/JStudio_JStage/control.cpp + libs/JSystem/src/JStudio/JStudio_JStage/object.cpp + libs/JSystem/src/JStudio/JStudio_JStage/object-actor.cpp + libs/JSystem/src/JStudio/JStudio_JStage/object-ambientlight.cpp + libs/JSystem/src/JStudio/JStudio_JStage/object-camera.cpp + libs/JSystem/src/JStudio/JStudio_JStage/object-fog.cpp + libs/JSystem/src/JStudio/JStudio_JStage/object-light.cpp ) add_library(JSystem_JStudio_JAudio2 STATIC - libs/JSystem/src/JStudio/JStudio_JAudio2/control.cpp - libs/JSystem/src/JStudio/JStudio_JAudio2/object-sound.cpp + libs/JSystem/src/JStudio/JStudio_JAudio2/control.cpp + libs/JSystem/src/JStudio/JStudio_JAudio2/object-sound.cpp ) add_library(JSystem_JStudio_JParticle STATIC - libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp - libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp + libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp + libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp ) add_library(JSystem_JAudio2 STATIC - libs/JSystem/src/JAudio2/JASCalc.cpp - libs/JSystem/src/JAudio2/JASTaskThread.cpp - libs/JSystem/src/JAudio2/JASDvdThread.cpp - libs/JSystem/src/JAudio2/JASCallback.cpp - libs/JSystem/src/JAudio2/JASHeapCtrl.cpp - libs/JSystem/src/JAudio2/JASResArcLoader.cpp - libs/JSystem/src/JAudio2/JASProbe.cpp - libs/JSystem/src/JAudio2/JASReport.cpp - libs/JSystem/src/JAudio2/JASCmdStack.cpp - libs/JSystem/src/JAudio2/JASTrack.cpp - libs/JSystem/src/JAudio2/JASTrackPort.cpp - libs/JSystem/src/JAudio2/JASRegisterParam.cpp - libs/JSystem/src/JAudio2/JASSeqCtrl.cpp - libs/JSystem/src/JAudio2/JASSeqParser.cpp - libs/JSystem/src/JAudio2/JASSeqReader.cpp - libs/JSystem/src/JAudio2/JASAramStream.cpp - libs/JSystem/src/JAudio2/JASBank.cpp - libs/JSystem/src/JAudio2/JASBasicBank.cpp - libs/JSystem/src/JAudio2/JASVoiceBank.cpp - libs/JSystem/src/JAudio2/JASBasicInst.cpp - libs/JSystem/src/JAudio2/JASDrumSet.cpp - libs/JSystem/src/JAudio2/JASBasicWaveBank.cpp - libs/JSystem/src/JAudio2/JASSimpleWaveBank.cpp - libs/JSystem/src/JAudio2/JASWSParser.cpp - libs/JSystem/src/JAudio2/JASBNKParser.cpp - libs/JSystem/src/JAudio2/JASWaveArcLoader.cpp - libs/JSystem/src/JAudio2/JASChannel.cpp - libs/JSystem/src/JAudio2/JASLfo.cpp - libs/JSystem/src/JAudio2/JASOscillator.cpp - libs/JSystem/src/JAudio2/JASAiCtrl.cpp - libs/JSystem/src/JAudio2/JASAudioThread.cpp - libs/JSystem/src/JAudio2/JASAudioReseter.cpp - libs/JSystem/src/JAudio2/JASDSPChannel.cpp - libs/JSystem/src/JAudio2/JASDSPInterface.cpp - libs/JSystem/src/JAudio2/JASDriverIF.cpp - libs/JSystem/src/JAudio2/JASSoundParams.cpp - libs/JSystem/src/JAudio2/JAIAudible.cpp - libs/JSystem/src/JAudio2/JAIAudience.cpp - libs/JSystem/src/JAudio2/JAISe.cpp - libs/JSystem/src/JAudio2/JAISeMgr.cpp - libs/JSystem/src/JAudio2/JAISeq.cpp - libs/JSystem/src/JAudio2/JAISeqDataMgr.cpp - libs/JSystem/src/JAudio2/JAISeqMgr.cpp - libs/JSystem/src/JAudio2/JAISound.cpp - libs/JSystem/src/JAudio2/JAISoundChild.cpp - libs/JSystem/src/JAudio2/JAISoundHandles.cpp - libs/JSystem/src/JAudio2/JAISoundInfo.cpp - libs/JSystem/src/JAudio2/JAISoundParams.cpp - libs/JSystem/src/JAudio2/JAISoundStarter.cpp - libs/JSystem/src/JAudio2/JAIStream.cpp - libs/JSystem/src/JAudio2/JAIStreamDataMgr.cpp - libs/JSystem/src/JAudio2/JAIStreamMgr.cpp - libs/JSystem/src/JAudio2/JAUAudioArcInterpreter.cpp - libs/JSystem/src/JAudio2/JAUAudioArcLoader.cpp - libs/JSystem/src/JAudio2/JAUAudioMgr.cpp - libs/JSystem/src/JAudio2/JAUBankTable.cpp - libs/JSystem/src/JAudio2/JAUClusterSound.cpp - libs/JSystem/src/JAudio2/JAUInitializer.cpp - libs/JSystem/src/JAudio2/JAUSectionHeap.cpp - libs/JSystem/src/JAudio2/JAUSeqCollection.cpp - libs/JSystem/src/JAudio2/JAUSeqDataBlockMgr.cpp - libs/JSystem/src/JAudio2/JAUSoundAnimator.cpp - libs/JSystem/src/JAudio2/JAUSoundTable.cpp - libs/JSystem/src/JAudio2/JAUStreamFileTable.cpp + libs/JSystem/src/JAudio2/JASCalc.cpp + libs/JSystem/src/JAudio2/JASTaskThread.cpp + libs/JSystem/src/JAudio2/JASDvdThread.cpp + libs/JSystem/src/JAudio2/JASCallback.cpp + libs/JSystem/src/JAudio2/JASHeapCtrl.cpp + libs/JSystem/src/JAudio2/JASResArcLoader.cpp + libs/JSystem/src/JAudio2/JASProbe.cpp + libs/JSystem/src/JAudio2/JASReport.cpp + libs/JSystem/src/JAudio2/JASCmdStack.cpp + libs/JSystem/src/JAudio2/JASTrack.cpp + libs/JSystem/src/JAudio2/JASTrackPort.cpp + libs/JSystem/src/JAudio2/JASRegisterParam.cpp + libs/JSystem/src/JAudio2/JASSeqCtrl.cpp + libs/JSystem/src/JAudio2/JASSeqParser.cpp + libs/JSystem/src/JAudio2/JASSeqReader.cpp + libs/JSystem/src/JAudio2/JASAramStream.cpp + libs/JSystem/src/JAudio2/JASBank.cpp + libs/JSystem/src/JAudio2/JASBasicBank.cpp + libs/JSystem/src/JAudio2/JASVoiceBank.cpp + libs/JSystem/src/JAudio2/JASBasicInst.cpp + libs/JSystem/src/JAudio2/JASDrumSet.cpp + libs/JSystem/src/JAudio2/JASBasicWaveBank.cpp + libs/JSystem/src/JAudio2/JASSimpleWaveBank.cpp + libs/JSystem/src/JAudio2/JASWSParser.cpp + libs/JSystem/src/JAudio2/JASBNKParser.cpp + libs/JSystem/src/JAudio2/JASWaveArcLoader.cpp + libs/JSystem/src/JAudio2/JASChannel.cpp + libs/JSystem/src/JAudio2/JASLfo.cpp + libs/JSystem/src/JAudio2/JASOscillator.cpp + libs/JSystem/src/JAudio2/JASAiCtrl.cpp + libs/JSystem/src/JAudio2/JASAudioThread.cpp + libs/JSystem/src/JAudio2/JASAudioReseter.cpp + libs/JSystem/src/JAudio2/JASDSPChannel.cpp + libs/JSystem/src/JAudio2/JASDSPInterface.cpp + libs/JSystem/src/JAudio2/JASDriverIF.cpp + libs/JSystem/src/JAudio2/JASSoundParams.cpp + libs/JSystem/src/JAudio2/JAIAudible.cpp + libs/JSystem/src/JAudio2/JAIAudience.cpp + libs/JSystem/src/JAudio2/JAISe.cpp + libs/JSystem/src/JAudio2/JAISeMgr.cpp + libs/JSystem/src/JAudio2/JAISeq.cpp + libs/JSystem/src/JAudio2/JAISeqDataMgr.cpp + libs/JSystem/src/JAudio2/JAISeqMgr.cpp + libs/JSystem/src/JAudio2/JAISound.cpp + libs/JSystem/src/JAudio2/JAISoundChild.cpp + libs/JSystem/src/JAudio2/JAISoundHandles.cpp + libs/JSystem/src/JAudio2/JAISoundInfo.cpp + libs/JSystem/src/JAudio2/JAISoundParams.cpp + libs/JSystem/src/JAudio2/JAISoundStarter.cpp + libs/JSystem/src/JAudio2/JAIStream.cpp + libs/JSystem/src/JAudio2/JAIStreamDataMgr.cpp + libs/JSystem/src/JAudio2/JAIStreamMgr.cpp + libs/JSystem/src/JAudio2/JAUAudioArcInterpreter.cpp + libs/JSystem/src/JAudio2/JAUAudioArcLoader.cpp + libs/JSystem/src/JAudio2/JAUAudioMgr.cpp + libs/JSystem/src/JAudio2/JAUBankTable.cpp + libs/JSystem/src/JAudio2/JAUClusterSound.cpp + libs/JSystem/src/JAudio2/JAUInitializer.cpp + libs/JSystem/src/JAudio2/JAUSectionHeap.cpp + libs/JSystem/src/JAudio2/JAUSeqCollection.cpp + libs/JSystem/src/JAudio2/JAUSeqDataBlockMgr.cpp + libs/JSystem/src/JAudio2/JAUSoundAnimator.cpp + libs/JSystem/src/JAudio2/JAUSoundTable.cpp + libs/JSystem/src/JAudio2/JAUStreamFileTable.cpp ) add_library(JSystem_JMessage STATIC - libs/JSystem/src/JMessage/control.cpp - libs/JSystem/src/JMessage/data.cpp - libs/JSystem/src/JMessage/processor.cpp - libs/JSystem/src/JMessage/resource.cpp - libs/JSystem/src/JMessage/locale.cpp + libs/JSystem/src/JMessage/control.cpp + libs/JSystem/src/JMessage/data.cpp + libs/JSystem/src/JMessage/processor.cpp + libs/JSystem/src/JMessage/resource.cpp + libs/JSystem/src/JMessage/locale.cpp ) add_library(JSystem_JGadget STATIC - libs/JSystem/src/JGadget/binary.cpp - libs/JSystem/src/JGadget/define.cpp - libs/JSystem/src/JGadget/linklist.cpp - libs/JSystem/src/JGadget/search.cpp - libs/JSystem/src/JGadget/std-vector.cpp + libs/JSystem/src/JGadget/binary.cpp + libs/JSystem/src/JGadget/define.cpp + libs/JSystem/src/JGadget/linklist.cpp + libs/JSystem/src/JGadget/search.cpp + libs/JSystem/src/JGadget/std-vector.cpp ) add_library(JSystem_JAHostIO STATIC - libs/JSystem/src/JAHostIO/JAHFrameNode.cpp - libs/JSystem/src/JAHostIO/JAHioMessage.cpp - libs/JSystem/src/JAHostIO/JAHioMgr.cpp - libs/JSystem/src/JAHostIO/JAHioNode.cpp - libs/JSystem/src/JAHostIO/JAHioUtil.cpp - libs/JSystem/src/JAHostIO/JAHVirtualNode.cpp + libs/JSystem/src/JAHostIO/JAHFrameNode.cpp + libs/JSystem/src/JAHostIO/JAHioMessage.cpp + libs/JSystem/src/JAHostIO/JAHioMgr.cpp + libs/JSystem/src/JAHostIO/JAHioNode.cpp + libs/JSystem/src/JAHostIO/JAHioUtil.cpp + libs/JSystem/src/JAHostIO/JAHVirtualNode.cpp ) add_library(JSystem_JHostIO STATIC - libs/JSystem/src/JHostIO/JORFile.cpp - libs/JSystem/src/JHostIO/JORHostInfo.cpp - libs/JSystem/src/JHostIO/JORMessageBox.cpp - libs/JSystem/src/JHostIO/JORServer.cpp - libs/JSystem/src/JHostIO/JHIhioASync.cpp - libs/JSystem/src/JHostIO/JHIRMcc.cpp - libs/JSystem/src/JHostIO/JHIMccBuf.cpp + libs/JSystem/src/JHostIO/JORFile.cpp + libs/JSystem/src/JHostIO/JORHostInfo.cpp + libs/JSystem/src/JHostIO/JORMessageBox.cpp + libs/JSystem/src/JHostIO/JORServer.cpp + libs/JSystem/src/JHostIO/JHIhioASync.cpp + libs/JSystem/src/JHostIO/JHIRMcc.cpp + libs/JSystem/src/JHostIO/JHIMccBuf.cpp ) set(JSYSTEM_LIBRARIES - JSystem_JParticle - JSystem_JFramework - JSystem_J3DU - JSystem_JKernel - JSystem_JMath - JSystem_JSupport - JSystem_JUtility - JSystem_JStage - JSystem_J2DGraph - JSystem_J3DGraphBase - JSystem_J3DGraphAnimator - JSystem_J3DGraphLoader - JSystem_JStudio - JSystem_JStudio_JStage - JSystem_JStudio_JAudio2 - JSystem_JStudio_JParticle - JSystem_JAudio2 - JSystem_JMessage - JSystem_JGadget - JSystem_JAHostIO - JSystem_JHostIO + JSystem_JParticle + JSystem_JFramework + JSystem_J3DU + JSystem_JKernel + JSystem_JMath + JSystem_JSupport + JSystem_JUtility + JSystem_JStage + JSystem_J2DGraph + JSystem_J3DGraphBase + JSystem_J3DGraphAnimator + JSystem_J3DGraphLoader + JSystem_JStudio + JSystem_JStudio_JStage + JSystem_JStudio_JAudio2 + JSystem_JStudio_JParticle + JSystem_JAudio2 + JSystem_JMessage + JSystem_JGadget + JSystem_JAHostIO + JSystem_JHostIO ) set(REL_FILES - src/f_pc/f_pc_profile_lst.cpp - src/d/actor/d_a_andsw.cpp - src/d/actor/d_a_bg.cpp - src/d/actor/d_a_bg_obj.cpp - src/d/actor/d_a_dmidna.cpp - src/d/actor/d_a_door_dbdoor00.cpp - src/d/actor/d_a_door_knob00.cpp - src/d/actor/d_a_door_shutter.cpp - src/d/actor/d_a_door_spiral.cpp - src/d/actor/d_a_dshutter.cpp - src/d/actor/d_a_ep.cpp - src/d/actor/d_a_hitobj.cpp - src/d/actor/d_a_kytag00.cpp - src/d/actor/d_a_kytag04.cpp - src/d/actor/d_a_kytag17.cpp - src/d/actor/d_a_obj_brakeeff.cpp - src/d/actor/d_a_obj_burnbox.cpp - src/d/actor/d_a_obj_carry.cpp - src/d/actor/d_a_obj_ito.cpp - src/d/actor/d_a_obj_movebox.cpp - src/d/actor/d_a_obj_swpush.cpp - src/d/actor/d_a_obj_timer.cpp - src/d/actor/d_a_path_line.cpp - src/d/actor/d_a_scene_exit.cpp - src/d/actor/d_a_set_bgobj.cpp - src/d/actor/d_a_swhit0.cpp - src/d/actor/d_a_tag_allmato.cpp - src/d/actor/d_a_tag_camera.cpp - src/d/actor/d_a_tag_chkpoint.cpp - src/d/actor/d_a_tag_event.cpp - src/d/actor/d_a_tag_evt.cpp - src/d/actor/d_a_tag_evtarea.cpp - src/d/actor/d_a_tag_evtmsg.cpp - src/d/actor/d_a_tag_howl.cpp - src/d/actor/d_a_tag_kmsg.cpp - src/d/actor/d_a_tag_lantern.cpp - src/d/actor/d_a_tag_mist.cpp - src/d/actor/d_a_tag_msg.cpp - src/d/actor/d_a_tag_push.cpp - src/d/actor/d_a_tag_telop.cpp - src/d/actor/d_a_tbox.cpp - src/d/actor/d_a_tbox2.cpp - src/d/actor/d_a_vrbox.cpp - src/d/actor/d_a_vrbox2.cpp - src/d/actor/d_a_arrow.cpp - src/d/actor/d_a_boomerang.cpp - src/d/actor/d_a_crod.cpp - src/d/actor/d_a_demo00.cpp - src/d/actor/d_a_disappear.cpp - src/d/actor/d_a_mg_rod.cpp - src/d/actor/d_a_midna.cpp - src/d/actor/d_a_nbomb.cpp - src/d/actor/d_a_obj_life_container.cpp - src/d/actor/d_a_obj_yousei.cpp - src/d/actor/d_a_spinner.cpp - src/d/actor/d_a_suspend.cpp - src/d/actor/d_a_tag_attention.cpp - src/d/actor/d_a_alldie.cpp - src/d/actor/d_a_andsw2.cpp - src/d/actor/d_a_bd.cpp - src/d/actor/d_a_canoe.cpp - src/d/actor/d_a_cstaF.cpp - src/d/actor/d_a_demo_item.cpp - src/d/actor/d_a_door_bossL1.cpp - src/d/actor/d_a_e_dn.cpp - src/d/actor/d_a_e_fm.cpp - src/d/actor/d_a_e_ga.cpp - src/d/actor/d_a_e_hb.cpp - src/d/actor/d_a_e_nest.cpp - src/d/actor/d_a_e_rd.cpp - src/d/actor/d_a_econt.cpp - src/d/actor/d_a_fr.cpp - src/d/actor/d_a_grass.cpp - src/d/actor/d_a_kytag05.cpp - src/d/actor/d_a_kytag10.cpp - src/d/actor/d_a_kytag11.cpp - src/d/actor/d_a_kytag14.cpp - src/d/actor/d_a_mg_fish.cpp - src/d/actor/d_a_npc_besu.cpp - src/d/actor/d_a_npc_fairy_seirei.cpp - src/d/actor/d_a_npc_fish.cpp - src/d/actor/d_a_npc_henna.cpp - src/d/actor/d_a_npc_kakashi.cpp - src/d/actor/d_a_npc_kkri.cpp - src/d/actor/d_a_npc_kolin.cpp - src/d/actor/d_a_npc_maro.cpp - src/d/actor/d_a_npc_taro.cpp - src/d/actor/d_a_npc_tkj.cpp - src/d/actor/d_a_obj_bhashi.cpp - src/d/actor/d_a_obj_bkdoor.cpp - src/d/actor/d_a_obj_bosswarp.cpp - src/d/actor/d_a_obj_cboard.cpp - src/d/actor/d_a_obj_digplace.cpp - src/d/actor/d_a_obj_eff.cpp - src/d/actor/d_a_obj_fmobj.cpp - src/d/actor/d_a_obj_gpTaru.cpp - src/d/actor/d_a_obj_hhashi.cpp - src/d/actor/d_a_obj_kanban2.cpp - src/d/actor/d_a_obj_kbacket.cpp - src/d/actor/d_a_obj_kgate.cpp - src/d/actor/d_a_obj_klift00.cpp - src/d/actor/d_a_obj_ktOnFire.cpp - src/d/actor/d_a_obj_ladder.cpp - src/d/actor/d_a_obj_lv2Candle.cpp - src/d/actor/d_a_obj_magne_arm.cpp - src/d/actor/d_a_obj_metalbox.cpp - src/d/actor/d_a_obj_mgate.cpp - src/d/actor/d_a_obj_nameplate.cpp - src/d/actor/d_a_obj_ornament_cloth.cpp - src/d/actor/d_a_obj_rope_bridge.cpp - src/d/actor/d_a_obj_sWallShutter.cpp - src/d/actor/d_a_obj_stick.cpp - src/d/actor/d_a_obj_stoneMark.cpp - src/d/actor/d_a_obj_swpropeller.cpp - src/d/actor/d_a_obj_swpush5.cpp - src/d/actor/d_a_obj_yobikusa.cpp - src/d/actor/d_a_scene_exit2.cpp - src/d/actor/d_a_shop_item.cpp - src/d/actor/d_a_sq.cpp - src/d/actor/d_a_swc00.cpp - src/d/actor/d_a_tag_CstaSw.cpp - src/d/actor/d_a_tag_ajnot.cpp - src/d/actor/d_a_tag_attack_item.cpp - src/d/actor/d_a_tag_gstart.cpp - src/d/actor/d_a_tag_hinit.cpp - src/d/actor/d_a_tag_hjump.cpp - src/d/actor/d_a_tag_hstop.cpp - src/d/actor/d_a_tag_lv2prchk.cpp - src/d/actor/d_a_tag_magne.cpp - src/d/actor/d_a_tag_mhint.cpp - src/d/actor/d_a_tag_mstop.cpp - src/d/actor/d_a_tag_spring.cpp - src/d/actor/d_a_tag_statue_evt.cpp - src/d/actor/d_a_ykgr.cpp - src/d/actor/d_a_L7demo_dr.cpp - src/d/actor/d_a_L7low_dr.cpp - src/d/actor/d_a_L7op_demo_dr.cpp - src/d/actor/d_a_b_bh.cpp - src/d/actor/d_a_b_bq.cpp - src/d/actor/d_a_b_dr.cpp - src/d/actor/d_a_b_dre.cpp - src/d/actor/d_a_b_ds.cpp - src/d/actor/d_a_b_gg.cpp - src/d/actor/d_a_b_gm.cpp - src/d/actor/d_a_b_gnd.cpp - src/d/actor/d_a_b_go.cpp - src/d/actor/d_a_b_gos.cpp - src/d/actor/d_a_b_mgn.cpp - src/d/actor/d_a_b_ob.cpp - src/d/actor/d_a_b_oh.cpp - src/d/actor/d_a_b_oh2.cpp - src/d/actor/d_a_b_tn.cpp - src/d/actor/d_a_b_yo.cpp - src/d/actor/d_a_b_yo_ice.cpp - src/d/actor/d_a_b_zant.cpp - src/d/actor/d_a_b_zant_magic.cpp - src/d/actor/d_a_b_zant_mobile.cpp - src/d/actor/d_a_b_zant_sima.cpp - src/d/actor/d_a_balloon_2D.cpp - src/d/actor/d_a_bullet.cpp - src/d/actor/d_a_coach_2D.cpp - src/d/actor/d_a_coach_fire.cpp - src/d/actor/d_a_cow.cpp - src/d/actor/d_a_cstatue.cpp - src/d/actor/d_a_do.cpp - src/d/actor/d_a_door_boss.cpp - src/d/actor/d_a_door_bossL5.cpp - src/d/actor/d_a_door_mbossL1.cpp - src/d/actor/d_a_door_push.cpp - src/d/actor/d_a_e_ai.cpp - src/d/actor/d_a_e_arrow.cpp - src/d/actor/d_a_e_ba.cpp - src/d/actor/d_a_e_bee.cpp - src/d/actor/d_a_e_bg.cpp - src/d/actor/d_a_e_bi.cpp - src/d/actor/d_a_e_bi_leaf.cpp - src/d/actor/d_a_e_bs.cpp - src/d/actor/d_a_e_bu.cpp - src/d/actor/d_a_e_bug.cpp - src/d/actor/d_a_e_cr.cpp - src/d/actor/d_a_e_cr_egg.cpp - src/d/actor/d_a_e_db.cpp - src/d/actor/d_a_e_db_leaf.cpp - src/d/actor/d_a_e_dd.cpp - src/d/actor/d_a_e_df.cpp - src/d/actor/d_a_e_dk.cpp - src/d/actor/d_a_e_dt.cpp - src/d/actor/d_a_e_fb.cpp - src/d/actor/d_a_e_fk.cpp - src/d/actor/d_a_e_fs.cpp - src/d/actor/d_a_e_fz.cpp - src/d/actor/d_a_e_gb.cpp - src/d/actor/d_a_e_ge.cpp - src/d/actor/d_a_e_gi.cpp - src/d/actor/d_a_e_gm.cpp - src/d/actor/d_a_e_gob.cpp - src/d/actor/d_a_e_gs.cpp - src/d/actor/d_a_e_hb_leaf.cpp - src/d/actor/d_a_e_hm.cpp - src/d/actor/d_a_e_hp.cpp - src/d/actor/d_a_e_hz.cpp - src/d/actor/d_a_e_hzelda.cpp - src/d/actor/d_a_e_is.cpp - src/d/actor/d_a_e_kg.cpp - src/d/actor/d_a_e_kk.cpp - src/d/actor/d_a_e_kr.cpp - src/d/actor/d_a_e_mb.cpp - src/d/actor/d_a_e_md.cpp - src/d/actor/d_a_e_mf.cpp - src/d/actor/d_a_e_mk.cpp - src/d/actor/d_a_e_mk_bo.cpp - src/d/actor/d_a_e_mm.cpp - src/d/actor/d_a_e_mm_mt.cpp - src/d/actor/d_a_e_ms.cpp - src/d/actor/d_a_e_nz.cpp - src/d/actor/d_a_e_oc.cpp - src/d/actor/d_a_e_oct_bg.cpp - src/d/actor/d_a_e_ot.cpp - src/d/actor/d_a_e_ph.cpp - src/d/actor/d_a_e_pm.cpp - src/d/actor/d_a_e_po.cpp - src/d/actor/d_a_e_pz.cpp - src/d/actor/d_a_e_rb.cpp - src/d/actor/d_a_e_rdb.cpp - src/d/actor/d_a_e_rdy.cpp - src/d/actor/d_a_e_s1.cpp - src/d/actor/d_a_e_sb.cpp - src/d/actor/d_a_e_sf.cpp - src/d/actor/d_a_e_sg.cpp - src/d/actor/d_a_e_sh.cpp - src/d/actor/d_a_e_sm.cpp - src/d/actor/d_a_e_sm2.cpp - src/d/actor/d_a_e_st.cpp - src/d/actor/d_a_e_st_line.cpp - src/d/actor/d_a_e_sw.cpp - src/d/actor/d_a_e_th.cpp - src/d/actor/d_a_e_th_ball.cpp - src/d/actor/d_a_e_tk.cpp - src/d/actor/d_a_e_tk2.cpp - src/d/actor/d_a_e_tk_ball.cpp - src/d/actor/d_a_e_tt.cpp - src/d/actor/d_a_e_vt.cpp - src/d/actor/d_a_e_warpappear.cpp - src/d/actor/d_a_e_wb.cpp - src/d/actor/d_a_e_ws.cpp - src/d/actor/d_a_e_ww.cpp - src/d/actor/d_a_e_yc.cpp - src/d/actor/d_a_e_yd.cpp - src/d/actor/d_a_e_yd_leaf.cpp - src/d/actor/d_a_e_yg.cpp - src/d/actor/d_a_e_yh.cpp - src/d/actor/d_a_e_yk.cpp - src/d/actor/d_a_e_ym.cpp - src/d/actor/d_a_e_ym_tag.cpp - src/d/actor/d_a_e_ymb.cpp - src/d/actor/d_a_e_yr.cpp - src/d/actor/d_a_e_zh.cpp - src/d/actor/d_a_e_zm.cpp - src/d/actor/d_a_e_zs.cpp - src/d/actor/d_a_formation_mng.cpp - src/d/actor/d_a_guard_mng.cpp - src/d/actor/d_a_horse.cpp - src/d/actor/d_a_hozelda.cpp - src/d/actor/d_a_izumi_gate.cpp - src/d/actor/d_a_kago.cpp - src/d/actor/d_a_kytag01.cpp - src/d/actor/d_a_kytag02.cpp - src/d/actor/d_a_kytag03.cpp - src/d/actor/d_a_kytag06.cpp - src/d/actor/d_a_kytag07.cpp - src/d/actor/d_a_kytag08.cpp - src/d/actor/d_a_kytag09.cpp - src/d/actor/d_a_kytag12.cpp - src/d/actor/d_a_kytag13.cpp - src/d/actor/d_a_kytag15.cpp - src/d/actor/d_a_kytag16.cpp - src/d/actor/d_a_mant.cpp - src/d/actor/d_a_mg_fshop.cpp - src/d/actor/d_a_mirror.cpp - src/d/actor/d_a_movie_player.cpp - src/d/actor/d_a_myna.cpp - src/d/actor/d_a_ni.cpp - src/d/actor/d_a_npc_aru.cpp - src/d/actor/d_a_npc_ash.cpp - src/d/actor/d_a_npc_ashB.cpp - src/d/actor/d_a_npc_bans.cpp - src/d/actor/d_a_npc_blue_ns.cpp - src/d/actor/d_a_npc_bou.cpp - src/d/actor/d_a_npc_bouS.cpp - src/d/actor/d_a_npc_cdn3.cpp - src/d/actor/d_a_npc_chat.cpp - src/d/actor/d_a_npc_chin.cpp - src/d/actor/d_a_npc_clerka.cpp - src/d/actor/d_a_npc_clerkb.cpp - src/d/actor/d_a_npc_clerkt.cpp - src/d/actor/d_a_npc_coach.cpp - src/d/actor/d_a_npc_df.cpp - src/d/actor/d_a_npc_doc.cpp - src/d/actor/d_a_npc_doorboy.cpp - src/d/actor/d_a_npc_drainSol.cpp - src/d/actor/d_a_npc_du.cpp - src/d/actor/d_a_npc_fairy.cpp - src/d/actor/d_a_npc_fguard.cpp - src/d/actor/d_a_npc_gnd.cpp - src/d/actor/d_a_npc_gra.cpp - src/d/actor/d_a_npc_grc.cpp - src/d/actor/d_a_npc_grd.cpp - src/d/actor/d_a_npc_grm.cpp - src/d/actor/d_a_npc_grmc.cpp - src/d/actor/d_a_npc_gro.cpp - src/d/actor/d_a_npc_grr.cpp - src/d/actor/d_a_npc_grs.cpp - src/d/actor/d_a_npc_grz.cpp - src/d/actor/d_a_npc_guard.cpp - src/d/actor/d_a_npc_gwolf.cpp - src/d/actor/d_a_npc_hanjo.cpp - src/d/actor/d_a_npc_henna0.cpp - src/d/actor/d_a_npc_hoz.cpp - src/d/actor/d_a_npc_impal.cpp - src/d/actor/d_a_npc_inko.cpp - src/d/actor/d_a_npc_ins.cpp - src/d/actor/d_a_npc_jagar.cpp - src/d/actor/d_a_npc_kasi_hana.cpp - src/d/actor/d_a_npc_kasi_kyu.cpp - src/d/actor/d_a_npc_kasi_mich.cpp - src/d/actor/d_a_npc_kdk.cpp - src/d/actor/d_a_npc_kn.cpp - src/d/actor/d_a_npc_knj.cpp - src/d/actor/d_a_npc_kolinb.cpp - src/d/actor/d_a_npc_ks.cpp - src/d/actor/d_a_npc_kyury.cpp - src/d/actor/d_a_npc_len.cpp - src/d/actor/d_a_npc_lf.cpp - src/d/actor/d_a_npc_lud.cpp - src/d/actor/d_a_npc_midp.cpp - src/d/actor/d_a_npc_mk.cpp - src/d/actor/d_a_npc_moi.cpp - src/d/actor/d_a_npc_moir.cpp - src/d/actor/d_a_npc_myna2.cpp - src/d/actor/d_a_npc_ne.cpp - src/d/actor/d_a_npc_p2.cpp - src/d/actor/d_a_npc_pachi_besu.cpp - src/d/actor/d_a_npc_pachi_maro.cpp - src/d/actor/d_a_npc_pachi_taro.cpp - src/d/actor/d_a_npc_passer.cpp - src/d/actor/d_a_npc_passer2.cpp - src/d/actor/d_a_npc_post.cpp - src/d/actor/d_a_npc_pouya.cpp - src/d/actor/d_a_npc_prayer.cpp - src/d/actor/d_a_npc_raca.cpp - src/d/actor/d_a_npc_rafrel.cpp - src/d/actor/d_a_npc_saru.cpp - src/d/actor/d_a_npc_seib.cpp - src/d/actor/d_a_npc_seic.cpp - src/d/actor/d_a_npc_seid.cpp - src/d/actor/d_a_npc_seira.cpp - src/d/actor/d_a_npc_seira2.cpp - src/d/actor/d_a_npc_seirei.cpp - src/d/actor/d_a_npc_shad.cpp - src/d/actor/d_a_npc_shaman.cpp - src/d/actor/d_a_npc_shoe.cpp - src/d/actor/d_a_npc_shop0.cpp - src/d/actor/d_a_npc_shop_maro.cpp - src/d/actor/d_a_npc_sola.cpp - src/d/actor/d_a_npc_soldierA.cpp - src/d/actor/d_a_npc_soldierB.cpp - src/d/actor/d_a_npc_sq.cpp - src/d/actor/d_a_npc_the.cpp - src/d/actor/d_a_npc_theB.cpp - src/d/actor/d_a_npc_tk.cpp - src/d/actor/d_a_npc_tkc.cpp - src/d/actor/d_a_npc_tkj2.cpp - src/d/actor/d_a_npc_tks.cpp - src/d/actor/d_a_npc_toby.cpp - src/d/actor/d_a_npc_tr.cpp - src/d/actor/d_a_npc_uri.cpp - src/d/actor/d_a_npc_worm.cpp - src/d/actor/d_a_npc_wrestler.cpp - src/d/actor/d_a_npc_yamid.cpp - src/d/actor/d_a_npc_yamis.cpp - src/d/actor/d_a_npc_yamit.cpp - src/d/actor/d_a_npc_yelia.cpp - src/d/actor/d_a_npc_ykm.cpp - src/d/actor/d_a_npc_ykw.cpp - src/d/actor/d_a_npc_zanb.cpp - src/d/actor/d_a_npc_zant.cpp - src/d/actor/d_a_npc_zelR.cpp - src/d/actor/d_a_npc_zelRo.cpp - src/d/actor/d_a_npc_zelda.cpp - src/d/actor/d_a_npc_zra.cpp - src/d/actor/d_a_npc_zrc.cpp - src/d/actor/d_a_npc_zrz.cpp - src/d/actor/d_a_obj_Lv5Key.cpp - src/d/actor/d_a_obj_Turara.cpp - src/d/actor/d_a_obj_TvCdlst.cpp - src/d/actor/d_a_obj_Y_taihou.cpp - src/d/actor/d_a_obj_amiShutter.cpp - src/d/actor/d_a_obj_ari.cpp - src/d/actor/d_a_obj_automata.cpp - src/d/actor/d_a_obj_avalanche.cpp - src/d/actor/d_a_obj_balloon.cpp - src/d/actor/d_a_obj_barDesk.cpp - src/d/actor/d_a_obj_batta.cpp - src/d/actor/d_a_obj_bbox.cpp - src/d/actor/d_a_obj_bed.cpp - src/d/actor/d_a_obj_bemos.cpp - src/d/actor/d_a_obj_bhbridge.cpp - src/d/actor/d_a_obj_bk_leaf.cpp - src/d/actor/d_a_obj_bky_rock.cpp - src/d/actor/d_a_obj_bmWindow.cpp - src/d/actor/d_a_obj_bmshutter.cpp - src/d/actor/d_a_obj_bombf.cpp - src/d/actor/d_a_obj_boumato.cpp - src/d/actor/d_a_obj_brg.cpp - src/d/actor/d_a_obj_bsGate.cpp - src/d/actor/d_a_obj_bubblePilar.cpp - src/d/actor/d_a_obj_catdoor.cpp - src/d/actor/d_a_obj_cb.cpp - src/d/actor/d_a_obj_cblock.cpp - src/d/actor/d_a_obj_cdoor.cpp - src/d/actor/d_a_obj_chandelier.cpp - src/d/actor/d_a_obj_chest.cpp - src/d/actor/d_a_obj_cho.cpp - src/d/actor/d_a_obj_cowdoor.cpp - src/d/actor/d_a_obj_crope.cpp - src/d/actor/d_a_obj_crvfence.cpp - src/d/actor/d_a_obj_crvgate.cpp - src/d/actor/d_a_obj_crvhahen.cpp - src/d/actor/d_a_obj_crvlh_down.cpp - src/d/actor/d_a_obj_crvlh_up.cpp - src/d/actor/d_a_obj_crvsteel.cpp - src/d/actor/d_a_obj_crystal.cpp - src/d/actor/d_a_obj_cwall.cpp - src/d/actor/d_a_obj_damCps.cpp - src/d/actor/d_a_obj_dan.cpp - src/d/actor/d_a_obj_digholl.cpp - src/d/actor/d_a_obj_digsnow.cpp - src/d/actor/d_a_obj_dmelevator.cpp - src/d/actor/d_a_obj_drop.cpp - src/d/actor/d_a_obj_dust.cpp - src/d/actor/d_a_obj_enemy_create.cpp - src/d/actor/d_a_obj_fallobj.cpp - src/d/actor/d_a_obj_fan.cpp - src/d/actor/d_a_obj_fchain.cpp - src/d/actor/d_a_obj_fireWood.cpp - src/d/actor/d_a_obj_fireWood2.cpp - src/d/actor/d_a_obj_firepillar.cpp - src/d/actor/d_a_obj_firepillar2.cpp - src/d/actor/d_a_obj_flag.cpp - src/d/actor/d_a_obj_flag2.cpp - src/d/actor/d_a_obj_flag3.cpp - src/d/actor/d_a_obj_food.cpp - src/d/actor/d_a_obj_fw.cpp - src/d/actor/d_a_obj_gadget.cpp - src/d/actor/d_a_obj_ganonwall.cpp - src/d/actor/d_a_obj_ganonwall2.cpp - src/d/actor/d_a_obj_gb.cpp - src/d/actor/d_a_obj_geyser.cpp - src/d/actor/d_a_obj_glowSphere.cpp - src/d/actor/d_a_obj_gm.cpp - src/d/actor/d_a_obj_goGate.cpp - src/d/actor/d_a_obj_gomikabe.cpp - src/d/actor/d_a_obj_gra2.cpp - src/d/actor/d_a_obj_graWall.cpp - src/d/actor/d_a_obj_gra_rock.cpp - src/d/actor/d_a_obj_grave_stone.cpp - src/d/actor/d_a_obj_groundwater.cpp - src/d/actor/d_a_obj_grz_rock.cpp - src/d/actor/d_a_obj_h_saku.cpp - src/d/actor/d_a_obj_hakai_brl.cpp - src/d/actor/d_a_obj_hakai_ftr.cpp - src/d/actor/d_a_obj_hasu2.cpp - src/d/actor/d_a_obj_hata.cpp - src/d/actor/d_a_obj_hb.cpp - src/d/actor/d_a_obj_hbombkoya.cpp - src/d/actor/d_a_obj_heavySw.cpp - src/d/actor/d_a_obj_hfuta.cpp - src/d/actor/d_a_obj_hsTarget.cpp - src/d/actor/d_a_obj_ice_l.cpp - src/d/actor/d_a_obj_ice_s.cpp - src/d/actor/d_a_obj_iceblock.cpp - src/d/actor/d_a_obj_iceleaf.cpp - src/d/actor/d_a_obj_ihasi.cpp - src/d/actor/d_a_obj_ikada.cpp - src/d/actor/d_a_obj_inobone.cpp - src/d/actor/d_a_obj_ita.cpp - src/d/actor/d_a_obj_itamato.cpp - src/d/actor/d_a_obj_kabuto.cpp - src/d/actor/d_a_obj_kag.cpp - src/d/actor/d_a_obj_kage.cpp - src/d/actor/d_a_obj_kago.cpp - src/d/actor/d_a_obj_kaisou.cpp - src/d/actor/d_a_obj_kamakiri.cpp - src/d/actor/d_a_obj_kantera.cpp - src/d/actor/d_a_obj_katatsumuri.cpp - src/d/actor/d_a_obj_kazeneko.cpp - src/d/actor/d_a_obj_kbox.cpp - src/d/actor/d_a_obj_key.cpp - src/d/actor/d_a_obj_keyhole.cpp - src/d/actor/d_a_obj_ki.cpp - src/d/actor/d_a_obj_kiPot.cpp - src/d/actor/d_a_obj_kita.cpp - src/d/actor/d_a_obj_kjgjs.cpp - src/d/actor/d_a_obj_kkanban.cpp - src/d/actor/d_a_obj_knBullet.cpp - src/d/actor/d_a_obj_kshutter.cpp - src/d/actor/d_a_obj_kuwagata.cpp - src/d/actor/d_a_obj_kwheel00.cpp - src/d/actor/d_a_obj_kwheel01.cpp - src/d/actor/d_a_obj_kznkarm.cpp - src/d/actor/d_a_obj_laundry.cpp - src/d/actor/d_a_obj_laundry_rope.cpp - src/d/actor/d_a_obj_lbox.cpp - src/d/actor/d_a_obj_lp.cpp - src/d/actor/d_a_obj_lv1Candle00.cpp - src/d/actor/d_a_obj_lv1Candle01.cpp - src/d/actor/d_a_obj_lv3Candle.cpp - src/d/actor/d_a_obj_lv3Water.cpp - src/d/actor/d_a_obj_lv3Water2.cpp - src/d/actor/d_a_obj_lv3WaterB.cpp - src/d/actor/d_a_obj_lv3saka00.cpp - src/d/actor/d_a_obj_lv3waterEff.cpp - src/d/actor/d_a_obj_lv4CandleDemoTag.cpp - src/d/actor/d_a_obj_lv4CandleTag.cpp - src/d/actor/d_a_obj_lv4EdShutter.cpp - src/d/actor/d_a_obj_lv4Gate.cpp - src/d/actor/d_a_obj_lv4HsTarget.cpp - src/d/actor/d_a_obj_lv4PoGate.cpp - src/d/actor/d_a_obj_lv4RailWall.cpp - src/d/actor/d_a_obj_lv4SlideWall.cpp - src/d/actor/d_a_obj_lv4bridge.cpp - src/d/actor/d_a_obj_lv4chandelier.cpp - src/d/actor/d_a_obj_lv4digsand.cpp - src/d/actor/d_a_obj_lv4floor.cpp - src/d/actor/d_a_obj_lv4gear.cpp - src/d/actor/d_a_obj_lv4prelvtr.cpp - src/d/actor/d_a_obj_lv4prwall.cpp - src/d/actor/d_a_obj_lv4sand.cpp - src/d/actor/d_a_obj_lv5FloorBoard.cpp - src/d/actor/d_a_obj_lv5IceWall.cpp - src/d/actor/d_a_obj_lv5SwIce.cpp - src/d/actor/d_a_obj_lv5ychndlr.cpp - src/d/actor/d_a_obj_lv5yiblltray.cpp - src/d/actor/d_a_obj_lv6ChangeGate.cpp - src/d/actor/d_a_obj_lv6FurikoTrap.cpp - src/d/actor/d_a_obj_lv6Lblock.cpp - src/d/actor/d_a_obj_lv6SwGate.cpp - src/d/actor/d_a_obj_lv6SzGate.cpp - src/d/actor/d_a_obj_lv6Tenbin.cpp - src/d/actor/d_a_obj_lv6TogeRoll.cpp - src/d/actor/d_a_obj_lv6TogeTrap.cpp - src/d/actor/d_a_obj_lv6bemos.cpp - src/d/actor/d_a_obj_lv6bemos2.cpp - src/d/actor/d_a_obj_lv6egate.cpp - src/d/actor/d_a_obj_lv6elevta.cpp - src/d/actor/d_a_obj_lv6swturn.cpp - src/d/actor/d_a_obj_lv7BsGate.cpp - src/d/actor/d_a_obj_lv7PropellerY.cpp - src/d/actor/d_a_obj_lv7bridge.cpp - src/d/actor/d_a_obj_lv8KekkaiTrap.cpp - src/d/actor/d_a_obj_lv8Lift.cpp - src/d/actor/d_a_obj_lv8OptiLift.cpp - src/d/actor/d_a_obj_lv8UdFloor.cpp - src/d/actor/d_a_obj_lv9SwShutter.cpp - src/d/actor/d_a_obj_magLift.cpp - src/d/actor/d_a_obj_magLiftRot.cpp - src/d/actor/d_a_obj_maki.cpp - src/d/actor/d_a_obj_master_sword.cpp - src/d/actor/d_a_obj_mato.cpp - src/d/actor/d_a_obj_mhole.cpp - src/d/actor/d_a_obj_mie.cpp - src/d/actor/d_a_obj_mirror_6pole.cpp - src/d/actor/d_a_obj_mirror_chain.cpp - src/d/actor/d_a_obj_mirror_sand.cpp - src/d/actor/d_a_obj_mirror_screw.cpp - src/d/actor/d_a_obj_mirror_table.cpp - src/d/actor/d_a_obj_msima.cpp - src/d/actor/d_a_obj_mvstair.cpp - src/d/actor/d_a_obj_myogan.cpp - src/d/actor/d_a_obj_nagaisu.cpp - src/d/actor/d_a_obj_nan.cpp - src/d/actor/d_a_obj_ndoor.cpp - src/d/actor/d_a_obj_nougu.cpp - src/d/actor/d_a_obj_octhashi.cpp - src/d/actor/d_a_obj_oiltubo.cpp - src/d/actor/d_a_obj_onsen.cpp - src/d/actor/d_a_obj_onsenFire.cpp - src/d/actor/d_a_obj_onsenTaru.cpp - src/d/actor/d_a_obj_pdoor.cpp - src/d/actor/d_a_obj_pdtile.cpp - src/d/actor/d_a_obj_pdwall.cpp - src/d/actor/d_a_obj_picture.cpp - src/d/actor/d_a_obj_pillar.cpp - src/d/actor/d_a_obj_pleaf.cpp - src/d/actor/d_a_obj_poCandle.cpp - src/d/actor/d_a_obj_poFire.cpp - src/d/actor/d_a_obj_poTbox.cpp - src/d/actor/d_a_obj_prop.cpp - src/d/actor/d_a_obj_pumpkin.cpp - src/d/actor/d_a_obj_rcircle.cpp - src/d/actor/d_a_obj_rfHole.cpp - src/d/actor/d_a_obj_rgate.cpp - src/d/actor/d_a_obj_riverrock.cpp - src/d/actor/d_a_obj_rock.cpp - src/d/actor/d_a_obj_rotBridge.cpp - src/d/actor/d_a_obj_rotTrap.cpp - src/d/actor/d_a_obj_roten.cpp - src/d/actor/d_a_obj_rstair.cpp - src/d/actor/d_a_obj_rw.cpp - src/d/actor/d_a_obj_saidan.cpp - src/d/actor/d_a_obj_sakuita.cpp - src/d/actor/d_a_obj_sakuita_rope.cpp - src/d/actor/d_a_obj_scannon.cpp - src/d/actor/d_a_obj_scannon_crs.cpp - src/d/actor/d_a_obj_scannon_ten.cpp - src/d/actor/d_a_obj_sekidoor.cpp - src/d/actor/d_a_obj_sekizo.cpp - src/d/actor/d_a_obj_sekizoa.cpp - src/d/actor/d_a_obj_shield.cpp - src/d/actor/d_a_obj_sm_door.cpp - src/d/actor/d_a_obj_smallkey.cpp - src/d/actor/d_a_obj_smgdoor.cpp - src/d/actor/d_a_obj_smoke.cpp - src/d/actor/d_a_obj_smtile.cpp - src/d/actor/d_a_obj_smw_stone.cpp - src/d/actor/d_a_obj_snowEffTag.cpp - src/d/actor/d_a_obj_snow_soup.cpp - src/d/actor/d_a_obj_so.cpp - src/d/actor/d_a_obj_spinLift.cpp - src/d/actor/d_a_obj_ss_drink.cpp - src/d/actor/d_a_obj_ss_item.cpp - src/d/actor/d_a_obj_stairBlock.cpp - src/d/actor/d_a_obj_stone.cpp - src/d/actor/d_a_obj_stopper.cpp - src/d/actor/d_a_obj_stopper2.cpp - src/d/actor/d_a_obj_suisya.cpp - src/d/actor/d_a_obj_sw.cpp - src/d/actor/d_a_obj_swBallA.cpp - src/d/actor/d_a_obj_swBallB.cpp - src/d/actor/d_a_obj_swBallC.cpp - src/d/actor/d_a_obj_swLight.cpp - src/d/actor/d_a_obj_swchain.cpp - src/d/actor/d_a_obj_swhang.cpp - src/d/actor/d_a_obj_sword.cpp - src/d/actor/d_a_obj_swpush2.cpp - src/d/actor/d_a_obj_swspinner.cpp - src/d/actor/d_a_obj_swturn.cpp - src/d/actor/d_a_obj_syRock.cpp - src/d/actor/d_a_obj_szbridge.cpp - src/d/actor/d_a_obj_taFence.cpp - src/d/actor/d_a_obj_table.cpp - src/d/actor/d_a_obj_takaraDai.cpp - src/d/actor/d_a_obj_tatigi.cpp - src/d/actor/d_a_obj_ten.cpp - src/d/actor/d_a_obj_testcube.cpp - src/d/actor/d_a_obj_tgake.cpp - src/d/actor/d_a_obj_thashi.cpp - src/d/actor/d_a_obj_thdoor.cpp - src/d/actor/d_a_obj_timeFire.cpp - src/d/actor/d_a_obj_tks.cpp - src/d/actor/d_a_obj_tmoon.cpp - src/d/actor/d_a_obj_toaru_maki.cpp - src/d/actor/d_a_obj_toby.cpp - src/d/actor/d_a_obj_tobyhouse.cpp - src/d/actor/d_a_obj_togeTrap.cpp - src/d/actor/d_a_obj_tombo.cpp - src/d/actor/d_a_obj_tornado.cpp - src/d/actor/d_a_obj_tornado2.cpp - src/d/actor/d_a_obj_tp.cpp - src/d/actor/d_a_obj_treesh.cpp - src/d/actor/d_a_obj_twGate.cpp - src/d/actor/d_a_obj_udoor.cpp - src/d/actor/d_a_obj_usaku.cpp - src/d/actor/d_a_obj_vground.cpp - src/d/actor/d_a_obj_volcball.cpp - src/d/actor/d_a_obj_volcbom.cpp - src/d/actor/d_a_obj_warp_kbrg.cpp - src/d/actor/d_a_obj_warp_obrg.cpp - src/d/actor/d_a_obj_waterGate.cpp - src/d/actor/d_a_obj_waterPillar.cpp - src/d/actor/d_a_obj_waterfall.cpp - src/d/actor/d_a_obj_wchain.cpp - src/d/actor/d_a_obj_wdStick.cpp - src/d/actor/d_a_obj_web0.cpp - src/d/actor/d_a_obj_web1.cpp - src/d/actor/d_a_obj_well_cover.cpp - src/d/actor/d_a_obj_wflag.cpp - src/d/actor/d_a_obj_wind_stone.cpp - src/d/actor/d_a_obj_window.cpp - src/d/actor/d_a_obj_wood_pendulum.cpp - src/d/actor/d_a_obj_wood_statue.cpp - src/d/actor/d_a_obj_wsword.cpp - src/d/actor/d_a_obj_yel_bag.cpp - src/d/actor/d_a_obj_ystone.cpp - src/d/actor/d_a_obj_zcloth.cpp - src/d/actor/d_a_obj_zdoor.cpp - src/d/actor/d_a_obj_zrTurara.cpp - src/d/actor/d_a_obj_zrTuraraRock.cpp - src/d/actor/d_a_obj_zraMark.cpp - src/d/actor/d_a_obj_zra_freeze.cpp - src/d/actor/d_a_obj_zra_rock.cpp - src/d/actor/d_a_passer_mng.cpp - src/d/actor/d_a_tag_arena.cpp - src/d/actor/d_a_peru.cpp - src/d/actor/d_a_ppolamp.cpp - src/d/actor/d_a_skip_2D.cpp - src/d/actor/d_a_startAndGoal.cpp - src/d/actor/d_a_swBall.cpp - src/d/actor/d_a_swLBall.cpp - src/d/actor/d_a_swTime.cpp - src/d/actor/d_a_tag_Lv6Gate.cpp - src/d/actor/d_a_tag_Lv7Gate.cpp - src/d/actor/d_a_tag_Lv8Gate.cpp - src/d/actor/d_a_tag_TWgate.cpp - src/d/actor/d_a_tag_lv6CstaSw.cpp - src/d/actor/d_a_tag_assistance.cpp - src/d/actor/d_a_tag_bottle_item.cpp - src/d/actor/d_a_tag_chgrestart.cpp - src/d/actor/d_a_tag_csw.cpp - src/d/actor/d_a_tag_escape.cpp - src/d/actor/d_a_tag_firewall.cpp - src/d/actor/d_a_tag_gra.cpp - src/d/actor/d_a_tag_guard.cpp - src/d/actor/d_a_tag_instruction.cpp - src/d/actor/d_a_tag_kago_fall.cpp - src/d/actor/d_a_tag_lightball.cpp - src/d/actor/d_a_tag_lv5soup.cpp - src/d/actor/d_a_tag_mmsg.cpp - src/d/actor/d_a_tag_mwait.cpp - src/d/actor/d_a_tag_myna2.cpp - src/d/actor/d_a_tag_myna_light.cpp - src/d/actor/d_a_tag_pachi.cpp - src/d/actor/d_a_tag_poFire.cpp - src/d/actor/d_a_tag_qs.cpp - src/d/actor/d_a_tag_ret_room.cpp - src/d/actor/d_a_tag_river_back.cpp - src/d/actor/d_a_tag_rmbit_sw.cpp - src/d/actor/d_a_tag_schedule.cpp - src/d/actor/d_a_tag_setBall.cpp - src/d/actor/d_a_tag_setrestart.cpp - src/d/actor/d_a_tag_shop_camera.cpp - src/d/actor/d_a_tag_shop_item.cpp - src/d/actor/d_a_tag_smk_emt.cpp - src/d/actor/d_a_tag_spinner.cpp - src/d/actor/d_a_tag_sppath.cpp - src/d/actor/d_a_tag_ss_drink.cpp - src/d/actor/d_a_tag_stream.cpp - src/d/actor/d_a_tag_theB_hint.cpp - src/d/actor/d_a_tag_wara_howl.cpp - src/d/actor/d_a_tag_watchge.cpp - src/d/actor/d_a_tag_waterfall.cpp - src/d/actor/d_a_tag_wljump.cpp - src/d/actor/d_a_tag_yami.cpp - src/d/actor/d_a_talk.cpp - src/d/actor/d_a_tboxSw.cpp - src/d/actor/d_a_title.cpp - src/d/actor/d_a_warp_bug.cpp + src/f_pc/f_pc_profile_lst.cpp + src/d/actor/d_a_andsw.cpp + src/d/actor/d_a_bg.cpp + src/d/actor/d_a_bg_obj.cpp + src/d/actor/d_a_dmidna.cpp + src/d/actor/d_a_door_dbdoor00.cpp + src/d/actor/d_a_door_knob00.cpp + src/d/actor/d_a_door_shutter.cpp + src/d/actor/d_a_door_spiral.cpp + src/d/actor/d_a_dshutter.cpp + src/d/actor/d_a_ep.cpp + src/d/actor/d_a_hitobj.cpp + src/d/actor/d_a_kytag00.cpp + src/d/actor/d_a_kytag04.cpp + src/d/actor/d_a_kytag17.cpp + src/d/actor/d_a_obj_brakeeff.cpp + src/d/actor/d_a_obj_burnbox.cpp + src/d/actor/d_a_obj_carry.cpp + src/d/actor/d_a_obj_ito.cpp + src/d/actor/d_a_obj_movebox.cpp + src/d/actor/d_a_obj_swpush.cpp + src/d/actor/d_a_obj_timer.cpp + src/d/actor/d_a_path_line.cpp + src/d/actor/d_a_scene_exit.cpp + src/d/actor/d_a_set_bgobj.cpp + src/d/actor/d_a_swhit0.cpp + src/d/actor/d_a_tag_allmato.cpp + src/d/actor/d_a_tag_camera.cpp + src/d/actor/d_a_tag_chkpoint.cpp + src/d/actor/d_a_tag_event.cpp + src/d/actor/d_a_tag_evt.cpp + src/d/actor/d_a_tag_evtarea.cpp + src/d/actor/d_a_tag_evtmsg.cpp + src/d/actor/d_a_tag_howl.cpp + src/d/actor/d_a_tag_kmsg.cpp + src/d/actor/d_a_tag_lantern.cpp + src/d/actor/d_a_tag_mist.cpp + src/d/actor/d_a_tag_msg.cpp + src/d/actor/d_a_tag_push.cpp + src/d/actor/d_a_tag_telop.cpp + src/d/actor/d_a_tbox.cpp + src/d/actor/d_a_tbox2.cpp + src/d/actor/d_a_vrbox.cpp + src/d/actor/d_a_vrbox2.cpp + src/d/actor/d_a_arrow.cpp + src/d/actor/d_a_boomerang.cpp + src/d/actor/d_a_crod.cpp + src/d/actor/d_a_demo00.cpp + src/d/actor/d_a_disappear.cpp + src/d/actor/d_a_mg_rod.cpp + src/d/actor/d_a_midna.cpp + src/d/actor/d_a_nbomb.cpp + src/d/actor/d_a_obj_life_container.cpp + src/d/actor/d_a_obj_yousei.cpp + src/d/actor/d_a_spinner.cpp + src/d/actor/d_a_suspend.cpp + src/d/actor/d_a_tag_attention.cpp + src/d/actor/d_a_alldie.cpp + src/d/actor/d_a_andsw2.cpp + src/d/actor/d_a_bd.cpp + src/d/actor/d_a_canoe.cpp + src/d/actor/d_a_cstaF.cpp + src/d/actor/d_a_demo_item.cpp + src/d/actor/d_a_door_bossL1.cpp + src/d/actor/d_a_e_dn.cpp + src/d/actor/d_a_e_fm.cpp + src/d/actor/d_a_e_ga.cpp + src/d/actor/d_a_e_hb.cpp + src/d/actor/d_a_e_nest.cpp + src/d/actor/d_a_e_rd.cpp + src/d/actor/d_a_econt.cpp + src/d/actor/d_a_fr.cpp + src/d/actor/d_a_grass.cpp + src/d/actor/d_a_kytag05.cpp + src/d/actor/d_a_kytag10.cpp + src/d/actor/d_a_kytag11.cpp + src/d/actor/d_a_kytag14.cpp + src/d/actor/d_a_mg_fish.cpp + src/d/actor/d_a_npc_besu.cpp + src/d/actor/d_a_npc_fairy_seirei.cpp + src/d/actor/d_a_npc_fish.cpp + src/d/actor/d_a_npc_henna.cpp + src/d/actor/d_a_npc_kakashi.cpp + src/d/actor/d_a_npc_kkri.cpp + src/d/actor/d_a_npc_kolin.cpp + src/d/actor/d_a_npc_maro.cpp + src/d/actor/d_a_npc_taro.cpp + src/d/actor/d_a_npc_tkj.cpp + src/d/actor/d_a_obj_bhashi.cpp + src/d/actor/d_a_obj_bkdoor.cpp + src/d/actor/d_a_obj_bosswarp.cpp + src/d/actor/d_a_obj_cboard.cpp + src/d/actor/d_a_obj_digplace.cpp + src/d/actor/d_a_obj_eff.cpp + src/d/actor/d_a_obj_fmobj.cpp + src/d/actor/d_a_obj_gpTaru.cpp + src/d/actor/d_a_obj_hhashi.cpp + src/d/actor/d_a_obj_kanban2.cpp + src/d/actor/d_a_obj_kbacket.cpp + src/d/actor/d_a_obj_kgate.cpp + src/d/actor/d_a_obj_klift00.cpp + src/d/actor/d_a_obj_ktOnFire.cpp + src/d/actor/d_a_obj_ladder.cpp + src/d/actor/d_a_obj_lv2Candle.cpp + src/d/actor/d_a_obj_magne_arm.cpp + src/d/actor/d_a_obj_metalbox.cpp + src/d/actor/d_a_obj_mgate.cpp + src/d/actor/d_a_obj_nameplate.cpp + src/d/actor/d_a_obj_ornament_cloth.cpp + src/d/actor/d_a_obj_rope_bridge.cpp + src/d/actor/d_a_obj_sWallShutter.cpp + src/d/actor/d_a_obj_stick.cpp + src/d/actor/d_a_obj_stoneMark.cpp + src/d/actor/d_a_obj_swpropeller.cpp + src/d/actor/d_a_obj_swpush5.cpp + src/d/actor/d_a_obj_yobikusa.cpp + src/d/actor/d_a_scene_exit2.cpp + src/d/actor/d_a_shop_item.cpp + src/d/actor/d_a_sq.cpp + src/d/actor/d_a_swc00.cpp + src/d/actor/d_a_tag_CstaSw.cpp + src/d/actor/d_a_tag_ajnot.cpp + src/d/actor/d_a_tag_attack_item.cpp + src/d/actor/d_a_tag_gstart.cpp + src/d/actor/d_a_tag_hinit.cpp + src/d/actor/d_a_tag_hjump.cpp + src/d/actor/d_a_tag_hstop.cpp + src/d/actor/d_a_tag_lv2prchk.cpp + src/d/actor/d_a_tag_magne.cpp + src/d/actor/d_a_tag_mhint.cpp + src/d/actor/d_a_tag_mstop.cpp + src/d/actor/d_a_tag_spring.cpp + src/d/actor/d_a_tag_statue_evt.cpp + src/d/actor/d_a_ykgr.cpp + src/d/actor/d_a_L7demo_dr.cpp + src/d/actor/d_a_L7low_dr.cpp + src/d/actor/d_a_L7op_demo_dr.cpp + src/d/actor/d_a_b_bh.cpp + src/d/actor/d_a_b_bq.cpp + src/d/actor/d_a_b_dr.cpp + src/d/actor/d_a_b_dre.cpp + src/d/actor/d_a_b_ds.cpp + src/d/actor/d_a_b_gg.cpp + src/d/actor/d_a_b_gm.cpp + src/d/actor/d_a_b_gnd.cpp + src/d/actor/d_a_b_go.cpp + src/d/actor/d_a_b_gos.cpp + src/d/actor/d_a_b_mgn.cpp + src/d/actor/d_a_b_ob.cpp + src/d/actor/d_a_b_oh.cpp + src/d/actor/d_a_b_oh2.cpp + src/d/actor/d_a_b_tn.cpp + src/d/actor/d_a_b_yo.cpp + src/d/actor/d_a_b_yo_ice.cpp + src/d/actor/d_a_b_zant.cpp + src/d/actor/d_a_b_zant_magic.cpp + src/d/actor/d_a_b_zant_mobile.cpp + src/d/actor/d_a_b_zant_sima.cpp + src/d/actor/d_a_balloon_2D.cpp + src/d/actor/d_a_bullet.cpp + src/d/actor/d_a_coach_2D.cpp + src/d/actor/d_a_coach_fire.cpp + src/d/actor/d_a_cow.cpp + src/d/actor/d_a_cstatue.cpp + src/d/actor/d_a_do.cpp + src/d/actor/d_a_door_boss.cpp + src/d/actor/d_a_door_bossL5.cpp + src/d/actor/d_a_door_mbossL1.cpp + src/d/actor/d_a_door_push.cpp + src/d/actor/d_a_e_ai.cpp + src/d/actor/d_a_e_arrow.cpp + src/d/actor/d_a_e_ba.cpp + src/d/actor/d_a_e_bee.cpp + src/d/actor/d_a_e_bg.cpp + src/d/actor/d_a_e_bi.cpp + src/d/actor/d_a_e_bi_leaf.cpp + src/d/actor/d_a_e_bs.cpp + src/d/actor/d_a_e_bu.cpp + src/d/actor/d_a_e_bug.cpp + src/d/actor/d_a_e_cr.cpp + src/d/actor/d_a_e_cr_egg.cpp + src/d/actor/d_a_e_db.cpp + src/d/actor/d_a_e_db_leaf.cpp + src/d/actor/d_a_e_dd.cpp + src/d/actor/d_a_e_df.cpp + src/d/actor/d_a_e_dk.cpp + src/d/actor/d_a_e_dt.cpp + src/d/actor/d_a_e_fb.cpp + src/d/actor/d_a_e_fk.cpp + src/d/actor/d_a_e_fs.cpp + src/d/actor/d_a_e_fz.cpp + src/d/actor/d_a_e_gb.cpp + src/d/actor/d_a_e_ge.cpp + src/d/actor/d_a_e_gi.cpp + src/d/actor/d_a_e_gm.cpp + src/d/actor/d_a_e_gob.cpp + src/d/actor/d_a_e_gs.cpp + src/d/actor/d_a_e_hb_leaf.cpp + src/d/actor/d_a_e_hm.cpp + src/d/actor/d_a_e_hp.cpp + src/d/actor/d_a_e_hz.cpp + src/d/actor/d_a_e_hzelda.cpp + src/d/actor/d_a_e_is.cpp + src/d/actor/d_a_e_kg.cpp + src/d/actor/d_a_e_kk.cpp + src/d/actor/d_a_e_kr.cpp + src/d/actor/d_a_e_mb.cpp + src/d/actor/d_a_e_md.cpp + src/d/actor/d_a_e_mf.cpp + src/d/actor/d_a_e_mk.cpp + src/d/actor/d_a_e_mk_bo.cpp + src/d/actor/d_a_e_mm.cpp + src/d/actor/d_a_e_mm_mt.cpp + src/d/actor/d_a_e_ms.cpp + src/d/actor/d_a_e_nz.cpp + src/d/actor/d_a_e_oc.cpp + src/d/actor/d_a_e_oct_bg.cpp + src/d/actor/d_a_e_ot.cpp + src/d/actor/d_a_e_ph.cpp + src/d/actor/d_a_e_pm.cpp + src/d/actor/d_a_e_po.cpp + src/d/actor/d_a_e_pz.cpp + src/d/actor/d_a_e_rb.cpp + src/d/actor/d_a_e_rdb.cpp + src/d/actor/d_a_e_rdy.cpp + src/d/actor/d_a_e_s1.cpp + src/d/actor/d_a_e_sb.cpp + src/d/actor/d_a_e_sf.cpp + src/d/actor/d_a_e_sg.cpp + src/d/actor/d_a_e_sh.cpp + src/d/actor/d_a_e_sm.cpp + src/d/actor/d_a_e_sm2.cpp + src/d/actor/d_a_e_st.cpp + src/d/actor/d_a_e_st_line.cpp + src/d/actor/d_a_e_sw.cpp + src/d/actor/d_a_e_th.cpp + src/d/actor/d_a_e_th_ball.cpp + src/d/actor/d_a_e_tk.cpp + src/d/actor/d_a_e_tk2.cpp + src/d/actor/d_a_e_tk_ball.cpp + src/d/actor/d_a_e_tt.cpp + src/d/actor/d_a_e_vt.cpp + src/d/actor/d_a_e_warpappear.cpp + src/d/actor/d_a_e_wb.cpp + src/d/actor/d_a_e_ws.cpp + src/d/actor/d_a_e_ww.cpp + src/d/actor/d_a_e_yc.cpp + src/d/actor/d_a_e_yd.cpp + src/d/actor/d_a_e_yd_leaf.cpp + src/d/actor/d_a_e_yg.cpp + src/d/actor/d_a_e_yh.cpp + src/d/actor/d_a_e_yk.cpp + src/d/actor/d_a_e_ym.cpp + src/d/actor/d_a_e_ym_tag.cpp + src/d/actor/d_a_e_ymb.cpp + src/d/actor/d_a_e_yr.cpp + src/d/actor/d_a_e_zh.cpp + src/d/actor/d_a_e_zm.cpp + src/d/actor/d_a_e_zs.cpp + src/d/actor/d_a_formation_mng.cpp + src/d/actor/d_a_guard_mng.cpp + src/d/actor/d_a_horse.cpp + src/d/actor/d_a_hozelda.cpp + src/d/actor/d_a_izumi_gate.cpp + src/d/actor/d_a_kago.cpp + src/d/actor/d_a_kytag01.cpp + src/d/actor/d_a_kytag02.cpp + src/d/actor/d_a_kytag03.cpp + src/d/actor/d_a_kytag06.cpp + src/d/actor/d_a_kytag07.cpp + src/d/actor/d_a_kytag08.cpp + src/d/actor/d_a_kytag09.cpp + src/d/actor/d_a_kytag12.cpp + src/d/actor/d_a_kytag13.cpp + src/d/actor/d_a_kytag15.cpp + src/d/actor/d_a_kytag16.cpp + src/d/actor/d_a_mant.cpp + src/d/actor/d_a_mg_fshop.cpp + src/d/actor/d_a_mirror.cpp + src/d/actor/d_a_movie_player.cpp + src/d/actor/d_a_myna.cpp + src/d/actor/d_a_ni.cpp + src/d/actor/d_a_npc_aru.cpp + src/d/actor/d_a_npc_ash.cpp + src/d/actor/d_a_npc_ashB.cpp + src/d/actor/d_a_npc_bans.cpp + src/d/actor/d_a_npc_blue_ns.cpp + src/d/actor/d_a_npc_bou.cpp + src/d/actor/d_a_npc_bouS.cpp + src/d/actor/d_a_npc_cdn3.cpp + src/d/actor/d_a_npc_chat.cpp + src/d/actor/d_a_npc_chin.cpp + src/d/actor/d_a_npc_clerka.cpp + src/d/actor/d_a_npc_clerkb.cpp + src/d/actor/d_a_npc_clerkt.cpp + src/d/actor/d_a_npc_coach.cpp + src/d/actor/d_a_npc_df.cpp + src/d/actor/d_a_npc_doc.cpp + src/d/actor/d_a_npc_doorboy.cpp + src/d/actor/d_a_npc_drainSol.cpp + src/d/actor/d_a_npc_du.cpp + src/d/actor/d_a_npc_fairy.cpp + src/d/actor/d_a_npc_fguard.cpp + src/d/actor/d_a_npc_gnd.cpp + src/d/actor/d_a_npc_gra.cpp + src/d/actor/d_a_npc_grc.cpp + src/d/actor/d_a_npc_grd.cpp + src/d/actor/d_a_npc_grm.cpp + src/d/actor/d_a_npc_grmc.cpp + src/d/actor/d_a_npc_gro.cpp + src/d/actor/d_a_npc_grr.cpp + src/d/actor/d_a_npc_grs.cpp + src/d/actor/d_a_npc_grz.cpp + src/d/actor/d_a_npc_guard.cpp + src/d/actor/d_a_npc_gwolf.cpp + src/d/actor/d_a_npc_hanjo.cpp + src/d/actor/d_a_npc_henna0.cpp + src/d/actor/d_a_npc_hoz.cpp + src/d/actor/d_a_npc_impal.cpp + src/d/actor/d_a_npc_inko.cpp + src/d/actor/d_a_npc_ins.cpp + src/d/actor/d_a_npc_jagar.cpp + src/d/actor/d_a_npc_kasi_hana.cpp + src/d/actor/d_a_npc_kasi_kyu.cpp + src/d/actor/d_a_npc_kasi_mich.cpp + src/d/actor/d_a_npc_kdk.cpp + src/d/actor/d_a_npc_kn.cpp + src/d/actor/d_a_npc_knj.cpp + src/d/actor/d_a_npc_kolinb.cpp + src/d/actor/d_a_npc_ks.cpp + src/d/actor/d_a_npc_kyury.cpp + src/d/actor/d_a_npc_len.cpp + src/d/actor/d_a_npc_lf.cpp + src/d/actor/d_a_npc_lud.cpp + src/d/actor/d_a_npc_midp.cpp + src/d/actor/d_a_npc_mk.cpp + src/d/actor/d_a_npc_moi.cpp + src/d/actor/d_a_npc_moir.cpp + src/d/actor/d_a_npc_myna2.cpp + src/d/actor/d_a_npc_ne.cpp + src/d/actor/d_a_npc_p2.cpp + src/d/actor/d_a_npc_pachi_besu.cpp + src/d/actor/d_a_npc_pachi_maro.cpp + src/d/actor/d_a_npc_pachi_taro.cpp + src/d/actor/d_a_npc_passer.cpp + src/d/actor/d_a_npc_passer2.cpp + src/d/actor/d_a_npc_post.cpp + src/d/actor/d_a_npc_pouya.cpp + src/d/actor/d_a_npc_prayer.cpp + src/d/actor/d_a_npc_raca.cpp + src/d/actor/d_a_npc_rafrel.cpp + src/d/actor/d_a_npc_saru.cpp + src/d/actor/d_a_npc_seib.cpp + src/d/actor/d_a_npc_seic.cpp + src/d/actor/d_a_npc_seid.cpp + src/d/actor/d_a_npc_seira.cpp + src/d/actor/d_a_npc_seira2.cpp + src/d/actor/d_a_npc_seirei.cpp + src/d/actor/d_a_npc_shad.cpp + src/d/actor/d_a_npc_shaman.cpp + src/d/actor/d_a_npc_shoe.cpp + src/d/actor/d_a_npc_shop0.cpp + src/d/actor/d_a_npc_shop_maro.cpp + src/d/actor/d_a_npc_sola.cpp + src/d/actor/d_a_npc_soldierA.cpp + src/d/actor/d_a_npc_soldierB.cpp + src/d/actor/d_a_npc_sq.cpp + src/d/actor/d_a_npc_the.cpp + src/d/actor/d_a_npc_theB.cpp + src/d/actor/d_a_npc_tk.cpp + src/d/actor/d_a_npc_tkc.cpp + src/d/actor/d_a_npc_tkj2.cpp + src/d/actor/d_a_npc_tks.cpp + src/d/actor/d_a_npc_toby.cpp + src/d/actor/d_a_npc_tr.cpp + src/d/actor/d_a_npc_uri.cpp + src/d/actor/d_a_npc_worm.cpp + src/d/actor/d_a_npc_wrestler.cpp + src/d/actor/d_a_npc_yamid.cpp + src/d/actor/d_a_npc_yamis.cpp + src/d/actor/d_a_npc_yamit.cpp + src/d/actor/d_a_npc_yelia.cpp + src/d/actor/d_a_npc_ykm.cpp + src/d/actor/d_a_npc_ykw.cpp + src/d/actor/d_a_npc_zanb.cpp + src/d/actor/d_a_npc_zant.cpp + src/d/actor/d_a_npc_zelR.cpp + src/d/actor/d_a_npc_zelRo.cpp + src/d/actor/d_a_npc_zelda.cpp + src/d/actor/d_a_npc_zra.cpp + src/d/actor/d_a_npc_zrc.cpp + src/d/actor/d_a_npc_zrz.cpp + src/d/actor/d_a_obj_Lv5Key.cpp + src/d/actor/d_a_obj_Turara.cpp + src/d/actor/d_a_obj_TvCdlst.cpp + src/d/actor/d_a_obj_Y_taihou.cpp + src/d/actor/d_a_obj_amiShutter.cpp + src/d/actor/d_a_obj_ari.cpp + src/d/actor/d_a_obj_automata.cpp + src/d/actor/d_a_obj_avalanche.cpp + src/d/actor/d_a_obj_balloon.cpp + src/d/actor/d_a_obj_barDesk.cpp + src/d/actor/d_a_obj_batta.cpp + src/d/actor/d_a_obj_bbox.cpp + src/d/actor/d_a_obj_bed.cpp + src/d/actor/d_a_obj_bemos.cpp + src/d/actor/d_a_obj_bhbridge.cpp + src/d/actor/d_a_obj_bk_leaf.cpp + src/d/actor/d_a_obj_bky_rock.cpp + src/d/actor/d_a_obj_bmWindow.cpp + src/d/actor/d_a_obj_bmshutter.cpp + src/d/actor/d_a_obj_bombf.cpp + src/d/actor/d_a_obj_boumato.cpp + src/d/actor/d_a_obj_brg.cpp + src/d/actor/d_a_obj_bsGate.cpp + src/d/actor/d_a_obj_bubblePilar.cpp + src/d/actor/d_a_obj_catdoor.cpp + src/d/actor/d_a_obj_cb.cpp + src/d/actor/d_a_obj_cblock.cpp + src/d/actor/d_a_obj_cdoor.cpp + src/d/actor/d_a_obj_chandelier.cpp + src/d/actor/d_a_obj_chest.cpp + src/d/actor/d_a_obj_cho.cpp + src/d/actor/d_a_obj_cowdoor.cpp + src/d/actor/d_a_obj_crope.cpp + src/d/actor/d_a_obj_crvfence.cpp + src/d/actor/d_a_obj_crvgate.cpp + src/d/actor/d_a_obj_crvhahen.cpp + src/d/actor/d_a_obj_crvlh_down.cpp + src/d/actor/d_a_obj_crvlh_up.cpp + src/d/actor/d_a_obj_crvsteel.cpp + src/d/actor/d_a_obj_crystal.cpp + src/d/actor/d_a_obj_cwall.cpp + src/d/actor/d_a_obj_damCps.cpp + src/d/actor/d_a_obj_dan.cpp + src/d/actor/d_a_obj_digholl.cpp + src/d/actor/d_a_obj_digsnow.cpp + src/d/actor/d_a_obj_dmelevator.cpp + src/d/actor/d_a_obj_drop.cpp + src/d/actor/d_a_obj_dust.cpp + src/d/actor/d_a_obj_enemy_create.cpp + src/d/actor/d_a_obj_fallobj.cpp + src/d/actor/d_a_obj_fan.cpp + src/d/actor/d_a_obj_fchain.cpp + src/d/actor/d_a_obj_fireWood.cpp + src/d/actor/d_a_obj_fireWood2.cpp + src/d/actor/d_a_obj_firepillar.cpp + src/d/actor/d_a_obj_firepillar2.cpp + src/d/actor/d_a_obj_flag.cpp + src/d/actor/d_a_obj_flag2.cpp + src/d/actor/d_a_obj_flag3.cpp + src/d/actor/d_a_obj_food.cpp + src/d/actor/d_a_obj_fw.cpp + src/d/actor/d_a_obj_gadget.cpp + src/d/actor/d_a_obj_ganonwall.cpp + src/d/actor/d_a_obj_ganonwall2.cpp + src/d/actor/d_a_obj_gb.cpp + src/d/actor/d_a_obj_geyser.cpp + src/d/actor/d_a_obj_glowSphere.cpp + src/d/actor/d_a_obj_gm.cpp + src/d/actor/d_a_obj_goGate.cpp + src/d/actor/d_a_obj_gomikabe.cpp + src/d/actor/d_a_obj_gra2.cpp + src/d/actor/d_a_obj_graWall.cpp + src/d/actor/d_a_obj_gra_rock.cpp + src/d/actor/d_a_obj_grave_stone.cpp + src/d/actor/d_a_obj_groundwater.cpp + src/d/actor/d_a_obj_grz_rock.cpp + src/d/actor/d_a_obj_h_saku.cpp + src/d/actor/d_a_obj_hakai_brl.cpp + src/d/actor/d_a_obj_hakai_ftr.cpp + src/d/actor/d_a_obj_hasu2.cpp + src/d/actor/d_a_obj_hata.cpp + src/d/actor/d_a_obj_hb.cpp + src/d/actor/d_a_obj_hbombkoya.cpp + src/d/actor/d_a_obj_heavySw.cpp + src/d/actor/d_a_obj_hfuta.cpp + src/d/actor/d_a_obj_hsTarget.cpp + src/d/actor/d_a_obj_ice_l.cpp + src/d/actor/d_a_obj_ice_s.cpp + src/d/actor/d_a_obj_iceblock.cpp + src/d/actor/d_a_obj_iceleaf.cpp + src/d/actor/d_a_obj_ihasi.cpp + src/d/actor/d_a_obj_ikada.cpp + src/d/actor/d_a_obj_inobone.cpp + src/d/actor/d_a_obj_ita.cpp + src/d/actor/d_a_obj_itamato.cpp + src/d/actor/d_a_obj_kabuto.cpp + src/d/actor/d_a_obj_kag.cpp + src/d/actor/d_a_obj_kage.cpp + src/d/actor/d_a_obj_kago.cpp + src/d/actor/d_a_obj_kaisou.cpp + src/d/actor/d_a_obj_kamakiri.cpp + src/d/actor/d_a_obj_kantera.cpp + src/d/actor/d_a_obj_katatsumuri.cpp + src/d/actor/d_a_obj_kazeneko.cpp + src/d/actor/d_a_obj_kbox.cpp + src/d/actor/d_a_obj_key.cpp + src/d/actor/d_a_obj_keyhole.cpp + src/d/actor/d_a_obj_ki.cpp + src/d/actor/d_a_obj_kiPot.cpp + src/d/actor/d_a_obj_kita.cpp + src/d/actor/d_a_obj_kjgjs.cpp + src/d/actor/d_a_obj_kkanban.cpp + src/d/actor/d_a_obj_knBullet.cpp + src/d/actor/d_a_obj_kshutter.cpp + src/d/actor/d_a_obj_kuwagata.cpp + src/d/actor/d_a_obj_kwheel00.cpp + src/d/actor/d_a_obj_kwheel01.cpp + src/d/actor/d_a_obj_kznkarm.cpp + src/d/actor/d_a_obj_laundry.cpp + src/d/actor/d_a_obj_laundry_rope.cpp + src/d/actor/d_a_obj_lbox.cpp + src/d/actor/d_a_obj_lp.cpp + src/d/actor/d_a_obj_lv1Candle00.cpp + src/d/actor/d_a_obj_lv1Candle01.cpp + src/d/actor/d_a_obj_lv3Candle.cpp + src/d/actor/d_a_obj_lv3Water.cpp + src/d/actor/d_a_obj_lv3Water2.cpp + src/d/actor/d_a_obj_lv3WaterB.cpp + src/d/actor/d_a_obj_lv3saka00.cpp + src/d/actor/d_a_obj_lv3waterEff.cpp + src/d/actor/d_a_obj_lv4CandleDemoTag.cpp + src/d/actor/d_a_obj_lv4CandleTag.cpp + src/d/actor/d_a_obj_lv4EdShutter.cpp + src/d/actor/d_a_obj_lv4Gate.cpp + src/d/actor/d_a_obj_lv4HsTarget.cpp + src/d/actor/d_a_obj_lv4PoGate.cpp + src/d/actor/d_a_obj_lv4RailWall.cpp + src/d/actor/d_a_obj_lv4SlideWall.cpp + src/d/actor/d_a_obj_lv4bridge.cpp + src/d/actor/d_a_obj_lv4chandelier.cpp + src/d/actor/d_a_obj_lv4digsand.cpp + src/d/actor/d_a_obj_lv4floor.cpp + src/d/actor/d_a_obj_lv4gear.cpp + src/d/actor/d_a_obj_lv4prelvtr.cpp + src/d/actor/d_a_obj_lv4prwall.cpp + src/d/actor/d_a_obj_lv4sand.cpp + src/d/actor/d_a_obj_lv5FloorBoard.cpp + src/d/actor/d_a_obj_lv5IceWall.cpp + src/d/actor/d_a_obj_lv5SwIce.cpp + src/d/actor/d_a_obj_lv5ychndlr.cpp + src/d/actor/d_a_obj_lv5yiblltray.cpp + src/d/actor/d_a_obj_lv6ChangeGate.cpp + src/d/actor/d_a_obj_lv6FurikoTrap.cpp + src/d/actor/d_a_obj_lv6Lblock.cpp + src/d/actor/d_a_obj_lv6SwGate.cpp + src/d/actor/d_a_obj_lv6SzGate.cpp + src/d/actor/d_a_obj_lv6Tenbin.cpp + src/d/actor/d_a_obj_lv6TogeRoll.cpp + src/d/actor/d_a_obj_lv6TogeTrap.cpp + src/d/actor/d_a_obj_lv6bemos.cpp + src/d/actor/d_a_obj_lv6bemos2.cpp + src/d/actor/d_a_obj_lv6egate.cpp + src/d/actor/d_a_obj_lv6elevta.cpp + src/d/actor/d_a_obj_lv6swturn.cpp + src/d/actor/d_a_obj_lv7BsGate.cpp + src/d/actor/d_a_obj_lv7PropellerY.cpp + src/d/actor/d_a_obj_lv7bridge.cpp + src/d/actor/d_a_obj_lv8KekkaiTrap.cpp + src/d/actor/d_a_obj_lv8Lift.cpp + src/d/actor/d_a_obj_lv8OptiLift.cpp + src/d/actor/d_a_obj_lv8UdFloor.cpp + src/d/actor/d_a_obj_lv9SwShutter.cpp + src/d/actor/d_a_obj_magLift.cpp + src/d/actor/d_a_obj_magLiftRot.cpp + src/d/actor/d_a_obj_maki.cpp + src/d/actor/d_a_obj_master_sword.cpp + src/d/actor/d_a_obj_mato.cpp + src/d/actor/d_a_obj_mhole.cpp + src/d/actor/d_a_obj_mie.cpp + src/d/actor/d_a_obj_mirror_6pole.cpp + src/d/actor/d_a_obj_mirror_chain.cpp + src/d/actor/d_a_obj_mirror_sand.cpp + src/d/actor/d_a_obj_mirror_screw.cpp + src/d/actor/d_a_obj_mirror_table.cpp + src/d/actor/d_a_obj_msima.cpp + src/d/actor/d_a_obj_mvstair.cpp + src/d/actor/d_a_obj_myogan.cpp + src/d/actor/d_a_obj_nagaisu.cpp + src/d/actor/d_a_obj_nan.cpp + src/d/actor/d_a_obj_ndoor.cpp + src/d/actor/d_a_obj_nougu.cpp + src/d/actor/d_a_obj_octhashi.cpp + src/d/actor/d_a_obj_oiltubo.cpp + src/d/actor/d_a_obj_onsen.cpp + src/d/actor/d_a_obj_onsenFire.cpp + src/d/actor/d_a_obj_onsenTaru.cpp + src/d/actor/d_a_obj_pdoor.cpp + src/d/actor/d_a_obj_pdtile.cpp + src/d/actor/d_a_obj_pdwall.cpp + src/d/actor/d_a_obj_picture.cpp + src/d/actor/d_a_obj_pillar.cpp + src/d/actor/d_a_obj_pleaf.cpp + src/d/actor/d_a_obj_poCandle.cpp + src/d/actor/d_a_obj_poFire.cpp + src/d/actor/d_a_obj_poTbox.cpp + src/d/actor/d_a_obj_prop.cpp + src/d/actor/d_a_obj_pumpkin.cpp + src/d/actor/d_a_obj_rcircle.cpp + src/d/actor/d_a_obj_rfHole.cpp + src/d/actor/d_a_obj_rgate.cpp + src/d/actor/d_a_obj_riverrock.cpp + src/d/actor/d_a_obj_rock.cpp + src/d/actor/d_a_obj_rotBridge.cpp + src/d/actor/d_a_obj_rotTrap.cpp + src/d/actor/d_a_obj_roten.cpp + src/d/actor/d_a_obj_rstair.cpp + src/d/actor/d_a_obj_rw.cpp + src/d/actor/d_a_obj_saidan.cpp + src/d/actor/d_a_obj_sakuita.cpp + src/d/actor/d_a_obj_sakuita_rope.cpp + src/d/actor/d_a_obj_scannon.cpp + src/d/actor/d_a_obj_scannon_crs.cpp + src/d/actor/d_a_obj_scannon_ten.cpp + src/d/actor/d_a_obj_sekidoor.cpp + src/d/actor/d_a_obj_sekizo.cpp + src/d/actor/d_a_obj_sekizoa.cpp + src/d/actor/d_a_obj_shield.cpp + src/d/actor/d_a_obj_sm_door.cpp + src/d/actor/d_a_obj_smallkey.cpp + src/d/actor/d_a_obj_smgdoor.cpp + src/d/actor/d_a_obj_smoke.cpp + src/d/actor/d_a_obj_smtile.cpp + src/d/actor/d_a_obj_smw_stone.cpp + src/d/actor/d_a_obj_snowEffTag.cpp + src/d/actor/d_a_obj_snow_soup.cpp + src/d/actor/d_a_obj_so.cpp + src/d/actor/d_a_obj_spinLift.cpp + src/d/actor/d_a_obj_ss_drink.cpp + src/d/actor/d_a_obj_ss_item.cpp + src/d/actor/d_a_obj_stairBlock.cpp + src/d/actor/d_a_obj_stone.cpp + src/d/actor/d_a_obj_stopper.cpp + src/d/actor/d_a_obj_stopper2.cpp + src/d/actor/d_a_obj_suisya.cpp + src/d/actor/d_a_obj_sw.cpp + src/d/actor/d_a_obj_swBallA.cpp + src/d/actor/d_a_obj_swBallB.cpp + src/d/actor/d_a_obj_swBallC.cpp + src/d/actor/d_a_obj_swLight.cpp + src/d/actor/d_a_obj_swchain.cpp + src/d/actor/d_a_obj_swhang.cpp + src/d/actor/d_a_obj_sword.cpp + src/d/actor/d_a_obj_swpush2.cpp + src/d/actor/d_a_obj_swspinner.cpp + src/d/actor/d_a_obj_swturn.cpp + src/d/actor/d_a_obj_syRock.cpp + src/d/actor/d_a_obj_szbridge.cpp + src/d/actor/d_a_obj_taFence.cpp + src/d/actor/d_a_obj_table.cpp + src/d/actor/d_a_obj_takaraDai.cpp + src/d/actor/d_a_obj_tatigi.cpp + src/d/actor/d_a_obj_ten.cpp + src/d/actor/d_a_obj_testcube.cpp + src/d/actor/d_a_obj_tgake.cpp + src/d/actor/d_a_obj_thashi.cpp + src/d/actor/d_a_obj_thdoor.cpp + src/d/actor/d_a_obj_timeFire.cpp + src/d/actor/d_a_obj_tks.cpp + src/d/actor/d_a_obj_tmoon.cpp + src/d/actor/d_a_obj_toaru_maki.cpp + src/d/actor/d_a_obj_toby.cpp + src/d/actor/d_a_obj_tobyhouse.cpp + src/d/actor/d_a_obj_togeTrap.cpp + src/d/actor/d_a_obj_tombo.cpp + src/d/actor/d_a_obj_tornado.cpp + src/d/actor/d_a_obj_tornado2.cpp + src/d/actor/d_a_obj_tp.cpp + src/d/actor/d_a_obj_treesh.cpp + src/d/actor/d_a_obj_twGate.cpp + src/d/actor/d_a_obj_udoor.cpp + src/d/actor/d_a_obj_usaku.cpp + src/d/actor/d_a_obj_vground.cpp + src/d/actor/d_a_obj_volcball.cpp + src/d/actor/d_a_obj_volcbom.cpp + src/d/actor/d_a_obj_warp_kbrg.cpp + src/d/actor/d_a_obj_warp_obrg.cpp + src/d/actor/d_a_obj_waterGate.cpp + src/d/actor/d_a_obj_waterPillar.cpp + src/d/actor/d_a_obj_waterfall.cpp + src/d/actor/d_a_obj_wchain.cpp + src/d/actor/d_a_obj_wdStick.cpp + src/d/actor/d_a_obj_web0.cpp + src/d/actor/d_a_obj_web1.cpp + src/d/actor/d_a_obj_well_cover.cpp + src/d/actor/d_a_obj_wflag.cpp + src/d/actor/d_a_obj_wind_stone.cpp + src/d/actor/d_a_obj_window.cpp + src/d/actor/d_a_obj_wood_pendulum.cpp + src/d/actor/d_a_obj_wood_statue.cpp + src/d/actor/d_a_obj_wsword.cpp + src/d/actor/d_a_obj_yel_bag.cpp + src/d/actor/d_a_obj_ystone.cpp + src/d/actor/d_a_obj_zcloth.cpp + src/d/actor/d_a_obj_zdoor.cpp + src/d/actor/d_a_obj_zrTurara.cpp + src/d/actor/d_a_obj_zrTuraraRock.cpp + src/d/actor/d_a_obj_zraMark.cpp + src/d/actor/d_a_obj_zra_freeze.cpp + src/d/actor/d_a_obj_zra_rock.cpp + src/d/actor/d_a_passer_mng.cpp + src/d/actor/d_a_tag_arena.cpp + src/d/actor/d_a_peru.cpp + src/d/actor/d_a_ppolamp.cpp + src/d/actor/d_a_skip_2D.cpp + src/d/actor/d_a_startAndGoal.cpp + src/d/actor/d_a_swBall.cpp + src/d/actor/d_a_swLBall.cpp + src/d/actor/d_a_swTime.cpp + src/d/actor/d_a_tag_Lv6Gate.cpp + src/d/actor/d_a_tag_Lv7Gate.cpp + src/d/actor/d_a_tag_Lv8Gate.cpp + src/d/actor/d_a_tag_TWgate.cpp + src/d/actor/d_a_tag_lv6CstaSw.cpp + src/d/actor/d_a_tag_assistance.cpp + src/d/actor/d_a_tag_bottle_item.cpp + src/d/actor/d_a_tag_chgrestart.cpp + src/d/actor/d_a_tag_csw.cpp + src/d/actor/d_a_tag_escape.cpp + src/d/actor/d_a_tag_firewall.cpp + src/d/actor/d_a_tag_gra.cpp + src/d/actor/d_a_tag_guard.cpp + src/d/actor/d_a_tag_instruction.cpp + src/d/actor/d_a_tag_kago_fall.cpp + src/d/actor/d_a_tag_lightball.cpp + src/d/actor/d_a_tag_lv5soup.cpp + src/d/actor/d_a_tag_mmsg.cpp + src/d/actor/d_a_tag_mwait.cpp + src/d/actor/d_a_tag_myna2.cpp + src/d/actor/d_a_tag_myna_light.cpp + src/d/actor/d_a_tag_pachi.cpp + src/d/actor/d_a_tag_poFire.cpp + src/d/actor/d_a_tag_qs.cpp + src/d/actor/d_a_tag_ret_room.cpp + src/d/actor/d_a_tag_river_back.cpp + src/d/actor/d_a_tag_rmbit_sw.cpp + src/d/actor/d_a_tag_schedule.cpp + src/d/actor/d_a_tag_setBall.cpp + src/d/actor/d_a_tag_setrestart.cpp + src/d/actor/d_a_tag_shop_camera.cpp + src/d/actor/d_a_tag_shop_item.cpp + src/d/actor/d_a_tag_smk_emt.cpp + src/d/actor/d_a_tag_spinner.cpp + src/d/actor/d_a_tag_sppath.cpp + src/d/actor/d_a_tag_ss_drink.cpp + src/d/actor/d_a_tag_stream.cpp + src/d/actor/d_a_tag_theB_hint.cpp + src/d/actor/d_a_tag_wara_howl.cpp + src/d/actor/d_a_tag_watchge.cpp + src/d/actor/d_a_tag_waterfall.cpp + src/d/actor/d_a_tag_wljump.cpp + src/d/actor/d_a_tag_yami.cpp + src/d/actor/d_a_talk.cpp + src/d/actor/d_a_tboxSw.cpp + src/d/actor/d_a_title.cpp + src/d/actor/d_a_warp_bug.cpp ) set(DOLPHIN_FILES @@ -1411,129 +1411,133 @@ set(DOLPHIN_FILES ) set(DUSK_FILES - include/dusk/action_bindings.h - include/dusk/endian_gx.hpp - include/dusk/config.hpp - include/dusk/dvd_asset.hpp - include/dusk/scope_guard.hpp - src/dusk/dvd_asset.cpp - src/d/actor/d_a_alink_dusk.cpp - src/dusk/asserts.cpp - src/dusk/config.cpp - src/dusk/crash_handler.cpp - src/dusk/crash_reporting.cpp - src/dusk/data.cpp - src/dusk/data.hpp - src/dusk/endian.cpp - src/dusk/extras.c - src/dusk/file_select.cpp - src/dusk/file_select.hpp - src/dusk/frame_interpolation.cpp - src/dusk/game_clock.cpp - src/dusk/globals.cpp - src/dusk/gyro.cpp - src/dusk/gamepad_color.cpp - src/dusk/autosave.cpp - src/dusk/http/http.hpp - src/dusk/io.cpp - src/dusk/layout.cpp - src/dusk/logging.cpp - src/dusk/settings.cpp - src/dusk/speedrun.cpp - src/dusk/string.cpp - src/dusk/stubs.cpp - include/dusk/texture_replacements.hpp - src/dusk/texture_replacements.cpp - src/dusk/update_check.cpp - src/dusk/update_check.hpp - #src/dusk/m_Do_ext_dusk.cpp - src/dusk/imgui/ImGuiConfig.hpp - src/dusk/imgui/ImGuiConsole.hpp - src/dusk/imgui/ImGuiConsole.cpp - src/dusk/imgui/ImGuiEngine.cpp - src/dusk/imgui/ImGuiEngine.hpp - src/dusk/imgui/ImGuiBloomWindow.cpp - src/dusk/imgui/ImGuiBloomWindow.hpp - src/dusk/imgui/ImGuiMenuTools.cpp - src/dusk/imgui/ImGuiMenuTools.hpp - src/dusk/imgui/ImGuiActorSpawner.cpp - src/dusk/imgui/ImGuiProcessOverlay.cpp - src/dusk/imgui/ImGuiCameraOverlay.cpp - src/dusk/imgui/ImGuiHeapOverlay.cpp - src/dusk/imgui/ImGuiControllerOverlay.cpp - src/dusk/imgui/ImGuiStubLog.cpp - src/dusk/imgui/ImGuiSaveEditor.cpp - src/dusk/imgui/ImGuiStateShare.hpp - src/dusk/imgui/ImGuiStateShare.cpp - src/dusk/ui/achievements.cpp - src/dusk/ui/achievements.hpp - src/dusk/ui/bool_button.cpp - src/dusk/ui/bool_button.hpp - src/dusk/ui/button.cpp - src/dusk/ui/button.hpp - src/dusk/ui/component.cpp - src/dusk/ui/component.hpp - src/dusk/ui/controller_config.cpp - src/dusk/ui/controller_config.hpp - src/dusk/ui/document.cpp - src/dusk/ui/document.hpp - src/dusk/ui/editor.cpp - src/dusk/ui/editor.hpp - src/dusk/ui/event.cpp - src/dusk/ui/event.hpp - src/dusk/ui/graphics_tuner.cpp - src/dusk/ui/graphics_tuner.hpp - src/dusk/ui/input.cpp - src/dusk/ui/input.hpp - src/dusk/ui/modal.cpp - src/dusk/ui/modal.hpp - src/dusk/ui/nav_types.hpp - src/dusk/ui/number_button.cpp - src/dusk/ui/number_button.hpp - src/dusk/ui/overlay.cpp - src/dusk/ui/overlay.hpp - src/dusk/ui/pane.cpp - src/dusk/ui/pane.hpp - src/dusk/ui/menu_bar.cpp - src/dusk/ui/menu_bar.hpp - src/dusk/ui/prelaunch.cpp - src/dusk/ui/prelaunch.hpp - src/dusk/ui/preset.cpp - src/dusk/ui/preset.hpp - src/dusk/ui/reporting.cpp - src/dusk/ui/reporting.hpp - src/dusk/ui/select_button.cpp - src/dusk/ui/select_button.hpp - src/dusk/ui/settings.cpp - src/dusk/ui/settings.hpp - src/dusk/ui/string_button.cpp - src/dusk/ui/string_button.hpp - src/dusk/ui/tab_bar.cpp - src/dusk/ui/tab_bar.hpp - src/dusk/ui/ui.cpp - src/dusk/ui/ui.hpp - src/dusk/ui/warp.cpp - src/dusk/ui/warp.hpp - src/dusk/ui/window.cpp - src/dusk/ui/window.hpp - src/dusk/achievements.cpp - src/dusk/iso_validate.cpp - src/dusk/livesplit.cpp - src/dusk/offset_ptr.cpp - src/dusk/OSContext.cpp - src/dusk/OSReport.cpp - src/dusk/OSThread.cpp - src/dusk/OSMutex.cpp - src/dusk/discord.cpp - src/dusk/discord.hpp - src/dusk/discord_presence.cpp - src/dusk/version.cpp - src/dusk/action_bindings.cpp + include/dusk/action_bindings.h + include/dusk/endian_gx.hpp + include/dusk/config.hpp + include/dusk/dvd_asset.hpp + include/dusk/scope_guard.hpp + src/dusk/dvd_asset.cpp + src/d/actor/d_a_alink_dusk.cpp + src/dusk/asserts.cpp + src/dusk/config.cpp + src/dusk/crash_handler.cpp + src/dusk/crash_reporting.cpp + src/dusk/data.cpp + src/dusk/data.hpp + src/dusk/endian.cpp + src/dusk/extras.c + src/dusk/file_select.cpp + src/dusk/file_select.hpp + src/dusk/frame_interpolation.cpp + src/dusk/commands.cpp + src/dusk/commands.hpp + src/dusk/game_clock.cpp + src/dusk/game_combos.cpp + src/dusk/globals.cpp + src/dusk/gyro.cpp + src/dusk/gamepad_color.cpp + src/dusk/autosave.cpp + src/dusk/http/http.hpp + src/dusk/io.cpp + src/dusk/layout.cpp + src/dusk/logging.cpp + src/dusk/settings.cpp + src/dusk/speedrun.cpp + src/dusk/string.cpp + src/dusk/stubs.cpp + include/dusk/texture_replacements.hpp + src/dusk/texture_replacements.cpp + src/dusk/update_check.cpp + src/dusk/update_check.hpp + src/dusk/imgui/ImGuiConfig.hpp + src/dusk/imgui/ImGuiConsole.hpp + src/dusk/imgui/ImGuiConsole.cpp + src/dusk/imgui/ImGuiEngine.cpp + src/dusk/imgui/ImGuiEngine.hpp + src/dusk/imgui/ImGuiBloomWindow.cpp + src/dusk/imgui/ImGuiBloomWindow.hpp + src/dusk/imgui/ImGuiMenuTools.cpp + src/dusk/imgui/ImGuiMenuTools.hpp + src/dusk/imgui/ImGuiActorSpawner.cpp + src/dusk/imgui/ImGuiProcessOverlay.cpp + src/dusk/imgui/ImGuiCameraOverlay.cpp + src/dusk/imgui/ImGuiHeapOverlay.cpp + src/dusk/imgui/ImGuiControllerOverlay.cpp + src/dusk/imgui/ImGuiStubLog.cpp + src/dusk/imgui/ImGuiSaveEditor.cpp + src/dusk/imgui/ImGuiStateShare.hpp + src/dusk/imgui/ImGuiStateShare.cpp + src/dusk/ui/achievements.cpp + src/dusk/ui/achievements.hpp + src/dusk/ui/command_console.cpp + src/dusk/ui/command_console.hpp + src/dusk/ui/bool_button.cpp + src/dusk/ui/bool_button.hpp + src/dusk/ui/button.cpp + src/dusk/ui/button.hpp + src/dusk/ui/component.cpp + src/dusk/ui/component.hpp + src/dusk/ui/controller_config.cpp + src/dusk/ui/controller_config.hpp + src/dusk/ui/document.cpp + src/dusk/ui/document.hpp + src/dusk/ui/editor.cpp + src/dusk/ui/editor.hpp + src/dusk/ui/event.cpp + src/dusk/ui/event.hpp + src/dusk/ui/graphics_tuner.cpp + src/dusk/ui/graphics_tuner.hpp + src/dusk/ui/input.cpp + src/dusk/ui/input.hpp + src/dusk/ui/modal.cpp + src/dusk/ui/modal.hpp + src/dusk/ui/nav_types.hpp + src/dusk/ui/number_button.cpp + src/dusk/ui/number_button.hpp + src/dusk/ui/overlay.cpp + src/dusk/ui/overlay.hpp + src/dusk/ui/pane.cpp + src/dusk/ui/pane.hpp + src/dusk/ui/menu_bar.cpp + src/dusk/ui/menu_bar.hpp + src/dusk/ui/prelaunch.cpp + src/dusk/ui/prelaunch.hpp + src/dusk/ui/preset.cpp + src/dusk/ui/preset.hpp + src/dusk/ui/reporting.cpp + src/dusk/ui/reporting.hpp + src/dusk/ui/select_button.cpp + src/dusk/ui/select_button.hpp + src/dusk/ui/settings.cpp + src/dusk/ui/settings.hpp + src/dusk/ui/string_button.cpp + src/dusk/ui/string_button.hpp + src/dusk/ui/tab_bar.cpp + src/dusk/ui/tab_bar.hpp + src/dusk/ui/ui.cpp + src/dusk/ui/ui.hpp + src/dusk/ui/warp.cpp + src/dusk/ui/warp.hpp + src/dusk/ui/window.cpp + src/dusk/ui/window.hpp + src/dusk/achievements.cpp + src/dusk/iso_validate.cpp + src/dusk/livesplit.cpp + src/dusk/offset_ptr.cpp + src/dusk/OSContext.cpp + src/dusk/OSReport.cpp + src/dusk/OSThread.cpp + src/dusk/OSMutex.cpp + src/dusk/discord.cpp + src/dusk/discord.hpp + src/dusk/discord_presence.cpp + src/dusk/version.cpp + src/dusk/action_bindings.cpp ) set(DUSK_HTTP_BACKEND_FILES - src/dusk/http/no_backend.cpp - src/dusk/http/curl.cpp - src/dusk/http/winhttp.cpp - src/dusk/http/url_session.mm + src/dusk/http/no_backend.cpp + src/dusk/http/curl.cpp + src/dusk/http/winhttp.cpp + src/dusk/http/url_session.mm ) diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 04a6115fd0..a27a9dc9c5 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -1351,6 +1351,9 @@ enum dStage_SaveTbl { const char* dStage_getName2(s16, s8); dStage_objectNameInf* dStage_searchName(const char*); +#if TARGET_PC +dStage_objectNameInf* dStage_searchNameCI(const char*); +#endif static int dStage_stageKeepTresureInit(dStage_dt_c*, void*, int, void*); static int dStage_filiInfo2Init(dStage_dt_c*, void*, int, void*); static int dStage_mapPathInitCommonLayer(dStage_dt_c*, void*, int, void*); diff --git a/include/dusk/game_clock.h b/include/dusk/game_clock.h index 8bb277e070..6ad9c2c752 100644 --- a/include/dusk/game_clock.h +++ b/include/dusk/game_clock.h @@ -23,4 +23,8 @@ float sample_interpolation_step(); float consume_interval(const void* consumer); +// Runtime sim rate override (default 30 hz). Resets the frame timer. +void set_sim_rate(float hz); +float get_sim_rate(); + } // namespace dusk::game_clock diff --git a/include/dusk/game_combos.h b/include/dusk/game_combos.h new file mode 100644 index 0000000000..ed247fe4e4 --- /dev/null +++ b/include/dusk/game_combos.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +namespace dusk { + +struct GameCombo { + using ConditionFn = bool(*)(); + using ActionFn = void(*)(); + + u32 holdMask; // all of these must be held (getHold) + u32 trigMask; // at least one must be newly triggered (getTrig); 0 = fires every frame while holdMask is held + bool strict; // if true: (held & ~trigMask) must equal holdMask exactly, no extra buttons held + ConditionFn condition; // extra game-state guard; nullptr = no extra check + ActionFn action; // runs when the combo is fired + u32 consumeMask; // buttons to clear after firing; 0 = pass-through + bool exclusive; // stop evaluating future combos if this fires +}; + +void processGameCombos(); + +} // namespace dusk diff --git a/include/dusk/settings.h b/include/dusk/settings.h index f48f5862ca..49823e045e 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -246,6 +246,8 @@ struct UserSettings { ConfigVar removeQuestMapMarkers; ConfigVar showInputViewer; ConfigVar showInputViewerGyro; + ConfigVar enableMoveLinkCombo; + ConfigVar enableTeleportCombo; } game; struct { diff --git a/res/rml/command_console.rcss b/res/rml/command_console.rcss new file mode 100644 index 0000000000..1446e6f165 --- /dev/null +++ b/res/rml/command_console.rcss @@ -0,0 +1,70 @@ +*, *:before, *:after { + box-sizing: border-box; +} + +body { + display: block; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow: visible; + pointer-events: none; +} + +console { + position: absolute; + bottom: 10dp; + left: 10dp; + width: 50%; + display: flex; + flex-direction: column; + background-color: rgba(0, 0, 0, 60%); + pointer-events: auto; + font-family: "Noto Mono"; + font-size: 14dp; + color: #FFFFFF; +} + +console[hidden] { + display: none; +} + +output { + display: block; + overflow: hidden; + max-height: 480dp; + padding: 4dp 8dp; + line-height: 1.4em; +} + +output[open] { + height: 480dp; + max-height: 480dp; + overflow-y: scroll; +} + +line { + display: block; + white-space: nowrap; +} + +line.cmd { + color: #FFD966; +} + +console input { + display: none; + width: 100%; + background-color: rgba(0, 0, 0, 40%); + border: 0dp; + border-top: 1dp rgba(255, 255, 255, 20%); + color: #FFFFFF; + font-family: "Noto Mono"; + font-size: 14dp; + padding: 4dp 8dp; +} + +console[open] input { + display: block; +} diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 5836feccd2..69e7cdf7b3 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -1536,6 +1536,27 @@ dStage_objectNameInf* dStage_searchName(char const* objName) { return NULL; } +#if TARGET_PC +dStage_objectNameInf* dStage_searchNameCI(char const* objName) { + dStage_objectNameInf* obj = l_objectName; + + for (u32 i = 0; i < ARRAY_SIZEU(l_objectName); i++) { + const char* a = obj->name; + const char* b = objName; + while (*a && *b && tolower((unsigned char)*a) == tolower((unsigned char)*b)) { + ++a; + ++b; + } + if (*a == '\0' && *b == '\0') { + return obj; + } + obj++; + } + + return NULL; +} +#endif + const char* dStage_getName(s16 procName, s8 argument) { static char tmp_name[dStage_NAME_LENGTH]; diff --git a/src/dusk/commands.cpp b/src/dusk/commands.cpp new file mode 100644 index 0000000000..3f2ad03b53 --- /dev/null +++ b/src/dusk/commands.cpp @@ -0,0 +1,617 @@ +#include "commands.hpp" + +#include "JSystem/JUtility/JUTGamePad.h" +#include "SSystem/SComponent/c_sxyz.h" +#include "SSystem/SComponent/c_xyz.h" +#include "c/c_damagereaction.h" +#include "d/actor/d_a_alink.h" +#include "d/d_com_inf_game.h" +#include "d/d_kankyo.h" +#include "d/d_stage.h" +#include "dusk/game_clock.h" +#include "f_op/f_op_actor_mng.h" +#include "f_pc/f_pc_layer.h" +#include "f_pc/f_pc_layer_iter.h" +#include "f_pc/f_pc_manager.h" +#include "f_pc/f_pc_node.h" + +#include +#include +#include +#include +#include + +#include "fmt/format.h" + +namespace dusk { +namespace { + +static constexpr int kMaxHistory = 64; + +static std::vector SplitArgs(std::string_view input) { + std::vector args; + std::string cur; + for (char c : input) { + if (c == ' ' || c == '\t') { + if (!cur.empty()) { + args.push_back(std::move(cur)); + cur.clear(); + } + } else { + cur += c; + } + } + if (!cur.empty()) { + args.push_back(std::move(cur)); + } + return args; +} + +static std::optional ParseLong(const std::string& s) { + if (s.empty()) { + return std::nullopt; + } + char* end = nullptr; + const long v = std::strtol(s.c_str(), &end, 0); + return (end != s.c_str() && *end == '\0') ? std::optional{v} : std::nullopt; +} + +static std::optional ParseFloat(const std::string& s) { + if (s.empty()) { + return std::nullopt; + } + char* end = nullptr; + const float v = std::strtof(s.c_str(), &end); + return (end != s.c_str() && *end == '\0') ? std::optional{v} : std::nullopt; +} + +static const char* ActorShortName(s16 profname) { + const char* n = dStage_getName(profname, -1); + return n ? n : "?"; +} + +// Resolves @found / @link / @ to a process pointer, outputting an error on failure +static base_process_class* ParseProcArg( + const std::string& s, unsigned int foundProcId, const CommandOutput& output) { + if (s.empty() || s[0] != '@') { + output("Error: proc reference must start with @"); + return nullptr; + } + const std::string inner = s.substr(1); + unsigned int id; + if (inner == "found") { + if (foundProcId == 0) { + output("Error: @found is not set"); + return nullptr; + } + id = foundProcId; + } else if (inner == "link") { + auto* player = dComIfGp_getPlayer(0); + if (player == nullptr) { + output("Error: player not available"); + return nullptr; + } + id = (unsigned int)fpcM_GetID(player); + } else { + const auto v = ParseLong(inner); + if (!v) { + output("Error: invalid proc ID"); + return nullptr; + } + id = (unsigned int)*v; + } + auto* proc = fpcM_SearchByID(id); + if (proc == nullptr) { + output(fmt::format(FMT_STRING("Error: proc {} not found"), id)); + return nullptr; + } + return proc; +} + +// Like ParseProcArg but ensures the proc is an actor +static fopAc_ac_c* ParseActorArg( + const std::string& s, unsigned int foundProcId, const CommandOutput& output) { + auto* proc = ParseProcArg(s, foundProcId, output); + if (proc == nullptr) { + return nullptr; + } + if (!fopAcM_IsActor(proc)) { + output("Error: proc is not an actor"); + return nullptr; + } + return static_cast(proc); +} + +static std::optional ParseActorId(const std::string& s) { + if (const auto v = ParseLong(s)) { + return (s16)*v; + } + const auto* entry = dStage_searchNameCI(s.c_str()); + return entry ? std::optional{entry->procname} : std::nullopt; +} + +static std::optional ParseXYZ(const std::vector& args, size_t i) { + const auto x = ParseFloat(args[i]), y = ParseFloat(args[i + 1]), z = ParseFloat(args[i + 2]); + return (x && y && z) ? std::optional{cXyz(*x, *y, *z)} : std::nullopt; +} + +static bool TryAngle( + s16& out, const std::vector& args, size_t i, const CommandOutput& output) { + if (args.size() <= i) { + return true; + } + const auto a = ParseLong(args[i]); + if (!a) { + output("Error: invalid angle"); + return false; + } + out = (s16)*a; + return true; +} + +static std::string actorLine(const base_process_class* proc) { + const auto* ac = static_cast(proc); + return fmt::format(FMT_STRING("procId={} 0x{:04X} ({}) @ ({:.2f}, {:.2f}, {:.2f}) room={}"), + (unsigned int)proc->id, (unsigned int)(u16)proc->profname, ActorShortName(proc->profname), + ac->current.pos.x, ac->current.pos.y, ac->current.pos.z, (int)ac->current.roomNo); +} + +static void recurseLayer(void* p, int (*callback)(void*, void*), void* ctx) { + auto* proc = static_cast(p); + if (fpcBs_Is_JustOfType(g_fpcNd_type, proc->subtype)) { + fpcLyIt_OnlyHere(&static_cast(p)->layer, callback, ctx); + } +} + +struct ListContext { + s16 targetId; + std::vector* output; +}; +struct FindContext { + s16 targetId; + std::vector matches; +}; + +static int ListActorCallback(void* p, void* ctx) { + auto* proc = static_cast(p); + auto* context = static_cast(ctx); + if (fopAcM_IsActor(proc) && (context->targetId < 0 || proc->profname == context->targetId)) { + context->output->push_back(" " + actorLine(proc)); + } + recurseLayer(p, ListActorCallback, ctx); + return 1; +} + +static int FindActorCallback(void* p, void* ctx) { + auto* proc = static_cast(p); + auto* context = static_cast(ctx); + if (fopAcM_IsActor(proc) && proc->profname == context->targetId) { + context->matches.push_back(proc); + } + recurseLayer(p, FindActorCallback, ctx); + return 1; +} + +} // namespace + +void runCommand(std::string_view cmdLine, CommandState& state, const CommandOutput& output) { + output(fmt::format(FMT_STRING("> {}"), cmdLine)); + + if (!cmdLine.empty()) { + if (state.history.empty() || state.history.back() != cmdLine) { + state.history.push_back(std::string(cmdLine)); + if ((int)state.history.size() > kMaxHistory) { + state.history.erase(state.history.begin()); + } + } + } + + auto args = SplitArgs(cmdLine); + if (args.empty()) { + return; + } + const auto& cmd = args[0]; + + auto requirePlayer = [&]() -> daAlink_c* { + auto* p = (daAlink_c*)dComIfGp_getPlayer(0); + if (p == nullptr) { + output("Error: player not available"); + } + return p; + }; + + if (cmd == "tp") { + auto* player = requirePlayer(); + if (player == nullptr) { + return; + } + + if (args.size() >= 2 && args[1].starts_with('@')) { + auto* ac = ParseActorArg(args[1], state.foundProcId, output); + if (ac == nullptr) { + return; + } + + if (args.size() >= 3 && args[2].starts_with('@')) { + auto* destAc = ParseActorArg(args[2], state.foundProcId, output); + if (destAc == nullptr) { + return; + } + const cXyz destPos = destAc->current.pos; + ac->current.pos = destPos; + output(fmt::format(FMT_STRING("Moved actor {} to ({:.2f}, {:.2f}, {:.2f})"), ac->id, + destPos.x, destPos.y, destPos.z)); + return; + } + + if (args.size() >= 5) { + const auto pos = ParseXYZ(args, 2); + if (!pos) { + output("Error: invalid coordinates"); + return; + } + ac->current.pos = *pos; + if (!TryAngle(ac->shape_angle.y, args, 5, output)) { + return; + } + output(fmt::format(FMT_STRING("Moved actor {} to ({:.2f}, {:.2f}, {:.2f})"), ac->id, + pos->x, pos->y, pos->z)); + return; + } + + player->current.pos = ac->current.pos; + output(fmt::format(FMT_STRING("Teleported to actor {} ({:.2f}, {:.2f}, {:.2f})"), + ac->id, ac->current.pos.x, ac->current.pos.y, ac->current.pos.z)); + return; + } + + if (args.size() < 4) { + output("Usage: tp [angle] | tp @ [ [angle] | @link]"); + return; + } + const auto pos = ParseXYZ(args, 1); + if (!pos) { + output("Error: invalid coordinates"); + return; + } + player->current.pos = *pos; + if (!TryAngle(player->shape_angle.y, args, 4, output)) { + return; + } + output(fmt::format( + FMT_STRING("Teleported to ({:.2f}, {:.2f}, {:.2f})"), pos->x, pos->y, pos->z)); + return; + } + + if (cmd == "spawn") { + if (args.size() < 2) { + output("Usage: spawn [params] [x y z] [angle]"); + return; + } + auto* player = requirePlayer(); + if (player == nullptr) { + return; + } + + const auto actorId = ParseActorId(args[1]); + if (!actorId) { + output("Error: unknown actor ID or name"); + return; + } + + long paramsL = -1; + if (args.size() >= 3) { + const auto p = ParseLong(args[2]); + if (!p) { + output("Error: invalid params"); + return; + } + paramsL = *p; + } + + cXyz pos = player->current.pos; + if (args.size() >= 6) { + const auto spawnPos = ParseXYZ(args, 3); + if (!spawnPos) { + output("Error: invalid spawn coordinates"); + return; + } + pos = *spawnPos; + } + + s16 angleY = 0; + if (!TryAngle(angleY, args, 6, output)) { + return; + } + csXyz angle; + angle.set(0, angleY, 0); + cXyz scale(1.0f, 1.0f, 1.0f); + + layer_class* savedLayer = fpcLy_CurrentLayer(); + base_process_class* playScene = fpcM_SearchByName(fpcNm_PLAY_SCENE_e); + if (playScene != nullptr) { + fpcLy_SetCurrentLayer(&((process_node_class*)playScene)->layer); + } + unsigned int result = fopAcM_create( + *actorId, (u32)paramsL, &pos, player->current.roomNo, &angle, &scale, (s8)-1); + fpcLy_SetCurrentLayer(savedLayer); + + output(result != 0 ? fmt::format(FMT_STRING("Spawned actorId=0x{:04X} procId={}"), + (unsigned int)(u16)*actorId, result) : + fmt::format(FMT_STRING("Failed to spawn actorId=0x{:04X}"), + (unsigned int)(u16)*actorId)); + return; + } + + if (cmd == "reset") { + JUTGamePad::C3ButtonReset::sResetSwitchPushing = true; + output("Soft reset triggered"); + return; + } + + if (cmd == "warp") { + if (args.size() < 4) { + output("Usage: warp [layer=-1]"); + output(" e.g. warp F_SP121 0 0"); + return; + } + const auto pointL = ParseLong(args[2]), roomL = ParseLong(args[3]); + if (!pointL || !roomL) { + output("Error: invalid point or room number"); + return; + } + long layerL = -1; + if (args.size() >= 5) { + const auto l = ParseLong(args[4]); + if (!l) { + output("Error: invalid layer"); + return; + } + layerL = *l; + } + state.lastWarpStage = args[1]; + dComIfGp_setNextStage(state.lastWarpStage.c_str(), (s16)*pointL, (s8)*roomL, (s8)layerL); + output(fmt::format(FMT_STRING("Warping to {} point={} room={} layer={}"), args[1], + (int)(s16)*pointL, (int)(s8)*roomL, (int)(s8)layerL)); + return; + } + + if (cmd == "list") { + s16 targetId = -1; + if (args.size() >= 2) { + const auto id = ParseActorId(args[1]); + if (!id) { + output("Error: unknown actor ID or name"); + return; + } + targetId = *id; + } + std::vector results; + ListContext ctx{targetId, &results}; + fpcLyIt_OnlyHere(fpcLy_RootLayer(), ListActorCallback, &ctx); + output(results.empty() ? "No matching actors found" : + fmt::format(FMT_STRING("Found {} actor(s):"), results.size())); + for (const auto& r : results) { + output(r); + } + return; + } + + if (cmd == "killall") { + if (args.size() < 2) { + output("Usage: killall "); + return; + } + const auto targetId = ParseActorId(args[1]); + if (!targetId) { + output("Error: unknown actor ID or name"); + return; + } + FindContext ctx{*targetId, {}}; + fpcLyIt_OnlyHere(fpcLy_RootLayer(), FindActorCallback, &ctx); + for (auto* proc : ctx.matches) { + fpcM_Delete(proc); + } + output(fmt::format(FMT_STRING("Deleted {} actor(s) of type {} ({})"), + (int)ctx.matches.size(), (unsigned int)(u16)*targetId, ActorShortName(*targetId))); + return; + } + + if (cmd == "heal") { + auto* player = requirePlayer(); + if (player == nullptr) { + return; + } + const u16 maxLife = dComIfGs_getMaxLife() / 5 * 4; + u16 newLife = maxLife; + if (args.size() >= 2) { + const auto amount = ParseLong(args[1]); + if (!amount) { + output("Error: invalid amount"); + return; + } + newLife = + (u16)std::max(0L, std::min((long)maxLife, (long)dComIfGs_getLife() + *amount)); + } + dComIfGs_setLife(newLife); + output(fmt::format(FMT_STRING("Health: {}/{}"), (int)newLife, (int)maxLife)); + return; + } + + if (cmd == "kill") { + if (args.size() >= 2) { + auto* proc = ParseProcArg(args[1], state.foundProcId, output); + if (proc == nullptr) { + return; + } + fpcM_Delete(proc); + output(fmt::format(FMT_STRING("Deleted proc {}"), proc->id)); + } else { + auto* player = requirePlayer(); + if (player == nullptr) { + return; + } + dComIfGs_setLife(0); + output("Set Link's health to 0"); + } + return; + } + + if (cmd == "rate") { + if (args.size() >= 2) { + const auto hz = ParseLong(args[1]); + if (!hz || *hz <= 0) { + output("Error: rate must be a positive integer"); + return; + } + dusk::game_clock::set_sim_rate((float)*hz); + } + output(fmt::format(FMT_STRING("Sim rate: {} hz"), (int)dusk::game_clock::get_sim_rate())); + return; + } + + if (cmd == "ebf") { + if (args.size() >= 2) { + const auto val = ParseLong(args[1]); + if (!val || *val < 0 || *val > 255) { + output("Error: value must be 0-255"); + return; + } + cDmr_SkipInfo = (u8)*val; + } + output(fmt::format(FMT_STRING("EBF = {}"), (int)cDmr_SkipInfo)); + return; + } + + if (cmd == "time") { + if (args.size() >= 2) { + const auto t = ParseFloat(args[1]); + if (!t || *t < 0.0f || *t > 360.0f) { + output("Error: time must be a float between 0 and 360"); + return; + } + dKy_instant_timechg(*t); + } + output(fmt::format(FMT_STRING("Time: {:.2f} ({}:{:02d})"), dComIfGs_getTime(), + dKy_getdaytime_hour(), dKy_getdaytime_minute())); + return; + } + + if (cmd == "rupees") { + const u16 maxRupees = dComIfGs_getRupeeMax(); + if (args.size() >= 2) { + const auto amount = ParseLong(args[1]); + if (!amount) { + output("Error: invalid amount"); + return; + } + dComIfGs_setRupee((u16)std::max(0L, std::min((long)maxRupees, *amount))); + } + output(fmt::format(FMT_STRING("Rupees: {}/{}"), (int)dComIfGs_getRupee(), (int)maxRupees)); + return; + } + + if (cmd == "find") { + if (args.size() < 2) { + if (state.foundProcId == 0) { + output("@found is not set"); + return; + } + auto* proc = fpcM_SearchByID(state.foundProcId); + output(proc != nullptr && fopAcM_IsActor(proc) ? + "@found = " + actorLine(proc) : + fmt::format(FMT_STRING("@found = {} (no longer exists)"), + (unsigned int)state.foundProcId)); + return; + } + + const auto targetId = ParseActorId(args[1]); + if (!targetId) { + output("Error: unknown actor ID or name"); + return; + } + + int targetN = 1; + if (args.size() >= 3) { + const auto n = ParseLong(args[2]); + if (!n || *n < 1) { + output("Error: index must be >= 1"); + return; + } + targetN = (int)*n; + } + + FindContext ctx{*targetId, {}}; + fpcLyIt_OnlyHere(fpcLy_RootLayer(), FindActorCallback, &ctx); + + if (ctx.matches.empty()) { + output(fmt::format(FMT_STRING("No actors found for '{}'"), args[1])); + return; + } + + std::sort(ctx.matches.begin(), ctx.matches.end(), + [](const base_process_class* a, const base_process_class* b) { return a->id < b->id; }); + + if (targetN > (int)ctx.matches.size()) { + output(fmt::format( + FMT_STRING("Error: only {} actor(s) of that type exist"), (int)ctx.matches.size())); + return; + } + + auto* picked = ctx.matches[(size_t)(targetN - 1)]; + state.foundProcId = picked->id; + output(fmt::format( + FMT_STRING("@found [{}/{}] {}"), targetN, (int)ctx.matches.size(), actorLine(picked))); + return; + } + + if (cmd == "transform") { + auto* player = requirePlayer(); + if (player == nullptr) { return; } + player->procCoMetamorphoseInit(); + output("Transforming"); + return; + } + + if (cmd == "pos") { + auto* player = requirePlayer(); + if (player == nullptr) { + return; + } + output(fmt::format(FMT_STRING("pos: {:.4f} {:.4f} {:.4f}"), player->current.pos.x, + player->current.pos.y, player->current.pos.z)); + output( + fmt::format(FMT_STRING("stage: {} room: {} entry: {}"), dComIfGp_getStartStageName(), + (int)player->current.roomNo, (int)dComIfGp_getStartStagePoint())); + return; + } + + if (cmd == "help") { + output("@ = @ | @found | @link"); + output(""); + output("ebf [0-255] Get or set cDmr_SkipInfo"); + output("find [n=1] Store nth actor as @found"); + output("heal [amount] Heal to max, or by relative amount"); + output("kill Set Link health to 0"); + output("kill @ Delete proc"); + output("killall Delete all actors of a type"); + output("list [id|name] List actors in scene"); + output("pos Print player position and stage"); + output("rate [hz] Get or set sim rate (1-1000, default 30)"); + output("reset Soft reset"); + output("rupees [amount] Get or set rupee count"); + output("spawn [params] [x y z] [angle] Spawn actor"); + output("time [0-360] Get or set time of day"); + output("tp [angle] Teleport Link to coords"); + output("tp @ Teleport Link to actor"); + output("tp @ [angle] Move actor to coords"); + output("tp @ @ Move actor to actor"); + output("transform Force transform"); + output("warp [layer] Warp to stage"); + return; + } + + output(fmt::format(FMT_STRING("Unknown command '{}' (try 'help')"), cmd)); +} + +} // namespace dusk diff --git a/src/dusk/commands.hpp b/src/dusk/commands.hpp new file mode 100644 index 0000000000..b25901dafd --- /dev/null +++ b/src/dusk/commands.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include +#include +#include +#include + +namespace dusk { + +using CommandOutput = std::function; + +struct CommandState { + std::vector history; + unsigned int foundProcId = 0; + std::string lastWarpStage; +}; + +// Execute a single command line. Calls output() for every line of response. +// Manages history internally; callers need only hold a CommandState. +void runCommand(std::string_view cmdLine, CommandState& state, const CommandOutput& output); + +} // namespace dusk diff --git a/src/dusk/game_clock.cpp b/src/dusk/game_clock.cpp index 1dc7fbf322..bfc60eea49 100644 --- a/src/dusk/game_clock.cpp +++ b/src/dusk/game_clock.cpp @@ -16,8 +16,9 @@ clock::time_point s_current_snapshot_time{}; std::unordered_map s_interval_last_sample; -constexpr clock::duration kSimPeriodDuration = - std::chrono::duration_cast(std::chrono::duration(sim_pace())); +float s_sim_rate_hz = 30.0f; +clock::duration s_sim_period_duration = std::chrono::duration_cast(std::chrono::duration(sim_pace())); + constexpr clock::duration kAbnormalGapResetThreshold = std::chrono::milliseconds(250); constexpr int kMaxSimTicksPerFrame = 2; @@ -32,7 +33,17 @@ void ensure_initialized() { void reset_frame_timer() { s_previous_sample = clock::now(); - s_current_snapshot_time = s_previous_sample - kSimPeriodDuration; + s_current_snapshot_time = s_previous_sample - s_sim_period_duration; +} + +void set_sim_rate(float hz) { + s_sim_rate_hz = std::max(1.0f, std::min(hz, 1000.0f)); + s_sim_period_duration = std::chrono::duration_cast(std::chrono::duration(1.0f / s_sim_rate_hz)); + reset_frame_timer(); +} + +float get_sim_rate() { + return s_sim_rate_hz; } MainLoopPacer advance_main_loop() { @@ -45,12 +56,12 @@ MainLoopPacer advance_main_loop() { MainLoopPacer out{}; out.presentation_dt_seconds = presentation_dt; + out.sim_pace = 1.0f / s_sim_rate_hz; const bool should_interpolate = dusk::getSettings().game.enableFrameInterpolation.getValue() != dusk::FrameInterpMode::Off && !dusk::getTransientSettings().skipFrameRateLimit; out.is_interpolating = should_interpolate; - out.sim_pace = sim_pace(); if (!should_interpolate) { s_current_snapshot_time = now; @@ -59,16 +70,16 @@ MainLoopPacer advance_main_loop() { } if (frame_gap > kAbnormalGapResetThreshold) { - s_current_snapshot_time = now - kSimPeriodDuration; + s_current_snapshot_time = now - s_sim_period_duration; out.sim_ticks_to_run = 0; return out; } int sim_ticks_to_run = 0; clock::time_point projected_snapshot_time = s_current_snapshot_time; - const clock::time_point render_time = now - kSimPeriodDuration; + const clock::time_point render_time = now - s_sim_period_duration; while (sim_ticks_to_run < kMaxSimTicksPerFrame && projected_snapshot_time < render_time) { - projected_snapshot_time += kSimPeriodDuration; + projected_snapshot_time += s_sim_period_duration; sim_ticks_to_run++; } out.sim_ticks_to_run = sim_ticks_to_run; @@ -77,13 +88,13 @@ MainLoopPacer advance_main_loop() { void commit_sim_tick() { ensure_initialized(); - s_current_snapshot_time += kSimPeriodDuration; + s_current_snapshot_time += s_sim_period_duration; } float sample_interpolation_step() { ensure_initialized(); const float step = - std::chrono::duration(clock::now() - s_current_snapshot_time).count() / sim_pace(); + std::chrono::duration(clock::now() - s_current_snapshot_time).count() / (1.0f / s_sim_rate_hz); return std::clamp(step, 0.0f, 1.0f); } diff --git a/src/dusk/game_combos.cpp b/src/dusk/game_combos.cpp new file mode 100644 index 0000000000..90f4fb0770 --- /dev/null +++ b/src/dusk/game_combos.cpp @@ -0,0 +1,136 @@ +#include "dusk/game_combos.h" + +#include "SSystem/SComponent/c_API_controller_pad.h" +#include "SSystem/SComponent/c_xyz.h" +#include "d/actor/d_a_alink.h" +#include "d/d_com_inf_game.h" +#include "dusk/settings.h" +#include "m_Do/m_Do_controller_pad.h" + +namespace dusk { +namespace { + +cXyz s_savedTeleportPos{}; +s16 s_savedTeleportAngle = 0; +bool s_hasTeleportPos = false; + +static daAlink_c* getPlayer() { + return (daAlink_c*)dComIfGp_getPlayer(0); +} + +static void consumeButtons(u32 mask) { + mDoCPd_c::getCpadInfo(PAD_1).mPressedButtonFlags &= ~mask; + mDoCPd_c::getCpadInfo(PAD_1).mButtonFlags &= ~mask; +} + +// Table: holdMask, trigMask, strict, condition, action, consumeMask, exclusive +static const GameCombo kCombos[] = { + // Move Link (L+R+Y), pass-through, non-exclusive + { + PAD_TRIGGER_R | PAD_TRIGGER_L, + PAD_BUTTON_Y, + false, + [] { return (bool)getSettings().game.enableMoveLinkCombo; }, + [] { getTransientSettings().moveLinkActive = !getTransientSettings().moveLinkActive; }, + 0, + false, + }, + // Quick Transform (R+Y, strictly only R held) + { + PAD_TRIGGER_R, + PAD_BUTTON_Y, + true, + [] { return getPlayer() != nullptr; }, + [] { getPlayer()->handleQuickTransform(); }, + PAD_BUTTON_Y, + false, + }, + // Wolf Howl (R+X) + { + PAD_TRIGGER_R, + PAD_BUTTON_X, + false, + [] { return getPlayer() != nullptr; }, + [] { getPlayer()->handleWolfHowl(); }, + PAD_BUTTON_X, + false, + }, + // Teleport save (R+D-pad Up), consumes D-pad Up, exclusive + { + PAD_TRIGGER_R, + PAD_BUTTON_UP, + false, + [] { return getSettings().game.enableTeleportCombo && getPlayer() != nullptr; }, + [] { + auto* p = getPlayer(); + s_savedTeleportPos = p->current.pos; + s_savedTeleportAngle = p->shape_angle.y; + s_hasTeleportPos = true; + }, + PAD_BUTTON_UP, + true, + }, + // Teleport load (R+D-pad Down), consumes D-pad Down, exclusive + { + PAD_TRIGGER_R, + PAD_BUTTON_DOWN, + false, + [] { + return getSettings().game.enableTeleportCombo && s_hasTeleportPos && + getPlayer() != nullptr; + }, + [] { + auto* p = getPlayer(); + p->current.pos = s_savedTeleportPos; + p->shape_angle.y = s_savedTeleportAngle; + p->mNormalSpeed = 0.0f; + }, + PAD_BUTTON_DOWN, + true, + }, + // Moon Jump (R+A, hold), continuous, pass-through, non-exclusive + { + PAD_TRIGGER_R | PAD_BUTTON_A, + 0, + false, + [] { return getSettings().game.moonJump && getPlayer() != nullptr; }, + [] { getPlayer()->speed.y = 56.0f; }, + 0, + false, + }, +}; + +} // namespace + +void processGameCombos() { + if (!getSettings().game.enableMoveLinkCombo) { + getTransientSettings().moveLinkActive = false; + } + + const u32 held = mDoCPd_c::getHold(PAD_1); + const u32 trig = mDoCPd_c::getTrig(PAD_1); + + for (const auto& combo : kCombos) { + if ((held & combo.holdMask) != combo.holdMask) { + continue; + } + if (combo.strict && (held & ~combo.trigMask) != combo.holdMask) { + continue; + } + if (combo.trigMask != 0 && !(trig & combo.trigMask)) { + continue; + } + if (combo.condition != nullptr && !combo.condition()) { + continue; + } + combo.action(); + if (combo.consumeMask != 0) { + consumeButtons(combo.consumeMask); + } + if (combo.exclusive) { + return; + } + } +} + +} // namespace dusk diff --git a/src/dusk/imgui/ImGuiConsole.cpp b/src/dusk/imgui/ImGuiConsole.cpp index d8b85b2d63..db0ffeb2cd 100644 --- a/src/dusk/imgui/ImGuiConsole.cpp +++ b/src/dusk/imgui/ImGuiConsole.cpp @@ -243,12 +243,6 @@ namespace dusk { getTransientSettings().skipFrameRateLimit = getSettings().game.enableTurboKeybind && (ImGui::IsKeyDown(ImGuiKey_Tab) || getActionBindHoldAnyPort(ActionBinds::TURBO_SPEED_BUTTON)); - if (dusk::frame_interp::get_ui_tick_pending() && mDoMain::developmentMode == 1 && (mDoCPd_c::getHold(PAD_1) & (PAD_TRIGGER_R | PAD_TRIGGER_L)) == (PAD_TRIGGER_R | PAD_TRIGGER_L) && mDoCPd_c::getTrigY(PAD_1)) { - getTransientSettings().moveLinkActive = !getTransientSettings().moveLinkActive; - } - if (mDoMain::developmentMode != 1) { - getTransientSettings().moveLinkActive = false; - } } void ImGuiConsole::PreDraw() { diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 3bea017e2c..ee6f09df8e 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -138,7 +138,9 @@ UserSettings g_userSettings = { .recordingMode {"game.recordingMode", false}, .removeQuestMapMarkers {"game.removeQuestMapMarkers", false}, .showInputViewer {"game.showInputViewer", false}, - .showInputViewerGyro {"game.showInputViewerGyro", false} + .showInputViewerGyro {"game.showInputViewerGyro", false}, + .enableMoveLinkCombo {"game.enableMoveLinkCombo", false}, + .enableTeleportCombo {"game.enableTeleportCombo", false} }, .backend = { @@ -267,6 +269,8 @@ void registerSettings() { Register(g_userSettings.game.removeQuestMapMarkers); Register(g_userSettings.game.showInputViewer); Register(g_userSettings.game.showInputViewerGyro); + Register(g_userSettings.game.enableMoveLinkCombo); + Register(g_userSettings.game.enableTeleportCombo); Register(g_userSettings.game.fastSpinner); Register(g_userSettings.game.infiniteHearts); Register(g_userSettings.game.infiniteArrows); diff --git a/src/dusk/ui/command_console.cpp b/src/dusk/ui/command_console.cpp new file mode 100644 index 0000000000..9f561fb08d --- /dev/null +++ b/src/dusk/ui/command_console.cpp @@ -0,0 +1,223 @@ +#include "command_console.hpp" + +#include +#include +#include +#include +#include + +#include "dusk/settings.h" + +#include +#include +#include + +#include "fmt/format.h" +#include "ui.hpp" + +namespace dusk::ui { +namespace { + +static const Rml::String kDocumentSource = R"RML( + + + + + + + + + + + +)RML"; + +static bool isCommand(std::string_view text) { + return text.size() >= 2 && text[0] == '>' && text[1] == ' '; +} + +} // namespace + +CommandConsole::CommandConsole() : Document(kDocumentSource) { + mConsole = mDocument ? mDocument->GetElementById("console") : nullptr; + mOutput = mDocument ? mDocument->GetElementById("console-output") : nullptr; + auto* rawInput = mDocument ? mDocument->GetElementById("console-input") : nullptr; + mInput = rmlui_dynamic_cast(rawInput); + + if (mConsole != nullptr) { + mConsole->SetAttribute("hidden", ""); + } + + listen( + Rml::EventId::Keydown, + [this](Rml::Event& event) { + if (!mInputActive) { + return; + } + const auto key = static_cast(event.GetParameter("key_identifier", Rml::Input::KI_UNKNOWN)); + if (key == Rml::Input::KI_RETURN) { + executeFromInput(); + event.StopImmediatePropagation(); + } else if (key == Rml::Input::KI_ESCAPE) { + closeInput(); + event.StopImmediatePropagation(); + } else if (key == Rml::Input::KI_UP) { + navigateHistory(-1); + event.StopImmediatePropagation(); + } else if (key == Rml::Input::KI_DOWN) { + navigateHistory(+1); + event.StopImmediatePropagation(); + } + }, + true); +} + +void CommandConsole::show() { + if (mDocument != nullptr) { + mDocument->Show(Rml::ModalFlag::None, Rml::FocusFlag::None, Rml::ScrollFlag::None); + } +} + +bool CommandConsole::handle_nav_command(Rml::Event&, NavCommand) { + return false; +} + +void CommandConsole::update() { + if (!getSettings().backend.enableAdvancedSettings) { + return; + } + + int numKeys = 0; + const bool* keyState = SDL_GetKeyboardState(&numKeys); + const bool slashNow = SDL_SCANCODE_SLASH < numKeys && keyState[SDL_SCANCODE_SLASH]; + if (!mInputActive && slashNow && !mPrevSlashState) { + openInput(); + } + mPrevSlashState = slashNow; + + const float dt = std::max(ImGui::GetIO().DeltaTime, 0.0f); + for (auto& line : mOutputLines) { + line.remain -= dt; + } + const auto [first, last] = + std::ranges::remove_if(mOutputLines, [](const OutputLine& l) { return l.remain <= 0.0f; }); + mOutputLines.erase(first, last); + + if (mConsole != nullptr) { + if (!mOutputLines.empty() || mInputActive) { + mConsole->RemoveAttribute("hidden"); + } else { + mConsole->SetAttribute("hidden", ""); + return; + } + } + + if (mOutput == nullptr) { + return; + } + + Rml::String html; + if (mInputActive) { + for (const auto& msg : mMsgHistory) { + html += isCommand(msg) ? "" + escape(msg) + "" : "" + escape(msg) + ""; + } + mOutput->SetAttribute("open", ""); + } else { + const int total = (int)mOutputLines.size(); + const int startIdx = std::max(0, total - kMaxVisibleLines); + for (int i = startIdx; i < total; ++i) { + const auto& line = mOutputLines[i]; + const float alpha = line.remain < kFadeSeconds ? line.remain / kFadeSeconds : 1.0f; + const Rml::String cls = isCommand(line.text) ? " class=\"cmd\"" : ""; + html += fmt::format(FMT_STRING("{}"), cls, + alpha, escape(line.text)); + } + mOutput->RemoveAttribute("open"); + } + + mOutput->SetInnerRML(html); + + if (mScrollToBottom && mInputActive) { + mOutput->SetScrollTop(1e9f); + mScrollToBottom = false; + } +} + +void CommandConsole::openInput() { + mInputActive = true; + mScrollToBottom = true; + if (mConsole != nullptr) { + mConsole->SetAttribute("open", ""); + mConsole->RemoveAttribute("hidden"); + } + if (mInput != nullptr) { + mInput->SetValue(""); + aurora::rmlui::set_input_type(aurora::rmlui::InputType::Text); + mInput->Focus(true); + } +} + +void CommandConsole::closeInput() { + mInputActive = false; + mHistoryPos = -1; + if (mConsole != nullptr) { + mConsole->RemoveAttribute("open"); + } + if (mInput != nullptr) { + mInput->SetValue(""); + } + if (mDocument != nullptr) { + mDocument->Focus(false); + } +} + +void CommandConsole::executeFromInput() { + if (mInput == nullptr) { + closeInput(); + return; + } + const Rml::String value = mInput->GetValue(); + closeInput(); + if (!value.empty()) { + runCommand(value, mState, [this](std::string text) { ConsolePrint(std::move(text)); }); + } + mScrollToBottom = true; +} + +void CommandConsole::navigateHistory(int dir) { + if (mState.history.empty() || mInput == nullptr) { + return; + } + const int prev = mHistoryPos; + if (dir < 0) { + if (mHistoryPos == -1) { + mHistoryPos = (int)mState.history.size() - 1; + } else if (mHistoryPos > 0) { + --mHistoryPos; + } + } else { + if (mHistoryPos != -1 && ++mHistoryPos >= (int)mState.history.size()) { + mHistoryPos = -1; + } + } + if (prev != mHistoryPos) { + const char* str = mHistoryPos >= 0 ? mState.history[mHistoryPos].c_str() : ""; + mInput->SetValue(str); + const int end = static_cast(Rml::StringUtilities::LengthUTF8(mInput->GetValue())); + mInput->SetSelectionRange(end, end); + } +} + +void CommandConsole::ConsolePrint(std::string text) { + mMsgHistory.push_back(text); + if ((int)mMsgHistory.size() > kMaxMsgHistory) { + mMsgHistory.erase(mMsgHistory.begin()); + } + mOutputLines.push_back({std::move(text), kDurationNormal}); + mScrollToBottom = true; + if ((int)mOutputLines.size() > kMaxStoredLines) { + mOutputLines.erase(mOutputLines.begin()); + } +} + +} // namespace dusk::ui diff --git a/src/dusk/ui/command_console.hpp b/src/dusk/ui/command_console.hpp new file mode 100644 index 0000000000..8d476ae085 --- /dev/null +++ b/src/dusk/ui/command_console.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include "document.hpp" +#include "dusk/commands.hpp" + +#include +#include + +namespace Rml { +class ElementFormControlInput; +} + +namespace dusk::ui { + +class CommandConsole : public Document { +public: + CommandConsole(); + void show() override; + void update() override; + +private: + struct OutputLine { + std::string text; + float remain; + }; + + static constexpr float kDurationNormal = 6.0f; + static constexpr float kFadeSeconds = 0.8f; + static constexpr int kMaxStoredLines = 64; + static constexpr int kMaxVisibleLines = 24; + static constexpr int kMaxMsgHistory = 500; + + Rml::Element* mConsole = nullptr; + Rml::Element* mOutput = nullptr; + Rml::ElementFormControlInput* mInput = nullptr; + + std::vector mOutputLines; + std::vector mMsgHistory; + int mHistoryPos = -1; + bool mInputActive = false; + bool mScrollToBottom = false; + bool mPrevSlashState = false; + + CommandState mState; + + bool handle_nav_command(Rml::Event& event, NavCommand cmd) override; + + void ConsolePrint(std::string text); + void openInput(); + void closeInput(); + void executeFromInput(); + void navigateHistory(int dir); +}; + +} // namespace dusk::ui diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 44fd9e1724..e0b0c79863 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -1504,6 +1504,20 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { "Recording Mode", "Disables the game HUD and all background music.

Useful for recording footage."); }); + + add_tab("Tools", [this](Rml::Element* content) { + auto& leftPane = add_child(content, Pane::Type::Controlled); + auto& rightPane = add_child(content, Pane::Type::Uncontrolled); + + leftPane.add_section("Link"); + add_speedrun_disabled_option(leftPane, rightPane, getSettings().game.enableMoveLinkCombo, + "Move Link (L+R+Y)", + "Enables the L+R+Y button combo to toggle freely repositioning Link."); + add_speedrun_disabled_option(leftPane, rightPane, getSettings().game.enableTeleportCombo, + "Teleport (R+D-pad Up/Down)", + "R+D-pad Up stores Link's current position.
" + "R+D-pad Down teleports Link back to it."); + }); } void SettingsWindow::update() { diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index e2e8a61168..a45eaf830b 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -756,23 +756,7 @@ static void duskExecute() { isRecording = false; } - if (mDoCPd_c::getHoldR(PAD_1) && mDoCPd_c::getTrigX(PAD_1)) { - if (const auto link = g_dComIfG_gameInfo.play.getPlayer(0)) { - dynamic_cast(link)->handleWolfHowl(); - } - } - if ((mDoCPd_c::getHold(PAD_1) & (PAD_TRIGGER_R | PAD_TRIGGER_L)) == PAD_TRIGGER_R && mDoCPd_c::getTrigY(PAD_1)) { - if (const auto link = g_dComIfG_gameInfo.play.getPlayer(0)) { - dynamic_cast(link)->handleQuickTransform(); - } - } - - if (dusk::getSettings().game.moonJump && (mDoCPd_c::getHoldR(PAD_1) && mDoCPd_c::getHoldA(PAD_1))) { - if (const auto link = g_dComIfG_gameInfo.play.getPlayer(0)) { - link->speed.y = 56.0f; - } - } if (dusk::getSettings().game.fastSpinner && mDoCPd_c::getHoldR(PAD_1)) { if (const auto link = g_dComIfG_gameInfo.play.getPlayer(0)) { diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index bf37f964e6..e25f052861 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -55,11 +55,13 @@ #include "dusk/frame_interpolation.h" #include "dusk/game_clock.h" #include "dusk/gyro.h" +#include "dusk/game_combos.h" #include "dusk/imgui/ImGuiConsole.hpp" #include "dusk/imgui/ImGuiEngine.hpp" #include "dusk/iso_validate.hpp" #include "dusk/logging.h" #include "dusk/main.h" +#include "dusk/ui/command_console.hpp" #include "dusk/ui/menu_bar.hpp" #include "dusk/ui/overlay.hpp" #include "dusk/ui/prelaunch.hpp" @@ -289,6 +291,7 @@ void main01(void) { dusk::frame_interp::begin_sim_tick(); mDoCPd_c::read(); dusk::gyro::read(pacing.sim_pace); + dusk::processGameCombos(); fapGm_Execute(); mDoAud_Execute(); dusk::game_clock::commit_sim_tick(); @@ -305,12 +308,13 @@ void main01(void) { dusk::frame_interp::end_presentation_camera(); dusk::frame_interp::set_ui_tick_pending(false); } else { - dusk::frame_interp::begin_frame(dusk::FrameInterpMode::Off, true, 0.0f); - dusk::frame_interp::set_ui_tick_pending(true); - // Game Inputs mDoCPd_c::read(); dusk::gyro::read(pacing.presentation_dt_seconds); + dusk::processGameCombos(); + + dusk::frame_interp::begin_frame(dusk::FrameInterpMode::Off, true, 0.0f); + dusk::frame_interp::set_ui_tick_pending(true); // EXECUTE GAME LOGIC & RENDER // This calls mDoGph_Painter -> JFWDisplay -> GX Functions @@ -332,6 +336,15 @@ void main01(void) { Limiter::duration_t sleepTime = main_loop_limiter.Sleep(target_ns); dusk::frameUsagePct = 100.0f * (1.0f - static_cast(sleepTime) / static_cast(target_ns)); + } else if (!pacing.is_interpolating && !dusk::getTransientSettings().skipFrameRateLimit) { + // Non-interp: throttle display rate to the configured sim rate so /rate works + const double sim_fps = static_cast(dusk::game_clock::get_sim_rate()); + const Limiter::duration_t sim_target_ns = static_cast(1'000'000'000.0 / sim_fps); + main_loop_limiter.Sleep(sim_target_ns); + } else if (dusk::getTransientSettings().skipFrameRateLimit) { + // Turbo: cap at 120 hz rather than running fully unlimited + constexpr Limiter::duration_t kTurboTargetNs = 1'000'000'000LL / 120LL; + main_loop_limiter.Sleep(kTurboTargetNs); } else { main_loop_limiter.Reset(); } @@ -638,6 +651,7 @@ int game_main(int argc, char* argv[]) { dusk::texture_replacements::reload(); dusk::ui::initialize(); dusk::ui::push_document(std::make_unique(), true, true); + dusk::ui::push_document(std::make_unique(), true, true); dusk::ui::push_document(std::make_unique(), false); // Invalidate a bad saved isoPath so that Dusklight can't get blocked from starting up.