Last updated: 6/25/2021

Back to home


Dialogue Mods

This section covers how to modify text that is displayed in the game (not including in-battle status text, such as STR DOWN, Miss, Charm, etc.). As of the latest update, this tutorial works on all versions of the game.

This tutorial does not cover how to distribute your mod, only how to create it. For distribution, the basic rundown is isolate your changes in a separate txt with LF preserved and install via a UnityPy script.

Creating dialogue mods

Required tools:

  • UABE
  • AssetStudio (optional)
  • Notepad++ or a similar text editing software that can display carriage returns and line feeds

Step 1 – Extracting the files you need

  1. Create a backup of resources.assets. This is located in the SaGa Frontier Remastered_Data folder in the game’s directory. You will need 150 megabytes of free storage space to do this
    • It’s best to have this backup made to use for testing the mod so you can revert your changes in case of an emergency and have a clean copy to reference. 
  2. Open UABE and load your resources.assets file
    • File > Open > Locate your resources.assets file > select 2019.2
  3. Locate a file called BaccaratMessage and extract it to a .txt file
    • View > Search by name > Type in “BaccaratMessage” > select BaccaratMessage > Plugins > Export to .txt > Select a directory to save the file in and save it
    • Note: this file is a source file from the original game. Please do not distribute this file.

Step 2 – Opening BaccaratMessage and setting up Notepad++

  1. Open the extracted BaccaratMessage with Notepad++
  2. Set Notepad++ to display new line characters
    • View > Show Symbol > Show End of Line
  3. Set Notepad++ to display the file in UTF-8 (this should be done automatically)
    • Encoding > UTF-8

Step 3 – Editing BaccaratMessage

From here, you’re free to edit text to be whatever you want. You will run into a mix of ASCII and ShiftJIS characters in the file. For example, “There’s a billionaire in Yorkland.” is instead written as “There’s a billionaire in Yorkland.” Don’t worry about that; the game has a script to convert between ShiftJIS and ASCII, so feel free to edit the text as you please. As of the last update to this page, it is impossible to add completely new lines of dialogue; you can only extend current lines of dialogue. Adding completely new lines of dialogue requires that you edit the IMF file associated with that dialogue ID, which nobody currently knows how to do. We are working on it.

However, there are a couple of rules you need to follow in order for the game to work:

  1. When modifying dialogue, preserve all line feeds (LF) and carriage returns (CR). Failing to do so will cause your game to not launch
  2. When adding new lines of dialogue:
    1. Use a LF for each new line of text you add. For the final line, use a CR.
      • To replace a CR with a LF, do the following:
        1. Place your cursor on the line with the CR you wish to replace
        2. Ctrl+F > Replace
        3. In the “Find what:” box, type “\r\n”
        4. In the “Replace with:” box, type “\n”
        5. Find Next > Replace
    2. You need to tell the game when to advance to the next line and when to wait for player input to advance to the next line. This is done via a code placed at the end of the line:
      • CF = wait for player input
      • F = automatically advance to the next line
      • When you’re at the end of the dialogue piece, CF is not required

Step 4 – Installing your mod

  1. Follow Step 1 above until you reach 3.
  2. Locate BaccaratMessage and import a .txt file
    1. View > Search by name > Type in “BaccaratMessage” > select BaccaratMessage > Plugins > Import from .txt > Select your modified BaccaratMessage file
  3. Select OK and save your new resources.assets file somewhere
  4. Move your modified resources.assets file into the SaGa Frontier Remastered_Data folder, overwriting the original resources.assets
    • This is why we made a backup before beginning the modding process

And you’re done! If you ran into any issues with this tutorial, hop on over to the Modern SaGa Modding Discord and I can help you out.

Here is a list of all the various ID’s you will run into and what they are intended for. Do not change these ID’s in BaccaratMessage as they can and will cause the game to freeze when it attempts to load that ID and can’t find it:

  • PSX debugging text =
    • EMess_t_pc_cd_XXX
    • EMess_effXXX_XXX
    • EMess_tt_main_XXX
    • EMess_day_XXX
  • Midare Setsugekka combo name =EMess_name_000
  • PSX misc. text =
    • EMess_paracalc_XXX
    • EMess_m_eqwaza_XXX
    • EMess_fact1_XXX
    • EMess_menu_XXX
    • EMess_setup_XXX
    • EMess_maintxt_XXX
    • EMess_mecatype_s_XXX
  • PSX System Data text =EMess_system_XXX
  • Equip menu’s tech type names = EMess_maintxt_086 through EMess_maintxt_104
  • In-battle dialogue = EMess_eventXXX_s_XXX
  • Overworld dialogue =
    • EMess_meslXXX_s_XXX
    • EMess_meslXXX_kXX_XXX
  • Equip menu’s item descriptions = EMess_it_mess_s_XXX
    • It’s unknown if these are used or if they’re left over from PSX
  • Protagonist item get dialogue = EMess_mesgX_s_XXX
  • Overworld dialogue that was added for remaster = EMess_mes_add_XXX
  • Tech names = EMess_wazaname_XXX
  • Tech in-battle descriptions =
    • EMess_wazadescription_XXX
    • EMess_wazadescription_close
    • EMess_wazadescription_runaway
    • EMess_wazadescription_cannot_runaway
  • Race names = EMess_racename_XXX
  • Recruitable character names = EMess_npcname_XXX
  • Monster type names = EMess_montype_XXX
  • Monster names = EMess_monname_XXX
  • Spell names = EMess_jyutname_XXX
  • Item names = EMess_itemname_XXX
  • Battle GUI messages = EMess_batguistr_XXX
  • Protagonist intros (also has XX version) =
    • EMess_ui_charaintro_emelia_XXX
    • (one for each protag)
    • EMess_ui_charaintro_confirm_XXX
  • Item descriptions = EMess_itemdescription_XXX
  • Various config options and headers =
    • EMess_baccarat_config_item_name_XXX
    • EMess_baccarat_config_initialize_confirm
    • EMess_baccarat_config_save_confirm
    • EMess_baccarat_config_menu_[option here]
    • EMess_baccarat_config_environmental_setting_item_description_XXX
    • EMess_baccarat_config_language_setting_japanese
    • EMess_baccarat_config_language_setting_english
    • EMess_baccarat_config_language_setting_attention_text
    • EMess_baccarat_config_language_setting_save_confirm_japanese
    • EMess_baccarat_config_language_setting_save_confirm_english
    • EMess_config_add_XXX
  • Key rebinding config =
    • EMess_baccarat_config_keyconfig_item_name_XXX
    • EMess_baccarat_config_keyconfig_description_keyboard
    • EMess_baccarat_config_keyconfig_description_XXX
    • EMess_baccarat_config_keyconfig_duplicate_key_cancel_confirm
    • EMess_baccarat_config_keyconfig_keyboard
    • EMess_baccarat_config_keyconfig_controller
  • System data =
    • EMess_baccarat_system_title
    • EMess_baccarat_system_selectX
    • EMess_baccarat_system_makeX
    • EMess_baccarat_system_wait
    • EMess_baccarat_constellationX
    • EMess_baccarat_constellationXX
    • EMess_baccarat_bloodX
    • EMess_baccarat_system_update_title
    • EMess_baccarat_system_update_selectX
    • EMess_bccarat_system_save_XXX
  • Scenario log =
    • EMess_baccarat_scenario_title
    • EMess_baccarat_scenario_update
    • EMess_baccarat_scenario_blue_ruju
    • EMess_baccarat_scenario_emelia_XX_XX
    • (one for each protag, riki = coon)
    • EMess_baccarat_scenario_fuseEmelia_XX_XX
    • (one for each protag, Riki = Coon)
  • Store text =
    • EMess_baccarat_shop_headline_product_name
    • EMess_baccarat_shop_headline_product_price
    • EMess_baccarat_shop_headline_product_count
    • EMess_baccarat_shop_[option]
    • EMess_baccarat_shop_item_detailed_description_XXX
  • Credits = EMess_baccarat_staffroll_[num]_[num]
  • Save data text =
    • EMess_baccarat_save_txt_XXX
    • EMess_bccarat_save_000
  • Revised battle command names =
    • EMess_baccarat_battle_new_command_name_[option]
    • EMess_baccarat_battle_command_type_name_[option]
    • EMess_baccarat_battle_command_cost_[option]
    • EMess_baccarat_battle_status_[option]
    • EMess_baccarat_battle_team_position_front
    • EMess_baccarat_battle_team_position_back
    • EMess_baccarat_battle_start
    • EMess_baccarat_battle_team_info
    • EMess_baccarat_battle_take_over_full_description
    • EMess_baccarat_battle_command_cost_slash
    • EMess_baccarat_battle_status_slash
    • EMess_baccarat_battle_team_name_prefix
  • Fuse’s scenario dialogue =
    • EMess_Fuse_T260G_XXX
    • EMess_Fuse_Aselus_XXX
    • EMess_Fuse_Emilia_XXX
    • EMess_Fuse_Coon_XXX
    • EMess_Fuse_Blue_XXX
    • EMess_Fuse_Lute_XXX
    • EMess_Fuse_Red_XXX
    • EMess_Fuse_Common_XXX
  • Main menu text =
    • EMess_baccarat_help_item_name_XXX
    • EMess_baccarat_help_description_XXX
    • EMess_help_add_XXX
    • EMess_baccarat_common_msg_[option]
    • EMess_baccarat_common_msg_XXX
  • Overworld pause menu text =
    • EMess_baccarat_menu_X
    • EMess_baccarat_menu_[option]
    • EMess_baccarat_status_[option]
    • EMess_baccarat_status_explanation
    • EMess_baccarat_equip_[option]
    • EMess_baccarat_skill_[option]
    • EMess_baccarat_item_[option]
    • EMess_baccarat_itemtype_[option]
  • Name entry = EMess_baccarat_nameentry_[option]
  • Additional menus (e.g. Fuse Case File selection) = EMess_bccarat_menu_add_XXX
  • Library text =
    • EMess_baccarat_library_header
    • EMess_baccarat_library_item_name_XXX
    • EMess_baccarat_library_sound_header
    • EMess_baccarat_library_sound_time_separator
    • EMess_baccarat_library_sound_item_name_XXX
    • EMess_baccarat_library_gallery_header
    • EMess_baccarat_library_gallery_item_name_XXX
    • EMess_bccarat_library_add_XXX
  • Main menu tutorials =
    • EMess_baccarat_takeoverdescription_[option]
    • EMess_baccarat_takeoverselect_[option]
  • Combo history menu =
    • EMess_ui_combohistory_[option]
    • EMess_baccarat_skilldescription_XXX
  • Additional content menu = EMess_baccarat_addcontents_[option]
  • Added dialogue for clarity stuff =
    • EMess_Telop_XXX
  • Combo name start = EMess_combo_start_XXX
  • Combo name end = EMess_combo_end_XXX
  • Misc. overworld things =
    • EMess_baccarat_map_pause
    • EMess_baccarat_map_return_title
    • EMess_baccarat_map_return_title_description
    • EMess_baccarat_map_menu
    • EMess_baccarat_map_save
    • EMess_baccarat_map_quick
    • EMess_baccarat_map_dush
  • Text with unknown purpose =
    • EMess_baccarat_regionship_confirm_00X